diff --git a/.gitmodules b/.gitmodules index 6e63f4576f..7bd9813d10 100644 --- a/.gitmodules +++ b/.gitmodules @@ -9,7 +9,7 @@ [submodule "FMS"] path = FMS url = https://github.com/NOAA-GFDL/FMS - branch = master + branch = 2020.04.02 [submodule "WW3"] path = WW3 url = https://github.com/NOAA-EMC/WW3 diff --git a/CMakeLists.txt b/CMakeLists.txt index e4f62ef2ca..fe4b0b61dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -128,43 +128,21 @@ endif() ############################################################################### ### FMS ############################################################################### -include(fms_files.cmake) -add_library(fms ${fms_src_files} ${fms_headers}) -# stupid cmake can not figure out dependency of fft.F90 on fft99.F90 because 'use fft99_mod' is inside ifdefs -set_property(SOURCE FMS/fft/fft.F90 APPEND_STRING PROPERTY COMPILE_FLAGS "-DSGICRAY=0 -DNAGFFT=0") - -list(APPEND _fms_defs_public use_libMPI - use_netCDF - GFS_PHYS - INTERNAL_FILE_NML) -if(QUAD_PRECISION) - list(APPEND _fms_defs_public ENABLE_QUAD_PRECISION) +set(GFS_PHYS ON CACHE BOOL "Enable GFS Physics") +if(NOT 32BIT) + set(64BIT ON CACHE BOOL "Enable 64-bit") endif() -target_compile_definitions(fms PUBLIC "${_fms_defs_public}") - -if(32BIT) - list(APPEND _fms_defs_private OVERLOAD_R4 - OVERLOAD_R8) +if(NOT QUAD_PRECISION) + set(ENABLE_QUAD_PRECISION OFF CACHE BOOL "Enable Quad-precision") endif() -target_compile_definitions(fms PRIVATE "${_fms_defs_private}") - -target_include_directories(fms PUBLIC $ - $ - $ - $ - $) -target_include_directories(fms INTERFACE - $ - $) -target_link_libraries(fms PUBLIC MPI::MPI_Fortran - NetCDF::NetCDF_Fortran) -if(OpenMP_Fortran_FOUND) - target_link_libraries(fms PRIVATE OpenMP::OpenMP_Fortran) +add_subdirectory(FMS) + +if(32BIT) + add_library(fms ALIAS fms_r4) +else() + add_library(fms ALIAS fms_r8) endif() -set_target_properties(fms PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/FMS) -set_target_properties(fms PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/FMS/mod) -set_target_properties(fms PROPERTIES PUBLIC_HEADER "${fms_headers}" ) ############################################################################### ### stochastic_physics @@ -331,18 +309,6 @@ target_link_libraries(ufs_model PRIVATE ufs ############################################################################### ### Install ############################################################################### -install( - TARGETS fms - EXPORT fms-config - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib - PUBLIC_HEADER DESTINATION include ) - -install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/FMS/mod DESTINATION ${CMAKE_INSTALL_PREFIX}) - -install(EXPORT fms-config - DESTINATION lib/cmake -) install( TARGETS ufs EXPORT ufs-config diff --git a/FMS b/FMS index f61416fef6..8c806665fd 160000 --- a/FMS +++ b/FMS @@ -1 +1 @@ -Subproject commit f61416fef691d9ba39a40df1ce72aa574f54c390 +Subproject commit 8c806665fd8d0f48aee990c778b6bf05ef4dc439 diff --git a/fms_files.cmake b/fms_files.cmake deleted file mode 100644 index 5b486ac632..0000000000 --- a/fms_files.cmake +++ /dev/null @@ -1,87 +0,0 @@ -list(APPEND fms_src_files - FMS/affinity/fms_affinity.F90 - FMS/amip_interp/amip_interp.F90 - FMS/astronomy/astronomy.F90 - FMS/axis_utils/axis_utils.F90 - FMS/block_control/block_control.F90 - FMS/column_diagnostics/column_diagnostics.F90 - FMS/constants/constants.F90 - FMS/coupler/atmos_ocean_fluxes.F90 - FMS/coupler/coupler_types.F90 - FMS/coupler/ensemble_manager.F90 - FMS/data_override/data_override.F90 - FMS/diag_integral/diag_integral.F90 - FMS/diag_manager/diag_axis.F90 - FMS/diag_manager/diag_data.F90 - FMS/diag_manager/diag_grid.F90 - FMS/diag_manager/diag_manager.F90 - FMS/diag_manager/diag_manifest.F90 - FMS/diag_manager/diag_output.F90 - FMS/diag_manager/diag_table.F90 - FMS/diag_manager/diag_util.F90 - FMS/drifters/cloud_interpolator.F90 - FMS/drifters/drifters.F90 - FMS/drifters/drifters_comm.F90 - FMS/drifters/drifters_core.F90 - FMS/drifters/drifters_input.F90 - FMS/drifters/drifters_io.F90 - FMS/drifters/quicksort.F90 - FMS/exchange/stock_constants.F90 - FMS/exchange/xgrid.F90 - FMS/fft/fft.F90 - FMS/fft/fft99.F90 - FMS/field_manager/field_manager.F90 - FMS/field_manager/fm_util.F90 - FMS/fms/fms.F90 - FMS/fms/fms_io.F90 - FMS/horiz_interp/horiz_interp.F90 - FMS/horiz_interp/horiz_interp_bicubic.F90 - FMS/horiz_interp/horiz_interp_bilinear.F90 - FMS/horiz_interp/horiz_interp_conserve.F90 - FMS/horiz_interp/horiz_interp_spherical.F90 - FMS/horiz_interp/horiz_interp_type.F90 - FMS/interpolator/interpolator.F90 - FMS/memutils/memutils.F90 - FMS/monin_obukhov/monin_obukhov.F90 - FMS/monin_obukhov/monin_obukhov_kernel.F90 - FMS/mosaic/gradient.F90 - FMS/mosaic/grid.F90 - FMS/mosaic/mosaic.F90 - FMS/mpp/mpp.F90 - FMS/mpp/mpp_data.F90 - FMS/mpp/mpp_domains.F90 - FMS/mpp/mpp_efp.F90 - FMS/mpp/mpp_io.F90 - FMS/mpp/mpp_memutils.F90 - FMS/mpp/mpp_parameter.F90 - FMS/mpp/mpp_pset.F90 - FMS/mpp/mpp_utilities.F90 - FMS/platform/platform.F90 - FMS/random_numbers/MersenneTwister.F90 - FMS/random_numbers/random_numbers.F90 - FMS/sat_vapor_pres/sat_vapor_pres.F90 - FMS/sat_vapor_pres/sat_vapor_pres_k.F90 - FMS/station_data/station_data.F90 - FMS/time_interp/time_interp.F90 - FMS/time_interp/time_interp_external.F90 - FMS/time_manager/get_cal_time.F90 - FMS/time_manager/time_manager.F90 - FMS/topography/gaussian_topog.F90 - FMS/topography/topography.F90 - FMS/tracer_manager/tracer_manager.F90 - FMS/tridiagonal/tridiagonal.F90 - - FMS/memutils/memuse.c - FMS/mosaic/create_xgrid.c - FMS/mosaic/gradient_c2l.c - FMS/mosaic/interp.c - FMS/mosaic/mosaic_util.c - FMS/mosaic/read_mosaic.c - FMS/mpp/nsclock.c - FMS/mpp/threadloc.c -) - -list( APPEND fms_headers -FMS/include/fms_platform.h -FMS/include/file_version.h -) diff --git a/stochastic_physics b/stochastic_physics index c39bb8a09a..b6e5e661e8 160000 --- a/stochastic_physics +++ b/stochastic_physics @@ -1 +1 @@ -Subproject commit c39bb8a09a196a9dd17ea3fb52152b61ef2881ae +Subproject commit b6e5e661e813a809d6885ade2c5babd5298725ad