From a08f8e28ca6ae2bce4643df3cd6edcbb9c42a2d4 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Tue, 14 Oct 2014 22:52:16 +0200 Subject: [PATCH] build: add x32 support This commit adds preliminary x32 support. Configure with: $ ./configure --dest-cpu=x32 PR-URL: https://github.com/node-forward/node/pull/24 Reviewed-By: Fedor Indutny --- common.gypi | 4 ++++ configure | 2 +- deps/openssl/config/opensslconf.h | 25 ++++++++----------------- src/string_bytes.cc | 6 ++---- 4 files changed, 15 insertions(+), 22 deletions(-) diff --git a/common.gypi b/common.gypi index 463648b8a4..75583f34e8 100644 --- a/common.gypi +++ b/common.gypi @@ -185,6 +185,10 @@ 'cflags': [ '-m32' ], 'ldflags': [ '-m32' ], }], + [ 'target_arch=="x32"', { + 'cflags': [ '-mx32' ], + 'ldflags': [ '-mx32' ], + }], [ 'target_arch=="x64"', { 'cflags': [ '-m64' ], 'ldflags': [ '-m64' ], diff --git a/configure b/configure index 1c8e33633b..b9e5473816 100755 --- a/configure +++ b/configure @@ -31,7 +31,7 @@ parser.add_option('--debug', parser.add_option('--dest-cpu', action='store', dest='dest_cpu', - help='CPU architecture to build for. Valid values are: arm, ia32, x64') + help='CPU architecture to build for. Valid values are: arm, ia32, x32, x64') parser.add_option('--dest-os', action='store', diff --git a/deps/openssl/config/opensslconf.h b/deps/openssl/config/opensslconf.h index 9bf23692d6..37e5c4f54a 100644 --- a/deps/openssl/config/opensslconf.h +++ b/deps/openssl/config/opensslconf.h @@ -190,10 +190,8 @@ * boundary. See crypto/rc4/rc4_enc.c for further details. */ # undef RC4_CHUNK -# if (defined(_M_X64) || defined(__x86_64__)) && defined(_WIN32) +# if defined(_M_X64) || defined(__x86_64__) # define RC4_CHUNK unsigned long long -# elif (defined(_M_X64) || defined(__x86_64__)) && !defined(_WIN32) -# define RC4_CHUNK unsigned long # elif defined(__arm__) # define RC4_CHUNK unsigned long # else @@ -205,21 +203,12 @@ /* 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 -# if defined(_M_X64) || defined(__x86_64__) || defined(__arm__) || defined(__mips__) -# define DES_LONG unsigned int -# elif defined(_M_IX86) || defined(__i386__) -# define DES_LONG unsigned long -# endif +# define DES_LONG unsigned int #endif #if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H) # define CONFIG_HEADER_BN_H -# undef BL_LLONG -# if defined(_M_IX86) || defined(__i386__) || defined(__arm__) -# define BL_LLONG -# endif - /* Should we define BN_DIV2W here? */ /* Only one for the following should be defined */ @@ -231,10 +220,12 @@ # undef THIRTY_TWO_BIT # undef SIXTEEN_BIT # undef EIGHT_BIT -# if (defined(_M_X64) || defined(__x86_64__)) && defined(_WIN32) -# define SIXTY_FOUR_BIT -# elif (defined(_M_X64) || defined(__x86_64__)) && !defined(_WIN32) -# define SIXTY_FOUR_BIT_LONG +# if defined(_M_X64) || defined(__x86_64__) +# if defined(_WIN64) || 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 diff --git a/src/string_bytes.cc b/src/string_bytes.cc index 399854acb7..7986752d7f 100644 --- a/src/string_bytes.cc +++ b/src/string_bytes.cc @@ -526,8 +526,7 @@ static bool contains_non_ascii(const char* src, size_t len) { } -#if defined(__x86_64__) || defined(_WIN64) || defined(__PPC64__) || \ - defined(_ARCH_PPC64) +#if defined(_WIN64) || defined(_LP64) const uintptr_t mask = 0x8080808080808080ll; #else const uintptr_t mask = 0x80808080l; @@ -582,8 +581,7 @@ static void force_ascii(const char* src, char* dst, size_t len) { } } -#if defined(__x86_64__) || defined(_WIN64) || defined(__PPC64__) || \ - defined(_ARCH_PPC64) +#if defined(_WIN64) || defined(_LP64) const uintptr_t mask = ~0x8080808080808080ll; #else const uintptr_t mask = ~0x80808080l;