From: Shigeki Ohtsu Date: Thu, 9 Apr 2015 08:46:08 +0000 (+0900) Subject: deps: make opensslconf.h include each target arch X-Git-Tag: v1.7.0~21 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=29a33014617902328b295f46c8417f321f57f67f;p=platform%2Fupstream%2Fnodejs.git deps: make opensslconf.h include each target arch In OpenSSL, opensslconf.h was generated by Configure script with specifying a target argument, where it includes several defines that depend on OS and architecture platform. In iojs, we statically mapped --dest-os and --dest-cpu options in configure to the target of Configure in OpenSSL and make `deps/openssl/conf/openssconf.h` so as to include each file according to its target by checking pre-defined compiler macros. Included opnesslconf.h files for supported target architectures can be generated by `Makefile` and stored under `archs/{target}/opensslconf.h`. The Makefile alos fixes several defines to meet iojs build requirements. Here is a map table of configure options in iojs, target arch of Configure in OpenSSL and CI support. | --dest-os | --dest-cpu | OpenSSL target arch | CI | | --------- | ---------- | -------------------- | --- | | linux | ia32 | linux-elf | o | | linux | x32 | patched linux-x86_64 | - | | linux | x64 | linux-x86_64 | o | | linux | arm | linux-armv4 | o | | linux | arm64 | N/A | - | | mac | ia32 | darwin-i386-cc | o | | mac | x64 | darwin64-x86-cc | o | | win | ia32 | VC-WIN32 | - | | win | x64 | VC-WIN64A | o | | solaris | ia32 | solaris-x86-gcc | o | | solaris | x64 | solaris64-x86_64-gcc | o | | freebsd | ia32 | BSD-x86 | o | | freebsd | x64 | BSD-x86_64 | o | | openbsd | ia32 | BSD-x86 | - | | openbsd | x64 | BSD-x86_64 | - | | others | others | linux-elf | - | --dest-os and --dest-cpu are mapped to pre-defined macros. | --dest-os | pre-defined macro | | ------------------ | ------------------------- | | win | _WIN32 | | win(64bit) | _WIN64 | | mac | __APPLE__ && __MACH__ | | solaris | __sun | | freebsd | __FreeBSD__ | | openbsd | __OpenBSD__ | | linux (not andorid)| __linux__ && !__ANDROID__ | | android | __ANDROID__ | | --dest-cpu | pre-defined macro | | ---------- | ----------------- | | arm | __arm__ | | arm64 | __aarch64__ | | ia32 | __i386__ | | ia32(win) | _M_IX86 | | mips | __mips__ | | mipsel | __MIPSEL__ | | x32 | __ILP32__ | | x64 | __x86_64__ | | x64(win) | _M_X64 | These are the list which is not implemented yet. | --dest-os | --dest-cpu | OpenSSL target arch | CI | | --------- | ---------- | -------------------- | --- | | linux | mips | linux-mips32,linux-mips64,linux64-mips64? | --- | | linux | mipsel | ? | --- | | android | ia32 | android-x86 | --- | | android | arm | android-armv7 | --- | | android | mips | android-mips | --- | | android | mipsel | ? | --- | Supported target arch list in OpenSSL can be obtained by typing `deps/openssl/openssl/Configure LIST`. This also contains to add two new defines for all platform in the bottom for GOST and Padlock engines are not included in iojs. PR-URL: https://github.com/iojs/io.js/pull/1377 Reviewed-By: Fedor Indutny Reviewed-By: Ben Noordhuis --- diff --git a/deps/openssl/config/opensslconf.h b/deps/openssl/config/opensslconf.h index 84e5de7..ad49a0f 100644 --- a/deps/openssl/config/opensslconf.h +++ b/deps/openssl/config/opensslconf.h @@ -1,324 +1,121 @@ -/* opensslconf.h */ -/* WARNING: Generated automatically from opensslconf.h.in by Configure. */ - -/* OpenSSL was configured with the following options: */ -#undef OPENSSL_SYSNAME_WIN32 -#if defined(_WIN32) -# define OPENSSL_SYSNAME_WIN32 -#endif - -#ifndef OPENSSL_DOING_MAKEDEPEND -# ifndef OPENSSL_NO_CAPIENG -# define OPENSSL_NO_CAPIENG -# endif -# ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 -# define OPENSSL_NO_EC_NISTP_64_GCC_128 -# endif -# ifndef OPENSSL_NO_GMP -# define OPENSSL_NO_GMP -# endif -# ifndef OPENSSL_NO_GOST -# define OPENSSL_NO_GOST -# endif -# ifndef OPENSSL_NO_HW_PADLOCK -# define OPENSSL_NO_HW_PADLOCK -# 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_DYNAMIC_ENGINE -# define OPENSSL_NO_DYNAMIC_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_CAMELLIA) && !defined(NO_CAMELLIA) -# define NO_CAMELLIA -# endif -# if defined(OPENSSL_NO_CAPIENG) && !defined(NO_CAPIENG) -# define NO_CAPIENG -# endif -# if defined(OPENSSL_NO_CAST) && !defined(NO_CAST) -# define NO_CAST -# endif -# if defined(OPENSSL_NO_CMS) && !defined(NO_CMS) -# define NO_CMS -# endif -# if defined(OPENSSL_NO_FIPS) && !defined(NO_FIPS) -# define NO_FIPS -# endif -# if defined(OPENSSL_NO_GMP) && !defined(NO_GMP) -# define NO_GMP -# endif -# if defined(OPENSSL_NO_IDEA) && !defined(NO_IDEA) -# define NO_IDEA -# 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_MDC2) && !defined(NO_MDC2) -# define NO_MDC2 -# 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_SEED) && !defined(NO_SEED) -# define NO_SEED -# endif -# if defined(OPENSSL_NO_SHA0) && !defined(NO_SHA0) -# define NO_SHA0 -# endif -# if defined(OPENSSL_NO_STORE) && !defined(NO_STORE) -# define NO_STORE -# endif -# if defined(OPENSSL_NO_WHRLPOOL) && !defined(NO_WHRLPOOL) -# define NO_WHRLPOOL -# endif -# if defined(OPENSSL_NO_MDC2) && !defined(NO_MDC2) -# define NO_MDC2 -# endif -#endif - -/* crypto/opensslconf.h.in */ - -#ifdef OPENSSL_DOING_MAKEDEPEND - /* Include any symbols here that have to be explicitly set to enable a feature - * that should be visible to makedepend. - * - * [Our "make depend" doesn't actually look at this, we use actual build settings - * instead; we want to make it easy to remove subdirectories with disabled algorithms.] - */ -# ifndef OPENSSL_FIPS -# define OPENSSL_FIPS -# endif -#endif - -/* Generate 80386 code? */ -#undef I386_ONLY - -#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */ -# if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR) -# if defined(_WIN32) -# define ENGINESDIR "ssl/lib/engines" -# define OPENSSLDIR "ssl" -# else -# define ENGINESDIR "/usr/local/ssl/lib/engines" -# define OPENSSLDIR "/usr/local/ssl" -# endif -# endif -#endif - -#undef OPENSSL_UNISTD -#define OPENSSL_UNISTD -#if !defined(_WIN32) && !defined(__arm__) && !defined(__mips__) && !defined(SWIG) -# include -#endif - -#undef OPENSSL_EXPORT_VAR_AS_FUNCTION -#if defined(_WIN32) -# define OPENSSL_EXPORT_VAR_AS_FUNCTION -#endif - -#if defined(HEADER_IDEA_H) -# undef IDEA_INT -# define IDEA_INT unsigned int +/* + In OpenSSL, opensslconf.h was generated by Configure script with + specifying a target argument, where it includes several defines that + depend on OS and architecture platform. + + In iojs, we statically mapped --dest-os and --dest-cpu options in + configure to the target of Configure in OpenSSL and make + `deps/openssl/conf/openssconf.h` so as to include each file + according to its target by checking pre-defined compiler macros. + + Included opnesslconf.h files for supported target architectures can + be generated by `Makefile` and stored under + `archs/{target}/opensslconf.h`. The Makefile also fixes several + defines to meet iojs build requirements. + + Here is a map table of configure options in iojs, target arch of + Configure in OpenSSL and CI support. + + | --dest-os | --dest-cpu | OpenSSL target arch | CI | + | --------- | ---------- | -------------------- | --- | + | linux | ia32 | linux-elf | o | + | linux | x32 | patched linux-x86_64 | - | + | linux | x64 | linux-x86_64 | o | + | linux | arm | linux-armv4 | o | + | linux | arm64 | N/A | - | + | mac | ia32 | darwin-i386-cc | o | + | mac | x64 | darwin64-x86-cc | o | + | win | ia32 | VC-WIN32 | - | + | win | x64 | VC-WIN64A | o | + | solaris | ia32 | solaris-x86-gcc | o | + | solaris | x64 | solaris64-x86_64-gcc | o | + | freebsd | ia32 | BSD-x86 | o | + | freebsd | x64 | BSD-x86_64 | o | + | openbsd | ia32 | BSD-x86 | - | + | openbsd | x64 | BSD-x86_64 | - | + | others | others | linux-elf | - | + + --dest-os and --dest-cpu are mapped to pre-defined macros. + + | --dest-os | pre-defined macro | + | ------------------ | ------------------------- | + | win | _WIN32 | + | win(64bit) | _WIN64 | + | mac | __APPLE__ && __MACH__ | + | solaris | __sun | + | freebsd | __FreeBSD__ | + | openbsd | __OpenBSD__ | + | linux (not andorid)| __linux__ && !__ANDROID__ | + | android | __ANDROID__ | + + | --dest-cpu | pre-defined macro | + | ---------- | ----------------- | + | arm | __arm__ | + | arm64 | __aarch64__ | + | ia32 | __i386__ | + | ia32(win) | _M_IX86 | + | mips | __mips__ | + | mipsel | __MIPSEL__ | + | x32 | __ILP32__ | + | x64 | __x86_64__ | + | x64(win) | _M_X64 | + + These are the list which is not implemented yet. + + | --dest-os | --dest-cpu | OpenSSL target arch | CI | + | --------- | ---------- | -------------------- | --- | + | linux | mips | linux-mips32,linux-mips64,linux64-mips64? | --- | + | linux | mipsel | ? | --- | + | android | ia32 | android-x86 | --- | + | android | arm | android-armv7 | --- | + | android | mips | android-mips | --- | + | android | mipsel | ? | --- | + + Supported target arch list in OpenSSL can be obtained by typing + `deps/openssl/openssl/Configure LIST`. + +*/ + +#undef OPENSSL_LINUX +#if defined(__linux) && !defined(__ANDROID__) +# define OPENSSL_LINUX 1 #endif -#if defined(HEADER_MD2_H) -# undef MD2_INT -# define MD2_INT unsigned int +#if defined(OPENSSL_LINUX) && defined(__i386__) +# include "./archs/linux-elf/opensslconf.h" +#elif defined(OPENSSL_LINUX) && defined(__ILP32__) +# include "./archs/linux-x32/opensslconf.h" +#elif defined(OPENSSL_LINUX) && defined(__x86_64__) +# include "./archs/linux-x86_64/opensslconf.h" +#elif defined(OPENSSL_LINUX) && defined(__arm__) +# include "./archs/linux-armv4/opensslconf.h" +#elif defined(OPENSSL_LINUX) && defined(__aarch64__) + /* Not Supported Yet */ +#elif defined(__APPLE__) && defined(__MACH__) && defined(__i386__) +# include "./archs/darwin-i386-cc/opensslconf.h" +#elif defined(__APPLE__) && defined(__MACH__) && defined(__x86_64__) +# include "./archs/darwin64-x86_64-cc/opensslconf.h" +#elif defined(_WIN32) && defined(_M_IX86) +# include "./archs/VC-WIN32/opensslconf.h" +#elif defined(_WIN32) && defined(_M_X64) +# include "./archs/VC-WIN64A/opensslconf.h" +#elif (defined(__FreeBSD__) || defined(__OpenBSD__)) && defined(__i386__) +# include "./archs/BSD-x86/opensslconf.h" +#elif (defined(__FreeBSD__) || defined(__OpenBSD__)) && defined(__x86_64__) +# include "./archs/BSD-x86_64/opensslconf.h" +#elif defined(__sun) && defined(__i386__) +# include "./archs/solaris-x86-gcc/opensslconf.h" +#elif defined(__sun) && defined(__x86_64__) +# include "./archs/solaris64-x86_64-gcc/opensslconf.h" +#else +# include "./archs/linux-elf/opensslconf.h" #endif -#if defined(HEADER_RC2_H) -/* I need to put in a mod for the alpha - eay */ -# undef RC2_INT -# define RC2_INT unsigned int +/* GOST is not included in all platform */ +#ifndef OPENSSL_NO_GOST +# define OPENSSL_NO_GOST #endif - -#if defined(HEADER_RC4_H) - /* 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; - */ -# undef RC4_INT -# if defined(__arm__) -# define RC4_INT unsigned char -# else -# define RC4_INT unsigned int -# endif - - /* - * This enables code handling data aligned at natural CPU word - * boundary. See crypto/rc4/rc4_enc.c for further details. - */ -# undef RC4_CHUNK -# if defined(_M_X64) || defined(__aarch64__) || defined(__x86_64__) -# define RC4_CHUNK unsigned long long -# elif defined(__arm__) -# define RC4_CHUNK unsigned long -# else - /* On x86 RC4_CHUNK is not defined */ -# endif -#endif - -#if defined(HEADER_NEW_DES_H) || defined(HEADER_DES_H) - /* 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). */ -# undef DES_LONG -# define DES_LONG unsigned int -#endif - -#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H) -# define CONFIG_HEADER_BN_H - - /* Should we define BN_DIV2W here? */ - - /* Only one for the following should be defined */ - /* The prime number generation stuff may not work when - * EIGHT_BIT but I don't care since I've only used this mode - * for debuging the bignum libraries */ -# undef SIXTY_FOUR_BIT_LONG -# undef SIXTY_FOUR_BIT -# undef THIRTY_TWO_BIT -# undef SIXTEEN_BIT -# undef EIGHT_BIT -# if defined(_M_X64) || defined(__aarch64__) || defined(__x86_64__) -# if defined(_LP64) -# define SIXTY_FOUR_BIT_LONG -# else -# define SIXTY_FOUR_BIT -# endif -# elif defined(_M_IX86) || defined(__i386__) || defined(__arm__) || defined(__mips__) -# define THIRTY_TWO_BIT -# endif -#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 -# if defined(_M_IX86) || defined(__i386__) -# define RC4_INDEX -# endif +/* HW_PADLOCK is not included in all platform */ +#ifndef OPENSSL_NO_HW_PADLOCK +# define OPENSSL_NO_HW_PADLOCK #endif - -#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H) -# define CONFIG_HEADER_BF_LOCL_H -# undef BF_PTR -# if defined(__arm__) -# define BF_PTR -# endif -#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 */ -# undef DES_PTR -# if !defined(_WIN32) && (defined(_M_IX86) || defined(__i386__)) -# define 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 */ -# undef DES_RISC1 -# if !defined(_WIN32) && (defined(_M_IX86) || defined(__i386__)) -# define DES_RISC1 -# endif - -# undef DES_RISC2 - -# if defined(DES_RISC1) && defined(DES_RISC2) -# error 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 */ -# undef DES_UNROLL -# if !defined(_WIN32) -# 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 */