mirror of
https://github.com/termux-pacman/termux-packages.git
synced 2025-12-27 06:00:10 +00:00
124 lines
4.7 KiB
Diff
124 lines
4.7 KiB
Diff
diff --git a/build b/build
|
|
index b1917f6b..c1a5844c 100755
|
|
--- a/build
|
|
+++ b/build
|
|
@@ -20,10 +20,19 @@ case $TARGET_OS_CMAKE in
|
|
native) TARGET_OS_CMAKE="";;
|
|
esac
|
|
|
|
+# When we know we are not host building zig,
|
|
+# we can disable unused targets ahead of time
|
|
+case "${TARGET}" in
|
|
+aarch64-*) ARCH="AArch64" ;;
|
|
+arm-*) ARCH="ARM" ;;
|
|
+x86-*) ARCH="X86" ;;
|
|
+x86_64-*) ARCH="X86" ;;
|
|
+esac
|
|
+
|
|
# First build the libraries for Zig to link against, as well as native `llvm-tblgen`.
|
|
mkdir -p "$ROOTDIR/out/build-llvm-host"
|
|
cd "$ROOTDIR/out/build-llvm-host"
|
|
-cmake "$ROOTDIR/llvm" \
|
|
+cmake -G Ninja "$ROOTDIR/llvm" \
|
|
-DCMAKE_INSTALL_PREFIX="$ROOTDIR/out/host" \
|
|
-DCMAKE_PREFIX_PATH="$ROOTDIR/out/host" \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
@@ -38,6 +47,7 @@ cmake "$ROOTDIR/llvm" \
|
|
-DLLVM_ENABLE_BINDINGS=OFF \
|
|
-DLLVM_ENABLE_OCAMLDOC=OFF \
|
|
-DLLVM_ENABLE_Z3_SOLVER=OFF \
|
|
+ -DLLVM_TARGETS_TO_BUILD="$ARCH" \
|
|
-DLLVM_TOOL_LLVM_LTO2_BUILD=OFF \
|
|
-DLLVM_TOOL_LLVM_LTO_BUILD=OFF \
|
|
-DLLVM_TOOL_LTO_BUILD=OFF \
|
|
@@ -50,27 +60,29 @@ cmake "$ROOTDIR/llvm" \
|
|
-DCLANG_TOOL_ARCMT_TEST_BUILD=OFF \
|
|
-DCLANG_TOOL_C_ARCMT_TEST_BUILD=OFF \
|
|
-DCLANG_TOOL_LIBCLANG_BUILD=OFF
|
|
-cmake --build . --target install
|
|
+ninja -j$(nproc) llvm-ar llvm-ranlib llvm-rc llvm-tblgen clang-tblgen
|
|
|
|
# Now we build Zig, still with system C/C++ compiler, linking against LLVM,
|
|
# Clang, LLD we just built from source.
|
|
+if ! :; then
|
|
mkdir -p "$ROOTDIR/out/build-zig-host"
|
|
cd "$ROOTDIR/out/build-zig-host"
|
|
-cmake "$ROOTDIR/zig" \
|
|
+cmake -G Ninja "$ROOTDIR/zig" \
|
|
-DCMAKE_INSTALL_PREFIX="$ROOTDIR/out/host" \
|
|
-DCMAKE_PREFIX_PATH="$ROOTDIR/out/host" \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DZIG_VERSION="$ZIG_VERSION"
|
|
-cmake --build . --target install
|
|
+ninja -j$(nproc) install
|
|
+fi
|
|
|
|
# Now we have Zig as a cross compiler.
|
|
-ZIG="$ROOTDIR/out/host/bin/zig"
|
|
+ZIG=$(command -v zig)
|
|
|
|
# First cross compile zlib for the target, as we need the LLVM linked into
|
|
# the final zig binary to have zlib support enabled.
|
|
mkdir -p "$ROOTDIR/out/build-zlib-$TARGET-$MCPU"
|
|
cd "$ROOTDIR/out/build-zlib-$TARGET-$MCPU"
|
|
-cmake "$ROOTDIR/zlib" \
|
|
+cmake -G Ninja "$ROOTDIR/zlib" \
|
|
-DCMAKE_INSTALL_PREFIX="$ROOTDIR/out/$TARGET-$MCPU" \
|
|
-DCMAKE_PREFIX_PATH="$ROOTDIR/out/$TARGET-$MCPU" \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
@@ -79,10 +91,10 @@ cmake "$ROOTDIR/zlib" \
|
|
-DCMAKE_C_COMPILER="$ZIG;cc;-fno-sanitize=all;-s;-target;$TARGET;-mcpu=$MCPU" \
|
|
-DCMAKE_CXX_COMPILER="$ZIG;c++;-fno-sanitize=all;-s;-target;$TARGET;-mcpu=$MCPU" \
|
|
-DCMAKE_ASM_COMPILER="$ZIG;cc;-fno-sanitize=all;-s;-target;$TARGET;-mcpu=$MCPU" \
|
|
- -DCMAKE_RC_COMPILER="$ROOTDIR/out/host/bin/llvm-rc" \
|
|
- -DCMAKE_AR="$ROOTDIR/out/host/bin/llvm-ar" \
|
|
- -DCMAKE_RANLIB="$ROOTDIR/out/host/bin/llvm-ranlib"
|
|
-cmake --build . --target install
|
|
+ -DCMAKE_RC_COMPILER="$ROOTDIR/out/build-llvm-host/bin/llvm-rc" \
|
|
+ -DCMAKE_AR="$ROOTDIR/out/build-llvm-host/bin/llvm-ar" \
|
|
+ -DCMAKE_RANLIB="$ROOTDIR/out/build-llvm-host/bin/llvm-ranlib"
|
|
+ninja -j$(nproc) install
|
|
|
|
# Same deal for zstd.
|
|
# The build system for zstd is whack so I just put all the files here.
|
|
@@ -132,7 +144,7 @@ $ZIG build-lib \
|
|
# Rebuild LLVM with Zig.
|
|
mkdir -p "$ROOTDIR/out/build-llvm-$TARGET-$MCPU"
|
|
cd "$ROOTDIR/out/build-llvm-$TARGET-$MCPU"
|
|
-cmake "$ROOTDIR/llvm" \
|
|
+cmake -G Ninja "$ROOTDIR/llvm" \
|
|
-DCMAKE_INSTALL_PREFIX="$ROOTDIR/out/$TARGET-$MCPU" \
|
|
-DCMAKE_PREFIX_PATH="$ROOTDIR/out/$TARGET-$MCPU" \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
@@ -141,9 +153,9 @@ cmake "$ROOTDIR/llvm" \
|
|
-DCMAKE_C_COMPILER="$ZIG;cc;-fno-sanitize=all;-s;-target;$TARGET;-mcpu=$MCPU" \
|
|
-DCMAKE_CXX_COMPILER="$ZIG;c++;-fno-sanitize=all;-s;-target;$TARGET;-mcpu=$MCPU" \
|
|
-DCMAKE_ASM_COMPILER="$ZIG;cc;-fno-sanitize=all;-s;-target;$TARGET;-mcpu=$MCPU" \
|
|
- -DCMAKE_RC_COMPILER="$ROOTDIR/out/host/bin/llvm-rc" \
|
|
- -DCMAKE_AR="$ROOTDIR/out/host/bin/llvm-ar" \
|
|
- -DCMAKE_RANLIB="$ROOTDIR/out/host/bin/llvm-ranlib" \
|
|
+ -DCMAKE_RC_COMPILER="$ROOTDIR/out/build-llvm-host/bin/llvm-rc" \
|
|
+ -DCMAKE_AR="$ROOTDIR/out/build-llvm-host/bin/llvm-ar" \
|
|
+ -DCMAKE_RANLIB="$ROOTDIR/out/build-llvm-host/bin/llvm-ranlib" \
|
|
-DLLVM_ENABLE_BACKTRACES=OFF \
|
|
-DLLVM_ENABLE_BINDINGS=OFF \
|
|
-DLLVM_ENABLE_CRASH_OVERRIDES=OFF \
|
|
@@ -158,7 +170,7 @@ cmake "$ROOTDIR/llvm" \
|
|
-DLLVM_ENABLE_ZLIB=FORCE_ON \
|
|
-DLLVM_ENABLE_ZSTD=FORCE_ON \
|
|
-DLLVM_USE_STATIC_ZSTD=ON \
|
|
- -DLLVM_TABLEGEN="$ROOTDIR/out/host/bin/llvm-tblgen" \
|
|
+ -DLLVM_TABLEGEN="$ROOTDIR/out/build-llvm-host/bin/llvm-tblgen" \
|
|
-DLLVM_BUILD_UTILS=OFF \
|
|
-DLLVM_BUILD_TOOLS=OFF \
|
|
-DLLVM_BUILD_STATIC=ON \
|
|
@@ -185,7 +197,7 @@ cmake "$ROOTDIR/llvm" \
|
|
-DCLANG_TOOL_LIBCLANG_BUILD=OFF \
|
|
-DLIBCLANG_BUILD_STATIC=ON \
|
|
-DLLD_BUILD_TOOLS=OFF
|
|
-cmake --build . --target install
|
|
+ninja -j$(nproc) install
|
|
|
|
# Finally, we can cross compile Zig itself, with Zig.
|
|
cd "$ROOTDIR/zig"
|