zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

aarch64-linux-release.sh (2123B) - Raw


      1 #!/bin/sh
      2 
      3 # Requires cmake ninja-build
      4 
      5 set -x
      6 set -e
      7 
      8 ARCH="$(uname -m)"
      9 TARGET="$ARCH-linux-musl"
     10 MCPU="baseline"
     11 CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.15.0-dev.233+7c85dc460"
     12 PREFIX="$HOME/deps/$CACHE_BASENAME"
     13 ZIG="$PREFIX/bin/zig"
     14 
     15 export PATH="$HOME/local/bin:$PATH"
     16 
     17 # Make the `zig version` number consistent.
     18 # This will affect the cmake command below.
     19 git fetch --unshallow || true
     20 git fetch --tags
     21 
     22 # Override the cache directories because they won't actually help other CI runs
     23 # which will be testing alternate versions of zig, and ultimately would just
     24 # fill up space on the hard drive for no reason.
     25 export ZIG_GLOBAL_CACHE_DIR="$PWD/zig-global-cache"
     26 export ZIG_LOCAL_CACHE_DIR="$PWD/zig-local-cache"
     27 
     28 mkdir build-release
     29 cd build-release
     30 
     31 export CC="$ZIG cc -target $TARGET -mcpu=$MCPU"
     32 export CXX="$ZIG c++ -target $TARGET -mcpu=$MCPU"
     33 
     34 cmake .. \
     35   -DCMAKE_INSTALL_PREFIX="stage3-release" \
     36   -DCMAKE_PREFIX_PATH="$PREFIX" \
     37   -DCMAKE_BUILD_TYPE=Release \
     38   -DZIG_TARGET_TRIPLE="$TARGET" \
     39   -DZIG_TARGET_MCPU="$MCPU" \
     40   -DZIG_STATIC=ON \
     41   -DZIG_NO_LIB=ON \
     42   -GNinja
     43 
     44 # Now cmake will use zig as the C/C++ compiler. We reset the environment variables
     45 # so that installation and testing do not get affected by them.
     46 unset CC
     47 unset CXX
     48 
     49 ninja install
     50 
     51 # No -fqemu and -fwasmtime here as they're covered by the x86_64-linux scripts.
     52 stage3-release/bin/zig build test docs \
     53   --maxrss 44918199637 \
     54   -Dstatic-llvm \
     55   -Dskip-non-native \
     56   -Dtarget=native-native-musl \
     57   --search-prefix "$PREFIX" \
     58   --zig-lib-dir "$PWD/../lib" \
     59   -Denable-superhtml
     60 
     61 # Ensure that stage3 and stage4 are byte-for-byte identical.
     62 stage3-release/bin/zig build \
     63   --prefix stage4-release \
     64   -Denable-llvm \
     65   -Dno-lib \
     66   -Doptimize=ReleaseFast \
     67   -Dstrip \
     68   -Dtarget=$TARGET \
     69   -Duse-zig-libcxx \
     70   -Dversion-string="$(stage3-release/bin/zig version)"
     71 
     72 # diff returns an error code if the files differ.
     73 echo "If the following command fails, it means nondeterminism has been"
     74 echo "introduced, making stage3 and stage4 no longer byte-for-byte identical."
     75 diff stage3-release/bin/zig stage4-release/bin/zig