@@ -30,12 +30,12 @@ project(FMS
3030
3131include (GNUInstallDirs)
3232
33- if (NOT CMAKE_BUILD_TYPE MATCHES "^(Debug|Release|RelWithDebInfo|MinSizeRel|DebugUFS)$" )
33+ if (NOT CMAKE_BUILD_TYPE MATCHES "^(Debug|Release|RelWithDebInfo|MinSizeRel|DebugUFS|ReleaseUFS|NoFlags|Repro )$" )
3434 message (STATUS "Setting build type to 'Release' as none was specified." )
3535 set (CMAKE_BUILD_TYPE
3636 "Release"
3737 CACHE STRING "Choose the type of build." FORCE)
38- set_property (CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo" "DebugUFS" )
38+ set_property (CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo" "DebugUFS" "ReleaseUFS" "NoFlags" "Repro" )
3939endif ()
4040
4141if (NOT CMAKE_C_COMPILER_ID MATCHES "^(Intel|GNU|Clang|IntelLLVM)$" )
@@ -52,15 +52,15 @@ endif()
5252list (APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR} /cmake)
5353
5454# Build options
55- option (OPENMP "Build FMS with OpenMP support" OFF )
55+ option (OPENMP "Build FMS with OpenMP support" ON )
5656option (32BIT "Build 32-bit (r4) FMS library" OFF )
5757option (64BIT "Build 64-bit (r8) FMS library" OFF )
5858option (FPIC "Build with position independent code" OFF )
5959option (SHARED_LIBS "Build shared/dynamic libraries" OFF )
6060
6161# Options for compiler definitions
6262option (INTERNAL_FILE_NML "Enable compiler definition -DINTERNAL_FILE_NML" ON )
63- option (ENABLE_QUAD_PRECISION "Enable compiler definition -DENABLE_QUAD_PRECISION" ON )
63+ option (ENABLE_QUAD_PRECISION "Enable compiler definition -DENABLE_QUAD_PRECISION" OFF )
6464option (PORTABLE_KINDS "Enable compiler definition -DPORTABLE_KINDS" OFF )
6565option (GFS_PHYS "Enable compiler definition -DGFS_PHYS" OFF )
6666option (LARGEFILE "Enable compiler definition -Duse_LARGEFILE" OFF )
@@ -343,7 +343,7 @@ foreach(kind ${kinds})
343343 amip_interp/include )
344344 target_compile_definitions (${libTgt} _f PRIVATE "${fms_defs} " )
345345 target_compile_definitions (${libTgt} _f PRIVATE "${${kind} _defs}" )
346- set_target_properties (${libTgt} _f PROPERTIES COMPILE_FLAGS " ${${kind} _flags}" )
346+ set_target_properties (${libTgt} _f PROPERTIES COMPILE_FLAGS ${${kind} _flags})
347347 set_target_properties (${libTgt} _f PROPERTIES Fortran_MODULE_DIRECTORY
348348 ${moduleDir} )
349349 target_link_libraries (${libTgt} _f PRIVATE NetCDF::NetCDF_Fortran
@@ -485,7 +485,7 @@ if(NOT kinds)
485485 amip_interp/include )
486486 target_compile_definitions (${libTgt} _f PRIVATE "${fms_defs} " )
487487 target_compile_definitions (${libTgt} _f PRIVATE "${${kind} _defs}" )
488- set_target_properties (${libTgt} _f PROPERTIES COMPILE_FLAGS " ${${kind} _flags}" )
488+ set_target_properties (${libTgt} _f PROPERTIES COMPILE_FLAGS ${${kind} _flags})
489489 set_target_properties (${libTgt} _f PROPERTIES Fortran_MODULE_DIRECTORY
490490 ${moduleDir} )
491491 target_link_libraries (${libTgt} _f PRIVATE NetCDF::NetCDF_Fortran
@@ -551,6 +551,7 @@ if(NOT kinds)
551551
552552 target_compile_definitions (${libTgt} PRIVATE "${fms_defs} " )
553553 target_compile_definitions (${libTgt} PRIVATE "${${kind} _defs}" )
554+ set_target_properties (${libTgt} _f PROPERTIES COMPILE_FLAGS ${${kind} _flags})
554555
555556 target_link_libraries (${libTgt} PUBLIC NetCDF::NetCDF_C
556557 NetCDF::NetCDF_Fortran
@@ -594,13 +595,14 @@ list(APPEND TEST_MODS_SRC
594595 test_fms/fms/test_fms.F90
595596 test_fms/fms2_io/argparse.F90
596597 test_fms/fms2_io/setup.F90
597- # test_fms/mosaic2/write_files.F90
598+ test_fms/mosaic2/write_files.F90
598599 test_fms/mpp/compare_data_checksums.F90
599600 test_fms/mpp/compare_data_checksums_int.F90
600601 test_fms/mpp/fill_halo.F90
601602 test_fms/mpp/test_domains_utility_mod.F90
602603 test_fms/mpp/test_mpp_update_domains_int.F90
603604 test_fms/mpp/test_mpp_update_domains_real.F90
605+ test_fms/mpp/test_mpp_update_domains_ad.F90
604606 test_fms/mpp/test_system_clock.F90)
605607
606608add_library (testLibs "${TEST_MODS_SRC} " )
@@ -716,10 +718,8 @@ list(APPEND TEST_SRC_SINGLE_TARGET
716718 test_fms/mpp/test_mpp_sendrecv.F90
717719 test_fms/mpp/test_mpp_sum.F90
718720 test_fms/mpp/test_mpp_transmit.F90
721+ test_fms/mpp/test_mpp_update_domains.F90
719722 test_fms/mpp/test_mpp_update_domains_ad.F90
720- test_fms/mpp/test_mpp_update_domains_int.F90
721- test_fms/mpp/test_mpp_update_domains_main.F90
722- test_fms/mpp/test_mpp_update_domains_real.F90
723723 test_fms/mpp/test_peset.F90
724724 test_fms/mpp/test_mpp_read_ascii_file.F90
725725 test_fms/mpp/test_read_input_nml.F90
@@ -774,7 +774,7 @@ foreach (testFile ${TEST_SRC_SINGLE_TARGET})
774774
775775 add_executable (${TName} ${testFile} )
776776 target_compile_definitions (${TName} PRIVATE "${r8_defs} " )
777- set_target_properties (${TName} PROPERTIES COMPILE_FLAGS " ${r8_flags} " )
777+ set_target_properties (${TName} PROPERTIES COMPILE_FLAGS ${r8_flags} )
778778 target_link_libraries (${TName} PUBLIC FMS::fms
779779 PRIVATE testLibs
780780 )
@@ -801,14 +801,16 @@ foreach (testFile ${TEST_SRC_MULTI_TARGET})
801801
802802 add_executable (${TName} _r8 ${testFile} )
803803 target_compile_definitions (${TName} _r8 PRIVATE "${r8_defs} " )
804- set_target_properties (${TName} _r8 PROPERTIES COMPILE_FLAGS " ${r8_flags} " )
804+ set_target_properties (${TName} _r8 PROPERTIES COMPILE_FLAGS ${r8_flags} )
805805 target_link_libraries (${TName} _r8 PUBLIC FMS::fms
806806 PRIVATE testLibs
807807 )
808808
809809 add_executable (${TName} _r4 ${testFile} )
810810 target_compile_definitions (${TName} _r4 PRIVATE "${r4_defs} " )
811- set_target_properties (${TName} _r4 PROPERTIES COMPILE_FLAGS "${r4_flags} " )
811+ # seems counterintuitive but r4 tests use r8 default
812+ # they specify kind values explicitly with the preprocessor where needed (TEST_FMS_KIND_)
813+ set_target_properties (${TName} _r4 PROPERTIES COMPILE_FLAGS ${r8_flags} )
812814 target_link_libraries (${TName} _r4 PUBLIC FMS::fms
813815 PRIVATE testLibs
814816 )
@@ -837,10 +839,15 @@ foreach (testFile ${TEST_SRC_MULTI_TARGET})
837839 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} /test_fms/data_override/include
838840 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} /test_fms/mosaic2
839841 PRIVATE ${CMAKE_CURRENT_BINARY_DIR} )
842+ #set macros used to test mixed precision
840843 target_compile_definitions (${TName} _r8 PRIVATE TEST_FMS_KIND_=r8_kind)
841844 target_compile_definitions (${TName} _r4 PRIVATE TEST_FMS_KIND_=r4_kind)
842845 target_compile_definitions (${TName} _r8 PRIVATE FMS_TEST_BC_TYPE_=bc)
843846 target_compile_definitions (${TName} _r4 PRIVATE FMS_TEST_BC_TYPE_=bc_r4)
847+ target_compile_definitions (${TName} _r8 PRIVATE FMS_TEST_BC_TYPE_=bc)
848+ target_compile_definitions (${TName} _r4 PRIVATE FMS_TEST_BC_TYPE_=bc_r4)
849+ target_compile_definitions (${TName} _r8 PRIVATE WRITE_FILES_MOD_=write_files_r8)
850+ target_compile_definitions (${TName} _r4 PRIVATE WRITE_FILES_MOD_=write_files_r4)
844851endforeach ()
845852
846853# gather all test scripts
@@ -862,7 +869,9 @@ foreach (testScript ${TEST_SCRIPTS})
862869 set_property (TEST ${testName} PROPERTY LABELS ${testDirName} )
863870 # set an environment variable so the scripts know to skip tests that use libyaml
864871 if (NOT WITH_YAML)
865- set_property (TEST ${testName} PROPERTY ENVIRONMENT skipflag=skip;parser_skip=skip;skip_yaml=yes )
872+ set_tests_properties (${testName} PROPERTIES
873+ ENVIRONMENT "skipflag=skip;parser_skip=skip;skip_yaml=yes"
874+ )
866875 endif ()
867876endforeach ()
868877
0 commit comments