From a86c4cb75ffb577922334cf6e212bcd5bac1716d Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Tue, 3 May 2022 15:51:34 +0100 Subject: [PATCH 01/11] Update to MacOSX SDK 11.1, add Mac M1 --- contrib/depends/README.md | 4 ++-- contrib/depends/hosts/darwin.mk | 11 ++++++++--- contrib/depends/toolchain.cmake.in | 31 +++++++++++++++++++++--------- contrib/gitian/dockrun.sh | 4 ++-- contrib/gitian/gitian-build.py | 2 +- contrib/gitian/gitian-osx.yml | 6 +++--- 6 files changed, 38 insertions(+), 20 deletions(-) diff --git a/contrib/depends/README.md b/contrib/depends/README.md index 10866acbe..f7c0b922f 100644 --- a/contrib/depends/README.md +++ b/contrib/depends/README.md @@ -61,9 +61,9 @@ download-linux: run 'make download-linux' to fetch all sources needed for linux #Darwin (macos) builds: -To build with the x86_64-apple-darwin11 you require the mac os developer tools in MacOSX10.11.sdk. +To build with the x86_64-apple-darwin11 you require the mac os developer tools in MacOSX11.1.sdk. Download it from apple, or search for it on github. Create a new directoty called SDKs in this -directory and place the entire MacOSX10.11.sdk folder in it. The depends build will then pick it up automatically +directory and place the entire MacOSX11.1.sdk folder in it. The depends build will then pick it up automatically (without requiring SDK_PATH). diff --git a/contrib/depends/hosts/darwin.mk b/contrib/depends/hosts/darwin.mk index 7b5c8b051..0b6582003 100644 --- a/contrib/depends/hosts/darwin.mk +++ b/contrib/depends/hosts/darwin.mk @@ -1,9 +1,14 @@ OSX_MIN_VERSION=10.8 -OSX_SDK_VERSION=10.11 +OSX_SDK_VERSION=11.1 OSX_SDK=$(SDK_PATH)/MacOSX$(OSX_SDK_VERSION).sdk LD64_VERSION=253.9 -darwin_CC=clang -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION) -B $(host_prefix)/native/bin -darwin_CXX=clang++ -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION) -stdlib=libc++ -B $(host_prefix)/native/bin +ifeq (aarch64, $(host_arch)) +CC_target=arm64-apple-darwin11 +else +CC_target=$(host) +endif +darwin_CC=clang -target $(CC_target) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION) -B$(host_prefix)/native/bin/$(host)- +darwin_CXX=clang++ -target $(CC_target) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION) -stdlib=libc++ -B$(host_prefix)/native/bin/$(host)- darwin_CFLAGS=-pipe darwin_CXXFLAGS=$(darwin_CFLAGS) diff --git a/contrib/depends/toolchain.cmake.in b/contrib/depends/toolchain.cmake.in index c3a0df59b..3ed97633b 100644 --- a/contrib/depends/toolchain.cmake.in +++ b/contrib/depends/toolchain.cmake.in @@ -69,22 +69,35 @@ set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) # Find includes in target # specify the cross compiler to be used. Darwin uses clang provided by the SDK. if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") + if(ARCHITECTURE STREQUAL "aarch64") + SET(CLANG_TARGET "arm64-apple-darwin11") + SET(CONF_TRIPLE "aarch64-apple-darwin11") + SET(BUILD_TAG "mac-armv8") + SET(CMAKE_OSX_ARCHITECTURES "arm64") + set(ARM ON) + set(ARM_ID "armv8-a") + else() + SET(CLANG_TARGET "x86_64-apple-darwin11") + SET(CONF_TRIPLE "x86_64-apple-darwin11") + SET(BUILD_TAG "mac-x64") + SET(CMAKE_OSX_ARCHITECTURES "x86_64") + endif() + SET(_CMAKE_TOOLCHAIN_PREFIX @prefix@/native/bin/${CONF_TRIPLE}-) SET(CMAKE_C_COMPILER @prefix@/native/bin/clang) - SET(CMAKE_C_COMPILER_TARGET x86_64-apple-darwin11) + SET(CMAKE_C_COMPILER_TARGET ${CLANG_TARGET}) + SET(CMAKE_C_FLAGS_INIT -B${_CMAKE_TOOLCHAIN_PREFIX}) SET(CMAKE_CXX_COMPILER @prefix@/native/bin/clang++ -stdlib=libc++) - SET(CMAKE_CXX_COMPILER_TARGET x86_64-apple-darwin11) - SET(CMAKE_ASM_COMPILER_TARGET x86_64-apple-darwin11) - SET(CMAKE_ASM-ATT_COMPILER_TARGET x86_64-apple-darwin11) - SET(_CMAKE_TOOLCHAIN_PREFIX x86_64-apple-darwin11-) + SET(CMAKE_CXX_COMPILER_TARGET ${CLANG_TARGET}) + SET(CMAKE_CXX_FLAGS_INIT -B${_CMAKE_TOOLCHAIN_PREFIX}) + SET(CMAKE_ASM_COMPILER_TARGET ${CLANG_TARGET}) + SET(CMAKE_ASM-ATT_COMPILER_TARGET ${CLANG_TARGET}) SET(APPLE True) - SET(BUILD_TAG "mac-x64") SET(BUILD_64 ON) SET(BREW OFF) SET(PORT OFF) - SET(CMAKE_OSX_SYSROOT "@sdk@/MacOSX10.11.sdk/") + SET(CMAKE_OSX_SYSROOT "@sdk@/MacOSX11.1.sdk/") SET(CMAKE_OSX_DEPLOYMENT_TARGET "10.08") SET(CMAKE_CXX_STANDARD 14) - SET(CMAKE_OSX_ARCHITECTURES "x86_64") SET(LLVM_ENABLE_PIC OFF) SET(LLVM_ENABLE_PIE OFF) elseif(CMAKE_SYSTEM_NAME STREQUAL "Android") @@ -126,7 +139,7 @@ elseif(ARCHITECTURE STREQUAL "aarch64") set(ARM_ID "armv8-a") if(ANDROID) set(BUILD_TAG "android-armv8") - else() + elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") set(BUILD_TAG "linux-armv8") endif() set(BUILD_64 ON) diff --git a/contrib/gitian/dockrun.sh b/contrib/gitian/dockrun.sh index 015c411fd..ef671116a 100755 --- a/contrib/gitian/dockrun.sh +++ b/contrib/gitian/dockrun.sh @@ -53,8 +53,8 @@ docker build --pull -f ${TAG}.Dockerfile -t $TAG . cd .. docker run -v /var/run/docker.sock:/var/run/docker.sock -d --name gitrun $TAG -if [ -f MacOSX10.11.sdk.tar.gz ]; then - docker cp MacOSX10.11.sdk.tar.gz gitrun:$WORKDIR/builder/inputs/ +if [ -f MacOSX11.1.sdk.tar.xz ]; then + docker cp MacOSX11.1.sdk.tar.xz gitrun:$WORKDIR/builder/inputs/ else echo "No MacOS SDK found, Mac builds will be omitted" fi diff --git a/contrib/gitian/gitian-build.py b/contrib/gitian/gitian-build.py index 6bf936958..1db337e41 100755 --- a/contrib/gitian/gitian-build.py +++ b/contrib/gitian/gitian-build.py @@ -162,7 +162,7 @@ def main(): # Disable MacOS build if no SDK found args.nomac = False - if 'm' in args.os and not os.path.isfile('builder/inputs/MacOSX10.11.sdk.tar.gz'): + if 'm' in args.os and not os.path.isfile('builder/inputs/MacOSX11.1.sdk.tar.xz'): if args.build: print('Cannot build for MacOS, SDK does not exist. Will build for other OSes') args.nomac = True diff --git a/contrib/gitian/gitian-osx.yml b/contrib/gitian/gitian-osx.yml index 3434861d2..630f7a0d3 100644 --- a/contrib/gitian/gitian-osx.yml +++ b/contrib/gitian/gitian-osx.yml @@ -27,10 +27,10 @@ remotes: - "url": "https://github.com/monero-project/monero.git" "dir": "monero" files: -- "MacOSX10.11.sdk.tar.gz" +- "MacOSX11.1.sdk.tar.xz" script: | WRAP_DIR=$HOME/wrapped - HOSTS="x86_64-apple-darwin11" + HOSTS="x86_64-apple-darwin11 aarch64-apple-darwin11" FAKETIME_HOST_PROGS="" FAKETIME_PROGS="ar ranlib date dmg genisoimage python" @@ -89,7 +89,7 @@ script: | BASEPREFIX=`pwd`/contrib/depends mkdir -p ${BASEPREFIX}/SDKs - tar -C ${BASEPREFIX}/SDKs -xf ${BUILD_DIR}/MacOSX10.11.sdk.tar.gz + tar -C ${BASEPREFIX}/SDKs -xf ${BUILD_DIR}/MacOSX11.1.sdk.tar.xz # Build dependencies for each host export TAR_OPTIONS=--mtime=2000-01-01T12:00:00 From 1008318715245aa50fdae6e338b9df6971f9afd7 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Tue, 3 May 2022 23:03:28 +0100 Subject: [PATCH 02/11] Update native_cctools for newer SDK support --- contrib/depends/hosts/darwin.mk | 2 +- contrib/depends/packages/native_cctools.mk | 9 ++++--- contrib/depends/packages/native_libtapi.mk | 26 +++++++++++++++++++ contrib/depends/packages/packages.mk | 2 +- .../patches/native_cctools/skip_otool.patch | 12 --------- 5 files changed, 33 insertions(+), 18 deletions(-) create mode 100644 contrib/depends/packages/native_libtapi.mk delete mode 100644 contrib/depends/patches/native_cctools/skip_otool.patch diff --git a/contrib/depends/hosts/darwin.mk b/contrib/depends/hosts/darwin.mk index 0b6582003..2226f779c 100644 --- a/contrib/depends/hosts/darwin.mk +++ b/contrib/depends/hosts/darwin.mk @@ -1,7 +1,7 @@ OSX_MIN_VERSION=10.8 OSX_SDK_VERSION=11.1 OSX_SDK=$(SDK_PATH)/MacOSX$(OSX_SDK_VERSION).sdk -LD64_VERSION=253.9 +LD64_VERSION=609 ifeq (aarch64, $(host_arch)) CC_target=arm64-apple-darwin11 else diff --git a/contrib/depends/packages/native_cctools.mk b/contrib/depends/packages/native_cctools.mk index 64a72e484..02da9cd84 100644 --- a/contrib/depends/packages/native_cctools.mk +++ b/contrib/depends/packages/native_cctools.mk @@ -1,9 +1,9 @@ package=native_cctools -$(package)_version=807d6fd1be5d2224872e381870c0a75387fe05e6 -$(package)_download_path=https://github.com/theuni/cctools-port/archive +$(package)_version=04663295d0425abfac90a42440a7ec02d7155fea +$(package)_download_path=https://github.com/tpoechtrager/cctools-port/archive $(package)_download_file=$($(package)_version).tar.gz $(package)_file_name=$(package)-$($(package)_version).tar.gz -$(package)_sha256_hash=a09c9ba4684670a0375e42d9d67e7f12c1f62581a27f28f7c825d6d7032ccc6a +$(package)_sha256_hash=70a7189418c2086d20c299c5d59250cf5940782c778892ccc899c66516ed240e $(package)_build_subdir=cctools $(package)_clang_version=3.7.1 $(package)_clang_download_path=http://llvm.org/releases/$($(package)_clang_version) @@ -12,6 +12,7 @@ $(package)_clang_file_name=clang-llvm-$($(package)_clang_version)-x86_64-linux-g $(package)_clang_sha256_hash=99b28a6b48e793705228a390471991386daa33a9717cd9ca007fcdde69608fd9 $(package)_extra_sources=$($(package)_clang_file_name) $(package)_patches=skip_otool.patch +$(package)_dependencies=native_libtapi define $(package)_fetch_cmds $(call fetch_file,$(package),$($(package)_download_path),$($(package)_download_file),$($(package)_file_name),$($(package)_sha256_hash)) && \ @@ -33,7 +34,7 @@ define $(package)_extract_cmds endef define $(package)_set_vars -$(package)_config_opts=--target=$(host) --disable-lto-support +$(package)_config_opts=--target=$(host) --disable-lto-support --with-libtapi=$(host_prefix) $(package)_ldflags+=-Wl,-rpath=\\$$$$$$$$\$$$$$$$$ORIGIN/../lib $(package)_cc=$($(package)_extract_dir)/toolchain/bin/clang $(package)_cxx=$($(package)_extract_dir)/toolchain/bin/clang++ diff --git a/contrib/depends/packages/native_libtapi.mk b/contrib/depends/packages/native_libtapi.mk new file mode 100644 index 000000000..68c5047e9 --- /dev/null +++ b/contrib/depends/packages/native_libtapi.mk @@ -0,0 +1,26 @@ +package=native_libtapi +$(package)_version=664b8414f89612f2dfd35a9b679c345aa5389026 +$(package)_download_path=https://github.com/tpoechtrager/apple-libtapi/archive +$(package)_download_file=$($(package)_version).tar.gz +$(package)_file_name=$(package)-$($(package)_version).tar.gz +$(package)_sha256_hash=62e419c12d1c9fad67cc1cd523132bc00db050998337c734c15bc8d73cc02b61 +$(package)_build_subdir=build + +define $(package)_config_cmds + echo -n $(build_prefix) > INSTALLPREFIX; \ + cmake -DCMAKE_INSTALL_PREFIX=$(build_prefix) \ + -DLLVM_INCLUDE_TESTS=OFF \ + -DCMAKE_BUILD_TYPE=RELEASE \ + -DTAPI_REPOSITORY_STRING="1100.0.11" \ + -DTAPI_FULL_VERSION="11.0.0" \ + -DCMAKE_CXX_FLAGS="-I $($(package)_extract_dir)/src/llvm/projects/clang/include -I $($(package)_build_dir)/projects/clang/include" \ + $($(package)_extract_dir)/src/llvm +endef + +define $(package)_build_cmds + $(MAKE) clangBasic && $(MAKE) libtapi +endef + +define $(package)_stage_cmds + $(MAKE) DESTDIR=$($(package)_staging_dir) install-libtapi install-tapi-headers +endef diff --git a/contrib/depends/packages/packages.mk b/contrib/depends/packages/packages.mk index eed9e8ec1..93cd07802 100644 --- a/contrib/depends/packages/packages.mk +++ b/contrib/depends/packages/packages.mk @@ -34,6 +34,6 @@ mingw32_packages = icu4c sodium $(hardware_packages) mingw32_native_packages = $(hardware_native_packages) ifneq ($(build_os),darwin) -darwin_native_packages += native_cctools +darwin_native_packages += native_cctools native_libtapi endif diff --git a/contrib/depends/patches/native_cctools/skip_otool.patch b/contrib/depends/patches/native_cctools/skip_otool.patch deleted file mode 100644 index 30c4ee524..000000000 --- a/contrib/depends/patches/native_cctools/skip_otool.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- cctools/Makefile.am.O 2016-06-09 15:06:16.000000000 +0100 -+++ cctools/Makefile.am 2019-11-18 08:59:20.078663220 +0000 -@@ -1,7 +1,7 @@ - if ISDARWIN --SUBDIRS=libstuff ar as misc otool ld64 $(LD_CLASSIC) -+SUBDIRS=libstuff ar as misc ld64 $(LD_CLASSIC) - else --SUBDIRS=libstuff ar as misc libobjc2 otool ld64 $(LD_CLASSIC) -+SUBDIRS=libstuff ar as misc ld64 $(LD_CLASSIC) - endif - - ACLOCAL_AMFLAGS = -I m4 From 83ae3ad1786033883d44e22e1254e9608fc07d76 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Wed, 4 May 2022 00:42:05 +0100 Subject: [PATCH 03/11] Split native_clang out of native_cctools Needed for compiling native_libtapi --- contrib/depends/packages/native_cctools.mk | 52 ++-------------------- contrib/depends/packages/native_clang.mk | 29 ++++++++++++ contrib/depends/packages/native_libtapi.mk | 2 + contrib/depends/packages/packages.mk | 2 +- 4 files changed, 36 insertions(+), 49 deletions(-) create mode 100644 contrib/depends/packages/native_clang.mk diff --git a/contrib/depends/packages/native_cctools.mk b/contrib/depends/packages/native_cctools.mk index 02da9cd84..0324f7acd 100644 --- a/contrib/depends/packages/native_cctools.mk +++ b/contrib/depends/packages/native_cctools.mk @@ -5,47 +5,13 @@ $(package)_download_file=$($(package)_version).tar.gz $(package)_file_name=$(package)-$($(package)_version).tar.gz $(package)_sha256_hash=70a7189418c2086d20c299c5d59250cf5940782c778892ccc899c66516ed240e $(package)_build_subdir=cctools -$(package)_clang_version=3.7.1 -$(package)_clang_download_path=http://llvm.org/releases/$($(package)_clang_version) -$(package)_clang_download_file=clang+llvm-$($(package)_clang_version)-x86_64-linux-gnu-ubuntu-14.04.tar.xz -$(package)_clang_file_name=clang-llvm-$($(package)_clang_version)-x86_64-linux-gnu-ubuntu-14.04.tar.xz -$(package)_clang_sha256_hash=99b28a6b48e793705228a390471991386daa33a9717cd9ca007fcdde69608fd9 -$(package)_extra_sources=$($(package)_clang_file_name) -$(package)_patches=skip_otool.patch -$(package)_dependencies=native_libtapi - -define $(package)_fetch_cmds -$(call fetch_file,$(package),$($(package)_download_path),$($(package)_download_file),$($(package)_file_name),$($(package)_sha256_hash)) && \ -$(call fetch_file,$(package),$($(package)_clang_download_path),$($(package)_clang_download_file),$($(package)_clang_file_name),$($(package)_clang_sha256_hash)) -endef - -define $(package)_extract_cmds - mkdir -p $($(package)_extract_dir) && \ - echo "$($(package)_sha256_hash) $($(package)_source)" > $($(package)_extract_dir)/.$($(package)_file_name).hash && \ - echo "$($(package)_clang_sha256_hash) $($(package)_source_dir)/$($(package)_clang_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \ - $(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \ - mkdir -p toolchain/bin toolchain/lib/clang/3.5/include && \ - tar --strip-components=1 -C toolchain -xf $($(package)_source_dir)/$($(package)_clang_file_name) && \ - rm -f toolchain/lib/libc++abi.so* && \ - echo "#!/bin/sh" > toolchain/bin/$(host)-dsymutil && \ - echo "exit 0" >> toolchain/bin/$(host)-dsymutil && \ - chmod +x toolchain/bin/$(host)-dsymutil && \ - tar --strip-components=1 -xf $($(package)_source) -endef +$(package)_dependencies=native_clang native_libtapi define $(package)_set_vars $(package)_config_opts=--target=$(host) --disable-lto-support --with-libtapi=$(host_prefix) $(package)_ldflags+=-Wl,-rpath=\\$$$$$$$$\$$$$$$$$ORIGIN/../lib -$(package)_cc=$($(package)_extract_dir)/toolchain/bin/clang -$(package)_cxx=$($(package)_extract_dir)/toolchain/bin/clang++ -endef - -# If clang gets updated to a version with a fix for https://reviews.llvm.org/D50559 -# then the patch that skips otool can be removed. -define $(package)_preprocess_cmds - patch -p0 < $($(package)_patch_dir)/skip_otool.patch && \ - cd $($(package)_build_subdir); ./autogen.sh && \ - sed -i.old "/define HAVE_PTHREADS/d" ld64/src/ld/InputFiles.h +$(package)_cc=$(host_prefix)/native/bin/clang +$(package)_cxx=$(host_prefix)/native/bin/clang++ endef define $(package)_config_cmds @@ -58,15 +24,5 @@ endef define $(package)_stage_cmds $(MAKE) DESTDIR=$($(package)_staging_dir) install && \ - cp $($(package)_extract_dir)/cctools/misc/install_name_tool $($(package)_staging_prefix_dir)/bin/ &&\ - cd $($(package)_extract_dir)/toolchain && \ - mkdir -p $($(package)_staging_prefix_dir)/lib/clang/$($(package)_clang_version)/include && \ - mkdir -p $($(package)_staging_prefix_dir)/bin $($(package)_staging_prefix_dir)/include && \ - cp bin/clang $($(package)_staging_prefix_dir)/bin/ &&\ - cp -P bin/clang++ $($(package)_staging_prefix_dir)/bin/ &&\ - cp lib/libLTO.so $($(package)_staging_prefix_dir)/lib/ && \ - cp -rf lib/clang/$($(package)_clang_version)/include/* $($(package)_staging_prefix_dir)/lib/clang/$($(package)_clang_version)/include/ && \ - cp bin/llvm-dsymutil $($(package)_staging_prefix_dir)/bin/$(host)-dsymutil && \ - if `test -d include/c++/`; then cp -rf include/c++/ $($(package)_staging_prefix_dir)/include/; fi && \ - if `test -d lib/c++/`; then cp -rf lib/c++/ $($(package)_staging_prefix_dir)/lib/; fi + cp $($(package)_extract_dir)/cctools/misc/install_name_tool $($(package)_staging_prefix_dir)/bin/ endef diff --git a/contrib/depends/packages/native_clang.mk b/contrib/depends/packages/native_clang.mk new file mode 100644 index 000000000..fc7782e55 --- /dev/null +++ b/contrib/depends/packages/native_clang.mk @@ -0,0 +1,29 @@ +package=native_clang +$(package)_version=3.7.1 +$(package)_download_path=http://llvm.org/releases/$($(package)_version) +$(package)_download_file=clang+llvm-$($(package)_version)-x86_64-linux-gnu-ubuntu-14.04.tar.xz +$(package)_file_name=clang-llvm-$($(package)_version)-x86_64-linux-gnu-ubuntu-14.04.tar.xz +$(package)_sha256_hash=99b28a6b48e793705228a390471991386daa33a9717cd9ca007fcdde69608fd9 + +define $(package)_extract_cmds + echo $($(package)_sha256_hash) $($(package)_source) | sha256sum -c &&\ + mkdir -p toolchain/bin toolchain/lib/clang/3.5/include && \ + tar --strip-components=1 -C toolchain -xf $($(package)_source) && \ + rm -f toolchain/lib/libc++abi.so* && \ + echo "#!/bin/sh" > toolchain/bin/$(host)-dsymutil && \ + echo "exit 0" >> toolchain/bin/$(host)-dsymutil && \ + chmod +x toolchain/bin/$(host)-dsymutil +endef + +define $(package)_stage_cmds + cd $($(package)_extract_dir)/toolchain && \ + mkdir -p $($(package)_staging_prefix_dir)/lib/clang/$($(package)_version)/include && \ + mkdir -p $($(package)_staging_prefix_dir)/bin $($(package)_staging_prefix_dir)/include && \ + cp bin/clang $($(package)_staging_prefix_dir)/bin/ &&\ + cp -P bin/clang++ $($(package)_staging_prefix_dir)/bin/ &&\ + cp lib/libLTO.so $($(package)_staging_prefix_dir)/lib/ && \ + cp -rf lib/clang/$($(package)_version)/include/* $($(package)_staging_prefix_dir)/lib/clang/$($(package)_version)/include/ && \ + cp bin/llvm-dsymutil $($(package)_staging_prefix_dir)/bin/$(host)-dsymutil && \ + if `test -d include/c++/`; then cp -rf include/c++/ $($(package)_staging_prefix_dir)/include/; fi && \ + if `test -d lib/c++/`; then cp -rf lib/c++/ $($(package)_staging_prefix_dir)/lib/; fi +endef diff --git a/contrib/depends/packages/native_libtapi.mk b/contrib/depends/packages/native_libtapi.mk index 68c5047e9..56ee087cb 100644 --- a/contrib/depends/packages/native_libtapi.mk +++ b/contrib/depends/packages/native_libtapi.mk @@ -5,9 +5,11 @@ $(package)_download_file=$($(package)_version).tar.gz $(package)_file_name=$(package)-$($(package)_version).tar.gz $(package)_sha256_hash=62e419c12d1c9fad67cc1cd523132bc00db050998337c734c15bc8d73cc02b61 $(package)_build_subdir=build +$(package)_dependencies=native_clang define $(package)_config_cmds echo -n $(build_prefix) > INSTALLPREFIX; \ + CC=$(host_prefix)/native/bin/clang CXX=$(host_prefix)/native/bin/clang++ \ cmake -DCMAKE_INSTALL_PREFIX=$(build_prefix) \ -DLLVM_INCLUDE_TESTS=OFF \ -DCMAKE_BUILD_TYPE=RELEASE \ diff --git a/contrib/depends/packages/packages.mk b/contrib/depends/packages/packages.mk index 93cd07802..416b59801 100644 --- a/contrib/depends/packages/packages.mk +++ b/contrib/depends/packages/packages.mk @@ -34,6 +34,6 @@ mingw32_packages = icu4c sodium $(hardware_packages) mingw32_native_packages = $(hardware_native_packages) ifneq ($(build_os),darwin) -darwin_native_packages += native_cctools native_libtapi +darwin_native_packages += native_clang native_cctools native_libtapi endif From 617f9082fea80751c9796b3e037db562f97cee56 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Wed, 4 May 2022 02:55:40 +0100 Subject: [PATCH 04/11] more... update to clang 9.0.0 --- contrib/depends/packages/native_clang.mk | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/contrib/depends/packages/native_clang.mk b/contrib/depends/packages/native_clang.mk index fc7782e55..115f8f389 100644 --- a/contrib/depends/packages/native_clang.mk +++ b/contrib/depends/packages/native_clang.mk @@ -1,9 +1,9 @@ package=native_clang -$(package)_version=3.7.1 -$(package)_download_path=http://llvm.org/releases/$($(package)_version) -$(package)_download_file=clang+llvm-$($(package)_version)-x86_64-linux-gnu-ubuntu-14.04.tar.xz -$(package)_file_name=clang-llvm-$($(package)_version)-x86_64-linux-gnu-ubuntu-14.04.tar.xz -$(package)_sha256_hash=99b28a6b48e793705228a390471991386daa33a9717cd9ca007fcdde69608fd9 +$(package)_version=9.0.0 +$(package)_download_path=https://releases.llvm.org/$($(package)_version) +$(package)_download_file=clang+llvm-$($(package)_version)-x86_64-linux-gnu-ubuntu-18.04.tar.xz +$(package)_file_name=clang-llvm-$($(package)_version)-x86_64-linux-gnu-ubuntu-18.04.tar.xz +$(package)_sha256_hash=a23b082b30c128c9831dbdd96edad26b43f56624d0ad0ea9edec506f5385038d define $(package)_extract_cmds echo $($(package)_sha256_hash) $($(package)_source) | sha256sum -c &&\ @@ -23,7 +23,7 @@ define $(package)_stage_cmds cp -P bin/clang++ $($(package)_staging_prefix_dir)/bin/ &&\ cp lib/libLTO.so $($(package)_staging_prefix_dir)/lib/ && \ cp -rf lib/clang/$($(package)_version)/include/* $($(package)_staging_prefix_dir)/lib/clang/$($(package)_version)/include/ && \ - cp bin/llvm-dsymutil $($(package)_staging_prefix_dir)/bin/$(host)-dsymutil && \ + cp bin/dsymutil $($(package)_staging_prefix_dir)/bin/$(host)-dsymutil && \ if `test -d include/c++/`; then cp -rf include/c++/ $($(package)_staging_prefix_dir)/include/; fi && \ if `test -d lib/c++/`; then cp -rf lib/c++/ $($(package)_staging_prefix_dir)/lib/; fi endef From fb68465c611ad0c092c3e2fcd6f81b4acce85206 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Wed, 4 May 2022 03:48:57 +0100 Subject: [PATCH 05/11] Boost 1.64 doesn't recognize arm64 darwin --- contrib/depends/packages/boost.mk | 5 +++-- contrib/depends/patches/boost/fix_arm_arch.patch | 11 +++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 contrib/depends/patches/boost/fix_arm_arch.patch diff --git a/contrib/depends/packages/boost.mk b/contrib/depends/packages/boost.mk index 4571d4232..fd06c5393 100644 --- a/contrib/depends/packages/boost.mk +++ b/contrib/depends/packages/boost.mk @@ -4,7 +4,7 @@ $(package)_download_path=https://downloads.sourceforge.net/project/boost/boost/1 $(package)_file_name=$(package)_$($(package)_version).tar.bz2 $(package)_sha256_hash=7bcc5caace97baa948931d712ea5f37038dbb1c5d89b43ad4def4ed7cb683332 $(package)_dependencies=libiconv -$(package)_patches=fix_aroptions.patch +$(package)_patches=fix_aroptions.patch fix_arm_arch.patch define $(package)_set_vars $(package)_config_opts_release=variant=release @@ -13,7 +13,7 @@ $(package)_config_opts=--layout=tagged --build-type=complete --user-config=user- $(package)_config_opts+=threading=multi link=static -sNO_BZIP2=1 -sNO_ZLIB=1 $(package)_config_opts_linux=threadapi=pthread runtime-link=shared $(package)_config_opts_android=threadapi=pthread runtime-link=static target-os=android -$(package)_config_opts_darwin=--toolset=darwin-4.2.1 runtime-link=shared +$(package)_config_opts_darwin=--toolset=darwin runtime-link=shared $(package)_config_opts_mingw32=binary-format=pe target-os=windows threadapi=win32 runtime-link=static $(package)_config_opts_x86_64_mingw32=address-model=64 $(package)_config_opts_i686_mingw32=address-model=32 @@ -30,6 +30,7 @@ endef define $(package)_preprocess_cmds patch -p1 < $($(package)_patch_dir)/fix_aroptions.patch &&\ + patch -p1 < $($(package)_patch_dir)/fix_arm_arch.patch &&\ echo "using $(boost_toolset_$(host_os)) : : $($(package)_cxx) : \"$($(package)_cxxflags) $($(package)_cppflags)\" \"$($(package)_ldflags)\" \"$(boost_archiver_$(host_os))\" \"$($(package)_arflags)\" \"$(host_STRIP)\" \"$(host_RANLIB)\" \"$(host_WINDRES)\" : ;" > user-config.jam endef diff --git a/contrib/depends/patches/boost/fix_arm_arch.patch b/contrib/depends/patches/boost/fix_arm_arch.patch new file mode 100644 index 000000000..3cf6b6f4e --- /dev/null +++ b/contrib/depends/patches/boost/fix_arm_arch.patch @@ -0,0 +1,11 @@ +--- boost_1_64_0/tools/build/src/tools/darwin.jam.O 2017-04-17 03:22:26.000000000 +0100 ++++ boost_1_64_0/tools/build/src/tools/darwin.jam 2022-05-04 17:26:29.984464447 +0000 +@@ -505,7 +505,7 @@ + if $(instruction-set) { + options = -arch$(_)$(instruction-set) ; + } else { +- options = -arch arm ; ++# options = -arch arm ; + } + } + } From fe5c2aec35970c545f50679a06d9231b13104c5a Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Wed, 4 May 2022 06:58:24 +0100 Subject: [PATCH 06/11] Fix arm64 darwin package defs --- contrib/depends/packages/hidapi.mk | 2 +- contrib/depends/packages/ncurses.mk | 2 +- contrib/depends/packages/openssl.mk | 1 + contrib/depends/packages/readline.mk | 4 ++-- contrib/depends/packages/sodium.mk | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/contrib/depends/packages/hidapi.mk b/contrib/depends/packages/hidapi.mk index 8c56f9187..55dd65006 100644 --- a/contrib/depends/packages/hidapi.mk +++ b/contrib/depends/packages/hidapi.mk @@ -9,7 +9,7 @@ $(package)_patches=missing_win_include.patch define $(package)_set_vars $(package)_config_opts=--enable-static --disable-shared $(package)_config_opts+=--prefix=$(host_prefix) -$(package)_config_opts_darwin+=RANLIB="$(host_prefix)/native/bin/x86_64-apple-darwin11-ranlib" AR="$(host_prefix)/native/bin/x86_64-apple-darwin11-ar" CC="$(host_prefix)/native/bin/$($(package)_cc)" +$(package)_config_opts_darwin+=RANLIB="$(host_prefix)/native/bin/$(host)-ranlib" AR="$(host_prefix)/native/bin/$(host)-ar" CC="$(host_prefix)/native/bin/$($(package)_cc)" $(package)_config_opts_linux+=libudev_LIBS="-L$(host_prefix)/lib -ludev" $(package)_config_opts_linux+=libudev_CFLAGS=-I$(host_prefix)/include $(package)_config_opts_linux+=libusb_LIBS="-L$(host_prefix)/lib -lusb-1.0" diff --git a/contrib/depends/packages/ncurses.mk b/contrib/depends/packages/ncurses.mk index d8fdf351c..84087b60a 100644 --- a/contrib/depends/packages/ncurses.mk +++ b/contrib/depends/packages/ncurses.mk @@ -8,7 +8,7 @@ $(package)_patches=fallback.c define $(package)_set_vars $(package)_build_opts=CC="$($(package)_cc)" $(package)_config_env=AR="$($(package)_ar)" RANLIB="$($(package)_ranlib)" CC="$($(package)_cc)" ARFLAGS=$($(package)_arflags) cf_cv_ar_flags="" - $(package)_config_env_darwin=RANLIB="$(host_prefix)/native/bin/x86_64-apple-darwin11-ranlib" AR="$(host_prefix)/native/bin/x86_64-apple-darwin11-ar" CC="$(host_prefix)/native/bin/$($(package)_cc)" + $(package)_config_env_darwin=RANLIB="$(host_prefix)/native/bin/$(host)-ranlib" AR="$(host_prefix)/native/bin/$(host)-ar" CC="$(host_prefix)/native/bin/$($(package)_cc)" $(package)_config_opts=--prefix=$(host_prefix) $(package)_config_opts+=--disable-shared $(package)_config_opts+=--with-build-cc=gcc diff --git a/contrib/depends/packages/openssl.mk b/contrib/depends/packages/openssl.mk index 79c94a30b..0d8478d49 100644 --- a/contrib/depends/packages/openssl.mk +++ b/contrib/depends/packages/openssl.mk @@ -38,6 +38,7 @@ $(package)_config_opts_arm_linux=linux-generic32 $(package)_config_opts_aarch64_linux=linux-generic64 $(package)_config_opts_arm_android=--static android-arm $(package)_config_opts_aarch64_android=--static android-arm64 +$(package)_config_opts_aarch64_darwin=darwin64-arm64-cc $(package)_config_opts_riscv64_linux=linux-generic64 $(package)_config_opts_mipsel_linux=linux-generic32 $(package)_config_opts_mips_linux=linux-generic32 diff --git a/contrib/depends/packages/readline.mk b/contrib/depends/packages/readline.mk index b6e6a451a..1398bb1b5 100644 --- a/contrib/depends/packages/readline.mk +++ b/contrib/depends/packages/readline.mk @@ -8,13 +8,13 @@ $(package)_dependencies=ncurses define $(package)_set_vars $(package)_build_opts=CC="$($(package)_cc)" $(package)_config_env=AR="$($(package)_ar)" RANLIB="$($(package)_ranlib)" CC="$($(package)_cc)" LDFLAGS="-L$(host_prefix)/lib" ARFLAGS=$($(package)_arflags) - $(package)_config_env_darwin=RANLIB="$(host_prefix)/native/bin/x86_64-apple-darwin11-ranlib" AR="$(host_prefix)/native/bin/x86_64-apple-darwin11-ar" CC="$(host_prefix)/native/bin/$($(package)_cc)" + $(package)_config_env_darwin=RANLIB="$(host_prefix)/native/bin/$(host)-ranlib" AR="$(host_prefix)/native/bin/$(host)-ar" CC="$(host_prefix)/native/bin/$($(package)_cc)" $(package)_config_opts+=--prefix=$(host_prefix) $(package)_config_opts+=--exec-prefix=$(host_prefix) $(package)_config_opts+=--host=$(HOST) $(package)_config_opts+=--disable-shared --with-curses $(package)_config_opts_release=--disable-debug-mode - $(package)_config_opts_darwin+=RANLIB="$(host_prefix)/native/bin/x86_64-apple-darwin11-ranlib" AR="$(host_prefix)/native/bin/x86_64-apple-darwin11-ar" CC="$(host_prefix)/native/bin/$($(package)_cc)" + $(package)_config_opts_darwin+=RANLIB="$(host_prefix)/native/bin/$(host)-ranlib" AR="$(host_prefix)/native/bin/$(host)-ar" CC="$(host_prefix)/native/bin/$($(package)_cc)" $(package)_build_opts=CFLAGS="$($(package)_cflags) $($(package)_cppflags) -fPIC" endef diff --git a/contrib/depends/packages/sodium.mk b/contrib/depends/packages/sodium.mk index e2ce9b349..51f08a319 100644 --- a/contrib/depends/packages/sodium.mk +++ b/contrib/depends/packages/sodium.mk @@ -9,7 +9,7 @@ define $(package)_set_vars $(package)_config_opts=--enable-static --disable-shared $(package)_config_opts+=--prefix=$(host_prefix) $(package)_config_opts_android=RANLIB=$($(package)_ranlib) AR=$($(package)_ar) CC=$($(package)_cc) -$(package)_config_opts_darwin=RANLIB="$(host_prefix)/native/bin/x86_64-apple-darwin11-ranlib" AR="$(host_prefix)/native/bin/x86_64-apple-darwin11-ar" CC="$(host_prefix)/native/bin/$($(package)_cc)" +$(package)_config_opts_darwin=RANLIB="$(host_prefix)/native/bin/$(host)-ranlib" AR="$(host_prefix)/native/bin/$(host)-ar" CC="$(host_prefix)/native/bin/$($(package)_cc)" endef define $(package)_config_cmds From e81ab9bc2ce7503d97413cc82d08548144b6193b Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Fri, 6 May 2022 15:59:34 +0100 Subject: [PATCH 07/11] Silence some protobuf link warnings 4 warnings remain but it's better than before --- contrib/depends/packages/protobuf.mk | 5 + .../depends/patches/protobuf/visibility.patch | 159 ++++++++++++++++++ 2 files changed, 164 insertions(+) create mode 100644 contrib/depends/patches/protobuf/visibility.patch diff --git a/contrib/depends/packages/protobuf.mk b/contrib/depends/packages/protobuf.mk index ad1098975..ddec1eb59 100644 --- a/contrib/depends/packages/protobuf.mk +++ b/contrib/depends/packages/protobuf.mk @@ -5,12 +5,17 @@ $(package)_file_name=$(native_$(package)_file_name) $(package)_sha256_hash=$(native_$(package)_sha256_hash) $(package)_dependencies=native_$(package) $(package)_cxxflags=-std=c++11 +$(package)_patches=visibility.patch define $(package)_set_vars $(package)_config_opts=--disable-shared --with-protoc=$(build_prefix)/bin/protoc $(package)_config_opts_linux=--with-pic endef +define $(package)_preprocess_cmds + patch -p0 < $($(package)_patch_dir)/visibility.patch +endef + define $(package)_config_cmds $($(package)_autoconf) AR_FLAGS=$($(package)_arflags) endef diff --git a/contrib/depends/patches/protobuf/visibility.patch b/contrib/depends/patches/protobuf/visibility.patch new file mode 100644 index 000000000..e66d5961f --- /dev/null +++ b/contrib/depends/patches/protobuf/visibility.patch @@ -0,0 +1,159 @@ +--- src/google/protobuf/descriptor.cc.O 2018-07-30 22:16:10.000000000 +0000 ++++ src/google/protobuf/descriptor.cc 2022-05-06 13:38:14.827309092 +0000 +@@ -32,6 +32,9 @@ + // Based on original Protocol Buffers design by + // Sanjay Ghemawat, Jeff Dean, and others. + ++#if defined(__APPLE__) && defined(__arm64__) ++#pragma GCC visibility push(hidden) ++#endif + #include + #include + #include +@@ -7274,3 +7277,6 @@ + + } // namespace protobuf + } // namespace google ++#if defined(__APPLE__) && defined(__arm64__) ++#pragma GCC visibility pop ++#endif +--- src/google/protobuf/extension_set.cc.O 2018-07-23 20:56:42.000000000 +0000 ++++ src/google/protobuf/extension_set.cc 2022-05-06 14:48:55.369877050 +0000 +@@ -32,6 +32,9 @@ + // Based on original Protocol Buffers design by + // Sanjay Ghemawat, Jeff Dean, and others. + ++#if defined(__APPLE__) && defined(__arm64__) ++#pragma GCC visibility push(hidden) ++#endif + #include + #include + #include +@@ -1914,3 +1917,6 @@ + } // namespace internal + } // namespace protobuf + } // namespace google ++#if defined(__APPLE__) && defined(__arm64__) ++#pragma GCC visibility pop ++#endif +--- src/google/protobuf/extension_set_heavy.cc.O 2018-07-30 22:16:10.000000000 +0000 ++++ src/google/protobuf/extension_set_heavy.cc 2022-05-06 14:14:27.847320946 +0000 +@@ -35,6 +35,10 @@ + // Contains methods defined in extension_set.h which cannot be part of the + // lite library because they use descriptors or reflection. + ++#if defined(__APPLE__) && defined(__arm64__) ++#pragma GCC visibility push(hidden) ++#endif ++ + #include + #include + #include +@@ -814,3 +818,6 @@ + } // namespace internal + } // namespace protobuf + } // namespace google ++#if defined(__APPLE__) && defined(__arm64__) ++#pragma GCC visibility pop ++#endif +--- src/google/protobuf/generated_message_reflection.cc.O 2018-07-23 20:56:42.000000000 +0000 ++++ src/google/protobuf/generated_message_reflection.cc 2022-05-06 13:38:49.655540772 +0000 +@@ -32,6 +32,9 @@ + // Based on original Protocol Buffers design by + // Sanjay Ghemawat, Jeff Dean, and others. + ++#if defined(__APPLE__) && defined(__arm64__) ++#pragma GCC visibility push(hidden) ++#endif + #include + #include + +@@ -2420,3 +2423,6 @@ + } // namespace internal + } // namespace protobuf + } // namespace google ++#if defined(__APPLE__) && defined(__arm64__) ++#pragma GCC visibility pop ++#endif +--- src/google/protobuf/map_field.cc.O 2018-07-23 20:56:42.000000000 +0000 ++++ src/google/protobuf/map_field.cc 2022-05-06 13:34:44.913905697 +0000 +@@ -28,6 +28,10 @@ + // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ++#if defined(__APPLE__) && defined(__arm64__) ++#pragma GCC visibility push(hidden) ++#endif ++ + #include + #include + +@@ -462,3 +466,6 @@ + } // namespace internal + } // namespace protobuf + } // namespace google ++#if defined(__APPLE__) && defined(__arm64__) ++#pragma GCC visibility pop ++#endif +--- src/google/protobuf/text_format.cc.O 2018-07-30 22:16:11.000000000 +0000 ++++ src/google/protobuf/text_format.cc 2022-05-06 13:34:58.881999517 +0000 +@@ -32,6 +32,10 @@ + // Based on original Protocol Buffers design by + // Sanjay Ghemawat, Jeff Dean, and others. + ++#if defined(__APPLE__) && defined(__arm64__) ++#pragma GCC visibility push(hidden) ++#endif ++ + #include + #include + #include +@@ -2258,3 +2262,6 @@ + + } // namespace protobuf + } // namespace google ++#if defined(__APPLE__) && defined(__arm64__) ++#pragma GCC visibility pop ++#endif +--- src/google/protobuf/wire_format.cc.O 2018-07-23 20:56:42.000000000 +0000 ++++ src/google/protobuf/wire_format.cc 2022-05-06 13:06:23.294219228 +0000 +@@ -32,6 +32,10 @@ + // Based on original Protocol Buffers design by + // Sanjay Ghemawat, Jeff Dean, and others. + ++#if defined(__APPLE__) && defined(__arm64__) ++#pragma GCC visibility push(hidden) ++#endif ++ + #include + #include + #include +@@ -1445,3 +1449,7 @@ + } // namespace internal + } // namespace protobuf + } // namespace google ++ ++#if defined(__APPLE__) && defined(__arm64__) ++#pragma GCC visibility pop ++#endif +--- src/google/protobuf/stubs/status.cc.O 2018-07-23 20:56:42.000000000 +0000 ++++ src/google/protobuf/stubs/status.cc 2022-05-06 15:18:53.393208814 +0000 +@@ -27,6 +27,11 @@ + // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++#if defined(__APPLE__) && defined(__arm64__) ++#pragma GCC visibility push(hidden) ++#endif ++ + #include + + #include +@@ -132,3 +137,6 @@ + } // namespace util + } // namespace protobuf + } // namespace google ++#if defined(__APPLE__) && defined(__arm64__) ++#pragma GCC visibility pop ++#endif From 7ea1e214c5db6c48e405f8bb3ede8f5ec9b876db Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Thu, 5 May 2022 16:29:11 +0100 Subject: [PATCH 08/11] Make Mac SDK into a regular depends package --- contrib/depends/Makefile | 2 -- contrib/depends/README.md | 11 +---------- contrib/depends/hosts/darwin.mk | 8 +++----- contrib/depends/packages/darwin_sdk.mk | 10 ++++++++++ contrib/depends/packages/packages.mk | 2 +- contrib/depends/toolchain.cmake.in | 2 +- contrib/gitian/DOCKRUN.md | 6 ------ contrib/gitian/README.md | 9 --------- contrib/gitian/dockrun.sh | 5 ----- contrib/gitian/gitian-build.py | 10 ---------- contrib/gitian/gitian-osx.yml | 6 +----- 11 files changed, 17 insertions(+), 54 deletions(-) create mode 100644 contrib/depends/packages/darwin_sdk.mk diff --git a/contrib/depends/Makefile b/contrib/depends/Makefile index 9ffe8a106..3df1d677e 100644 --- a/contrib/depends/Makefile +++ b/contrib/depends/Makefile @@ -2,7 +2,6 @@ SOURCES_PATH ?= $(BASEDIR)/sources BASE_CACHE ?= $(BASEDIR)/built -SDK_PATH ?= $(BASEDIR)/SDKs FALLBACK_DOWNLOAD_PATH ?= https://downloads.getmonero.org/depends-sources BUILD = $(shell ./config.guess) @@ -185,7 +184,6 @@ $(host_prefix)/share/toolchain.cmake : toolchain.cmake.in $(host_prefix)/.stamp_ -e 's|@build_tests@|$(build_tests)|' \ -e 's|@depends@|$(host_cmake)|' \ -e 's|@prefix@|$($(host_arch)_$(host_os)_prefix)|'\ - -e 's|@sdk@|$(SDK_PATH)|'\ -e 's|@arch@|$(host_arch)|'\ $< > $@ $(AT)touch $@ diff --git a/contrib/depends/README.md b/contrib/depends/README.md index f7c0b922f..1aa5b276f 100644 --- a/contrib/depends/README.md +++ b/contrib/depends/README.md @@ -30,7 +30,7 @@ Common `host-platform-triplets` for cross compilation are: - `i686-w64-mingw32` for Win32 - `x86_64-w64-mingw32` for Win64 -- `x86_64-apple-darwin11` for MacOSX +- `x86_64-apple-darwin11` for MacOSX x86_64 - `arm-linux-gnueabihf` for Linux ARM 32 bit - `aarch64-linux-gnu` for Linux ARM 64 bit - `riscv64-linux-gnu` for Linux RISCV 64 bit @@ -43,7 +43,6 @@ The following can be set when running make: make FOO=bar ``` SOURCES_PATH: downloaded sources will be placed here BASE_CACHE: built packages will be placed here -SDK_PATH: Path where sdk's can be found (used by OSX) FALLBACK_DOWNLOAD_PATH: If a source file can't be fetched, try here before giving up DEBUG: disable some optimizations and enable more runtime checking HOST_ID_SALT: Optional salt to use when generating host package ids @@ -59,14 +58,6 @@ download-win: run 'make download-win' to fetch all sources needed for win builds download-linux: run 'make download-linux' to fetch all sources needed for linux builds ``` -#Darwin (macos) builds: - -To build with the x86_64-apple-darwin11 you require the mac os developer tools in MacOSX11.1.sdk. -Download it from apple, or search for it on github. Create a new directoty called SDKs in this -directory and place the entire MacOSX11.1.sdk folder in it. The depends build will then pick it up automatically -(without requiring SDK_PATH). - - #Mingw builds Building for 32/64bit mingw requires switching alternatives to a posix mode diff --git a/contrib/depends/hosts/darwin.mk b/contrib/depends/hosts/darwin.mk index 2226f779c..d8b16f969 100644 --- a/contrib/depends/hosts/darwin.mk +++ b/contrib/depends/hosts/darwin.mk @@ -1,14 +1,12 @@ OSX_MIN_VERSION=10.8 -OSX_SDK_VERSION=11.1 -OSX_SDK=$(SDK_PATH)/MacOSX$(OSX_SDK_VERSION).sdk LD64_VERSION=609 ifeq (aarch64, $(host_arch)) CC_target=arm64-apple-darwin11 else CC_target=$(host) endif -darwin_CC=clang -target $(CC_target) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION) -B$(host_prefix)/native/bin/$(host)- -darwin_CXX=clang++ -target $(CC_target) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) -mlinker-version=$(LD64_VERSION) -stdlib=libc++ -B$(host_prefix)/native/bin/$(host)- +darwin_CC=clang -target $(CC_target) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(host_prefix)/native/SDK/ -mlinker-version=$(LD64_VERSION) -B$(host_prefix)/native/bin/$(host)- +darwin_CXX=clang++ -target $(CC_target) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(host_prefix)/native/SDK/ -mlinker-version=$(LD64_VERSION) -stdlib=libc++ -B$(host_prefix)/native/bin/$(host)- darwin_CFLAGS=-pipe darwin_CXXFLAGS=$(darwin_CFLAGS) @@ -20,4 +18,4 @@ darwin_release_CXXFLAGS=$(darwin_release_CFLAGS) darwin_debug_CFLAGS=-O1 darwin_debug_CXXFLAGS=$(darwin_debug_CFLAGS) -darwin_native_toolchain=native_cctools +darwin_native_toolchain=native_cctools darwin_sdk diff --git a/contrib/depends/packages/darwin_sdk.mk b/contrib/depends/packages/darwin_sdk.mk new file mode 100644 index 000000000..d639c422e --- /dev/null +++ b/contrib/depends/packages/darwin_sdk.mk @@ -0,0 +1,10 @@ +package=darwin_sdk +$(package)_version=11.1 +$(package)_download_path=https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/ +$(package)_file_name=MacOSX$($(package)_version).sdk.tar.xz +$(package)_sha256_hash=68797baaacb52f56f713400de306a58a7ca00b05c3dc6d58f0a8283bcac721f8 + +define $(package)_stage_cmds + mkdir -p $($(package)_staging_dir)/$(host_prefix)/native/SDK &&\ + mv * $($(package)_staging_dir)/$(host_prefix)/native/SDK +endef diff --git a/contrib/depends/packages/packages.mk b/contrib/depends/packages/packages.mk index 416b59801..11e2cb7be 100644 --- a/contrib/depends/packages/packages.mk +++ b/contrib/depends/packages/packages.mk @@ -34,6 +34,6 @@ mingw32_packages = icu4c sodium $(hardware_packages) mingw32_native_packages = $(hardware_native_packages) ifneq ($(build_os),darwin) -darwin_native_packages += native_clang native_cctools native_libtapi +darwin_native_packages += darwin_sdk native_clang native_cctools native_libtapi endif diff --git a/contrib/depends/toolchain.cmake.in b/contrib/depends/toolchain.cmake.in index 3ed97633b..5f9501329 100644 --- a/contrib/depends/toolchain.cmake.in +++ b/contrib/depends/toolchain.cmake.in @@ -95,7 +95,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") SET(BUILD_64 ON) SET(BREW OFF) SET(PORT OFF) - SET(CMAKE_OSX_SYSROOT "@sdk@/MacOSX11.1.sdk/") + SET(CMAKE_OSX_SYSROOT "@prefix@/native/SDK/") SET(CMAKE_OSX_DEPLOYMENT_TARGET "10.08") SET(CMAKE_CXX_STANDARD 14) SET(LLVM_ENABLE_PIC OFF) diff --git a/contrib/gitian/DOCKRUN.md b/contrib/gitian/DOCKRUN.md index 7f44b7914..dabf090c2 100644 --- a/contrib/gitian/DOCKRUN.md +++ b/contrib/gitian/DOCKRUN.md @@ -30,12 +30,6 @@ git clone https://github.com/monero-project/monero.git cd monero/contrib/gitian ``` -If you want Mac binaries included in your build, you need to obtain the MacOS SDK: - -```bash -curl -O https://bitcoincore.org/depends-sources/sdks/MacOSX10.11.sdk.tar.gz -``` - Other User Preparation ---------------------- diff --git a/contrib/gitian/README.md b/contrib/gitian/README.md index c922a2373..5590acf17 100644 --- a/contrib/gitian/README.md +++ b/contrib/gitian/README.md @@ -165,15 +165,6 @@ popd Build the binaries ------------------ -**Note:** if you intend to build MacOS binaries, please follow [these instructions](https://github.com/bitcoin-core/docs/blob/master/gitian-building/gitian-building-mac-os-sdk.md) to get the required SDK. - -Currently working MacOS solution: - -```bash -curl -O https://bitcoincore.org/depends-sources/sdks/MacOSX10.11.sdk.tar.gz -mv MacOSX10.11.sdk.tar.gz builder/inputs -``` - To build the most recent tag (pass in `--docker` if using docker): ```bash diff --git a/contrib/gitian/dockrun.sh b/contrib/gitian/dockrun.sh index ef671116a..396db126b 100755 --- a/contrib/gitian/dockrun.sh +++ b/contrib/gitian/dockrun.sh @@ -53,11 +53,6 @@ docker build --pull -f ${TAG}.Dockerfile -t $TAG . cd .. docker run -v /var/run/docker.sock:/var/run/docker.sock -d --name gitrun $TAG -if [ -f MacOSX11.1.sdk.tar.xz ]; then - docker cp MacOSX11.1.sdk.tar.xz gitrun:$WORKDIR/builder/inputs/ -else - echo "No MacOS SDK found, Mac builds will be omitted" -fi fi diff --git a/contrib/gitian/gitian-build.py b/contrib/gitian/gitian-build.py index 1db337e41..859c2c645 100755 --- a/contrib/gitian/gitian-build.py +++ b/contrib/gitian/gitian-build.py @@ -59,9 +59,6 @@ def rebuild(): for i in args.os: - if i is 'm' and args.nomac: - continue - os_name = platforms[i][0] tag_name = platforms[i][1] suffix = platforms[i][2] @@ -160,13 +157,6 @@ def main(): if not 'LXC_GUEST_IP' in os.environ.keys(): os.environ['LXC_GUEST_IP'] = '10.0.2.5' - # Disable MacOS build if no SDK found - args.nomac = False - if 'm' in args.os and not os.path.isfile('builder/inputs/MacOSX11.1.sdk.tar.xz'): - if args.build: - print('Cannot build for MacOS, SDK does not exist. Will build for other OSes') - args.nomac = True - script_name = os.path.basename(sys.argv[0]) # Signer and version shouldn't be empty if args.signer == '': diff --git a/contrib/gitian/gitian-osx.yml b/contrib/gitian/gitian-osx.yml index 630f7a0d3..b4929e822 100644 --- a/contrib/gitian/gitian-osx.yml +++ b/contrib/gitian/gitian-osx.yml @@ -26,8 +26,7 @@ packages: remotes: - "url": "https://github.com/monero-project/monero.git" "dir": "monero" -files: -- "MacOSX11.1.sdk.tar.xz" +files: [] script: | WRAP_DIR=$HOME/wrapped HOSTS="x86_64-apple-darwin11 aarch64-apple-darwin11" @@ -88,9 +87,6 @@ script: | BASEPREFIX=`pwd`/contrib/depends - mkdir -p ${BASEPREFIX}/SDKs - tar -C ${BASEPREFIX}/SDKs -xf ${BUILD_DIR}/MacOSX11.1.sdk.tar.xz - # Build dependencies for each host export TAR_OPTIONS=--mtime=2000-01-01T12:00:00 for i in $HOSTS; do From 02e6af2fdaa45416f3627e39684a9843fa4e884c Mon Sep 17 00:00:00 2001 From: selsta Date: Thu, 5 May 2022 13:41:05 +0100 Subject: [PATCH 09/11] Update CI for aarch64 mac build --- .github/workflows/depends.yml | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/.github/workflows/depends.yml b/.github/workflows/depends.yml index 9385338de..f20bf949f 100644 --- a/.github/workflows/depends.yml +++ b/.github/workflows/depends.yml @@ -46,10 +46,12 @@ jobs: - name: "x86_64 Linux" host: "x86_64-unknown-linux-gnu" packages: "gperf cmake python3-zmq libdbus-1-dev libharfbuzz-dev" - - name: "Cross-Mac" + - name: "Cross-Mac x86_64" host: "x86_64-apple-darwin11" packages: "cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev python3-setuptools-git" - osx_sdk: "10.11" + - name: "Cross-Mac aarch64" + host: "aarch64-apple-darwin11" + packages: "cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev python3-setuptools-git" - name: "x86_64 Freebsd" host: "x86_64-unknown-freebsd" packages: "clang-8 gperf cmake python3-zmq libdbus-1-dev libharfbuzz-dev" @@ -85,12 +87,6 @@ jobs: run: ${{env.APT_SET_CONF}} - name: install dependencies run: sudo apt update; sudo apt -y install build-essential libtool cmake autotools-dev automake pkg-config bsdmainutils curl git ca-certificates ccache ${{ matrix.toolchain.packages }} - - name: prepare apple-darwin11 - if: ${{ matrix.toolchain.host == 'x86_64-apple-darwin11' }} - run: | - mkdir -p contrib/depends/SDKs contrib/depends/sdk-sources - if [ ! -f contrib/depends/sdk-sources/MacOSX${{ matrix.toolchain.osx_sdk }}.sdk.tar.gz ]; then curl --location --fail https://bitcoincore.org/depends-sources/sdks/MacOSX${{ matrix.toolchain.osx_sdk }}.sdk.tar.gz -o contrib/depends/sdk-sources/MacOSX${{ matrix.toolchain.osx_sdk }}.sdk.tar.gz; fi - if [ -f contrib/depends/sdk-sources/MacOSX${{ matrix.toolchain.osx_sdk }}.sdk.tar.gz ]; then tar -C contrib/depends/SDKs -xf contrib/depends/sdk-sources/MacOSX${{ matrix.toolchain.osx_sdk }}.sdk.tar.gz; fi - name: prepare w64-mingw32 if: ${{ matrix.toolchain.host == 'x86_64-w64-mingw32' || matrix.toolchain.host == 'i686-w64-mingw32' }} run: | From c1d47eb4769d607d4dd97b3e257869b3e2dc6482 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Mon, 9 May 2022 17:39:52 +0100 Subject: [PATCH 10/11] Update randomx: fix Mac linking error Also silence randomx malloc exceptions --- external/randomx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/randomx b/external/randomx index ae8e98b68..85c527a62 160000 --- a/external/randomx +++ b/external/randomx @@ -1 +1 @@ -Subproject commit ae8e98b681766f31d49ac562dd6974906156e07b +Subproject commit 85c527a62301b7b8be89d941020308b1cb92b75c From 5c27fd853f17d12ae6ab94cb01e3ced7cc710e1c Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Mon, 9 May 2022 19:47:33 +0100 Subject: [PATCH 11/11] depends: Package cleanup All patching should be in _preprocess_cmd. config_cmd should just run configure and nothing else before it, otherwise $PATH is broken when it runs. Also remove redundant settings to configure, _autoconf already sets them. We leave explicit AR_FLAGS settings because the builtin rule uses ARFLAGS, and so would leave AR_FLAGS unset otherwise. --- contrib/depends/hosts/darwin.mk | 2 +- contrib/depends/packages/expat.mk | 2 +- contrib/depends/packages/hidapi.mk | 6 ++---- contrib/depends/packages/ncurses.mk | 5 ++--- contrib/depends/packages/readline.mk | 5 +---- contrib/depends/packages/sodium.mk | 13 +++++++------ contrib/depends/packages/unbound.mk | 2 +- 7 files changed, 15 insertions(+), 20 deletions(-) diff --git a/contrib/depends/hosts/darwin.mk b/contrib/depends/hosts/darwin.mk index d8b16f969..79d449054 100644 --- a/contrib/depends/hosts/darwin.mk +++ b/contrib/depends/hosts/darwin.mk @@ -1,7 +1,7 @@ OSX_MIN_VERSION=10.8 LD64_VERSION=609 ifeq (aarch64, $(host_arch)) -CC_target=arm64-apple-darwin11 +CC_target=arm64-apple-$(host_os) else CC_target=$(host) endif diff --git a/contrib/depends/packages/expat.mk b/contrib/depends/packages/expat.mk index 1e1b9dbb8..9516f86ab 100644 --- a/contrib/depends/packages/expat.mk +++ b/contrib/depends/packages/expat.mk @@ -11,7 +11,7 @@ $(package)_config_opts+=--prefix=$(host_prefix) endef define $(package)_config_cmds - $($(package)_autoconf) $($(package)_config_opts) + $($(package)_autoconf) endef define $(package)_build_cmds diff --git a/contrib/depends/packages/hidapi.mk b/contrib/depends/packages/hidapi.mk index 55dd65006..97e204f17 100644 --- a/contrib/depends/packages/hidapi.mk +++ b/contrib/depends/packages/hidapi.mk @@ -9,7 +9,6 @@ $(package)_patches=missing_win_include.patch define $(package)_set_vars $(package)_config_opts=--enable-static --disable-shared $(package)_config_opts+=--prefix=$(host_prefix) -$(package)_config_opts_darwin+=RANLIB="$(host_prefix)/native/bin/$(host)-ranlib" AR="$(host_prefix)/native/bin/$(host)-ar" CC="$(host_prefix)/native/bin/$($(package)_cc)" $(package)_config_opts_linux+=libudev_LIBS="-L$(host_prefix)/lib -ludev" $(package)_config_opts_linux+=libudev_CFLAGS=-I$(host_prefix)/include $(package)_config_opts_linux+=libusb_LIBS="-L$(host_prefix)/lib -lusb-1.0" @@ -18,12 +17,11 @@ $(package)_config_opts_linux+=--with-pic endef define $(package)_preprocess_cmds - patch -p1 < $($(package)_patch_dir)/missing_win_include.patch + patch -p1 < $($(package)_patch_dir)/missing_win_include.patch && ./bootstrap endef define $(package)_config_cmds - ./bootstrap &&\ - $($(package)_autoconf) $($(package)_config_opts) AR_FLAGS=$($(package)_arflags) + $($(package)_autoconf) AR_FLAGS=$($(package)_arflags) endef define $(package)_build_cmds diff --git a/contrib/depends/packages/ncurses.mk b/contrib/depends/packages/ncurses.mk index 84087b60a..fb1d92c65 100644 --- a/contrib/depends/packages/ncurses.mk +++ b/contrib/depends/packages/ncurses.mk @@ -7,8 +7,7 @@ $(package)_patches=fallback.c define $(package)_set_vars $(package)_build_opts=CC="$($(package)_cc)" - $(package)_config_env=AR="$($(package)_ar)" RANLIB="$($(package)_ranlib)" CC="$($(package)_cc)" ARFLAGS=$($(package)_arflags) cf_cv_ar_flags="" - $(package)_config_env_darwin=RANLIB="$(host_prefix)/native/bin/$(host)-ranlib" AR="$(host_prefix)/native/bin/$(host)-ar" CC="$(host_prefix)/native/bin/$($(package)_cc)" + $(package)_config_env=cf_cv_ar_flags="" $(package)_config_opts=--prefix=$(host_prefix) $(package)_config_opts+=--disable-shared $(package)_config_opts+=--with-build-cc=gcc @@ -51,7 +50,7 @@ define $(package)_preprocess_cmds endef define $(package)_config_cmds - ./configure $($(package)_config_opts) + $($(package)_autoconf) endef define $(package)_build_cmds diff --git a/contrib/depends/packages/readline.mk b/contrib/depends/packages/readline.mk index 1398bb1b5..957b6454c 100644 --- a/contrib/depends/packages/readline.mk +++ b/contrib/depends/packages/readline.mk @@ -7,19 +7,16 @@ $(package)_dependencies=ncurses define $(package)_set_vars $(package)_build_opts=CC="$($(package)_cc)" - $(package)_config_env=AR="$($(package)_ar)" RANLIB="$($(package)_ranlib)" CC="$($(package)_cc)" LDFLAGS="-L$(host_prefix)/lib" ARFLAGS=$($(package)_arflags) - $(package)_config_env_darwin=RANLIB="$(host_prefix)/native/bin/$(host)-ranlib" AR="$(host_prefix)/native/bin/$(host)-ar" CC="$(host_prefix)/native/bin/$($(package)_cc)" $(package)_config_opts+=--prefix=$(host_prefix) $(package)_config_opts+=--exec-prefix=$(host_prefix) $(package)_config_opts+=--host=$(HOST) $(package)_config_opts+=--disable-shared --with-curses $(package)_config_opts_release=--disable-debug-mode - $(package)_config_opts_darwin+=RANLIB="$(host_prefix)/native/bin/$(host)-ranlib" AR="$(host_prefix)/native/bin/$(host)-ar" CC="$(host_prefix)/native/bin/$($(package)_cc)" $(package)_build_opts=CFLAGS="$($(package)_cflags) $($(package)_cppflags) -fPIC" endef define $(package)_config_cmds - ./configure $($(package)_config_opts) + $($(package)_autoconf) endef define $(package)_build_cmds diff --git a/contrib/depends/packages/sodium.mk b/contrib/depends/packages/sodium.mk index 51f08a319..87b34599e 100644 --- a/contrib/depends/packages/sodium.mk +++ b/contrib/depends/packages/sodium.mk @@ -8,15 +8,16 @@ $(package)_patches=disable-glibc-getrandom-getentropy.patch fix-whitespace.patch define $(package)_set_vars $(package)_config_opts=--enable-static --disable-shared $(package)_config_opts+=--prefix=$(host_prefix) -$(package)_config_opts_android=RANLIB=$($(package)_ranlib) AR=$($(package)_ar) CC=$($(package)_cc) -$(package)_config_opts_darwin=RANLIB="$(host_prefix)/native/bin/$(host)-ranlib" AR="$(host_prefix)/native/bin/$(host)-ar" CC="$(host_prefix)/native/bin/$($(package)_cc)" endef -define $(package)_config_cmds +define $(package)_preprocess_cmds patch -p1 < $($(package)_patch_dir)/disable-glibc-getrandom-getentropy.patch &&\ - ./autogen.sh &&\ - patch -p1 < $($(package)_patch_dir)/fix-whitespace.patch &&\ - $($(package)_autoconf) $($(package)_config_opts) AR_FLAGS=$($(package)_arflags) + autoconf &&\ + patch -p1 < $($(package)_patch_dir)/fix-whitespace.patch +endef + +define $(package)_config_cmds + $($(package)_autoconf) AR_FLAGS=$($(package)_arflags) endef define $(package)_build_cmds diff --git a/contrib/depends/packages/unbound.mk b/contrib/depends/packages/unbound.mk index 2d870d63f..06504a7cb 100644 --- a/contrib/depends/packages/unbound.mk +++ b/contrib/depends/packages/unbound.mk @@ -13,7 +13,7 @@ define $(package)_set_vars endef define $(package)_config_cmds - $($(package)_autoconf) $($(package)_config_opts) + $($(package)_autoconf) endef define $(package)_build_cmds