diff --git a/.github/workflows/continuous.yaml b/.github/workflows/continuous.yaml index bfa9289e..e243f364 100644 --- a/.github/workflows/continuous.yaml +++ b/.github/workflows/continuous.yaml @@ -153,7 +153,8 @@ jobs: - name: Select embree isa (macOS x64) if: runner.os == 'macOS' && runner.arch == 'X64' - run: echo "embree_max_isa=DEFAULT" >> $GITHUB_ENV + # Cap at SSE2: DEFAULT builds all ISAs, OOM-killing the 14 GB intel runner. + run: echo "embree_max_isa=SSE2" >> $GITHUB_ENV - name: Select embree isa (macOS arm64) if: runner.os == 'macOS' && runner.arch == 'ARM64' @@ -202,7 +203,7 @@ jobs: strategy: fail-fast: false matrix: - os: [windows-2025] + os: [windows-2025, windows-11-arm] config: [Release, Debug] steps: - name: Show disk space @@ -279,7 +280,6 @@ jobs: -DLAGRANGE_JENKINS=ON ` -DLAGRANGE_ALL=ON ` -DLAGRANGE_POLYSCOPE_MOCK_BACKEND=ON ` - -DEMBREE_MAX_ISA=AVX2 ` -B ${{ env.BUILD_DIR }} ` -S . diff --git a/cmake/recipes/external/Boost.cmake b/cmake/recipes/external/Boost.cmake index ac371ef1..0d7a3b3e 100644 --- a/cmake/recipes/external/Boost.cmake +++ b/cmake/recipes/external/Boost.cmake @@ -79,23 +79,25 @@ option(BOOST_IOSTREAMS_ENABLE_BZIP2 "Boost.Iostreams: Enable BZip2 support" OFF) option(BOOST_IOSTREAMS_ENABLE_LZMA "Boost.Iostreams: Enable LZMA support" OFF) option(BOOST_IOSTREAMS_ENABLE_ZSTD "Boost.Iostreams: Enable Zstd support" OFF) -set(BOOST_PATCHES "") +set(BOOST_PATCHES) if(EMSCRIPTEN) # Wasm doesn't have rounding mode control yet, so we trick Boost::interval into thinking it has. # https://github.com/WebAssembly/rounding-mode-control # https://github.com/boostorg/interval/issues/44 - set(BOOST_PATCHES PATCHES Boost.wasm.patch) + list(APPEND BOOST_PATCHES Boost.wasm.patch) endif() # Modern CMake target support was added in Boost 1.82.0 # CMake support for boost::numeric_ublas was added in Boost 1.84.0 +# Windows ARM64 support in Boost.Context (formerly carried in Boost.winarm.patch) is upstream as of +# Boost 1.89.0, so no local patch is needed anymore for that platform. include(CPM) CPMAddPackage( NAME Boost - URL https://github.com/boostorg/boost/releases/download/boost-1.84.0/boost-1.84.0.tar.xz - URL_HASH SHA256=2e64e5d79a738d0fa6fb546c6e5c2bd28f88d268a2a080546f74e5ff98f29d0e + URL https://github.com/boostorg/boost/releases/download/boost-1.91.0-1/boost-1.91.0-1-cmake.tar.xz + URL_HASH SHA256=cc5dc5006ecbdf0051f90979be31b4eee5987d9ae14ae9fb9c03cfa43fa3cdad EXCLUDE_FROM_ALL ON - ${BOOST_PATCHES} + PATCHES ${BOOST_PATCHES} ) # Due to MKL, we may require the release runtime (/MD) even when compiling in Debug mode. diff --git a/cmake/recipes/external/embree.cmake b/cmake/recipes/external/embree.cmake index a323f51c..01f657b3 100644 --- a/cmake/recipes/external/embree.cmake +++ b/cmake/recipes/external/embree.cmake @@ -33,8 +33,10 @@ option(EMBREE_RAY_PACKETS "Enable the usage packed ray." # Match embree's platform detection logic for arm if(APPLE AND CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND (CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64" AND CMAKE_OSX_ARCHITECTURES STREQUAL "") OR ("arm64" IN_LIST CMAKE_OSX_ARCHITECTURES)) + message(STATUS "Setting arm version of Embree") set(EMBREE_ARM ON) elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") + message(STATUS "Setting arm version of Embree") set(EMBREE_ARM ON) endif() @@ -120,9 +122,14 @@ function(embree_import_target) # https://github.com/RenderKit/embree/issues/486 set(EMBREE_PATCHES PATCHES embree.patch) endif() + set(EMBREE_URL RenderKit/embree) + if(WIN32 AND CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64" AND EMBREE_VERSION STREQUAL "v4.4.0") + message(STATUS "Using winarm-compatible fork of embree 4") + set(EMBREE_VERSION 958014331b95bc6f23a82b8f2ea284ce7410febb) + endif() CPMAddPackage( NAME embree - GITHUB_REPOSITORY RenderKit/embree + GITHUB_REPOSITORY ${EMBREE_URL} GIT_TAG ${EMBREE_VERSION} ${EMBREE_PATCHES} )