mirror of https://github.com/mongodb/mongo
73 lines
2.2 KiB
Bash
Executable File
73 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
RG_REPO="${RG_REPO:-https://github.com/BurntSushi/ripgrep.git}"
|
|
RG_REF="${RG_REF:-master}"
|
|
OUT_DIR="${OUT_DIR:-$(pwd)/dist}"
|
|
DEPLOY_X86="${DEPLOY_X86:-10.13}"
|
|
DEPLOY_ARM="${DEPLOY_ARM:-11.0}"
|
|
CPU_BASE_X86="${CPU_BASE_X86:-x86-64}"
|
|
CPU_BASE_ARM="${CPU_BASE_ARM:-generic}"
|
|
|
|
mkdir -p "$OUT_DIR"
|
|
|
|
# toolchain
|
|
if ! command -v rustup >/dev/null 2>&1; then
|
|
curl -sSf https://sh.rustup.rs | sh -s -- -y
|
|
. "$HOME/.cargo/env"
|
|
fi
|
|
rustup target add x86_64-apple-darwin aarch64-apple-darwin
|
|
|
|
# repo
|
|
test -d ripgrep || git clone --depth=1 --branch "$RG_REF" "$RG_REPO" ripgrep
|
|
cd ripgrep
|
|
|
|
# shared knobs
|
|
export PCRE2_SYS_BUNDLED=1
|
|
export PCRE2_SYS_STATIC=1
|
|
export CARGO_PROFILE_RELEASE_LTO=fat
|
|
export CARGO_PROFILE_RELEASE_CODEGEN_UNITS=1
|
|
export CARGO_PROFILE_RELEASE_PANIC=abort
|
|
|
|
SDKROOT="$(xcrun --sdk macosx --show-sdk-path)"
|
|
CC_BIN="$(xcrun -f clang)"
|
|
|
|
# --- x86_64 ---
|
|
echo "==> x86_64 (min macOS $DEPLOY_X86)"
|
|
export CARGO_TARGET_DIR="$(pwd)/target-x86_64"
|
|
rm -rf "$CARGO_TARGET_DIR"
|
|
env SDKROOT="$SDKROOT" CC="$CC_BIN" CFLAGS="-mmacosx-version-min=$DEPLOY_X86" \
|
|
MACOSX_DEPLOYMENT_TARGET="$DEPLOY_X86" \
|
|
RUSTFLAGS="-C target-cpu=$CPU_BASE_X86 -C strip=symbols -C link-arg=-mmacosx-version-min=$DEPLOY_X86" \
|
|
cargo build --release --features pcre2 --target x86_64-apple-darwin
|
|
RG_X86="$CARGO_TARGET_DIR/x86_64-apple-darwin/release/rg"
|
|
|
|
# --- arm64 ---
|
|
echo "==> arm64 (min macOS $DEPLOY_ARM)"
|
|
export CARGO_TARGET_DIR="$(pwd)/target-aarch64"
|
|
rm -rf "$CARGO_TARGET_DIR"
|
|
env SDKROOT="$SDKROOT" CC="$CC_BIN" CFLAGS="-mmacosx-version-min=$DEPLOY_ARM" \
|
|
MACOSX_DEPLOYMENT_TARGET="$DEPLOY_ARM" \
|
|
RUSTFLAGS="-C target-cpu=$CPU_BASE_ARM -C strip=symbols -C link-arg=-Wl,-platform_version,macos,${DEPLOY_ARM},${DEPLOY_ARM}" \
|
|
cargo build --release --features pcre2 --target aarch64-apple-darwin
|
|
RG_ARM="$CARGO_TARGET_DIR/aarch64-apple-darwin/release/rg"
|
|
|
|
# sanity
|
|
[ -f "$RG_X86" ] || {
|
|
echo "missing $RG_X86"
|
|
exit 1
|
|
}
|
|
[ -f "$RG_ARM" ] || {
|
|
echo "missing $RG_ARM"
|
|
exit 1
|
|
}
|
|
|
|
# --- universal2 ---
|
|
OUT="$OUT_DIR/rg-macos-universal2"
|
|
lipo -create -output "$OUT" "$RG_X86" "$RG_ARM"
|
|
strip -S "$OUT" || true
|
|
|
|
echo "==> Wrote $OUT"
|
|
file "$OUT"
|
|
otool -L "$OUT"
|