Skip to content

Update to C++20, spack 1.2.0 and package updates#1912

Open
bmhan12 wants to merge 34 commits into
developfrom
feature/han12/c_20
Open

Update to C++20, spack 1.2.0 and package updates#1912
bmhan12 wants to merge 34 commits into
developfrom
feature/han12/c_20

Conversation

@bmhan12

@bmhan12 bmhan12 commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

This PR:

  • Updates default C++ standard to 20.
  • Updates blt to 0.7.2
  • Updates spack to 1.2.0
  • Updates various package versions (see versions.yaml for list of changes)
    • Note: In order to test C++20 changes with umpire/camp/raja, the versions are tied to commits off of develop/main. Once releases are done for these packages and upstreamed to spack-packages, axom should update these to release versions (these changes should also be mirrored for Windows vcpkg build).
  • Compiler updates
    • rocm 6.4.3 (same), rocm 7.2.1, cce@21.0.0 for toss 4 cray
    • cuda@13.1.1 for toss 4

Relates to #1855 (still require updated umpire/raja/camp releases)
Closes #1741

bmhan12 and others added 30 commits July 9, 2026 15:24
@bmhan12 bmhan12 added the Build system Issues related to Axom's build system label Jul 13, 2026
Comment on lines +53 to +59
#if defined(_MSC_VER)
#define SPARSEHASH_COMPILE_ASSERT(expr, msg) \
typedef SparsehashCompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1]
#else
#define SPARSEHASH_COMPILE_ASSERT(expr, msg) \
__attribute__((unused)) typedef SparsehashCompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1]
#endif

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kennyweiss I cherry-picked this change off of your Windows branch, was needed to get C++20 happy.

@kennyweiss kennyweiss Jul 13, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @bmhan12

Our of scope for this PR: We should probably investigate/reconsider whether we still need to vendor sparsehash now that we have std::unordered_map and axom::FlatMap.

Update: #1916

@bmhan12 bmhan12 changed the title Update to C++20, spack 1.2.0 Update to C++20, spack 1.2.0 and package updates Jul 13, 2026
Comment thread src/axom/core/FlatMap.hpp
Comment on lines +637 to +646
#if defined(AXOM_USE_CUDA)
int host_allocator_id = axom::detail::getAllocatorID<MemorySpace::Host>();
FlatMap host_map(*this, axom::Allocator {host_allocator_id});
host_map.rehash(count);

FlatMap rehashed_device(host_map, m_allocator);
this->swap(rehashed_device);
return;
#elif defined(AXOM_USE_HIP)
#if !defined(AXOM_GPUCC)

@bmhan12 bmhan12 Jul 13, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I needed to switch this code to host due to the following unit test failures with CUDA builds:

The following tests FAILED:
	 44 - core_flatmap_serial (Subprocess aborted)
	 45 - core_flatmap_for_all_serial (Subprocess aborted)

44: [ RUN      ] core_flatmap/1.copy_host_device
44: /usr/WS1/han12/axom_codex/src/axom/core/tests/core_flatmap.hpp:1144: Skipped
44: std::string is not supported in device-only memory on GCC's libstdc++
44: 
44: [  SKIPPED ] core_flatmap/1.copy_host_device (0 ms)


45: [ RUN      ] core_flatmap_for_all/2.insert_batched_with_existing
45: terminate called after throwing an instance of 'std::runtime_error'
45:   what():  CUDA error: invalid resource handle cudaLaunchKernel(func=0x5555560a3740, gridDim={1,1,1}, blockDim={256,1,1}, args=0x7fffffff8b20, sharedMem=0, stream=0x15531391afe0) /usr/WS1/han12/axom_codex/uberenv_cuda_libs/llvm-19.1.3/raja-c3e4576eccff2435c358b691e4fcad4e601a7441_develop-nptremsbtvcio3z3nbjyulymqizsbpmb/include/RAJA/policy/cuda/MemUtils_CUDA.hpp:274
2/2 Test #45: core_flatmap_for_all_serial ......Subprocess aborted***Exception:   0.51 sec

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be fixed/addressed before merging.

We don't want to silently force our FlatMap::rehash() to be on host for CUDA.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Interesting - reproducing this error does not require all of the changes of this branch.
It can be reproduced on develop by changing BLT_CXX_STD to c++20.

axom/src/CMakeLists.txt

Lines 48 to 50 in 4839900

