Bug 1293837 - Move HAVE_64BIT_BUILD test to python configure. r?chmanchester
Also, now that we're using modern C++11 compilers, we can just rely on
static_assert, instead of the pile of macros used in the autoconf test.
--- a/build/moz.configure/toolchain.configure
+++ b/build/moz.configure/toolchain.configure
@@ -761,16 +761,23 @@ c_compiler = compiler('C', target)
cxx_compiler = compiler('C++', target, c_compiler=c_compiler)
host_c_compiler = compiler('C', host, other_compiler=c_compiler)
host_cxx_compiler = compiler('C++', host, c_compiler=host_c_compiler,
other_compiler=cxx_compiler,
other_c_compiler=c_compiler)
include('compile-checks.configure')
+have_64_bit = try_compile(body='static_assert(sizeof(void *) == 8, "")',
+ check_msg='for 64-bit OS')
+
+set_config('HAVE_64BIT_BUILD', have_64_bit)
+set_define('HAVE_64BIT_BUILD', have_64_bit)
+add_old_configure_assignment('HAVE_64BIT_BUILD', have_64_bit)
+
@depends(c_compiler)
def default_debug_flags(compiler_info):
# Debug info is ON by default.
if compiler_info.type == 'msvc':
return '-Zi'
return '-g'
option(env='MOZ_DEBUG_FLAGS',
--- a/js/src/old-configure.in
+++ b/js/src/old-configure.in
@@ -444,58 +444,16 @@ DIRENT_INO=d_ino
MOZ_USER_DIR=".mozilla"
MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib"
dnl Configure platform-specific CPU architecture compiler options.
dnl ==============================================================
MOZ_ARCH_OPTS
-dnl =================================================================
-dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
-dnl which is bad when cross compiling.
-dnl =================================================================
-if test "$COMPILE_ENVIRONMENT"; then
-configure_static_assert_macros='
-#define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
-#define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
-#define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
-'
-
-dnl test that the macros actually work:
-AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
-AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
- [AC_LANG_SAVE
- AC_LANG_C
- ac_cv_static_assertion_macros_work="yes"
- AC_TRY_COMPILE([$configure_static_assert_macros],
- [CONFIGURE_STATIC_ASSERT(1)],
- ,
- ac_cv_static_assertion_macros_work="no")
- AC_TRY_COMPILE([$configure_static_assert_macros],
- [CONFIGURE_STATIC_ASSERT(0)],
- ac_cv_static_assertion_macros_work="no",
- )
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE([$configure_static_assert_macros],
- [CONFIGURE_STATIC_ASSERT(1)],
- ,
- ac_cv_static_assertion_macros_work="no")
- AC_TRY_COMPILE([$configure_static_assert_macros],
- [CONFIGURE_STATIC_ASSERT(0)],
- ac_cv_static_assertion_macros_work="no",
- )
- AC_LANG_RESTORE
- ])
-AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
-if test "$ac_cv_static_assertion_macros_work" = "no"; then
- AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
-fi
-fi # COMPILE_ENVIRONMENT
-
dnl ========================================================
dnl Android libstdc++, placed here so it can use MOZ_ARCH
dnl computed above.
dnl ========================================================
MOZ_ANDROID_CPU_ARCH
MOZ_ANDROID_STLPORT
@@ -584,35 +542,16 @@ if test "$GNU_CXX"; then
_DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(topobjdir)/js/src/js-confdefs.h'
_USE_CPP_INCLUDE_FLAG=1
else
_DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_JS_CONFDEFS_H_ $(ACDEFINES)'
fi
dnl ========================================================
-dnl Checking for 64-bit OS
-dnl ========================================================
-if test "$COMPILE_ENVIRONMENT"; then
-AC_LANG_SAVE
-AC_LANG_C
-AC_MSG_CHECKING(for 64-bit OS)
-AC_TRY_COMPILE([$configure_static_assert_macros],
- [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)],
- result="yes", result="no")
-AC_MSG_RESULT("$result")
-if test "$result" = "yes"; then
- AC_DEFINE(HAVE_64BIT_BUILD)
- HAVE_64BIT_BUILD=1
-fi
-AC_SUBST(HAVE_64BIT_BUILD)
-AC_LANG_RESTORE
-fi # COMPILE_ENVIRONMENT
-
-dnl ========================================================
dnl System overrides of the defaults for host
dnl ========================================================
case "$host" in
*mingw*)
if test -n "$_WIN32_MSVC"; then
HOST_AR=lib
HOST_AR_FLAGS='-NOLOGO -OUT:$@'
HOST_CFLAGS="$HOST_CFLAGS -TC -nologo"
--- a/old-configure.in
+++ b/old-configure.in
@@ -605,58 +605,16 @@ if test "$COMPILE_ENVIRONMENT"; then
MOZ_ARCH_OPTS
else
if test "$OS_TARGET" = Android -a x"$MOZ_WIDGET_TOOLKIT" != x"gonk"; then
dnl Default Android builds to ARMv7.
MOZ_ARCH=armv7-a
fi
fi # COMPILE_ENVIRONMENT
-dnl =================================================================
-dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
-dnl which is bad when cross compiling.
-dnl =================================================================
-if test "$COMPILE_ENVIRONMENT"; then
-configure_static_assert_macros='
-#define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
-#define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
-#define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
-'
-
-dnl test that the macros actually work:
-AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
-AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
- [AC_LANG_SAVE
- AC_LANG_C
- ac_cv_static_assertion_macros_work="yes"
- AC_TRY_COMPILE([$configure_static_assert_macros],
- [CONFIGURE_STATIC_ASSERT(1)],
- ,
- ac_cv_static_assertion_macros_work="no")
- AC_TRY_COMPILE([$configure_static_assert_macros],
- [CONFIGURE_STATIC_ASSERT(0)],
- ac_cv_static_assertion_macros_work="no",
- )
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE([$configure_static_assert_macros],
- [CONFIGURE_STATIC_ASSERT(1)],
- ,
- ac_cv_static_assertion_macros_work="no")
- AC_TRY_COMPILE([$configure_static_assert_macros],
- [CONFIGURE_STATIC_ASSERT(0)],
- ac_cv_static_assertion_macros_work="no",
- )
- AC_LANG_RESTORE
- ])
-AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
-if test "$ac_cv_static_assertion_macros_work" = "no"; then
- AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
-fi
-fi # COMPILE_ENVIRONMENT
-
dnl ========================================================
dnl Android libstdc++, placed here so it can use MOZ_ARCH
dnl computed above.
dnl ========================================================
MOZ_ANDROID_CPU_ARCH
if test "$COMPILE_ENVIRONMENT"; then
MOZ_ANDROID_STLPORT
@@ -813,36 +771,16 @@ if test "$GNU_CXX"; then
_DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(topobjdir)/mozilla-config.h'
_USE_CPP_INCLUDE_FLAG=1
else
_DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
fi
dnl ========================================================
-dnl Checking for 64-bit OS
-dnl ========================================================
-if test "$COMPILE_ENVIRONMENT"; then
-AC_LANG_SAVE
-AC_LANG_C
-AC_MSG_CHECKING(for 64-bit OS)
-AC_TRY_COMPILE([$configure_static_assert_macros],
- [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)],
- result="yes", result="no")
-AC_MSG_RESULT("$result")
-if test "$result" = "yes"; then
- AC_DEFINE(HAVE_64BIT_BUILD)
- HAVE_64BIT_BUILD=1
-fi
-AC_SUBST(HAVE_64BIT_BUILD)
-AC_LANG_RESTORE
-fi # COMPILE_ENVIRONMENT
-
-
-dnl ========================================================
dnl = Use Valgrind
dnl ========================================================
MOZ_ARG_ENABLE_BOOL(valgrind,
[ --enable-valgrind Enable Valgrind integration hooks (default=no)],
MOZ_VALGRIND=1,
MOZ_VALGRIND= )
if test -n "$MOZ_VALGRIND"; then
MOZ_CHECK_HEADER([valgrind/valgrind.h], [],
--- a/toolkit/mozapps/installer/packager.py
+++ b/toolkit/mozapps/installer/packager.py
@@ -77,17 +77,17 @@ class ToolLauncher(object):
if p in env:
env[p] = extra_linker_path + ':' + env[p]
else:
env[p] = extra_linker_path
for e in extra_env:
env[e] = extra_env[e]
# For VC12+, make sure we can find the right bitness of pgort1x0.dll
- if not buildconfig.substs['HAVE_64BIT_BUILD']:
+ if not buildconfig.substs.get('HAVE_64BIT_BUILD'):
for e in ('VS140COMNTOOLS', 'VS120COMNTOOLS'):
if e not in env:
continue
vcdir = os.path.abspath(os.path.join(env[e], '../../VC/bin'))
if os.path.exists(vcdir):
env['PATH'] = '%s;%s' % (vcdir, env['PATH'])
break