mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-22 15:04:44 +01:00
depends: remove cctools & libtapi
This commit is contained in:
parent
4a0536c5d9
commit
f836f7e9b3
9 changed files with 7 additions and 104 deletions
|
@ -56,28 +56,16 @@ The `sha256sum` should be `c0c2e7bb92c1fee0c4e9f3a485e4530786732d6c6dd9e9f418c28
|
||||||
|
|
||||||
## Deterministic macOS App Notes
|
## Deterministic macOS App Notes
|
||||||
|
|
||||||
macOS Applications are created in Linux by combining a recent `clang` and the Apple
|
macOS Applications are created in Linux using a recent LLVM.
|
||||||
`binutils` (`ld`, `ar`, etc).
|
|
||||||
|
|
||||||
Apple uses `clang` extensively for development and has upstreamed the necessary
|
Apple uses `clang` extensively for development and has upstreamed the necessary
|
||||||
functionality so that a vanilla clang can take advantage. It supports the use of `-F`,
|
functionality so that a vanilla clang can take advantage. It supports the use of `-F`,
|
||||||
`-target`, `-mmacosx-version-min`, and `-isysroot`, which are all necessary when
|
`-target`, `-mmacosx-version-min`, and `-isysroot`, which are all necessary when
|
||||||
building for macOS.
|
building for macOS.
|
||||||
|
|
||||||
Apple's version of `binutils` (called `cctools`) contains lots of functionality missing in the
|
|
||||||
FSF's `binutils`. In addition to extra linker options for frameworks and sysroots, several
|
|
||||||
other tools are needed as well. These do not build under Linux, so they have been patched to
|
|
||||||
do so. The work here was used as a starting point: [mingwandroid/toolchain4](https://github.com/mingwandroid/toolchain4).
|
|
||||||
|
|
||||||
In order to build a working toolchain, the following source packages are needed from
|
|
||||||
Apple: `cctools`, `dyld`, and `ld64`.
|
|
||||||
|
|
||||||
These tools inject timestamps by default, which produce non-deterministic binaries. The
|
These tools inject timestamps by default, which produce non-deterministic binaries. The
|
||||||
`ZERO_AR_DATE` environment variable is used to disable that.
|
`ZERO_AR_DATE` environment variable is used to disable that.
|
||||||
|
|
||||||
This version of `cctools` has been patched to use the current version of `clang`'s headers
|
|
||||||
and its `libLTO.so` rather than those from `llvmgcc`, as it was originally done in `toolchain4`.
|
|
||||||
|
|
||||||
To complicate things further, all builds must target an Apple SDK. These SDKs are free to
|
To complicate things further, all builds must target an Apple SDK. These SDKs are free to
|
||||||
download, but not redistributable. See the SDK Extraction notes above for how to obtain it.
|
download, but not redistributable. See the SDK Extraction notes above for how to obtain it.
|
||||||
|
|
||||||
|
|
|
@ -185,7 +185,6 @@ all_packages = $(packages) $(native_packages)
|
||||||
|
|
||||||
meta_depends = Makefile config.guess config.sub funcs.mk builders/default.mk hosts/default.mk hosts/$(host_os).mk builders/$(build_os).mk
|
meta_depends = Makefile config.guess config.sub funcs.mk builders/default.mk hosts/default.mk hosts/$(host_os).mk builders/$(build_os).mk
|
||||||
|
|
||||||
$(host_arch)_$(host_os)_native_binutils?=$($(host_os)_native_binutils)
|
|
||||||
$(host_arch)_$(host_os)_native_toolchain?=$($(host_os)_native_toolchain)
|
$(host_arch)_$(host_os)_native_toolchain?=$($(host_os)_native_toolchain)
|
||||||
|
|
||||||
include funcs.mk
|
include funcs.mk
|
||||||
|
@ -217,9 +216,8 @@ $(host_prefix)/.stamp_$(final_build_id): $(native_packages) $(packages)
|
||||||
# tool needs to be available in $PATH at all times.
|
# tool needs to be available in $PATH at all times.
|
||||||
#
|
#
|
||||||
# 2. If the tool is _**not**_ expected to be available in $PATH at all times
|
# 2. If the tool is _**not**_ expected to be available in $PATH at all times
|
||||||
# (such as is the case for our native_cctools binutils tools), it needs to
|
# it needs to be referred to by its absolute path, such as would be output
|
||||||
# be referred to by its absolute path, such as would be output by the
|
# by the AC_PATH_{PROG,TOOL} macros.
|
||||||
# AC_PATH_{PROG,TOOL} macros.
|
|
||||||
#
|
#
|
||||||
# Minor note: it is also okay to refer to tools by their absolute path even if
|
# Minor note: it is also okay to refer to tools by their absolute path even if
|
||||||
# we expect them to be available in $PATH at all times, more specificity does
|
# we expect them to be available in $PATH at all times, more specificity does
|
||||||
|
|
|
@ -18,7 +18,6 @@ darwin_STRIP:=$(shell xcrun -f strip)
|
||||||
darwin_OBJDUMP:=$(shell xcrun -f objdump)
|
darwin_OBJDUMP:=$(shell xcrun -f objdump)
|
||||||
darwin_NM:=$(shell xcrun -f nm)
|
darwin_NM:=$(shell xcrun -f nm)
|
||||||
darwin_DSYMUTIL:=$(shell xcrun -f dsymutil)
|
darwin_DSYMUTIL:=$(shell xcrun -f dsymutil)
|
||||||
darwin_native_binutils=
|
|
||||||
darwin_native_toolchain=
|
darwin_native_toolchain=
|
||||||
|
|
||||||
x86_64_darwin_CFLAGS += -arch x86_64
|
x86_64_darwin_CFLAGS += -arch x86_64
|
||||||
|
|
|
@ -46,7 +46,7 @@ endef
|
||||||
|
|
||||||
define int_get_build_id
|
define int_get_build_id
|
||||||
$(eval $(1)_dependencies += $($(1)_$(host_arch)_$(host_os)_dependencies) $($(1)_$(host_os)_dependencies))
|
$(eval $(1)_dependencies += $($(1)_$(host_arch)_$(host_os)_dependencies) $($(1)_$(host_os)_dependencies))
|
||||||
$(eval $(1)_all_dependencies:=$(call int_get_all_dependencies,$(1),$($($(1)_type)_native_toolchain) $($($(1)_type)_native_binutils) $($(1)_dependencies)))
|
$(eval $(1)_all_dependencies:=$(call int_get_all_dependencies,$(1),$($($(1)_type)_native_toolchain) $($(1)_dependencies)))
|
||||||
$(foreach dep,$($(1)_all_dependencies),$(eval $(1)_build_id_deps+=$(dep)-$($(dep)_version)-$($(dep)_recipe_hash)))
|
$(foreach dep,$($(1)_all_dependencies),$(eval $(1)_build_id_deps+=$(dep)-$($(dep)_version)-$($(dep)_recipe_hash)))
|
||||||
$(eval $(1)_build_id_long:=$(1)-$($(1)_version)-$($(1)_recipe_hash)-$(release_type) $($(1)_build_id_deps) $($($(1)_type)_id))
|
$(eval $(1)_build_id_long:=$(1)-$($(1)_version)-$($(1)_recipe_hash)-$(release_type) $($(1)_build_id_deps) $($($(1)_type)_id))
|
||||||
$(eval $(1)_build_id:=$(shell echo -n "$($(1)_build_id_long)" | $(build_SHA256SUM) | cut -c-$(HASH_LENGTH)))
|
$(eval $(1)_build_id:=$(shell echo -n "$($(1)_build_id_long)" | $(build_SHA256SUM) | cut -c-$(HASH_LENGTH)))
|
||||||
|
@ -299,4 +299,4 @@ $(foreach package,$(all_packages),$(eval $(call int_config_attach_build_config,$
|
||||||
$(foreach package,$(all_packages),$(eval $(call int_add_cmds,$(package))))
|
$(foreach package,$(all_packages),$(eval $(call int_add_cmds,$(package))))
|
||||||
|
|
||||||
#special exception: if a toolchain package exists, all non-native packages depend on it
|
#special exception: if a toolchain package exists, all non-native packages depend on it
|
||||||
$(foreach package,$(packages),$(eval $($(package)_extracted): |$($($(host_arch)_$(host_os)_native_toolchain)_cached) $($($(host_arch)_$(host_os)_native_binutils)_cached) ))
|
$(foreach package,$(packages),$(eval $($(package)_extracted): |$($($(host_arch)_$(host_os)_native_toolchain)_cached) ))
|
||||||
|
|
|
@ -6,14 +6,11 @@ LD64_VERSION=711
|
||||||
|
|
||||||
OSX_SDK=$(SDK_PATH)/Xcode-$(XCODE_VERSION)-$(XCODE_BUILD_ID)-extracted-SDK-with-libcxx-headers
|
OSX_SDK=$(SDK_PATH)/Xcode-$(XCODE_VERSION)-$(XCODE_BUILD_ID)-extracted-SDK-with-libcxx-headers
|
||||||
|
|
||||||
darwin_native_binutils=native_cctools
|
|
||||||
|
|
||||||
ifeq ($(strip $(FORCE_USE_SYSTEM_CLANG)),)
|
ifeq ($(strip $(FORCE_USE_SYSTEM_CLANG)),)
|
||||||
# FORCE_USE_SYSTEM_CLANG is empty, so we use our depends-managed, pinned LLVM
|
# FORCE_USE_SYSTEM_CLANG is empty, so we use our depends-managed, pinned LLVM
|
||||||
# from llvm.org
|
# from llvm.org
|
||||||
|
|
||||||
# Clang is a dependency of native_cctools when FORCE_USE_SYSTEM_CLANG is empty
|
darwin_native_toolchain=native_llvm
|
||||||
darwin_native_toolchain=native_cctools
|
|
||||||
|
|
||||||
clang_prog=$(build_prefix)/bin/clang
|
clang_prog=$(build_prefix)/bin/clang
|
||||||
clangxx_prog=$(clang_prog)++
|
clangxx_prog=$(clang_prog)++
|
||||||
|
@ -68,7 +65,7 @@ endif
|
||||||
#
|
#
|
||||||
# -B$(build_prefix)/bin
|
# -B$(build_prefix)/bin
|
||||||
#
|
#
|
||||||
# Explicitly point to our binaries (e.g. cctools) so that they are
|
# Explicitly point to our binaries so that they are
|
||||||
# ensured to be found and preferred over other possibilities.
|
# ensured to be found and preferred over other possibilities.
|
||||||
#
|
#
|
||||||
# -isysroot$(OSX_SDK) -nostdlibinc
|
# -isysroot$(OSX_SDK) -nostdlibinc
|
||||||
|
|
|
@ -1,39 +0,0 @@
|
||||||
package=native_cctools
|
|
||||||
$(package)_version=c74fafe86076713cb8e6f937af43b6df6da1f42d
|
|
||||||
$(package)_download_path=https://github.com/tpoechtrager/cctools-port/archive
|
|
||||||
$(package)_file_name=$($(package)_version).tar.gz
|
|
||||||
$(package)_sha256_hash=e2c1588d505a69c32e079f4e616e0f117d5478429040e394f624f43f2796e6bc
|
|
||||||
$(package)_build_subdir=cctools
|
|
||||||
$(package)_dependencies=native_libtapi
|
|
||||||
|
|
||||||
define $(package)_set_vars
|
|
||||||
$(package)_config_opts=--target=$(host) --enable-lto-support
|
|
||||||
$(package)_config_opts+=--with-llvm-config=$(llvm_config_prog)
|
|
||||||
$(package)_ldflags+=-Wl,-rpath=\\$$$$$$$$\$$$$$$$$ORIGIN/../lib
|
|
||||||
$(package)_cc=$(clang_prog)
|
|
||||||
$(package)_cxx=$(clangxx_prog)
|
|
||||||
endef
|
|
||||||
|
|
||||||
ifneq ($(strip $(FORCE_USE_SYSTEM_CLANG)),)
|
|
||||||
define $(package)_preprocess_cmds
|
|
||||||
mkdir -p $($(package)_staging_prefix_dir)/lib && \
|
|
||||||
cp $(llvm_lib_dir)/libLTO.so $($(package)_staging_prefix_dir)/lib/
|
|
||||||
endef
|
|
||||||
else
|
|
||||||
endif
|
|
||||||
|
|
||||||
define $(package)_config_cmds
|
|
||||||
$($(package)_autoconf)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_build_cmds
|
|
||||||
$(MAKE) -C ld64
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_stage_cmds
|
|
||||||
$(MAKE) DESTDIR=$($(package)_staging_dir) install -C ld64/src/ld
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_postprocess_cmds
|
|
||||||
rm -rf share
|
|
||||||
endef
|
|
|
@ -1,22 +0,0 @@
|
||||||
package=native_libtapi
|
|
||||||
$(package)_version=eb33a59f2e30ff9724dc1ea8bee8b5229b0557c9
|
|
||||||
$(package)_download_path=https://github.com/tpoechtrager/apple-libtapi/archive
|
|
||||||
$(package)_file_name=$($(package)_version).tar.gz
|
|
||||||
$(package)_sha256_hash=d4d46c64622f13d6938cecf989046d9561011bb59e8ee835f8f39825d67f578f
|
|
||||||
$(package)_patches=disable_zlib.patch
|
|
||||||
|
|
||||||
ifeq ($(strip $(FORCE_USE_SYSTEM_CLANG)),)
|
|
||||||
$(package)_dependencies=native_llvm
|
|
||||||
endif
|
|
||||||
|
|
||||||
define $(package)_preprocess_cmds
|
|
||||||
patch -p1 < $($(package)_patch_dir)/disable_zlib.patch
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_build_cmds
|
|
||||||
CC=$(clang_prog) CXX=$(clangxx_prog) INSTALLPREFIX=$($(package)_staging_prefix_dir) ./build.sh
|
|
||||||
endef
|
|
||||||
|
|
||||||
define $(package)_stage_cmds
|
|
||||||
./install.sh
|
|
||||||
endef
|
|
|
@ -30,7 +30,6 @@ usdt_linux_packages=systemtap
|
||||||
darwin_native_packages =
|
darwin_native_packages =
|
||||||
|
|
||||||
ifneq ($(build_os),darwin)
|
ifneq ($(build_os),darwin)
|
||||||
darwin_native_packages += native_cctools native_libtapi
|
|
||||||
|
|
||||||
ifeq ($(strip $(FORCE_USE_SYSTEM_CLANG)),)
|
ifeq ($(strip $(FORCE_USE_SYSTEM_CLANG)),)
|
||||||
darwin_native_packages+= native_llvm
|
darwin_native_packages+= native_llvm
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
build: disable zlib
|
|
||||||
|
|
||||||
This isn't needed, and causes issues when clang-tblgen
|
|
||||||
is built, but trys to reach for a system libz.so.
|
|
||||||
|
|
||||||
diff --git a/build.sh b/build.sh
|
|
||||||
index e25d2f732..ec8422621 100755
|
|
||||||
--- a/build.sh
|
|
||||||
+++ b/build.sh
|
|
||||||
@@ -66,6 +66,7 @@ cmake ../src/llvm \
|
|
||||||
-DCMAKE_INSTALL_PREFIX=$INSTALLPREFIX \
|
|
||||||
-DTAPI_REPOSITORY_STRING=$TAPI_VERSION \
|
|
||||||
-DTAPI_FULL_VERSION=$TAPI_VERSION \
|
|
||||||
+ -DLLVM_ENABLE_ZLIB=OFF \
|
|
||||||
$CMAKE_EXTRA_ARGS
|
|
||||||
|
|
||||||
echo ""
|
|
Loading…
Add table
Reference in a new issue