Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Share prototype #2

Draft
wants to merge 22 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 15 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
41 changes: 0 additions & 41 deletions .github/ISSUE_TEMPLATE/parameter-testing.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .github/workflows/compilation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
env:
FC: mpifort
CC: mpicc
run: . /etc/profile && cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_VERBOSE_MAKEFILE=ON
run: . /etc/profile && cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_VERBOSE_MAKEFILE=ON -DACCESS3_LIB_INSTALL=TRUE

- name: Build
# Build your program with the given configuration
Expand Down
157 changes: 85 additions & 72 deletions CDEPS/CMakeLists.txt
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
### Targets

## 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
add_fortran_library(ACCESS3_cdeps_common mod/common STATIC)
add_library(Access3::cdeps_common ALIAS ACCESS3_cdeps_common)
target_include_directories(ACCESS3_cdeps_common PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/fox/include>)
target_link_libraries(ACCESS3_cdeps_common
PUBLIC esmf
PRIVATE AccessOM3::share AccessOM3::cmeps AccessOM3::nuopc_cap_share FoX::FoX PIO::PIO_Fortran
PRIVATE Access3::share Access3::cmeps Access3::nuopc_cap_share FoX::FoX PIO::PIO_Fortran
)
target_sources(OM3_cdeps_common PRIVATE
target_sources(ACCESS3_cdeps_common PRIVATE
CDEPS/streams/dshr_methods_mod.F90
CDEPS/streams/dshr_strdata_mod.F90
CDEPS/streams/dshr_stream_mod.F90
Expand All @@ -20,14 +20,14 @@ 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
add_fortran_library(ACCESS3_cdeps_datm mod/datm STATIC)
add_library(Access3::cdeps_datm ALIAS ACCESS3_cdeps_datm)
target_include_directories(ACCESS3_cdeps_datm PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/fox/include>)
target_link_libraries(ACCESS3_cdeps_datm
PUBLIC esmf
PRIVATE AccessOM3::cdeps_common AccessOM3::share
PRIVATE Access3::cdeps_common Access3::share
)
target_sources(OM3_cdeps_datm PRIVATE
target_sources(ACCESS3_cdeps_datm PRIVATE
CDEPS/datm/datm_datamode_cfsr_mod.F90
CDEPS/datm/datm_datamode_clmncep_mod.F90
CDEPS/datm/datm_datamode_core2_mod.F90
Expand All @@ -38,17 +38,17 @@ target_sources(OM3_cdeps_datm PRIVATE
CDEPS/datm/datm_datamode_simple_mod.F90
extra_sources/datm_datamode_jra55do_mod.F90
)
add_patched_source(OM3_cdeps_datm CDEPS/datm/atm_comp_nuopc.F90)
add_patched_source(ACCESS3_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
add_fortran_library(ACCESS3_cdeps_docn mod/docn STATIC)
add_library(Access3::cdeps_docn ALIAS ACCESS3_cdeps_docn)
target_include_directories(ACCESS3_cdeps_docn PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/fox/include>)
target_link_libraries(ACCESS3_cdeps_docn
PUBLIC esmf
PRIVATE AccessOM3::cdeps_common AccessOM3::share
PRIVATE Access3::cdeps_common Access3::share
)
target_sources(OM3_cdeps_docn PRIVATE
target_sources(ACCESS3_cdeps_docn PRIVATE
CDEPS/docn/docn_datamode_aquaplanet_mod.F90
CDEPS/docn/docn_datamode_copyall_mod.F90
CDEPS/docn/docn_datamode_cplhist_mod.F90
Expand All @@ -59,80 +59,93 @@ 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
add_fortran_library(ACCESS3_cdeps_dice mod/dice STATIC)
add_library(Access3::cdeps_dice ALIAS ACCESS3_cdeps_dice)
target_include_directories(ACCESS3_cdeps_dice PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/fox/include>)
target_link_libraries(ACCESS3_cdeps_dice
PUBLIC esmf
PRIVATE AccessOM3::cdeps_common AccessOM3::share
PRIVATE Access3::cdeps_common Access3::share
)
target_sources(OM3_cdeps_dice PRIVATE
target_sources(ACCESS3_cdeps_dice PRIVATE
CDEPS/dice/dice_datamode_ssmi_mod.F90
CDEPS/dice/dice_flux_atmice_mod.F90
CDEPS/dice/ice_comp_nuopc.F90
)

## 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
add_fortran_library(ACCESS3_cdeps_dwav mod/dwav STATIC)
add_library(Access3::cdeps_dwav ALIAS ACCESS3_cdeps_dwav)
target_include_directories(ACCESS3_cdeps_dwav PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/fox/include>)
target_link_libraries(ACCESS3_cdeps_dwav
PUBLIC esmf
PRIVATE AccessOM3::cdeps_common AccessOM3::share
PRIVATE Access3::cdeps_common Access3::share
)
target_sources(OM3_cdeps_dwav PRIVATE
target_sources(ACCESS3_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
add_fortran_library(ACCESS3_cdeps_drof mod/drof STATIC)
add_library(Access3::cdeps_drof ALIAS ACCESS3_cdeps_drof)
target_include_directories(ACCESS3_cdeps_drof PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/fox/include>)
target_link_libraries(ACCESS3_cdeps_drof
PUBLIC esmf
PRIVATE AccessOM3::cdeps_common AccessOM3::share
PRIVATE Access3::cdeps_common Access3::share
)
target_sources(OM3_cdeps_drof PRIVATE
target_sources(ACCESS3_cdeps_drof PRIVATE
CDEPS/drof/rof_comp_nuopc.F90
)

### Install and Export

## Library
if(OM3_LIB_INSTALL)
# cdeps_common
set_target_properties(OM3_cdeps_common PROPERTIES
OUTPUT_NAME access-cdeps-common
EXPORT_NAME cdeps-common
# cdeps_common
set_target_properties(ACCESS3_cdeps_common PROPERTIES
OUTPUT_NAME access-cdeps-common
EXPORT_NAME cdeps-common
)
install(TARGETS ACCESS3_cdeps_common
EXPORT Access3Sharecdeps_Targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Access3Share_RunTime NAMELINK_COMPONENT Access3Share_Development
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Access3Share_Development
)
# Fortran module files are a special case, as currently there is no standard
# way of handling them in CMake
target_include_directories(ACCESS3_cdeps_common PUBLIC "$<INSTALL_INTERFACE:${CMAKE_INSTALL_MODULEDIR}/access-cdeps-common>")
get_target_property(common_moddir ACCESS3_cdeps_common Fortran_MODULE_DIRECTORY)
install(FILES
${common_moddir}/dshr_methods_mod.mod
${common_moddir}/dshr_strdata_mod.mod
${common_moddir}/dshr_stream_mod.mod
${common_moddir}/dshr_tinterp_mod.mod

${common_moddir}/dshr_dfield_mod.mod
${common_moddir}/dshr_fldlist_mod.mod
${common_moddir}/dshr_mod.mod
DESTINATION ${CMAKE_INSTALL_MODULEDIR}/access-cdeps-common
COMPONENT Access3Share_Development
)
# components
foreach(LIB atm ocn ice wav rof)
set_target_properties(ACCESS3_cdeps_d${LIB} PROPERTIES
OUTPUT_NAME access-cdeps-d${LIB}
EXPORT_NAME cdeps-d${LIB}
)
install(TARGETS OM3_cdeps_common
EXPORT AccessOM3cdeps_Targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT AccessOM3_RunTime NAMELINK_COMPONENT AccessOM3_Development
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT AccessOM3_Development
install(TARGETS ACCESS3_cdeps_d${LIB}
EXPORT Access3Sharecdeps_Targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Access3Share_RunTime NAMELINK_COMPONENT Access3Share_Development
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Access3Share_Development
)
# components
foreach(LIB atm ocn ice wav rof)
set_target_properties(OM3_cdeps_d${LIB} PROPERTIES
OUTPUT_NAME access-cdeps-d${LIB}
EXPORT_NAME cdeps-d${LIB}
)
install(TARGETS OM3_cdeps_d${LIB}
EXPORT AccessOM3cdeps_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_cdeps_d${LIB} PUBLIC "$<INSTALL_INTERFACE:${CMAKE_INSTALL_MODULEDIR}/access-cdeps-d${LIB}>")
get_target_property(d${LIB}_moddir OM3_cdeps_d${LIB} Fortran_MODULE_DIRECTORY)
install(FILES ${d${LIB}_moddir}/${LIB}_comp_nuopc.mod
DESTINATION ${CMAKE_INSTALL_MODULEDIR}/access-cdeps-d${LIB}
COMPONENT AccessOM3_Development
)
endforeach()
install(EXPORT AccessOM3cdeps_Targets
FILE AccessOM3cdepsTargets.cmake
NAMESPACE AccessOM3::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/AccessOM3
# Fortran module files are a special case, as currently there is no standard
# way of handling them in CMake
target_include_directories(ACCESS3_cdeps_d${LIB} PUBLIC "$<INSTALL_INTERFACE:${CMAKE_INSTALL_MODULEDIR}/access-cdeps-d${LIB}>")
get_target_property(d${LIB}_moddir ACCESS3_cdeps_d${LIB} Fortran_MODULE_DIRECTORY)
install(FILES ${d${LIB}_moddir}/${LIB}_comp_nuopc.mod
DESTINATION ${CMAKE_INSTALL_MODULEDIR}/access-cdeps-d${LIB}
COMPONENT Access3Share_Development
)
endif()
endforeach()
install(EXPORT Access3Sharecdeps_Targets
FILE Access3SharecdepsTargets.cmake
NAMESPACE Access3::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Access3Share
)
Loading
Loading