diff --git a/CICE-interface/CMakeLists.txt b/CICE-interface/CMakeLists.txt index d35ee68e4b..db4bf3a02b 100644 --- a/CICE-interface/CMakeLists.txt +++ b/CICE-interface/CMakeLists.txt @@ -67,24 +67,9 @@ elseif(CICE_IO MATCHES "Binary") list(APPEND lib_src_files ${cice_binary_io_files}) endif() -### Use common object library for building target library -add_library(cice_obj OBJECT ${lib_src_files}) -set_target_properties(cice_obj PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod) -target_include_directories(cice_obj PRIVATE $) -target_compile_definitions(cice_obj PRIVATE "${_cice_defs}") -target_link_libraries(cice_obj PRIVATE esmf) -if(CICE_IO MATCHES "^(NetCDF|PIO)$") - target_link_libraries(cice_obj PRIVATE NetCDF::NetCDF_Fortran) - if(CICE_IO MATCHES "PIO") - target_link_libraries(cice_obj PRIVATE PIO::PIO_Fortran) - endif() -endif() -if(OpenMP_Fortran_FOUND) - target_link_libraries(cice_obj PRIVATE OpenMP::OpenMP_Fortran) -endif() - ### Create target library and set PUBLIC interfaces on the library -add_library(cice STATIC $) +add_library(cice STATIC ${lib_src_files}) +set_target_properties(cice PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod) target_compile_definitions(cice PUBLIC "${_cice_defs}") target_include_directories(cice PUBLIC $ $) @@ -95,6 +80,9 @@ if(CICE_IO MATCHES "^(NetCDF|PIO)$") target_link_libraries(cice PUBLIC PIO::PIO_Fortran) endif() endif() +if(OpenMP_Fortran_FOUND) + target_link_libraries(cice PRIVATE OpenMP::OpenMP_Fortran) +endif() ############################################################################### ### Install @@ -102,7 +90,7 @@ endif() install( TARGETS cice - EXPORT cice-config + EXPORT cice-config LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT Library) diff --git a/CMEPS-interface/CMakeLists.txt b/CMEPS-interface/CMakeLists.txt index 96c254cb7e..27c98fd52d 100644 --- a/CMEPS-interface/CMakeLists.txt +++ b/CMEPS-interface/CMakeLists.txt @@ -61,35 +61,14 @@ list(APPEND _mediator_defs ESMF_VERSION_MAJOR=${ESMF_VERSION_MAJOR} ESMF_VERSION_MINOR=${ESMF_VERSION_MINOR} INTERNAL_PIO_INIT) -### Use common object library for building target library -add_library(nems_util_obj OBJECT ${_nems_util_files}) -set_target_properties(nems_util_obj PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod) -target_include_directories(nems_util_obj PRIVATE $) -target_link_libraries(nems_util_obj PRIVATE esmf - PIO::PIO_C PIO::PIO_Fortran) -if(OpenMP_Fortran_FOUND) - target_link_libraries(nems_util_obj PRIVATE OpenMP::OpenMP_Fortran) -endif() - -add_library(mediator_obj OBJECT ${_mediator_files}) -set_target_properties(mediator_obj PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod) -target_include_directories(mediator_obj PRIVATE $) -target_compile_definitions(mediator_obj PRIVATE "${_mediator_defs}") -target_link_libraries(mediator_obj PRIVATE nems_util_obj - esmf - PIO::PIO_C PIO::PIO_Fortran) -if(OpenMP_Fortran_FOUND) - target_link_libraries(mediator_obj PRIVATE OpenMP::OpenMP_Fortran) -endif() - ### Create target library and set PUBLIC interfaces on the library -add_library(cmeps STATIC $ - $) +add_library(cmeps STATIC ${_nems_util_files} ${_mediator_files}) +set_target_properties(cmeps PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod) target_compile_definitions(cmeps PUBLIC "${_mediator_defs}") target_include_directories(cmeps PUBLIC $ $) target_link_libraries(cmeps PUBLIC esmf - PIO::PIO_C PIO::PIO_Fortran) + PIO::PIO_Fortran) if(OpenMP_Fortran_FOUND) target_link_libraries(cmeps PRIVATE OpenMP::OpenMP_Fortran) endif()