0
0
mirror of https://github.com/nodejs/node.git synced 2024-11-21 21:19:50 +01:00

build: refactor configure.py to use argparse

Refs: https://github.com/nodejs/node/pull/26725
Fixes: https://github.com/nodejs/node/issues/29813
Refs: https://github.com/nodejs/node/pull/29814

PR-URL: https://github.com/nodejs/node/pull/35755
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Christian Clauss <cclauss@me.com>
This commit is contained in:
raisinten 2020-10-22 18:57:38 +05:30 committed by Rich Trott
parent e6e64f7a21
commit f5a86b5e13

View File

@ -3,7 +3,7 @@ from __future__ import print_function
import json
import sys
import errno
import optparse
import argparse
import os
import pipes
import pprint
@ -41,7 +41,7 @@ import getnapibuildversion
from gyp_node import run_gyp
# parse our options
parser = optparse.OptionParser()
parser = argparse.ArgumentParser()
valid_os = ('win', 'mac', 'solaris', 'freebsd', 'openbsd', 'linux',
'android', 'aix', 'cloudabi')
@ -57,113 +57,125 @@ with open ('tools/icu/icu_versions.json') as f:
icu_versions = json.load(f)
# create option groups
shared_optgroup = optparse.OptionGroup(parser, "Shared libraries",
shared_optgroup = parser.add_argument_group("Shared libraries",
"Flags that allows you to control whether you want to build against "
"built-in dependencies or its shared representations. If necessary, "
"provide multiple libraries with comma.")
intl_optgroup = optparse.OptionGroup(parser, "Internationalization",
intl_optgroup = parser.add_argument_group("Internationalization",
"Flags that lets you enable i18n features in Node.js as well as which "
"library you want to build against.")
http2_optgroup = optparse.OptionGroup(parser, "HTTP2",
http2_optgroup = parser.add_argument_group("HTTP2",
"Flags that allows you to control HTTP2 features in Node.js")
# Options should be in alphabetical order but keep --prefix at the top,
# that's arguably the one people will be looking for most.
parser.add_option('--prefix',
parser.add_argument('--prefix',
action='store',
dest='prefix',
default='/usr/local',
help='select the install prefix [default: %default]')
help='select the install prefix [default: %(default)s]')
parser.add_option('--coverage',
parser.add_argument('--coverage',
action='store_true',
dest='coverage',
default=None,
help='Build node with code coverage enabled')
parser.add_option('--debug',
parser.add_argument('--debug',
action='store_true',
dest='debug',
default=None,
help='also build debug build')
parser.add_option('--debug-node',
parser.add_argument('--debug-node',
action='store_true',
dest='debug_node',
default=None,
help='build the Node.js part of the binary with debugging symbols')
parser.add_option('--dest-cpu',
parser.add_argument('--dest-cpu',
action='store',
dest='dest_cpu',
choices=valid_arch,
help='CPU architecture to build for ({0})'.format(', '.join(valid_arch)))
parser.add_option('--cross-compiling',
parser.add_argument('--cross-compiling',
action='store_true',
dest='cross_compiling',
default=None,
help='force build to be considered as cross compiled')
parser.add_option('--no-cross-compiling',
parser.add_argument('--no-cross-compiling',
action='store_false',
dest='cross_compiling',
default=None,
help='force build to be considered as NOT cross compiled')
parser.add_option('--dest-os',
parser.add_argument('--dest-os',
action='store',
dest='dest_os',
choices=valid_os,
help='operating system to build for ({0})'.format(', '.join(valid_os)))
parser.add_option('--error-on-warn',
parser.add_argument('--error-on-warn',
action='store_true',
dest='error_on_warn',
default=None,
help='Turn compiler warnings into errors for node core sources.')
parser.add_option('--experimental-quic',
parser.add_argument('--experimental-quic',
action='store_true',
dest='experimental_quic',
default=None,
help='enable experimental quic support')
parser.add_option('--gdb',
parser.add_argument('--gdb',
action='store_true',
dest='gdb',
default=None,
help='add gdb support')
parser.add_option('--no-ifaddrs',
parser.add_argument('--no-ifaddrs',
action='store_true',
dest='no_ifaddrs',
default=None,
help='use on deprecated SunOS systems that do not support ifaddrs.h')
parser.add_option("--fully-static",
parser.add_argument("--fully-static",
action="store_true",
dest="fully_static",
default=None,
help="Generate an executable without external dynamic libraries. This "
"will not work on OSX when using the default compilation environment")
parser.add_option("--partly-static",
parser.add_argument("--partly-static",
action="store_true",
dest="partly_static",
default=None,
help="Generate an executable with libgcc and libstdc++ libraries. This "
"will not work on OSX when using the default compilation environment")
parser.add_option("--enable-pgo-generate",
parser.add_argument("--enable-pgo-generate",
action="store_true",
dest="enable_pgo_generate",
default=None,
help="Enable profiling with pgo of a binary. This feature is only available "
"on linux with gcc and g++ 5.4.1 or newer.")
parser.add_option("--enable-pgo-use",
parser.add_argument("--enable-pgo-use",
action="store_true",
dest="enable_pgo_use",
default=None,
help="Enable use of the profile generated with --enable-pgo-generate. This "
"feature is only available on linux with gcc and g++ 5.4.1 or newer.")
parser.add_option("--enable-lto",
parser.add_argument("--enable-lto",
action="store_true",
dest="enable_lto",
default=None,
help="Enable compiling with lto of a binary. This feature is only available "
"on linux with gcc and g++ 5.4.1 or newer.")
parser.add_option("--link-module",
parser.add_argument("--link-module",
action="append",
dest="linked_module",
help="Path to a JS file to be bundled in the binary as a builtin. "
@ -171,334 +183,355 @@ parser.add_option("--link-module",
"e.g. /root/x/y.js will be referenced via require('root/x/y'). "
"Can be used multiple times")
parser.add_option('--openssl-default-cipher-list',
parser.add_argument('--openssl-default-cipher-list',
action='store',
dest='openssl_default_cipher_list',
help='Use the specified cipher list as the default cipher list')
parser.add_option("--openssl-no-asm",
parser.add_argument("--openssl-no-asm",
action="store_true",
dest="openssl_no_asm",
default=None,
help="Do not build optimized assembly for OpenSSL")
parser.add_option('--openssl-fips',
parser.add_argument('--openssl-fips',
action='store',
dest='openssl_fips',
help='Build OpenSSL using FIPS canister .o file in supplied folder')
parser.add_option('--openssl-is-fips',
parser.add_argument('--openssl-is-fips',
action='store_true',
dest='openssl_is_fips',
default=None,
help='specifies that the OpenSSL library is FIPS compatible')
parser.add_option('--openssl-use-def-ca-store',
parser.add_argument('--openssl-use-def-ca-store',
action='store_true',
dest='use_openssl_ca_store',
default=None,
help='Use OpenSSL supplied CA store instead of compiled-in Mozilla CA copy.')
parser.add_option('--openssl-system-ca-path',
parser.add_argument('--openssl-system-ca-path',
action='store',
dest='openssl_system_ca_path',
help='Use the specified path to system CA (PEM format) in addition to '
'the OpenSSL supplied CA store or compiled-in Mozilla CA copy.')
parser.add_option('--experimental-http-parser',
parser.add_argument('--experimental-http-parser',
action='store_true',
dest='experimental_http_parser',
default=None,
help='(no-op)')
shared_optgroup.add_option('--shared-http-parser',
shared_optgroup.add_argument('--shared-http-parser',
action='store_true',
dest='shared_http_parser',
default=None,
help='link to a shared http_parser DLL instead of static linking')
shared_optgroup.add_option('--shared-http-parser-includes',
shared_optgroup.add_argument('--shared-http-parser-includes',
action='store',
dest='shared_http_parser_includes',
help='directory containing http_parser header files')
shared_optgroup.add_option('--shared-http-parser-libname',
shared_optgroup.add_argument('--shared-http-parser-libname',
action='store',
dest='shared_http_parser_libname',
default='http_parser',
help='alternative lib name to link to [default: %default]')
help='alternative lib name to link to [default: %(default)s]')
shared_optgroup.add_option('--shared-http-parser-libpath',
shared_optgroup.add_argument('--shared-http-parser-libpath',
action='store',
dest='shared_http_parser_libpath',
help='a directory to search for the shared http_parser DLL')
shared_optgroup.add_option('--shared-libuv',
shared_optgroup.add_argument('--shared-libuv',
action='store_true',
dest='shared_libuv',
default=None,
help='link to a shared libuv DLL instead of static linking')
shared_optgroup.add_option('--shared-libuv-includes',
shared_optgroup.add_argument('--shared-libuv-includes',
action='store',
dest='shared_libuv_includes',
help='directory containing libuv header files')
shared_optgroup.add_option('--shared-libuv-libname',
shared_optgroup.add_argument('--shared-libuv-libname',
action='store',
dest='shared_libuv_libname',
default='uv',
help='alternative lib name to link to [default: %default]')
help='alternative lib name to link to [default: %(default)s]')
shared_optgroup.add_option('--shared-libuv-libpath',
shared_optgroup.add_argument('--shared-libuv-libpath',
action='store',
dest='shared_libuv_libpath',
help='a directory to search for the shared libuv DLL')
shared_optgroup.add_option('--shared-nghttp2',
shared_optgroup.add_argument('--shared-nghttp2',
action='store_true',
dest='shared_nghttp2',
default=None,
help='link to a shared nghttp2 DLL instead of static linking')
shared_optgroup.add_option('--shared-nghttp2-includes',
shared_optgroup.add_argument('--shared-nghttp2-includes',
action='store',
dest='shared_nghttp2_includes',
help='directory containing nghttp2 header files')
shared_optgroup.add_option('--shared-nghttp2-libname',
shared_optgroup.add_argument('--shared-nghttp2-libname',
action='store',
dest='shared_nghttp2_libname',
default='nghttp2',
help='alternative lib name to link to [default: %default]')
help='alternative lib name to link to [default: %(default)s]')
shared_optgroup.add_option('--shared-nghttp2-libpath',
shared_optgroup.add_argument('--shared-nghttp2-libpath',
action='store',
dest='shared_nghttp2_libpath',
help='a directory to search for the shared nghttp2 DLLs')
shared_optgroup.add_option('--shared-ngtcp2',
shared_optgroup.add_argument('--shared-ngtcp2',
action='store_true',
dest='shared_ngtcp2',
default=None,
help='link to a shared ngtcp2 DLL instead of static linking')
shared_optgroup.add_option('--shared-ngtcp2-includes',
shared_optgroup.add_argument('--shared-ngtcp2-includes',
action='store',
dest='shared_ngtcp2_includes',
help='directory containing ngtcp2 header files')
shared_optgroup.add_option('--shared-ngtcp2-libname',
shared_optgroup.add_argument('--shared-ngtcp2-libname',
action='store',
dest='shared_ngtcp2_libname',
default='ngtcp2',
help='alternative lib name to link to [default: %default]')
help='alternative lib name to link to [default: %(default)s]')
shared_optgroup.add_option('--shared-ngtcp2-libpath',
shared_optgroup.add_argument('--shared-ngtcp2-libpath',
action='store',
dest='shared_ngtcp2_libpath',
help='a directory to search for the shared ngtcp2 DLLs')
shared_optgroup.add_option('--shared-nghttp3',
shared_optgroup.add_argument('--shared-nghttp3',
action='store_true',
dest='shared_nghttp3',
default=None,
help='link to a shared nghttp3 DLL instead of static linking')
shared_optgroup.add_option('--shared-nghttp3-includes',
shared_optgroup.add_argument('--shared-nghttp3-includes',
action='store',
dest='shared_nghttp3_includes',
help='directory containing nghttp3 header files')
shared_optgroup.add_option('--shared-nghttp3-libname',
shared_optgroup.add_argument('--shared-nghttp3-libname',
action='store',
dest='shared_nghttp3_libname',
default='nghttp3',
help='alternative lib name to link to [default: %default]')
help='alternative lib name to link to [default: %(default)s]')
shared_optgroup.add_option('--shared-nghttp3-libpath',
shared_optgroup.add_argument('--shared-nghttp3-libpath',
action='store',
dest='shared_nghttp3_libpath',
help='a directory to search for the shared nghttp3 DLLs')
shared_optgroup.add_option('--shared-openssl',
shared_optgroup.add_argument('--shared-openssl',
action='store_true',
dest='shared_openssl',
default=None,
help='link to a shared OpenSSl DLL instead of static linking')
shared_optgroup.add_option('--shared-openssl-includes',
shared_optgroup.add_argument('--shared-openssl-includes',
action='store',
dest='shared_openssl_includes',
help='directory containing OpenSSL header files')
shared_optgroup.add_option('--shared-openssl-libname',
shared_optgroup.add_argument('--shared-openssl-libname',
action='store',
dest='shared_openssl_libname',
default='crypto,ssl',
help='alternative lib name to link to [default: %default]')
help='alternative lib name to link to [default: %(default)s]')
shared_optgroup.add_option('--shared-openssl-libpath',
shared_optgroup.add_argument('--shared-openssl-libpath',
action='store',
dest='shared_openssl_libpath',
help='a directory to search for the shared OpenSSL DLLs')
shared_optgroup.add_option('--shared-zlib',
shared_optgroup.add_argument('--shared-zlib',
action='store_true',
dest='shared_zlib',
default=None,
help='link to a shared zlib DLL instead of static linking')
shared_optgroup.add_option('--shared-zlib-includes',
shared_optgroup.add_argument('--shared-zlib-includes',
action='store',
dest='shared_zlib_includes',
help='directory containing zlib header files')
shared_optgroup.add_option('--shared-zlib-libname',
shared_optgroup.add_argument('--shared-zlib-libname',
action='store',
dest='shared_zlib_libname',
default='z',
help='alternative lib name to link to [default: %default]')
help='alternative lib name to link to [default: %(default)s]')
shared_optgroup.add_option('--shared-zlib-libpath',
shared_optgroup.add_argument('--shared-zlib-libpath',
action='store',
dest='shared_zlib_libpath',
help='a directory to search for the shared zlib DLL')
shared_optgroup.add_option('--shared-brotli',
shared_optgroup.add_argument('--shared-brotli',
action='store_true',
dest='shared_brotli',
default=None,
help='link to a shared brotli DLL instead of static linking')
shared_optgroup.add_option('--shared-brotli-includes',
shared_optgroup.add_argument('--shared-brotli-includes',
action='store',
dest='shared_brotli_includes',
help='directory containing brotli header files')
shared_optgroup.add_option('--shared-brotli-libname',
shared_optgroup.add_argument('--shared-brotli-libname',
action='store',
dest='shared_brotli_libname',
default='brotlidec,brotlienc',
help='alternative lib name to link to [default: %default]')
help='alternative lib name to link to [default: %(default)s]')
shared_optgroup.add_option('--shared-brotli-libpath',
shared_optgroup.add_argument('--shared-brotli-libpath',
action='store',
dest='shared_brotli_libpath',
help='a directory to search for the shared brotli DLL')
shared_optgroup.add_option('--shared-cares',
shared_optgroup.add_argument('--shared-cares',
action='store_true',
dest='shared_cares',
default=None,
help='link to a shared cares DLL instead of static linking')
shared_optgroup.add_option('--shared-cares-includes',
shared_optgroup.add_argument('--shared-cares-includes',
action='store',
dest='shared_cares_includes',
help='directory containing cares header files')
shared_optgroup.add_option('--shared-cares-libname',
shared_optgroup.add_argument('--shared-cares-libname',
action='store',
dest='shared_cares_libname',
default='cares',
help='alternative lib name to link to [default: %default]')
help='alternative lib name to link to [default: %(default)s]')
shared_optgroup.add_option('--shared-cares-libpath',
shared_optgroup.add_argument('--shared-cares-libpath',
action='store',
dest='shared_cares_libpath',
help='a directory to search for the shared cares DLL')
parser.add_option_group(shared_optgroup)
parser.add_argument_group(shared_optgroup)
parser.add_option('--systemtap-includes',
parser.add_argument('--systemtap-includes',
action='store',
dest='systemtap_includes',
help='directory containing systemtap header files')
parser.add_option('--tag',
parser.add_argument('--tag',
action='store',
dest='tag',
help='custom build tag')
parser.add_option('--release-urlbase',
parser.add_argument('--release-urlbase',
action='store',
dest='release_urlbase',
help='Provide a custom URL prefix for the `process.release` properties '
'`sourceUrl` and `headersUrl`. When compiling a release build, this '
'will default to https://nodejs.org/download/release/')
parser.add_option('--enable-d8',
parser.add_argument('--enable-d8',
action='store_true',
dest='enable_d8',
help=optparse.SUPPRESS_HELP) # Unsupported, undocumented.
default=None,
help=argparse.SUPPRESS) # Unsupported, undocumented.
parser.add_option('--enable-trace-maps',
parser.add_argument('--enable-trace-maps',
action='store_true',
dest='trace_maps',
default=None,
help='Enable the --trace-maps flag in V8 (use at your own risk)')
parser.add_option('--experimental-enable-pointer-compression',
parser.add_argument('--experimental-enable-pointer-compression',
action='store_true',
dest='enable_pointer_compression',
default=None,
help='[Experimental] Enable V8 pointer compression (limits max heap to 4GB and breaks ABI compatibility)')
parser.add_option('--v8-options',
parser.add_argument('--v8-options',
action='store',
dest='v8_options',
help='v8 options to pass, see `node --v8-options` for examples.')
parser.add_option('--with-ossfuzz',
parser.add_argument('--with-ossfuzz',
action='store_true',
dest='ossfuzz',
default=None,
help='Enables building of fuzzers. This command should be run in an OSS-Fuzz Docker image.')
parser.add_option('--with-arm-float-abi',
parser.add_argument('--with-arm-float-abi',
action='store',
dest='arm_float_abi',
choices=valid_arm_float_abi,
help='specifies which floating-point ABI to use ({0}).'.format(
', '.join(valid_arm_float_abi)))
parser.add_option('--with-arm-fpu',
parser.add_argument('--with-arm-fpu',
action='store',
dest='arm_fpu',
choices=valid_arm_fpu,
help='ARM FPU mode ({0}) [default: %default]'.format(
help='ARM FPU mode ({0}) [default: %(default)s]'.format(
', '.join(valid_arm_fpu)))
parser.add_option('--with-mips-arch-variant',
parser.add_argument('--with-mips-arch-variant',
action='store',
dest='mips_arch_variant',
default='r2',
choices=valid_mips_arch,
help='MIPS arch variant ({0}) [default: %default]'.format(
help='MIPS arch variant ({0}) [default: %(default)s]'.format(
', '.join(valid_mips_arch)))
parser.add_option('--with-mips-fpu-mode',
parser.add_argument('--with-mips-fpu-mode',
action='store',
dest='mips_fpu_mode',
default='fp32',
choices=valid_mips_fpu,
help='MIPS FPU mode ({0}) [default: %default]'.format(
help='MIPS FPU mode ({0}) [default: %(default)s]'.format(
', '.join(valid_mips_fpu)))
parser.add_option('--with-mips-float-abi',
parser.add_argument('--with-mips-float-abi',
action='store',
dest='mips_float_abi',
default='hard',
choices=valid_mips_float_abi,
help='MIPS floating-point ABI ({0}) [default: %default]'.format(
help='MIPS floating-point ABI ({0}) [default: %(default)s]'.format(
', '.join(valid_mips_float_abi)))
parser.add_option('--with-dtrace',
parser.add_argument('--with-dtrace',
action='store_true',
dest='with_dtrace',
default=None,
help='build with DTrace (default is true on sunos and darwin)')
parser.add_option('--with-etw',
parser.add_argument('--with-etw',
action='store_true',
dest='with_etw',
default=None,
help='build with ETW (default is true on Windows)')
parser.add_option('--use-largepages',
parser.add_argument('--use-largepages',
action='store_true',
dest='node_use_large_pages',
default=None,
help='This option has no effect. --use-largepages is now a runtime option.')
parser.add_option('--use-largepages-script-lld',
parser.add_argument('--use-largepages-script-lld',
action='store_true',
dest='node_use_large_pages_script_lld',
default=None,
help='This option has no effect. --use-largepages is now a runtime option.')
parser.add_option('--use-section-ordering-file',
parser.add_argument('--use-section-ordering-file',
action='store',
dest='node_section_ordering_info',
default='',
@ -506,42 +539,42 @@ parser.add_option('--use-section-ordering-file',
'Node.js be linked using the gold linker. The gold linker must have ' +
'version 1.2 or greater.')
intl_optgroup.add_option('--with-intl',
intl_optgroup.add_argument('--with-intl',
action='store',
dest='with_intl',
default='full-icu',
choices=valid_intl_modes,
help='Intl mode (valid choices: {0}) [default: %default]'.format(
help='Intl mode (valid choices: {0}) [default: %(default)s]'.format(
', '.join(valid_intl_modes)))
intl_optgroup.add_option('--without-intl',
intl_optgroup.add_argument('--without-intl',
action='store_const',
dest='with_intl',
const='none',
help='Disable Intl, same as --with-intl=none (disables inspector)')
intl_optgroup.add_option('--with-icu-path',
intl_optgroup.add_argument('--with-icu-path',
action='store',
dest='with_icu_path',
help='Path to icu.gyp (ICU i18n, Chromium version only.)')
icu_default_locales='root,en'
intl_optgroup.add_option('--with-icu-locales',
intl_optgroup.add_argument('--with-icu-locales',
action='store',
dest='with_icu_locales',
default=icu_default_locales,
help='Comma-separated list of locales for "small-icu". "root" is assumed. '
'[default: %default]')
'[default: %(default)s]')
intl_optgroup.add_option('--with-icu-source',
intl_optgroup.add_argument('--with-icu-source',
action='store',
dest='with_icu_source',
help='Intl mode: optional local path to icu/ dir, or path/URL of '
'the icu4c source archive. '
'v%d.x or later recommended.' % icu_versions['minimum_icu'])
intl_optgroup.add_option('--with-icu-default-data-dir',
intl_optgroup.add_argument('--with-icu-default-data-dir',
action='store',
dest='with_icu_default_data_dir',
help='Path to the icuXXdt{lb}.dat file. If unspecified, ICU data will '
@ -549,159 +582,179 @@ intl_optgroup.add_option('--with-icu-default-data-dir',
'--icu-data-dir runtime argument is used. This option has effect '
'only when Node.js is built with --with-intl=small-icu.')
parser.add_option('--with-ltcg',
parser.add_argument('--with-ltcg',
action='store_true',
dest='with_ltcg',
default=None,
help='Use Link Time Code Generation. This feature is only available on Windows.')
parser.add_option('--without-node-snapshot',
parser.add_argument('--without-node-snapshot',
action='store_true',
dest='without_node_snapshot',
default=None,
help='Turn off V8 snapshot integration. Currently experimental.')
parser.add_option('--without-node-code-cache',
parser.add_argument('--without-node-code-cache',
action='store_true',
dest='without_node_code_cache',
default=None,
help='Turn off V8 Code cache integration.')
intl_optgroup.add_option('--download',
intl_optgroup.add_argument('--download',
action='store',
dest='download_list',
help=nodedownload.help())
intl_optgroup.add_option('--download-path',
intl_optgroup.add_argument('--download-path',
action='store',
dest='download_path',
default='deps',
help='Download directory [default: %default]')
help='Download directory [default: %(default)s]')
parser.add_option_group(intl_optgroup)
parser.add_argument_group(intl_optgroup)
parser.add_option('--debug-lib',
parser.add_argument('--debug-lib',
action='store_true',
dest='node_debug_lib',
default=None,
help='build lib with DCHECK macros')
http2_optgroup.add_option('--debug-nghttp2',
http2_optgroup.add_argument('--debug-nghttp2',
action='store_true',
dest='debug_nghttp2',
default=None,
help='build nghttp2 with DEBUGBUILD (default is false)')
parser.add_option_group(http2_optgroup)
parser.add_argument_group(http2_optgroup)
parser.add_option('--without-dtrace',
parser.add_argument('--without-dtrace',
action='store_true',
dest='without_dtrace',
default=None,
help='build without DTrace')
parser.add_option('--without-etw',
parser.add_argument('--without-etw',
action='store_true',
dest='without_etw',
default=None,
help='build without ETW')
parser.add_option('--without-npm',
parser.add_argument('--without-npm',
action='store_true',
dest='without_npm',
default=None,
help='do not install the bundled npm (package manager)')
# Dummy option for backwards compatibility
parser.add_option('--without-report',
parser.add_argument('--without-report',
action='store_true',
dest='unused_without_report',
help=optparse.SUPPRESS_HELP)
default=None,
help=argparse.SUPPRESS)
parser.add_option('--with-snapshot',
parser.add_argument('--with-snapshot',
action='store_true',
dest='unused_with_snapshot',
help=optparse.SUPPRESS_HELP)
default=None,
help=argparse.SUPPRESS)
parser.add_option('--without-snapshot',
parser.add_argument('--without-snapshot',
action='store_true',
dest='unused_without_snapshot',
help=optparse.SUPPRESS_HELP)
default=None,
help=argparse.SUPPRESS)
parser.add_option('--without-siphash',
parser.add_argument('--without-siphash',
action='store_true',
dest='without_siphash',
help=optparse.SUPPRESS_HELP)
default=None,
help=argparse.SUPPRESS)
# End dummy list.
parser.add_option('--without-ssl',
parser.add_argument('--without-ssl',
action='store_true',
dest='without_ssl',
default=None,
help='build without SSL (disables crypto, https, inspector, etc.)')
parser.add_option('--without-node-options',
parser.add_argument('--without-node-options',
action='store_true',
dest='without_node_options',
default=None,
help='build without NODE_OPTIONS support')
parser.add_option('--ninja',
parser.add_argument('--ninja',
action='store_true',
dest='use_ninja',
default=None,
help='generate build files for use with Ninja')
parser.add_option('--enable-asan',
parser.add_argument('--enable-asan',
action='store_true',
dest='enable_asan',
default=None,
help='compile for Address Sanitizer to find memory bugs')
parser.add_option('--enable-static',
parser.add_argument('--enable-static',
action='store_true',
dest='enable_static',
default=None,
help='build as static library')
parser.add_option('--no-browser-globals',
parser.add_argument('--no-browser-globals',
action='store_true',
dest='no_browser_globals',
default=None,
help='do not export browser globals like setTimeout, console, etc. ' +
'(This mode is not officially supported for regular applications)')
parser.add_option('--without-inspector',
parser.add_argument('--without-inspector',
action='store_true',
dest='without_inspector',
default=None,
help='disable the V8 inspector protocol')
parser.add_option('--shared',
parser.add_argument('--shared',
action='store_true',
dest='shared',
default=None,
help='compile shared library for embedding node in another project. ' +
'(This mode is not officially supported for regular applications)')
parser.add_option('--without-v8-platform',
parser.add_argument('--without-v8-platform',
action='store_true',
dest='without_v8_platform',
default=False,
help='do not initialize v8 platform during node.js startup. ' +
'(This mode is not officially supported for regular applications)')
parser.add_option('--without-bundled-v8',
parser.add_argument('--without-bundled-v8',
action='store_true',
dest='without_bundled_v8',
default=False,
help='do not use V8 includes from the bundled deps folder. ' +
'(This mode is not officially supported for regular applications)')
parser.add_option('--verbose',
parser.add_argument('--verbose',
action='store_true',
dest='verbose',
default=False,
help='get more output from this script')
parser.add_option('--v8-non-optimized-debug',
parser.add_argument('--v8-non-optimized-debug',
action='store_true',
dest='v8_non_optimized_debug',
default=False,
help='compile V8 with minimal optimizations and with runtime checks')
parser.add_option('--v8-with-dchecks',
parser.add_argument('--v8-with-dchecks',
action='store_true',
dest='v8_with_dchecks',
default=False,
help='compile V8 with debug checks and runtime debugging features enabled')
parser.add_option('--v8-lite-mode',
parser.add_argument('--v8-lite-mode',
action='store_true',
dest='v8_lite_mode',
default=False,
@ -709,25 +762,26 @@ parser.add_option('--v8-lite-mode',
'memory footprint, but also implies no just-in-time compilation ' +
'support, thus much slower execution)')
parser.add_option('--v8-enable-object-print',
parser.add_argument('--v8-enable-object-print',
action='store_true',
dest='v8_enable_object_print',
default=True,
help='compile V8 with auxiliar functions for native debuggers')
parser.add_option('--node-builtin-modules-path',
parser.add_argument('--node-builtin-modules-path',
action='store',
dest='node_builtin_modules_path',
default=False,
help='node will load builtin modules from disk instead of from binary')
# Create compile_commands.json in out/Debug and out/Release.
parser.add_option('-C',
parser.add_argument('-C',
action='store_true',
dest='compile_commands_json',
help=optparse.SUPPRESS_HELP)
default=None,
help=argparse.SUPPRESS)
(options, args) = parser.parse_args()
(options, args) = parser.parse_known_args()
# Expand ~ in the install prefix now, it gets written to multiple files.
options.prefix = os.path.expanduser(options.prefix or '')