From 9814fc54476c34069a4ed5f1a46e6957f84bc281 Mon Sep 17 00:00:00 2001 From: Stefan Kalkowski Date: Wed, 27 Nov 2019 13:20:05 +0100 Subject: [PATCH] libports: enable arm_64 libssl, libcrypto variant Fix #3563 --- .../libports/lib/mk/spec/arm_64/libcrypto.mk | 8 + repos/libports/lib/mk/spec/arm_64/libssl.mk | 5 + .../libports/recipes/src/libcrypto/content.mk | 2 +- repos/libports/recipes/src/libssl/content.mk | 2 +- .../openssl/spec/arm_64/openssl/opensslconf.h | 226 ++++++++++++++++++ 5 files changed, 241 insertions(+), 2 deletions(-) create mode 100644 repos/libports/lib/mk/spec/arm_64/libcrypto.mk create mode 100644 repos/libports/lib/mk/spec/arm_64/libssl.mk create mode 100644 repos/libports/src/lib/openssl/spec/arm_64/openssl/opensslconf.h diff --git a/repos/libports/lib/mk/spec/arm_64/libcrypto.mk b/repos/libports/lib/mk/spec/arm_64/libcrypto.mk new file mode 100644 index 000000000..99f937feb --- /dev/null +++ b/repos/libports/lib/mk/spec/arm_64/libcrypto.mk @@ -0,0 +1,8 @@ +# has to be the first path because it includes openssl/opensslconf.h +INC_DIR += $(REP_DIR)/src/lib/openssl/spec/arm_64 + +CC_OPTS += -DL_ENDIAN + +include $(REP_DIR)/lib/mk/libcrypto.inc + +CC_CXX_WARN_STRICT = diff --git a/repos/libports/lib/mk/spec/arm_64/libssl.mk b/repos/libports/lib/mk/spec/arm_64/libssl.mk new file mode 100644 index 000000000..ff5adfa25 --- /dev/null +++ b/repos/libports/lib/mk/spec/arm_64/libssl.mk @@ -0,0 +1,5 @@ +include $(REP_DIR)/lib/mk/libssl.inc + +INC_DIR += $(REP_DIR)/src/lib/openssl/spec/arm_64 + +CC_CXX_WARN_STRICT = diff --git a/repos/libports/recipes/src/libcrypto/content.mk b/repos/libports/recipes/src/libcrypto/content.mk index e786e355b..b20a6a695 100644 --- a/repos/libports/recipes/src/libcrypto/content.mk +++ b/repos/libports/recipes/src/libcrypto/content.mk @@ -18,7 +18,7 @@ src/lib/libcrypto/target.mk: src/lib/libcrypto src/lib/openssl lib/mk: mkdir -p $@ cp $(REP_DIR)/lib/mk/libcrypto.inc $@ - for spec in x86_32 x86_64 arm; do \ + for spec in x86_32 x86_64 arm arm_64; do \ mkdir -p $@/spec/$$spec; \ cp $(REP_DIR)/$@/spec/$$spec/libcrypto.mk $@/spec/$$spec/; \ done diff --git a/repos/libports/recipes/src/libssl/content.mk b/repos/libports/recipes/src/libssl/content.mk index f58955ad8..0afefb192 100644 --- a/repos/libports/recipes/src/libssl/content.mk +++ b/repos/libports/recipes/src/libssl/content.mk @@ -18,7 +18,7 @@ src/lib/libssl/target.mk: src/lib/libssl src/lib/openssl lib/mk: mkdir -p $@ cp $(REP_DIR)/lib/mk/libssl.inc $@ - for spec in x86_32 x86_64 arm; do \ + for spec in x86_32 x86_64 arm arm_64; do \ mkdir -p $@/spec/$$spec; \ cp $(REP_DIR)/$@/spec/$$spec/libssl.mk $@/spec/$$spec/; \ done diff --git a/repos/libports/src/lib/openssl/spec/arm_64/openssl/opensslconf.h b/repos/libports/src/lib/openssl/spec/arm_64/openssl/opensslconf.h new file mode 100644 index 000000000..a6781a8da --- /dev/null +++ b/repos/libports/src/lib/openssl/spec/arm_64/openssl/opensslconf.h @@ -0,0 +1,226 @@ +/* opensslconf.h */ +/* WARNING: Generated automatically from opensslconf.h.in by Configure. */ + +/* OpenSSL was configured with the following options: */ +#ifndef OPENSSL_DOING_MAKEDEPEND + + +#ifndef OPENSSL_NO_GMP +# define OPENSSL_NO_GMP +#endif +#ifndef OPENSSL_NO_JPAKE +# define OPENSSL_NO_JPAKE +#endif +#ifndef OPENSSL_NO_KRB5 +# define OPENSSL_NO_KRB5 +#endif +#ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +#endif +#ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +#endif +#ifndef OPENSSL_NO_RFC3779 +# define OPENSSL_NO_RFC3779 +#endif +#ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +#endif +#ifndef OPENSSL_NO_STORE +# define OPENSSL_NO_STORE +#endif + +#endif /* OPENSSL_DOING_MAKEDEPEND */ + +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif +#ifndef OPENSSL_NO_STATIC_ENGINE +# define OPENSSL_NO_STATIC_ENGINE +#endif + +/* The OPENSSL_NO_* macros are also defined as NO_* if the application + asks for it. This is a transient feature that is provided for those + who haven't had the time to do the appropriate changes in their + applications. */ +#ifdef OPENSSL_ALGORITHM_DEFINES +# if defined(OPENSSL_NO_GMP) && !defined(NO_GMP) +# define NO_GMP +# endif +# if defined(OPENSSL_NO_JPAKE) && !defined(NO_JPAKE) +# define NO_JPAKE +# endif +# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5) +# define NO_KRB5 +# endif +# if defined(OPENSSL_NO_MD2) && !defined(NO_MD2) +# define NO_MD2 +# endif +# if defined(OPENSSL_NO_RC5) && !defined(NO_RC5) +# define NO_RC5 +# endif +# if defined(OPENSSL_NO_RFC3779) && !defined(NO_RFC3779) +# define NO_RFC3779 +# endif +# if defined(OPENSSL_NO_SCTP) && !defined(NO_SCTP) +# define NO_SCTP +# endif +# if defined(OPENSSL_NO_STORE) && !defined(NO_STORE) +# define NO_STORE +# endif +#endif + +/* crypto/opensslconf.h.in */ + +/* Generate 80386 code? */ +#undef I386_ONLY + +#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */ +#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR) +#define ENGINESDIR "/usr/lib/engines" +#define OPENSSLDIR "/etc/ssl" +#endif +#endif + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD + +#undef OPENSSL_EXPORT_VAR_AS_FUNCTION + +#if defined(HEADER_IDEA_H) && !defined(IDEA_INT) +#define IDEA_INT unsigned int +#endif + +#if defined(HEADER_MD2_H) && !defined(MD2_INT) +#define MD2_INT unsigned int +#endif + +#if defined(HEADER_RC2_H) && !defined(RC2_INT) +/* I need to put in a mod for the alpha - eay */ +#define RC2_INT unsigned int +#endif + +#if defined(HEADER_RC4_H) +#if !defined(RC4_INT) +/* using int types make the structure larger but make the code faster + * on most boxes I have tested - up to %20 faster. */ +/* + * I don't know what does "most" mean, but declaring "int" is a must on: + * - Intel P6 because partial register stalls are very expensive; + * - elder Alpha because it lacks byte load/store instructions; + */ +#define RC4_INT unsigned int +#endif +#if !defined(RC4_CHUNK) +/* + * This enables code handling data aligned at natural CPU word + * boundary. See crypto/rc4/rc4_enc.c for further details. + */ +#define RC4_CHUNK unsigned long +#endif +#endif + +#if (defined(HEADER_NEW_DES_H) || defined(HEADER_DES_H)) && !defined(DES_LONG) +/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a + * %20 speed up (longs are 8 bytes, int's are 4). */ +#ifndef DES_LONG +#define DES_LONG unsigned int +#endif +#endif + +#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H) +#define CONFIG_HEADER_BN_H +#undef BN_LLONG + +/* Should we define BN_DIV2W here? */ + +/* Only one for the following should be defined */ +#define SIXTY_FOUR_BIT_LONG +#undef SIXTY_FOUR_BIT +#undef THIRTY_TWO_BIT +#endif + +#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H) +#define CONFIG_HEADER_RC4_LOCL_H +/* if this is defined data[i] is used instead of *data, this is a %20 + * speedup on x86 */ +#undef RC4_INDEX +#endif + +#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H) +#define CONFIG_HEADER_BF_LOCL_H +#undef BF_PTR +#endif /* HEADER_BF_LOCL_H */ + +#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H) +#define CONFIG_HEADER_DES_LOCL_H +#ifndef DES_DEFAULT_OPTIONS +/* the following is tweaked from a config script, that is why it is a + * protected undef/define */ +#ifndef DES_PTR +#undef DES_PTR +#endif + +/* This helps C compiler generate the correct code for multiple functional + * units. It reduces register dependancies at the expense of 2 more + * registers */ +#ifndef DES_RISC1 +#undef DES_RISC1 +#endif + +#ifndef DES_RISC2 +#undef DES_RISC2 +#endif + +#if defined(DES_RISC1) && defined(DES_RISC2) +YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!! +#endif + +/* Unroll the inner loop, this sometimes helps, sometimes hinders. + * Very mucy CPU dependant */ +#ifndef DES_UNROLL +#define DES_UNROLL +#endif + +/* These default values were supplied by + * Peter Gutman + * They are only used if nothing else has been defined */ +#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL) +/* Special defines which change the way the code is built depending on the + CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find + even newer MIPS CPU's, but at the moment one size fits all for + optimization options. Older Sparc's work better with only UNROLL, but + there's no way to tell at compile time what it is you're running on */ + +#if defined( sun ) /* Newer Sparc's */ +# define DES_PTR +# define DES_RISC1 +# define DES_UNROLL +#elif defined( __ultrix ) /* Older MIPS */ +# define DES_PTR +# define DES_RISC2 +# define DES_UNROLL +#elif defined( __osf1__ ) /* Alpha */ +# define DES_PTR +# define DES_RISC2 +#elif defined ( _AIX ) /* RS6000 */ + /* Unknown */ +#elif defined( __hpux ) /* HP-PA */ + /* Unknown */ +#elif defined( __aux ) /* 68K */ + /* Unknown */ +#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */ +# define DES_UNROLL +#elif defined( __sgi ) /* Newer MIPS */ +# define DES_PTR +# define DES_RISC2 +# define DES_UNROLL +#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */ +# define DES_PTR +# define DES_RISC1 +# define DES_UNROLL +#endif /* Systems-specific speed defines */ +#endif + +#endif /* DES_DEFAULT_OPTIONS */ +#endif /* HEADER_DES_LOCL_H */