Bug 1411081 - Move --enable-optimize/MOZ_OPTIMIZE to moz.configure; r?glandium
The Rust optimization logic is tied to --enable-optimize/MOZ_OPTIMIZE
and --enable-debug/MOZ_DEBUG. In order to more easily implement more
customization, let's move --enable-optimize/MOZ_OPTIMIZE to
moz.configure so its value can be consulted there.
The logic here is a bit wonky. The option behaves like a boolean
or a string. If a string, MOZ_OPTIMIZE is set to 2. Otherwise it
is 1 or unset depending on the boolean value.
The custom compiler flags string is passed to old-configure, where it
overwrites whatever old-configure derived as the default value.
We stop short of moving all references to MOZ_OPTIMIZE_FLAGS to
moz.configure because there are a handful of them and I don't want
to scope bloat.
MozReview-Commit-ID: 6iNDu2HwLGr
--- a/build/moz.configure/old.configure
+++ b/build/moz.configure/old.configure
@@ -204,17 +204,16 @@ def old_configure_options(*options):
'--enable-memory-sanitizer',
'--enable-mobile-optimize',
'--enable-necko-wifi',
'--enable-negotiateauth',
'--enable-nfc',
'--enable-nspr-build',
'--enable-official-branding',
'--enable-oom-breakpoint',
- '--enable-optimize',
'--enable-parental-controls',
'--enable-pie',
'--enable-posix-nspr-emulation',
'--enable-pref-extensions',
'--enable-pulseaudio',
'--enable-raw',
'--enable-readline',
'--enable-reflow-perf',
--- a/build/moz.configure/toolchain.configure
+++ b/build/moz.configure/toolchain.configure
@@ -6,16 +6,45 @@
# PGO
# ==============================================================
option(env='MOZ_PGO', help='Build with profile guided optimizations')
set_config('MOZ_PGO', depends('MOZ_PGO')(lambda x: bool(x)))
add_old_configure_assignment('MOZ_PGO', depends('MOZ_PGO')(lambda x: bool(x)))
+# Code optimization
+# ==============================================================
+
+js_option('--enable-optimize',
+ nargs='?',
+ default=True,
+ help='Enable optimizations via compiler flags')
+
+@depends('--enable-optimize')
+def moz_optimize(option):
+ flags = None
+
+ if len(option):
+ val = '2'
+ flags = option[0]
+ elif option:
+ val = '1'
+ else:
+ val = None
+
+ return namespace(
+ optimize=val,
+ flags=flags,
+ )
+
+set_config('MOZ_OPTIMIZE', moz_optimize.optimize)
+add_old_configure_assignment('MOZ_OPTIMIZE', moz_optimize.optimize)
+add_old_configure_assignment('MOZ_CONFIGURE_OPTIMIZE_FLAGS', moz_optimize.flags)
+
# yasm detection
# ==============================================================
yasm = check_prog('YASM', ['yasm'], allow_missing=True)
@depends_if(yasm)
@checking('yasm version')
def yasm_version(yasm):
--- a/js/src/old-configure.in
+++ b/js/src/old-configure.in
@@ -1433,28 +1433,21 @@ dnl = Debugging Options
dnl =
dnl ========================================================
MOZ_ARG_HEADER(Debugging and Optimizations)
dnl ========================================================
dnl = Enable code optimization. ON by default.
dnl ========================================================
-MOZ_ARG_ENABLE_STRING(optimize,
-[ --disable-optimize Disable compiler optimization
- --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
-[ if test "$enableval" != "no"; then
- MOZ_OPTIMIZE=1
- if test -n "$enableval" -a "$enableval" != "yes"; then
- MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
- MOZ_OPTIMIZE=2
- fi
-else
- MOZ_OPTIMIZE=
-fi ], MOZ_OPTIMIZE=1)
+# Use value from moz.configure if one is defined. Else use our computed
+# value.
+if test -n "${MOZ_CONFIGURE_OPTIMIZE_FLAGS}"; then
+ MOZ_OPTIMIZE_FLAGS=${MOZ_CONFIGURE_OPTIMIZE_FLAGS}
+fi
MOZ_SET_FRAMEPTR_FLAGS
if test "$COMPILE_ENVIRONMENT"; then
if test -n "$MOZ_OPTIMIZE"; then
AC_MSG_CHECKING([for valid optimization flags])
_SAVE_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
@@ -1465,17 +1458,16 @@ if test -n "$MOZ_OPTIMIZE"; then
AC_MSG_RESULT([$_results])
if test "$_results" = "no"; then
AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
fi
CFLAGS=$_SAVE_CFLAGS
fi
fi # COMPILE_ENVIRONMENT
-AC_SUBST(MOZ_OPTIMIZE)
AC_SUBST(MOZ_FRAMEPTR_FLAGS)
AC_SUBST(MOZ_OPTIMIZE_FLAGS)
AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
AC_SUBST(MOZ_PGO_OPTIMIZE_FLAGS)
dnl ========================================================
dnl = Trace logging. Enabled by default in DEBUG builds.
dnl ========================================================
--- a/old-configure.in
+++ b/old-configure.in
@@ -3709,28 +3709,21 @@ if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
AC_DEFINE(MOZ_IGNORE_PAINT_WILL_RESAMPLE)
fi
dnl ========================================================
dnl = Enable code optimization. ON by default.
dnl ========================================================
-MOZ_ARG_ENABLE_STRING(optimize,
-[ --disable-optimize Disable compiler optimization
- --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
-[ if test "$enableval" != "no"; then
- MOZ_OPTIMIZE=1
- if test -n "$enableval" -a "$enableval" != "yes"; then
- MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
- MOZ_OPTIMIZE=2
- fi
-else
- MOZ_OPTIMIZE=
-fi ], MOZ_OPTIMIZE=1)
+# Use value from moz.configure if one is defined. Else use our computed
+# value.
+if test -n "${MOZ_CONFIGURE_OPTIMIZE_FLAGS}"; then
+ MOZ_OPTIMIZE_FLAGS=${MOZ_CONFIGURE_OPTIMIZE_FLAGS}
+fi
MOZ_SET_FRAMEPTR_FLAGS
if test "$COMPILE_ENVIRONMENT"; then
if test -n "$MOZ_OPTIMIZE"; then
AC_MSG_CHECKING([for valid C compiler optimization flags])
_SAVE_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
@@ -3741,17 +3734,16 @@ if test -n "$MOZ_OPTIMIZE"; then
AC_MSG_RESULT([$_results])
if test "$_results" = "no"; then
AC_MSG_ERROR([These compiler flags for C are invalid: $MOZ_OPTIMIZE_FLAGS])
fi
CFLAGS=$_SAVE_CFLAGS
fi
fi # COMPILE_ENVIRONMENT
-AC_SUBST(MOZ_OPTIMIZE)
AC_SUBST(MOZ_FRAMEPTR_FLAGS)
AC_SUBST(MOZ_OPTIMIZE_FLAGS)
AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
AC_SUBST(MOZ_PGO_OPTIMIZE_FLAGS)
dnl ========================================================
dnl = Disable treating compiler warnings as errors
dnl ========================================================