1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*-
2 dnl vi: set tabstop=4 shiftwidth=4 expandtab syntax=m4:
3 dnl This Source Code Form is subject to the terms of the Mozilla Public
4 dnl License, v. 2.0. If a copy of the MPL was not distributed with this
5 dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 dnl Process this file with autoconf to produce a configure script.
8 dnl ========================================================
10 AC_INIT(config/config.mk)
11 AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
14 dnl ========================================================
16 dnl = Don't change the following lines. Doing so breaks:
18 dnl = CFLAGS="-foo" ./configure
20 dnl ========================================================
22 CPPFLAGS="${CPPFLAGS=}"
23 CXXFLAGS="${CXXFLAGS=}"
25 HOST_CFLAGS="${HOST_CFLAGS=}"
26 HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
27 HOST_LDFLAGS="${HOST_LDFLAGS=}"
29 dnl ========================================================
30 dnl = Preserve certain environment flags passed to configure
31 dnl = We want sub projects to receive the same flags
32 dnl = untainted by this configure script
33 dnl ========================================================
36 _SUBDIR_CFLAGS="$CFLAGS"
37 _SUBDIR_CPPFLAGS="$CPPFLAGS"
38 _SUBDIR_CXXFLAGS="$CXXFLAGS"
39 _SUBDIR_LDFLAGS="$LDFLAGS"
40 _SUBDIR_HOST_CC="$HOST_CC"
41 _SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
42 _SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
43 _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
44 _SUBDIR_CONFIG_ARGS="$ac_configure_args"
46 dnl Set the version number of the libs included with mozilla
47 dnl ========================================================
50 dnl Set the minimum version of toolkit libs used by mozilla
51 dnl ========================================================
53 GLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_42
54 GLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_42
57 GDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_14
61 dnl Set various checks
62 dnl ========================================================
65 dnl Initialize the Pthread test variables early so they can be
66 dnl overridden by each platform.
67 dnl ========================================================
71 LDFLAGS="$LDFLAGS $LINKER_LDFLAGS"
73 if test "$COMPILE_ENVIRONMENT"; then
75 fi # COMPILE_ENVIRONMENT
78 *-android*|*-linuxandroid*)
81 AC_PATH_PROG(OBJCOPY,objcopy)
87 dnl ========================================================
88 dnl Checks for compilers.
89 dnl ========================================================
91 if test "$COMPILE_ENVIRONMENT"; then
93 # Run some logic to figure out exe extensions (mostly for mingw's sake)
96 if test "$target" != "$host"; then
102 # Work around the conftest.exe access problem on Windows
106 MOZ_PATH_PROGS(AS, $AS as, $CC)
107 AC_CHECK_PROGS(STRIP, strip, :)
108 AC_CHECK_PROGS(OTOOL, otool, :)
113 dnl ========================================================
114 dnl Special win32 checks
115 dnl ========================================================
121 if test "$GCC" != "yes"; then
122 # Check to see if we are really running in a msvc environemnt
125 # Make sure compilers are valid
126 CXXFLAGS="$CXXFLAGS -TP"
129 AC_TRY_COMPILE([#include <stdio.h>],
130 [ printf("Hello World\n"); ],,
131 AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
134 AC_TRY_COMPILE([#include <new.h>],
135 [ unsigned *test = new unsigned(42); ],,
136 AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
140 _MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
143 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
144 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
145 AC_DEFINE(_USE_MATH_DEFINES) # Otherwise MSVC's math.h doesn't #define M_PI.
148 MSVC_C_RUNTIME_DLL=vcruntime140.dll
149 MSVC_CXX_RUNTIME_DLL=msvcp140.dll
151 # -Zc:sizedDealloc- disables C++14 global sized deallocation (see bug 1160146)
152 CXXFLAGS="$CXXFLAGS -Zc:sizedDealloc-"
154 if test -n "$WIN_UCRT_REDIST_DIR"; then
155 if test ! -d "$WIN_UCRT_REDIST_DIR"; then
156 AC_MSG_ERROR([Invalid Windows UCRT Redist directory: ${WIN_UCRT_REDIST_DIR}])
158 WIN_UCRT_REDIST_DIR=`cd "$WIN_UCRT_REDIST_DIR" && (pwd -W 2>/dev/null || pwd)`
161 AC_SUBST(MSVC_C_RUNTIME_DLL)
162 AC_SUBST(MSVC_CXX_RUNTIME_DLL)
164 AC_DEFINE(HAVE_SEH_EXCEPTIONS)
166 if test -n "$WIN32_REDIST_DIR"; then
167 if test ! -d "$WIN32_REDIST_DIR"; then
168 AC_MSG_ERROR([Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}])
170 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && (pwd -W 2>/dev/null || pwd)`
173 # Check linker version, except in lld builds
178 _LD_FULL_VERSION=`"${LINKER}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
179 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
180 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
181 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
188 unset _MSVC_VER_FILTER
191 STL_FLAGS="-I${DIST}/stl_wrappers"
193 # Check w32api version
194 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
195 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
196 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
197 AC_TRY_COMPILE([#include <w32api.h>],
198 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
199 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
200 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
201 #error "test failed."
203 , [ res=yes ], [ res=no ])
204 AC_MSG_RESULT([$res])
205 if test "$res" != "yes"; then
206 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
208 # strsafe.h on mingw uses macros for function deprecation that pollutes namespace
209 # causing problems with local implementations with the same name.
210 AC_DEFINE(STRSAFE_NO_DEPRECATE)
213 CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0"
214 CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0"
216 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
217 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
218 # Require OS features provided by IE 8.0 (Win7)
219 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0800)
224 if test -n "$_WIN32_MSVC"; then
226 SKIP_COMPILER_CHECKS=1
227 SKIP_LIBRARY_CHECKS=1
229 # Since we're skipping compiler and library checks, hard-code
232 AC_DEFINE(HAVE_ISATTY)
235 fi # COMPILE_ENVIRONMENT
240 AC_SUBST_LIST(STL_FLAGS)
241 AC_SUBST(WRAP_STL_INCLUDES)
243 dnl ========================================================
244 dnl Checks for programs.
245 dnl ========================================================
246 if test "$COMPILE_ENVIRONMENT"; then
252 fi # COMPILE_ENVIRONMENT
254 dnl ========================================================
255 dnl set the defaults first
256 dnl ========================================================
257 MOZ_USER_DIR=".mozilla"
259 MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib"
263 dnl Configure platform-specific CPU architecture compiler options.
264 dnl ==============================================================
265 if test "$COMPILE_ENVIRONMENT"; then
267 fi # COMPILE_ENVIRONMENT
269 dnl ========================================================
270 dnl Android libstdc++
271 dnl ========================================================
274 if test "$COMPILE_ENVIRONMENT"; then
276 fi # COMPILE_ENVIRONMENT
278 dnl ========================================================
279 dnl Suppress Clang Argument Warnings
280 dnl ========================================================
281 WARNINGS_CFLAGS="$_WARNINGS_CFLAGS"
282 if test -n "${CLANG_CC}${CLANG_CL}"; then
283 WARNINGS_CFLAGS="-Qunused-arguments $WARNINGS_CFLAGS"
284 CPPFLAGS="-Qunused-arguments ${CPPFLAGS}"
286 if test -n "${CLANG_CXX}${CLANG_CL}"; then
287 _WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}"
290 if test -n "$COMPILE_ENVIRONMENT"; then
294 dnl ========================================================
295 dnl GNU specific defaults
296 dnl ========================================================
297 if test "$GNU_CC"; then
301 SSSE3_FLAGS="-mssse3"
302 CFLAGS="$CFLAGS -fno-strict-aliasing"
304 if test "$OS_ARCH" != "WINNT" -o -z "$CLANG_CC"; then
305 DSO_PIC_CFLAGS='-fPIC'
306 ASFLAGS="$ASFLAGS -fPIC"
309 AC_MSG_CHECKING([for --noexecstack option to as])
311 CFLAGS="$CFLAGS -Wa,--noexecstack"
312 AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
313 [ASFLAGS="$ASFLAGS -Wa,--noexecstack"],
316 AC_MSG_CHECKING([for -z noexecstack option to ld])
317 _SAVE_LDFLAGS=$LDFLAGS
318 LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
319 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
321 LDFLAGS=$_SAVE_LDFLAGS)
323 AC_MSG_CHECKING([for -z text option to ld])
324 _SAVE_LDFLAGS=$LDFLAGS
325 LDFLAGS="$LDFLAGS -Wl,-z,text"
326 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
328 LDFLAGS=$_SAVE_LDFLAGS)
330 AC_MSG_CHECKING([for -z relro option to ld])
331 _SAVE_LDFLAGS=$LDFLAGS
332 LDFLAGS="$LDFLAGS -Wl,-z,relro"
333 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
335 LDFLAGS=$_SAVE_LDFLAGS)
337 AC_MSG_CHECKING([for -z nocopyreloc option to ld])
338 _SAVE_LDFLAGS=$LDFLAGS
339 LDFLAGS="$LDFLAGS -Wl,-z,nocopyreloc"
340 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
342 LDFLAGS=$_SAVE_LDFLAGS)
344 AC_MSG_CHECKING([for -Bsymbolic-functions option to ld])
345 _SAVE_LDFLAGS=$LDFLAGS
346 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
347 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
349 LDFLAGS=$_SAVE_LDFLAGS)
351 AC_MSG_CHECKING([for --build-id=sha1 option to ld])
352 _SAVE_LDFLAGS=$LDFLAGS
353 LDFLAGS="$LDFLAGS -Wl,--build-id=sha1"
354 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
356 LDFLAGS=$_SAVE_LDFLAGS)
358 AC_MSG_CHECKING([for --ignore-unresolved-symbol option to ld])
359 HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=
360 _SAVE_LDFLAGS=$LDFLAGS
361 LDFLAGS="$LDFLAGS -Wl,--ignore-unresolved-symbol,environ"
362 AC_TRY_LINK(,,AC_MSG_RESULT([yes])
363 [HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=1],
365 LDFLAGS=$_SAVE_LDFLAGS
367 # Check for -mssse3 on $CC
368 AC_MSG_CHECKING([if toolchain supports -mssse3 option])
369 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=
371 CFLAGS="$CFLAGS -mssse3"
372 AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes])
373 [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1],
377 # Check for -msse4.1 on $CC
378 AC_MSG_CHECKING([if toolchain supports -msse4.1 option])
379 HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=
381 CFLAGS="$CFLAGS -msse4.1"
382 AC_TRY_COMPILE([asm ("pmulld %xmm6,%xmm0");],,AC_MSG_RESULT([yes])
383 [HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1],
387 case "${CPU_ARCH}" in
389 AC_MSG_CHECKING(for x86 AVX2 asm support in compiler)
391 [asm volatile ("vpermq \$0xd8,%ymm0,%ymm0 \n");],
392 result="yes", result="no")
393 AC_MSG_RESULT("$result")
394 if test "$result" = "yes"; then
400 AC_MSG_CHECKING([whether we can enable AltiVec support])
403 CFLAGS="$CFLAGS -maltivec"
404 AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
412 if test "$GCC_USE_GNU_LD"; then
413 # Some tools like ASan use a runtime library that is only
414 # linked against executables, so we must allow undefined
415 # symbols for shared objects in some cases.
416 if test -z "$MOZ_ASAN$MOZ_MSAN$MOZ_UBSAN$MOZ_TSAN$FUZZING_INTERFACES"; then
417 # Don't allow undefined symbols in libraries
418 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
420 # BSDs need `environ' exposed for posix_spawn (bug 753046)
422 DragonFly|FreeBSD|NetBSD|OpenBSD)
423 if test -n "$HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED"; then
424 DSO_LDOPTS="$DSO_LDOPTS -Wl,--ignore-unresolved-symbol,environ"
426 DSO_LDOPTS="$DSO_LDOPTS -Wl,--warn-unresolved-symbols"
433 _DEFINES_CFLAGS="-include $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
435 ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS"
438 if test "$GNU_CXX"; then
439 CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing"
441 _DEFINES_CXXFLAGS="-DMOZILLA_CLIENT -include $_objdir/mozilla-config.h"
444 dnl ========================================================
446 dnl ========================================================
448 if test "$MOZ_DMD"; then
449 if test "${CPU_ARCH}" = "arm"; then
450 CFLAGS="$CFLAGS -funwind-tables"
451 CXXFLAGS="$CXXFLAGS -funwind-tables"
455 dnl ========================================================
456 dnl System overrides of the defaults for host
457 dnl ========================================================
460 if test -n "$_WIN32_MSVC"; then
461 HOST_CFLAGS="$HOST_CFLAGS"
463 HOST_CFLAGS="$HOST_CFLAGS -mwindows"
465 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN -DWIN32 -D_WIN32 -D_CRT_SECURE_NO_WARNINGS"
466 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
469 case "${host_cpu}" in
471 if test -n "$_WIN32_MSVC"; then
472 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
476 if test -n "$_WIN32_MSVC"; then
477 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
479 HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
485 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX"
486 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
489 *-linux*|*-kfreebsd*-gnu|*-gnu*)
490 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
491 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
495 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
496 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
500 dnl ========================================================
501 dnl System overrides of the defaults for target
502 dnl ========================================================
506 MOZ_OPTIMIZE_FLAGS="-O3"
507 CXXFLAGS="$CXXFLAGS -stdlib=libc++"
509 # The ExceptionHandling framework is needed for Objective-C exception
510 # logging code in nsObjCExceptions.h. Currently we only use that in debug
512 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling";
514 dnl DTrace and -dead_strip don't interact well. See bug 403132.
515 dnl ===================================================================
516 if test "x$enable_dtrace" = "xyes"; then
517 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
519 dnl check for the presence of the -dead_strip linker flag
520 AC_MSG_CHECKING([for -dead_strip option to ld])
521 _SAVE_LDFLAGS=$LDFLAGS
522 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
523 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
524 if test -n "$_HAVE_DEAD_STRIP" ; then
526 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
531 LDFLAGS=$_SAVE_LDFLAGS
534 MOZ_FIX_LINK_PATHS="-Wl,-executable_path,${DIST}/bin"
537 *-android*|*-linuxandroid*)
538 if test "$COMPILE_ENVIRONMENT" -a -n "$MOZ_MEMORY"; then
542 if test -z "$CLANG_CC"; then
543 MOZ_OPTIMIZE_FLAGS="-freorder-blocks -fno-reorder-functions -Os"
545 # From https://github.com/android-ndk/ndk/issues/133#issuecomment-308549264
546 # -Oz is smaller than -Os on clang.
547 MOZ_OPTIMIZE_FLAGS="-Oz"
548 # Disable the outliner, which causes performance regressions, and is
549 # enabled on some platforms at -Oz.
550 if test -z "$MOZ_LTO"; then
551 DISABLE_OUTLINER="-mno-outline"
553 CFLAGS="$CFLAGS $DISABLE_OUTLINER"
554 AC_TRY_COMPILE(,,[MOZ_OPTIMIZE_FLAGS="$MOZ_OPTIMIZE_FLAGS $DISABLE_OUTLINER"])
555 CFLAGS="$_SAVE_CFLAGS"
557 DISABLE_OUTLINER="-Wl,-plugin-opt=-enable-machine-outliner=never"
558 _SAVE_LDFLAGS=$LDFLAGS
559 LDFLAGS="$LDFLAGS $MOZ_LTO_LDFLAGS $DISABLE_OUTLINER"
560 AC_TRY_LINK(,,[MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS $DISABLE_OUTLINER"])
561 LDFLAGS="$_SAVE_LDFLAGS"
567 if test "$GNU_CC" -o "$GNU_CXX"; then
568 MOZ_PGO_OPTIMIZE_FLAGS="-O3"
569 if test -n "$MOZ_DEBUG"; then
570 MOZ_OPTIMIZE_FLAGS="-Os"
572 MOZ_OPTIMIZE_FLAGS="-O2"
574 if test -z "$CLANG_CC"; then
575 MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS"
579 case "${target_cpu}" in
581 CFLAGS="$CFLAGS -mieee"
582 CXXFLAGS="$CXXFLAGS -mieee"
588 # certain versions of cygwin's makedepend barf on the
589 # #include <string> vs -I./dist/include/string issue so don't use it
590 if test -n "$GNU_CC" -o -n "$CLANG_CC"; then
591 # $GNU_CC will match gcc and clang; while $CLANG_CC will match only clang
592 if test -z "$CLANG_CC"; then
593 AC_MSG_ERROR(Firefox cannot be built with mingw-gcc and requires a mingw-clang toolchain to work)
597 # mingw doesn't require kernel32, user32, and advapi32 explicitly
598 LIBS="$LIBS -luuid -lusp10 -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32"
601 MOZ_OPTIMIZE_FLAGS="-O2"
603 WIN32_CONSOLE_EXE_LDFLAGS=-mconsole
604 WIN32_GUI_EXE_LDFLAGS=-mwindows
606 # Silence problematic clang warnings
607 CXXFLAGS="$CXXFLAGS -Wno-incompatible-ms-struct"
608 LDFLAGS="$LDFLAGS -Wl,--no-insert-timestamp"
610 TARGET_COMPILER_ABI=msvc
611 STRIP='echo not_strip'
612 # aarch64 doesn't support subsystems below 6.02
613 if test "$CPU_ARCH" = "aarch64"; then
614 WIN32_SUBSYSTEM_VERSION=6.02
616 WIN32_SUBSYSTEM_VERSION=6.01
618 WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION
619 WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
620 DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
621 _DEFINES_CFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
622 _DEFINES_CXXFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
623 CFLAGS="$CFLAGS -W3 -Gy -Zc:inline"
624 CXXFLAGS="$CXXFLAGS -W3 -Gy -Zc:inline"
625 if test -z "$CLANG_CL"; then
626 CPPFLAGS="$CPPFLAGS -utf-8"
628 if test "$CPU_ARCH" = "x86"; then
629 dnl VS2012+ defaults to -arch:SSE2. We want to target nothing
630 dnl more recent, so set that explicitly here unless another
631 dnl target arch has already been set.
633 if test -z `echo $CFLAGS | grep -i [-/]arch:`; then
634 CFLAGS="$CFLAGS -arch:SSE2"
636 if test -z `echo $CXXFLAGS | grep -i [-/]arch:`; then
637 CXXFLAGS="$CXXFLAGS -arch:SSE2"
640 SSE_FLAGS="-arch:SSE"
641 SSE2_FLAGS="-arch:SSE2"
642 dnl MSVC allows the use of intrinsics without any flags
643 dnl and doesn't have a separate arch for SSSE3
644 SSSE3_FLAGS="-arch:SSE2"
646 dnl clang-cl requires appropriate flags to enable SSSE3 support
647 dnl on all architectures.
648 if test -n "$CLANG_CL"; then
649 SSSE3_FLAGS="-mssse3"
651 dnl VS2013+ supports -Gw for better linker optimizations.
652 dnl http://blogs.msdn.com/b/vcblog/archive/2013/09/11/introducing-gw-compiler-switch.aspx
653 dnl Disabled on ASan because it causes false-positive ODR violations.
654 if test -z "$MOZ_ASAN"; then
656 CXXFLAGS="$CXXFLAGS -Gw"
658 # String tail merging doesn't play nice with ASan's ODR checker.
659 LDFLAGS="$LDFLAGS -opt:nolldtailmerge"
661 if test -n "$CLANG_CL"; then
662 # XXX We should combine some of these with our generic GCC-style
665 # Suppress the clang-cl warning for the inline 'new' and 'delete' in mozalloc
666 CXXFLAGS="$CXXFLAGS -Wno-inline-new-delete"
667 # We use offsetof on non-POD objects all the time.
668 # We also suppress this warning on other platforms.
669 CXXFLAGS="$CXXFLAGS -Wno-invalid-offsetof"
670 # This warns for reasonable things like:
671 # enum { X = 0xffffffffU };
672 # which is annoying for IDL headers.
673 CXXFLAGS="$CXXFLAGS -Wno-microsoft-enum-value"
674 # This warns for cases that would be reached by the Microsoft
675 # #include rules, but also currently warns on cases that would
676 # *also* be reached by standard C++ include rules. That
677 # behavior doesn't seem useful, so we turn it off.
678 CXXFLAGS="$CXXFLAGS -Wno-microsoft-include"
679 # We normally error out on unknown pragmas, but since clang-cl
680 # claims to be MSVC, it would be difficult to add
681 # #if defined(_MSC_VER) && !defined(__clang__) everywhere we
682 # use such pragmas, so just ignore them.
683 CFLAGS="$CFLAGS -Wno-unknown-pragmas"
684 CXXFLAGS="$CXXFLAGS -Wno-unknown-pragmas"
685 # We get errors about various #pragma intrinsic directives from
686 # clang-cl, and we don't need to hear about those.
687 CFLAGS="$CFLAGS -Wno-ignored-pragmas"
688 CXXFLAGS="$CXXFLAGS -Wno-ignored-pragmas"
689 # clang-cl's Intrin.h marks things like _ReadWriteBarrier
690 # as __attribute((__deprecated__)). This is nice to know,
691 # but since we don't get the equivalent warning from MSVC,
692 # let's just ignore it.
693 CFLAGS="$CFLAGS -Wno-deprecated-declarations"
694 CXXFLAGS="$CXXFLAGS -Wno-deprecated-declarations"
695 # We use a function like:
696 # __declspec(noreturn) __inline void f() {}
697 # which -Winvalid-noreturn complains about. Again, MSVC seems
698 # OK with it, so let's silence the warning.
699 CFLAGS="$CFLAGS -Wno-invalid-noreturn"
700 CXXFLAGS="$CXXFLAGS -Wno-invalid-noreturn"
701 # Missing |override| on virtual function declarations isn't
702 # something that MSVC currently warns about.
703 CXXFLAGS="$CXXFLAGS -Wno-inconsistent-missing-override"
704 # We use -DHAS_EXCEPTIONS=0, which removes the |throw()|
705 # declaration on |operator delete(void*)|. However, clang-cl
706 # must internally declare |operator delete(void*)| differently,
707 # which causes this warning for virtually every file in the
708 # tree. clang-cl doesn't support -fno-exceptions or equivalent,
709 # so there doesn't seem to be any way to convince clang-cl to
710 # declare |delete| differently. Therefore, suppress this
712 CXXFLAGS="$CXXFLAGS -Wno-implicit-exception-spec-mismatch"
713 # Macros like STDMETHOD() and IFACEMETHOD() can declare
714 # __attribute__((nothrow)) on their respective method declarations,
715 # while the definitions are left without the matching attribute.
716 CXXFLAGS="$CXXFLAGS -Wno-microsoft-exception-spec"
717 # At least one MSVC header and several headers in-tree have
718 # unused typedefs, so turn this on.
719 CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"
720 # jemalloc uses __declspec(allocator) as a profiler hint,
721 # which clang-cl doesn't understand.
722 CXXFLAGS="$CXXFLAGS -Wno-ignored-attributes"
723 # __attribute__((unused)) really means "might be unused" and
724 # we use it to avoid warnings about things that are unused
725 # in some compilation units, but used in many others. This
726 # warning insists on complaining about the latter case, which
727 # is annoying, and rather noisy.
728 CXXFLAGS="$CXXFLAGS -Wno-used-but-marked-unused"
730 # Silence VS2017 15.5+ TR1 deprecation warnings hit by older gtest versions
731 CXXFLAGS="$CXXFLAGS -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING"
732 LIBS="$LIBS user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib"
733 MOZ_DEBUG_LDFLAGS='-DEBUG'
734 if test "$HOST_OS_ARCH" != "WINNT"; then
735 # %_PDB% is a special signal to emit only the PDB basename. This
736 # avoids problems in Windows tools that don't like forward-slashes.
737 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -PDBALTPATH:%_PDB%"
739 # Use a higher optimization level for clang-cl, so we can come closer
740 # to MSVC's performance numbers (see bug 1443590).
741 if test -n "$CLANG_CL"; then
742 MOZ_OPTIMIZE_FLAGS='-O2'
744 MOZ_OPTIMIZE_FLAGS='-O1 -Oi'
747 LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE"
748 dnl Minimum reqiurement of Gecko is VS2015 or later which supports
749 dnl both SSSE3 and SSE4.1.
750 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1
751 HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1
752 dnl allow AVX2 code from VS2015
755 AC_DEFINE(WIN32_LEAN_AND_MEAN)
756 dnl See http://support.microsoft.com/kb/143208 to use STL
759 MOZ_USER_DIR="Mozilla"
763 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.])
769 if test -n "$GNU_CC"; then
770 CFLAGS="$CFLAGS -mstackrealign"
771 CXXFLAGS="$CXXFLAGS -mstackrealign"
772 LDFLAGS="$LDFLAGS -Wl,--large-address-aware"
774 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
775 LDFLAGS="$LDFLAGS -SAFESEH"
781 if test -n "$_WIN32_MSVC"; then
782 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
787 if test -n "$_WIN32_MSVC"; then
788 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:ARM64"
793 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
799 CFLAGS="$CFLAGS -Dunix"
800 CXXFLAGS="$CXXFLAGS -Dunix"
801 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
802 DSO_PIC_CFLAGS='-fPIC -DPIC'
804 MOZ_PROGRAM_LDFLAGS="$MOZ_PROGRAM_LDFLAGS -Wl,--export-dynamic"
806 DSO_PIC_CFLAGS='-fPIC -DPIC'
809 # This will fail on a.out systems prior to 1.5.1_ALPHA.
810 if test "$LIBRUNPATH"; then
811 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
816 if test -z "$X11BASE"; then
819 MOZ_FIX_LINK_PATHS="$MOZ_FIX_LINK_PATHS -Wl,-rpath-link,${X11BASE}/lib"
820 DSO_PIC_CFLAGS='-fPIC'
821 DSO_LDOPTS='-shared -fPIC'
822 if test "$LIBRUNPATH"; then
823 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
828 MOZ_FIX_LINK_PATHS="-L${DIST}/bin"
833 CFLAGS="$CFLAGS $DSO_PIC_CFLAGS"
834 CXXFLAGS="$CXXFLAGS $DSO_PIC_CFLAGS"
836 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
837 MOZ_OPTIMIZE_FLAGS="-O"
840 AC_SUBST_LIST(MMX_FLAGS)
841 AC_SUBST_LIST(SSE_FLAGS)
842 AC_SUBST_LIST(SSE2_FLAGS)
843 AC_SUBST_LIST(SSSE3_FLAGS)
846 if test -n "$MOZ_LINKER"; then
847 AC_DEFINE(MOZ_LINKER)
849 AC_CHECK_PROGS(XZ, xz)
852 if test -z "$COMPILE_ENVIRONMENT"; then
853 SKIP_COMPILER_CHECKS=1
854 SKIP_LIBRARY_CHECKS=1
858 fi # COMPILE_ENVIRONMENT
860 if test -z "$SKIP_COMPILER_CHECKS"; then
861 dnl Checks for typedefs, structures, and compiler characteristics.
862 dnl ========================================================
877 case "${OS_TARGET}" in
881 STL_FLAGS="-I${DIST}/stl_wrappers"
886 if test "$MOZ_BUILD_APP" = "tools/crashreporter"; then
889 if test "$MOZ_BUILD_APP" = "tools/crashreporter/injector"; then
893 dnl Checks for header files.
894 dnl ========================================================
897 bitrig*|dragonfly*|freebsd*|openbsd*)
898 # for stuff like -lXshm
899 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
903 dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
904 AC_CACHE_CHECK(for sockaddr_in.sin_len,
905 ac_cv_sockaddr_in_sin_len,
906 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
907 #include <sys/types.h>
909 #include <netinet/in.h>
910 struct sockaddr_in x;
911 void *foo = (void*) &x.sin_len;],
913 [ac_cv_sockaddr_in_sin_len=true],
914 [ac_cv_sockaddr_in_sin_len=false])])
915 if test "$ac_cv_sockaddr_in_sin_len" = true ; then
916 AC_DEFINE(HAVE_SIN_LEN)
917 dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
918 AC_DEFINE(HAVE_SCONN_LEN)
921 AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
922 ac_cv_sockaddr_in6_sin6_len,
923 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
924 #include <sys/types.h>
926 #include <netinet/in.h>
927 struct sockaddr_in6 x;
928 void *foo = (void*) &x.sin6_len;],
930 [ac_cv_sockaddr_in6_sin6_len=true],
931 [ac_cv_sockaddr_in6_sin6_len=false])])
932 if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
933 AC_DEFINE(HAVE_SIN6_LEN)
936 AC_CACHE_CHECK(for sockaddr.sa_len,
937 ac_cv_sockaddr_sa_len,
938 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
939 #include <sys/types.h>
941 #include <sys/socket.h>
943 void *foo = (void*) &x.sa_len;],
945 [ac_cv_sockaddr_sa_len=true],
946 [ac_cv_sockaddr_sa_len=false])])
947 if test "$ac_cv_sockaddr_sa_len" = true ; then
948 AC_DEFINE(HAVE_SA_LEN)
951 dnl Checks for libraries.
952 dnl ========================================================
953 AC_CHECK_LIB(c_r, gethostbyname_r)
955 dnl We don't want to link with libdl even if it's present on OS X, since
956 dnl it's not used and not part of the default installation. OS/2 has dlfcn
958 dnl We don't want to link against libm or libpthread on Darwin since
959 dnl they both are just symlinks to libSystem and explicitly linking
960 dnl against libSystem causes issues when debugging (see bug 299601).
965 AC_SEARCH_LIBS(dlopen, dl,
966 MOZ_CHECK_HEADER(dlfcn.h,
967 AC_DEFINE(HAVE_DLOPEN)))
971 _SAVE_CFLAGS="$CFLAGS"
972 CFLAGS="$CFLAGS -D_GNU_SOURCE"
973 AC_CHECK_FUNCS(dladdr memmem)
974 CFLAGS="$_SAVE_CFLAGS"
976 if test ! "$GNU_CXX"; then
977 AC_CHECK_LIB(C, demangle)
980 AC_CHECK_LIB(socket, socket)
983 XLIBS="$X_EXTRA_LIBS"
985 dnl ========================================================
986 dnl Checks for X libraries.
987 dnl Ordering is important.
988 dnl Xt is dependent upon SM as of X11R6
989 dnl ========================================================
990 if test -n "$MOZ_X11"; then
991 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
992 _SAVE_LDFLAGS="$LDFLAGS"
994 LDFLAGS="$XLDFLAGS $LDFLAGS"
995 AC_CHECK_LIB(X11, XDrawLines, [XLIBS="-lX11 $XLIBS"],
996 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
997 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
998 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
1000 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
1001 unset ac_cv_lib_Xt_XtFree
1002 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
1003 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
1004 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
1005 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
1008 dnl ========================================================
1010 dnl ========================================================
1011 AC_CHECK_LIB(xcb, xcb_connect, [XLIBS="-lxcb $XLIBS"],
1012 [MISSING_X="$MISSING_X -lxcb"], $XLIBS)
1013 AC_CHECK_LIB(xcb-shm, xcb_shm_query_version, [XLIBS="-lxcb-shm $XLIBS"],
1014 [MISSING_X="$MISSING_X -lxcb-shm"], $XLIBS)
1015 AC_CHECK_LIB(X11-xcb, XGetXCBConnection, [XLIBS="-lX11-xcb $XLIBS"],
1016 [MISSING_X="$MISSING_X -lX11-xcb"], $XLIBS)
1018 LDFLAGS="$_SAVE_LDFLAGS"
1022 AC_SUBST_LIST(XCFLAGS)
1023 AC_SUBST_LIST(XLDFLAGS)
1024 AC_SUBST_LIST(XLIBS)
1025 AC_SUBST_LIST(XEXT_LIBS)
1026 AC_SUBST_LIST(XT_LIBS)
1028 dnl ========================================================
1029 dnl = pthread support
1030 dnl = Start by checking whether the system support pthreads
1031 dnl ========================================================
1032 case "$target_os" in
1037 AC_CHECK_LIB(pthreads, pthread_create,
1038 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
1039 AC_CHECK_LIB(pthread, pthread_create,
1040 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
1041 AC_CHECK_LIB(c_r, pthread_create,
1042 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
1043 AC_CHECK_LIB(c, pthread_create,
1052 dnl ========================================================
1053 dnl Do the platform specific pthread hackery
1054 dnl ========================================================
1055 if test "$MOZ_USE_PTHREADS"x != x
1058 dnl See if -pthread is supported.
1061 ac_cv_have_dash_pthread=no
1062 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
1063 echo 'int main() { return 0; }' | cat > conftest.c
1064 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
1065 if test $? -eq 0; then
1066 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
1067 ac_cv_have_dash_pthread=yes
1068 case "$target_os" in
1070 # Freebsd doesn't use -pthread for compiles, it uses them for linking
1073 CFLAGS="$CFLAGS -pthread"
1074 CXXFLAGS="$CXXFLAGS -pthread"
1080 AC_MSG_RESULT($ac_cv_have_dash_pthread)
1083 dnl See if -pthreads is supported.
1085 ac_cv_have_dash_pthreads=no
1086 if test "$ac_cv_have_dash_pthread" = "no"; then
1087 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
1088 echo 'int main() { return 0; }' | cat > conftest.c
1089 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
1090 if test $? -eq 0; then
1091 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
1092 ac_cv_have_dash_pthreads=yes
1093 CFLAGS="$CFLAGS -pthreads"
1094 CXXFLAGS="$CXXFLAGS -pthreads"
1098 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
1103 AC_DEFINE(_REENTRANT)
1104 AC_DEFINE(_THREAD_SAFE)
1105 dnl -pthread links in -lpthread, so don't specify it explicitly.
1106 if test "$ac_cv_have_dash_pthread" = "yes"; then
1107 _PTHREAD_LDFLAGS="-pthread"
1111 *-*-openbsd*|*-*-bsdi*)
1112 AC_DEFINE(_REENTRANT)
1113 AC_DEFINE(_THREAD_SAFE)
1114 dnl -pthread links in -lc_r, so don't specify it explicitly.
1115 if test "$ac_cv_have_dash_pthread" = "yes"; then
1116 _PTHREAD_LDFLAGS="-pthread"
1120 *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
1121 AC_DEFINE(_REENTRANT)
1125 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
1126 AC_SUBST(MOZ_USE_PTHREADS)
1127 MOZ_CHECK_HEADERS(pthread.h)
1131 dnl Checks for library functions.
1132 dnl ========================================================
1133 AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize gmtime_r localtime_r arc4random arc4random_buf mallinfo gettid lchown setpriority strerror syscall lutimes)
1135 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
1136 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
1137 ac_cv_clock_monotonic,
1138 [for libs in "" -lrt; do
1141 dnl clock_gettime is available on OSX since 10.12, so depending on MACOSX_DEPLOYMENT_TARGET,
1142 dnl we should or not be able to use it. To detect if we can, we need to make the
1143 dnl availability attribute strict, so that compilation fails when the target is < 10.12.
1144 AC_TRY_LINK([#define availability(os, ...) availability(os, strict, __VA_ARGS)
1146 [ struct timespec ts;
1147 clock_gettime(CLOCK_MONOTONIC, &ts); ],
1148 ac_cv_clock_monotonic=$libs
1151 ac_cv_clock_monotonic=no)
1154 if test "$ac_cv_clock_monotonic" != "no"; then
1155 HAVE_CLOCK_MONOTONIC=1
1156 REALTIME_LIBS=$ac_cv_clock_monotonic
1157 AC_DEFINE(HAVE_CLOCK_MONOTONIC)
1158 AC_SUBST(HAVE_CLOCK_MONOTONIC)
1159 AC_SUBST_LIST(REALTIME_LIBS)
1162 dnl Turn on warnings-as-errors to prevent implicit declaration of
1163 dnl pthread_cond_timedwait_monotonic_np, which can cause this test to
1164 dnl inadvertently pass even if the function does not really exist.
1165 _SAVE_CFLAGS="$CFLAGS"
1166 CFLAGS="$CFLAGS $WARNINGS_AS_ERRORS"
1167 AC_CACHE_CHECK(for pthread_cond_timedwait_monotonic_np,
1168 ac_cv_pthread_cond_timedwait_monotonic_np,
1169 AC_TRY_LINK([#include <pthread.h>],
1170 [pthread_cond_timedwait_monotonic_np(0, 0, 0);],
1171 ac_cv_pthread_cond_timewait_monotonic_np=yes,
1172 ac_cv_pthread_cond_timewait_monotonic_np=no))
1173 if test "$ac_cv_pthread_cond_timewait_monotonic_np" != "no"; then
1174 AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC)
1176 CFLAGS=$_SAVE_CFLAGS
1180 ac_cv_func_res_ninit,
1181 [if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then
1182 dnl no need for res_ninit() on NetBSD and OpenBSD
1183 ac_cv_func_res_ninit=no
1187 #define _BSD_SOURCE 1
1189 #include <sys/types.h>
1190 #include <netinet/in.h>
1191 #include <arpa/nameser.h>
1194 [int foo = res_ninit(&_res);],
1195 [ac_cv_func_res_ninit=yes],
1196 [ac_cv_func_res_ninit=no])
1200 if test "$ac_cv_func_res_ninit" = "yes"; then
1201 AC_DEFINE(HAVE_RES_NINIT)
1202 dnl must add the link line we do something as foolish as this... dougt
1204 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
1205 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
1210 dnl **********************
1211 dnl *** va_copy checks ***
1212 AC_CACHE_CHECK([for an implementation of va_copy()],
1214 [AC_TRY_COMPILE([#include <stdarg.h>
1216 void f (int i, ...) {
1217 va_list args1, args2;
1218 va_start (args1, i);
1219 va_copy (args2, args1);
1220 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1222 va_end (args1); va_end (args2);
1224 [f(0, 42); return 0],
1225 [ac_cv_va_copy=yes],
1229 AC_CACHE_CHECK([whether va_list can be copied by value],
1231 [AC_TRY_COMPILE([#include <stdarg.h>
1233 void f (int i, ...) {
1234 va_list args1, args2;
1235 va_start (args1, i);
1237 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1239 va_end (args1); va_end (args2);
1241 [f(0, 42); return 0],
1242 [ac_cv_va_val_copy=yes],
1243 [ac_cv_va_val_copy=no],
1246 if test "x$ac_cv_va_copy" = "xyes"; then
1247 AC_DEFINE(VA_COPY, va_copy)
1248 AC_DEFINE(HAVE_VA_COPY)
1251 if test "x$ac_cv_va_val_copy" = "xno"; then
1252 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
1255 dnl ===================================================================
1256 dnl ========================================================
1257 dnl Put your C++ language/feature checks below
1258 dnl ========================================================
1262 if test "$GNU_CC"; then
1263 if test "$CPU_ARCH" = "arm" ; then
1264 AC_CACHE_CHECK(for ARM EABI,
1268 #if defined(__ARM_EABI__)
1271 #error Not ARM EABI.
1274 ac_cv_gcc_arm_eabi="yes",
1275 ac_cv_gcc_arm_eabi="no")])
1276 if test "$ac_cv_gcc_arm_eabi" = "yes"; then
1278 ARM_ABI_PREFIX=eabi-
1280 ARM_ABI_PREFIX=oabi-
1284 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
1287 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
1288 # We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
1289 # enabled, the linker in xcode 4.1 will crash. Without this it would crash when
1291 _SAVE_LDFLAGS=$LDFLAGS
1292 LDFLAGS="$LDFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
1293 AC_CACHE_CHECK(for __thread keyword for TLS variables,
1294 ac_cv_thread_keyword,
1295 [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
1296 [return tlsIsMainThread;],
1297 ac_cv_thread_keyword=yes,
1298 ac_cv_thread_keyword=no)])
1299 LDFLAGS=$_SAVE_LDFLAGS
1300 # The custom dynamic linker doesn't support TLS variables
1302 if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
1303 # mips builds fail with TLS variables because of a binutils bug.
1305 # OpenBSD doesn't have TLS support, and the test succeeds with clang++
1310 *-android*|*-linuxandroid*)
1317 AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
1323 dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments.
1324 if test -n "$MOZ_LINKER"; then
1325 if test "$CPU_ARCH" = arm; then
1326 dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments
1327 if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
1328 LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
1329 _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
1333 dnl gold emits wrong sysv-style elf hash tables when building both sysv and
1334 dnl style tables. https://sourceware.org/bugzilla/show_bug.cgi?id=13597
1335 dnl Since the linker only understands the sysv ones, no need to build the
1336 dnl gnu style tables anyways.
1337 LDFLAGS="$LDFLAGS -Wl,--hash-style=sysv"
1340 dnl End of C++ language/feature checks
1343 dnl ========================================================
1344 dnl = Internationalization checks
1345 dnl ========================================================
1347 dnl Internationalization and Locale support is different
1348 dnl on various UNIX platforms. Checks for specific i18n
1349 dnl features go here.
1351 AC_HAVE_FUNCS(localeconv)
1353 fi # ! SKIP_COMPILER_CHECKS
1355 if test -n "${COMPILE_ENVIRONMENT}"; then
1360 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
1361 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
1362 AC_DEFINE_UNQUOTED(TARGET_XPCOM_ABI, ["${TARGET_XPCOM_ABI}"])
1365 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
1366 dnl features that Windows actually does support.
1368 if test -n "$SKIP_COMPILER_CHECKS"; then
1369 dnl Windows has malloc.h
1370 AC_DEFINE(MALLOC_H, [<malloc.h>])
1371 AC_DEFINE(HAVE_FORCEINLINE)
1372 AC_DEFINE(HAVE_LOCALECONV)
1373 fi # SKIP_COMPILER_CHECKS
1375 dnl Mozilla specific options
1376 dnl ========================================================
1377 dnl The macros used for command line options
1378 dnl are defined in build/autoconf/altoptions.m4.
1380 dnl ========================================================
1382 dnl = Check for external package dependencies
1384 dnl ========================================================
1385 MOZ_ARG_HEADER(External Packages)
1387 dnl ========================================================
1388 dnl system libevent Support
1389 dnl ========================================================
1390 MOZ_ARG_WITH_STRING(system-libevent,
1391 [ --with-system-libevent[=PFX]
1392 Use system libevent [installed at prefix PFX]],
1393 LIBEVENT_DIR=$withval)
1395 _SAVE_CFLAGS=$CFLAGS
1396 _SAVE_LDFLAGS=$LDFLAGS
1398 if test "$LIBEVENT_DIR" = yes; then
1399 PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
1400 MOZ_SYSTEM_LIBEVENT=1,
1403 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
1404 MOZ_SYSTEM_LIBEVENT=
1405 elif test -z "$MOZ_SYSTEM_LIBEVENT"; then
1406 CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
1407 LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
1408 MOZ_CHECK_HEADER(event.h,
1409 [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
1410 AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
1412 AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
1413 AC_CHECK_LIB(event, event_init,
1414 [MOZ_SYSTEM_LIBEVENT=1
1415 MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
1416 MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
1417 [MOZ_SYSTEM_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
1419 CFLAGS=$_SAVE_CFLAGS
1420 LDFLAGS=$_SAVE_LDFLAGS
1423 AC_SUBST(MOZ_SYSTEM_LIBEVENT)
1425 if test -z "$SKIP_LIBRARY_CHECKS"; then
1427 dnl ========================================================
1428 dnl system PNG Support
1429 dnl ========================================================
1430 MOZ_ARG_WITH_STRING(system-png,
1431 [ --with-system-png[=PFX]
1432 Use system libpng [installed at prefix PFX]],
1435 _SAVE_CFLAGS=$CFLAGS
1436 _SAVE_LDFLAGS=$LDFLAGS
1438 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
1439 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
1440 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
1442 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
1445 AC_CHECK_LIB(png, png_get_valid, [MOZ_SYSTEM_PNG=1 MOZ_PNG_LIBS="-lpng"],
1446 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
1447 AC_CHECK_LIB(png, png_get_acTL, ,
1448 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]))
1450 if test "$MOZ_SYSTEM_PNG" = 1; then
1451 AC_TRY_COMPILE([ #include <stdio.h>
1452 #include <sys/types.h>
1454 [ #if PNG_LIBPNG_VER < $MOZPNG
1455 #error "Insufficient libpng version ($MOZPNG required)."
1457 #ifndef PNG_UINT_31_MAX
1458 #error "Insufficient libpng version."
1461 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
1463 CFLAGS=$_SAVE_CFLAGS
1464 LDFLAGS=$_SAVE_LDFLAGS
1467 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_SYSTEM_PNG" = 1; then
1468 MOZ_PNG_CFLAGS="-I${PNG_DIR}/include"
1469 MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}"
1472 fi # SKIP_LIBRARY_CHECKS
1474 dnl ========================================================
1478 dnl ========================================================
1480 MOZ_ARG_HEADER(Application)
1482 ENABLE_SYSTEM_EXTENSION_DIRS=1
1483 MOZ_BRANDING_DIRECTORY=
1484 MOZ_OFFICIAL_BRANDING=
1485 MOZ_AUTH_EXTENSION=1
1487 MOZ_UNIVERSALCHARDET=1
1492 MOZ_BINARY_EXTENSIONS=
1495 dnl ========================================================
1496 dnl = Trademarked Branding
1497 dnl ========================================================
1498 MOZ_ARG_ENABLE_BOOL(official-branding,
1499 [ --enable-official-branding
1500 Enable Official mozilla.org Branding
1501 Do not distribute builds with
1502 --enable-official-branding unless you have
1503 permission to use trademarks per
1504 http://www.mozilla.org/foundation/trademarks/ .],
1505 MOZ_OFFICIAL_BRANDING=1,
1506 MOZ_OFFICIAL_BRANDING=)
1508 # Allow the application to influence configure with a confvars.sh script.
1509 AC_MSG_CHECKING([if app-specific confvars.sh exists])
1510 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
1511 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
1512 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
1517 dnl ========================================================
1518 dnl Ensure Android SDK and build-tools versions depending on
1520 dnl ========================================================
1522 case "$MOZ_BUILD_APP" in
1528 dnl ========================================================
1530 dnl = Toolkit Options
1532 dnl ========================================================
1533 MOZ_ARG_HEADER(Toolkit Options)
1535 dnl ========================================================
1536 dnl = Enable the toolkit as needed =
1537 dnl ========================================================
1539 case "$MOZ_WIDGET_TOOLKIT" in
1542 LDFLAGS="$LDFLAGS -framework Cocoa"
1543 # Use -Wl as a trick to avoid -framework and framework names from
1544 # being separated by AC_SUBST_LIST.
1545 TK_LIBS='-Wl,-framework,Foundation -Wl,-framework,CoreFoundation -Wl,-framework,CoreLocation -Wl,-framework,QuartzCore -Wl,-framework,Carbon -Wl,-framework,CoreAudio -Wl,-framework,CoreVideo -Wl,-framework,AudioToolbox -Wl,-framework,AudioUnit -Wl,-framework,AddressBook -Wl,-framework,OpenGL -Wl,-framework,Security -Wl,-framework,ServiceManagement -Wl,-framework,CoreServices -Wl,-framework,ApplicationServices -Wl,-framework,AppKit'
1547 CFLAGS="$CFLAGS $TK_CFLAGS"
1548 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
1549 MOZ_USER_DIR="Mozilla"
1550 MOZ_FS_LAYOUT=bundle
1554 LDFLAGS="$LDFLAGS -framework UIKit"
1556 TK_LIBS='-Wl,-framework,Foundation -Wl,-framework,CoreFoundation -Wl,-framework,CoreGraphics -Wl,-framework,CoreText -Wl,-framework,AVFoundation -Wl,-framework,AudioToolbox -Wl,-framework,CoreMedia -Wl,-framework,CoreVideo -Wl,-framework,OpenGLES -Wl,-framework,QuartzCore'
1557 CFLAGS="$CFLAGS $TK_CFLAGS"
1558 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
1559 MOZ_USER_DIR="Mozilla"
1560 MOZ_FS_LAYOUT=bundle
1565 if test "$OS_TARGET" = Darwin; then
1566 LDFLAGS="$LDFLAGS -lobjc"
1569 dnl there are a lot of tests on MOZ_ENABLE_GTK below, that are more convenient
1570 dnl to keep that way than testing against MOZ_WIDGET_TOOLKIT
1571 case "$MOZ_WIDGET_TOOLKIT" in
1577 if test "$COMPILE_ENVIRONMENT"; then
1578 if test "$MOZ_WIDGET_TOOLKIT" = gtk; then
1579 PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-2.0 gio-unix-2.0 $GDK_PACKAGES)
1580 MOZ_GTK3_CFLAGS="-I${_topsrcdir}/widget/gtk/compat-gtk3 $MOZ_GTK3_CFLAGS"
1581 TK_CFLAGS=$MOZ_GTK3_CFLAGS
1582 TK_LIBS=$MOZ_GTK3_LIBS
1583 dnl GDK_VERSION_MIN_REQUIRED is not set here as GDK3 deprecated warnings
1584 dnl are suppressed by widget/gtk/compat-gtk3/gdk/gdkversionmacros.h.
1585 AC_DEFINE_UNQUOTED(GDK_VERSION_MAX_ALLOWED,$GDK_VERSION_MAX_ALLOWED)
1587 if test "$MOZ_ENABLE_GTK"; then
1588 AC_DEFINE_UNQUOTED(GLIB_VERSION_MIN_REQUIRED,$GLIB_VERSION_MIN_REQUIRED)
1589 AC_DEFINE_UNQUOTED(GLIB_VERSION_MAX_ALLOWED,$GLIB_VERSION_MAX_ALLOWED)
1591 fi # COMPILE_ENVIRONMENT
1593 AC_SUBST(MOZ_FS_LAYOUT)
1595 AC_SUBST_LIST(TK_CFLAGS)
1596 AC_SUBST_LIST(TK_LIBS)
1598 dnl ========================================================
1600 dnl = Components & Features
1602 dnl ========================================================
1603 MOZ_ARG_HEADER(Components and Features)
1605 AC_SUBST(MOZ_OFFICIAL_BRANDING)
1606 if test -n "$MOZ_OFFICIAL_BRANDING"; then
1607 if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
1608 AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
1610 MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
1611 AC_DEFINE(MOZ_OFFICIAL_BRANDING)
1615 MOZ_ARG_WITH_STRING(branding,
1616 [ --with-branding=dir Use branding from the specified directory.],
1617 MOZ_BRANDING_DIRECTORY=$withval)
1619 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
1620 if test -z "$REAL_BRANDING_DIRECTORY"; then
1621 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
1624 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
1625 . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
1628 AC_SUBST(MOZ_BRANDING_DIRECTORY)
1630 dnl ========================================================
1631 dnl = Distribution ID
1632 dnl ========================================================
1633 MOZ_ARG_WITH_STRING(distribution-id,
1634 [ --with-distribution-id=ID
1635 Set distribution-specific id (default=org.mozilla)],
1636 [ val=`echo $withval`
1637 MOZ_DISTRIBUTION_ID="$val"])
1639 if test -z "$MOZ_DISTRIBUTION_ID"; then
1640 MOZ_DISTRIBUTION_ID="org.mozilla"
1643 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
1644 AC_SUBST(MOZ_DISTRIBUTION_ID)
1646 dnl ========================================================
1647 dnl = libproxy support
1648 dnl ========================================================
1650 if test "$MOZ_ENABLE_GTK"
1652 MOZ_ENABLE_LIBPROXY=
1654 MOZ_ARG_ENABLE_BOOL(libproxy,
1655 [ --enable-libproxy Enable libproxy support ],
1656 MOZ_ENABLE_LIBPROXY=1,
1657 MOZ_ENABLE_LIBPROXY=)
1659 if test "$MOZ_ENABLE_LIBPROXY"
1661 PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
1662 AC_DEFINE(MOZ_ENABLE_LIBPROXY)
1665 AC_SUBST(MOZ_ENABLE_LIBPROXY)
1667 dnl ========================================================
1669 dnl ========================================================
1671 if test "$MOZ_ENABLE_GTK"
1675 MOZ_ARG_DISABLE_BOOL(dbus,
1676 [ --disable-dbus Disable dbus support ],
1680 if test "$MOZ_ENABLE_DBUS"
1682 PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
1683 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
1684 AC_DEFINE(MOZ_ENABLE_DBUS)
1687 AC_SUBST(MOZ_ENABLE_DBUS)
1689 AC_TRY_COMPILE([#include <linux/ethtool.h>],
1690 [ struct ethtool_cmd cmd; cmd.speed_hi = 0; ],
1691 MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI=1)
1693 AC_SUBST(MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI)
1695 if test -n "$MOZ_WEBRTC"; then
1696 if test -n "$MOZ_X11"; then
1697 MOZ_WEBRTC_X11_LIBS="-lXext -lXdamage -lXfixes -lXcomposite"
1701 AC_SUBST_LIST(MOZ_WEBRTC_X11_LIBS)
1703 dnl ========================================================
1704 dnl = Apple platform decoder support
1705 dnl ========================================================
1706 if test "$COMPILE_ENVIRONMENT"; then
1707 if test -n "$MOZ_APPLEMEDIA"; then
1708 # hack in frameworks for fmp4 - see bug 1029974
1709 # We load VideoToolbox and CoreMedia dynamically, so they don't appear here.
1710 LDFLAGS="$LDFLAGS -framework AudioToolbox"
1711 dnl Verify CoreMedia is available.
1712 AC_CHECK_HEADERS([CoreMedia/CoreMedia.h VideoToolbox/VideoToolbox.h], [],
1713 [AC_MSG_ERROR([MacOS X 10.9 SDK or later is required])])
1715 fi # COMPILE_ENVIRONMENT
1717 dnl ========================================================
1718 dnl = Handle dependent MEDIA defines
1719 dnl ========================================================
1722 AC_DEFINE(MOZ_WEBM_ENCODER)
1723 AC_SUBST(MOZ_WEBM_ENCODER)
1725 dnl ========================================================
1727 dnl ========================================================
1729 MOZ_ARG_DISABLE_BOOL(negotiateauth,
1730 [ --disable-negotiateauth Disable GSS-API negotiation ],
1731 MOZ_AUTH_EXTENSION=,
1732 MOZ_AUTH_EXTENSION=1 )
1734 dnl ========================================================
1735 dnl Searching of system directories for extensions.
1736 dnl Note: this switch is meant to be used for test builds
1737 dnl whose behavior should not depend on what happens to be
1738 dnl installed on the local machine.
1739 dnl ========================================================
1740 MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
1741 [ --disable-system-extension-dirs
1742 Disable searching system- and account-global
1743 directories for extensions of any kind; use
1744 only profile-specific extension directories],
1745 ENABLE_SYSTEM_EXTENSION_DIRS=,
1746 ENABLE_SYSTEM_EXTENSION_DIRS=1 )
1747 if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
1748 AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
1751 dnl ========================================================
1752 dnl = Universalchardet
1753 dnl ========================================================
1754 MOZ_ARG_DISABLE_BOOL(universalchardet,
1755 [ --disable-universalchardet
1756 Disable universal encoding detection],
1757 MOZ_UNIVERSALCHARDET=,
1758 MOZ_UNIVERSALCHARDET=1 )
1760 dnl ========================================================
1762 dnl ========================================================
1764 if test "$COMPILE_ENVIRONMENT" ; then
1766 dnl Moved gamepad platform check to moz.build, linux header check still needed here.
1767 if test "$OS_TARGET" = "Linux"; then
1768 MOZ_CHECK_HEADER([linux/joystick.h])
1769 if test "$ac_cv_header_linux_joystick_h" != "yes"; then
1770 AC_MSG_ERROR([Can't find header linux/joystick.h, needed for gamepad support. Please install Linux kernel headers.])
1774 fi # COMPILE_ENVIRONMENT
1777 dnl ========================================================
1778 dnl = Breakpad crash reporting (on by default on supported platforms)
1779 dnl ========================================================
1782 i?86-*-mingw*|x86_64-*-mingw*|aarch64-*-mingw*)
1785 i?86-apple-darwin*|x86_64-apple-darwin*|aarch64-apple-darwin*)
1788 *-android*|*-linuxandroid*)
1789 dnl Android/arm is arm-unknown-linux-androideabi, so android condition should
1790 dnl be before Linux condition
1791 dnl The crash reporter prevents crash stacktraces to be logged in the
1792 dnl logs so we leave it out by default in developer builds.
1793 if test -z "$DEVELOPER_OPTIONS"; then
1797 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
1798 if test "$MOZ_ENABLE_GTK"; then
1804 MOZ_ARG_DISABLE_BOOL(crashreporter,
1805 [ --disable-crashreporter Disable breakpad crash reporting],
1806 [MOZ_CRASHREPORTER=],
1807 [MOZ_CRASHREPORTER=F # Force enable breakpad])
1809 if test "$OS_ARCH" != "$HOST_OS_ARCH" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "Darwin" -a "$MOZ_WIDGET_TOOLKIT" != "android"; then
1810 if test "$MOZ_CRASHREPORTER" = F; then
1811 AC_MSG_ERROR([Cannot --enable-crashreporter, as breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH.])
1816 if test -n "$MOZ_CRASHREPORTER"; then
1817 AC_DEFINE(MOZ_CRASHREPORTER)
1819 if test "$OS_TARGET" = "Linux" && \
1820 test -z "$SKIP_LIBRARY_CHECKS"; then
1821 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
1824 if test "$OS_ARCH" = "WINNT"; then
1825 if test -z "$HAVE_64BIT_BUILD" -a -n "$COMPILE_ENVIRONMENT"; then
1826 MOZ_CRASHREPORTER_INJECTOR=1
1827 AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
1832 dnl ========================================================
1833 dnl = Enable compilation of specific extension modules
1834 dnl ========================================================
1836 MOZ_ARG_ENABLE_STRING(extensions,
1837 [ --enable-extensions Enable extensions],
1838 [ for option in `echo $enableval | sed 's/,/ /g'`; do
1839 if test "$option" = "yes" -o "$option" = "all"; then
1840 AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
1841 elif test "$option" = "no" -o "$option" = "none"; then
1843 elif test "$option" = "default"; then
1844 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
1845 elif test `echo "$option" | grep -c \^-` != 0; then
1846 option=`echo $option | sed 's/^-//'`
1847 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
1849 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
1852 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
1854 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
1855 dnl when trying to build a nonexistent extension.
1856 for extension in $MOZ_EXTENSIONS; do
1857 if test ! -d "${srcdir}/extensions/${extension}"; then
1858 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
1862 # Avoid defining MOZ_ENABLE_CAIRO_FT on Windows platforms because
1863 # "cairo-ft-font.c" includes <dlfcn.h>, which only exists on posix platforms
1864 if test -n "$MOZ_TREE_FREETYPE" -a "$OS_TARGET" != WINNT; then
1865 MOZ_ENABLE_CAIRO_FT=1
1866 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
1867 CAIRO_FT_CFLAGS="-I$_topsrcdir/modules/freetype2/include"
1868 AC_SUBST_LIST(CAIRO_FT_CFLAGS)
1871 dnl ========================================================
1873 dnl ========================================================
1875 MOZ_ARG_DISABLE_BOOL(updater,
1876 [ --disable-updater Disable building of updater],
1880 if test -n "$MOZ_UPDATER"; then
1881 AC_DEFINE(MOZ_UPDATER)
1884 dnl ========================================================
1885 dnl parental controls (for Windows Vista)
1886 dnl ========================================================
1887 MOZ_ARG_DISABLE_BOOL(parental-controls,
1888 [ --disable-parental-controls
1889 Do not build parental controls],
1890 MOZ_DISABLE_PARENTAL_CONTROLS=1,
1891 MOZ_DISABLE_PARENTAL_CONTROLS=)
1892 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
1893 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
1896 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
1898 dnl ========================================================
1899 dnl = Disable smartcard support
1900 dnl ========================================================
1901 if test -n "$MOZ_NO_SMART_CARDS"; then
1902 AC_DEFINE(MOZ_NO_SMART_CARDS)
1904 AC_SUBST(MOZ_NO_SMART_CARDS)
1906 dnl ========================================================
1907 dnl = Sandboxing support
1908 dnl ========================================================
1909 if test -n "$MOZ_TSAN" -o -n "$MOZ_ASAN"; then
1910 # Bug 1182565: TSan conflicts with sandboxing on Linux.
1911 # Bug 1287971: LSan also conflicts with sandboxing on Linux.
1919 MOZ_ARG_DISABLE_BOOL(sandbox,
1920 [ --disable-sandbox Disable sandboxing support],
1924 case "$OS_TARGET" in
1925 WINNT|Darwin|OpenBSD)
1929 x86_64|x86|arm|aarch64)
1931 # Linux sandbox is only available on x86{,_64} and arm{,64}.
1938 # Only enable the sandbox by default on Linux, OpenBSD, macOS, and Windows
1943 if test -n "$MOZ_SANDBOX"; then
1944 AC_DEFINE(MOZ_SANDBOX)
1947 AC_SUBST(MOZ_SANDBOX)
1950 dnl ========================================================
1952 dnl = Module specific options
1954 dnl ========================================================
1955 MOZ_ARG_HEADER(Individual module options)
1957 dnl ==============================
1958 dnl === SQLite fdatasync check ===
1959 dnl ==============================
1960 dnl Check to see if fdatasync is available and make use of it
1961 AC_CHECK_FUNC(fdatasync)
1963 dnl ========================================================
1964 dnl = Disable zipwriter
1965 dnl ========================================================
1966 MOZ_ARG_DISABLE_BOOL(zipwriter,
1967 [ --disable-zipwriter Disable zipwriter component],
1970 AC_SUBST(MOZ_ZIPWRITER)
1972 dnl ========================================================
1974 dnl = Feature options that require extra sources to be pulled
1976 dnl ========================================================
1977 dnl MOZ_ARG_HEADER(Features that require extra sources)
1979 dnl ========================================================
1981 dnl = Runtime debugging and Optimization Options
1983 dnl ========================================================
1984 MOZ_ARG_HEADER(Runtime debugging and Optimizations)
1986 dnl ========================================================
1987 dnl = Enable code optimization. ON by default.
1988 dnl ========================================================
1990 # Use value from moz.configure if one is defined. Else use our computed
1992 if test -n "${MOZ_CONFIGURE_OPTIMIZE_FLAGS}"; then
1993 MOZ_OPTIMIZE_FLAGS=${MOZ_CONFIGURE_OPTIMIZE_FLAGS}
1996 if test "$COMPILE_ENVIRONMENT"; then
1997 if test -n "$MOZ_OPTIMIZE"; then
1998 AC_MSG_CHECKING([for valid C compiler optimization flags])
1999 _SAVE_CFLAGS=$CFLAGS
2000 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
2001 AC_TRY_COMPILE([#include <stdio.h>],
2002 [printf("Hello World\n");],
2005 AC_MSG_RESULT([$_results])
2006 if test "$_results" = "no"; then
2007 AC_MSG_ERROR([These compiler flags for C are invalid: $MOZ_OPTIMIZE_FLAGS])
2009 CFLAGS=$_SAVE_CFLAGS
2010 if test -n "$MOZ_LTO" -a -n "$CLANG_CC"; then
2011 # When using llvm-based LTO, non numeric optimization levels are
2012 # not supported by the linker, so force the linker to use -O2 (
2013 # which doesn't influence the level compilation units are actually
2015 case " $MOZ_OPTIMIZE_FLAGS " in
2016 *\ -Os\ *|*\ -Oz\ *)
2017 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -O2"
2022 fi # COMPILE_ENVIRONMENT
2024 AC_SUBST_LIST(MOZ_OPTIMIZE_FLAGS)
2025 AC_SUBST_LIST(MOZ_OPTIMIZE_LDFLAGS)
2026 AC_SUBST_LIST(MOZ_PGO_OPTIMIZE_FLAGS)
2028 dnl ========================================================
2029 dnl = Enable runtime logging
2030 dnl ========================================================
2031 AC_DEFINE(MOZ_LOGGING)
2032 AC_DEFINE(FORCE_PR_LOG)
2034 dnl ========================================================
2035 dnl = This will enable logging of addref, release, ctor, dtor.
2036 dnl ========================================================
2037 _ENABLE_LOGREFCNT=42
2038 MOZ_ARG_ENABLE_BOOL(logrefcnt,
2039 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
2040 _ENABLE_LOGREFCNT=1,
2041 _ENABLE_LOGREFCNT= )
2042 if test "$_ENABLE_LOGREFCNT" = "1"; then
2043 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
2044 elif test -z "$_ENABLE_LOGREFCNT"; then
2045 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
2048 dnl ========================================================
2049 dnl moz_dump_painting
2050 dnl ========================================================
2051 MOZ_ARG_ENABLE_BOOL(dump-painting,
2052 [ --enable-dump-painting Enable paint debugging.],
2053 MOZ_DUMP_PAINTING=1,
2054 MOZ_DUMP_PAINTING= )
2055 if test -n "$MOZ_DUMP_PAINTING"; then
2056 AC_DEFINE(MOZ_DUMP_PAINTING)
2057 AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
2059 if test -n "$MOZ_DEBUG"; then
2060 AC_DEFINE(MOZ_DUMP_PAINTING)
2063 case "${OS_TARGET}" in
2064 Android|WINNT|Darwin)
2065 MOZ_GLUE_IN_PROGRAM=
2068 dnl On !Android !Windows !OSX, we only want to link executables against mozglue
2069 MOZ_GLUE_IN_PROGRAM=1
2070 AC_DEFINE(MOZ_GLUE_IN_PROGRAM)
2074 dnl ========================================================
2075 dnl = Jemalloc build setup
2076 dnl ========================================================
2077 if test -z "$MOZ_MEMORY"; then
2080 if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
2081 AC_MSG_WARN([When not building jemalloc, you need to set WIN32_REDIST_DIR to the path to the Visual C++ Redist (usually VCINSTALLDIR/redist/x86/Microsoft.VC80.CRT, for VC++ v8) if you intend to distribute your build.])
2086 dnl The generic feature tests that determine how to compute ncpus are long and
2087 dnl complicated. Therefore, simply define special cpp variables for the
2088 dnl platforms we have special knowledge of.
2091 export MOZ_NO_DEBUG_RTL=1
2095 AC_SUBST(MOZ_GLUE_IN_PROGRAM)
2097 dnl ========================================================
2098 dnl = Enable using the clang plugin to build
2099 dnl ========================================================
2101 if test -n "$COMPILE_ENVIRONMENT"; then
2102 MOZ_CONFIG_CLANG_PLUGIN
2103 fi # COMPILE_ENVIRONMENT
2105 dnl ========================================================
2106 dnl = frontend JS debug mode
2107 dnl ========================================================
2109 MOZ_ARG_ENABLE_BOOL(debug-js-modules,
2110 [ --enable-debug-js-modules Enable debug mode for frontend JS libraries],
2114 AC_SUBST(DEBUG_JS_MODULES)
2116 dnl ========================================================
2118 dnl = Profiling and Instrumenting
2120 dnl ========================================================
2121 MOZ_ARG_HEADER(Profiling and Instrumenting)
2123 dnl ========================================================
2124 dnl = Support for demangling undefined symbols
2125 dnl ========================================================
2126 if test -z "$SKIP_LIBRARY_CHECKS"; then
2129 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
2133 # Demangle only for debug or DMD builds
2134 MOZ_DEMANGLE_SYMBOLS=
2135 if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$MOZ_DMD"; then
2136 MOZ_DEMANGLE_SYMBOLS=1
2137 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
2139 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
2141 dnl ========================================================
2142 dnl = Support for gcc stack unwinding (from gcc 3.3)
2143 dnl ========================================================
2144 if test -z "$SKIP_LIBRARY_CHECKS"; then
2147 MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
2151 dnl ========================================================
2155 dnl ========================================================
2156 MOZ_ARG_HEADER(Misc. Options)
2158 dnl ========================================================
2159 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
2160 dnl ========================================================
2161 MOZ_ARG_WITH_STRING(user-appdir,
2162 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
2163 [ val=`echo $withval`
2164 if echo "$val" | grep "\/" >/dev/null; then
2165 AC_MSG_ERROR("Homedir must be single relative path.")
2170 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
2172 if test -z "$SKIP_COMPILER_CHECKS"; then
2173 dnl ========================================================
2175 dnl = Compiler Options
2177 dnl ========================================================
2178 MOZ_ARG_HEADER(Compiler Options)
2180 dnl ========================================================
2181 dnl Check for gcc -pipe support
2182 dnl ========================================================
2183 AC_MSG_CHECKING([for -pipe support])
2184 if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
2185 dnl Any gcc that supports firefox supports -pipe.
2186 CFLAGS="$CFLAGS -pipe"
2187 CXXFLAGS="$CXXFLAGS -pipe"
2188 AC_MSG_RESULT([yes])
2193 fi # ! SKIP_COMPILER_CHECKS
2197 if test "$COMPILE_ENVIRONMENT"; then
2199 fi # COMPILE_ENVIRONMENT
2201 dnl ========================================================
2203 dnl = Static Build Options
2205 dnl ========================================================
2206 MOZ_ARG_HEADER(Static build options)
2208 if test -z "$MOZ_SYSTEM_ZLIB"; then
2209 if test -n "$JS_SHARED_LIBRARY" -o -n "$MOZ_LINKER" -o "$MOZ_WIDGET_TOOLKIT" = android; then
2211 AC_DEFINE(ZLIB_IN_MOZGLUE)
2215 AC_SUBST(ZLIB_IN_MOZGLUE)
2217 dnl ========================================================
2219 dnl = Standalone module options
2221 dnl ========================================================
2222 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
2225 dnl ========================================================
2227 if test -z "$SKIP_PATH_CHECKS"; then
2228 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
2229 if test "$MOZ_ENABLE_GTK" ; then
2230 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
2235 if test -z "${GLIB_GMODULE_LIBS}" \
2236 -a -n "${GLIB_CONFIG}"\
2237 -a "${GLIB_CONFIG}" != no\
2239 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
2242 AC_SUBST_LIST(GLIB_GMODULE_LIBS)
2244 if test "$USE_FC_FREETYPE"; then
2245 if test "$COMPILE_ENVIRONMENT"; then
2246 dnl ========================================================
2247 dnl = Check for freetype2 functionality
2248 dnl ========================================================
2249 if test "$_HAVE_FREETYPE2" -a -z "$MOZ_TREE_FREETYPE"; then
2251 _SAVE_CFLAGS="$CFLAGS"
2252 LIBS="$LIBS $FT2_LIBS"
2253 CFLAGS="$CFLAGS $FT2_CFLAGS"
2255 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
2256 ac_cv_member_FT_Bitmap_Size_y_ppem,
2257 [AC_TRY_COMPILE([#include <ft2build.h>
2258 #include FT_FREETYPE_H],
2260 if (sizeof s.y_ppem) return 0;
2262 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
2263 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
2264 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
2265 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
2267 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
2269 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
2270 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
2271 [FT_Bitmap_Size structure includes y_ppem field])
2273 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table)
2276 CFLAGS="$_SAVE_CFLAGS"
2279 _SAVE_CPPFLAGS="$CPPFLAGS"
2280 CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
2281 MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
2282 [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
2283 CPPFLAGS="$_SAVE_CPPFLAGS"
2287 dnl ========================================================
2288 dnl Check if we need the 32-bit Linux SSE2 error dialog
2289 dnl ========================================================
2291 AC_SUBST(MOZ_LINUX_32_SSE2_STARTUP_ERROR)
2293 dnl ========================================================
2294 dnl Check for pixman and cairo
2295 dnl ========================================================
2298 MOZ_ARG_ENABLE_BOOL(system-cairo,
2299 [ --enable-system-cairo Obsolete: do not use this option],
2300 AC_MSG_ERROR(--enable-system-cairo is not supported),
2304 MOZ_ARG_ENABLE_BOOL(system-pixman,
2305 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
2307 MOZ_TREE_PIXMAN=force,
2310 if test "$MOZ_TREE_PIXMAN"; then
2311 AC_DEFINE(MOZ_TREE_PIXMAN)
2313 PKG_CHECK_MODULES(MOZ_PIXMAN, pixman-1 >= 0.19.2)
2316 MOZ_CAIRO_CFLAGS="-I${DIST}/include/cairo"
2317 AC_DEFINE(MOZ_TREE_CAIRO)
2319 if test "$OS_ARCH" = "WINNT"; then
2320 # For now we assume that we will have a uint64_t available through
2321 # one of the above headers or mozstdint.h.
2322 AC_DEFINE(HAVE_UINT64_T)
2325 # Define macros for cairo-features.h
2326 TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
2327 if test "$MOZ_X11"; then
2328 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
2329 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
2330 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
2332 if test "$_HAVE_FREETYPE2"; then
2333 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
2334 MOZ_ENABLE_CAIRO_FT=1
2335 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
2338 case "$MOZ_WIDGET_TOOLKIT" in
2340 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
2341 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
2342 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
2345 WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
2346 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
2347 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
2349 if test "$COMPILE_ENVIRONMENT"; then
2350 MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
2354 if test "$USE_FC_FREETYPE"; then
2355 FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
2357 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
2358 AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
2360 AC_SUBST(PS_SURFACE_FEATURE)
2361 AC_SUBST(SVG_SURFACE_FEATURE)
2362 AC_SUBST(XLIB_SURFACE_FEATURE)
2363 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
2364 AC_SUBST(QUARTZ_SURFACE_FEATURE)
2365 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
2366 AC_SUBST(WIN32_SURFACE_FEATURE)
2367 AC_SUBST(OS2_SURFACE_FEATURE)
2368 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
2369 AC_SUBST(FT_FONT_FEATURE)
2370 AC_SUBST(FC_FONT_FEATURE)
2371 AC_SUBST(WIN32_FONT_FEATURE)
2372 AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
2373 AC_SUBST(QUARTZ_FONT_FEATURE)
2374 AC_SUBST(PNG_FUNCTIONS_FEATURE)
2375 AC_SUBST(QT_SURFACE_FEATURE)
2376 AC_SUBST(TEE_SURFACE_FEATURE)
2378 if test "$MOZ_X11"; then
2379 MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
2382 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
2384 case "$MOZ_WIDGET_TOOLKIT" in
2386 TK_CFLAGS="$MOZ_CAIRO_CFLAGS $MOZ_PIXMAN_CFLAGS"
2387 TK_LIBS="$MOZ_CAIRO_LIBS $MOZ_PIXMAN_LIBS"
2391 AC_SUBST(MOZ_TREE_CAIRO)
2392 AC_SUBST_LIST(MOZ_CAIRO_CFLAGS)
2393 AC_SUBST_LIST(MOZ_CAIRO_LIBS)
2394 AC_SUBST_LIST(MOZ_CAIRO_OSLIBS)
2395 AC_SUBST(MOZ_TREE_PIXMAN)
2397 BINDGEN_SYSTEM_FLAGS="$_BINDGEN_CFLAGS $NSPR_CFLAGS $NSS_CFLAGS $MOZ_PIXMAN_CFLAGS $MOZ_CAIRO_CFLAGS"
2398 AC_SUBST(BINDGEN_SYSTEM_FLAGS)
2399 BINDGEN_SYSTEM_TOML_FLAGS="$BINDGEN_SYSTEM_FLAGS"
2400 AC_SUBST_TOML_LIST(BINDGEN_SYSTEM_TOML_FLAGS)
2402 dnl ========================================================
2404 dnl ========================================================
2405 MOZ_ARG_DISABLE_BOOL(xul,
2406 [ --disable-xul Disable XUL],
2408 if test "$MOZ_XUL"; then
2411 dnl remove extensions that require XUL
2412 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/irc//' -e 's/tasks//'`
2417 dnl ========================================================
2418 dnl necko configuration options
2419 dnl ========================================================
2422 dnl option to disable necko's wifi scanner
2425 if test "$MOZ_WIDGET_TOOLKIT"; then
2427 case "$OS_TARGET" in
2431 DragonFly|FreeBSD|WINNT)
2442 MOZ_ARG_DISABLE_BOOL(necko-wifi,
2443 [ --disable-necko-wifi Disable necko wifi scanner],
2447 if test "$NECKO_WIFI"; then
2448 if test -z "$MOZ_ENABLE_DBUS" -a -n "$NECKO_WIFI_DBUS"; then
2449 AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi])
2451 AC_DEFINE(NECKO_WIFI)
2453 AC_SUBST(NECKO_WIFI)
2454 AC_SUBST(NECKO_WIFI_DBUS)
2456 dnl ========================================================
2458 dnl = Maintainer debug option (no --enable equivalent)
2460 dnl ========================================================
2462 AC_SUBST_LIST(ASFLAGS)
2465 AC_SUBST(MOZ_AUTH_EXTENSION)
2466 AC_SUBST_LIST(MOZ_DEBUG_LDFLAGS)
2467 AC_SUBST_LIST(WARNINGS_CFLAGS)
2468 AC_SUBST_SET(MOZ_EXTENSIONS)
2470 AC_SUBST(MOZ_UNIVERSALCHARDET)
2471 AC_SUBST(MOZ_SPELLCHECK)
2472 AC_SUBST(MOZ_ANDROID_ANR_REPORTER)
2473 AC_SUBST(MOZ_CRASHREPORTER)
2474 AC_SUBST(MOZ_CRASHREPORTER_INJECTOR)
2475 AC_SUBST(MOZ_STUB_INSTALLER)
2476 AC_SUBST(MOZ_UPDATER)
2478 AC_SUBST(MOZ_ANDROID_APPLICATION_CLASS)
2479 AC_SUBST(MOZ_ANDROID_BROWSER_INTENT_CLASS)
2480 AC_SUBST(INCREMENTAL_LINKER)
2482 AC_SUBST_LIST(MOZ_FIX_LINK_PATHS)
2484 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
2485 AC_SUBST(MOZ_LINKER_EXTRACT)
2487 if test -n "$MOZ_BINARY_EXTENSIONS"; then
2488 AC_DEFINE(MOZ_BINARY_EXTENSIONS)
2491 dnl ========================================================
2492 dnl = Mac bundle name prefix
2493 dnl ========================================================
2494 MOZ_ARG_WITH_STRING(macbundlename-prefix,
2495 [ --with-macbundlename-prefix=prefix
2496 Prefix for MOZ_MACBUNDLE_NAME],
2497 [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
2499 MOZ_MACBUNDLE_NAME=$MOZ_APP_DISPLAYNAME
2500 if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
2501 MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
2504 if test "$MOZ_DEBUG"; then
2505 MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME}Debug.app"
2507 MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
2509 AC_SUBST(MOZ_MACBUNDLE_NAME)
2511 dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
2512 # If the MOZ_MACBUNDLE_ID is defined in the configure.sh, use it
2513 # Otherwise, use MOZ_APP_DISPLAYNAME
2514 if test -z "$MOZ_MACBUNDLE_ID"; then
2515 MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr 'A-Z' 'a-z' | tr -dc 'a-z-'`
2517 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
2518 if test "$MOZ_DEBUG"; then
2519 MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
2522 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
2523 AC_SUBST(MOZ_MACBUNDLE_ID)
2525 dnl ========================================================
2526 dnl = Child Process Name for IPC
2527 dnl ========================================================
2528 if test "$MOZ_WIDGET_TOOLKIT" != "android"; then
2529 MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}"
2531 # We want to let Android unpack the file at install time, but it only does
2532 # so if the file is named libsomething.so. The lib/ path is also required
2533 # because the unpacked file will be under the lib/ subdirectory and will
2534 # need to be executed from that path.
2535 MOZ_CHILD_PROCESS_NAME="libplugin-container.so"
2537 MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/"
2538 MOZ_CHILD_PROCESS_BUNDLENAME="${MOZ_APP_DISPLAYNAME}CP"
2540 AC_SUBST(MOZ_CHILD_PROCESS_NAME)
2541 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE)
2542 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLENAME)
2544 # The following variables are available to branding and application
2545 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
2546 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
2547 # impacts profile location and user-visible fields.
2548 # - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
2549 # Mac Bundle name, Updater, Installer), it is typically used for nightly
2550 # builds (e.g. Aurora for Firefox).
2551 # - MOZ_APP_PROFILE: When set, used for application.ini's
2552 # "Profile" field, which controls profile location.
2553 # - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
2554 # crash reporter server url.
2555 # - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
2557 # The following environment variables used to have an effect, but don't anymore:
2558 # - MOZ_APP_VERSION: Defines the application version number. This was replaced with
2559 # the contents from the version.txt file in the application directory, or
2560 # browser/config/version.txt if there isn't one.
2561 # - MOZ_APP_VERSION_DISPLAY: Defines the application version number. Used
2562 # in the "About" window. This was replaced with the contents from the
2563 # version_display.txt or version.txt in the application directory, or
2564 # browser/config/version_display.txt.
2566 # For extensions and langpacks, we require a max version that is compatible
2567 # across security releases. MOZ_APP_MAXVERSION is our method for doing that.
2568 # 24.0a1 and 24.0a2 aren't affected
2570 # 24.1.1 becomes 24.*
2571 IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
2572 if test -z "$IS_ALPHA"; then
2574 if test "$(basename $MOZ_BUILD_APP)" = "suite"; then
2575 MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\.[0-9]*\).*|\1|"`.*
2577 MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\).*|\1|"`.*
2581 MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
2584 AC_SUBST(MOZ_APP_DISPLAYNAME)
2585 AC_SUBST(MOZ_APP_VENDOR)
2586 AC_SUBST(MOZ_APP_PROFILE)
2587 AC_SUBST(MOZ_APP_ID)
2588 AC_SUBST(MAR_CHANNEL_ID)
2589 AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
2590 AC_SUBST(MOZ_PROFILE_MIGRATOR)
2591 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
2592 AC_SUBST(MOZ_APP_UA_NAME)
2593 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
2594 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL, $BROWSER_CHROME_URL)
2595 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL_QUOTED, "$BROWSER_CHROME_URL")
2597 AC_SUBST(MOZ_APP_MAXVERSION)
2598 AC_SUBST(MOZ_PKG_SPECIAL)
2599 AC_SUBST(MOZ_SIMPLE_PACKAGE_NAME)
2601 if test "$MOZILLA_OFFICIAL"; then
2602 # Build revisions should always be present in official builds
2603 MOZ_INCLUDE_SOURCE_INFO=1
2606 # External builds (specifically Ubuntu) may drop the hg repo information, so we allow to
2607 # explicitly set the repository and changeset information in.
2608 AC_SUBST(MOZ_SOURCE_REPO)
2609 AC_SUBST(MOZ_SOURCE_CHANGESET)
2610 AC_SUBST(MOZ_INCLUDE_SOURCE_INFO)
2612 dnl If we have any service that uploads data (and requires data submission
2613 dnl policy alert), set MOZ_DATA_REPORTING.
2614 dnl We need SUBST for build system and DEFINE for xul preprocessor.
2615 if test -n "$MOZ_TELEMETRY_REPORTING" || test -n "$MOZ_SERVICES_HEALTHREPORT" || test -n "$MOZ_CRASHREPORTER" || test -n "$MOZ_NORMANDY"; then
2616 MOZ_DATA_REPORTING=1
2617 AC_DEFINE(MOZ_DATA_REPORTING)
2618 AC_SUBST(MOZ_DATA_REPORTING)
2622 AC_SUBST(WIN32_REDIST_DIR)
2623 AC_SUBST(WIN_UCRT_REDIST_DIR)
2625 dnl Echo the CFLAGS to remove extra whitespace.
2627 $_COMPILATION_CFLAGS \
2631 $_WARNINGS_CXXFLAGS \
2632 $_COMPILATION_CXXFLAGS \
2635 COMPILE_CFLAGS=`echo \
2639 COMPILE_CXXFLAGS=`echo \
2640 $_DEFINES_CXXFLAGS \
2644 $_WARNINGS_HOST_CFLAGS \
2645 $_COMPILATION_HOST_CFLAGS \
2648 HOST_CXXFLAGS=`echo \
2649 $_WARNINGS_HOST_CXXFLAGS \
2650 $_COMPILATION_HOST_CXXFLAGS \
2653 AC_SUBST(MOZ_SYSTEM_PNG)
2655 AC_SUBST_LIST(MOZ_PNG_CFLAGS)
2656 AC_SUBST_LIST(MOZ_PNG_LIBS)
2658 HOST_CMFLAGS="-x objective-c -fobjc-exceptions"
2659 HOST_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
2660 OS_COMPILE_CMFLAGS="-x objective-c -fobjc-exceptions"
2661 OS_COMPILE_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
2662 if test "$MOZ_WIDGET_TOOLKIT" = uikit; then
2663 OS_COMPILE_CMFLAGS="$OS_COMPILE_CMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
2664 OS_COMPILE_CMMFLAGS="$OS_COMPILE_CMMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
2666 AC_SUBST(HOST_CMFLAGS)
2667 AC_SUBST(HOST_CMMFLAGS)
2668 AC_SUBST(OS_COMPILE_CMFLAGS)
2669 AC_SUBST(OS_COMPILE_CMMFLAGS)
2672 OS_CXXFLAGS="$CXXFLAGS"
2673 OS_CPPFLAGS="$CPPFLAGS"
2674 OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
2675 OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
2676 OS_LDFLAGS="$LDFLAGS"
2678 AC_SUBST_LIST(OS_CFLAGS)
2679 AC_SUBST_LIST(OS_CXXFLAGS)
2680 AC_SUBST_LIST(OS_CPPFLAGS)
2681 AC_SUBST_LIST(OS_COMPILE_CFLAGS)
2682 AC_SUBST_LIST(OS_COMPILE_CXXFLAGS)
2683 AC_SUBST_LIST(OS_LDFLAGS)
2688 AC_SUBST_LIST(HOST_CFLAGS)
2689 AC_SUBST_LIST(HOST_CPPFLAGS)
2690 AC_SUBST_LIST(HOST_CXXFLAGS)
2691 AC_SUBST(HOST_LDFLAGS)
2692 AC_SUBST_LIST(HOST_OPTIMIZE_FLAGS)
2693 AC_SUBST(HOST_BIN_SUFFIX)
2695 AC_SUBST(TARGET_XPCOM_ABI)
2696 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
2697 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1)
2698 AC_SUBST(HAVE_X86_AVX2)
2699 AC_SUBST(HAVE_ALTIVEC)
2701 AC_SUBST(DSO_LDOPTS)
2702 AC_SUBST(BIN_SUFFIX)
2704 AC_SUBST(WIN32_CONSOLE_EXE_LDFLAGS)
2705 AC_SUBST(WIN32_GUI_EXE_LDFLAGS)
2707 AC_SUBST(MOZ_DEVTOOLS)
2709 AC_SUBST(MOZ_PACKAGE_JSSHELL)
2713 dnl Host JavaScript runtime, if any, to use during cross compiles.
2716 AC_SUBST(NSS_EXTRA_SYMBOLS_FILE)
2718 if test -n "$COMPILE_ENVIRONMENT"; then
2719 AC_CHECK_FUNCS(posix_fadvise posix_fallocate)
2721 dnl Check for missing components
2722 if test "$MOZ_X11"; then
2723 dnl ====================================================
2724 dnl = Check if X headers exist
2725 dnl ====================================================
2726 _SAVE_CFLAGS=$CFLAGS
2727 CFLAGS="$CFLAGS $XCFLAGS"
2731 #include <X11/Xlib.h>
2732 #include <X11/Intrinsic.h>
2733 #include <X11/extensions/XShm.h>
2737 if ((dpy = XOpenDisplay(NULL)) == NULL) {
2738 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
2742 [ AC_MSG_ERROR([Can't find X headers (install libxt-dev (Debian/Ubuntu), libXt-devel (Fedora), or xorg-x11-libXt-devel (SuSE)).]) ])
2743 CFLAGS="$_SAVE_CFLAGS"
2745 if test -n "$MISSING_X"; then
2746 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
2751 fi # COMPILE_ENVIRONMENT
2753 dnl Set various defines and substitutions
2754 dnl ========================================================
2756 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK" ; then
2757 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
2758 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
2759 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
2760 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
2761 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
2762 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
2763 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
2764 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
2767 AC_SUBST(MOZ_DEV_EDITION)
2768 if test -n "$MOZ_DEV_EDITION"; then
2769 AC_DEFINE(MOZ_DEV_EDITION)
2772 if test "$MOZ_DEBUG" -o "$DEVELOPER_OPTIONS"; then
2776 if test -n "$A11Y_LOG"; then
2780 dnl Spit out some output
2781 dnl ========================================================
2783 # Avoid using obsolete NSPR features
2784 AC_DEFINE(NO_NSPR_10_SUPPORT)
2786 MOZ_CREATE_CONFIG_STATUS()
2788 rm -fr confdefs* $ac_clean_files