Browse Source

adjustments for cross build of aarch64 binaries on x86_64 linux

pull/123/head
miodragpop 4 years ago
parent
commit
9544bd0ffc
  1. 47
      configure.ac
  2. 1
      depends/.gitignore
  3. 1
      depends/Makefile
  4. 3
      depends/config.site.in
  5. 11
      depends/funcs.mk
  6. 5
      depends/packages/bdb.mk
  7. 2
      depends/packages/libcurl.mk
  8. 18
      depends/packages/librustzcash.mk
  9. 2
      depends/packages/packages.mk
  10. 7
      depends/packages/proton.mk
  11. 53
      depends/packages/rust.mk
  12. 542
      depends/patches/proton/minimal-build.patch
  13. 6
      src/Makefile.am
  14. 5
      src/cc/Makefile_custom
  15. 2
      src/cc/makecustom
  16. 2
      src/cryptoconditions/Makefile.am
  17. 2
      src/cryptoconditions/src/include/secp256k1/Makefile.am
  18. 64
      zcutil/build-cross-aarch64.sh

47
configure.ac

@ -334,11 +334,11 @@ case $host in
dnl AC_CHECK_PROG([BREW],brew, brew) dnl AC_CHECK_PROG([BREW],brew, brew)
dnl if test x$BREW = xbrew; then dnl if test x$BREW = xbrew; then
dnl These Homebrew packages may be keg-only, meaning that they won't be found dnl These Homebrew packages may be keg-only, meaning that they won't be found
dnl in expected paths because they may conflict with system files. Ask dnl in expected paths because they may conflict with system files. Ask
dnl Homebrew where each one is located, then adjust paths accordingly. dnl Homebrew where each one is located, then adjust paths accordingly.
dnl It's safe to add these paths even if the functionality is disabled by dnl It's safe to add these paths even if the functionality is disabled by
dnl the user (--without-wallet for example). dnl the user (--without-wallet for example).
dnl openssl_prefix=`$BREW --prefix openssl 2>/dev/null` dnl openssl_prefix=`$BREW --prefix openssl 2>/dev/null`
dnl bdb_prefix=`$BREW --prefix berkeley-db4 2>/dev/null` dnl bdb_prefix=`$BREW --prefix berkeley-db4 2>/dev/null`
@ -507,15 +507,24 @@ if test x$use_hardening != xno; then
HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -D_FORTIFY_SOURCE=2" HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -D_FORTIFY_SOURCE=2"
],[AC_MSG_ERROR(Cannot enable -D_FORTIFY_SOURCE=2)]) ],[AC_MSG_ERROR(Cannot enable -D_FORTIFY_SOURCE=2)])
#AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"],[AC_MSG_ERROR(Cannot enable RELRO)]) if test x$BUILD_OS = xdarwin || test x$TARGET_OS = xwindows; then
#AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"],[AC_MSG_ERROR(Cannot enable BIND_NOW)]) # Xcode's ld (at least ld64-302.3) doesn't support -z
# mingw-w64's ld (at least mingw-w64 4.0.4-2) also appears to not support -z
AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"],[AC_MSG_WARN(Cannot enable RELRO)])
AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"],[AC_MSG_WARN(Cannot enable BIND_NOW)])
else
AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"],[AC_MSG_ERROR(Cannot enable RELRO)])
AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"],[AC_MSG_ERROR(Cannot enable BIND_NOW)])
fi
if test x$TARGET_OS != xwindows; then if test x$TARGET_OS != xwindows; then
# All windows code is PIC, forcing it on just adds useless compile warnings # All windows code is PIC, forcing it on just adds useless compile warnings
AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"],[AC_MSG_ERROR(Cannot enable RELRO)]) AX_CHECK_COMPILE_FLAG([-fPIE],[PIE_FLAGS="-fPIE"],[AC_MSG_ERROR(Cannot enable -fPIE)])
AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"],[AC_MSG_ERROR(Cannot enable BIND_NOW)]) if test x$BUILD_OS = xdarwin; then
AX_CHECK_COMPILE_FLAG([-fPIE],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fPIE"],[AC_MSG_ERROR(Cannot enable -fPIE)]) AX_CHECK_LINK_FLAG([[-Wl,-pie]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-pie"],[AC_MSG_ERROR(Cannot enable -Wl,-pie)])
AX_CHECK_LINK_FLAG([[-pie]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -pie"],[AC_MSG_ERROR(Cannot enable -pie)]) else
AX_CHECK_LINK_FLAG([[-pie]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -pie"],[AC_MSG_ERROR(Cannot enable -pie)])
fi
else else
# These are only available on Windows. # These are only available on Windows.
AX_CHECK_LINK_FLAG([[-Wl,--dynamicbase]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--dynamicbase"],[AC_MSG_ERROR(Cannot enable --dynamicbase)]) AX_CHECK_LINK_FLAG([[-Wl,--dynamicbase]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--dynamicbase"],[AC_MSG_ERROR(Cannot enable --dynamicbase)])
@ -700,7 +709,7 @@ if test x$use_pkgconfig = xyes; then
) )
else else
# BUG: Fix this: # BUG: Fix this:
echo 'BUG: configure does not yet check for the following dependencies if pkg-config is not on the system: libcrypto++, gmp' echo 'BUG: configure does not yet check for the following dependencies if pkg-config is not on the system: libcrypto++, libgmp'
AC_CHECK_HEADER([openssl/crypto.h],,AC_MSG_ERROR(libcrypto headers missing)) AC_CHECK_HEADER([openssl/crypto.h],,AC_MSG_ERROR(libcrypto headers missing))
AC_CHECK_LIB([crypto], [main],CRYPTO_LIBS=-lcrypto, AC_MSG_ERROR(libcrypto missing)) AC_CHECK_LIB([crypto], [main],CRYPTO_LIBS=-lcrypto, AC_MSG_ERROR(libcrypto missing))
@ -756,6 +765,14 @@ fi
fi fi
fi fi
# These packages don't provide pkgconfig config files across all
# platforms, so we use older autoconf detection mechanisms:
AC_CHECK_HEADER([gmp.h],,AC_MSG_ERROR(libgmp headers missing))
AC_CHECK_LIB([gmp],[[__gmpn_sub_n]],GMP_LIBS=-lgmp, [AC_MSG_ERROR(libgmp missing)])
AC_CHECK_HEADER([gmpxx.h],,AC_MSG_ERROR(libgmpxx headers missing))
AC_CHECK_LIB([gmpxx],[main],GMPXX_LIBS=-lgmpxx, [AC_MSG_ERROR(libgmpxx missing)])
RUST_LIBS="-lrustzcash" RUST_LIBS="-lrustzcash"
case $host in case $host in
*mingw*) *mingw*)
@ -950,7 +967,7 @@ case $host in
;; ;;
esac esac
echo echo
echo "Options used to compile and link:" echo "Options used to compile and link:"
echo " with wallet = $enable_wallet" echo " with wallet = $enable_wallet"
echo " with proton = $use_proton" echo " with proton = $use_proton"
@ -958,7 +975,7 @@ echo " with zmq = $use_zmq"
echo " with test = $use_tests" echo " with test = $use_tests"
echo " debug enabled = $enable_debug" echo " debug enabled = $enable_debug"
echo " werror = $enable_werror" echo " werror = $enable_werror"
echo echo
echo " target os = $TARGET_OS" echo " target os = $TARGET_OS"
echo " build os = $BUILD_OS" echo " build os = $BUILD_OS"
echo echo
@ -969,4 +986,4 @@ echo " CXX = $CXX"
echo " CXXFLAGS = $CXXFLAGS" echo " CXXFLAGS = $CXXFLAGS"
echo " LDFLAGS = $LDFLAGS" echo " LDFLAGS = $LDFLAGS"
echo " ARFLAGS = $ARFLAGS" echo " ARFLAGS = $ARFLAGS"
echo echo

1
depends/.gitignore

@ -7,3 +7,4 @@ x86_64*
i686* i686*
mips* mips*
arm* arm*
aarch64*

1
depends/Makefile

