From eb9dddbd27c6db9d154d8c9e214f79debd4ebe55 Mon Sep 17 00:00:00 2001 From: Eduard Valeyev Date: Mon, 9 Feb 2026 10:43:38 -0500 Subject: [PATCH 1/3] [cmake] sync with https://github.com/llnl/Umpire/pull/1033 to be able to use w/ C++20 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f94248..01a0f6d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required (VERSION 3.14.0) # for FetchContent_MakeAvailable set(VRGUmpireCXXAllocator_TRACKED_VGCMAKEKIT_TAG 4c949fd7ccfe4b4f0e103288a5c0f557c6e740c0) -set(VRGUmpireCXXAllocator_TRACKED_UMPIRE_TAG 8c85866107f78a58403e20a2ae8e1f24c9852287) +set(VRGUmpireCXXAllocator_TRACKED_UMPIRE_TAG kab163/update-c++20) # Safety net for dev workflow: accidental install will not affect FindOrFetch* if (NOT DEFINED CACHE{CMAKE_FIND_NO_INSTALL_PREFIX}) From 20a702052b885d76b43cea1c4137aaa181b74391 Mon Sep 17 00:00:00 2001 From: Eduard Valeyev Date: Mon, 9 Feb 2026 11:42:43 -0500 Subject: [PATCH 2/3] [cmake] support use of LLVM clang that may require additional linker flags (e.g. on a Mac with Homebrew) syncs with https://github.com/ValeevGroup/kit-cmake/pull/21 --- CMakeLists.txt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 01a0f6d..8918a70 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required (VERSION 3.14.0) # for FetchContent_MakeAvailable -set(VRGUmpireCXXAllocator_TRACKED_VGCMAKEKIT_TAG 4c949fd7ccfe4b4f0e103288a5c0f557c6e740c0) +set(VRGUmpireCXXAllocator_TRACKED_VGCMAKEKIT_TAG 256d9462bb765787f5acb69be154b26d6efba8b6) set(VRGUmpireCXXAllocator_TRACKED_UMPIRE_TAG kab163/update-c++20) # Safety net for dev workflow: accidental install will not affect FindOrFetch* @@ -35,6 +35,14 @@ project(umpire-cxx-allocator LANGUAGES CXX HOMEPAGE_URL "https://github.com/ValeevGroup/umpire-cxx-allocator") +# Detect libc++ linker mismatch (e.g. Homebrew LLVM headers vs system libc++) == +include(CheckCXXFeatures) +if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + vgkit_check_libcxx_linker_mismatch(MODIFY_GLOBAL_FLAGS) +else() + vgkit_check_libcxx_linker_mismatch() +endif() + # Set install paths ============================================================ include(GNUInstallDirs) @@ -121,6 +129,8 @@ if (NOT TARGET umpire) -DCMAKE_CXX_FLAGS_MINSIZEREL=${CMAKE_CXX_FLAGS_MINSIZEREL} -DCMAKE_CXX_STANDARD=${BLT_CXX_STD} -DCMAKE_AR=${CMAKE_AR} + "-DCMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS}" + "-DCMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS}" -DBLT_CXX_STD=c++${BLT_CXX_STD} -DENABLE_BENCHMARKS=OFF -DENABLE_OPENMP=OFF From 0f8144f19897766d0f117f7353221d4e3b8b1178 Mon Sep 17 00:00:00 2001 From: Eduard Valeyev Date: Mon, 9 Feb 2026 15:53:37 -0500 Subject: [PATCH 3/3] [cmake] umpire target depends on libcamp --- CMakeLists.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8918a70..8bcbf77 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -216,7 +216,8 @@ if (NOT TARGET umpire) endif(BUILD_SHARED_LIBS) # N.B. Ninja needs spelling out the byproducts of custom targets, see https://cmake.org/cmake/help/v3.3/policy/CMP0058.html - set(UMPIRE_BUILD_BYPRODUCTS "${EXTERNAL_BUILD_DIR}/lib/libumpire${UMPIRE_DEFAULT_LIBRARY_SUFFIX}") + set(UMPIRE_BUILD_BYPRODUCTS "${EXTERNAL_BUILD_DIR}/lib/libumpire${UMPIRE_DEFAULT_LIBRARY_SUFFIX}" + "${EXTERNAL_BUILD_DIR}/lib/libcamp${UMPIRE_DEFAULT_LIBRARY_SUFFIX}") message(STATUS "custom target umpire is expected to build these byproducts: ${UMPIRE_BUILD_BYPRODUCTS}") include(VRGImportExternalProject) @@ -257,7 +258,7 @@ if (NOT TARGET umpire) INTERFACE_INCLUDE_DIRECTORIES "$;$;$;$;$;$;$" INTERFACE_LINK_LIBRARIES - "$;$" + "$;$;$" INTERFACE_LINK_OPTIONS "LINKER:-rpath,${EXTERNAL_BUILD_DIR}/lib" INTERFACE_COMPILE_DEFINITIONS