diff options
author | Jonathan Buchanan <jonathan.russ.buchanan@gmail.com> | 2022-07-15 00:55:06 -0400 |
---|---|---|
committer | Jonathan Buchanan <jonathan.russ.buchanan@gmail.com> | 2022-07-15 00:55:06 -0400 |
commit | 4e5c5a984472426b2d8fc9970b96690842e19740 (patch) | |
tree | 6f756e1d1c2fcf9b1bea22ae5eb24b5939c57660 | |
parent | b9509b499c9822229cdd6bda81b2c1e453259ec8 (diff) | |
download | ios-node-v8-4e5c5a984472426b2d8fc9970b96690842e19740.tar.gz ios-node-v8-4e5c5a984472426b2d8fc9970b96690842e19740.tar.bz2 ios-node-v8-4e5c5a984472426b2d8fc9970b96690842e19740.zip |
build different architectures in different directories
-rw-r--r-- | Makefile | 121 | ||||
-rwxr-xr-x | configure.py | 8 | ||||
-rwxr-xr-x | taler-ios-build/arm64 | 19 | ||||
-rwxr-xr-x | taler-ios-build/build-ios-node | 5 | ||||
-rwxr-xr-x | taler-ios-build/x64 | 19 | ||||
-rwxr-xr-x | tools/gyp_node.py | 8 |
6 files changed, 78 insertions, 102 deletions
@@ -47,6 +47,7 @@ EXEEXT := $(shell $(PYTHON) -c \ "import sys; print('.exe' if sys.platform == 'win32' else '')") NODE_EXE = node$(EXEEXT) +OUTPUT_DIR ?= out NODE ?= ./$(NODE_EXE) NODE_G_EXE = node_g$(EXEEXT) NPM ?= ./deps/npm/bin/npm-cli.js @@ -74,9 +75,9 @@ available-node = \ .PHONY: all # BUILDTYPE=Debug builds both release and debug builds. If you want to compile -# just the debug build, run `make -C out BUILDTYPE=Debug` instead. +# just the debug build, run `make -C $(OUTPUT_DIR) BUILDTYPE=Debug` instead. ifeq ($(BUILDTYPE),Release) -all: $(NODE_EXE) ## Default target, builds node in out/Release/node. +all: $(NODE_EXE) ## Default target, builds node in $(OUTPUT_DIR)/Release/node. else all: $(NODE_EXE) $(NODE_G_EXE) endif @@ -88,7 +89,7 @@ help: ## Print help for targets with comments. @grep -E '^[a-zA-Z0-9._-]+:.*?## .*$$' Makefile | sort | \ awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}' -# The .PHONY is needed to ensure that we recursively use the out/Makefile +# The .PHONY is needed to ensure that we recursively use the $(OUTPUT_DIR)/Makefile # to check for changes. .PHONY: $(NODE_EXE) $(NODE_G_EXE) @@ -100,10 +101,10 @@ help: ## Print help for targets with comments. ifeq ($(BUILD_WITH), make) $(NODE_EXE): build_type:=Release $(NODE_G_EXE): build_type:=Debug -$(NODE_EXE) $(NODE_G_EXE): config.gypi out/Makefile - $(MAKE) -C out BUILDTYPE=${build_type} V=$(V) $(PARALLEL_ARGS) +$(NODE_EXE) $(NODE_G_EXE): config.gypi $(OUTPUT_DIR)/Makefile + $(MAKE) -C $(OUTPUT_DIR) BUILDTYPE=${build_type} V=$(V) $(PARALLEL_ARGS) if [ ! -r $@ -o ! -L $@ ]; then \ - ln -fs out/${build_type}/$(NODE_EXE) $@; fi + ln -fs $(OUTPUT_DIR)/${build_type}/$(NODE_EXE) $@; fi else ifeq ($(BUILD_WITH), ninja) ifeq ($(V),1) @@ -114,13 +115,13 @@ ifdef JOBS else NINJA_ARGS := $(NINJA_ARGS) $(filter -j%,$(MAKEFLAGS)) endif -$(NODE_EXE): config.gypi out/Release/build.ninja - ninja -C out/Release $(NINJA_ARGS) - if [ ! -r $@ -o ! -L $@ ]; then ln -fs out/Release/$(NODE_EXE) $@; fi +$(NODE_EXE): config.gypi $(OUTPUT_DIR)/Release/build.ninja + ninja -C $(OUTPUT_DIR)/Release $(NINJA_ARGS) + if [ ! -r $@ -o ! -L $@ ]; then ln -fs $(OUTPUT_DIR)/Release/$(NODE_EXE) $@; fi -$(NODE_G_EXE): config.gypi out/Debug/build.ninja - ninja -C out/Debug $(NINJA_ARGS) - if [ ! -r $@ -o ! -L $@ ]; then ln -fs out/Debug/$(NODE_EXE) $@; fi +$(NODE_G_EXE): config.gypi $(OUTPUT_DIR)/Debug/build.ninja + ninja -C $(OUTPUT_DIR)/Debug $(NINJA_ARGS) + if [ ! -r $@ -o ! -L $@ ]; then ln -fs $(OUTPUT_DIR)/Debug/$(NODE_EXE) $@; fi else $(NODE_EXE) $(NODE_G_EXE): $(warning This Makefile currently only supports building with 'make' or 'ninja') @@ -137,7 +138,7 @@ endif with-code-cache test-code-cache: $(warning '$@' target is a noop) -out/Makefile: config.gypi common.gypi node.gyp \ +$(OUTPUT_DIR)/Makefile: config.gypi common.gypi node.gyp \ deps/uv/uv.gyp deps/llhttp/llhttp.gyp deps/zlib/zlib.gyp \ tools/v8_gypfiles/toolchain.gypi tools/v8_gypfiles/features.gypi \ tools/v8_gypfiles/inspector.gypi tools/v8_gypfiles/v8.gyp @@ -163,9 +164,9 @@ uninstall: ## Uninstalls node from $PREFIX (default=/usr/local). .PHONY: clean clean: ## Remove build artifacts. - $(RM) -r out/Makefile $(NODE_EXE) $(NODE_G_EXE) out/$(BUILDTYPE)/$(NODE_EXE) \ - out/$(BUILDTYPE)/node.exp - @if [ -d out ]; then $(FIND) out/ -name '*.o' -o -name '*.a' -o -name '*.d' | xargs $(RM) -r; fi + $(RM) -r $(OUTPUT_DIR)/Makefile $(NODE_EXE) $(NODE_G_EXE) $(OUTPUT_DIR)/$(BUILDTYPE)/$(NODE_EXE) \ + $(OUTPUT_DIR)/$(BUILDTYPE)/node.exp + @if [ -d $(OUTPUT_DIR) ]; then $(FIND) $(OUTPUT_DIR)/ -name '*.o' -o -name '*.a' -o -name '*.d' | xargs $(RM) -r; fi $(RM) -r node_modules @if [ -d deps/icu ]; then echo deleting deps/icu; $(RM) -r deps/icu; fi $(RM) test.tap @@ -181,7 +182,7 @@ testclean: .PHONY: distclean distclean: - $(RM) -r out + $(RM) -r $(OUTPUT_DIR) $(RM) config.gypi icu_config.gypi config_fips.gypi $(RM) config.mk $(RM) -r $(NODE_EXE) $(NODE_G_EXE) @@ -200,7 +201,7 @@ coverage-clean: $(RM) -r node_modules $(RM) -r gcovr build $(RM) -r coverage/tmp - $(FIND) out/$(BUILDTYPE)/obj.target \( -name "*.gcda" -o -name "*.gcno" \) \ + $(FIND) $(OUTPUT_DIR)/$(BUILDTYPE)/obj.target \( -name "*.gcda" -o -name "*.gcno" \) \ -type f -exec $(RM) {} \; .PHONY: coverage @@ -232,15 +233,15 @@ coverage-build-js: .PHONY: coverage-test coverage-test: coverage-build - $(RM) out/$(BUILDTYPE)/obj.target/node/src/*.gcda - $(RM) out/$(BUILDTYPE)/obj.target/node/src/*/*.gcda - $(RM) out/$(BUILDTYPE)/obj.target/node_lib/src/*.gcda - $(RM) out/$(BUILDTYPE)/obj.target/node_lib/src/*/*.gcda + $(RM) $(OUTPUT_DIR)/$(BUILDTYPE)/obj.target/node/src/*.gcda + $(RM) $(OUTPUT_DIR)/$(BUILDTYPE)/obj.target/node/src/*/*.gcda + $(RM) $(OUTPUT_DIR)/$(BUILDTYPE)/obj.target/node_lib/src/*.gcda + $(RM) $(OUTPUT_DIR)/$(BUILDTYPE)/obj.target/node_lib/src/*/*.gcda -NODE_V8_COVERAGE=coverage/tmp \ TEST_CI_ARGS="$(TEST_CI_ARGS) --type=coverage" $(MAKE) $(COVTESTS) $(MAKE) coverage-report-js - -(cd out && "../gcovr/scripts/gcovr" \ - --gcov-exclude='.*\b(deps|usr|out|cctest|embedding)\b' -v \ + -(cd $(OUTPUT_DIR) && "../gcovr/scripts/gcovr" \ + --gcov-exclude='.*\b(deps|usr|$(OUTPUT_DIR)|cctest|embedding)\b' -v \ -r Release/obj.target --html --html-detail -o ../coverage/cxxcoverage.html \ --gcov-executable="$(GCOV)") @echo -n "Javascript coverage %: " @@ -258,15 +259,15 @@ coverage-report-js: .PHONY: cctest # Runs the C++ tests using the built `cctest` executable. cctest: all - @out/$(BUILDTYPE)/$@ --gtest_filter=$(GTEST_FILTER) - @out/$(BUILDTYPE)/embedtest "require('./test/embedding/test-embedding.js')" + @$(OUTPUT_DIR)/$(BUILDTYPE)/$@ --gtest_filter=$(GTEST_FILTER) + @$(OUTPUT_DIR)/$(BUILDTYPE)/embedtest "require('./test/embedding/test-embedding.js')" .PHONY: list-gtests list-gtests: -ifeq (,$(wildcard out/$(BUILDTYPE)/cctest)) +ifeq (,$(wildcard $(OUTPUT_DIR)/$(BUILDTYPE)/cctest)) $(error Please run 'make cctest' first) endif - @out/$(BUILDTYPE)/cctest --gtest_list_tests + @$(OUTPUT_DIR)/$(BUILDTYPE)/cctest --gtest_list_tests .PHONY: v8 # Related CI job: node-test-commit-v8-linux @@ -334,7 +335,7 @@ test-check-deopts: all DOCBUILDSTAMP_PREREQS = tools/doc/addon-verify.js doc/api/addons.md ifeq ($(OSTYPE),aix) -DOCBUILDSTAMP_PREREQS := $(DOCBUILDSTAMP_PREREQS) out/$(BUILDTYPE)/node.exp +DOCBUILDSTAMP_PREREQS := $(DOCBUILDSTAMP_PREREQS) $(OUTPUT_DIR)/$(BUILDTYPE)/node.exp endif node_use_openssl = $(call available-node,"-p" \ @@ -511,11 +512,11 @@ test-ci-js: | clear-stalled # Related CI jobs: most CI tests, excluding node-test-commit-arm-fanned test-ci: LOGLEVEL := info test-ci: | clear-stalled bench-addons-build build-addons build-js-native-api-tests build-node-api-tests doc-only - out/Release/cctest --gtest_output=xml:out/junit/cctest.xml + $(OUTPUT_DIR)/Release/cctest --gtest_output=xml:$(OUTPUT_DIR)/junit/cctest.xml $(PYTHON) tools/test.py $(PARALLEL_ARGS) -p tap --logfile test.tap \ --mode=$(BUILDTYPE_LOWER) --flaky-tests=$(FLAKY_TESTS) \ $(TEST_CI_ARGS) $(CI_JS_SUITES) $(CI_NATIVE_SUITES) $(CI_DOC) - out/Release/embedtest 'require("./test/embedding/test-embedding.js")' + $(OUTPUT_DIR)/Release/embedtest 'require("./test/embedding/test-embedding.js")' $(info Clean up any leftover processes, error if found.) ps awwx | grep Release/node | grep -v grep | cat @PS_OUT=`ps awwx | grep Release/node | grep -v grep | awk '{print $$1}'`; \ @@ -676,12 +677,12 @@ test-v8 test-v8-intl test-v8-benchmarks test-v8-all: $(warning Use the git repo instead: $$ git clone https://github.com/nodejs/node.git) endif -apidoc_dirs = out/doc out/doc/api out/doc/api/assets +apidoc_dirs = $(OUTPUT_DIR)/doc $(OUTPUT_DIR)/doc/api $(OUTPUT_DIR)/doc/api/assets apidoc_sources = $(wildcard doc/api/*.md) -apidocs_html = $(addprefix out/,$(apidoc_sources:.md=.html)) -apidocs_json = $(addprefix out/,$(apidoc_sources:.md=.json)) +apidocs_html = $(addprefix $(OUTPUT_DIR)/,$(apidoc_sources:.md=.html)) +apidocs_json = $(addprefix $(OUTPUT_DIR)/,$(apidoc_sources:.md=.json)) -apiassets = $(subst api_assets,api/assets,$(addprefix out/,$(wildcard doc/api_assets/*))) +apiassets = $(subst api_assets,api/assets,$(addprefix $(OUTPUT_DIR)/,$(wildcard doc/api_assets/*))) tools/doc/node_modules: tools/doc/package.json @if [ "$(shell $(node_use_openssl))" != "true" ]; then \ @@ -696,70 +697,70 @@ doc-only: tools/doc/node_modules \ @if [ "$(shell $(node_use_openssl))" != "true" ]; then \ echo "Skipping doc-only (no crypto)"; \ else \ - $(MAKE) out/doc/api/all.html out/doc/api/all.json; \ + $(MAKE) $(OUTPUT_DIR)/doc/api/all.html $(OUTPUT_DIR)/doc/api/all.json; \ fi .PHONY: doc doc: $(NODE_EXE) doc-only -out/doc: +$(OUTPUT_DIR)/doc: mkdir -p $@ # If it's a source tarball, doc/api already contains the generated docs. # Just copy everything under doc/api over. -out/doc/api: doc/api +$(OUTPUT_DIR)/doc/api: doc/api mkdir -p $@ - cp -r doc/api out/doc + cp -r doc/api $(OUTPUT_DIR)/doc # If it's a source tarball, assets are already in doc/api/assets -out/doc/api/assets: +$(OUTPUT_DIR)/doc/api/assets: mkdir -p $@ - if [ -d doc/api/assets ]; then cp -r doc/api/assets out/doc/api; fi; + if [ -d doc/api/assets ]; then cp -r doc/api/assets $(OUTPUT_DIR)/doc/api; fi; # If it's not a source tarball, we need to copy assets from doc/api_assets -out/doc/api/assets/%: doc/api_assets/% | out/doc/api/assets - @cp $< $@ ; $(RM) out/doc/api/assets/README.md +$(OUTPUT_DIR)/doc/api/assets/%: doc/api_assets/% | $(OUTPUT_DIR)/doc/api/assets + @cp $< $@ ; $(RM) $(OUTPUT_DIR)/doc/api/assets/README.md run-npm-ci = $(PWD)/$(NPM) ci -LINK_DATA = out/doc/apilinks.json -VERSIONS_DATA = out/previous-doc-versions.json +LINK_DATA = $(OUTPUT_DIR)/doc/apilinks.json +VERSIONS_DATA = $(OUTPUT_DIR)/previous-doc-versions.json gen-api = tools/doc/generate.js --node-version=$(FULLVERSION) \ - --apilinks=$(LINK_DATA) $< --output-directory=out/doc/api \ + --apilinks=$(LINK_DATA) $< --output-directory=$(OUTPUT_DIR)/doc/api \ --versions-file=$(VERSIONS_DATA) gen-apilink = tools/doc/apilinks.js $(LINK_DATA) $(wildcard lib/*.js) -$(LINK_DATA): $(wildcard lib/*.js) tools/doc/apilinks.js | out/doc +$(LINK_DATA): $(wildcard lib/*.js) tools/doc/apilinks.js | $(OUTPUT_DIR)/doc $(call available-node, $(gen-apilink)) # Regenerate previous versions data if the current version changes $(VERSIONS_DATA): CHANGELOG.md src/node_version.h tools/doc/versions.js $(call available-node, tools/doc/versions.js $@) -out/doc/api/%.json out/doc/api/%.html: doc/api/%.md tools/doc/generate.js \ +$(OUTPUT_DIR)/doc/api/%.json o$(OUTPUT_DIR)ut/doc/api/%.html: doc/api/%.md tools/doc/generate.js \ tools/doc/markdown.js tools/doc/html.js tools/doc/json.js \ - tools/doc/apilinks.js $(VERSIONS_DATA) | $(LINK_DATA) out/doc/api + tools/doc/apilinks.js $(VERSIONS_DATA) | $(LINK_DATA) $(OUTPUT_DIR)/doc/api $(call available-node, $(gen-api)) -out/doc/api/all.html: $(apidocs_html) tools/doc/allhtml.js \ - tools/doc/apilinks.js | out/doc/api +$(OUTPUT_DIR)/doc/api/all.html: $(apidocs_html) tools/doc/allhtml.js \ + tools/doc/apilinks.js | $(OUTPUT_DIR)/doc/api $(call available-node, tools/doc/allhtml.js) -out/doc/api/all.json: $(apidocs_json) tools/doc/alljson.js | out/doc/api +$(OUTPUT_DIR)/doc/api/all.json: $(apidocs_json) tools/doc/alljson.js | $(OUTPUT_DIR)/doc/api $(call available-node, tools/doc/alljson.js) .PHONY: docopen -docopen: out/doc/api/all.html +docopen: $(OUTPUT_DIR)/doc/api/all.html @$(PYTHON) -mwebbrowser file://$(abspath $<) .PHONY: docserve docserve: $(apidocs_html) $(apiassets) - @$(PYTHON) -m http.server 8000 --bind 127.0.0.1 --directory out/doc/api + @$(PYTHON) -m http.server 8000 --bind 127.0.0.1 --directory $(OUTPUT_DIR)/doc/api .PHONY: docclean docclean: - $(RM) -r out/doc + $(RM) -r $(OUTPUT_DIR)/doc $(RM) "$(VERSIONS_DATA)" RAWVER=$(shell $(PYTHON) tools/getnodeversion.py) @@ -904,7 +905,7 @@ SKIP_XZ ?= 0 XZ = $(shell [ $(HAS_XZ) -eq 1 -a $(SKIP_XZ) -eq 0 ] && echo 1 || echo 0) XZ_COMPRESSION ?= 9e PKG=$(TARNAME).pkg -MACOSOUTDIR=out/macos +MACOSOUTDIR=$(OUTPUT_DIR)/macos ifeq ($(SKIP_XZ), 1) check-xz: @@ -1019,7 +1020,7 @@ $(TARBALL): release-only doc-only git checkout-index -a -f --prefix=$(TARNAME)/ mkdir -p $(TARNAME)/doc/api cp doc/node.1 $(TARNAME)/doc/node.1 - cp -r out/doc/api/* $(TARNAME)/doc/api/ + cp -r $(OUTPUT_DIR)/doc/api/* $(TARNAME)/doc/api/ $(RM) -r $(TARNAME)/.editorconfig $(RM) -r $(TARNAME)/.git* $(RM) -r $(TARNAME)/.mailmap @@ -1071,8 +1072,8 @@ endif # Note: this is strictly for release builds on release machines only. doc-upload: doc ssh $(STAGINGSERVER) "mkdir -p nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/docs/" - chmod -R ug=rw-x+X,o=r+X out/doc/ - scp -pr out/doc/* $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/docs/ + chmod -R ug=rw-x+X,o=r+X $(OUTPUT_DIR)/doc/ + scp -pr $(OUTPUT_DIR)/doc/* $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/docs/ ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/docs.done" .PHONY: $(TARBALL)-headers @@ -1108,7 +1109,7 @@ endif $(BINARYTAR): release-only $(RM) -r $(BINARYNAME) - $(RM) -r out/deps out/Release + $(RM) -r $(OUTPUT_DIR)/deps $(OUTPUT_DIR)/Release $(PYTHON) ./configure \ --prefix=/ \ --dest-cpu=$(DESTCPU) \ diff --git a/configure.py b/configure.py index f6548bebc9..2005844c26 100755 --- a/configure.py +++ b/configure.py @@ -87,6 +87,12 @@ parser.add_argument('--debug', default=None, help='also build debug build') +parser.add_argument('--output-dir', + action='store', + dest='output_dir', + default='out', + help='directory to place build files in') + parser.add_argument('--debug-node', action='store_true', dest='debug_node', @@ -1996,5 +2002,5 @@ if warn.warned and not options.verbose: print("gyp args:", gyp_args) print_verbose("running: \n " + " ".join(['python', 'tools/gyp_node.py'] + gyp_args)) -run_gyp(gyp_args) +run_gyp(gyp_args, options.output_dir) info('configure completed successfully') diff --git a/taler-ios-build/arm64 b/taler-ios-build/arm64 index ff08370c3b..9b7e3063a1 100755 --- a/taler-ios-build/arm64 +++ b/taler-ios-build/arm64 @@ -13,23 +13,6 @@ export DEST_CPU_ARCH=arm64 cd $scriptdir -# Cache build files so we don't have to rebuild each time -if [ -d ../out ]; then - rm -rf ../out -fi -if [ -d ../out-arm64 ]; then - mv ../out-arm64 ../out -else - mkdir ../out - cp ../tools/gyp/pylib/gyp/mac_tool.py ../out/gyp-mac-tool -fi +cp ../tools/gyp/pylib/gyp/mac_tool.py ../out-arm64/gyp-mac-tool ./build-ios-node arm64 - -cd $scriptdir/.. -x=$scriptdir/compiled/node-arm64/ -mkdir -p $x -cp out/Release/*.a $x/ -cd $scriptdir - -mv ../out ../out-arm64 diff --git a/taler-ios-build/build-ios-node b/taler-ios-build/build-ios-node index 573ceff867..480addb84f 100755 --- a/taler-ios-build/build-ios-node +++ b/taler-ios-build/build-ios-node @@ -6,12 +6,15 @@ set -eu -o pipefail scriptdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" +outdir="out-$DEST_CPU_ARCH" cd $scriptdir/.. export GYP_DEFINES="target_arch=$DEST_CPU_ARCH host_os=mac target_os=ios" function myconf() { ./configure \ + --debug \ + --output-dir=$outdir \ --cross-compiling \ --dest-cpu=$DEST_CPU_ARCH \ --dest-os=ios \ @@ -23,4 +26,4 @@ function myconf() { --without-node-snapshot } -myconf && make +myconf && make OUTPUT_DIR=$outdir diff --git a/taler-ios-build/x64 b/taler-ios-build/x64 index d887c9f9f1..956ff14d4c 100755 --- a/taler-ios-build/x64 +++ b/taler-ios-build/x64 @@ -13,23 +13,6 @@ export DEST_CPU_ARCH=x64 cd $scriptdir -# Cache build files so we don't have to rebuild each time -if [ -d ../out ]; then - rm -rf ../out -fi -if [ -d ../out-x64 ]; then - mv ../out-x64 ../out -else - mkdir ../out - cp ../tools/gyp/pylib/gyp/mac_tool.py ../out/gyp-mac-tool -fi +cp ../tools/gyp/pylib/gyp/mac_tool.py ../out-x64/gyp-mac-tool ./build-ios-node x64 - -cd $scriptdir/.. -x=$scriptdir/compiled/node-x64/ -mkdir -p $x -cp out/Release/*.a $x/ -cd $scriptdir - -mv ../out ../out-x64 diff --git a/tools/gyp_node.py b/tools/gyp_node.py index 8c7493f329..d30b23f2c9 100755 --- a/tools/gyp_node.py +++ b/tools/gyp_node.py @@ -9,11 +9,11 @@ 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, output_dir_name='out'): + # Directory within which we want all generated files (including Makefiles) + # to be written. + output_dir = os.path.join(os.path.abspath(node_root), output_dir_name) -def run_gyp(args): # 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. |