From 7e1a750d45d9199b9a6ee6835bcb78f19cda059c Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Tue, 21 Jul 2026 13:52:46 +0100 Subject: [PATCH 1/2] guix, refactor: Use `target` variable instead of hardcoded value --- contrib/guix/manifest_build.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/guix/manifest_build.scm b/contrib/guix/manifest_build.scm index b9f0dd9edcf..919d2a3413f 100644 --- a/contrib/guix/manifest_build.scm +++ b/contrib/guix/manifest_build.scm @@ -273,7 +273,7 @@ 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 (make-mingw-pthreads-cross-toolchain target))) ((string-contains target "-linux-") (list (list gcc-toolchain-14 "static") (make-bitcoin-cross-toolchain target))) From 8a90c7cd9739ad30e014ee8531647280fea6a037 Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Wed, 22 Jul 2026 20:20:10 +0100 Subject: [PATCH 2/2] guix: Build for macOS using LLVM toolchain only --- contrib/guix/libexec/build_macos.sh | 28 +++++++++++++++++------ contrib/guix/libexec/build_macos_gui.sh | 30 ++++++++++++++++++------- contrib/guix/manifest_build.scm | 11 ++++----- depends/packages/native_qt.mk | 1 + depends/packages/qt.mk | 1 + 5 files changed, 51 insertions(+), 20 deletions(-) diff --git a/contrib/guix/libexec/build_macos.sh b/contrib/guix/libexec/build_macos.sh index 213ae9a6c7f..f8e42e1bad8 100755 --- a/contrib/guix/libexec/build_macos.sh +++ b/contrib/guix/libexec/build_macos.sh @@ -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" diff --git a/contrib/guix/libexec/build_macos_gui.sh b/contrib/guix/libexec/build_macos_gui.sh index 97f1932d85e..47ffe6c821d 100755 --- a/contrib/guix/libexec/build_macos_gui.sh +++ b/contrib/guix/libexec/build_macos_gui.sh @@ -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" ( diff --git a/contrib/guix/manifest_build.scm b/contrib/guix/manifest_build.scm index 919d2a3413f..3d9082438d0 100644 --- a/contrib/guix/manifest_build.scm +++ b/contrib/guix/manifest_build.scm @@ -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 '()))))) diff --git a/depends/packages/native_qt.mk b/depends/packages/native_qt.mk index 2bf088c10ac..c975c1e9aba 100644 --- a/depends/packages/native_qt.mk +++ b/depends/packages/native_qt.mk @@ -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 diff --git a/depends/packages/qt.mk b/depends/packages/qt.mk index 500a2729faa..3e4c5fcbd54 100644 --- a/depends/packages/qt.mk +++ b/depends/packages/qt.mk @@ -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)