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
1315option (ENABLE_MOM6 "Build MOM6 configuration" OFF )
1416option (ENABLE_CICE6 "Build CICE6 configuration" OFF )
1517option (ENABLE_WW3 "Build WW3 configuration" OFF )
18+ option (ENABLE_UM13 "Build UM13 configuration" OFF )
1619
1720# Check validity of requested components
1821foreach (_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 ()
3237endforeach ()
3338
3439message (STATUS "BuildConfigurations" )
3540message (STATUS "${BuildConfigurations} " )
3641message (STATUS " - MOM6 ${ENABLE_MOM6} " )
3742message (STATUS " - CICE6 ${ENABLE_CICE6} " )
3843message (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" )
4249endif ()
4350
@@ -52,62 +59,83 @@ endif()
5259if (ENABLE_WW3)
5360 find_package (Ww3lib REQUIRED AccessWW3Cmeps_Development )
5461endif ()
62+ if (ENABLE_UM13)
63+ find_package (PkgConfig REQUIRED )
64+ pkg_check_modules (UM REQUIRED IMPORTED_TARGET "libum-atmos" )
65+ pkg_check_modules (GCOM REQUIRED IMPORTED_TARGET "libgcom" )
66+ endif ()
5567
5668# Main Definitions
5769
5870# Add executable for each enabled configuration
5971foreach (CONF IN LISTS BuildConfigurations)
6072
6173 set (ComponentsTargets "" )
74+ set (CompileDefinitions MED_PRESENT)
6275 if (CONF MATCHES MOM6)
6376 list (APPEND ComponentsTargets Access3::mom6lib)
6477 else ()
6578 list (APPEND ComponentsTargets Access3::cdeps-docn)
6679 endif ()
80+ list (APPEND CompileDefinitions OCN_PRESENT)
81+
6782 if (CONF MATCHES CICE6)
6883 list (APPEND ComponentsTargets Access3::cicelib)
6984 else ()
7085 list (APPEND ComponentsTargets Access3::cdeps-dice)
7186 endif ()
87+ list (APPEND CompileDefinitions ICE_PRESENT)
88+
7289 if (CONF MATCHES WW3)
7390 list (APPEND ComponentsTargets Access3::ww3lib)
7491 else ()
7592 list (APPEND ComponentsTargets Access3::cdeps-dwav)
7693 endif ()
94+ list (APPEND CompileDefinitions WAV_PRESENT)
95+
96+ if (CONF MATCHES UM13)
97+ list (APPEND ComponentsTargets PkgConfig::UM PkgConfig::GCOM)
98+ list (APPEND CompileDefinitions ATM_PRESENT)
99+ else ()
100+ list (APPEND ComponentsTargets Access3::cdeps-drof Access3::cdeps-datm)
101+ list (APPEND CompileDefinitions ATM_PRESENT ROF_PRESENT)
102+ endif ()
77103
78104 # We use the CESM driver from CMEPS
79- add_fortran_library (OM3_cesm_driver_ ${CONF} mod/OM3_cesm_driver_ ${CONF} STATIC
105+ add_fortran_library (cesm_driver_ ${CONF} mod/cesm_driver_ ${CONF} STATIC
80106 CMEPS/CMEPS/cesm/driver/esm.F90
81107 CMEPS/CMEPS/cesm/driver/ensemble_driver.F90
82108 CMEPS/CMEPS/cesm/driver/esm_time_mod.F90
83109 )
84- target_link_libraries (OM3_cesm_driver_${CONF}
110+
111+ target_link_libraries (cesm_driver_${CONF}
85112 PUBLIC ESMF::ESMF
86- PRIVATE ${ComponentsTargets} Access3::cdeps-drof Access3::cdeps-datm Access3:: cmeps Access3::nuopc_cap_share Access3::share Access3::timing
113+ PRIVATE ${ComponentsTargets} Access3::cmeps Access3::nuopc_cap_share Access3::share Access3::timing
87114 )
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 >
115+ target_compile_definitions (cesm_driver_${CONF} PRIVATE ${CompileDefinitions}
116+ $<$<CONFIG :Debug >:DEBUG >
95117 )
96118
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 )
119+ add_executable (${CONF} CMEPS/CMEPS/cesm/driver/esmApp.F90 )
120+ target_link_libraries (${CONF} PRIVATE cesm_driver_${CONF} Access3::share ESMF::ESMF )
121+
122+ if (ENABLE_MOM6)
123+ set (BinName access-om3-${CONF} )
124+ else ()
125+ set (BinName access3-${CONF} )
126+ endif ()
99127
100- set_target_properties (OM3_ ${CONF} PROPERTIES
128+ set_target_properties (${CONF} PROPERTIES
101129 LINKER_LANGUAGE Fortran
102- OUTPUT_NAME access-om3- ${CONF }
130+ OUTPUT_NAME ${BinName }
103131 )
104132endforeach ()
105133
106134# Install
107135
108136foreach (CONF IN LISTS BuildConfigurations)
109137
110- install (TARGETS OM3_ ${CONF}
138+ install (TARGETS ${CONF}
111139 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
112140 )
113141endforeach ()
0 commit comments