Skip to content

Commit

Permalink
Define and use aliases for all libraries, as this seems to be conside…
Browse files Browse the repository at this point in the history
…red good practice.
  • Loading branch information
micaeljtoliveira committed Nov 29, 2023
1 parent c58a92b commit 6ce2fa6
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 24 deletions.
18 changes: 12 additions & 6 deletions CDEPS/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@

## Common library
add_fortran_library(OM3_cdeps_common mod/common STATIC)
add_library(AccessOM3::cdeps_common ALIAS OM3_cdeps_common)
target_include_directories(OM3_cdeps_common PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/fox/include>)
target_link_libraries(OM3_cdeps_common
PUBLIC esmf
PRIVATE OM3_share OM3_cmeps OM3_nuopc_cap_share FoX::FoX PIO::PIO_Fortran
PRIVATE AccessOM3::share AccessOM3::cmeps AccessOM3::nuopc_cap_share FoX::FoX PIO::PIO_Fortran
)
target_sources(OM3_cdeps_common PRIVATE
CDEPS/streams/dshr_methods_mod.F90
Expand All @@ -20,10 +21,11 @@ target_sources(OM3_cdeps_common PRIVATE

## DATM
add_fortran_library(OM3_cdeps_datm mod/datm STATIC)
add_library(AccessOM3::cdeps_datm ALIAS OM3_cdeps_datm)
target_include_directories(OM3_cdeps_datm PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/fox/include>)
target_link_libraries(OM3_cdeps_datm
PUBLIC esmf
PRIVATE OM3_cdeps_common OM3_share
PRIVATE AccessOM3::cdeps_common AccessOM3::share
)
target_sources(OM3_cdeps_datm PRIVATE
CDEPS/datm/datm_datamode_cfsr_mod.F90
Expand All @@ -39,10 +41,11 @@ add_patched_source(OM3_cdeps_datm CDEPS/datm/atm_comp_nuopc.F90)

## DOCN
add_fortran_library(OM3_cdeps_docn mod/docn STATIC)
add_library(AccessOM3::cdeps_docn ALIAS OM3_cdeps_docn)
target_include_directories(OM3_cdeps_docn PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/fox/include>)
target_link_libraries(OM3_cdeps_docn
PUBLIC esmf
PRIVATE OM3_cdeps_common OM3_share
PRIVATE AccessOM3::cdeps_common AccessOM3::share
)
target_sources(OM3_cdeps_docn PRIVATE
CDEPS/docn/docn_datamode_aquaplanet_mod.F90
Expand All @@ -56,10 +59,11 @@ target_sources(OM3_cdeps_docn PRIVATE

## DICE
add_fortran_library(OM3_cdeps_dice mod/dice STATIC)
add_library(AccessOM3::cdeps_dice ALIAS OM3_cdeps_dice)
target_include_directories(OM3_cdeps_dice PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/fox/include>)
target_link_libraries(OM3_cdeps_dice
PUBLIC esmf
PRIVATE OM3_cdeps_common OM3_share
PRIVATE AccessOM3::cdeps_common AccessOM3::share
)
target_sources(OM3_cdeps_dice PRIVATE
CDEPS/dice/dice_datamode_ssmi_mod.F90
Expand All @@ -69,21 +73,23 @@ target_sources(OM3_cdeps_dice PRIVATE

## DWAV
add_fortran_library(OM3_cdeps_dwav mod/dwav STATIC)
add_library(AccessOM3::cdeps_dwav ALIAS OM3_cdeps_dwav)
target_include_directories(OM3_cdeps_dwav PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/fox/include>)
target_link_libraries(OM3_cdeps_dwav
PUBLIC esmf
PRIVATE OM3_cdeps_common OM3_share
PRIVATE AccessOM3::cdeps_common AccessOM3::share
)
target_sources(OM3_cdeps_dwav PRIVATE
CDEPS/dwav/wav_comp_nuopc.F90
)

## DROF
add_fortran_library(OM3_cdeps_drof mod/drof STATIC)
add_library(AccessOM3::cdeps_drof ALIAS OM3_cdeps_drof)
target_include_directories(OM3_cdeps_drof PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/fox/include>)
target_link_libraries(OM3_cdeps_drof
PUBLIC esmf
PRIVATE OM3_cdeps_common OM3_share
PRIVATE AccessOM3::cdeps_common AccessOM3::share
)
target_sources(OM3_cdeps_drof PRIVATE
CDEPS/drof/rof_comp_nuopc.F90
Expand Down
3 changes: 2 additions & 1 deletion CICE/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@

## CICE library
add_fortran_library(OM3_cice mod STATIC)
add_library(AccessOM3::cice ALIAS OM3_cice)
target_compile_definitions(OM3_cice PRIVATE FORTRANUNDERSCORE ncdf)
if(OM3_CICE_IO MATCHES "^(NetCDF|PIO)$")
target_compile_definitions(OM3_cice PRIVATE USE_NETCDF)
endif()
target_link_libraries(OM3_cice
PUBLIC esmf
PRIVATE OM3_cdeps_common OM3_nuopc_cap_share OM3_share OM3_timing
PRIVATE AccessOM3::cdeps_common AccessOM3::nuopc_cap_share AccessOM3::share AccessOM3::timing
)
if(OM3_CICE_IO MATCHES "^(NetCDF|PIO)$")
target_link_libraries(OM3_cice PRIVATE NetCDF::NetCDF_Fortran)
Expand Down
6 changes: 4 additions & 2 deletions CMEPS/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@

## CMEPS library
add_fortran_library(OM3_cmeps mod/cmeps STATIC)
add_library(AccessOM3::cmeps ALIAS OM3_cmeps)
target_link_libraries(OM3_cmeps
PUBLIC esmf
PRIVATE OM3_nuopc_cap_share OM3_share OM3_timing
PRIVATE AccessOM3::nuopc_cap_share AccessOM3::share AccessOM3::timing
)
if(OpenMP_Fortran_FOUND)
target_link_libraries(OM3_cmeps PRIVATE OpenMP::OpenMP_Fortran)
Expand Down Expand Up @@ -50,9 +51,10 @@ target_sources(OM3_cmeps PRIVATE

## NUOPC cap share
add_fortran_library(OM3_nuopc_cap_share mod/nuopc_cap_share STATIC)
add_library(AccessOM3::nuopc_cap_share ALIAS OM3_nuopc_cap_share)
target_link_libraries(OM3_nuopc_cap_share
PUBLIC esmf
PRIVATE OM3_share
PRIVATE AccessOM3::share
)
target_sources(OM3_nuopc_cap_share PRIVATE
CMEPS/cesm/nuopc_cap_share/driver_pio_mod.F90
Expand Down
16 changes: 8 additions & 8 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -169,19 +169,19 @@ foreach(CONF IN LISTS KnownConfigurations)

set(ComponentsTargets "")
if(OM3_${CONF} MATCHES MOM6)
list(APPEND ComponentsTargets OM3_mom6)
list(APPEND ComponentsTargets AccessOM3::mom6)
else()
list(APPEND ComponentsTargets OM3_cdeps_docn)
list(APPEND ComponentsTargets AccessOM3::cdeps_docn)
endif()
if(OM3_${CONF} MATCHES CICE6)
list(APPEND ComponentsTargets OM3_cice)
list(APPEND ComponentsTargets AccessOM3::cice)
else()
list(APPEND ComponentsTargets OM3_cdeps_dice)
list(APPEND ComponentsTargets AccessOM3::cdeps_dice)
endif()
if(OM3_${CONF} MATCHES WW3)
list(APPEND ComponentsTargets OM3_ww3)
list(APPEND ComponentsTargets AccessOM3::ww3)
else()
list(APPEND ComponentsTargets OM3_cdeps_dwav)
list(APPEND ComponentsTargets AccessOM3::cdeps_dwav)
endif()

# We use the CESM driver from CMEPS
Expand All @@ -192,7 +192,7 @@ foreach(CONF IN LISTS KnownConfigurations)
)
target_link_libraries(OM3_cesm_driver_${CONF}
PUBLIC esmf
PRIVATE ${ComponentsTargets} OM3_cdeps_drof OM3_cdeps_datm OM3_cmeps OM3_nuopc_cap_share OM3_share OM3_timing
PRIVATE ${ComponentsTargets} AccessOM3::cdeps_drof AccessOM3::cdeps_datm AccessOM3::cmeps AccessOM3::nuopc_cap_share AccessOM3::share AccessOM3::timing
)
target_compile_definitions(OM3_cesm_driver_${CONF} PRIVATE MED_PRESENT
ATM_PRESENT
Expand All @@ -204,7 +204,7 @@ foreach(CONF IN LISTS KnownConfigurations)
)

add_executable(OM3_${CONF} CMEPS/CMEPS/cesm/driver/esmApp.F90)
target_link_libraries(OM3_${CONF} PRIVATE OM3_cesm_driver_${CONF} OM3_share esmf)
target_link_libraries(OM3_${CONF} PRIVATE OM3_cesm_driver_${CONF} AccessOM3::share esmf)

set_target_properties(OM3_${CONF} PROPERTIES
LINKER_LANGUAGE Fortran
Expand Down
3 changes: 2 additions & 1 deletion MOM6/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ endif()

## MOM6 library
add_fortran_library(OM3_mom6 mod STATIC)
add_library(AccessOM3::mom6 ALIAS OM3_mom6)
target_include_directories(OM3_mom6 PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/MOM6/src/framework>)
if(OM3_MOM_SYMMETRIC)
target_include_directories(OM3_mom6 PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/MOM6/config_src/memory/dynamic_symmetric>)
Expand All @@ -20,7 +21,7 @@ endif()
target_compile_options(OM3_mom6 PRIVATE "$<$<COMPILE_LANGUAGE:Fortran>:${fortran_compile_flags}>")
target_link_libraries(OM3_mom6
PUBLIC esmf
PRIVATE OM3_nuopc_cap_share OM3_share FMS::fms_r8
PRIVATE AccessOM3::nuopc_cap_share AccessOM3::share FMS::fms_r8
)
target_sources(OM3_mom6 PRIVATE
MOM6/src/ALE/coord_adapt.F90
Expand Down
11 changes: 6 additions & 5 deletions WW3/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ endforeach()

## WW3 library
add_fortran_library(OM3_ww3 mod STATIC)
add_library(AccessOM3::ww3 ALIAS OM3_ww3)
target_compile_definitions(OM3_ww3 PRIVATE ENDIANNESS="big_endian")
set_property(SOURCE WW3/model/src/w3initmd.F90
APPEND
Expand Down Expand Up @@ -100,23 +101,23 @@ set_target_properties(OM3_ww3_grid PROPERTIES
LINKER_LANGUAGE Fortran
OUTPUT_NAME ww3_grid
)
target_link_libraries(OM3_ww3_grid PRIVATE OM3_ww3)
target_link_libraries(OM3_ww3_grid PRIVATE AccessOM3::ww3)

# ww3_strt
add_executable(OM3_ww3_strt WW3/model/src/ww3_strt.F90)
set_target_properties(OM3_ww3_strt PROPERTIES
LINKER_LANGUAGE Fortran
OUTPUT_NAME ww3_strt
)
target_link_libraries(OM3_ww3_strt PRIVATE OM3_ww3)
target_link_libraries(OM3_ww3_strt PRIVATE AccessOM3::ww3)

# ww3_outf
add_executable(OM3_ww3_outf WW3/model/src/ww3_outf.F90)
set_target_properties(OM3_ww3_outf PROPERTIES
LINKER_LANGUAGE Fortran
OUTPUT_NAME ww3_outf
)
target_link_libraries(OM3_ww3_outf PRIVATE OM3_ww3)
target_link_libraries(OM3_ww3_outf PRIVATE AccessOM3::ww3)

# ww3_ounf
add_executable(OM3_ww3_ounf)
Expand All @@ -128,15 +129,15 @@ set_target_properties(OM3_ww3_ounf PROPERTIES
LINKER_LANGUAGE Fortran
OUTPUT_NAME ww3_ounf
)
target_link_libraries(OM3_ww3_ounf PRIVATE OM3_ww3)
target_link_libraries(OM3_ww3_ounf PRIVATE AccessOM3::ww3)

# ww3_ounp
add_executable(OM3_ww3_ounp WW3/model/src/ww3_ounp.F90)
set_target_properties(OM3_ww3_ounp PROPERTIES
LINKER_LANGUAGE Fortran
OUTPUT_NAME ww3_ounp
)
target_link_libraries(OM3_ww3_ounp PRIVATE OM3_ww3)
target_link_libraries(OM3_ww3_ounp PRIVATE AccessOM3::ww3)


## Installs
Expand Down
4 changes: 3 additions & 1 deletion share/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

## share library
add_fortran_library(OM3_share mod/share STATIC)
add_library(AccessOM3::share ALIAS OM3_share)
target_include_directories(OM3_share PUBLIC CESM_share/include)
if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
target_compile_definitions(OM3_share PRIVATE CPRGNU NAMING=_ADD_UNDERSCORE FORTRANUNDERSCORE)
Expand All @@ -10,7 +11,7 @@ elseif(CMAKE_Fortran_COMPILER_ID MATCHES "Intel")
endif()
target_link_libraries(OM3_share
PUBLIC esmf PIO::PIO_Fortran
PRIVATE OM3_timing
PRIVATE AccessOM3::timing
)
target_sources(OM3_share PRIVATE
# The following files are generated with a script acting on templates
Expand Down Expand Up @@ -53,6 +54,7 @@ endif()

## GPTL timing library
add_fortran_library(OM3_timing mod/timing STATIC)
add_library(AccessOM3::timing ALIAS OM3_timing)
target_compile_definitions(OM3_timing PRIVATE NUOPC_INTERFACE HAVE_MPI)
if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
target_compile_definitions(OM3_timing PRIVATE CPRGNU NAMING=_ADD_UNDERSCORE FORTRANUNDERSCORE)
Expand Down

0 comments on commit 6ce2fa6

Please sign in to comment.