From e9a93f87a21a44c1fad8e316455eaac35dd04768 Mon Sep 17 00:00:00 2001 From: scivision Date: Thu, 7 Mar 2024 19:35:37 -0500 Subject: [PATCH 1/3] cmake: exec_program has been removed these results are CMake-defined values--speedup configure/reconfigure by using these built-in reliable cross-platform values. --- CMakeLists.txt | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a784576f..bea1e6e6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,20 +32,7 @@ SET(PACKAGE_VERSION ${VERSION}) # Set known dependencies. SET(EXTRA_DEPS "") -# Get system configuration, -# Use it to determine osname, -# os release, cpu. These will be used -# when committing to CDash. -find_program(UNAME NAMES uname) -IF(UNAME) - macro(getuname name flag) - exec_program("${UNAME}" ARGS "${flag}" OUTPUT_VARIABLE "${name}") - endmacro(getuname) - getuname(osname -s) - getuname(osrel -r) - getuname(cpu -m) - set(TMP_BUILDNAME "${osname}-${osrel}-${cpu}" CACHE STRING "Build name variable for CDash") -ENDIF() +set(TMP_BUILDNAME "${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_VERSION}-${CMAKE_SYSTEM_PROCESSOR}" CACHE STRING "Build name variable for CDash") # For CMAKE_INSTALL_LIBDIR INCLUDE(GNUInstallDirs) @@ -687,7 +674,7 @@ endif() OPTION(DISABLE_ZSTANDARD_PLUGIN "Disable ZStandard plugin detection and functionality, even if libnetcdf was compiled with plugin support" OFF) -IF(NOT DISABLE_ZSTANDARD_PLUGIN) +IF(NOT DISABLE_ZSTANDARD_PLUGIN) SET(CMAKE_REQUIRED_INCLUDES ${NETCDF_INCLUDE_DIR}) CHECK_C_SOURCE_COMPILES(" #include @@ -1085,9 +1072,9 @@ print_conf_summary() # Set variables to mirror those used by autoconf. # This way we don't need to maintain two separate template # files. -SET(host_cpu "${cpu}") -SET(host_vendor "${osname}") -SET(host_os "${osrel}") +SET(host_cpu "${CMAKE_SYSTEM_PROCESSOR}") +SET(host_vendor "${CMAKE_SYSTEM_NAME}") +SET(host_os "${CMAKE_SYSTEM_VERSION}") SET(abs_top_builddir "${CMAKE_CURRENT_BINARY_DIR}") SET(abs_top_srcdir "${CMAKE_CURRENT_SOURCE_DIR}") From 0d71e987aec29ea45fb69fcf36cbc550cd2b128a Mon Sep 17 00:00:00 2001 From: scivision Date: Thu, 7 Mar 2024 19:37:38 -0500 Subject: [PATCH 2/3] cmake: modern foreach() --- CMakeLists.txt | 12 ++++++------ nf03_test/CMakeLists.txt | 2 +- nf03_test4/CMakeLists.txt | 4 ++-- nf_test/CMakeLists.txt | 6 +++--- nf_test4/CMakeLists.txt | 2 +- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bea1e6e6..cdc90163 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -197,7 +197,7 @@ ENDIF() # Macro to append files to the EXTRA_DIST files. SET(EXTRA_DIST "") MACRO(ADD_EXTRA_DIST files) - FOREACH(F ${files}) + FOREACH(F IN LISTS files) list(APPEND EXTRA_DIST ${CMAKE_CURRENT_SOURCE_DIR}/${F}) ENDFOREACH() SET(EXTRA_DIST ${EXTRA_DIST} PARENT_SCOPE) @@ -307,7 +307,7 @@ MACRO(print_conf_summary) SET(ALL_DEP_LIBS "${NETCDF_C_LIBRARY};${EXTRA_DEPS}") MESSAGE(STATUS "\tLinking against:\t\t" "${ALL_DEP_LIBS}") - FOREACH(_LIB ${EXTRA_DEPS}) + FOREACH(_LIB IN LISTS EXTRA_DEPS) GET_FILENAME_COMPONENT(_LIB_NAME ${_LIB} NAME_WE) STRING(REGEX REPLACE "^lib" "" _NAME ${_LIB_NAME}) LIST(APPEND NCF_LIBS "-l${_NAME}") @@ -342,13 +342,13 @@ MACRO(specify_static_crt_flag) CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) - FOREACH(flag_var ${vars}) + FOREACH(flag_var IN LISTS vars) IF(${flag_var} MATCHES "/MD") STRING(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") ENDIF() ENDFOREACH() - FOREACH(flag_var ${vars}) + FOREACH(flag_var IN LISTS vars) MESSAGE(STATUS " '${flag_var}': ${${flag_var}}") ENDFOREACH() MESSAGE(STATUS "") @@ -959,7 +959,7 @@ SET(MOD_FLAG -I) SET(NC_EXTRA_DEPS "" CACHE STRING "Additional libraries to link against.") IF(NC_EXTRA_DEPS) STRING(REPLACE " " ";" DEPS_LIST ${NC_EXTRA_DEPS}) - FOREACH(_DEP ${DEPS_LIST}) + FOREACH(_DEP IN LISTS DEPS_LIST) STRING(REGEX REPLACE "^-l" "" _LIB ${_DEP}) FIND_LIBRARY("${_LIB}_DEP" NAMES "${_LIB}" "lib${_LIB}") # MESSAGE(${${_LIB}_DEP}) @@ -1090,7 +1090,7 @@ SET(NC_FLIBS "") get_target_property(ALL_TLL_LIBS netcdff LINK_LIBRARIES) -FOREACH(_LIB ${ALL_TLL_LIBS}) +FOREACH(_LIB IN LISTS ALL_TLL_LIBS) GET_FILENAME_COMPONENT(_LIB_NAME ${_LIB} NAME_WE) STRING(REGEX REPLACE "^lib" "" _NAME ${_LIB_NAME}) LIST(APPEND NC_FLIBS "-l${_NAME}") diff --git a/nf03_test/CMakeLists.txt b/nf03_test/CMakeLists.txt index 6306b570..4cdd3d1d 100644 --- a/nf03_test/CMakeLists.txt +++ b/nf03_test/CMakeLists.txt @@ -15,7 +15,7 @@ SET(tst_fill_int64_SOURCES tst_fill_int64.F90) INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/fortran ${CMAKE_SOURCE_DIR}/libsrc ${CMAKE_SOURCE_DIR} ${CMAKE_CPP_FLAGS} ${NETCDF_C_INCLUDE_DIR}) LINK_DIRECTORIES(${CMAKE_SOURCE_DIR}/fortran ${CMAKE_SOURCE_DIR}/libsrc) -FOREACH(t ${TESTS}) +FOREACH(t IN LISTS TESTS) ADD_EXECUTABLE(${t} ${${t}_SOURCES}) TARGET_LINK_LIBRARIES(${t} netcdff) ADD_TEST(${t} ${t}) diff --git a/nf03_test4/CMakeLists.txt b/nf03_test4/CMakeLists.txt index d968241e..0f914f57 100644 --- a/nf03_test4/CMakeLists.txt +++ b/nf03_test4/CMakeLists.txt @@ -39,7 +39,7 @@ if (USE_NETCDF4) CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/run_f90_par_test.sh.in" "${CMAKE_CURRENT_SOURCE_DIR}/run_f90_par_test.sh" @ONLY) - FILE(COPY "${CMAKE_CURRENT_SOURCE_DIR}/run_f90_par_test.sh" + FILE(COPY "${CMAKE_CURRENT_SOURCE_DIR}/run_f90_par_test.sh" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) @@ -74,7 +74,7 @@ if (USE_NETCDF4) endif(USE_NETCDF4) # Create pre-compiled tests. -FOREACH(t ${TESTS}) +FOREACH(t IN LISTS TESTS) ADD_EXECUTABLE(${t} ${${t}_SOURCES}) TARGET_LINK_LIBRARIES(${t} netcdff) ADD_TEST(${t} ${t}) diff --git a/nf_test/CMakeLists.txt b/nf_test/CMakeLists.txt index d8165309..531c4910 100644 --- a/nf_test/CMakeLists.txt +++ b/nf_test/CMakeLists.txt @@ -4,7 +4,7 @@ SET(CMAKE_INCLUDE_CURRENT_DIR ON) # Process these files with m4. SET(m4_SOURCES test_get test_put) -foreach (f ${m4_SOURCES}) +foreach (f IN LISTS m4_SOURCES) GEN_m4(${f}) endforeach(f) @@ -57,7 +57,7 @@ LINK_DIRECTORIES(${CMAKE_SOURCE_DIR}/fortran ${CMAKE_SOURCE_DIR}/libsrc # Create pre-compiled tests. message ("Create pre-compiled tests.") -FOREACH(t ${TESTS}) +FOREACH(t IN LISTS TESTS) ADD_EXECUTABLE(${t} ${${t}_SOURCES}) message(" " ${t} " C_SOURCES: " ${${t}_C_SOURCES}) IF(${t}_C_SOURCES) @@ -78,7 +78,7 @@ FILE(COPY ${COPY_FILES} FILE_PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE) # Add script-based tests. -FOREACH(t ${SCRIPT_TESTS}) +FOREACH(t IN LISTS SCRIPT_TESTS) add_sh_test(nf_test ${t}) ENDFOREACH() diff --git a/nf_test4/CMakeLists.txt b/nf_test4/CMakeLists.txt index 9842ddf3..ad56024e 100644 --- a/nf_test4/CMakeLists.txt +++ b/nf_test4/CMakeLists.txt @@ -67,7 +67,7 @@ IF (HAVE_SZIP_WRITE) ENDIF() # Create pre-compiled tests. -FOREACH(t ${TESTS}) +FOREACH(t IN LISTS TESTS) ADD_EXECUTABLE(${t} ${${t}_SOURCES}) TARGET_LINK_LIBRARIES(${t} netcdff) ADD_TEST(${t} ${t}) From 3756c5dedf0cd7ade25775913a460ed3721144e9 Mon Sep 17 00:00:00 2001 From: scivision Date: Thu, 7 Mar 2024 19:41:34 -0500 Subject: [PATCH 3/3] cmake: use add_compile_definitions --- CMakeLists.txt | 59 ++++++++++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 31 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cdc90163..a5005246 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -175,13 +175,10 @@ IF(NOT ENABLE_COVERAGE_TESTS) string(APPEND CMAKE_C_FLAGS " -O2") ENDIF() - -ADD_DEFINITIONS() - # Supress CRT Warnings. # Only necessary for Windows IF(MSVC) - ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS) + add_compile_definitions(_CRT_SECURE_NO_WARNINGS) ENDIF() @@ -533,26 +530,26 @@ CHECK_INCLUDE_FILE("netcdf.h" HAVE_NETCDF_H) # End Check for various system header files. ### -ADD_DEFINITIONS(-DNCSHORT_T=integer*2) -ADD_DEFINITIONS(-DNCBYTE_T=byte) -ADD_DEFINITIONS(-DNF_RELAX_COORD_BOUND) -ADD_DEFINITIONS(-DNF_HAS_PARALLEL4) -ADD_DEFINITIONS(-DNF_HAS_PNETCDF) -#ADD_DEFINITIONS(-DENABLE_CDF5) -ADD_DEFINITIONS(-DNF_INT1_IS_C_SIGNED_CHAR) -#ADD_DEFINITIONS(-DNF_INT1_IS_C_SHORT) -#ADD_DEFINITIONS(-DNF_INT1_IS_C_INT) -#ADD_DEFINITIONS(-DNF_INT1_IS_C_LONG) -ADD_DEFINITIONS(-DNF_INT2_IS_C_SHORT) -#ADD_DEFINITIONS(-DNF_INT2_IS_C_INT) -#ADD_DEFINITIONS(-DNF_INT2_IS_C_LONG) -ADD_DEFINITIONS(-DNF_INT_IS_C_INT) -#ADD_DEFINITIONS(-DNF_INT_IS_C_LONG) -ADD_DEFINITIONS(-DNF_INT8_IS_C_LONG_LONG) -ADD_DEFINITIONS(-DNF_REAL_IS_C_FLOAT) -#ADD_DEFINITIONS(-DNF_REAL_IS_C_DOUBLE) -ADD_DEFINITIONS(-DNF_DOUBLEPRECISION_IS_C_DOUBLE) -#ADD_DEFINITIONS(-DNF_DOUBLEPRECISION_IS_C_FLOAT) +add_compile_definitions(NCSHORT_T=integer*2) +add_compile_definitions(NCBYTE_T=byte) +add_compile_definitions(NF_RELAX_COORD_BOUND) +add_compile_definitions(NF_HAS_PARALLEL4) +add_compile_definitions(NF_HAS_PNETCDF) +#add_compile_definitions(ENABLE_CDF5) +add_compile_definitions(NF_INT1_IS_C_SIGNED_CHAR) +#add_compile_definitions(NF_INT1_IS_C_SHORT) +#add_compile_definitions(NF_INT1_IS_C_INT) +#add_compile_definitions(NF_INT1_IS_C_LONG) +add_compile_definitions(NF_INT2_IS_C_SHORT) +#add_compile_definitions(NF_INT2_IS_C_INT) +#add_compile_definitions(NF_INT2_IS_C_LONG) +add_compile_definitions(NF_INT_IS_C_INT) +#add_compile_definitions(NF_INT_IS_C_LONG) +add_compile_definitions(NF_INT8_IS_C_LONG_LONG) +add_compile_definitions(NF_REAL_IS_C_FLOAT) +#add_compile_definitions(NF_REAL_IS_C_DOUBLE) +add_compile_definitions(NF_DOUBLEPRECISION_IS_C_DOUBLE) +#add_compile_definitions(NF_DOUBLEPRECISION_IS_C_FLOAT) ### # Type checks @@ -651,7 +648,7 @@ CHECK_C_SOURCE_COMPILES(" #endif int main() {return 0;}" HAVE_QUANTIZE) if (HAVE_QUANTIZE) - ADD_DEFINITIONS(-DNF_HAS_QUANTIZE) + add_compile_definitions(NF_HAS_QUANTIZE) endif() CHECK_LIBRARY_EXISTS(${NETCDF_C_LIBRARY} nc_def_var_szip "" HAVE_DEF_VAR_SZIP) @@ -743,12 +740,12 @@ ENDIF(BUILD_DAP) SET(ENABLE_NETCDF4 OFF) IF(USE_NETCDF4) SET(ENABLE_NETCDF4 ON) - ADD_DEFINITIONS(-DUSE_NETCDF4) + add_compile_definitions(USE_NETCDF4) SET(ENABLE_NETCDF4 ON CACHE BOOL "") ENDIF() IF (UNIX AND ${CMAKE_SIZEOF_VOID_P} MATCHES "8") - ADD_DEFINITIONS(-DLONGLONG_IS_LONG) + add_compile_definitions(LONGLONG_IS_LONG) # for easier debugging of cfortran.h IF (APPLE) IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang") @@ -782,10 +779,10 @@ try_compile(NF_HAS_PARALLEL4 ${CMAKE_CURRENT_BINARY_DIR} ) IF(NF_HAS_PARALLEL4) - ADD_DEFINITIONS(-DNF_HAS_PARALLEL4) + add_compile_definitions(NF_HAS_PARALLEL4) ENDIF() IF(NF_HAS_PNETCDF) - ADD_DEFINITIONS(-DNF_HAS_PNETCDF) + add_compile_definitions(NF_HAS_PNETCDF) ENDIF() IF(NF_HAS_PNETCDF OR NF_HAS_PARALLEL4) @@ -813,7 +810,7 @@ try_compile(COMPILE_SUCCESS ${CMAKE_CURRENT_BINARY_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/CMakeExtras/test_c_ptrdiff_t.f90" ) IF (COMPILE_SUCCESS) - ADD_DEFINITIONS(-DHAVE_TS29113_SUPPORT) + add_compile_definitions(HAVE_TS29113_SUPPORT) SET(HAVE_TS29113_SUPPORT TRUE) ELSE () # If the compile fails, PTRDIFF_T is not defined. @@ -832,7 +829,7 @@ ELSE () IF (SIZEOF_RESULT) MESSAGE (FATAL_ERROR "UNABLE TO DETERMINE SIZEOF PTRDIFF_T") ELSE (SIZEOF_RESULT) - ADD_DEFINITIONS(-DSIZEOF_PTRDIFF_T=${SIZEOF_PTRDIFF_T}) + add_compile_definitions(SIZEOF_PTRDIFF_T=${SIZEOF_PTRDIFF_T}) ENDIF (SIZEOF_RESULT) ELSE() MESSAGE(FATAL_ERROR "Unable to compile ptrdiff")