if (NOT BLT_CXX_STD)
set(BLT_CXX_STD "c++17" CACHE STRING "")
endif()


const std::string g_name_animal("animal");
const std::string g_animal_none("human");
const std::string g_animal_cat("cat");

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C++20 unused change.

const int ncurves = m_processed_curves_view.size();
axom::Array<BoxType> aabbs(ncurves, ncurves);
auto aabbs_view = aabbs.view();
const auto processed_curves_view = m_processed_curves_view;

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C++20 lambda capture change

from spack.package import *
from spack_repo.builtin.packages.cce.package import Cce as BuiltinCce

class Cce(BuiltinCce):

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Associated spack-packages PR: spack/spack-packages#5468

Comment on lines +8 to +10
# Workaround for "gmake: *** internal error: invalid --jobserver-auth string":
# https://github.com/spack/spack-packages/issues/5106#issuecomment-4679593276
depends_on("gmake", type="build")

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Associated spack-packages PR: spack/spack-packages#5318

Comment thread scripts/spack/specs.json
"__comment__":"# Use amdgpu_target=gfx908 for rznevada",
"__comment__":"# -Wno-int-conversion flag needed for building HDF5",
"__comment__":"# caliper disabled for rocm@6.3.1, fails to compile",
"__comment__":"# caliper~shared required for mfem/caliper/mpi(?) to prevent rocprof runtime deadlock",

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was required to move to newer compilers + the newer mpi that the compilers required.

