Skip to content

Commit

Permalink
src: prefix ARCH and PLATFORM with NODE_
Browse files Browse the repository at this point in the history
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: nodejs#261
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
  • Loading branch information
piscisaureus committed Jan 8, 2015
1 parent 858b558 commit e1fe270
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 7 deletions.
6 changes: 3 additions & 3 deletions node.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -164,11 +164,11 @@
],

'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': [
Expand Down
13 changes: 9 additions & 4 deletions src/node.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit e1fe270

Please sign in to comment.