From b8253695223a6c41c2ff9a397993f8850167c76d Mon Sep 17 00:00:00 2001 From: "Roscoe A. Bartlett" Date: Fri, 13 May 2022 12:42:15 -0600 Subject: [PATCH 1/8] ATDM: Strip leading and trailing whitespace from flags for newer CMakes I was getting an configure time error from CMake 3.19.1 with spaces before the math library in Trilinos_EXTRA_LINK_FLAGS with the sems-rhel7-clang-7.0.1-openmp-shared-release-debug build on by COE RHEL7 machine. Calling string(STRIP ...) takes care of the problem. --- cmake/std/atdm/ATDMDevEnvSettings.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmake/std/atdm/ATDMDevEnvSettings.cmake b/cmake/std/atdm/ATDMDevEnvSettings.cmake index a2e6abd487b4..c5a6c1ca980b 100644 --- a/cmake/std/atdm/ATDMDevEnvSettings.cmake +++ b/cmake/std/atdm/ATDMDevEnvSettings.cmake @@ -256,8 +256,10 @@ ENDIF() ATDM_SET_CACHE(CTEST_BUILD_FLAGS "-j$ENV{ATDM_CONFIG_BUILD_COUNT}" CACHE STRING) SET(CMAKE_EXE_LINKER_FLAGS "${EXTRA_EXTRA_LINK_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}") +string(STRIP "${CMAKE_EXE_LINKER_FLAGS}" CMAKE_EXE_LINKER_FLAGS) SET(Trilinos_EXTRA_LINK_FLAGS "${ATDM_EXTRA_LINK_FLAGS} ${EXTRA_EXTRA_LINK_FLAGS} ${Trilinos_EXTRA_LINK_FLAGS}") +string(STRIP "${Trilinos_EXTRA_LINK_FLAGS}" Trilinos_EXTRA_LINK_FLAGS) ATDM_SET_CACHE(CMAKE_JOB_POOL_LINK "${ATDM_CMAKE_JOB_POOL_LINK}" CACHE STRING) ATDM_SET_CACHE(Trilinos_PARALLEL_COMPILE_JOBS_LIMIT "${ATDM_PARALLEL_COMPILE_JOBS_LIMIT}" CACHE STRING) From f81558ff0ef516606ae591253f28335042a882ba Mon Sep 17 00:00:00 2001 From: "Roscoe A. Bartlett" Date: Fri, 13 May 2022 14:48:19 -0600 Subject: [PATCH 2/8] Sacado: Call target_include_directories() for new TriBITS (TriBITSPub/TriBITS#299) New TriBITS using modern CMake targets no longer sets the INCLUDE_DIRECTORIES directory property but instead passes along include dirs using INTERFACE_INCLUDE_DIRECTORIES target properties (like a good CMake project). This was a strange test that does not actually link to the Sacado library but yet needs a bunch of Sacado include dirs? We need to look into this and see how to make this work more cleanly either in Sacado or TriBITS because this is unfortunate. --- packages/sacado/test/tradoptest/CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/sacado/test/tradoptest/CMakeLists.txt b/packages/sacado/test/tradoptest/CMakeLists.txt index e1c9766f1153..b37e7743a418 100644 --- a/packages/sacado/test/tradoptest/CMakeLists.txt +++ b/packages/sacado/test/tradoptest/CMakeLists.txt @@ -41,6 +41,12 @@ TRIBITS_ADD_EXECUTABLE_AND_TEST( GET_PROPERTY(Sacado_lib_deps TARGET "${${PROJECT_NAME}_LIBRARY_NAME_PREFIX}sacado" PROPERTY LINK_LIBRARIES) ADD_EXECUTABLE("Sacado_hesopcheck_ADC${${PROJECT_NAME}_CMAKE_EXECUTABLE_SUFFIX}" hesopcheck_ADC.cpp radops2_ADC.cpp) TARGET_LINK_LIBRARIES("Sacado_hesopcheck_ADC${${PROJECT_NAME}_CMAKE_EXECUTABLE_SUFFIX}" ${Sacado_lib_deps}) +TARGET_INCLUDE_DIRECTORIES("Sacado_hesopcheck_ADC${${PROJECT_NAME}_CMAKE_EXECUTABLE_SUFFIX}" + PRIVATE "${${PACKAGE_NAME}_BINARY_DIR}/src" + PRIVATE "${${PACKAGE_NAME}_SOURCE_DIR}/src" + PRIVATE "${${PACKAGE_NAME}_SOURCE_DIR}/src/mpl" + PRIVATE "${${PACKAGE_NAME}_SOURCE_DIR}/src/new_design" + ) TRIBITS_ADD_TEST( hesopcheck_ADC ARGS From 98e4e5e71998d375f3ae3f1fe45cee627134a26a Mon Sep 17 00:00:00 2001 From: "Roscoe A. Bartlett" Date: Mon, 16 May 2022 10:38:50 -0600 Subject: [PATCH 3/8] Zoltan2: Properly pass in list to FAIL_REGULAR_EXPRESSION (TriBITSPub/TriBITS#464) Before, this was passing in: FAIL_REGULAR_EXPRESSION "FAIL;BUMMER" which just happened to be added as a list to the test property with the old TriBITS. But with the new TriBITS in TriBITSPub/TriBITS#464 which more correctly deals with semi-colons and list arguments, this was being set as a single property value "FAIL\\;BUMMER" which did not match the output. Passing in the list with: FAIL_REGULAR_EXPRESSION FAIL BUMMER works both with old and new TriBITS and is more logical given how CMake/CTest is supposed to be used. (The old TriBITS documentation was incorrect.) --- packages/zoltan2/test/core/temp/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/zoltan2/test/core/temp/CMakeLists.txt b/packages/zoltan2/test/core/temp/CMakeLists.txt index 86860afccd84..b53b372219e4 100644 --- a/packages/zoltan2/test/core/temp/CMakeLists.txt +++ b/packages/zoltan2/test/core/temp/CMakeLists.txt @@ -36,7 +36,7 @@ TRIBITS_ADD_TEST( NAME testfail1 ARGS "FAIL" WILL_FAIL - FAIL_REGULAR_EXPRESSION "FAIL;BUMMER" + FAIL_REGULAR_EXPRESSION FAIL BUMMER COMM mpi serial ) @@ -45,7 +45,7 @@ TRIBITS_ADD_TEST( NAME testfail2 ARGS "BUMMER" WILL_FAIL - FAIL_REGULAR_EXPRESSION "FAIL;BUMMER" + FAIL_REGULAR_EXPRESSION FAIL BUMMER COMM mpi serial ) From 1bcbefc229781f8e7e1486d0bdb20710f6aa2181 Mon Sep 17 00:00:00 2001 From: "Roscoe A. Bartlett" Date: Mon, 16 May 2022 10:27:06 -0600 Subject: [PATCH 4/8] Zoltan2: Use single value for FAIL_REGULAR_EXPRESSION (TriBITSPub/TriBITS#464) Tt turns out that these tests really did not need to pass a list of values to FAIL_REGULAR_EXPRESSION. Each test was really only looking for a single value of 'FAILED' or 'BUMMER'. And you can argue that the tests are stronger and better by taking out the other value that is not supposed to be printed in that test case. --- packages/zoltan2/test/core/temp/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/zoltan2/test/core/temp/CMakeLists.txt b/packages/zoltan2/test/core/temp/CMakeLists.txt index b53b372219e4..8edb259842c9 100644 --- a/packages/zoltan2/test/core/temp/CMakeLists.txt +++ b/packages/zoltan2/test/core/temp/CMakeLists.txt @@ -36,7 +36,7 @@ TRIBITS_ADD_TEST( NAME testfail1 ARGS "FAIL" WILL_FAIL - FAIL_REGULAR_EXPRESSION FAIL BUMMER + FAIL_REGULAR_EXPRESSION "FAIL" COMM mpi serial ) @@ -45,7 +45,7 @@ TRIBITS_ADD_TEST( NAME testfail2 ARGS "BUMMER" WILL_FAIL - FAIL_REGULAR_EXPRESSION FAIL BUMMER + FAIL_REGULAR_EXPRESSION "BUMMER" COMM mpi serial ) From d8965b3ac6b27a16c4632a427647444abde73d6d Mon Sep 17 00:00:00 2001 From: "Roscoe A. Bartlett" Date: Tue, 17 May 2022 11:00:08 -0600 Subject: [PATCH 5/8] Isorropria: Unconditionally disable tests that depend on EpetraExt (#10534) This test code has not been enabled or built in over 10 years due to a defect added in commit: 7aabd5d9a59 "Isorropia: Make EpetraExt a required dependency" Author: Brent Perschbacher Date: Tue Feb 21 13:37:59 2012 -0700 (10 years ago) M packages/isorropia/cmake/Dependencies.cmake But note that HAVE_EPETRA was getting set to true unconditionally due to a defect in how it was set as: SET(HAVE_EPETRAEXT ${PACKAGE_NAME}_ENABLE_EpetraExt) instead of as dereferencing the variable with: SET(HAVE_EPETRAEXT ${${PACKAGE_NAME}_ENABLE_EpetraExt}) So the value "Isorropia_ENABLE_EpetraExt" evaluates to true in CMake so EpetraExt support was always required, even if EpetraExt support in Isorropia was disabled! So I just fixed this to make it clear that this was **always** on by changing this to: SET(HAVE_EPETRAEXT ON) This test code was getting switched on again with the new TriBITS that sets Isorropia_ENABLE_EpetraExt to TRUE, even for required dependencies (see PR --- packages/isorropia/src/CMakeLists.txt | 2 +- packages/isorropia/test/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/isorropia/src/CMakeLists.txt b/packages/isorropia/src/CMakeLists.txt index a9b4c7f1f688..041a5f0dc60d 100644 --- a/packages/isorropia/src/CMakeLists.txt +++ b/packages/isorropia/src/CMakeLists.txt @@ -6,7 +6,7 @@ SET(HAVE_EPETRA ON) SET(HAVE_ISORROPIA_ZOLTAN ON) -SET(HAVE_EPETRAEXT ${PACKAGE_NAME}_ENABLE_EpetraExt) +SET(HAVE_EPETRAEXT ON) SET(ISORROPIA_HAVE_OMP ${${PROJECT_NAME}_ENABLE_OpenMP}) TRIBITS_CONFIGURE_FILE(${PACKAGE_NAME}_config.h) diff --git a/packages/isorropia/test/CMakeLists.txt b/packages/isorropia/test/CMakeLists.txt index 59a6634ebf2b..7d3b344a0730 100644 --- a/packages/isorropia/test/CMakeLists.txt +++ b/packages/isorropia/test/CMakeLists.txt @@ -10,7 +10,7 @@ IF (TPL_ENABLE_MPI) #ADD_SUBDIRECTORY(zoltan) ENDIF() -IF (${PACKAGE_NAME}_ENABLE_EpetraExt) +IF ("FALSE") # if (${PACKAGE_NAME}_ENABLE_EpetraExt) # See #10534 ADD_SUBDIRECTORY(mtx) ADD_SUBDIRECTORY(probing) ENDIF() From fda0d6a811c09cbeefd576fe183ad53006533333 Mon Sep 17 00:00:00 2001 From: "Roscoe A. Bartlett" Date: Wed, 18 May 2022 15:00:24 -0600 Subject: [PATCH 6/8] FindTPLBLAS.cmake: Lower-case function names (TriBITSPub/TriBITS#274) --- cmake/tribits/common_tpls/FindTPLBLAS.cmake | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/cmake/tribits/common_tpls/FindTPLBLAS.cmake b/cmake/tribits/common_tpls/FindTPLBLAS.cmake index af0d6c5eca68..dc04355fdd26 100644 --- a/cmake/tribits/common_tpls/FindTPLBLAS.cmake +++ b/cmake/tribits/common_tpls/FindTPLBLAS.cmake @@ -54,7 +54,7 @@ # @HEADER -IF (MSVC AND NOT +if (MSVC AND NOT (BLAS_LIBRARY_DIRS OR (NOT "${BLAS_LIBRARY_NAMES}" STREQUAL "blas blas_win32" AND NOT "${BLAS_LIBRARY_NAMES}" STREQUAL "") OR @@ -69,12 +69,12 @@ IF (MSVC AND NOT # be called every configure or this does not work! # If the user has specified alternate name or location of their blas that # will be used instead. - FIND_PACKAGE(CLAPACK 3.2.1 NO_MODULE) - IF (CLAPACK_FOUND) - ADVANCED_SET(TPL_BLAS_LIBRARIES blas + find_package(CLAPACK 3.2.1 NO_MODULE) + if (CLAPACK_FOUND) + advanced_set(TPL_BLAS_LIBRARIES blas CACHE FILEPATH "Set from MSVC CLAPACK specialization") - ENDIF() -ENDIF() + endif() +endif() -TRIBITS_TPL_FIND_INCLUDE_DIRS_AND_LIBRARIES( BLAS +tribits_tpl_find_include_dirs_and_libraries( BLAS REQUIRED_LIBS_NAMES "blas blas_win32") From cc92952a6633b0481dde387d9c2759ef4de0e517 Mon Sep 17 00:00:00 2001 From: "Roscoe A. Bartlett" Date: Wed, 18 May 2022 15:02:22 -0600 Subject: [PATCH 7/8] FindTPLLAPACK.cmake: Lower-case function names (TriBITSPub/TriBITS#274) --- cmake/tribits/common_tpls/FindTPLLAPACK.cmake | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/cmake/tribits/common_tpls/FindTPLLAPACK.cmake b/cmake/tribits/common_tpls/FindTPLLAPACK.cmake index 7e5955c691cc..443924df0d7a 100644 --- a/cmake/tribits/common_tpls/FindTPLLAPACK.cmake +++ b/cmake/tribits/common_tpls/FindTPLLAPACK.cmake @@ -54,7 +54,7 @@ # @HEADER -IF (MSVC AND NOT +if (MSVC AND NOT (LAPACK_LIBRARY_DIRS OR (NOT "${LAPACK_LIBRARY_NAMES}" STREQUAL "lapack lapack_win32" AND NOT "${LAPACK_LIBRARY_NAMES}" STREQUAL "") OR @@ -64,11 +64,11 @@ IF (MSVC AND NOT NOT "${TPL_LAPACK_LIBRARIES}" STREQUAL "") OR TPL_LAPACK_INCLUDE_DIRS) ) - IF(CLAPACK_FOUND) - ADVANCED_SET(TPL_LAPACK_LIBRARIES lapack + if(CLAPACK_FOUND) + advanced_set(TPL_LAPACK_LIBRARIES lapack CACHE FILEPATH "Set from MSVC CLAPACK specialization") - ENDIF() -ENDIF() + endif() +endif() -TRIBITS_TPL_FIND_INCLUDE_DIRS_AND_LIBRARIES( LAPACK +tribits_tpl_find_include_dirs_and_libraries( LAPACK REQUIRED_LIBS_NAMES "lapack lapack_win32") From 8c1028df724eb0096cd688b381285112bc6f914a Mon Sep 17 00:00:00 2001 From: "Roscoe A. Bartlett" Date: Wed, 18 May 2022 15:08:17 -0600 Subject: [PATCH 8/8] FindTPLNetcdf.cmake: Lower-case function names (TriBITSPub/TriBITS#274) --- cmake/tribits/common_tpls/FindTPLNetcdf.cmake | 60 +++++++++---------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/cmake/tribits/common_tpls/FindTPLNetcdf.cmake b/cmake/tribits/common_tpls/FindTPLNetcdf.cmake index 99863593c912..e4053ee3d0ec 100644 --- a/cmake/tribits/common_tpls/FindTPLNetcdf.cmake +++ b/cmake/tribits/common_tpls/FindTPLNetcdf.cmake @@ -39,29 +39,29 @@ # # First, set up the variables for the (backward-compatible) TriBITS way of -# finding Netcdf. These are used in case FIND_PACKAGE(NetCDF ...) is not +# finding Netcdf. These are used in case find_package(NetCDF ...) is not # called or does not find NetCDF. Also, these variables need to be non-null # in order to trigger the right behavior in the function -# TRIBITS_TPL_FIND_INCLUDE_DIRS_AND_LIBRARIES(). +# tribits_tpl_find_include_dirs_and_libraries(). # -SET(REQUIRED_HEADERS netcdf.h) -SET(REQUIRED_LIBS_NAMES netcdf) +set(REQUIRED_HEADERS netcdf.h) +set(REQUIRED_LIBS_NAMES netcdf) -IF (TPL_ENABLE_MPI) - SET(REQUIRED_LIBS_NAMES ${REQUIRED_LIBS_NAMES} pnetcdf) -ENDIF() +if (TPL_ENABLE_MPI) + set(REQUIRED_LIBS_NAMES ${REQUIRED_LIBS_NAMES} pnetcdf) +endif() # # Second, search for Netcdf components (if allowed) using the standard -# FIND_PACKAGE(NetCDF ...). +# find_package(NetCDF ...). # -TRIBITS_TPL_ALLOW_PRE_FIND_PACKAGE(Netcdf Netcdf_ALLOW_PREFIND) -IF (Netcdf_ALLOW_PREFIND) +tribits_tpl_allow_pre_find_package(Netcdf Netcdf_ALLOW_PREFIND) +if (Netcdf_ALLOW_PREFIND) - MESSAGE("-- Using FIND_PACKAGE(Netcdf ...) ...") + message("-- Using find_package(Netcdf ...) ...") - SET(CMAKE_MODULE_PATH + set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_CURRENT_LIST_DIR}/find_modules" "${CMAKE_CURRENT_LIST_DIR}/utils" @@ -69,8 +69,8 @@ IF (Netcdf_ALLOW_PREFIND) find_package(NetCDF) - IF (NetCDF_FOUND) - SET(DOCSTR "List of semi-colon separated paths to look for the TPL Netcdf") + if (NetCDF_FOUND) + set(DOCSTR "List of semi-colon separated paths to look for the TPL Netcdf") set(TPL_Netcdf_Enables_Netcdf4 ${NetCDF_NEEDS_HDF5} CACHE BOOL "True if netcdf enables netcdf-4") set(TPL_Netcdf_Enables_PNetcdf ${NetCDF_NEEDS_PNetCDF} CACHE BOOL @@ -83,32 +83,32 @@ IF (Netcdf_ALLOW_PREFIND) "List of semi-colon seprated library names (not 'lib' or extension).") set(TPL_Netcdf_INCLUDE_DIRS ${NetCDF_INCLUDE_DIRS} CACHE PATH "${DOCSTR} header files.") - ENDIF() -ELSE() + endif() +else() # Curl library is only required if DAP is enabled; should detect inside # FindNetCDF.cmake, but that is not being called... SEMS has DAP enabled; # many HPC systems don't, but they override these settings... - FIND_PROGRAM(NC_CONFIG "nc-config") - IF (NC_CONFIG) - EXECUTE_PROCESS(COMMAND "nc-config --has-dap2" + find_program(NC_CONFIG "nc-config") + if (NC_CONFIG) + execute_process(COMMAND "nc-config --has-dap2" OUTPUT_VARIABLE NETCDF_HAS_DAP2) - EXECUTE_PROCESS(COMMAND "nc-config --has-dap4" + execute_process(COMMAND "nc-config --has-dap4" OUTPUT_VARIABLE NETCDF_HAS_DAP4) - ENDIF() - IF ((NOT NC_CONFIG) OR NETCDF_HAS_DAP2 OR NETCDF_HAS_DAP4) - SET(REQUIRED_LIBS_NAMES ${REQUIRED_LIBS_NAMES} curl) - ENDIF() -ENDIF() + endif() + if ((NOT NC_CONFIG) OR NETCDF_HAS_DAP2 OR NETCDF_HAS_DAP4) + set(REQUIRED_LIBS_NAMES ${REQUIRED_LIBS_NAMES} curl) + endif() +endif() # -# Third, call TRIBITS_TPL_FIND_INCLUDE_DIRS_AND_LIBRARIES() +# Third, call tribits_tpl_find_include_dirs_and_libraries() # -TRIBITS_TPL_FIND_INCLUDE_DIRS_AND_LIBRARIES( Netcdf +tribits_tpl_find_include_dirs_and_libraries( Netcdf REQUIRED_HEADERS ${REQUIRED_HEADERS} REQUIRED_LIBS_NAMES ${REQUIRED_LIBS_NAMES} ) -# NOTE: If FIND_PACKAGE(Netcdf ...) was called and successfully found Netcdf, -# then TRIBITS_TPL_FIND_INCLUDE_DIRS_AND_LIBRARIES() will use the already-set +# NOTE: If find_package(Netcdf ...) was called and successfully found Netcdf, +# then tribits_tpl_find_include_dirs_and_libraries() will use the already-set # variables TPL_Netcdf_INCLUDE_DIRS and TPL_Netcdf_LIBRARIES and then print # them out (and set some other standard variables as well). This is the final # "hook" into the TriBITS TPL system. @@ -117,7 +117,7 @@ TRIBITS_TPL_FIND_INCLUDE_DIRS_AND_LIBRARIES( Netcdf # Need to determine how this is set in the library that is being used... if ("${TPL_Netcdf_PARALLEL}" STREQUAL "") - ASSERT_DEFINED(TPL_Netcdf_INCLUDE_DIRS) + assert_defined(TPL_Netcdf_INCLUDE_DIRS) find_path(meta_path NAMES "netcdf_meta.h" HINTS ${TPL_Netcdf_INCLUDE_DIRS}