mirror of
https://github.com/ziglang/zig.git
synced 2024-11-30 09:02:32 +00:00
193c529b8c
This breaking change disambiguates between overriding the lib dir when performing an installation with the Zig Build System, and overriding the lib dir that the Zig installation itself uses.
132 lines
3.5 KiB
Bash
Executable File
132 lines
3.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -x
|
|
set -e
|
|
|
|
brew update && brew install s3cmd
|
|
|
|
ZIGDIR="$(pwd)"
|
|
|
|
HOST_ARCH="x86_64"
|
|
HOST_TARGET="$HOST_ARCH-macos-gnu"
|
|
HOST_MCPU="baseline"
|
|
HOST_CACHE_BASENAME="zig+llvm+lld+clang-$HOST_TARGET-0.8.0-dev.2703+c12704a33"
|
|
HOST_PREFIX="$HOME/$HOST_CACHE_BASENAME"
|
|
|
|
ARCH="aarch64"
|
|
TARGET="$ARCH-macos-gnu"
|
|
MCPU="apple_a14"
|
|
CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.8.0-dev.2703+c12704a33"
|
|
PREFIX="$HOME/$CACHE_BASENAME"
|
|
|
|
JOBS="-j2"
|
|
|
|
rm -rf $HOST_PREFIX $PREFIX
|
|
cd $HOME
|
|
|
|
wget -nv "https://ziglang.org/deps/$HOST_CACHE_BASENAME.tar.xz"
|
|
wget -nv "https://ziglang.org/deps/$CACHE_BASENAME.tar.xz"
|
|
tar xf "$HOST_CACHE_BASENAME.tar.xz"
|
|
tar xf "$CACHE_BASENAME.tar.xz"
|
|
|
|
cd $ZIGDIR
|
|
|
|
# Make the `zig version` number consistent.
|
|
# This will affect the cmake command below.
|
|
git config core.abbrev 9
|
|
git fetch --unshallow || true
|
|
git fetch --tags
|
|
|
|
# Build host zig compiler in debug so that we can get the
|
|
# current version when packaging
|
|
|
|
ZIG="$HOST_PREFIX/bin/zig"
|
|
|
|
export CC="$ZIG cc -target $HOST_TARGET -mcpu=$HOST_MCPU"
|
|
export CXX="$ZIG c++ -target $HOST_TARGET -mcpu=$HOST_MCPU"
|
|
|
|
mkdir build.host
|
|
cd build.host
|
|
cmake .. \
|
|
-DCMAKE_INSTALL_PREFIX="$(pwd)/release" \
|
|
-DCMAKE_PREFIX_PATH="$HOST_PREFIX" \
|
|
-DCMAKE_BUILD_TYPE=Debug \
|
|
-DZIG_TARGET_TRIPLE="$HOST_TARGET" \
|
|
-DZIG_TARGET_MCPU="$HOST_MCPU" \
|
|
-DZIG_STATIC=ON
|
|
|
|
unset CC
|
|
unset CXX
|
|
|
|
make $JOBS install
|
|
|
|
# Build zig compiler cross-compiled for arm64
|
|
cd $ZIGDIR
|
|
|
|
ZIG="$ZIGDIR/build.host/release/bin/zig"
|
|
|
|
export CC="$ZIG cc -target $TARGET -mcpu=$MCPU"
|
|
export CXX="$ZIG c++ -target $TARGET -mcpu=$MCPU"
|
|
|
|
mkdir build
|
|
cd build
|
|
cmake .. \
|
|
-DCMAKE_INSTALL_PREFIX="$(pwd)/release" \
|
|
-DCMAKE_PREFIX_PATH="$PREFIX" \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DZIG_TARGET_TRIPLE="$TARGET" \
|
|
-DZIG_TARGET_MCPU="$MCPU" \
|
|
-DZIG_EXECUTABLE="$ZIG" \
|
|
-DZIG_STATIC=ON
|
|
|
|
unset CC
|
|
unset CXX
|
|
|
|
make $JOBS install
|
|
|
|
if [ "${BUILD_REASON}" != "PullRequest" ]; then
|
|
mv ../LICENSE release/
|
|
|
|
# We do not run test suite but still need langref.
|
|
mkdir -p release/docs
|
|
$ZIG run ../doc/docgen.zig -- $ZIG ../doc/langref.html.in release/docs/langref.html
|
|
|
|
# Produce the experimental std lib documentation.
|
|
mkdir -p release/docs/std
|
|
$ZIG test ../lib/std/std.zig \
|
|
--zig-lib-dir ../lib \
|
|
-femit-docs=release/docs/std \
|
|
-fno-emit-bin
|
|
|
|
mv release/bin/zig release/
|
|
rmdir release/bin
|
|
|
|
VERSION=$(../build.host/release/bin/zig version)
|
|
DIRNAME="zig-macos-$ARCH-$VERSION"
|
|
TARBALL="$DIRNAME.tar.xz"
|
|
mv release "$DIRNAME"
|
|
tar cfJ "$TARBALL" "$DIRNAME"
|
|
|
|
mv "$DOWNLOADSECUREFILE_SECUREFILEPATH" "$HOME/.s3cfg"
|
|
s3cmd put -P --add-header="cache-control: public, max-age=31536000, immutable" "$TARBALL" s3://ziglang.org/builds/
|
|
|
|
SHASUM=$(shasum -a 256 $TARBALL | cut '-d ' -f1)
|
|
BYTESIZE=$(wc -c < $TARBALL)
|
|
|
|
JSONFILE="macos-$GITBRANCH.json"
|
|
touch $JSONFILE
|
|
echo "{\"tarball\": \"$TARBALL\"," >>$JSONFILE
|
|
echo "\"shasum\": \"$SHASUM\"," >>$JSONFILE
|
|
echo "\"size\": \"$BYTESIZE\"}" >>$JSONFILE
|
|
|
|
s3cmd put -P --add-header="Cache-Control: max-age=0, must-revalidate" "$JSONFILE" "s3://ziglang.org/builds/$JSONFILE"
|
|
s3cmd put -P "$JSONFILE" "s3://ziglang.org/builds/$ARCH-macos-$VERSION.json"
|
|
|
|
# `set -x` causes these variables to be mangled.
|
|
# See https://developercommunity.visualstudio.com/content/problem/375679/pipeline-variable-incorrectly-inserts-single-quote.html
|
|
set +x
|
|
echo "##vso[task.setvariable variable=tarball;isOutput=true]$TARBALL"
|
|
echo "##vso[task.setvariable variable=shasum;isOutput=true]$SHASUM"
|
|
echo "##vso[task.setvariable variable=bytesize;isOutput=true]$BYTESIZE"
|
|
fi
|