| ... | ... | @@ -0,0 +1,98 @@ |
| 1 | #!/bin/sh |
| 2 | |
| 3 | set -x |
| 4 | set -e |
| 5 | |
| 6 | brew install s3cmd gcc@8 |
| 7 | |
| 8 | ZIGDIR="$(pwd)" |
| 9 | CACHE_BASENAME="llvm+clang-7.0.0-macos-x86_64-gcc8-release-static" |
| 10 | PREFIX="$HOME/$CACHE_BASENAME" |
| 11 | TMPDIR="$HOME/tmpz" |
| 12 | JOBS="-j2" |
| 13 | |
| 14 | # I tried using the system default compiler (clang), but it couldn't statically link libc++. |
| 15 | # So we use gcc-8 from homebrew. |
| 16 | export CC=gcc-8 |
| 17 | export CXX=g++-8 |
| 18 | |
| 19 | rm -rf $PREFIX |
| 20 | rm -rf $TMPDIR |
| 21 | mkdir $TMPDIR |
| 22 | |
| 23 | cd $HOME |
| 24 | HAVE_CACHE="true" |
| 25 | wget "https://ziglang.org/builds/$CACHE_BASENAME.tar.xz" || HAVE_CACHE="false" |
| 26 | if [ "${HAVE_CACHE}" = "true" ]; then |
| 27 | tar xf "$CACHE_BASENAME.tar.xz" |
| 28 | else |
| 29 | if [ "${BUILD_REASON}" == "PullRequest" ]; then |
| 30 | echo "Need cached llvm+clang for pull request builds." |
| 31 | exit 1 |
| 32 | fi |
| 33 | |
| 34 | cd $TMPDIR |
| 35 | wget https://zlib.net/zlib-1.2.11.tar.xz |
| 36 | tar xf zlib-1.2.11.tar.xz |
| 37 | cd zlib-1.2.11/ |
| 38 | mkdir build |
| 39 | cd build |
| 40 | cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$PREFIX -DCMAKE_INSTALL_PREFIX=$PREFIX |
| 41 | make $JOBS install |
| 42 | rm $PREFIX/lib/libz*dylib |
| 43 | |
| 44 | cd $TMPDIR |
| 45 | wget ftp://ftp.invisible-island.net/ncurses/ncurses.tar.gz |
| 46 | tar xf ncurses.tar.gz |
| 47 | cd ncurses-6.1/ |
| 48 | ./configure --without-shared --prefix=$PREFIX |
| 49 | make $JOBS install |
| 50 | |
| 51 | cd $TMPDIR |
| 52 | wget https://releases.llvm.org/7.0.0/llvm-7.0.0.src.tar.xz |
| 53 | tar xf llvm-7.0.0.src.tar.xz |
| 54 | cd llvm-7.0.0.src/ |
| 55 | mkdir build |
| 56 | cd build |
| 57 | cmake .. -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_PREFIX_PATH=$PREFIX -DCMAKE_BUILD_TYPE=Release -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="WebAssembly;AVR;RISCV" -DLLVM_ENABLE_LIBXML2=OFF |
| 58 | make $JOBS install |
| 59 | |
| 60 | cd $TMPDIR |
| 61 | wget https://releases.llvm.org/7.0.0/cfe-7.0.0.src.tar.xz |
| 62 | tar xf cfe-7.0.0.src.tar.xz |
| 63 | cd cfe-7.0.0.src/ |
| 64 | mkdir build |
| 65 | cd build |
| 66 | cmake .. -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_PREFIX_PATH=$PREFIX -DCMAKE_BUILD_TYPE=Release |
| 67 | make $JOBS install |
| 68 | |
| 69 | cd $HOME |
| 70 | tar cfJ "$CACHE_BASENAME.tar.xz" "$CACHE_BASENAME" |
| 71 | cp "$DOWNLOADSECUREFILE_SECUREFILEPATH" "$HOME/.s3cfg" |
| 72 | s3cmd put -P "$CACHE_BASENAME.tar.xz" "s3://ziglang.org/builds/$CACHE_BASENAME.tar.xz" |
| 73 | fi |
| 74 | |
| 75 | cd $ZIGDIR |
| 76 | mkdir build |
| 77 | cd build |
| 78 | cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$PREFIX -DCMAKE_INSTALL_PREFIX=$(pwd)/release -DZIG_STATIC=ON |
| 79 | make $JOBS install |
| 80 | release/bin/zig build --build-file ../build.zig test |
| 81 | |
| 82 | if [ "${BUILD_REASON}" != "PullRequest" ]; then |
| 83 | mv ../LICENSE release/ |
| 84 | mv ../zig-cache/langref.html release/ |
| 85 | mv release/bin/zig release/ |
| 86 | rmdir release/bin |
| 87 | |
| 88 | VERSION=$(release/zig version) |
| 89 | DIRNAME="zig-macos-x86_64-$VERSION" |
| 90 | TARBALL="$DIRNAME.tar.xz" |
| 91 | mv release "$DIRNAME" |
| 92 | tar cfJ "$TARBALL" "$DIRNAME" |
| 93 | |
| 94 | mv "$DOWNLOADSECUREFILE_SECUREFILEPATH" "$HOME/.s3cfg" |
| 95 | s3cmd put -P "$TARBALL" s3://ziglang.org/builds/ |
| 96 | touch empty |
| 97 | s3cmd put -P empty s3://ziglang.org/builds/zig-macos-x86_64-$BUILD_SOURCEBRANCHNAME.tar.xz --add-header="Cache-Control: max-age=0, must-revalidate" --add-header="x-amz-website-redirect-location:/builds/$TARBALL" |
| 98 | fi |