@ -112,6 +112,7 @@ $(host_prefix)/share/config.site : config.site.in $(host_prefix)/.stamp_$(final_
-e 's|@CXXFLAGS@|$(strip $(host_CXXFLAGS) $(host_$(release_type)_CXXFLAGS))|' \ -e 's|@CXXFLAGS@|$(strip $(host_CXXFLAGS) $(host_$(release_type)_CXXFLAGS))|' \
-e 's|@CPPFLAGS@|$(strip $(host_CPPFLAGS) $(host_$(release_type)_CPPFLAGS))|' \ -e 's|@CPPFLAGS@|$(strip $(host_CPPFLAGS) $(host_$(release_type)_CPPFLAGS))|' \
-e 's|@LDFLAGS@|$(strip $(host_LDFLAGS) $(host_$(release_type)_LDFLAGS))|' \ -e 's|@LDFLAGS@|$(strip $(host_LDFLAGS) $(host_$(release_type)_LDFLAGS))|' \
-e 's|@rust_target@|$(call rust_target,rust,$(canonical_host),$(host_os))|' \
-e 's|@no_wallet@|$(NO_WALLET)|' \ -e 's|@no_wallet@|$(NO_WALLET)|' \
-e 's|@debug@|$(DEBUG)|' \ -e 's|@debug@|$(DEBUG)|' \
$< > $@ $< > $@

3
depends/config.site.in

@ -13,6 +13,9 @@ if test -z $enable_wallet && test -n "@no_wallet@"; then
enable_wallet=no enable_wallet=no
fi fi
RUST_TARGET="@rust_target@"
RUST_VENDORED_SOURCES="$depends_prefix/vendored-sources"
if test x@host_os@ = xdarwin; then if test x@host_os@ = xdarwin; then
BREW=no BREW=no
PORT=no PORT=no

11
depends/funcs.mk

@ -40,7 +40,7 @@ endef
define vendor_crate_source define vendor_crate_source
mkdir -p $($(1)_staging_prefix_dir)/$(CRATE_REGISTRY) && \ mkdir -p $($(1)_staging_prefix_dir)/$(CRATE_REGISTRY) && \
cp -r $($(1)_extract_dir) $($(1)_staging_prefix_dir)/$(CRATE_REGISTRY)/$($(1)_crate_name) && \ cp -r $($(1)_extract_dir) $($(1)_staging_prefix_dir)/$(CRATE_REGISTRY)/$($(1)_crate_versioned_name) && \
cd $($(1)_staging_prefix_dir)/$(CRATE_REGISTRY)/$($(1)_crate_versioned_name) && \ cd $($(1)_staging_prefix_dir)/$(CRATE_REGISTRY)/$($(1)_crate_versioned_name) && \
rm -r `basename $($(1)_patch_dir)` .stamp_* .$($(1)_file_name).hash rm -r `basename $($(1)_patch_dir)` .stamp_* .$($(1)_file_name).hash
endef endef
@ -59,8 +59,8 @@ $(eval $(1)_build_id:=$(shell echo -n "$($(1)_build_id_long)" | $(build_SHA256SU
final_build_id_long+=$($(package)_build_id_long) final_build_id_long+=$($(package)_build_id_long)
#override platform specific files and hashes #override platform specific files and hashes
$(eval $(1)_file_name=$(if $($(1)_file_name_$(host_os)),$($(1)_file_name_$(host_os)),$($(1)_file_name))) $(eval $(1)_file_name=$(if $($(1)_exact_file_name),$($(1)_exact_file_name),$(if $($(1)_file_name_$(host_os)),$($(1)_file_name_$(host_os)),$($(1)_file_name))))
$(eval $(1)_sha256_hash=$(if $($(1)_sha256_hash_$(host_os)),$($(1)_sha256_hash_$(host_os)),$($(1)_sha256_hash))) $(eval $(1)_sha256_hash=$(if $($(1)_exact_sha256_hash),$($(1)_exact_sha256_hash),$(if $($(1)_sha256_hash_$(host_os)),$($(1)_sha256_hash_$(host_os)),$($(1)_sha256_hash))))
#compute package-specific paths #compute package-specific paths
$(1)_build_subdir?=. $(1)_build_subdir?=.
@ -91,8 +91,9 @@ $(1)_download_path_fixed=$(subst :,\:,$$($(1)_download_path))
#default commands #default commands
# The default behavior for tar will try to set ownership when running as uid 0 and may not succeed, --no-same-owner disables this behavior
$(1)_fetch_cmds ?= $(call fetch_file,$(1),$(subst \:,:,$$($(1)_download_path_fixed)),$$($(1)_download_file),$($(1)_file_name),$($(1)_sha256_hash)) $(1)_fetch_cmds ?= $(call fetch_file,$(1),$(subst \:,:,$$($(1)_download_path_fixed)),$$($(1)_download_file),$($(1)_file_name),$($(1)_sha256_hash))
$(1)_extract_cmds ?= mkdir -p $$($(1)_extract_dir) && echo "$$($(1)_sha256_hash) $$($(1)_source)" > $$($(1)_extract_dir)/.$$($(1)_file_name).hash && $(build_SHA256SUM) -c $$($(1)_extract_dir)/.$$($(1)_file_name).hash && tar --strip-components=1 -xf $$($(1)_source) $(1)_extract_cmds ?= mkdir -p $$($(1)_extract_dir) && echo "$$($(1)_sha256_hash) $$($(1)_source)" > $$($(1)_extract_dir)/.$$($(1)_file_name).hash && $(build_SHA256SUM) -c $$($(1)_extract_dir)/.$$($(1)_file_name).hash && tar --no-same-owner --strip-components=1 -xf $$($(1)_source)
$(1)_preprocess_cmds ?= $(1)_preprocess_cmds ?=
$(1)_build_cmds ?= $(1)_build_cmds ?=
$(1)_config_cmds ?= $(1)_config_cmds ?=
@ -193,7 +194,7 @@ $($(1)_preprocessed): | $($(1)_dependencies) $($(1)_extracted)
$(AT)touch $$@ $(AT)touch $$@
$($(1)_configured): | $($(1)_preprocessed) $($(1)_configured): | $($(1)_preprocessed)
$(AT)echo Configuring $(1)... $(AT)echo Configuring $(1)...
$(AT)rm -rf $(host_prefix); mkdir -p $(host_prefix)/lib; cd $(host_prefix); $(foreach package,$($(1)_all_dependencies), tar xf $($(package)_cached); ) $(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)mkdir -p $$(@D)
$(AT)+cd $$(@D); $($(1)_config_env) $(call $(1)_config_cmds, $(1)) $(AT)+cd $$(@D); $($(1)_config_env) $(call $(1)_config_cmds, $(1))
$(AT)touch $$@ $(AT)touch $$@

5
depends/packages/bdb.mk

@ -9,6 +9,11 @@ define $(package)_set_vars
$(package)_config_opts=--disable-shared --enable-cxx --disable-replication $(package)_config_opts=--disable-shared --enable-cxx --disable-replication
$(package)_config_opts_mingw32=--enable-mingw $(package)_config_opts_mingw32=--enable-mingw
$(package)_config_opts_linux=--with-pic $(package)_config_opts_linux=--with-pic
$(package)_config_opts_freebsd=--with-pic
ifneq ($(build_os),darwin)
$(package)_config_opts_darwin=--disable-atomicsupport
endif
$(package)_config_opts_aarch64=--disable-atomicsupport
$(package)_cxxflags=-std=c++11 $(package)_cxxflags=-std=c++11
endef endef

2
depends/packages/libcurl.mk

@ -4,7 +4,7 @@ $(package)_dependencies=openssl
$(package)_download_path=https://curl.haxx.se/download $(package)_download_path=https://curl.haxx.se/download
$(package)_file_name=curl-$($(package)_version).tar.gz $(package)_file_name=curl-$($(package)_version).tar.gz
$(package)_sha256_hash=52af3361cf806330b88b4fe6f483b6844209d47ae196ac46da4de59bb361ab02 $(package)_sha256_hash=52af3361cf806330b88b4fe6f483b6844209d47ae196ac46da4de59bb361ab02
$(package)_config_opts_linux=--disable-shared --enable-static --prefix=$(host_prefix) --host=x86_64-unknown-linux-gnu $(package)_config_opts_linux=--disable-shared --enable-static --prefix=$(host_prefix) --host=$(host)
$(package)_config_opts_mingw32=--enable-mingw --disable-shared --enable-static --prefix=$(host_prefix) --host=x86_64-w64-mingw32 $(package)_config_opts_mingw32=--enable-mingw --disable-shared --enable-static --prefix=$(host_prefix) --host=x86_64-w64-mingw32
$(package)_config_opts_darwin=--disable-shared --enable-static --prefix=$(host_prefix) $(package)_config_opts_darwin=--disable-shared --enable-static --prefix=$(host_prefix)
$(package)_cflags_darwin=-mmacosx-version-min=10.9 $(package)_cflags_darwin=-mmacosx-version-min=10.9

18
depends/packages/librustzcash.mk

@ -8,15 +8,29 @@ $(package)_git_commit=06da3b9ac8f278e5d4ae13088cf0a4c03d2c13f5
$(package)_dependencies=rust $(rust_crates) $(package)_dependencies=rust $(rust_crates)
$(package)_patches=cargo.config 0001-Start-using-cargo-clippy-for-CI.patch remove-dev-dependencies.diff no-groth16.patch $(package)_patches=cargo.config 0001-Start-using-cargo-clippy-for-CI.patch remove-dev-dependencies.diff no-groth16.patch
$(package)_rust_target=$(if $(rust_rust_target_$(canonical_host)),$(rust_rust_target_$(canonical_host)),$(canonical_host))
ifeq ($(host_os),mingw32) ifeq ($(host_os),mingw32)
$(package)_library_file=target/x86_64-pc-windows-gnu/release/rustzcash.lib $(package)_library_file=target/x86_64-pc-windows-gnu/release/rustzcash.lib
else ifneq ($(canonical_host),$(build))
ifeq ($(host_os),darwin)
$(package)_library_file=target/x86_64-apple-darwin/release/librustzcash.a
else
$(package)_library_file=target/$($(package)_rust_target)/release/librustzcash.a
endif
else else
$(package)_library_file=target/release/librustzcash.a $(package)_library_file=target/release/librustzcash.a
endif endif
define $(package)_set_vars define $(package)_set_vars
$(package)_build_opts=--frozen --release $(package)_build_opts=--frozen --release
$(package)_build_opts_mingw32=--target=x86_64-pc-windows-gnu ifneq ($(canonical_host),$(build))
ifeq ($(host_os),darwin)
$(package)_build_opts+=--target=x86_64-apple-darwin
else
$(package)_build_opts+=--target=$($(package)_rust_target)
endif
endif
endef endef
define $(package)_preprocess_cmds define $(package)_preprocess_cmds
@ -27,7 +41,7 @@ define $(package)_preprocess_cmds
endef endef
define $(package)_build_cmds define $(package)_build_cmds
cargo build --package librustzcash $($(package)_build_opts) $(host_prefix)/native/bin/cargo build --package librustzcash $($(package)_build_opts)
endef endef
define $(package)_stage_cmds define $(package)_stage_cmds

2
depends/packages/packages.mk

@ -1,5 +1,3 @@
rust_packages := rust librustzcash
ifeq ($(build_os),darwin) ifeq ($(build_os),darwin)
zcash_packages := libgmp libsodium utfcpp zcash_packages := libgmp libsodium utfcpp
else else

7
depends/packages/proton.mk

@ -1,8 +1,8 @@
package=proton package=proton
$(package)_version=0.26.0 $(package)_version=0.30.0
$(package)_download_path=https://archive.apache.org/dist/qpid/proton/$($(package)_version) $(package)_download_path=https://archive.apache.org/dist/qpid/proton/$($(package)_version)
$(package)_file_name=qpid-proton-$($(package)_version).tar.gz $(package)_file_name=qpid-proton-$($(package)_version).tar.gz
$(package)_sha256_hash=0eddac870f0085b9aeb0c9da333bd3f53fedb7c872164171a7cc06761ddbbd75 $(package)_sha256_hash=e37fd8fb13391c3996f927839969a8f66edf35612392d0611eeac6e39e48dd33
$(package)_patches=minimal-build.patch $(package)_patches=minimal-build.patch
define $(package)_preprocess_cmds define $(package)_preprocess_cmds
@ -11,7 +11,7 @@ define $(package)_preprocess_cmds
endef endef
define $(package)_config_cmds define $(package)_config_cmds
cd build; cmake .. -DCMAKE_CXX_STANDARD=11 -DCMAKE_INSTALL_PREFIX=/ -DSYSINSTALL_BINDINGS=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_PYTHON=OFF -DBUILD_PHP=OFF -DBUILD_JAVA=OFF -DBUILD_PERL=OFF -DBUILD_RUBY=OFF -DBUILD_JAVASCRIPT=OFF -DBUILD_GO=OFF -DBUILD_STATIC_LIBS=ON cd build; cmake .. -DCMAKE_CXX_STANDARD=11 -DCMAKE_INSTALL_PREFIX=/ -DSYSINSTALL_BINDINGS=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_PYTHON=OFF -DBUILD_RUBY=OFF -DBUILD_GO=OFF -DBUILD_STATIC_LIBS=ON -DLIB_SUFFIX= -DENABLE_JSONCPP=
endef endef
define $(package)_build_cmds define $(package)_build_cmds
@ -21,3 +21,4 @@ endef
define $(package)_stage_cmds define $(package)_stage_cmds
cd build; $(MAKE) VERBOSE=1 DESTDIR=$($(package)_staging_prefix_dir) install cd build; $(MAKE) VERBOSE=1 DESTDIR=$($(package)_staging_prefix_dir) install
endef endef

53
depends/packages/rust.mk

@ -1,28 +1,33 @@
package=rust package=rust
$(package)_version=1.32.0 $(package)_version=1.42.0
$(package)_download_path=https://static.rust-lang.org/dist $(package)_download_path=https://static.rust-lang.org/dist
$(package)_file_name_linux=rust-$($(package)_version)-x86_64-unknown-linux-gnu.tar.gz $(package)_file_name_linux=rust-$($(package)_version)-x86_64-unknown-linux-gnu.tar.gz
$(package)_sha256_hash_linux=e024698320d76b74daf0e6e71be3681a1e7923122e3ebd03673fcac3ecc23810 $(package)_sha256_hash_linux=7d1e07ad9c8a33d8d039def7c0a131c5917aa3ea0af3d0cc399c6faf7b789052
$(package)_file_name_darwin=rust-$($(package)_version)-x86_64-apple-darwin.tar.gz $(package)_file_name_darwin=rust-$($(package)_version)-x86_64-apple-darwin.tar.gz
$(package)_sha256_hash_darwin=f0dfba507192f9b5c330b5984ba71d57d434475f3d62bd44a39201e36fa76304 $(package)_sha256_hash_darwin=db1055c46e0d54b99da05e88c71fea21b3897e74a4f5ff9390e934f3f050c0a8
$(package)_file_name_mingw32=rust-$($(package)_version)-x86_64-pc-windows-gnu.tar.gz $(package)_file_name_freebsd=rust-$($(package)_version)-x86_64-unknown-freebsd.tar.gz
$(package)_sha256_hash_mingw32=358e1435347c67dbf33aa9cad6fe501a833d6633ed5d5aa1863d5dffa0349be9 $(package)_sha256_hash_freebsd=230bcf17e4383fba85d3c87fe25d17737459fe561a5f4668fe70dcac2da4e17c
ifeq ($(build_os),darwin) # Mapping from GCC canonical hosts to Rust targets
$(package)_file_name=$($(package)_file_name_darwin) # If a mapping is not present, we assume they are identical, unless $host_os is
$(package)_sha256_hash=$($(package)_sha256_hash_darwin) # "darwin", in which case we assume x86_64-apple-darwin.
else ifeq ($(host_os),mingw32) $(package)_rust_target_x86_64-w64-mingw32=x86_64-pc-windows-gnu
$(package)_file_name=$($(package)_file_name_mingw32)
$(package)_sha256_hash=$($(package)_sha256_hash_mingw32) # Mapping from Rust targets to SHA-256 hashes
else $(package)_rust_std_sha256_hash_aarch64-unknown-linux-gnu=1343f51fc87049327233cee8941629c3d7dfdc425d359385f93665de3d46711b
$(package)_file_name=$($(package)_file_name_linux) $(package)_rust_std_sha256_hash_x86_64-apple-darwin=1d61e9ed5d29e1bb4c18e13d551c6d856c73fb8b410053245dc6e0d3b3a0e92c
$(package)_sha256_hash=$($(package)_sha256_hash_linux) $(package)_rust_std_sha256_hash_x86_64-pc-windows-gnu=8a8389f3860df6f42fbf8b76a62ddc7b9b6fe6d0fb526dcfc42faab1005bfb6d
endif
define rust_target
$(if $($(1)_rust_target_$(2)),$($(1)_rust_target_$(2)),$(if $(findstring darwin,$(3)),x86_64-apple-darwin,$(2)))
endef
ifeq ($(host_os),mingw32) ifneq ($(canonical_host),$(build))
$(package)_rust_target=$(call rust_target,$(package),$(canonical_host),$(host_os))
$(package)_exact_file_name=rust-std-$($(package)_version)-$($(package)_rust_target).tar.gz
$(package)_exact_sha256_hash=$($(package)_rust_std_sha256_hash_$($(package)_rust_target))
$(package)_build_subdir=buildos $(package)_build_subdir=buildos
$(package)_extra_sources = $($(package)_file_name_$(build_os)) $(package)_extra_sources=$($(package)_file_name_$(build_os))
define $(package)_fetch_cmds 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)_download_path),$($(package)_download_file),$($(package)_file_name),$($(package)_sha256_hash)) && \
@ -34,19 +39,19 @@ define $(package)_extract_cmds
echo "$($(package)_sha256_hash) $($(package)_source)" > $($(package)_extract_dir)/.$($(package)_file_name).hash && \ echo "$($(package)_sha256_hash) $($(package)_source)" > $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_sha256_hash_$(build_os)) $($(package)_source_dir)/$($(package)_file_name_$(build_os))" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \ echo "$($(package)_sha256_hash_$(build_os)) $($(package)_source_dir)/$($(package)_file_name_$(build_os))" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
$(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \ $(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \
mkdir mingw32 && \ mkdir $(canonical_host) && \
tar --strip-components=1 -xf $($(package)_source) -C mingw32 && \ tar --strip-components=1 -xf $($(package)_source) -C $(canonical_host) && \
mkdir buildos && \ mkdir buildos && \
tar --strip-components=1 -xf $($(package)_source_dir)/$($(package)_file_name_$(build_os)) -C buildos tar --strip-components=1 -xf $($(package)_source_dir)/$($(package)_file_name_$(build_os)) -C buildos
endef endef
define $(package)_stage_cmds define $(package)_stage_cmds
./install.sh --destdir=$($(package)_staging_dir) --prefix=$(host_prefix)/native --disable-ldconfig && \ bash ./install.sh --destdir=$($(package)_staging_dir) --prefix=$(host_prefix)/native --disable-ldconfig && \
cp -r ../mingw32/rust-std-x86_64-pc-windows-gnu/lib/rustlib/x86_64-pc-windows-gnu $($(package)_staging_dir)$(host_prefix)/native/lib/rustlib ../$(canonical_host)/install.sh --destdir=$($(package)_staging_dir) --prefix=$(host_prefix)/native --disable-ldconfig
endef endef
else else
define $(package)_stage_cmds define $(package)_stage_cmds
./install.sh --destdir=$($(package)_staging_dir) --prefix=$(host_prefix)/native --disable-ldconfig bash ./install.sh --destdir=$($(package)_staging_dir) --prefix=$(host_prefix)/native --disable-ldconfig
endef endef
endif endif

542
depends/patches/proton/minimal-build.patch

@ -1,288 +1,314 @@
From 03f5fc0826115edbfca468261b70c0daf627f488 Mon Sep 17 00:00:00 2001 diff -ur a/c/CMakeLists.txt b/c/CMakeLists.txt
From: Simon <simon@bitcartel.com> --- a/c/CMakeLists.txt 2019-12-09 07:17:00.000000000 -0700
Date: Thu, 27 Apr 2017 17:15:59 -0700 +++ b/c/CMakeLists.txt 2020-01-08 16:15:26.837987469 -0700
Subject: [PATCH] Enable C++11, build static library and cpp bindings with minimal dependencies. @@ -428,18 +428,18 @@
# Can't use target_link_libraries() because cmake 2.8.12 doesn't allow object libraries as the first param
--- # otherwise for cmake 3.9 and on this would be:
CMakeLists.txt | 13 +++++++------ # target_link_libraries (qpid-proton-core-objects ${SSL_LIB} ${SASL_LIB} ${TIME_LIB} ${PLATFORM_LIBS})
examples/cpp/CMakeLists.txt | 1 + -target_compile_definitions(qpid-proton-core-objects PRIVATE $<TARGET_PROPERTY:qpid-proton-core,COMPILE_DEFINITIONS>)
proton-c/CMakeLists.txt | 32 +++++++++++++++---------------- -target_compile_options (qpid-proton-core-objects PRIVATE $<TARGET_PROPERTY:qpid-proton-core,COMPILE_OPTIONS>)
proton-c/bindings/CMakeLists.txt | 6 +++--- -target_include_directories(qpid-proton-core-objects PRIVATE $<TARGET_PROPERTY:qpid-proton-core,INCLUDE_DIRECTORIES>)
proton-c/bindings/cpp/CMakeLists.txt | 24 +++++++++++------------ -
proton-c/bindings/cpp/docs/CMakeLists.txt | 2 +- -add_library (qpid-proton-core SHARED $<TARGET_OBJECTS:qpid-proton-core-objects>)
proton-c/docs/api/CMakeLists.txt | 2 +- -target_link_libraries (qpid-proton-core ${SSL_LIB} ${SASL_LIB} ${TIME_LIB} ${PLATFORM_LIBS})
7 files changed, 41 insertions(+), 39 deletions(-) -set_target_properties (qpid-proton-core
- PROPERTIES
diff --git a/CMakeLists.txt b/CMakeLists.txt - VERSION "${PN_LIB_CORE_VERSION}"
index b538ffd..4a5e787 100644 - SOVERSION "${PN_LIB_CORE_MAJOR_VERSION}"
--- a/CMakeLists.txt - LINK_FLAGS "${CATCH_UNDEFINED} ${LTO}"
+++ b/CMakeLists.txt -)
@@ -18,14 +18,15 @@ +#target_compile_definitions(qpid-proton-core-objects PRIVATE $<TARGET_PROPERTY:qpid-proton-core,COMPILE_DEFINITIONS>)
# +#target_compile_options (qpid-proton-core-objects PRIVATE $<TARGET_PROPERTY:qpid-proton-core,COMPILE_OPTIONS>)
cmake_minimum_required (VERSION 2.8.7) +#target_include_directories(qpid-proton-core-objects PRIVATE $<TARGET_PROPERTY:qpid-proton-core,INCLUDE_DIRECTORIES>)
+
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") +#add_library (qpid-proton-core SHARED $<TARGET_OBJECTS:qpid-proton-core-objects>)
project (Proton C) +#target_link_libraries (qpid-proton-core ${SSL_LIB} ${SASL_LIB} ${TIME_LIB} ${PLATFORM_LIBS})
+#set_target_properties (qpid-proton-core
# Enable C++ now for examples and bindings subdirectories, but make it optional. +# PROPERTIES
enable_language(CXX OPTIONAL) +# VERSION "${PN_LIB_CORE_VERSION}"
+# SOVERSION "${PN_LIB_CORE_MAJOR_VERSION}"
# Enable testing +# LINK_FLAGS "${CATCH_UNDEFINED} ${LTO}"
-enable_testing() +#)
-include (CTest)
+#enable_testing() if (BUILD_STATIC_LIBS)
+#include (CTest) add_library (qpid-proton-core-static STATIC ${qpid-proton-core-src})
@@ -454,14 +454,14 @@
# Pull in local cmake modules ${qpid-proton-include-extra}
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/tools/cmake/Modules/") )
@@ -141,7 +142,7 @@ set (BINDINGS_DIR ${LIB_INSTALL_DIR}/proton/bindings)
-add_library (qpid-proton SHARED $<TARGET_OBJECTS:qpid-proton-core-objects> ${qpid-proton-noncore-src})
set (SYSINSTALL_BINDINGS OFF CACHE BOOL "If SYSINSTALL_BINDINGS is OFF then proton bindings will be installed underneath ${BINDINGS_DIR} and each user will need to modify their interpreter configuration to load the appropriate binding. If SYSINSTALL_BINDINGS is ON, then each language interpreter will be queried for the appropriate directory and proton bindings will be installed and available system wide with no additional per user configuration.") -target_link_libraries (qpid-proton LINK_PRIVATE ${SSL_LIB} ${SASL_LIB} ${TIME_LIB} ${PLATFORM_LIBS} ${PROACTOR_LIBS})
-set_target_properties (qpid-proton
-set (BINDING_LANGS PERL PHP PYTHON RUBY) - PROPERTIES
+#set (BINDING_LANGS PERL PHP PYTHON RUBY) - VERSION "${PN_LIB_LEGACY_VERSION}"
- SOVERSION "${PN_LIB_LEGACY_MAJOR_VERSION}"
foreach (LANG ${BINDING_LANGS}) - LINK_FLAGS "${CATCH_UNDEFINED} ${LTO}"
set (SYSINSTALL_${LANG} OFF CACHE BOOL "Install ${LANG} bindings into interpreter specified location.") -)
@@ -156,10 +157,10 @@ set (PROTON_SHARE ${SHARE_INSTALL_DIR}/proton-${PN_VERSION}) +# add_library (qpid-proton SHARED $<TARGET_OBJECTS:qpid-proton-core-objects> ${qpid-proton-noncore-src})
# End of variables used during install +# target_link_libraries (qpid-proton LINK_PRIVATE ${SSL_LIB} ${SASL_LIB} ${TIME_LIB} ${PLATFORM_LIBS} ${PROACTOR_LIBS})
+# set_target_properties (qpid-proton
# Check for valgrind here so tests under proton-c/ and examples/ can use it. +# PROPERTIES
-find_program(VALGRIND_EXE valgrind DOC "Location of the valgrind program") +# VERSION "${PN_LIB_LEGACY_VERSION}"
+#find_program(VALGRIND_EXE valgrind DOC "Location of the valgrind program") +# SOVERSION "${PN_LIB_LEGACY_MAJOR_VERSION}"
mark_as_advanced (VALGRIND_EXE) +# LINK_FLAGS "${CATCH_UNDEFINED} ${LTO}"
+# )
-option(ENABLE_VALGRIND "Use valgrind to detect run-time problems" ON)
+#option(ENABLE_VALGRIND "Use valgrind to detect run-time problems" ON) if (BUILD_STATIC_LIBS)
if (ENABLE_VALGRIND) add_library(qpid-proton-static STATIC ${qpid-proton-core-src} ${qpid-proton-noncore-src})
if (NOT VALGRIND_EXE) @@ -482,15 +482,15 @@
message(STATUS "Can't locate the valgrind command; no run-time error detection")
@@ -171,7 +172,7 @@ if (ENABLE_VALGRIND) if (qpid-proton-proactor)
endif (ENABLE_VALGRIND) set(HAS_PROACTOR True)
- add_library (qpid-proton-proactor SHARED ${qpid-proton-proactor})
- target_link_libraries (qpid-proton-proactor LINK_PUBLIC qpid-proton-core)
- target_link_libraries (qpid-proton-proactor LINK_PRIVATE ${PLATFORM_LIBS} ${PROACTOR_LIBS})
- set_target_properties (qpid-proton-proactor
- PROPERTIES
- VERSION "${PN_LIB_PROACTOR_VERSION}"
- SOVERSION "${PN_LIB_PROACTOR_MAJOR_VERSION}"
- LINK_FLAGS "${CATCH_UNDEFINED} ${LTO}"
- )
+ # add_library (qpid-proton-proactor SHARED ${qpid-proton-proactor})
+ # target_link_libraries (qpid-proton-proactor LINK_PUBLIC qpid-proton-core)
+ # target_link_libraries (qpid-proton-proactor LINK_PRIVATE ${PLATFORM_LIBS} ${PROACTOR_LIBS})
+ # set_target_properties (qpid-proton-proactor
+ # PROPERTIES
+ # VERSION "${PN_LIB_PROACTOR_VERSION}"
+ # SOVERSION "${PN_LIB_PROACTOR_MAJOR_VERSION}"
+ # LINK_FLAGS "${CATCH_UNDEFINED} ${LTO}"
+ # )
if (BUILD_STATIC_LIBS)
add_library (qpid-proton-proactor-static STATIC ${qpid-proton-proactor})
endif(BUILD_STATIC_LIBS)
@@ -500,11 +500,11 @@
if (BUILD_STATIC_LIBS)
set(STATIC_LIBS qpid-proton-static qpid-proton-core-static)
endif()
-install(TARGETS qpid-proton qpid-proton-core ${STATIC_LIBS}
- EXPORT proton
- RUNTIME DESTINATION bin
- ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
- LIBRARY DESTINATION ${LIB_INSTALL_DIR})
+# install(TARGETS qpid-proton qpid-proton-core ${STATIC_LIBS}
+# EXPORT proton
+# RUNTIME DESTINATION bin
+# ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
+# LIBRARY DESTINATION ${LIB_INSTALL_DIR})
# Install windows pdb files
if (MSVC)
@@ -520,11 +520,11 @@
if (BUILD_STATIC_LIBS)
set(STATIC_LIBS qpid-proton-proactor-static)
endif()
- install(TARGETS qpid-proton-proactor ${STATIC_LIBS}
- EXPORT proton
- RUNTIME DESTINATION bin
- ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
- LIBRARY DESTINATION ${LIB_INSTALL_DIR})
+ # install(TARGETS qpid-proton-proactor ${STATIC_LIBS}
+ # EXPORT proton
+ # RUNTIME DESTINATION bin
+ # ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
+ # LIBRARY DESTINATION ${LIB_INSTALL_DIR})
# Install windows pdb files
if (MSVC)
@@ -576,10 +576,10 @@
${CMAKE_CURRENT_BINARY_DIR}/ProtonConfigVersion.cmake
DESTINATION ${LIB_INSTALL_DIR}/cmake/Proton)
add_subdirectory(proton-c) -add_subdirectory(docs)
-add_subdirectory(examples) -add_subdirectory(examples)
+#add_subdirectory(examples) -add_subdirectory(tests)
-add_subdirectory(tools)
install (FILES LICENSE README.md +# add_subdirectory(docs)
DESTINATION ${PROTON_SHARE}) +# add_subdirectory(examples)
diff --git a/examples/cpp/CMakeLists.txt b/examples/cpp/CMakeLists.txt +# add_subdirectory(tests)
index 304d899..f4877b4 100644 +# add_subdirectory(tools)
--- a/examples/cpp/CMakeLists.txt
+++ b/examples/cpp/CMakeLists.txt install (DIRECTORY examples/
@@ -17,6 +17,7 @@ DESTINATION "${PROTON_SHARE}/examples/c"
# under the License. diff -ur a/CMakeLists.txt b/CMakeLists.txt
# --- a/CMakeLists.txt 2019-12-09 07:17:00.000000000 -0700
+++ b/CMakeLists.txt 2019-12-19 18:11:57.128248724 -0700
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") @@ -24,7 +24,7 @@
find_package(ProtonCpp REQUIRED) set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/tools/cmake/Modules")
set (CMAKE_THREAD_PREFER_PTHREAD TRUE)
include_directories(${ProtonCpp_INCLUDE_DIRS})
diff --git a/proton-c/CMakeLists.txt b/proton-c/CMakeLists.txt
index 8edb661..dc7b99c 100644
--- a/proton-c/CMakeLists.txt
+++ b/proton-c/CMakeLists.txt
@@ -22,24 +22,24 @@ include(CheckSymbolExists)
include(soversion.cmake)
-add_custom_target(docs)
-add_custom_target(doc DEPENDS docs)
+#add_custom_target(docs)
+#add_custom_target(doc DEPENDS docs)
# Set the default SSL/TLS implementation
-find_package(OpenSSL)
+#find_package(OpenSSL)
find_package(PythonInterp REQUIRED)
-find_package(SWIG)
+#find_package(SWIG)
# FindSwig.cmake "forgets" make its outputs advanced like a good citizen
mark_as_advanced(SWIG_DIR SWIG_EXECUTABLE SWIG_VERSION)
# See if Cyrus SASL is available -include (CTest)
-find_library(CYRUS_SASL_LIBRARY sasl2) +# include (CTest)
-find_path(CYRUS_SASL_INCLUDE_DIR sasl/sasl.h PATH_SUFFIXES include) include (CheckLanguage)
-find_package_handle_standard_args(CyrusSASL DEFAULT_MSG CYRUS_SASL_LIBRARY CYRUS_SASL_INCLUDE_DIR) include (CheckLibraryExists)
+#find_library(CYRUS_SASL_LIBRARY sasl2) include (CheckSymbolExists)
+#find_path(CYRUS_SASL_INCLUDE_DIR sasl/sasl.h PATH_SUFFIXES include) @@ -33,13 +33,13 @@
+#find_package_handle_standard_args(CyrusSASL DEFAULT_MSG CYRUS_SASL_LIBRARY CYRUS_SASL_INCLUDE_DIR) find_package (OpenSSL)
mark_as_advanced(CYRUS_SASL_LIBRARY CYRUS_SASL_INCLUDE_DIR) find_package (Threads)
find_package (PythonInterp REQUIRED)
# Find saslpasswd2 executable to generate test config -find_package (SWIG)
-find_program(SASLPASSWD_EXE saslpasswd2 DOC "Program used to make SASL user db for testing") +# find_package (SWIG)
+#find_program(SASLPASSWD_EXE saslpasswd2 DOC "Program used to make SASL user db for testing") find_package (CyrusSASL)
mark_as_advanced(SASLPASSWD_EXE)
if(WIN32 AND NOT CYGWIN)
@@ -315,8 +315,8 @@ pn_absolute_install_dir(EXEC_PREFIX "." ${CMAKE_INSTALL_PREFIX})
pn_absolute_install_dir(LIBDIR ${LIB_INSTALL_DIR} ${CMAKE_INSTALL_PREFIX})
pn_absolute_install_dir(INCLUDEDIR ${INCLUDE_INSTALL_DIR} ${CMAKE_INSTALL_PREFIX})
-add_subdirectory(docs/api)
-add_subdirectory(../tests/tools/apps/c ../tests/tools/apps/c)
+#add_subdirectory(docs/api)
+#add_subdirectory(../tests/tools/apps/c ../tests/tools/apps/c)
# for full source distribution:
set (qpid-proton-platform-all
@@ -507,7 +507,7 @@ if (BUILD_WITH_CXX)
endif (BUILD_WITH_CXX)
add_library ( -enable_testing ()
- qpid-proton-core SHARED +#enable_testing ()
+ qpid-proton-core STATIC
${qpid-proton-core}
${qpid-proton-layers}
${qpid-proton-platform}
@@ -527,7 +527,7 @@ set_target_properties (
)
add_library( # Set up runtime checks (valgrind, sanitizers etc.)
- qpid-proton SHARED -include(tests/RuntimeCheck.cmake)
+ qpid-proton STATIC +# include(tests/RuntimeCheck.cmake)
# Proton Core
${qpid-proton-core}
${qpid-proton-layers}
@@ -629,7 +629,7 @@ install (FILES
# c tests: ## Variables used across components
-add_subdirectory(src/tests) @@ -260,7 +260,7 @@
+#add_subdirectory(src/tests)
if (CMAKE_SYSTEM_NAME STREQUAL Windows) set (SYSINSTALL_BINDINGS OFF CACHE BOOL "If SYSINSTALL_BINDINGS is OFF then proton bindings will be installed underneath ${BINDINGS_DIR} and each user will need to modify their interpreter configuration to load the appropriate binding. If SYSINSTALL_BINDINGS is ON, then each language interpreter will be queried for the appropriate directory and proton bindings will be installed and available system wide with no additional per user configuration.")
# No change needed for windows already use correct separator
@@ -712,7 +712,7 @@ if (BUILD_PYTHON)
endif (BUILD_PYTHON) -set (BINDING_LANGS PYTHON RUBY)
+# set (BINDING_LANGS PYTHON RUBY)
-find_program(RUBY_EXE "ruby") foreach (LANG ${BINDING_LANGS})
+#find_program(RUBY_EXE "ruby") set (SYSINSTALL_${LANG} OFF CACHE BOOL "Install ${LANG} bindings into interpreter specified location.")
if (RUBY_EXE AND BUILD_RUBY) @@ -315,7 +315,7 @@
set (rb_root "${pn_test_root}/ruby")
set (rb_src "${CMAKE_CURRENT_SOURCE_DIR}/bindings/ruby")
@@ -751,8 +751,8 @@ if (RUBY_EXE AND BUILD_RUBY)
else (DEFAULT_RUBY_TESTING)
message(STATUS "Skipping Ruby tests: missing dependencies")
endif (DEFAULT_RUBY_TESTING)
-else (RUBY_EXE)
- message (STATUS "Cannot find ruby, skipping ruby tests")
+#else (RUBY_EXE)
+# message (STATUS "Cannot find ruby, skipping ruby tests")
endif() endif()
mark_as_advanced (RUBY_EXE RSPEC_EXE)
diff --git a/proton-c/bindings/CMakeLists.txt b/proton-c/bindings/CMakeLists.txt
index 6b88384..d1a50a5 100644
--- a/proton-c/bindings/CMakeLists.txt
+++ b/proton-c/bindings/CMakeLists.txt
@@ -19,14 +19,14 @@
# Add bindings that do not require swig here - the directory name must be the same as the binding name
# See below for swig bindings
-set(BINDINGS javascript cpp go)
+set(BINDINGS cpp)
# Prerequisites for javascript.
#
# It uses a C/C++ to JavaScript cross-compiler called emscripten (https://github.com/kripken/emscripten). Emscripten takes C/C++
# and compiles it into a highly optimisable subset of JavaScript called asm.js (http://asmjs.org/) that can be
# aggressively optimised and run at near-native speed (usually between 1.5 to 10 times slower than native C/C++).
-find_package(Emscripten)
+#find_package(Emscripten)
if (EMSCRIPTEN_FOUND)
set (DEFAULT_JAVASCRIPT ON)
endif (EMSCRIPTEN_FOUND)
@@ -37,7 +37,7 @@ if (CMAKE_CXX_COMPILER)
endif (CMAKE_CXX_COMPILER)
# Prerequisites for Go # Prerequisites for Go
-find_program(GO_EXE go) -find_program(GO_EXE go)
+#find_program(GO_EXE go) +# find_program(GO_EXE go)
mark_as_advanced(GO_EXE) mark_as_advanced(GO_EXE)
if (GO_EXE) if (GO_EXE)
if(WIN32) set (DEFAULT_GO ON)
diff --git a/proton-c/bindings/cpp/CMakeLists.txt b/proton-c/bindings/cpp/CMakeLists.txt diff -ur a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt
index 0cc4024..796fe29 100644 --- a/cpp/CMakeLists.txt 2019-12-09 07:17:00.000000000 -0700
--- a/proton-c/bindings/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt 2020-01-08 16:20:18.855394195 -0700
+++ b/proton-c/bindings/cpp/CMakeLists.txt @@ -174,30 +174,30 @@
@@ -16,7 +16,7 @@ set (CMAKE_DEBUG_POSTFIX "d")
# specific language governing permissions and limitations endif ()
# under the License.
#
-
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
include(cpp.cmake) # Compiler checks
include_directories(
@@ -89,7 +89,7 @@ set_source_files_properties (
COMPILE_FLAGS "${LTO}"
)
-add_library(qpid-proton-cpp SHARED ${qpid-proton-cpp-source}) -add_library(qpid-proton-cpp SHARED ${qpid-proton-cpp-source})
+add_library(qpid-proton-cpp STATIC ${qpid-proton-cpp-source}) +# add_library(qpid-proton-cpp SHARED ${qpid-proton-cpp-source})
if(BUILD_STATIC_LIBS)
target_link_libraries (qpid-proton-cpp ${PLATFORM_LIBS} qpid-proton) add_library(qpid-proton-cpp-static STATIC ${qpid-proton-cpp-source})
set(STATIC_LIBS qpid-proton-cpp-static)
@@ -120,8 +120,8 @@ endif (MSVC) endif(BUILD_STATIC_LIBS)
-target_link_libraries (qpid-proton-cpp LINK_PRIVATE ${PLATFORM_LIBS} qpid-proton-core qpid-proton-proactor ${CONNECT_CONFIG_LIBS})
+# target_link_libraries (qpid-proton-cpp LINK_PRIVATE ${PLATFORM_LIBS} qpid-proton-core qpid-proton-proactor ${CONNECT_CONFIG_LIBS})
-set_target_properties (
- qpid-proton-cpp
- PROPERTIES
- LINKER_LANGUAGE CXX
- VERSION "${PN_LIB_CPP_VERSION}"
- SOVERSION "${PN_LIB_CPP_MAJOR_VERSION}"
- LINK_FLAGS "${CATCH_UNDEFINED} ${LTO}"
- )
+# set_target_properties (
+# qpid-proton-cpp
+# PROPERTIES
+# LINKER_LANGUAGE CXX
+# VERSION "${PN_LIB_CPP_VERSION}"
+# SOVERSION "${PN_LIB_CPP_MAJOR_VERSION}"
+# LINK_FLAGS "${CATCH_UNDEFINED} ${LTO}"
+# )
## Install
-install(TARGETS qpid-proton-cpp ${STATIC_LIBS}
- EXPORT proton-cpp
- RUNTIME DESTINATION bin
- ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
- LIBRARY DESTINATION ${LIB_INSTALL_DIR})
+# install(TARGETS qpid-proton-cpp ${STATIC_LIBS}
+# EXPORT proton-cpp
+# RUNTIME DESTINATION bin
+# ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
+# LIBRARY DESTINATION ${LIB_INSTALL_DIR})
# Install windows qpid-proton-cpp pdb files
if (MSVC)
@@ -209,12 +209,12 @@
install (DIRECTORY "include/proton" DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.hpp") install (DIRECTORY "include/proton" DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.hpp")
install (FILES "${CMAKE_CURRENT_BINARY_DIR}/config_presets.hpp" DESTINATION "${INCLUDE_INSTALL_DIR}/proton/internal")
-install (DIRECTORY "examples/"
- DESTINATION "${PROTON_SHARE}/examples/cpp"
- USE_SOURCE_PERMISSIONS
- PATTERN "ProtonCppConfig.cmake" EXCLUDE)
+# install (DIRECTORY "examples/"
+# DESTINATION "${PROTON_SHARE}/examples/cpp"
+# USE_SOURCE_PERMISSIONS
+# PATTERN "ProtonCppConfig.cmake" EXCLUDE)
-add_subdirectory(docs) -add_subdirectory(examples)
-add_subdirectory(${CMAKE_SOURCE_DIR}/tests/tools/apps/cpp ${CMAKE_BINARY_DIR}/tests/tools/apps/cpp) +# add_subdirectory(examples)
+#add_subdirectory(docs) add_subdirectory(docs)
+#add_subdirectory(${CMAKE_SOURCE_DIR}/tests/tools/apps/cpp ${CMAKE_BINARY_DIR}/tests/tools/apps/cpp)
# Pkg config file # Pkg config file
configure_file( @@ -268,40 +268,40 @@
@@ -171,12 +171,12 @@ macro(add_cpp_test test) set(test_env ${test_env} "PATH=$<TARGET_FILE_DIR:qpid-proton>")
endif () endif()
endmacro(add_cpp_test)
-macro(add_cpp_test test)
- add_executable (${test} src/${test}.cpp)
- target_link_libraries (${test} qpid-proton-cpp ${PLATFORM_LIBS})
- add_test (NAME cpp-${test}
- COMMAND ${PN_ENV_SCRIPT} -- ${test_env} ${TEST_EXE_PREFIX_CMD} $<TARGET_FILE:${test}> ${ARGN})
-endmacro(add_cpp_test)
-
-add_cpp_test(codec_test) -add_cpp_test(codec_test)
+#add_cpp_test(codec_test) -add_cpp_test(connection_driver_test)
#add_cpp_test(engine_test)
-add_cpp_test(thread_safe_test)
-add_cpp_test(interop_test ${CMAKE_SOURCE_DIR}/tests) -add_cpp_test(interop_test ${CMAKE_SOURCE_DIR}/tests)
-add_cpp_test(message_test) -add_cpp_test(message_test)
-add_cpp_test(map_test)
-add_cpp_test(scalar_test) -add_cpp_test(scalar_test)
-add_cpp_test(value_test) -add_cpp_test(value_test)
-add_cpp_test(container_test) -add_cpp_test(container_test)
-add_cpp_test(url_test) -add_cpp_test(reconnect_test)
+#add_cpp_test(thread_safe_test) -add_cpp_test(link_test)
+#add_cpp_test(interop_test ${CMAKE_SOURCE_DIR}/tests) -add_cpp_test(credit_test)
+#add_cpp_test(message_test) -if (ENABLE_JSONCPP)
+#add_cpp_test(scalar_test) - add_cpp_test(connect_config_test)
+#add_cpp_test(value_test) - target_link_libraries(connect_config_test qpid-proton-core) # For pn_sasl_enabled
+#add_cpp_test(container_test) - set_tests_properties(cpp-connect_config_test PROPERTIES WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
+#add_cpp_test(url_test) - # Test data and output directories for connect_config_test
diff --git a/proton-c/bindings/cpp/docs/CMakeLists.txt b/proton-c/bindings/cpp/docs/CMakeLists.txt - file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/testdata" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
index d512d15..8576867 100644 -endif()
--- a/proton-c/bindings/cpp/docs/CMakeLists.txt +# macro(add_cpp_test test)
+++ b/proton-c/bindings/cpp/docs/CMakeLists.txt +# add_executable (${test} src/${test}.cpp)
@@ -17,7 +17,7 @@ +# target_link_libraries (${test} qpid-proton-cpp ${PLATFORM_LIBS})
# under the License. +# add_test (NAME cpp-${test}
# +# COMMAND ${PN_ENV_SCRIPT} -- ${test_env} ${TEST_EXE_PREFIX_CMD} $<TARGET_FILE:${test}> ${ARGN})
+# endmacro(add_cpp_test)
-find_package(Doxygen) +#
+#find_package(Doxygen) +# add_cpp_test(codec_test)
+# add_cpp_test(connection_driver_test)
if (DOXYGEN_FOUND) +# add_cpp_test(interop_test ${CMAKE_SOURCE_DIR}/tests)
configure_file ( +# add_cpp_test(message_test)
diff --git a/proton-c/docs/api/CMakeLists.txt b/proton-c/docs/api/CMakeLists.txt +# add_cpp_test(map_test)
index 7756e48..71ebb93 100644 +# add_cpp_test(scalar_test)
--- a/proton-c/docs/api/CMakeLists.txt +# add_cpp_test(value_test)
+++ b/proton-c/docs/api/CMakeLists.txt +# add_cpp_test(container_test)
@@ -17,7 +17,7 @@ +# add_cpp_test(reconnect_test)
# under the License. +# add_cpp_test(link_test)
# +# add_cpp_test(credit_test)
+# if (ENABLE_JSONCPP)
-find_package(Doxygen) +# add_cpp_test(connect_config_test)
+#find_package(Doxygen) +# target_link_libraries(connect_config_test qpid-proton-core) # For pn_sasl_enabled
if (DOXYGEN_FOUND) +# set_tests_properties(cpp-connect_config_test PROPERTIES WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/user.doxygen.in +# # Test data and output directories for connect_config_test
${CMAKE_CURRENT_BINARY_DIR}/user.doxygen) +# file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/testdata" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
-- +# endif()
2.7.4
# TODO aconway 2018-10-31: Catch2 tests
# This is a simple example of a C++ test using the Catch2 framework.
# See c/tests/ for more interesting examples.
# Eventually all the C++ tests will migrate to Catch2.
-include_directories(${CMAKE_SOURCE_DIR}/tests/include)
-add_executable(cpp-test src/cpp-test.cpp src/url_test.cpp)
-target_link_libraries(cpp-test qpid-proton-cpp ${PLATFORM_LIBS})
+#include_directories(${CMAKE_SOURCE_DIR}/tests/include)
+#add_executable(cpp-test src/cpp-test.cpp src/url_test.cpp)
+#target_link_libraries(cpp-test qpid-proton-cpp ${PLATFORM_LIBS})
macro(add_catch_test tag)
add_test (

6
src/Makefile.am

@ -65,13 +65,13 @@ LIBBITCOIN_WALLET=libbitcoin_wallet.a
endif endif
$(LIBSECP256K1): $(wildcard secp256k1/src/*) $(wildcard secp256k1/include/*) $(LIBSECP256K1): $(wildcard secp256k1/src/*) $(wildcard secp256k1/include/*)
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F) OPTFLAGS="-O2 -march=x86-64 -g " $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F) OPTFLAGS="-O2 -g "
$(LIBUNIVALUE): $(wildcard univalue/lib/*) $(LIBUNIVALUE): $(wildcard univalue/lib/*)
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F) OPTFLAGS="-O2 -march=x86-64 -g " $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F) OPTFLAGS="-O2 -g "
$(LIBCRYPTOCONDITIONS): $(wildcard cryptoconditions/src/*) $(wildcard cryptoconditions/include/*) $(LIBCRYPTOCONDITIONS): $(wildcard cryptoconditions/src/*) $(wildcard cryptoconditions/include/*)
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F) OPTFLAGS="-O2 -march=x86-64 -g " $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F) OPTFLAGS="-O2 -g "
# Make is not made aware of per-object dependencies to avoid limiting building parallelization # Make is not made aware of per-object dependencies to avoid limiting building parallelization
# But to build the less dependent modules first, we manually select their order here: # But to build the less dependent modules first, we manually select their order here:

5
src/cc/Makefile_custom

@ -2,6 +2,7 @@ SHELL = /bin/sh
CC = gcc CC = gcc
CC_DARWIN = g++-8 CC_DARWIN = g++-8
CC_WIN = x86_64-w64-mingw32-gcc-posix CC_WIN = x86_64-w64-mingw32-gcc-posix
CC_ARM64 = aarch64-linux-gnu-g++
CFLAGS_DARWIN = -DBUILD_CUSTOMCC -std=c++11 -arch x86_64 -I../secp256k1/include -I../../depends/$(shell echo `../..//depends/config.guess`/include) -I../univalue/include -I../cryptoconditions/include -I../cryptoconditions/src -I../cryptoconditions/src/asn -I.. -I. -fPIC -Wl,-undefined -Wl,dynamic_lookup -Wno-write-strings -shared -dynamiclib CFLAGS_DARWIN = -DBUILD_CUSTOMCC -std=c++11 -arch x86_64 -I../secp256k1/include -I../../depends/$(shell echo `../..//depends/config.guess`/include) -I../univalue/include -I../cryptoconditions/include -I../cryptoconditions/src -I../cryptoconditions/src/asn -I.. -I. -fPIC -Wl,-undefined -Wl,dynamic_lookup -Wno-write-strings -shared -dynamiclib
CFLAGS = -Wno-write-strings -DBUILD_CUSTOMCC -std=c++11 -I../secp256k1/include -I../../depends/$(shell echo `../..//depends/config.guess`/include) -I../univalue/include -I../cryptoconditions/include -I../cryptoconditions/src -I../cryptoconditions/src/asn -I.. -I. -fPIC -shared CFLAGS = -Wno-write-strings -DBUILD_CUSTOMCC -std=c++11 -I../secp256k1/include -I../../depends/$(shell echo `../..//depends/config.guess`/include) -I../univalue/include -I../cryptoconditions/include -I../cryptoconditions/src -I../cryptoconditions/src/asn -I.. -I. -fPIC -shared
CFLAGS_WIN = -Wno-write-strings -DBUILD_CUSTOMCC -std=c++11 -I../secp256k1/include -I../../depends/x86_64-w64-mingw32/include -I../univalue/include -I../cryptoconditions/include -I../cryptoconditions/src -I../cryptoconditions/src/asn -I.. -I. -fPIC -shared CFLAGS_WIN = -Wno-write-strings -DBUILD_CUSTOMCC -std=c++11 -I../secp256k1/include -I../../depends/x86_64-w64-mingw32/include -I../univalue/include -I../cryptoconditions/include -I../cryptoconditions/src -I../cryptoconditions/src/asn -I.. -I. -fPIC -shared
@ -28,6 +29,10 @@ else ifeq ($(HOST),x86_64-w64-mingw32)
$(CC_WIN) $(CFLAGS_WIN) $(DEBUGFLAGS) -o $(TARGET_WIN) -c $(SOURCES) $(CC_WIN) $(CFLAGS_WIN) $(DEBUGFLAGS) -o $(TARGET_WIN) -c $(SOURCES)
cp $(TARGET_WIN) ../libcc.dll cp $(TARGET_WIN) ../libcc.dll
#else ifeq ($(WIN_HOST),True) - todo: pass ENV var from build.sh if WIN host #else ifeq ($(WIN_HOST),True) - todo: pass ENV var from build.sh if WIN host
else ifeq ($(HOST),aarch64-linux-gnu)
$(info LINUX ARM 64bit )
$(CC_ARM64) $(CFLAGS) $(DEBUGFLAGS) -o $(TARGET) -c $(SOURCES)
cp $(TARGET) ../libcc.so
else else
$(info LINUX) $(info LINUX)
$(CC) $(CFLAGS) $(DEBUGFLAGS) -o $(TARGET) -c $(SOURCES) $(CC) $(CFLAGS) $(DEBUGFLAGS) -o $(TARGET) -c $(SOURCES)

2
src/cc/makecustom

@ -1,5 +1,5 @@
#!/bin/sh #!/bin/sh
if make -f Makefile_custom "$@"; then if HOST="$HOST" make -B -f Makefile_custom "$@"; then
echo CUSTOMCC BUILD SUCCESSFUL echo CUSTOMCC BUILD SUCCESSFUL
else else
echo CUSTOMCC BUILD FAILED echo CUSTOMCC BUILD FAILED

2
src/cryptoconditions/Makefile.am

@ -15,7 +15,7 @@ AM_CFLAGS = -I$(top_srcdir)/src/asn -I$(top_srcdir)/include -I$(top_srcdir)/src/
LIBSECP256K1=src/include/secp256k1/libsecp256k1.la LIBSECP256K1=src/include/secp256k1/libsecp256k1.la
$(LIBSECP256K1): $(wildcard src/secp256k1/*) $(LIBSECP256K1): $(wildcard src/secp256k1/*)
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F) -march:x86-64 -g $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F) -g
CRYPTOCONDITIONS_CORE=libcryptoconditions_core.la CRYPTOCONDITIONS_CORE=libcryptoconditions_core.la

2
src/cryptoconditions/src/include/secp256k1/Makefile.am

@ -71,7 +71,7 @@ endif
endif endif
libsecp256k1_la_SOURCES = src/secp256k1.c libsecp256k1_la_SOURCES = src/secp256k1.c
libsecp256k1_la_CPPFLAGS = -DSECP256K1_BUILD -I$(top_srcdir)/include -I$(top_srcdir)/src $(SECP_INCLUDES) -march=x86-64 -g libsecp256k1_la_CPPFLAGS = -DSECP256K1_BUILD -I$(top_srcdir)/include -I$(top_srcdir)/src $(SECP_INCLUDES) -g
libsecp256k1_la_LIBADD = $(JNI_LIB) $(SECP_LIBS) $(COMMON_LIB) libsecp256k1_la_LIBADD = $(JNI_LIB) $(SECP_LIBS) $(COMMON_LIB)
libsecp256k1_jni_la_SOURCES = src/java/org_bitcoin_NativeSecp256k1.c src/java/org_bitcoin_Secp256k1Context.c libsecp256k1_jni_la_SOURCES = src/java/org_bitcoin_NativeSecp256k1.c src/java/org_bitcoin_Secp256k1Context.c

64
zcutil/build-cross-aarch64.sh

@ -0,0 +1,64 @@
#!/bin/bash
# Copyright (c) 2019-2020 radix42
# Copyright (c) 2019-2020 The Hush developers
# Original aarch64 port by radix42. Thank you!
set -eu -o pipefail
cat <<'EOF'
________________
< Building Hush! >
----------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
EOF
if [ "x$*" = 'x--help' ]
then
cat ./zcutil/dragon.txt
cat <<EOF
Welcome To The Hush Build System, Here Be Dragons!
Usage:
$0 --help
Show this help message and exit.
$0 [ --enable-lcov ] [ MAKEARGS... ]
Build Hush and most of its transitive dependencies from
source. MAKEARGS are applied to both dependencies and Hush itself. If
--enable-lcov is passed, Hush is configured to add coverage
instrumentation, thus enabling "make cov" to work.
EOF
exit 0
fi
set -x
cd "$(dirname "$(readlink -f "$0")")/.."
# If --enable-lcov is the first argument, enable lcov coverage support:
LCOV_ARG=''
HARDENING_ARG='--disable-hardening'
if [ "x${1:-}" = 'x--enable-lcov' ]
then
LCOV_ARG='--enable-lcov'
HARDENING_ARG='--disable-hardening'
shift
fi
# BUG: parameterize the platform/host directory:
PREFIX="$(pwd)/depends/aarch64-linux-gnu/"
HOST=aarch64-linux-gnu make "$@" -C ./depends/ V=1 NO_QT=1
./autogen.sh
CONFIG_SITE="$(pwd)/depends/aarch64-linux-gnu/share/config.site" ./configure --prefix="${PREFIX}" --with-gui=no --enable-tests=no "$HARDENING_ARG" "$LCOV_ARG" CXXFLAGS='-fwrapv -fno-strict-aliasing -g'
#BUILD CCLIB
WD=$PWD
cd src/cc
echo $PWD
HOST=aarch64-linux-gnu ./makecustom
cd $WD
make "$@" V=1
Loading…
Cancel
Save