From f5a86b5e13bcc29f948d4fad4b44370cee561e4b Mon Sep 17 00:00:00 2001 From: raisinten Date: Thu, 22 Oct 2020 18:57:38 +0530 Subject: [PATCH] build: refactor configure.py to use argparse MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-By: Tobias Nießen Reviewed-By: Rich Trott Reviewed-By: Christian Clauss --- configure.py | 350 +++++++++++++++++++++++++++++---------------------- 1 file changed, 202 insertions(+), 148 deletions(-) diff --git a/configure.py b/configure.py index eb78598d9d32f0..50994c8c2772e2 100755 --- a/configure.py +++ b/configure.py @@ -3,7 +3,7 @@ import json import sys import errno -import optparse +import argparse import os import pipes import pprint @@ -41,7 +41,7 @@ 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 @@ 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 @@ "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 @@ '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 @@ '--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 @@ '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 '')