summaryrefslogtreecommitdiff
path: root/configure
diff options
context:
space:
mode:
authorOctavian Soldea <octavian.soldea@intel.com>2018-06-29 15:54:01 -0700
committerGabriel Schulhof <gabriel.schulhof@intel.com>2018-09-04 18:48:24 -0400
commit9be15559cc0bfe506d9cdfba4ad0f4beacf5ce17 (patch)
tree314bba02de3b15602bcae27ad34bdffc9e758c48 /configure
parentfdf829eea48206d0a078dba3a0bf9f77c6acb619 (diff)
downloadandroid-node-v8-9be15559cc0bfe506d9cdfba4ad0f4beacf5ce17.tar.gz
android-node-v8-9be15559cc0bfe506d9cdfba4ad0f4beacf5ce17.tar.bz2
android-node-v8-9be15559cc0bfe506d9cdfba4ad0f4beacf5ce17.zip
build: enabling pgo at configure
This modification allows for compiling with profiled guided optimization (pgo) using the flags --enable-pgo-generate and --enable-pgo-use. Refs: https://github.com/nodejs/node/issues/21583 Refs: https://github.com/nodejs/node/issues/1409 PR-URL: https://github.com/nodejs/node/pull/21596 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Denys Otrishko <shishugi@gmail.com>
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure61
1 files changed, 51 insertions, 10 deletions
diff --git a/configure b/configure
index 332071345f..c04118e983 100755
--- a/configure
+++ b/configure
@@ -157,11 +157,23 @@ parser.add_option("--enable-vtune-profiling",
"JavaScript code executed in nodejs. This feature is only available "
"for x32, x86, and x64 architectures.")
+parser.add_option("--enable-pgo-generate",
+ action="store_true",
+ dest="enable_pgo_generate",
+ 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",
+ action="store_true",
+ dest="enable_pgo_use",
+ 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",
action="store_true",
dest="enable_lto",
help="Enable compiling with lto of a binary. This feature is only available "
- "on linux with gcc and g++.")
+ "on linux with gcc and g++ 5.4.1 or newer.")
parser.add_option("--link-module",
action="append",
@@ -898,6 +910,16 @@ def configure_mips(o):
o['variables']['mips_fpu_mode'] = options.mips_fpu_mode
+def gcc_version_ge(version_checked):
+ for compiler in [(CC, 'c'), (CXX, 'c++')]:
+ ok, is_clang, clang_version, compiler_version = \
+ try_check_compiler(compiler[0], compiler[1])
+ compiler_version_num = tuple(map(int, compiler_version))
+ if is_clang or compiler_version_num < version_checked:
+ return False
+ return True
+
+
def configure_node(o):
if options.dest_os == 'android':
o['variables']['OS'] = 'android'
@@ -942,6 +964,29 @@ def configure_node(o):
else:
o['variables']['node_enable_v8_vtunejit'] = 'false'
+ if flavor != 'linux' and (options.enable_pgo_generate or options.enable_pgo_use):
+ raise Exception(
+ 'The pgo option is supported only on linux.')
+
+ if flavor == 'linux':
+ if options.enable_pgo_generate or options.enable_pgo_use:
+ version_checked = (5, 4, 1)
+ if not gcc_version_ge(version_checked):
+ version_checked_str = ".".join(map(str, version_checked))
+ raise Exception(
+ 'The options --enable-pgo-generate and --enable-pgo-use '
+ 'are supported for gcc and gxx %s or newer only.' % (version_checked_str))
+
+ if options.enable_pgo_generate and options.enable_pgo_use:
+ raise Exception(
+ 'Only one of the --enable-pgo-generate or --enable-pgo-use options '
+ 'can be specified at a time. You would like to use '
+ '--enable-pgo-generate first, profile node, and then recompile '
+ 'with --enable-pgo-use')
+
+ o['variables']['enable_pgo_generate'] = b(options.enable_pgo_generate)
+ o['variables']['enable_pgo_use'] = b(options.enable_pgo_use)
+
if flavor != 'linux' and (options.enable_lto):
raise Exception(
'The lto option is supported only on linux.')
@@ -949,15 +994,11 @@ def configure_node(o):
if flavor == 'linux':
if options.enable_lto:
version_checked = (5, 4, 1)
- for compiler in [(CC, 'c'), (CXX, 'c++')]:
- ok, is_clang, clang_version, compiler_version = \
- try_check_compiler(compiler[0], compiler[1])
- compiler_version_num = tuple(map(int, compiler_version))
- if is_clang or compiler_version_num < version_checked:
- version_checked_str = ".".join(map(str, version_checked))
- raise Exception(
- 'The option --enable-lto is supported for gcc and gxx %s'
- ' or newer only.' % (version_checked_str))
+ if not gcc_version_ge(version_checked):
+ version_checked_str = ".".join(map(str, version_checked))
+ raise Exception(
+ 'The option --enable-lto is supported for gcc and gxx %s'
+ ' or newer only.' % (version_checked_str))
o['variables']['enable_lto'] = b(options.enable_lto)