Add ARM64X support
Extend the aarch64-w64-mingw32 prefix to provide ARM64EC libraries alongside standard AArch64 libraries, replacing the separate arm64ec-w64-mingw32 prefix. This aligns with how MSVC distributes ARM64EC libraries and enables the linker to process both targets simultaneously into a single hybrid binary. This extensively utilizes LLVM's -marm64x option, compiling both targets in a single compiler invocation to produce hybrid object files (unlike MSVC tools, which require separate compilation passes).
This commit is contained in:
1 parent
5e3f73a650
commit
64effa9a71
10 files changed
+127
-33
No files matched your search
+17
-2
@@ -64,12 +64,26 @@ else
|
||||
esac
|
||||
fi
|
||||
|
||||
ARM64X_FLAGS=""
|
||||
for arch in $ARCHS; do
|
||||
case $arch in
|
||||
arm64ec) ARM64X_FLAGS="-marm64x" ;;
|
||||
esac
|
||||
done
|
||||
|
||||
for arch in $ARCHS; do
|
||||
CMAKEFLAGS=""
|
||||
FLAGS=""
|
||||
case $arch in
|
||||
x86_64)
|
||||
CMAKEFLAGS="$CMAKEFLAGS -DLIBOMP_ASMFLAGS=-m64"
|
||||
;;
|
||||
aarch64)
|
||||
FLAGS="$ARM64X_FLAGS"
|
||||
;;
|
||||
arm64ec)
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
|
||||
[ -z "$CLEAN" ] || rm -rf build-openmp-$arch
|
||||
@@ -90,8 +104,9 @@ for arch in $ARCHS; do
|
||||
-DCMAKE_RANLIB="$PREFIX/bin/llvm-ranlib" \
|
||||
-DLLVM_ENABLE_RUNTIMES="openmp" \
|
||||
-DLIBOMP_ENABLE_SHARED=TRUE \
|
||||
-DCMAKE_C_FLAGS_INIT="$CFGUARD_CFLAGS" \
|
||||
-DCMAKE_CXX_FLAGS_INIT="$CFGUARD_CFLAGS" \
|
||||
-DCMAKE_C_FLAGS_INIT="$CFGUARD_CFLAGS $FLAGS" \
|
||||
-DCMAKE_CXX_FLAGS_INIT="$CFGUARD_CFLAGS $FLAGS" \
|
||||
-DCMAKE_SHARED_LINKER_FLAGS="$FLAGS" \
|
||||
$CMAKEFLAGS \
|
||||
..
|
||||
cmake --build . ${CORES:+-j${CORES}}
|
||||
|
||||
Reference in new issue
Block a user