aboutsummaryrefslogtreecommitdiff
path: root/depends
diff options
context:
space:
mode:
Diffstat (limited to 'depends')
-rw-r--r--depends/Makefile23
-rw-r--r--depends/README.md6
-rw-r--r--depends/builders/darwin.mk8
-rw-r--r--depends/funcs.mk78
-rw-r--r--depends/packages/libxcb.mk2
-rw-r--r--depends/packages/qt.mk8
-rw-r--r--depends/patches/qt/rcc_hardcode_timestamp.patch24
7 files changed, 85 insertions, 64 deletions
diff --git a/depends/Makefile b/depends/Makefile
index 3dc99cc121..67adc6cc16 100644
--- a/depends/Makefile
+++ b/depends/Makefile
@@ -102,10 +102,6 @@ host_prefix=$($(host_arch)_$(host_os)_prefix)
build_prefix=$(host_prefix)/native
build_host=$(build)
-AT_$(V):=
-AT_:=@
-AT:=$(AT_$(V))
-
all: install
include hosts/$(host_os).mk
@@ -178,12 +174,12 @@ include funcs.mk
final_build_id_long+=$(shell $(build_SHA256SUM) config.site.in)
final_build_id+=$(shell echo -n "$(final_build_id_long)" | $(build_SHA256SUM) | cut -c-$(HASH_LENGTH))
$(host_prefix)/.stamp_$(final_build_id): $(native_packages) $(packages)
- $(AT)rm -rf $(@D)
- $(AT)mkdir -p $(@D)
- $(AT)echo copying packages: $^
- $(AT)echo to: $(@D)
- $(AT)cd $(@D); $(foreach package,$^, tar xf $($(package)_cached); )
- $(AT)touch $@
+ rm -rf $(@D)
+ mkdir -p $(@D)
+ echo copying packages: $^
+ echo to: $(@D)
+ cd $(@D); $(foreach package,$^, tar xf $($(package)_cached); )
+ touch $@
# $PATH is not preserved between ./configure and make by convention. Its
# modification and overriding at ./configure time is (as I understand it)
@@ -210,8 +206,8 @@ $(host_prefix)/.stamp_$(final_build_id): $(native_packages) $(packages)
# we expect them to be available in $PATH at all times, more specificity does
# not hurt.
$(host_prefix)/share/config.site : config.site.in $(host_prefix)/.stamp_$(final_build_id)
- $(AT)@mkdir -p $(@D)
- $(AT)sed -e 's|@HOST@|$(host)|' \
+ @mkdir -p $(@D)
+ sed -e 's|@HOST@|$(host)|' \
-e 's|@CC@|$(host_CC)|' \
-e 's|@CXX@|$(host_CXX)|' \
-e 's|@AR@|$(host_AR)|' \
@@ -236,7 +232,7 @@ $(host_prefix)/share/config.site : config.site.in $(host_prefix)/.stamp_$(final_
-e 's|@multiprocess@|$(MULTIPROCESS)|' \
-e 's|@debug@|$(DEBUG)|' \
$< > $@
- $(AT)touch $@
+ touch $@
define check_or_remove_cached
@@ -285,3 +281,4 @@ $(foreach package,$(all_packages),$(eval $(call ext_add_stages,$(package))))
.PHONY: install cached clean clean-all download-one download-osx download-linux download-win download check-packages check-sources
.PHONY: FORCE
+$(V).SILENT:
diff --git a/depends/README.md b/depends/README.md
index d7fba754c4..9f0b60adf8 100644
--- a/depends/README.md
+++ b/depends/README.md
@@ -38,7 +38,6 @@ Common `host-platform-triplet`s for cross compilation are:
- `s390x-linux-gnu` for Linux S390X
- `armv7a-linux-android` for Android ARM 32 bit
- `aarch64-linux-android` for Android ARM 64 bit
-- `i686-linux-android` for Android x86 32 bit
- `x86_64-linux-android` for Android x86 64 bit
The paths are automatically configured and no other options are needed unless targeting [Android](../doc/build-android.md).
@@ -47,7 +46,7 @@ The paths are automatically configured and no other options are needed unless ta
#### For macOS cross compilation
- sudo apt-get install curl librsvg2-bin libtiff-tools bsdmainutils cmake imagemagick libz-dev python3-setuptools libtinfo5 xorriso
+ sudo apt-get install curl bsdmainutils cmake libz-dev python3-setuptools libtinfo5 xorriso
Note: You must obtain the macOS SDK before proceeding with a cross-compile.
Under the depends directory, create a subdirectory named `SDKs`.
@@ -80,9 +79,6 @@ For linux RISC-V 64-bit cross compilation (there are no packages for 32-bit):
sudo apt-get install g++-riscv64-linux-gnu binutils-riscv64-linux-gnu
-RISC-V known issue: gcc-7.3.0 and gcc-7.3.1 result in a broken `test_bitcoin` executable (see https://github.com/bitcoin/bitcoin/pull/13543),
-this is apparently fixed in gcc-8.1.0.
-
For linux S390X cross compilation:
sudo apt-get install g++-s390x-linux-gnu binutils-s390x-linux-gnu
diff --git a/depends/builders/darwin.mk b/depends/builders/darwin.mk
index 6e68c88928..ced01229dd 100644
--- a/depends/builders/darwin.mk
+++ b/depends/builders/darwin.mk
@@ -22,7 +22,7 @@ darwin_INSTALL_NAME_TOOL:=$(shell xcrun -f install_name_tool)
darwin_native_binutils=
darwin_native_toolchain=
-x86_64_darwin_CFLAGS = -arch x86_64
-x86_64_darwin_CXXFLAGS = $(x86_64_darwin_CFLAGS)
-aarch64_darwin_CFLAGS = -arch arm64
-aarch64_darwin_CXXFLAGS = $(aarch64_darwin_CFLAGS)
+x86_64_darwin_CFLAGS += -arch x86_64
+x86_64_darwin_CXXFLAGS += -arch x86_64
+aarch64_darwin_CFLAGS += -arch arm64
+aarch64_darwin_CXXFLAGS += -arch arm64
diff --git a/depends/funcs.mk b/depends/funcs.mk
index 55c2e78d17..453d92cfb2 100644
--- a/depends/funcs.mk
+++ b/depends/funcs.mk
@@ -188,53 +188,53 @@ endef
define int_add_cmds
$($(1)_fetched):
- $(AT)mkdir -p $$(@D) $(SOURCES_PATH)
- $(AT)rm -f $$@
- $(AT)touch $$@
- $(AT)cd $$(@D); $(call $(1)_fetch_cmds,$(1))
- $(AT)cd $($(1)_source_dir); $(foreach source,$($(1)_all_sources),$(build_SHA256SUM) $(source) >> $$(@);)
- $(AT)touch $$@
+ mkdir -p $$(@D) $(SOURCES_PATH)
+ rm -f $$@
+ touch $$@
+ cd $$(@D); $(call $(1)_fetch_cmds,$(1))
+ cd $($(1)_source_dir); $(foreach source,$($(1)_all_sources),$(build_SHA256SUM) $(source) >> $$(@);)
+ touch $$@
$($(1)_extracted): | $($(1)_fetched)
- $(AT)echo Extracting $(1)...
- $(AT)mkdir -p $$(@D)
- $(AT)cd $$(@D); $(call $(1)_extract_cmds,$(1))
- $(AT)touch $$@
+ echo Extracting $(1)...
+ mkdir -p $$(@D)
+ cd $$(@D); $(call $(1)_extract_cmds,$(1))
+ touch $$@
$($(1)_preprocessed): | $($(1)_extracted)
- $(AT)echo Preprocessing $(1)...
- $(AT)mkdir -p $$(@D) $($(1)_patch_dir)
- $(AT)$(foreach patch,$($(1)_patches),cd $(PATCHES_PATH)/$(1); cp $(patch) $($(1)_patch_dir) ;)
- $(AT)cd $$(@D); $(call $(1)_preprocess_cmds, $(1))
- $(AT)touch $$@
+ echo Preprocessing $(1)...
+ mkdir -p $$(@D) $($(1)_patch_dir)
+ $(foreach patch,$($(1)_patches),cd $(PATCHES_PATH)/$(1); cp $(patch) $($(1)_patch_dir) ;)
+ cd $$(@D); $(call $(1)_preprocess_cmds, $(1))
+ touch $$@
$($(1)_configured): | $($(1)_dependencies) $($(1)_preprocessed)
- $(AT)echo Configuring $(1)...
- $(AT)rm -rf $(host_prefix); mkdir -p $(host_prefix)/lib; cd $(host_prefix); $(foreach package,$($(1)_all_dependencies), tar --no-same-owner -xf $($(package)_cached); )
- $(AT)mkdir -p $$(@D)
- $(AT)+cd $$(@D); $($(1)_config_env) $(call $(1)_config_cmds, $(1))
- $(AT)touch $$@
+ echo Configuring $(1)...
+ rm -rf $(host_prefix); mkdir -p $(host_prefix)/lib; cd $(host_prefix); $(foreach package,$($(1)_all_dependencies), tar --no-same-owner -xf $($(package)_cached); )
+ mkdir -p $$(@D)
+ +cd $$(@D); $($(1)_config_env) $(call $(1)_config_cmds, $(1))
+ touch $$@
$($(1)_built): | $($(1)_configured)
- $(AT)echo Building $(1)...
- $(AT)mkdir -p $$(@D)
- $(AT)+cd $$(@D); $($(1)_build_env) $(call $(1)_build_cmds, $(1))
- $(AT)touch $$@
+ echo Building $(1)...
+ mkdir -p $$(@D)
+ +cd $$(@D); $($(1)_build_env) $(call $(1)_build_cmds, $(1))
+ touch $$@
$($(1)_staged): | $($(1)_built)
- $(AT)echo Staging $(1)...
- $(AT)mkdir -p $($(1)_staging_dir)/$(host_prefix)
- $(AT)cd $($(1)_build_dir); $($(1)_stage_env) $(call $(1)_stage_cmds, $(1))
- $(AT)rm -rf $($(1)_extract_dir)
- $(AT)touch $$@
+ echo Staging $(1)...
+ mkdir -p $($(1)_staging_dir)/$(host_prefix)
+ cd $($(1)_build_dir); $($(1)_stage_env) $(call $(1)_stage_cmds, $(1))
+ rm -rf $($(1)_extract_dir)
+ touch $$@
$($(1)_postprocessed): | $($(1)_staged)
- $(AT)echo Postprocessing $(1)...
- $(AT)cd $($(1)_staging_prefix_dir); $(call $(1)_postprocess_cmds)
- $(AT)touch $$@
+ echo Postprocessing $(1)...
+ cd $($(1)_staging_prefix_dir); $(call $(1)_postprocess_cmds)
+ touch $$@
$($(1)_cached): | $($(1)_dependencies) $($(1)_postprocessed)
- $(AT)echo Caching $(1)...
- $(AT)cd $$($(1)_staging_dir)/$(host_prefix); find . | sort | tar --no-recursion -czf $$($(1)_staging_dir)/$$(@F) -T -
- $(AT)mkdir -p $$(@D)
- $(AT)rm -rf $$(@D) && mkdir -p $$(@D)
- $(AT)mv $$($(1)_staging_dir)/$$(@F) $$(@)
- $(AT)rm -rf $($(1)_staging_dir)
+ echo Caching $(1)...
+ cd $$($(1)_staging_dir)/$(host_prefix); find . | sort | tar --no-recursion -czf $$($(1)_staging_dir)/$$(@F) -T -
+ mkdir -p $$(@D)
+ rm -rf $$(@D) && mkdir -p $$(@D)
+ mv $$($(1)_staging_dir)/$$(@F) $$(@)
+ rm -rf $($(1)_staging_dir)
$($(1)_cached_checksum): $($(1)_cached)
- $(AT)cd $$(@D); $(build_SHA256SUM) $$(<F) > $$(@)
+ cd $$(@D); $(build_SHA256SUM) $$(<F) > $$(@)
.PHONY: $(1)
$(1): | $($(1)_cached_checksum)
diff --git a/depends/packages/libxcb.mk b/depends/packages/libxcb.mk
index 99a7ee2fbd..fa30e80f5c 100644
--- a/depends/packages/libxcb.mk
+++ b/depends/packages/libxcb.mk
@@ -8,7 +8,7 @@ $(package)_dependencies=xcb_proto libXau
define $(package)_set_vars
$(package)_config_opts=--disable-static --disable-devel-docs --without-doxygen --without-launchd
$(package)_config_opts += --disable-dependency-tracking --enable-option-checking
-# Disable uneeded extensions.
+# Disable unneeded extensions.
# More info is available from: https://doc.qt.io/qt-5.15/linux-requirements.html
$(package)_config_opts += --disable-composite --disable-damage --disable-dpms
$(package)_config_opts += --disable-dri2 --disable-dri3 --disable-glx
diff --git a/depends/packages/qt.mk b/depends/packages/qt.mk
index 6b2d44dc64..6b71a9abda 100644
--- a/depends/packages/qt.mk
+++ b/depends/packages/qt.mk
@@ -13,6 +13,7 @@ $(package)_patches += dont_use_avx_android_x86_64.patch dont_hardcode_x86_64.pat
$(package)_patches += fix_android_jni_static.patch dont_hardcode_pwd.patch
$(package)_patches += qtbase-moc-ignore-gcc-macro.patch fix_limits_header.patch
$(package)_patches += fix_bigsur_style.patch use_android_ndk23.patch
+$(package)_patches += rcc_hardcode_timestamp.patch
$(package)_qttranslations_file_name=qttranslations-$($(package)_suffix)
$(package)_qttranslations_sha256_hash=d5788e86257b21d5323f1efd94376a213e091d1e5e03b45a95dd052b5f570db8
@@ -146,7 +147,11 @@ $(package)_config_opts_linux += -no-feature-vulkan
$(package)_config_opts_linux += -dbus-runtime
$(package)_config_opts_arm_linux += -platform linux-g++ -xplatform bitcoin-linux-g++
$(package)_config_opts_i686_linux = -xplatform linux-g++-32
+ifneq (,$(findstring -stdlib=libc++,$($(1)_cxx)))
+$(package)_config_opts_x86_64_linux = -xplatform linux-clang-libc++
+else
$(package)_config_opts_x86_64_linux = -xplatform linux-g++-64
+endif
$(package)_config_opts_aarch64_linux = -xplatform linux-aarch64-gnu-g++
$(package)_config_opts_powerpc64_linux = -platform linux-g++ -xplatform bitcoin-linux-g++
$(package)_config_opts_powerpc64le_linux = -platform linux-g++ -xplatform bitcoin-linux-g++
@@ -168,7 +173,6 @@ $(package)_config_opts_android += -android-sdk $(ANDROID_SDK)
$(package)_config_opts_android += -android-ndk $(ANDROID_NDK)
$(package)_config_opts_android += -android-ndk-platform android-$(ANDROID_API_LEVEL)
$(package)_config_opts_android += -egl
-$(package)_config_opts_android += -qpa xcb
$(package)_config_opts_android += -no-dbus
$(package)_config_opts_android += -opengl es2
$(package)_config_opts_android += -qt-freetype
@@ -181,7 +185,6 @@ $(package)_config_opts_android += -no-feature-vulkan
$(package)_config_opts_aarch64_android += -android-arch arm64-v8a
$(package)_config_opts_armv7a_android += -android-arch armeabi-v7a
$(package)_config_opts_x86_64_android += -android-arch x86_64
-$(package)_config_opts_i686_android += -android-arch i686
endef
define $(package)_fetch_cmds
@@ -238,6 +241,7 @@ define $(package)_preprocess_cmds
patch -p1 -i $($(package)_patch_dir)/fix_montery_include.patch && \
patch -p1 -i $($(package)_patch_dir)/fix_bigsur_style.patch && \
patch -p1 -i $($(package)_patch_dir)/use_android_ndk23.patch && \
+ patch -p1 -i $($(package)_patch_dir)/rcc_hardcode_timestamp.patch && \
mkdir -p qtbase/mkspecs/macx-clang-linux &&\
cp -f qtbase/mkspecs/macx-clang/qplatformdefs.h qtbase/mkspecs/macx-clang-linux/ &&\
cp -f $($(package)_patch_dir)/mac-qmake.conf qtbase/mkspecs/macx-clang-linux/qmake.conf && \
diff --git a/depends/patches/qt/rcc_hardcode_timestamp.patch b/depends/patches/qt/rcc_hardcode_timestamp.patch
new file mode 100644
index 0000000000..03f3897975
--- /dev/null
+++ b/depends/patches/qt/rcc_hardcode_timestamp.patch
@@ -0,0 +1,24 @@
+Hardcode last modified timestamp in Qt RCC
+
+This change allows the already built qt package to be reused even with
+the SOURCE_DATE_EPOCH variable set, e.g., for Guix builds.
+
+
+--- old/qtbase/src/tools/rcc/rcc.cpp
++++ new/qtbase/src/tools/rcc/rcc.cpp
+@@ -227,14 +227,7 @@ void RCCFileInfo::writeDataInfo(RCCResourceLibrary &lib)
+
+ if (lib.formatVersion() >= 2) {
+ // last modified time stamp
+- const QDateTime lastModified = m_fileInfo.lastModified();
+- quint64 lastmod = quint64(lastModified.isValid() ? lastModified.toMSecsSinceEpoch() : 0);
+- static const quint64 sourceDate = 1000 * qgetenv("QT_RCC_SOURCE_DATE_OVERRIDE").toULongLong();
+- if (sourceDate != 0)
+- lastmod = sourceDate;
+- static const quint64 sourceDate2 = 1000 * qgetenv("SOURCE_DATE_EPOCH").toULongLong();
+- if (sourceDate2 != 0)
+- lastmod = sourceDate2;
++ quint64 lastmod = quint64(1);
+ lib.writeNumber8(lastmod);
+ if (text || pass1)
+ lib.writeChar('\n');