diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 01:47:29 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 01:47:29 +0000 |
commit | 0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d (patch) | |
tree | a31f07c9bcca9d56ce61e9a1ffd30ef350d513aa /js/src/old-configure.in | |
parent | Initial commit. (diff) | |
download | firefox-esr-0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d.tar.xz firefox-esr-0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d.zip |
Adding upstream version 115.8.0esr.upstream/115.8.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/old-configure.in')
-rw-r--r-- | js/src/old-configure.in | 1057 |
1 files changed, 1057 insertions, 0 deletions
diff --git a/js/src/old-configure.in b/js/src/old-configure.in new file mode 100644 index 0000000000..cabd72a2b6 --- /dev/null +++ b/js/src/old-configure.in @@ -0,0 +1,1057 @@ +dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*- +dnl vi: set tabstop=4 shiftwidth=4 expandtab syntax=m4: +dnl This Source Code Form is subject to the terms of the Mozilla Public +dnl License, v. 2.0. If a copy of the MPL was not distributed with this +dnl file, You can obtain one at http://mozilla.org/MPL/2.0/. + +dnl Process this file with autoconf to produce a configure script. +dnl ======================================================== +AC_PREREQ(2.13) +AC_INIT(js/src/jsapi.h) +AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf) +AC_CANONICAL_SYSTEM + +dnl ======================================================== +dnl = +dnl = Don't change the following lines. Doing so breaks: +dnl = +dnl = CFLAGS="-foo" ./configure +dnl = +dnl ======================================================== +CFLAGS="${CFLAGS=}" +CPPFLAGS="${CPPFLAGS=}" +CXXFLAGS="${CXXFLAGS=}" +LDFLAGS="${LDFLAGS=}" +HOST_CFLAGS="${HOST_CFLAGS=}" +HOST_CXXFLAGS="${HOST_CXXFLAGS=}" +HOST_LDFLAGS="${HOST_LDFLAGS=}" + +dnl Set the minimum version of toolkit libs used by mozilla +dnl ======================================================== +W32API_VERSION=3.14 + +dnl Set various checks +dnl ======================================================== +MISSING_X= + +dnl Initialize the Pthread test variables early so they can be +dnl overridden by each platform. +dnl ======================================================== +USE_PTHREADS= +_PTHREAD_LDFLAGS="" + +LDFLAGS="$LDFLAGS $LINKER_LDFLAGS" +HOST_LDFLAGS="$HOST_LDFLAGS $HOST_LINKER_LDFLAGS" + +if test -z "$JS_STANDALONE"; then + autoconfmk=autoconf-js.mk +fi +AC_SUBST(autoconfmk) + +jsconfdefs=$_objdir/js/src/js-confdefs.h + +MOZ_ANDROID_NDK + +dnl ======================================================== +dnl Checks for compilers. +dnl ======================================================== + +if test "$COMPILE_ENVIRONMENT"; then + +# Run some logic to figure out exe extensions (mostly for mingw's sake) +AC_EXEEXT + +# Note: +# In Mozilla, we use the names $target, $host and $build incorrectly, but are +# too far gone to back out now. See Bug 475488: +# - When we say $target, we mean $host, that is, the system on which +# Mozilla will be run. +# - When we say $host, we mean $build, that is, the system on which Mozilla +# is built. +# - $target (in its correct usage) is for compilers who generate code for a +# different platform than $host, so it would not be used by Mozilla. +if test "$target" != "$host"; then + MOZ_CROSS_COMPILER +else + AC_PROG_CC + AC_PROG_CXX +fi + +MOZ_TOOL_VARIABLES + +dnl Special win32 checks +dnl ======================================================== + +# Target the Windows 8.1 SDK by default +WINVER=601 + +case "$target" in +*-mingw*) + if test "$GCC" != "yes"; then + # Check to see if we are really running in a msvc environemnt + _WIN32_MSVC=1 + + # Make sure compilers are valid + CXXFLAGS="$CXXFLAGS -TP" + # _CRT_SECURE_NO_WARNINGS disables warnings about using MSVC-specific + # secure CRT functions. + CXXFLAGS="$CXXFLAGS -D_CRT_SECURE_NO_WARNINGS" + AC_LANG_SAVE + AC_LANG_C + AC_TRY_COMPILE([#include <stdio.h>], + [ printf("Hello World\n"); ],, + AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) ) + + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([#include <new.h>], + [ unsigned *test = new unsigned(42); ],, + AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) ) + AC_LANG_RESTORE + + AC_DEFINE(_CRT_SECURE_NO_WARNINGS) + AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS) + + MSVC_C_RUNTIME_DLL=vcruntime140.dll + if test -n "$IS_VS2019_OR_MORE" -a "$CPU_ARCH" != "x86"; then + MSVC_C_RUNTIME_1_DLL=vcruntime140_1.dll + fi + MSVC_CXX_RUNTIME_DLL=msvcp140.dll + + # -Zc:sizedDealloc- disables C++14 global sized deallocation (see bug 1160146) + CXXFLAGS="$CXXFLAGS -Zc:sizedDealloc-" + + AC_SUBST(MSVC_C_RUNTIME_DLL) + AC_SUBST(MSVC_C_RUNTIME_1_DLL) + AC_SUBST(MSVC_CXX_RUNTIME_DLL) + + CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0" + CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0" + else + # Check w32api version + _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'` + _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'` + AC_MSG_CHECKING([for w32api version >= $W32API_VERSION]) + AC_TRY_COMPILE([#include <w32api.h>], + #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \ + (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \ + __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION) + #error "test failed." + #endif + , [ res=yes ], [ res=no ]) + AC_MSG_RESULT([$res]) + if test "$res" != "yes"; then + AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.]) + fi + fi # !GNU_CC + + AC_DEFINE(_USE_MATH_DEFINES) # Otherwise Windows' math.h doesn't #define M_PI. + + AC_DEFINE_UNQUOTED(WINVER,0x$WINVER) + AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER) + # Require OS features provided by IE 8.0 (Win7) + AC_DEFINE_UNQUOTED(_WIN32_IE,0x0800) + + ;; +esac + +if test -n "$_WIN32_MSVC"; then + SKIP_PATH_CHECKS=1 + SKIP_COMPILER_CHECKS=1 + SKIP_LIBRARY_CHECKS=1 +fi + +fi # COMPILE_ENVIRONMENT + +AC_SUBST(GNU_CC) +AC_SUBST(GNU_CXX) + +dnl ======================================================== +dnl set the defaults first +dnl ======================================================== +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 + +MOZ_CONFIG_SANITIZE + +dnl ======================================================== +dnl GNU specific defaults +dnl ======================================================== +if test "$GNU_CC"; then + DSO_LDOPTS='-shared' + if test "$GCC_USE_GNU_LD"; then + # Some tools like ASan use a runtime library that is only + # linked against executables, so we must allow undefined + # symbols for shared objects in some cases. + if test -z "$MOZ_ASAN$MOZ_MSAN$MOZ_UBSAN$MOZ_TSAN$FUZZING_INTERFACES"; then + # Don't allow undefined symbols in libraries + DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs" + fi + fi + + if test "$OS_ARCH" != "WINNT"; then + DSO_PIC_CFLAGS='-fPIC' + ASFLAGS="$ASFLAGS -fPIC" + fi + + AC_MSG_CHECKING([for --noexecstack option to as]) + _SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -Wa,--noexecstack" + AC_TRY_COMPILE(,,AC_MSG_RESULT([yes]) + [ASFLAGS="$ASFLAGS -Wa,--noexecstack"], + AC_MSG_RESULT([no])) + CFLAGS=$_SAVE_CFLAGS + AC_MSG_CHECKING([for -z noexecstack option to ld]) + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-z,noexecstack" + AC_TRY_LINK(,,AC_MSG_RESULT([yes]), + AC_MSG_RESULT([no]) + LDFLAGS=$_SAVE_LDFLAGS) + + AC_MSG_CHECKING([for -z text option to ld]) + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-z,text" + AC_TRY_LINK(,,AC_MSG_RESULT([yes]), + AC_MSG_RESULT([no]) + LDFLAGS=$_SAVE_LDFLAGS) + + AC_MSG_CHECKING([for -z relro option to ld]) + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-z,relro" + AC_TRY_LINK(,,AC_MSG_RESULT([yes]), + AC_MSG_RESULT([no]) + LDFLAGS=$_SAVE_LDFLAGS) + + AC_MSG_CHECKING([for -z nocopyreloc option to ld]) + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-z,nocopyreloc" + AC_TRY_LINK(,,AC_MSG_RESULT([yes]), + AC_MSG_RESULT([no]) + LDFLAGS=$_SAVE_LDFLAGS) + + AC_MSG_CHECKING([for -Bsymbolic-functions option to ld]) + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions" + AC_TRY_LINK(,,AC_MSG_RESULT([yes]), + AC_MSG_RESULT([no]) + LDFLAGS=$_SAVE_LDFLAGS) + + # While sha1 is deterministic, it is slower. + if test -z "$DEVELOPER_OPTIONS"; then + build_id=sha1 + else + build_id=uuid + fi + AC_MSG_CHECKING([for --build-id=$build_id option to ld]) + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,--build-id=$build_id" + AC_TRY_LINK(,,AC_MSG_RESULT([yes]), + AC_MSG_RESULT([no]) + LDFLAGS=$_SAVE_LDFLAGS) + + _DEFINES_CFLAGS="-include $jsconfdefs -DMOZILLA_CLIENT" +fi + +if test "$GNU_CXX"; then + _DEFINES_CXXFLAGS="-DMOZILLA_CLIENT -include $jsconfdefs" +fi + +dnl ======================================================== +dnl System overrides of the defaults for host +dnl ======================================================== +case "$host" in +*mingw*) + if test -n "$_WIN32_MSVC"; then + HOST_CFLAGS="$HOST_CFLAGS" + else + HOST_CFLAGS="$HOST_CFLAGS -mwindows" + fi + HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN -DWIN32 -D_WIN32 -D_CRT_SECURE_NO_WARNINGS" + HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}" + HOST_BIN_SUFFIX=.exe + + case "${host_cpu}" in + i*86) + if test -n "$_WIN32_MSVC"; then + HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86" + fi + ;; + x86_64) + if test -n "$_WIN32_MSVC"; then + HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64" + fi + HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_" + ;; + esac + ;; + +*-darwin*) + HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX" + HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}" + ;; + +*-linux*|*-kfreebsd*-gnu|*-gnu*) + HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX" + HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}" + ;; + +*) + HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX" + HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}" + ;; +esac + +dnl ======================================================== +dnl System overrides of the defaults for target +dnl ======================================================== + +case "$target" in +*-darwin*) + MOZ_OPTIMIZE_FLAGS="-O3" + DSO_LDOPTS='' + + dnl DTrace and -dead_strip don't interact well. See bug 403132. + dnl =================================================================== + if test "x$enable_dtrace" = "xyes"; then + echo "Skipping -dead_strip because DTrace is enabled. See bug 403132." + else + dnl check for the presence of the -dead_strip linker flag + AC_MSG_CHECKING([for -dead_strip option to ld]) + _SAVE_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-dead_strip" + AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=) + if test -n "$_HAVE_DEAD_STRIP" ; then + AC_MSG_RESULT([yes]) + MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip" + else + AC_MSG_RESULT([no]) + fi + + LDFLAGS=$_SAVE_LDFLAGS + fi + MOZ_FIX_LINK_PATHS= + ;; + +*-android*|*-linuxandroid*) + MOZ_OPTIMIZE_FLAGS="-O3" + if test -z "$CLANG_CC"; then + MOZ_OPTIMIZE_FLAGS="-freorder-blocks -fno-reorder-functions $MOZ_OPTIMIZE_FLAGS" + fi + ;; + +*-*linux*) + if test "$GNU_CC" -o "$GNU_CXX"; then + MOZ_PGO_OPTIMIZE_FLAGS="-O3" + MOZ_OPTIMIZE_FLAGS="-O3" + if test -z "$CLANG_CC"; then + MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS" + fi + fi + + case "${target_cpu}" in + alpha*) + CFLAGS="$CFLAGS -mieee" + CXXFLAGS="$CXXFLAGS -mieee" + ;; + esac + ;; + +*-mingw*) + DSO_PIC_CFLAGS= + if test -n "$GNU_CC" -o -n "$CLANG_CC"; then + # $GNU_CC will match gcc and clang; while $CLANG_CC will match only clang + if test -z "$CLANG_CC"; then + AC_MSG_ERROR(Firefox cannot be built with mingw-gcc and requires a mingw-clang toolchain to work) + fi + + DSO_LDOPTS='-shared' + MOZ_FIX_LINK_PATHS= + + # Silence problematic clang warnings + CXXFLAGS="$CXXFLAGS -Wno-incompatible-ms-struct" + LDFLAGS="$LDFLAGS -Wl,--no-insert-timestamp" + + MOZ_OPTIMIZE_FLAGS="-O2" + + WIN32_CONSOLE_EXE_LDFLAGS=-mconsole + WIN32_GUI_EXE_LDFLAGS=-mwindows + else + TARGET_COMPILER_ABI=msvc + # aarch64 doesn't support subsystems below 6.02 + if test "$CPU_ARCH" = "aarch64"; then + WIN32_SUBSYSTEM_VERSION=6.02 + else + WIN32_SUBSYSTEM_VERSION=6.01 + fi + WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION + WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION + DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION + _DEFINES_CFLAGS="-FI $jsconfdefs -DMOZILLA_CLIENT" + _DEFINES_CXXFLAGS="-FI $jsconfdefs -DMOZILLA_CLIENT" + CFLAGS="$CFLAGS -Gy -Zc:inline" + CXXFLAGS="$CXXFLAGS -Gy -Zc:inline" + if test "$CPU_ARCH" = "x86";then + dnl VS2012+ defaults to -arch:SSE2. We want to target nothing + dnl more recent, so set that explicitly here unless another + dnl target arch has already been set. + changequote(,) + if test -z `echo $CFLAGS | grep -i [-/]arch:` ; then + CFLAGS="$CFLAGS -arch:SSE2" + fi + if test -z `echo $CXXFLAGS | grep -i [-/]arch:` ; then + CXXFLAGS="$CXXFLAGS -arch:SSE2" + fi + changequote([,]) + fi + dnl VS2013+ supports -Gw for better linker optimizations. + dnl http://blogs.msdn.com/b/vcblog/archive/2013/09/11/introducing-gw-compiler-switch.aspx + dnl Disabled on ASan because it causes false-positive ODR violations. + if test -z "$MOZ_ASAN"; then + CFLAGS="$CFLAGS -Gw" + CXXFLAGS="$CXXFLAGS -Gw" + else + # String tail merging doesn't play nice with ASan's ODR checker. + LDFLAGS="$LDFLAGS -opt:nolldtailmerge" + fi + MOZ_DEBUG_LDFLAGS='-DEBUG' + if test "$HOST_OS_ARCH" != "WINNT"; then + # %_PDB% is a special signal to emit only the PDB basename. This + # avoids problems in Windows tools that don't like forward-slashes. + MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -PDBALTPATH:%_PDB%" + fi + MOZ_OPTIMIZE_FLAGS="-O2" + MOZ_FIX_LINK_PATHS= + LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE" + fi + AC_DEFINE(HAVE__MSIZE) + AC_DEFINE(WIN32_LEAN_AND_MEAN) + dnl See http://support.microsoft.com/kb/143208 to use STL + AC_DEFINE(NOMINMAX) + BIN_SUFFIX='.exe' + + case "$host_os" in + cygwin*|msvc*|mks*) + AC_MSG_ERROR([Using a Cygwin build environment is unsupported. Configure cannot check for presence of necessary headers. Please upgrade to MozillaBuild; see https://developer.mozilla.org/en/Windows_Build_Prerequisites.]) + ;; + esac + + case "$target" in + i*86-*) + if test -n "$GNU_CC"; then + CFLAGS="$CFLAGS -mstackrealign" + CXXFLAGS="$CXXFLAGS -mstackrealign" + LDFLAGS="$LDFLAGS -Wl,--large-address-aware" + else + DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86" + LDFLAGS="$LDFLAGS -SAFESEH" + fi + + AC_DEFINE(_X86_) + ;; + x86_64-*) + if test -n "$_WIN32_MSVC"; then + DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64" + fi + AC_DEFINE(_AMD64_) + ;; + aarch64-*) + if test -n "$_WIN32_MSVC"; then + DSO_LDOPTS="$DSO_LDOPTS -MACHINE:ARM64" + fi + AC_DEFINE(_ARM64_) + ;; + *) + AC_DEFINE(_CPU_ARCH_NOT_DEFINED) + ;; + esac + ;; + +*-netbsd*) + CFLAGS="$CFLAGS -Dunix" + CXXFLAGS="$CXXFLAGS -Dunix" + if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then + DSO_PIC_CFLAGS='-fPIC -DPIC' + DSO_LDOPTS='-shared' + MOZ_PROGRAM_LDFLAGS="$MOZ_PROGRAM_LDFLAGS -Wl,--export-dynamic" + else + DSO_PIC_CFLAGS='-fPIC -DPIC' + DSO_LDOPTS='-shared' + fi + # This will fail on a.out systems prior to 1.5.1_ALPHA. + if test "$LIBRUNPATH"; then + DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS" + fi + ;; + +*-openbsd*) + DSO_PIC_CFLAGS='-fPIC' + DSO_LDOPTS='-shared -fPIC' + if test "$LIBRUNPATH"; then + DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS" + fi + ;; + +*-solaris*) + MOZ_FIX_LINK_PATHS="-L${DIST}/bin" + ;; + +*-wasi*) + CXXFLAGS="$CXXFLAGS -mthread-model single" + MOZ_FIX_LINK_PATHS= + ;; + +esac + +CFLAGS="$CFLAGS $DSO_PIC_CFLAGS" +CXXFLAGS="$CXXFLAGS $DSO_PIC_CFLAGS" + +if test -z "$MOZ_OPTIMIZE_FLAGS"; then + MOZ_OPTIMIZE_FLAGS="-O" +fi + +if test -z "$COMPILE_ENVIRONMENT"; then + SKIP_COMPILER_CHECKS=1 + SKIP_LIBRARY_CHECKS=1 +fi + +if test -n "$COMPILE_ENVIRONMENT"; then + MOZ_COMPILER_OPTS +fi + +if test -z "$SKIP_COMPILER_CHECKS"; then +dnl Checks for typedefs, structures, and compiler characteristics. +dnl ======================================================== +AC_C_CONST +AC_TYPE_MODE_T +AC_TYPE_OFF_T +AC_TYPE_PID_T +AC_TYPE_SIZE_T +AC_LANG_CPLUSPLUS +AC_LANG_C +AC_MSG_CHECKING(for ssize_t) +AC_CACHE_VAL(ac_cv_type_ssize_t, + [AC_TRY_COMPILE([#include <stdio.h> + #include <sys/types.h>], + [ssize_t foo = 0;], + [ac_cv_type_ssize_t=true], + [ac_cv_type_ssize_t=false])]) +if test "$ac_cv_type_ssize_t" = true ; then + AC_DEFINE(HAVE_SSIZE_T) + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +AC_LANG_CPLUSPLUS + +MOZ_CXX11 + +dnl Checks for header files. +dnl ======================================================== +AC_HEADER_DIRENT + +dnl Checks for libraries. +dnl ======================================================== +AC_CHECK_LIB(c_r, gethostbyname_r) + +dnl We don't want to link with libdl even if it's present on OS X, since +dnl it's not used and not part of the default installation. OS/2 has dlfcn +dnl in libc. +dnl We don't want to link against libm or libpthread on Darwin since +dnl they both are just symlinks to libSystem and explicitly linking +dnl against libSystem causes issues when debugging (see bug 299601). +case $target in +*-darwin*) + ;; +*) + AC_SEARCH_LIBS(dlopen, dl, + MOZ_CHECK_HEADER(dlfcn.h, + AC_DEFINE(HAVE_DLOPEN))) + ;; +esac + +_SAVE_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -D_GNU_SOURCE" +AC_CHECK_FUNCS(dladdr) +CFLAGS="$_SAVE_CFLAGS" + +if test ! "$GNU_CXX"; then + AC_CHECK_LIB(C, demangle) +fi + +AC_CHECK_LIB(socket, socket) + +dnl ======================================================== +dnl = pthread support +dnl = Start by checking whether the system support pthreads +dnl ======================================================== +case "$target_os" in +darwin*) + USE_PTHREADS=1 + ;; +*) + AC_CHECK_LIB(pthreads, pthread_create, + USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads", + AC_CHECK_LIB(pthread, pthread_create, + USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread", + AC_CHECK_LIB(c_r, pthread_create, + USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r", + AC_CHECK_LIB(c, pthread_create, + USE_PTHREADS=1 + ) + ) + ) + ) + ;; +esac + +dnl ======================================================== +dnl Do the platform specific pthread hackery +dnl ======================================================== +if test "$USE_PTHREADS"x != x +then + dnl + dnl See if -pthread is supported. + dnl + rm -f conftest* + ac_cv_have_dash_pthread=no + AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread) + echo 'int main() { return 0; }' | cat > conftest.c + ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1 + if test $? -eq 0; then + if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then + ac_cv_have_dash_pthread=yes + case "$target_os" in + freebsd*) +# Freebsd doesn't use -pthread for compiles, it uses them for linking + ;; + *) + CFLAGS="$CFLAGS -pthread" + CXXFLAGS="$CXXFLAGS -pthread" + ;; + esac + fi + fi + rm -f conftest* + AC_MSG_RESULT($ac_cv_have_dash_pthread) + + dnl + dnl See if -pthreads is supported. + dnl + ac_cv_have_dash_pthreads=no + if test "$ac_cv_have_dash_pthread" = "no"; then + AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads) + echo 'int main() { return 0; }' | cat > conftest.c + ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1 + if test $? -eq 0; then + if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then + ac_cv_have_dash_pthreads=yes + CFLAGS="$CFLAGS -pthreads" + CXXFLAGS="$CXXFLAGS -pthreads" + fi + fi + rm -f conftest* + AC_MSG_RESULT($ac_cv_have_dash_pthreads) + fi + + case "$target" in + *-*-freebsd*) + AC_DEFINE(_REENTRANT) + AC_DEFINE(_THREAD_SAFE) + dnl -pthread links in -lpthread, so don't specify it explicitly. + if test "$ac_cv_have_dash_pthread" = "yes"; then + _PTHREAD_LDFLAGS="-pthread" + fi + ;; + + *-*-openbsd*|*-*-bsdi*) + AC_DEFINE(_REENTRANT) + AC_DEFINE(_THREAD_SAFE) + dnl -pthread links in -lc_r, so don't specify it explicitly. + if test "$ac_cv_have_dash_pthread" = "yes"; then + _PTHREAD_LDFLAGS="-pthread" + fi + ;; + + *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*) + AC_DEFINE(_REENTRANT) + ;; + + esac + LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}" +fi + + +dnl Checks for library functions. +dnl ======================================================== + +dnl check for clock_gettime(), the CLOCK_MONOTONIC clock +AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC), + ac_cv_clock_monotonic, + [for libs in "" -lrt; do + _SAVE_LIBS="$LIBS" + LIBS="$LIBS $libs" +dnl clock_gettime is available on OSX since 10.12, so depending on MACOSX_DEPLOYMENT_TARGET, +dnl we should or not be able to use it. To detect if we can, we need to make the +dnl availability attribute strict, so that compilation fails when the target is < 10.12. + AC_TRY_LINK([#define availability(os, ...) availability(os, strict, __VA_ARGS) + #include <time.h>], + [ struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); ], + ac_cv_clock_monotonic=$libs + LIBS="$_SAVE_LIBS" + break, + ac_cv_clock_monotonic=no) + LIBS="$_SAVE_LIBS" + done]) +if test "$ac_cv_clock_monotonic" != "no"; then + HAVE_CLOCK_MONOTONIC=1 + REALTIME_LIBS=$ac_cv_clock_monotonic + AC_DEFINE(HAVE_CLOCK_MONOTONIC) + AC_SUBST(HAVE_CLOCK_MONOTONIC) + AC_SUBST_LIST(REALTIME_LIBS) +fi + +dnl Checks for math functions. +dnl ======================================================== +AC_CHECK_LIB(m, sin) + +AC_CACHE_CHECK( + [for res_ninit()], + ac_cv_func_res_ninit, + [if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then + dnl no need for res_ninit() on NetBSD and OpenBSD + ac_cv_func_res_ninit=no + else + AC_TRY_LINK([ + #ifdef linux + #define _BSD_SOURCE 1 + #endif + #include <sys/types.h> + #include <netinet/in.h> + #include <arpa/nameser.h> + #include <resolv.h> + ], + [int foo = res_ninit(&_res);], + [ac_cv_func_res_ninit=yes], + [ac_cv_func_res_ninit=no]) + fi + ]) + +if test "$ac_cv_func_res_ninit" = "yes"; then + AC_DEFINE(HAVE_RES_NINIT) +dnl must add the link line we do something as foolish as this... dougt +dnl else +dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT), +dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT))) +fi + +AM_LANGINFO_CODESET + +AC_LANG_C + +dnl =================================================================== +dnl ======================================================== +dnl Put your C++ language/feature checks below +dnl ======================================================== +AC_LANG_CPLUSPLUS + +ARM_ABI_PREFIX= +if test "$GNU_CC"; then + if test "$CPU_ARCH" = "arm" ; then + AC_CACHE_CHECK(for ARM EABI, + ac_cv_gcc_arm_eabi, + [AC_TRY_COMPILE([], + [ +#if defined(__ARM_EABI__) + return 0; +#else +#error Not ARM EABI. +#endif + ], + ac_cv_gcc_arm_eabi="yes", + ac_cv_gcc_arm_eabi="no")]) + if test "$ac_cv_gcc_arm_eabi" = "yes"; then + HAVE_ARM_EABI=1 + ARM_ABI_PREFIX=eabi- + else + ARM_ABI_PREFIX=oabi- + fi + fi + + TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}" +fi + +# try harder, when checking for __thread support, see bug 521750 comment #33 and below +# We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is +# enabled, the linker in xcode 4.1 will crash. Without this it would crash when +# linking XUL. +_SAVE_LDFLAGS=$LDFLAGS +LDFLAGS="$LDFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS" +AC_CACHE_CHECK(for __thread keyword for TLS variables, + ac_cv_thread_keyword, + [AC_TRY_LINK([__thread bool tlsIsMainThread = false;], + [return tlsIsMainThread;], + ac_cv_thread_keyword=yes, + ac_cv_thread_keyword=no)]) +LDFLAGS=$_SAVE_LDFLAGS +if test "$ac_cv_thread_keyword" = yes; then + # mips builds fail with TLS variables because of a binutils bug. + # See bug 528687 + case "${target}" in + mips*-*) + : + ;; + *-android*|*-linuxandroid*) + : + ;; + *) + AC_DEFINE(HAVE_THREAD_TLS_KEYWORD) + ;; + esac +fi + +dnl End of C++ language/feature checks +AC_LANG_C + +fi # ! SKIP_COMPILER_CHECKS + +TARGET_XPCOM_ABI= +if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then + TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}" +fi + +dnl We can't run TRY_COMPILE tests on Windows, so hard-code some +dnl features that Windows actually does support. + +if test -n "$SKIP_COMPILER_CHECKS"; then + dnl Windows has malloc.h + AC_DEFINE(MALLOC_H, [<malloc.h>]) + AC_DEFINE(HAVE_FORCEINLINE) +fi # SKIP_COMPILER_CHECKS + +dnl Mozilla specific options +dnl ======================================================== +dnl The macros used for command line options +dnl are defined in build/autoconf/altoptions.m4. + +dnl ======================================================== +dnl = Enable code optimization. ON by default. +dnl ======================================================== + +# 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 + +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" + AC_TRY_COMPILE([#include <stdio.h>], + [printf("Hello World\n");], + _results=yes, + _results=no) + AC_MSG_RESULT([$_results]) + if test "$_results" = "no"; then + AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS]) + fi + CFLAGS=$_SAVE_CFLAGS + if test -n "$MOZ_LTO" -a -n "$CLANG_CC"; then + # When using llvm-based LTO, non numeric optimization levels are + # not supported by the linker, so force the linker to use -O2 ( + # which doesn't influence the level compilation units are actually + # compiled at). + case " $MOZ_OPTIMIZE_FLAGS " in + *\ -Os\ *|*\ -Oz\ *) + MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -O2" + ;; + esac + fi +fi +fi # COMPILE_ENVIRONMENT + +AC_SUBST_LIST(MOZ_OPTIMIZE_FLAGS) +AC_SUBST_LIST(MOZ_OPTIMIZE_LDFLAGS) +AC_SUBST_LIST(MOZ_PGO_OPTIMIZE_FLAGS) + +dnl ======================================================== +dnl = Enable jemalloc +dnl ======================================================== + +if test "$JS_STANDALONE" -a -z "$MOZ_MEMORY"; then + MOZ_GLUE_IN_PROGRAM= +else + case "${OS_TARGET}" in + Android|WINNT|Darwin) + MOZ_GLUE_IN_PROGRAM= + ;; + *) + dnl On !Android !Windows !OSX, we only want to link executables against mozglue + MOZ_GLUE_IN_PROGRAM=1 + AC_DEFINE(MOZ_GLUE_IN_PROGRAM) + ;; + esac +fi + +if test "$MOZ_MEMORY"; then + dnl The generic feature tests that determine how to compute ncpus are long and + dnl complicated. Therefore, simply define special cpp variables for the + dnl platforms we have special knowledge of. + case "${target}" in + *-mingw*) + export MOZ_NO_DEBUG_RTL=1 + ;; + esac +fi +AC_SUBST(MOZ_GLUE_IN_PROGRAM) + +dnl ======================================================== +dnl instruments +dnl ======================================================== +if test -n "$MOZ_INSTRUMENTS"; then + LIBS="$LIBS -framework CoreFoundation" +fi + +dnl ======================================================== +dnl = Enable using the clang plugin to build +dnl ======================================================== + +if test -n "$COMPILE_ENVIRONMENT"; then +MOZ_CONFIG_CLANG_PLUGIN +fi # COMPILE_ENVIRONMENT + +if test -z "$SKIP_COMPILER_CHECKS"; then + +dnl ======================================================== +dnl Check for gcc -pipe support +dnl ======================================================== +AC_MSG_CHECKING([for -pipe support]) +if test -n "$GNU_CC" -a -n "$GNU_CXX"; then + dnl Any gcc that supports firefox supports -pipe. + CFLAGS="$CFLAGS -pipe" + CXXFLAGS="$CXXFLAGS -pipe" + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi + +fi # ! SKIP_COMPILER_CHECKS + +MOZ_EXPAND_LIBS + +dnl ======================================================== +dnl = +dnl = Maintainer debug option (no --enable equivalent) +dnl = +dnl ======================================================== + +AC_SUBST_LIST(ASFLAGS) +AC_SUBST_LIST(MOZ_DEBUG_LDFLAGS) + +AC_SUBST_LIST(MOZ_FIX_LINK_PATHS) + +AC_SUBST(MOZ_POST_PROGRAM_COMMAND) + +AC_SUBST(MOZ_APP_DISPLAYNAME) + +AC_SUBST(MOZ_PKG_SPECIAL) + +dnl Echo the CFLAGS to remove extra whitespace. +CFLAGS=`echo \ + $_COMPILATION_CFLAGS \ + $CFLAGS` + +CXXFLAGS=`echo \ + $_COMPILATION_CXXFLAGS \ + $CXXFLAGS` + +COMPILE_CFLAGS=`echo \ + $_DEFINES_CFLAGS \ + $COMPILE_CFLAGS` + +COMPILE_CXXFLAGS=`echo \ + $_DEFINES_CXXFLAGS \ + $COMPILE_CXXFLAGS` + +HOST_CFLAGS=`echo \ + $_COMPILATION_HOST_CFLAGS \ + $HOST_CFLAGS` + +HOST_CXXFLAGS=`echo \ + $_COMPILATION_HOST_CXXFLAGS \ + $HOST_CXXFLAGS` + +OS_CFLAGS="$CFLAGS" +OS_CXXFLAGS="$CXXFLAGS" +OS_CPPFLAGS="$CPPFLAGS" +OS_COMPILE_CFLAGS="$COMPILE_CFLAGS" +OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS" +OS_LDFLAGS="$LDFLAGS" +OS_LIBS="$LIBS" +AC_SUBST_LIST(OS_CFLAGS) +AC_SUBST_LIST(OS_CXXFLAGS) +AC_SUBST_LIST(OS_CPPFLAGS) +AC_SUBST_LIST(OS_COMPILE_CFLAGS) +AC_SUBST_LIST(OS_COMPILE_CXXFLAGS) +AC_SUBST_LIST(OS_LDFLAGS) +AC_SUBST(OS_LIBS) + +AC_SUBST(HOST_CC) +AC_SUBST(HOST_CXX) +AC_SUBST_LIST(HOST_CFLAGS) +AC_SUBST_LIST(HOST_CPPFLAGS) +AC_SUBST_LIST(HOST_CXXFLAGS) +AC_SUBST(HOST_LDFLAGS) +AC_SUBST_LIST(HOST_OPTIMIZE_FLAGS) +AC_SUBST(HOST_BIN_SUFFIX) + +AC_SUBST(TARGET_XPCOM_ABI) + +AC_SUBST(DSO_LDOPTS) +AC_SUBST(BIN_SUFFIX) +AC_SUBST(USE_N32) +AC_SUBST(WIN32_CONSOLE_EXE_LDFLAGS) +AC_SUBST(WIN32_GUI_EXE_LDFLAGS) + +dnl Set various defines and substitutions +dnl ======================================================== + +AC_SUBST(MOZ_DEV_EDITION) +if test -n "$MOZ_DEV_EDITION"; then + AC_DEFINE(MOZ_DEV_EDITION) +fi + +dnl ======================================================== +dnl JavaScript shell +dnl ======================================================== + +MOZ_CHECK_ALLOCATOR + +if test -n "$JS_STANDALONE"; then +JS_LIBRARY_NAME="mozjs-$MOZILLA_SYMBOLVERSION" +else +JS_LIBRARY_NAME="mozjs" +fi +JS_CONFIG_LIBS="$NSPR_LIBS $LIBS" +if test -n "$GNU_CC"; then +JS_CONFIG_MOZ_JS_LIBS='-L${libdir} -l${JS_LIBRARY_NAME}' +else +JS_CONFIG_MOZ_JS_LIBS='${libdir}/${JS_LIBRARY_NAME}.lib' +fi +AC_SUBST(JS_LIBRARY_NAME) +AC_SUBST(JS_CONFIG_MOZ_JS_LIBS) +AC_SUBST(JS_CONFIG_LIBS) + +# Avoid using obsolete NSPR features +AC_DEFINE(NO_NSPR_10_SUPPORT) + +dnl Spit out some output +dnl ======================================================== +MOZ_CREATE_CONFIG_STATUS() + +rm -fr confdefs* $ac_clean_files |