Without this change, I was observing runtime hangs when executables try to load in rocprofiler-sdk through caliper or mfem (yet, if I disabled one of either mfem or caliper during axom configuration, I don't see the hangs).

Comment on lines +168 to +173
# C++14 required as of 0.7.0
conflicts("cxxstd=11", when="@0.7.0:")
# C++17 required as of 0.12.0
conflicts("cxxstd=14", when="@0.12.0:")
# C++20 required as of unreleased 0.15.0 (Should be 0.15.0)
conflicts("cxxstd=17", when="@0.14.0:")

@bmhan12 bmhan12 Jul 13, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This logic will throw errors if you are using an older C++ standard configuration with the wrong axom version.
I pulled these versions from the release notes.

The C++17 requirement is set to 0.14.0 here for testing, but should be 0.15.0 for the upcoming release.

@rhornung67 rhornung67 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @bmhan12

@kennyweiss kennyweiss left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @bmhan12 for this massive update.

The only parts I'm concerned about are:

  • removing the cpp14 variant from our spack package. It needs to go away, but we might need to deprecate it for a bit, or at least cause it to give a reasonable error message before removing it outright.
  • Making FlatMap::rehash() run w/ the SEQ (host) policy for CUDA

Comment thread src/CMakeLists.txt
# another project
if (NOT BLT_CXX_STD)
set(BLT_CXX_STD "c++17" CACHE STRING "")
set(BLT_CXX_STD "c++20" CACHE STRING "")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎉

Comment thread src/axom/core/FlatMap.hpp
Comment on lines +637 to +646
#if defined(AXOM_USE_CUDA)
int host_allocator_id = axom::detail::getAllocatorID<MemorySpace::Host>();
FlatMap host_map(*this, axom::Allocator {host_allocator_id});
host_map.rehash(count);

FlatMap rehashed_device(host_map, m_allocator);
this->swap(rehashed_device);
return;
#elif defined(AXOM_USE_HIP)
#if !defined(AXOM_GPUCC)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be fixed/addressed before merging.

We don't want to silently force our FlatMap::rehash() to be on host for CUDA.

{
"name": "umpire",
"version-string": "2025.12.0",
"version-string": "develop-commit",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it a specific non-release commit b/c Umpire hasn't released yet?

If so, please add a comment that we're planning to update to release 2026.0?.* when it is available

{
"name": "raja",
"version-string": "2025.12.0",
"version-string": "develop-commit",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same question/comment as for the Umpire port about version.

{
"name": "camp",
"version-string": "2025.12.0",
"version-string": "main-commit",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(same comment/question about version as for Umpire/RAJA)

Comment on lines 23 to 25
mfem:
require:
- spec: "@4.9"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mfem is getting ready to release mfem@4.10.

Since we're updating to pre-releases for camp, raja and umpire, can we also update to a prerelease of mfem?
The newer mfem has some improvements to 1D NURBS that are helpful for winding numbers, so it would be good to have that in our upcoming release.

Comment on lines -116 to -117
# Hard requirement after Axom 0.6.1
variant("cpp14", default=True, description="Build with C++14 support")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will removing this break anyone's build/workflow?

Would it be better to have it do nothing for a short amount of time, or to keep it here, but add an explicit error message so people know to remove it?

Another bump for deprecated variants in spack: spack/spack#38829

name: Runs ${{ matrix.triplet }} ${{ matrix.cfg }} uberenv with vcpkg
# The type of runner that the job will run on
runs-on: windows-latest
runs-on: windows-2022

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

#------------------------------------------------------------------------------

set(CMAKE_PREFIX_PATH "/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/blt-0.7.1-2eahqqwjyauupjq3baxftq7kuv3pvdgp;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/c2c-1.8.0-oxqhr2ybswpnzt74f4iritx263ji3uqy;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/caliper-git.7e5b7a5c0eacc077f9b842abf41c9fc7b996ce0c_master-sos5uklbsgaycb776a2ufcyje4y24yls;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/conduit-0.9.5-cxdq4qnoptjq6lry5asb2bqodvm3zjig;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/lua-5.4.8-lsey5vgxvpqf5j3xbrlzswrizuwm65vh;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/mfem-4.9.0-xwok5jck2jjg76k4575wkzgyvgopipz2;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/py-nanobind-2.7.0-3nchqpyclgle5w56it23ozl4ttbnrfjd;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/none-none/py-pytest-9.0.0-dn2hwdtaqec2dkxtx7bnvykyxacfdagj;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/adiak-0.4.0-cbxp6kv6rm4f7oeczuhbplm3yb3zxb6z;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/libunwind-1.8.3-r4b3cptnf27zp34jbrdtlrf6r6dp6n4l;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/hdf5-1.8.23-wb7u6epuww3tretkcto7jhq2i7pffimg;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/parmetis-4.0.3-d6ed2qesb4yprvpetx3fso35rx6amf5b;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/py-mpi4py-4.1.1-kwpdge3wqmmxvxlocfdz4mgbc3zfihn6;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/py-numpy-2.4.2-t7cvohiksz7deeldwxrtqfmahcvanapb;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/hypre-2.27.0-pxqhlqwksiscco65tsz5somb4ctdq3q2;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/raja-git.3b8b59a1e9be2e1066c0d77372b3bf5956e6d6e2_develop-i5stpeet653njjadpjsekbvxlqkng2zn;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/umpire-2025.12.0-hpevb7stqsg6dltp3t2tcnzzps7tgywb;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/zlib-1.3.1-ijxa3tdiibemxtng46hrremmbytl2dqq;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/metis-5.1.0-mubwzuka5byhpbzmwaxjhtffhst3oj3q;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/camp-git.a8caefa9f4c811b1a114b4ed2c9b681d40f12325_main-j7my6ilwzwzvbaxzscbvishmj5mgyxnz;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/fmt-11.0.2-unmvs6vefcyfcfnzlie2eag5i2eib35d;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/none-none/compiler-wrapper-1.0-r533h4sr4uzpv32pv2w4ootpawmxmmgf;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/view/python-3.13.11;/collab/usr/gapps/shroud/public/toss_4_x86_64_ib_cray/shroud-0.14.0;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/view/python-3.13.11;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/view/python-3.13.11;/usr/tce/packages/cmake/cmake-3.29.2;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/gcc-13.3.1/cppcheck-2.18.0-n6kdcwtwlrc3u3t47t7gokpyd4h6mc27;/usr/tce/packages/cray-mpich-tce/cray-mpich-8.1.29-rocmcc-6.4.3;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/view/doxygen-1.15.0;/opt/rocm-6.4.3;/opt/rocm-6.4.3;/usr/tce/packages/rocmcc/rocmcc-6.4.3-magic/llvm;/opt/rocm-6.4.3;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/view/python-3.13.11;/opt/rocm-6.4.3;/opt/rocm-6.4.3;/opt/rocm-6.4.3;/opt/rocm-6.4.3" CACHE STRING "")
set(CMAKE_PREFIX_PATH "/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/blt-0.7.2-fi7f3mxamqq44js7xbmnpu2xk4te75da;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/c2c-1.8.0-dv5ggyguvmw4xalzzpexufqsmvv646t6;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/caliper-git.7e5b7a5c0eacc077f9b842abf41c9fc7b996ce0c_master-cqtqav6iwrg3vqvujd377ygs4i5mk6ua;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/conduit-0.9.7-eyc3vrxbq7iasvyvtqf7luvnjjcfdwhj;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/lua-5.4.8-gzh3ylkvrwkcyegwxb4j47rjsqm7khl6;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/mfem-4.9.0-hdr4zw2h2pxdcw2vg3dskrxwzzhfcwhj;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/py-nanobind-2.12.0-dmnviatiwcoe2u4tqwb4m5dtzy2k2hvs;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/none-none/py-pytest-9.0.3-2suvy7b3lmshqhnbylnif2jz2735dbbe;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/adiak-0.5.0-juupsnv6gao5vckdx65vodr5isbt2w3i;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/libunwind-1.8.3-2mcjpbkdqvhxjo64yjl2ghdk2uvz374g;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/hdf5-1.8.23-b62qyycwsymkjttcujtzrj5mt2y67khv;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/parmetis-4.0.3-wnhslyv7bnqiueidwkmvjof7odloc6xd;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/py-mpi4py-4.1.1-zbu3rkawlulkaynkbal35q2dfq7a63r7;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/py-numpy-2.4.6-6beieyegdqtn32ex6mmqlpi5tukuzz7h;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/hypre-3.1.0-5jc6ubqvzucfld4prwv6ilvkspfy2fga;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/raja-git.6e4fe62d810711a0af9020d4e94c6c41c9a6117b_develop-cjz62wwi4yc2ipyua542r233xb324exk;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/umpire-git.f544027ef118133f1ecbc26e64c04ea77c3eb5ae_develop-c6iizeka2omkycs7ngwghv773nrspzl7;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/zlib-1.3.2-czlezml6nlt3eitzwqz7dxost6agewfj;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/metis-5.1.0-kexg6pguakcgo6sra67vpp3hgppocicb;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/camp-git.e75ab64c029aa27c80593715cb2a3ccad7453c8c_main-bntapsyjnuvbkmetoqruiuk2ejkpoj2e;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/fmt-12.1.0-po24stdzkwj4obatcqfus4uszhdbfd7m;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/none-none/compiler-wrapper-1.1.0-qqipzhe4rz5fmoiuvlqgarjeevl2kzuh;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/view/python-3.13.11;/collab/usr/gapps/shroud/public/toss_4_x86_64_ib_cray/shroud-0.14.0;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/view/python-3.13.11;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/view/python-3.13.11;/usr/tce/packages/cmake/cmake-3.29.2;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/gcc-13.3.1/cppcheck-2.18.0-n6kdcwtwlrc3u3t47t7gokpyd4h6mc27;/usr/tce/packages/cray-mpich-tce/cray-mpich-8.1.29-rocmcc-6.4.3;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/view/doxygen-1.15.0;/opt/rocm-6.4.3;/opt/rocm-6.4.3;/usr/tce/packages/rocmcc/rocmcc-6.4.3-magic/llvm;/opt/rocm-6.4.3;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/view/python-3.13.11;/opt/rocm-6.4.3;/opt/rocm-7.2.1;/opt/rocm-6.4.3;/opt/rocm-7.2.1;/opt/rocm-6.4.3" CACHE STRING "")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@white238 -- should we reconsider whether we really need the CMAKE_PREFIX_PATH/CMAKE_BUILD_RPATH/CMAKE_INSTALL_RPATH ? They add a lot of churn to TPL updates.

Comment on lines +53 to +59
#if defined(_MSC_VER)
#define SPARSEHASH_COMPILE_ASSERT(expr, msg) \
typedef SparsehashCompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1]
#else
#define SPARSEHASH_COMPILE_ASSERT(expr, msg) \
__attribute__((unused)) typedef SparsehashCompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1]
#endif

@kennyweiss kennyweiss Jul 13, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @bmhan12

Our of scope for this PR: We should probably investigate/reconsider whether we still need to vendor sparsehash now that we have std::unordered_map and axom::FlatMap.

Update: #1916

@adayton1

Copy link
Copy Markdown
Member

Instead of removing the cpp14 variant, can't you just make it conflict with the version that requires c++17 and any version newer than it?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Build system Issues related to Axom's build system

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update the cxx standard variant in Axom's spack package

4 participants