2012-01-17 22:02:15 +00:00
|
|
|
-include config.mk
|
|
|
|
|
2011-11-15 03:02:44 +00:00
|
|
|
BUILDTYPE ?= Release
|
2012-01-08 20:17:28 +00:00
|
|
|
PYTHON ?= python
|
2012-04-21 20:40:48 +00:00
|
|
|
DESTDIR ?=
|
2012-08-02 20:35:41 +00:00
|
|
|
SIGN ?=
|
2013-04-23 18:17:09 +00:00
|
|
|
PREFIX ?= /usr/local
|
2015-08-26 10:38:48 +00:00
|
|
|
FLAKY_TESTS ?= run
|
2015-08-26 10:41:16 +00:00
|
|
|
TEST_CI_ARGS ?=
|
2015-08-13 16:14:34 +00:00
|
|
|
STAGINGSERVER ?= node-www
|
2016-10-09 14:24:23 +00:00
|
|
|
LOGLEVEL ?= silent
|
2015-06-10 07:05:26 +00:00
|
|
|
OSTYPE := $(shell uname -s | tr '[A-Z]' '[a-z]')
|
2017-09-29 01:29:54 +00:00
|
|
|
COVTESTS ?= test-cov
|
2017-02-21 07:43:21 +00:00
|
|
|
GTEST_FILTER ?= "*"
|
2017-05-15 18:24:43 +00:00
|
|
|
GNUMAKEFLAGS += --no-print-directory
|
2017-10-09 18:30:38 +00:00
|
|
|
GCOV ?= gcov
|
2018-01-08 15:31:07 +00:00
|
|
|
PWD = $(CURDIR)
|
2009-12-06 06:35:26 +00:00
|
|
|
|
2016-04-15 03:15:40 +00:00
|
|
|
ifdef JOBS
|
|
|
|
PARALLEL_ARGS = -j $(JOBS)
|
2018-04-18 09:18:38 +00:00
|
|
|
else
|
|
|
|
PARALLEL_ARGS = -J
|
2016-04-15 03:15:40 +00:00
|
|
|
endif
|
|
|
|
|
test: run v8 tests from node tree
Ported by exinfinitum from a PR by jasnell:
see https://github.com/nodejs/node-v0.x-archive/pull/14185
Allows the running of v8 tests on node's packaged v8 source code.
Note that the limited win32 support added by jasnell has NOT been ported,
and so these tests are currently UNIX ONLY.
Note that gclient depot tools
(see https://commondatastorage.googleapis.com/
chrome-infra-docs/flat/depot_tools/docs/html/
depot_tools_tutorial.html#_setting_up) and subversion are required
to run tests.
To perform tests, run the following commands:
make v8 DESTCPU=(ARCH)
make test-v8 DESTCPU=(ARCH)
where (ARCH) is your CPU architecture, e.g. x64, ia32.
DESTCPU MUST be specified for this to work properly.
Can also do tests on debug build by using "make test-v8 DESTCPU=(ARCH)
BUILDTYPE=Debug", or perform intl or benchmark tests via make
test-v8-intl or test-v8-benchmarks respectively.
Note that by default, quickcheck and TAP output are disabled, and i18n
is enabled. To activate these options, use options"QUICKCHECK=True" and
"ENABLE_V8_TAP=True" respectively.
Use "DISABLE_V8_I18N" to disable i18n.
Use V8_BUILD_OPTIONS to allow custom user-defined flags to be
appended onto "make v8".
Any tests performed after changes to the packaged v8 file will require
recompiling of v8, which can be done using "make v8 DESTCPU=(ARCH)".
Finally, two additional files necessary for one of the v8 tests have
been added to the v8 folder.
PR-URL: https://github.com/nodejs/node/pull/4704
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: targos - Michaël Zasso <mic.besace@gmail.com>
2015-03-28 04:39:06 +00:00
|
|
|
ifdef ENABLE_V8_TAP
|
2016-06-28 18:35:18 +00:00
|
|
|
TAP_V8 := --junitout $(PWD)/v8-tap.xml
|
|
|
|
TAP_V8_INTL := --junitout $(PWD)/v8-intl-tap.xml
|
|
|
|
TAP_V8_BENCHMARKS := --junitout $(PWD)/v8-benchmarks-tap.xml
|
test: run v8 tests from node tree
Ported by exinfinitum from a PR by jasnell:
see https://github.com/nodejs/node-v0.x-archive/pull/14185
Allows the running of v8 tests on node's packaged v8 source code.
Note that the limited win32 support added by jasnell has NOT been ported,
and so these tests are currently UNIX ONLY.
Note that gclient depot tools
(see https://commondatastorage.googleapis.com/
chrome-infra-docs/flat/depot_tools/docs/html/
depot_tools_tutorial.html#_setting_up) and subversion are required
to run tests.
To perform tests, run the following commands:
make v8 DESTCPU=(ARCH)
make test-v8 DESTCPU=(ARCH)
where (ARCH) is your CPU architecture, e.g. x64, ia32.
DESTCPU MUST be specified for this to work properly.
Can also do tests on debug build by using "make test-v8 DESTCPU=(ARCH)
BUILDTYPE=Debug", or perform intl or benchmark tests via make
test-v8-intl or test-v8-benchmarks respectively.
Note that by default, quickcheck and TAP output are disabled, and i18n
is enabled. To activate these options, use options"QUICKCHECK=True" and
"ENABLE_V8_TAP=True" respectively.
Use "DISABLE_V8_I18N" to disable i18n.
Use V8_BUILD_OPTIONS to allow custom user-defined flags to be
appended onto "make v8".
Any tests performed after changes to the packaged v8 file will require
recompiling of v8, which can be done using "make v8 DESTCPU=(ARCH)".
Finally, two additional files necessary for one of the v8 tests have
been added to the v8 folder.
PR-URL: https://github.com/nodejs/node/pull/4704
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: targos - Michaël Zasso <mic.besace@gmail.com>
2015-03-28 04:39:06 +00:00
|
|
|
endif
|
|
|
|
|
2016-02-29 22:44:31 +00:00
|
|
|
V8_TEST_OPTIONS = $(V8_EXTRA_TEST_OPTIONS)
|
test: run v8 tests from node tree
Ported by exinfinitum from a PR by jasnell:
see https://github.com/nodejs/node-v0.x-archive/pull/14185
Allows the running of v8 tests on node's packaged v8 source code.
Note that the limited win32 support added by jasnell has NOT been ported,
and so these tests are currently UNIX ONLY.
Note that gclient depot tools
(see https://commondatastorage.googleapis.com/
chrome-infra-docs/flat/depot_tools/docs/html/
depot_tools_tutorial.html#_setting_up) and subversion are required
to run tests.
To perform tests, run the following commands:
make v8 DESTCPU=(ARCH)
make test-v8 DESTCPU=(ARCH)
where (ARCH) is your CPU architecture, e.g. x64, ia32.
DESTCPU MUST be specified for this to work properly.
Can also do tests on debug build by using "make test-v8 DESTCPU=(ARCH)
BUILDTYPE=Debug", or perform intl or benchmark tests via make
test-v8-intl or test-v8-benchmarks respectively.
Note that by default, quickcheck and TAP output are disabled, and i18n
is enabled. To activate these options, use options"QUICKCHECK=True" and
"ENABLE_V8_TAP=True" respectively.
Use "DISABLE_V8_I18N" to disable i18n.
Use V8_BUILD_OPTIONS to allow custom user-defined flags to be
appended onto "make v8".
Any tests performed after changes to the packaged v8 file will require
recompiling of v8, which can be done using "make v8 DESTCPU=(ARCH)".
Finally, two additional files necessary for one of the v8 tests have
been added to the v8 folder.
PR-URL: https://github.com/nodejs/node/pull/4704
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: targos - Michaël Zasso <mic.besace@gmail.com>
2015-03-28 04:39:06 +00:00
|
|
|
ifdef DISABLE_V8_I18N
|
|
|
|
V8_BUILD_OPTIONS += i18nsupport=off
|
|
|
|
endif
|
|
|
|
|
2017-10-09 18:30:38 +00:00
|
|
|
ifeq ($(OSTYPE), darwin)
|
|
|
|
GCOV = xcrun llvm-cov gcov
|
|
|
|
endif
|
|
|
|
|
test: run v8 tests from node tree
Ported by exinfinitum from a PR by jasnell:
see https://github.com/nodejs/node-v0.x-archive/pull/14185
Allows the running of v8 tests on node's packaged v8 source code.
Note that the limited win32 support added by jasnell has NOT been ported,
and so these tests are currently UNIX ONLY.
Note that gclient depot tools
(see https://commondatastorage.googleapis.com/
chrome-infra-docs/flat/depot_tools/docs/html/
depot_tools_tutorial.html#_setting_up) and subversion are required
to run tests.
To perform tests, run the following commands:
make v8 DESTCPU=(ARCH)
make test-v8 DESTCPU=(ARCH)
where (ARCH) is your CPU architecture, e.g. x64, ia32.
DESTCPU MUST be specified for this to work properly.
Can also do tests on debug build by using "make test-v8 DESTCPU=(ARCH)
BUILDTYPE=Debug", or perform intl or benchmark tests via make
test-v8-intl or test-v8-benchmarks respectively.
Note that by default, quickcheck and TAP output are disabled, and i18n
is enabled. To activate these options, use options"QUICKCHECK=True" and
"ENABLE_V8_TAP=True" respectively.
Use "DISABLE_V8_I18N" to disable i18n.
Use V8_BUILD_OPTIONS to allow custom user-defined flags to be
appended onto "make v8".
Any tests performed after changes to the packaged v8 file will require
recompiling of v8, which can be done using "make v8 DESTCPU=(ARCH)".
Finally, two additional files necessary for one of the v8 tests have
been added to the v8 folder.
PR-URL: https://github.com/nodejs/node/pull/4704
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: targos - Michaël Zasso <mic.besace@gmail.com>
2015-03-28 04:39:06 +00:00
|
|
|
BUILDTYPE_LOWER := $(shell echo $(BUILDTYPE) | tr '[A-Z]' '[a-z]')
|
|
|
|
|
2014-08-30 22:59:05 +00:00
|
|
|
# Determine EXEEXT
|
2014-10-29 14:43:09 +00:00
|
|
|
EXEEXT := $(shell $(PYTHON) -c \
|
|
|
|
"import sys; print('.exe' if sys.platform == 'win32' else '')")
|
2014-08-30 22:59:05 +00:00
|
|
|
|
2015-08-13 16:14:34 +00:00
|
|
|
NODE_EXE = node$(EXEEXT)
|
2015-11-18 22:40:03 +00:00
|
|
|
NODE ?= ./$(NODE_EXE)
|
2015-08-13 16:14:34 +00:00
|
|
|
NODE_G_EXE = node_g$(EXEEXT)
|
2016-09-05 20:34:06 +00:00
|
|
|
NPM ?= ./deps/npm/bin/npm-cli.js
|
2013-02-12 07:22:12 +00:00
|
|
|
|
2015-08-13 15:30:01 +00:00
|
|
|
# Flags for packaging.
|
|
|
|
BUILD_DOWNLOAD_FLAGS ?= --download=all
|
|
|
|
BUILD_INTL_FLAGS ?= --with-intl=small-icu
|
|
|
|
BUILD_RELEASE_FLAGS ?= $(BUILD_DOWNLOAD_FLAGS) $(BUILD_INTL_FLAGS)
|
|
|
|
|
2012-07-24 23:19:08 +00:00
|
|
|
# Default to verbose builds.
|
|
|
|
# To do quiet/pretty builds, run `make V=` to set V to an empty string,
|
|
|
|
# or set the V environment variable to an empty string.
|
|
|
|
V ?= 1
|
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: all
|
2012-01-26 22:45:16 +00:00
|
|
|
# BUILDTYPE=Debug builds both release and debug builds. If you want to compile
|
|
|
|
# just the debug build, run `make -C out BUILDTYPE=Debug` instead.
|
2011-12-17 11:23:17 +00:00
|
|
|
ifeq ($(BUILDTYPE),Release)
|
2018-01-23 10:49:25 +00:00
|
|
|
all: out/Makefile $(NODE_EXE) ## Default target, builds node in out/Release/node.
|
2011-12-17 11:23:17 +00:00
|
|
|
else
|
2018-01-23 10:49:25 +00:00
|
|
|
all: out/Makefile $(NODE_EXE) $(NODE_G_EXE)
|
2011-12-17 11:23:17 +00:00
|
|
|
endif
|
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: help
|
2017-11-26 14:41:56 +00:00
|
|
|
# To add a target to the help, add a double comment (##) on the target line.
|
|
|
|
help: ## Print help for targets with comments.
|
|
|
|
@printf "For more targets and info see the comments in the Makefile.\n\n"
|
|
|
|
@grep -E '^[a-zA-Z0-9._-]+:.*?## .*$$' Makefile | sort | \
|
|
|
|
awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}'
|
|
|
|
|
2018-01-23 10:49:25 +00:00
|
|
|
# The .PHONY is needed to ensure that we recursively use the out/Makefile
|
|
|
|
# to check for changes.
|
|
|
|
.PHONY: $(NODE_EXE) $(NODE_G_EXE)
|
2011-12-17 11:23:17 +00:00
|
|
|
|
2018-01-23 10:49:25 +00:00
|
|
|
# The -r/-L check stops it recreating the link if it is already in place,
|
|
|
|
# otherwise $(NODE_EXE) being a .PHONY target means it is always re-run.
|
|
|
|
# Without the check there is a race condition between the link being deleted
|
|
|
|
# and recreated which can break the addons build when running test-ci
|
|
|
|
# See comments on the build-addons target for some more info
|
|
|
|
$(NODE_EXE): config.gypi out/Makefile
|
2012-07-24 23:19:08 +00:00
|
|
|
$(MAKE) -C out BUILDTYPE=Release V=$(V)
|
2018-01-23 10:49:25 +00:00
|
|
|
if [ ! -r $@ -o ! -L $@ ]; then ln -fs out/Release/$(NODE_EXE) $@; fi
|
2011-12-17 11:23:17 +00:00
|
|
|
|
2018-01-23 10:49:25 +00:00
|
|
|
$(NODE_G_EXE): config.gypi out/Makefile
|
2012-07-24 23:19:08 +00:00
|
|
|
$(MAKE) -C out BUILDTYPE=Debug V=$(V)
|
2018-01-23 10:49:25 +00:00
|
|
|
if [ ! -r $@ -o ! -L $@ ]; then ln -fs out/Debug/$(NODE_EXE) $@; fi
|
2010-10-24 14:15:05 +00:00
|
|
|
|
2018-06-18 17:02:57 +00:00
|
|
|
CODE_CACHE_DIR ?= out/$(BUILDTYPE)/obj/gen
|
|
|
|
CODE_CACHE_FILE ?= $(CODE_CACHE_DIR)/node_code_cache.cc
|
|
|
|
|
|
|
|
.PHONY: with-code-cache
|
|
|
|
with-code-cache:
|
|
|
|
$(PYTHON) ./configure
|
|
|
|
$(MAKE)
|
|
|
|
mkdir -p $(CODE_CACHE_DIR)
|
|
|
|
out/$(BUILDTYPE)/$(NODE_EXE) --expose-internals tools/generate_code_cache.js $(CODE_CACHE_FILE)
|
|
|
|
$(PYTHON) ./configure --code-cache-path $(CODE_CACHE_FILE)
|
|
|
|
$(MAKE)
|
|
|
|
|
|
|
|
.PHONY: test-code-cache
|
|
|
|
test-code-cache: with-code-cache
|
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) code-cache
|
|
|
|
|
2018-01-23 10:49:25 +00:00
|
|
|
out/Makefile: common.gypi deps/uv/uv.gyp deps/http_parser/http_parser.gyp \
|
2016-06-30 16:13:07 +00:00
|
|
|
deps/zlib/zlib.gyp deps/v8/gypfiles/toolchain.gypi \
|
2018-01-26 02:35:26 +00:00
|
|
|
deps/v8/gypfiles/features.gypi deps/v8/gypfiles/v8.gyp node.gyp \
|
2018-01-23 10:49:25 +00:00
|
|
|
config.gypi
|
2013-11-10 23:15:34 +00:00
|
|
|
$(PYTHON) tools/gyp_node.py -f make
|
2012-09-04 14:03:01 +00:00
|
|
|
|
2018-01-23 10:49:25 +00:00
|
|
|
config.gypi: configure
|
2018-06-16 19:28:34 +00:00
|
|
|
@if [ -x config.status ]; then \
|
|
|
|
./config.status; \
|
|
|
|
else \
|
|
|
|
echo Missing or stale $@, please run ./$<; \
|
|
|
|
exit 1; \
|
|
|
|
fi
|
2018-01-23 10:49:25 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: install
|
2017-11-26 14:41:56 +00:00
|
|
|
install: all ## Installs node into $PREFIX (default=/usr/local).
|
2013-04-23 18:17:09 +00:00
|
|
|
$(PYTHON) tools/install.py $@ '$(DESTDIR)' '$(PREFIX)'
|
2011-12-14 13:00:10 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: uninstall
|
2017-11-26 14:41:56 +00:00
|
|
|
uninstall: ## Uninstalls node from $PREFIX (default=/usr/local).
|
2013-04-23 18:17:09 +00:00
|
|
|
$(PYTHON) tools/install.py $@ '$(DESTDIR)' '$(PREFIX)'
|
2011-11-23 12:19:19 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: clean
|
2017-11-26 14:41:56 +00:00
|
|
|
clean: ## Remove build artifacts.
|
2017-04-01 17:12:33 +00:00
|
|
|
$(RM) -r out/Makefile $(NODE_EXE) $(NODE_G_EXE) out/$(BUILDTYPE)/$(NODE_EXE) \
|
2017-10-22 14:43:05 +00:00
|
|
|
out/$(BUILDTYPE)/node.exp
|
2017-04-01 17:12:33 +00:00
|
|
|
@if [ -d out ]; then find out/ -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
|
2017-10-22 14:43:05 +00:00
|
|
|
# Next one is legacy remove this at some point
|
|
|
|
$(RM) -r test/tmp*
|
|
|
|
$(RM) -r test/.tmp*
|
|
|
|
$(MAKE) test-addons-clean
|
2018-07-13 07:00:19 +00:00
|
|
|
$(MAKE) bench-addons-clean
|
2009-10-03 20:42:03 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: distclean
|
2011-11-15 03:02:44 +00:00
|
|
|
distclean:
|
2017-04-01 17:12:33 +00:00
|
|
|
$(RM) -r out
|
|
|
|
$(RM) config.gypi icu_config.gypi config_fips.gypi
|
|
|
|
$(RM) config.mk
|
|
|
|
$(RM) -r $(NODE_EXE) $(NODE_G_EXE)
|
|
|
|
$(RM) -r node_modules
|
|
|
|
$(RM) -r deps/icu
|
|
|
|
$(RM) -r deps/icu4c*.tgz deps/icu4c*.zip deps/icu-tmp
|
|
|
|
$(RM) $(BINARYTAR).* $(TARBALL).*
|
2010-10-04 09:11:27 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: check
|
2015-03-19 22:15:54 +00:00
|
|
|
check: test
|
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: coverage-clean
|
2017-01-10 09:21:30 +00:00
|
|
|
# Remove files generated by running coverage, put the non-instrumented lib back
|
|
|
|
# in place
|
|
|
|
coverage-clean:
|
2017-04-01 17:12:33 +00:00
|
|
|
if [ -d lib_ ]; then $(RM) -r lib; mv lib_ lib; fi
|
|
|
|
$(RM) -r node_modules
|
2018-01-10 14:07:54 +00:00
|
|
|
$(RM) -r gcovr build
|
2017-04-01 17:12:33 +00:00
|
|
|
$(RM) -r out/$(BUILDTYPE)/.coverage
|
2017-09-19 11:52:23 +00:00
|
|
|
$(RM) -r .cov_tmp
|
2018-01-23 23:37:59 +00:00
|
|
|
$(RM) out/$(BUILDTYPE)/obj.target/node/gen/*.gcda
|
|
|
|
$(RM) out/$(BUILDTYPE)/obj.target/node/src/*.gcda
|
2017-04-01 17:12:33 +00:00
|
|
|
$(RM) out/$(BUILDTYPE)/obj.target/node/src/tracing/*.gcda
|
2018-01-23 23:37:59 +00:00
|
|
|
$(RM) out/$(BUILDTYPE)/obj.target/node/gen/*.gcno
|
|
|
|
$(RM) out/$(BUILDTYPE)/obj.target/node/src/*.gcno
|
2017-10-09 18:30:38 +00:00
|
|
|
$(RM) out/$(BUILDTYPE)/obj.target/node/src/tracing/*.gcno
|
|
|
|
$(RM) out/$(BUILDTYPE)/obj.target/cctest/src/*.gcno
|
|
|
|
$(RM) out/$(BUILDTYPE)/obj.target/cctest/test/cctest/*.gcno
|
2017-01-10 09:21:30 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: coverage
|
2017-01-10 09:21:30 +00:00
|
|
|
# Build and test with code coverage reporting. Leave the lib directory
|
|
|
|
# instrumented for any additional runs the user may want to make.
|
|
|
|
# For C++ coverage reporting, this needs to be run in conjunction with configure
|
|
|
|
# --coverage. html coverage reports will be created under coverage/
|
2017-11-12 19:54:28 +00:00
|
|
|
# Related CI job: node-test-commit-linux-coverage
|
2017-11-26 14:41:56 +00:00
|
|
|
coverage: coverage-test ## Run the tests and generate a coverage report.
|
2017-01-10 09:21:30 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: coverage-build
|
2017-01-10 09:21:30 +00:00
|
|
|
coverage-build: all
|
|
|
|
mkdir -p node_modules
|
2017-09-05 09:40:27 +00:00
|
|
|
if [ ! -d node_modules/nyc ]; then \
|
|
|
|
$(NODE) ./deps/npm install nyc --no-save --no-package-lock; fi
|
2018-03-02 18:39:10 +00:00
|
|
|
if [ ! -d gcovr ]; then git clone -b 3.4 --depth=1 \
|
2017-01-10 09:21:30 +00:00
|
|
|
--single-branch git://github.com/gcovr/gcovr.git; fi
|
2018-01-10 14:07:54 +00:00
|
|
|
if [ ! -d build ]; then git clone --depth=1 \
|
2018-01-04 23:42:59 +00:00
|
|
|
--single-branch https://github.com/nodejs/build.git; fi
|
2018-03-02 18:39:10 +00:00
|
|
|
if [ ! -f gcovr/scripts/gcovr.orig ]; then \
|
|
|
|
(cd gcovr && patch -N -p1 < \
|
|
|
|
"$(CURDIR)/build/jenkins/scripts/coverage/gcovr-patches-3.4.diff"); fi
|
2017-04-01 17:12:33 +00:00
|
|
|
if [ -d lib_ ]; then $(RM) -r lib; mv lib_ lib; fi
|
2017-01-10 09:21:30 +00:00
|
|
|
mv lib lib_
|
2018-06-01 00:33:21 +00:00
|
|
|
NODE_DEBUG=nyc $(NODE) ./node_modules/.bin/nyc instrument --extension .js \
|
|
|
|
--extension .mjs --exit-on-error lib_/ lib/
|
2017-01-10 09:21:30 +00:00
|
|
|
$(MAKE)
|
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: coverage-test
|
2017-01-10 09:21:30 +00:00
|
|
|
coverage-test: coverage-build
|
2017-04-01 17:12:33 +00:00
|
|
|
$(RM) -r out/$(BUILDTYPE)/.coverage
|
|
|
|
$(RM) -r .cov_tmp
|
2018-01-23 23:37:59 +00:00
|
|
|
$(RM) out/$(BUILDTYPE)/obj.target/node/gen/*.gcda
|
|
|
|
$(RM) out/$(BUILDTYPE)/obj.target/node/src/*.gcda
|
2017-04-01 17:12:33 +00:00
|
|
|
$(RM) out/$(BUILDTYPE)/obj.target/node/src/tracing/*.gcda
|
2018-01-27 06:35:35 +00:00
|
|
|
$(RM) out/$(BUILDTYPE)/obj.target/node_lib/gen/*.gcda
|
|
|
|
$(RM) out/$(BUILDTYPE)/obj.target/node_lib/src/*.gcda
|
|
|
|
$(RM) out/$(BUILDTYPE)/obj.target/node_lib/src/tracing/*.gcda
|
2017-01-10 09:21:30 +00:00
|
|
|
-$(MAKE) $(COVTESTS)
|
|
|
|
mv lib lib__
|
|
|
|
mv lib_ lib
|
|
|
|
mkdir -p coverage .cov_tmp
|
2018-05-16 00:30:05 +00:00
|
|
|
$(NODE) ./node_modules/.bin/nyc merge 'out/Release/.coverage' \
|
|
|
|
.cov_tmp/libcov.json
|
2017-01-10 09:21:30 +00:00
|
|
|
(cd lib && .$(NODE) ../node_modules/.bin/nyc report \
|
2017-09-05 06:33:27 +00:00
|
|
|
--temp-directory "$(CURDIR)/.cov_tmp" \
|
2018-05-16 00:30:05 +00:00
|
|
|
--report-dir "$(CURDIR)/coverage")
|
2018-03-02 18:39:10 +00:00
|
|
|
-(cd out && "../gcovr/scripts/gcovr" --gcov-exclude='.*deps' \
|
2018-01-27 06:35:35 +00:00
|
|
|
--gcov-exclude='.*usr' -v -r Release/obj.target \
|
2017-10-09 18:30:38 +00:00
|
|
|
--html --html-detail -o ../coverage/cxxcoverage.html \
|
|
|
|
--gcov-executable="$(GCOV)")
|
2017-01-10 09:21:30 +00:00
|
|
|
mv lib lib_
|
|
|
|
mv lib__ lib
|
|
|
|
@echo -n "Javascript coverage %: "
|
|
|
|
@grep -B1 Lines coverage/index.html | head -n1 \
|
|
|
|
| sed 's/<[^>]*>//g'| sed 's/ //g'
|
|
|
|
@echo -n "C++ coverage %: "
|
|
|
|
@grep -A3 Lines coverage/cxxcoverage.html | grep style \
|
|
|
|
| sed 's/<[^>]*>//g'| sed 's/ //g'
|
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: cctest
|
2017-11-12 19:54:28 +00:00
|
|
|
# Runs the C++ tests using the built `cctest` executable.
|
2015-03-19 01:01:45 +00:00
|
|
|
cctest: all
|
2017-02-21 07:43:21 +00:00
|
|
|
@out/$(BUILDTYPE)/$@ --gtest_filter=$(GTEST_FILTER)
|
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: list-gtests
|
2017-02-21 07:43:21 +00:00
|
|
|
list-gtests:
|
|
|
|
ifeq (,$(wildcard out/$(BUILDTYPE)/cctest))
|
|
|
|
$(error Please run 'make cctest' first)
|
|
|
|
endif
|
|
|
|
@out/$(BUILDTYPE)/cctest --gtest_list_tests
|
2015-03-19 01:01:45 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: v8
|
2017-11-12 19:54:28 +00:00
|
|
|
# Related CI job: node-test-commit-v8-linux
|
|
|
|
# Rebuilds deps/v8 as a git tree, pulls its third-party dependencies, and
|
|
|
|
# builds it.
|
test: run v8 tests from node tree
Ported by exinfinitum from a PR by jasnell:
see https://github.com/nodejs/node-v0.x-archive/pull/14185
Allows the running of v8 tests on node's packaged v8 source code.
Note that the limited win32 support added by jasnell has NOT been ported,
and so these tests are currently UNIX ONLY.
Note that gclient depot tools
(see https://commondatastorage.googleapis.com/
chrome-infra-docs/flat/depot_tools/docs/html/
depot_tools_tutorial.html#_setting_up) and subversion are required
to run tests.
To perform tests, run the following commands:
make v8 DESTCPU=(ARCH)
make test-v8 DESTCPU=(ARCH)
where (ARCH) is your CPU architecture, e.g. x64, ia32.
DESTCPU MUST be specified for this to work properly.
Can also do tests on debug build by using "make test-v8 DESTCPU=(ARCH)
BUILDTYPE=Debug", or perform intl or benchmark tests via make
test-v8-intl or test-v8-benchmarks respectively.
Note that by default, quickcheck and TAP output are disabled, and i18n
is enabled. To activate these options, use options"QUICKCHECK=True" and
"ENABLE_V8_TAP=True" respectively.
Use "DISABLE_V8_I18N" to disable i18n.
Use V8_BUILD_OPTIONS to allow custom user-defined flags to be
appended onto "make v8".
Any tests performed after changes to the packaged v8 file will require
recompiling of v8, which can be done using "make v8 DESTCPU=(ARCH)".
Finally, two additional files necessary for one of the v8 tests have
been added to the v8 folder.
PR-URL: https://github.com/nodejs/node/pull/4704
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: targos - Michaël Zasso <mic.besace@gmail.com>
2015-03-28 04:39:06 +00:00
|
|
|
v8:
|
2018-03-14 12:04:48 +00:00
|
|
|
tools/make-v8.sh $(V8_ARCH).$(BUILDTYPE_LOWER) $(V8_BUILD_OPTIONS)
|
test: run v8 tests from node tree
Ported by exinfinitum from a PR by jasnell:
see https://github.com/nodejs/node-v0.x-archive/pull/14185
Allows the running of v8 tests on node's packaged v8 source code.
Note that the limited win32 support added by jasnell has NOT been ported,
and so these tests are currently UNIX ONLY.
Note that gclient depot tools
(see https://commondatastorage.googleapis.com/
chrome-infra-docs/flat/depot_tools/docs/html/
depot_tools_tutorial.html#_setting_up) and subversion are required
to run tests.
To perform tests, run the following commands:
make v8 DESTCPU=(ARCH)
make test-v8 DESTCPU=(ARCH)
where (ARCH) is your CPU architecture, e.g. x64, ia32.
DESTCPU MUST be specified for this to work properly.
Can also do tests on debug build by using "make test-v8 DESTCPU=(ARCH)
BUILDTYPE=Debug", or perform intl or benchmark tests via make
test-v8-intl or test-v8-benchmarks respectively.
Note that by default, quickcheck and TAP output are disabled, and i18n
is enabled. To activate these options, use options"QUICKCHECK=True" and
"ENABLE_V8_TAP=True" respectively.
Use "DISABLE_V8_I18N" to disable i18n.
Use V8_BUILD_OPTIONS to allow custom user-defined flags to be
appended onto "make v8".
Any tests performed after changes to the packaged v8 file will require
recompiling of v8, which can be done using "make v8 DESTCPU=(ARCH)".
Finally, two additional files necessary for one of the v8 tests have
been added to the v8 folder.
PR-URL: https://github.com/nodejs/node/pull/4704
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: targos - Michaël Zasso <mic.besace@gmail.com>
2015-03-28 04:39:06 +00:00
|
|
|
|
2018-03-13 15:21:13 +00:00
|
|
|
.PHONY: jstest
|
|
|
|
jstest: build-addons build-addons-napi ## Runs addon tests and JS tests
|
2018-04-27 16:21:46 +00:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) \
|
2018-05-17 01:03:53 +00:00
|
|
|
--skip-tests=$(CI_SKIP_TESTS) \
|
2018-03-13 15:21:13 +00:00
|
|
|
$(CI_JS_SUITES) \
|
|
|
|
$(CI_NATIVE_SUITES)
|
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: test
|
2017-11-12 19:54:28 +00:00
|
|
|
# This does not run tests of third-party libraries inside deps.
|
2018-01-23 10:49:25 +00:00
|
|
|
test: all ## Runs default tests, linters, and builds docs.
|
2018-03-13 15:21:13 +00:00
|
|
|
# Build the addons before running the tests so the test results
|
|
|
|
# can be displayed together
|
2018-01-23 10:49:25 +00:00
|
|
|
$(MAKE) -s build-addons
|
|
|
|
$(MAKE) -s build-addons-napi
|
2018-03-13 15:21:13 +00:00
|
|
|
$(MAKE) -s test-doc
|
2017-11-14 07:41:10 +00:00
|
|
|
$(MAKE) -s cctest
|
2018-03-13 15:21:13 +00:00
|
|
|
$(MAKE) -s jstest
|
2009-10-03 20:42:03 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: test-only
|
2018-01-23 10:49:25 +00:00
|
|
|
test-only: all ## For a quick test, does not run linter or build docs.
|
2018-03-13 15:21:13 +00:00
|
|
|
# Build the addons before running the tests so the test results
|
|
|
|
# can be displayed together
|
2018-01-23 10:49:25 +00:00
|
|
|
$(MAKE) build-addons
|
|
|
|
$(MAKE) build-addons-napi
|
2017-10-18 05:58:46 +00:00
|
|
|
$(MAKE) cctest
|
2018-03-13 15:21:13 +00:00
|
|
|
$(MAKE) jstest
|
2017-10-18 05:58:46 +00:00
|
|
|
|
2017-11-12 19:54:28 +00:00
|
|
|
# Used by `make coverage-test`
|
2018-01-23 10:49:25 +00:00
|
|
|
test-cov: all
|
2018-03-13 15:21:13 +00:00
|
|
|
# Build the addons before running the tests so the test results
|
|
|
|
# can be displayed together
|
2018-01-23 10:49:25 +00:00
|
|
|
$(MAKE) build-addons
|
|
|
|
$(MAKE) build-addons-napi
|
2017-09-29 01:29:54 +00:00
|
|
|
# $(MAKE) cctest
|
2018-05-17 01:03:53 +00:00
|
|
|
CI_SKIP_TESTS=core_line_numbers.js $(MAKE) jstest
|
2017-09-29 01:29:54 +00:00
|
|
|
|
2014-12-17 13:30:04 +00:00
|
|
|
test-parallel: all
|
2018-04-27 16:21:46 +00:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) parallel
|
2014-12-17 13:30:04 +00:00
|
|
|
|
2010-12-22 18:24:34 +00:00
|
|
|
test-valgrind: all
|
2018-04-27 16:21:46 +00:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) --valgrind sequential parallel message
|
2010-12-22 18:24:34 +00:00
|
|
|
|
2017-04-17 04:01:00 +00:00
|
|
|
test-check-deopts: all
|
2018-04-27 16:21:46 +00:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) --check-deopts parallel sequential
|
2017-04-17 04:01:00 +00:00
|
|
|
|
2018-06-15 20:03:12 +00:00
|
|
|
benchmark/napi/function_call/build/Release/binding.node: all \
|
|
|
|
benchmark/napi/function_call/napi_binding.c \
|
|
|
|
benchmark/napi/function_call/binding.cc \
|
|
|
|
benchmark/napi/function_call/binding.gyp
|
2018-01-23 10:49:25 +00:00
|
|
|
$(NODE) deps/npm/node_modules/node-gyp/bin/node-gyp rebuild \
|
|
|
|
--python="$(PYTHON)" \
|
2018-06-15 20:03:12 +00:00
|
|
|
--directory="$(shell pwd)/benchmark/napi/function_call" \
|
2018-01-23 10:49:25 +00:00
|
|
|
--nodedir="$(shell pwd)"
|
|
|
|
|
2018-06-27 04:42:18 +00:00
|
|
|
benchmark/napi/function_args/build/Release/binding.node: all \
|
|
|
|
benchmark/napi/function_args/napi_binding.c \
|
|
|
|
benchmark/napi/function_args/binding.cc \
|
|
|
|
benchmark/napi/function_args/binding.gyp
|
|
|
|
$(NODE) deps/npm/node_modules/node-gyp/bin/node-gyp rebuild \
|
|
|
|
--python="$(PYTHON)" \
|
|
|
|
--directory="$(shell pwd)/benchmark/napi/function_args" \
|
|
|
|
--nodedir="$(shell pwd)"
|
|
|
|
|
2018-01-23 10:49:25 +00:00
|
|
|
# Implicitly depends on $(NODE_EXE). We don't depend on it explicitly because
|
|
|
|
# it always triggers a rebuild due to it being a .PHONY rule. See the comment
|
|
|
|
# near the build-addons rule for more background.
|
|
|
|
test/gc/build/Release/binding.node: test/gc/binding.cc test/gc/binding.gyp
|
|
|
|
$(NODE) deps/npm/node_modules/node-gyp/bin/node-gyp rebuild \
|
|
|
|
--python="$(PYTHON)" \
|
|
|
|
--directory="$(shell pwd)/test/gc" \
|
|
|
|
--nodedir="$(shell pwd)"
|
|
|
|
|
|
|
|
DOCBUILDSTAMP_PREREQS = tools/doc/addon-verify.js doc/api/addons.md
|
2016-08-26 14:07:29 +00:00
|
|
|
|
|
|
|
ifeq ($(OSTYPE),aix)
|
2018-01-23 10:49:25 +00:00
|
|
|
DOCBUILDSTAMP_PREREQS := $(DOCBUILDSTAMP_PREREQS) out/$(BUILDTYPE)/node.exp
|
2016-08-26 14:07:29 +00:00
|
|
|
endif
|
|
|
|
|
2018-01-23 10:49:25 +00:00
|
|
|
test/addons/.docbuildstamp: $(DOCBUILDSTAMP_PREREQS)
|
|
|
|
$(RM) -r test/addons/??_*/
|
|
|
|
[ -x $(NODE) ] && $(NODE) $< || node $<
|
|
|
|
touch $@
|
2016-06-10 09:33:14 +00:00
|
|
|
|
2018-01-23 10:49:25 +00:00
|
|
|
ADDONS_BINDING_GYPS := \
|
|
|
|
$(filter-out test/addons/??_*/binding.gyp, \
|
|
|
|
$(wildcard test/addons/*/binding.gyp))
|
2015-08-18 19:29:59 +00:00
|
|
|
|
2018-01-23 10:49:25 +00:00
|
|
|
ADDONS_BINDING_SOURCES := \
|
|
|
|
$(filter-out test/addons/??_*/*.cc, $(wildcard test/addons/*/*.cc)) \
|
|
|
|
$(filter-out test/addons/??_*/*.h, $(wildcard test/addons/*/*.h))
|
2017-03-20 21:55:26 +00:00
|
|
|
|
2018-01-23 10:49:25 +00:00
|
|
|
# Implicitly depends on $(NODE_EXE), see the build-addons rule for rationale.
|
|
|
|
# Depends on node-gyp package.json so that build-addons is (re)executed when
|
|
|
|
# node-gyp is updated as part of an npm update.
|
|
|
|
test/addons/.buildstamp: config.gypi \
|
2018-06-05 22:18:55 +00:00
|
|
|
deps/npm/node_modules/node-gyp/package.json tools/build-addons.js \
|
2018-01-23 10:49:25 +00:00
|
|
|
$(ADDONS_BINDING_GYPS) $(ADDONS_BINDING_SOURCES) \
|
|
|
|
deps/uv/include/*.h deps/v8/include/*.h \
|
|
|
|
src/node.h src/node_buffer.h src/node_object_wrap.h src/node_version.h \
|
|
|
|
test/addons/.docbuildstamp
|
2018-06-05 22:18:55 +00:00
|
|
|
env npm_config_loglevel=$(LOGLEVEL) npm_config_nodedir="$$PWD" \
|
|
|
|
npm_config_python="$(PYTHON)" $(NODE) "$$PWD/tools/build-addons" \
|
|
|
|
"$$PWD/deps/npm/node_modules/node-gyp/bin/node-gyp.js" "$$PWD/test/addons"
|
2018-01-23 10:49:25 +00:00
|
|
|
touch $@
|
2018-01-20 00:00:34 +00:00
|
|
|
|
|
|
|
.PHONY: build-addons
|
2018-01-23 10:49:25 +00:00
|
|
|
# .buildstamp needs $(NODE_EXE) but cannot depend on it
|
|
|
|
# directly because it calls make recursively. The parent make cannot know
|
|
|
|
# if the subprocess touched anything so it pessimistically assumes that
|
|
|
|
# .buildstamp is out of date and need a rebuild.
|
|
|
|
# Just goes to show that recursive make really is harmful...
|
|
|
|
# TODO(bnoordhuis) Force rebuild after gyp update.
|
|
|
|
build-addons: | $(NODE_EXE) test/addons/.buildstamp
|
|
|
|
|
|
|
|
ADDONS_NAPI_BINDING_GYPS := \
|
|
|
|
$(filter-out test/addons-napi/??_*/binding.gyp, \
|
|
|
|
$(wildcard test/addons-napi/*/binding.gyp))
|
|
|
|
|
|
|
|
ADDONS_NAPI_BINDING_SOURCES := \
|
2018-07-13 18:05:24 +00:00
|
|
|
$(filter-out test/addons-napi/??_*/*.c, $(wildcard test/addons-napi/*/*.c)) \
|
2018-01-23 10:49:25 +00:00
|
|
|
$(filter-out test/addons-napi/??_*/*.cc, $(wildcard test/addons-napi/*/*.cc)) \
|
|
|
|
$(filter-out test/addons-napi/??_*/*.h, $(wildcard test/addons-napi/*/*.h))
|
|
|
|
|
|
|
|
# Implicitly depends on $(NODE_EXE), see the build-addons-napi rule for rationale.
|
|
|
|
test/addons-napi/.buildstamp: config.gypi \
|
2018-06-05 22:18:55 +00:00
|
|
|
deps/npm/node_modules/node-gyp/package.json tools/build-addons.js \
|
2018-01-23 10:49:25 +00:00
|
|
|
$(ADDONS_NAPI_BINDING_GYPS) $(ADDONS_NAPI_BINDING_SOURCES) \
|
|
|
|
deps/uv/include/*.h deps/v8/include/*.h \
|
|
|
|
src/node.h src/node_buffer.h src/node_object_wrap.h src/node_version.h \
|
|
|
|
src/node_api.h src/node_api_types.h
|
2018-06-05 22:18:55 +00:00
|
|
|
env npm_config_loglevel=$(LOGLEVEL) npm_config_nodedir="$$PWD" \
|
|
|
|
npm_config_python="$(PYTHON)" $(NODE) "$$PWD/tools/build-addons" \
|
|
|
|
"$$PWD/deps/npm/node_modules/node-gyp/bin/node-gyp.js" \
|
|
|
|
"$$PWD/test/addons-napi"
|
2018-01-23 10:49:25 +00:00
|
|
|
touch $@
|
|
|
|
|
|
|
|
.PHONY: build-addons-napi
|
|
|
|
# .buildstamp needs $(NODE_EXE) but cannot depend on it
|
|
|
|
# directly because it calls make recursively. The parent make cannot know
|
|
|
|
# if the subprocess touched anything so it pessimistically assumes that
|
|
|
|
# .buildstamp is out of date and need a rebuild.
|
|
|
|
# Just goes to show that recursive make really is harmful...
|
|
|
|
# TODO(bnoordhuis) Force rebuild after gyp or node-gyp update.
|
|
|
|
build-addons-napi: | $(NODE_EXE) test/addons-napi/.buildstamp
|
2017-03-20 21:55:26 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: clear-stalled
|
2017-02-08 19:39:24 +00:00
|
|
|
clear-stalled:
|
2017-04-01 18:50:46 +00:00
|
|
|
# Clean up any leftover processes but don't error if found.
|
2017-02-08 19:39:24 +00:00
|
|
|
ps awwx | grep Release/node | grep -v grep | cat
|
2017-04-01 18:50:46 +00:00
|
|
|
@PS_OUT=`ps awwx | grep Release/node | grep -v grep | awk '{print $$1}'`; \
|
|
|
|
if [ "$${PS_OUT}" ]; then \
|
2018-04-21 05:45:31 +00:00
|
|
|
echo $${PS_OUT} | xargs kill -9; \
|
2017-04-01 18:50:46 +00:00
|
|
|
fi
|
2017-02-08 19:39:24 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: test-gc
|
2017-02-08 14:35:58 +00:00
|
|
|
test-gc: all test/gc/build/Release/binding.node
|
2018-04-27 16:21:46 +00:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) gc
|
2012-05-03 17:16:25 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: test-gc-clean
|
2017-03-27 05:55:19 +00:00
|
|
|
test-gc-clean:
|
|
|
|
$(RM) -r test/gc/build
|
|
|
|
|
2018-01-23 10:49:25 +00:00
|
|
|
test-build: | all build-addons build-addons-napi
|
|
|
|
|
|
|
|
test-build-addons-napi: all build-addons-napi
|
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: test-all
|
2018-01-23 10:49:25 +00:00
|
|
|
test-all: test-build test/gc/build/Release/binding.node ## Run everything in test/.
|
2018-04-18 09:18:38 +00:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=debug,release
|
2009-10-03 19:46:59 +00:00
|
|
|
|
2018-01-23 10:49:25 +00:00
|
|
|
test-all-valgrind: test-build
|
2018-04-18 09:18:38 +00:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=debug,release --valgrind
|
2010-12-22 18:24:34 +00:00
|
|
|
|
2017-10-10 21:42:46 +00:00
|
|
|
CI_NATIVE_SUITES ?= addons addons-napi
|
2017-09-29 01:29:54 +00:00
|
|
|
CI_JS_SUITES ?= default
|
2017-10-22 06:05:26 +00:00
|
|
|
CI_DOC := doctool
|
2016-06-15 12:42:21 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: test-ci-native
|
2016-06-15 12:42:21 +00:00
|
|
|
# Build and test addons without building anything else
|
2017-11-12 19:54:28 +00:00
|
|
|
# Related CI job: node-test-commit-arm-fanned
|
2016-10-09 14:24:23 +00:00
|
|
|
test-ci-native: LOGLEVEL := info
|
2018-01-23 10:49:25 +00:00
|
|
|
test-ci-native: | test/addons/.buildstamp test/addons-napi/.buildstamp
|
2016-06-15 12:42:21 +00:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) -p tap --logfile test.tap \
|
2018-04-27 16:21:46 +00:00
|
|
|
--mode=$(BUILDTYPE_LOWER) --flaky-tests=$(FLAKY_TESTS) \
|
2016-06-15 12:42:21 +00:00
|
|
|
$(TEST_CI_ARGS) $(CI_NATIVE_SUITES)
|
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: test-ci-js
|
2016-06-15 12:42:21 +00:00
|
|
|
# This target should not use a native compiler at all
|
2017-11-12 19:54:28 +00:00
|
|
|
# Related CI job: node-test-commit-arm-fanned
|
2017-02-08 19:39:24 +00:00
|
|
|
test-ci-js: | clear-stalled
|
2016-06-15 12:42:21 +00:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) -p tap --logfile test.tap \
|
2018-04-27 16:21:46 +00:00
|
|
|
--mode=$(BUILDTYPE_LOWER) --flaky-tests=$(FLAKY_TESTS) \
|
2017-12-29 05:10:46 +00:00
|
|
|
$(TEST_CI_ARGS) $(CI_JS_SUITES)
|
2017-04-01 18:50:46 +00:00
|
|
|
# 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}'`; \
|
2017-02-09 18:42:29 +00:00
|
|
|
if [ "$${PS_OUT}" ]; then \
|
2018-04-21 05:45:31 +00:00
|
|
|
echo $${PS_OUT} | xargs kill -9; exit 1; \
|
2017-02-09 18:42:29 +00:00
|
|
|
fi
|
2016-06-15 12:42:21 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: test-ci
|
2017-11-12 19:54:28 +00:00
|
|
|
# Related CI jobs: most CI tests, excluding node-test-commit-arm-fanned
|
2016-10-09 14:24:23 +00:00
|
|
|
test-ci: LOGLEVEL := info
|
2018-01-23 10:49:25 +00:00
|
|
|
test-ci: | clear-stalled build-addons build-addons-napi doc-only
|
2016-08-10 09:47:46 +00:00
|
|
|
out/Release/cctest --gtest_output=tap:cctest.tap
|
2016-04-15 03:15:40 +00:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) -p tap --logfile test.tap \
|
2018-04-27 16:21:46 +00:00
|
|
|
--mode=$(BUILDTYPE_LOWER) --flaky-tests=$(FLAKY_TESTS) \
|
2017-12-29 05:10:46 +00:00
|
|
|
$(TEST_CI_ARGS) $(CI_JS_SUITES) $(CI_NATIVE_SUITES) $(CI_DOC)
|
2017-04-01 18:50:46 +00:00
|
|
|
# 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}'`; \
|
2017-02-09 18:42:29 +00:00
|
|
|
if [ "$${PS_OUT}" ]; then \
|
2018-04-21 05:45:31 +00:00
|
|
|
echo $${PS_OUT} | xargs kill -9; exit 1; \
|
2017-02-09 18:42:29 +00:00
|
|
|
fi
|
2015-01-12 22:40:51 +00:00
|
|
|
|
2017-11-12 19:54:28 +00:00
|
|
|
.PHONY: build-ci
|
|
|
|
# Prepare the build for running the tests.
|
|
|
|
# Related CI jobs: most CI tests, excluding node-test-commit-arm-fanned
|
|
|
|
build-ci:
|
|
|
|
$(PYTHON) ./configure $(CONFIG_FLAGS)
|
|
|
|
$(MAKE)
|
|
|
|
|
|
|
|
.PHONY: run-ci
|
|
|
|
# Run by CI tests, exceptions:
|
|
|
|
# - node-test-commit-arm-fanned (Raspberry Pis), where the binaries are
|
|
|
|
# cross-compiled, then transferred elsewhere to run different subsets
|
|
|
|
# of tests. See `test-ci-native` and `test-ci-js`.
|
|
|
|
# - node-test-commit-linux-coverage: where the build and the tests need
|
|
|
|
# to be instrumented, see `coverage`.
|
|
|
|
run-ci: build-ci
|
|
|
|
$(MAKE) test-ci
|
|
|
|
|
2018-01-23 10:49:25 +00:00
|
|
|
test-release: test-build
|
2018-04-27 16:21:46 +00:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER)
|
2010-03-02 21:18:59 +00:00
|
|
|
|
2018-01-23 10:49:25 +00:00
|
|
|
test-debug: test-build
|
2018-04-18 09:18:38 +00:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=debug
|
2009-10-03 19:46:59 +00:00
|
|
|
|
2018-01-23 10:49:25 +00:00
|
|
|
test-message: test-build
|
2018-04-18 09:18:38 +00:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) message
|
2010-06-19 01:14:06 +00:00
|
|
|
|
2015-03-19 01:01:45 +00:00
|
|
|
test-simple: | cctest # Depends on 'all'.
|
2018-04-18 09:18:38 +00:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) parallel sequential
|
2010-11-14 23:50:14 +00:00
|
|
|
|
2015-02-26 23:00:07 +00:00
|
|
|
test-pummel: all
|
2018-04-18 09:18:38 +00:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) pummel
|
2010-11-14 23:50:14 +00:00
|
|
|
|
2010-11-01 23:03:32 +00:00
|
|
|
test-internet: all
|
2018-04-18 09:18:38 +00:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) internet
|
2010-02-25 06:36:17 +00:00
|
|
|
|
2016-12-11 22:37:25 +00:00
|
|
|
test-node-inspect: $(NODE_EXE)
|
|
|
|
USE_EMBEDDED_NODE_INSPECT=1 $(NODE) tools/test-npm-package \
|
|
|
|
--install deps/node-inspect test
|
|
|
|
|
2016-11-07 21:34:54 +00:00
|
|
|
test-tick-processor: all
|
2018-04-18 09:18:38 +00:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) tick-processor
|
2016-11-07 21:34:54 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: test-hash-seed
|
2017-11-12 19:54:28 +00:00
|
|
|
# Verifies the hash seed used by V8 for hashing is random.
|
2017-06-02 07:09:49 +00:00
|
|
|
test-hash-seed: all
|
|
|
|
$(NODE) test/pummel/test-hash-seed.js
|
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: test-doc
|
2017-11-12 19:54:28 +00:00
|
|
|
test-doc: doc-only ## Builds, lints, and verifies the docs.
|
2017-10-22 06:05:26 +00:00
|
|
|
$(MAKE) lint
|
2018-04-18 09:18:38 +00:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) $(CI_DOC)
|
2017-10-22 06:05:26 +00:00
|
|
|
|
2016-03-02 17:12:47 +00:00
|
|
|
test-known-issues: all
|
2018-04-18 09:18:38 +00:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) known_issues
|
2016-03-02 17:12:47 +00:00
|
|
|
|
2017-11-12 19:54:28 +00:00
|
|
|
# Related CI job: node-test-npm
|
2017-11-26 14:41:56 +00:00
|
|
|
test-npm: $(NODE_EXE) ## Run the npm test suite on deps/npm.
|
2017-02-22 22:05:19 +00:00
|
|
|
$(NODE) tools/test-npm-package --install --logfile=test-npm.tap deps/npm test-node
|
2011-12-17 02:04:39 +00:00
|
|
|
|
2014-08-30 22:59:05 +00:00
|
|
|
test-npm-publish: $(NODE_EXE)
|
2015-06-12 05:12:20 +00:00
|
|
|
npm_package_config_publishtest=true $(NODE) deps/npm/test/run.js
|
2011-07-08 17:40:35 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: test-addons-napi
|
2018-01-23 10:49:25 +00:00
|
|
|
test-addons-napi: test-build-addons-napi
|
2018-04-27 16:21:46 +00:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) addons-napi
|
2017-03-20 21:55:26 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: test-addons-napi-clean
|
2017-05-15 04:58:21 +00:00
|
|
|
test-addons-napi-clean:
|
|
|
|
$(RM) -r test/addons-napi/*/build
|
2018-01-23 10:49:25 +00:00
|
|
|
$(RM) test/addons-napi/.buildstamp
|
2017-05-15 04:58:21 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: test-addons
|
2018-01-23 10:49:25 +00:00
|
|
|
test-addons: test-build test-addons-napi
|
2018-04-27 16:21:46 +00:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) addons
|
2014-01-18 22:49:18 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: test-addons-clean
|
2017-02-23 16:39:53 +00:00
|
|
|
test-addons-clean:
|
2017-05-15 04:58:21 +00:00
|
|
|
$(RM) -r test/addons/??_*/
|
|
|
|
$(RM) -r test/addons/*/build
|
2018-01-23 10:49:25 +00:00
|
|
|
$(RM) test/addons/.buildstamp test/addons/.docbuildstamp
|
2017-05-15 04:58:21 +00:00
|
|
|
$(MAKE) test-addons-napi-clean
|
2014-07-23 01:03:10 +00:00
|
|
|
|
2017-04-05 10:04:24 +00:00
|
|
|
test-async-hooks:
|
2018-04-27 16:21:46 +00:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) async-hooks
|
2017-04-05 10:04:24 +00:00
|
|
|
|
2018-01-23 10:49:25 +00:00
|
|
|
test-with-async-hooks:
|
|
|
|
$(MAKE) build-addons
|
|
|
|
$(MAKE) build-addons-napi
|
2017-06-20 05:21:33 +00:00
|
|
|
$(MAKE) cctest
|
2018-04-27 16:21:46 +00:00
|
|
|
NODE_TEST_WITH_ASYNC_HOOKS=1 $(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) \
|
2017-06-20 05:21:33 +00:00
|
|
|
$(CI_JS_SUITES) \
|
|
|
|
$(CI_NATIVE_SUITES)
|
|
|
|
|
2016-03-13 23:08:11 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: test-v8
|
|
|
|
.PHONY: test-v8-all
|
|
|
|
.PHONY: test-v8-benchmarks
|
|
|
|
.PHONY: test-v8-intl
|
2018-05-28 17:48:47 +00:00
|
|
|
.PHONY: test-v8-updates
|
2016-03-13 23:08:11 +00:00
|
|
|
ifneq ("","$(wildcard deps/v8/tools/run-tests.py)")
|
2017-11-12 19:54:28 +00:00
|
|
|
# Related CI job: node-test-commit-v8-linux
|
2017-11-26 14:41:56 +00:00
|
|
|
test-v8: v8 ## Runs the V8 test suite on deps/v8.
|
2018-03-14 12:04:48 +00:00
|
|
|
deps/v8/tools/run-tests.py --gn --arch=$(V8_ARCH) \
|
|
|
|
--mode=$(BUILDTYPE_LOWER) $(V8_TEST_OPTIONS) \
|
|
|
|
mjsunit cctest debugger inspector message preparser \
|
|
|
|
$(TAP_V8)
|
2017-07-13 14:02:37 +00:00
|
|
|
@echo Testing hash seed
|
|
|
|
$(MAKE) test-hash-seed
|
test: run v8 tests from node tree
Ported by exinfinitum from a PR by jasnell:
see https://github.com/nodejs/node-v0.x-archive/pull/14185
Allows the running of v8 tests on node's packaged v8 source code.
Note that the limited win32 support added by jasnell has NOT been ported,
and so these tests are currently UNIX ONLY.
Note that gclient depot tools
(see https://commondatastorage.googleapis.com/
chrome-infra-docs/flat/depot_tools/docs/html/
depot_tools_tutorial.html#_setting_up) and subversion are required
to run tests.
To perform tests, run the following commands:
make v8 DESTCPU=(ARCH)
make test-v8 DESTCPU=(ARCH)
where (ARCH) is your CPU architecture, e.g. x64, ia32.
DESTCPU MUST be specified for this to work properly.
Can also do tests on debug build by using "make test-v8 DESTCPU=(ARCH)
BUILDTYPE=Debug", or perform intl or benchmark tests via make
test-v8-intl or test-v8-benchmarks respectively.
Note that by default, quickcheck and TAP output are disabled, and i18n
is enabled. To activate these options, use options"QUICKCHECK=True" and
"ENABLE_V8_TAP=True" respectively.
Use "DISABLE_V8_I18N" to disable i18n.
Use V8_BUILD_OPTIONS to allow custom user-defined flags to be
appended onto "make v8".
Any tests performed after changes to the packaged v8 file will require
recompiling of v8, which can be done using "make v8 DESTCPU=(ARCH)".
Finally, two additional files necessary for one of the v8 tests have
been added to the v8 folder.
PR-URL: https://github.com/nodejs/node/pull/4704
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: targos - Michaël Zasso <mic.besace@gmail.com>
2015-03-28 04:39:06 +00:00
|
|
|
|
2016-06-29 18:05:17 +00:00
|
|
|
test-v8-intl: v8
|
2018-03-14 12:04:48 +00:00
|
|
|
deps/v8/tools/run-tests.py --gn --arch=$(V8_ARCH) \
|
|
|
|
--mode=$(BUILDTYPE_LOWER) intl \
|
test: run v8 tests from node tree
Ported by exinfinitum from a PR by jasnell:
see https://github.com/nodejs/node-v0.x-archive/pull/14185
Allows the running of v8 tests on node's packaged v8 source code.
Note that the limited win32 support added by jasnell has NOT been ported,
and so these tests are currently UNIX ONLY.
Note that gclient depot tools
(see https://commondatastorage.googleapis.com/
chrome-infra-docs/flat/depot_tools/docs/html/
depot_tools_tutorial.html#_setting_up) and subversion are required
to run tests.
To perform tests, run the following commands:
make v8 DESTCPU=(ARCH)
make test-v8 DESTCPU=(ARCH)
where (ARCH) is your CPU architecture, e.g. x64, ia32.
DESTCPU MUST be specified for this to work properly.
Can also do tests on debug build by using "make test-v8 DESTCPU=(ARCH)
BUILDTYPE=Debug", or perform intl or benchmark tests via make
test-v8-intl or test-v8-benchmarks respectively.
Note that by default, quickcheck and TAP output are disabled, and i18n
is enabled. To activate these options, use options"QUICKCHECK=True" and
"ENABLE_V8_TAP=True" respectively.
Use "DISABLE_V8_I18N" to disable i18n.
Use V8_BUILD_OPTIONS to allow custom user-defined flags to be
appended onto "make v8".
Any tests performed after changes to the packaged v8 file will require
recompiling of v8, which can be done using "make v8 DESTCPU=(ARCH)".
Finally, two additional files necessary for one of the v8 tests have
been added to the v8 folder.
PR-URL: https://github.com/nodejs/node/pull/4704
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: targos - Michaël Zasso <mic.besace@gmail.com>
2015-03-28 04:39:06 +00:00
|
|
|
$(TAP_V8_INTL)
|
|
|
|
|
2016-06-29 18:05:17 +00:00
|
|
|
test-v8-benchmarks: v8
|
2018-03-14 12:04:48 +00:00
|
|
|
deps/v8/tools/run-tests.py --gn --arch=$(V8_ARCH) --mode=$(BUILDTYPE_LOWER) \
|
|
|
|
benchmarks \
|
|
|
|
$(TAP_V8_BENCHMARKS)
|
test: run v8 tests from node tree
Ported by exinfinitum from a PR by jasnell:
see https://github.com/nodejs/node-v0.x-archive/pull/14185
Allows the running of v8 tests on node's packaged v8 source code.
Note that the limited win32 support added by jasnell has NOT been ported,
and so these tests are currently UNIX ONLY.
Note that gclient depot tools
(see https://commondatastorage.googleapis.com/
chrome-infra-docs/flat/depot_tools/docs/html/
depot_tools_tutorial.html#_setting_up) and subversion are required
to run tests.
To perform tests, run the following commands:
make v8 DESTCPU=(ARCH)
make test-v8 DESTCPU=(ARCH)
where (ARCH) is your CPU architecture, e.g. x64, ia32.
DESTCPU MUST be specified for this to work properly.
Can also do tests on debug build by using "make test-v8 DESTCPU=(ARCH)
BUILDTYPE=Debug", or perform intl or benchmark tests via make
test-v8-intl or test-v8-benchmarks respectively.
Note that by default, quickcheck and TAP output are disabled, and i18n
is enabled. To activate these options, use options"QUICKCHECK=True" and
"ENABLE_V8_TAP=True" respectively.
Use "DISABLE_V8_I18N" to disable i18n.
Use V8_BUILD_OPTIONS to allow custom user-defined flags to be
appended onto "make v8".
Any tests performed after changes to the packaged v8 file will require
recompiling of v8, which can be done using "make v8 DESTCPU=(ARCH)".
Finally, two additional files necessary for one of the v8 tests have
been added to the v8 folder.
PR-URL: https://github.com/nodejs/node/pull/4704
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: targos - Michaël Zasso <mic.besace@gmail.com>
2015-03-28 04:39:06 +00:00
|
|
|
|
2018-05-28 17:48:47 +00:00
|
|
|
test-v8-updates:
|
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) v8-updates
|
|
|
|
|
|
|
|
test-v8-all: test-v8 test-v8-intl test-v8-benchmarks test-v8-updates
|
2016-10-31 12:07:24 +00:00
|
|
|
# runs all v8 tests
|
2016-03-13 23:08:11 +00:00
|
|
|
else
|
|
|
|
test-v8 test-v8-intl test-v8-benchmarks test-v8-all:
|
|
|
|
@echo "Testing v8 is not available through the source tarball."
|
|
|
|
@echo "Use the git repo instead:" \
|
|
|
|
"$ git clone https://github.com/nodejs/node.git"
|
|
|
|
endif
|
test: run v8 tests from node tree
Ported by exinfinitum from a PR by jasnell:
see https://github.com/nodejs/node-v0.x-archive/pull/14185
Allows the running of v8 tests on node's packaged v8 source code.
Note that the limited win32 support added by jasnell has NOT been ported,
and so these tests are currently UNIX ONLY.
Note that gclient depot tools
(see https://commondatastorage.googleapis.com/
chrome-infra-docs/flat/depot_tools/docs/html/
depot_tools_tutorial.html#_setting_up) and subversion are required
to run tests.
To perform tests, run the following commands:
make v8 DESTCPU=(ARCH)
make test-v8 DESTCPU=(ARCH)
where (ARCH) is your CPU architecture, e.g. x64, ia32.
DESTCPU MUST be specified for this to work properly.
Can also do tests on debug build by using "make test-v8 DESTCPU=(ARCH)
BUILDTYPE=Debug", or perform intl or benchmark tests via make
test-v8-intl or test-v8-benchmarks respectively.
Note that by default, quickcheck and TAP output are disabled, and i18n
is enabled. To activate these options, use options"QUICKCHECK=True" and
"ENABLE_V8_TAP=True" respectively.
Use "DISABLE_V8_I18N" to disable i18n.
Use V8_BUILD_OPTIONS to allow custom user-defined flags to be
appended onto "make v8".
Any tests performed after changes to the packaged v8 file will require
recompiling of v8, which can be done using "make v8 DESTCPU=(ARCH)".
Finally, two additional files necessary for one of the v8 tests have
been added to the v8 folder.
PR-URL: https://github.com/nodejs/node/pull/4704
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: targos - Michaël Zasso <mic.besace@gmail.com>
2015-03-28 04:39:06 +00:00
|
|
|
|
2017-01-25 20:54:34 +00:00
|
|
|
# Google Analytics ID used for tracking API docs page views, empty
|
|
|
|
# DOCS_ANALYTICS means no tracking scripts will be included in the
|
|
|
|
# generated .html files
|
|
|
|
DOCS_ANALYTICS ?=
|
|
|
|
|
2017-11-17 17:19:22 +00:00
|
|
|
apidoc_dirs = out/doc out/doc/api out/doc/api/assets
|
2016-04-20 22:12:40 +00:00
|
|
|
apidoc_sources = $(wildcard doc/api/*.md)
|
2017-11-17 17:19:22 +00:00
|
|
|
apidocs_html = $(addprefix out/,$(apidoc_sources:.md=.html))
|
|
|
|
apidocs_json = $(addprefix out/,$(apidoc_sources:.md=.json))
|
2010-10-28 22:10:20 +00:00
|
|
|
|
2011-08-23 21:08:53 +00:00
|
|
|
apiassets = $(subst api_assets,api/assets,$(addprefix out/,$(wildcard doc/api_assets/*)))
|
2010-11-13 22:57:35 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: doc-only
|
2017-11-12 19:54:28 +00:00
|
|
|
doc-only: $(apidoc_dirs) $(apiassets) ## Builds the docs with the local or the global Node.js binary.
|
2017-11-17 17:19:22 +00:00
|
|
|
# If it's a source tarball, assets are already in doc/api/assets,
|
|
|
|
# no need to install anything, we have already copied the docs over
|
|
|
|
if [ ! -d doc/api/assets ]; then \
|
|
|
|
$(MAKE) tools/doc/node_modules/js-yaml/package.json; \
|
|
|
|
fi;
|
2018-07-03 16:46:56 +00:00
|
|
|
@$(MAKE) out/doc/api/all.html out/doc/api/all.json
|
2017-11-17 17:19:22 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: doc
|
2015-11-18 22:40:03 +00:00
|
|
|
doc: $(NODE_EXE) doc-only
|
2010-11-13 22:57:35 +00:00
|
|
|
|
2017-11-17 17:19:22 +00:00
|
|
|
out/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
|
|
|
|
mkdir -p $@
|
|
|
|
cp -r doc/api out/doc
|
2010-10-28 22:10:20 +00:00
|
|
|
|
2017-11-17 17:19:22 +00:00
|
|
|
# If it's a source tarball, assets are already in doc/api/assets
|
|
|
|
out/doc/api/assets:
|
|
|
|
mkdir -p $@
|
|
|
|
if [ -d doc/api/assets ]; then cp -r doc/api/assets out/doc/api; fi;
|
|
|
|
|
|
|
|
# If it's not a source tarball, we need to copy assets from doc/api_assets
|
2017-10-15 00:57:10 +00:00
|
|
|
out/doc/api/assets/%: doc/api_assets/% out/doc/api/assets
|
2017-10-26 12:28:56 +00:00
|
|
|
@cp $< $@
|
2010-11-14 23:50:14 +00:00
|
|
|
|
2017-11-17 17:19:22 +00:00
|
|
|
# Use -e to double check in case it's a broken link
|
|
|
|
# Use $(PWD) so we can cd to anywhere before calling this
|
|
|
|
available-node = \
|
|
|
|
if [ -x $(PWD)/$(NODE) ] && [ -e $(PWD)/$(NODE) ]; then \
|
|
|
|
$(PWD)/$(NODE) $(1); \
|
2018-01-08 15:31:07 +00:00
|
|
|
elif [ -x `which node` ] && [ -e `which node` ] && [ `which node` ]; then \
|
2017-11-17 17:19:22 +00:00
|
|
|
`which node` $(1); \
|
|
|
|
else \
|
|
|
|
echo "No available node, cannot run \"node $(1)\""; \
|
|
|
|
exit 1; \
|
|
|
|
fi;
|
|
|
|
|
2018-05-29 15:12:52 +00:00
|
|
|
run-npm-install = $(PWD)/$(NPM) install --production --no-package-lock
|
2018-07-13 21:37:56 +00:00
|
|
|
run-npm-ci = $(PWD)/$(NPM) ci
|
2017-11-17 17:19:22 +00:00
|
|
|
|
|
|
|
tools/doc/node_modules/js-yaml/package.json:
|
|
|
|
cd tools/doc && $(call available-node,$(run-npm-install))
|
2010-11-16 04:23:12 +00:00
|
|
|
|
2016-05-20 21:16:47 +00:00
|
|
|
gen-json = tools/doc/generate.js --format=json $< > $@
|
2017-06-05 19:32:57 +00:00
|
|
|
gen-html = tools/doc/generate.js --node-version=$(FULLVERSION) --format=html \
|
2018-04-25 20:44:38 +00:00
|
|
|
--analytics=$(DOCS_ANALYTICS) $< > $@
|
2017-06-05 19:32:57 +00:00
|
|
|
|
2018-06-27 18:14:54 +00:00
|
|
|
out/doc/api/%.json: doc/api/%.md tools/doc/generate.js tools/doc/json.js
|
2017-11-17 17:19:22 +00:00
|
|
|
$(call available-node, $(gen-json))
|
2012-02-27 18:59:35 +00:00
|
|
|
|
2018-06-27 18:14:54 +00:00
|
|
|
out/doc/api/%.html: doc/api/%.md tools/doc/generate.js tools/doc/html.js
|
2017-11-17 17:19:22 +00:00
|
|
|
$(call available-node, $(gen-html))
|
2010-11-14 23:50:14 +00:00
|
|
|
|
2018-07-03 16:46:56 +00:00
|
|
|
out/doc/api/all.html: $(apidocs_html) tools/doc/allhtml.js
|
2018-06-27 18:14:54 +00:00
|
|
|
$(call available-node, tools/doc/allhtml.js)
|
|
|
|
|
2018-07-03 16:46:56 +00:00
|
|
|
out/doc/api/all.json: $(apidocs_json) tools/doc/alljson.js
|
|
|
|
$(call available-node, tools/doc/alljson.js)
|
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: docopen
|
2016-11-03 09:03:13 +00:00
|
|
|
docopen: $(apidocs_html)
|
|
|
|
@$(PYTHON) -mwebbrowser file://$(PWD)/out/doc/api/all.html
|
2009-10-03 19:46:59 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: docclean
|
2009-12-30 01:45:15 +00:00
|
|
|
docclean:
|
2017-04-01 17:12:33 +00:00
|
|
|
$(RM) -r out/doc
|
2009-12-30 01:45:15 +00:00
|
|
|
|
2013-06-04 00:05:56 +00:00
|
|
|
RAWVER=$(shell $(PYTHON) tools/getnodeversion.py)
|
|
|
|
VERSION=v$(RAWVER)
|
2015-06-10 07:05:26 +00:00
|
|
|
|
|
|
|
# For nightly builds, you must set DISTTYPE to "nightly", "next-nightly" or
|
|
|
|
# "custom". For the nightly and next-nightly case, you need to set DATESTRING
|
|
|
|
# and COMMIT in order to properly name the build.
|
|
|
|
# For the rc case you need to set CUSTOMTAG to an appropriate CUSTOMTAG number
|
|
|
|
|
|
|
|
ifndef DISTTYPE
|
|
|
|
DISTTYPE=release
|
|
|
|
endif
|
|
|
|
ifeq ($(DISTTYPE),release)
|
2015-01-13 23:53:26 +00:00
|
|
|
FULLVERSION=$(VERSION)
|
2015-06-10 07:05:26 +00:00
|
|
|
else # ifeq ($(DISTTYPE),release)
|
|
|
|
ifeq ($(DISTTYPE),custom)
|
|
|
|
ifndef CUSTOMTAG
|
|
|
|
$(error CUSTOMTAG is not set for DISTTYPE=custom)
|
|
|
|
endif # ifndef CUSTOMTAG
|
|
|
|
TAG=$(CUSTOMTAG)
|
|
|
|
else # ifeq ($(DISTTYPE),custom)
|
|
|
|
ifndef DATESTRING
|
|
|
|
$(error DATESTRING is not set for nightly)
|
|
|
|
endif # ifndef DATESTRING
|
|
|
|
ifndef COMMIT
|
|
|
|
$(error COMMIT is not set for nightly)
|
|
|
|
endif # ifndef COMMIT
|
|
|
|
ifneq ($(DISTTYPE),nightly)
|
|
|
|
ifneq ($(DISTTYPE),next-nightly)
|
|
|
|
$(error DISTTYPE is not release, custom, nightly or next-nightly)
|
|
|
|
endif # ifneq ($(DISTTYPE),next-nightly)
|
|
|
|
endif # ifneq ($(DISTTYPE),nightly)
|
|
|
|
TAG=$(DISTTYPE)$(DATESTRING)$(COMMIT)
|
|
|
|
endif # ifeq ($(DISTTYPE),custom)
|
|
|
|
FULLVERSION=$(VERSION)-$(TAG)
|
|
|
|
endif # ifeq ($(DISTTYPE),release)
|
|
|
|
|
|
|
|
DISTTYPEDIR ?= $(DISTTYPE)
|
2015-04-14 12:22:23 +00:00
|
|
|
RELEASE=$(shell sed -ne 's/\#define NODE_VERSION_IS_RELEASE \([01]\)/\1/p' src/node_version.h)
|
2012-08-04 19:07:17 +00:00
|
|
|
PLATFORM=$(shell uname | tr '[:upper:]' '[:lower:]')
|
2015-01-13 23:53:26 +00:00
|
|
|
NPMVERSION=v$(shell cat deps/npm/package.json | grep '"version"' | sed 's/^[^:]*: "\([^"]*\)",.*/\1/')
|
2015-06-10 07:05:26 +00:00
|
|
|
|
2016-04-20 17:12:14 +00:00
|
|
|
UNAME_M=$(shell uname -m)
|
|
|
|
ifeq ($(findstring x86_64,$(UNAME_M)),x86_64)
|
2012-08-09 23:30:41 +00:00
|
|
|
DESTCPU ?= x64
|
2012-08-04 19:39:54 +00:00
|
|
|
else
|
2016-04-20 17:12:14 +00:00
|
|
|
ifeq ($(findstring ppc64,$(UNAME_M)),ppc64)
|
|
|
|
DESTCPU ?= ppc64
|
|
|
|
else
|
|
|
|
ifeq ($(findstring ppc,$(UNAME_M)),ppc)
|
|
|
|
DESTCPU ?= ppc
|
|
|
|
else
|
|
|
|
ifeq ($(findstring s390x,$(UNAME_M)),s390x)
|
|
|
|
DESTCPU ?= s390x
|
|
|
|
else
|
|
|
|
ifeq ($(findstring s390,$(UNAME_M)),s390)
|
|
|
|
DESTCPU ?= s390
|
|
|
|
else
|
|
|
|
ifeq ($(findstring arm,$(UNAME_M)),arm)
|
|
|
|
DESTCPU ?= arm
|
|
|
|
else
|
|
|
|
ifeq ($(findstring aarch64,$(UNAME_M)),aarch64)
|
|
|
|
DESTCPU ?= aarch64
|
|
|
|
else
|
|
|
|
ifeq ($(findstring powerpc,$(shell uname -p)),powerpc)
|
|
|
|
DESTCPU ?= ppc64
|
|
|
|
else
|
2015-06-10 07:05:26 +00:00
|
|
|
DESTCPU ?= x86
|
2012-08-04 19:39:54 +00:00
|
|
|
endif
|
2016-04-20 17:12:14 +00:00
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
2012-08-09 23:30:41 +00:00
|
|
|
ifeq ($(DESTCPU),x64)
|
|
|
|
ARCH=x64
|
|
|
|
else
|
2012-11-27 05:03:36 +00:00
|
|
|
ifeq ($(DESTCPU),arm)
|
|
|
|
ARCH=arm
|
|
|
|
else
|
2016-02-11 02:57:20 +00:00
|
|
|
ifeq ($(DESTCPU),aarch64)
|
|
|
|
ARCH=arm64
|
|
|
|
else
|
2015-07-07 18:15:03 +00:00
|
|
|
ifeq ($(DESTCPU),ppc64)
|
|
|
|
ARCH=ppc64
|
|
|
|
else
|
|
|
|
ifeq ($(DESTCPU),ppc)
|
|
|
|
ARCH=ppc
|
|
|
|
else
|
2016-03-28 21:03:06 +00:00
|
|
|
ifeq ($(DESTCPU),s390)
|
|
|
|
ARCH=s390
|
|
|
|
else
|
|
|
|
ifeq ($(DESTCPU),s390x)
|
|
|
|
ARCH=s390x
|
|
|
|
else
|
2012-08-09 23:30:41 +00:00
|
|
|
ARCH=x86
|
2012-08-04 19:39:54 +00:00
|
|
|
endif
|
2012-11-27 05:03:36 +00:00
|
|
|
endif
|
2015-07-07 18:15:03 +00:00
|
|
|
endif
|
|
|
|
endif
|
2016-02-11 02:57:20 +00:00
|
|
|
endif
|
2016-03-28 21:03:06 +00:00
|
|
|
endif
|
|
|
|
endif
|
2015-06-10 07:05:26 +00:00
|
|
|
|
test: run v8 tests from node tree
Ported by exinfinitum from a PR by jasnell:
see https://github.com/nodejs/node-v0.x-archive/pull/14185
Allows the running of v8 tests on node's packaged v8 source code.
Note that the limited win32 support added by jasnell has NOT been ported,
and so these tests are currently UNIX ONLY.
Note that gclient depot tools
(see https://commondatastorage.googleapis.com/
chrome-infra-docs/flat/depot_tools/docs/html/
depot_tools_tutorial.html#_setting_up) and subversion are required
to run tests.
To perform tests, run the following commands:
make v8 DESTCPU=(ARCH)
make test-v8 DESTCPU=(ARCH)
where (ARCH) is your CPU architecture, e.g. x64, ia32.
DESTCPU MUST be specified for this to work properly.
Can also do tests on debug build by using "make test-v8 DESTCPU=(ARCH)
BUILDTYPE=Debug", or perform intl or benchmark tests via make
test-v8-intl or test-v8-benchmarks respectively.
Note that by default, quickcheck and TAP output are disabled, and i18n
is enabled. To activate these options, use options"QUICKCHECK=True" and
"ENABLE_V8_TAP=True" respectively.
Use "DISABLE_V8_I18N" to disable i18n.
Use V8_BUILD_OPTIONS to allow custom user-defined flags to be
appended onto "make v8".
Any tests performed after changes to the packaged v8 file will require
recompiling of v8, which can be done using "make v8 DESTCPU=(ARCH)".
Finally, two additional files necessary for one of the v8 tests have
been added to the v8 folder.
PR-URL: https://github.com/nodejs/node/pull/4704
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: targos - Michaël Zasso <mic.besace@gmail.com>
2015-03-28 04:39:06 +00:00
|
|
|
# node and v8 use different arch names (e.g. node 'x86' vs v8 'ia32').
|
|
|
|
# pass the proper v8 arch name to $V8_ARCH based on user-specified $DESTCPU.
|
|
|
|
ifeq ($(DESTCPU),x86)
|
|
|
|
V8_ARCH=ia32
|
|
|
|
else
|
|
|
|
V8_ARCH ?= $(DESTCPU)
|
|
|
|
|
|
|
|
endif
|
|
|
|
|
2015-06-10 07:05:26 +00:00
|
|
|
# enforce "x86" over "ia32" as the generally accepted way of referring to 32-bit intel
|
|
|
|
ifeq ($(ARCH),ia32)
|
|
|
|
override ARCH=x86
|
2013-02-26 06:51:00 +00:00
|
|
|
endif
|
2015-06-10 07:05:26 +00:00
|
|
|
ifeq ($(DESTCPU),ia32)
|
|
|
|
override DESTCPU=x86
|
|
|
|
endif
|
|
|
|
|
2015-08-13 16:14:34 +00:00
|
|
|
TARNAME=node-$(FULLVERSION)
|
2015-01-13 01:51:34 +00:00
|
|
|
TARBALL=$(TARNAME).tar
|
2016-01-11 19:54:33 +00:00
|
|
|
# Custom user-specified variation, use it directly
|
|
|
|
ifdef VARIATION
|
|
|
|
BINARYNAME=$(TARNAME)-$(PLATFORM)-$(ARCH)-$(VARIATION)
|
|
|
|
else
|
2012-08-04 19:07:17 +00:00
|
|
|
BINARYNAME=$(TARNAME)-$(PLATFORM)-$(ARCH)
|
2016-01-11 19:54:33 +00:00
|
|
|
endif
|
2015-01-13 01:51:34 +00:00
|
|
|
BINARYTAR=$(BINARYNAME).tar
|
2015-06-10 07:05:26 +00:00
|
|
|
# OSX doesn't have xz installed by default, http://macpkg.sourceforge.net/
|
2015-01-13 01:51:34 +00:00
|
|
|
XZ=$(shell which xz > /dev/null 2>&1; echo $$?)
|
2017-01-05 05:09:32 +00:00
|
|
|
XZ_COMPRESSION ?= 9e
|
2015-06-10 07:05:26 +00:00
|
|
|
PKG=$(TARNAME).pkg
|
2017-09-04 10:07:56 +00:00
|
|
|
MACOSOUTDIR=out/macos
|
2011-11-21 03:22:30 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: release-only
|
2012-08-04 22:34:04 +00:00
|
|
|
release-only:
|
2016-08-29 18:18:46 +00:00
|
|
|
@if [ "$(DISTTYPE)" != "nightly" ] && [ "$(DISTTYPE)" != "next-nightly" ] && \
|
|
|
|
`grep -q REPLACEME doc/api/*.md`; then \
|
2017-01-18 12:53:04 +00:00
|
|
|
echo 'Please update REPLACEME in Added: tags in doc/api/*.md (See doc/releases.md)' ; \
|
2016-05-13 21:24:33 +00:00
|
|
|
exit 1 ; \
|
|
|
|
fi
|
2017-08-08 22:00:17 +00:00
|
|
|
@if [ "$(DISTTYPE)" != "nightly" ] && [ "$(DISTTYPE)" != "next-nightly" ] && \
|
2018-04-28 17:24:40 +00:00
|
|
|
`grep -q DEP...X doc/api/deprecations.md`; then \
|
|
|
|
echo 'Please update DEP...X in doc/api/deprecations.md (See doc/releases.md)' ; \
|
2017-08-08 22:00:17 +00:00
|
|
|
exit 1 ; \
|
|
|
|
fi
|
2012-08-04 22:34:04 +00:00
|
|
|
@if [ "$(shell git status --porcelain | egrep -v '^\?\? ')" = "" ]; then \
|
|
|
|
exit 0 ; \
|
|
|
|
else \
|
2015-01-18 06:41:37 +00:00
|
|
|
echo "" >&2 ; \
|
2012-08-04 22:34:04 +00:00
|
|
|
echo "The git repository is not clean." >&2 ; \
|
|
|
|
echo "Please commit changes before building release tarball." >&2 ; \
|
|
|
|
echo "" >&2 ; \
|
|
|
|
git status --porcelain | egrep -v '^\?\?' >&2 ; \
|
|
|
|
echo "" >&2 ; \
|
|
|
|
exit 1 ; \
|
|
|
|
fi
|
2015-06-10 07:05:26 +00:00
|
|
|
@if [ "$(DISTTYPE)" != "release" -o "$(RELEASE)" = "1" ]; then \
|
2012-08-04 22:34:04 +00:00
|
|
|
exit 0; \
|
|
|
|
else \
|
2015-01-18 06:41:37 +00:00
|
|
|
echo "" >&2 ; \
|
2012-08-09 23:30:41 +00:00
|
|
|
echo "#NODE_VERSION_IS_RELEASE is set to $(RELEASE)." >&2 ; \
|
2015-01-18 06:41:37 +00:00
|
|
|
echo "Did you remember to update src/node_version.h?" >&2 ; \
|
|
|
|
echo "" >&2 ; \
|
2012-08-04 22:34:04 +00:00
|
|
|
exit 1 ; \
|
|
|
|
fi
|
|
|
|
|
|
|
|
$(PKG): release-only
|
2017-09-04 10:07:56 +00:00
|
|
|
$(RM) -r $(MACOSOUTDIR)
|
|
|
|
mkdir -p $(MACOSOUTDIR)/installer/productbuild
|
|
|
|
cat tools/macos-installer/productbuild/distribution.xml.tmpl \
|
|
|
|
| sed -E "s/\\{nodeversion\\}/$(FULLVERSION)/g" \
|
|
|
|
| sed -E "s/\\{npmversion\\}/$(NPMVERSION)/g" \
|
|
|
|
>$(MACOSOUTDIR)/installer/productbuild/distribution.xml ; \
|
|
|
|
|
|
|
|
@for dirname in tools/macos-installer/productbuild/Resources/*/; do \
|
|
|
|
lang=$$(basename $$dirname) ; \
|
|
|
|
mkdir -p $(MACOSOUTDIR)/installer/productbuild/Resources/$$lang ; \
|
|
|
|
printf "Found localization directory $$dirname\n" ; \
|
|
|
|
cat $$dirname/welcome.html.tmpl \
|
|
|
|
| sed -E "s/\\{nodeversion\\}/$(FULLVERSION)/g" \
|
|
|
|
| sed -E "s/\\{npmversion\\}/$(NPMVERSION)/g" \
|
|
|
|
>$(MACOSOUTDIR)/installer/productbuild/Resources/$$lang/welcome.html ; \
|
|
|
|
cat $$dirname/conclusion.html.tmpl \
|
|
|
|
| sed -E "s/\\{nodeversion\\}/$(FULLVERSION)/g" \
|
|
|
|
| sed -E "s/\\{npmversion\\}/$(NPMVERSION)/g" \
|
|
|
|
>$(MACOSOUTDIR)/installer/productbuild/Resources/$$lang/conclusion.html ; \
|
|
|
|
done
|
2015-01-18 06:41:37 +00:00
|
|
|
$(PYTHON) ./configure \
|
|
|
|
--dest-cpu=x64 \
|
|
|
|
--tag=$(TAG) \
|
|
|
|
--release-urlbase=$(RELEASE_URLBASE) \
|
2015-08-13 15:30:01 +00:00
|
|
|
$(CONFIG_FLAGS) $(BUILD_RELEASE_FLAGS)
|
2017-09-04 10:07:56 +00:00
|
|
|
$(MAKE) install V=$(V) DESTDIR=$(MACOSOUTDIR)/dist/node
|
|
|
|
SIGN="$(CODESIGN_CERT)" PKGDIR="$(MACOSOUTDIR)/dist/node/usr/local" bash \
|
2017-07-12 00:04:53 +00:00
|
|
|
tools/osx-codesign.sh
|
2017-09-04 10:07:56 +00:00
|
|
|
mkdir -p $(MACOSOUTDIR)/dist/npm/usr/local/lib/node_modules
|
|
|
|
mkdir -p $(MACOSOUTDIR)/pkgs
|
|
|
|
mv $(MACOSOUTDIR)/dist/node/usr/local/lib/node_modules/npm \
|
|
|
|
$(MACOSOUTDIR)/dist/npm/usr/local/lib/node_modules
|
|
|
|
unlink $(MACOSOUTDIR)/dist/node/usr/local/bin/npm
|
|
|
|
unlink $(MACOSOUTDIR)/dist/node/usr/local/bin/npx
|
|
|
|
$(NODE) tools/license2rtf.js < LICENSE > \
|
|
|
|
$(MACOSOUTDIR)/installer/productbuild/Resources/license.rtf
|
|
|
|
cp doc/osx_installer_logo.png $(MACOSOUTDIR)/installer/productbuild/Resources
|
|
|
|
pkgbuild --version $(FULLVERSION) \
|
|
|
|
--identifier org.nodejs.node.pkg \
|
|
|
|
--root $(MACOSOUTDIR)/dist/node $(MACOSOUTDIR)/pkgs/node-$(FULLVERSION).pkg
|
|
|
|
pkgbuild --version $(NPMVERSION) \
|
|
|
|
--identifier org.nodejs.npm.pkg \
|
|
|
|
--root $(MACOSOUTDIR)/dist/npm \
|
|
|
|
--scripts ./tools/macos-installer/pkgbuild/npm/scripts \
|
|
|
|
$(MACOSOUTDIR)/pkgs/npm-$(NPMVERSION).pkg
|
|
|
|
productbuild --distribution $(MACOSOUTDIR)/installer/productbuild/distribution.xml \
|
|
|
|
--resources $(MACOSOUTDIR)/installer/productbuild/Resources \
|
|
|
|
--package-path $(MACOSOUTDIR)/pkgs ./$(PKG)
|
2015-06-10 07:05:26 +00:00
|
|
|
SIGN="$(PRODUCTSIGN_CERT)" PKG="$(PKG)" bash tools/osx-productsign.sh
|
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: pkg
|
2017-11-12 19:54:28 +00:00
|
|
|
# Builds the macOS installer for releases.
|
2015-06-10 07:05:26 +00:00
|
|
|
pkg: $(PKG)
|
|
|
|
|
2017-11-12 19:54:28 +00:00
|
|
|
# Note: this is strictly for release builds on release machines only.
|
2015-06-10 07:05:26 +00:00
|
|
|
pkg-upload: pkg
|
2015-08-31 07:03:26 +00:00
|
|
|
ssh $(STAGINGSERVER) "mkdir -p nodejs/$(DISTTYPEDIR)/$(FULLVERSION)"
|
2015-09-15 17:32:37 +00:00
|
|
|
chmod 664 $(TARNAME).pkg
|
|
|
|
scp -p $(TARNAME).pkg $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME).pkg
|
|
|
|
ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME).pkg.done"
|
2011-11-11 22:31:15 +00:00
|
|
|
|
2014-08-30 22:59:05 +00:00
|
|
|
$(TARBALL): release-only $(NODE_EXE) doc
|
2015-02-26 00:08:16 +00:00
|
|
|
git checkout-index -a -f --prefix=$(TARNAME)/
|
2012-06-06 22:01:31 +00:00
|
|
|
mkdir -p $(TARNAME)/doc/api
|
2015-08-13 16:14:34 +00:00
|
|
|
cp doc/node.1 $(TARNAME)/doc/node.1
|
2012-06-06 22:01:31 +00:00
|
|
|
cp -r out/doc/api/* $(TARNAME)/doc/api/
|
2018-01-23 23:37:59 +00:00
|
|
|
$(RM) -r $(TARNAME)/.editorconfig
|
|
|
|
$(RM) -r $(TARNAME)/.git*
|
|
|
|
$(RM) -r $(TARNAME)/.mailmap
|
|
|
|
$(RM) -r $(TARNAME)/deps/openssl/openssl/demos
|
|
|
|
$(RM) -r $(TARNAME)/deps/openssl/openssl/doc
|
|
|
|
$(RM) -r $(TARNAME)/deps/openssl/openssl/test
|
|
|
|
$(RM) -r $(TARNAME)/deps/uv/docs
|
|
|
|
$(RM) -r $(TARNAME)/deps/uv/samples
|
|
|
|
$(RM) -r $(TARNAME)/deps/uv/test
|
|
|
|
$(RM) -r $(TARNAME)/deps/v8/samples
|
|
|
|
$(RM) -r $(TARNAME)/deps/v8/test
|
|
|
|
$(RM) -r $(TARNAME)/deps/v8/tools/profviz
|
|
|
|
$(RM) -r $(TARNAME)/deps/v8/tools/run-tests.py
|
2017-04-01 17:12:33 +00:00
|
|
|
$(RM) -r $(TARNAME)/deps/zlib/contrib # too big, unused
|
2018-01-23 23:37:59 +00:00
|
|
|
$(RM) -r $(TARNAME)/doc/images # too big
|
2017-04-01 17:12:33 +00:00
|
|
|
$(RM) -r $(TARNAME)/test*.tap
|
2018-01-23 23:37:59 +00:00
|
|
|
$(RM) -r $(TARNAME)/tools/cpplint.py
|
|
|
|
$(RM) -r $(TARNAME)/tools/eslint-rules
|
|
|
|
$(RM) -r $(TARNAME)/tools/license-builder.sh
|
|
|
|
$(RM) -r $(TARNAME)/tools/node_modules
|
|
|
|
$(RM) -r $(TARNAME)/tools/osx-*
|
|
|
|
$(RM) -r $(TARNAME)/tools/osx-pkg.pmdoc
|
|
|
|
$(RM) -r $(TARNAME)/tools/pkgsrc
|
|
|
|
$(RM) -r $(TARNAME)/tools/remark-cli
|
|
|
|
$(RM) -r $(TARNAME)/tools/remark-preset-lint-node
|
2017-04-01 17:12:33 +00:00
|
|
|
find $(TARNAME)/ -name ".eslint*" -maxdepth 2 | xargs $(RM)
|
|
|
|
find $(TARNAME)/ -type l | xargs $(RM) # annoying on windows
|
2010-05-13 22:54:50 +00:00
|
|
|
tar -cf $(TARNAME).tar $(TARNAME)
|
2017-04-01 17:12:33 +00:00
|
|
|
$(RM) -r $(TARNAME)
|
2015-01-13 01:51:34 +00:00
|
|
|
gzip -c -f -9 $(TARNAME).tar > $(TARNAME).tar.gz
|
|
|
|
ifeq ($(XZ), 0)
|
2015-04-15 00:49:29 +00:00
|
|
|
xz -c -f -$(XZ_COMPRESSION) $(TARNAME).tar > $(TARNAME).tar.xz
|
2015-01-13 01:51:34 +00:00
|
|
|
endif
|
2017-04-01 17:12:33 +00:00
|
|
|
$(RM) $(TARNAME).tar
|
2009-10-03 19:46:59 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: tar
|
2017-11-26 14:41:56 +00:00
|
|
|
tar: $(TARBALL) ## Create a source tarball.
|
2012-08-04 19:12:22 +00:00
|
|
|
|
2017-11-12 19:54:28 +00:00
|
|
|
# Note: this is strictly for release builds on release machines only.
|
2015-06-10 07:05:26 +00:00
|
|
|
tar-upload: tar
|
2015-08-31 07:03:26 +00:00
|
|
|
ssh $(STAGINGSERVER) "mkdir -p nodejs/$(DISTTYPEDIR)/$(FULLVERSION)"
|
2015-09-15 17:32:37 +00:00
|
|
|
chmod 664 $(TARNAME).tar.gz
|
|
|
|
scp -p $(TARNAME).tar.gz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME).tar.gz
|
|
|
|
ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME).tar.gz.done"
|
2015-06-10 07:05:26 +00:00
|
|
|
ifeq ($(XZ), 0)
|
2015-09-15 17:32:37 +00:00
|
|
|
chmod 664 $(TARNAME).tar.xz
|
|
|
|
scp -p $(TARNAME).tar.xz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME).tar.xz
|
|
|
|
ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME).tar.xz.done"
|
2015-06-10 07:05:26 +00:00
|
|
|
endif
|
|
|
|
|
2017-11-12 19:54:28 +00:00
|
|
|
# Note: this is strictly for release builds on release machines only.
|
2017-01-25 20:54:34 +00:00
|
|
|
doc-upload: doc
|
2017-05-11 02:09:50 +00:00
|
|
|
ssh $(STAGINGSERVER) "mkdir -p nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/docs/"
|
2015-08-31 07:33:22 +00:00
|
|
|
chmod -R ug=rw-x+X,o=r+X out/doc/
|
2017-05-11 02:09:50 +00:00
|
|
|
scp -pr out/doc/* $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/docs/
|
2015-08-31 07:03:26 +00:00
|
|
|
ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/docs.done"
|
2015-06-10 07:05:26 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: $(TARBALL)-headers
|
2016-03-31 17:23:42 +00:00
|
|
|
$(TARBALL)-headers: release-only
|
2015-01-18 06:41:37 +00:00
|
|
|
$(PYTHON) ./configure \
|
|
|
|
--prefix=/ \
|
|
|
|
--dest-cpu=$(DESTCPU) \
|
|
|
|
--tag=$(TAG) \
|
|
|
|
--release-urlbase=$(RELEASE_URLBASE) \
|
2015-08-13 15:30:01 +00:00
|
|
|
$(CONFIG_FLAGS) $(BUILD_RELEASE_FLAGS)
|
2015-06-30 06:57:47 +00:00
|
|
|
HEADERS_ONLY=1 $(PYTHON) tools/install.py install '$(TARNAME)' '/'
|
2017-04-01 17:12:33 +00:00
|
|
|
find $(TARNAME)/ -type l | xargs $(RM)
|
2015-06-14 10:23:43 +00:00
|
|
|
tar -cf $(TARNAME)-headers.tar $(TARNAME)
|
2017-04-01 17:12:33 +00:00
|
|
|
$(RM) -r $(TARNAME)
|
2015-06-14 10:23:43 +00:00
|
|
|
gzip -c -f -9 $(TARNAME)-headers.tar > $(TARNAME)-headers.tar.gz
|
|
|
|
ifeq ($(XZ), 0)
|
|
|
|
xz -c -f -$(XZ_COMPRESSION) $(TARNAME)-headers.tar > $(TARNAME)-headers.tar.xz
|
|
|
|
endif
|
2017-04-01 17:12:33 +00:00
|
|
|
$(RM) $(TARNAME)-headers.tar
|
2015-06-14 10:23:43 +00:00
|
|
|
|
2017-11-26 14:41:56 +00:00
|
|
|
tar-headers: $(TARBALL)-headers ## Build the node header tarball.
|
2015-06-14 10:23:43 +00:00
|
|
|
|
|
|
|
tar-headers-upload: tar-headers
|
2015-08-31 07:03:26 +00:00
|
|
|
ssh $(STAGINGSERVER) "mkdir -p nodejs/$(DISTTYPEDIR)/$(FULLVERSION)"
|
2015-08-31 07:33:22 +00:00
|
|
|
chmod 664 $(TARNAME)-headers.tar.gz
|
2015-08-31 07:03:26 +00:00
|
|
|
scp -p $(TARNAME)-headers.tar.gz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-headers.tar.gz
|
|
|
|
ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-headers.tar.gz.done"
|
2015-06-14 10:23:43 +00:00
|
|
|
ifeq ($(XZ), 0)
|
2015-08-31 07:33:22 +00:00
|
|
|
chmod 664 $(TARNAME)-headers.tar.xz
|
2015-08-31 07:03:26 +00:00
|
|
|
scp -p $(TARNAME)-headers.tar.xz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-headers.tar.xz
|
|
|
|
ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-headers.tar.xz.done"
|
2015-06-14 10:23:43 +00:00
|
|
|
endif
|
|
|
|
|
2012-08-04 22:34:04 +00:00
|
|
|
$(BINARYTAR): release-only
|
2017-04-01 17:12:33 +00:00
|
|
|
$(RM) -r $(BINARYNAME)
|
|
|
|
$(RM) -r out/deps out/Release
|
2015-01-18 06:41:37 +00:00
|
|
|
$(PYTHON) ./configure \
|
|
|
|
--prefix=/ \
|
|
|
|
--dest-cpu=$(DESTCPU) \
|
|
|
|
--tag=$(TAG) \
|
|
|
|
--release-urlbase=$(RELEASE_URLBASE) \
|
2015-08-13 15:30:01 +00:00
|
|
|
$(CONFIG_FLAGS) $(BUILD_RELEASE_FLAGS)
|
2012-08-04 19:07:17 +00:00
|
|
|
$(MAKE) install DESTDIR=$(BINARYNAME) V=$(V) PORTABLE=1
|
|
|
|
cp README.md $(BINARYNAME)
|
|
|
|
cp LICENSE $(BINARYNAME)
|
2015-01-14 02:16:16 +00:00
|
|
|
cp CHANGELOG.md $(BINARYNAME)
|
2017-07-12 00:05:39 +00:00
|
|
|
ifeq ($(OSTYPE),darwin)
|
|
|
|
SIGN="$(CODESIGN_CERT)" PKGDIR="$(BINARYNAME)" bash tools/osx-codesign.sh
|
|
|
|
endif
|
2012-08-04 19:07:17 +00:00
|
|
|
tar -cf $(BINARYNAME).tar $(BINARYNAME)
|
2017-04-01 17:12:33 +00:00
|
|
|
$(RM) -r $(BINARYNAME)
|
2015-01-13 01:51:34 +00:00
|
|
|
gzip -c -f -9 $(BINARYNAME).tar > $(BINARYNAME).tar.gz
|
|
|
|
ifeq ($(XZ), 0)
|
2015-04-15 00:49:29 +00:00
|
|
|
xz -c -f -$(XZ_COMPRESSION) $(BINARYNAME).tar > $(BINARYNAME).tar.xz
|
2015-01-13 01:51:34 +00:00
|
|
|
endif
|
2017-04-01 17:12:33 +00:00
|
|
|
$(RM) $(BINARYNAME).tar
|
2012-08-04 19:07:17 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: binary
|
2017-11-12 19:54:28 +00:00
|
|
|
# This requires NODE_VERSION_IS_RELEASE defined as 1 in src/node_version.h.
|
2017-11-26 14:41:56 +00:00
|
|
|
binary: $(BINARYTAR) ## Build release binary tarballs.
|
2012-08-04 19:12:37 +00:00
|
|
|
|
2017-11-12 19:54:28 +00:00
|
|
|
# Note: this is strictly for release builds on release machines only.
|
2015-06-10 07:05:26 +00:00
|
|
|
binary-upload: binary
|
2015-08-31 07:03:26 +00:00
|
|
|
ssh $(STAGINGSERVER) "mkdir -p nodejs/$(DISTTYPEDIR)/$(FULLVERSION)"
|
2015-09-15 17:32:37 +00:00
|
|
|
chmod 664 $(TARNAME)-$(OSTYPE)-$(ARCH).tar.gz
|
|
|
|
scp -p $(TARNAME)-$(OSTYPE)-$(ARCH).tar.gz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-$(OSTYPE)-$(ARCH).tar.gz
|
|
|
|
ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-$(OSTYPE)-$(ARCH).tar.gz.done"
|
2015-06-10 07:05:26 +00:00
|
|
|
ifeq ($(XZ), 0)
|
2015-09-15 17:32:37 +00:00
|
|
|
chmod 664 $(TARNAME)-$(OSTYPE)-$(ARCH).tar.xz
|
|
|
|
scp -p $(TARNAME)-$(OSTYPE)-$(ARCH).tar.xz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-$(OSTYPE)-$(ARCH).tar.xz
|
|
|
|
ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-$(OSTYPE)-$(ARCH).tar.xz.done"
|
2015-06-10 07:05:26 +00:00
|
|
|
endif
|
2013-06-04 00:05:56 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: bench-all
|
2018-07-13 07:00:19 +00:00
|
|
|
bench-all: bench-addons-build
|
2018-01-14 19:19:51 +00:00
|
|
|
@echo "Please use benchmark/run.js or benchmark/compare.js to run the benchmarks."
|
2013-02-13 22:18:27 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: bench
|
2018-07-13 07:00:19 +00:00
|
|
|
bench: bench-addons-build
|
2018-01-14 19:19:51 +00:00
|
|
|
@echo "Please use benchmark/run.js or benchmark/compare.js to run the benchmarks."
|
2016-03-27 06:12:47 +00:00
|
|
|
|
2018-07-13 07:00:19 +00:00
|
|
|
# Build required addons for benchmark before running it.
|
|
|
|
.PHONY: bench-addons-build
|
|
|
|
bench-addons-build: benchmark/napi/function_call/build/Release/binding.node \
|
|
|
|
benchmark/napi/function_args/build/Release/binding.node
|
|
|
|
|
|
|
|
.PHONY: bench-addons-clean
|
|
|
|
bench-addons-clean:
|
|
|
|
$(RM) -r benchmark/napi/function_call/build
|
|
|
|
$(RM) -r benchmark/napi/function_args/build
|
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: lint-md-clean
|
2017-05-26 08:01:27 +00:00
|
|
|
lint-md-clean:
|
|
|
|
$(RM) -r tools/remark-cli/node_modules
|
|
|
|
$(RM) -r tools/remark-preset-lint-node/node_modules
|
2017-10-29 06:50:29 +00:00
|
|
|
$(RM) tools/.*mdlintstamp
|
2017-05-26 08:01:27 +00:00
|
|
|
|
2018-02-24 19:07:56 +00:00
|
|
|
tools/remark-cli/node_modules: tools/remark-cli/package.json
|
|
|
|
@echo "Markdown linter: installing remark-cli into tools/"
|
2018-07-13 21:37:56 +00:00
|
|
|
@cd tools/remark-cli && $(call available-node,$(run-npm-ci))
|
2018-02-24 19:07:56 +00:00
|
|
|
|
|
|
|
tools/remark-preset-lint-node/node_modules: \
|
|
|
|
tools/remark-preset-lint-node/package.json
|
|
|
|
@echo "Markdown linter: installing remark-preset-lint-node into tools/"
|
2018-07-13 21:37:56 +00:00
|
|
|
@cd tools/remark-preset-lint-node && $(call available-node,$(run-npm-ci))
|
2018-01-20 17:14:03 +00:00
|
|
|
|
2018-02-24 19:07:56 +00:00
|
|
|
.PHONY: lint-md-build
|
|
|
|
lint-md-build: tools/remark-cli/node_modules \
|
|
|
|
tools/remark-preset-lint-node/node_modules
|
2017-05-22 21:46:09 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: lint-md
|
2017-11-08 23:33:52 +00:00
|
|
|
ifneq ("","$(wildcard tools/remark-cli/node_modules/)")
|
2017-10-29 06:50:29 +00:00
|
|
|
|
2018-06-15 22:56:53 +00:00
|
|
|
LINT_MD_DOC_FILES = $(shell ls doc/*.md doc/**/*.md)
|
2018-01-20 17:14:03 +00:00
|
|
|
run-lint-doc-md = tools/remark-cli/cli.js -q -f $(LINT_MD_DOC_FILES)
|
2018-06-14 06:11:05 +00:00
|
|
|
node_use_openssl = $(shell $(call available-node,"-p" \
|
|
|
|
"process.versions.openssl != undefined"))
|
2018-01-20 17:14:03 +00:00
|
|
|
# Lint all changed markdown files under doc/
|
|
|
|
tools/.docmdlintstamp: $(LINT_MD_DOC_FILES)
|
2018-06-14 06:11:05 +00:00
|
|
|
ifeq ($(node_use_openssl),true)
|
2017-10-29 06:50:29 +00:00
|
|
|
@echo "Running Markdown linter on docs..."
|
2018-01-20 17:14:03 +00:00
|
|
|
@$(call available-node,$(run-lint-doc-md))
|
2017-10-29 06:50:29 +00:00
|
|
|
@touch $@
|
2018-06-14 06:11:05 +00:00
|
|
|
else
|
|
|
|
@echo "Skipping Markdown linter on docs (no crypto)"
|
|
|
|
endif
|
2017-10-29 06:50:29 +00:00
|
|
|
|
2018-01-20 17:14:03 +00:00
|
|
|
LINT_MD_TARGETS = src lib benchmark tools/doc tools/icu
|
|
|
|
LINT_MD_ROOT_DOCS := $(wildcard *.md)
|
|
|
|
LINT_MD_MISC_FILES := $(shell find $(LINT_MD_TARGETS) -type f \
|
|
|
|
-not -path '*node_modules*' -name '*.md') $(LINT_MD_ROOT_DOCS)
|
|
|
|
run-lint-misc-md = tools/remark-cli/cli.js -q -f $(LINT_MD_MISC_FILES)
|
|
|
|
# Lint other changed markdown files maintained by us
|
|
|
|
tools/.miscmdlintstamp: $(LINT_MD_MISC_FILES)
|
2018-06-14 06:11:05 +00:00
|
|
|
ifeq ($(node_use_openssl),true)
|
2017-10-29 06:50:29 +00:00
|
|
|
@echo "Running Markdown linter on misc docs..."
|
2018-01-20 17:14:03 +00:00
|
|
|
@$(call available-node,$(run-lint-misc-md))
|
2017-10-29 06:50:29 +00:00
|
|
|
@touch $@
|
2018-06-14 06:11:05 +00:00
|
|
|
else
|
|
|
|
@echo "Skipping Markdown linter on misc docs (no crypto)"
|
|
|
|
endif
|
2017-10-29 06:50:29 +00:00
|
|
|
|
|
|
|
tools/.mdlintstamp: tools/.miscmdlintstamp tools/.docmdlintstamp
|
|
|
|
|
2017-11-12 19:54:28 +00:00
|
|
|
# Lints the markdown documents maintained by us in the codebase.
|
2017-11-08 23:33:52 +00:00
|
|
|
lint-md: | tools/.mdlintstamp
|
|
|
|
else
|
|
|
|
lint-md:
|
|
|
|
@echo "The markdown linter is not installed."
|
|
|
|
@echo "To install (requires internet access) run: $ make lint-md-build"
|
|
|
|
endif
|
2017-04-30 19:07:38 +00:00
|
|
|
|
2018-03-04 05:47:41 +00:00
|
|
|
LINT_JS_TARGETS = .eslintrc.js benchmark doc lib test tools
|
2018-01-20 17:17:47 +00:00
|
|
|
|
|
|
|
run-lint-js = tools/node_modules/eslint/bin/eslint.js --cache \
|
2018-02-04 19:38:18 +00:00
|
|
|
--ext=.js,.mjs,.md $(LINT_JS_TARGETS) --ignore-pattern '!.eslintrc.js'
|
2018-01-20 17:17:47 +00:00
|
|
|
run-lint-js-fix = $(run-lint-js) --fix
|
2017-06-05 19:32:57 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: lint-js-fix
|
2017-11-24 02:50:19 +00:00
|
|
|
lint-js-fix:
|
2018-01-20 17:17:47 +00:00
|
|
|
@$(call available-node,$(run-lint-js-fix))
|
2017-11-24 02:50:19 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: lint-js
|
2017-11-12 19:54:28 +00:00
|
|
|
# Note that on the CI `lint-js-ci` is run instead.
|
|
|
|
# Lints the JavaScript code with eslint.
|
2017-09-08 11:44:58 +00:00
|
|
|
lint-js:
|
2017-04-15 08:23:46 +00:00
|
|
|
@echo "Running JS linter..."
|
2018-01-20 17:17:47 +00:00
|
|
|
@$(call available-node,$(run-lint-js))
|
2016-03-10 03:40:54 +00:00
|
|
|
|
2017-09-08 11:44:58 +00:00
|
|
|
jslint: lint-js
|
|
|
|
@echo "Please use lint-js instead of jslint"
|
|
|
|
|
2018-01-20 17:17:47 +00:00
|
|
|
run-lint-js-ci = tools/lint-js.js $(PARALLEL_ARGS) -f tap -o test-eslint.tap \
|
|
|
|
$(LINT_JS_TARGETS)
|
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: lint-js-ci
|
2017-11-12 19:54:28 +00:00
|
|
|
# On the CI the output is emitted in the TAP format.
|
2017-09-08 11:44:58 +00:00
|
|
|
lint-js-ci:
|
2017-04-15 08:23:46 +00:00
|
|
|
@echo "Running JS linter..."
|
2018-01-20 17:17:47 +00:00
|
|
|
@$(call available-node,$(run-lint-js-ci))
|
2017-09-08 11:44:58 +00:00
|
|
|
|
|
|
|
jslint-ci: lint-js-ci
|
|
|
|
@echo "Please use lint-js-ci instead of jslint-ci"
|
2010-10-15 17:05:22 +00:00
|
|
|
|
2018-04-02 09:37:11 +00:00
|
|
|
LINT_CPP_ADDON_DOC_FILES_GLOB = test/addons/??_*/*.cc test/addons/??_*/*.h
|
|
|
|
LINT_CPP_ADDON_DOC_FILES = $(wildcard $(LINT_CPP_ADDON_DOC_FILES_GLOB))
|
2017-09-08 11:44:58 +00:00
|
|
|
LINT_CPP_EXCLUDE ?=
|
|
|
|
LINT_CPP_EXCLUDE += src/node_root_certs.h
|
2018-01-23 10:49:25 +00:00
|
|
|
LINT_CPP_EXCLUDE += $(LINT_CPP_ADDON_DOC_FILES)
|
|
|
|
LINT_CPP_EXCLUDE += $(wildcard test/addons-napi/??_*/*.cc test/addons-napi/??_*/*.h)
|
2017-07-26 08:27:18 +00:00
|
|
|
# These files were copied more or less verbatim from V8.
|
2017-09-08 11:44:58 +00:00
|
|
|
LINT_CPP_EXCLUDE += src/tracing/trace_event.h src/tracing/trace_event_common.h
|
2015-08-18 18:29:10 +00:00
|
|
|
|
2018-01-23 10:49:25 +00:00
|
|
|
LINT_CPP_FILES = $(filter-out $(LINT_CPP_EXCLUDE), $(wildcard \
|
2018-06-15 20:03:12 +00:00
|
|
|
benchmark/napi/function_call/binding.cc \
|
2018-01-23 10:49:25 +00:00
|
|
|
src/*.c \
|
|
|
|
src/*.cc \
|
|
|
|
src/*.h \
|
|
|
|
src/*/*.c \
|
|
|
|
src/*/*.cc \
|
|
|
|
src/*/*.h \
|
|
|
|
test/addons/*/*.cc \
|
|
|
|
test/addons/*/*.h \
|
|
|
|
test/cctest/*.cc \
|
|
|
|
test/cctest/*.h \
|
|
|
|
test/addons-napi/*/*.cc \
|
|
|
|
test/addons-napi/*/*.h \
|
|
|
|
test/gc/binding.cc \
|
|
|
|
tools/icu/*.cc \
|
|
|
|
tools/icu/*.h \
|
|
|
|
))
|
|
|
|
|
|
|
|
# Code blocks don't have newline at the end,
|
|
|
|
# and the actual filename is generated so it won't match header guards
|
|
|
|
ADDON_DOC_LINT_FLAGS=-whitespace/ending_newline,-build/header_guard
|
2017-10-22 06:05:26 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: lint-cpp
|
2017-11-12 19:54:28 +00:00
|
|
|
# Lints the C++ code with cpplint.py and check-imports.py.
|
2017-10-29 06:50:29 +00:00
|
|
|
lint-cpp: tools/.cpplintstamp
|
|
|
|
|
|
|
|
tools/.cpplintstamp: $(LINT_CPP_FILES)
|
2017-04-15 08:23:46 +00:00
|
|
|
@echo "Running C++ linter..."
|
2017-10-29 06:50:29 +00:00
|
|
|
@$(PYTHON) tools/cpplint.py $?
|
2016-04-07 18:56:05 +00:00
|
|
|
@$(PYTHON) tools/check-imports.py
|
2017-10-29 06:50:29 +00:00
|
|
|
@touch $@
|
2010-12-02 01:01:19 +00:00
|
|
|
|
2018-01-23 10:49:25 +00:00
|
|
|
lint-addon-docs: test/addons/.docbuildstamp
|
|
|
|
@echo "Running C++ linter on addon docs..."
|
2018-04-02 09:37:11 +00:00
|
|
|
@$(PYTHON) tools/cpplint.py --filter=$(ADDON_DOC_LINT_FLAGS) $(LINT_CPP_ADDON_DOC_FILES_GLOB)
|
2018-01-23 10:49:25 +00:00
|
|
|
|
2017-09-08 11:44:58 +00:00
|
|
|
cpplint: lint-cpp
|
|
|
|
@echo "Please use lint-cpp instead of cpplint"
|
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: lint
|
|
|
|
.PHONY: lint-ci
|
2017-12-22 15:53:42 +00:00
|
|
|
ifneq ("","$(wildcard tools/node_modules/eslint/)")
|
2017-11-26 14:41:56 +00:00
|
|
|
lint: ## Run JS, C++, MD and doc linters.
|
2017-04-15 08:23:46 +00:00
|
|
|
@EXIT_STATUS=0 ; \
|
2017-09-08 11:44:58 +00:00
|
|
|
$(MAKE) lint-js || EXIT_STATUS=$$? ; \
|
|
|
|
$(MAKE) lint-cpp || EXIT_STATUS=$$? ; \
|
2018-01-23 10:49:25 +00:00
|
|
|
$(MAKE) lint-addon-docs || EXIT_STATUS=$$? ; \
|
2018-01-31 05:16:19 +00:00
|
|
|
$(MAKE) lint-md || EXIT_STATUS=$$? ; \
|
2017-04-07 19:07:14 +00:00
|
|
|
exit $$EXIT_STATUS
|
2016-07-08 23:22:46 +00:00
|
|
|
CONFLICT_RE=^>>>>>>> [0-9A-Fa-f]+|^<<<<<<< [A-Za-z]+
|
2017-11-12 19:54:28 +00:00
|
|
|
|
|
|
|
# Related CI job: node-test-linter
|
2018-01-23 10:49:25 +00:00
|
|
|
lint-ci: lint-js-ci lint-cpp lint-md lint-addon-docs
|
2016-07-08 23:22:46 +00:00
|
|
|
@if ! ( grep -IEqrs "$(CONFLICT_RE)" benchmark deps doc lib src test tools ) \
|
|
|
|
&& ! ( find . -maxdepth 1 -type f | xargs grep -IEqs "$(CONFLICT_RE)" ); then \
|
|
|
|
exit 0 ; \
|
|
|
|
else \
|
|
|
|
echo "" >&2 ; \
|
|
|
|
echo "Conflict marker detected in one or more files. Please fix them first." >&2 ; \
|
|
|
|
exit 1 ; \
|
|
|
|
fi
|
2016-03-13 23:08:11 +00:00
|
|
|
else
|
|
|
|
lint:
|
|
|
|
@echo "Linting is not available through the source tarball."
|
|
|
|
@echo "Use the git repo instead:" \
|
|
|
|
"$ git clone https://github.com/nodejs/node.git"
|
2010-12-02 00:35:46 +00:00
|
|
|
|
2016-03-27 06:12:47 +00:00
|
|
|
lint-ci: lint
|
2016-03-10 03:40:54 +00:00
|
|
|
endif
|
2016-03-27 06:12:47 +00:00
|
|
|
|
2018-01-03 13:14:07 +00:00
|
|
|
.PHONY: lint-clean
|
2017-10-29 06:50:29 +00:00
|
|
|
lint-clean:
|
|
|
|
$(RM) tools/.*lintstamp
|
|
|
|
$(RM) .eslintcache
|