build: add x32 support
authorBen Noordhuis <info@bnoordhuis.nl>
Tue, 14 Oct 2014 20:52:16 +0000 (22:52 +0200)
committerBen Noordhuis <info@bnoordhuis.nl>
Thu, 16 Oct 2014 20:39:17 +0000 (22:39 +0200)
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 <fedor@indutny.com>
common.gypi
configure
deps/openssl/config/opensslconf.h
src/string_bytes.cc

index 463648b..75583f3 100644 (file)
             'cflags': [ '-m32' ],
             'ldflags': [ '-m32' ],
           }],
+          [ 'target_arch=="x32"', {
+            'cflags': [ '-mx32' ],
+            'ldflags': [ '-mx32' ],
+          }],
           [ 'target_arch=="x64"', {
             'cflags': [ '-m64' ],
             'ldflags': [ '-m64' ],
index 1c8e336..b9e5473 100755 (executable)
--- 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',
index 9bf2369..37e5c4f 100644 (file)
    * 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
  /* 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 */
 # 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
index 399854a..7986752 100644 (file)
@@ -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;