Testing Embree4 + WinArm#84
Open
jdumas wants to merge 69 commits into
Open
Conversation
- Add embree-winarm.patch: guards _tzcnt_u64, _lzcnt_u64, _pext_u32/_pdep_u32 with !defined(_M_ARM64) (MSVC ARM64 macro, missing alongside __aarch64__) - simde.cmake: disable SIMDE native NEON on MSVC ARM64 to avoid __m128/__m128i being the same underlying __n128 type, which breaks WindingNumber overloads Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…e ARM64 fix Strawberry patch.exe is strict about hunk line counts and running offsets, causing hunk 3 to search at the wrong line. Use file(READ)+string(REGEX REPLACE)+file(WRITE) instead to apply _M_ARM64 guards in intrinsics.h. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ARM64 Python on GitHub Actions hostedtoolcache lacks development files (headers + import lib). CMake falls back to x64 Python's Development.Module, but MSVC in ARM64 mode cannot link against the x64 python313.lib, producing hundreds of unresolved __imp_Py* linker errors. Fix: split the Windows configure step to pass -DLAGRANGE_MODULE_PYTHON=OFF for windows-11-arm, and update CMakeLists.txt to honor an explicit -DLAGRANGE_MODULE_PYTHON=OFF even when LAGRANGE_ALL=ON. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The module-inclusion loop unconditionally honored LAGRANGE_ALL, so passing -DLAGRANGE_MODULE_PYTHON=OFF together with -DLAGRANGE_ALL=ON still pulled modules/python into the build. Capture the cache state before option() materializes the default value, then skip modules the user explicitly disabled even when LAGRANGE_ALL is set. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Instead of disabling Python, install the ARM64 Python with its full development files by passing architecture: arm64 to setup-python. Without this, setup-python only installs the ARM64 interpreter (no python313.lib or headers), causing CMake FindPython to fall back to the x64 Python for Development.Module -- which the ARM64 MSVC toolchain cannot link against. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The windows-11-arm hostedtoolcache Python only ships the interpreter; it lacks python3XX.lib and headers needed for extension module linking. After MSVC dev-cmd setup, synthesize the ARM64 import library from the ARM64 python3XX.dll using lib.exe /DEF /MACHINE:ARM64, and copy the architecture-neutral headers from the x64 Python install if absent. Then pass -DPython_EXECUTABLE and -DPython_FIND_REGISTRY=NEVER to CMake so FindPython uses the now-complete ARM64 Python rather than falling back to the x64 install (which the ARM64 MSVC toolchain cannot link). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The windows-11-arm hostedtoolcache Python ships only the interpreter binary — no include/ headers and no libs/python3XX.lib — so CMake's FindPython falls back to x64 Python for Development.Module, which the ARM64 MSVC toolchain cannot link against. Use astral-sh/setup-uv + uv python install to pull a python-build-standalone distribution instead. These distributions include full dev files. uv intentionally defaults to x64-emulated Python on Windows ARM64 runners (uv PR #13724), so we pin the cpython-3.13-windows-aarch64 specifier to get the native build. Pass -DPython_EXECUTABLE and -DPython_FIND_REGISTRY=NEVER to CMake so FindPython uses the uv-managed ARM64 Python and does not fall back to the registry-registered x64 Python. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Intel MKL has no Windows ARM64 support — skip MKL/BLAS setup on that platform. DirectSolver.h already falls back to Eigen::SimplicialLDLT when LA_SOLVER_MKL is not defined, so no header changes are needed. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- modules/CMakeLists.txt: revert _user_disabled_module mechanism; the Eigen solver fix means no modules need explicit ARM64 exclusions - CMakeLists.txt: revert LAGRANGE_MODULE_PYTHON guard back to the simple LAGRANGE_ALL check (same motivation) - embree.cmake: replace string(REPLACE) hack with git apply on a corrected embree-winarm.patch (fixed hunk offsets 91→92, 141→142); use --ignore-whitespace to handle CRLF from git-cloned sources on Windows - simde.cmake: remove global SIMDE_NO_NATIVE for MSVC ARM64; the issue was specific to WindingNumber, not all simde consumers - winding_number.cmake + winding-number-winarm.patch: fix VM_SSEFunc.h at source level — on MSVC ARM64, simde__m128 and simde__m128i are both __n128, making plain typedefs identical and breaking all overloaded functions (vm_shuffle, vm_extract, vm_v4sf/vm_v4si). Replace typedefs with distinct wrapper structs that carry implicit conversions, and guard the union-based MSVC cast functions with !defined(_M_ARM64) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…sse-adobe fork The dousse-adobe fork's intrinsics.h has trailing spaces on the AVX2 preprocessor guards at lines 94 and 143. The patch's minus lines must match exactly (git apply --ignore-whitespace only ignores trailing whitespace in context lines, not in minus lines). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… fix hunk 2 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ll sites Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Force-include a non-fatal eigen_assert override that logs each alignment failure to stderr (first 30 hits) instead of aborting/popping a CRT dialog. Disable Unix and non-ARM64 Windows jobs to iterate fast on the only failing config. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Replace the temporary EIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT workaround with a non-fatal eigen_assert override that uses cpptrace::generate_trace() to print a full stack trace whenever the failing assertion originates from DenseStorage.h (the plain_array<> alignment check). All other eigen_assert failures still abort to keep unrelated invariants surfaced. Trim CI to the smallest possible reproducer: - Disable Unix matrix. - Windows matrix reduced to windows-11-arm Debug only. - Configure only LAGRANGE_MODULE_SERIALIZATION2 (no LAGRANGE_ALL, no Python). - Scope ctest to -R 'serialization2|serialize_'. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ERFACE install(EXPORT Eigen_Targets ...) was failing because Eigen3_Eigen INTERFACE linked a target outside the export set. Wrap the diagnostic compile options, defines, and link with $<BUILD_INTERFACE:> so they only apply during the local build and are stripped from the install/export. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…uard Last run produced [EIGEN_DIAG #N] header lines but no cpptrace frames followed. Switch to to_string(false) + fprintf(stderr) so output uses the same C stream as the header, log frame count, and catch exceptions in case symbol resolution or unwinding fails on Win ARM64. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.