Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 6 additions & 18 deletions CICE-interface/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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 $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>)
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 $<TARGET_OBJECTS:cice_obj>)
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 $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>
$<INSTALL_INTERFACE:mod>)
Expand All @@ -95,14 +80,17 @@ 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
###############################################################################

install(
TARGETS cice
EXPORT cice-config
EXPORT cice-config
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
COMPONENT Library)
Expand Down
27 changes: 3 additions & 24 deletions CMEPS-interface/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/CMEPS/nems/util>)
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 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/CMEPS/mediator>)
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 $<TARGET_OBJECTS:nems_util_obj>
$<TARGET_OBJECTS:mediator_obj>)
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 $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>
$<INSTALL_INTERFACE:mod>)
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()
Expand Down