diff --git a/build-compiler-rt.sh b/build-compiler-rt.sh index 2680e16d..d7f3e3d7 100755 --- a/build-compiler-rt.sh +++ b/build-compiler-rt.sh @@ -122,6 +122,13 @@ for arch in $ARCHS; do -DCMAKE_CXX_FLAGS_INIT="$CFGUARD_CFLAGS" \ $SRC_DIR cmake --build . ${CORES:+-j${CORES}} + + # Skip install on arm64ec, we merge archives instead. + if [ "$arch" = "arm64ec" ]; then + cd .. + continue + fi + cmake --install . --prefix "$INSTALL_PREFIX" mkdir -p "$PREFIX/$arch-w64-mingw32/bin" if [ -n "$SANITIZERS" ]; then @@ -142,6 +149,20 @@ for arch in $ARCHS; do cd .. done +# Clang expects the aarch64 compiler-rt name on ARM64EC. While this could be adjusted +# in Clang, the current approach mirrors MSVC, where the core CRT is provided as +# archives containing both EC and native support. Ideally, the LLVM build system would +# handle this automatically, but for now we can merge it here. +for arch in $ARCHS; do + if [ "$arch" = "arm64ec" ]; then + rm -f "$INSTALL_PREFIX/lib/windows/libclang_rt.builtins-aarch64.a" \ + "$INSTALL_PREFIX/lib/windows/libclang_rt.builtins-arm64ec.a" + "$PREFIX/bin/llvm-lib" -machine:arm64ec "-out:$INSTALL_PREFIX/lib/windows/libclang_rt.builtins-aarch64.a" \ + build-aarch64/lib/windows/libclang_rt.builtins-aarch64.a \ + build-arm64ec/lib/windows/libclang_rt.builtins-arm64ec.a + fi +done + if [ "$INSTALL_PREFIX" != "$CLANG_RESOURCE_DIR" ]; then # symlink to system headers - skip copy rm -rf "$INSTALL_PREFIX/include" diff --git a/build-mingw-w64.sh b/build-mingw-w64.sh index 10e03367..c8fb3988 100755 --- a/build-mingw-w64.sh +++ b/build-mingw-w64.sh @@ -121,7 +121,7 @@ for arch in $ARCHS; do armv7) FLAGS="--disable-lib32 --disable-lib64 --enable-libarm32" ;; - aarch64) + aarch64|arm64ec) FLAGS="--disable-lib32 --disable-lib64 --enable-libarm64" ;; i686) diff --git a/build-openmp.sh b/build-openmp.sh index 2473f2b5..c265d8b6 100755 --- a/build-openmp.sh +++ b/build-openmp.sh @@ -70,6 +70,10 @@ for arch in $ARCHS; do x86_64) CMAKEFLAGS="$CMAKEFLAGS -DLIBOMP_ASMFLAGS=-m64" ;; + arm64ec) + # Not yet supported + continue + ;; esac [ -z "$CLEAN" ] || rm -rf build-$arch