mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
102 lines
2.4 KiB
Bash
Executable File
102 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
export CMAKE_FLAGS=""
|
|
source "$(dirname "$0")/env.sh"
|
|
|
|
if [[ -n "$CMAKE_FLAGS" ]]; then
|
|
echo "CMAKE_FLAGS should not be empty"
|
|
exit 1
|
|
fi
|
|
|
|
function assert_target() {
|
|
local arch="${2-$(uname -m)}"
|
|
case "$(echo "$arch" | tr '[:upper:]' '[:lower:]')" in
|
|
x64 | x86_64 | amd64)
|
|
export ZIG_ARCH="x86_64"
|
|
if [[ "$BUILDKITE_STEP_KEY" == *"baseline"* ]]; then
|
|
export ZIG_CPU_TARGET="nehalem"
|
|
else
|
|
export ZIG_CPU_TARGET="haswell"
|
|
fi
|
|
;;
|
|
aarch64 | arm64)
|
|
export ZIG_ARCH="aarch64"
|
|
export ZIG_CPU_TARGET="native"
|
|
;;
|
|
*)
|
|
echo "error: Unsupported architecture: $arch" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
local os="${1-$(uname -s)}"
|
|
case "$(echo "$os" | tr '[:upper:]' '[:lower:]')" in
|
|
linux)
|
|
export ZIG_OS="linux"
|
|
export ZIG_TARGET="$ZIG_ARCH-linux-gnu"
|
|
;;
|
|
darwin)
|
|
export ZIG_OS="macos"
|
|
export ZIG_TARGET="$ZIG_ARCH-macos-none"
|
|
;;
|
|
windows)
|
|
export ZIG_OS="windows"
|
|
export ZIG_TARGET="$ZIG_ARCH-windows-msvc"
|
|
;;
|
|
*)
|
|
echo "error: Unsupported operating system: $os" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
function run_command() {
|
|
set -x
|
|
"$@"
|
|
{ set +x; } 2>/dev/null
|
|
}
|
|
|
|
assert_target "$@"
|
|
|
|
# Since the zig build depends on files from the zig submodule,
|
|
# make sure to update the submodule before building.
|
|
run_command git submodule update --init --recursive --progress --depth=1 --checkout src/deps/zig
|
|
|
|
# TODO: Move these to be part of the CMake build
|
|
source "$(dirname "$0")/build-old-js.sh"
|
|
|
|
cwd="$(pwd)"
|
|
mkdir -p build
|
|
cd build
|
|
|
|
# in buildkite this script to compile for windows is run on a macos machine
|
|
# so the cmake windows detection for this logic is not ran
|
|
ZIG_OPTIMIZE="ReleaseFast"
|
|
if [[ "$ZIG_OS" == "windows" ]]; then
|
|
ZIG_OPTIMIZE="ReleaseSafe"
|
|
fi
|
|
|
|
run_command cmake .. "${CMAKE_FLAGS[@]}" \
|
|
-GNinja \
|
|
-DNO_CONFIGURE_DEPENDS="1" \
|
|
-DNO_CODEGEN="0" \
|
|
-DWEBKIT_DIR="omit" \
|
|
-DBUN_ZIG_OBJ_DIR="$cwd/build" \
|
|
-DZIG_LIB_DIR="$cwd/src/deps/zig/lib" \
|
|
-DCMAKE_BUILD_TYPE="$CMAKE_BUILD_TYPE" \
|
|
-DARCH="$ZIG_ARCH" \
|
|
-DCPU_TARGET="$ZIG_CPU_TARGET" \
|
|
-DZIG_TARGET="$ZIG_TARGET" \
|
|
-DUSE_LTO="$USE_LTO" \
|
|
-DUSE_DEBUG_JSC="$USE_DEBUG_JSC" \
|
|
-DCANARY="$CANARY" \
|
|
-DZIG_OPTIMIZE="$ZIG_OPTIMIZE" \
|
|
-DGIT_SHA="$GIT_SHA"
|
|
|
|
export ONLY_ZIG="1"
|
|
run_command ninja "$cwd/build/bun-zig.o" -v -j "$CPUS"
|
|
|
|
cd ..
|
|
source "$(dirname "$0")/upload-artifact.sh" "build/bun-zig.o"
|