mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-07-25 07:38:46 +02:00
Merge bitcoin/bitcoin#32764: guix: Build for macOS using LLVM toolchain only
8a90c7cd97guix: Build for macOS using LLVM toolchain only (Hennadii Stepanov)7e1a750d45guix, refactor: Use `target` variable instead of hardcoded value (Hennadii Stepanov) Pull request description: This PR makes macOS builds LLVM-only (non-GCC) by switching the build compiler in depends to `clang` + `libc++`. See: https://github.com/bitcoin/bitcoin/issues/30206. ACKs for top commit: fanquake: ACK8a90c7cd97Tree-SHA512: 02bfa784f89db980de2d2bb759200a0e8c0b10f48ac7e14e2bcdba75416aef30afa68d36e98c4652e18d282f023d1e94a351ff65b4a2731bdcac7c8a8c720623
This commit is contained in:
@@ -8,13 +8,21 @@ set -o errexit -o pipefail
|
||||
# shellcheck source=setup.sh
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/setup.sh"
|
||||
|
||||
# Set environment variables to point the NATIVE toolchain to the right
|
||||
# includes/libs
|
||||
NATIVE_GCC="$(store_path gcc-toolchain)"
|
||||
|
||||
# Set native toolchain
|
||||
build_CC="${NATIVE_GCC}/bin/gcc -isystem ${NATIVE_GCC}/include"
|
||||
build_CXX="${NATIVE_GCC}/bin/g++ -isystem ${NATIVE_GCC}/include/c++ -isystem ${NATIVE_GCC}/include"
|
||||
# Set toolchain
|
||||
CLANG_TOOLCHAIN="$(store_path clang-toolchain)"
|
||||
LIBCXX="$(store_path libcxx)"
|
||||
build_CC="${CLANG_TOOLCHAIN}/bin/clang \
|
||||
-isystem ${CLANG_TOOLCHAIN}/include"
|
||||
build_CXX="${CLANG_TOOLCHAIN}/bin/clang++ \
|
||||
-stdlib=libc++ \
|
||||
-isystem ${LIBCXX}/include/c++/v1 \
|
||||
-isystem ${CLANG_TOOLCHAIN}/include"
|
||||
build_LDFLAGS="-fuse-ld=lld -rtlib=compiler-rt -unwindlib=libunwind -L${LIBCXX}/lib -Wl,-rpath,${LIBCXX}/lib"
|
||||
build_AR="${CLANG_TOOLCHAIN}/bin/llvm-ar"
|
||||
build_RANLIB="${CLANG_TOOLCHAIN}/bin/llvm-ranlib"
|
||||
build_OBJDUMP="${CLANG_TOOLCHAIN}/bin/llvm-objdump"
|
||||
build_NM="${CLANG_TOOLCHAIN}/bin/llvm-nm"
|
||||
build_STRIP="${CLANG_TOOLCHAIN}/bin/llvm-strip"
|
||||
|
||||
# Build the depends tree
|
||||
make -C depends --jobs="$JOBS" HOST="$HOST" \
|
||||
@@ -24,6 +32,12 @@ make -C depends --jobs="$JOBS" HOST="$HOST" \
|
||||
${SDK_PATH+SDK_PATH="$SDK_PATH"} \
|
||||
${build_CC+build_CC="$build_CC"} \
|
||||
${build_CXX+build_CXX="$build_CXX"} \
|
||||
${build_LDFLAGS+build_LDFLAGS="$build_LDFLAGS"} \
|
||||
${build_AR+build_AR="$build_AR"} \
|
||||
${build_RANLIB+build_RANLIB="$build_RANLIB"} \
|
||||
${build_OBJDUMP+build_OBJDUMP="$build_OBJDUMP"} \
|
||||
${build_NM+build_NM="$build_NM"} \
|
||||
${build_STRIP+build_STRIP="$build_STRIP"} \
|
||||
NO_QT=1
|
||||
|
||||
mkdir -p "$DISTSRC"
|
||||
|
||||
@@ -8,13 +8,21 @@ set -o errexit -o pipefail
|
||||
# shellcheck source=setup.sh
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/setup.sh"
|
||||
|
||||
# Set environment variables to point the NATIVE toolchain to the right
|
||||
# includes/libs
|
||||
NATIVE_GCC="$(store_path gcc-toolchain)"
|
||||
|
||||
# Set native toolchain
|
||||
build_CC="${NATIVE_GCC}/bin/gcc -isystem ${NATIVE_GCC}/include"
|
||||
build_CXX="${NATIVE_GCC}/bin/g++ -isystem ${NATIVE_GCC}/include/c++ -isystem ${NATIVE_GCC}/include"
|
||||
# Set toolchain
|
||||
CLANG_TOOLCHAIN="$(store_path clang-toolchain)"
|
||||
LIBCXX="$(store_path libcxx)"
|
||||
build_CC="${CLANG_TOOLCHAIN}/bin/clang \
|
||||
-isystem ${CLANG_TOOLCHAIN}/include"
|
||||
build_CXX="${CLANG_TOOLCHAIN}/bin/clang++ \
|
||||
-stdlib=libc++ \
|
||||
-isystem ${LIBCXX}/include/c++/v1 \
|
||||
-isystem ${CLANG_TOOLCHAIN}/include"
|
||||
build_LDFLAGS="-fuse-ld=lld -rtlib=compiler-rt -unwindlib=libunwind -L${LIBCXX}/lib -Wl,-rpath,${LIBCXX}/lib"
|
||||
build_AR="${CLANG_TOOLCHAIN}/bin/llvm-ar"
|
||||
build_RANLIB="${CLANG_TOOLCHAIN}/bin/llvm-ranlib"
|
||||
build_OBJDUMP="${CLANG_TOOLCHAIN}/bin/llvm-objdump"
|
||||
build_NM="${CLANG_TOOLCHAIN}/bin/llvm-nm"
|
||||
build_STRIP="${CLANG_TOOLCHAIN}/bin/llvm-strip"
|
||||
|
||||
# Build the depends tree
|
||||
make -C depends --jobs="$JOBS" HOST="$HOST" \
|
||||
@@ -23,7 +31,13 @@ make -C depends --jobs="$JOBS" HOST="$HOST" \
|
||||
${BASE_CACHE+BASE_CACHE="$BASE_CACHE"} \
|
||||
${SDK_PATH+SDK_PATH="$SDK_PATH"} \
|
||||
${build_CC+build_CC="$build_CC"} \
|
||||
${build_CXX+build_CXX="$build_CXX"}
|
||||
${build_CXX+build_CXX="$build_CXX"} \
|
||||
${build_LDFLAGS+build_LDFLAGS="$build_LDFLAGS"} \
|
||||
${build_AR+build_AR="$build_AR"} \
|
||||
${build_RANLIB+build_RANLIB="$build_RANLIB"} \
|
||||
${build_OBJDUMP+build_OBJDUMP="$build_OBJDUMP"} \
|
||||
${build_NM+build_NM="$build_NM"} \
|
||||
${build_STRIP+build_STRIP="$build_STRIP"}
|
||||
|
||||
mkdir -p "$DISTSRC"
|
||||
(
|
||||
|
||||
@@ -264,7 +264,6 @@ chain for " target " development."))
|
||||
tar
|
||||
gzip
|
||||
;; Build tools
|
||||
gcc-toolchain-14
|
||||
cmake-minimal
|
||||
gnu-make
|
||||
;; Scripting
|
||||
@@ -273,12 +272,14 @@ chain for " target " development."))
|
||||
git-minimal)
|
||||
(let ((target (getenv "HOST")))
|
||||
(cond ((string-suffix? "-mingw32" target)
|
||||
(list (make-mingw-pthreads-cross-toolchain "x86_64-w64-mingw32")))
|
||||
(list gcc-toolchain-14
|
||||
(make-mingw-pthreads-cross-toolchain target)))
|
||||
((string-contains target "-linux-")
|
||||
(list (list gcc-toolchain-14 "static")
|
||||
(list gcc-toolchain-14
|
||||
(list gcc-toolchain-14 "static")
|
||||
(make-bitcoin-cross-toolchain target)))
|
||||
((string-contains target "darwin")
|
||||
(list clang-toolchain-19
|
||||
lld-19
|
||||
(make-lld-wrapper lld-19 #:lld-as-ld? #t)))
|
||||
libcxx ;; 19.1.7
|
||||
lld-19))
|
||||
(else '())))))
|
||||
|
||||
@@ -94,6 +94,7 @@ $(package)_config_env += OBJCXX="$$(build_CXX)"
|
||||
endif
|
||||
|
||||
$(package)_cmake_opts := -DCMAKE_EXE_LINKER_FLAGS="$$(build_LDFLAGS)"
|
||||
$(package)_cmake_opts += -DCMAKE_AR="$$(build_AR)"
|
||||
ifneq ($(V),)
|
||||
$(package)_cmake_opts += --log-level=STATUS
|
||||
endif
|
||||
|
||||
@@ -201,6 +201,7 @@ endif
|
||||
$(package)_cmake_opts += -DCMAKE_EXE_LINKER_FLAGS="$$($$($(package)_type)_LDFLAGS)"
|
||||
$(package)_cmake_opts += -DCMAKE_EXE_LINKER_FLAGS_RELEASE="$$($$($(package)_type)_release_LDFLAGS)"
|
||||
$(package)_cmake_opts += -DCMAKE_EXE_LINKER_FLAGS_DEBUG="$$($$($(package)_type)_debug_LDFLAGS)"
|
||||
$(package)_cmake_opts += -DCMAKE_AR="$$($(package)_ar)"
|
||||
|
||||
ifneq ($(host),$(build))
|
||||
$(package)_cmake_opts += -DCMAKE_SYSTEM_NAME=$($(host_os)_cmake_system_name)
|
||||
|
||||
Reference in New Issue
Block a user