-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathCMakeLists.txt
115 lines (109 loc) · 4.47 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
### Targets
## 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 AccessOM3::nuopc_cap_share AccessOM3::share AccessOM3::timing
)
if(OpenMP_Fortran_FOUND)
target_link_libraries(OM3_cmeps PRIVATE OpenMP::OpenMP_Fortran)
endif()
target_sources(OM3_cmeps PRIVATE
CMEPS/cesm/flux_atmocn/shr_flux_mod.F90
CMEPS/mediator/med_phases_history_mod.F90
CMEPS/mediator/med_phases_restart_mod.F90
CMEPS/mediator/med_map_mod.F90
CMEPS/mediator/med_methods_mod.F90
CMEPS/mediator/med_phases_prep_ice_mod.F90
CMEPS/mediator/med_phases_prep_glc_mod.F90
CMEPS/mediator/med_internalstate_mod.F90
CMEPS/mediator/med_phases_profile_mod.F90
CMEPS/mediator/esmFldsExchange_hafs_mod.F90
CMEPS/mediator/med_phases_prep_rof_mod.F90
CMEPS/mediator/esmFldsExchange_cesm_mod.F90
CMEPS/mediator/med_merge_mod.F90
CMEPS/mediator/med_constants_mod.F90
CMEPS/mediator/med_kind_mod.F90
CMEPS/mediator/esmFldsExchange_ufs_mod.F90
CMEPS/mediator/med_phases_prep_lnd_mod.F90
CMEPS/mediator/med_phases_prep_atm_mod.F90
CMEPS/mediator/med_phases_prep_ocn_mod.F90
CMEPS/mediator/esmFlds.F90
CMEPS/mediator/med.F90
CMEPS/mediator/med_phases_ocnalb_mod.F90
CMEPS/mediator/med_phases_prep_wav_mod.F90
CMEPS/mediator/med_utils_mod.F90
CMEPS/mediator/med_fraction_mod.F90
CMEPS/mediator/med_phases_aofluxes_mod.F90
CMEPS/mediator/med_io_mod.F90
CMEPS/mediator/med_diag_mod.F90
CMEPS/mediator/med_phases_post_atm_mod.F90
CMEPS/mediator/med_phases_post_ice_mod.F90
CMEPS/mediator/med_phases_post_ocn_mod.F90
CMEPS/mediator/med_phases_post_lnd_mod.F90
CMEPS/mediator/med_phases_post_glc_mod.F90
CMEPS/mediator/med_phases_post_rof_mod.F90
CMEPS/mediator/med_phases_post_wav_mod.F90
)
## 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 AccessOM3::share
)
target_sources(OM3_nuopc_cap_share PRIVATE
CMEPS/cesm/nuopc_cap_share/driver_pio_mod.F90
CMEPS/cesm/nuopc_cap_share/esm_utils_mod.F90
CMEPS/cesm/nuopc_cap_share/glc_elevclass_mod.F90
)
### Install and Export
if(OM3_LIB_INSTALL)
## CMEPS library
set_target_properties(OM3_cmeps PROPERTIES
OUTPUT_NAME access-cmeps
EXPORT_NAME cmeps
)
install(TARGETS OM3_cmeps
EXPORT AccessOM3cmeps_Targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT AccessOM3_RunTime NAMELINK_COMPONENT AccessOM3_Development
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT AccessOM3_Development
)
# Fortran module files are a special case, as currently there is no standard
# way of handling them in CMake
target_include_directories(OM3_cmeps PUBLIC "$<INSTALL_INTERFACE:${CMAKE_INSTALL_MODULEDIR}/access-cmeps>")
get_target_property(cmeps_moddir OM3_cmeps Fortran_MODULE_DIRECTORY)
install(FILES ${cmeps_moddir}/med.mod ${cmeps_moddir}/med_time_mod.mod ${cmeps_moddir}/med_internalstate_mod.mod
DESTINATION ${CMAKE_INSTALL_MODULEDIR}/access-cmeps
COMPONENT AccessOM3_Development
)
install(EXPORT AccessOM3cmeps_Targets
FILE AccessOM3cmepsTargets.cmake
NAMESPACE AccessOM3::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/AccessOM3
)
## NUOPC cap share
set_target_properties(OM3_nuopc_cap_share PROPERTIES
OUTPUT_NAME access-nuopc_cap_share
EXPORT_NAME nuopc_cap_share
)
install(TARGETS OM3_nuopc_cap_share
EXPORT AccessOM3nuopc_cap_share_Targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT AccessOM3_RunTime NAMELINK_COMPONENT AccessOM3_Development
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT AccessOM3_Development
)
# Fortran module files are a special case, as currently there is no standard
# way of handling them in CMake
target_include_directories(OM3_nuopc_cap_share PUBLIC "$<INSTALL_INTERFACE:${CMAKE_INSTALL_MODULEDIR}/access-nuopc_cap_share>")
get_target_property(nuopc_cap_share_moddir OM3_nuopc_cap_share Fortran_MODULE_DIRECTORY)
install(DIRECTORY ${nuopc_cap_share_moddir}/
DESTINATION ${CMAKE_INSTALL_MODULEDIR}/access-nuopc_cap_share
COMPONENT AccessOM3_Development
)
install(EXPORT AccessOM3nuopc_cap_share_Targets
FILE AccessOM3nuopc_cap_shareTargets.cmake
NAMESPACE AccessOM3::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/AccessOM3
)
endif()