cmake_minimum_required(VERSION 3.23)
project(scm_io)

set(CMAKE_CXX_STANDARD 14)

set(CMAKE_Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/modules)

enable_language(Fortran)
#find_package(netCDF-Fortran REQUIRED
#        HINTS /usr/local/lib/cmake/netCDF/)
#set(HDF5_USE_STATIC_LIBRARIES YES)
#find_package(hdf5 REQUIRED HINTS /usr/local/lib/cmake/hdf5/)

set(dialect " -free -fimplicit-none ")
set(bounds "-free -fimplicit-none ")
set(CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} ${bounds} -g -fbacktrace -O0 -fcheck=all")
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${dialect}")

include_directories(src)
set(src_io
        src/scm_io_plt.f90
        src/io.f90
        src/io_metadata.f90)


add_library(lib_scm_io ${src_io})
#NetCDF handling
execute_process (
        COMMAND bash -c "nc-config --fflags | grep -Eo '^[^ ]+' | tr -d '\n'"
        OUTPUT_VARIABLE netcdf_inc
)
cmake_path(SET netcfd_inc_dir " ${netcdf_inc}" )
message("CMake path is ${netcdf_inc}")
target_compile_options(lib_scm_io PRIVATE ${netcdf_inc})
#include_directories(${netcdf_inc})
execute_process (
        COMMAND bash -c "nc-config --flibs | tr -d '\n'"
        OUTPUT_VARIABLE temp
)
separate_arguments(netcdff_libs UNIX_COMMAND "${temp}")
execute_process (
        COMMAND bash -c "nc-config --libs | tr -d '\n'"
        OUTPUT_VARIABLE temp
)
separate_arguments(netcdf_libs UNIX_COMMAND "${temp}")
#target_include_directories(lib_scm_io PRIVATE ${netCDF_INCLUDE_DIR})


#target_link_libraries(lib_scm_io PRIVATE netCDF::netcdff)
#target_link_libraries(lib_scm_io PRIVATE hdf5)


add_executable(test_netcdf_io src/test_netcdf.f90)
target_link_options(test_netcdf_io PRIVATE ${netcdff_libs})
target_link_options(test_netcdf_io PRIVATE ${netcdf_libs})
target_link_libraries(test_netcdf_io lib_scm_io)