build/gen.py: Add --no-strip option.
This option is useful to build a release executable that can be
used with profiling tools like valgrind / callgrind, in order
to analyze and improve GN's performance.
R=thakis@chromium.org, juliehokett@google.com
Bug: NONE
Change-Id: I302f027284b8f500772270092137957eaa0942f5
Reviewed-on: https://gn-review.googlesource.com/c/3660
Reviewed-by: Scott Graham <scottmg@google.com>
Reviewed-by: Scott Graham <scottmg@chromium.org>
Commit-Queue: Scott Graham <scottmg@chromium.org>
diff --git a/build/gen.py b/build/gen.py
index 7a53a80..0ee66e2 100755
--- a/build/gen.py
+++ b/build/gen.py
@@ -89,6 +89,8 @@
help='Do not generate last_commit_position.h.')
parser.add_option('--out-path',
help='The path to generate the build files in.')
+ parser.add_option('--no-strip', action='store_true',
+ help='Don\'t strip release build. Useful for profiling.')
options, args = parser.parse_args(argv)
if args:
@@ -275,6 +277,8 @@
else:
cflags.append('-DNDEBUG')
cflags.append('-O3')
+ if options.no_strip:
+ cflags.append('-g')
ldflags.append('-O3')
# Use -fdata-sections and -ffunction-sections to place each function
# or data item into its own section so --gc-sections can eliminate any
@@ -288,12 +292,13 @@
ldflags.append('-Wl,--gc-sections')
# Omit all symbol information from the output file.
- if platform.is_darwin():
- ldflags.append('-Wl,-S')
- elif platform.is_aix():
- ldflags.append('-Wl,-s')
- else:
- ldflags.append('-Wl,-strip-all')
+ if options.no_strip is None:
+ if platform.is_darwin():
+ ldflags.append('-Wl,-S')
+ elif platform.is_aix():
+ ldflags.append('-Wl,-s')
+ else:
+ ldflags.append('-Wl,-strip-all')
# Enable identical code-folding.
if options.use_icf: