authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-06-03 02:13:37-04:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2021-06-03 02:13:37-04:00
log87dae0ce98fde1957a9290c22866b3101ce419d8
tree882bd176cfa914046154347b68e0adedf6af8bbf
parentd1f60a63bdd7bd838c210a888dfe23c9ea9f2669
parent05cd8936c885d2b538091eb814724472c73ec8b8
signaturebadge-question-mark Signed by PGP key 4AEE18F83AFDEB23

Merge pull request #8932 from ziglang/llvm-needs-zlib

cmake: LLVM needs to link against zlib

10 files changed, 66 insertions(+), 21 deletions(-)

CMakeLists.txt+7-3
...@@ -67,6 +67,7 @@ message("Configuring zig version ${ZIG_VERSION}")...@@ -67,6 +67,7 @@ message("Configuring zig version ${ZIG_VERSION}")
6767
68set(ZIG_STATIC off CACHE BOOL "Attempt to build a static zig executable (not compatible with glibc)")68set(ZIG_STATIC off CACHE BOOL "Attempt to build a static zig executable (not compatible with glibc)")
69set(ZIG_STATIC_LLVM off CACHE BOOL "Prefer linking against static LLVM libraries")69set(ZIG_STATIC_LLVM off CACHE BOOL "Prefer linking against static LLVM libraries")
70set(ZIG_STATIC_ZLIB off CACHE BOOL "Prefer linking against static zlib")
70set(ZIG_PREFER_CLANG_CPP_DYLIB off CACHE BOOL "Try to link against -lclang-cpp")71set(ZIG_PREFER_CLANG_CPP_DYLIB off CACHE BOOL "Try to link against -lclang-cpp")
71set(ZIG_USE_CCACHE off CACHE BOOL "Use ccache if available")72set(ZIG_USE_CCACHE off CACHE BOOL "Use ccache if available")
7273
...@@ -75,7 +76,8 @@ if(CCACHE_PROGRAM AND ZIG_USE_CCACHE)...@@ -75,7 +76,8 @@ if(CCACHE_PROGRAM AND ZIG_USE_CCACHE)
75endif()76endif()
7677
77if(ZIG_STATIC)78if(ZIG_STATIC)
78 set(ZIG_STATIC_LLVM "on")79 set(ZIG_STATIC_LLVM ON)
80 set(ZIG_STATIC_ZLIB ON)
79endif()81endif()
8082
81string(REGEX REPLACE "\\\\" "\\\\\\\\" ZIG_LIBC_LIB_DIR_ESCAPED "${ZIG_LIBC_LIB_DIR}")83string(REGEX REPLACE "\\\\" "\\\\\\\\" ZIG_LIBC_LIB_DIR_ESCAPED "${ZIG_LIBC_LIB_DIR}")
...@@ -101,11 +103,13 @@ find_package(llvm)...@@ -101,11 +103,13 @@ find_package(llvm)
101find_package(clang)103find_package(clang)
102find_package(lld)104find_package(lld)
103105
104if(APPLE AND ZIG_STATIC)106if(ZIG_STATIC_ZLIB)
105 list(REMOVE_ITEM LLVM_LIBRARIES "-lz")107 list(REMOVE_ITEM LLVM_LIBRARIES "-lz")
106 find_library(ZLIB NAMES libz.a z zlib libz)108 find_library(ZLIB NAMES libz.a libzlibstatic.a z zlib libz)
107 list(APPEND LLVM_LIBRARIES "${ZLIB}")109 list(APPEND LLVM_LIBRARIES "${ZLIB}")
110endif()
108111
112if(APPLE AND ZIG_STATIC)
109 list(REMOVE_ITEM LLVM_LIBRARIES "-lcurses")113 list(REMOVE_ITEM LLVM_LIBRARIES "-lcurses")
110 find_library(CURSES NAMES libcurses.a curses libcurses libncurses.a ncurses libncurses)114 find_library(CURSES NAMES libcurses.a curses libcurses libncurses.a ncurses libncurses)
111 list(APPEND LLVM_LIBRARIES "${CURSES}")115 list(APPEND LLVM_LIBRARIES "${CURSES}")
ci/azure/linux_script+1-1
...@@ -9,7 +9,7 @@ sudo apt-get install -y cmake s3cmd tidy...@@ -9,7 +9,7 @@ sudo apt-get install -y cmake s3cmd tidy
9ZIGDIR="$(pwd)"9ZIGDIR="$(pwd)"
10ARCH="$(uname -m)"10ARCH="$(uname -m)"
11TARGET="$ARCH-linux-musl"11TARGET="$ARCH-linux-musl"
12CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.8.0-dev.2168+2d1196773"12CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.8.0-dev.2703+c12704a33"
13PREFIX="$HOME/$CACHE_BASENAME"13PREFIX="$HOME/$CACHE_BASENAME"
14MCPU="baseline"14MCPU="baseline"
15JOBS="-j$(nproc)"15JOBS="-j$(nproc)"
ci/azure/macos_arm64_script+3-3
...@@ -10,13 +10,13 @@ ZIGDIR="$(pwd)"...@@ -10,13 +10,13 @@ ZIGDIR="$(pwd)"
10HOST_ARCH="x86_64"10HOST_ARCH="x86_64"
11HOST_TARGET="$HOST_ARCH-macos-gnu"11HOST_TARGET="$HOST_ARCH-macos-gnu"
12HOST_MCPU="baseline"12HOST_MCPU="baseline"
13HOST_CACHE_BASENAME="zig+llvm+lld+clang-$HOST_TARGET-0.8.0-dev.2168+2d1196773"13HOST_CACHE_BASENAME="zig+llvm+lld+clang-$HOST_TARGET-0.8.0-dev.2703+c12704a33"
14HOST_PREFIX="$HOME/$HOST_CACHE_BASENAME"14HOST_PREFIX="$HOME/$HOST_CACHE_BASENAME"
1515
16ARCH="aarch64"16ARCH="aarch64"
17TARGET="$ARCH-macos-gnu"17TARGET="$ARCH-macos-gnu"
18MCPU="cyclone"18MCPU="apple_a14"
19CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.8.0-dev.2168+2d1196773"19CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.8.0-dev.2703+c12704a33"
20PREFIX="$HOME/$CACHE_BASENAME"20PREFIX="$HOME/$CACHE_BASENAME"
2121
22JOBS="-j2"22JOBS="-j2"
ci/azure/macos_script+1-1
...@@ -9,7 +9,7 @@ ZIGDIR="$(pwd)"...@@ -9,7 +9,7 @@ ZIGDIR="$(pwd)"
9ARCH="x86_64"9ARCH="x86_64"
10TARGET="$ARCH-macos-gnu"10TARGET="$ARCH-macos-gnu"
11MCPU="baseline"11MCPU="baseline"
12CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.8.0-dev.2168+2d1196773"12CACHE_BASENAME="zig+llvm+lld+clang-$TARGET-0.8.0-dev.2703+c12704a33"
13PREFIX="$HOME/$CACHE_BASENAME"13PREFIX="$HOME/$CACHE_BASENAME"
14JOBS="-j2"14JOBS="-j2"
1515
ci/azure/windows_msvc_install+2-2
...@@ -7,5 +7,5 @@ pacman -Suy --needed --noconfirm...@@ -7,5 +7,5 @@ pacman -Suy --needed --noconfirm
7pacman -S --needed --noconfirm wget p7zip python3-pip tar xz7pacman -S --needed --noconfirm wget p7zip python3-pip tar xz
88
9pip install s3cmd9pip install s3cmd
10wget -nv "https://ziglang.org/deps/llvm%2bclang%2blld-12.0.0-x86_64-windows-msvc-release-mt.tar.xz"10wget -nv "https://ziglang.org/deps/llvm%2bclang%2blld-12.0.1-rc1-x86_64-windows-msvc-release-mt.tar.xz"
11tar xf llvm+clang+lld-12.0.0-x86_64-windows-msvc-release-mt.tar.xz11tar xf llvm+clang+lld-12.0.1-rc1-x86_64-windows-msvc-release-mt.tar.xz
ci/azure/windows_msvc_script.bat+1-1
...@@ -11,7 +11,7 @@ SET "MSYSTEM=%PREVMSYSTEM%"...@@ -11,7 +11,7 @@ SET "MSYSTEM=%PREVMSYSTEM%"
1111
12SET "ZIGBUILDDIR=%SRCROOT%\build"12SET "ZIGBUILDDIR=%SRCROOT%\build"
13SET "ZIGINSTALLDIR=%ZIGBUILDDIR%\dist"13SET "ZIGINSTALLDIR=%ZIGBUILDDIR%\dist"
14SET "ZIGPREFIXPATH=%SRCROOT%\llvm+clang+lld-12.0.0-x86_64-windows-msvc-release-mt"14SET "ZIGPREFIXPATH=%SRCROOT%\llvm+clang+lld-12.0.1-rc1-x86_64-windows-msvc-release-mt"
1515
16call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x6416call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
1717
ci/drone/drone.yml+5-5
...@@ -7,28 +7,28 @@ platform:...@@ -7,28 +7,28 @@ platform:
77
8steps:8steps:
9- name: build9- name: build
10 image: ziglang/static-base:llvm12-aarch64-210 image: ziglang/static-base:llvm12-aarch64-5
11 commands:11 commands:
12 - ./ci/drone/linux_script_build12 - ./ci/drone/linux_script_build
1313
14- name: test-114- name: test-1
15 depends_on:15 depends_on:
16 - build16 - build
17 image: ziglang/static-base:llvm12-aarch64-217 image: ziglang/static-base:llvm12-aarch64-5
18 commands:18 commands:
19 - ./ci/drone/linux_script_test 119 - ./ci/drone/linux_script_test 1
2020
21- name: test-221- name: test-2
22 depends_on:22 depends_on:
23 - build23 - build
24 image: ziglang/static-base:llvm12-aarch64-224 image: ziglang/static-base:llvm12-aarch64-5
25 commands:25 commands:
26 - ./ci/drone/linux_script_test 226 - ./ci/drone/linux_script_test 2
2727
28- name: test-328- name: test-3
29 depends_on:29 depends_on:
30 - build30 - build
31 image: ziglang/static-base:llvm12-aarch64-231 image: ziglang/static-base:llvm12-aarch64-5
32 commands:32 commands:
33 - ./ci/drone/linux_script_test 333 - ./ci/drone/linux_script_test 3
3434
...@@ -38,7 +38,7 @@ steps:...@@ -38,7 +38,7 @@ steps:
38 - test-138 - test-1
39 - test-239 - test-2
40 - test-340 - test-3
41 image: ziglang/static-base:llvm12-aarch64-241 image: ziglang/static-base:llvm12-aarch64-5
42 environment:42 environment:
43 SRHT_OAUTH_TOKEN:43 SRHT_OAUTH_TOKEN:
44 from_secret: SRHT_OAUTH_TOKEN44 from_secret: SRHT_OAUTH_TOKEN
ci/drone/linux_script_build+44-3
...@@ -2,8 +2,30 @@...@@ -2,8 +2,30 @@
22
3. ./ci/drone/linux_script_base3. ./ci/drone/linux_script_base
44
5apk update5PREFIX="/deps/local"
6apk add samurai6ZIG="$PREFIX/bin/zig"
7TARGET="$TRIPLEARCH-linux-musl"
8MCPU="baseline"
9
10export CC="$ZIG cc -target $TARGET -mcpu=$MCPU"
11export CXX="$ZIG c++ -target $TARGET -mcpu=$MCPU"
12
13# The `CMAKE_AR` parameter will consider any spaces to
14# be part of the executable path rather than CLI args, so we have
15# to create wrapper scripts for `zig ar` and zig ranlib`.
16
17cat <<'ENDFILE' >$PREFIX/bin/ar
18#!/bin/sh
19/deps/local/bin/zig ar $@
20ENDFILE
21
22cat <<'ENDFILE' >$PREFIX/bin/ranlib
23#!/bin/sh
24/deps/local/bin/zig ranlib $@
25ENDFILE
26
27chmod +x $PREFIX/bin/ar
28chmod +x $PREFIX/bin/ranlib
729
8# Make the `zig version` number consistent.30# Make the `zig version` number consistent.
9# This will affect the cmake command below.31# This will affect the cmake command below.
...@@ -13,6 +35,25 @@ git fetch --tags...@@ -13,6 +35,25 @@ git fetch --tags
1335
14mkdir build36mkdir build
15cd build37cd build
16cmake .. -DCMAKE_BUILD_TYPE=Release "-DCMAKE_INSTALL_PREFIX=$DISTDIR" -DZIG_STATIC=ON -DCMAKE_PREFIX_PATH=/deps/local -GNinja38cmake .. \
39 -DCMAKE_INSTALL_PREFIX="$DISTDIR" \
40 -DCMAKE_PREFIX_PATH="$PREFIX" \
41 -DCMAKE_BUILD_TYPE=Release \
42 -DCMAKE_AR="$PREFIX/bin/ar" \
43 -DCMAKE_RANLIB="$PREFIX/bin/ranlib" \
44 -DZIG_TARGET_TRIPLE="$TARGET" \
45 -DZIG_TARGET_MCPU="$MCPU" \
46 -DZIG_STATIC=ON \
47 -GNinja
48
49# Now CMake will use Zig as the C/C++ compiler. We reset the environment variables
50# so that installation and testing do not get affected by them.
51unset CC
52unset CXX
53samu install
1754
55# Here we rebuild Zig but this time using the Zig binary we just now produced to
56# build zig1.o rather than relying on the one built with stage0. See
57# https://github.com/ziglang/zig/issues/6830 for more details.
58cmake .. -DZIG_EXECUTABLE="$DISTDIR/bin/zig"
18samu install59samu install
ci/drone/linux_script_finalize+1-1
...@@ -7,7 +7,7 @@ if [ -n "$DRONE_PULL_REQUEST" ]; then...@@ -7,7 +7,7 @@ if [ -n "$DRONE_PULL_REQUEST" ]; then
7fi7fi
88
9apk update9apk update
10apk add py3-pip xz perl-utils jq curl samurai10apk add py3-pip perl-utils jq curl
11pip3 install s3cmd11pip3 install s3cmd
1212
13cd build13cd build
ci/srht/freebsd_script+1-1
...@@ -7,7 +7,7 @@ sudo pkg update -fq...@@ -7,7 +7,7 @@ sudo pkg update -fq
7sudo pkg install -y cmake py38-s3cmd wget curl jq samurai7sudo pkg install -y cmake py38-s3cmd wget curl jq samurai
88
9ZIGDIR="$(pwd)"9ZIGDIR="$(pwd)"
10CACHE_BASENAME="zig+llvm+lld+clang-x86_64-freebsd-gnu-0.8.0-dev.1939+5a3ea9bec"10CACHE_BASENAME="zig+llvm+lld+clang-x86_64-freebsd-gnu-0.8.0-dev.2703+c12704a33"
11PREFIX="$HOME/$CACHE_BASENAME"11PREFIX="$HOME/$CACHE_BASENAME"
1212
13cd $HOME13cd $HOME