Skip to content

Commit dbd9d86

Browse files
authored
Support linking with UM13 (#40)
* Support linking with UM13
1 parent 62ebd72 commit dbd9d86

1 file changed

Lines changed: 48 additions & 21 deletions

File tree

cmake/Access3BinInstall.cmake

Lines changed: 48 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,23 @@
55
# Options #
66
#]==============================================================================]
77

8-
# Configurations to build
9-
# TO-DO add UM
10-
list(APPEND KnownConfigurations MOM6 CICE6 WW3 MOM6-CICE6 CICE6-WW3 MOM6-WW3 MOM6-CICE6-WW3)
11-
set(BuildConfigurations)
8+
# These combinations are known to build. Other combinations of MOM6-CICE6-WW3-UM13
9+
# would be possible
10+
list(APPEND KnownConfigurations
11+
MOM6 CICE6 WW3 MOM6-CICE6 CICE6-WW3 MOM6-WW3 MOM6-CICE6-WW3 MOM6-UM13 MOM6-CICE6-UM13
12+
)
13+
set(BuildConfigurations) # Configurations to build
1214

1315
option(ENABLE_MOM6 "Build MOM6 configuration" OFF)
1416
option(ENABLE_CICE6 "Build CICE6 configuration" OFF)
1517
option(ENABLE_WW3 "Build WW3 configuration" OFF)
18+
option(ENABLE_UM13 "Build UM13 configuration" OFF)
1619

1720
# Check validity of requested components
1821
foreach(_conf IN LISTS BuildConfigurations)
1922
if (NOT _conf IN_LIST KnownConfigurations)
2023
message (FATAL_ERROR "Unsupported configuration: ${_conf}")
2124
endif()
22-
# Do not build try to include that are not going to be used
2325
if (_conf MATCHES MOM6)
2426
set(ENABLE_MOM6 ON)
2527
endif()
@@ -29,15 +31,20 @@ foreach(_conf IN LISTS BuildConfigurations)
2931
if (_conf MATCHES WW3)
3032
set(ENABLE_WW3 ON)
3133
endif()
34+
if (_conf MATCHES UM13)
35+
set(ENABLE_UM13 ON)
36+
endif()
3237
endforeach()
3338

3439
message(STATUS "BuildConfigurations")
3540
message(STATUS "${BuildConfigurations}")
3641
message(STATUS " - MOM6 ${ENABLE_MOM6}")
3742
message(STATUS " - CICE6 ${ENABLE_CICE6}")
3843
message(STATUS " - WW3 ${ENABLE_WW3}")
44+
message(STATUS " - UM13 ${ENABLE_UM13}")
45+
3946

40-
if(NOT (ENABLE_MOM6 OR ENABLE_CICE6 OR ENABLE_WW3))
47+
if(NOT (ENABLE_MOM6 OR ENABLE_CICE6 OR ENABLE_WW3 OR ENABLE_UM13))
4148
message (FATAL_ERROR "No model components have been requested, atleast one ENABLE_ configuration must be set")
4249
endif()
4350

@@ -52,62 +59,82 @@ endif()
5259
if(ENABLE_WW3)
5360
find_package(Ww3lib REQUIRED AccessWW3Cmeps_Development)
5461
endif()
62+
if(ENABLE_UM13)
63+
find_package(PkgConfig REQUIRED)
64+
pkg_check_modules(UM REQUIRED IMPORTED_TARGET "libum-atmos")
65+
endif()
5566

5667
# Main Definitions
5768

5869
# Add executable for each enabled configuration
5970
foreach(CONF IN LISTS BuildConfigurations)
6071

6172
set(ComponentsTargets "")
73+
set(CompileDefinitions MED_PRESENT)
6274
if(CONF MATCHES MOM6)
6375
list(APPEND ComponentsTargets Access3::mom6lib)
6476
else()
6577
list(APPEND ComponentsTargets Access3::cdeps-docn)
6678
endif()
79+
list(APPEND CompileDefinitions OCN_PRESENT)
80+
6781
if(CONF MATCHES CICE6)
6882
list(APPEND ComponentsTargets Access3::cicelib)
6983
else()
7084
list(APPEND ComponentsTargets Access3::cdeps-dice)
7185
endif()
86+
list(APPEND CompileDefinitions ICE_PRESENT)
87+
7288
if(CONF MATCHES WW3)
7389
list(APPEND ComponentsTargets Access3::ww3lib)
7490
else()
7591
list(APPEND ComponentsTargets Access3::cdeps-dwav)
7692
endif()
93+
list(APPEND CompileDefinitions WAV_PRESENT)
94+
95+
if(CONF MATCHES UM13)
96+
list(APPEND ComponentsTargets PkgConfig::UM)
97+
list(APPEND CompileDefinitions ATM_PRESENT)
98+
else()
99+
list(APPEND ComponentsTargets Access3::cdeps-drof Access3::cdeps-datm)
100+
list(APPEND CompileDefinitions ATM_PRESENT ROF_PRESENT)
101+
endif()
77102

78103
# We use the CESM driver from CMEPS
79-
add_fortran_library(OM3_cesm_driver_${CONF} mod/OM3_cesm_driver_${CONF} STATIC
104+
add_fortran_library(cesm_driver_${CONF} mod/cesm_driver_${CONF} STATIC
80105
CMEPS/CMEPS/cesm/driver/esm.F90
81106
CMEPS/CMEPS/cesm/driver/ensemble_driver.F90
82107
CMEPS/CMEPS/cesm/driver/esm_time_mod.F90
83108
)
84-
target_link_libraries(OM3_cesm_driver_${CONF}
109+
110+
target_link_libraries(cesm_driver_${CONF}
85111
PUBLIC ESMF::ESMF
86-
PRIVATE ${ComponentsTargets} Access3::cdeps-drof Access3::cdeps-datm Access3::cmeps Access3::nuopc_cap_share Access3::share Access3::timing
112+
PRIVATE ${ComponentsTargets} Access3::cmeps Access3::nuopc_cap_share Access3::share Access3::timing
87113
)
88-
target_compile_definitions(OM3_cesm_driver_${CONF} PRIVATE MED_PRESENT
89-
ATM_PRESENT
90-
ICE_PRESENT
91-
OCN_PRESENT
92-
WAV_PRESENT
93-
ROF_PRESENT
94-
$<$<CONFIG:Debug>:DEBUG>
114+
target_compile_definitions(cesm_driver_${CONF} PRIVATE ${CompileDefinitions}
115+
$<$<CONFIG:Debug>:DEBUG>
95116
)
96117

97-
add_executable(OM3_${CONF} CMEPS/CMEPS/cesm/driver/esmApp.F90)
98-
target_link_libraries(OM3_${CONF} PRIVATE OM3_cesm_driver_${CONF} Access3::share ESMF::ESMF)
118+
add_executable(${CONF} CMEPS/CMEPS/cesm/driver/esmApp.F90)
119+
target_link_libraries(${CONF} PRIVATE cesm_driver_${CONF} Access3::share ESMF::ESMF)
120+
121+
if (ENABLE_MOM6 AND NOT ENABLE_UM13)
122+
set(BinName access-om3-${CONF})
123+
else()
124+
set(BinName access3-${CONF})
125+
endif()
99126

100-
set_target_properties(OM3_${CONF} PROPERTIES
127+
set_target_properties(${CONF} PROPERTIES
101128
LINKER_LANGUAGE Fortran
102-
OUTPUT_NAME access-om3-${CONF}
129+
OUTPUT_NAME ${BinName}
103130
)
104131
endforeach()
105132

106133
# Install
107134

108135
foreach(CONF IN LISTS BuildConfigurations)
109136

110-
install(TARGETS OM3_${CONF}
137+
install(TARGETS ${CONF}
111138
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
112139
)
113140
endforeach()

0 commit comments

Comments
 (0)