src: prefix ARCH and PLATFORM with NODE_
authorBert Belder <bertbelder@gmail.com>
Thu, 8 Jan 2015 12:05:51 +0000 (13:05 +0100)
committerBert Belder <bertbelder@gmail.com>
Thu, 8 Jan 2015 13:17:24 +0000 (14:17 +0100)
The PLATFORM preprocessor symbol is defined in node.gyp, and on Windows
it's set to "win". This conflicts with a built-in preprocessor symbol
with a different value ("win32"), which makes the linker(!) complain.
Resolve this by renaming these symbols to NODE_ARCH and NODE_PLATFORM.

PR-URL: https://github.com/iojs/io.js/pull/261
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
node.gyp
src/node.cc

index 10ca1bc..30a1bdf 100644 (file)
--- a/node.gyp
+++ b/node.gyp
       ],
 
       'defines': [
-        'NODE_WANT_INTERNALS=1',
-        'ARCH="<(target_arch)"',
-        'PLATFORM="<(OS)"',
+        'NODE_ARCH="<(target_arch)"',
+        'NODE_PLATFORM="<(OS)"',
         'NODE_TAG="<(node_tag)"',
         'NODE_V8_OPTIONS="<(node_v8_options)"',
+        'NODE_WANT_INTERNALS=1',
       ],
 
       'conditions': [
index 1a4b180..e900e61 100644 (file)
@@ -2623,12 +2623,17 @@ void SetupProcessObject(Environment* env,
 #endif
 
   // process.arch
-  READONLY_PROPERTY(process, "arch", OneByteString(env->isolate(), ARCH));
+  READONLY_PROPERTY(process, "arch", OneByteString(env->isolate(), NODE_ARCH));
 
   // process.platform
-  READONLY_PROPERTY(process,
-                    "platform",
-                    OneByteString(env->isolate(), PLATFORM));
+#ifdef _WIN32
+  // As determined by gyp, NODE_PLATFORM equals 'win' on windows. However
+  // for historic reasons process.platform should be 'win32'.
+  Local<String> platform = OneByteString(env->isolate(), "win32");
+#else
+  Local<String> platform = OneByteString(env->isolate(), NODE_PLATFORM);
+#endif
+  READONLY_PROPERTY(process, "platform", platform);
 
   // process.argv
   Local<Array> arguments = Array::New(env->isolate(), argc);