2012-01-17 23:02:15 +01:00
|
|
|
-include config.mk
|
|
|
|
|
2011-11-15 04:02:44 +01:00
|
|
|
BUILDTYPE ?= Release
|
2021-03-16 07:50:42 +01:00
|
|
|
PYTHON ?= python3
|
2012-04-21 22:40:48 +02:00
|
|
|
DESTDIR ?=
|
2012-08-02 22:35:41 +02:00
|
|
|
SIGN ?=
|
2013-04-23 20:17:09 +02:00
|
|
|
PREFIX ?= /usr/local
|
2015-08-26 12:38:48 +02:00
|
|
|
FLAKY_TESTS ?= run
|
2015-08-26 12:41:16 +02:00
|
|
|
TEST_CI_ARGS ?=
|
2015-08-13 18:14:34 +02:00
|
|
|
STAGINGSERVER ?= node-www
|
2024-11-02 09:00:53 +01:00
|
|
|
CLOUDFLARE_BUCKET ?= r2:dist-staging
|
2016-10-09 16:24:23 +02:00
|
|
|
LOGLEVEL ?= silent
|
2021-01-04 16:11:57 +01:00
|
|
|
OSTYPE := $(shell uname -s | tr '[:upper:]' '[:lower:]')
|
2022-01-06 16:54:32 +01:00
|
|
|
ifeq ($(findstring os/390,$OSTYPE),os/390)
|
|
|
|
OSTYPE ?= os390
|
|
|
|
endif
|
2021-03-22 13:18:48 +01:00
|
|
|
ARCHTYPE := $(shell uname -m | tr '[:upper:]' '[:lower:]')
|
2017-09-29 03:29:54 +02:00
|
|
|
COVTESTS ?= test-cov
|
2019-01-18 22:46:49 +01:00
|
|
|
COV_SKIP_TESTS ?= core_line_numbers.js,testFinalizer.js,test_function/test.js
|
2017-02-21 08:43:21 +01:00
|
|
|
GTEST_FILTER ?= "*"
|
2017-05-15 20:24:43 +02:00
|
|
|
GNUMAKEFLAGS += --no-print-directory
|
2017-10-09 20:30:38 +02:00
|
|
|
GCOV ?= gcov
|
2018-01-08 16:31:07 +01:00
|
|
|
PWD = $(CURDIR)
|
2019-04-30 23:59:00 +02:00
|
|
|
BUILD_WITH ?= make
|
2020-04-28 21:34:22 +02:00
|
|
|
FIND ?= find
|
2009-12-06 07:35:26 +01:00
|
|
|
|
2016-04-15 05:15:40 +02:00
|
|
|
ifdef JOBS
|
2019-07-28 15:54:08 +02:00
|
|
|
PARALLEL_ARGS = -j $(JOBS)
|
2018-04-18 11:18:38 +02:00
|
|
|
else
|
2021-11-24 06:30:21 +01:00
|
|
|
PARALLEL_ARGS =
|
2016-04-15 05:15:40 +02: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 05:39:06 +01:00
|
|
|
ifdef ENABLE_V8_TAP
|
2019-07-28 15:54:08 +02: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
|
2022-10-03 19:45:40 +02:00
|
|
|
define convert_to_junit
|
|
|
|
@true
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifdef ENABLE_CONVERT_V8_JSON_TO_XML
|
|
|
|
TAP_V8_JSON := $(PWD)/v8-tap.json
|
|
|
|
TAP_V8_INTL_JSON := $(PWD)/v8-intl-tap.json
|
|
|
|
TAP_V8_BENCHMARKS_JSON := $(PWD)/v8-benchmarks-tap.json
|
|
|
|
|
|
|
|
# By default, the V8's JSON test output only includes the tests which have
|
|
|
|
# failed. We use --slow-tests-cutoff to ensure that all tests are present
|
|
|
|
# in the output, including those which pass.
|
|
|
|
TAP_V8 := --json-test-results $(TAP_V8_JSON) --slow-tests-cutoff 1000000
|
|
|
|
TAP_V8_INTL := --json-test-results $(TAP_V8_INTL_JSON) --slow-tests-cutoff 1000000
|
|
|
|
TAP_V8_BENCHMARKS := --json-test-results $(TAP_V8_BENCHMARKS_JSON) --slow-tests-cutoff 1000000
|
|
|
|
|
|
|
|
define convert_to_junit
|
|
|
|
export PATH="$(NO_BIN_OVERRIDE_PATH)" && \
|
|
|
|
$(PYTHON) tools/v8-json-to-junit.py < $(1) > $(1:.json=.xml)
|
|
|
|
endef
|
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 05:39:06 +01:00
|
|
|
endif
|
|
|
|
|
2016-02-29 23:44:31 +01: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 05:39:06 +01:00
|
|
|
ifdef DISABLE_V8_I18N
|
2019-07-28 15:54:08 +02:00
|
|
|
V8_BUILD_OPTIONS += i18nsupport=off
|
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 05:39:06 +01:00
|
|
|
endif
|
2021-06-08 15:20:31 +02:00
|
|
|
# V8 build and test toolchains are not currently compatible with Python 3.
|
|
|
|
# config.mk may have prepended a symlink for `python` to PATH which we need
|
|
|
|
# to undo before calling V8's tools.
|
|
|
|
OVERRIDE_BIN_DIR=$(dir $(abspath $(lastword $(MAKEFILE_LIST))))out/tools/bin
|
|
|
|
NO_BIN_OVERRIDE_PATH=$(subst $() $(),:,$(filter-out $(OVERRIDE_BIN_DIR),$(subst :, ,$(PATH))))
|
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 05:39:06 +01:00
|
|
|
|
2017-10-09 20:30:38 +02:00
|
|
|
ifeq ($(OSTYPE), darwin)
|
2019-07-28 15:54:08 +02:00
|
|
|
GCOV = xcrun llvm-cov gcov
|
2017-10-09 20:30:38 +02:00
|
|
|
endif
|
|
|
|
|
2021-01-04 16:11:57 +01:00
|
|
|
BUILDTYPE_LOWER := $(shell echo $(BUILDTYPE) | tr '[:upper:]' '[:lower:]')
|
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 05:39:06 +01:00
|
|
|
|
2014-08-31 00:59:05 +02:00
|
|
|
# Determine EXEEXT
|
2014-10-29 15:43:09 +01:00
|
|
|
EXEEXT := $(shell $(PYTHON) -c \
|
|
|
|
"import sys; print('.exe' if sys.platform == 'win32' else '')")
|
2014-08-31 00:59:05 +02:00
|
|
|
|
2015-08-13 18:14:34 +02:00
|
|
|
NODE_EXE = node$(EXEEXT)
|
2024-03-03 21:06:53 +01:00
|
|
|
# Use $(PWD) so we can cd to anywhere before calling this
|
|
|
|
NODE ?= "$(PWD)/$(NODE_EXE)"
|
2015-08-13 18:14:34 +02:00
|
|
|
NODE_G_EXE = node_g$(EXEEXT)
|
2016-09-05 22:34:06 +02:00
|
|
|
NPM ?= ./deps/npm/bin/npm-cli.js
|
2013-02-12 08:22:12 +01:00
|
|
|
|
2015-08-13 17:30:01 +02:00
|
|
|
# Flags for packaging.
|
|
|
|
BUILD_DOWNLOAD_FLAGS ?= --download=all
|
2019-10-08 18:57:09 +02:00
|
|
|
BUILD_INTL_FLAGS ?= --with-intl=full-icu
|
2015-08-13 17:30:01 +02:00
|
|
|
BUILD_RELEASE_FLAGS ?= $(BUILD_DOWNLOAD_FLAGS) $(BUILD_INTL_FLAGS)
|
|
|
|
|
2019-03-18 15:47:34 +01:00
|
|
|
# Default to quiet/pretty builds.
|
|
|
|
# To do verbose builds, run `make V=1` or set the V environment variable.
|
|
|
|
V ?= 0
|
2012-07-25 01:19:08 +02:00
|
|
|
|
2018-08-16 08:08:00 +02:00
|
|
|
# Use -e to double check in case it's a broken link
|
|
|
|
available-node = \
|
2024-03-03 21:06:53 +01:00
|
|
|
if [ -x "$(NODE)" ] && [ -e "$(NODE)" ]; then \
|
|
|
|
"$(NODE)" $(1); \
|
2020-11-14 16:20:03 +01:00
|
|
|
elif [ -x `command -v node` ] && [ -e `command -v node` ] && [ `command -v node` ]; then \
|
|
|
|
`command -v node` $(1); \
|
2018-08-16 08:08:00 +02:00
|
|
|
else \
|
|
|
|
echo "No available node, cannot run \"node $(1)\""; \
|
|
|
|
exit 1; \
|
|
|
|
fi;
|
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: all
|
2012-01-26 23:45:16 +01: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 12:23:17 +01:00
|
|
|
ifeq ($(BUILDTYPE),Release)
|
2024-09-24 22:40:34 +02:00
|
|
|
all: $(NODE_EXE) ## Build node in out/Release/node (Default).
|
2011-12-17 12:23:17 +01:00
|
|
|
else
|
2018-09-30 19:44:55 +02:00
|
|
|
all: $(NODE_EXE) $(NODE_G_EXE)
|
2011-12-17 12:23:17 +01:00
|
|
|
endif
|
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: help
|
2017-11-26 15:41:56 +01: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"
|
2021-01-04 16:11:57 +01:00
|
|
|
@grep -E '^[[:alnum:]._-]+:.*?## .*$$' Makefile | sort | \
|
2017-11-26 15:41:56 +01:00
|
|
|
awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}'
|
|
|
|
|
2018-01-23 11:49:25 +01: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 12:23:17 +01:00
|
|
|
|
2018-01-23 11:49:25 +01: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
|
2019-04-30 23:59:00 +02:00
|
|
|
ifeq ($(BUILD_WITH), make)
|
2020-06-17 11:11:09 +02:00
|
|
|
$(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)
|
2021-05-19 05:15:53 +02:00
|
|
|
if [ ! -r $@ ] || [ ! -L $@ ]; then \
|
2020-06-17 11:11:09 +02:00
|
|
|
ln -fs out/${build_type}/$(NODE_EXE) $@; fi
|
2019-04-30 23:59:00 +02:00
|
|
|
else
|
|
|
|
ifeq ($(BUILD_WITH), ninja)
|
2022-08-22 13:39:00 +02:00
|
|
|
NINJA ?= ninja
|
2019-04-30 23:59:00 +02:00
|
|
|
ifeq ($(V),1)
|
2019-07-28 15:54:08 +02:00
|
|
|
NINJA_ARGS := $(NINJA_ARGS) -v
|
2019-04-30 23:59:00 +02:00
|
|
|
endif
|
|
|
|
ifdef JOBS
|
2019-07-28 15:54:08 +02:00
|
|
|
NINJA_ARGS := $(NINJA_ARGS) -j$(JOBS)
|
2019-04-30 23:59:00 +02:00
|
|
|
else
|
2024-05-25 19:37:05 +02:00
|
|
|
IMMEDIATE_NINJA_ARGS := $(NINJA_ARGS)
|
2024-06-08 03:08:22 +02:00
|
|
|
NINJA_ARGS = $(filter -j%,$(MAKEFLAGS))$(IMMEDIATE_NINJA_ARGS)
|
2019-04-30 23:59:00 +02:00
|
|
|
endif
|
|
|
|
$(NODE_EXE): config.gypi out/Release/build.ninja
|
2022-08-22 13:39:00 +02:00
|
|
|
$(NINJA) -C out/Release $(NINJA_ARGS)
|
2021-05-19 05:15:53 +02:00
|
|
|
if [ ! -r $@ ] || [ ! -L $@ ]; then ln -fs out/Release/$(NODE_EXE) $@; fi
|
2019-04-30 23:59:00 +02:00
|
|
|
|
|
|
|
$(NODE_G_EXE): config.gypi out/Debug/build.ninja
|
2022-08-22 13:39:00 +02:00
|
|
|
$(NINJA) -C out/Debug $(NINJA_ARGS)
|
2021-05-19 05:15:53 +02:00
|
|
|
if [ ! -r $@ ] || [ ! -L $@ ]; then ln -fs out/Debug/$(NODE_EXE) $@; fi
|
2019-04-30 23:59:00 +02:00
|
|
|
else
|
|
|
|
$(NODE_EXE) $(NODE_G_EXE):
|
2020-10-19 11:18:46 +02:00
|
|
|
$(warning This Makefile currently only supports building with 'make' or 'ninja')
|
2019-04-30 23:59:00 +02:00
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2010-10-24 16:15:05 +02:00
|
|
|
|
2018-08-09 12:22:07 +02:00
|
|
|
ifeq ($(BUILDTYPE),Debug)
|
|
|
|
CONFIG_FLAGS += --debug
|
|
|
|
endif
|
2019-04-07 21:02:04 +02:00
|
|
|
|
2018-06-18 19:02:57 +02:00
|
|
|
.PHONY: with-code-cache
|
|
|
|
.PHONY: test-code-cache
|
2020-10-19 11:18:46 +02:00
|
|
|
with-code-cache test-code-cache:
|
|
|
|
$(warning '$@' target is a noop)
|
2018-06-18 19:02:57 +02:00
|
|
|
|
2019-03-25 03:58:29 +01:00
|
|
|
out/Makefile: config.gypi common.gypi node.gyp \
|
2024-11-10 20:20:50 +01:00
|
|
|
deps/*/*.gyp \
|
2024-07-09 22:36:07 +02:00
|
|
|
tools/v8_gypfiles/toolchain.gypi \
|
|
|
|
tools/v8_gypfiles/features.gypi \
|
2019-07-28 15:54:08 +02:00
|
|
|
tools/v8_gypfiles/inspector.gypi tools/v8_gypfiles/v8.gyp
|
2013-11-11 00:15:34 +01:00
|
|
|
$(PYTHON) tools/gyp_node.py -f make
|
2012-09-04 16:03:01 +02:00
|
|
|
|
2019-09-09 22:10:25 +02:00
|
|
|
# node_version.h is listed because the N-API version is taken from there
|
|
|
|
# and included in config.gypi
|
|
|
|
config.gypi: configure configure.py src/node_version.h
|
2018-06-16 21:28:34 +02:00
|
|
|
@if [ -x config.status ]; then \
|
2021-07-20 12:00:19 +02:00
|
|
|
export PATH="$(NO_BIN_OVERRIDE_PATH)" && ./config.status; \
|
2018-06-16 21:28:34 +02:00
|
|
|
else \
|
|
|
|
echo Missing or stale $@, please run ./$<; \
|
|
|
|
exit 1; \
|
|
|
|
fi
|
2018-01-23 11:49:25 +01:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: install
|
2024-09-24 22:40:34 +02:00
|
|
|
install: all ## Install node into $PREFIX (default=/usr/local).
|
2023-11-16 08:30:16 +01:00
|
|
|
$(PYTHON) tools/install.py $@ --dest-dir '$(DESTDIR)' --prefix '$(PREFIX)'
|
2011-12-14 14:00:10 +01:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: uninstall
|
2024-09-24 22:40:34 +02:00
|
|
|
uninstall: ## Uninstall node from $PREFIX (default=/usr/local).
|
2023-11-16 08:30:16 +01:00
|
|
|
$(PYTHON) tools/install.py $@ --dest-dir '$(DESTDIR)' --prefix '$(PREFIX)'
|
2011-11-23 13:19:19 +01:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: clean
|
2022-01-18 19:05:06 +01:00
|
|
|
.NOTPARALLEL: clean
|
2017-11-26 15:41:56 +01:00
|
|
|
clean: ## Remove build artifacts.
|
2017-04-01 19:12:33 +02:00
|
|
|
$(RM) -r out/Makefile $(NODE_EXE) $(NODE_G_EXE) out/$(BUILDTYPE)/$(NODE_EXE) \
|
2017-10-22 16:43:05 +02:00
|
|
|
out/$(BUILDTYPE)/node.exp
|
2020-04-28 21:34:22 +02:00
|
|
|
@if [ -d out ]; then $(FIND) out/ -name '*.o' -o -name '*.a' -o -name '*.d' | xargs $(RM) -r; fi
|
2017-04-01 19:12:33 +02:00
|
|
|
$(RM) -r node_modules
|
|
|
|
@if [ -d deps/icu ]; then echo deleting deps/icu; $(RM) -r deps/icu; fi
|
|
|
|
$(RM) test.tap
|
2019-08-12 12:14:43 +02:00
|
|
|
$(MAKE) testclean
|
2017-10-22 16:43:05 +02:00
|
|
|
$(MAKE) test-addons-clean
|
2018-07-13 09:00:19 +02:00
|
|
|
$(MAKE) bench-addons-clean
|
2009-10-03 22:42:03 +02:00
|
|
|
|
2019-08-12 12:14:43 +02:00
|
|
|
.PHONY: testclean
|
2022-01-18 19:05:06 +01:00
|
|
|
.NOTPARALLEL: testclean
|
2024-09-24 22:40:34 +02:00
|
|
|
testclean: ## Remove test artifacts.
|
2019-08-12 12:14:43 +02:00
|
|
|
# Next one is legacy remove this at some point
|
|
|
|
$(RM) -r test/tmp*
|
|
|
|
$(RM) -r test/.tmp*
|
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: distclean
|
2022-01-18 19:05:06 +01:00
|
|
|
.NOTPARALLEL: distclean
|
2024-09-24 22:40:34 +02:00
|
|
|
distclean: ## Remove all build and test artifacts.
|
2017-04-01 19:12:33 +02:00
|
|
|
$(RM) -r out
|
2021-04-14 11:19:54 +02:00
|
|
|
$(RM) config.gypi icu_config.gypi
|
2017-04-01 19:12:33 +02:00
|
|
|
$(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 11:11:27 +02:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: check
|
2015-03-19 23:15:54 +01:00
|
|
|
check: test
|
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: coverage-clean
|
2022-01-18 19:05:06 +01:00
|
|
|
.NOTPARALLEL: coverage-clean
|
2017-01-10 10:21:30 +01:00
|
|
|
# Remove files generated by running coverage, put the non-instrumented lib back
|
|
|
|
# in place
|
2024-09-24 22:40:34 +02:00
|
|
|
coverage-clean: ## Remove coverage artifacts.
|
2017-04-01 19:12:33 +02:00
|
|
|
$(RM) -r node_modules
|
2021-07-09 04:27:41 +02:00
|
|
|
$(RM) -r gcovr
|
2020-10-23 04:56:28 +02:00
|
|
|
$(RM) -r coverage/tmp
|
2024-08-24 16:17:44 +02:00
|
|
|
@if [ -d "out/Release/obj.target" ]; then \
|
|
|
|
$(FIND) out/$(BUILDTYPE)/obj.target \( -name "*.gcda" -o -name "*.gcno" \) \
|
2024-10-14 08:41:11 +02:00
|
|
|
-type f | xargs $(RM); \
|
2024-08-24 16:17:44 +02:00
|
|
|
fi
|
2017-01-10 10:21:30 +01:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: coverage
|
2021-07-12 13:01:03 +02:00
|
|
|
# Build and test with code coverage reporting. HTML coverage reports will be
|
|
|
|
# created under coverage/. For C++ coverage reporting, this needs to be run
|
|
|
|
# in conjunction with configure --coverage.
|
|
|
|
# Related CI job: node-test-commit-linux-coverage-daily
|
2017-11-26 15:41:56 +01:00
|
|
|
coverage: coverage-test ## Run the tests and generate a coverage report.
|
2017-01-10 10:21:30 +01:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: coverage-build
|
2024-09-24 22:40:34 +02:00
|
|
|
coverage-build: all ## Build coverage files.
|
2019-01-18 22:46:49 +01:00
|
|
|
-$(MAKE) coverage-build-js
|
2024-07-27 23:52:23 +02:00
|
|
|
if [ ! -d gcovr ]; then $(PYTHON) -m pip install -t gcovr gcovr==7.2; fi
|
2017-01-10 10:21:30 +01:00
|
|
|
$(MAKE)
|
|
|
|
|
2019-01-18 22:46:49 +01:00
|
|
|
.PHONY: coverage-build-js
|
2024-09-24 22:40:34 +02:00
|
|
|
coverage-build-js: ## Build JavaScript coverage files.
|
2019-01-18 22:46:49 +01:00
|
|
|
mkdir -p node_modules
|
|
|
|
if [ ! -d node_modules/c8 ]; then \
|
2019-01-31 00:51:21 +01:00
|
|
|
$(NODE) ./deps/npm install c8 --no-save --no-package-lock;\
|
2019-01-18 22:46:49 +01:00
|
|
|
fi
|
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: coverage-test
|
2024-09-24 22:40:34 +02:00
|
|
|
coverage-test: coverage-build ## Run the tests and generate a coverage report.
|
2024-08-24 16:17:44 +02:00
|
|
|
@if [ -d "out/Release/obj.target" ]; then \
|
2024-10-14 08:41:11 +02:00
|
|
|
$(FIND) out/$(BUILDTYPE)/obj.target -name "*.gcda" -type f | xargs $(RM); \
|
2024-08-24 16:17:44 +02:00
|
|
|
fi
|
2020-10-23 04:56:28 +02:00
|
|
|
-NODE_V8_COVERAGE=coverage/tmp \
|
|
|
|
TEST_CI_ARGS="$(TEST_CI_ARGS) --type=coverage" $(MAKE) $(COVTESTS)
|
2019-01-18 22:46:49 +01:00
|
|
|
$(MAKE) coverage-report-js
|
2024-07-27 23:52:23 +02:00
|
|
|
-(PYTHONPATH=./gcovr $(PYTHON) -m gcovr \
|
|
|
|
--object-directory=out \
|
|
|
|
--filter src -v \
|
|
|
|
--root ./ \
|
2021-07-09 04:27:41 +02:00
|
|
|
--html --html-details -o ../coverage/cxxcoverage.html \
|
2017-10-09 20:30:38 +02:00
|
|
|
--gcov-executable="$(GCOV)")
|
2021-01-04 16:11:57 +01:00
|
|
|
@printf "Javascript coverage %%: "
|
2017-01-10 10:21:30 +01:00
|
|
|
@grep -B1 Lines coverage/index.html | head -n1 \
|
|
|
|
| sed 's/<[^>]*>//g'| sed 's/ //g'
|
2021-01-04 16:11:57 +01:00
|
|
|
@printf "C++ coverage %%: "
|
2017-01-10 10:21:30 +01:00
|
|
|
@grep -A3 Lines coverage/cxxcoverage.html | grep style \
|
|
|
|
| sed 's/<[^>]*>//g'| sed 's/ //g'
|
|
|
|
|
2019-01-18 22:46:49 +01:00
|
|
|
.PHONY: coverage-report-js
|
2024-09-24 22:40:34 +02:00
|
|
|
coverage-report-js: ## Report JavaScript coverage results.
|
2020-10-23 04:56:28 +02:00
|
|
|
-$(MAKE) coverage-build-js
|
|
|
|
$(NODE) ./node_modules/.bin/c8 report
|
2019-01-18 22:46:49 +01:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: cctest
|
2024-09-24 22:40:34 +02:00
|
|
|
|
|
|
|
cctest: all ## Run the C++ tests using the built `cctest` executable.
|
2017-02-21 08:43:21 +01:00
|
|
|
@out/$(BUILDTYPE)/$@ --gtest_filter=$(GTEST_FILTER)
|
2023-09-06 01:43:45 +02:00
|
|
|
$(NODE) ./test/embedding/test-embedding.js
|
2017-02-21 08:43:21 +01:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: list-gtests
|
2024-09-24 22:40:34 +02:00
|
|
|
list-gtests: ## List all available C++ gtests.
|
2017-02-21 08:43:21 +01:00
|
|
|
ifeq (,$(wildcard out/$(BUILDTYPE)/cctest))
|
|
|
|
$(error Please run 'make cctest' first)
|
|
|
|
endif
|
|
|
|
@out/$(BUILDTYPE)/cctest --gtest_list_tests
|
2015-03-19 02:01:45 +01:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: v8
|
2017-11-12 20:54:28 +01:00
|
|
|
# Related CI job: node-test-commit-v8-linux
|
|
|
|
# Rebuilds deps/v8 as a git tree, pulls its third-party dependencies, and
|
|
|
|
# builds it.
|
2024-09-24 22:40:34 +02:00
|
|
|
v8: ## Build deps/v8.
|
2021-06-08 15:20:31 +02:00
|
|
|
export PATH="$(NO_BIN_OVERRIDE_PATH)" && \
|
|
|
|
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 05:39:06 +01:00
|
|
|
|
2018-03-13 16:21:13 +01:00
|
|
|
.PHONY: jstest
|
2024-09-24 22:40:34 +02:00
|
|
|
jstest: build-addons build-js-native-api-tests build-node-api-tests ## Run addon tests and JS tests.
|
2018-04-27 18:21:46 +02:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) \
|
2020-10-17 18:13:33 +02:00
|
|
|
$(TEST_CI_ARGS) \
|
2018-05-17 03:03:53 +02:00
|
|
|
--skip-tests=$(CI_SKIP_TESTS) \
|
2020-07-20 06:13:13 +02:00
|
|
|
$(JS_SUITES) \
|
|
|
|
$(NATIVE_SUITES)
|
2018-03-13 16:21:13 +01:00
|
|
|
|
2019-06-27 05:17:43 +02:00
|
|
|
.PHONY: tooltest
|
2024-09-24 22:40:34 +02:00
|
|
|
tooltest: ## Test the various tools.
|
2019-11-08 20:58:49 +01:00
|
|
|
@$(PYTHON) -m unittest discover -s ./test/tools
|
2019-06-27 05:17:43 +02:00
|
|
|
|
2019-01-18 22:46:49 +01:00
|
|
|
.PHONY: coverage-run-js
|
2024-09-24 22:40:34 +02:00
|
|
|
coverage-run-js: ## Run JavaScript tests with coverage.
|
2020-10-23 04:56:28 +02:00
|
|
|
$(RM) -r coverage/tmp
|
|
|
|
-NODE_V8_COVERAGE=coverage/tmp CI_SKIP_TESTS=$(COV_SKIP_TESTS) \
|
2019-07-28 15:54:08 +02:00
|
|
|
TEST_CI_ARGS="$(TEST_CI_ARGS) --type=coverage" $(MAKE) jstest
|
2019-01-18 22:46:49 +01:00
|
|
|
$(MAKE) coverage-report-js
|
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: test
|
2017-11-12 20:54:28 +01:00
|
|
|
# This does not run tests of third-party libraries inside deps.
|
2024-09-24 22:40:34 +02:00
|
|
|
test: all ## Run default tests, linters, and build docs.
|
2019-08-19 14:09:12 +02:00
|
|
|
$(MAKE) -s tooltest
|
2018-09-27 06:32:37 +02:00
|
|
|
$(MAKE) -s test-doc
|
2018-01-23 11:49:25 +01:00
|
|
|
$(MAKE) -s build-addons
|
2018-11-17 21:34:54 +01:00
|
|
|
$(MAKE) -s build-js-native-api-tests
|
|
|
|
$(MAKE) -s build-node-api-tests
|
2017-11-14 08:41:10 +01:00
|
|
|
$(MAKE) -s cctest
|
2018-03-13 16:21:13 +01:00
|
|
|
$(MAKE) -s jstest
|
2009-10-03 22:42:03 +02:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: test-only
|
2024-09-24 22:40:34 +02:00
|
|
|
test-only: all ## Run default tests, without linters or building the docs.
|
2018-01-23 11:49:25 +01:00
|
|
|
$(MAKE) build-addons
|
2018-11-17 21:34:54 +01:00
|
|
|
$(MAKE) build-js-native-api-tests
|
|
|
|
$(MAKE) build-node-api-tests
|
2017-10-18 07:58:46 +02:00
|
|
|
$(MAKE) cctest
|
2018-03-13 16:21:13 +01:00
|
|
|
$(MAKE) jstest
|
2019-06-27 05:17:43 +02:00
|
|
|
$(MAKE) tooltest
|
2017-10-18 07:58:46 +02:00
|
|
|
|
2017-11-12 20:54:28 +01:00
|
|
|
# Used by `make coverage-test`
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: test-cov
|
2024-09-24 22:40:34 +02:00
|
|
|
test-cov: all ## Run coverage tests.
|
2018-01-23 11:49:25 +01:00
|
|
|
$(MAKE) build-addons
|
2018-11-17 21:34:54 +01:00
|
|
|
$(MAKE) build-js-native-api-tests
|
|
|
|
$(MAKE) build-node-api-tests
|
2019-09-07 22:20:17 +02:00
|
|
|
$(MAKE) cctest
|
2019-01-18 22:46:49 +01:00
|
|
|
CI_SKIP_TESTS=$(COV_SKIP_TESTS) $(MAKE) jstest
|
2017-09-29 03:29:54 +02:00
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: test-valgrind
|
2024-09-24 22:40:34 +02:00
|
|
|
test-valgrind: all ## Run tests using valgrind.
|
2018-04-27 18:21:46 +02:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) --valgrind sequential parallel message
|
2010-12-22 19:24:34 +01:00
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: test-check-deopts
|
2017-04-17 06:01:00 +02:00
|
|
|
test-check-deopts: all
|
2018-04-27 18:21:46 +02:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) --check-deopts parallel sequential
|
2017-04-17 06:01:00 +02:00
|
|
|
|
2021-06-08 12:44:33 +02:00
|
|
|
DOCBUILDSTAMP_PREREQS = tools/doc/addon-verify.mjs doc/api/addons.md
|
2016-08-26 16:07:29 +02:00
|
|
|
|
|
|
|
ifeq ($(OSTYPE),aix)
|
2018-01-23 11:49:25 +01:00
|
|
|
DOCBUILDSTAMP_PREREQS := $(DOCBUILDSTAMP_PREREQS) out/$(BUILDTYPE)/node.exp
|
2016-08-26 16:07:29 +02:00
|
|
|
endif
|
2023-02-22 05:18:56 +01:00
|
|
|
ifeq ($(OSTYPE),os400)
|
|
|
|
DOCBUILDSTAMP_PREREQS := $(DOCBUILDSTAMP_PREREQS) out/$(BUILDTYPE)/node.exp
|
|
|
|
endif
|
2016-08-26 16:07:29 +02:00
|
|
|
|
2024-11-16 22:56:56 +01:00
|
|
|
node_use_openssl_and_icu = $(call available-node,"-p" \
|
|
|
|
"process.versions.openssl != undefined && process.versions.icu != undefined")
|
2018-07-07 03:46:38 +02:00
|
|
|
test/addons/.docbuildstamp: $(DOCBUILDSTAMP_PREREQS) tools/doc/node_modules
|
2024-11-16 22:56:56 +01:00
|
|
|
@if [ "$(shell $(node_use_openssl_and_icu))" != "true" ]; then \
|
|
|
|
echo "Skipping .docbuildstamp (no crypto and/or no ICU)"; \
|
2018-11-06 03:55:09 +01:00
|
|
|
else \
|
|
|
|
$(RM) -r test/addons/??_*/; \
|
|
|
|
[ -x $(NODE) ] && $(NODE) $< || node $< ; \
|
2021-06-09 17:27:25 +02:00
|
|
|
[ $$? -eq 0 ] && touch $@; \
|
2018-12-18 13:36:45 +01:00
|
|
|
fi
|
2016-06-10 11:33:14 +02:00
|
|
|
|
2023-11-16 08:30:16 +01:00
|
|
|
# All files that will be included in headers tarball should be listed as deps
|
|
|
|
# for generating headers. The list is manually synchronized with install.py.
|
|
|
|
ADDONS_HEADERS_PREREQS := tools/install.py \
|
|
|
|
config.gypi common.gypi \
|
|
|
|
$(wildcard deps/openssl/config/*.h) \
|
|
|
|
$(wildcard deps/openssl/openssl/include/openssl/*.h) \
|
|
|
|
$(wildcard deps/uv/include/*.h) \
|
|
|
|
$(wildcard deps/uv/include/*/*.h) \
|
|
|
|
$(wildcard deps/v8/include/*.h) \
|
|
|
|
$(wildcard deps/v8/include/*/*.h) \
|
|
|
|
deps/zlib/zconf.h deps/zlib/zlib.h \
|
|
|
|
src/node.h src/node_api.h src/js_native_api.h src/js_native_api_types.h \
|
|
|
|
src/node_api_types.h src/node_buffer.h src/node_object_wrap.h \
|
|
|
|
src/node_version.h
|
|
|
|
|
|
|
|
ADDONS_HEADERS_DIR = out/$(BUILDTYPE)/addons_headers
|
|
|
|
|
|
|
|
# Generate node headers which will be used for building addons.
|
|
|
|
test/addons/.headersbuildstamp: $(ADDONS_HEADERS_PREREQS)
|
|
|
|
$(PYTHON) tools/install.py install --headers-only --dest-dir '$(ADDONS_HEADERS_DIR)' --prefix '/'
|
|
|
|
@touch $@
|
|
|
|
|
2018-01-23 11:49:25 +01:00
|
|
|
ADDONS_BINDING_GYPS := \
|
|
|
|
$(filter-out test/addons/??_*/binding.gyp, \
|
|
|
|
$(wildcard test/addons/*/binding.gyp))
|
2015-08-18 21:29:59 +02:00
|
|
|
|
2018-01-23 11:49:25 +01: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 22:55:26 +01:00
|
|
|
|
2023-11-16 08:30:16 +01:00
|
|
|
ADDONS_PREREQS := test/addons/.headersbuildstamp \
|
|
|
|
deps/npm/node_modules/node-gyp/package.json tools/build_addons.py
|
2018-08-07 13:09:04 +02:00
|
|
|
|
|
|
|
define run_build_addons
|
2023-11-16 08:30:16 +01:00
|
|
|
env $(PYTHON) "$$PWD/tools/build_addons.py" --loglevel=$(LOGLEVEL) --headers-dir "$(ADDONS_HEADERS_DIR)" $1
|
2018-08-07 13:09:04 +02:00
|
|
|
touch $2
|
|
|
|
endef
|
|
|
|
|
2018-01-23 11:49:25 +01: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.
|
2018-08-07 13:09:04 +02:00
|
|
|
test/addons/.buildstamp: $(ADDONS_PREREQS) \
|
2018-01-23 11:49:25 +01:00
|
|
|
$(ADDONS_BINDING_GYPS) $(ADDONS_BINDING_SOURCES) \
|
|
|
|
test/addons/.docbuildstamp
|
2018-08-07 13:09:04 +02:00
|
|
|
@$(call run_build_addons,"$$PWD/test/addons",$@)
|
2018-01-20 01:00:34 +01:00
|
|
|
|
|
|
|
.PHONY: build-addons
|
2018-01-23 11:49:25 +01: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.
|
2024-09-24 22:40:34 +02:00
|
|
|
build-addons: | $(NODE_EXE) test/addons/.buildstamp ## Build addons for Node.js.
|
2018-01-23 11:49:25 +01:00
|
|
|
|
2018-11-17 21:34:54 +01:00
|
|
|
JS_NATIVE_API_BINDING_GYPS := \
|
|
|
|
$(filter-out test/js-native-api/??_*/binding.gyp, \
|
|
|
|
$(wildcard test/js-native-api/*/binding.gyp))
|
2018-01-23 11:49:25 +01:00
|
|
|
|
2018-11-17 21:34:54 +01:00
|
|
|
JS_NATIVE_API_BINDING_SOURCES := \
|
|
|
|
$(filter-out test/js-native-api/??_*/*.c, $(wildcard test/js-native-api/*/*.c)) \
|
|
|
|
$(filter-out test/js-native-api/??_*/*.cc, $(wildcard test/js-native-api/*/*.cc)) \
|
|
|
|
$(filter-out test/js-native-api/??_*/*.h, $(wildcard test/js-native-api/*/*.h))
|
2018-01-23 11:49:25 +01:00
|
|
|
|
2018-11-17 21:34:54 +01:00
|
|
|
# Implicitly depends on $(NODE_EXE), see the build-js-native-api-tests rule for rationale.
|
|
|
|
test/js-native-api/.buildstamp: $(ADDONS_PREREQS) \
|
|
|
|
$(JS_NATIVE_API_BINDING_GYPS) $(JS_NATIVE_API_BINDING_SOURCES) \
|
2023-11-16 08:30:16 +01:00
|
|
|
src/js_native_api_v8.h src/js_native_api_v8_internals.h
|
2018-11-17 21:34:54 +01:00
|
|
|
@$(call run_build_addons,"$$PWD/test/js-native-api",$@)
|
2018-01-23 11:49:25 +01:00
|
|
|
|
2018-11-17 21:34:54 +01:00
|
|
|
.PHONY: build-js-native-api-tests
|
2018-01-23 11:49:25 +01: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 or node-gyp update.
|
2024-09-24 22:40:34 +02:00
|
|
|
build-js-native-api-tests: | $(NODE_EXE) test/js-native-api/.buildstamp ## Build JS Native-API tests.
|
2018-11-17 21:34:54 +01:00
|
|
|
|
|
|
|
NODE_API_BINDING_GYPS := \
|
|
|
|
$(filter-out test/node-api/??_*/binding.gyp, \
|
|
|
|
$(wildcard test/node-api/*/binding.gyp))
|
|
|
|
|
|
|
|
NODE_API_BINDING_SOURCES := \
|
|
|
|
$(filter-out test/node-api/??_*/*.c, $(wildcard test/node-api/*/*.c)) \
|
|
|
|
$(filter-out test/node-api/??_*/*.cc, $(wildcard test/node-api/*/*.cc)) \
|
|
|
|
$(filter-out test/node-api/??_*/*.h, $(wildcard test/node-api/*/*.h))
|
|
|
|
|
|
|
|
# Implicitly depends on $(NODE_EXE), see the build-node-api-tests rule for rationale.
|
|
|
|
test/node-api/.buildstamp: $(ADDONS_PREREQS) \
|
|
|
|
$(NODE_API_BINDING_GYPS) $(NODE_API_BINDING_SOURCES) \
|
2023-11-16 08:30:16 +01:00
|
|
|
src/js_native_api_v8.h src/js_native_api_v8_internals.h
|
2018-11-17 21:34:54 +01:00
|
|
|
@$(call run_build_addons,"$$PWD/test/node-api",$@)
|
|
|
|
|
|
|
|
.PHONY: build-node-api-tests
|
|
|
|
# .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.
|
2024-09-24 22:40:34 +02:00
|
|
|
build-node-api-tests: | $(NODE_EXE) test/node-api/.buildstamp ## Build Node-API tests.
|
2017-03-20 22:55:26 +01:00
|
|
|
|
2019-10-16 19:47:02 +02:00
|
|
|
BENCHMARK_NAPI_BINDING_GYPS := $(wildcard benchmark/napi/*/binding.gyp)
|
|
|
|
|
|
|
|
BENCHMARK_NAPI_BINDING_SOURCES := \
|
|
|
|
$(wildcard benchmark/napi/*/*.c) \
|
|
|
|
$(wildcard benchmark/napi/*/*.cc) \
|
|
|
|
$(wildcard benchmark/napi/*/*.h)
|
|
|
|
|
|
|
|
benchmark/napi/.buildstamp: $(ADDONS_PREREQS) \
|
|
|
|
$(BENCHMARK_NAPI_BINDING_GYPS) $(BENCHMARK_NAPI_BINDING_SOURCES)
|
|
|
|
@$(call run_build_addons,"$$PWD/benchmark/napi",$@)
|
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: clear-stalled
|
2024-09-24 22:40:34 +02:00
|
|
|
clear-stalled: ## Clear any stalled processes.
|
2020-10-19 11:18:46 +02:00
|
|
|
$(info Clean up any leftover processes but don't error if found.)
|
2017-02-08 20:39:24 +01:00
|
|
|
ps awwx | grep Release/node | grep -v grep | cat
|
2017-04-01 20:50:46 +02:00
|
|
|
@PS_OUT=`ps awwx | grep Release/node | grep -v grep | awk '{print $$1}'`; \
|
|
|
|
if [ "$${PS_OUT}" ]; then \
|
2018-04-21 07:45:31 +02:00
|
|
|
echo $${PS_OUT} | xargs kill -9; \
|
2017-04-01 20:50:46 +02:00
|
|
|
fi
|
2017-02-08 20:39:24 +01:00
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: test-build
|
2024-09-24 22:40:34 +02:00
|
|
|
test-build: | all build-addons build-js-native-api-tests build-node-api-tests ## Build all tests.
|
2018-01-23 11:49:25 +01:00
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: test-build-js-native-api
|
2024-09-24 22:40:34 +02:00
|
|
|
test-build-js-native-api: all build-js-native-api-tests ## Build JS Native-API tests.
|
2018-11-17 21:34:54 +01:00
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: test-build-node-api
|
2024-09-24 22:40:34 +02:00
|
|
|
test-build-node-api: all build-node-api-tests ## Build Node-API tests.
|
2018-01-23 11:49:25 +01:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: test-all
|
2019-01-29 20:28:27 +01:00
|
|
|
test-all: test-build ## Run default tests with both Debug and Release builds.
|
2018-04-18 11:18:38 +02:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=debug,release
|
2009-10-03 21:46:59 +02:00
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: test-all-valgrind
|
2024-09-24 22:40:34 +02:00
|
|
|
test-all-valgrind: test-build ## Run all tests using valgrind.
|
2018-04-18 11:18:38 +02:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=debug,release --valgrind
|
2010-12-22 19:24:34 +01:00
|
|
|
|
2019-01-29 20:28:27 +01:00
|
|
|
.PHONY: test-all-suites
|
2019-02-02 15:07:00 +01:00
|
|
|
test-all-suites: | clear-stalled test-build bench-addons-build doc-only ## Run all test suites.
|
2019-01-29 20:28:27 +01:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) test/*
|
|
|
|
|
2020-07-20 06:13:13 +02:00
|
|
|
JS_SUITES ?= default
|
|
|
|
NATIVE_SUITES ?= addons js-native-api node-api
|
2019-11-29 02:45:52 +01:00
|
|
|
# CI_* variables should be kept synchronized with the ones in vcbuild.bat
|
2020-07-20 04:18:09 +02:00
|
|
|
CI_NATIVE_SUITES ?= $(NATIVE_SUITES) benchmark
|
2020-07-10 07:06:04 +02:00
|
|
|
CI_JS_SUITES ?= $(JS_SUITES) pummel
|
2024-11-16 22:56:56 +01:00
|
|
|
ifeq ($(node_use_openssl_and_icu), false)
|
2019-07-28 15:54:08 +02:00
|
|
|
CI_DOC := doctool
|
2019-07-18 12:00:19 +02:00
|
|
|
else
|
2019-07-28 15:54:08 +02:00
|
|
|
CI_DOC =
|
2019-07-18 12:00:19 +02:00
|
|
|
endif
|
2016-06-15 14:42:21 +02:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: test-ci-native
|
2024-09-24 22:40:34 +02:00
|
|
|
|
2017-11-12 20:54:28 +01:00
|
|
|
# Related CI job: node-test-commit-arm-fanned
|
2024-09-24 22:40:34 +02:00
|
|
|
test-ci-native: LOGLEVEL := info ## Build and test addons without building anything else.
|
2020-07-20 04:18:09 +02:00
|
|
|
test-ci-native: | benchmark/napi/.buildstamp test/addons/.buildstamp test/js-native-api/.buildstamp test/node-api/.buildstamp
|
2016-06-15 14:42:21 +02:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) -p tap --logfile test.tap \
|
2018-04-27 18:21:46 +02:00
|
|
|
--mode=$(BUILDTYPE_LOWER) --flaky-tests=$(FLAKY_TESTS) \
|
2016-06-15 14:42:21 +02:00
|
|
|
$(TEST_CI_ARGS) $(CI_NATIVE_SUITES)
|
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: test-ci-js
|
2016-06-15 14:42:21 +02:00
|
|
|
# This target should not use a native compiler at all
|
2017-11-12 20:54:28 +01:00
|
|
|
# Related CI job: node-test-commit-arm-fanned
|
2024-09-24 22:40:34 +02:00
|
|
|
test-ci-js: | clear-stalled ## Build and test JavaScript with building anything else.
|
2016-06-15 14:42:21 +02:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) -p tap --logfile test.tap \
|
2018-04-27 18:21:46 +02:00
|
|
|
--mode=$(BUILDTYPE_LOWER) --flaky-tests=$(FLAKY_TESTS) \
|
2024-05-29 19:24:32 +02:00
|
|
|
--skip-tests=$(CI_SKIP_TESTS) \
|
2019-08-17 01:26:31 +02:00
|
|
|
$(TEST_CI_ARGS) $(CI_JS_SUITES)
|
2020-10-19 11:18:46 +02:00
|
|
|
$(info Clean up any leftover processes, error if found.)
|
2017-04-01 20:50:46 +02:00
|
|
|
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 19:42:29 +01:00
|
|
|
if [ "$${PS_OUT}" ]; then \
|
2018-04-21 07:45:31 +02:00
|
|
|
echo $${PS_OUT} | xargs kill -9; exit 1; \
|
2017-02-09 19:42:29 +01:00
|
|
|
fi
|
2016-06-15 14:42:21 +02:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: test-ci
|
2017-11-12 20:54:28 +01:00
|
|
|
# Related CI jobs: most CI tests, excluding node-test-commit-arm-fanned
|
2024-09-24 22:40:34 +02:00
|
|
|
test-ci: LOGLEVEL := info ## Build and test everything (CI).
|
2020-07-10 06:47:27 +02:00
|
|
|
test-ci: | clear-stalled bench-addons-build build-addons build-js-native-api-tests build-node-api-tests doc-only
|
2019-04-14 23:24:22 +02:00
|
|
|
out/Release/cctest --gtest_output=xml:out/junit/cctest.xml
|
2016-04-15 05:15:40 +02:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) -p tap --logfile test.tap \
|
2018-04-27 18:21:46 +02:00
|
|
|
--mode=$(BUILDTYPE_LOWER) --flaky-tests=$(FLAKY_TESTS) \
|
2017-12-29 06:10:46 +01:00
|
|
|
$(TEST_CI_ARGS) $(CI_JS_SUITES) $(CI_NATIVE_SUITES) $(CI_DOC)
|
2023-09-06 01:43:45 +02:00
|
|
|
$(NODE) ./test/embedding/test-embedding.js
|
2020-10-19 11:18:46 +02:00
|
|
|
$(info Clean up any leftover processes, error if found.)
|
2017-04-01 20:50:46 +02:00
|
|
|
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 19:42:29 +01:00
|
|
|
if [ "$${PS_OUT}" ]; then \
|
2018-04-21 07:45:31 +02:00
|
|
|
echo $${PS_OUT} | xargs kill -9; exit 1; \
|
2017-02-09 19:42:29 +01:00
|
|
|
fi
|
2015-01-12 23:40:51 +01:00
|
|
|
|
2017-11-12 20:54:28 +01:00
|
|
|
.PHONY: build-ci
|
|
|
|
# Prepare the build for running the tests.
|
|
|
|
# Related CI jobs: most CI tests, excluding node-test-commit-arm-fanned
|
2024-09-24 22:40:34 +02:00
|
|
|
build-ci: ## Build everything (CI).
|
2018-09-18 20:57:05 +02:00
|
|
|
$(PYTHON) ./configure --verbose $(CONFIG_FLAGS)
|
2017-11-12 20:54:28 +01:00
|
|
|
$(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`.
|
2018-10-18 17:00:11 +02:00
|
|
|
#
|
|
|
|
# Using -j1 as the sub target in `test-ci` already have internal parallelism.
|
|
|
|
# Refs: https://github.com/nodejs/node/pull/23733
|
2024-09-24 22:40:34 +02:00
|
|
|
run-ci: build-ci ## Build and run all tests (CI).
|
2018-10-18 17:00:11 +02:00
|
|
|
$(MAKE) test-ci -j1
|
2017-11-12 20:54:28 +01:00
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: test-release
|
|
|
|
.PHONY: test-debug
|
2024-09-24 22:40:34 +02:00
|
|
|
test-debug: BUILDTYPE_LOWER=debug ## Run tests on a debug build.
|
|
|
|
test-release test-debug: test-build ## Run tests on a release or debug build.
|
2023-03-31 15:48:59 +02:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER)
|
2010-06-19 03:14:06 +02:00
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: test-wpt
|
2024-09-24 22:40:34 +02:00
|
|
|
test-wpt: all ## Run the Web Platform Tests.
|
2018-09-16 09:00:40 +02:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) wpt
|
|
|
|
|
2023-02-03 15:19:55 +01:00
|
|
|
.PHONY: test-wpt-report
|
2024-09-24 22:40:34 +02:00
|
|
|
test-wpt-report: ## Run the Web Platform Tests and generate a report.
|
2023-02-03 15:19:55 +01:00
|
|
|
$(RM) -r out/wpt
|
|
|
|
mkdir -p out/wpt
|
2023-04-25 13:45:54 +02:00
|
|
|
-WPT_REPORT=1 $(PYTHON) tools/test.py --shell $(NODE) $(PARALLEL_ARGS) wpt
|
|
|
|
$(NODE) "$$PWD/tools/merge-wpt-reports.mjs"
|
2023-02-03 15:19:55 +01:00
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: test-internet
|
2024-09-24 22:40:34 +02:00
|
|
|
test-internet: all ## Run internet tests.
|
2018-04-18 11:18:38 +02:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) internet
|
2010-02-25 07:36:17 +01:00
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: test-tick-processor
|
2024-09-24 22:40:34 +02:00
|
|
|
test-tick-processor: all ## Run tick processor tests.
|
2018-04-18 11:18:38 +02:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) tick-processor
|
2016-11-07 22:34:54 +01:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: test-hash-seed
|
2024-09-24 22:40:34 +02:00
|
|
|
test-hash-seed: all ## Verifu that the hash seed used by V8 for hashing is random.
|
2017-06-02 09:09:49 +02:00
|
|
|
$(NODE) test/pummel/test-hash-seed.js
|
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: test-doc
|
2024-09-24 22:40:34 +02:00
|
|
|
test-doc: doc-only lint-md ## Build, lint, and verify the docs.
|
2024-11-16 22:56:56 +01:00
|
|
|
@if [ "$(shell $(node_use_openssl_and_icu))" != "true" ]; then \
|
|
|
|
echo "Skipping test-doc (no crypto and/or no ICU)"; \
|
2019-06-13 11:59:15 +02:00
|
|
|
else \
|
2019-08-30 08:52:42 +02:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) doctool; \
|
2019-06-13 11:59:15 +02:00
|
|
|
fi
|
2017-10-22 08:05:26 +02:00
|
|
|
|
2021-02-16 15:35:44 +01:00
|
|
|
.PHONY: test-doc-ci
|
2024-09-24 22:40:34 +02:00
|
|
|
test-doc-ci: doc-only ## Build, lint, and verify the docs (CI).
|
2021-02-16 15:35:44 +01:00
|
|
|
$(PYTHON) tools/test.py --shell $(NODE) $(TEST_CI_ARGS) $(PARALLEL_ARGS) doctool
|
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: test-known-issues
|
2024-09-24 22:40:34 +02:00
|
|
|
test-known-issues: all ## Run tests for known issues.
|
2018-04-18 11:18:38 +02:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) known_issues
|
2016-03-02 18:12:47 +01:00
|
|
|
|
2017-11-12 20:54:28 +01:00
|
|
|
# Related CI job: node-test-npm
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: test-npm
|
2017-11-26 15:41:56 +01:00
|
|
|
test-npm: $(NODE_EXE) ## Run the npm test suite on deps/npm.
|
2020-12-03 18:13:08 +01:00
|
|
|
$(NODE) tools/test-npm-package --install --logfile=test-npm.tap deps/npm test
|
2011-12-17 03:04:39 +01:00
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: test-npm-publish
|
2024-09-24 22:40:34 +02:00
|
|
|
test-npm-publish: $(NODE_EXE) ## Test the `npm publish` command.
|
2015-06-12 07:12:20 +02:00
|
|
|
npm_package_config_publishtest=true $(NODE) deps/npm/test/run.js
|
2011-07-08 19:40:35 +02:00
|
|
|
|
2018-11-17 21:34:54 +01:00
|
|
|
.PHONY: test-js-native-api
|
2024-09-24 22:40:34 +02:00
|
|
|
test-js-native-api: test-build-js-native-api ## Run JS Native-API tests.
|
2018-11-17 21:34:54 +01:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) js-native-api
|
|
|
|
|
|
|
|
.PHONY: test-js-native-api-clean
|
2022-01-18 19:05:06 +01:00
|
|
|
.NOTPARALLEL: test-js-native-api-clean
|
2024-09-24 22:40:34 +02:00
|
|
|
test-js-native-api-clean: ## Remove JS Native-API testing artifacts.
|
2018-11-17 21:34:54 +01:00
|
|
|
$(RM) -r test/js-native-api/*/build
|
|
|
|
$(RM) test/js-native-api/.buildstamp
|
|
|
|
|
|
|
|
.PHONY: test-node-api
|
2024-09-24 22:40:34 +02:00
|
|
|
test-node-api: test-build-node-api ## Run Node-API tests.
|
2018-11-17 21:34:54 +01:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) node-api
|
2017-03-20 22:55:26 +01:00
|
|
|
|
2018-11-17 21:34:54 +01:00
|
|
|
.PHONY: test-node-api-clean
|
2022-01-18 19:05:06 +01:00
|
|
|
.NOTPARALLEL: test-node-api-clean
|
2024-09-24 22:40:34 +02:00
|
|
|
test-node-api-clean: ## Remove Node-API testing artifacts.
|
2018-11-17 21:34:54 +01:00
|
|
|
$(RM) -r test/node-api/*/build
|
|
|
|
$(RM) test/node-api/.buildstamp
|
2017-05-15 06:58:21 +02:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: test-addons
|
2024-09-24 22:40:34 +02:00
|
|
|
test-addons: test-build test-js-native-api test-node-api ## Run addon tests.
|
2018-04-27 18:21:46 +02:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) addons
|
2014-01-18 23:49:18 +01:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: test-addons-clean
|
2022-01-18 19:05:06 +01:00
|
|
|
.NOTPARALLEL: test-addons-clean
|
2024-09-24 22:40:34 +02:00
|
|
|
test-addons-clean: ## Remove addon testing artifacts.
|
2023-11-16 08:30:16 +01:00
|
|
|
$(RM) -r "$(ADDONS_HEADERS_DIR)"
|
2017-05-15 06:58:21 +02:00
|
|
|
$(RM) -r test/addons/??_*/
|
|
|
|
$(RM) -r test/addons/*/build
|
2023-11-16 08:30:16 +01:00
|
|
|
$(RM) test/addons/.buildstamp test/addons/.docbuildstamp test/addons/.headersbuildstamp
|
2018-11-17 21:34:54 +01:00
|
|
|
$(MAKE) test-js-native-api-clean
|
|
|
|
$(MAKE) test-node-api-clean
|
2014-07-23 03:03:10 +02:00
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: test-with-async-hooks
|
2024-09-24 22:40:34 +02:00
|
|
|
test-with-async-hooks: ## Run tests with async hooks.
|
2018-01-23 11:49:25 +01:00
|
|
|
$(MAKE) build-addons
|
2018-11-17 21:34:54 +01:00
|
|
|
$(MAKE) build-js-native-api-tests
|
|
|
|
$(MAKE) build-node-api-tests
|
2017-06-20 07:21:33 +02:00
|
|
|
$(MAKE) cctest
|
2018-04-27 18:21:46 +02:00
|
|
|
NODE_TEST_WITH_ASYNC_HOOKS=1 $(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) \
|
2020-07-20 06:13:13 +02:00
|
|
|
$(JS_SUITES) \
|
|
|
|
$(NATIVE_SUITES)
|
2017-06-20 07:21:33 +02:00
|
|
|
|
2016-03-14 00:08:11 +01:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: test-v8
|
|
|
|
.PHONY: test-v8-all
|
|
|
|
.PHONY: test-v8-benchmarks
|
|
|
|
.PHONY: test-v8-intl
|
2018-05-28 19:48:47 +02:00
|
|
|
.PHONY: test-v8-updates
|
2016-03-14 00:08:11 +01:00
|
|
|
ifneq ("","$(wildcard deps/v8/tools/run-tests.py)")
|
2017-11-12 20:54:28 +01:00
|
|
|
# Related CI job: node-test-commit-v8-linux
|
2024-09-24 22:40:34 +02:00
|
|
|
test-v8: v8 ## Run the V8 test suite on deps/v8.
|
2021-06-08 15:20:31 +02:00
|
|
|
export PATH="$(NO_BIN_OVERRIDE_PATH)" && \
|
2022-04-05 16:46:16 +02:00
|
|
|
$(PYTHON) deps/v8/tools/run-tests.py --gn --arch=$(V8_ARCH) $(V8_TEST_OPTIONS) \
|
2018-03-14 13:04:48 +01:00
|
|
|
mjsunit cctest debugger inspector message preparser \
|
2019-07-28 15:54:08 +02:00
|
|
|
$(TAP_V8)
|
2022-10-03 19:45:40 +02:00
|
|
|
$(call convert_to_junit,$(TAP_V8_JSON))
|
2020-10-19 11:18:46 +02:00
|
|
|
$(info Testing hash seed)
|
2017-07-13 16:02:37 +02:00
|
|
|
$(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 05:39:06 +01:00
|
|
|
|
2024-09-24 22:40:34 +02:00
|
|
|
test-v8-intl: v8 ## Run the v8 test suite, intl tests.
|
2021-06-08 15:20:31 +02:00
|
|
|
export PATH="$(NO_BIN_OVERRIDE_PATH)" && \
|
2022-04-05 16:46:16 +02:00
|
|
|
$(PYTHON) deps/v8/tools/run-tests.py --gn --arch=$(V8_ARCH) \
|
2021-06-16 13:20:43 +02:00
|
|
|
intl \
|
2019-07-28 15:54:08 +02:00
|
|
|
$(TAP_V8_INTL)
|
2022-10-03 19:45:40 +02:00
|
|
|
$(call convert_to_junit,$(TAP_V8_INTL_JSON))
|
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 05:39:06 +01:00
|
|
|
|
2024-09-24 22:40:34 +02:00
|
|
|
test-v8-benchmarks: v8 ## Run the v8 test suite, benchmarks.
|
2021-06-08 15:20:31 +02:00
|
|
|
export PATH="$(NO_BIN_OVERRIDE_PATH)" && \
|
2022-04-05 16:46:16 +02:00
|
|
|
$(PYTHON) deps/v8/tools/run-tests.py --gn --arch=$(V8_ARCH) \
|
2019-07-28 15:54:08 +02:00
|
|
|
benchmarks \
|
|
|
|
$(TAP_V8_BENCHMARKS)
|
2022-10-03 19:45:40 +02:00
|
|
|
$(call convert_to_junit,$(TAP_V8_BENCHMARKS_JSON))
|
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 05:39:06 +01:00
|
|
|
|
2024-09-24 22:40:34 +02:00
|
|
|
test-v8-updates: ## Run the v8 test suite, updates.
|
2018-05-28 19:48:47 +02:00
|
|
|
$(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) v8-updates
|
|
|
|
|
2024-09-24 22:40:34 +02:00
|
|
|
test-v8-all: test-v8 test-v8-intl test-v8-benchmarks test-v8-updates ## Run the entire V8 test suite, including intl, benchmarks, and updates.
|
2016-10-31 13:07:24 +01:00
|
|
|
# runs all v8 tests
|
2016-03-14 00:08:11 +01:00
|
|
|
else
|
|
|
|
test-v8 test-v8-intl test-v8-benchmarks test-v8-all:
|
2020-10-19 11:18:46 +02:00
|
|
|
$(warning Testing V8 is not available through the source tarball.)
|
|
|
|
$(warning Use the git repo instead: $$ git clone https://github.com/nodejs/node.git)
|
2016-03-14 00:08:11 +01: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 05:39:06 +01:00
|
|
|
|
2017-11-17 18:19:22 +01:00
|
|
|
apidoc_dirs = out/doc out/doc/api out/doc/api/assets
|
2016-04-21 00:12:40 +02:00
|
|
|
apidoc_sources = $(wildcard doc/api/*.md)
|
2017-11-17 18:19:22 +01:00
|
|
|
apidocs_html = $(addprefix out/,$(apidoc_sources:.md=.html))
|
|
|
|
apidocs_json = $(addprefix out/,$(apidoc_sources:.md=.json))
|
2010-10-29 00:10:20 +02:00
|
|
|
|
2011-08-23 23:08:53 +02:00
|
|
|
apiassets = $(subst api_assets,api/assets,$(addprefix out/,$(wildcard doc/api_assets/*)))
|
2010-11-13 23:57:35 +01:00
|
|
|
|
2018-09-06 22:17:54 +02:00
|
|
|
tools/doc/node_modules: tools/doc/package.json
|
2024-11-16 22:56:56 +01:00
|
|
|
@if [ "$(shell $(node_use_openssl_and_icu))" != "true" ]; then \
|
|
|
|
echo "Skipping tools/doc/node_modules (no crypto and/or no ICU)"; \
|
2018-11-06 03:55:09 +01:00
|
|
|
else \
|
|
|
|
cd tools/doc && $(call available-node,$(run-npm-ci)) \
|
2018-12-18 13:36:45 +01:00
|
|
|
fi
|
2018-09-06 22:17:54 +02:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: doc-only
|
2018-06-23 21:42:12 +02:00
|
|
|
doc-only: tools/doc/node_modules \
|
2024-09-24 22:40:34 +02:00
|
|
|
$(apidoc_dirs) $(apiassets) ## Build the docs with the local or the global Node.js binary.
|
2024-11-16 22:56:56 +01:00
|
|
|
@if [ "$(shell $(node_use_openssl_and_icu))" != "true" ]; then \
|
|
|
|
echo "Skipping doc-only (no crypto and/or no ICU)"; \
|
2019-07-18 12:00:19 +02:00
|
|
|
else \
|
2020-11-22 10:39:25 +01:00
|
|
|
$(MAKE) out/doc/api/all.html out/doc/api/all.json out/doc/api/stability; \
|
2019-07-18 12:00:19 +02:00
|
|
|
fi
|
2017-11-17 18:19:22 +01:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: doc
|
2024-09-24 22:40:34 +02:00
|
|
|
doc: $(NODE_EXE) doc-only ## Build Node.js, and then build the documentation with the new binary.
|
2010-11-13 23:57:35 +01:00
|
|
|
|
2017-11-17 18:19:22 +01: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-29 00:10:20 +02:00
|
|
|
|
2017-11-17 18:19:22 +01: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
|
2020-09-05 00:50:29 +02:00
|
|
|
out/doc/api/assets/%: doc/api_assets/% | out/doc/api/assets
|
2020-05-16 21:54:24 +02:00
|
|
|
@cp $< $@ ; $(RM) out/doc/api/assets/README.md
|
2010-11-15 00:50:14 +01:00
|
|
|
|
2017-11-17 18:19:22 +01:00
|
|
|
|
2018-07-13 23:37:56 +02:00
|
|
|
run-npm-ci = $(PWD)/$(NPM) ci
|
2017-11-17 18:19:22 +01:00
|
|
|
|
2018-12-13 17:14:38 +01:00
|
|
|
LINK_DATA = out/doc/apilinks.json
|
2020-04-09 01:03:52 +02:00
|
|
|
VERSIONS_DATA = out/previous-doc-versions.json
|
2021-06-08 12:44:33 +02:00
|
|
|
gen-api = tools/doc/generate.mjs --node-version=$(FULLVERSION) \
|
2020-03-27 15:04:40 +01:00
|
|
|
--apilinks=$(LINK_DATA) $< --output-directory=out/doc/api \
|
|
|
|
--versions-file=$(VERSIONS_DATA)
|
2021-06-08 12:44:33 +02:00
|
|
|
gen-apilink = tools/doc/apilinks.mjs $(LINK_DATA) $(wildcard lib/*.js)
|
2018-08-19 20:03:21 +02:00
|
|
|
|
2021-06-08 12:44:33 +02:00
|
|
|
$(LINK_DATA): $(wildcard lib/*.js) tools/doc/apilinks.mjs | out/doc
|
2018-08-19 20:03:21 +02:00
|
|
|
$(call available-node, $(gen-apilink))
|
2012-02-27 19:59:35 +01:00
|
|
|
|
2020-03-27 15:04:40 +01:00
|
|
|
# Regenerate previous versions data if the current version changes
|
2021-06-08 12:44:33 +02:00
|
|
|
$(VERSIONS_DATA): CHANGELOG.md src/node_version.h tools/doc/versions.mjs
|
|
|
|
$(call available-node, tools/doc/versions.mjs $@)
|
2020-03-27 15:04:40 +01:00
|
|
|
|
2021-12-05 16:51:48 +01:00
|
|
|
node_use_icu = $(call available-node,"-p" "typeof Intl === 'object'")
|
|
|
|
|
2021-06-08 12:44:33 +02:00
|
|
|
out/doc/api/%.json out/doc/api/%.html: doc/api/%.md tools/doc/generate.mjs \
|
|
|
|
tools/doc/markdown.mjs tools/doc/html.mjs tools/doc/json.mjs \
|
|
|
|
tools/doc/apilinks.mjs $(VERSIONS_DATA) | $(LINK_DATA) out/doc/api
|
2021-12-05 16:51:48 +01:00
|
|
|
@if [ "$(shell $(node_use_icu))" != "true" ]; then \
|
|
|
|
echo "Skipping documentation generation (no ICU)"; \
|
|
|
|
else \
|
|
|
|
$(call available-node, $(gen-api)) \
|
|
|
|
fi
|
2010-11-15 00:50:14 +01:00
|
|
|
|
2021-06-08 12:44:33 +02:00
|
|
|
out/doc/api/all.html: $(apidocs_html) tools/doc/allhtml.mjs \
|
|
|
|
tools/doc/apilinks.mjs | out/doc/api
|
2021-12-05 16:51:48 +01:00
|
|
|
@if [ "$(shell $(node_use_icu))" != "true" ]; then \
|
|
|
|
echo "Skipping HTML single-page doc generation (no ICU)"; \
|
|
|
|
else \
|
|
|
|
$(call available-node, tools/doc/allhtml.mjs) \
|
|
|
|
fi
|
2018-06-27 20:14:54 +02:00
|
|
|
|
2021-06-08 12:44:33 +02:00
|
|
|
out/doc/api/all.json: $(apidocs_json) tools/doc/alljson.mjs | out/doc/api
|
2021-12-05 16:51:48 +01:00
|
|
|
@if [ "$(shell $(node_use_icu))" != "true" ]; then \
|
|
|
|
echo "Skipping JSON single-file generation (no ICU)"; \
|
|
|
|
else \
|
|
|
|
$(call available-node, tools/doc/alljson.mjs) \
|
|
|
|
fi
|
2018-07-03 18:46:56 +02:00
|
|
|
|
2020-11-22 10:39:25 +01:00
|
|
|
.PHONY: out/doc/api/stability
|
2021-06-08 12:44:33 +02:00
|
|
|
out/doc/api/stability: out/doc/api/all.json tools/doc/stability.mjs | out/doc/api
|
2021-12-05 16:51:48 +01:00
|
|
|
@if [ "$(shell $(node_use_icu))" != "true" ]; then \
|
|
|
|
echo "Skipping stability indicator generation (no ICU)"; \
|
|
|
|
else \
|
|
|
|
$(call available-node, tools/doc/stability.mjs) \
|
|
|
|
fi
|
2020-11-22 10:39:25 +01:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: docopen
|
2024-09-24 22:40:34 +02:00
|
|
|
docopen: out/doc/api/all.html ## Open the documentation in a web browser.
|
2020-09-05 01:58:33 +02:00
|
|
|
@$(PYTHON) -mwebbrowser file://$(abspath $<)
|
2009-10-03 21:46:59 +02:00
|
|
|
|
2020-05-03 12:34:03 +02:00
|
|
|
.PHONY: docserve
|
2024-09-24 22:40:34 +02:00
|
|
|
docserve: $(apidocs_html) $(apiassets) ## Serve the documentation on localhost:8000.
|
2020-08-30 14:52:17 +02:00
|
|
|
@$(PYTHON) -m http.server 8000 --bind 127.0.0.1 --directory out/doc/api
|
2020-05-03 12:34:03 +02:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: docclean
|
2022-01-18 19:05:06 +01:00
|
|
|
.NOTPARALLEL: docclean
|
2024-09-24 22:40:34 +02:00
|
|
|
docclean: ## Remove the generated documentation.
|
2017-04-01 19:12:33 +02:00
|
|
|
$(RM) -r out/doc
|
2020-04-09 01:03:52 +02:00
|
|
|
$(RM) "$(VERSIONS_DATA)"
|
2009-12-30 02:45:15 +01:00
|
|
|
|
2013-06-04 02:05:56 +02:00
|
|
|
RAWVER=$(shell $(PYTHON) tools/getnodeversion.py)
|
|
|
|
VERSION=v$(RAWVER)
|
2021-04-02 01:56:20 +02:00
|
|
|
CHANGELOG=doc/changelogs/CHANGELOG_V$(firstword $(subst ., ,$(RAWVER))).md
|
2015-06-10 09:05:26 +02: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-14 00:53:26 +01:00
|
|
|
FULLVERSION=$(VERSION)
|
2015-06-10 09:05:26 +02: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 14:22:23 +02:00
|
|
|
RELEASE=$(shell sed -ne 's/\#define NODE_VERSION_IS_RELEASE \([01]\)/\1/p' src/node_version.h)
|
2012-08-04 21:07:17 +02:00
|
|
|
PLATFORM=$(shell uname | tr '[:upper:]' '[:lower:]')
|
2022-01-06 16:54:32 +01:00
|
|
|
ifeq ($(findstring os/390,$PLATFORM),os/390)
|
|
|
|
PLATFORM ?= os390
|
|
|
|
endif
|
2022-01-18 11:37:54 +01:00
|
|
|
NPMVERSION=v$(shell cat deps/npm/package.json | grep '^ "version"' | sed 's/^[^:]*: "\([^"]*\)",.*/\1/')
|
2015-06-10 09:05:26 +02:00
|
|
|
|
2016-04-20 19:12:14 +02:00
|
|
|
UNAME_M=$(shell uname -m)
|
|
|
|
ifeq ($(findstring x86_64,$(UNAME_M)),x86_64)
|
2012-08-10 01:30:41 +02:00
|
|
|
DESTCPU ?= x64
|
2012-08-04 21:39:54 +02:00
|
|
|
else
|
2019-07-22 16:34:33 +02:00
|
|
|
ifeq ($(findstring amd64,$(UNAME_M)),amd64)
|
|
|
|
DESTCPU ?= x64
|
|
|
|
else
|
2016-04-20 19:12:14 +02: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
|
2022-01-06 16:54:32 +01:00
|
|
|
ifeq ($(findstring OS/390,$(shell uname -s)),OS/390)
|
|
|
|
DESTCPU ?= s390x
|
|
|
|
else
|
2021-09-19 01:49:22 +02:00
|
|
|
ifeq ($(findstring arm64,$(UNAME_M)),arm64)
|
|
|
|
DESTCPU ?= arm64
|
|
|
|
else
|
2016-04-20 19:12:14 +02:00
|
|
|
ifeq ($(findstring arm,$(UNAME_M)),arm)
|
|
|
|
DESTCPU ?= arm
|
|
|
|
else
|
|
|
|
ifeq ($(findstring aarch64,$(UNAME_M)),aarch64)
|
build: use arm64 as DESTCPU for aarch64
On a aarch64 system I can run the complete build with tests without
specifying the Makefile variable DESTCPU.
But when running the tar-headers target DESTCPU is passed to configure:
$(PYTHON) ./configure \
--prefix=/ \
--dest-cpu=$(DESTCPU) \
...
The value of DESTCPU in this case will be aarch64 which will cause
configure to fail:
configure: error: option --dest-cpu: invalid choice: 'aarch64'
(choose from 'arm', 'arm64', 'ia32', 'mips', 'mipsel', 'mips64el', 'ppc',
'ppc64', 'x32', 'x64', 'x86', 'x86_64', 's390', 's390x')
In the configure script there is a matching of __aarch64__ to arm64:
$ python -c 'from configure import host_arch_cc; print host_arch_cc()'
arm64
In our case it would be nice to have consitent behaviour for both of
these cases on aarch64.
This commit changes DESTCPU to arm64 to be consistent with the
configure script. DESTCPU is used in $(TARBALL)-headers and in
$(BINARYTAR) but I'm not sure about the implications of making the
change purposed and hope others might chime in and provide some
guidance.
PR-URL: https://github.com/nodejs/node/pull/22548
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
2018-08-27 08:14:02 +02:00
|
|
|
DESTCPU ?= arm64
|
2016-04-20 19:12:14 +02:00
|
|
|
else
|
|
|
|
ifeq ($(findstring powerpc,$(shell uname -p)),powerpc)
|
|
|
|
DESTCPU ?= ppc64
|
|
|
|
else
|
2021-06-16 01:12:42 +02:00
|
|
|
ifeq ($(findstring riscv64,$(UNAME_M)),riscv64)
|
|
|
|
DESTCPU ?= riscv64
|
|
|
|
else
|
2015-06-10 09:05:26 +02:00
|
|
|
DESTCPU ?= x86
|
2012-08-04 21:39:54 +02:00
|
|
|
endif
|
2016-04-20 19:12:14 +02:00
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
endif
|
2019-12-10 10:17:09 +01:00
|
|
|
endif
|
2021-06-16 01:12:42 +02:00
|
|
|
endif
|
2021-09-19 01:49:22 +02:00
|
|
|
endif
|
2022-01-06 16:54:32 +01:00
|
|
|
endif
|
2012-08-10 01:30:41 +02:00
|
|
|
ifeq ($(DESTCPU),x64)
|
|
|
|
ARCH=x64
|
|
|
|
else
|
2012-11-27 06:03:36 +01:00
|
|
|
ifeq ($(DESTCPU),arm)
|
|
|
|
ARCH=arm
|
|
|
|
else
|
build: use arm64 as DESTCPU for aarch64
On a aarch64 system I can run the complete build with tests without
specifying the Makefile variable DESTCPU.
But when running the tar-headers target DESTCPU is passed to configure:
$(PYTHON) ./configure \
--prefix=/ \
--dest-cpu=$(DESTCPU) \
...
The value of DESTCPU in this case will be aarch64 which will cause
configure to fail:
configure: error: option --dest-cpu: invalid choice: 'aarch64'
(choose from 'arm', 'arm64', 'ia32', 'mips', 'mipsel', 'mips64el', 'ppc',
'ppc64', 'x32', 'x64', 'x86', 'x86_64', 's390', 's390x')
In the configure script there is a matching of __aarch64__ to arm64:
$ python -c 'from configure import host_arch_cc; print host_arch_cc()'
arm64
In our case it would be nice to have consitent behaviour for both of
these cases on aarch64.
This commit changes DESTCPU to arm64 to be consistent with the
configure script. DESTCPU is used in $(TARBALL)-headers and in
$(BINARYTAR) but I'm not sure about the implications of making the
change purposed and hope others might chime in and provide some
guidance.
PR-URL: https://github.com/nodejs/node/pull/22548
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
2018-08-27 08:14:02 +02:00
|
|
|
ifeq ($(DESTCPU),arm64)
|
2016-02-11 03:57:20 +01:00
|
|
|
ARCH=arm64
|
|
|
|
else
|
2015-07-07 20:15:03 +02:00
|
|
|
ifeq ($(DESTCPU),ppc64)
|
|
|
|
ARCH=ppc64
|
|
|
|
else
|
|
|
|
ifeq ($(DESTCPU),ppc)
|
|
|
|
ARCH=ppc
|
|
|
|
else
|
2016-03-28 23:03:06 +02:00
|
|
|
ifeq ($(DESTCPU),s390)
|
|
|
|
ARCH=s390
|
|
|
|
else
|
|
|
|
ifeq ($(DESTCPU),s390x)
|
|
|
|
ARCH=s390x
|
|
|
|
else
|
2021-06-16 01:12:42 +02:00
|
|
|
ifeq ($(DESTCPU),riscv64)
|
|
|
|
ARCH=riscv64
|
|
|
|
else
|
2012-08-10 01:30:41 +02:00
|
|
|
ARCH=x86
|
2012-08-04 21:39:54 +02:00
|
|
|
endif
|
2012-11-27 06:03:36 +01:00
|
|
|
endif
|
2015-07-07 20:15:03 +02:00
|
|
|
endif
|
|
|
|
endif
|
2016-02-11 03:57:20 +01:00
|
|
|
endif
|
2016-03-28 23:03:06 +02:00
|
|
|
endif
|
|
|
|
endif
|
2021-06-16 01:12:42 +02:00
|
|
|
endif
|
2015-06-10 09:05:26 +02: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 05:39:06 +01: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 09:05:26 +02: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 07:51:00 +01:00
|
|
|
endif
|
2015-06-10 09:05:26 +02:00
|
|
|
ifeq ($(DESTCPU),ia32)
|
|
|
|
override DESTCPU=x86
|
|
|
|
endif
|
|
|
|
|
2015-08-13 18:14:34 +02:00
|
|
|
TARNAME=node-$(FULLVERSION)
|
2015-01-13 02:51:34 +01:00
|
|
|
TARBALL=$(TARNAME).tar
|
2016-01-11 20:54:33 +01:00
|
|
|
# Custom user-specified variation, use it directly
|
|
|
|
ifdef VARIATION
|
|
|
|
BINARYNAME=$(TARNAME)-$(PLATFORM)-$(ARCH)-$(VARIATION)
|
|
|
|
else
|
2012-08-04 21:07:17 +02:00
|
|
|
BINARYNAME=$(TARNAME)-$(PLATFORM)-$(ARCH)
|
2016-01-11 20:54:33 +01:00
|
|
|
endif
|
2015-01-13 02:51:34 +01:00
|
|
|
BINARYTAR=$(BINARYNAME).tar
|
2024-07-15 22:32:26 +02:00
|
|
|
# macOS doesn't have xz installed by default, http://macpkg.sourceforge.net/
|
2020-11-14 16:20:03 +01:00
|
|
|
HAS_XZ ?= $(shell command -v xz > /dev/null 2>&1; [ $$? -eq 0 ] && echo 1 || echo 0)
|
2018-11-21 12:02:54 +01:00
|
|
|
# Supply SKIP_XZ=1 to explicitly skip .tar.xz creation
|
|
|
|
SKIP_XZ ?= 0
|
2021-05-19 05:15:53 +02:00
|
|
|
XZ = $(shell [ $(HAS_XZ) -eq 1 ] && [ $(SKIP_XZ) -eq 0 ] && echo 1 || echo 0)
|
2017-01-05 06:09:32 +01:00
|
|
|
XZ_COMPRESSION ?= 9e
|
2015-06-10 09:05:26 +02:00
|
|
|
PKG=$(TARNAME).pkg
|
2017-09-04 12:07:56 +02:00
|
|
|
MACOSOUTDIR=out/macos
|
2011-11-21 04:22:30 +01:00
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: check-xz
|
2018-11-21 12:02:54 +01:00
|
|
|
ifeq ($(SKIP_XZ), 1)
|
|
|
|
check-xz:
|
2020-10-19 11:18:46 +02:00
|
|
|
$(info SKIP_XZ=1 supplied, skipping .tar.xz creation)
|
2018-11-21 12:02:54 +01:00
|
|
|
else
|
|
|
|
ifeq ($(HAS_XZ), 1)
|
|
|
|
check-xz:
|
|
|
|
else
|
|
|
|
check-xz:
|
2020-10-19 11:18:46 +02:00
|
|
|
$(error No xz command, cannot continue)
|
2018-11-21 12:02:54 +01:00
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: release-only
|
2024-09-24 22:40:34 +02:00
|
|
|
release-only: check-xz ## Prepare Node.js for release.
|
2017-05-11 04:33:29 +02:00
|
|
|
@if [ "$(DISTTYPE)" = "release" ] && `grep -q REPLACEME doc/api/*.md`; then \
|
2022-01-05 19:26:30 +01:00
|
|
|
echo 'Please update REPLACEME tags in the following doc/api/*.md files (See doc/contributing/releases.md):\n' ; \
|
2020-10-06 18:47:36 +02:00
|
|
|
REPLACEMES="$(shell grep -l REPLACEME doc/api/*.md)" ; \
|
|
|
|
echo "$$REPLACEMES\n" | tr " " "\n" ; \
|
2016-05-13 23:24:33 +02:00
|
|
|
exit 1 ; \
|
|
|
|
fi
|
2017-05-11 04:33:29 +02:00
|
|
|
@if [ "$(DISTTYPE)" = "release" ] && \
|
2018-04-28 19:24:40 +02:00
|
|
|
`grep -q DEP...X doc/api/deprecations.md`; then \
|
2022-01-05 19:26:30 +01:00
|
|
|
echo 'Please update DEP...X in doc/api/deprecations.md (See doc/contributing/releases.md)' ; \
|
2017-08-09 00:00:17 +02:00
|
|
|
exit 1 ; \
|
|
|
|
fi
|
2012-08-05 00:34:04 +02:00
|
|
|
@if [ "$(shell git status --porcelain | egrep -v '^\?\? ')" = "" ]; then \
|
|
|
|
exit 0 ; \
|
|
|
|
else \
|
2015-01-18 07:41:37 +01:00
|
|
|
echo "" >&2 ; \
|
2012-08-05 00:34:04 +02: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
|
2021-05-19 05:15:53 +02:00
|
|
|
@if [ "$(DISTTYPE)" != "release" ] || [ "$(RELEASE)" = "1" ]; then \
|
2012-08-05 00:34:04 +02:00
|
|
|
exit 0; \
|
|
|
|
else \
|
2015-01-18 07:41:37 +01:00
|
|
|
echo "" >&2 ; \
|
2012-08-10 01:30:41 +02:00
|
|
|
echo "#NODE_VERSION_IS_RELEASE is set to $(RELEASE)." >&2 ; \
|
2015-01-18 07:41:37 +01:00
|
|
|
echo "Did you remember to update src/node_version.h?" >&2 ; \
|
|
|
|
echo "" >&2 ; \
|
2012-08-05 00:34:04 +02:00
|
|
|
exit 1 ; \
|
|
|
|
fi
|
2021-05-19 05:15:53 +02:00
|
|
|
@if [ "$(RELEASE)" = "0" ] || [ -f "$(CHANGELOG)" ]; then \
|
2021-04-02 01:56:20 +02:00
|
|
|
exit 0; \
|
|
|
|
else \
|
|
|
|
echo "" >&2 ; \
|
|
|
|
echo "#NODE_VERSION_IS_RELEASE is set to $(RELEASE) but " >&2 ; \
|
|
|
|
echo "$(CHANGELOG) does not exist." >&2 ; \
|
|
|
|
echo "" >&2 ; \
|
|
|
|
exit 1 ; \
|
|
|
|
fi
|
2012-08-05 00:34:04 +02:00
|
|
|
|
|
|
|
$(PKG): release-only
|
2021-03-22 13:18:48 +01:00
|
|
|
# pkg building is currently only supported on an ARM64 macOS host for
|
|
|
|
# ease of compiling fat-binaries for both macOS architectures.
|
|
|
|
ifneq ($(OSTYPE),darwin)
|
|
|
|
$(warning Invalid OSTYPE)
|
|
|
|
$(error OSTYPE should be `darwin` currently is $(OSTYPE))
|
2021-06-08 15:53:07 +02:00
|
|
|
endif
|
2021-03-22 13:18:48 +01:00
|
|
|
ifneq ($(ARCHTYPE),arm64)
|
|
|
|
$(warning Invalid ARCHTYPE)
|
|
|
|
$(error ARCHTYPE should be `arm64` currently is $(ARCHTYPE))
|
|
|
|
endif
|
2017-09-04 12:07:56 +02: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
|
2021-03-22 13:18:48 +01:00
|
|
|
CC_host="cc -arch x86_64" CXX_host="c++ -arch x86_64" \
|
|
|
|
CC_target="cc -arch x86_64" CXX_target="c++ -arch x86_64" \
|
|
|
|
CC="cc -arch x86_64" CXX="c++ -arch x86_64" $(PYTHON) ./configure \
|
|
|
|
--dest-cpu=x86_64 \
|
|
|
|
--tag=$(TAG) \
|
|
|
|
--release-urlbase=$(RELEASE_URLBASE) \
|
|
|
|
$(CONFIG_FLAGS) $(BUILD_RELEASE_FLAGS)
|
|
|
|
arch -x86_64 $(MAKE) install V=$(V) DESTDIR=$(MACOSOUTDIR)/dist/x64/node
|
|
|
|
SIGN="$(CODESIGN_CERT)" PKGDIR="$(MACOSOUTDIR)/dist/x64/node/usr/local" sh \
|
|
|
|
tools/osx-codesign.sh
|
2015-01-18 07:41:37 +01:00
|
|
|
$(PYTHON) ./configure \
|
2021-03-22 13:18:48 +01:00
|
|
|
--dest-cpu=arm64 \
|
2015-01-18 07:41:37 +01:00
|
|
|
--tag=$(TAG) \
|
|
|
|
--release-urlbase=$(RELEASE_URLBASE) \
|
2015-08-13 17:30:01 +02:00
|
|
|
$(CONFIG_FLAGS) $(BUILD_RELEASE_FLAGS)
|
2017-09-04 12:07:56 +02:00
|
|
|
$(MAKE) install V=$(V) DESTDIR=$(MACOSOUTDIR)/dist/node
|
2020-11-14 18:30:45 +01:00
|
|
|
SIGN="$(CODESIGN_CERT)" PKGDIR="$(MACOSOUTDIR)/dist/node/usr/local" sh \
|
2017-07-12 02:04:53 +02:00
|
|
|
tools/osx-codesign.sh
|
2021-03-22 13:18:48 +01:00
|
|
|
lipo $(MACOSOUTDIR)/dist/x64/node/usr/local/bin/node \
|
|
|
|
$(MACOSOUTDIR)/dist/node/usr/local/bin/node \
|
|
|
|
-output $(MACOSOUTDIR)/dist/node/usr/local/bin/node \
|
|
|
|
-create
|
2017-09-04 12:07:56 +02: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
|
2022-05-29 06:19:04 +02:00
|
|
|
$(NODE) tools/license2rtf.mjs < LICENSE > \
|
2017-09-04 12:07:56 +02:00
|
|
|
$(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)
|
2020-11-14 18:30:45 +01:00
|
|
|
SIGN="$(PRODUCTSIGN_CERT)" PKG="$(PKG)" sh tools/osx-productsign.sh
|
|
|
|
sh tools/osx-notarize.sh $(FULLVERSION)
|
2015-06-10 09:05:26 +02:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: pkg
|
2024-09-24 22:40:34 +02:00
|
|
|
pkg: $(PKG) ## Build the macOS installer for releases.
|
2015-06-10 09:05:26 +02:00
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: corepack-update
|
2024-09-24 22:40:34 +02:00
|
|
|
corepack-update: ## Update Corepack to the latest version.
|
2022-02-25 23:36:05 +01:00
|
|
|
mkdir -p /tmp/node-corepack
|
2024-06-12 12:57:42 +02:00
|
|
|
curl -qLo /tmp/node-corepack/package.tgz "$$($(call available-node,$(NPM) view corepack dist.tarball))"
|
2022-02-25 23:36:05 +01:00
|
|
|
|
|
|
|
rm -rf deps/corepack && mkdir deps/corepack
|
|
|
|
cd deps/corepack && tar xf /tmp/node-corepack/package.tgz --strip-components=1
|
2020-09-28 17:35:09 +02:00
|
|
|
chmod +x deps/corepack/shims/*
|
|
|
|
|
2024-06-12 12:57:42 +02:00
|
|
|
$(call available-node,'-p' \
|
|
|
|
'require(`./deps/corepack/package.json`).version')
|
2022-02-25 23:36:05 +01:00
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: pkg-upload
|
2017-11-12 20:54:28 +01:00
|
|
|
# Note: this is strictly for release builds on release machines only.
|
2015-06-10 09:05:26 +02:00
|
|
|
pkg-upload: pkg
|
2015-08-31 09:03:26 +02:00
|
|
|
ssh $(STAGINGSERVER) "mkdir -p nodejs/$(DISTTYPEDIR)/$(FULLVERSION)"
|
2015-09-15 19:32:37 +02:00
|
|
|
chmod 664 $(TARNAME).pkg
|
|
|
|
scp -p $(TARNAME).pkg $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME).pkg
|
2024-11-02 09:00:53 +01:00
|
|
|
ssh $(STAGINGSERVER) "rclone copyto nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME).pkg $(CLOUDFLARE_BUCKET)/nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME).pkg"
|
2015-09-15 19:32:37 +02:00
|
|
|
ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME).pkg.done"
|
2011-11-11 23:31:15 +01:00
|
|
|
|
2020-07-24 18:46:13 +02:00
|
|
|
$(TARBALL): release-only doc-only
|
2015-02-26 01:08:16 +01:00
|
|
|
git checkout-index -a -f --prefix=$(TARNAME)/
|
2012-06-07 00:01:31 +02:00
|
|
|
mkdir -p $(TARNAME)/doc/api
|
2015-08-13 18:14:34 +02:00
|
|
|
cp doc/node.1 $(TARNAME)/doc/node.1
|
2012-06-07 00:01:31 +02:00
|
|
|
cp -r out/doc/api/* $(TARNAME)/doc/api/
|
2018-01-24 00:37:59 +01: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/tools/profviz
|
|
|
|
$(RM) -r $(TARNAME)/deps/v8/tools/run-tests.py
|
|
|
|
$(RM) -r $(TARNAME)/doc/images # too big
|
2017-04-01 19:12:33 +02:00
|
|
|
$(RM) -r $(TARNAME)/test*.tap
|
2018-01-24 00:37:59 +01:00
|
|
|
$(RM) -r $(TARNAME)/tools/cpplint.py
|
2024-06-11 08:58:51 +02:00
|
|
|
$(RM) -r $(TARNAME)/tools/eslint
|
2018-01-24 00:37:59 +01:00
|
|
|
$(RM) -r $(TARNAME)/tools/eslint-rules
|
|
|
|
$(RM) -r $(TARNAME)/tools/license-builder.sh
|
2024-06-19 21:54:08 +02:00
|
|
|
$(RM) -r $(TARNAME)/tools/eslint/node_modules
|
2018-01-24 00:37:59 +01:00
|
|
|
$(RM) -r $(TARNAME)/tools/osx-*
|
|
|
|
$(RM) -r $(TARNAME)/tools/osx-pkg.pmdoc
|
2019-09-26 08:07:53 +02:00
|
|
|
find $(TARNAME)/deps/v8/test/* -type d ! -regex '.*/test/torque$$' | xargs $(RM) -r
|
|
|
|
find $(TARNAME)/deps/v8/test -type f ! -regex '.*/test/torque/.*' | xargs $(RM)
|
2020-03-04 20:11:37 +01:00
|
|
|
find $(TARNAME)/deps/zlib/contrib/* -type d ! -regex '.*/contrib/optimizations$$' | xargs $(RM) -r
|
2024-05-23 21:45:18 +02:00
|
|
|
find $(TARNAME)/ -name "eslint.config*" -maxdepth 2 | xargs $(RM)
|
2021-06-27 16:04:14 +02:00
|
|
|
find $(TARNAME)/ -type l | xargs $(RM)
|
2010-05-14 00:54:50 +02:00
|
|
|
tar -cf $(TARNAME).tar $(TARNAME)
|
2017-04-01 19:12:33 +02:00
|
|
|
$(RM) -r $(TARNAME)
|
2015-01-13 02:51:34 +01:00
|
|
|
gzip -c -f -9 $(TARNAME).tar > $(TARNAME).tar.gz
|
2018-11-21 12:02:54 +01:00
|
|
|
ifeq ($(XZ), 1)
|
2015-04-15 02:49:29 +02:00
|
|
|
xz -c -f -$(XZ_COMPRESSION) $(TARNAME).tar > $(TARNAME).tar.xz
|
2015-01-13 02:51:34 +01:00
|
|
|
endif
|
2017-04-01 19:12:33 +02:00
|
|
|
$(RM) $(TARNAME).tar
|
2009-10-03 21:46:59 +02:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: tar
|
2017-11-26 15:41:56 +01:00
|
|
|
tar: $(TARBALL) ## Create a source tarball.
|
2012-08-04 21:12:22 +02:00
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: tar-upload
|
2017-11-12 20:54:28 +01:00
|
|
|
# Note: this is strictly for release builds on release machines only.
|
2015-06-10 09:05:26 +02:00
|
|
|
tar-upload: tar
|
2015-08-31 09:03:26 +02:00
|
|
|
ssh $(STAGINGSERVER) "mkdir -p nodejs/$(DISTTYPEDIR)/$(FULLVERSION)"
|
2015-09-15 19:32:37 +02:00
|
|
|
chmod 664 $(TARNAME).tar.gz
|
|
|
|
scp -p $(TARNAME).tar.gz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME).tar.gz
|
2024-11-02 09:00:53 +01:00
|
|
|
ssh $(STAGINGSERVER) "rclone copyto nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME).tar.gz $(CLOUDFLARE_BUCKET)/nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME).tar.gz"
|
2015-09-15 19:32:37 +02:00
|
|
|
ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME).tar.gz.done"
|
2018-11-21 12:02:54 +01:00
|
|
|
ifeq ($(XZ), 1)
|
2015-09-15 19:32:37 +02:00
|
|
|
chmod 664 $(TARNAME).tar.xz
|
|
|
|
scp -p $(TARNAME).tar.xz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME).tar.xz
|
2024-11-02 09:00:53 +01:00
|
|
|
ssh $(STAGINGSERVER) "rclone copyto nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME).tar.xz $(CLOUDFLARE_BUCKET)/nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME).tar.xz"
|
2015-09-15 19:32:37 +02:00
|
|
|
ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME).tar.xz.done"
|
2015-06-10 09:05:26 +02:00
|
|
|
endif
|
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: doc-upload
|
2017-11-12 20:54:28 +01:00
|
|
|
# Note: this is strictly for release builds on release machines only.
|
2017-01-25 21:54:34 +01:00
|
|
|
doc-upload: doc
|
2017-05-11 04:09:50 +02:00
|
|
|
ssh $(STAGINGSERVER) "mkdir -p nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/docs/"
|
2015-08-31 09:33:22 +02:00
|
|
|
chmod -R ug=rw-x+X,o=r+X out/doc/
|
2017-05-11 04:09:50 +02:00
|
|
|
scp -pr out/doc/* $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/docs/
|
2024-11-02 09:00:53 +01:00
|
|
|
ssh $(STAGINGSERVER) "rclone copy nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/docs/ $(CLOUDFLARE_BUCKET)/nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/docs/"
|
2015-08-31 09:03:26 +02:00
|
|
|
ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/docs.done"
|
2015-06-10 09:05:26 +02:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: $(TARBALL)-headers
|
2016-03-31 19:23:42 +02:00
|
|
|
$(TARBALL)-headers: release-only
|
2015-01-18 07:41:37 +01:00
|
|
|
$(PYTHON) ./configure \
|
|
|
|
--prefix=/ \
|
|
|
|
--dest-cpu=$(DESTCPU) \
|
|
|
|
--tag=$(TAG) \
|
|
|
|
--release-urlbase=$(RELEASE_URLBASE) \
|
2015-08-13 17:30:01 +02:00
|
|
|
$(CONFIG_FLAGS) $(BUILD_RELEASE_FLAGS)
|
2023-11-16 08:30:16 +01:00
|
|
|
$(PYTHON) tools/install.py install --headers-only --dest-dir '$(TARNAME)' --prefix '/'
|
2017-04-01 19:12:33 +02:00
|
|
|
find $(TARNAME)/ -type l | xargs $(RM)
|
2015-06-14 12:23:43 +02:00
|
|
|
tar -cf $(TARNAME)-headers.tar $(TARNAME)
|
2017-04-01 19:12:33 +02:00
|
|
|
$(RM) -r $(TARNAME)
|
2015-06-14 12:23:43 +02:00
|
|
|
gzip -c -f -9 $(TARNAME)-headers.tar > $(TARNAME)-headers.tar.gz
|
2018-11-21 12:02:54 +01:00
|
|
|
ifeq ($(XZ), 1)
|
2015-06-14 12:23:43 +02:00
|
|
|
xz -c -f -$(XZ_COMPRESSION) $(TARNAME)-headers.tar > $(TARNAME)-headers.tar.xz
|
|
|
|
endif
|
2017-04-01 19:12:33 +02:00
|
|
|
$(RM) $(TARNAME)-headers.tar
|
2015-06-14 12:23:43 +02:00
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: tar-headers
|
2017-11-26 15:41:56 +01:00
|
|
|
tar-headers: $(TARBALL)-headers ## Build the node header tarball.
|
2015-06-14 12:23:43 +02:00
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: tar-headers-upload
|
2015-06-14 12:23:43 +02:00
|
|
|
tar-headers-upload: tar-headers
|
2015-08-31 09:03:26 +02:00
|
|
|
ssh $(STAGINGSERVER) "mkdir -p nodejs/$(DISTTYPEDIR)/$(FULLVERSION)"
|
2015-08-31 09:33:22 +02:00
|
|
|
chmod 664 $(TARNAME)-headers.tar.gz
|
2015-08-31 09:03:26 +02:00
|
|
|
scp -p $(TARNAME)-headers.tar.gz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-headers.tar.gz
|
2024-11-02 09:00:53 +01:00
|
|
|
ssh $(STAGINGSERVER) "rclone copyto nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-headers.tar.gz $(CLOUDFLARE_BUCKET)/nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-headers.tar.gz"
|
2015-08-31 09:03:26 +02:00
|
|
|
ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-headers.tar.gz.done"
|
2018-11-21 12:02:54 +01:00
|
|
|
ifeq ($(XZ), 1)
|
2015-08-31 09:33:22 +02:00
|
|
|
chmod 664 $(TARNAME)-headers.tar.xz
|
2015-08-31 09:03:26 +02:00
|
|
|
scp -p $(TARNAME)-headers.tar.xz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-headers.tar.xz
|
2024-11-02 09:00:53 +01:00
|
|
|
ssh $(STAGINGSERVER) "rclone copyto nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-headers.tar.xz $(CLOUDFLARE_BUCKET)/nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-headers.tar.xz"
|
2015-08-31 09:03:26 +02:00
|
|
|
ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-headers.tar.xz.done"
|
2015-06-14 12:23:43 +02:00
|
|
|
endif
|
|
|
|
|
2012-08-05 00:34:04 +02:00
|
|
|
$(BINARYTAR): release-only
|
2017-04-01 19:12:33 +02:00
|
|
|
$(RM) -r $(BINARYNAME)
|
|
|
|
$(RM) -r out/deps out/Release
|
2015-01-18 07:41:37 +01:00
|
|
|
$(PYTHON) ./configure \
|
|
|
|
--prefix=/ \
|
|
|
|
--dest-cpu=$(DESTCPU) \
|
|
|
|
--tag=$(TAG) \
|
|
|
|
--release-urlbase=$(RELEASE_URLBASE) \
|
2015-08-13 17:30:01 +02:00
|
|
|
$(CONFIG_FLAGS) $(BUILD_RELEASE_FLAGS)
|
2012-08-04 21:07:17 +02:00
|
|
|
$(MAKE) install DESTDIR=$(BINARYNAME) V=$(V) PORTABLE=1
|
|
|
|
cp README.md $(BINARYNAME)
|
|
|
|
cp LICENSE $(BINARYNAME)
|
2021-04-02 01:56:20 +02:00
|
|
|
ifeq ("$(wildcard $(CHANGELOG))","")
|
2015-01-14 03:16:16 +01:00
|
|
|
cp CHANGELOG.md $(BINARYNAME)
|
2021-04-02 01:56:20 +02:00
|
|
|
else
|
|
|
|
cp $(CHANGELOG) $(BINARYNAME)/CHANGELOG.md
|
|
|
|
endif
|
2017-07-12 02:05:39 +02:00
|
|
|
ifeq ($(OSTYPE),darwin)
|
2020-11-14 18:30:45 +01:00
|
|
|
SIGN="$(CODESIGN_CERT)" PKGDIR="$(BINARYNAME)" sh tools/osx-codesign.sh
|
2017-07-12 02:05:39 +02:00
|
|
|
endif
|
2012-08-04 21:07:17 +02:00
|
|
|
tar -cf $(BINARYNAME).tar $(BINARYNAME)
|
2017-04-01 19:12:33 +02:00
|
|
|
$(RM) -r $(BINARYNAME)
|
2015-01-13 02:51:34 +01:00
|
|
|
gzip -c -f -9 $(BINARYNAME).tar > $(BINARYNAME).tar.gz
|
2018-11-21 12:02:54 +01:00
|
|
|
ifeq ($(XZ), 1)
|
2015-04-15 02:49:29 +02:00
|
|
|
xz -c -f -$(XZ_COMPRESSION) $(BINARYNAME).tar > $(BINARYNAME).tar.xz
|
2015-01-13 02:51:34 +01:00
|
|
|
endif
|
2017-04-01 19:12:33 +02:00
|
|
|
$(RM) $(BINARYNAME).tar
|
2012-08-04 21:07:17 +02:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: binary
|
2017-11-12 20:54:28 +01:00
|
|
|
# This requires NODE_VERSION_IS_RELEASE defined as 1 in src/node_version.h.
|
2017-11-26 15:41:56 +01:00
|
|
|
binary: $(BINARYTAR) ## Build release binary tarballs.
|
2012-08-04 21:12:37 +02:00
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: binary-upload
|
2017-11-12 20:54:28 +01:00
|
|
|
# Note: this is strictly for release builds on release machines only.
|
2015-06-10 09:05:26 +02:00
|
|
|
binary-upload: binary
|
2015-08-31 09:03:26 +02:00
|
|
|
ssh $(STAGINGSERVER) "mkdir -p nodejs/$(DISTTYPEDIR)/$(FULLVERSION)"
|
2015-09-15 19:32:37 +02:00
|
|
|
chmod 664 $(TARNAME)-$(OSTYPE)-$(ARCH).tar.gz
|
|
|
|
scp -p $(TARNAME)-$(OSTYPE)-$(ARCH).tar.gz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-$(OSTYPE)-$(ARCH).tar.gz
|
2024-11-02 09:00:53 +01:00
|
|
|
ssh $(STAGINGSERVER) "rclone copyto nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-$(OSTYPE)-$(ARCH).tar.gz $(CLOUDFLARE_BUCKET)/nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-$(OSTYPE)-$(ARCH).tar.gz"
|
2015-09-15 19:32:37 +02:00
|
|
|
ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-$(OSTYPE)-$(ARCH).tar.gz.done"
|
2018-11-21 12:02:54 +01:00
|
|
|
ifeq ($(XZ), 1)
|
2015-09-15 19:32:37 +02:00
|
|
|
chmod 664 $(TARNAME)-$(OSTYPE)-$(ARCH).tar.xz
|
|
|
|
scp -p $(TARNAME)-$(OSTYPE)-$(ARCH).tar.xz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-$(OSTYPE)-$(ARCH).tar.xz
|
2024-11-02 09:00:53 +01:00
|
|
|
ssh $(STAGINGSERVER) "rclone copyto nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-$(OSTYPE)-$(ARCH).tar.xz $(CLOUDFLARE_BUCKET)/nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-$(OSTYPE)-$(ARCH).tar.xz"
|
2015-09-15 19:32:37 +02:00
|
|
|
ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-$(OSTYPE)-$(ARCH).tar.xz.done"
|
2015-06-10 09:05:26 +02:00
|
|
|
endif
|
2013-06-04 02:05:56 +02:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: bench-all
|
|
|
|
.PHONY: bench
|
2020-10-19 11:18:46 +02:00
|
|
|
bench bench-all: bench-addons-build
|
|
|
|
$(warning Please use benchmark/run.js or benchmark/compare.js to run the benchmarks.)
|
2016-03-27 08:12:47 +02:00
|
|
|
|
2018-07-13 09:00:19 +02:00
|
|
|
.PHONY: bench-addons-build
|
2024-09-24 22:40:34 +02:00
|
|
|
bench-addons-build: | $(NODE_EXE) benchmark/napi/.buildstamp ## Build required addons for benchmark before running it.
|
2018-07-13 09:00:19 +02:00
|
|
|
|
|
|
|
.PHONY: bench-addons-clean
|
2022-01-18 19:05:06 +01:00
|
|
|
.NOTPARALLEL: bench-addons-clean
|
2018-07-13 09:00:19 +02:00
|
|
|
bench-addons-clean:
|
2019-10-16 19:47:02 +02:00
|
|
|
$(RM) -r benchmark/napi/*/build
|
|
|
|
$(RM) benchmark/napi/.buildstamp
|
2018-07-13 09:00:19 +02:00
|
|
|
|
2020-02-23 12:25:09 +01:00
|
|
|
ifeq ("$(wildcard tools/.mdlintstamp)","")
|
2020-04-08 01:34:53 +02:00
|
|
|
LINT_MD_NEWER =
|
2020-02-23 12:25:09 +01:00
|
|
|
else
|
2020-04-08 01:34:53 +02:00
|
|
|
LINT_MD_NEWER = -newer tools/.mdlintstamp
|
2020-02-23 12:25:09 +01:00
|
|
|
endif
|
2017-10-29 07:50:29 +01:00
|
|
|
|
2020-02-23 12:25:09 +01:00
|
|
|
LINT_MD_TARGETS = doc src lib benchmark test tools/doc tools/icu $(wildcard *.md)
|
2020-04-28 21:34:22 +02:00
|
|
|
LINT_MD_FILES = $(shell $(FIND) $(LINT_MD_TARGETS) -type f \
|
2020-02-23 12:25:09 +01:00
|
|
|
! -path '*node_modules*' ! -path 'test/fixtures/*' -name '*.md' \
|
|
|
|
$(LINT_MD_NEWER))
|
2021-09-20 20:54:58 +02:00
|
|
|
run-lint-md = tools/lint-md/lint-md.mjs $(LINT_MD_FILES)
|
2024-11-02 00:45:02 +01:00
|
|
|
|
|
|
|
# Check for a specific file, as (empty) directories are persisted in git.
|
|
|
|
tools/lint-md/node_modules/remark-parse/package.json:
|
|
|
|
-cd tools/lint-md && $(call available-node,$(run-npm-ci))
|
|
|
|
|
2020-02-23 12:25:09 +01:00
|
|
|
# Lint all changed markdown files maintained by us
|
2024-11-02 00:45:02 +01:00
|
|
|
tools/.mdlintstamp: tools/lint-md/node_modules/remark-parse/package.json $(LINT_MD_FILES)
|
2020-10-19 11:18:46 +02:00
|
|
|
$(info Running Markdown linter...)
|
2020-02-23 12:25:09 +01:00
|
|
|
@$(call available-node,$(run-lint-md))
|
2018-09-17 16:33:49 +02:00
|
|
|
@touch $@
|
2017-10-29 07:50:29 +01:00
|
|
|
|
2018-09-06 22:17:54 +02:00
|
|
|
.PHONY: lint-md
|
2024-09-24 22:40:34 +02:00
|
|
|
lint-md: lint-js-doc | tools/.mdlintstamp ## Lint the markdown documents maintained by us in the codebase.
|
2018-09-06 22:17:54 +02:00
|
|
|
|
2021-09-22 22:44:06 +02:00
|
|
|
run-format-md = tools/lint-md/lint-md.mjs --format $(LINT_MD_FILES)
|
|
|
|
.PHONY: format-md
|
2024-11-02 00:45:02 +01:00
|
|
|
format-md: tools/lint-md/node_modules/remark-parse/package.json ## Format the markdown documents maintained by us in the codebase.
|
2021-09-22 22:44:06 +02:00
|
|
|
@$(call available-node,$(run-format-md))
|
|
|
|
|
|
|
|
|
2017-04-30 21:07:38 +02:00
|
|
|
|
2024-05-23 21:45:18 +02:00
|
|
|
LINT_JS_TARGETS = eslint.config.mjs benchmark doc lib test tools
|
2018-01-20 18:17:47 +01:00
|
|
|
|
2024-06-19 21:54:08 +02:00
|
|
|
run-lint-js = tools/eslint/node_modules/eslint/bin/eslint.js --cache \
|
2021-12-02 08:41:26 +01:00
|
|
|
--max-warnings=0 --report-unused-disable-directives $(LINT_JS_TARGETS)
|
2018-01-20 18:17:47 +01:00
|
|
|
run-lint-js-fix = $(run-lint-js) --fix
|
2017-06-05 21:32:57 +02:00
|
|
|
|
2024-09-20 23:46:54 +02:00
|
|
|
tools/eslint/node_modules/eslint/bin/eslint.js: tools/eslint/package-lock.json
|
2024-09-06 19:31:45 +02:00
|
|
|
-cd tools/eslint && $(call available-node,$(run-npm-ci))
|
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: lint-js-fix
|
2024-09-24 22:40:34 +02:00
|
|
|
lint-js-fix: tools/eslint/node_modules/eslint/bin/eslint.js ## Lint and fix the JavaScript code with eslint./eslint/bin/eslint.js
|
2018-01-20 18:17:47 +01:00
|
|
|
@$(call available-node,$(run-lint-js-fix))
|
2017-11-24 03:50:19 +01:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: lint-js
|
2020-10-19 12:44:48 +02:00
|
|
|
.PHONY: lint-js-doc
|
2017-11-12 20:54:28 +01:00
|
|
|
# Note that on the CI `lint-js-ci` is run instead.
|
2021-02-10 15:20:37 +01:00
|
|
|
lint-js-doc: LINT_JS_TARGETS=doc
|
2024-09-24 22:40:34 +02:00
|
|
|
lint-js lint-js-doc: tools/eslint/node_modules/eslint/bin/eslint.js ## Lint the JavaScript code with eslint./eslint/bin/eslint.js
|
2024-11-16 22:56:56 +01:00
|
|
|
@if [ "$(shell $(node_use_openssl_and_icu))" != "true" ]; then \
|
|
|
|
echo "Skipping $@ (no crypto and/or no ICU)"; \
|
2019-02-18 13:20:58 +01:00
|
|
|
else \
|
|
|
|
echo "Running JS linter..."; \
|
|
|
|
$(call available-node,$(run-lint-js)) \
|
|
|
|
fi
|
2016-03-10 04:40:54 +01:00
|
|
|
|
2017-09-08 13:44:58 +02:00
|
|
|
jslint: lint-js
|
2020-10-19 11:18:46 +02:00
|
|
|
$(warning Please use lint-js instead of jslint)
|
2017-09-08 13:44:58 +02:00
|
|
|
|
2024-06-19 21:54:08 +02:00
|
|
|
run-lint-js-ci = tools/eslint/node_modules/eslint/bin/eslint.js \
|
2021-12-02 08:41:26 +01:00
|
|
|
--max-warnings=0 --report-unused-disable-directives -f tap \
|
2019-12-14 00:38:02 +01:00
|
|
|
-o test-eslint.tap $(LINT_JS_TARGETS)
|
2018-01-20 18:17:47 +01:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: lint-js-ci
|
2017-11-12 20:54:28 +01:00
|
|
|
# On the CI the output is emitted in the TAP format.
|
2024-09-20 23:46:54 +02:00
|
|
|
lint-js-ci: tools/eslint/node_modules/eslint/bin/eslint.js
|
2020-10-19 11:18:46 +02:00
|
|
|
$(info Running JS linter...)
|
2018-01-20 18:17:47 +01:00
|
|
|
@$(call available-node,$(run-lint-js-ci))
|
2017-09-08 13:44:58 +02:00
|
|
|
|
|
|
|
jslint-ci: lint-js-ci
|
2020-10-19 11:18:46 +02:00
|
|
|
$(warning Please use lint-js-ci instead of jslint-ci)
|
2010-10-15 19:05:22 +02:00
|
|
|
|
2018-04-02 11:37:11 +02: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 13:44:58 +02:00
|
|
|
LINT_CPP_EXCLUDE ?=
|
|
|
|
LINT_CPP_EXCLUDE += src/node_root_certs.h
|
2018-01-23 11:49:25 +01:00
|
|
|
LINT_CPP_EXCLUDE += $(LINT_CPP_ADDON_DOC_FILES)
|
2017-07-26 10:27:18 +02:00
|
|
|
# These files were copied more or less verbatim from V8.
|
2017-09-08 13:44:58 +02:00
|
|
|
LINT_CPP_EXCLUDE += src/tracing/trace_event.h src/tracing/trace_event_common.h
|
2015-08-18 20:29:10 +02:00
|
|
|
|
2024-11-10 18:40:16 +01:00
|
|
|
# deps/ncrypto is included in this list, as it is maintained in
|
|
|
|
# this repository, and should be linted. Eventually it should move
|
|
|
|
# to its own repo, at which point we should remove it from this list.
|
|
|
|
LINT_CPP_DEPS = deps/ncrypto/*.cc deps/ncrypto/*.h
|
|
|
|
|
2018-01-23 11:49:25 +01:00
|
|
|
LINT_CPP_FILES = $(filter-out $(LINT_CPP_EXCLUDE), $(wildcard \
|
2020-08-11 15:31:42 +02:00
|
|
|
benchmark/napi/*/*.cc \
|
2018-01-23 11:49:25 +01: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 \
|
2020-02-28 03:54:13 +01:00
|
|
|
test/embedding/*.cc \
|
|
|
|
test/embedding/*.h \
|
2021-10-16 11:16:48 +02:00
|
|
|
test/fixtures/*.c \
|
2018-11-17 21:34:54 +01:00
|
|
|
test/js-native-api/*/*.cc \
|
|
|
|
test/node-api/*/*.cc \
|
2023-03-04 18:59:32 +01:00
|
|
|
tools/js2c.cc \
|
2018-01-23 11:49:25 +01:00
|
|
|
tools/icu/*.cc \
|
|
|
|
tools/icu/*.h \
|
2019-04-04 00:29:02 +02:00
|
|
|
tools/code_cache/*.cc \
|
|
|
|
tools/code_cache/*.h \
|
2019-04-18 10:26:48 +02:00
|
|
|
tools/snapshot/*.cc \
|
|
|
|
tools/snapshot/*.h \
|
2024-11-10 18:40:16 +01:00
|
|
|
$(LINT_CPP_DEPS) \
|
2018-01-23 11:49:25 +01:00
|
|
|
))
|
|
|
|
|
2023-02-24 11:01:27 +01:00
|
|
|
FORMAT_CPP_FILES ?=
|
|
|
|
FORMAT_CPP_FILES += $(LINT_CPP_FILES)
|
|
|
|
# C source codes.
|
|
|
|
FORMAT_CPP_FILES += $(wildcard \
|
2023-06-13 05:22:19 +02:00
|
|
|
benchmark/napi/*/*.c \
|
2023-09-06 15:11:09 +02:00
|
|
|
test/js-native-api/*.h \
|
2023-02-24 11:01:27 +01:00
|
|
|
test/js-native-api/*/*.c \
|
|
|
|
test/js-native-api/*/*.h \
|
|
|
|
test/node-api/*/*.c \
|
|
|
|
test/node-api/*/*.h \
|
|
|
|
)
|
|
|
|
|
2018-01-23 11:49:25 +01:00
|
|
|
# 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 08:05:26 +02:00
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: format-cpp-build
|
2024-09-24 22:40:34 +02:00
|
|
|
format-cpp-build: ## Build 'clang-format' tooling for C++ code formatting.
|
2018-08-18 23:39:06 +02:00
|
|
|
cd tools/clang-format && $(call available-node,$(run-npm-ci))
|
2018-07-13 14:19:31 +02:00
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: format-cpp-clean
|
|
|
|
.NOTPARALLEL: format-cpp-clean
|
2024-09-24 22:40:34 +02:00
|
|
|
format-cpp-clean: ## Remove 'clang-format' tooling for C++ code formatting.
|
2018-07-13 14:19:31 +02:00
|
|
|
$(RM) -r tools/clang-format/node_modules
|
|
|
|
|
|
|
|
CLANG_FORMAT_START ?= HEAD
|
|
|
|
.PHONY: format-cpp
|
|
|
|
# To format staged changes:
|
|
|
|
# $ make format-cpp
|
|
|
|
# To format HEAD~1...HEAD (latest commit):
|
|
|
|
# $ CLANG_FORMAT_START=`git rev-parse HEAD~1` make format-cpp
|
2022-06-17 09:41:07 +02:00
|
|
|
# To format diff between main and current branch head (main...HEAD):
|
|
|
|
# $ CLANG_FORMAT_START=main make format-cpp
|
2024-09-24 22:40:34 +02:00
|
|
|
format-cpp: ## Format C++ diff from $CLANG_FORMAT_START to current changes.
|
2018-07-13 14:19:31 +02:00
|
|
|
ifneq ("","$(wildcard tools/clang-format/node_modules/)")
|
2020-10-19 11:18:46 +02:00
|
|
|
$(info Formatting C++ diff from $(CLANG_FORMAT_START)..)
|
2018-07-13 14:19:31 +02:00
|
|
|
@$(PYTHON) tools/clang-format/node_modules/.bin/git-clang-format \
|
|
|
|
--binary=tools/clang-format/node_modules/.bin/clang-format \
|
|
|
|
--style=file \
|
|
|
|
$(CLANG_FORMAT_START) -- \
|
2023-02-24 11:01:27 +01:00
|
|
|
$(FORMAT_CPP_FILES)
|
2018-07-13 14:19:31 +02:00
|
|
|
else
|
2022-07-07 22:17:49 +02:00
|
|
|
$(info Required tooling for C++ code formatting is not installed.)
|
2020-10-19 11:18:46 +02:00
|
|
|
$(info To install (requires internet access) run: $$ make format-cpp-build)
|
2018-07-13 14:19:31 +02:00
|
|
|
endif
|
|
|
|
|
2019-02-28 19:00:33 +01:00
|
|
|
ifeq ($(V),1)
|
2019-09-20 03:42:37 +02:00
|
|
|
CPPLINT_QUIET =
|
2019-02-28 19:00:33 +01:00
|
|
|
else
|
2019-09-20 03:42:37 +02:00
|
|
|
CPPLINT_QUIET = --quiet
|
2019-02-28 19:00:33 +01:00
|
|
|
endif
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: lint-cpp
|
2024-09-24 22:40:34 +02:00
|
|
|
lint-cpp: tools/.cpplintstamp ## Lint the C++ code with cpplint.py and checkimports.py.
|
2017-10-29 07:50:29 +01:00
|
|
|
|
|
|
|
tools/.cpplintstamp: $(LINT_CPP_FILES)
|
2020-10-19 11:18:46 +02:00
|
|
|
$(info Running C++ linter...)
|
2018-10-04 07:49:06 +02:00
|
|
|
@$(PYTHON) tools/cpplint.py $(CPPLINT_QUIET) $?
|
2020-06-02 13:21:40 +02:00
|
|
|
@$(PYTHON) tools/checkimports.py $?
|
2017-10-29 07:50:29 +01:00
|
|
|
@touch $@
|
2010-12-02 02:01:19 +01:00
|
|
|
|
2018-12-12 15:53:19 +01:00
|
|
|
.PHONY: lint-addon-docs
|
2024-09-24 22:40:34 +02:00
|
|
|
lint-addon-docs: tools/.doclintstamp ## Lint the addon documentation.
|
2018-12-12 15:53:19 +01:00
|
|
|
|
|
|
|
tools/.doclintstamp: test/addons/.docbuildstamp
|
2020-10-19 11:18:46 +02:00
|
|
|
$(info Running C++ linter on addon docs...)
|
2018-10-04 07:49:06 +02:00
|
|
|
@$(PYTHON) tools/cpplint.py $(CPPLINT_QUIET) --filter=$(ADDON_DOC_LINT_FLAGS) \
|
|
|
|
$(LINT_CPP_ADDON_DOC_FILES_GLOB)
|
2018-12-12 15:53:19 +01:00
|
|
|
@touch $@
|
2018-01-23 11:49:25 +01:00
|
|
|
|
2017-09-08 13:44:58 +02:00
|
|
|
cpplint: lint-cpp
|
2020-10-19 11:18:46 +02:00
|
|
|
$(warning Please use lint-cpp instead of cpplint)
|
2017-09-08 13:44:58 +02:00
|
|
|
|
2018-07-24 08:00:13 +02:00
|
|
|
.PHONY: lint-py-build
|
2023-04-14 18:49:01 +02:00
|
|
|
# python -m pip install ruff
|
2021-09-05 14:59:24 +02:00
|
|
|
# Try with '--system' if it fails without; the system may have set '--user'
|
2024-09-24 22:40:34 +02:00
|
|
|
lint-py-build: ## Build resources needed to lint python files.
|
2023-04-14 18:49:01 +02:00
|
|
|
$(info Pip installing ruff on $(shell $(PYTHON) --version)...)
|
2024-09-24 17:20:20 +02:00
|
|
|
$(PYTHON) -m pip install --upgrade --target tools/pip/site-packages ruff==0.6.5 || \
|
|
|
|
$(PYTHON) -m pip install --upgrade --system --target tools/pip/site-packages ruff==0.6.5
|
2018-07-24 08:00:13 +02:00
|
|
|
|
2024-09-24 17:20:20 +02:00
|
|
|
.PHONY: lint-py lint-py-fix lint-py-fix-unsafe
|
2023-04-14 18:49:01 +02:00
|
|
|
ifneq ("","$(wildcard tools/pip/site-packages/ruff)")
|
|
|
|
# Lint the Python code with ruff.
|
2018-07-24 08:00:13 +02:00
|
|
|
lint-py:
|
2024-09-18 14:04:38 +02:00
|
|
|
$(info Running Python linter...)
|
2024-04-08 09:42:09 +02:00
|
|
|
tools/pip/site-packages/bin/ruff check .
|
2024-09-24 17:20:20 +02:00
|
|
|
lint-py-fix:
|
|
|
|
tools/pip/site-packages/bin/ruff check . --fix
|
|
|
|
|
|
|
|
lint-py-fix-unsafe:
|
|
|
|
tools/pip/site-packages/bin/ruff check . --fix --unsafe-fixes
|
2018-07-24 08:00:13 +02:00
|
|
|
else
|
2024-09-24 17:20:20 +02:00
|
|
|
lint-py lint-py-fix lint-py-fix-unsafe:
|
2023-04-14 18:49:01 +02:00
|
|
|
$(warning Python linting with ruff is not available)
|
2020-10-19 11:18:46 +02:00
|
|
|
$(warning Run 'make lint-py-build')
|
2018-07-24 08:00:13 +02:00
|
|
|
endif
|
|
|
|
|
2021-09-05 14:59:24 +02:00
|
|
|
.PHONY: lint-yaml-build
|
|
|
|
# python -m pip install yamllint
|
|
|
|
# Try with '--system' if it fails without; the system may have set '--user'
|
2024-09-24 22:40:34 +02:00
|
|
|
lint-yaml-build: ## Build resources needed to lint YAML files.
|
2021-09-05 14:59:24 +02:00
|
|
|
$(info Pip installing yamllint on $(shell $(PYTHON) --version)...)
|
2023-04-02 07:17:17 +02:00
|
|
|
$(PYTHON) -m pip install --upgrade -t tools/pip/site-packages yamllint || \
|
|
|
|
$(PYTHON) -m pip install --upgrade --system -t tools/pip/site-packages yamllint
|
2021-09-05 14:59:24 +02:00
|
|
|
|
|
|
|
.PHONY: lint-yaml
|
2024-09-24 22:40:34 +02:00
|
|
|
lint-yaml: ## Lint the YAML files with yamllint.
|
2021-09-05 14:59:24 +02:00
|
|
|
@if [ -d "tools/pip/site-packages/yamllint" ]; then \
|
2024-09-18 14:04:38 +02:00
|
|
|
$(info Running YAML linter...) \
|
2021-09-05 14:59:24 +02:00
|
|
|
PYTHONPATH=tools/pip $(PYTHON) -m yamllint .; \
|
|
|
|
else \
|
|
|
|
echo 'YAML linting with yamllint is not available'; \
|
|
|
|
echo "Run 'make lint-yaml-build'"; \
|
|
|
|
fi
|
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: lint
|
|
|
|
.PHONY: lint-ci
|
2024-09-06 19:31:45 +02:00
|
|
|
ifneq ("","$(wildcard tools/eslint/)")
|
2017-11-26 15:41:56 +01:00
|
|
|
lint: ## Run JS, C++, MD and doc linters.
|
2017-04-15 10:23:46 +02:00
|
|
|
@EXIT_STATUS=0 ; \
|
2017-09-08 13:44:58 +02:00
|
|
|
$(MAKE) lint-js || EXIT_STATUS=$$? ; \
|
|
|
|
$(MAKE) lint-cpp || EXIT_STATUS=$$? ; \
|
2018-01-23 11:49:25 +01:00
|
|
|
$(MAKE) lint-addon-docs || EXIT_STATUS=$$? ; \
|
2018-01-31 06:16:19 +01:00
|
|
|
$(MAKE) lint-md || EXIT_STATUS=$$? ; \
|
2021-09-05 14:59:24 +02:00
|
|
|
$(MAKE) lint-yaml || EXIT_STATUS=$$? ; \
|
2017-04-07 21:07:14 +02:00
|
|
|
exit $$EXIT_STATUS
|
2021-01-04 16:11:57 +01:00
|
|
|
CONFLICT_RE=^>>>>>>> [[:xdigit:]]+|^<<<<<<< [[:alpha:]]+
|
2017-11-12 20:54:28 +01:00
|
|
|
|
|
|
|
# Related CI job: node-test-linter
|
2021-09-05 14:59:24 +02:00
|
|
|
lint-ci: lint-js-ci lint-cpp lint-py lint-md lint-addon-docs lint-yaml-build lint-yaml
|
2023-01-17 04:38:23 +01:00
|
|
|
@if ! ( grep -IEqrs "$(CONFLICT_RE)" --exclude="error-message.js" --exclude="merge-conflict.json" benchmark deps doc lib src test tools ) \
|
2020-04-28 21:34:22 +02:00
|
|
|
&& ! ( $(FIND) . -maxdepth 1 -type f | xargs grep -IEqs "$(CONFLICT_RE)" ); then \
|
2016-07-09 01:22:46 +02:00
|
|
|
exit 0 ; \
|
|
|
|
else \
|
|
|
|
echo "" >&2 ; \
|
|
|
|
echo "Conflict marker detected in one or more files. Please fix them first." >&2 ; \
|
|
|
|
exit 1 ; \
|
|
|
|
fi
|
2016-03-14 00:08:11 +01:00
|
|
|
else
|
2020-10-19 11:18:46 +02:00
|
|
|
lint lint-ci:
|
|
|
|
$(info Linting is not available through the source tarball.)
|
|
|
|
$(info Use the git repo instead: $$ git clone https://github.com/nodejs/node.git)
|
2016-03-10 04:40:54 +01:00
|
|
|
endif
|
2016-03-27 08:12:47 +02:00
|
|
|
|
2018-01-03 14:14:07 +01:00
|
|
|
.PHONY: lint-clean
|
2024-09-24 22:40:34 +02:00
|
|
|
lint-clean: ## Remove linting artifacts.
|
2017-10-29 07:50:29 +01:00
|
|
|
$(RM) tools/.*lintstamp
|
|
|
|
$(RM) .eslintcache
|
2024-09-06 19:31:45 +02:00
|
|
|
$(RM) -r tools/eslint/node_modules
|
2024-11-02 00:45:02 +01:00
|
|
|
$(RM) -r tools/lint-md/node_modules
|
2024-09-24 17:20:20 +02:00
|
|
|
$(RM) tools/pip/site_packages
|
2020-08-06 04:26:13 +02:00
|
|
|
|
2020-11-14 16:20:03 +01:00
|
|
|
HAS_DOCKER ?= $(shell command -v docker > /dev/null 2>&1; [ $$? -eq 0 ] && echo 1 || echo 0)
|
2020-08-06 04:26:13 +02:00
|
|
|
|
2022-01-18 19:05:06 +01:00
|
|
|
.PHONY: gen-openssl
|
2020-08-06 04:26:13 +02:00
|
|
|
ifeq ($(HAS_DOCKER), 1)
|
|
|
|
DOCKER_COMMAND ?= docker run -it -v $(PWD):/node
|
|
|
|
IS_IN_WORKTREE = $(shell grep '^gitdir: ' $(PWD)/.git 2>/dev/null)
|
|
|
|
GIT_WORKTREE_COMMON = $(shell git rev-parse --git-common-dir)
|
|
|
|
DOCKER_COMMAND += $(if $(IS_IN_WORKTREE), -v $(GIT_WORKTREE_COMMON):$(GIT_WORKTREE_COMMON))
|
2024-09-24 22:40:34 +02:00
|
|
|
gen-openssl: ## Generate platform dependent openssl files (requires docker).
|
2020-08-06 04:26:13 +02:00
|
|
|
docker build -t node-openssl-builder deps/openssl/config/
|
|
|
|
$(DOCKER_COMMAND) node-openssl-builder make -C deps/openssl/config
|
|
|
|
else
|
|
|
|
gen-openssl:
|
2020-10-19 11:18:46 +02:00
|
|
|
$(error No docker command, cannot continue)
|
2020-08-06 04:26:13 +02:00
|
|
|
endif
|