guix: Build for macOS using LLVM toolchain only

This commit is contained in:
Hennadii Stepanov
2026-07-22 20:20:10 +01:00
parent 7e1a750d45
commit 8a90c7cd97
5 changed files with 51 additions and 20 deletions

View File

@@ -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"

View File

@@ -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"
(

View File

@@ -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 target)))
(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 '())))))

View File

@@ -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

View File

@@ -198,6 +198,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)