From ea8213580e974cd3272106f38547a15de5d9f808 Mon Sep 17 00:00:00 2001 From: Kyle Gerheiser <3209794+kgerheiser@users.noreply.github.com> Date: Thu, 22 Apr 2021 09:48:46 -0400 Subject: [PATCH] Make intermediate libraries for executables to facilitate easier testing (#445) Make a library for each utility that includes all the files except the main program. Then, tests can link to that library to access necessary code. --- sorc/chgres_cube.fd/CMakeLists.txt | 24 ++++++--- sorc/emcsfc_snow2mdl.fd/CMakeLists.txt | 25 ++++++--- .../tools/fregrid/CMakeLists.txt | 14 +++-- .../tools/make_hgrid/CMakeLists.txt | 13 +++-- .../tools/make_solo_mosaic/CMakeLists.txt | 12 +++-- sorc/global_cycle.fd/CMakeLists.txt | 24 ++++++--- .../inland.fd/CMakeLists.txt | 17 +++--- .../orog_mask_tools.fd/lake.fd/CMakeLists.txt | 19 ++++--- .../orog_mask_tools.fd/orog.fd/CMakeLists.txt | 22 +++++--- .../orog_gsl.fd/CMakeLists.txt | 20 +++++-- sorc/sfc_climo_gen.fd/CMakeLists.txt | 21 ++++++-- sorc/vcoord_gen.fd/CMakeLists.txt | 17 ++++-- tests/chgres_cube/CMakeLists.txt | 54 ++++--------------- 13 files changed, 175 insertions(+), 107 deletions(-) diff --git a/sorc/chgres_cube.fd/CMakeLists.txt b/sorc/chgres_cube.fd/CMakeLists.txt index 9b82a7c99..877bf3a0f 100644 --- a/sorc/chgres_cube.fd/CMakeLists.txt +++ b/sorc/chgres_cube.fd/CMakeLists.txt @@ -1,11 +1,10 @@ # This is the CMake build file for the chgres_cube utility in the # UFS_UTILS package. # -# George Gayno, Mark Potts +# George Gayno, Mark Potts, Kyle Gerheiser -set(fortran_src +set(lib_src atmosphere.F90 - chgres.F90 grib2_util.F90 input_data.F90 model_grid.F90 @@ -17,6 +16,8 @@ set(fortran_src utils.F90 write_data.F90) +set(exe_src chgres.F90) + if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8 -convert big_endian -assume byterecl") elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") @@ -24,9 +25,17 @@ elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") endif() set(exe_name chgres_cube) -add_executable(${exe_name} ${fortran_src}) + +add_library(chgres_cube_lib STATIC ${lib_src}) +add_executable(${exe_name} ${exe_src}) + +set(mod_dir "${CMAKE_CURRENT_BINARY_DIR}/mod") +set_target_properties(chgres_cube_lib PROPERTIES Fortran_MODULE_DIRECTORY ${mod_dir}) +target_include_directories(chgres_cube_lib INTERFACE ${mod_dir}) + target_link_libraries( - ${exe_name} + chgres_cube_lib + PUBLIC nemsio::nemsio sfcio::sfcio sigio::sigio @@ -38,10 +47,13 @@ target_link_libraries( wgrib2::wgrib2_api MPI::MPI_Fortran NetCDF::NetCDF_Fortran) + if(OpenMP_Fortran_FOUND) - target_link_libraries(${exe_name} OpenMP::OpenMP_Fortran) + target_link_libraries(${exe_name} PUBLIC OpenMP::OpenMP_Fortran) endif() +target_link_libraries(${exe_name} PRIVATE chgres_cube_lib) + install(TARGETS ${exe_name} RUNTIME DESTINATION ${exec_dir}) # If doxygen documentation we enabled, build it. diff --git a/sorc/emcsfc_snow2mdl.fd/CMakeLists.txt b/sorc/emcsfc_snow2mdl.fd/CMakeLists.txt index 92cb6e2e3..d43ca3c01 100644 --- a/sorc/emcsfc_snow2mdl.fd/CMakeLists.txt +++ b/sorc/emcsfc_snow2mdl.fd/CMakeLists.txt @@ -1,16 +1,17 @@ # This is the CMake build file for the emcsfc_snow2mdl utility in the # UFS_UTILS package. # -# George Gayno, Mark Potts +# George Gayno, Mark Potts, Kyle Gerheiser -set(fortran_src - driver.F90 +set(lib_src grib_utils.F90 model_grid.F90 program_setup.F90 snow2mdl.F90 snowdat.F90) +set(exe_src driver.F90) + if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8 -convert big_endian -assume byterecl") elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") @@ -18,18 +19,28 @@ elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") endif() set(exe_name emcsfc_snow2mdl) -add_executable(${exe_name} ${fortran_src}) -target_link_libraries( - ${exe_name} + +add_library(snow2mdl_lib STATIC ${lib_src}) +add_executable(${exe_name} ${exe_src}) + +set(mod_dir "${CMAKE_CURRENT_BINARY_DIR}/mod") +set_target_properties(snow2mdl_lib PROPERTIES Fortran_MODULE_DIRECTORY ${mod_dir}) +target_include_directories(snow2mdl_lib INTERFACE ${mod_dir}) + +target_link_libraries(snow2mdl_lib + PUBLIC g2::g2_d ip::ip_d sp::sp_d bacio::bacio_4 w3nco::w3nco_d) + if(OpenMP_Fortran_FOUND) - target_link_libraries(${exe_name} OpenMP::OpenMP_Fortran) + target_link_libraries(${exe_name} PUBLIC OpenMP::OpenMP_Fortran) endif() +target_link_libraries(${exe_name} PRIVATE snow2mdl_lib) + install(TARGETS ${exe_name} RUNTIME DESTINATION ${exec_dir}) # If doxygen documentation we enabled, build it. diff --git a/sorc/fre-nctools.fd/tools/fregrid/CMakeLists.txt b/sorc/fre-nctools.fd/tools/fregrid/CMakeLists.txt index f376313c6..c80a13eb4 100644 --- a/sorc/fre-nctools.fd/tools/fregrid/CMakeLists.txt +++ b/sorc/fre-nctools.fd/tools/fregrid/CMakeLists.txt @@ -1,14 +1,20 @@ -set(c_src +set(lib_src bilinear_interp.c conserve_interp.c - fregrid.c fregrid_util.c) -add_executable(fregrid ${c_src}) +set(exe_src fregrid.c) -target_link_libraries(fregrid +add_library(fregrid_lib STATIC ${lib_src}) +add_executable(fregrid ${exe_src}) + + +target_link_libraries(fregrid_lib + PUBLIC m shared_lib NetCDF::NetCDF_C) +target_link_libraries(fregrid PRIVATE fregrid_lib) + install(TARGETS fregrid RUNTIME DESTINATION ${exec_dir}) diff --git a/sorc/fre-nctools.fd/tools/make_hgrid/CMakeLists.txt b/sorc/fre-nctools.fd/tools/make_hgrid/CMakeLists.txt index c59be2dee..b0d9070a1 100644 --- a/sorc/fre-nctools.fd/tools/make_hgrid/CMakeLists.txt +++ b/sorc/fre-nctools.fd/tools/make_hgrid/CMakeLists.txt @@ -1,15 +1,18 @@ -set(c_src +set(lib_src create_conformal_cubic_grid.c create_gnomonic_cubic_grid.c create_grid_from_file.c - create_lonlat_grid.c - make_hgrid.c) + create_lonlat_grid.c) -add_executable(make_hgrid ${c_src}) +add_library(make_hgrid_lib STATIC ${lib_src}) +add_executable(make_hgrid make_hgrid.c) -target_link_libraries(make_hgrid +target_link_libraries(make_hgrid_lib + PUBLIC m shared_lib NetCDF::NetCDF_C) +target_link_libraries(make_hgrid PRIVATE make_hgrid_lib) + install(TARGETS make_hgrid RUNTIME DESTINATION ${exec_dir}) diff --git a/sorc/fre-nctools.fd/tools/make_solo_mosaic/CMakeLists.txt b/sorc/fre-nctools.fd/tools/make_solo_mosaic/CMakeLists.txt index 87ef6bed2..e4507eff9 100644 --- a/sorc/fre-nctools.fd/tools/make_solo_mosaic/CMakeLists.txt +++ b/sorc/fre-nctools.fd/tools/make_solo_mosaic/CMakeLists.txt @@ -1,12 +1,18 @@ -set(c_src +set(lib_src make_solo_mosaic.c get_contact.c) -add_executable(make_solo_mosaic ${c_src}) +set(exe_src make_solo_mosaic.c) -target_link_libraries(make_solo_mosaic +add_library(make_solo_mosaic_lib STATIC ${lib_src}) +add_executable(make_solo_mosaic ${exe_src}) + +target_link_libraries(make_solo_mosaic_lib + PUBLIC m shared_lib NetCDF::NetCDF_C) +target_link_libraries(make_solo_mosaic PRIVATE make_solo_mosaic_lib) + install(TARGETS make_solo_mosaic RUNTIME DESTINATION ${exec_dir}) diff --git a/sorc/global_cycle.fd/CMakeLists.txt b/sorc/global_cycle.fd/CMakeLists.txt index 9a4b2962b..5bcd2f296 100644 --- a/sorc/global_cycle.fd/CMakeLists.txt +++ b/sorc/global_cycle.fd/CMakeLists.txt @@ -1,15 +1,16 @@ # This is the CMake file for the global_cycle utility in the UFS_UTILS # project. # -# George Gayno +# George Gayno, Kyle Gerheiser -set(fortran_src - cycle.f90 +set(lib_src machine.f90 num_parthds.f90 sfcsub.F read_write_data.f90) +set(exe_src cycle.f90) + if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8 -convert big_endian") elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") @@ -20,19 +21,30 @@ elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") endif() set(exe_name global_cycle) -add_executable(${exe_name} ${fortran_src}) + +add_library(global_cycle_lib STATIC ${lib_src}) +add_executable(${exe_name} ${exe_src}) + +set(mod_dir "${CMAKE_CURRENT_BINARY_DIR}/mod") +set_target_properties(global_cycle_lib PROPERTIES Fortran_MODULE_DIRECTORY ${mod_dir}) +target_include_directories(global_cycle_lib INTERFACE ${mod_dir}) + target_link_libraries( - ${exe_name} + global_cycle_lib + PUBLIC w3nco::w3nco_d bacio::bacio_4 ip::ip_d sp::sp_d MPI::MPI_Fortran NetCDF::NetCDF_Fortran) + if(OpenMP_Fortran_FOUND) - target_link_libraries(${exe_name} OpenMP::OpenMP_Fortran) + target_link_libraries(global_cycle_lib PUBLIC OpenMP::OpenMP_Fortran) endif() +target_link_libraries(${exe_name} PRIVATE global_cycle_lib) + install(TARGETS ${exe_name} RUNTIME DESTINATION ${exec_dir}) # If doxygen documentation we enabled, build it. diff --git a/sorc/orog_mask_tools.fd/inland.fd/CMakeLists.txt b/sorc/orog_mask_tools.fd/inland.fd/CMakeLists.txt index e88bc2030..e955a8f18 100644 --- a/sorc/orog_mask_tools.fd/inland.fd/CMakeLists.txt +++ b/sorc/orog_mask_tools.fd/inland.fd/CMakeLists.txt @@ -1,6 +1,5 @@ -set(fortran_src - nb.F90 - inland.F90) +set(lib_src nb.F90) +set(exe_src inland.F90) if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -assume byterecl") @@ -8,12 +7,18 @@ elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fno-range-check") endif() -set(exe_name inland) +add_library(inland_lib STATIC ${lib_src}) +add_executable(inland ${exe_src}) -add_executable(${exe_name} ${fortran_src}) +set(mod_dir "${CMAKE_CURRENT_BINARY_DIR}/mod") +set_target_properties(inland_lib PROPERTIES Fortran_MODULE_DIRECTORY ${mod_dir}) +target_include_directories(inland_lib INTERFACE ${mod_dir}) target_link_libraries( - ${exe_name} + inland_lib + PUBLIC NetCDF::NetCDF_Fortran) +target_link_libraries(inland PRIVATE inland_lib) + install(TARGETS ${exe_name} RUNTIME DESTINATION ${exec_dir}) diff --git a/sorc/orog_mask_tools.fd/lake.fd/CMakeLists.txt b/sorc/orog_mask_tools.fd/lake.fd/CMakeLists.txt index 5e071590d..5dbacbf4c 100644 --- a/sorc/orog_mask_tools.fd/lake.fd/CMakeLists.txt +++ b/sorc/orog_mask_tools.fd/lake.fd/CMakeLists.txt @@ -1,7 +1,8 @@ -set(fortran_src +set(lib_src enclosure_cnvx.F90 - find_limit.F90 - lakefrac.F90) + find_limit.F90) + +set(exe_src lakefrac.F90) if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -assume byterecl") @@ -9,12 +10,18 @@ elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fno-range-check") endif() -set(exe_name lakefrac) +add_library(lakefrac_lib STATIC ${lib_src}) +add_executable(lakefrac ${exe_src}) -add_executable(${exe_name} ${fortran_src}) +set(mod_dir "${CMAKE_CURRENT_BINARY_DIR}/mod") +set_target_properties(lakefrac_lib PROPERTIES Fortran_MODULE_DIRECTORY ${mod_dir}) +target_include_directories(lakefrac_lib INTERFACE ${mod_dir}) target_link_libraries( - ${exe_name} + lakefrac_lib + PUBLIC NetCDF::NetCDF_Fortran) +target_link_libraries(lakefrac PRIVATE lakefrac_lib) + install(TARGETS ${exe_name} RUNTIME DESTINATION ${exec_dir}) diff --git a/sorc/orog_mask_tools.fd/orog.fd/CMakeLists.txt b/sorc/orog_mask_tools.fd/orog.fd/CMakeLists.txt index 5e38c7a35..e84d9cbee 100644 --- a/sorc/orog_mask_tools.fd/orog.fd/CMakeLists.txt +++ b/sorc/orog_mask_tools.fd/orog.fd/CMakeLists.txt @@ -1,6 +1,5 @@ -set(fortran_src - mtnlm7_oclsm.f - netcdf_io.F90) +set(lib_src netcdf_io.F90) +set(exe_src mtnlm7_oclsm.f) if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8 -convert big_endian -assume byterecl") @@ -12,16 +11,27 @@ elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") endif() set(exe_name orog) -add_executable(${exe_name} ${fortran_src}) + +add_library(orog_lib STATIC ${lib_src}) +add_executable(${exe_name} mtnlm7_oclsm.f) + +set(mod_dir "${CMAKE_CURRENT_BINARY_DIR}/mod") +set_target_properties(orog_lib PROPERTIES Fortran_MODULE_DIRECTORY ${mod_dir}) +target_include_directories(orog_lib INTERFACE ${mod_dir}) + target_link_libraries( - ${exe_name} + orog_lib + PUBLIC bacio::bacio_4 w3nco::w3nco_d ip::ip_d sp::sp_d NetCDF::NetCDF_Fortran) + if(OpenMP_Fortran_FOUND) - target_link_libraries(${exe_name} OpenMP::OpenMP_Fortran) + target_link_libraries(orog_lib PUBLIC OpenMP::OpenMP_Fortran) endif() +target_link_libraries(orog PRIVATE orog_lib) + install(TARGETS ${exe_name} RUNTIME DESTINATION ${exec_dir}) diff --git a/sorc/orog_mask_tools.fd/orog_gsl.fd/CMakeLists.txt b/sorc/orog_mask_tools.fd/orog_gsl.fd/CMakeLists.txt index 940c86c09..bb397584d 100644 --- a/sorc/orog_mask_tools.fd/orog_gsl.fd/CMakeLists.txt +++ b/sorc/orog_mask_tools.fd/orog_gsl.fd/CMakeLists.txt @@ -1,7 +1,8 @@ -set(fortran_src +set(lib_src module_gsl_oro_data_lg_scale.f90 - module_gsl_oro_data_sm_scale.f90 - gsl_oro_data.f90) + module_gsl_oro_data_sm_scale.f90) + +set(exe_src gsl_oro_data.f90) if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8 -convert big_endian -assume byterecl") @@ -12,10 +13,19 @@ elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") endif() endif() +add_library(orog_gsl_lib STATIC ${lib_src}) set(exe_name orog_gsl) -add_executable(${exe_name} ${fortran_src}) +add_executable(${exe_name} ${exe_src}) + +set(mod_dir "${CMAKE_CURRENT_BINARY_DIR}/mod") +set_target_properties(orog_gsl_lib PROPERTIES Fortran_MODULE_DIRECTORY ${mod_dir}) +target_include_directories(orog_gsl_lib INTERFACE ${mod_dir}) + target_link_libraries( - ${exe_name} + orog_gsl_lib + PUBLIC NetCDF::NetCDF_Fortran) +target_link_libraries(${exe_name} PRIVATE orog_gsl_lib) + install(TARGETS ${exe_name} RUNTIME DESTINATION ${exec_dir}) diff --git a/sorc/sfc_climo_gen.fd/CMakeLists.txt b/sorc/sfc_climo_gen.fd/CMakeLists.txt index 6d7ac6622..48fecf6d5 100644 --- a/sorc/sfc_climo_gen.fd/CMakeLists.txt +++ b/sorc/sfc_climo_gen.fd/CMakeLists.txt @@ -1,10 +1,9 @@ # This is the CMake build file for the sfc_climo_gen utility in the # UFS_UTILS package. # -# George Gayno, Mark Potts +# George Gayno, Mark Potts, Kyle Gerheiser -set(fortran_src - driver.F90 +set(lib_src interp.F90 model_grid.F90 output.f90 @@ -13,6 +12,8 @@ set(fortran_src source_grid.F90 utils.f90) +set(exe_src driver.F90) + if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8 -convert big_endian") elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") @@ -20,13 +21,23 @@ elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") endif() set(exe_name sfc_climo_gen) -add_executable(${exe_name} ${fortran_src}) + +add_library(sfc_climo_gen_lib STATIC ${lib_src}) +add_executable(${exe_name} ${exe_src}) + +set(mod_dir "${CMAKE_CURRENT_BINARY_DIR}/mod") +set_target_properties(orog_gsl_lib PROPERTIES Fortran_MODULE_DIRECTORY ${mod_dir}) +target_include_directories(orog_gsl_lib INTERFACE ${mod_dir}) + target_link_libraries( - ${exe_name} + sfc_climo_gen_lib + PUBLIC esmf MPI::MPI_Fortran NetCDF::NetCDF_Fortran) +target_link_libraries(${exe_name} PRIVATE sfc_climo_gen_lib) + install(TARGETS ${exe_name} RUNTIME DESTINATION ${exec_dir}) # If doxygen documentation we enabled, build it. diff --git a/sorc/vcoord_gen.fd/CMakeLists.txt b/sorc/vcoord_gen.fd/CMakeLists.txt index 4a1b2f006..f86b0a676 100644 --- a/sorc/vcoord_gen.fd/CMakeLists.txt +++ b/sorc/vcoord_gen.fd/CMakeLists.txt @@ -1,13 +1,15 @@ # This is the CMake build file for the vcoord_gen utility in the # UFS_UTILS package. # -# George Gayno, Mark Potts +# George Gayno, Mark Potts, Kyle Gerheiser -set(fortran_src +set(lib_src driver.f90 matrix_utils.f90 vcoord_gen.f90) +set(exe_src driver.f90) + if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8") elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") @@ -15,10 +17,19 @@ elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") endif() set(exe_name vcoord_gen) -add_executable(${exe_name} ${fortran_src}) + +add_library(vcoord_gen_lib STATIC ${lib_src}) +add_executable(${exe_name} ${exe_src}) + +set(mod_dir "${CMAKE_CURRENT_BINARY_DIR}/mod") +set_target_properties(vcoord_gen_lib PROPERTIES Fortran_MODULE_DIRECTORY ${mod_dir}) +target_include_directories(vcoord_gen_lib INTERFACE ${mod_dir}) + +target_link_libraries(${exe_name} vcoord_gen_lib) install(TARGETS ${exe_name} RUNTIME DESTINATION ${exec_dir}) + # If doxygen documentation we enabled, build it. if(ENABLE_DOCS) add_subdirectory(docs) diff --git a/tests/chgres_cube/CMakeLists.txt b/tests/chgres_cube/CMakeLists.txt index 53ec10879..eb5a73a5b 100644 --- a/tests/chgres_cube/CMakeLists.txt +++ b/tests/chgres_cube/CMakeLists.txt @@ -28,48 +28,14 @@ execute_process( COMMAND ${CMAKE_COMMAND} -E copy execute_process( COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/config_spectral_sigio.nml ${CMAKE_CURRENT_BINARY_DIR}/config_spectral_sigio.nml) -add_executable(ftst_utils "${CMAKE_SOURCE_DIR}/sorc/chgres_cube.fd/utils.F90" ftst_utils.F90) +add_executable(ftst_utils ftst_utils.F90) add_test(NAME ftst_utils COMMAND ftst_utils) -target_link_libraries( - ftst_utils - nemsio::nemsio - sfcio::sfcio - sigio::sigio - bacio::bacio_4 - sp::sp_d - w3nco::w3nco_d - esmf - wgrib2::wgrib2_lib - wgrib2::wgrib2_api - MPI::MPI_Fortran - NetCDF::NetCDF_Fortran) -if(OpenMP_Fortran_FOUND) - target_link_libraries(ftst_utils OpenMP::OpenMP_Fortran) -endif() +target_link_libraries(ftst_utils + chgres_cube_lib) -add_executable(ftst_program_setup "${CMAKE_SOURCE_DIR}/sorc/chgres_cube.fd/input_data.F90" - "${CMAKE_SOURCE_DIR}/sorc/chgres_cube.fd/model_grid.F90" - "${CMAKE_SOURCE_DIR}/sorc/chgres_cube.fd/program_setup.F90" - "${CMAKE_SOURCE_DIR}/sorc/chgres_cube.fd/grib2_util.F90" - "${CMAKE_SOURCE_DIR}/sorc/chgres_cube.fd/search_util.F90" - "${CMAKE_SOURCE_DIR}/sorc/chgres_cube.fd/utils.F90" - ftst_program_setup.F90) -target_link_libraries( - ftst_program_setup - nemsio::nemsio - sfcio::sfcio - sigio::sigio - bacio::bacio_4 - sp::sp_d - w3nco::w3nco_d - esmf - wgrib2::wgrib2_lib - wgrib2::wgrib2_api - MPI::MPI_Fortran - NetCDF::NetCDF_Fortran) -if(OpenMP_Fortran_FOUND) - target_link_libraries(ftst_program_setup OpenMP::OpenMP_Fortran) -endif() +add_executable(ftst_program_setup ftst_program_setup.F90) +target_link_libraries(ftst_program_setup + chgres_cube_lib) # Cause test to be run with MPI. add_mpi_test(ftst_program_setup @@ -77,13 +43,11 @@ add_mpi_test(ftst_program_setup NUMPROCS 4 TIMEOUT 60) -add_executable(ftst_search_util - "${CMAKE_SOURCE_DIR}/sorc/chgres_cube.fd/search_util.F90" - ftst_search_util.F90) +add_executable(ftst_search_util ftst_search_util.F90) target_link_libraries( ftst_search_util - esmf - MPI::MPI_Fortran) + chgres_cube_lib) + if(OpenMP_Fortran_FOUND) target_link_libraries(ftst_search_util OpenMP::OpenMP_Fortran) endif()