diff --git a/CMakeLists.txt b/CMakeLists.txt index b58f714a223d..a0cffd7a2b43 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -67,6 +67,7 @@ message("Configuring zig version ${ZIG_VERSION}") set(ZIG_STATIC off CACHE BOOL "Attempt to build a static zig executable (not compatible with glibc)") set(ZIG_STATIC_LLVM off CACHE BOOL "Prefer linking against static LLVM libraries") +set(ZIG_STATIC_ZLIB off CACHE BOOL "Prefer linking against static zlib") set(ZIG_PREFER_CLANG_CPP_DYLIB off CACHE BOOL "Try to link against -lclang-cpp") set(ZIG_USE_CCACHE off CACHE BOOL "Use ccache if available") @@ -75,7 +76,8 @@ if(CCACHE_PROGRAM AND ZIG_USE_CCACHE) endif() if(ZIG_STATIC) - set(ZIG_STATIC_LLVM "on") + set(ZIG_STATIC_LLVM ON) + set(ZIG_STATIC_ZLIB ON) endif() string(REGEX REPLACE "\\\\" "\\\\\\\\" ZIG_LIBC_LIB_DIR_ESCAPED "${ZIG_LIBC_LIB_DIR}") @@ -101,11 +103,13 @@ find_package(llvm) find_package(clang) find_package(lld) -if(APPLE AND ZIG_STATIC) +if(ZIG_STATIC_ZLIB) list(REMOVE_ITEM LLVM_LIBRARIES "-lz") - find_library(ZLIB NAMES libz.a z zlib libz) + find_library(ZLIB NAMES libz.a libzlibstatic.a z zlib libz) list(APPEND LLVM_LIBRARIES "${ZLIB}") +endif() +if(APPLE AND ZIG_STATIC) list(REMOVE_ITEM LLVM_LIBRARIES "-lcurses") find_library(CURSES NAMES libcurses.a curses libcurses libncurses.a ncurses libncurses) list(APPEND LLVM_LIBRARIES "${CURSES}") diff --git a/ci/azure/linux_script b/ci/azure/linux_script index 2ca7ed9f75a9..b740f9d69871 100755 --- a/ci/azure/linux_script +++ b/ci/azure/linux_script @@ -9,7 +9,7 @@ sudo apt-get install -y cmake s3cmd tidy ZIGDIR="$(pwd)" ARCH="$(uname -m)" TARGET="$ARCH-linux-musl" -CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.8.0-dev.2168+2d1196773" +CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.8.0-dev.2703+c12704a33" PREFIX="$HOME/$CACHE_BASENAME" MCPU="baseline" JOBS="-j$(nproc)" diff --git a/ci/azure/macos_arm64_script b/ci/azure/macos_arm64_script index 612edf677fe7..2caf1c94dbbe 100755 --- a/ci/azure/macos_arm64_script +++ b/ci/azure/macos_arm64_script @@ -10,13 +10,13 @@ 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.2168+2d1196773" +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="cyclone" -CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.8.0-dev.2168+2d1196773" +MCPU="apple_a14" +CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.8.0-dev.2703+c12704a33" PREFIX="$HOME/$CACHE_BASENAME" JOBS="-j2" diff --git a/ci/azure/macos_script b/ci/azure/macos_script index 238029e37e57..4afaedfa128e 100755 --- a/ci/azure/macos_script +++ b/ci/azure/macos_script @@ -9,7 +9,7 @@ ZIGDIR="$(pwd)" ARCH="x86_64" TARGET="$ARCH-macos-gnu" MCPU="baseline" -CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.8.0-dev.2168+2d1196773" +CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.8.0-dev.2703+c12704a33" PREFIX="$HOME/$CACHE_BASENAME" JOBS="-j2" diff --git a/ci/azure/windows_msvc_install b/ci/azure/windows_msvc_install index bdc4bd0bf1e6..88e6fdaf711a 100644 --- a/ci/azure/windows_msvc_install +++ b/ci/azure/windows_msvc_install @@ -7,5 +7,5 @@ pacman -Suy --needed --noconfirm pacman -S --needed --noconfirm wget p7zip python3-pip tar xz pip install s3cmd -wget -nv "https://ziglang.org/deps/llvm%2bclang%2blld-12.0.0-x86_64-windows-msvc-release-mt.tar.xz" -tar xf llvm+clang+lld-12.0.0-x86_64-windows-msvc-release-mt.tar.xz +wget -nv "https://ziglang.org/deps/llvm%2bclang%2blld-12.0.1-rc1-x86_64-windows-msvc-release-mt.tar.xz" +tar xf llvm+clang+lld-12.0.1-rc1-x86_64-windows-msvc-release-mt.tar.xz diff --git a/ci/azure/windows_msvc_script.bat b/ci/azure/windows_msvc_script.bat index fc17c80ea2b4..df1b63b485c9 100644 --- a/ci/azure/windows_msvc_script.bat +++ b/ci/azure/windows_msvc_script.bat @@ -11,7 +11,7 @@ SET "MSYSTEM=%PREVMSYSTEM%" SET "ZIGBUILDDIR=%SRCROOT%\build" SET "ZIGINSTALLDIR=%ZIGBUILDDIR%\dist" -SET "ZIGPREFIXPATH=%SRCROOT%\llvm+clang+lld-12.0.0-x86_64-windows-msvc-release-mt" +SET "ZIGPREFIXPATH=%SRCROOT%\llvm+clang+lld-12.0.1-rc1-x86_64-windows-msvc-release-mt" call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64 diff --git a/ci/drone/drone.yml b/ci/drone/drone.yml index 3bd5a5cb8e59..bfdc5a377491 100644 --- a/ci/drone/drone.yml +++ b/ci/drone/drone.yml @@ -7,28 +7,28 @@ platform: steps: - name: build - image: ziglang/static-base:llvm12-aarch64-2 + image: ziglang/static-base:llvm12-aarch64-5 commands: - ./ci/drone/linux_script_build - name: test-1 depends_on: - build - image: ziglang/static-base:llvm12-aarch64-2 + image: ziglang/static-base:llvm12-aarch64-5 commands: - ./ci/drone/linux_script_test 1 - name: test-2 depends_on: - build - image: ziglang/static-base:llvm12-aarch64-2 + image: ziglang/static-base:llvm12-aarch64-5 commands: - ./ci/drone/linux_script_test 2 - name: test-3 depends_on: - build - image: ziglang/static-base:llvm12-aarch64-2 + image: ziglang/static-base:llvm12-aarch64-5 commands: - ./ci/drone/linux_script_test 3 @@ -38,7 +38,7 @@ steps: - test-1 - test-2 - test-3 - image: ziglang/static-base:llvm12-aarch64-2 + image: ziglang/static-base:llvm12-aarch64-5 environment: SRHT_OAUTH_TOKEN: from_secret: SRHT_OAUTH_TOKEN diff --git a/ci/drone/linux_script_build b/ci/drone/linux_script_build index 3aedafbb89c8..179988f6e305 100755 --- a/ci/drone/linux_script_build +++ b/ci/drone/linux_script_build @@ -2,8 +2,30 @@ . ./ci/drone/linux_script_base -apk update -apk add samurai +PREFIX="/deps/local" +ZIG="$PREFIX/bin/zig" +TARGET="$TRIPLEARCH-linux-musl" +MCPU="baseline" + +export CC="$ZIG cc -target $TARGET -mcpu=$MCPU" +export CXX="$ZIG c++ -target $TARGET -mcpu=$MCPU" + +# The `CMAKE_AR` parameter will consider any spaces to +# be part of the executable path rather than CLI args, so we have +# to create wrapper scripts for `zig ar` and zig ranlib`. + +cat <<'ENDFILE' >$PREFIX/bin/ar +#!/bin/sh +/deps/local/bin/zig ar $@ +ENDFILE + +cat <<'ENDFILE' >$PREFIX/bin/ranlib +#!/bin/sh +/deps/local/bin/zig ranlib $@ +ENDFILE + +chmod +x $PREFIX/bin/ar +chmod +x $PREFIX/bin/ranlib # Make the `zig version` number consistent. # This will affect the cmake command below. @@ -13,6 +35,25 @@ git fetch --tags mkdir build cd build -cmake .. -DCMAKE_BUILD_TYPE=Release "-DCMAKE_INSTALL_PREFIX=$DISTDIR" -DZIG_STATIC=ON -DCMAKE_PREFIX_PATH=/deps/local -GNinja +cmake .. \ + -DCMAKE_INSTALL_PREFIX="$DISTDIR" \ + -DCMAKE_PREFIX_PATH="$PREFIX" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_AR="$PREFIX/bin/ar" \ + -DCMAKE_RANLIB="$PREFIX/bin/ranlib" \ + -DZIG_TARGET_TRIPLE="$TARGET" \ + -DZIG_TARGET_MCPU="$MCPU" \ + -DZIG_STATIC=ON \ + -GNinja + +# Now CMake will use Zig as the C/C++ compiler. We reset the environment variables +# so that installation and testing do not get affected by them. +unset CC +unset CXX +samu install +# Here we rebuild Zig but this time using the Zig binary we just now produced to +# build zig1.o rather than relying on the one built with stage0. See +# https://github.com/ziglang/zig/issues/6830 for more details. +cmake .. -DZIG_EXECUTABLE="$DISTDIR/bin/zig" samu install diff --git a/ci/drone/linux_script_finalize b/ci/drone/linux_script_finalize index da754a6b545e..944fbed937ad 100755 --- a/ci/drone/linux_script_finalize +++ b/ci/drone/linux_script_finalize @@ -7,7 +7,7 @@ if [ -n "$DRONE_PULL_REQUEST" ]; then fi apk update -apk add py3-pip xz perl-utils jq curl samurai +apk add py3-pip perl-utils jq curl pip3 install s3cmd cd build diff --git a/ci/srht/freebsd_script b/ci/srht/freebsd_script index 4999ad7634db..44b033054240 100755 --- a/ci/srht/freebsd_script +++ b/ci/srht/freebsd_script @@ -7,7 +7,7 @@ sudo pkg update -fq sudo pkg install -y cmake py38-s3cmd wget curl jq samurai ZIGDIR="$(pwd)" -CACHE_BASENAME="zig+llvm+lld+clang-x86_64-freebsd-gnu-0.8.0-dev.1939+5a3ea9bec" +CACHE_BASENAME="zig+llvm+lld+clang-x86_64-freebsd-gnu-0.8.0-dev.2703+c12704a33" PREFIX="$HOME/$CACHE_BASENAME" cd $HOME