From 44370053848c94bdcdb2622b31fba534d43f86b4 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Sat, 11 Jul 2020 11:26:14 -0700 Subject: [PATCH 01/18] elfutils: update to 0.180 Refreshed patches. Signed-off-by: Rosen Penev --- package/libs/elfutils/Makefile | 4 ++-- package/libs/elfutils/patches/100-musl-compat.patch | 2 +- package/libs/elfutils/patches/110-no-cdefs.patch | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package/libs/elfutils/Makefile b/package/libs/elfutils/Makefile index e6868c56f4..f2b25d2c36 100644 --- a/package/libs/elfutils/Makefile +++ b/package/libs/elfutils/Makefile @@ -7,12 +7,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=elfutils -PKG_VERSION:=0.179 +PKG_VERSION:=0.180 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=https://sourceware.org/$(PKG_NAME)/ftp/$(PKG_VERSION) -PKG_HASH:=25a545566cbacaa37ae6222e58f1c48ea4570f53ba991886e2f5ce96e22a23a2 +PKG_HASH:=b827b6e35c59d188ba97d7cf148fa8dc6f5c68eb6c5981888dfdbb758c0b569d PKG_MAINTAINER:=Luiz Angelo Daros de Luca PKG_LICENSE:=GPL-3.0-or-later diff --git a/package/libs/elfutils/patches/100-musl-compat.patch b/package/libs/elfutils/patches/100-musl-compat.patch index 374e832d3f..508ff9e946 100644 --- a/package/libs/elfutils/patches/100-musl-compat.patch +++ b/package/libs/elfutils/patches/100-musl-compat.patch @@ -24,7 +24,7 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include --- a/libdw/libdw_alloc.c +++ b/libdw/libdw_alloc.c -@@ -147,5 +147,5 @@ __attribute ((noreturn)) attribute_hidde +@@ -152,5 +152,5 @@ __attribute ((noreturn)) attribute_hidde __libdw_oom (void) { while (1) diff --git a/package/libs/elfutils/patches/110-no-cdefs.patch b/package/libs/elfutils/patches/110-no-cdefs.patch index a7216c141e..f95625a913 100644 --- a/package/libs/elfutils/patches/110-no-cdefs.patch +++ b/package/libs/elfutils/patches/110-no-cdefs.patch @@ -39,9 +39,9 @@ Signed-off-by: Rosen Penev /* Standard ELF types. */ -@@ -4007,6 +4007,8 @@ enum - #define R_NDS32_TLS_TPOFF 102 - #define R_NDS32_TLS_DESC 119 +@@ -4103,6 +4103,8 @@ enum + #define R_ARC_TLS_LE_S9 0x4a + #define R_ARC_TLS_LE_32 0x4b -__END_DECLS +#ifdef __cplusplus From 91d1b80e86267a6e7682f35b1a80cfb5d4a431d8 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Wed, 25 Nov 2020 16:20:25 -0800 Subject: [PATCH 02/18] binutils: update to 2.35.1 Fixes compilation with musl 1.2.x. Signed-off-by: Rosen Penev --- package/devel/binutils/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/devel/binutils/Makefile b/package/devel/binutils/Makefile index 9f7a0724f4..23f1ea9c25 100644 --- a/package/devel/binutils/Makefile +++ b/package/devel/binutils/Makefile @@ -8,13 +8,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=binutils -PKG_VERSION:=2.34 +PKG_VERSION:=2.35.1 PKG_RELEASE:=1 PKG_SOURCE_URL:=@GNU/binutils PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_VERSION:=$(PKG_VERSION) -PKG_HASH:=f00b0e8803dc9bab1e2165bd568528135be734df3fabf8d0161828cd56028952 +PKG_HASH:=3ced91db9bf01182b7e420eab68039f2083aed0a214c0424e257eae3ddee8607 PKG_FIXUP:=autoreconf PKG_LIBTOOL_PATHS:=. gas bfd opcodes gprof binutils ld libiberty gold intl From baceb793b0d5210b09bc45fe9cb8f8c9f5be0f77 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Sat, 5 Dec 2020 17:04:49 -0800 Subject: [PATCH 03/18] nettle: update to 3.6 Updated ABI_VERSION. Switched PKG_BUILD_PARALLEL on as there seems to be no issue anymore. I can't find any information about why it was turned off. Fixed license information. Signed-off-by: Rosen Penev --- package/libs/nettle/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package/libs/nettle/Makefile b/package/libs/nettle/Makefile index b9324e4793..b15ea0fa07 100644 --- a/package/libs/nettle/Makefile +++ b/package/libs/nettle/Makefile @@ -8,17 +8,17 @@ include $(TOPDIR)/rules.mk PKG_NAME:=nettle -PKG_VERSION:=3.5.1 -PKG_RELEASE:=2 +PKG_VERSION:=3.6 +PKG_RELEASE:=1 PKG_USE_MIPS16:=0 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=@GNU/nettle -PKG_HASH:=75cca1998761b02e16f2db56da52992aef622bf55a3b45ec538bc2eedadc9419 +PKG_HASH:=d24c0d0f2abffbc8f4f34dcf114b0f131ec3774895f3555922fe2f40f3d5e3f1 -PKG_LICENSE:=GPL-2.0+ +PKG_LICENSE:=GPL-2.0-or-later PKG_LICENSE_FILES:=COPYING -PKG_BUILD_PARALLEL:=0 +PKG_BUILD_PARALLEL:=1 PKG_CONFIG_DEPENDS := CONFIG_LIBNETTLE_MINI @@ -30,7 +30,7 @@ define Package/libnettle TITLE:=GNU crypto library URL:=http://www.lysator.liu.se/~nisse/nettle/ DEPENDS+= +!LIBNETTLE_MINI:libgmp - ABI_VERSION:=7 + ABI_VERSION:=8 endef define Package/libnettle/config From c28c4211a736863c215414c5ba980e2c40ff38d0 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Thu, 10 Dec 2020 01:56:28 -0800 Subject: [PATCH 04/18] pcre: fix paths in config file The paths are pointing to OS paths, not OpenWrt ones. Use SED line from libpng to fix and adjust accordingly. This may allow certain packages that use the config file to pick up pcre. Signed-off-by: Rosen Penev --- package/libs/pcre/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package/libs/pcre/Makefile b/package/libs/pcre/Makefile index bf3f733a5c..37d939da7f 100644 --- a/package/libs/pcre/Makefile +++ b/package/libs/pcre/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=pcre PKG_VERSION:=8.44 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=@SF/$(PKG_NAME) @@ -87,6 +87,7 @@ MAKE_FLAGS += \ define Build/InstallDev $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/pcre-config $(1)/usr/bin/ + $(SED) 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' $(1)/usr/bin/pcre-config $(INSTALL_DIR) $(2)/bin $(LN) $(STAGING_DIR)/usr/bin/pcre-config $(2)/bin From 569a9e195bfeb038c8b1c039d1a837a7f9c7ac4b Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Mon, 14 Dec 2020 17:56:17 -0800 Subject: [PATCH 05/18] libpcap: fix pcap-config pcap-config as installed is using OS paths instead of OpenWrt ones. Take fix from libpng and adjust as needed. This problem seems to occur on Arch Linux and not on Debian/Fedora based distros. No idea why. Remove CMAKE_INSTALL as there is now an InstallDev section. Signed-off-by: Rosen Penev --- package/libs/libpcap/Makefile | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/package/libs/libpcap/Makefile b/package/libs/libpcap/Makefile index e3633d1006..35ceb18c29 100644 --- a/package/libs/libpcap/Makefile +++ b/package/libs/libpcap/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=libpcap PKG_VERSION:=1.9.1 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://www.us.tcpdump.org/release/ \ @@ -18,7 +18,6 @@ PKG_HASH:=635237637c5b619bcceba91900666b64d56ecb7be63f298f601ec786ce087094 PKG_MAINTAINER:=Felix Fietkau -CMAKE_INSTALL:=1 PKG_ASLR_PIE_REGULAR:=1 PKG_BUILD_PARALLEL:=1 @@ -73,8 +72,11 @@ CMAKE_OPTIONS += $(if $(CONFIG_IPV6),-DINET6=ON,-DINET6=OFF) define Build/InstallDev $(call Build/InstallDev/cmake,$(1)) - $(SED) "s,/usr,$(STAGING_DIR)/usr,g" $(1)/usr/lib/pkgconfig/libpcap.pc - $(SED) "s,/usr,$(STAGING_DIR)/usr,g" $(1)/usr/bin/pcap-config + $(SED) \ + 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' \ + $(1)/usr/bin/pcap-config + $(INSTALL_DIR) $(2)/bin + $(LN) ../../usr/bin/pcap-config $(2)/bin/pcap-config endef define Package/libpcap/install From 716bfe95ddbbe78989d04aa0f2eb77e308138bce Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Mon, 14 Dec 2020 17:56:18 -0800 Subject: [PATCH 06/18] tcpdump: fix pcap-config issues The patch removes a libpcap check to avoid a problem with libpcap. Fix libpcap instead. Modernize Makefile: Use a normal autoconf bool instead of checking for CONFIG_IPV6. Remove old configure and MAKE_FLAGS hacks. Removing them results in compilation continuing to work without a problem. Signed-off-by: Rosen Penev --- package/network/utils/tcpdump/Makefile | 27 +----- .../002-remove_static_libpcap_check.patch | 92 ------------------- 2 files changed, 4 insertions(+), 115 deletions(-) delete mode 100644 package/network/utils/tcpdump/patches/002-remove_static_libpcap_check.patch diff --git a/package/network/utils/tcpdump/Makefile b/package/network/utils/tcpdump/Makefile index 3e4d9d2d73..f333cf98d2 100644 --- a/package/network/utils/tcpdump/Makefile +++ b/package/network/utils/tcpdump/Makefile @@ -9,20 +9,19 @@ include $(TOPDIR)/rules.mk PKG_NAME:=tcpdump PKG_VERSION:=4.9.3 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://www.us.tcpdump.org/release/ \ http://www.tcpdump.org/release/ PKG_HASH:=2cd47cb3d460b6ff75f4a9940f594317ad456cfbf2bd2c8e5151e16559db6410 -PKG_BUILD_PARALLEL:=1 - PKG_MAINTAINER:=Felix Fietkau PKG_LICENSE:=BSD-3-Clause PKG_CPE_ID:=cpe:/a:tcpdump:tcpdump PKG_INSTALL:=1 +PKG_BUILD_PARALLEL:=1 include $(INCLUDE_DIR)/package.mk @@ -47,36 +46,18 @@ endef CONFIGURE_ARGS += \ --without-cap-ng \ - --without-crypto - -ifeq ($(CONFIG_IPV6),y) -CONFIGURE_ARGS += \ - --enable-ipv6 -endif + --without-crypto \ + $(call autoconf_bool,CONFIG_IPV6,ipv6) TARGET_CFLAGS += -ffunction-sections -fdata-sections TARGET_LDFLAGS += -Wl,--gc-sections -CONFIGURE_VARS += \ - BUILD_CC="$(TARGET_CC)" \ - HOSTCC="$(HOSTCC)" \ - td_cv_buggygetaddrinfo="no" \ - ac_cv_linux_vers=$(LINUX_VERSION) \ - ac_cv_header_rpc_rpcent_h=no \ - ac_cv_lib_rpc_main=no \ - ac_cv_path_PCAP_CONFIG="" - -MAKE_FLAGS := - ifeq ($(BUILD_VARIANT),mini) TARGET_CFLAGS += -DTCPDUMP_MINI CONFIGURE_ARGS += --disable-smb MAKE_FLAGS += TCPDUMP_MINI=1 endif -MAKE_FLAGS += \ - CCOPT="$(TARGET_CFLAGS)" INCLS="-I. $(TARGET_CPPFLAGS)" - define Package/tcpdump/install $(INSTALL_DIR) $(1)/usr/sbin $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/tcpdump $(1)/usr/sbin/ diff --git a/package/network/utils/tcpdump/patches/002-remove_static_libpcap_check.patch b/package/network/utils/tcpdump/patches/002-remove_static_libpcap_check.patch deleted file mode 100644 index fdebfcc6d8..0000000000 --- a/package/network/utils/tcpdump/patches/002-remove_static_libpcap_check.patch +++ /dev/null @@ -1,92 +0,0 @@ ---- a/configure -+++ b/configure -@@ -5395,37 +5395,6 @@ $as_echo "Using $pfopen" >&6; } - LIBS="$LIBS $pfopen" - fi - fi -- libpcap=FAIL -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for local pcap library" >&5 --$as_echo_n "checking for local pcap library... " >&6; } -- --# Check whether --with-system-libpcap was given. --if test "${with_system_libpcap+set}" = set; then : -- withval=$with_system_libpcap; --fi -- -- if test "x$with_system_libpcap" != xyes ; then -- lastdir=FAIL -- places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \ -- egrep '/libpcap-[0-9]+\.[0-9]+(\.[0-9]*)?([ab][0-9]*|-PRE-GIT)?$'` -- places2=`ls .. | sed -e 's,/$,,' -e "s,^,../," | \ -- egrep '/libpcap-[0-9]+\.[0-9]+(\.[0-9]*)?([ab][0-9]*|-PRE-GIT)?$'` -- for dir in $places $srcdir/../libpcap ../libpcap $srcdir/libpcap $places2 ; do -- basedir=`echo $dir | sed -e 's/[ab][0-9]*$//' | \ -- sed -e 's/-PRE-GIT$//' ` -- if test $lastdir = $basedir ; then -- continue; -- fi -- lastdir=$dir -- if test -r $dir/libpcap.a ; then -- libpcap=$dir/libpcap.a -- d=$dir -- fi -- done -- fi -- if test $libpcap = FAIL ; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 --$as_echo "not found" >&6; } - - # - # Look for pcap-config. -@@ -5581,51 +5550,6 @@ if test "x$ac_cv_lib_pcap_main" = xyes; - libpcap="-lpcap" - fi - -- if test $libpcap = FAIL ; then -- as_fn_error $? "see the INSTALL doc for more info" "$LINENO" 5 -- fi -- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for extraneous pcap header directories" >&5 --$as_echo_n "checking for extraneous pcap header directories... " >&6; } -- if test \( ! -r /usr/local/include/pcap.h \) -a \ -- \( ! -r /usr/include/pcap.h \); then -- if test -r /usr/local/include/pcap/pcap.h; then -- d="/usr/local/include/pcap" -- elif test -r /usr/include/pcap/pcap.h; then -- d="/usr/include/pcap" -- fi -- fi -- if test -z "$d" ; then -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 --$as_echo "not found" >&6; } -- else -- V_INCLS="-I$d $V_INCLS" -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: found -- -I$d added" >&5 --$as_echo "found -- -I$d added" >&6; } -- fi -- fi -- else -- V_PCAPDEP=$libpcap -- places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \ -- egrep '/libpcap-[0-9]*.[0-9]*(.[0-9]*)?([ab][0-9]*)?$'` -- places2=`ls .. | sed -e 's,/$,,' -e "s,^,../," | \ -- egrep '/libpcap-[0-9]*.[0-9]*(.[0-9]*)?([ab][0-9]*)?$'` -- pcapH=FAIL -- if test -r $d/pcap.h; then -- pcapH=$d -- else -- for dir in $places $srcdir/../libpcap ../libpcap $srcdir/libpcap $places2 ; do -- if test -r $dir/pcap.h ; then -- pcapH=$dir -- fi -- done -- fi -- -- if test $pcapH = FAIL ; then -- as_fn_error $? "cannot find pcap.h: see INSTALL" "$LINENO" 5 -- fi -- V_INCLS="-I$pcapH $V_INCLS" -- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libpcap" >&5 --$as_echo "$libpcap" >&6; } - # Extract the first word of "pcap-config", so it can be a program name with args. - set dummy pcap-config; ac_word=$2 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 From c399be98fd7657c5e64815b0109f6e31d15cab6f Mon Sep 17 00:00:00 2001 From: INAGAKI Hiroshi Date: Thu, 17 Dec 2020 23:44:28 +0900 Subject: [PATCH 07/18] scripts: add -N option to mkhash for printing without newline Added "-N" option, it allow printing hash(es) without newline. Signed-off-by: INAGAKI Hiroshi --- scripts/mkhash.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/scripts/mkhash.c b/scripts/mkhash.c index 3292433213..ed3d42d4c3 100644 --- a/scripts/mkhash.c +++ b/scripts/mkhash.c @@ -747,6 +747,7 @@ static int usage(const char *progname) fprintf(stderr, "Usage: %s [options] [...]\n" "Options:\n" " -n Print filename(s)\n" + " -N Suppress trailing newline\n" "\n" "Supported hash types:", progname); @@ -771,7 +772,8 @@ static struct hash_type *get_hash_type(const char *name) } -static int hash_file(struct hash_type *t, const char *filename, bool add_filename) +static int hash_file(struct hash_type *t, const char *filename, bool add_filename, + bool no_newline) { const char *str; @@ -801,9 +803,10 @@ static int hash_file(struct hash_type *t, const char *filename, bool add_filenam } if (add_filename) - printf("%s %s\n", str, filename ? filename : "-"); + printf("%s %s%s", str, filename ? filename : "-", + no_newline ? "" : "\n"); else - printf("%s\n", str); + printf("%s%s", str, no_newline ? "" : "\n"); return 0; } @@ -813,13 +816,16 @@ int main(int argc, char **argv) struct hash_type *t; const char *progname = argv[0]; int i, ch; - bool add_filename = false; + bool add_filename = false, no_newline = false; - while ((ch = getopt(argc, argv, "n")) != -1) { + while ((ch = getopt(argc, argv, "nN")) != -1) { switch (ch) { case 'n': add_filename = true; break; + case 'N': + no_newline = true; + break; default: return usage(progname); } @@ -836,10 +842,10 @@ int main(int argc, char **argv) return usage(progname); if (argc < 2) - return hash_file(t, NULL, add_filename); + return hash_file(t, NULL, add_filename, no_newline); for (i = 0; i < argc - 1; i++) { - int ret = hash_file(t, argv[1 + i], add_filename); + int ret = hash_file(t, argv[1 + i], add_filename, no_newline); if (ret) return ret; } From e8fdfd57e55ca3aff624e789a74ed4195b053c60 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Fri, 11 Dec 2020 19:18:33 -0800 Subject: [PATCH 08/18] toolchain: default to glibc for ARC glibc 2.32 gained support for the ARC architecture. This is preparation for removing uClibc-ng. Signed-off-by: Rosen Penev --- toolchain/Config.in | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/toolchain/Config.in b/toolchain/Config.in index cb557d4ad3..29de30d7e9 100644 --- a/toolchain/Config.in +++ b/toolchain/Config.in @@ -237,7 +237,7 @@ comment "C Library" choice prompt "C Library implementation" if TOOLCHAINOPTS - default LIBC_USE_UCLIBC if arc + default LIBC_USE_GLIBC if arc default LIBC_USE_MUSL help Select the C library implementation. @@ -245,7 +245,6 @@ choice config LIBC_USE_GLIBC bool "Use glibc" select USE_GLIBC - depends on !arc config LIBC_USE_UCLIBC select USE_UCLIBC From 52d4f7653126628db2774d42f2434adfe263bb5b Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Fri, 11 Dec 2020 19:21:40 -0800 Subject: [PATCH 09/18] toolchain: remove uClibc install stuff This is preparation for removing uClibc-ng. Signed-off-by: Rosen Penev --- package/libs/toolchain/Makefile | 31 +++---------------------------- 1 file changed, 3 insertions(+), 28 deletions(-) diff --git a/package/libs/toolchain/Makefile b/package/libs/toolchain/Makefile index 6853d95997..52a4cda19f 100644 --- a/package/libs/toolchain/Makefile +++ b/package/libs/toolchain/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=toolchain -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_MAINTAINER:=Felix Fietkau PKG_LICENSE:=GPL-3.0-with-GCC-exception @@ -458,11 +458,6 @@ LIBGCC_A=$(lastword $(wildcard $(TOOLCHAIN_DIR)/lib/gcc/*/*/libgcc_pic.a)) LIBGCC_MAP=$(lastword $(wildcard $(TOOLCHAIN_DIR)/lib/gcc/*/*/libgcc.map)) LIBGCC_SO=$(lastword $(wildcard $(TOOLCHAIN_DIR)/lib/libgcc_s.so.*)) -define Build/Compile/uClibc - $(CP) \ - $(TOOLCHAIN_DIR)/lib/libuClibc-*.so \ - $(PKG_BUILD_DIR)/ -endef ifneq ($(LIBGCC_SO),) define Build/Compile/libgcc $(CP) $(LIBGCC_SO) $(PKG_BUILD_DIR)/ @@ -535,21 +530,6 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),) done endef - define Package/uClibc/install - $(INSTALL_DIR) $(1)/lib - $(CP) \ - $(TOOLCHAIN_DIR)/lib/ld*-uClibc.so.* \ - $(TOOLCHAIN_DIR)/lib/ld*-uClibc-$(LIBC_SO_VERSION).so \ - $(1)/lib/ - $(CP) \ - $(TOOLCHAIN_DIR)/lib/libc.so.* \ - $(TOOLCHAIN_DIR)/lib/libuClibc-$(LIBC_SO_VERSION).so \ - $(1)/lib/ - $(CP) \ - $(PKG_BUILD_DIR)/libuClibc-* \ - $(1)/lib/ - endef - LD_MUSL_NAME = $(notdir $(firstword $(wildcard $(TOOLCHAIN_DIR)/lib/libc.so*))) define Package/musl/install @@ -578,7 +558,7 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),) define Package/libpthread/install $(INSTALL_DIR) $(1)/lib - ifneq ($(CONFIG_USE_MUSL)$(CONFIG_USE_UCLIBC),y) + ifneq ($(CONFIG_USE_MUSL),y) $(CP) \ $(TOOLCHAIN_DIR)/lib/libpthread.so.* \ $(TOOLCHAIN_DIR)/lib/libpthread-$(LIBC_SO_VERSION).so \ @@ -590,11 +570,6 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),) $(INSTALL_DIR) $(1)/lib $(CP) \ $(TOOLCHAIN_DIR)/lib/libthread_db.so.* $(1)/lib - ifeq ($(CONFIG_USE_UCLIBC),y) - $(CP) \ - $(TOOLCHAIN_DIR)/lib/libthread_db-$(LIBC_SO_VERSION).so \ - $(1)/lib/ - endif endef define Package/libpthread/install_lib @@ -603,7 +578,7 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),) define Package/librt/install $(INSTALL_DIR) $(1)/lib - ifneq ($(CONFIG_USE_MUSL)$(CONFIG_USE_UCLIBC),y) + ifneq ($(CONFIG_USE_MUSL),y) $(CP) \ $(TOOLCHAIN_DIR)/lib/librt.so.* \ $(TOOLCHAIN_DIR)/lib/librt-$(LIBC_SO_VERSION).so \ From 34d61c8b3dabdae2acfa53f3128cbfd28c953c0f Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Fri, 11 Dec 2020 19:24:49 -0800 Subject: [PATCH 10/18] toolchain: remove uClibc-ng config stuff This is in preparation for removing it. Signed-off-by: Rosen Penev --- toolchain/Config.in | 19 ------------------- toolchain/Makefile | 3 --- 2 files changed, 22 deletions(-) diff --git a/toolchain/Config.in b/toolchain/Config.in index 29de30d7e9..bb8729d805 100644 --- a/toolchain/Config.in +++ b/toolchain/Config.in @@ -110,11 +110,6 @@ menuconfig EXTERNAL_TOOLCHAIN bool "glibc" select USE_GLIBC - config EXTERNAL_TOOLCHAIN_LIBC_USE_UCLIBC - bool "uClibc" - select USE_UCLIBC - depends on !(aarch64 || aarch64_be) - config EXTERNAL_TOOLCHAIN_LIBC_USE_MUSL bool "musl" select USE_MUSL @@ -125,7 +120,6 @@ menuconfig EXTERNAL_TOOLCHAIN string depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN default "glibc" if EXTERNAL_TOOLCHAIN_LIBC_USE_GLIBC - default "uclibc" if EXTERNAL_TOOLCHAIN_LIBC_USE_UCLIBC default "musl" if EXTERNAL_TOOLCHAIN_LIBC_USE_MUSL config TOOLCHAIN_BIN_PATH @@ -246,11 +240,6 @@ choice bool "Use glibc" select USE_GLIBC - config LIBC_USE_UCLIBC - select USE_UCLIBC - bool "Use uClibc" - depends on BROKEN || arc - config LIBC_USE_MUSL select USE_MUSL bool "Use musl" @@ -258,7 +247,6 @@ choice endchoice -source "toolchain/uClibc/Config.in" source "toolchain/musl/Config.in" comment "Debuggers" @@ -274,10 +262,6 @@ config GDB config USE_GLIBC bool -config USE_UCLIBC - default y if !TOOLCHAINOPTS && !EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN && (arc) - bool - config USE_MUSL default y if !TOOLCHAINOPTS && !EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN && !(arc) bool @@ -296,15 +280,12 @@ source "toolchain/gcc/Config.version" config LIBC string default "glibc" if USE_GLIBC - default "uClibc" if USE_UCLIBC default "musl" if USE_MUSL config TARGET_SUFFIX string default "gnueabi" if USE_GLIBC && (arm || armeb) default "gnu" if USE_GLIBC && !(arm || armeb) - default "uclibcgnueabi" if USE_UCLIBC && (arm || armeb) - default "uclibc" if USE_UCLIBC && !(arm || armeb) default "muslgnueabi" if USE_MUSL && (arm || armeb) default "musl" if USE_MUSL && !(arm || armeb) diff --git a/toolchain/Makefile b/toolchain/Makefile index 23a5529eed..5dccf8f829 100644 --- a/toolchain/Makefile +++ b/toolchain/Makefile @@ -30,9 +30,6 @@ curdir:=toolchain # subdirectories to descend into $(curdir)/builddirs := $(if $(CONFIG_GDB),gdb) $(if $(CONFIG_EXTERNAL_TOOLCHAIN),wrapper,kernel-headers binutils gcc/initial gcc/final $(LIBC) fortify-headers) $(if $(CONFIG_NASM),nasm) -ifdef CONFIG_USE_UCLIBC - $(curdir)/builddirs += $(LIBC)/utils -endif # builddir dependencies ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),) From ddbb122a6dd9314bae76f5cca6c77ed6d75b59fd Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Fri, 11 Dec 2020 19:25:45 -0800 Subject: [PATCH 11/18] toolchain: remove uClibc-ng After musl was introduced, it was desired to remove uClibc-ng. As ARC has no musl support, it was kept around. However, glibc 2.32 includes ARC support. This makes it possible to finally remove it. Signed-off-by: Rosen Penev --- toolchain/uClibc/Config.in | 6 - toolchain/uClibc/Makefile | 37 ----- toolchain/uClibc/common.mk | 98 ------------- toolchain/uClibc/config/arc | 8 -- toolchain/uClibc/config/archs | 8 -- toolchain/uClibc/config/arm | 7 - toolchain/uClibc/config/armeb | 7 - toolchain/uClibc/config/common | 199 -------------------------- toolchain/uClibc/config/debug | 6 - toolchain/uClibc/config/i386 | 8 -- toolchain/uClibc/config/i686 | 8 -- toolchain/uClibc/config/m68k | 5 - toolchain/uClibc/config/mips | 10 -- toolchain/uClibc/config/mips64 | 10 -- toolchain/uClibc/config/mips64.32 | 11 -- toolchain/uClibc/config/mips64.64 | 11 -- toolchain/uClibc/config/mips64.n32 | 11 -- toolchain/uClibc/config/mips64el | 10 -- toolchain/uClibc/config/mips64el.32 | 11 -- toolchain/uClibc/config/mips64el.64 | 11 -- toolchain/uClibc/config/mips64el.n32 | 11 -- toolchain/uClibc/config/mipsel | 10 -- toolchain/uClibc/config/mipsel.cobalt | 10 -- toolchain/uClibc/config/powerpc | 6 - toolchain/uClibc/config/powerpc.e500 | 6 - toolchain/uClibc/config/sparc | 6 - toolchain/uClibc/config/sparc.leon | 6 - toolchain/uClibc/config/x86_64 | 5 - toolchain/uClibc/headers/Makefile | 27 ---- toolchain/uClibc/utils/Makefile | 24 ---- 30 files changed, 593 deletions(-) delete mode 100644 toolchain/uClibc/Config.in delete mode 100644 toolchain/uClibc/Makefile delete mode 100644 toolchain/uClibc/common.mk delete mode 100644 toolchain/uClibc/config/arc delete mode 100644 toolchain/uClibc/config/archs delete mode 100644 toolchain/uClibc/config/arm delete mode 100644 toolchain/uClibc/config/armeb delete mode 100644 toolchain/uClibc/config/common delete mode 100644 toolchain/uClibc/config/debug delete mode 100644 toolchain/uClibc/config/i386 delete mode 100644 toolchain/uClibc/config/i686 delete mode 100644 toolchain/uClibc/config/m68k delete mode 100644 toolchain/uClibc/config/mips delete mode 100644 toolchain/uClibc/config/mips64 delete mode 100644 toolchain/uClibc/config/mips64.32 delete mode 100644 toolchain/uClibc/config/mips64.64 delete mode 100644 toolchain/uClibc/config/mips64.n32 delete mode 100644 toolchain/uClibc/config/mips64el delete mode 100644 toolchain/uClibc/config/mips64el.32 delete mode 100644 toolchain/uClibc/config/mips64el.64 delete mode 100644 toolchain/uClibc/config/mips64el.n32 delete mode 100644 toolchain/uClibc/config/mipsel delete mode 100644 toolchain/uClibc/config/mipsel.cobalt delete mode 100644 toolchain/uClibc/config/powerpc delete mode 100644 toolchain/uClibc/config/powerpc.e500 delete mode 100644 toolchain/uClibc/config/sparc delete mode 100644 toolchain/uClibc/config/sparc.leon delete mode 100644 toolchain/uClibc/config/x86_64 delete mode 100644 toolchain/uClibc/headers/Makefile delete mode 100644 toolchain/uClibc/utils/Makefile diff --git a/toolchain/uClibc/Config.in b/toolchain/uClibc/Config.in deleted file mode 100644 index 3bcb0037e9..0000000000 --- a/toolchain/uClibc/Config.in +++ /dev/null @@ -1,6 +0,0 @@ -# Debug version. - -config UCLIBC_ENABLE_DEBUG - bool "Build with debug information" - depends on TOOLCHAINOPTS && USE_UCLIBC && !EXTERNAL_TOOLCHAIN - default n diff --git a/toolchain/uClibc/Makefile b/toolchain/uClibc/Makefile deleted file mode 100644 index 4764f2fa1d..0000000000 --- a/toolchain/uClibc/Makefile +++ /dev/null @@ -1,37 +0,0 @@ -PATH_PREFIX=. - -include ./common.mk - -HOST_STAMP_BUILT:=$(HOST_BUILD_DIR)/.built -HOST_STAMP_INSTALLED:=$(TOOLCHAIN_DIR)/stamp/.uclibc_installed - -HOST_BUILD_PARALLEL:=1 - -define Host/SetToolchainInfo - $(SED) 's,^\(LIBC_TYPE\)=.*,\1=$(PKG_NAME),' $(TOOLCHAIN_DIR)/info.mk - $(SED) 's,^\(LIBC_URL\)=.*,\1=http://www.uclibc.org/,' $(TOOLCHAIN_DIR)/info.mk - $(SED) 's,^\(LIBC_VERSION\)=.*,\1=$(PKG_VERSION),' $(TOOLCHAIN_DIR)/info.mk - $(SED) 's,^\(LIBC_SO_VERSION\)=.*,\1=$(LIBC_SO_VERSION),' $(TOOLCHAIN_DIR)/info.mk -endef - -define Host/Compile - $(SED) 's,^CROSS=.*,CROSS=$(TARGET_CROSS),g' $(HOST_BUILD_DIR)/Rules.mak - $(UCLIBC_MAKE) PREFIX= all -endef - -define Host/Install - $(call Host/SetToolchainInfo) - $(UCLIBC_MAKE) PREFIX="$(TOOLCHAIN_DIR)/" install_runtime install_dev - $(CP) $(HOST_BUILD_DIR)/libc/libc_so.a $(TOOLCHAIN_DIR)/lib/ - ( cd $(TOOLCHAIN_DIR) ; \ - for d in lib usr/lib ; do \ - for f in libc.so libgcc_s.so ; do \ - if [ -f $$$$d/$$$$f -a ! -L $$$$d/$$$$f ] ; then \ - $(SED) 's,/usr/lib/,,g;s,/lib/,,g' $$$$d/$$$$f ; \ - fi \ - done \ - done \ - ) -endef - -$(eval $(call HostBuild)) diff --git a/toolchain/uClibc/common.mk b/toolchain/uClibc/common.mk deleted file mode 100644 index bb093b1dc7..0000000000 --- a/toolchain/uClibc/common.mk +++ /dev/null @@ -1,98 +0,0 @@ -# -# Copyright (C) 2006-2020 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# -include $(TOPDIR)/rules.mk -include $(INCLUDE_DIR)/target.mk - -PKG_VERSION:=1.0.34 -PKG_RELEASE:=1 - -PKG_NAME:=uClibc-ng -PKG_SOURCE_URL = http://downloads.uclibc-ng.org/releases/$(PKG_VERSION)/ -PATCH_DIR:=$(PATH_PREFIX)/patches -CONFIG_DIR:=$(PATH_PREFIX)/config -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz -LIBC_SO_VERSION:=$(PKG_VERSION) - -PKG_HASH:=e6776229eee8d3f5a1cd29fb4286630e3cb9e97dded4e8f4a3a9bb4fa8c0d5e3 - -HOST_BUILD_DIR:=$(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME)-$(PKG_VERSION) - -include $(INCLUDE_DIR)/toolchain-build.mk - -UCLIBC_TARGET_ARCH:=$(shell echo $(ARCH) | sed -e s'/-.*//' \ - -e 's/arc.*/arc/' \ - -e 's/i.86/i386/' \ - -e 's/sparc.*/sparc/' \ - -e 's/arm.*/arm/g' \ - -e 's/m68k.*/m68k/' \ - -e 's/ppc/powerpc/g' \ - -e 's/v850.*/v850/g' \ - -e 's/sh64/sh/' \ - -e 's/sh[234].*/sh/' \ - -e 's/mips.*/mips/' \ - -e 's/mipsel.*/mips/' \ -) - -GEN_CONFIG=$(SCRIPT_DIR)/kconfig.pl -n \ - $(if $(wildcard $(CONFIG_DIR)/common),'+' $(CONFIG_DIR)/common) \ - $(if $(CONFIG_UCLIBC_ENABLE_DEBUG),$(if $(wildcard $(CONFIG_DIR)/debug),'+' $(CONFIG_DIR)/debug)) \ - $(CONFIG_DIR)/$(ARCH)$(strip \ - $(if $(wildcard $(CONFIG_DIR)/$(ARCH).$(BOARD)),.$(BOARD), \ - $(if $(filter archs,$(subst ",,$(CONFIG_CPU_TYPE))),hs, \ - $(if $(CONFIG_MIPS64_ABI),.$(subst ",,$(CONFIG_MIPS64_ABI)), \ - $(if $(CONFIG_HAS_SPE_FPU),$(if $(wildcard $(CONFIG_DIR)/$(ARCH).e500),.e500)))))) - -CPU_CFLAGS = \ - -funsigned-char -fno-builtin -fno-asm \ - --std=gnu99 -ffunction-sections -fdata-sections \ - -Wno-unused-but-set-variable \ - $(TARGET_CFLAGS) -ggdb - -UCLIBC_MAKE = PATH='$(TOOLCHAIN_DIR)/initial/bin:$(TARGET_PATH)' $(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) \ - $(TARGET_CONFIGURE_OPTS) \ - DEVEL_PREFIX=/ \ - RUNTIME_PREFIX=/ \ - HOSTCC="$(HOSTCC)" \ - CPU_CFLAGS="$(CPU_CFLAGS)" \ - ARCH="$(CONFIG_ARCH)" \ - LIBGCC="$(subst libgcc.a,libgcc_initial.a,$(shell $(TARGET_CC) -print-libgcc-file-name))" \ - DOSTRIP="" - -define Host/Prepare - $(call Host/Prepare/Default) - $(if $(strip $(QUILT)), \ - cd $(HOST_BUILD_DIR); \ - if $(QUILT_CMD) next >/dev/null 2>&1; then \ - $(QUILT_CMD) push -a; \ - fi - ) - ln -snf $(PKG_NAME)-$(PKG_VERSION) $(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME) -endef - -define Host/Configure - $(GEN_CONFIG) > $(HOST_BUILD_DIR)/.config.new - $(SED) 's,^KERNEL_HEADERS=.*,KERNEL_HEADERS=\"$(BUILD_DIR_TOOLCHAIN)/linux-dev/include\",g' \ - -e 's,^.*UCLIBC_HAS_FPU.*,UCLIBC_HAS_FPU=$(if $(CONFIG_SOFT_FLOAT),n,y),g' \ - -e 's,^.*UCLIBC_HAS_SOFT_FLOAT.*,UCLIBC_HAS_SOFT_FLOAT=$(if $(CONFIG_SOFT_FLOAT),y,n),g' \ - -e 's,^.*UCLIBC_HAS_LOCALE.*,UCLIBC_HAS_LOCALE=$(if $(CONFIG_BUILD_NLS),y,n),g' \ - -e 's,^.*UCLIBC_BUILD_ALL_LOCALE.*,UCLIBC_BUILD_ALL_LOCALE=$(if $(CONFIG_BUILD_NLS),y,n),g' \ - -e 's,^.*UCLIBC_HAS_SSP[^_].*,UCLIBC_HAS_SSP=$(if $(or $(CONFIG_PKG_CC_STACKPROTECTOR_REGULAR),$(CONFIG_PKG_CC_STACKPROTECTOR_STRONG)),y,n),g' \ - $(HOST_BUILD_DIR)/.config.new - cmp -s $(HOST_BUILD_DIR)/.config.new $(HOST_BUILD_DIR)/.config.last || { \ - cp $(HOST_BUILD_DIR)/.config.new $(HOST_BUILD_DIR)/.config && \ - $(MAKE) -C $(HOST_BUILD_DIR) olddefconfig KBUILD_HAVE_NLS= HOSTCFLAGS="-DKBUILD_NO_NLS" && \ - $(MAKE) -C $(HOST_BUILD_DIR)/extra/config conf KBUILD_HAVE_NLS= HOSTCFLAGS="-DKBUILD_NO_NLS" && \ - cp $(HOST_BUILD_DIR)/.config.new $(HOST_BUILD_DIR)/.config.last; \ - } -endef - -define Host/Clean - rm -rf \ - $(HOST_BUILD_DIR) \ - $(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME) \ - $(BUILD_DIR_TOOLCHAIN)/$(LIBC)-dev -endef diff --git a/toolchain/uClibc/config/arc b/toolchain/uClibc/config/arc deleted file mode 100644 index f92328b7ed..0000000000 --- a/toolchain/uClibc/config/arc +++ /dev/null @@ -1,8 +0,0 @@ -ARCH_ANY_ENDIAN=y -ARCH_LITTLE_ENDIAN=y -ARCH_WANTS_LITTLE_ENDIAN=y -TARGET_ARCH="arc" -TARGET_arc=y -CONFIG_ARC_PAGE_SIZE_8K=y -# CONFIG_ARC_PAGE_SIZE_16K is not set -# CONFIG_ARC_PAGE_SIZE_4K is not set diff --git a/toolchain/uClibc/config/archs b/toolchain/uClibc/config/archs deleted file mode 100644 index f92328b7ed..0000000000 --- a/toolchain/uClibc/config/archs +++ /dev/null @@ -1,8 +0,0 @@ -ARCH_ANY_ENDIAN=y -ARCH_LITTLE_ENDIAN=y -ARCH_WANTS_LITTLE_ENDIAN=y -TARGET_ARCH="arc" -TARGET_arc=y -CONFIG_ARC_PAGE_SIZE_8K=y -# CONFIG_ARC_PAGE_SIZE_16K is not set -# CONFIG_ARC_PAGE_SIZE_4K is not set diff --git a/toolchain/uClibc/config/arm b/toolchain/uClibc/config/arm deleted file mode 100644 index 9544f144d1..0000000000 --- a/toolchain/uClibc/config/arm +++ /dev/null @@ -1,7 +0,0 @@ -ARCH_ANY_ENDIAN=y -ARCH_LITTLE_ENDIAN=y -ARCH_WANTS_LITTLE_ENDIAN=y -TARGET_ARCH="arm" -TARGET_arm=y -CONFIG_ARM_EABI=y - diff --git a/toolchain/uClibc/config/armeb b/toolchain/uClibc/config/armeb deleted file mode 100644 index e329c7e369..0000000000 --- a/toolchain/uClibc/config/armeb +++ /dev/null @@ -1,7 +0,0 @@ -ARCH_ANY_ENDIAN=y -ARCH_BIG_ENDIAN=y -ARCH_WANTS_BIG_ENDIAN=y -TARGET_ARCH="arm" -TARGET_arm=y -CONFIG_ARM_EABI=y - diff --git a/toolchain/uClibc/config/common b/toolchain/uClibc/config/common deleted file mode 100644 index d88d5bf473..0000000000 --- a/toolchain/uClibc/config/common +++ /dev/null @@ -1,199 +0,0 @@ -# ARCH_ANY_ENDIAN is not set -ARCH_HAS_MMU=y -# ARCH_HAS_NO_LDSO is not set -# ARCH_HAS_NO_SHARED is not set -# ARCH_LITTLE_ENDIAN is not set -ARCH_USE_MMU=y -# ARCH_WANTS_BIG_ENDIAN is not set -# ARCH_WANTS_LITTLE_ENDIAN is not set -ASSUME_DEVPTS=y -CROSS_COMPILER_PREFIX="" -DEVEL_PREFIX="/usr/" -# DOASSERTS is not set -# DODEBUG is not set -# DODEBUG_PT is not set -DOPIC=y -DOSTRIP=y -DO_C99_MATH=y -# DO_XSI_MATH is not set -# EXTRA_WARNINGS is not set -FORCE_OPTIONS_FOR_ARCH=y -# FORCE_SHAREABLE_TEXT_SEGMENTS is not set -# HARDWIRED_ABSPATH is not set -# HAS_NO_THREADS is not set -HAVE_DOT_CONFIG=y -# HAVE_NO_PIC is not set -# HAVE_NO_SSP is not set -HAVE_SHARED=y -KERNEL_HEADERS="." -LDSO_BASE_FILENAME="ld.so" -LDSO_CACHE_SUPPORT=y -# LDSO_GNU_HASH_SUPPORT is not set -LDSO_LD_LIBRARY_PATH=y -LDSO_LDD_SUPPORT=y -# LDSO_PRELINK_SUPPORT is not set -# LDSO_PRELOAD_FILE_SUPPORT is not set -LDSO_PRELOAD_ENV_SUPPORT=y -LDSO_RUNPATH=y -LDSO_SAFE_RUNPATH=y -# LDSO_RUNPATH_OF_EXECUTABLE is not set -# LDSO_SEARCH_INTERP_PATH is not set -# LDSO_STANDALONE_SUPPORT is not set -# UCLIBC_HAS_BACKTRACE is not set -UCLIBC_HAS_THREADS_NATIVE=y -# MALLOC is not set -# MALLOC_SIMPLE is not set -MALLOC_STANDARD=y -MULTILIB_DIR="lib" -PTHREADS_DEBUG_SUPPORT=y -RUNTIME_PREFIX="/" -# SUPPORT_LD_DEBUG is not set -# SUPPORT_LD_DEBUG_EARLY is not set -TARGET_SUBARCH="" -# TARGET_alpha is not set -# TARGET_arc is not set -# TARGET_arm is not set -# TARGET_avr32 is not set -# TARGET_bfin is not set -# TARGET_c6x is not set -# TARGET_cris is not set -# TARGET_frv is not set -# TARGET_h8300 is not set -# TARGET_hppa is not set -# TARGET_i386 is not set -# TARGET_ia64 is not set -# TARGET_lm32 is not set -# TARGET_m68k is not set -# TARGET_metag is not set -# TARGET_microblaze is not set -# TARGET_mips is not set -# TARGET_nios is not set -# TARGET_nios2 is not set -# TARGET_or1k is not set -# TARGET_powerpc is not set -# TARGET_sh is not set -# TARGET_sparc is not set -# TARGET_x86_64 is not set -# TARGET_xtensa is not set -UCLIBC_BSD_SPECIFIC=y -UCLIBC_BUILD_NOEXECSTACK=y -# UCLIBC_BUILD_NOW is not set -# UCLIBC_BUILD_PIE is not set -UCLIBC_BUILD_RELRO=y -UCLIBC_CTOR_DTOR=y -UCLIBC_DYNAMIC_ATEXIT=y -UCLIBC_EXTRA_CFLAGS="" -UCLIBC_GRP_BUFFER_SIZE=256 -UCLIBC_HAS_ADVANCED_REALTIME=y -# UCLIBC_HAS_ARGP is not set -UCLIBC_HAS_BSD_ERR=y -# UCLIBC_HAS_BSD_RES_CLOSE is not set -# UCLIBC_HAS_COMPAT_RES_STATE is not set -UCLIBC_HAS_CRYPT=y -UCLIBC_HAS_CRYPT_IMPL=y -UCLIBC_HAS_CTYPE_CHECKED=y -# UCLIBC_HAS_CTYPE_ENFORCED is not set -UCLIBC_HAS_CTYPE_SIGNED=y -UCLIBC_HAS_CTYPE_TABLES=y -# UCLIBC_HAS_CTYPE_UNSAFE is not set -UCLIBC_HAS_EPOLL=y -UCLIBC_HAS_ERRNO_MESSAGES=y -# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set -# UCLIBC_HAS_FENV is not set -UCLIBC_HAS_FLOATS=y -UCLIBC_HAS_FNMATCH=y -# UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE is not set -UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y -# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set -# UCLIBC_HAS_FPU is not set -UCLIBC_HAS_FTS=y -# UCLIBC_HAS_FTW is not set -UCLIBC_HAS_GETPT=y -UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y -UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y -# UCLIBC_HAS_GLIBC_DIGIT_GROUPING is not set -UCLIBC_HAS_GLOB=y -UCLIBC_HAS_GNU_ERROR=y -UCLIBC_HAS_GNU_GETOPT=y -UCLIBC_HAS_GNU_GETSUBOPT=y -UCLIBC_HAS_GNU_GLOB=y -UCLIBC_HAS_HEXADECIMAL_FLOATS=y -UCLIBC_HAS_IPV4=y -UCLIBC_HAS_IPV6=y -UCLIBC_HAS_LFS=y -UCLIBC_HAS_LIBUTIL=y -# UCLIBC_HAS_LOCALE is not set -# UCLIBC_BUILD_ALL_LOCALE is not set -# UCLIBC_BUILD_MINIMAL_LOCALE is not set -UCLIBC_HAS_LONG_DOUBLE_MATH=y -UCLIBC_HAS_NETWORK_SUPPORT=y -UCLIBC_HAS_NFTW=y -# UCLIBC_HAS_OBSOLETE_BSD_SIGNAL is not set -# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set -UCLIBC_HAS_PRINTF_M_SPEC=y -# UCLIBC_HAS_PROFILING is not set -UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y -UCLIBC_HAS_PTY=y -UCLIBC_HAS_REALTIME=y -UCLIBC_HAS_REGEX=y -UCLIBC_HAS_RESOLVER_SUPPORT=y -# UCLIBC_HAS_SHA256_CRYPT_IMPL is not set -# UCLIBC_HAS_SHA512_CRYPT_IMPL is not set -UCLIBC_HAS_SHADOW=y -UCLIBC_HAS_SIGNUM_MESSAGES=y -UCLIBC_HAS_SOCKET=y -UCLIBC_HAS_SOFT_FLOAT=y -# UCLIBC_HAS_SSP is not set -UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y -# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set -# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set -# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set -UCLIBC_HAS_STDIO_BUFSIZ_4096=y -# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set -# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set -# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set -# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set -# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set -UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y -UCLIBC_HAS_STDIO_GETC_MACRO=y -UCLIBC_HAS_STDIO_PUTC_MACRO=y -# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set -UCLIBC_HAS_STRING_ARCH_OPT=y -UCLIBC_HAS_STRING_GENERIC_OPT=y -# UCLIBC_HAS_STUBS is not set -UCLIBC_HAS_SYSLOG=y -# UCLIBC_HAS_SYS_ERRLIST is not set -# UCLIBC_HAS_SYS_SIGLIST is not set -UCLIBC_HAS_THREADS=y -UCLIBC_HAS_TM_EXTENSIONS=y -UCLIBC_HAS_TZ_CACHING=y -UCLIBC_HAS_TZ_FILE=y -UCLIBC_HAS_TZ_FILE_READ_MANY=y -UCLIBC_HAS_UTMPX=y -UCLIBC_HAS_UTMP=y -UCLIBC_HAS_WCHAR=y -UCLIBC_HAS_WORDEXP=y -UCLIBC_HAS_XATTR=y -# UCLIBC_HAS_XLOCALE is not set -UCLIBC_HAS___PROGNAME=y -UCLIBC_LINUX_SPECIFIC=y -# UCLIBC_MALLOC_DEBUGGING is not set -# UCLIBC_NTP_LEGACY is not set -# USE_OLD_VFPRINTF is not set -UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9 -UCLIBC_PWD_BUFFER_SIZE=256 -# UCLIBC_STATIC_LDCONFIG is not set -# UCLIBC_STRICT_HEADERS is not set -UCLIBC_SUPPORT_AI_ADDRCONFIG=y -UCLIBC_SUSV3_LEGACY=y -# UCLIBC_SUSV3_LEGACY_MACROS is not set -UCLIBC_SUSV4_LEGACY=y -# UCLIBC_SV4_DEPRECATED is not set -UCLIBC_TZ_FILE_PATH="/etc/TZ" -# UCLIBC_FALLBACK_TO_ETC_LOCALTIME is not set -UCLIBC_USE_NETLINK=y -# UNIX98PTY_ONLY is not set -WARNINGS="-Wall" -# UCLIBC_SUSV2_LEGACY is not set -# UCLIBC_HAS_CONTEXT_FUNCS is not set -UCLIBC_HAS_GETOPT_LONG=y diff --git a/toolchain/uClibc/config/debug b/toolchain/uClibc/config/debug deleted file mode 100644 index b366e66e39..0000000000 --- a/toolchain/uClibc/config/debug +++ /dev/null @@ -1,6 +0,0 @@ -DODEBUG=y -DODEBUG_PT=y -PTHREADS_DEBUG_SUPPORT=y -SUPPORT_LD_DEBUG=y -SUPPORT_LD_DEBUG_EARLY=y -UCLIBC_MALLOC_DEBUGGING=y diff --git a/toolchain/uClibc/config/i386 b/toolchain/uClibc/config/i386 deleted file mode 100644 index cddb709630..0000000000 --- a/toolchain/uClibc/config/i386 +++ /dev/null @@ -1,8 +0,0 @@ -ARCH_LITTLE_ENDIAN=y -# CONFIG_386 is not set -CONFIG_486=y -# CONFIG_586 is not set -# CONFIG_686 is not set -TARGET_ARCH="i386" -TARGET_i386=y -UCLIBC_HAS_FPU=y diff --git a/toolchain/uClibc/config/i686 b/toolchain/uClibc/config/i686 deleted file mode 100644 index 8a25f41e23..0000000000 --- a/toolchain/uClibc/config/i686 +++ /dev/null @@ -1,8 +0,0 @@ -ARCH_LITTLE_ENDIAN=y -# CONFIG_386 is not set -# CONFIG_486 is not set -# CONFIG_586 is not set -CONFIG_686=y -TARGET_ARCH="i386" -TARGET_i386=y -UCLIBC_HAS_FPU=y diff --git a/toolchain/uClibc/config/m68k b/toolchain/uClibc/config/m68k deleted file mode 100644 index 0675bb9080..0000000000 --- a/toolchain/uClibc/config/m68k +++ /dev/null @@ -1,5 +0,0 @@ -ARCH_BIG_ENDIAN=y -TARGET_ARCH="m68k" -TARGET_SUBARCH="" -TARGET_m68k=y -# UCLIBC_HAS_THREADS_NATIVE is not set diff --git a/toolchain/uClibc/config/mips b/toolchain/uClibc/config/mips deleted file mode 100644 index c8f71f03c9..0000000000 --- a/toolchain/uClibc/config/mips +++ /dev/null @@ -1,10 +0,0 @@ -ARCH_ANY_ENDIAN=y -ARCH_BIG_ENDIAN=y -ARCH_CFLAGS="-mno-split-addresses" -ARCH_WANTS_BIG_ENDIAN=y -# CONFIG_MIPS_N32_ABI is not set -# CONFIG_MIPS_N64_ABI is not set -CONFIG_MIPS_O32_ABI=y -TARGET_ARCH="mips" -TARGET_mips=y -UCLIBC_HAS_FPU=y diff --git a/toolchain/uClibc/config/mips64 b/toolchain/uClibc/config/mips64 deleted file mode 100644 index 453293def3..0000000000 --- a/toolchain/uClibc/config/mips64 +++ /dev/null @@ -1,10 +0,0 @@ -ARCH_ANY_ENDIAN=y -ARCH_BIG_ENDIAN=y -ARCH_CFLAGS="-mno-split-addresses" -ARCH_WANTS_BIG_ENDIAN=y -# CONFIG_MIPS_N32_ABI is not set -CONFIG_MIPS_N64_ABI=y -# CONFIG_MIPS_O32_ABI is not set -TARGET_ARCH="mips" -TARGET_mips=y -UCLIBC_HAS_FPU=y diff --git a/toolchain/uClibc/config/mips64.32 b/toolchain/uClibc/config/mips64.32 deleted file mode 100644 index 4e98968633..0000000000 --- a/toolchain/uClibc/config/mips64.32 +++ /dev/null @@ -1,11 +0,0 @@ -ARCH_ANY_ENDIAN=y -ARCH_BIG_ENDIAN=y -ARCH_CFLAGS="-mno-split-addresses" -ARCH_WANTS_BIG_ENDIAN=y -# CONFIG_MIPS_N32_ABI is not set -# CONFIG_MIPS_N64_ABI is not set -CONFIG_MIPS_O32_ABI=y -TARGET_ARCH="mips" -TARGET_mips=y -TARGET_SUBARCH="mips64" -UCLIBC_HAS_FPU=y diff --git a/toolchain/uClibc/config/mips64.64 b/toolchain/uClibc/config/mips64.64 deleted file mode 100644 index bf4ecca704..0000000000 --- a/toolchain/uClibc/config/mips64.64 +++ /dev/null @@ -1,11 +0,0 @@ -ARCH_ANY_ENDIAN=y -ARCH_BIG_ENDIAN=y -ARCH_CFLAGS="-mno-split-addresses" -ARCH_WANTS_BIG_ENDIAN=y -# CONFIG_MIPS_N32_ABI is not set -CONFIG_MIPS_N64_ABI=y -# CONFIG_MIPS_O32_ABI is not set -TARGET_ARCH="mips" -TARGET_mips=y -TARGET_SUBARCH="mips64" -UCLIBC_HAS_FPU=y diff --git a/toolchain/uClibc/config/mips64.n32 b/toolchain/uClibc/config/mips64.n32 deleted file mode 100644 index c26ecec4c2..0000000000 --- a/toolchain/uClibc/config/mips64.n32 +++ /dev/null @@ -1,11 +0,0 @@ -ARCH_ANY_ENDIAN=y -ARCH_BIG_ENDIAN=y -ARCH_CFLAGS="-mno-split-addresses" -ARCH_WANTS_BIG_ENDIAN=y -CONFIG_MIPS_N32_ABI=y -# CONFIG_MIPS_N64_ABI is not set -# CONFIG_MIPS_O32_ABI is not set -TARGET_ARCH="mips" -TARGET_mips=y -TARGET_SUBARCH="mips64" -UCLIBC_HAS_FPU=y diff --git a/toolchain/uClibc/config/mips64el b/toolchain/uClibc/config/mips64el deleted file mode 100644 index 98d9bb4569..0000000000 --- a/toolchain/uClibc/config/mips64el +++ /dev/null @@ -1,10 +0,0 @@ -ARCH_ANY_ENDIAN=y -ARCH_CFLAGS="-mno-split-addresses" -ARCH_LITTLE_ENDIAN=y -ARCH_WANTS_LITTLE_ENDIAN=y -# CONFIG_MIPS_N32_ABI is not set -CONFIG_MIPS_N64_ABI=y -# CONFIG_MIPS_O32_ABI is not set -TARGET_ARCH="mips" -TARGET_mips=y -UCLIBC_HAS_FPU=y diff --git a/toolchain/uClibc/config/mips64el.32 b/toolchain/uClibc/config/mips64el.32 deleted file mode 100644 index 03ab17c24f..0000000000 --- a/toolchain/uClibc/config/mips64el.32 +++ /dev/null @@ -1,11 +0,0 @@ -ARCH_ANY_ENDIAN=y -ARCH_CFLAGS="-mno-split-addresses" -ARCH_LITTLE_ENDIAN=y -ARCH_WANTS_LITTLE_ENDIAN=y -# CONFIG_MIPS_N32_ABI is not set -# CONFIG_MIPS_N64_ABI is not set -CONFIG_MIPS_O32_ABI=y -TARGET_ARCH="mips" -TARGET_mips=y -TARGET_SUBARCH="mips64" -UCLIBC_HAS_FPU=y diff --git a/toolchain/uClibc/config/mips64el.64 b/toolchain/uClibc/config/mips64el.64 deleted file mode 100644 index 884640c756..0000000000 --- a/toolchain/uClibc/config/mips64el.64 +++ /dev/null @@ -1,11 +0,0 @@ -ARCH_ANY_ENDIAN=y -ARCH_CFLAGS="-mno-split-addresses" -ARCH_LITTLE_ENDIAN=y -ARCH_WANTS_LITTLE_ENDIAN=y -# CONFIG_MIPS_N32_ABI is not set -CONFIG_MIPS_N64_ABI=y -# CONFIG_MIPS_O32_ABI is not set -TARGET_ARCH="mips" -TARGET_mips=y -TARGET_SUBARCH="mips64" -UCLIBC_HAS_FPU=y diff --git a/toolchain/uClibc/config/mips64el.n32 b/toolchain/uClibc/config/mips64el.n32 deleted file mode 100644 index 9a8bb3d3fb..0000000000 --- a/toolchain/uClibc/config/mips64el.n32 +++ /dev/null @@ -1,11 +0,0 @@ -ARCH_ANY_ENDIAN=y -ARCH_CFLAGS="-mno-split-addresses" -ARCH_LITTLE_ENDIAN=y -ARCH_WANTS_LITTLE_ENDIAN=y -CONFIG_MIPS_N32_ABI=y -# CONFIG_MIPS_N64_ABI is not set -# CONFIG_MIPS_O32_ABI is not set -TARGET_ARCH="mips" -TARGET_mips=y -TARGET_SUBARCH="mips64" -UCLIBC_HAS_FPU=y diff --git a/toolchain/uClibc/config/mipsel b/toolchain/uClibc/config/mipsel deleted file mode 100644 index 2a79c16bdb..0000000000 --- a/toolchain/uClibc/config/mipsel +++ /dev/null @@ -1,10 +0,0 @@ -ARCH_ANY_ENDIAN=y -ARCH_CFLAGS="-mno-split-addresses" -ARCH_LITTLE_ENDIAN=y -ARCH_WANTS_LITTLE_ENDIAN=y -# CONFIG_MIPS_N32_ABI is not set -# CONFIG_MIPS_N64_ABI is not set -CONFIG_MIPS_O32_ABI=y -TARGET_ARCH="mips" -TARGET_mips=y -UCLIBC_HAS_FPU=y diff --git a/toolchain/uClibc/config/mipsel.cobalt b/toolchain/uClibc/config/mipsel.cobalt deleted file mode 100644 index 2a79c16bdb..0000000000 --- a/toolchain/uClibc/config/mipsel.cobalt +++ /dev/null @@ -1,10 +0,0 @@ -ARCH_ANY_ENDIAN=y -ARCH_CFLAGS="-mno-split-addresses" -ARCH_LITTLE_ENDIAN=y -ARCH_WANTS_LITTLE_ENDIAN=y -# CONFIG_MIPS_N32_ABI is not set -# CONFIG_MIPS_N64_ABI is not set -CONFIG_MIPS_O32_ABI=y -TARGET_ARCH="mips" -TARGET_mips=y -UCLIBC_HAS_FPU=y diff --git a/toolchain/uClibc/config/powerpc b/toolchain/uClibc/config/powerpc deleted file mode 100644 index 5b1292d12e..0000000000 --- a/toolchain/uClibc/config/powerpc +++ /dev/null @@ -1,6 +0,0 @@ -ARCH_BIG_ENDIAN=y -CONFIG_CLASSIC=y -# CONFIG_E500 is not set -TARGET_ARCH="powerpc" -TARGET_SUBARCH="classic" -TARGET_powerpc=y diff --git a/toolchain/uClibc/config/powerpc.e500 b/toolchain/uClibc/config/powerpc.e500 deleted file mode 100644 index a835c3d5e7..0000000000 --- a/toolchain/uClibc/config/powerpc.e500 +++ /dev/null @@ -1,6 +0,0 @@ -ARCH_BIG_ENDIAN=y -# CONFIG_CLASSIC is not set -CONFIG_E500=y -TARGET_ARCH="powerpc" -TARGET_SUBARCH="classic" -TARGET_powerpc=y diff --git a/toolchain/uClibc/config/sparc b/toolchain/uClibc/config/sparc deleted file mode 100644 index 3630b24a7e..0000000000 --- a/toolchain/uClibc/config/sparc +++ /dev/null @@ -1,6 +0,0 @@ -ARCH_BIG_ENDIAN=y -# CONFIG_SPARC_V7 is not set -# CONFIG_SPARC_V8 is not set -TARGET_ARCH="sparc" -TARGET_sparc=y -UCLIBC_HAS_LONG_DOUBLE_MATH=y diff --git a/toolchain/uClibc/config/sparc.leon b/toolchain/uClibc/config/sparc.leon deleted file mode 100644 index 3deb5148d9..0000000000 --- a/toolchain/uClibc/config/sparc.leon +++ /dev/null @@ -1,6 +0,0 @@ -ARCH_BIG_ENDIAN=y -# CONFIG_SPARC_V7 is not set -CONFIG_SPARC_V8=y -TARGET_ARCH="sparc" -TARGET_sparc=y -UCLIBC_HAS_LONG_DOUBLE_MATH=y diff --git a/toolchain/uClibc/config/x86_64 b/toolchain/uClibc/config/x86_64 deleted file mode 100644 index a13d659ba1..0000000000 --- a/toolchain/uClibc/config/x86_64 +++ /dev/null @@ -1,5 +0,0 @@ -ARCH_LITTLE_ENDIAN=y -TARGET_ARCH="x86_64" -TARGET_x86_64=y -UCLIBC_BSD_SPECIFIC=y -UCLIBC_HAS_FPU=y diff --git a/toolchain/uClibc/headers/Makefile b/toolchain/uClibc/headers/Makefile deleted file mode 100644 index abd3620d33..0000000000 --- a/toolchain/uClibc/headers/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -PATH_PREFIX:=.. - -include ../common.mk - -HOST_STAMP_BUILT:=$(HOST_BUILD_DIR)/.headers_built -HOST_STAMP_INSTALLED:=$(TOOLCHAIN_DIR)/stamp/.uclibc_headers_installed - -define Host/Compile - -endef - -define Host/Install - PATH='$(TARGET_PATH)' $(MAKE) -C $(HOST_BUILD_DIR) \ - PREFIX="$(BUILD_DIR_TOOLCHAIN)/$(LIBC)-dev/" \ - DEVEL_PREFIX=/ \ - RUNTIME_PREFIX="$(BUILD_DIR_TOOLCHAIN)/$(LIBC)-dev/" \ - HOSTCC="$(HOSTCC)" \ - CC="$(TARGET_CC)" \ - CPU_CFLAGS="$(TARGET_CFLAGS)" \ - ARCH="$(CONFIG_ARCH)" \ - pregen \ - install_headers - $(CP) $(BUILD_DIR_TOOLCHAIN)/linux-dev/* $(BUILD_DIR_TOOLCHAIN)/$(LIBC)-dev/ -endef - -$(eval $(call HostBuild)) - diff --git a/toolchain/uClibc/utils/Makefile b/toolchain/uClibc/utils/Makefile deleted file mode 100644 index 83100d70c1..0000000000 --- a/toolchain/uClibc/utils/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -PATH_PREFIX=.. - -include ../common.mk - -HOST_STAMP_BUILT:=$(HOST_BUILD_DIR)/.utils_built -HOST_STAMP_INSTALLED:=$(TOOLCHAIN_DIR)/stamp/.uclibc_utils_installed - -define Host/Compile - $(SED) 's,^CROSS=.*,CROSS=$(TARGET_CROSS),g' $(HOST_BUILD_DIR)/Rules.mak - $(UCLIBC_MAKE) PREFIX= utils -endef - -define Host/Install - $(INSTALL_DIR) $(TOOLCHAIN_DIR)/bin - $(INSTALL_BIN) \ - $(HOST_BUILD_DIR)/utils/ldd \ - $(TOOLCHAIN_DIR)/bin/ - $(INSTALL_DIR) $(TOOLCHAIN_DIR)/sbin - $(INSTALL_BIN) \ - $(HOST_BUILD_DIR)/utils/ldconfig \ - $(TOOLCHAIN_DIR)/sbin/ -endef - -$(eval $(call HostBuild)) From f109cee0a3565197ae9e07c91e361f20ee5c99ba Mon Sep 17 00:00:00 2001 From: Sven Eckelmann Date: Sun, 22 Nov 2020 13:12:09 +0100 Subject: [PATCH 12/18] images: Fix sysupgrade.tar for devices with NOR flash The NOR flash rootfs images stored in a sysupgrade.tar must end with the JFFS2 marker. Otherwise, devices like OpenMesh A42/A62 are not able to calculate the md5sum of the fixed squashfs part and store it inside the u-boot-env. But the commit ee76bd11bbe7 ("images: fix boot failures on NAND with small sub pages") adds up to 1020 0x00 bytes after the 0xdead0de EOF marker. The calculated md5sum will be wrong due do this change and u-boot will fail to boot the newly flashed device with a message like: Validating MD5Sum of 'vmlinux'... Passed! Validating MD5Sum of 'rootfs'... Failed! 583a1b7b54b8601efa64ade42742459b != 8850ee812dfd7638e94083329d5d2781 Data validation failed! and boot the old image again. Since the original change should not change the behavior of NOR images, just check for the deadc0de marker at the end of the squashfs-jffs2 image do avoid the problematic behavior for these images. Fixes: ee76bd11bbe7 ("images: fix boot failures on NAND with small sub pages") Signed-off-by: Sven Eckelmann --- scripts/functions.sh | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/scripts/functions.sh b/scripts/functions.sh index 9a7fcde627..ec0618c272 100644 --- a/scripts/functions.sh +++ b/scripts/functions.sh @@ -5,6 +5,19 @@ get_magic_word() { dd if=$1 bs=4 count=1 2>/dev/null | od -A n -N 4 -t x1 | tr -d ' ' } +get_post_padding_word() { + local rootfs_length="$(stat -c%s "$1")" + [ "$rootfs_length" -ge 4 ] || return + rootfs_length=$((rootfs_length-4)) + + # the JFFS2 end marker must be on a 4K boundary (often 64K or 256K) + local unaligned_bytes=$((rootfs_length%4096)) + [ "$unaligned_bytes" = 0 ] || return + + # skip rootfs data except the potential EOF marker + dd if="$1" bs=1 skip="$rootfs_length" 2>/dev/null | od -A n -N 4 -t x1 | tr -d ' ' +} + get_fs_type() { local magic_word="$(get_magic_word "$1")" @@ -13,7 +26,16 @@ get_fs_type() { echo "ubifs" ;; "68737173") - echo "squashfs" + local post_padding_word="$(get_post_padding_word "$1")" + + case "$post_padding_word" in + "deadc0de") + echo "squashfs-jffs2" + ;; + *) + echo "squashfs" + ;; + esac ;; *) echo "unknown" From baaef4b564f8970ee6a2528a691b2d2a842776fe Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Wed, 23 Dec 2020 00:32:41 +0100 Subject: [PATCH 13/18] toolchain: Fix glibc selection on ARC targets Without this change no libc is selected and the build will fail. This will select glibc for ARC CPUs. Fixes: 95f1002acab5 ("toolchain: default to glibc for ARC") Signed-off-by: Hauke Mehrtens --- toolchain/Config.in | 1 + 1 file changed, 1 insertion(+) diff --git a/toolchain/Config.in b/toolchain/Config.in index bb8729d805..6dda9af92d 100644 --- a/toolchain/Config.in +++ b/toolchain/Config.in @@ -260,6 +260,7 @@ config GDB Enable if you want to build the gdb. config USE_GLIBC + default y if !TOOLCHAINOPTS && !EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN && (arc) bool config USE_MUSL From 278c4f6b6f23a5639ae11feef27c160d532d379d Mon Sep 17 00:00:00 2001 From: AmadeusGhost <42570690+AmadeusGhost@users.noreply.github.com> Date: Tue, 22 Dec 2020 23:30:04 +0800 Subject: [PATCH 14/18] libcryptopp: allow compile on different platforms --- package/lean/libcryptopp/Makefile | 10 +- package/lean/libcryptopp/src/CMakeLists.txt | 1186 ------- package/lean/libcryptopp/src/Makefile.am | 493 +++ package/lean/libcryptopp/src/configure.ac | 2786 +++++++++++++++++ .../libcryptopp/src/cryptopp-config.cmake | 1 - .../lean/libcryptopp/src/libcryptopp.pc.in | 31 + 6 files changed, 3314 insertions(+), 1193 deletions(-) delete mode 100644 package/lean/libcryptopp/src/CMakeLists.txt create mode 100644 package/lean/libcryptopp/src/Makefile.am create mode 100644 package/lean/libcryptopp/src/configure.ac delete mode 100644 package/lean/libcryptopp/src/cryptopp-config.cmake create mode 100644 package/lean/libcryptopp/src/libcryptopp.pc.in diff --git a/package/lean/libcryptopp/Makefile b/package/lean/libcryptopp/Makefile index effc72046d..7f14bf8dcf 100644 --- a/package/lean/libcryptopp/Makefile +++ b/package/lean/libcryptopp/Makefile @@ -17,10 +17,10 @@ PKG_HASH:=db38a15a6b1c337c665e2ebeb731dd0754b05e45504897d0f2fe4ae9f5ee589a PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) -CMAKE_INSTALL:=1 +PKG_FIXUP:=autoreconf +PKG_INSTALL:=1 include $(INCLUDE_DIR)/package.mk -include $(INCLUDE_DIR)/cmake.mk define Package/libcryptopp SECTION:=libs @@ -36,15 +36,13 @@ define Package/package/libcryptopp abstract base classes. endef -CMAKE_OPTIONS += -DCMAKE_CXX_FLAGS="$(FPIC)" -CMAKE_OPTIONS += -DBUILD_STATIC=ON -CMAKE_OPTIONS += -DBUILD_SHARED=ON - UNPACK_CMD=cd $(PKG_BUILD_DIR) && unzip "$(DL_DIR)/$(PKG_SOURCE)" + define Build/Prepare $(Build/Prepare/Default) cd $(PKG_BUILD_DIR) && rm -f GNUmakefile GNUmakefile-cross endef + define Build/InstallDev $(INSTALL_DIR) $(1)/usr/include/cryptopp $(CP) $(PKG_INSTALL_DIR)/usr/include/cryptopp/* $(1)/usr/include/cryptopp/ diff --git a/package/lean/libcryptopp/src/CMakeLists.txt b/package/lean/libcryptopp/src/CMakeLists.txt deleted file mode 100644 index e4a4d1678b..0000000000 --- a/package/lean/libcryptopp/src/CMakeLists.txt +++ /dev/null @@ -1,1186 +0,0 @@ -# Please ensure your changes or patch meets minimum requirements. -# The minimum requirements are 2.8.6. It roughly equates to -# Ubuntu 14.05 LTS or Solaris 11.3. Please do not check in something -# for 3.5.0 or higher because it will break LTS operating systems -# and a number of developer boards used for testing. To test your -# changes, please set up a Ubuntu 14.05 LTS system. - -# Should we be setting things like this? We are not a C project -# so nothing should be done with the C compiler. But there is -# no reliable way to tell CMake we are C++. -# Cannot set this... Breaks Linux PowerPC with Clang: -# SET(CMAKE_C_COMPILER ${CMAKE_CXX_COMPILER}) -# # error "The CMAKE_C_COMPILER is set to a C++ compiler" - -if(NOT DEFINED cryptocpp_DISPLAY_CMAKE_SUPPORT_WARNING) - set(cryptocpp_DISPLAY_CMAKE_SUPPORT_WARNING 1) -endif() -if(cryptocpp_DISPLAY_CMAKE_SUPPORT_WARNING) - message( STATUS -"*************************************************************************\n" -"The Crypto++ library does not officially support CMake. CMake support is a\n" -"community effort, and the library works with the folks using CMake to help\n" -"improve it. If you find an issue then please fix it or report it at\n" -"https://github.com/noloader/cryptopp-cmake.\n" -"-- *************************************************************************" -) -endif() - -# Print useful information -message( STATUS "CMake version ${CMAKE_VERSION}" ) - -cmake_minimum_required(VERSION 2.8.6) -if (${CMAKE_VERSION} VERSION_LESS "3.0.0") - project(cryptopp) - set(cryptopp_VERSION_MAJOR 8) - set(cryptopp_VERSION_MINOR 3) - set(cryptopp_VERSION_PATCH 0) -else () - cmake_policy(SET CMP0048 NEW) - project(cryptopp VERSION 8.3.0) - if (NOT ${CMAKE_VERSION} VERSION_LESS "3.1.0") - cmake_policy(SET CMP0054 NEW) - endif () -endif () - -# Need to set SRC_DIR manually after removing the Python library code. -set(SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}) - -# Make RelWithDebInfo the default (it does e.g. add '-O2 -g -DNDEBUG' for GNU) -# If not in multi-configuration environments, no explicit build type or CXX -# flags are set by the user and if we are the root CMakeLists.txt file. -if (NOT CMAKE_CONFIGURATION_TYPES AND - NOT CMAKE_NO_BUILD_TYPE AND - NOT CMAKE_BUILD_TYPE AND - NOT CMAKE_CXX_FLAGS AND - CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) - set(CMAKE_BUILD_TYPE RelWithDebInfo) -endif () - -include(GNUInstallDirs) -include(CheckCXXCompilerFlag) - -# We now carry around test programs. test_cxx.cxx is the default C++ one. -# Also see https://github.com/weidai11/cryptopp/issues/741. -set(TEST_PROG_DIR ${SRC_DIR}/TestPrograms) -set(TEST_CXX_FILE ${TEST_PROG_DIR}/test_cxx.cxx) - -#============================================================================ -# Settable options -#============================================================================ - -option(BUILD_STATIC "Build static library" ON) -option(BUILD_SHARED "Build shared library" ON) -option(BUILD_TESTING "Build library tests" ON) -option(BUILD_DOCUMENTATION "Use Doxygen to create the HTML based API documentation" OFF) -option(USE_INTERMEDIATE_OBJECTS_TARGET "Use a common intermediate objects target for the static and shared library targets" ON) - -# These are IA-32 options. TODO: Add ARM A-32, Aarch64 and Power8 options. -option(DISABLE_ASM "Disable ASM" OFF) -option(DISABLE_SSSE3 "Disable SSSE3" OFF) -option(DISABLE_SSE4 "Disable SSE4" OFF) -option(DISABLE_AESNI "Disable AES-NI" OFF) -option(DISABLE_SHA "Disable SHA" OFF) -option(DISABLE_AVX "Disable AVX" OFF) -option(DISABLE_AVX2 "Disable AVX2" OFF) -option(CRYPTOPP_NATIVE_ARCH "Enable native architecture" OFF) -set(CRYPTOPP_DATA_DIR "" CACHE PATH "Crypto++ test data directory") - -#============================================================================ -# Compiler options -#============================================================================ - -set(CRYPTOPP_COMPILE_DEFINITIONS) -set(CRYPTOPP_COMPILE_OPTIONS) - -# Stop hiding the damn output... -# set(CMAKE_VERBOSE_MAKEFILE on) - -# Always 1 ahead in Master. Also see http://groups.google.com/forum/#!topic/cryptopp-users/SFhqLDTQPG4 -set(LIB_VER ${cryptopp_VERSION_MAJOR}${cryptopp_VERSION_MINOR}${cryptopp_VERSION_PATCH}) - -# Don't use RPATH's. The resulting binary could fail a security audit. -set(CMAKE_MACOSX_RPATH 0) - -if (CMAKE_CXX_COMPILER_ID STREQUAL "Intel") - list(APPEND CRYPTOPP_COMPILE_OPTIONS -wd68 -wd186 -wd279 -wd327 -wd161 -wd3180) -endif () - -# Also see http://github.com/weidai11/cryptopp/issues/395 -if (DISABLE_ASM) - list(APPEND CRYPTOPP_COMPILE_DEFINITIONS CRYPTOPP_DISABLE_ASM) -endif () -if (DISABLE_SSSE3) - list(APPEND CRYPTOPP_COMPILE_DEFINITIONS CRYPTOPP_DISABLE_SSSE3) -endif () -if (DISABLE_SSE4) - list(APPEND CRYPTOPP_COMPILE_DEFINITIONS CRYPTOPP_DISABLE_SSSE4) -endif () -if (DISABLE_CLMUL) - list(APPEND CRYPTOPP_COMPILE_DEFINITIONS CRYPTOPP_DISABLE_CLMUL) -endif () -if (DISABLE_AESNI) - list(APPEND CRYPTOPP_COMPILE_DEFINITIONS CRYPTOPP_DISABLE_AESNI) -endif () -if (DISABLE_RDRAND) - list(APPEND CRYPTOPP_COMPILE_DEFINITIONS CRYPTOPP_DISABLE_RDRAND) -endif () -if (DISABLE_RDSEED) - list(APPEND CRYPTOPP_COMPILE_DEFINITIONS CRYPTOPP_DISABLE_RDSEED) -endif () -if (DISABLE_AVX) - list(APPEND CRYPTOPP_COMPILE_DEFINITIONS CRYPTOPP_DISABLE_AVX) -endif () -if (DISABLE_AVX2) - list(APPEND CRYPTOPP_COMPILE_DEFINITIONS CRYPTOPP_DISABLE_AVX2) -endif () -if (DISABLE_SHA) - list(APPEND CRYPTOPP_COMPILE_DEFINITIONS CRYPTOPP_DISABLE_SHA) -endif () -if (DISABLE_ALTIVEC) - list(APPEND CRYPTOPP_COMPILE_DEFINITIONS CRYPTOPP_DISABLE_ALTIVEC) -endif () -if (DISABLE_POWER7) - list(APPEND CRYPTOPP_COMPILE_DEFINITIONS CRYPTOPP_DISABLE_POWER7) -endif () -if (DISABLE_POWER8) - list(APPEND CRYPTOPP_COMPILE_DEFINITIONS CRYPTOPP_DISABLE_POWER8) -endif () -if (DISABLE_POWER9) - list(APPEND CRYPTOPP_COMPILE_DEFINITIONS CRYPTOPP_DISABLE_POWER9) -endif () -if (NOT CRYPTOPP_DATA_DIR STREQUAL "") - list(APPEND CRYPTOPP_COMPILE_DEFINITIONS "CRYPTOPP_DATA_DIR=${CRYPTOPP_DATA_DIR}") -endif () - -############################################################################### - -# Try to find a Posix compatible grep and sed. Solaris, Digital Unix, -# Tru64, HP-UX and a few others need tweaking - -if (EXISTS /usr/xpg4/bin/grep) - set(GREP_CMD /usr/xpg4/bin/grep) -elseif (EXISTS /usr/gnu/bin/grep) - set(GREP_CMD /usr/gnu/bin/grep) -elseif (EXISTS /usr/linux/bin/grep) - set(GREP_CMD /usr/linux/bin/grep) -else () - set(GREP_CMD grep) -endif () - -if (EXISTS /usr/xpg4/bin/sed) - set(SED_CMD /usr/xpg4/bin/sed) -elseif (EXISTS /usr/gnu/bin/sed) - set(SED_CMD /usr/gnu/bin/sed) -elseif (EXISTS /usr/linux/bin/sed) - set(SED_CMD /usr/linux/bin/sed) -else () - set(SED_CMD sed) -endif () - -############################################################################### - -function(CheckCompileOption opt var) - - if (MSVC) - - # TODO: improve this... - CHECK_CXX_COMPILER_FLAG(${opt} ${var}) - - elseif (CMAKE_CXX_COMPILER_ID MATCHES "SunPro") - - message(STATUS "Performing Test ${var}") - execute_process( - COMMAND sh -c "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_FLAGS} ${opt} -c ${TEST_CXX_FILE} 2>&1" - COMMAND ${GREP_CMD} -i -c -E "illegal value ignored" - RESULT_VARIABLE COMMAND_RESULT - OUTPUT_VARIABLE COMMAND_OUTPUT - OUTPUT_STRIP_TRAILING_WHITESPACE) - - # No dereference below. Thanks for the warning, CMake (not!). - if (COMMAND_RESULT AND NOT COMMAND_OUTPUT) - set(${var} 1 PARENT_SCOPE) - message(STATUS "Performing Test ${var} - Success") - else () - set(${var} 0 PARENT_SCOPE) - message(STATUS "Performing Test ${var} - Failed") - endif () - - # Must use CMAKE_CXX_COMPILER here due to XLC 13.1 and LLVM front-end. - elseif (CMAKE_CXX_COMPILER MATCHES "xlC") - - message(STATUS "Performing Test ${var}") - execute_process( - COMMAND sh -c "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_FLAGS} ${opt} -c ${TEST_CXX_FILE} 2>&1" - COMMAND ${GREP_CMD} -i -c -E "Unrecognized value" - RESULT_VARIABLE COMMAND_RESULT - OUTPUT_VARIABLE COMMAND_OUTPUT - OUTPUT_STRIP_TRAILING_WHITESPACE) - - # No dereference below. Thanks for the warning, CMake (not!). - if (COMMAND_RESULT AND NOT COMMAND_OUTPUT) - set(${var} 1 PARENT_SCOPE) - message(STATUS "Performing Test ${var} - Success") - else () - set(${var} 0 PARENT_SCOPE) - message(STATUS "Performing Test ${var} - Failed") - endif () - - else () - - CHECK_CXX_COMPILER_FLAG(${opt} ${var}) - - endif () - -endfunction(CheckCompileOption) - -function(CheckCompileLinkOption opt var prog) - - if (MSVC) - - # TODO: improve this... - CHECK_CXX_COMPILER_FLAG(${opt} ${var}) - - elseif (APPLE) - - message(STATUS "Performing Test ${var}") - try_compile(COMMAND_SUCCESS ${CMAKE_BINARY_DIR} ${prog} COMPILE_DEFINITIONS ${opt}) - if (COMMAND_SUCCESS) - set(${var} 1 PARENT_SCOPE) - message(STATUS "Performing Test ${var} - Success") - else () - set(${var} 0 PARENT_SCOPE) - message(STATUS "Performing Test ${var} - Failed") - endif () - - else () - - message(STATUS "Performing Test ${var}") - try_compile(COMMAND_SUCCESS ${CMAKE_BINARY_DIR} ${prog} COMPILE_DEFINITIONS ${opt}) - if (COMMAND_SUCCESS) - set(${var} 1 PARENT_SCOPE) - message(STATUS "Performing Test ${var} - Success") - else () - set(${var} 0 PARENT_SCOPE) - message(STATUS "Performing Test ${var} - Failed") - endif () - - endif () - -endfunction(CheckCompileLinkOption) - -function(AddCompileOption opt) - - if ("${COMMAND_OUTPUT}" NOT STREQUAL "") - list(APPEND CRYPTOPP_COMPILE_OPTIONS "${opt}") - endif () - -endfunction(AddCompileOption) - -############################################################################### - -function(DumpMachine output pattern) - - if (MSVC) - - # CMake does not provide a generic shell/terminal mechanism - # and Microsoft environments don't know what 'sh' is. - set(${output} 0 PARENT_SCOPE) - - else () - if(CMAKE_SYSTEM_PROCESSOR MATCHES ${pattern}) - set(${output} TRUE PARENT_SCOPE) - endif() - endif() - -endfunction(DumpMachine) - -# Thansk to Anonimal for MinGW; see http://github.com/weidai11/cryptopp/issues/466 -DumpMachine(CRYPTOPP_AMD64 "(x86_64)|(AMD64|amd64)") -DumpMachine(CRYPTOPP_I386 "^i.86$") -DumpMachine(CRYPTOPP_MINGW32 "^mingw32") -DumpMachine(CRYPTOPP_MINGW64 "(w64-mingw32)|(mingw64)") -DumpMachine(CRYPTOPP_X32 "(x32)") -DumpMachine(CRYPTOPP_AARCH32 "^aarch32") -DumpMachine(CRYPTOPP_AARCH64 "^aarch64") -DumpMachine(CRYPTOPP_ARMHF "(armhf)|(arm7l)|(eabihf)") -DumpMachine(CRYPTOPP_ARM "^arm") - -# Detecting PowerPC is only good with GCC. IBM XLC compiler is -# a little different and I don't know how to ask to the triplet -# XLC is targeting. Below we punt by setting CRYPTOPP_POWERPC64 -# if we detect the compiler is XLC. -DumpMachine(CRYPTOPP_POWERPC "^(powerpc|ppc)") -DumpMachine(CRYPTOPP_POWERPC64 "^ppc64") - -############################################################################### - -# Test SunCC for a string like 'CC: Sun C++ 5.13 SunOS_i386' -if (NOT CRYPTOPP_SOLARIS) - execute_process(COMMAND sh -c "${CMAKE_CXX_COMPILER} -V 2>&1" - COMMAND ${GREP_CMD} -i -c "SunOS" - OUTPUT_VARIABLE CRYPTOPP_SOLARIS - OUTPUT_STRIP_TRAILING_WHITESPACE) -endif () - -# Test GCC for a string like 'i386-pc-solaris2.11' -if (NOT CRYPTOPP_SOLARIS) - execute_process(COMMAND sh -c "${CMAKE_CXX_COMPILER} -dumpmachine 2>&1" - COMMAND ${GREP_CMD} -i -c "Solaris" - OUTPUT_VARIABLE CRYPTOPP_SOLARIS - OUTPUT_STRIP_TRAILING_WHITESPACE) -endif () - -# Fixup PowerPC. If both 32-bit and 64-bit use 64-bit. -if (CRYPTOPP_POWERPC AND CRYPTOPP_POWERPC64) - unset(CRYPTOPP_POWERPC) -endif () - -# Fixup for xlC compiler. -dumpmachine fails so we miss PowerPC -# TODO: something better than proxying the platform via compiler -# Must use CMAKE_CXX_COMPILER here due to XLC 13.1 and LLVM front-end. -if (CMAKE_CXX_COMPILER MATCHES "xlC") - message ("-- Fixing platform due to IBM xlC") - set(CRYPTOPP_POWERPC64 1) -endif () - -# DumpMachine SunCC style -if (CMAKE_CXX_COMPILER_ID STREQUAL "SunPro") - - # SunCC is 32-bit, but it builds both 32 and 64 bit. Use - execute_process(COMMAND sh -c "${CMAKE_CXX_COMPILER} -V 2>&1" - COMMAND ${GREP_CMD} -i -c "Sparc" - OUTPUT_VARIABLE CRYPTOPP_SPARC - OUTPUT_STRIP_TRAILING_WHITESPACE) - - execute_process(COMMAND sh -c "${CMAKE_CXX_COMPILER} -V 2>&1" - COMMAND ${GREP_CMD} -i -c -E "i386|i86" - OUTPUT_VARIABLE CRYPTOPP_I386 - OUTPUT_STRIP_TRAILING_WHITESPACE) - - execute_process(COMMAND isainfo -k - COMMAND ${GREP_CMD} -i -c "i386" - OUTPUT_VARIABLE KERNEL_I386 - OUTPUT_STRIP_TRAILING_WHITESPACE) - - execute_process(COMMAND isainfo -k - COMMAND ${GREP_CMD} -i -c "amd64" - OUTPUT_VARIABLE KERNEL_AMD64 - OUTPUT_STRIP_TRAILING_WHITESPACE) - - execute_process(COMMAND isainfo -k - COMMAND ${GREP_CMD} -i -c "Sparc" - OUTPUT_VARIABLE KERNEL_SPARC - OUTPUT_STRIP_TRAILING_WHITESPACE) - - execute_process(COMMAND isainfo -k - COMMAND ${GREP_CMD} -i -c -E "UltraSarc|Sparc64|SparcV9" - OUTPUT_VARIABLE KERNEL_SPARC64 - OUTPUT_STRIP_TRAILING_WHITESPACE) - -endif () - -############################################################################### - -# TODO: what about ICC and LLVM on Windows? -if (MSVC) - if (CMAKE_SYSTEM_VERSION MATCHES "10\\.0.*") - list(APPEND CRYPTOPP_COMPILE_DEFINITIONS "_WIN32_WINNT=0x0A00") - endif () - list(APPEND CRYPTOPP_COMPILE_OPTIONS /FI winapifamily.h) -endif () - -# Enable PIC for all target machines except 32-bit i386 due to register pressures. -if (NOT CRYPTOPP_I386) - SET(CMAKE_POSITION_INDEPENDENT_CODE 1) -endif () - -# IBM XLC compiler options for AIX and Linux. -# Must use CMAKE_CXX_COMPILER here due to XLC 13.1 and LLVM front-end. -if (CMAKE_CXX_COMPILER MATCHES "xlC") - - #CheckCompileLinkOption("-qxlcompatmacros" CRYPTOPP_XLC_COMPAT "${TEST_CXX_FILE}") - #if (CRYPTOPP_XLC_COMPAT) - # list(APPEND CRYPTOPP_COMPILE_OPTIONS "-qxlcompatmacros") - #endif () - - CheckCompileLinkOption("-qrtti" CRYPTOPP_PPC_RTTI "${TEST_CXX_FILE}") - if (CRYPTOPP_PPC_RTTI) - list(APPEND CRYPTOPP_COMPILE_OPTIONS "-qrtti") - endif () - - CheckCompileLinkOption("-qmaxmem=-1" CRYPTOPP_PPC_MAXMEM "${TEST_CXX_FILE}") - if (CRYPTOPP_PPC_MAXMEM) - list(APPEND CRYPTOPP_COMPILE_OPTIONS "-qmaxmem=-1") - endif () - - CheckCompileLinkOption("-qthreaded" CRYPTOPP_PPC_THREADED "${TEST_CXX_FILE}") - if (CRYPTOPP_PPC_THREADED) - list(APPEND CRYPTOPP_COMPILE_OPTIONS "-qthreaded") - endif () -endif () - -# Solaris specific -if (CRYPTOPP_SOLARIS) - - # SunCC needs -template=no%extdef - if (CMAKE_CXX_COMPILER_ID STREQUAL "SunPro") - list(APPEND CRYPTOPP_COMPILE_OPTIONS "-template=no%extdef") - endif () - - # SunCC needs -xregs=no%appl on Sparc (not x86) for libraries (not test program) - # TODO: wire this up properly - if (CMAKE_CXX_COMPILER_ID STREQUAL "SunPro" AND (CRYPTOPP_SPARC OR CRYPTOPP_SPARC64)) - list(APPEND CRYPTOPP_COMPILE_OPTIONS "-xregs=no%appl") - endif () - - # GCC needs to enable use of '/' for division in the assembler - if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - list(APPEND CRYPTOPP_COMPILE_OPTIONS "-Wa,--divide") - endif () - -endif () - -#============================================================================ -# Sources & headers -#============================================================================ - -# Library headers -file(GLOB cryptopp_HEADERS ${SRC_DIR}/*.h) - -# Remove headers used to build test suite -list(REMOVE_ITEM cryptopp_HEADERS - ${SRC_DIR}/bench.h - ${SRC_DIR}/validate.h - ) - -# Test sources. You can use the GNUmakefile to generate the list: `make sources`. -set(cryptopp_SOURCES_TEST - ${SRC_DIR}/test.cpp - ${SRC_DIR}/bench1.cpp - ${SRC_DIR}/bench2.cpp - ${SRC_DIR}/bench3.cpp - ${SRC_DIR}/validat0.cpp - ${SRC_DIR}/validat1.cpp - ${SRC_DIR}/validat2.cpp - ${SRC_DIR}/validat3.cpp - ${SRC_DIR}/validat4.cpp - ${SRC_DIR}/validat5.cpp - ${SRC_DIR}/validat6.cpp - ${SRC_DIR}/validat7.cpp - ${SRC_DIR}/validat8.cpp - ${SRC_DIR}/validat9.cpp - ${SRC_DIR}/validat10.cpp - ${SRC_DIR}/regtest1.cpp - ${SRC_DIR}/regtest2.cpp - ${SRC_DIR}/regtest3.cpp - ${SRC_DIR}/regtest4.cpp - ${SRC_DIR}/datatest.cpp - ${SRC_DIR}/fipsalgt.cpp - ${SRC_DIR}/fipstest.cpp - ${SRC_DIR}/dlltest.cpp - #${SRC_DIR}/adhoc.cpp - ) - -# Library sources. You can use the GNUmakefile to generate the list: `make sources`. -# Makefile sorted them at http://github.com/weidai11/cryptopp/pull/426. -file(GLOB cryptopp_SOURCES ${SRC_DIR}/*.cpp) -list(SORT cryptopp_SOURCES) -list(REMOVE_ITEM cryptopp_SOURCES - ${SRC_DIR}/cryptlib.cpp - ${SRC_DIR}/cpu.cpp - ${SRC_DIR}/integer.cpp - ${SRC_DIR}/pch.cpp - ${SRC_DIR}/simple.cpp - ${SRC_DIR}/adhoc.cpp - ${cryptopp_SOURCES_TEST} - ) -set(cryptopp_SOURCES - ${SRC_DIR}/cryptlib.cpp - ${SRC_DIR}/cpu.cpp - ${SRC_DIR}/integer.cpp - ${cryptopp_SOURCES} - ) - -if(ANDROID) - include_directories(${ANDROID_NDK}/sources/android/cpufeatures) - list(APPEND cryptopp_SOURCES ${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c) -endif() - -set(cryptopp_SOURCES_ASM) - -if (MSVC AND NOT DISABLE_ASM) - if (${CMAKE_GENERATOR} MATCHES ".*ARM") - message(STATUS "Disabling ASM because ARM is specified as target platform.") - else () - enable_language(ASM_MASM) - list(APPEND cryptopp_SOURCES_ASM - ${SRC_DIR}/rdrand.asm - ${SRC_DIR}/rdseed.asm - ) - if (CMAKE_SIZEOF_VOID_P EQUAL 8) - list(APPEND cryptopp_SOURCES_ASM - ${SRC_DIR}/x64dll.asm - ${SRC_DIR}/x64masm.asm - ) - set_source_files_properties(${cryptopp_SOURCES_ASM} PROPERTIES COMPILE_DEFINITIONS "_M_X64") - else () - set_source_files_properties(${cryptopp_SOURCES_ASM} PROPERTIES COMPILE_DEFINITIONS "_M_X86" COMPILE_FLAGS "/safeseh") - endif () - set_source_files_properties(${cryptopp_SOURCES_ASM} PROPERTIES LANGUAGE ASM_MASM) - endif () -endif () - -#============================================================================ -# Architecture flags -#============================================================================ - -# TODO: Android, AIX, IBM xlC, iOS and a few other profiles are missing. - -# New as of Pull Request 461, http://github.com/weidai11/cryptopp/pull/461. -# Must use CMAKE_CXX_COMPILER here due to XLC 13.1 and LLVM front-end. -if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Intel" OR CMAKE_CXX_COMPILER MATCHES "xlC") - - if (CRYPTOPP_AMD64 OR CRYPTOPP_I386 OR CRYPTOPP_X32) - - CheckCompileLinkOption("-msse2" CRYPTOPP_IA32_SSE2 - "${TEST_PROG_DIR}/test_x86_sse2.cxx") - CheckCompileLinkOption("-mssse3" CRYPTOPP_IA32_SSSE3 - "${TEST_PROG_DIR}/test_x86_ssse3.cxx") - CheckCompileLinkOption("-msse4.1" CRYPTOPP_IA32_SSE41 - "${TEST_PROG_DIR}/test_x86_sse41.cxx") - CheckCompileLinkOption("-msse4.2" CRYPTOPP_IA32_SSE42 - "${TEST_PROG_DIR}/test_x86_sse42.cxx") - CheckCompileLinkOption("-mssse3 -mpclmul" CRYPTOPP_IA32_CLMUL - "${TEST_PROG_DIR}/test_x86_clmul.cxx") - CheckCompileLinkOption("-msse4.1 -maes" CRYPTOPP_IA32_AES - "${TEST_PROG_DIR}/test_x86_aes.cxx") - CheckCompileLinkOption("-mavx" CRYPTOPP_IA32_AVX - "${TEST_PROG_DIR}/test_x86_avx.cxx") - CheckCompileLinkOption("-mavx2" CRYPTOPP_IA32_AVX2 - "${TEST_PROG_DIR}/test_x86_avx2.cxx") - CheckCompileLinkOption("-msse4.2 -msha" CRYPTOPP_IA32_SHA - "${TEST_PROG_DIR}/test_x86_sha.cxx") - if (EXISTS "${TEST_PROG_DIR}/test_asm_mixed.cxx") - CheckCompileLinkOption("" CRYPTOPP_MIXED_ASM - "${TEST_PROG_DIR}/test_asm_mixed.cxx") - else () - CheckCompileLinkOption("" CRYPTOPP_MIXED_ASM - "${TEST_PROG_DIR}/test_mixed_asm.cxx") - endif () - - # https://github.com/weidai11/cryptopp/issues/756 - if (NOT CRYPTOPP_MIXED_ASM) - list(APPEND CRYPTOPP_COMPILE_OPTIONS "-DCRYPTOPP_DISABLE_MIXED_ASM") - endif () - - if (NOT CRYPTOPP_IA32_SSE2 AND NOT DISABLE_ASM) - list(APPEND CRYPTOPP_COMPILE_OPTIONS "-DCRYPTOPP_DISABLE_ASM") - elseif (CRYPTOPP_IA32_SSE2 AND NOT DISABLE_ASM) - set_source_files_properties(${SRC_DIR}/sse_simd.cpp PROPERTIES COMPILE_FLAGS "-msse2") - set_source_files_properties(${SRC_DIR}/chacha_simd.cpp PROPERTIES COMPILE_FLAGS "-msse2") - set_source_files_properties(${SRC_DIR}/donna_sse.cpp PROPERTIES COMPILE_FLAGS "-msse2") - endif () - if (NOT CRYPTOPP_IA32_SSSE3 AND NOT DISABLE_SSSE3) - list(APPEND CRYPTOPP_COMPILE_OPTIONS "-DCRYPTOPP_DISABLE_SSSE3") - elseif (CRYPTOPP_IA32_SSSE3 AND NOT DISABLE_SSSE3) - set_source_files_properties(${SRC_DIR}/aria_simd.cpp PROPERTIES COMPILE_FLAGS "-mssse3") - set_source_files_properties(${SRC_DIR}/cham_simd.cpp PROPERTIES COMPILE_FLAGS "-mssse3") - set_source_files_properties(${SRC_DIR}/keccak_simd.cpp PROPERTIES COMPILE_FLAGS "-mssse3") - set_source_files_properties(${SRC_DIR}/lea_simd.cpp PROPERTIES COMPILE_FLAGS "-mssse3") - set_source_files_properties(${SRC_DIR}/simon128_simd.cpp PROPERTIES COMPILE_FLAGS "-mssse3") - set_source_files_properties(${SRC_DIR}/speck128_simd.cpp PROPERTIES COMPILE_FLAGS "-mssse3") - if (NOT CRYPTOPP_IA32_SSE41 AND NOT DISABLE_SSE4) - list(APPEND CRYPTOPP_COMPILE_OPTIONS "-DCRYPTOPP_DISABLE_SSE4") - elseif (CRYPTOPP_IA32_SSE41 AND NOT DISABLE_SSE4) - set_source_files_properties(${SRC_DIR}/blake2s_simd.cpp PROPERTIES COMPILE_FLAGS "-msse4.1") - set_source_files_properties(${SRC_DIR}/blake2b_simd.cpp PROPERTIES COMPILE_FLAGS "-msse4.1") - endif () - if (NOT CRYPTOPP_IA32_SSE42 AND NOT DISABLE_SSE4) - list(APPEND CRYPTOPP_COMPILE_OPTIONS "-DCRYPTOPP_DISABLE_SSE4") - elseif (CRYPTOPP_IA32_SSE42 AND NOT DISABLE_SSE4) - set_source_files_properties(${SRC_DIR}/crc_simd.cpp PROPERTIES COMPILE_FLAGS "-msse4.2") - if (NOT CRYPTOPP_IA32_CLMUL AND NOT DISABLE_CLMUL) - list(APPEND CRYPTOPP_COMPILE_OPTIONS "-DCRYPTOPP_DISABLE_CLMUL") - elseif (CRYPTOPP_IA32_CLMUL AND NOT DISABLE_CLMUL) - set_source_files_properties(${SRC_DIR}/gcm_simd.cpp PROPERTIES COMPILE_FLAGS "-mssse3 -mpclmul") - set_source_files_properties(${SRC_DIR}/gf2n_simd.cpp PROPERTIES COMPILE_FLAGS "-mpclmul") - endif () - if (NOT CRYPTOPP_IA32_AES AND NOT DISABLE_AES) - list(APPEND CRYPTOPP_COMPILE_OPTIONS "-DCRYPTOPP_DISABLE_AESNI") - elseif (CRYPTOPP_IA32_AES AND NOT DISABLE_AES) - set_source_files_properties(${SRC_DIR}/rijndael_simd.cpp PROPERTIES COMPILE_FLAGS "-msse4.1 -maes") - set_source_files_properties(${SRC_DIR}/sm4_simd.cpp PROPERTIES COMPILE_FLAGS "-mssse3 -maes") - endif () - #if (NOT CRYPTOPP_IA32_AVX AND NOT DISABLE_AVX) - # list(APPEND CRYPTOPP_COMPILE_OPTIONS "-DCRYPTOPP_DISABLE_AVX") - #elseif (CRYPTOPP_IA32_AVX AND NOT DISABLE_AVX) - # set_source_files_properties(${SRC_DIR}/XXX_avx.cpp PROPERTIES COMPILE_FLAGS "-mavx") - #endif () - if (NOT CRYPTOPP_IA32_AVX2 AND NOT DISABLE_AVX2) - list(APPEND CRYPTOPP_COMPILE_OPTIONS "-DCRYPTOPP_DISABLE_AVX2") - elseif (CRYPTOPP_IA32_AVX2 AND NOT DISABLE_AVX2) - set_source_files_properties(${SRC_DIR}/chacha_avx.cpp PROPERTIES COMPILE_FLAGS "-mavx2") - endif () - if (NOT CRYPTOPP_IA32_SHA AND NOT DISABLE_SHA) - list(APPEND CRYPTOPP_COMPILE_OPTIONS "-DCRYPTOPP_DISABLE_SHANI") - elseif (CRYPTOPP_IA32_SHA AND NOT DISABLE_SHA) - set_source_files_properties(${SRC_DIR}/sha_simd.cpp PROPERTIES COMPILE_FLAGS "-msse4.2 -msha") - set_source_files_properties(${SRC_DIR}/shacal2_simd.cpp PROPERTIES COMPILE_FLAGS "-msse4.2 -msha") - endif () - endif () - endif () - - elseif (CRYPTOPP_AARCH32 OR CRYPTOPP_AARCH64) - - CheckCompileOption("-march=armv8-a" CRYPTOPP_ARMV8A_ASIMD) - CheckCompileOption("-march=armv8-a+crc" CRYPTOPP_ARMV8A_CRC) - CheckCompileOption("-march=armv8-a+crypto" CRYPTOPP_ARMV8A_CRYPTO) - CheckCompileOption("-march=armv8-a" CRYPTOPP_ARMV8A_NATIVE) - - if (CRYPTOPP_ARMV8A_ASIMD) - set_source_files_properties(${SRC_DIR}/aria_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a") - set_source_files_properties(${SRC_DIR}/blake2s_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a") - set_source_files_properties(${SRC_DIR}/blake2b_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a") - set_source_files_properties(${SRC_DIR}/chacha_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a") - set_source_files_properties(${SRC_DIR}/cham_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a") - set_source_files_properties(${SRC_DIR}/lea_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a") - set_source_files_properties(${SRC_DIR}/neon_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a") - set_source_files_properties(${SRC_DIR}/simon128_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a") - set_source_files_properties(${SRC_DIR}/speck128_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a") - endif () - if (CRYPTOPP_ARMV8A_CRC) - set_source_files_properties(${SRC_DIR}/crc_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a+crc") - endif () - if (CRYPTOPP_ARMV8A_CRYPTO) - set_source_files_properties(${SRC_DIR}/gcm_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a+crypto") - set_source_files_properties(${SRC_DIR}/gf2n_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a+crypto") - set_source_files_properties(${SRC_DIR}/rijndael_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a+crypto") - set_source_files_properties(${SRC_DIR}/sha_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a+crypto") - set_source_files_properties(${SRC_DIR}/shacal2_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv8-a+crypto") - endif () - - elseif (CRYPTOPP_ARM OR CRYPTOPP_ARMHF) - - CheckCompileLinkOption("-march=armv7-a -mfpu=neon" CRYPTOPP_ARMV7A_NEON - "${TEST_PROG_DIR}/test_arm_neon.cxx") - CheckCompileLinkOption("-march=armv7-a -mthumb -mfpu=neon" CRYPTOPP_ARMV7A_THUMB_NEON - "${TEST_PROG_DIR}/test_arm_neon.cxx") - - if (CRYPTOPP_ARMV7A_NEON) - - # Add Cryptogams ASM files for ARM on Linux. Linux is required due to GNU Assembler. - # AES requires -mthumb under Clang. Do not add -mthumb for SHA for any files. - if (CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android") - list(APPEND cryptopp_SOURCES ${SRC_DIR}/aes_armv4.S) - list(APPEND cryptopp_SOURCES ${SRC_DIR}/sha1_armv4.S) - list(APPEND cryptopp_SOURCES ${SRC_DIR}/sha256_armv4.S) - list(APPEND cryptopp_SOURCES ${SRC_DIR}/sha512_armv4.S) - - set_source_files_properties(${SRC_DIR}/aes_armv4.S PROPERTIES LANGUAGE CXX) - set_source_files_properties(${SRC_DIR}/sha1_armv4.S PROPERTIES LANGUAGE CXX) - set_source_files_properties(${SRC_DIR}/sha256_armv4.S PROPERTIES LANGUAGE CXX) - set_source_files_properties(${SRC_DIR}/sha512_armv4.S PROPERTIES LANGUAGE CXX) - - if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") - set_source_files_properties(${SRC_DIR}/aes_armv4.S PROPERTIES COMPILE_FLAGS "-march=armv7-a -mthumb -mfpu=neon -Wa,--noexecstack") - else () - set_source_files_properties(${SRC_DIR}/aes_armv4.S PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfpu=neon -Wa,--noexecstack") - endif () - - set_source_files_properties(${SRC_DIR}/sha1_armv4.S PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfpu=neon -Wa,--noexecstack") - set_source_files_properties(${SRC_DIR}/sha256_armv4.S PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfpu=neon -Wa,--noexecstack") - set_source_files_properties(${SRC_DIR}/sha512_armv4.S PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfpu=neon -Wa,--noexecstack") - endif () - - set_source_files_properties(${SRC_DIR}/aria_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfpu=neon") - set_source_files_properties(${SRC_DIR}/blake2s_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfpu=neon") - set_source_files_properties(${SRC_DIR}/blake2b_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfpu=neon") - set_source_files_properties(${SRC_DIR}/chacha_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfpu=neon") - set_source_files_properties(${SRC_DIR}/cham_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfpu=neon") - set_source_files_properties(${SRC_DIR}/crc_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfpu=neon") - set_source_files_properties(${SRC_DIR}/lea_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfpu=neon") - set_source_files_properties(${SRC_DIR}/gcm_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfpu=neon") - set_source_files_properties(${SRC_DIR}/rijndael_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfpu=neon") - set_source_files_properties(${SRC_DIR}/neon_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfpu=neon") - set_source_files_properties(${SRC_DIR}/sha_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfpu=neon") - set_source_files_properties(${SRC_DIR}/simon128_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfpu=neon") - set_source_files_properties(${SRC_DIR}/speck128_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfpu=neon") - set_source_files_properties(${SRC_DIR}/sm4_simd.cpp PROPERTIES COMPILE_FLAGS "-march=armv7-a -mfpu=neon") - else () - list(APPEND CRYPTOPP_COMPILE_OPTIONS "-DCRYPTOPP_ARM_NEON_AVAILABLE=0") - endif () - - elseif (CRYPTOPP_POWERPC OR CRYPTOPP_POWERPC64) - - # XLC requires -qaltivec in addition to Arch or CPU option - if (CMAKE_CXX_COMPILER MATCHES "xlC") - set(CRYPTOPP_ALTIVEC_FLAGS "-qaltivec") - set(CRYPTOPP_POWER4_FLAGS "-qarch=pwr4 -qaltivec") - set(CRYPTOPP_POWER5_FLAGS "-qarch=pwr5 -qaltivec") - set(CRYPTOPP_POWER6_FLAGS "-qarch=pwr6 -qaltivec") - set(CRYPTOPP_POWER7_VSX_FLAG "-qarch=pwr7 -qvsx -qaltivec") - set(CRYPTOPP_POWER7_PWR_FLAGS "-qarch=pwr7 -qaltivec") - set(CRYPTOPP_POWER8_FLAGS "-qarch=pwr8 -qaltivec") - set(CRYPTOPP_POWER9_FLAGS "-qarch=pwr9 -qaltivec") - else () - set(CRYPTOPP_ALTIVEC_FLAGS "-maltivec") - set(CRYPTOPP_POWER7_VSX_FLAGS "-mcpu=power7 -mvsx") - set(CRYPTOPP_POWER7_PWR_FLAGS "-mcpu=power7") - set(CRYPTOPP_POWER8_FLAGS "-mcpu=power8") - set(CRYPTOPP_POWER9_FLAGS "-mcpu=power9") - endif () - - CheckCompileLinkOption("${CRYPTOPP_ALTIVEC_FLAGS}" PPC_ALTIVEC_FLAG - "${TEST_PROG_DIR}/test_ppc_altivec.cxx") - - # Hack for XLC. Find the lowest PWR architecture. - if (CMAKE_CXX_COMPILER MATCHES "xlC") - if (NOT PPC_ALTIVEC_FLAG) - CheckCompileLinkOption("${CRYPTOPP_POWER4_FLAGS}" PPC_POWER4_FLAG - "${TEST_PROG_DIR}/test_ppc_altivec.cxx") - if (PPC_POWER4_FLAG) - set(PPC_ALTIVEC_FLAG 1) - set(CRYPTOPP_ALTIVEC_FLAGS "${CRYPTOPP_POWER4_FLAGS}") - endif () - endif () - if (NOT PPC_ALTIVEC_FLAG) - CheckCompileLinkOption("${CRYPTOPP_POWER5_FLAGS}" PPC_POWER5_FLAG - "${TEST_PROG_DIR}/test_ppc_altivec.cxx") - if (PPC_POWER5_FLAG) - set(PPC_ALTIVEC_FLAG 1) - set(CRYPTOPP_ALTIVEC_FLAGS "${CRYPTOPP_POWER5_FLAGS}") - endif () - endif () - if (NOT PPC_ALTIVEC_FLAG) - CheckCompileLinkOption("${CRYPTOPP_POWER6_FLAGS}" PPC_POWER6_FLAG - "${TEST_PROG_DIR}/test_ppc_altivec.cxx") - if (PPC_POWER6_FLAG) - set(PPC_ALTIVEC_FLAG 1) - set(CRYPTOPP_ALTIVEC_FLAGS "${CRYPTOPP_POWER6_FLAGS}") - endif () - endif () - endif () - - # Hack for XLC and GCC. Find the right combination for PWR7 and the VSX unit. - CheckCompileLinkOption("${CRYPTOPP_POWER7_VSX_FLAGS}" PPC_POWER7_FLAG - "${TEST_PROG_DIR}/test_ppc_power7.cxx") - if (PPC_POWER7_FLAG) - set (CRYPTOPP_POWER7_FLAGS "${CRYPTOPP_POWER7_VSX_FLAGS}") - else () - CheckCompileLinkOption("${CRYPTOPP_POWER7_PWR_FLAGS}" PPC_POWER7_FLAG - "${TEST_PROG_DIR}/test_ppc_power7.cxx") - if (PPC_POWER7_FLAG) - set (CRYPTOPP_POWER7_FLAGS "${CRYPTOPP_POWER7_PWR_FLAGS}") - endif () - endif () - - CheckCompileLinkOption("${CRYPTOPP_POWER8_FLAGS}" PPC_POWER8_FLAG - "${TEST_PROG_DIR}/test_ppc_power8.cxx") - - CheckCompileLinkOption("${CRYPTOPP_POWER9_FLAGS}" PPC_POWER9_FLAG - "${TEST_PROG_DIR}/test_ppc_power9.cxx") - - if (PPC_POWER9_FLAG AND NOT DISABLE_POWER9) - set_source_files_properties(${SRC_DIR}/ppc_power9.cpp PROPERTIES COMPILE_FLAGS ${CRYPTOPP_POWER9_FLAGS}) - endif () - - if (PPC_POWER8_FLAG AND NOT DISABLE_POWER8) - set_source_files_properties(${SRC_DIR}/ppc_power8.cpp PROPERTIES COMPILE_FLAGS ${CRYPTOPP_POWER8_FLAGS}) - #set_source_files_properties(${SRC_DIR}/aria_simd.cpp PROPERTIES COMPILE_FLAGS ${CRYPTOPP_POWER8_FLAGS}) - set_source_files_properties(${SRC_DIR}/blake2b_simd.cpp PROPERTIES COMPILE_FLAGS ${CRYPTOPP_POWER8_FLAGS}) - set_source_files_properties(${SRC_DIR}/cham_simd.cpp PROPERTIES COMPILE_FLAGS ${CRYPTOPP_POWER8_FLAGS}) - #set_source_files_properties(${SRC_DIR}/crc_simd.cpp PROPERTIES COMPILE_FLAGS ${CRYPTOPP_POWER8_FLAGS}) - set_source_files_properties(${SRC_DIR}/gcm_simd.cpp PROPERTIES COMPILE_FLAGS ${CRYPTOPP_POWER8_FLAGS}) - set_source_files_properties(${SRC_DIR}/gf2n_simd.cpp PROPERTIES COMPILE_FLAGS ${CRYPTOPP_POWER8_FLAGS}) - set_source_files_properties(${SRC_DIR}/lea_simd.cpp PROPERTIES COMPILE_FLAGS ${CRYPTOPP_POWER8_FLAGS}) - set_source_files_properties(${SRC_DIR}/rijndael_simd.cpp PROPERTIES COMPILE_FLAGS ${CRYPTOPP_POWER8_FLAGS}) - set_source_files_properties(${SRC_DIR}/sha_simd.cpp PROPERTIES COMPILE_FLAGS ${CRYPTOPP_POWER8_FLAGS}) - set_source_files_properties(${SRC_DIR}/shacal2_simd.cpp PROPERTIES COMPILE_FLAGS ${CRYPTOPP_POWER8_FLAGS}) - set_source_files_properties(${SRC_DIR}/simon128_simd.cpp PROPERTIES COMPILE_FLAGS ${CRYPTOPP_POWER8_FLAGS}) - set_source_files_properties(${SRC_DIR}/speck128_simd.cpp PROPERTIES COMPILE_FLAGS ${CRYPTOPP_POWER8_FLAGS}) - endif () - - if (PPC_POWER7_FLAG AND NOT DISABLE_POWER7) - set_source_files_properties(${SRC_DIR}/ppc_power7.cpp PROPERTIES COMPILE_FLAGS ${CRYPTOPP_POWER7_FLAGS}) - endif () - - if (PPC_ALTIVEC_FLAG AND NOT DISABLE_ALTIVEC) - set_source_files_properties(${SRC_DIR}/ppc_simd.cpp PROPERTIES COMPILE_FLAGS ${CRYPTOPP_ALTIVEC_FLAGS}) - set_source_files_properties(${SRC_DIR}/blake2s_simd.cpp PROPERTIES COMPILE_FLAGS ${CRYPTOPP_ALTIVEC_FLAGS}) - set_source_files_properties(${SRC_DIR}/chacha_simd.cpp PROPERTIES COMPILE_FLAGS ${CRYPTOPP_ALTIVEC_FLAGS}) - endif () - - # Drop to Altivec if Power8 unavailable - if (NOT PPC_POWER8_FLAG) - if (PPC_ALTIVEC_FLAG) - set_source_files_properties(${SRC_DIR}/gcm_simd.cpp PROPERTIES COMPILE_FLAGS ${CRYPTOPP_ALTIVEC_FLAGS}) - endif () - endif () - - if (NOT PPC_ALTIVEC_FLAG) - list(APPEND CRYPTOPP_COMPILE_OPTIONS "-DCRYPTOPP_DISABLE_ALTIVEC") - elseif (NOT PPC_POWER7_FLAG) - list(APPEND CRYPTOPP_COMPILE_OPTIONS "-DCRYPTOPP_DISABLE_POWER7") - elseif (NOT PPC_POWER8_FLAG) - list(APPEND CRYPTOPP_COMPILE_OPTIONS "-DCRYPTOPP_DISABLE_POWER8") - elseif (NOT PPC_POWER9_FLAG) - list(APPEND CRYPTOPP_COMPILE_OPTIONS "-DCRYPTOPP_DISABLE_POWER9") - endif () - - endif () -endif () - -# New as of Pull Request 461, http://github.com/weidai11/cryptopp/pull/461. -if (CMAKE_CXX_COMPILER_ID STREQUAL "SunPro") - - if (CRYPTOPP_AMD64 OR CRYPTOPP_I386 OR CRYPTOPP_X32) - - CheckCompileLinkOption("-xarch=sse2" CRYPTOPP_IA32_SSE2 - "${TEST_PROG_DIR}/test_x86_sse2.cxx") - CheckCompileLinkOption("-xarch=ssse3" CRYPTOPP_IA32_SSSE3 - "${TEST_PROG_DIR}/test_x86_ssse3.cxx") - CheckCompileLinkOption("-xarch=sse4_1" CRYPTOPP_IA32_SSE41 - "${TEST_PROG_DIR}/test_x86_sse41.cxx") - CheckCompileLinkOption("-xarch=sse4_2" CRYPTOPP_IA32_SSE42 - "${TEST_PROG_DIR}/test_x86_sse42.cxx") - CheckCompileLinkOption("-xarch=aes" CRYPTOPP_IA32_CLMUL - "${TEST_PROG_DIR}/test_x86_clmul.cxx") - CheckCompileLinkOption("-xarch=aes" CRYPTOPP_IA32_AES - "${TEST_PROG_DIR}/test_x86_aes.cxx") - CheckCompileLinkOption("-xarch=avx" CRYPTOPP_IA32_AVX - "${TEST_PROG_DIR}/test_x86_avx.cxx") - CheckCompileLinkOption("-xarch=avx2" CRYPTOPP_IA32_AVX2 - "${TEST_PROG_DIR}/test_x86_avx2.cxx") - CheckCompileLinkOption("-xarch=sha" CRYPTOPP_IA32_SHA - "${TEST_PROG_DIR}/test_x86_sha.cxx") - - # Each -xarch=XXX options must be added to LDFLAGS if the option is used during a compile. - set(XARCH_LDFLAGS "") - - if (CRYPTOPP_IA32_SSE2 AND NOT DISABLE_ASM) - set_source_files_properties(${SRC_DIR}/sse_simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=sse2") - set_source_files_properties(${SRC_DIR}/chacha_simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=sse2") - set(XARCH_LDFLAGS "-xarch=sse2") - endif () - if (CRYPTOPP_IA32_SSSE3 AND NOT DISABLE_SSSE3) - set_source_files_properties(${SRC_DIR}/aria_simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=ssse3") - set_source_files_properties(${SRC_DIR}/cham_simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=ssse3") - set_source_files_properties(${SRC_DIR}/lea_simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=ssse3") - set_source_files_properties(${SRC_DIR}/simon128_simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=ssse3") - set_source_files_properties(${SRC_DIR}/speck128_simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=ssse3") - set(XARCH_LDFLAGS "${XARCH_LDFLAGS} -xarch=ssse3") - if (CRYPTOPP_IA32_SSE41 AND NOT DISABLE_SSE4) - set_source_files_properties(${SRC_DIR}/blake2s_simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=sse4_1") - set_source_files_properties(${SRC_DIR}/blake2b_simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=sse4_1") - set(XARCH_LDFLAGS "${XARCH_LDFLAGS} -xarch=sse4_1") - endif () - if (CRYPTOPP_IA32_SSE42 AND NOT DISABLE_SSE4) - set_source_files_properties(${SRC_DIR}/crc_simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=sse4_2") - set(XARCH_LDFLAGS "${XARCH_LDFLAGS} -xarch=sse4_2") - if (CRYPTOPP_IA32_CLMUL AND NOT DISABLE_CLMUL) - set_source_files_properties(${SRC_DIR}/gcm_simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=aes") - set_source_files_properties(${SRC_DIR}/gf2n_simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=aes") - endif () - if (CRYPTOPP_IA32_AES AND NOT DISABLE_AES) - set_source_files_properties(${SRC_DIR}/rijndael_simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=aes") - set_source_files_properties(${SRC_DIR}/sm4_simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=aes") - set(XARCH_LDFLAGS "${XARCH_LDFLAGS} -xarch=aes") - endif () - #if (CRYPTOPP_IA32_AVX AND NOT DISABLE_AVX) - # set_source_files_properties(${SRC_DIR}/XXX_avx.cpp PROPERTIES COMPILE_FLAGS "-xarch=avx2") - # set(XARCH_LDFLAGS "${XARCH_LDFLAGS} -xarch=avx") - #endif () - if (CRYPTOPP_IA32_AVX2 AND NOT DISABLE_AVX2) - set_source_files_properties(${SRC_DIR}/chacha_avx.cpp PROPERTIES COMPILE_FLAGS "-xarch=avx2") - set(XARCH_LDFLAGS "${XARCH_LDFLAGS} -xarch=avx2") - endif () - if (CRYPTOPP_IA32_SHA AND NOT DISABLE_SHA) - set_source_files_properties(${SRC_DIR}/sha_simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=sha") - set_source_files_properties(${SRC_DIR}/shacal2_simd.cpp PROPERTIES COMPILE_FLAGS "-xarch=sha") - set(XARCH_LDFLAGS "${XARCH_LDFLAGS} -xarch=sha") - endif () - endif () - endif () - - # https://stackoverflow.com/a/6088646/608639 - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${XARCH_LDFLAGS} -M${SRC_DIR}/cryptopp.mapfile") - set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${XARCH_LDFLAGS} -M${SRC_DIR}/cryptopp.mapfile") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${XARCH_LDFLAGS} -M${SRC_DIR}/cryptopp.mapfile") - - # elseif (CRYPTOPP_SPARC OR CRYPTOPP_SPARC64) - - endif () -endif () - -# Attempt to determine a suitable native option -if (CRYPTOPP_NATIVE_ARCH) - - CheckCompileOption("-march=native" NATIVE_ARCH) - if (NATIVE_ARCH) - list(APPEND CRYPTOPP_COMPILE_OPTIONS "-march=native") - else () - CheckCompileOption("-native" NATIVE_ARCH) - if (NATIVE_ARCH) - list(APPEND CRYPTOPP_COMPILE_OPTIONS "-native") - endif () - endif () - - if (NOT NATIVE_ARCH) - message(WARNING "CRYPTOPP_NATIVE_ARCH enabled, but failed to detect native architecture option") - endif () - -endif() - -#============================================================================ -# Compile targets -#============================================================================ - -# Work around the archaic versions of cmake that do not support -# target_compile_xxxx commands -# !!! DO NOT try to use the old way for newer version - it does not work !!! -function(cryptopp_target_compile_properties target) - if (NOT ${CMAKE_VERSION} VERSION_LESS "2.8.11") - target_compile_definitions(${target} PUBLIC ${CRYPTOPP_COMPILE_DEFINITIONS}) - else() - string (REPLACE ";" " " PROP_STR "${CRYPTOPP_COMPILE_DEFINITIONS}") - set_target_properties(${target} PROPERTIES COMPILE_DEFINITIONS "${CRYPTOPP_COMPILE_DEFINITIONS}") - endif() - if (NOT ${CMAKE_VERSION} VERSION_LESS "2.8.12") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS}") - else() - string (REPLACE ";" " " PROP_STR "${CRYPTOPP_COMPILE_OPTIONS}") - set_target_properties(${target} PROPERTIES COMPILE_FLAGS "${PROP_STR}") - endif() -endfunction() - -set(cryptopp_LIBRARY_SOURCES ${cryptopp_SOURCES_ASM}) -if (USE_INTERMEDIATE_OBJECTS_TARGET AND NOT ${CMAKE_VERSION} VERSION_LESS "2.8.8") - add_library(cryptopp-object OBJECT ${cryptopp_SOURCES}) - cryptopp_target_compile_properties(cryptopp-object) - - list(APPEND cryptopp_LIBRARY_SOURCES - $ - ) -else () - list(APPEND cryptopp_LIBRARY_SOURCES - ${cryptopp_SOURCES} - ) -endif () - -if (BUILD_STATIC) - add_library(cryptopp-static STATIC ${cryptopp_LIBRARY_SOURCES}) - cryptopp_target_compile_properties(cryptopp-static) - if (NOT ${CMAKE_VERSION} VERSION_LESS "2.8.11") - target_include_directories(cryptopp-static PUBLIC $ $) - else () - set_target_properties(cryptopp-static PROPERTIES INCLUDE_DIRECTORIES "$ $") - endif () -endif () - -if (BUILD_SHARED) - add_library(cryptopp-shared SHARED ${cryptopp_LIBRARY_SOURCES}) - cryptopp_target_compile_properties(cryptopp-shared) - if (NOT ${CMAKE_VERSION} VERSION_LESS "2.8.11") - target_include_directories(cryptopp-shared PUBLIC $ $) - else () - set_target_properties(cryptopp-shared PROPERTIES INCLUDE_DIRECTORIES "$ $") - endif () -endif () - -# Set filenames for targets to be "cryptopp" -if (NOT MSVC) - set(COMPAT_VERSION ${cryptopp_VERSION_MAJOR}.${cryptopp_VERSION_MINOR}) - - if (BUILD_STATIC) - set_target_properties(cryptopp-static - PROPERTIES - OUTPUT_NAME cryptopp) - endif () - if (BUILD_SHARED) - set_target_properties(cryptopp-shared - PROPERTIES - SOVERSION ${COMPAT_VERSION} - OUTPUT_NAME cryptopp) - endif () -endif () - -# Add alternate ways to invoke the build for the shared library that are -# similar to how the crypto++ 'make' tool works. -# see https://github.com/noloader/cryptopp-cmake/issues/32 -if (BUILD_STATIC) - add_custom_target(static DEPENDS cryptopp-static) -endif () -if (BUILD_SHARED) - add_custom_target(shared DEPENDS cryptopp-shared) - add_custom_target(dynamic DEPENDS cryptopp-shared) -endif () - -#============================================================================ -# Third-party libraries -#============================================================================ - -if (WIN32) - if (BUILD_STATIC) - target_link_libraries(cryptopp-static ws2_32) - endif () - if (BUILD_SHARED) - target_link_libraries(cryptopp-shared ws2_32) - endif () -endif () - -# This may need to be expanded to "Solaris" -if (CRYPTOPP_SOLARIS) - if (BUILD_STATIC) - target_link_libraries(cryptopp-static nsl socket) - endif () - if (BUILD_SHARED) - target_link_libraries(cryptopp-shared nsl socket) - endif () -endif () - -find_package(Threads) -if (BUILD_STATIC) - target_link_libraries(cryptopp-static ${CMAKE_THREAD_LIBS_INIT}) -endif () -if (BUILD_SHARED) - target_link_libraries(cryptopp-shared ${CMAKE_THREAD_LIBS_INIT}) -endif () - -#============================================================================ -# Tests -#============================================================================ - -enable_testing() -if (BUILD_TESTING) - add_executable(cryptest ${cryptopp_SOURCES_TEST}) - target_link_libraries(cryptest cryptopp-static) - - # Setting "cryptest" binary name to "cryptest.exe" - if (NOT (WIN32 OR CYGWIN)) - set_target_properties(cryptest PROPERTIES OUTPUT_NAME cryptest.exe) - endif () - if (NOT TARGET cryptest.exe) - add_custom_target(cryptest.exe) - add_dependencies(cryptest.exe cryptest) - endif () - - file(COPY ${SRC_DIR}/TestData DESTINATION ${PROJECT_BINARY_DIR}) - file(COPY ${SRC_DIR}/TestVectors DESTINATION ${PROJECT_BINARY_DIR}) - - add_test(NAME build_cryptest COMMAND "${CMAKE_COMMAND}" --build ${CMAKE_BINARY_DIR} --target cryptest) - add_test(NAME cryptest COMMAND $ v) - set_tests_properties(cryptest PROPERTIES DEPENDS build_cryptest) -endif () - -#============================================================================ -# Doxygen documentation -#============================================================================ - -if (BUILD_DOCUMENTATION) - find_package(Doxygen REQUIRED) - - set(in_source_DOCS_DIR "${SRC_DIR}/html-docs") - set(out_source_DOCS_DIR "${PROJECT_BINARY_DIR}/html-docs") - - add_custom_target(docs ALL - COMMAND ${DOXYGEN_EXECUTABLE} Doxyfile -d CRYPTOPP_DOXYGEN_PROCESSING - WORKING_DIRECTORY ${SRC_DIR} - SOURCES ${SRC_DIR}/Doxyfile - ) - - if (NOT ${in_source_DOCS_DIR} STREQUAL ${out_source_DOCS_DIR}) - add_custom_command( - TARGET docs POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory "${in_source_DOCS_DIR}" "${out_source_DOCS_DIR}" - COMMAND ${CMAKE_COMMAND} -E remove_directory "${in_source_DOCS_DIR}" - ) - endif () -endif () - -#============================================================================ -# Install -#============================================================================ - -set(export_name "cryptopp-targets") - -# Runtime package -if (BUILD_SHARED) - export(TARGETS cryptopp-shared FILE ${export_name}.cmake ) - install( - TARGETS cryptopp-shared - EXPORT ${export_name} - DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - ) -endif () - -# Development package -if (BUILD_STATIC) - export(TARGETS cryptopp-static FILE ${export_name}.cmake ) - install(TARGETS cryptopp-static EXPORT ${export_name} DESTINATION ${CMAKE_INSTALL_LIBDIR}) -endif () -install(FILES ${cryptopp_HEADERS} DESTINATION include/cryptopp) - -# CMake Package -if (NOT CMAKE_VERSION VERSION_LESS 2.8.8) - include(CMakePackageConfigHelpers) - write_basic_package_version_file("${PROJECT_BINARY_DIR}/cryptopp-config-version.cmake" VERSION ${cryptopp_VERSION_MAJOR}.${cryptopp_VERSION_MINOR}.${cryptopp_VERSION_PATCH} COMPATIBILITY SameMajorVersion) - install(FILES cryptopp-config.cmake ${PROJECT_BINARY_DIR}/cryptopp-config-version.cmake DESTINATION "lib/cmake/cryptopp") - install(EXPORT ${export_name} DESTINATION "lib/cmake/cryptopp") -endif () - -# Tests -if (BUILD_TESTING) - install(TARGETS cryptest DESTINATION ${CMAKE_INSTALL_BINDIR}) - install(DIRECTORY ${SRC_DIR}/TestData DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cryptopp) - install(DIRECTORY ${SRC_DIR}/TestVectors DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cryptopp) -endif () - -# Documentation -if (BUILD_DOCUMENTATION) - install(DIRECTORY "${out_source_DOCS_DIR}" DESTINATION ${CMAKE_INSTALL_DOCDIR}) -endif () - -# Print a configuration summary. We want CXX and CXXFLAGS, but they are not includd in ALL. -if (CRYPTOPP_I386) - message(STATUS "Platform: i386/i686") -elseif (CRYPTOPP_AMD64) - message(STATUS "Platform: x86_64") -elseif (CRYPTOPP_X32) - message(STATUS "Platform: x86_64-x32") -elseif (CRYPTOPP_ARMHF) - message(STATUS "Platform: armhf") -elseif (CRYPTOPP_ARM) - message(STATUS "Platform: arm") -elseif (CRYPTOPP_AARCH32) - message(STATUS "Platform: Aarch32") -elseif (CRYPTOPP_AARCH64) - message(STATUS "Platform: Aarch64") -elseif (CRYPTOPP_SPARC) - message(STATUS "Platform: Sparc") -elseif (CRYPTOPP_SPARC64) - message(STATUS "Platform: Sparc64") -elseif (CRYPTOPP_POWERPC) - message(STATUS "Platform: PowerPC") -elseif (CRYPTOPP_POWERPC64) - message(STATUS "Platform: PowerPC-64") -elseif (CRYPTOPP_MINGW32) - message(STATUS "Platform: MinGW-32") -elseif (CRYPTOPP_MINGW32) - message(STATUS "Platform: MinGW-64") -endif () -if (CRYPTOPP_ARMV7A_NEON) - message(STATUS "NEON: TRUE") -endif () -if (CRYPTOPP_NATIVE_ARCH) - message(STATUS "Native arch: TRUE") -else () - message(STATUS "Native arch: FALSE") -endif () -message(STATUS "Compiler: ${CMAKE_CXX_COMPILER}") -message(STATUS "Compiler options: ${CMAKE_CXX_FLAGS} ${CRYPTOPP_COMPILE_OPTIONS}") -message(STATUS "Compiler definitions: ${CRYPTOPP_COMPILE_DEFINITIONS}") -message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") diff --git a/package/lean/libcryptopp/src/Makefile.am b/package/lean/libcryptopp/src/Makefile.am new file mode 100644 index 0000000000..151166f90a --- /dev/null +++ b/package/lean/libcryptopp/src/Makefile.am @@ -0,0 +1,493 @@ +## Makefile.am - Autotools configuration file for Crypto++. +## written and placed in public domain by Jeffrey Walton. +## based on Debian Makefile.am by LászlĂł BöszörmĂ©nyi. +## +## The GNUmakefile can generate the list of lib headers, lib sources, +## test headers and test sources. Generate the list of files with +## 'make sources'. Remove the SIMD files for libothers_la_SOURCES. +## Thanks to steeldriver on U&L.SE for help with the sed. +## +## make sources | sed 's|cryptlib.cpp cpu.cpp integer.cpp ||g' | \ +## sed -e 's|[[:alnum:]]*_simd.cpp ||g' | \ +## sed -e 's|[[:alnum:]]*_sse.cpp ||g' | \ +## sed -e 's|[[:alnum:]]*_avx.cpp ||g' | \ +## sed -e 's|ppc_power[[:alnum:]]*.cpp ||g' | \ +## fold -w73 -s +## +## The command `make sources | sed ... | fold` will create the source file +## list that can be used with `libothers_la_SOURCES` below. +## +## Note: configure.ac deletes GNUmakefile. You can get it back with: +## +## git checkout GNUmakefile +## + +## Automake does not support "specific flags for certain source files" +## natively, so we hack it. The hack include building 20 or so +## libraries and then combining them into an archive or shared object. +## Also see https://lists.gnu.org/archive/html/automake/2017-11/msg00000.html +## https://www.gnu.org/software/automake/manual/html_node/Per_002dObject-Flags.html. +## +## Visit the link below for the original Debian Autotools files +## https://sources.debian.net/src/libcrypto++/5.6.4-8/debian/autotools/ +## + +## TODO: +## +## - Figure out what's going on with DragonFly and dependencies +## + +AUTOMAKE_OPTIONS = foreign +ACLOCAL_AMFLAGS = -I m4 +AM_DEFAULT_SOURCE_EXT = .cpp + +## libcryptopp.la is created from disjoint libraries due to object file +## ordering and per-object file flags requirements. libcryptopp.la is +## named as the primary library, and the object files with special needs +## are listed as EXTRA_LTLIBRARIES. Also see +## https://lists.gnu.org/archive/html/automake/2017-11/msg00000.html. + +lib_LTLIBRARIES = \ + libcryptopp.la + +EXTRA_LTLIBRARIES = \ + libcryptlib.la \ + libcpu.la \ + libinteger.la \ + libaria_simd.la \ + libblake2s_simd.la \ + libblake2b_simd.la \ + libchacha_simd.la \ + libchacha_avx.la \ + libcham_simd.la \ + libcrc_simd.la \ + libdonna_sse.la \ + libgcm_simd.la \ + libgf2n_simd.la \ + libkeccak_simd.la \ + liblea_simd.la \ + libneon_simd.la \ + libppc_simd.la \ + libppc_power7.la \ + libppc_power8.la \ + libppc_power9.la \ + librijndael_simd.la \ + libsha_simd.la \ + libshacal2_simd.la \ + libsimon128_simd.la \ + libspeck128_simd.la \ + libsm4_simd.la \ + libsse_simd.la + +## ARMv7-a AES and SHA by Andy Polyakov +if CRYPTOGAMS_ARM_SOURCES + EXTRA_LTLIBRARIES += libaes_armv4.la + EXTRA_LTLIBRARIES += libsha1_armv4.la + EXTRA_LTLIBRARIES += libsha256_armv4.la + EXTRA_LTLIBRARIES += libsha512_armv4.la +endif + +## The remainder of the source files +EXTRA_LTLIBRARIES += libothers.la + +## libcryptopp_la_SOURCES is empty because we need to create the library +## artifact from disjoint libraries due to object file ordering and +## per-object file flags requriements. Actually, the adhoc.cpp file is +## due to an automake issue of assuming C sources when the list is empty. +## https://lists.gnu.org/archive/html/automake/2017-11/msg00000.html. + +libcryptopp_la_SOURCES = \ + adhoc.cpp + +## Don't use EXTRA_ prefix for libcryptopp_la_LIBADD. It breaks Solaris. + +libcryptopp_la_LIBADD = \ + $(libcryptlib_la_OBJECTS) \ + $(libcpu_la_OBJECTS) \ + $(libinteger_la_OBJECTS) \ + $(libaria_simd_la_OBJECTS) \ + $(libblake2s_simd_la_OBJECTS) \ + $(libblake2b_simd_la_OBJECTS) \ + $(libchacha_simd_la_OBJECTS) \ + $(libchacha_avx_la_OBJECTS) \ + $(libcham_simd_la_OBJECTS) \ + $(libcrc_simd_la_OBJECTS) \ + $(libdonna_sse_la_OBJECTS) \ + $(libgcm_simd_la_OBJECTS) \ + $(libgf2n_simd_la_OBJECTS) \ + $(libkeccak_simd_la_OBJECTS) \ + $(liblea_simd_la_OBJECTS) \ + $(libneon_simd_la_OBJECTS) \ + $(libppc_simd_la_OBJECTS) \ + $(libppc_power7_la_OBJECTS) \ + $(libppc_power8_la_OBJECTS) \ + $(libppc_power9_la_OBJECTS) \ + $(librijndael_simd_la_OBJECTS) \ + $(libsha_simd_la_OBJECTS) \ + $(libshacal2_simd_la_OBJECTS) \ + $(libsimon128_simd_la_OBJECTS) \ + $(libspeck128_simd_la_OBJECTS) \ + $(libsm4_simd_la_OBJECTS) \ + $(libsse_simd_la_OBJECTS) + +## ARMv7-a AES and SHA by Andy Polyakov +if CRYPTOGAMS_ARM_SOURCES + libcryptopp_la_LIBADD += $(libaes_armv4_la_OBJECTS) + libcryptopp_la_LIBADD += $(libsha1_armv4_la_OBJECTS) + libcryptopp_la_LIBADD += $(libsha256_armv4_la_OBJECTS) + libcryptopp_la_LIBADD += $(libsha512_armv4_la_OBJECTS) +endif + +## cpufeatures library on Android +if ANDROID_CPU_FEATURES + libcryptopp_la_LIBADD += $(libcpu_features_la_OBJECTS) +endif + +## The remainder of the object files +libcryptopp_la_LIBADD += $(libothers_la_OBJECTS) + +## Don't use EXTRA_ prefix for libcryptopp_la_DEPENDENCIES. It breaks Solaris. + +libcryptopp_la_DEPENDENCIES = \ + $(libcryptlib_la_OBJECTS) \ + $(libcpu_la_OBJECTS) \ + $(libinteger_la_OBJECTS) \ + $(libaria_simd_la_OBJECTS) \ + $(libblake2s_simd_la_OBJECTS) \ + $(libblake2b_simd_la_OBJECTS) \ + $(libchacha_simd_la_OBJECTS) \ + $(libchacha_avx_la_OBJECTS) \ + $(libcham_simd_la_OBJECTS) \ + $(libcrc_simd_la_OBJECTS) \ + $(libdonna_sse_la_OBJECTS) \ + $(libkeccak_simd_la_OBJECTS) \ + $(liblea_simd_la_OBJECTS) \ + $(libgcm_simd_la_OBJECTS) \ + $(libgf2n_simd_la_OBJECTS) \ + $(libneon_simd_la_OBJECTS) \ + $(libppc_simd_la_OBJECTS) \ + $(libppc_power7_la_OBJECTS) \ + $(libppc_power8_la_OBJECTS) \ + $(libppc_power9_la_OBJECTS) \ + $(librijndael_simd_la_OBJECTS) \ + $(libsha_simd_la_OBJECTS) \ + $(libshacal2_simd_la_OBJECTS) \ + $(libsimon128_simd_la_OBJECTS) \ + $(libspeck128_simd_la_OBJECTS) \ + $(libsm4_simd_la_OBJECTS) \ + $(libsse_simd_la_OBJECTS) + +## ARMv7-a AES and SHA by Andy Polyakov +if CRYPTOGAMS_ARM_SOURCES + libcryptopp_la_DEPENDENCIES += $(libaes_armv4_la_OBJECTS) + libcryptopp_la_DEPENDENCIES += $(libsha1_armv4_la_OBJECTS) + libcryptopp_la_DEPENDENCIES += $(libsha256_armv4_la_OBJECTS) + libcryptopp_la_DEPENDENCIES += $(libsha512_armv4_la_OBJECTS) +endif + +## cpufeatures library on Android +if ANDROID_CPU_FEATURES + libcryptopp_la_DEPENDENCIES += $(libcpu_features_la_OBJECTS) +endif + +## The remainder of the object files +libcryptopp_la_DEPENDENCIES += $(libothers_la_OBJECTS) + +## Man, did Autotools fuck this up royally... +## https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html +libcryptopp_la_LDFLAGS = $(AM_LDFLAGS) -release 8.3.0 -version-info 8:3 + +## Source files with special needs +libcryptlib_la_SOURCES = cryptlib.cpp +libcryptlib_la_CXXFLAGS = $(AM_CXXFLAGS) + +libcpu_la_SOURCES = cpu.cpp +libcpu_la_CXXFLAGS = $(AM_CXXFLAGS) + +libinteger_la_SOURCES = integer.cpp +libinteger_la_CXXFLAGS = $(AM_CXXFLAGS) + +libaria_simd_la_SOURCES = aria_simd.cpp +libaria_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_ARIA_FLAG) + +libblake2s_simd_la_SOURCES = blake2s_simd.cpp +libblake2s_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_BLAKE2S_FLAG) + +libblake2b_simd_la_SOURCES = blake2b_simd.cpp +libblake2b_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_BLAKE2B_FLAG) + +libchacha_simd_la_SOURCES = chacha_simd.cpp +libchacha_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_CHACHA_FLAG) + +libchacha_avx_la_SOURCES = chacha_avx.cpp +libchacha_avx_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_CHACHA_AVX2_FLAG) + +libcham_simd_la_SOURCES = cham_simd.cpp +libcham_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_CHAM_FLAG) + +libcrc_simd_la_SOURCES = crc_simd.cpp +libcrc_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_CRC_FLAG) + +libdonna_sse_la_SOURCES = donna_sse.cpp +libdonna_sse_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_DONNA_FLAG) + +libgcm_simd_la_SOURCES = gcm_simd.cpp +libgcm_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_GCM_FLAG) + +libgf2n_simd_la_SOURCES = gf2n_simd.cpp +libgf2n_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_GF2N_FLAG) + +libkeccak_simd_la_SOURCES = keccak_simd.cpp +libkeccak_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_KECCAK_FLAG) + +liblea_simd_la_SOURCES = lea_simd.cpp +liblea_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_LEA_FLAG) + +libneon_simd_la_SOURCES = neon_simd.cpp +libneon_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_NEON_FLAG) + +libppc_simd_la_SOURCES = ppc_simd.cpp +libppc_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_ALTIVEC_FLAG) + +libppc_power7_la_SOURCES = ppc_power7.cpp +libppc_power7_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_POWER7_FLAG) + +libppc_power8_la_SOURCES = ppc_power8.cpp +libppc_power8_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_POWER8_FLAG) + +libppc_power9_la_SOURCES = ppc_power9.cpp +libppc_power9_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_POWER9_FLAG) + +librijndael_simd_la_SOURCES = rijndael_simd.cpp +librijndael_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_AES_FLAG) + +libsha_simd_la_SOURCES = sha_simd.cpp +libsha_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_SHA_FLAG) + +libshacal2_simd_la_SOURCES = shacal2_simd.cpp +libshacal2_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_SHA_FLAG) + +libsimon128_simd_la_SOURCES = simon128_simd.cpp +libsimon128_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_SIMON128_FLAG) + +libspeck128_simd_la_SOURCES = speck128_simd.cpp +libspeck128_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_SPECK128_FLAG) + +libsm4_simd_la_SOURCES = sm4_simd.cpp +libsm4_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_SM4_FLAG) + +libsse_simd_la_SOURCES = sse_simd.cpp +libsse_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_SSE2_FLAG) + +## ARMv7-a AES by Andy Polyakov +## Also see https://stackoverflow.com/q/51575580/608639 +if CRYPTOGAMS_ARM_SOURCES + libaes_armv4_la_SOURCES = aes_armv4.S + libsha1_armv4_la_SOURCES = sha1_armv4.S + libsha256_armv4_la_SOURCES = sha256_armv4.S + libsha512_armv4_la_SOURCES = sha512_armv4.S + libaes_armv4_la_CCASFLAGS = $(AM_CXXFLAGS) $(CRYPTOPGAMS_ARMV4_THUMB_FLAG) + libsha1_armv4_la_CCASFLAGS = $(AM_CXXFLAGS) $(CRYPTOPGAMS_ARMV4_FLAG) + libsha256_armv4_la_CCASFLAGS = $(AM_CXXFLAGS) $(CRYPTOPGAMS_ARMV4_FLAG) + libsha512_armv4_la_CCASFLAGS = $(AM_CXXFLAGS) $(CRYPTOPGAMS_ARMV4_FLAG) +endif + +## cpufeatures library on Android +if ANDROID_CPU_FEATURES + libcpu_features_la_SOURCES = cpu-features.c +endif + +# This is the list of remaining sources files that don't need special order +# and don't need special flags. It is formed by removing cryptlib.cpp, +# cpu.cpp, integer.cpp, *_avx.cpp and *_simd.cpp files. It is sorted in +# alphabetical order for deterministic builds. + +# To build this list, see the head notes and run the command with the +# make and multiple sed commands. + +libothers_la_SOURCES = \ + 3way.cpp adler32.cpp algebra.cpp algparam.cpp allocate.cpp arc4.cpp aria.cpp \ + ariatab.cpp asn.cpp authenc.cpp base32.cpp base64.cpp basecode.cpp \ + bfinit.cpp blake2.cpp blowfish.cpp blumshub.cpp camellia.cpp cast.cpp \ + casts.cpp cbcmac.cpp ccm.cpp chacha.cpp chachapoly.cpp cham.cpp \ + channels.cpp cmac.cpp crc.cpp darn.cpp default.cpp des.cpp dessp.cpp \ + dh.cpp dh2.cpp dll.cpp donna_32.cpp donna_64.cpp dsa.cpp eax.cpp \ + ec2n.cpp eccrypto.cpp ecp.cpp elgamal.cpp emsa2.cpp eprecomp.cpp \ + esign.cpp files.cpp filters.cpp fips140.cpp fipstest.cpp gcm.cpp \ + gf256.cpp gf2_32.cpp gf2n.cpp gfpcrypt.cpp gost.cpp gzip.cpp hc128.cpp \ + hc256.cpp hex.cpp hight.cpp hmac.cpp hrtimer.cpp ida.cpp idea.cpp \ + iterhash.cpp kalyna.cpp kalynatab.cpp keccak.cpp keccak_core.cpp lea.cpp \ + luc.cpp mars.cpp marss.cpp md2.cpp md4.cpp md5.cpp misc.cpp modes.cpp \ + mqueue.cpp mqv.cpp nbtheory.cpp oaep.cpp osrng.cpp padlkrng.cpp \ + panama.cpp pkcspad.cpp poly1305.cpp polynomi.cpp pssr.cpp pubkey.cpp \ + queue.cpp rabbit.cpp rabin.cpp randpool.cpp rc2.cpp rc5.cpp rc6.cpp \ + rdrand.cpp rdtables.cpp rijndael.cpp ripemd.cpp rng.cpp rsa.cpp rw.cpp \ + safer.cpp salsa.cpp scrypt.cpp seal.cpp seed.cpp serpent.cpp sha.cpp \ + sha3.cpp shacal2.cpp shake.cpp shark.cpp sharkbox.cpp simeck.cpp \ + simon.cpp skipjack.cpp sm3.cpp sm4.cpp sosemanuk.cpp speck.cpp \ + square.cpp squaretb.cpp strciphr.cpp tea.cpp tftables.cpp threefish.cpp \ + tiger.cpp tigertab.cpp ttmac.cpp tweetnacl.cpp twofish.cpp vmac.cpp \ + wake.cpp whrlpool.cpp xed25519.cpp xtr.cpp xtrcrypt.cpp xts.cpp \ + zdeflate.cpp zinflate.cpp zlib.cpp + +# Don't include aes_armv4.h here +pkginclude_HEADERS = \ + 3way.h adler32.h adv_simd.h aes.h algebra.h algparam.h allocate.h \ + arc4.h argnames.h aria.h arm_simd.h asn.h authenc.h base32.h base64.h \ + basecode.h blake2.h blowfish.h blumshub.h camellia.h cast.h cbcmac.h \ + ccm.h chacha.h chachapoly.h cham.h channels.h cmac.h config.h cpu.h \ + crc.h cryptlib.h darn.h default.h des.h dh.h dh2.h dll.h dmac.h donna.h \ + donna_32.h donna_64.h donna_sse.h drbg.h dsa.h eax.h ec2n.h eccrypto.h \ + ecp.h ecpoint.h elgamal.h emsa2.h eprecomp.h esign.h fhmqv.h files.h \ + filters.h fips140.h fltrimpl.h gcm.h gf256.h gf2_32.h gf2n.h gfpcrypt.h \ + gost.h gzip.h hashfwd.h hc128.h hc256.h hex.h hight.h hkdf.h hmac.h \ + hmqv.h hrtimer.h ida.h idea.h integer.h iterhash.h kalyna.h keccak.h \ + lea.h lubyrack.h luc.h mars.h md2.h md4.h md5.h mdc.h mersenne.h misc.h \ + modarith.h modes.h modexppc.h mqueue.h mqv.h naclite.h nbtheory.h nr.h \ + oaep.h oids.h osrng.h ossig.h padlkrng.h panama.h pch.h pkcspad.h \ + poly1305.h polynomi.h ppc_simd.h pssr.h pubkey.h pwdbased.h queue.h \ + rabbit.h rabin.h randpool.h rc2.h rc5.h rc6.h rdrand.h rijndael.h \ + ripemd.h rng.h rsa.h rw.h safer.h salsa.h scrypt.h seal.h secblock.h \ + seckey.h seed.h serpent.h serpentp.h sha.h sha3.h shacal2.h shake.h \ + shark.h simeck.h simon.h simple.h siphash.h skipjack.h sm3.h sm4.h \ + smartptr.h sosemanuk.h speck.h square.h stdcpp.h strciphr.h tea.h \ + threefish.h tiger.h trap.h trunhash.h ttmac.h tweetnacl.h twofish.h \ + vmac.h wake.h whrlpool.h words.h xed25519.h xtr.h xtrcrypt.h xts.h \ + zdeflate.h zinflate.h zlib.h + +noinst_HEADERS = \ + local.h \ + bench.h \ + factory.h \ + resource.h \ + validate.h \ + aes_armv4.h \ + sha1_armv4.h \ + sha256_armv4.h \ + sha512_armv4.h + +bin_PROGRAMS = cryptest$(EXEEXT) + +cryptest_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTEST_CXXFLAGS) -DCRYPTOPP_DATA_DIR='"${pkgdatadir}/"' +cryptest_SOURCES = \ + test.cpp bench1.cpp bench2.cpp bench3.cpp datatest.cpp \ + dlltest.cpp fipsalgt.cpp validat0.cpp validat1.cpp validat2.cpp \ + validat3.cpp validat4.cpp validat5.cpp validat6.cpp validat7.cpp \ + validat8.cpp validat9.cpp validat10.cpp regtest1.cpp regtest2.cpp \ + regtest3.cpp regtest4.cpp + +nodist_cryptest_SOURCES = adhoc.cpp +cryptest_LDADD = $(lib_LTLIBRARIES) + +CLEANFILES = adhoc.cpp + +## Copy the TestVectors/ and TestData/ to ${pkgdatadir} +## https://www.gnu.org/software/automake/manual/html_node/Data.html + +testdata_FILES = \ + TestData/3desval.dat TestData/fhmqv160.dat TestData/rc2val.dat \ + TestData/3wayval.dat TestData/fhmqv256.dat TestData/rc5val.dat \ + TestData/aria.dat TestData/fhmqv384.dat TestData/rc6val.dat \ + TestData/camellia.dat TestData/fhmqv512.dat TestData/rijndael.dat \ + TestData/cast128v.dat TestData/gostval.dat TestData/rsa1024.dat \ + TestData/cast256v.dat TestData/hmqv160.dat TestData/rsa2048a.dat \ + TestData/defdmac1.bin TestData/hmqv256.dat TestData/rsa2048.dat \ + TestData/defdmac2.bin TestData/hmqv384.dat TestData/rsa400pb.dat \ + TestData/descert.dat TestData/hmqv512.dat TestData/rsa400pv.dat \ + TestData/dh1024.dat TestData/ideaval.dat TestData/rsa512a.dat \ + TestData/dh2048.dat TestData/luc1024.dat TestData/rw1024.dat \ + TestData/dlie1024.dat TestData/luc2048.dat TestData/rw2048.dat \ + TestData/dlie2048.dat TestData/lucc1024.dat TestData/saferval.dat \ + TestData/dsa1024b.dat TestData/lucc512.dat TestData/serpentv.dat \ + TestData/dsa1024.dat TestData/lucd1024.dat TestData/shacal2v.dat \ + TestData/dsa512.dat TestData/lucd512.dat TestData/sharkval.dat \ + TestData/ecies_p160.dat TestData/lucs1024.dat TestData/skipjack.dat \ + TestData/ecies_t163.dat TestData/lucs512.dat TestData/squareva.dat \ + TestData/ed25519.dat TestData/marsval.dat TestData/twofishv.dat \ + TestData/ed25519v0.dat TestData/mqv1024.dat TestData/usage.dat \ + TestData/ed25519v1.dat TestData/mqv2048.dat TestData/x25519.dat \ + TestData/elgc1024.dat TestData/nr1024.dat TestData/x25519v0.dat \ + TestData/esig1023.dat TestData/nr2048.dat TestData/x25519v1.dat \ + TestData/esig1536.dat TestData/rabi1024.dat TestData/xtrdh171.dat \ + TestData/esig2046.dat TestData/rabi2048.dat TestData/xtrdh342.dat + +testvector_FILES = \ + TestVectors/aead.txt TestVectors/rsa_pss.txt \ + TestVectors/aes.txt TestVectors/rw.txt \ + TestVectors/all.txt TestVectors/salsa.txt \ + TestVectors/aria.txt TestVectors/seal.txt \ + TestVectors/blake2b.txt TestVectors/seed.txt \ + TestVectors/blake2s.txt TestVectors/sha1_160_fips_180.txt \ + TestVectors/blake2.txt TestVectors/sha1_fips_180.txt \ + TestVectors/camellia.txt TestVectors/sha2_224_fips_180.txt \ + TestVectors/ccm.txt TestVectors/sha2_256_fips_180.txt \ + TestVectors/chacha20poly1305.txt TestVectors/sha2_384_fips_180.txt \ + TestVectors/chacha_tls.txt TestVectors/sha2_512_fips_180.txt \ + TestVectors/chacha.txt TestVectors/sha2_fips_180.txt \ + TestVectors/cham.txt TestVectors/sha2.txt \ + TestVectors/cmac.txt TestVectors/sha3_224_fips_202.txt \ + TestVectors/dlies.txt TestVectors/sha3_256_fips_202.txt \ + TestVectors/dsa_1363.txt TestVectors/sha3_384_fips_202.txt \ + TestVectors/dsa_rfc6979.txt TestVectors/sha3_512_fips_202.txt \ + TestVectors/dsa.txt TestVectors/sha3_fips_202.txt \ + TestVectors/eax.txt TestVectors/sha3.txt \ + TestVectors/esign.txt TestVectors/shacal2.txt \ + TestVectors/gcm.txt TestVectors/shake.txt \ + TestVectors/hc128.txt TestVectors/sha.txt \ + TestVectors/hc256.txt TestVectors/simeck.txt \ + TestVectors/hight.txt TestVectors/simon.txt \ + TestVectors/hkdf.txt TestVectors/siphash.txt \ + TestVectors/hmac.txt TestVectors/skipjack.txt \ + TestVectors/kalyna.txt TestVectors/sm3.txt \ + TestVectors/keccak.txt TestVectors/sm4.txt \ + TestVectors/lea.txt TestVectors/sosemanuk.txt \ + TestVectors/mars.txt TestVectors/speck.txt \ + TestVectors/nr.txt TestVectors/tea.txt \ + TestVectors/panama.txt TestVectors/threefish.txt \ + TestVectors/poly1305aes.txt TestVectors/ttmac.txt \ + TestVectors/poly1305_tls.txt TestVectors/vmac.txt \ + TestVectors/rabbit.txt TestVectors/wake.txt \ + TestVectors/Readme.txt TestVectors/whrlpool.txt \ + TestVectors/rsa_oaep.txt TestVectors/xchacha.txt \ + TestVectors/rsa_pkcs1_1_5.txt TestVectors/xts.txt + +nobase_dist_pkgdata_DATA = \ + $(testdata_FILES) \ + $(testvector_FILES) + +## Automake bug workaround. If libcryptopp_la_SOURCES is an empty list, Automake assumes +## C source files and drives link through the C compiler. We provide the empty adhoc.cpp +## to get things back on course, so adhoc.cpp must always be copied. + +adhoc.cpp: + cp adhoc.cpp.proto adhoc.cpp + touch adhoc.cpp + +## Remove doc directpry if present +distclean-local: + -rm -rf html-docs doxyfile.stamp + +## Automake does not properly uninstall the library test data and vectors +uninstall-hook: + -rm -rf ${pkgdatadir} + -rm -rf ${pkghtmldir} + +## Doxygen is available but not built by default +## TODO: copy docs to ${pkghtmldir} if built +if CRYPTOPP_DOXYGEN_AVAILABLE + +## PHONY targets. Automake can only handle one of them... +.PHONY: doc docs html htmldoc checkout reset + +doc docs html htmldoc: + $(DOXYGEN) Doxyfile -d CRYPTOPP_DOXYGEN_PROCESSING + +endif + +# Restore GNUmakefile +checkout: + git checkout master -f + +# Restore GNUmakefile +reset: + git reset --hard HEAD diff --git a/package/lean/libcryptopp/src/configure.ac b/package/lean/libcryptopp/src/configure.ac new file mode 100644 index 0000000000..568f6888c8 --- /dev/null +++ b/package/lean/libcryptopp/src/configure.ac @@ -0,0 +1,2786 @@ +## configure.ac - Autotools configuration file for Crypto++. +## written and placed in public domain by Jeffrey Walton. +## based on Debian configure.ac by László Böszörményi. + + +## Visit the link below for the original Debian Autotools files +## http://sources.debian.net/src/libcrypto++/5.6.4-8/debian/autotools/ +## +## To generate the configure file perform the following. The extra steps are +## needed because the Autotools on some machines, like a PowerMac or Solaris, +## are not modern enough for macros like AC_PROG_LIBTOOL and AC_ENABLE_SHARED. +## +## autoupdate && libtoolize && autoreconf +## +## Our Autoconf tests are strict. We use custom AC_COMPILE_IFELSE and +## AC_LINK_IFELSE that rejects a feature test if there are any warnings or +## errors. We needed this because Autotools was mis-detecting features on AIX +## and Solarix using XLC and SunCC. We also needed the custom tests because +## Autoconf does not have a "warnings as errors" option that just works on all +## the compilers we support. + + +## TODO +## +## - Figure out how to make Autoconf stop using the fucking C compiler for tasks. +## The damn tool does not honor AC_PROG_CXX or observe the absence of +## AC_PROG_CC. It also fails to provide a AC_PROG_NO_CC macro. The damn tool +## is no better than Cmake. +## +## - Fix Autotools not treating warnings as errors. Our test programs are clean, +## so they should compile cleanly or the feature is not available. However, +## Autotools lacks a AC_TREAT_WARNINGS_AS_ERRORS-like macro or define. +## +## - Fix Autoconf using the wrong AR and ARFLAGS on platforms like OS X. Also +## see http://lists.gnu.org/archive/html/bug-autoconf/2017-11/msg00002.html. +## +## - Fix Autoconf not honoring LT_INIT. We are trying to enable PIC, static and +## shared by default but Autotools is ignoring [pic-only]. Also see +## https://stackoverflow.com/q/56215237/608639. +## +## - Fix Autoconf not using PIC/PIE for cryptest. The problem is bigger than the +## LT_INIT bug. There is no Uniform Name like bin_LTPROGRAMS to signal PIC/PIE +## should be used. Autoconf is guessing wrong and not using PIC/PIE. +## +## - Fix Autoconf ignoring our config.h.in. This one looks like it is a problem +## without a solution. Also see https://stackoverflow.com/q/48436715/608639. +## (Gave up after https://github.com/weidai11/cryptopp/commit/c51f0ecbfd21. +## Now we can write new config_asm.h, config_cxx.h, and config_misc.h.) +## +## - Figure out how to write new configuration information to config_asm.h, +## config_cxx.h, and config_misc.h. According to the Autoconf manual we +## can use multiple headers. However, it does not seem to work in +## practice. Also see https://stackoverflow.com/q/56193203/608639. +## +## - Stop using local.h, and write the config data into a Crypto++ compatible +## config.h. There's not much to "Crypto++ compatible config.h". We need test +## and write preprocessor macros like CRYPTOPP_BIG_ENDIAN, +## CRYPTOPP_LITTLE_ENDIAN, CRYPTOPP_CXX11, etc. There's just a lot of them. +## This problem now appears to be closely related to the config.h.in problem. +## We can't supply a template and expect Autotools to honor it. Also see +## https://lists.gnu.org/archive/html/autoconf/2018-07/msg00014.html. +## +## - Fix incorrect use of --with-sysroot. Autotools does not seem to honor it +## when it is set. Also see http://stackoverflow.com/q/47226389/608639. +## +## - Fix MSYS2 compile error due to `lt-cryptest.c` and `lt-cryptestcwd.c`. +## They are C files and don't use necessary C++ flags. They also use Posix +## functions but fail to define _XOPEN_SOURCE. I'm guessing this has something +## to do with libtool, but I have no idea how to fix it at the moment. Also +## see http://lists.gnu.org/archive/html/bug-libtool/2017-11/msg00002.html. +## +## - Fix the ARM 32-builds. Running 'cryptest v' results in +## "unexpected reloc type 0x03". GNUmakefile and CMake are OK. I've been +## working on it (on and off) for three days and no closer to finding a +## solution. Autotools is such a broken heaping pile of shit... Also see +## https://sourceware.org/ml/binutils/2019-05/msg00287.html +## +## - Fix static initialization order fiasco tests. We don't know how to craft +## the tests because we don't know how to compile two files at once using +## Autotools. Also see https://stackoverflow.com/q/51662985/608639. +## +## - Fix -xarch for SHA when using SunCC. We don't know the arch value at the +## moment. If things work as expected we will fail the feature test and the +## code paths will be disabled. But we want them enabled once Sun supports +## the SHA extensions. See https://stackoverflow.com/q/45872180/608639. +## +## - Fix LDFLAGS on AIX. Autotools is adding unwanted flags to LDFLAGS and it +## is causing a runtime crash in startup code. See +## https://stackoverflow.com/q/51680113/608639. +## +## - Add ubsan and asan targets for testing. +## +## - Setup test environment with Dash, which appears to be the lamest shell. +## +## - Package Autotools propery, for a regular user's definition of "proper". +## I don't know what the final deliverables or artifacts are supposed to +## look like. We also get warnings and errors due to a missing m4/ directory +## even though we don't use it. Maybe we need to distribute an empty m4/ +## directory to keep the tools quiet. + +############################################################################# + +## This configure.ac proceeds in five parts: +## +## 1. configure.ac preamble +## +## 2. compiler and host detection +## +## 3. configure options, like --disable-asm +## +## 4. CPU feature tests, like SSE, NEON, ARMv8, PowerPC +## +## 5. C++ feature tests, like C++11, alignof and alignas +## +## 6. Misc feature and options +## + +############################################################################# +## PART 1 PART 1 PART 1 PART 1 PART 1 PART 1 PART 1 PART 1 +## ========================================================================== +## configure.ac preamble +############################################################################# + +AC_INIT([Crypto++], [8.3], [http://www.cryptopp.com/wiki/Bug_Report], [cryptopp], [http://www.cryptopp.com]) +AC_CONFIG_SRCDIR([configure.ac]) +AC_CONFIG_HEADERS([local.h]) +AC_CONFIG_FILES([Makefile] [libcryptopp.pc]) +AC_CONFIG_AUX_DIR([build-aux]) +AC_CONFIG_MACRO_DIR([m4]) + +AM_INIT_AUTOMAKE + +AM_PROG_AS +AC_PROG_LIBTOOL + +AC_PROG_CXX +AC_LANG([C++]) +LT_LANG([C++]) + +# Programs we use +AC_PROG_SED +AC_PROG_AWK +AC_PROG_GREP +AC_PROG_EGREP + +# Detect build and host platforms +AC_CANONICAL_HOST +AC_CANONICAL_BUILD + +## Assert this once to avoid surprises +AC_LANG_ASSERT([C++]) + +############################################################################# + +## Our Autoconf tests are strict. We use custom AC_COMPILE_IFELSE and +## AC_LINK_IFELSE that rejects a feature test if there are any warnings or +## errors. We needed this because Autotools was mis-detecting features on +## AIX and Solarix using XLC and SunCC. We also needed the custom tests +## because Autoconf does not have a "warnings as errors" option that just +## works on all the compilers we support. + +AC_DEFUN([XXX_COMPILE_IFELSE], + [AC_COMPILE_IFELSE( + [$1], + [retval=0 + touch conftest.err + if test `cat conftest.err | wc -w` != "0"; then retval=1; fi + ],[retval=1] + ) + AS_IF([test $retval = 0],[$2],[$3])] +) + +AC_DEFUN([XXX_LINK_IFELSE], + [AC_LINK_IFELSE( + [$1], + [retval=0 + touch conftest.err + if test `cat conftest.err | wc -w` != "0"; then retval=1; fi + ],[retval=1] + ) + AS_IF([test $retval = 0],[$2],[$3])] +) + +############################################################################# +## PART 2 PART 2 PART 2 PART 2 PART 2 PART 2 PART 2 PART 2 +## ========================================================================== +## compiler and host detection +############################################################################# + +## These are some variables that help us track platform and compiler. +## It speeds up configuration by adding some intelligence to the +## test selection process. It also avoids failed configurations by +## avoiding some tests that fail but Autotools reports as success. + +IS_AIX_OS=`echo $build | $GREP -i -c 'aix'` +IS_SUN_OS=`uname -s | $GREP -i -c 'SunOS'` +IS_LINUX_OS=`echo "$build" | $GREP -i -c 'linux'` +IS_APPLE_OS=`echo "$build" | $EGREP -i -c 'apple|darwin'` +IS_ANDROID_OS=`echo $build | $GREP -i -c 'android'` +IS_CYGWIN_OS=`echo $build | $GREP -i -c 'cygwin'` +IS_MINGW_OS=`echo $build | $GREP -i -c 'mingw'` + +IS_IA32=`echo $build | $EGREP -i -c 'i.86|x86_64|amd64'` +IS_ARM32=`echo $build | $EGREP -i -c 'arm|armhf|arm7l|eabihf'` +IS_ARMV8=`echo $build | $EGREP -i -c 'aarch32|aarch64'` +IS_PPC=`echo $build | $EGREP -i -c 'ppc|powerpc|powermac'` +IS_SPARC=`echo $build | $EGREP -i -c 'sparc|sparcv8|sparcv9|sparc64'` + +## Debug builds add more goodies to help break things. I like breaking things. +IS_DEBUG=`echo $CPPFLAGS $CXXFLAGS | $GREP -i -c '\-DDEBUG'` + +############################################################################# + +## Determine the compiler's target. GCC '-dumpmachine' is the target, +## so it represents what the compiler is building for (and not what its +## running on). We add '2>/dev/null' because IBM's xlC dumps the man page +## when presented with '-dumpmachine' since it is not a valid option. + +## See if CXX is valid. Autotools just trucks on with an invalid one. + +if test x"$CXX" != "x"; then + COMPILER_VALID=`command -v "$CXX"` + if test x"$COMPILER_VALID" = "x"; then + AC_MSG_FAILURE(["$CXX" is not a valid compiler or is not on-path]) + fi +fi + +## Compiler is valid. Try to detect the target and vendor. +## SunCC is empty, so we just use $build + +COMPILER_TARGET=`"$CXX" "$CXXFLAGS" -dumpmachine 2>/dev/null` +if test x"$COMPILER_TARGET" = "x"; then + COMPILER_TARGET="$build" +fi + +## Determine the compiler's vendor. We need to work around some Autoconf bugs. + +COMPILER_VERSION=`"$CXX" --version 2>/dev/null | head -n 1` + +## IBM xlC test if COMPILER_VERSION is empty +if test x"$COMPILER_VERSION" = "x"; then + COMPILER_VERSION=`"$CXX" -qversion 2>/dev/null | head -n 1` +fi + +## SunCC test if COMPILER_VERSION is empty +if test x"$COMPILER_VERSION" = "x"; then + COMPILER_VERSION=`"$CXX" -V 2>&1 | head -n 1` +fi + +## Microsoft test if COMPILER_VERSION is empty +if test `basename "$CXX"` = "cl.exe"; then + COMPILER_VERSION=`"$CXX" /? 2>&1 | head -n 1` +fi + +IS_GCC_COMPILER=`echo $COMPILER_VERSION | $GREP -i -v 'Clang' | $EGREP -i -c 'GCC|G\+\+'` +IS_MSC_COMPILER=`echo $COMPILER_VERSION | $GREP -i -c 'Microsoft'` +IS_LLVM_COMPILER=`echo $COMPILER_VERSION | $EGREP -i -c 'LLVM|Clang'` +IS_SUN_COMPILER=`echo $COMPILER_VERSION | $EGREP -i -c 'Sun C'` +IS_ICC_COMPILER=`echo $COMPILER_VERSION | $GREP -i -c 'ICC'` +IS_XLC_COMPILER=`echo $COMPILER_VERSION | $GREP -i -c 'IBM XL'` +IS_PORTS_COMPILER=`echo $COMPILER_VERSION | $EGREP -i -c 'MacPorts|Homebrew'` + +## A catch-all for compilers that claim to be GCC compatible. Each should be +## able to handle GCC syntax. It excludes XLC, SunCC and MSVC +if test "$IS_GCC_COMPILER" != "0" || test "$IS_LLVM_COMPILER" != "0" || \ + test "$IS_ICC_COMPILER" != "0"; then + IS_GNUC_COMPILER=1 +else + IS_GNUC_COMPILER=0 +fi + +## Friendly names for reporting +CXXNAME=`basename "$CXX"` +LDNAME=`basename "$LD"` + +## Small fixup +case "$LDNAME" in + "ld "*) LDNAME=ld + ;; +esac + +############################################################################# +## PART 3 PART 3 PART 3 PART 3 PART 3 PART 3 PART 3 PART 3 +## ========================================================================== +## configure options, like --disable-asm +############################################################################# + +AC_ARG_ENABLE([pthreads], + AS_HELP_STRING([--disable-pthreads], [disable pthreads])) +AS_IF([test "x$enable_pthreads" = "xno"], [ + : # AC_DEFINE([CRYPTOPP_DISABLE_PTHREADS], [1], [disable pthreads]) +]) + +# Applies to all platforms +AC_ARG_ENABLE([asm], + AS_HELP_STRING([--disable-asm], [disable all ASM and intrinsics])) +AS_IF([test "x$enable_asm" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_ASM], [1], [disable all ASM and intrinsics]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_ASM" +]) + +# X86 defines +AC_ARG_ENABLE([sse2], + AS_HELP_STRING([--disable-sse2], [disable x86 SSE2 instructions])) +AS_IF([test "x$enable_sse2" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_SSE2], [1], [disable x86 SSE2 instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SSE2" +]) + +AC_ARG_ENABLE([sse3], + AS_HELP_STRING([--disable-sse3], [disable x86 SSE3 instructions])) +AS_IF([test "x$enable_sse3" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_SSE3], [1], [disable x86 SSE3 instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SSE3" +]) + +AC_ARG_ENABLE([ssse3], + AS_HELP_STRING([--disable-ssse3], [disable x86 SSSE3 instructions])) +AS_IF([test "x$enable_ssse3" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_SSSE3], [1], [disable x86 SSSE3 instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SSSE3" +]) + +AC_ARG_ENABLE([sse4], + AS_HELP_STRING([--disable-sse4], [disable x86 SSE4.1 and SSE4.2 instructions])) +AS_IF([test "x$enable_sse4" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_SSE4], [1], [disable x86 SSE4.1 and SSE4.2 instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SSE4" +]) + +AC_ARG_ENABLE([clmul], + AS_HELP_STRING([--disable-clmul], [disable x86 CLMUL instructions])) +AS_IF([test "x$enable_clmul" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_CLMUL], [1], [disable x86 CLMUL instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_CLMUL" +]) + +AC_ARG_ENABLE([aes], + AS_HELP_STRING([--disable-aes], [disable x86 AES instructions])) +AS_IF([test "x$enable_aes" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_AES], [1], [disable x86 AES instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_AES" +]) + +AC_ARG_ENABLE([sha], + AS_HELP_STRING([--disable-sha], [disable x86 SHA instructions])) +AS_IF([test "x$enable_sha" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_SHA], [1], [disable x86 SHA instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SHA" +]) + +AC_ARG_ENABLE([avx], + AS_HELP_STRING([--disable-avx], [disable x86 AVX instructions])) +AS_IF([test "x$enable_avx" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_AVX], [1], [disable x86 AVX instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_AVX" +]) + +AC_ARG_ENABLE([avx2], + AS_HELP_STRING([--disable-avx2], [disable x86 AVX2 instructions])) +AS_IF([test "x$enable_avx2" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_AVX2], [1], [disable x86 AVX2 instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_AVX2" +]) + +# ARM-32 defines +AC_ARG_ENABLE([armv7], + AS_HELP_STRING([--disable-armv7], [disable ARM ARMv7 instructions])) +AS_IF([test "x$enable_armv7" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_ARMV7], [1], [disable ARM ARMv7 instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_ARMV7" +]) + +AC_ARG_ENABLE([neon], + AS_HELP_STRING([--disable-neon], [disable ARM NEON instructions])) +AS_IF([test "x$enable_neon" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_NEON], [1], [disable ARM NEON instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_NEON" +]) + +# ARMv8 defines +AC_ARG_ENABLE([asimd], + AS_HELP_STRING([--disable-asimd], [disable ARMv8 ASIMD instructions])) +AS_IF([test "x$enable_asimd" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_ASIMD], [1], [disable ARMv8 ASIMD instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_ASIMD" +]) + +AC_ARG_ENABLE([crc32], + AS_HELP_STRING([--disable-crc32], [disable ARMv8 CRC32 instructions])) +AS_IF([test "x$enable_crc32" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_CRC32], [1], [disable ARMv8 CRC32 instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_CRC32" +]) + +AC_ARG_ENABLE([pmull], + AS_HELP_STRING([--disable-pmull], [disable ARMv8 PMULL instructions])) +AS_IF([test "x$enable_pmull" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_PMULL], [1], [disable ARMv8 PMULL instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_PMULL" +]) + +AC_ARG_ENABLE([aes], + AS_HELP_STRING([--disable-aes], [disable ARMv8 AES instructions])) +AS_IF([test "x$enable_aes" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_AES], [1], [disable ARMv8 AES instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_AES" +]) + +AC_ARG_ENABLE([sha1], + AS_HELP_STRING([--disable-sha1], [disable ARMv8 SHA1 instructions])) +AS_IF([test "x$enable_sha1" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_SHA1], [1], [disable ARMv8 SHA1 instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SHA1" +]) + +AC_ARG_ENABLE([sha256], + AS_HELP_STRING([--disable-sha256], [disable ARMv8 SHA256 instructions])) +AS_IF([test "x$enable_sha256" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_SHA256], [1], [disable ARMv8 SHA256 instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SHA256" +]) + +AC_ARG_ENABLE([sha512], + AS_HELP_STRING([--disable-sha512], [disable ARMv8 SHA512 instructions])) +AS_IF([test "x$enable_sha512" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_SHA512], [1], [disable ARMv8 SHA512 instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SHA512" +]) + +AC_ARG_ENABLE([sha3], + AS_HELP_STRING([--disable-sha3], [disable ARMv8 SHA3 instructions])) +AS_IF([test "x$enable_sha3" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_SHA3], [1], [disable ARMv8 SHA3 instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SHA3" +]) + +AC_ARG_ENABLE([sm3], + AS_HELP_STRING([--disable-sm3], [disable ARMv8 SM3 instructions])) +AS_IF([test "x$enable_sm3" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_SM3], [1], [disable ARMv8 SM3 instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SM3" +]) + +AC_ARG_ENABLE([sm4], + AS_HELP_STRING([--disable-sm4], [disable ARMv8 SM4 instructions])) +AS_IF([test "x$enable_sm4" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_SM4], [1], [disable ARMv8 SM4 instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SM4" +]) + +# PPC defines +AC_ARG_ENABLE([altivec], + AS_HELP_STRING([--disable-altivec], [disable PPC Altivec instructions])) +AS_IF([test "x$enable_altivec" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_ALTIVEC], [1], [disable PPC Altivec instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_ALTIVEC" +]) + +AC_ARG_ENABLE([aes], + AS_HELP_STRING([--disable-aes], [disable PPC AES instructions])) +AS_IF([test "x$enable_aes" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_AES], [1], [disable PPC AES instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_AES" +]) + +AC_ARG_ENABLE([vmull], + AS_HELP_STRING([--disable-vmull], [disable PPC VMULL instructions])) +AS_IF([test "x$enable_vmull" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_VMULL], [1], [disable PPC VMULL instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_VMULL" +]) + +AC_ARG_ENABLE([sha256], + AS_HELP_STRING([--disable-sha256], [disable PPC SHA256 instructions])) +AS_IF([test "x$enable_sha256" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_SHA256], [1], [disable PPC SHA256 instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SHA256" +]) + +AC_ARG_ENABLE([sha512], + AS_HELP_STRING([--disable-sha512], [disable PPC SHA512 instructions])) +AS_IF([test "x$enable_sha512" = "xno"], [ + AC_DEFINE([CRYPTOPP_DISABLE_SHA512], [1], [disable PPC SHA512 instructions]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SHA512" +]) + +############################################################################# +## PART 4 PART 4 PART 4 PART 4 PART 4 PART 4 PART 4 PART 4 +## ========================================================================== +## CPU feature tests, like SSE, NEON, ARMv8, PowerPC +############################################################################# + +############################################################################# +## Die early on Android + +if test "$IS_ANDROID_OS" != "0"; then + + AC_MSG_CHECKING([if ANDROID_NDK_ROOT is set]) + if test x"$ANDROID_NDK_ROOT" != "x"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + AC_MSG_ERROR([ANDROID_NDK_ROOT is not set. Please set ANDROID_NDK_ROOT]) + fi +fi + +############################################################################# +## Doxygen documentation +## This only provides a 'make html-doc' recipe in the Makefile. +## If Doxygen is available the user still must issue the command. + +AC_CHECK_PROGS([DOXYGEN], [doxygen]) +if test x"$DOXYGEN" = "x"; then + AM_CONDITIONAL([CRYPTOPP_DOXYGEN_AVAILABLE], [false]) +else + AM_CONDITIONAL([CRYPTOPP_DOXYGEN_AVAILABLE], [true]) +fi + +############################################################################# +## Shared and static libraries + +if true; then + + ## Cant use AC_ENABLE_STATIC and AC_ENABLE_SHARED. AIX Autotools is too old. + AC_MSG_RESULT([checking if static libraries should be enabled... yes]) + + ## http://stackoverflow.com/a/21455267/608639 + case $host_os in + msys* | mingw* | cygwin* ) + AC_MSG_RESULT([checking if shared libraries should be enabled... no]) + enable_shared=no; enable_static=yes; + ;; + *) + AC_MSG_RESULT([checking if shared libraries should be enabled... yes]) + enable_shared=yes; enable_static=yes; + ;; + esac +fi + +############################################################################# +## Pthread library + +if true; then + + ## Add to both CXXFLAGS and LDFLAGS if supported. + ## https://stackoverflow.com/q/2127797/608639. + + SAVED_CXXFLAGS="$CXXFLAGS" + SAVED_LDFLAGS="$LDFLAGS" + + CXXFLAGS="-pthread" + LDFLAGS="-pthread" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_CXXFLAGS="$AM_CXXFLAGS $CXXFLAGS" + AM_LDFLAGS="$AM_LDFLAGS $LDFLAGS" + fi + + LDFLAGS="$SAVED_LDFLAGS" + CXXFLAGS="$SAVED_CXXFLAGS" +fi + +############################################################################# +## Init priorities + +## The tests below should be in two separate source file violating +## init order. One object file should perform the Foo or Bar static +## init, and the second source would have a static object using +## Foo::s_x or Bar::s_x. The problem is, we don't know how to do it. +## Also see https://stackoverflow.com/q/51662985/608639. + +## We can only run one Init Priority test. Otherwise, running both tests +## cause 'CRYPTOPP_INIT_PRIORITY 250' and 'CRYPTOPP_INIT_PRIORITY 0' to be +## written, which results in "warning: CRYPTOPP_INIT_PRIORITY redefined". +## And of course, Autools does not allow us to undefine a macro. + +## GCC-style +if true; then + + SAVED_CXXFLAGS="$CXXFLAGS" + + ## -Wall -Werror are GCC and friends specific. The problem is, + ## Autotools lacks a cross-platform AC_TREAT_WARNINGS_AS_ERRORS. + if test "$IS_MSC_COMPILER" = "0"; then + THIS_CXXFLAGS="-Wall -Werror" + fi + + CXXFLAGS="$THIS_CXXFLAGS" + XXX_PROGRAM="#include + struct Foo { + Foo(int x) : m_x(x) {} + Foo(const Foo& o) : m_x(o.m_x) {} + Foo& operator=(const Foo& o) {m_x=o.m_x; return *this;} + static int s_x; + int m_x; + }; + int Foo::s_x = -1; + static Foo unused __attribute__ ((init_priority (250))) = Foo::s_x; + // This should be in a separate source file violating init order. + // The separate file should have a main() and be linked first. + // static Foo f = Foo::s_x; + // bool success = f.m_x == -1;" + + AC_MSG_CHECKING([if $CXXNAME supports init_priority]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([$XXX_PROGRAM])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([HAVE_GCC_INIT_PRIORITY], [1]) + AC_DEFINE([CRYPTOPP_INIT_PRIORITY], [250], [Enable init_priority]) + else + AC_DEFINE([CRYPTOPP_INIT_PRIORITY], [0], [Disable init_priority]) + fi + + CXXFLAGS="$SAVED_CXXFLAGS" +fi + +## MSC-style +if false; then + + ## The problem is, Autotools lacks a cross-platform + ## AC_TREAT_WARNINGS_AS_ERRORS. Clang, GCC, and friends will see + ## "pragma init_seg" and issue an an unknown pragma warning. + ## Adding -Wall or -Werror will cause MSC and friends to fail on + ## the illegal flag. + if test "$IS_MSC_COMPILER" = "1"; then + THIS_CXXFLAGS="/WX" + else + THIS_CXXFLAGS="-Wall -Werror" + fi + + CXXFLAGS="$THIS_CXXFLAGS" + XXX_PROGRAM="#include + struct Bar { + Bar(int x) : m_x(x) {} + Bar(const Bar& o) : m_x(o.m_x) {} + Bar& operator=(const Bar& o) {m_x=o.m_x; return *this;} + static int s_x; + int m_x; + }; + #pragma init_seg(".CRT$XCU") + int Bar::s_x = -1; + static Bar unused __attribute__ ((init_priority (250))) = Bar::s_x; + // This should be in a separate source file violating init order. + // The separate file should have a main() and be linked first. + // static Bar b = Bar::s_x; + // bool success = b.m_x == -1;" + + AC_MSG_CHECKING([if $CXXNAME supports init_seg]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([$XXX_PROGRAM])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([HAVE_MSC_INIT_PRIORITY], [1]) + AC_DEFINE([CRYPTOPP_INIT_PRIORITY], [250], [Enable init_seg]) + else + AC_DEFINE([CRYPTOPP_INIT_PRIORITY], [0], [Disable init_seg]) + fi + + CXXFLAGS="$SAVED_CXXFLAGS" +fi + +############################################################################# +## Solaris, SunCC and missing optimizations + +OPT_ANY=`echo $CXXFLAGS | $EGREP -c '\-O0|\-O1|\-O2|\-O3|\-O4|\-O5|\-xO0|\-xO1|\-xO2|\-xO3|\-xO4|\-xO5|\-Os|\-Og|\-Ofast'` + +if test "$OPT_ANY" = "0"; then + + SAVED_CXXFLAGS="$CXXFLAGS" + + CXXFLAGS="-O2" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_CXXFLAGS="$AM_CXXFLAGS $CXXFLAGS" + else + + # SunCC + CXXFLAGS="-xO2" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_CXXFLAGS="$AM_CXXFLAGS $CXXFLAGS" + fi + fi + + CXXFLAGS="$SAVED_CXXFLAGS" +fi + +############################################################################# +## Fix AR on iOS and OS X + +## AR and ARFLAGS usage is currently broke under Autotools. Also see +## http://lists.gnu.org/archive/html/bug-autoconf/2017-11/msg00002.html + +#if test "$IS_APPLE_OS" != "0"; then +# AC_SUBST([AR], ["/usr/bin/libtool"]) +# AC_SUBST([ARFLAGS], ["-static -o"]) +# AC_SUBST([ac_ct_AR], ["/usr/bin/libtool"]) +#fi + +############################################################################# +## Dead code stripping for compilers. Linkers are towards the end of script. +## We have to use XXX_LINK_IFELSE because some compilers don't reject +## -fdata-sections or -ffunction-sections like they should. + +if true; then + + ## Save FLAGS + SAVED_CXXFLAGS="$CXXFLAGS" + + CXXFLAGS="-fdata-sections" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_CXXFLAGS="$AM_CXXFLAGS $CXXFLAGS" + fi + + CXXFLAGS="-ffunction-sections" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_CXXFLAGS="$AM_CXXFLAGS $CXXFLAGS" + fi + + ## Restore FLAGS + CXXFLAGS="$SAVED_CXXFLAGS" +fi + +############################################################################# +## Solaris, GCC and -Wa,--divide + +if test "$IS_SUN_OS" != "0"; then + + ## Save CXXFLAGS + SAVED_CXXFLAGS="$CXXFLAGS" + + CXXFLAGS="-Wa,--divide" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_CXXFLAGS="$AM_CXXFLAGS $CXXFLAGS" + fi + + ## Restore CXXFLAGS + CXXFLAGS="$SAVED_CXXFLAGS" +fi + +############################################################################# +## Solaris, SunCC compiler options + +if test "$IS_SUN_OS" != "0"; then + + ## Save CXXFLAGS + SAVED_CXXFLAGS="$CXXFLAGS" + + CXXFLAGS="-template=no%extdef" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_CXXFLAGS="$AM_CXXFLAGS $CXXFLAGS" + fi + + # https://docs.oracle.com/cd/E18659_01/html/821-1383/bkamt.html + CXXFLAGS="-xregs=no%appl" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_CXXFLAGS="$AM_CXXFLAGS $CXXFLAGS" + fi + + ## Restore CXXFLAGS + CXXFLAGS="$SAVED_CXXFLAGS" +fi + +############################################################################# +## MacPorts GCC using Clang integrated assembler + +## Modern GCC must use Clang as the assembler. The old Apple +## assembler cannot handle much more than SSE4 or so. We need +## to use -Wa,-q in subsequent tests, if available. + +if test "$IS_APPLE_OS" != "0"; then +if test "$IS_GCC_COMPILER" != "0" && test "$IS_PORTS_COMPILER" != "0"; then + + HAVE_OPT=`echo $CXXFLAGS | $EGREP -i -c '\-Wa,-q'` + if test "$HAVE_OPT" = "0"; then + + ## Save CXXFLAGS + SAVED_CXXFLAGS="$CXXFLAGS" + + CXXFLAGS="-Wa,-q" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + # We can add -Wa,-q to all files, if needed + if test "$retval" = "0"; then + # AM_CXXFLAGS="$AM_CXXFLAGS $CXXFLAGS" + WAQ_FLAG="-Wa,-q" + fi + + ## Restore CXXFLAGS + CXXFLAGS="$SAVED_CXXFLAGS" + fi +fi +fi + +############################################################################# +## Clang integrated assembler and SunCC. + +## Also see https://bugs.llvm.org/show_bug.cgi?id=39895. +if test "$IS_IA32" = "1" && test "x$enable_asm" != "xno"; then + + ## Save CXXFLAGS + SAVED_CXXFLAGS="$CXXFLAGS" + + CXXFLAGS="-msse2 $WAQ_FLAG" + AC_MSG_CHECKING([if $CXXNAME supports mixed ASM]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_asm_mixed.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" != "0"; then + AC_DEFINE([CRYPTOPP_DISABLE_MIXED_ASM], [1], [Disable mixed asm]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_MIXED_ASM" + fi + + ## Restore CXXFLAGS + CXXFLAGS="$SAVED_CXXFLAGS" +fi + +############################################################################# +## IA-32, i386, i586, i686, x86_64, etc. + +## This block handles GCC and friends, including -Wa,-q if needed. +## i86pc and SunCC is handled after this block. +if test "$IS_IA32" = "1" && test "$IS_GNUC_COMPILER" = "1"; then + + ## Save CXXFLAGS + SAVED_CXXFLAGS="$CXXFLAGS" + + ##### SSE2 ##### + + if test x"$WAQ_FLAG" != "x"; then + CXXFLAGS="-msse2 $WAQ_FLAG" + else + CXXFLAGS="-msse2" + fi + + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_sse2.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_SSE2_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_CHACHA_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_DONNA_FLAG], [$CXXFLAGS]) + AC_DEFINE([CRYPTOPP_SSE2_AVAILABLE], [1], [Enable SSE2]) + else + AC_DEFINE([CRYPTOPP_DISABLE_ASM], [1], [Disable SSE2]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_ASM" + fi + + ##### SSE3 ##### + + if test x"$WAQ_FLAG" != "x"; then + CXXFLAGS="-msse3 $WAQ_FLAG" + else + CXXFLAGS="-msse3" + fi + + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_sse3.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_DEFINE([CRYPTOPP_SSE3_AVAILABLE], [1], [Enable SSE3]) + else + AC_DEFINE([CRYPTOPP_DISABLE_SSE3], [1], [Disable SSE3]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SSE3" + fi + + ##### SSSE3 ##### + + if test x"$WAQ_FLAG" != "x"; then + CXXFLAGS="-mssse3 $WAQ_FLAG" + else + CXXFLAGS="-mssse3" + fi + + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_ssse3.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_SSSE3_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_ARIA_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_CHAM_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_KECCAK_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_LEA_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_SIMON128_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_SPECK128_FLAG], [$CXXFLAGS]) + AC_DEFINE([CRYPTOPP_SSSE3_AVAILABLE], [1], [Enable SSSE3]) + else + AC_DEFINE([CRYPTOPP_DISABLE_SSSE3], [1], [Disable SSSE3]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SSSE3" + fi + + ##### SSE4.1 ##### + + ## Old BSD linkers don't support SSE4 or above. + if test x"$WAQ_FLAG" != "x"; then + CXXFLAGS="-msse4.1 $WAQ_FLAG" + else + CXXFLAGS="-msse4.1" + fi + + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_sse41.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_SSE41_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_BLAKE2S_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_BLAKE2B_FLAG], [$CXXFLAGS]) + AC_DEFINE([CRYPTOPP_SSE41_AVAILABLE], [1], [Enable SSE4.1]) + else + AC_DEFINE([CRYPTOPP_DISABLE_SSE4], [1], [Disable SSE4.1]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SSE4" + fi + + ##### SSE4.2 ##### + + ## Old BSD linkers don't support it. + if test x"$WAQ_FLAG" != "x"; then + CXXFLAGS="-msse4.2 $WAQ_FLAG" + else + CXXFLAGS="-msse4.2" + fi + + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_sse42.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_SSE42_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_CRC_FLAG], [$CXXFLAGS]) + AC_DEFINE([CRYPTOPP_SSE42_AVAILABLE], [1], [Enable SSE4.2]) + else + AC_DEFINE([CRYPTOPP_DISABLE_SSE4], [1], [Disable SSE4.2]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SSE4" + fi + + ##### PCLMUL ##### + + ## Some old compilers, assemblers and linkers don't support it. + if test x"$WAQ_FLAG" != "x"; then + CXXFLAGS="-mpclmul $WAQ_FLAG" + else + CXXFLAGS="-mpclmul" + fi + + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_clmul.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + # if -mpclmul fails then it is disabled in the next test + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_GF2N_FLAG], [$CXXFLAGS]) + fi + + ## Some old compilers, assemblers and linkers don't support it. + if test x"$WAQ_FLAG" != "x"; then + CXXFLAGS="-mssse3 -mpclmul $WAQ_FLAG" + else + CXXFLAGS="-mssse3 -mpclmul" + fi + + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_clmul.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_GCM_FLAG], [$CXXFLAGS]) + AC_DEFINE([CRYPTOPP_CLMUL_AVAILABLE], [1], [Enable CLMUL]) + else + AC_DEFINE([CRYPTOPP_DISABLE_CLMUL], [1], [Disable CLMUL]) + fi + + ##### SSSE3+AES ##### + + ## Some old compilers, assemblers and linkers don't support it. + if test x"$WAQ_FLAG" != "x"; then + CXXFLAGS="-mssse3 -maes $WAQ_FLAG" + else + CXXFLAGS="-mssse3 -maes" + fi + + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_aes.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + # if -maes fails then it is disabled in the next test + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_SM4_FLAG], [$CXXFLAGS]) + fi + + ##### SSE4.1+AES ##### + + ## Some old compilers, assemblers and linkers don't support it. + if test x"$WAQ_FLAG" != "x"; then + CXXFLAGS="-msse4.1 -maes $WAQ_FLAG" + else + CXXFLAGS="-msse4.1 -maes" + fi + + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_aes.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_AES_FLAG], [$CXXFLAGS]) + AC_DEFINE([CRYPTOPP_AESNI_AVAILABLE], [1], [Enable AESNI]) + else + AC_DEFINE([CRYPTOPP_DISABLE_AESNI], [1], [Disable AESNI]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_AESNI" + fi + + ##### AVX ##### + + ## Some old compilers, assemblers and linkers don't support it. + if test x"$WAQ_FLAG" != "x"; then + CXXFLAGS="-mavx $WAQ_FLAG" + else + CXXFLAGS="-mavx" + fi + + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_avx.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_CHACHA_AVX_FLAG], [$CXXFLAGS]) + AC_DEFINE([CRYPTOPP_AVX_AVAILABLE], [1], [Enable AVX]) + else + AC_DEFINE([CRYPTOPP_DISABLE_AVX], [1], [Disable AVX]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_AVX" + fi + + ##### AVX2 ##### + + ## Some old compilers, assemblers and linkers don't support it. + if test x"$WAQ_FLAG" != "x"; then + CXXFLAGS="-mavx2 $WAQ_FLAG" + else + CXXFLAGS="-mavx2" + fi + + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_avx2.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_CHACHA_AVX2_FLAG], [$CXXFLAGS]) + AC_DEFINE([CRYPTOPP_AVX2_AVAILABLE], [1], [Enable AVX2]) + else + AC_DEFINE([CRYPTOPP_DISABLE_AVX2], [1], [Disable AVX2]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_AVX2" + fi + + ##### SHA ##### + + ## Some old compilers, assemblers and linkers don't support it. + if test x"$WAQ_FLAG" != "x"; then + CXXFLAGS="-msse4.2 -msha $WAQ_FLAG" + else + CXXFLAGS="-msse4.2 -msha" + fi + + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_sha.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_SHA_FLAG], [$CXXFLAGS]) + AC_DEFINE([CRYPTOPP_SHANI_AVAILABLE], [1], [Enable SHANI]) + else + AC_DEFINE([CRYPTOPP_DISABLE_SHANI], [1], [Disable SHANI]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SHANI" + fi + + ## Restore CXXFLAGS + CXXFLAGS="$SAVED_CXXFLAGS" +fi + +## This block handles i86pc and SunCC. GCC and friends were handled before this block +if test "$IS_IA32" != "0" && test "$IS_SUN_COMPILER" != "0"; then + + ## Save CXXFLAGS + SAVED_CXXFLAGS="$CXXFLAGS" + + ##### SSE2 ##### + + CXXFLAGS="-xarch=sse2" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_sse2.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + ## GCM AES and SHA should be overwritten with CLMUL, AES and SHA if available. + ## If not available then need -xarch=sse2 due to SSE2, GCM_Xor16_SSE2, etc. + if test "$retval" = "0"; then + CXXFLAGSX="$CXXFLAGS -D__SSE2__=1" + AC_SUBST([CRYPTOPP_SSE2_FLAG], [$CXXFLAGSX]) + AC_SUBST([CRYPTOPP_CHACHA_FLAG], [$CXXFLAGSX]) + AC_SUBST([CRYPTOPP_GCM_FLAG], [$CXXFLAGSX]) + AC_SUBST([CRYPTOPP_AES_FLAG], [$CXXFLAGSX]) + AC_SUBST([CRYPTOPP_SHA_FLAG], [$CXXFLAGSX]) + AC_DEFINE([CRYPTOPP_SSE2_AVAILABLE], [1], [Enable SSE2]) + AM_LDFLAGS="$AM_LDFLAGS $CXXFLAGS" + else + AC_DEFINE([CRYPTOPP_DISABLE_ASM], [1], [Disable SSE2]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_ASM" + fi + + ##### SSE3 ##### + + ## Nothing pivots around SSE3 specifically, but we do use + ## insns from the ISA. Sun requires it as a linker flag. + CXXFLAGS="-xarch=sse3" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_sse3.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + CXXFLAGSX="$CXXFLAGS -D__SSE3__=1" + AC_DEFINE([CRYPTOPP_SSE3_AVAILABLE], [1], [Enable SSE3]) + AM_LDFLAGS="$AM_LDFLAGS $CXXFLAGS" + else + AC_DEFINE([CRYPTOPP_DISABLE_SSE3], [1], [Disable SSE3]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SSE3" + fi + + ##### SSSE3 ##### + + CXXFLAGS="-xarch=ssse3" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_ssse3.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + CXXFLAGSX="$CXXFLAGS -D__SSSE3__=1" + AC_SUBST([CRYPTOPP_SSSE3_FLAG], [$CXXFLAGSX]) + AC_SUBST([CRYPTOPP_ARIA_FLAG], [$CXXFLAGSX]) + AC_SUBST([CRYPTOPP_CHACHA_FLAG], [$CXXFLAGSX]) + AC_SUBST([CRYPTOPP_CHAM_FLAG], [$CXXFLAGSX]) + AC_SUBST([CRYPTOPP_KECCAK_FLAG], [$CXXFLAGSX]) + AC_SUBST([CRYPTOPP_LEA_FLAG], [$CXXFLAGSX]) + AC_SUBST([CRYPTOPP_SIMON128_FLAG], [$CXXFLAGSX]) + AC_SUBST([CRYPTOPP_SPECK128_FLAG], [$CXXFLAGSX]) + AC_DEFINE([CRYPTOPP_SSSE3_AVAILABLE], [1], [Enable SSSE3]) + AM_LDFLAGS="$AM_LDFLAGS $CXXFLAGS" + else + AC_DEFINE([CRYPTOPP_DISABLE_SSSE3], [1], [Disable SSSE3]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SSSE3" + fi + + ##### SSE4.1 ##### + + CXXFLAGS="-xarch=sse4_1" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_sse41.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + CXXFLAGSX="$CXXFLAGS -D__SSE4_1__=1" + AC_SUBST([CRYPTOPP_SSE41_FLAG], [$CXXFLAGSX]) + AC_DEFINE([CRYPTOPP_SSE41_AVAILABLE], [1], [Enable SSE4.1]) + AM_LDFLAGS="$AM_LDFLAGS $CXXFLAGS" + else + AC_DEFINE([CRYPTOPP_DISABLE_SSE4], [1], [Disable SSE4.1]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SSE4" + fi + + ##### SSE4.2 ##### + + CXXFLAGS="-xarch=sse4_2" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_sse42.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + CXXFLAGSX="$CXXFLAGS -D__SSE4_2__=1" + AC_SUBST([CRYPTOPP_SSE42_FLAG], [$CXXFLAGSX]) + AC_SUBST([CRYPTOPP_CRC_FLAG], [$CXXFLAGSX]) + AC_SUBST([CRYPTOPP_BLAKE2S_FLAG], [$CXXFLAGSX]) + AC_SUBST([CRYPTOPP_BLAKE2B_FLAG], [$CXXFLAGSX]) + AC_DEFINE([CRYPTOPP_SSE42_AVAILABLE], [1], [Enable SSE4.2]) + AM_LDFLAGS="$AM_LDFLAGS $CXXFLAGS" + else + AC_DEFINE([CRYPTOPP_DISABLE_SSE4], [1], [Disable SSE4.2]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SSE4" + fi + + ##### CLMUL ##### + + CXXFLAGS="-xarch=aes" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_clmul.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + CXXFLAGSX="$CXXFLAGS -D__CLMUL__=1" + AC_SUBST([CRYPTOPP_GCM_FLAG], [$CXXFLAGSX]) + AC_SUBST([CRYPTOPP_GF2N_FLAG], [$CXXFLAGSX]) + AC_DEFINE([CRYPTOPP_CLMUL_AVAILABLE], [1], "Enable CLMUL") + AM_LDFLAGS="$AM_LDFLAGS $CXXFLAGS" + else + AC_DEFINE([CRYPTOPP_DISABLE_CLMUL], [1], "Disable CLMUL") + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_CLMUL" + fi + + ##### AES ##### + + CXXFLAGS="-xarch=aes" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_aes.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + CXXFLAGSX="$CXXFLAGS -D__AES__=1" + AC_SUBST([CRYPTOPP_AES_FLAG], [$CXXFLAGSX]) + AC_SUBST([CRYPTOPP_SM4_FLAG], [$CXXFLAGSX]) + AC_DEFINE([CRYPTOPP_AESNI_AVAILABLE], [1], "Enable AESNI") + AM_LDFLAGS="$AM_LDFLAGS $CXXFLAGS" + else + AC_DEFINE([CRYPTOPP_DISABLE_AESNI], [1], "Disable AESNI") + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_AESNI" + fi + + ##### AVX ##### + + CXXFLAGS="-xarch=avx" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_avx.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + CXXFLAGSX="$CXXFLAGS -D__AVX__=1" + AC_DEFINE([CRYPTOPP_AVX_AVAILABLE], [1], [Enable AVX]) + AM_LDFLAGS="$AM_LDFLAGS $CXXFLAGS" + else + AC_DEFINE([CRYPTOPP_DISABLE_AVX], [1], [Disable AVX]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_AVX" + fi + + ##### AVX2 ##### + + CXXFLAGS="-xarch=avx2" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_avx2.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + CXXFLAGSX="$CXXFLAGS -D__AVX2__=1" + AC_SUBST([CRYPTOPP_CHACHA_AVX2_FLAG], [$CXXFLAGSX]) + AC_DEFINE([CRYPTOPP_AVX2_AVAILABLE], [1], [Enable AVX2]) + AM_LDFLAGS="$AM_LDFLAGS $CXXFLAGS" + else + AC_DEFINE([CRYPTOPP_DISABLE_AVX2], [1], [Disable AVX2]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_AVX2" + fi + + ##### RDRAND ##### + + ## https://docs.oracle.com/cd/E77782_01/html/E77792/gqexw.html + CXXFLAGS="-xarch=avx_i" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_rdrand.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + ## It is not clear if we can avoid the linker option for Solaris + ## Also see https://stackoverflow.com/q/51678753/608639 + #if test "$retval" = "0"; then + # CXXFLAGSX="$CXXFLAGS -D__RDRND__=1" + # AM_LDFLAGS="$AM_LDFLAGS $CXXFLAGS" + #fi + + ##### RDSEED ##### + + ## https://docs.oracle.com/cd/E60778_01/html/E60745/bjapr.html + CXXFLAGS="-xarch=avx2_i" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_rdseed.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + ## It is not clear if we can avoid the linker option for Solaris + ## Also see https://stackoverflow.com/q/51678753/608639 + #if test "$retval" = "0"; then + # CXXFLAGSX="$CXXFLAGS -D__RDSEED__=1" + # AM_LDFLAGS="$AM_LDFLAGS $CXXFLAGS" + #fi + + ##### SHA ##### + + ##CXXFLAGS="-xarch=avx2_i" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_x86_sha.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + CXXFLAGSX="$CXXFLAGS -D__SHA__=1" + AC_SUBST([CRYPTOPP_SHA_FLAG], [$CXXFLAGSX]) + AC_DEFINE([CRYPTOPP_SHA_AVAILABLE], [1], "Enable SHANI") + AM_LDFLAGS="$AM_LDFLAGS $CXXFLAGS" + else + AC_DEFINE([CRYPTOPP_DISABLE_SHANI], [1], "Disable SHANI") + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_SHANI" + fi + + ## Restore CXXFLAGS + CXXFLAGS="$SAVED_CXXFLAGS" +fi + +############################################################################# +## ARM A-32, including NEON, soft floats and hard floats + +if test "$IS_ARM32" != "0" || test "$IS_ARMV8" != "0"; then + + # https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html + + AC_CHECK_HEADERS(arm_neon.h, + [AC_DEFINE([CRYPTOPP_ARM_NEON_HEADER], [1], [arm_neon.h is available])], + [AC_DEFINE([CRYPTOPP_ARM_NEON_HEADER], [0], [arm_neon.h is not available])] + ) +fi + +if test "$IS_ARM32" != "0" && test "$IS_ANDROID_OS" = "0"; then + + ## Save CXXFLAGS + SAVED_CXXFLAGS="$CXXFLAGS" + + CXXFLAGS="-march=armv7-a" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_cxx.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + CXXFLAGS="-march=armv7-a -mfpu=neon" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_arm_neon.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_AES_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_ARIA_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_BLAKE2S_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_BLAKE2B_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_CHACHA_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_CHAM_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_CRC_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_GCM_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_LEA_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_NEON_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_SHA_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_SM4_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_SIMON128_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_SPECK64_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_SPECK128_FLAG], [$CXXFLAGS]) + AC_DEFINE([CRYPTOPP_ARM_NEON_AVAILABLE], [1], [Enable NEON]) + else + AC_DEFINE([CRYPTOPP_DISABLE_ASM], [1], [Disbale NEON]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_ASM" + fi + + ## Restore CXXFLAGS + CXXFLAGS="$SAVED_CXXFLAGS" +fi + +############################################################################# +## Android and -mfloat-abi=softfp + +if test "$IS_ARM32" != "0" && test "$IS_ANDROID_OS" != "0"; then + + ## Save CXXFLAGS + SAVED_CXXFLAGS="$CXXFLAGS" + + CXXFLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=neon" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_arm_neon.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_AES_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_ARIA_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_BLAKE2S_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_BLAKE2B_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_CHACHA_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_CHAM_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_CRC_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_GCM_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_LEA_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_NEON_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_SHA_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_SM4_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_SIMON128_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_SPECK128_FLAG], [$CXXFLAGS]) + AC_DEFINE([CRYPTOPP_ARM_NEON_AVAILABLE], [1], [Enable NEON]) + else + AC_DEFINE([CRYPTOPP_DISABLE_ASM], [1], [Disbale NEON]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_ASM" + fi + + ## Restore CXXFLAGS + CXXFLAGS="$SAVED_CXXFLAGS" + +fi + +############################################################################# +## ARM A-32 and aes_armv4.S + +# Used by Makefile.am to compile aes_armv4.S and sha1_armv4.S. +# Only valid on Linux because ASM is written for GNU AS (GAS). +if test "$IS_ARM32" != "0" && test "$IS_LINUX_OS" != "0"; then + + ## Save CXXFLAGS + SAVED_CXXFLAGS="$CXXFLAGS" + + CXXFLAGS="-march=armv7-a -Wa,--noexecstack" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_cxx.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_CONDITIONAL([CRYPTOGAMS_ARM_SOURCES], [true]) + AC_SUBST([CRYPTOPGAMS_ARMV4_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPGAMS_ARMV4_THUMB_FLAG], [$CXXFLAGS]) + fi + + # For Clang, aes_armv4.S needs -mthumb + if test "$IS_LLVM_COMPILER" != "0"; then + + CXXFLAGS="-march=armv7-a -mthumb -Wa,--noexecstack" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_cxx.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPGAMS_ARMV4_THUMB_FLAG], [$CXXFLAGS]) + fi + fi + + ## Restore CXXFLAGS + CXXFLAGS="$SAVED_CXXFLAGS" +else + # Required for other platforms + AM_CONDITIONAL([CRYPTOGAMS_ARM_SOURCES], [false]) +fi + +############################################################################# +## ARM Aarch32 and Aarch64 + +if test "$IS_ARMV8" != "0"; then + + # https://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html + + AC_CHECK_HEADERS(arm_acle.h, + [AC_DEFINE([CRYPTOPP_ARM_ACLE_HEADER], [1], [arm_acle.h is available])], + [AC_DEFINE([CRYPTOPP_ARM_ACLE_HEADER], [0], [arm_acle.h is not available])] + ) + +fi + +if test "$IS_ARMV8" != "0"; then + + # https://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html + + ## Save CXXFLAGS + SAVED_CXXFLAGS="$CXXFLAGS" + + CXXFLAGS="-march=armv8-a" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_arm_asimd.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_ARIA_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_CHACHA_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_CHAM_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_BLAKE2S_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_BLAKE2B_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_LEA_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_NEON_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_SIMON128_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_SPECK128_FLAG], [$CXXFLAGS]) + else + AC_DEFINE([CRYPTOPP_DISABLE_ASM], [1], [Enable NEON]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_ASM" + fi + + CXXFLAGS="-mfix-cortex-a53-835769" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_cxx.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_CXXFLAGS="$AM_CXXFLAGS $CXXFLAGS" + fi + + CXXFLAGS="-mfix-cortex-a53-843419" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_cxx.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_LDFLAGS="$AM_LDFLAGS $CXXFLAGS" + fi + + CXXFLAGS="-march=armv8-a+crc" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_arm_crc.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_CRC_FLAG], [$CXXFLAGS]) + AC_DEFINE([CRYPTOPP_ARM_CRC32_AVAILABLE], [1], [Enable ARMv8 CRC32]) + else + AC_DEFINE([CRYPTOPP_DISABLE_CRC32], [1], [Disable ARMv8 CRC32]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_ARM_CRC32" + fi + + CXXFLAGS="-march=armv8-a+crypto" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (AES)]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_arm_aes.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_AES_FLAG], [$CXXFLAGS]) + AC_DEFINE([CRYPTOPP_ARM_AES_AVAILABLE], [1], [Enable ARMv8 AES]) + else + AC_DEFINE([CRYPTOPP_DISABLE_ARM_AES], [1], [Disable ARMv8 AES]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_ARM_AES" + fi + + CXXFLAGS="-march=armv8-a+crypto" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (PMULL)]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_arm_pmull.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_GCM_FLAG], [$CXXFLAGS]) + AC_SUBST([CRYPTOPP_GF2N_FLAG], [$CXXFLAGS]) + AC_DEFINE([CRYPTOPP_ARM_PMULL_AVAILABLE], [1], [Enable ARMv8 PMULL]) + else + AC_DEFINE([CRYPTOPP_DISABLE_ARM_PMULL], [1], [Disable ARMv8 PMULL]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_ARM_PMULL" + fi + + CXXFLAGS="-march=armv8-a+crypto" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (SHA1)]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_arm_sha1.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_SHA_FLAG], [$CXXFLAGS]) + AC_DEFINE([CRYPTOPP_ARM_SHA1_AVAILABLE], [1], [Enable ARMv8 SHA1]) + else + AC_DEFINE([CRYPTOPP_DISABLE_ARM_SHA], [1], [Disable ARMv8 SHA1]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_ARM_SHA" + fi + + CXXFLAGS="-march=armv8-a+crypto" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (SHA256)]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_arm_sha256.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_SHA_FLAG], [$CXXFLAGS]) + AC_DEFINE([CRYPTOPP_ARM_SHA256_AVAILABLE], [256], [Enable ARMv8 SHA256]) + else + AC_DEFINE([CRYPTOPP_DISABLE_ARM_SHA], [256], [Disable ARMv8 SHA256]) + AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_ARM_SHA" + fi + + CXXFLAGS="-march=armv8.3-a+sha3" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (SHA512)]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_arm_sha3.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_SHA512_FLAG], [$CXXFLAGS]) + AC_DEFINE([CRYPTOPP_ARM_SHA512_AVAILABLE], [1], [Enable ARMv8 SHA512]) + #else + #AC_DEFINE([CRYPTOPP_DISABLE_ARM_SHA512], [1], [Disable ARMv8 SHA512]) + #AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_ARM_SHA512" + fi + + CXXFLAGS="-march=armv8.3-a+sha3" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (SHA3)]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_arm_sha3.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_SHA3_FLAG], [$CXXFLAGS]) + AC_DEFINE([CRYPTOPP_ARM_SHA3_AVAILABLE], [1], [Enable ARMv8 SHA3]) + #else + #AC_DEFINE([CRYPTOPP_DISABLE_ARM_SHA3], [1], [Disable ARMv8 SHA3]) + #AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_ARM_SHA3" + fi + + CXXFLAGS="-march=armv8.3-a+sm4" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (SM3)]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_arm_sm3.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_SM3_FLAG], [$CXXFLAGS]) + AC_DEFINE([CRYPTOPP_ARM_SM3_AVAILABLE], [1], [Enable ARMv8 SM3]) + #else + #AC_DEFINE([CRYPTOPP_DISABLE_ARM_SM3], [1], [Disable ARMv8 SM3]) + #AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_ARM_SM3" + fi + + CXXFLAGS="-march=armv8.3-a+sm4" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (SM4)]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_arm_sm4.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_SM4_FLAG], [$CXXFLAGS]) + AC_DEFINE([CRYPTOPP_ARM_SM4_AVAILABLE], [1], [Enable ARMv8 SM4]) + #else + #AC_DEFINE([CRYPTOPP_DISABLE_ARM_SM4], [1], [Disable ARMv8 SM4]) + #AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_ARM_SM4" + fi + + CXXFLAGS="-march=armv8.3-a+rng" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([CRYPTOPP_ARM_RNG_FLAG], [$CXXFLAGS]) + AC_DEFINE([CRYPTOPP_ARM_RNG_AVAILABLE], [1], [Enable ARMv8 RNG]) + #else + #AC_DEFINE([CRYPTOPP_DISABLE_ARM_RNG], [1], [Disable ARMv8 RNG]) + #AM_CXXFLAGS="$AM_CXXFLAGS -DCRYPTOPP_DISABLE_ARM_RNG" + fi + + ## Restore CXXFLAGS + CXXFLAGS="$SAVED_CXXFLAGS" +fi + +############################################################################# +## IBC XL C/C++ compiler, applies to IA-32 and PPC + +if test "$IS_XLC_COMPILER" != "0"; then + + ## Save CXXFLAGS + SAVED_CXXFLAGS="$CXXFLAGS" + + ## -qrtti must be present for some xlC compilers + HAS_RTTI=`echo $CPPFLAGS $CXXFLAGS | $EGREP -i -c '\-qrtti'` + if test "$HAS_RTTI" = "0"; then + + CXXFLAGS="-qrtti" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_CXXFLAGS="$AM_CXXFLAGS $CXXFLAGS" + fi + fi + + ## -qpic must be present for some xlC compilers + HAS_PIC=`echo $CPPFLAGS $CXXFLAGS | $GREP -i -c '\-qpic'` + if test "$HAS_PIC" = "0"; then + + CXXFLAGS="-qpic" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_CXXFLAGS="$AM_CXXFLAGS $CXXFLAGS" + fi + fi + + # Promotes optimizations + CXXFLAGS="-qmaxmem=-1" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_CXXFLAGS="$AM_CXXFLAGS $CXXFLAGS" + fi + + # Promotes optimizations + CXXFLAGS="-qthreaded" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_CXXFLAGS="$AM_CXXFLAGS $CXXFLAGS" + fi + + if test "$IS_DEBUG" != "0"; then + + # Finds alias violations + CXXFLAGS="-qalias=noansi" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_CXXFLAGS="$AM_CXXFLAGS $CXXFLAGS" + fi + fi + + ## Restore CXXFLAGS + CXXFLAGS="$SAVED_CXXFLAGS" +fi + +############################################################################# +# More stupid LLVM games. Clang pretending to be three different compilers. +# https://lists.tetaneutral.net/pipermail/cfarm-users/2018-July/000331.html + +if test "$IS_XLC_COMPILER" != "0"; then + + ## Save CXXFLAGS + SAVED_CXXFLAGS="$CXXFLAGS" + + CXXFLAGS="-qxlcompatmacros" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_CXXFLAGS="$AM_CXXFLAGS $CXXFLAGS" + fi + + ## Restore CXXFLAGS + CXXFLAGS="$SAVED_CXXFLAGS" + +fi + +############################################################################# +## PowerPC and PowerPC-64 + +if test "$IS_PPC" != "0"; then + + ## Save CXXFLAGS + SAVED_CXXFLAGS="$CXXFLAGS" + + # XLC requires -qaltivec in addition to Arch or CPU option + if test "$IS_XLC_COMPILER" = "1"; then + ALTIVEC_FLAG="-qaltivec" + POWER4_FLAG="-qarch=pwr4 -qaltivec" + POWER5_FLAG="-qarch=pwr5 -qaltivec" + POWER6_FLAG="-qarch=pwr6 -qaltivec" + POWER7_VSX_FLAG="-qarch=pwr7 -qvsx -qaltivec" + POWER7_PWR_FLAG="-qarch=pwr7 -qaltivec" + POWER8_FLAG="-qarch=pwr8 -qaltivec" + POWER9_FLAG="-qarch=pwr9 -qaltivec" + else + ALTIVEC_FLAG="-maltivec" + POWER7_VSX_FLAG="-mcpu=power7 -mvsx" + POWER7_PWR_FLAG="-mcpu=power7" + POWER8_FLAG="-mcpu=power8" + POWER9_FLAG="-mcpu=power9" + fi + + ##### Altivec ##### + + CXXFLAGS="$ALTIVEC_FLAG" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (Altivec)]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_ppc_altivec.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + # Assume success, unset on failure + if test "$retval" != "0"; then + AC_SUBST([ALTIVEC_FLAG],[""]) + fi + + # Figure out what is needed for Altivec + if test "$IS_XLC_COMPILER" = "1"; then + + CXXFLAGS="$POWER4_FLAG" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (Altivec)]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_ppc_altivec.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([ALTIVEC_FLAG],[$POWER4_FLAG]) + else + CXXFLAGS="$POWER5_FLAG" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (Altivec)]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_ppc_altivec.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([ALTIVEC_FLAG],[$POWER5_FLAG]) + else + CXXFLAGS="$POWER6_FLAG" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (Altivec)]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_ppc_altivec.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([ALTIVEC_FLAG],[$POWER6_FLAG]) + else + AC_SUBST([ALTIVEC_FLAG],[""]) + fi # POWER6_FLAG + fi # POWER5_FLAG + fi # POWER4_FLAG + fi # XLC Compiler + + ##### Power7 ##### + + CXXFLAGS="$POWER7_VSX_FLAG" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (Power7)]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_ppc_power7.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + # Figure out what is needed for Power7 + if test "$retval" = "0"; then + AC_SUBST([POWER7_FLAG],[$POWER7_VSX_FLAG]) + else + CXXFLAGS="$POWER7_PWR_FLAG" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (Power7)]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_ppc_power7.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_SUBST([POWER7_FLAG],[$POWER7_PWR_FLAG]) + else + AC_SUBST([POWER7_FLAG],[""]) + fi # POWER7_PWR_FLAG + fi # POWER7_VSX_FLAG + + ##### Power8 ##### + + CXXFLAGS="$POWER8_FLAG" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (Power8)]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_ppc_power8.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" != "0"; then + AC_SUBST([POWER8_FLAG],[""]) + fi + + ##### Power9 ##### + + CXXFLAGS="$POWER9_FLAG" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (Power9)]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_ppc_power9.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" != "0"; then + AC_SUBST([POWER9_FLAG],[""]) + fi + + # Power9 and DARN random number generator + if test x"$POWER9_FLAG" != "x"; then + AC_SUBST([CRYPTOPP_POWER9_FLAG], [$POWER9_FLAG]) + AC_SUBST([CRYPTOPP_DARN_FLAG], [$POWER9_FLAG]) + else + AC_DEFINE([CRYPTOPP_DISABLE_POWER9], [1], [Disable Power9]) + fi + + ##### Fixups ##### + + ## Power8 and in-core crypto. + if test x"$POWER8_FLAG" != "x"; then + AC_SUBST([CRYPTOPP_POWER8_FLAG], [$POWER8_FLAG]) + AC_SUBST([CRYPTOPP_BLAKE2B_FLAG], [$POWER8_FLAG]) + AC_SUBST([CRYPTOPP_CRC_FLAG], [$POWER8_FLAG]) + AC_SUBST([CRYPTOPP_AES_FLAG], [$POWER8_FLAG]) + AC_SUBST([CRYPTOPP_GCM_FLAG], [$POWER8_FLAG]) + AC_SUBST([CRYPTOPP_GF2N_FLAG], [$POWER8_FLAG]) + AC_SUBST([CRYPTOPP_SHA_FLAG], [$POWER8_FLAG]) + AC_SUBST([CRYPTOPP_SIMON128_FLAG], [$POWER8_FLAG]) + AC_SUBST([CRYPTOPP_SPECK128_FLAG], [$POWER8_FLAG]) + AC_DEFINE([CRYPTOPP_POWER8_CRC_AVAILABLE], [1], [Enable Power8 CRC]) + AC_DEFINE([CRYPTOPP_POWER8_AES_AVAILABLE], [1], [Enable Power8 AES]) + AC_DEFINE([CRYPTOPP_POWER8_PMULL_AVAILABLE], [1], [Enable Power8 PMULL]) + AC_DEFINE([CRYPTOPP_POWER8_SHA_AVAILABLE], [1], [Enable Power8 SHA]) + else + AC_DEFINE([CRYPTOPP_DISABLE_POWER8], [1], [Disable Power8]) + fi + + # Power7 and VSX + if test x"$POWER7_FLAG" != "x"; then + AC_SUBST([CRYPTOPP_POWER7_FLAG], [$POWER7_FLAG]) + AC_DEFINE([CRYPTOPP_POWER7_AVAILABLE], [1], [Enable Power7]) + else + AC_DEFINE([CRYPTOPP_DISABLE_POWER7], [1], [Disable Power7]) + fi + + # Plain old Altivec + if test x"$ALTIVEC_FLAG" != "x"; then + AC_SUBST([CRYPTOPP_ALTIVEC_FLAG], [$ALTIVEC_FLAG]) + AC_SUBST([CRYPTOPP_BLAKE2S_FLAG], [$ALTIVEC_FLAG]) + AC_SUBST([CRYPTOPP_CHACHA_FLAG], [$ALTIVEC_FLAG]) + AC_DEFINE([CRYPTOPP_ALTIVEC_AVAILABLE], [1], [Enable Altivec]) + else + AC_DEFINE([CRYPTOPP_DISABLE_ALTIVEC], [1], [Disable Altivec]) + fi + + # Drop to Altivec if higher Power is not available + if test x"$ALTIVEC_FLAG" != "x"; then + if test x"$CRYPTOPP_GCM_FLAG" = "x"; then + AC_SUBST([CRYPTOPP_GCM_FLAG], [$ALTIVEC_FLAG]) + fi + fi + + # Now set a disable flag + if test x"$ALTIVEC_FLAG" = "x"; then + AM_CXXFLAGS="-DCRYPTOPP_DISABLE_ALTIVEC $AM_CXXFLAGS" + elif test x"$POWER7_FLAG" = "x"; then + AM_CXXFLAGS="-DCRYPTOPP_DISABLE_POWER7 $AM_CXXFLAGS" + elif test x"$POWER8_FLAG" = "x"; then + AM_CXXFLAGS="-DCRYPTOPP_DISABLE_POWER8 $AM_CXXFLAGS" + elif test x"$POWER9_FLAG" = "x"; then + AM_CXXFLAGS="-DCRYPTOPP_DISABLE_POWER9 $AM_CXXFLAGS" + fi + + ## Restore CXXFLAGS + CXXFLAGS="$SAVED_CXXFLAGS" +fi + +############################################################################# +## PART 5 PART 5 PART 5 PART 5 PART 5 PART 5 PART 5 PART 5 +## ========================================================================== +## C++ feature tests, like C++11, alignof and alignas +############################################################################# + +############################################################################# +## Newlib and _XOPEN_SOURCE + +if true; then + + ## Save CXXFLAGS + SAVED_CXXFLAGS="$CXXFLAGS" + + ## This test may need to be changed if the Newlib folks provide directions. + ## Also see http://www.sourceware.org/ml/newlib/2017/msg01095.html. + + AC_MSG_CHECKING([whether runtime library is Newlib]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_newlib.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + + CXXFLAGS="-D_XOPEN_SOURCE=600" + AC_MSG_CHECKING([if runtime library supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_DEFINE([_XOPEN_SOURCE], [600], [Enable _XOPEN_SOURCE]) + AM_CXXFLAGS="$AM_CXXFLAGS $CXXFLAGS" + fi + fi + + ## Restore CXXFLAGS + CXXFLAGS="$SAVED_CXXFLAGS" +fi + +############################################################################# +## libstdc++ and _GLIBCXX_DEBUG +if test "$IS_DEBUG" = "1"; then + + ## Save CXXFLAGS + SAVED_CXXFLAGS="$CXXFLAGS" + + AC_MSG_CHECKING([whether runtime library is libstdc++]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_glibc.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + + CXXFLAGS="-D_GLIBCXX_DEBUG" + AC_MSG_CHECKING([if runtime library supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_CXXFLAGS="$AM_CXXFLAGS $CXXFLAGS" + fi + fi + + ## Restore CXXFLAGS + CXXFLAGS="$SAVED_CXXFLAGS" +fi + +############################################################################# +## Now test C++ features + +#AH_HEADER= +#AC_CONFIG_COMMANDS_PRE( +# [m4_ifndef([AH_HEADER], [AC_CONFIG_HEADERS([config_cxx.h])]) +#]) + +############################################################################# + +if true; then + + ## Save CXXFLAGS + SAVED_CXXFLAGS="$CXXFLAGS" + + AC_MSG_CHECKING([whether runtime library is C++11]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_cxx11.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_DEFINE([CRYPTOPP_CXX11], [1], [C++11 is available]) + fi + + ## Restore CXXFLAGS + CXXFLAGS="$SAVED_CXXFLAGS" +fi + +if true; then + + ## Save CXXFLAGS + SAVED_CXXFLAGS="$CXXFLAGS" + + AC_MSG_CHECKING([whether runtime library is C++17]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([`cat TestPrograms/test_cxx17.cxx`])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AC_DEFINE([CRYPTOPP_CXX17], [1], [C++17 is available]) + fi + + ## Restore CXXFLAGS + CXXFLAGS="$SAVED_CXXFLAGS" +fi + +############################################################################# +## PART 6 PART 6 PART 6 PART 6 PART 6 PART 6 PART 6 PART 6 +## ========================================================================== +## Misc feature and options +############################################################################# + +############################################################################# +## Add -pipe for non-IoT gadgets to speedup compiles. We use 2GB RAM as +## threshold. Anything with less than 2GB will not use -pipe. + +# Unix, Linux and family +MEM_SIZE=`$GREP "MemTotal" /proc/meminfo 2>/dev/null | $AWK '{print int($2/1024/1024); exit;}'` + +# Darwin +if test "$IS_APPLE_OS" != "0"; then + MEM_SIZE=`sysctl -a 2>&1 | $GREP "hw.memsize" 2>/dev/null | $AWK '{print int($3/1024/1024); exit;}'` +fi + +# Solaris +if test "$IS_SUN_OS" != "0"; then + MEM_SIZE=`prtconf 2>/dev/null | $GREP "Memory" | $AWK '{print int($3/1024); exit;}'` +fi + +# AIX +if test "$IS_AIX_OS" != "0"; then + MEM_SIZE=`prtconf -m 2>/dev/null | $GREP "MB" | $AWK '{print int($3/1024); exit;}'` +fi + +if test "$MEM_SIZE" -ge "2"; then + + ## Save CXXFLAGS + SAVED_CXXFLAGS="$CXXFLAGS" + + CXXFLAGS="-pipe" + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) + XXX_COMPILE_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_CXXFLAGS="$AM_CXXFLAGS $CXXFLAGS" + fi + + ## Restore CXXFLAGS + CXXFLAGS="$SAVED_CXXFLAGS" +fi + +############################################################################# +## Dead code stripping for linkers. Compilers are towards the head of script. + +if true; then + + ## Save FLAGS + SAVED_LDFLAGS="$LDFLAGS" + + # OS X uses -Wl,-dead_strip + LDFLAGS="-Wl,-dead_strip" + AC_MSG_CHECKING([if $LDNAME supports $LDFLAGS]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_LDFLAGS="$AM_LDFLAGS $LDFLAGS" + fi + + # Linux uses --gc-sections + LDFLAGS="-Wl,--gc-sections" + AC_MSG_CHECKING([if $LDNAME supports $LDFLAGS]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_LDFLAGS="$AM_LDFLAGS $LDFLAGS" + fi + + # Solaris uses -z discard-unused + # https://docs.oracle.com/cd/E26502_01/html/E26507/glmth.html + LDFLAGS="-Wl,-z,discard-unused=sections" + AC_MSG_CHECKING([if $LDNAME supports $LDFLAGS]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_LDFLAGS="$AM_LDFLAGS $LDFLAGS" + fi + + # Solaris uses -z discard-unused + # https://docs.oracle.com/cd/E26502_01/html/E26507/glmth.html + LDFLAGS="-Wl,-z,discard-unused=dependencies" + AC_MSG_CHECKING([if $LDNAME supports $LDFLAGS]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_LDFLAGS="$AM_LDFLAGS $LDFLAGS" + fi + + ## Restore FLAGS + LDFLAGS="$SAVED_LDFLAGS" +fi + +############################################################################# +## Solaris, map file and libraries + +if test "$IS_SUN_OS" != "0"; then + + ## Save LDFLAGS + SAVED_LDFLAGS="$LDFLAGS" + + ## IA-32 gets a Mapfile for capabilities. Due to libtool stripping + ## -M arguments, we need to escape it with -XCClinker in AM_LDFLAGS. + if test "$IS_IA32" != "0"; then + LDFLAGS="-Mcryptopp.mapfile" + AC_MSG_CHECKING([if $LDNAME supports -Mcryptopp.mapfile]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_LDFLAGS="$AM_LDFLAGS -XCClinker -Mcryptopp.mapfile" + fi + fi + + # No longer needed + LDFLAGS="-lnsl" + AC_MSG_CHECKING([if $LDNAME supports $LDFLAGS]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_LDFLAGS="$AM_LDFLAGS $LDFLAGS" + fi + + # No longer needed + LDFLAGS="-lsocket" + AC_MSG_CHECKING([if $LDNAME supports $LDFLAGS]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_LDFLAGS="$AM_LDFLAGS $LDFLAGS" + fi + + ## Restore LDFLAGS + LDFLAGS="$SAVED_LDFLAGS" +fi + +############################################################################# +## Add --build-id to linker for debug symbols. +## https://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html + +if true; then + + SAVED_LDFLAGS="$LDFLAGS" + LDFLAGS="-Wl,--build-id" + + AC_MSG_CHECKING([if $LDNAME supports $LDFLAGS]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_LDFLAGS="$AM_LDFLAGS $LDFLAGS" + fi + + LDFLAGS="$SAVED_LDFLAGS" +fi + +############################################################################# +## Demangle output names if possible for friendlier err messages + +if true; then + + SAVED_LDFLAGS="$LDFLAGS" + LDFLAGS="-Wl,--demangle" + + AC_MSG_CHECKING([if $LDNAME supports $LDFLAGS]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_LDFLAGS="$AM_LDFLAGS $LDFLAGS" + fi + + LDFLAGS="$SAVED_LDFLAGS" +fi + +############################################################################# +## MinGW libraries +## Automake does not follow Make conventions and use AM_LDLIBS. Instead +## it stuffs libraries in the flags which messes up pkg-config *.pc files. + +if test "$IS_MINGW_OS" = "1"; then + + SAVED_LDFLAGS="$LDFLAGS" + + LDFLAGS="-lws2_32" + AC_MSG_CHECKING([if $LDNAME supports $LDFLAGS]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_LDFLAGS="$AM_LDFLAGS $LDFLAGS" + fi + + ## Restore LDFLAGS + LDFLAGS="$SAVED_LDFLAGS" +fi + +############################################################################# +## OpenMP libraries +## Automake does not follow Make conventions and use AM_LDLIBS. Instead +## it stuffs libraries in the flags which messes up pkg-config *.pc files. + +if true; then + + COUNT1=`echo $CXXFLAGS | $EGREP -c '\-fopenmp'` + COUNT2=`echo $LDFLAGS | $EGREP -c '\-lgomp'` + if test "$COUNT1" != "0" && test "$COUNT2" = "0"; then + + SAVED_LDFLAGS="$LDFLAGS" + + LDFLAGS="-lgomp" + AC_MSG_CHECKING([if $LDNAME supports $LDFLAGS]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_LDFLAGS="$AM_LDFLAGS $LDFLAGS" + fi + + LDFLAGS="$SAVED_LDFLAGS" + fi +fi + +############################################################################# +## Add -Wl,--exclude-libs,ALL for GNU linker to stop us from re-exporting +## symbols in other libraries. This keeps our ELF section header smaller. + +if test "$enable_shared" = "yes"; then + + SAVED_LDFLAGS="$LDFLAGS" + LDFLAGS="-Wl,--exclude-libs,ALL" + + AC_MSG_CHECKING([if $LDNAME supports $LDFLAGS]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_LDFLAGS="$AM_LDFLAGS $LDFLAGS" + fi + + LDFLAGS="$SAVED_LDFLAGS" +fi + +############################################################################# +## Add -Wl,--as-needed for linker to avoid linking unneeded libraries. + +if true; then + + SAVED_LDFLAGS="$LDFLAGS" + LDFLAGS="-Wl,--as-needed" + + AC_MSG_CHECKING([if $LDNAME supports $LDFLAGS]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_LDFLAGS="$AM_LDFLAGS $LDFLAGS" + fi + + LDFLAGS="$SAVED_LDFLAGS" +fi + +############################################################################# +## Android cpu-features library + +if test "$IS_ANDROID_OS" != "0"; then + + # ac_srcdir does not work. Autotools blows... + + THIS_FILE="$ANDROID_NDK_ROOT/sources/android/cpufeatures/cpu-features.h" + AC_CHECK_FILE([$THIS_FILE], + [cp "$THIS_FILE" "./"] + ) + + THIS_FILE="$ANDROID_NDK_ROOT/sources/android/cpufeatures/cpu-features.c" + AC_CHECK_FILE([$THIS_FILE], + [cp "$THIS_FILE" "./"] + ) + + # And set the flag so Makefile adds the recipes + THIS_FILE="./cpu-features.c" + AC_CHECK_FILE([$THIS_FILE], + [AM_CONDITIONAL([ANDROID_CPU_FEATURES], [true])], + [AM_CONDITIONAL([ANDROID_CPU_FEATURES], [false])] + ) +else + AM_CONDITIONAL([ANDROID_CPU_FEATURES], [false]) +fi + +############################################################################# +## Miscellaneous items + +## Fix CCAS and CCASFLAGS +## Also see https://stackoverflow.com/q/51575580/608639 +AC_SUBST([CCAS], [$CXX]) +AC_SUBST([CCASFLAGS], ["$AM_CXXFLAGS $CXXFLAGS"]) + +## Without this 'make' uses our GNUmakefile, and not Makefile +AC_CONFIG_COMMANDS_PRE([rm -f GNUmakefile 2>/dev/null]) +AC_CONFIG_COMMANDS_PRE([rm -f GNUmakefile-cross 2>/dev/null]) + +## Write the Automake flags we set +AC_SUBST([AM_CXXFLAGS]) +AC_SUBST([AM_LDFLAGS]) + +## Write the output artifacts +AC_OUTPUT + +## Automake bug workaround. If libcryptopp_la_SOURCES is an empty list, Automake assumes +## C source files and drive link through the C compiler. We provide the empty adhoc.cpp +## to get things back on course, so adhoc.cpp must always be copied. + +AC_CONFIG_COMMANDS_POST([cp adhoc.cpp.proto adhoc.cpp]) + +############################################################################# +## Print a summary of information + +echo "" +echo "***********************************************************************" + +echo "Auto-configuration complete. A summary of options are below. If" +echo "something looks wrong then please modify config.h and please report" +echo "it at http://github.com/noloader/cryptopp-autotools." +echo "" + +echo " Build triplet: $build" +echo " Compiler target: $COMPILER_TARGET" +echo "Compiler version: $COMPILER_VERSION" +echo "" + +echo "Static library: $enable_static" +echo "Shared library: $enable_shared" +echo "" + +if test "$IS_ARM32" != "0" || test "$IS_ARMV8" != "0"; then + if test x"$CRYPTOPP_ARM_NEON_HEADER" != "x"; then + echo "CRYPTOPP_ARM_NEON_HEADER: $CRYPTOPP_ARM_NEON_HEADER" + fi + if test x"$CRYPTOPP_ARM_ACLE_HEADER" != "x"; then + echo "CRYPTOPP_ARM_ACLE_HEADER: $CRYPTOPP_ARM_ACLE_HEADER" + fi + echo "" +fi + +if test x"$CRYPTOPP_SSE2_FLAG" != "x"; then + echo "CRYPTOPP_SSE2_FLAG: $CRYPTOPP_SSE2_FLAG" +fi +if test x"$CRYPTOPP_NEON_FLAG" != "x"; then + echo "CRYPTOPP_NEON_FLAG: $CRYPTOPP_NEON_FLAG" +fi +if test x"$CRYPTOPP_ALTIVEC_FLAG" != "x"; then + echo "CRYPTOPP_ALTIVEC_FLAG: $CRYPTOPP_ALTIVEC_FLAG" +fi +if test x"$CRYPTOPP_POWER7_FLAG" != "x"; then + echo "CRYPTOPP_POWER7_FLAG: $CRYPTOPP_POWER7_FLAG" +fi +if test x"$CRYPTOPP_POWER8_FLAG" != "x"; then + echo "CRYPTOPP_POWER8_FLAG: $CRYPTOPP_POWER8_FLAG" +fi +if test x"$CRYPTOPP_POWER9_FLAG" != "x"; then + echo "CRYPTOPP_POWER9_FLAG: $CRYPTOPP_POWER9_FLAG" +fi +if test x"$CRYPTOPP_ARIA_FLAG" != "x"; then + echo "CRYPTOPP_ARIA_FLAG: $CRYPTOPP_ARIA_FLAG" +fi +if test x"$CRYPTOPP_BLAKE2S_FLAG" != "x"; then + echo "CRYPTOPP_BLAKE2S_FLAG: $CRYPTOPP_BLAKE2S_FLAG" +fi +if test x"$CRYPTOPP_BLAKE2B_FLAG" != "x"; then + echo "CRYPTOPP_BLAKE2B_FLAG: $CRYPTOPP_BLAKE2B_FLAG" +fi +if test x"$CRYPTOPP_CHACHA_FLAG" != "x"; then + echo "CRYPTOPP_CHACHA_FLAG: $CRYPTOPP_CHACHA_FLAG" +fi +if test x"$CRYPTOPP_CHACHA_AVX2_FLAG" != "x"; then + echo "CRYPTOPP_CHACHA_AVX2_FLAG: $CRYPTOPP_CHACHA_AVX2_FLAG" +fi +if test x"$CRYPTOPP_CHAM_FLAG" != "x"; then + echo "CRYPTOPP_CHAM_FLAG: $CRYPTOPP_CHAM_FLAG" +fi +if test x"$CRYPTOPP_CRC_FLAG" != "x"; then + echo "CRYPTOPP_CRC_FLAG: $CRYPTOPP_CRC_FLAG" +fi +if test x"$CRYPTOPP_DONNA_FLAG" != "x"; then + echo "CRYPTOPP_DONNA_FLAG: $CRYPTOPP_DONNA_FLAG" +fi +if test x"$CRYPTOPP_LEA_FLAG" != "x"; then + echo "CRYPTOPP_LEA_FLAG: $CRYPTOPP_LEA_FLAG" +fi +if test x"$CRYPTOPP_KECCAK_FLAG" != "x"; then + echo "CRYPTOPP_KECCAK_FLAG: $CRYPTOPP_KECCAK_FLAG" +fi +if test x"$CRYPTOPP_GCM_FLAG" != "x"; then + echo "CRYPTOPP_GCM_FLAG: $CRYPTOPP_GCM_FLAG" +fi +if test x"$CRYPTOPP_GF2N_FLAG" != "x"; then + echo "CRYPTOPP_GF2N_FLAG: $CRYPTOPP_GF2N_FLAG" +fi +if test x"$CRYPTOPP_AES_FLAG" != "x"; then + echo "CRYPTOPP_AES_FLAG: $CRYPTOPP_AES_FLAG" +fi +if test x"$CRYPTOPP_SHA_FLAG" != "x"; then + echo "CRYPTOPP_SHA_FLAG: $CRYPTOPP_SHA_FLAG" +fi +if test x"$CRYPTOPP_SIMON128_FLAG" != "x"; then + echo "CRYPTOPP_SIMON128_FLAG: $CRYPTOPP_SIMON128_FLAG" +fi +if test x"$CRYPTOPP_SPECK128_FLAG" != "x"; then + echo "CRYPTOPP_SPECK128_FLAG: $CRYPTOPP_SPECK128_FLAG" +fi +if test x"$CRYPTOPP_SM4_FLAG" != "x"; then + echo "CRYPTOPP_SM4_FLAG: $CRYPTOPP_SM4_FLAG" +fi +if test x"$CRYPTOPGAMS_ARMV4_FLAG" != "x"; then + echo "CRYPTOPGAMS_ARMV4_FLAG: $CRYPTOPGAMS_ARMV4_FLAG" +fi + +echo "" +echo "Automake flags (can be overridden by user flags):" +echo "AM_CXXFLAGS: $AM_CXXFLAGS" +echo "AM_LDFLAGS: $AM_LDFLAGS" + +echo "" +echo "User flags (overrides Automake flags on conflict):" +echo "CXXFLAGS: $CXXFLAGS" +echo "LDFLAGS: $LDFLAGS" + +OPT_NDEBUG=`echo $CPPFLAGS $CXXFLAGS | $EGREP -c '\-DNDEBUG'` +if test "$OPT_NDEBUG" = "0"; then + echo "" + echo "CPPFLAGS does not include -DNDEBUG. You should consider building" + echo "with NDEBUG defined so an assert does not inadvertently crash your" + echo "program and egress sensitive data to the filesystem or an error" + echo "reporting service like AppPort, Windows Error Reporting, Crash" + echo "Reporter, Test Flight, etc." +fi + +OPT_SYM=`echo $CPPFLAGS $CXXFLAGS | $EGREP -c '\-g'` +if test "$OPT_SYM" = "0"; then + echo "" + echo "CPPFLAGS does not include -g. You should consider building with -g" + echo "to add debug symbols in case you have to analyze a crash." +fi + +OPT_O3=`echo $CXXFLAGS | $EGREP -c '\-O3|\-O4|\-O5|\-xO3|\-xO4|\-xO5|\-Os|\-Ofast'` +if test "$OPT_O3" = "0"; then + echo "" + echo "CXXFLAGS does not include -O3. You should consider building at -O3" + echo "to engage compiler vectorizations and enhance performance." +fi + +echo "***********************************************************************" +echo "" diff --git a/package/lean/libcryptopp/src/cryptopp-config.cmake b/package/lean/libcryptopp/src/cryptopp-config.cmake deleted file mode 100644 index b739501a5f..0000000000 --- a/package/lean/libcryptopp/src/cryptopp-config.cmake +++ /dev/null @@ -1 +0,0 @@ -include("${CMAKE_CURRENT_LIST_DIR}/cryptopp-targets.cmake") diff --git a/package/lean/libcryptopp/src/libcryptopp.pc.in b/package/lean/libcryptopp/src/libcryptopp.pc.in new file mode 100644 index 0000000000..143a5d4ef0 --- /dev/null +++ b/package/lean/libcryptopp/src/libcryptopp.pc.in @@ -0,0 +1,31 @@ +## libcryptopp.pc.in - Autotools package configuration file for Crypto++. +## written and placed in public domain by Jeffrey Walton. +## based on Debian package configuration by László Böszörményi. +## + +## libdir=@libdir@ is not working as expected for Fedora, Solaris, +## and other 64-bit OSes that use library directories like /lib64, +## /usr/lib64, /lib/amd64 and friends. Also see: +## * https://stackoverflow.com/q/47124066/608639 +## * https://stackoverflow.com/q/46847939/608639 and +## * https://bugzilla.redhat.com/show_bug.cgi?id=1510073. + +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: @PACKAGE_NAME@ +Description: free C++ class library of cryptographic schemes +Authors: originally written by Wei Dai +Maintainers: the Crypto++ community +URL: @PACKAGE_URL@ +Version: @PACKAGE_VERSION@ +Bug-Report: @PACKAGE_BUGREPORT@ +Requires: + +## These flags are mostly broken. We cannot record user choices, +## and then have user programs use the same flags later. +## https://lists.freedesktop.org/archives/pkg-config/2017-November/001087.html +Cflags: -I${includedir} +Libs: -L${libdir} -lcryptopp From 150e4f81a5ce249d8097e41679cd94e3aaa3b023 Mon Sep 17 00:00:00 2001 From: AmadeusGhost <42570690+AmadeusGhost@users.noreply.github.com> Date: Sun, 8 Nov 2020 11:28:01 +0800 Subject: [PATCH 15/18] ipq40xx: r619ac: enable pcie power supply --- .../files/arch/arm/boot/dts/qcom-ipq4019-r619ac.dts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-r619ac.dts b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-r619ac.dts index de3a80ccde..e40ba58cf8 100644 --- a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-r619ac.dts +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-r619ac.dts @@ -220,7 +220,9 @@ &pcie0 { status = "okay"; - perst-gpio = <&tlmm 4 GPIO_ACTIVE_HIGH>; + pinctrl-0 = <&pcie_pins>; + pinctrl-names = "default"; + perst-gpio = <&tlmm 4 GPIO_ACTIVE_LOW>; wake-gpio = <&tlmm 40 GPIO_ACTIVE_HIGH>; /* Free slot for use */ @@ -244,6 +246,15 @@ }; &tlmm { + pcie_pins: pcie_pinmux { + mux { + pins = "gpio2"; + function = "gpio"; + bias-pull-down; + output-low; + }; + }; + mdio_pins: mdio_pinmux { mux_1 { pins = "gpio6"; From 38ff89a52e179566b4a12e0fe5facf1b3aabf0c8 Mon Sep 17 00:00:00 2001 From: AmadeusGhost <42570690+AmadeusGhost@users.noreply.github.com> Date: Sun, 15 Nov 2020 11:30:05 +0800 Subject: [PATCH 16/18] ipq40xx: wr142ac: refresh device config --- target/linux/ipq40xx/base-files/etc/board.d/02_network | 4 ++-- .../ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-wr142ac.dtsi | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/target/linux/ipq40xx/base-files/etc/board.d/02_network b/target/linux/ipq40xx/base-files/etc/board.d/02_network index 1d93ab84e1..2e9e148f10 100755 --- a/target/linux/ipq40xx/base-files/etc/board.d/02_network +++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network @@ -31,6 +31,8 @@ ipq40xx_setup_interfaces() asus,rt-acrh17|\ asus,rt-ac58u|\ avm,fritzbox-4040|\ + century,wr142ac|\ + century,wr142ac-nand|\ ezviz,cs-w3-wd1200g-eup|\ linksys,ea6350v3|\ linksys,ea8300|\ @@ -95,8 +97,6 @@ ipq40xx_setup_interfaces() ucidef_add_switch "switch0" \ "0t@eth0" "1:lan" "2:lan" "3:lan" "4:lan" "5:lan" ;; - century,wr142ac|\ - century,wr142ac-nand|\ p2w,r619ac|\ zyxel,nbg6617) ucidef_add_switch "switch0" \ diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-wr142ac.dtsi b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-wr142ac.dtsi index 0d1f8afb94..eb7b2fe61a 100644 --- a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-wr142ac.dtsi +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-wr142ac.dtsi @@ -109,7 +109,7 @@ led_power: power { label = "wr142ac:green:power"; - gpios = <&tlmm 40 GPIO_ACTIVE_HIGH>; + gpios = <&tlmm 40 GPIO_ACTIVE_LOW>; }; usb { From 3bb49694e55ac636c1520206db9c6a34b89932ed Mon Sep 17 00:00:00 2001 From: AmadeusGhost <42570690+AmadeusGhost@users.noreply.github.com> Date: Tue, 8 Dec 2020 15:20:39 +0800 Subject: [PATCH 17/18] libcryptopp: update autotools to release 8.3 --- package/lean/libcryptopp/src/Makefile.am | 207 +++++++++++++----- package/lean/libcryptopp/src/configure.ac | 162 ++++++-------- .../lean/libcryptopp/src/libcryptopp.pc.in | 2 +- 3 files changed, 215 insertions(+), 156 deletions(-) diff --git a/package/lean/libcryptopp/src/Makefile.am b/package/lean/libcryptopp/src/Makefile.am index 151166f90a..d5256f9d7c 100644 --- a/package/lean/libcryptopp/src/Makefile.am +++ b/package/lean/libcryptopp/src/Makefile.am @@ -11,12 +11,18 @@ ## sed -e 's|[[:alnum:]]*_simd.cpp ||g' | \ ## sed -e 's|[[:alnum:]]*_sse.cpp ||g' | \ ## sed -e 's|[[:alnum:]]*_avx.cpp ||g' | \ +## sed -e 's|[[:alnum:]]*_armv4.cpp ||g' | \ ## sed -e 's|ppc_power[[:alnum:]]*.cpp ||g' | \ -## fold -w73 -s +## fold -s -w 72 ## ## The command `make sources | sed ... | fold` will create the source file ## list that can be used with `libothers_la_SOURCES` below. ## +## The list of header files can be built with 'make sources', too. +## +## make sources | sed -e 's|[[:alnum:]]*_armv4.h ||g' \ +## fold -s -w 72 +## ## Note: configure.ac deletes GNUmakefile. You can get it back with: ## ## git checkout GNUmakefile @@ -34,6 +40,9 @@ ## TODO: ## +## - Figure out how to include TestPrograms/ in the dist tarball +## TestPrograms/ is unique because it is included in dist tarball but not installed +## ## - Figure out what's going on with DragonFly and dependencies ## @@ -255,8 +264,10 @@ libppc_power7_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_POWER7_FLAG) libppc_power8_la_SOURCES = ppc_power8.cpp libppc_power8_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_POWER8_FLAG) +# Do not use CRYPTOPP_POWER9_FLAG. See https://github.com/weidai11/cryptopp/issues/986 libppc_power9_la_SOURCES = ppc_power9.cpp -libppc_power9_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_POWER9_FLAG) +# libppc_power9_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_POWER9_FLAG) +libppc_power9_la_CXXFLAGS = $(AM_CXXFLAGS) librijndael_simd_la_SOURCES = rijndael_simd.cpp librijndael_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_AES_FLAG) @@ -279,7 +290,7 @@ libsm4_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_SM4_FLAG) libsse_simd_la_SOURCES = sse_simd.cpp libsse_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_SSE2_FLAG) -## ARMv7-a AES by Andy Polyakov +## ARMv7-a AES and SHA by Andy Polyakov ## Also see https://stackoverflow.com/q/51575580/608639 if CRYPTOGAMS_ARM_SOURCES libaes_armv4_la_SOURCES = aes_armv4.S @@ -302,58 +313,59 @@ endif # cpu.cpp, integer.cpp, *_avx.cpp and *_simd.cpp files. It is sorted in # alphabetical order for deterministic builds. -# To build this list, see the head notes and run the command with the -# make and multiple sed commands. - +# To build this list, see the head notes. libothers_la_SOURCES = \ - 3way.cpp adler32.cpp algebra.cpp algparam.cpp allocate.cpp arc4.cpp aria.cpp \ - ariatab.cpp asn.cpp authenc.cpp base32.cpp base64.cpp basecode.cpp \ - bfinit.cpp blake2.cpp blowfish.cpp blumshub.cpp camellia.cpp cast.cpp \ - casts.cpp cbcmac.cpp ccm.cpp chacha.cpp chachapoly.cpp cham.cpp \ - channels.cpp cmac.cpp crc.cpp darn.cpp default.cpp des.cpp dessp.cpp \ - dh.cpp dh2.cpp dll.cpp donna_32.cpp donna_64.cpp dsa.cpp eax.cpp \ - ec2n.cpp eccrypto.cpp ecp.cpp elgamal.cpp emsa2.cpp eprecomp.cpp \ - esign.cpp files.cpp filters.cpp fips140.cpp fipstest.cpp gcm.cpp \ - gf256.cpp gf2_32.cpp gf2n.cpp gfpcrypt.cpp gost.cpp gzip.cpp hc128.cpp \ - hc256.cpp hex.cpp hight.cpp hmac.cpp hrtimer.cpp ida.cpp idea.cpp \ - iterhash.cpp kalyna.cpp kalynatab.cpp keccak.cpp keccak_core.cpp lea.cpp \ - luc.cpp mars.cpp marss.cpp md2.cpp md4.cpp md5.cpp misc.cpp modes.cpp \ - mqueue.cpp mqv.cpp nbtheory.cpp oaep.cpp osrng.cpp padlkrng.cpp \ - panama.cpp pkcspad.cpp poly1305.cpp polynomi.cpp pssr.cpp pubkey.cpp \ - queue.cpp rabbit.cpp rabin.cpp randpool.cpp rc2.cpp rc5.cpp rc6.cpp \ - rdrand.cpp rdtables.cpp rijndael.cpp ripemd.cpp rng.cpp rsa.cpp rw.cpp \ - safer.cpp salsa.cpp scrypt.cpp seal.cpp seed.cpp serpent.cpp sha.cpp \ - sha3.cpp shacal2.cpp shake.cpp shark.cpp sharkbox.cpp simeck.cpp \ - simon.cpp skipjack.cpp sm3.cpp sm4.cpp sosemanuk.cpp speck.cpp \ - square.cpp squaretb.cpp strciphr.cpp tea.cpp tftables.cpp threefish.cpp \ - tiger.cpp tigertab.cpp ttmac.cpp tweetnacl.cpp twofish.cpp vmac.cpp \ - wake.cpp whrlpool.cpp xed25519.cpp xtr.cpp xtrcrypt.cpp xts.cpp \ - zdeflate.cpp zinflate.cpp zlib.cpp + 3way.cpp adler32.cpp algebra.cpp algparam.cpp allocate.cpp arc4.cpp \ + aria.cpp ariatab.cpp asn.cpp authenc.cpp base32.cpp base64.cpp \ + basecode.cpp bfinit.cpp blake2.cpp blowfish.cpp blumshub.cpp \ + camellia.cpp cast.cpp casts.cpp cbcmac.cpp ccm.cpp chacha.cpp \ + chachapoly.cpp cham.cpp channels.cpp cmac.cpp crc.cpp darn.cpp \ + default.cpp des.cpp dessp.cpp dh.cpp dh2.cpp dll.cpp donna_32.cpp \ + donna_64.cpp dsa.cpp eax.cpp ec2n.cpp eccrypto.cpp ecp.cpp elgamal.cpp \ + emsa2.cpp eprecomp.cpp esign.cpp files.cpp filters.cpp fips140.cpp \ + fipstest.cpp gcm.cpp gf256.cpp gf2_32.cpp gf2n.cpp gfpcrypt.cpp \ + gost.cpp gzip.cpp hc128.cpp hc256.cpp hex.cpp hight.cpp hmac.cpp \ + hrtimer.cpp ida.cpp idea.cpp iterhash.cpp kalyna.cpp kalynatab.cpp \ + keccak.cpp keccak_core.cpp lea.cpp luc.cpp mars.cpp marss.cpp md2.cpp \ + md4.cpp md5.cpp misc.cpp modes.cpp mqueue.cpp mqv.cpp nbtheory.cpp \ + oaep.cpp osrng.cpp padlkrng.cpp panama.cpp pkcspad.cpp poly1305.cpp \ + polynomi.cpp pssr.cpp pubkey.cpp queue.cpp rabbit.cpp rabin.cpp \ + randpool.cpp rc2.cpp rc5.cpp rc6.cpp rdrand.cpp rdtables.cpp \ + rijndael.cpp ripemd.cpp rng.cpp rsa.cpp rw.cpp safer.cpp salsa.cpp \ + scrypt.cpp seal.cpp seed.cpp serpent.cpp sha.cpp sha3.cpp shacal2.cpp \ + shake.cpp shark.cpp sharkbox.cpp simeck.cpp simon.cpp skipjack.cpp \ + sm3.cpp sm4.cpp sosemanuk.cpp speck.cpp square.cpp squaretb.cpp \ + strciphr.cpp tea.cpp tftables.cpp threefish.cpp tiger.cpp tigertab.cpp \ + ttmac.cpp tweetnacl.cpp twofish.cpp vmac.cpp wake.cpp whrlpool.cpp \ + xed25519.cpp xtr.cpp xtrcrypt.cpp xts.cpp zdeflate.cpp zinflate.cpp \ + zlib.cpp -# Don't include aes_armv4.h here +# To build this list, see the head notes. pkginclude_HEADERS = \ - 3way.h adler32.h adv_simd.h aes.h algebra.h algparam.h allocate.h \ - arc4.h argnames.h aria.h arm_simd.h asn.h authenc.h base32.h base64.h \ - basecode.h blake2.h blowfish.h blumshub.h camellia.h cast.h cbcmac.h \ - ccm.h chacha.h chachapoly.h cham.h channels.h cmac.h config.h cpu.h \ - crc.h cryptlib.h darn.h default.h des.h dh.h dh2.h dll.h dmac.h donna.h \ - donna_32.h donna_64.h donna_sse.h drbg.h dsa.h eax.h ec2n.h eccrypto.h \ - ecp.h ecpoint.h elgamal.h emsa2.h eprecomp.h esign.h fhmqv.h files.h \ - filters.h fips140.h fltrimpl.h gcm.h gf256.h gf2_32.h gf2n.h gfpcrypt.h \ - gost.h gzip.h hashfwd.h hc128.h hc256.h hex.h hight.h hkdf.h hmac.h \ - hmqv.h hrtimer.h ida.h idea.h integer.h iterhash.h kalyna.h keccak.h \ - lea.h lubyrack.h luc.h mars.h md2.h md4.h md5.h mdc.h mersenne.h misc.h \ - modarith.h modes.h modexppc.h mqueue.h mqv.h naclite.h nbtheory.h nr.h \ - oaep.h oids.h osrng.h ossig.h padlkrng.h panama.h pch.h pkcspad.h \ - poly1305.h polynomi.h ppc_simd.h pssr.h pubkey.h pwdbased.h queue.h \ - rabbit.h rabin.h randpool.h rc2.h rc5.h rc6.h rdrand.h rijndael.h \ - ripemd.h rng.h rsa.h rw.h safer.h salsa.h scrypt.h seal.h secblock.h \ - seckey.h seed.h serpent.h serpentp.h sha.h sha3.h shacal2.h shake.h \ - shark.h simeck.h simon.h simple.h siphash.h skipjack.h sm3.h sm4.h \ - smartptr.h sosemanuk.h speck.h square.h stdcpp.h strciphr.h tea.h \ - threefish.h tiger.h trap.h trunhash.h ttmac.h tweetnacl.h twofish.h \ - vmac.h wake.h whrlpool.h words.h xed25519.h xtr.h xtrcrypt.h xts.h \ - zdeflate.h zinflate.h zlib.h + 3way.h adler32.h adv_simd.h aes.h algebra.h algparam.h allocate.h \ + arc4.h argnames.h aria.h arm_simd.h asn.h authenc.h base32.h base64.h \ + basecode.h blake2.h blowfish.h blumshub.h camellia.h cast.h cbcmac.h \ + ccm.h chacha.h chachapoly.h cham.h channels.h cmac.h config.h \ + config_align.h config_asm.h config_cpu.h config_cxx.h config_dll.h \ + config_int.h config_misc.h config_ns.h config_os.h config_ver.h cpu.h \ + crc.h cryptlib.h darn.h default.h des.h dh.h dh2.h dll.h dmac.h donna.h \ + donna_32.h donna_64.h donna_sse.h drbg.h dsa.h eax.h ec2n.h eccrypto.h \ + ecp.h ecpoint.h elgamal.h emsa2.h eprecomp.h esign.h fhmqv.h files.h \ + filters.h fips140.h fltrimpl.h gcm.h gf256.h gf2_32.h gf2n.h gfpcrypt.h \ + gost.h gzip.h hashfwd.h hc128.h hc256.h hex.h hight.h hkdf.h hmac.h \ + hmqv.h hrtimer.h ida.h idea.h integer.h iterhash.h kalyna.h keccak.h \ + lea.h local.h lubyrack.h luc.h mars.h md2.h md4.h md5.h mdc.h \ + mersenne.h misc.h modarith.h modes.h modexppc.h mqueue.h mqv.h \ + naclite.h nbtheory.h nr.h oaep.h oids.h osrng.h ossig.h padlkrng.h \ + panama.h pch.h pkcspad.h poly1305.h polynomi.h ppc_simd.h pssr.h \ + pubkey.h pwdbased.h queue.h rabbit.h rabin.h randpool.h rc2.h rc5.h \ + rc6.h rdrand.h rijndael.h ripemd.h rng.h rsa.h rw.h safer.h salsa.h \ + scrypt.h seal.h secblock.h secblockfwd.h seckey.h seed.h serpent.h \ + serpentp.h sha.h sha3.h shacal2.h shake.h shark.h simeck.h simon.h \ + simple.h siphash.h skipjack.h sm3.h sm4.h smartptr.h sosemanuk.h \ + speck.h square.h stdcpp.h strciphr.h tea.h threefish.h tiger.h trap.h \ + trunhash.h ttmac.h tweetnacl.h twofish.h vmac.h wake.h whrlpool.h \ + words.h xed25519.h xtr.h xtrcrypt.h xts.h zdeflate.h zinflate.h zlib.h noinst_HEADERS = \ local.h \ @@ -381,9 +393,11 @@ cryptest_LDADD = $(lib_LTLIBRARIES) CLEANFILES = adhoc.cpp -## Copy the TestVectors/ and TestData/ to ${pkgdatadir} +## Copy the TestVectors/ and TestData/ to ${pkgdatadir}. +## TestPrograms/ is included in the tarball but not installed. ## https://www.gnu.org/software/automake/manual/html_node/Data.html +# Create with 'ls TestVectors/*.dat'. These files get installed. testdata_FILES = \ TestData/3desval.dat TestData/fhmqv160.dat TestData/rc2val.dat \ TestData/3wayval.dat TestData/fhmqv256.dat TestData/rc5val.dat \ @@ -411,6 +425,7 @@ testdata_FILES = \ TestData/esig1536.dat TestData/rabi1024.dat TestData/xtrdh171.dat \ TestData/esig2046.dat TestData/rabi2048.dat TestData/xtrdh342.dat +# Create with 'ls TestVectors/*.txt'. These files get installed. testvector_FILES = \ TestVectors/aead.txt TestVectors/rsa_pss.txt \ TestVectors/aes.txt TestVectors/rw.txt \ @@ -451,10 +466,94 @@ testvector_FILES = \ TestVectors/rsa_oaep.txt TestVectors/xchacha.txt \ TestVectors/rsa_pkcs1_1_5.txt TestVectors/xts.txt +# Create with 'ls TestPrograms/test_*.cxx'. These files do not get installed. +# They exist so the feature tests can be run from the configure directory. +testprogs_FILES= \ + TestPrograms/test_32bit.cxx + TestPrograms/test_64bit.cxx + TestPrograms/test_arm_acle_header.cxx + TestPrograms/test_arm_aes.cxx + TestPrograms/test_arm_asimd.cxx + TestPrograms/test_arm_crc.cxx + TestPrograms/test_arm_neon.cxx + TestPrograms/test_arm_neon_header.cxx + TestPrograms/test_arm_pmull.cxx + TestPrograms/test_arm_sha1.cxx + TestPrograms/test_arm_sha256.cxx + TestPrograms/test_arm_sha3.cxx + TestPrograms/test_arm_sha512.cxx + TestPrograms/test_arm_sm3.cxx + TestPrograms/test_arm_sm4.cxx + TestPrograms/test_asm_mixed.cxx + TestPrograms/test_cxx11_alignas.cxx + TestPrograms/test_cxx11_alignof.cxx + TestPrograms/test_cxx11_assert.cxx + TestPrograms/test_cxx11_atomic.cxx + TestPrograms/test_cxx11_auto.cxx + TestPrograms/test_cxx11_constexpr.cxx + TestPrograms/test_cxx11.cxx + TestPrograms/test_cxx11_deletefn.cxx + TestPrograms/test_cxx11_enumtype.cxx + TestPrograms/test_cxx11_initializer.cxx + TestPrograms/test_cxx11_lambda.cxx + TestPrograms/test_cxx11_noexcept.cxx + TestPrograms/test_cxx11_nullptr.cxx + TestPrograms/test_cxx11_staticinit.cxx + TestPrograms/test_cxx11_sync.cxx + TestPrograms/test_cxx11_vartemplates.cxx + TestPrograms/test_cxx14.cxx + TestPrograms/test_cxx17_assert.cxx + TestPrograms/test_cxx17.cxx + TestPrograms/test_cxx17_exceptions.cxx + TestPrograms/test_cxx98_exception.cxx + TestPrograms/test_cxx.cxx + TestPrograms/test_glibc.cxx + TestPrograms/test_newlib.cxx + TestPrograms/test_ppc_aes.cxx + TestPrograms/test_ppc_altivec.cxx + TestPrograms/test_ppc_power7.cxx + TestPrograms/test_ppc_power8.cxx + TestPrograms/test_ppc_power9.cxx + TestPrograms/test_ppc_sha.cxx + TestPrograms/test_ppc_vmull.cxx + TestPrograms/test_pthreads.cxx + TestPrograms/test_x86_aes.cxx + TestPrograms/test_x86_avx2.cxx + TestPrograms/test_x86_avx512.cxx + TestPrograms/test_x86_avx.cxx + TestPrograms/test_x86_clmul.cxx + TestPrograms/test_x86_cpuid.cxx + TestPrograms/test_x86_rdrand.cxx + TestPrograms/test_x86_rdseed.cxx + TestPrograms/test_x86_sha.cxx + TestPrograms/test_x86_sse2.cxx + TestPrograms/test_x86_sse3.cxx + TestPrograms/test_x86_sse41.cxx + TestPrograms/test_x86_sse42.cxx + TestPrograms/test_x86_ssse3.cxx + TestPrograms/test_x86_via_aes.cxx + TestPrograms/test_x86_via_rng.cxx + TestPrograms/test_x86_via_sha.cxx + nobase_dist_pkgdata_DATA = \ $(testdata_FILES) \ $(testvector_FILES) +# Can't seem to get this to work, despite the fiddling attempts. +# https://www.gnu.org/software/automake/manual/html_node/Uniform.html and +# https://www.gnu.org/software/automake/manual/html_node/Program-and-Library-Variables.html +#nobase_noinst_data_DATA = \ +# $(testprogs_FILES) + +# Workaround Automake bug. We can't seem to include the TestProgram/ data +# in the tarball without installation using their Uniform Naming Scheme +# https://www.gnu.org/software/automake/manual/html_node/Uniform.html and +# https://www.gnu.org/software/automake/manual/html_node/Program-and-Library-Variables.html +dist-hook: + chmod -R u+w $(distdir) + cp -r TestPrograms/ $(distdir) + rm -f $(distdir)/TestPrograms/dump2def.cxx + ## Automake bug workaround. If libcryptopp_la_SOURCES is an empty list, Automake assumes ## C source files and drives link through the C compiler. We provide the empty adhoc.cpp ## to get things back on course, so adhoc.cpp must always be copied. @@ -463,7 +562,7 @@ adhoc.cpp: cp adhoc.cpp.proto adhoc.cpp touch adhoc.cpp -## Remove doc directpry if present +## Remove doc directory if present distclean-local: -rm -rf html-docs doxyfile.stamp diff --git a/package/lean/libcryptopp/src/configure.ac b/package/lean/libcryptopp/src/configure.ac index 568f6888c8..9296bf2071 100644 --- a/package/lean/libcryptopp/src/configure.ac +++ b/package/lean/libcryptopp/src/configure.ac @@ -1,6 +1,6 @@ ## configure.ac - Autotools configuration file for Crypto++. ## written and placed in public domain by Jeffrey Walton. -## based on Debian configure.ac by László Böszörményi. +## based on Debian configure.ac by LászlĂł BöszörmĂ©nyi. ## Visit the link below for the original Debian Autotools files @@ -42,6 +42,11 @@ ## LT_INIT bug. There is no Uniform Name like bin_LTPROGRAMS to signal PIC/PIE ## should be used. Autoconf is guessing wrong and not using PIC/PIE. ## +## - Fix Autotools 'make dist' failures. If you run 'make dist' on x86_64, then +## the release tarball only works on x86_64. It is like it is pre-configured +## for only the x86_64 platform, and other platform code paths have been +## thrown away. WTF??? +## ## - Fix Autoconf ignoring our config.h.in. This one looks like it is a problem ## without a solution. Also see https://stackoverflow.com/q/48436715/608639. ## (Gave up after https://github.com/weidai11/cryptopp/commit/c51f0ecbfd21. @@ -822,6 +827,31 @@ if test "$IS_SUN_OS" != "0"; then CXXFLAGS="$SAVED_CXXFLAGS" fi +############################################################################# +## AIX and -qpic=large or -bbigtoc + +if test "$IS_AIX" != "0"; then + + ## Save LDFLAGS + SAVED_LDFLAGS="$LDFLAGS" + + # https://www.ibm.com/developerworks/rational/library/overview-toc-aix/index.html + LDFLAGS="-bbigtoc" + AC_MSG_CHECKING([if $LDNAME supports $LDFLAGS]) + XXX_LINK_IFELSE( + [AC_LANG_SOURCE([[int main() { return 0; }]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no])] + ) + + if test "$retval" = "0"; then + AM_LDFLAGS="$AM_LDFLAGS $LDFLAGS" + fi + + ## Restore LDFLAGS + LDFLAGS="$SAVED_LDFLAGS" +fi + ############################################################################# ## MacPorts GCC using Clang integrated assembler @@ -1954,10 +1984,7 @@ if test "$IS_PPC" != "0"; then # XLC requires -qaltivec in addition to Arch or CPU option if test "$IS_XLC_COMPILER" = "1"; then - ALTIVEC_FLAG="-qaltivec" - POWER4_FLAG="-qarch=pwr4 -qaltivec" - POWER5_FLAG="-qarch=pwr5 -qaltivec" - POWER6_FLAG="-qarch=pwr6 -qaltivec" + ALTIVEC_FLAG="-qarch=auto -qaltivec" POWER7_VSX_FLAG="-qarch=pwr7 -qvsx -qaltivec" POWER7_PWR_FLAG="-qarch=pwr7 -qaltivec" POWER8_FLAG="-qarch=pwr8 -qaltivec" @@ -1973,7 +2000,7 @@ if test "$IS_PPC" != "0"; then ##### Altivec ##### CXXFLAGS="$ALTIVEC_FLAG" - AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (Altivec)]) + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) XXX_LINK_IFELSE( [AC_LANG_SOURCE([`cat TestPrograms/test_ppc_altivec.cxx`])], [AC_MSG_RESULT([yes])], @@ -1985,64 +2012,22 @@ if test "$IS_PPC" != "0"; then AC_SUBST([ALTIVEC_FLAG],[""]) fi - # Figure out what is needed for Altivec - if test "$IS_XLC_COMPILER" = "1"; then - - CXXFLAGS="$POWER4_FLAG" - AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (Altivec)]) - XXX_LINK_IFELSE( - [AC_LANG_SOURCE([`cat TestPrograms/test_ppc_altivec.cxx`])], - [AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no])] - ) - - if test "$retval" = "0"; then - AC_SUBST([ALTIVEC_FLAG],[$POWER4_FLAG]) - else - CXXFLAGS="$POWER5_FLAG" - AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (Altivec)]) - XXX_LINK_IFELSE( - [AC_LANG_SOURCE([`cat TestPrograms/test_ppc_altivec.cxx`])], - [AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no])] - ) - - if test "$retval" = "0"; then - AC_SUBST([ALTIVEC_FLAG],[$POWER5_FLAG]) - else - CXXFLAGS="$POWER6_FLAG" - AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (Altivec)]) - XXX_LINK_IFELSE( - [AC_LANG_SOURCE([`cat TestPrograms/test_ppc_altivec.cxx`])], - [AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no])] - ) - - if test "$retval" = "0"; then - AC_SUBST([ALTIVEC_FLAG],[$POWER6_FLAG]) - else - AC_SUBST([ALTIVEC_FLAG],[""]) - fi # POWER6_FLAG - fi # POWER5_FLAG - fi # POWER4_FLAG - fi # XLC Compiler - - ##### Power7 ##### + ##### POWER7 ##### CXXFLAGS="$POWER7_VSX_FLAG" - AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (Power7)]) + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) XXX_LINK_IFELSE( [AC_LANG_SOURCE([`cat TestPrograms/test_ppc_power7.cxx`])], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])] ) - # Figure out what is needed for Power7 + # Figure out what is needed for POWER7 if test "$retval" = "0"; then AC_SUBST([POWER7_FLAG],[$POWER7_VSX_FLAG]) else CXXFLAGS="$POWER7_PWR_FLAG" - AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (Power7)]) + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) XXX_LINK_IFELSE( [AC_LANG_SOURCE([`cat TestPrograms/test_ppc_power7.cxx`])], [AC_MSG_RESULT([yes])], @@ -2056,10 +2041,10 @@ if test "$IS_PPC" != "0"; then fi # POWER7_PWR_FLAG fi # POWER7_VSX_FLAG - ##### Power8 ##### + ##### POWER8 ##### CXXFLAGS="$POWER8_FLAG" - AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (Power8)]) + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) XXX_LINK_IFELSE( [AC_LANG_SOURCE([`cat TestPrograms/test_ppc_power8.cxx`])], [AC_MSG_RESULT([yes])], @@ -2070,10 +2055,10 @@ if test "$IS_PPC" != "0"; then AC_SUBST([POWER8_FLAG],[""]) fi - ##### Power9 ##### + ##### POWER9 ##### CXXFLAGS="$POWER9_FLAG" - AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS (Power9)]) + AC_MSG_CHECKING([if $CXXNAME supports $CXXFLAGS]) XXX_COMPILE_IFELSE( [AC_LANG_SOURCE([`cat TestPrograms/test_ppc_power9.cxx`])], [AC_MSG_RESULT([yes])], @@ -2084,17 +2069,18 @@ if test "$IS_PPC" != "0"; then AC_SUBST([POWER9_FLAG],[""]) fi - # Power9 and DARN random number generator - if test x"$POWER9_FLAG" != "x"; then - AC_SUBST([CRYPTOPP_POWER9_FLAG], [$POWER9_FLAG]) - AC_SUBST([CRYPTOPP_DARN_FLAG], [$POWER9_FLAG]) - else - AC_DEFINE([CRYPTOPP_DISABLE_POWER9], [1], [Disable Power9]) - fi + # POWER9 and DARN random number generator. Disabled due to + # https://github.com/weidai11/cryptopp/issues/986 + #if test x"$POWER9_FLAG" != "x"; then + # AC_SUBST([CRYPTOPP_POWER9_FLAG], [$POWER9_FLAG]) + # AC_SUBST([CRYPTOPP_DARN_FLAG], [$POWER9_FLAG]) + #else + # AC_DEFINE([CRYPTOPP_DISABLE_POWER9], [1], [Disable POWER9]) + #fi ##### Fixups ##### - ## Power8 and in-core crypto. + ## POWER8 and in-core crypto. if test x"$POWER8_FLAG" != "x"; then AC_SUBST([CRYPTOPP_POWER8_FLAG], [$POWER8_FLAG]) AC_SUBST([CRYPTOPP_BLAKE2B_FLAG], [$POWER8_FLAG]) @@ -2105,20 +2091,20 @@ if test "$IS_PPC" != "0"; then AC_SUBST([CRYPTOPP_SHA_FLAG], [$POWER8_FLAG]) AC_SUBST([CRYPTOPP_SIMON128_FLAG], [$POWER8_FLAG]) AC_SUBST([CRYPTOPP_SPECK128_FLAG], [$POWER8_FLAG]) - AC_DEFINE([CRYPTOPP_POWER8_CRC_AVAILABLE], [1], [Enable Power8 CRC]) - AC_DEFINE([CRYPTOPP_POWER8_AES_AVAILABLE], [1], [Enable Power8 AES]) - AC_DEFINE([CRYPTOPP_POWER8_PMULL_AVAILABLE], [1], [Enable Power8 PMULL]) - AC_DEFINE([CRYPTOPP_POWER8_SHA_AVAILABLE], [1], [Enable Power8 SHA]) + AC_DEFINE([CRYPTOPP_POWER8_CRC_AVAILABLE], [1], [Enable POWER8 CRC]) + AC_DEFINE([CRYPTOPP_POWER8_AES_AVAILABLE], [1], [Enable POWER8 AES]) + AC_DEFINE([CRYPTOPP_POWER8_PMULL_AVAILABLE], [1], [Enable POWER8 PMULL]) + AC_DEFINE([CRYPTOPP_POWER8_SHA_AVAILABLE], [1], [Enable POWER8 SHA]) else - AC_DEFINE([CRYPTOPP_DISABLE_POWER8], [1], [Disable Power8]) + AC_DEFINE([CRYPTOPP_DISABLE_POWER8], [1], [Disable POWER8]) fi - # Power7 and VSX + # POWER7 and VSX if test x"$POWER7_FLAG" != "x"; then AC_SUBST([CRYPTOPP_POWER7_FLAG], [$POWER7_FLAG]) - AC_DEFINE([CRYPTOPP_POWER7_AVAILABLE], [1], [Enable Power7]) + AC_DEFINE([CRYPTOPP_POWER7_AVAILABLE], [1], [Enable POWER7]) else - AC_DEFINE([CRYPTOPP_DISABLE_POWER7], [1], [Disable Power7]) + AC_DEFINE([CRYPTOPP_DISABLE_POWER7], [1], [Disable POWER7]) fi # Plain old Altivec @@ -2419,32 +2405,6 @@ if test "$IS_SUN_OS" != "0"; then fi fi - # No longer needed - LDFLAGS="-lnsl" - AC_MSG_CHECKING([if $LDNAME supports $LDFLAGS]) - XXX_LINK_IFELSE( - [AC_LANG_SOURCE([[int main() { return 0; }]])], - [AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no])] - ) - - if test "$retval" = "0"; then - AM_LDFLAGS="$AM_LDFLAGS $LDFLAGS" - fi - - # No longer needed - LDFLAGS="-lsocket" - AC_MSG_CHECKING([if $LDNAME supports $LDFLAGS]) - XXX_LINK_IFELSE( - [AC_LANG_SOURCE([[int main() { return 0; }]])], - [AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no])] - ) - - if test "$retval" = "0"; then - AM_LDFLAGS="$AM_LDFLAGS $LDFLAGS" - fi - ## Restore LDFLAGS LDFLAGS="$SAVED_LDFLAGS" fi @@ -2690,9 +2650,9 @@ fi if test x"$CRYPTOPP_POWER8_FLAG" != "x"; then echo "CRYPTOPP_POWER8_FLAG: $CRYPTOPP_POWER8_FLAG" fi -if test x"$CRYPTOPP_POWER9_FLAG" != "x"; then - echo "CRYPTOPP_POWER9_FLAG: $CRYPTOPP_POWER9_FLAG" -fi +#if test x"$CRYPTOPP_POWER9_FLAG" != "x"; then +# echo "CRYPTOPP_POWER9_FLAG: $CRYPTOPP_POWER9_FLAG" +#fi if test x"$CRYPTOPP_ARIA_FLAG" != "x"; then echo "CRYPTOPP_ARIA_FLAG: $CRYPTOPP_ARIA_FLAG" fi diff --git a/package/lean/libcryptopp/src/libcryptopp.pc.in b/package/lean/libcryptopp/src/libcryptopp.pc.in index 143a5d4ef0..a6c502ee52 100644 --- a/package/lean/libcryptopp/src/libcryptopp.pc.in +++ b/package/lean/libcryptopp/src/libcryptopp.pc.in @@ -1,6 +1,6 @@ ## libcryptopp.pc.in - Autotools package configuration file for Crypto++. ## written and placed in public domain by Jeffrey Walton. -## based on Debian package configuration by László Böszörményi. +## based on Debian package configuration by LászlĂł BöszörmĂ©nyi. ## ## libdir=@libdir@ is not working as expected for Fedora, Solaris, From 9ac11c8f1c916d18626541fa8094798ffc99c77a Mon Sep 17 00:00:00 2001 From: AmadeusGhost <42570690+AmadeusGhost@users.noreply.github.com> Date: Sun, 22 Nov 2020 15:28:02 +0800 Subject: [PATCH 18/18] treewide: remove packages which already in feeds --- package/ctcgfw/port-mirroring/Makefile | 108 ------------------ package/lean/libidn2/Makefile | 93 --------------- package/lean/libtorrent-rasterbar/Makefile | 74 ------------ package/zxlhhyccc/libpciaccess/Makefile | 58 ---------- .../0004-Don-t-include-sys-io.h-on-arm.patch | 28 ----- package/zxlhhyccc/librouteros/Makefile | 54 --------- 6 files changed, 415 deletions(-) delete mode 100644 package/ctcgfw/port-mirroring/Makefile delete mode 100644 package/lean/libidn2/Makefile delete mode 100644 package/lean/libtorrent-rasterbar/Makefile delete mode 100644 package/zxlhhyccc/libpciaccess/Makefile delete mode 100644 package/zxlhhyccc/libpciaccess/patches/0004-Don-t-include-sys-io.h-on-arm.patch delete mode 100644 package/zxlhhyccc/librouteros/Makefile diff --git a/package/ctcgfw/port-mirroring/Makefile b/package/ctcgfw/port-mirroring/Makefile deleted file mode 100644 index dbfb27d253..0000000000 --- a/package/ctcgfw/port-mirroring/Makefile +++ /dev/null @@ -1,108 +0,0 @@ -# -# @file Makefile -# -# @author Akagi201 -# @date 2015/03/23 -# -# OpenWrt feeds Makefile -# - -############################################## -# OpenWrt Makefile for port-mirroring program -# -# -# Most of the variables used here are defined in -# the include directives below. We just need to -# specify a basic description of the package, -# where to build our program, where to find -# the source files, and where to install the -# compiled program on the router. -# -# Be very careful of spacing in this file. -# Indents should be tabs, not spaces, and -# there should be no trailing whitespace in -# lines that are not commented. -# -############################################## - -include $(TOPDIR)/rules.mk - -# Name and release number of this package -PKG_NAME:=port-mirroring -PKG_VERSION:=1.3 -PKG_RELEASE:=1 - -# This specifies the directory where we're going to build the program. -# The root build directory, $(BUILD_DIR), is by default the build_mipsel -# directory in your OpenWrt SDK directory -#PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -#PKG_SOURCE_URL:=http://port-mirroring.googlecode.com/files/ -#PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/Akagi201/port-mirroring.git -PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) -PKG_SOURCE_VERSION:=master -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) - -include $(INCLUDE_DIR)/package.mk - -# Specify package information for this program. -# The variables defined here should be self explanatory. -# If you are running Kamikaze, delete the DESCRIPTION -# variable below and uncomment the Kamikaze define -# directive for the description below -define Package/port-mirroring - SECTION:=net - CATEGORY:=Network - DEPENDS:=+libpcap +libpthread - TITLE:=port-mirroring tool - URL:=https://github.com/Akagi201/port-mirroring - MENU:=1 -endef - -define Package/port-mirroring/description - port-mirroring offers port mirror in a software. -endef - -# Specify where and how to install the program. Since we only have one file, -# the port-mirroring, install it by copying it to the /bin directory on -# the router. The $(1) variable represents the root directory on the router running -# OpenWrt. The $(INSTALL_DIR) variable contains a command to prepare the install -# directory if it does not already exist. Likewise $(INSTALL_BIN) contains the -# command to copy the binary file from its current location (in our case the build -# directory) to the install directory. -define Package/port-mirroring/install - $(INSTALL_DIR) $(1)/usr/sbin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/port-mirroring $(1)/usr/sbin/ - $(INSTALL_DIR) $(1)/etc/config - $(INSTALL_CONF) $(PKG_BUILD_DIR)/port-mirroring.conf $(1)/etc/config/port-mirroring - $(INSTALL_DIR) $(1)/etc/init.d - $(INSTALL_BIN) $(PKG_BUILD_DIR)/port-mirroringd $(1)/etc/init.d/port_mirroring -endef - -define Package/port-mirroring/postinst -#!/bin/sh -if [ -z "$${IPKG_INSTROOT}" ]; then - echo "Enabling rc.d symlink for port-mirroring" - /etc/init.d/port_mirroring enable -fi -exit 0 -endef - -define Package/port-mirroring/prerm -#!/bin/sh -# check if we are on real system -if [ -z "$${IPKG_INSTROOT}" ]; then - echo "Removing rc.d symlink for port-mirroring" - /etc/init.d/port_mirroring disable -fi -exit 0 -endef - -# This line executes the necessary commands to compile our program. -# The above define directives specify all the information needed, but this -# line calls BuildPackage which in turn actually uses this information to -# build a package. -$(eval $(call BuildPackage,port-mirroring)) diff --git a/package/lean/libidn2/Makefile b/package/lean/libidn2/Makefile deleted file mode 100644 index c023b5298d..0000000000 --- a/package/lean/libidn2/Makefile +++ /dev/null @@ -1,93 +0,0 @@ -# -# Copyright (C) 2017-2018 Daniel Engberg -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=libidn2 -PKG_VERSION:=2.0.4 -PKG_RELEASE:=1 -PKG_MAINTAINER:=Kevin Darbyshire-Bryant -PKG_LICENSE:=GPL-2.0-or-later LGPL-3.0-or-later -PKG_LICENSE_FILES:=COPYING COPYINGv2 COPYING.LESSERv3 - -PKG_SOURCE_URL:=@GNU/libidn -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_HASH:=644b6b03b285fb0ace02d241d59483d98bc462729d8bb3608d5cad5532f3d2f0 - -PKG_INSTALL:=1 - -include $(INCLUDE_DIR)/package.mk -include $(INCLUDE_DIR)/nls.mk - -define Package/idn2/Default - SECTION:=net - CATEGORY:=Network - URL:=http://www.gnu.org/software/libidn/ -endef - -define Package/idn2/Default/description - Libidn2 is a free software implementation of IDNA2008, - Punycode and TR46 in library form. It contains - functionality to convert internationalized domain - names to and from ASCII Compatible Encoding (ACE), - following the IDNA2008 and TR46 standards. -endef - -define Package/idn2 - $(call Package/idn2/Default) - SUBMENU:=IP Addresses and Names - TITLE:=GNU IDN2 (Internationalized Domain Name) tool - DEPENDS:=+libidn2 -endef - -define Package/idn2/description -$(call Package/idn2/Default/description) - - Command line tool using libidn2 - -endef - -define Package/libidn2 - SECTION:=libs - CATEGORY:=Libraries - DEPENDS:=+libunistring $(ICONV_DEPENDS) $(INTL_DEPENDS) - TITLE:=International domain name library (IDNA2008, Punycode and TR46) - URL:=https://www.gnu.org/software/libidn/#libidn2 -endef - -define Package/libidn2/description -$(call Package/idn2/Default/description) - - Library only package - -endef - -CONFIGURE_ARGS += \ - --disable-rpath \ - --disable-doc - -define Build/InstallDev - $(INSTALL_DIR) $(1)/usr/include - $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/include/idn2.h $(1)/usr/include - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.{la,so}* $(1)/usr/lib/ - $(INSTALL_DIR) $(1)/usr/lib/pkgconfig - $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libidn2.pc $(1)/usr/lib/pkgconfig/ -endef - -define Package/idn2/install - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/ -endef - -define Package/libidn2/install - $(INSTALL_DIR) $(1)/usr/lib/ - $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib/ -endef - -$(eval $(call BuildPackage,idn2)) -$(eval $(call BuildPackage,libidn2)) diff --git a/package/lean/libtorrent-rasterbar/Makefile b/package/lean/libtorrent-rasterbar/Makefile deleted file mode 100644 index ff9546747a..0000000000 --- a/package/lean/libtorrent-rasterbar/Makefile +++ /dev/null @@ -1,74 +0,0 @@ -include $(TOPDIR)/rules.mk - -PKG_NAME:=libtorrent-rasterbar -PKG_VERSION:=1.2.10 -PKG_RELEASE=1 - -PKG_SOURCE:=$(PKG_NAME)-libtorrent-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=https://codeload.github.com/arvidn/libtorrent/tar.gz/libtorrent-$(PKG_VERSION)? -PKG_HASH:=e0fedb583f1e7bdcc0eb80a9df064a1e6fb0b825d8423e64bdb0f7a35879a09e - -PKG_BUILD_DIR:=$(BUILD_DIR)/$(firstword $(subst -, ,$(PKG_NAME)))-libtorrent-$(PKG_VERSION) - -PKG_LICENSE:=BSD -PKG_LICENSE_FILES:=COPYING - -PKG_USE_MIPS16:=0 -PKG_BUILD_PARALLEL:=1 -PKG_INSTALL:=1 - -include $(INCLUDE_DIR)/package.mk - -define Package/libtorrent-rasterbar - SECTION:=libs - CATEGORY:=Libraries - TITLE:=Rasterbar BitTorrent library - URL:=https://www.libtorrent.org/ - DEPENDS:=+libstdcpp +libopenssl +boost +boost-system +boost-chrono +boost-random $(ICONV_DEPENDS) - MAINTAINER:=Arvid Norberg -endef - -define Package/libtorrent-rasterbar/description -Rasterbar libtorrent is a C++ library that aims to be a good alternative to -all the other bittorrent implementations around. It is a library and not a -full featured client, although it comes with a working example client. -endef - -TARGET_CFLAGS += $(if $(CONFIG_SOFT_FLOAT),-DBOOST_NO_FENV_H) -fPIC - -EXTRA_CXXFLAGS += $(if $(CONFIG_GCC_VERSION_4_8),-std=gnu++11,-std=gnu++14) - -TARGET_LDFLAGS += -lstdc++ - -CONFIGURE_ARGS += \ - --disable-debug \ - --disable-rpath \ - --enable-encryption \ - --enable-deprecated-functions \ - --with-gnu-ld \ - --with-openssl=$(STAGING_DIR)/usr \ - --with-boost=$(STAGING_DIR)/usr \ - --with-libiconv \ - --with-libiconv-prefix=$(ICONV_PREFIX) - -define Build/Configure - cd $(PKG_BUILD_DIR) ; \ - sh autotool.sh - $(call Build/Configure/Default) -endef - -define Build/InstallDev - $(INSTALL_DIR) $(1)/usr/include - $(CP) $(PKG_INSTALL_DIR)/usr/include/libtorrent $(1)/usr/include/ - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/usr/lib/libtorrent-rasterbar.{a,so*} $(1)/usr/lib/ - $(INSTALL_DIR) $(1)/usr/lib/pkgconfig - $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libtorrent-rasterbar.pc $(1)/usr/lib/pkgconfig/ -endef - -define Package/libtorrent-rasterbar/install - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/usr/lib/libtorrent-rasterbar.so.* $(1)/usr/lib/ -endef - -$(eval $(call BuildPackage,libtorrent-rasterbar)) diff --git a/package/zxlhhyccc/libpciaccess/Makefile b/package/zxlhhyccc/libpciaccess/Makefile deleted file mode 100644 index df351e90e6..0000000000 --- a/package/zxlhhyccc/libpciaccess/Makefile +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright (C) 2019 Lucian Cristian -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. - -include $(TOPDIR)/rules.mk - -PKG_NAME:=libpciaccess -PKG_VERSION:=0.14 -PKG_RELEASE:=1 - -PKG_SOURCE_URL:=https://www.x.org/releases/individual/lib/ -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 -PKG_HASH:=3df543e12afd41fea8eac817e48cbfde5aed8817b81670a4e9e493bb2f5bf2a4 - -PKG_BUILD_PARALLEL:=1 -PKG_INSTALL:=1 - -PKG_MAINTAINER:= Lucian Cristian - -include $(INCLUDE_DIR)/package.mk - -define Package/libpciaccess - SECTION:=libs - CATEGORY:=Libraries - TITLE:=Generic PCI access library - URL:=https://xorg.freedesktop.org/ -endef - -TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed - -CONFIGURE_ARGS += \ - --prefix=/usr - -define Build/InstallDev - $(INSTALL_DIR) \ - $(1)/usr/include \ - $(1)/usr/lib - - $(CP) \ - $(PKG_INSTALL_DIR)/usr/include/* \ - $(1)/usr/include/ - - $(CP) \ - $(PKG_INSTALL_DIR)/usr/lib/{pkgconfig,*.so*} \ - $(1)/usr/lib/ -endef - -define Package/libpciaccess/install - $(INSTALL_DIR) \ - $(1)/usr/lib - - $(CP) \ - $(PKG_INSTALL_DIR)/usr/lib/*.so* \ - $(1)/usr/lib/ -endef - -$(eval $(call BuildPackage,libpciaccess)) diff --git a/package/zxlhhyccc/libpciaccess/patches/0004-Don-t-include-sys-io.h-on-arm.patch b/package/zxlhhyccc/libpciaccess/patches/0004-Don-t-include-sys-io.h-on-arm.patch deleted file mode 100644 index f532858244..0000000000 --- a/package/zxlhhyccc/libpciaccess/patches/0004-Don-t-include-sys-io.h-on-arm.patch +++ /dev/null @@ -1,28 +0,0 @@ -From b6df5202306bd71158b482f25ca2e6919645d4dd Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Thu, 4 Jun 2015 20:55:06 -0700 -Subject: [PATCH 4/4] Don't include sys/io.h on arm - -Signed-off-by: Khem Raj ---- -Upstream-Status: Pending - - src/linux_sysfs.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/linux_sysfs.c b/src/linux_sysfs.c -index 3f95e53..1e3aad3 100644 ---- a/src/linux_sysfs.c -+++ b/src/linux_sysfs.c -@@ -50,7 +50,7 @@ - #include - #include - --#if defined(__i386__) || defined(__x86_64__) || defined(__arm__) -+#if defined(__i386__) || defined(__x86_64__) - #include - #else - #define inb(x) -1 --- -2.1.4 - diff --git a/package/zxlhhyccc/librouteros/Makefile b/package/zxlhhyccc/librouteros/Makefile deleted file mode 100644 index 2908de0774..0000000000 --- a/package/zxlhhyccc/librouteros/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=librouteros -PKG_SOURCE_DATE:=2018-07-19 -PKG_SOURCE_VERSION:=c485c777ffbbbd87c3d72d843af36ba016803cae -PKG_RELEASE:=1 - -PKG_MAINTAINER:=Sven Roederer -PKG_LICENSE:=ISC -PKG_LICENSE_FILES:=COPYING - -PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_DATE).tar.gz -PKG_SOURCE_URL:=https://codeload.github.com/octo/librouteros/tar.gz/$(PKG_SOURCE_VERSION)? -PKG_HASH:=427e071fe270ff6c08e32a10e5beff2add4205e6c864b142f950efdb8d2245a4 -PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_SOURCE_VERSION) - -PKG_FIXUP:=autoreconf -PKG_INSTALL:=1 -PKG_BUILD_PARALLEL:=1 - -include $(INCLUDE_DIR)/package.mk - -define Package/librouteros - TITLE:=A library that talks to MikroTik devices. - URL:=https://octo.github.io/librouteros/ - SECTION:=libs - CATEGORY:=Libraries -endef - -define Package/librouteros/description - librouteros is a library to communicate with RouterOS, the operating system of MikroTik's RouterBoards. - It uses the API port provided by those systems to connect and talk to the devices. librouteros is a - low-level library in that it abstracts the network protocol used but has next to no knowledge about the - commands and responses available -endef - -define Build/InstallDev - $(INSTALL_DIR) $(1)/usr/include - $(CP) $(PKG_INSTALL_DIR)/usr/include/routeros_*.h $(1)/usr/include/ - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/usr/lib/librouteros.{a,la,so*} $(1)/usr/lib/ -endef - -define Package/librouteros/install - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/usr/lib/librouteros.so.* $(1)/usr/lib/ -endef - -$(eval $(call BuildPackage,librouteros))