summaryrefslogtreecommitdiff
path: root/tools/gyp_node.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/gyp_node.py')
-rwxr-xr-xtools/gyp_node.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/tools/gyp_node.py b/tools/gyp_node.py
new file mode 100755
index 000000000..7b495055c
--- /dev/null
+++ b/tools/gyp_node.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+import glob
+import os
+import shlex
+import sys
+
+script_dir = os.path.dirname(__file__)
+node_root = os.path.normpath(os.path.join(script_dir, os.pardir))
+
+sys.path.insert(0, os.path.join(node_root, 'tools', 'gyp', 'pylib'))
+import gyp
+
+# Directory within which we want all generated files (including Makefiles)
+# to be written.
+output_dir = os.path.join(os.path.abspath(node_root), 'out')
+
+def run_gyp(args):
+ rc = gyp.main(args)
+ if rc != 0:
+ print 'Error running GYP'
+ sys.exit(rc)
+
+if __name__ == '__main__':
+ args = sys.argv[1:]
+
+ # GYP bug.
+ # On msvs it will crash if it gets an absolute path.
+ # On Mac/make it will crash if it doesn't get an absolute path.
+ if sys.platform == 'win32':
+ args.append(os.path.join(node_root, 'node.gyp'))
+ common_fn = os.path.join(node_root, 'common.gypi')
+ options_fn = os.path.join(node_root, 'config.gypi')
+ else:
+ args.append(os.path.join(os.path.abspath(node_root), 'node.gyp'))
+ common_fn = os.path.join(os.path.abspath(node_root), 'common.gypi')
+ options_fn = os.path.join(os.path.abspath(node_root), 'config.gypi')
+
+ if os.path.exists(common_fn):
+ args.extend(['-I', common_fn])
+
+ if os.path.exists(options_fn):
+ args.extend(['-I', options_fn])
+
+ args.append('--depth=' + node_root)
+
+ # There's a bug with windows which doesn't allow this feature.
+ if sys.platform != 'win32' and 'ninja' not in args:
+ # Tell gyp to write the Makefiles into output_dir
+ args.extend(['--generator-output', output_dir])
+
+ # Tell make to write its output into the same dir
+ args.extend(['-Goutput_dir=' + output_dir])
+
+ args.append('-Dcomponent=static_library')
+ args.append('-Dlibrary=static_library')
+ gyp_args = list(args)
+ run_gyp(gyp_args)