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
58 GDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_14
62 dnl Set various checks
63 dnl ========================================================
66 dnl Initialize the Pthread test variables early so they can be
67 dnl overridden by each platform.
68 dnl ========================================================
72 LDFLAGS="$LDFLAGS $LINKER_LDFLAGS"
74 if test "$COMPILE_ENVIRONMENT"; then
76 fi # COMPILE_ENVIRONMENT
79 *-android*|*-linuxandroid*)
82 AC_PATH_PROG(OBJCOPY,objcopy)
88 dnl ========================================================
89 dnl Checks for compilers.
90 dnl ========================================================
92 if test "$COMPILE_ENVIRONMENT"; then
94 # Run some logic to figure out exe extensions (mostly for mingw's sake)
97 if test "$target" != "$host"; then
103 # Work around the conftest.exe access problem on Windows
107 MOZ_PATH_PROGS(AS, $AS as, $CC)
108 AC_CHECK_PROGS(STRIP, strip, :)
109 AC_CHECK_PROGS(OTOOL, otool, :)
114 dnl ========================================================
115 dnl Special win32 checks
116 dnl ========================================================
122 if test "$GCC" != "yes"; then
123 # Check to see if we are really running in a msvc environemnt
126 # Make sure compilers are valid
127 CXXFLAGS="$CXXFLAGS -TP"
130 AC_TRY_COMPILE([#include <stdio.h>],
131 [ printf("Hello World\n"); ],,
132 AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
135 AC_TRY_COMPILE([#include <new.h>],
136 [ unsigned *test = new unsigned(42); ],,
137 AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
141 _MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
144 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
145 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
146 AC_DEFINE(_USE_MATH_DEFINES) # Otherwise MSVC's math.h doesn't #define M_PI.
149 MSVC_C_RUNTIME_DLL=vcruntime140.dll
150 MSVC_CXX_RUNTIME_DLL=msvcp140.dll
152 # -Zc:sizedDealloc- disables C++14 global sized deallocation (see bug 1160146)
153 CXXFLAGS="$CXXFLAGS -Zc:sizedDealloc-"
155 if test -n "$WIN_UCRT_REDIST_DIR"; then
156 if test ! -d "$WIN_UCRT_REDIST_DIR"; then
157 AC_MSG_ERROR([Invalid Windows UCRT Redist directory: ${WIN_UCRT_REDIST_DIR}])
159 WIN_UCRT_REDIST_DIR=`cd "$WIN_UCRT_REDIST_DIR" && (pwd -W 2>/dev/null || pwd)`
162 AC_SUBST(MSVC_C_RUNTIME_DLL)
163 AC_SUBST(MSVC_CXX_RUNTIME_DLL)
165 AC_DEFINE(HAVE_SEH_EXCEPTIONS)
167 if test -n "$WIN32_REDIST_DIR"; then
168 if test ! -d "$WIN32_REDIST_DIR"; then
169 AC_MSG_ERROR([Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}])
171 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && (pwd -W 2>/dev/null || pwd)`
174 # Check linker version, except in lld builds
179 _LD_FULL_VERSION=`"${LINKER}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
180 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
181 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
182 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
189 unset _MSVC_VER_FILTER
192 STL_FLAGS="-I${DIST}/stl_wrappers"
194 # Check w32api version
195 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
196 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
197 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
198 AC_TRY_COMPILE([#include <w32api.h>],
199 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
200 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
201 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
202 #error "test failed."
204 , [ res=yes ], [ res=no ])
205 AC_MSG_RESULT([$res])
206 if test "$res" != "yes"; then
207 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
209 # strsafe.h on mingw uses macros for function deprecation that pollutes namespace
210 # causing problems with local implementations with the same name.
211 AC_DEFINE(STRSAFE_NO_DEPRECATE)
214 CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0"
215 CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0"
217 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
218 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
219 # Require OS features provided by IE 8.0 (Win7)
220 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0800)
225 if test -n "$_WIN32_MSVC"; then
227 SKIP_COMPILER_CHECKS=1
228 SKIP_LIBRARY_CHECKS=1
230 # Since we're skipping compiler and library checks, hard-code
233 AC_DEFINE(HAVE_ISATTY)
236 fi # COMPILE_ENVIRONMENT
241 AC_SUBST_LIST(STL_FLAGS)
242 AC_SUBST(WRAP_STL_INCLUDES)
244 dnl ========================================================
245 dnl Checks for programs.
246 dnl ========================================================
247 if test "$COMPILE_ENVIRONMENT"; then
253 fi # COMPILE_ENVIRONMENT
255 dnl ========================================================
256 dnl set the defaults first
257 dnl ========================================================
258 MOZ_USER_DIR=".mozilla"
260 MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib"
264 dnl Configure platform-specific CPU architecture compiler options.
265 dnl ==============================================================
266 if test "$COMPILE_ENVIRONMENT"; then
268 fi # COMPILE_ENVIRONMENT
270 dnl ========================================================
271 dnl Android libstdc++
272 dnl ========================================================
275 if test "$COMPILE_ENVIRONMENT"; then
277 fi # COMPILE_ENVIRONMENT
279 dnl ========================================================
280 dnl Suppress Clang Argument Warnings
281 dnl ========================================================
282 WARNINGS_CFLAGS="$_WARNINGS_CFLAGS"
283 if test -n "${CLANG_CC}${CLANG_CL}"; then
284 WARNINGS_CFLAGS="-Qunused-arguments $WARNINGS_CFLAGS"
285 CPPFLAGS="-Qunused-arguments ${CPPFLAGS}"
287 if test -n "${CLANG_CXX}${CLANG_CL}"; then
288 _WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}"
291 if test -n "$COMPILE_ENVIRONMENT"; then
295 dnl ========================================================
296 dnl GNU specific defaults
297 dnl ========================================================
298 if test "$GNU_CC"; then
302 SSSE3_FLAGS="-mssse3"
303 CFLAGS="$CFLAGS -fno-strict-aliasing"
306 if test "$OS_ARCH" != "WINNT" -o -z "$CLANG_CC"; then
307 DSO_PIC_CFLAGS='-fPIC'
308 ASFLAGS="$ASFLAGS -fPIC"
311 AC_MSG_CHECKING([for --noexecstack option to as])
313 CFLAGS="$CFLAGS -Wa,--noexecstack"
314 AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
315 [ASFLAGS="$ASFLAGS -Wa,--noexecstack"],
318 AC_MSG_CHECKING([for -z noexecstack option to ld])
319 _SAVE_LDFLAGS=$LDFLAGS
320 LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
321 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
323 LDFLAGS=$_SAVE_LDFLAGS)
325 AC_MSG_CHECKING([for -z text option to ld])
326 _SAVE_LDFLAGS=$LDFLAGS
327 LDFLAGS="$LDFLAGS -Wl,-z,text"
328 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
330 LDFLAGS=$_SAVE_LDFLAGS)
332 AC_MSG_CHECKING([for -z relro option to ld])
333 _SAVE_LDFLAGS=$LDFLAGS
334 LDFLAGS="$LDFLAGS -Wl,-z,relro"
335 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
337 LDFLAGS=$_SAVE_LDFLAGS)
339 AC_MSG_CHECKING([for -z nocopyreloc option to ld])
340 _SAVE_LDFLAGS=$LDFLAGS
341 LDFLAGS="$LDFLAGS -Wl,-z,nocopyreloc"
342 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
344 LDFLAGS=$_SAVE_LDFLAGS)
346 AC_MSG_CHECKING([for -Bsymbolic-functions option to ld])
347 _SAVE_LDFLAGS=$LDFLAGS
348 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
349 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
351 LDFLAGS=$_SAVE_LDFLAGS)
353 AC_MSG_CHECKING([for --build-id=sha1 option to ld])
354 _SAVE_LDFLAGS=$LDFLAGS
355 LDFLAGS="$LDFLAGS -Wl,--build-id=sha1"
356 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
358 LDFLAGS=$_SAVE_LDFLAGS)
360 AC_MSG_CHECKING([for --ignore-unresolved-symbol option to ld])
361 HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=
362 _SAVE_LDFLAGS=$LDFLAGS
363 LDFLAGS="$LDFLAGS -Wl,--ignore-unresolved-symbol,environ"
364 AC_TRY_LINK(,,AC_MSG_RESULT([yes])
365 [HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=1],
367 LDFLAGS=$_SAVE_LDFLAGS
369 # Check for -mssse3 on $CC
370 AC_MSG_CHECKING([if toolchain supports -mssse3 option])
371 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=
373 CFLAGS="$CFLAGS -mssse3"
374 AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes])
375 [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1],
379 # Check for -msse4.1 on $CC
380 AC_MSG_CHECKING([if toolchain supports -msse4.1 option])
381 HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=
383 CFLAGS="$CFLAGS -msse4.1"
384 AC_TRY_COMPILE([asm ("pmulld %xmm6,%xmm0");],,AC_MSG_RESULT([yes])
385 [HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1],
389 case "${CPU_ARCH}" in
391 AC_MSG_CHECKING(for x86 AVX2 asm support in compiler)
393 [asm volatile ("vpermq \$0xd8,%ymm0,%ymm0 \n");],
394 result="yes", result="no")
395 AC_MSG_RESULT("$result")
396 if test "$result" = "yes"; then
402 AC_MSG_CHECKING([whether we can enable AltiVec support])
405 CFLAGS="$CFLAGS -maltivec"
406 AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
414 if test "$GCC_USE_GNU_LD"; then
415 # Some tools like ASan use a runtime library that is only
416 # linked against executables, so we must allow undefined
417 # symbols for shared objects in some cases.
418 if test -z "$MOZ_ASAN$MOZ_MSAN$MOZ_UBSAN$MOZ_TSAN$FUZZING_INTERFACES"; then
419 # Don't allow undefined symbols in libraries
420 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
422 # BSDs need `environ' exposed for posix_spawn (bug 753046)
424 DragonFly|FreeBSD|NetBSD|OpenBSD)
425 if test -n "$HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED"; then
426 DSO_LDOPTS="$DSO_LDOPTS -Wl,--ignore-unresolved-symbol,environ"
428 DSO_LDOPTS="$DSO_LDOPTS -Wl,--warn-unresolved-symbols"
435 _DEFINES_CFLAGS="-include $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
437 ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS"
440 if test "$GNU_CXX"; then
441 CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing"
443 _DEFINES_CXXFLAGS="-DMOZILLA_CLIENT -include $_objdir/mozilla-config.h"
446 dnl ========================================================
448 dnl ========================================================
450 if test "$MOZ_DMD"; then
451 if test "${CPU_ARCH}" = "arm"; then
452 CFLAGS="$CFLAGS -funwind-tables"
453 CXXFLAGS="$CXXFLAGS -funwind-tables"
457 dnl ========================================================
458 dnl System overrides of the defaults for host
459 dnl ========================================================
462 if test -n "$_WIN32_MSVC"; then
463 HOST_CFLAGS="$HOST_CFLAGS"
465 HOST_CFLAGS="$HOST_CFLAGS -mwindows"
467 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN -DWIN32 -D_WIN32 -D_CRT_SECURE_NO_WARNINGS"
468 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
471 case "${host_cpu}" in
473 if test -n "$_WIN32_MSVC"; then
474 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
478 if test -n "$_WIN32_MSVC"; then
479 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
481 HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
487 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX"
488 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
491 *-linux*|*-kfreebsd*-gnu|*-gnu*)
492 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
493 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
497 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
498 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
502 dnl ========================================================
503 dnl System overrides of the defaults for target
504 dnl ========================================================
508 MOZ_OPTIMIZE_FLAGS="-O3"
509 CXXFLAGS="$CXXFLAGS -stdlib=libc++"
511 # The ExceptionHandling framework is needed for Objective-C exception
512 # logging code in nsObjCExceptions.h. Currently we only use that in debug
514 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling";
516 dnl DTrace and -dead_strip don't interact well. See bug 403132.
517 dnl ===================================================================
518 if test "x$enable_dtrace" = "xyes"; then
519 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
521 dnl check for the presence of the -dead_strip linker flag
522 AC_MSG_CHECKING([for -dead_strip option to ld])
523 _SAVE_LDFLAGS=$LDFLAGS
524 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
525 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
526 if test -n "$_HAVE_DEAD_STRIP" ; then
528 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
533 LDFLAGS=$_SAVE_LDFLAGS
536 MOZ_FIX_LINK_PATHS="-Wl,-executable_path,${DIST}/bin"
539 *-android*|*-linuxandroid*)
540 if test "$COMPILE_ENVIRONMENT" -a -n "$MOZ_MEMORY"; then
544 if test -z "$CLANG_CC"; then
545 MOZ_OPTIMIZE_FLAGS="-freorder-blocks -fno-reorder-functions -Os"
547 # From https://github.com/android-ndk/ndk/issues/133#issuecomment-308549264
548 # -Oz is smaller than -Os on clang.
549 MOZ_OPTIMIZE_FLAGS="-Oz"
550 # Disable the outliner, which causes performance regressions, and is
551 # enabled on some platforms at -Oz.
552 if test -z "$MOZ_LTO"; then
553 DISABLE_OUTLINER="-mno-outline"
555 CFLAGS="$CFLAGS $DISABLE_OUTLINER"
556 AC_TRY_COMPILE(,,[MOZ_OPTIMIZE_FLAGS="$MOZ_OPTIMIZE_FLAGS $DISABLE_OUTLINER"])
557 CFLAGS="$_SAVE_CFLAGS"
559 DISABLE_OUTLINER="-Wl,-plugin-opt=-enable-machine-outliner=never"
560 _SAVE_LDFLAGS=$LDFLAGS
561 LDFLAGS="$LDFLAGS $MOZ_LTO_LDFLAGS $DISABLE_OUTLINER"
562 AC_TRY_LINK(,,[MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS $DISABLE_OUTLINER"])
563 LDFLAGS="$_SAVE_LDFLAGS"
569 if test "$GNU_CC" -o "$GNU_CXX"; then
570 MOZ_PGO_OPTIMIZE_FLAGS="-O3"
571 if test -n "$MOZ_DEBUG"; then
572 MOZ_OPTIMIZE_FLAGS="-Os"
574 MOZ_OPTIMIZE_FLAGS="-O2"
576 if test -z "$CLANG_CC"; then
577 MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS"
581 case "${target_cpu}" in
583 CFLAGS="$CFLAGS -mieee"
584 CXXFLAGS="$CXXFLAGS -mieee"
591 # certain versions of cygwin's makedepend barf on the
592 # #include <string> vs -I./dist/include/string issue so don't use it
593 if test -n "$GNU_CC" -o -n "$CLANG_CC"; then
594 # $GNU_CC will match gcc and clang; while $CLANG_CC will match only clang
595 if test -z "$CLANG_CC"; then
596 AC_MSG_ERROR(Firefox cannot be built with mingw-gcc and requires a mingw-clang toolchain to work)
600 # mingw doesn't require kernel32, user32, and advapi32 explicitly
601 LIBS="$LIBS -luuid -lusp10 -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32"
604 MOZ_OPTIMIZE_FLAGS="-O2"
606 WIN32_CONSOLE_EXE_LDFLAGS=-mconsole
607 WIN32_GUI_EXE_LDFLAGS=-mwindows
609 # Silence problematic clang warnings
610 CXXFLAGS="$CXXFLAGS -Wno-incompatible-ms-struct"
611 LDFLAGS="$LDFLAGS -Wl,--no-insert-timestamp"
613 TARGET_COMPILER_ABI=msvc
614 STRIP='echo not_strip'
615 # aarch64 doesn't support subsystems below 6.02
616 if test "$CPU_ARCH" = "aarch64"; then
617 WIN32_SUBSYSTEM_VERSION=6.02
619 WIN32_SUBSYSTEM_VERSION=6.01
621 WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION
622 WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
623 DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
624 _DEFINES_CFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
625 _DEFINES_CXXFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
626 CFLAGS="$CFLAGS -W3 -Gy -Zc:inline"
627 CXXFLAGS="$CXXFLAGS -W3 -Gy -Zc:inline"
628 if test -z "$CLANG_CL"; then
629 CPPFLAGS="$CPPFLAGS -utf-8"
631 if test "$CPU_ARCH" = "x86"; then
632 dnl VS2012+ defaults to -arch:SSE2. We want to target nothing
633 dnl more recent, so set that explicitly here unless another
634 dnl target arch has already been set.
636 if test -z `echo $CFLAGS | grep -i [-/]arch:`; then
637 CFLAGS="$CFLAGS -arch:SSE2"
639 if test -z `echo $CXXFLAGS | grep -i [-/]arch:`; then
640 CXXFLAGS="$CXXFLAGS -arch:SSE2"
643 SSE_FLAGS="-arch:SSE"
644 SSE2_FLAGS="-arch:SSE2"
645 dnl MSVC allows the use of intrinsics without any flags
646 dnl and doesn't have a separate arch for SSSE3
647 SSSE3_FLAGS="-arch:SSE2"
649 dnl clang-cl requires appropriate flags to enable SSSE3 support
650 dnl on all architectures.
651 if test -n "$CLANG_CL"; then
652 SSSE3_FLAGS="-mssse3"
654 dnl VS2013+ supports -Gw for better linker optimizations.
655 dnl http://blogs.msdn.com/b/vcblog/archive/2013/09/11/introducing-gw-compiler-switch.aspx
656 dnl Disabled on ASan because it causes false-positive ODR violations.
657 if test -z "$MOZ_ASAN"; then
659 CXXFLAGS="$CXXFLAGS -Gw"
661 # String tail merging doesn't play nice with ASan's ODR checker.
662 LDFLAGS="$LDFLAGS -opt:nolldtailmerge"
664 if test -n "$CLANG_CL"; then
665 # XXX We should combine some of these with our generic GCC-style
668 # Suppress the clang-cl warning for the inline 'new' and 'delete' in mozalloc
669 CXXFLAGS="$CXXFLAGS -Wno-inline-new-delete"
670 # We use offsetof on non-POD objects all the time.
671 # We also suppress this warning on other platforms.
672 CXXFLAGS="$CXXFLAGS -Wno-invalid-offsetof"
673 # This warns for reasonable things like:
674 # enum { X = 0xffffffffU };
675 # which is annoying for IDL headers.
676 CXXFLAGS="$CXXFLAGS -Wno-microsoft-enum-value"
677 # This warns for cases that would be reached by the Microsoft
678 # #include rules, but also currently warns on cases that would
679 # *also* be reached by standard C++ include rules. That
680 # behavior doesn't seem useful, so we turn it off.
681 CXXFLAGS="$CXXFLAGS -Wno-microsoft-include"
682 # We normally error out on unknown pragmas, but since clang-cl
683 # claims to be MSVC, it would be difficult to add
684 # #if defined(_MSC_VER) && !defined(__clang__) everywhere we
685 # use such pragmas, so just ignore them.
686 CFLAGS="$CFLAGS -Wno-unknown-pragmas"
687 CXXFLAGS="$CXXFLAGS -Wno-unknown-pragmas"
688 # We get errors about various #pragma intrinsic directives from
689 # clang-cl, and we don't need to hear about those.
690 CFLAGS="$CFLAGS -Wno-ignored-pragmas"
691 CXXFLAGS="$CXXFLAGS -Wno-ignored-pragmas"
692 # clang-cl's Intrin.h marks things like _ReadWriteBarrier
693 # as __attribute((__deprecated__)). This is nice to know,
694 # but since we don't get the equivalent warning from MSVC,
695 # let's just ignore it.
696 CFLAGS="$CFLAGS -Wno-deprecated-declarations"
697 CXXFLAGS="$CXXFLAGS -Wno-deprecated-declarations"
698 # We use a function like:
699 # __declspec(noreturn) __inline void f() {}
700 # which -Winvalid-noreturn complains about. Again, MSVC seems
701 # OK with it, so let's silence the warning.
702 CFLAGS="$CFLAGS -Wno-invalid-noreturn"
703 CXXFLAGS="$CXXFLAGS -Wno-invalid-noreturn"
704 # Missing |override| on virtual function declarations isn't
705 # something that MSVC currently warns about.
706 CXXFLAGS="$CXXFLAGS -Wno-inconsistent-missing-override"
707 # We use -DHAS_EXCEPTIONS=0, which removes the |throw()|
708 # declaration on |operator delete(void*)|. However, clang-cl
709 # must internally declare |operator delete(void*)| differently,
710 # which causes this warning for virtually every file in the
711 # tree. clang-cl doesn't support -fno-exceptions or equivalent,
712 # so there doesn't seem to be any way to convince clang-cl to
713 # declare |delete| differently. Therefore, suppress this
715 CXXFLAGS="$CXXFLAGS -Wno-implicit-exception-spec-mismatch"
716 # Macros like STDMETHOD() and IFACEMETHOD() can declare
717 # __attribute__((nothrow)) on their respective method declarations,
718 # while the definitions are left without the matching attribute.
719 CXXFLAGS="$CXXFLAGS -Wno-microsoft-exception-spec"
720 # At least one MSVC header and several headers in-tree have
721 # unused typedefs, so turn this on.
722 CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"
723 # jemalloc uses __declspec(allocator) as a profiler hint,
724 # which clang-cl doesn't understand.
725 CXXFLAGS="$CXXFLAGS -Wno-ignored-attributes"
726 # __attribute__((unused)) really means "might be unused" and
727 # we use it to avoid warnings about things that are unused
728 # in some compilation units, but used in many others. This
729 # warning insists on complaining about the latter case, which
730 # is annoying, and rather noisy.
731 CXXFLAGS="$CXXFLAGS -Wno-used-but-marked-unused"
733 # Silence VS2017 15.5+ TR1 deprecation warnings hit by older gtest versions
734 CXXFLAGS="$CXXFLAGS -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING"
735 LIBS="$LIBS user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib"
736 MOZ_DEBUG_LDFLAGS='-DEBUG'
737 if test "$HOST_OS_ARCH" != "WINNT"; then
738 # %_PDB% is a special signal to emit only the PDB basename. This
739 # avoids problems in Windows tools that don't like forward-slashes.
740 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -PDBALTPATH:%_PDB%"
742 # Use a higher optimization level for clang-cl, so we can come closer
743 # to MSVC's performance numbers (see bug 1443590).
744 if test -n "$CLANG_CL"; then
745 MOZ_OPTIMIZE_FLAGS='-O2'
747 MOZ_OPTIMIZE_FLAGS='-O1 -Oi'
750 LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE"
751 if test -z "$DEVELOPER_OPTIONS"; then
752 LDFLAGS="$LDFLAGS -RELEASE"
754 dnl Minimum reqiurement of Gecko is VS2015 or later which supports
755 dnl both SSSE3 and SSE4.1.
756 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1
757 HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1
758 dnl allow AVX2 code from VS2015
761 AC_DEFINE(WIN32_LEAN_AND_MEAN)
762 dnl See http://support.microsoft.com/kb/143208 to use STL
765 MOZ_USER_DIR="Mozilla"
769 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.])
775 if test -n "$GNU_CC"; then
776 CFLAGS="$CFLAGS -mstackrealign"
777 CXXFLAGS="$CXXFLAGS -mstackrealign"
778 LDFLAGS="$LDFLAGS -Wl,--large-address-aware"
780 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
781 LDFLAGS="$LDFLAGS -SAFESEH"
787 if test -n "$_WIN32_MSVC"; then
788 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
793 if test -n "$_WIN32_MSVC"; then
794 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:ARM64"
799 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
806 CFLAGS="$CFLAGS -Dunix"
807 CXXFLAGS="$CXXFLAGS -Dunix"
808 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
809 DSO_PIC_CFLAGS='-fPIC -DPIC'
811 MOZ_PROGRAM_LDFLAGS="$MOZ_PROGRAM_LDFLAGS -Wl,--export-dynamic"
813 DSO_PIC_CFLAGS='-fPIC -DPIC'
816 # This will fail on a.out systems prior to 1.5.1_ALPHA.
817 if test "$LIBRUNPATH"; then
818 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
823 if test -z "$X11BASE"; then
826 MOZ_FIX_LINK_PATHS="$MOZ_FIX_LINK_PATHS -Wl,-rpath-link,${X11BASE}/lib"
828 DSO_PIC_CFLAGS='-fPIC'
829 DSO_LDOPTS='-shared -fPIC'
830 if test "$LIBRUNPATH"; then
831 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
836 MOZ_FIX_LINK_PATHS="-L${DIST}/bin"
841 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
842 MOZ_OPTIMIZE_FLAGS="-O"
845 AC_SUBST_LIST(MMX_FLAGS)
846 AC_SUBST_LIST(SSE_FLAGS)
847 AC_SUBST_LIST(SSE2_FLAGS)
848 AC_SUBST_LIST(SSSE3_FLAGS)
851 if test -n "$MOZ_LINKER"; then
852 AC_DEFINE(MOZ_LINKER)
854 AC_CHECK_PROGS(XZ, xz)
857 if test -z "$COMPILE_ENVIRONMENT"; then
858 SKIP_COMPILER_CHECKS=1
859 SKIP_LIBRARY_CHECKS=1
863 fi # COMPILE_ENVIRONMENT
865 if test -z "$SKIP_COMPILER_CHECKS"; then
866 dnl Checks for typedefs, structures, and compiler characteristics.
867 dnl ========================================================
882 case "${OS_TARGET}" in
886 STL_FLAGS="-I${DIST}/stl_wrappers"
891 if test "$MOZ_BUILD_APP" = "tools/crashreporter"; then
895 dnl Checks for header files.
896 dnl ========================================================
899 bitrig*|dragonfly*|freebsd*|openbsd*)
900 # for stuff like -lXshm
901 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
905 dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
906 AC_CACHE_CHECK(for sockaddr_in.sin_len,
907 ac_cv_sockaddr_in_sin_len,
908 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
909 #include <sys/types.h>
911 #include <netinet/in.h>
912 struct sockaddr_in x;
913 void *foo = (void*) &x.sin_len;],
915 [ac_cv_sockaddr_in_sin_len=true],
916 [ac_cv_sockaddr_in_sin_len=false])])
917 if test "$ac_cv_sockaddr_in_sin_len" = true ; then
918 AC_DEFINE(HAVE_SIN_LEN)
919 dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
920 AC_DEFINE(HAVE_SCONN_LEN)
923 AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
924 ac_cv_sockaddr_in6_sin6_len,
925 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
926 #include <sys/types.h>
928 #include <netinet/in.h>
929 struct sockaddr_in6 x;
930 void *foo = (void*) &x.sin6_len;],
932 [ac_cv_sockaddr_in6_sin6_len=true],
933 [ac_cv_sockaddr_in6_sin6_len=false])])
934 if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
935 AC_DEFINE(HAVE_SIN6_LEN)
938 AC_CACHE_CHECK(for sockaddr.sa_len,
939 ac_cv_sockaddr_sa_len,
940 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
941 #include <sys/types.h>
943 #include <sys/socket.h>
945 void *foo = (void*) &x.sa_len;],
947 [ac_cv_sockaddr_sa_len=true],
948 [ac_cv_sockaddr_sa_len=false])])
949 if test "$ac_cv_sockaddr_sa_len" = true ; then
950 AC_DEFINE(HAVE_SA_LEN)
953 dnl Checks for libraries.
954 dnl ========================================================
955 AC_CHECK_LIB(c_r, gethostbyname_r)
957 dnl We don't want to link with libdl even if it's present on OS X, since
958 dnl it's not used and not part of the default installation. OS/2 has dlfcn
960 dnl We don't want to link against libm or libpthread on Darwin since
961 dnl they both are just symlinks to libSystem and explicitly linking
962 dnl against libSystem causes issues when debugging (see bug 299601).
967 AC_SEARCH_LIBS(dlopen, dl,
968 MOZ_CHECK_HEADER(dlfcn.h,
969 AC_DEFINE(HAVE_DLOPEN)))
973 _SAVE_CFLAGS="$CFLAGS"
974 CFLAGS="$CFLAGS -D_GNU_SOURCE"
975 AC_CHECK_FUNCS(dladdr memmem)
976 CFLAGS="$_SAVE_CFLAGS"
978 if test ! "$GNU_CXX"; then
979 AC_CHECK_LIB(C, demangle)
982 AC_CHECK_LIB(socket, socket)
985 XLIBS="$X_EXTRA_LIBS"
987 dnl ========================================================
988 dnl Checks for X libraries.
989 dnl Ordering is important.
990 dnl Xt is dependent upon SM as of X11R6
991 dnl ========================================================
992 if test -n "$MOZ_X11"; then
993 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
994 _SAVE_LDFLAGS="$LDFLAGS"
996 LDFLAGS="$XLDFLAGS $LDFLAGS"
997 AC_CHECK_LIB(X11, XDrawLines, [XLIBS="-lX11 $XLIBS"],
998 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
999 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
1000 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
1002 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
1003 unset ac_cv_lib_Xt_XtFree
1004 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
1005 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
1006 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
1007 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
1010 dnl ========================================================
1012 dnl ========================================================
1013 AC_CHECK_LIB(xcb, xcb_connect, [XLIBS="-lxcb $XLIBS"],
1014 [MISSING_X="$MISSING_X -lxcb"], $XLIBS)
1015 AC_CHECK_LIB(xcb-shm, xcb_shm_query_version, [XLIBS="-lxcb-shm $XLIBS"],
1016 [MISSING_X="$MISSING_X -lxcb-shm"], $XLIBS)
1017 AC_CHECK_LIB(X11-xcb, XGetXCBConnection, [XLIBS="-lX11-xcb $XLIBS"],
1018 [MISSING_X="$MISSING_X -lX11-xcb"], $XLIBS)
1020 LDFLAGS="$_SAVE_LDFLAGS"
1024 AC_SUBST_LIST(XCFLAGS)
1025 AC_SUBST_LIST(XLDFLAGS)
1026 AC_SUBST_LIST(XLIBS)
1027 AC_SUBST_LIST(XEXT_LIBS)
1028 AC_SUBST_LIST(XT_LIBS)
1030 dnl ========================================================
1031 dnl = pthread support
1032 dnl = Start by checking whether the system support pthreads
1033 dnl ========================================================
1034 case "$target_os" in
1039 AC_CHECK_LIB(pthreads, pthread_create,
1040 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
1041 AC_CHECK_LIB(pthread, pthread_create,
1042 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
1043 AC_CHECK_LIB(c_r, pthread_create,
1044 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
1045 AC_CHECK_LIB(c, pthread_create,
1054 dnl ========================================================
1055 dnl Do the platform specific pthread hackery
1056 dnl ========================================================
1057 if test "$MOZ_USE_PTHREADS"x != x
1060 dnl See if -pthread is supported.
1063 ac_cv_have_dash_pthread=no
1064 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
1065 echo 'int main() { return 0; }' | cat > conftest.c
1066 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
1067 if test $? -eq 0; then
1068 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
1069 ac_cv_have_dash_pthread=yes
1070 case "$target_os" in
1072 # Freebsd doesn't use -pthread for compiles, it uses them for linking
1075 CFLAGS="$CFLAGS -pthread"
1076 CXXFLAGS="$CXXFLAGS -pthread"
1082 AC_MSG_RESULT($ac_cv_have_dash_pthread)
1085 dnl See if -pthreads is supported.
1087 ac_cv_have_dash_pthreads=no
1088 if test "$ac_cv_have_dash_pthread" = "no"; then
1089 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
1090 echo 'int main() { return 0; }' | cat > conftest.c
1091 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
1092 if test $? -eq 0; then
1093 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
1094 ac_cv_have_dash_pthreads=yes
1095 CFLAGS="$CFLAGS -pthreads"
1096 CXXFLAGS="$CXXFLAGS -pthreads"
1100 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
1105 AC_DEFINE(_REENTRANT)
1106 AC_DEFINE(_THREAD_SAFE)
1107 dnl -pthread links in -lpthread, so don't specify it explicitly.
1108 if test "$ac_cv_have_dash_pthread" = "yes"; then
1109 _PTHREAD_LDFLAGS="-pthread"
1113 *-*-openbsd*|*-*-bsdi*)
1114 AC_DEFINE(_REENTRANT)
1115 AC_DEFINE(_THREAD_SAFE)
1116 dnl -pthread links in -lc_r, so don't specify it explicitly.
1117 if test "$ac_cv_have_dash_pthread" = "yes"; then
1118 _PTHREAD_LDFLAGS="-pthread"
1122 *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
1123 AC_DEFINE(_REENTRANT)
1127 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
1128 AC_SUBST(MOZ_USE_PTHREADS)
1129 MOZ_CHECK_HEADERS(pthread.h)
1133 dnl Checks for library functions.
1134 dnl ========================================================
1135 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)
1137 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
1138 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
1139 ac_cv_clock_monotonic,
1140 [for libs in "" -lrt; do
1142 _SAVE_CFLAGS="$CFLAGS"
1144 CFLAGS="$CFLAGS $DSO_PIC_CFLAGS"
1145 dnl clock_gettime is available on OSX since 10.12, so depending on MACOSX_DEPLOYMENT_TARGET,
1146 dnl we should or not be able to use it. To detect if we can, we need to make the
1147 dnl availability attribute strict, so that compilation fails when the target is < 10.12.
1148 AC_TRY_LINK([#define availability(os, ...) availability(os, strict, __VA_ARGS)
1150 [ struct timespec ts;
1151 clock_gettime(CLOCK_MONOTONIC, &ts); ],
1152 ac_cv_clock_monotonic=$libs
1154 CFLAGS="$_SAVE_CFLAGS"
1156 ac_cv_clock_monotonic=no)
1158 CFLAGS="$_SAVE_CFLAGS"
1160 if test "$ac_cv_clock_monotonic" != "no"; then
1161 HAVE_CLOCK_MONOTONIC=1
1162 REALTIME_LIBS=$ac_cv_clock_monotonic
1163 AC_DEFINE(HAVE_CLOCK_MONOTONIC)
1164 AC_SUBST(HAVE_CLOCK_MONOTONIC)
1165 AC_SUBST_LIST(REALTIME_LIBS)
1168 dnl Turn on warnings-as-errors to prevent implicit declaration of
1169 dnl pthread_cond_timedwait_monotonic_np, which can cause this test to
1170 dnl inadvertently pass even if the function does not really exist.
1171 _SAVE_CFLAGS="$CFLAGS"
1172 CFLAGS="$CFLAGS $WARNINGS_AS_ERRORS"
1173 AC_CACHE_CHECK(for pthread_cond_timedwait_monotonic_np,
1174 ac_cv_pthread_cond_timedwait_monotonic_np,
1175 AC_TRY_LINK([#include <pthread.h>],
1176 [pthread_cond_timedwait_monotonic_np(0, 0, 0);],
1177 ac_cv_pthread_cond_timewait_monotonic_np=yes,
1178 ac_cv_pthread_cond_timewait_monotonic_np=no))
1179 if test "$ac_cv_pthread_cond_timewait_monotonic_np" != "no"; then
1180 AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC)
1182 CFLAGS=$_SAVE_CFLAGS
1186 ac_cv_func_res_ninit,
1187 [if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then
1188 dnl no need for res_ninit() on NetBSD and OpenBSD
1189 ac_cv_func_res_ninit=no
1193 #define _BSD_SOURCE 1
1195 #include <sys/types.h>
1196 #include <netinet/in.h>
1197 #include <arpa/nameser.h>
1200 [int foo = res_ninit(&_res);],
1201 [ac_cv_func_res_ninit=yes],
1202 [ac_cv_func_res_ninit=no])
1206 if test "$ac_cv_func_res_ninit" = "yes"; then
1207 AC_DEFINE(HAVE_RES_NINIT)
1208 dnl must add the link line we do something as foolish as this... dougt
1210 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
1211 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
1216 dnl **********************
1217 dnl *** va_copy checks ***
1218 AC_CACHE_CHECK([for an implementation of va_copy()],
1220 [AC_TRY_COMPILE([#include <stdarg.h>
1222 void f (int i, ...) {
1223 va_list args1, args2;
1224 va_start (args1, i);
1225 va_copy (args2, args1);
1226 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1228 va_end (args1); va_end (args2);
1230 [f(0, 42); return 0],
1231 [ac_cv_va_copy=yes],
1235 AC_CACHE_CHECK([whether va_list can be copied by value],
1237 [AC_TRY_COMPILE([#include <stdarg.h>
1239 void f (int i, ...) {
1240 va_list args1, args2;
1241 va_start (args1, i);
1243 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1245 va_end (args1); va_end (args2);
1247 [f(0, 42); return 0],
1248 [ac_cv_va_val_copy=yes],
1249 [ac_cv_va_val_copy=no],
1252 if test "x$ac_cv_va_copy" = "xyes"; then
1253 AC_DEFINE(VA_COPY, va_copy)
1254 AC_DEFINE(HAVE_VA_COPY)
1257 if test "x$ac_cv_va_val_copy" = "xno"; then
1258 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
1261 dnl ===================================================================
1262 dnl ========================================================
1263 dnl Put your C++ language/feature checks below
1264 dnl ========================================================
1268 if test "$GNU_CC"; then
1269 if test "$CPU_ARCH" = "arm" ; then
1270 AC_CACHE_CHECK(for ARM EABI,
1274 #if defined(__ARM_EABI__)
1277 #error Not ARM EABI.
1280 ac_cv_gcc_arm_eabi="yes",
1281 ac_cv_gcc_arm_eabi="no")])
1282 if test "$ac_cv_gcc_arm_eabi" = "yes"; then
1284 ARM_ABI_PREFIX=eabi-
1286 ARM_ABI_PREFIX=oabi-
1290 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
1293 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
1294 # We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
1295 # enabled, the linker in xcode 4.1 will crash. Without this it would crash when
1297 _SAVE_LDFLAGS=$LDFLAGS
1298 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
1299 AC_CACHE_CHECK(for __thread keyword for TLS variables,
1300 ac_cv_thread_keyword,
1301 [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
1302 [return tlsIsMainThread;],
1303 ac_cv_thread_keyword=yes,
1304 ac_cv_thread_keyword=no)])
1305 LDFLAGS=$_SAVE_LDFLAGS
1306 # The custom dynamic linker doesn't support TLS variables
1308 if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
1309 # mips builds fail with TLS variables because of a binutils bug.
1311 # OpenBSD doesn't have TLS support, and the test succeeds with clang++
1316 *-android*|*-linuxandroid*)
1323 AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
1329 dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments.
1330 if test -n "$MOZ_LINKER"; then
1331 if test "$CPU_ARCH" = arm; then
1332 dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments
1333 if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
1334 LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
1335 _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
1339 dnl gold emits wrong sysv-style elf hash tables when building both sysv and
1340 dnl style tables. https://sourceware.org/bugzilla/show_bug.cgi?id=13597
1341 dnl Since the linker only understands the sysv ones, no need to build the
1342 dnl gnu style tables anyways.
1343 LDFLAGS="$LDFLAGS -Wl,--hash-style=sysv"
1346 dnl End of C++ language/feature checks
1349 dnl ========================================================
1350 dnl = Internationalization checks
1351 dnl ========================================================
1353 dnl Internationalization and Locale support is different
1354 dnl on various UNIX platforms. Checks for specific i18n
1355 dnl features go here.
1357 AC_HAVE_FUNCS(localeconv)
1359 fi # ! SKIP_COMPILER_CHECKS
1361 if test -n "${COMPILE_ENVIRONMENT}"; then
1366 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
1367 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
1368 AC_DEFINE_UNQUOTED(TARGET_XPCOM_ABI, ["${TARGET_XPCOM_ABI}"])
1371 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
1372 dnl features that Windows actually does support.
1374 if test -n "$SKIP_COMPILER_CHECKS"; then
1375 dnl Windows has malloc.h
1376 AC_DEFINE(MALLOC_H, [<malloc.h>])
1377 AC_DEFINE(HAVE_FORCEINLINE)
1378 AC_DEFINE(HAVE_LOCALECONV)
1379 fi # SKIP_COMPILER_CHECKS
1381 dnl Mozilla specific options
1382 dnl ========================================================
1383 dnl The macros used for command line options
1384 dnl are defined in build/autoconf/altoptions.m4.
1386 dnl ========================================================
1388 dnl = Check for external package dependencies
1390 dnl ========================================================
1391 MOZ_ARG_HEADER(External Packages)
1393 dnl ========================================================
1394 dnl system libevent Support
1395 dnl ========================================================
1396 MOZ_ARG_WITH_STRING(system-libevent,
1397 [ --with-system-libevent[=PFX]
1398 Use system libevent [installed at prefix PFX]],
1399 LIBEVENT_DIR=$withval)
1401 _SAVE_CFLAGS=$CFLAGS
1402 _SAVE_LDFLAGS=$LDFLAGS
1404 if test "$LIBEVENT_DIR" = yes; then
1405 PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
1406 MOZ_SYSTEM_LIBEVENT=1,
1409 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
1410 MOZ_SYSTEM_LIBEVENT=
1411 elif test -z "$MOZ_SYSTEM_LIBEVENT"; then
1412 CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
1413 LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
1414 MOZ_CHECK_HEADER(event.h,
1415 [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
1416 AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
1418 AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
1419 AC_CHECK_LIB(event, event_init,
1420 [MOZ_SYSTEM_LIBEVENT=1
1421 MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
1422 MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
1423 [MOZ_SYSTEM_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
1425 CFLAGS=$_SAVE_CFLAGS
1426 LDFLAGS=$_SAVE_LDFLAGS
1429 AC_SUBST(MOZ_SYSTEM_LIBEVENT)
1431 if test -z "$SKIP_LIBRARY_CHECKS"; then
1433 dnl ========================================================
1434 dnl system PNG Support
1435 dnl ========================================================
1436 MOZ_ARG_WITH_STRING(system-png,
1437 [ --with-system-png[=PFX]
1438 Use system libpng [installed at prefix PFX]],
1441 _SAVE_CFLAGS=$CFLAGS
1442 _SAVE_LDFLAGS=$LDFLAGS
1444 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
1445 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
1446 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
1448 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
1451 AC_CHECK_LIB(png, png_get_valid, [MOZ_SYSTEM_PNG=1 MOZ_PNG_LIBS="-lpng"],
1452 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
1453 AC_CHECK_LIB(png, png_get_acTL, ,
1454 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]))
1456 if test "$MOZ_SYSTEM_PNG" = 1; then
1457 AC_TRY_COMPILE([ #include <stdio.h>
1458 #include <sys/types.h>
1460 [ #if PNG_LIBPNG_VER < $MOZPNG
1461 #error "Insufficient libpng version ($MOZPNG required)."
1463 #ifndef PNG_UINT_31_MAX
1464 #error "Insufficient libpng version."
1467 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
1469 CFLAGS=$_SAVE_CFLAGS
1470 LDFLAGS=$_SAVE_LDFLAGS
1473 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_SYSTEM_PNG" = 1; then
1474 MOZ_PNG_CFLAGS="-I${PNG_DIR}/include"
1475 MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}"
1478 fi # SKIP_LIBRARY_CHECKS
1480 dnl ========================================================
1484 dnl ========================================================
1486 MOZ_ARG_HEADER(Application)
1488 ENABLE_SYSTEM_EXTENSION_DIRS=1
1489 MOZ_BRANDING_DIRECTORY=
1490 MOZ_OFFICIAL_BRANDING=
1491 MOZ_AUTH_EXTENSION=1
1493 MOZ_UNIVERSALCHARDET=1
1498 MOZ_BINARY_EXTENSIONS=
1501 dnl ========================================================
1502 dnl = Trademarked Branding
1503 dnl ========================================================
1504 MOZ_ARG_ENABLE_BOOL(official-branding,
1505 [ --enable-official-branding
1506 Enable Official mozilla.org Branding
1507 Do not distribute builds with
1508 --enable-official-branding unless you have
1509 permission to use trademarks per
1510 http://www.mozilla.org/foundation/trademarks/ .],
1511 MOZ_OFFICIAL_BRANDING=1,
1512 MOZ_OFFICIAL_BRANDING=)
1514 # Allow the application to influence configure with a confvars.sh script.
1515 AC_MSG_CHECKING([if app-specific confvars.sh exists])
1516 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
1517 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
1518 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
1523 dnl ========================================================
1524 dnl Ensure Android SDK and build-tools versions depending on
1526 dnl ========================================================
1528 case "$MOZ_BUILD_APP" in
1534 dnl ========================================================
1536 dnl = Toolkit Options
1538 dnl ========================================================
1539 MOZ_ARG_HEADER(Toolkit Options)
1541 dnl ========================================================
1542 dnl = Enable the toolkit as needed =
1543 dnl ========================================================
1545 case "$MOZ_WIDGET_TOOLKIT" in
1548 LDFLAGS="$LDFLAGS -framework Cocoa"
1549 # Use -Wl as a trick to avoid -framework and framework names from
1550 # being separated by AC_SUBST_LIST.
1551 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'
1553 CFLAGS="$CFLAGS $TK_CFLAGS"
1554 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
1555 MOZ_USER_DIR="Mozilla"
1556 MOZ_FS_LAYOUT=bundle
1560 LDFLAGS="$LDFLAGS -framework UIKit"
1562 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'
1563 CFLAGS="$CFLAGS $TK_CFLAGS"
1564 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
1565 MOZ_USER_DIR="Mozilla"
1566 MOZ_FS_LAYOUT=bundle
1571 if test "$OS_TARGET" = Darwin; then
1572 LDFLAGS="$LDFLAGS -lobjc"
1575 dnl there are a lot of tests on MOZ_ENABLE_GTK below, that are more convenient
1576 dnl to keep that way than testing against MOZ_WIDGET_TOOLKIT
1577 case "$MOZ_WIDGET_TOOLKIT" in
1583 if test "$COMPILE_ENVIRONMENT"; then
1584 if test "$MOZ_WIDGET_TOOLKIT" = gtk; then
1585 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)
1586 MOZ_GTK3_CFLAGS="-I${_topsrcdir}/widget/gtk/compat-gtk3 $MOZ_GTK3_CFLAGS"
1587 TK_CFLAGS=$MOZ_GTK3_CFLAGS
1588 TK_LIBS=$MOZ_GTK3_LIBS
1589 dnl GDK_VERSION_MIN_REQUIRED is not set here as GDK3 deprecated warnings
1590 dnl are suppressed by widget/gtk/compat-gtk3/gdk/gdkversionmacros.h.
1591 AC_DEFINE_UNQUOTED(GDK_VERSION_MAX_ALLOWED,$GDK_VERSION_MAX_ALLOWED)
1593 if test "$MOZ_ENABLE_GTK"; then
1594 AC_DEFINE_UNQUOTED(GLIB_VERSION_MIN_REQUIRED,$GLIB_VERSION_MIN_REQUIRED)
1595 AC_DEFINE_UNQUOTED(GLIB_VERSION_MAX_ALLOWED,$GLIB_VERSION_MAX_ALLOWED)
1597 if test "$MOZ_X11"; then
1598 PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 >= $GLIB_VERSION gobject-2.0 gio-unix-2.0 gdk-x11-2.0)
1599 MOZ_GTK2_CFLAGS="-I${_topsrcdir}/widget/gtk/compat $MOZ_GTK2_CFLAGS"
1602 fi # COMPILE_ENVIRONMENT
1604 AC_SUBST(MOZ_FS_LAYOUT)
1606 AC_SUBST_LIST(TK_CFLAGS)
1607 AC_SUBST_LIST(TK_LIBS)
1609 dnl ========================================================
1611 dnl = Components & Features
1613 dnl ========================================================
1614 MOZ_ARG_HEADER(Components and Features)
1616 AC_SUBST(MOZ_OFFICIAL_BRANDING)
1617 if test -n "$MOZ_OFFICIAL_BRANDING"; then
1618 if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
1619 AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
1621 MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
1622 AC_DEFINE(MOZ_OFFICIAL_BRANDING)
1626 MOZ_ARG_WITH_STRING(branding,
1627 [ --with-branding=dir Use branding from the specified directory.],
1628 MOZ_BRANDING_DIRECTORY=$withval)
1630 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
1631 if test -z "$REAL_BRANDING_DIRECTORY"; then
1632 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
1635 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
1636 . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
1639 AC_SUBST(MOZ_BRANDING_DIRECTORY)
1641 dnl ========================================================
1642 dnl = Distribution ID
1643 dnl ========================================================
1644 MOZ_ARG_WITH_STRING(distribution-id,
1645 [ --with-distribution-id=ID
1646 Set distribution-specific id (default=org.mozilla)],
1647 [ val=`echo $withval`
1648 MOZ_DISTRIBUTION_ID="$val"])
1650 if test -z "$MOZ_DISTRIBUTION_ID"; then
1651 MOZ_DISTRIBUTION_ID="org.mozilla"
1654 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
1655 AC_SUBST(MOZ_DISTRIBUTION_ID)
1657 dnl ========================================================
1658 dnl = libproxy support
1659 dnl ========================================================
1661 if test "$MOZ_ENABLE_GTK"
1663 MOZ_ENABLE_LIBPROXY=
1665 MOZ_ARG_ENABLE_BOOL(libproxy,
1666 [ --enable-libproxy Enable libproxy support ],
1667 MOZ_ENABLE_LIBPROXY=1,
1668 MOZ_ENABLE_LIBPROXY=)
1670 if test "$MOZ_ENABLE_LIBPROXY"
1672 PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
1673 AC_DEFINE(MOZ_ENABLE_LIBPROXY)
1676 AC_SUBST(MOZ_ENABLE_LIBPROXY)
1678 dnl ========================================================
1680 dnl ========================================================
1682 if test "$MOZ_ENABLE_GTK"
1686 MOZ_ARG_DISABLE_BOOL(dbus,
1687 [ --disable-dbus Disable dbus support ],
1691 if test "$MOZ_ENABLE_DBUS"
1693 PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
1694 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
1695 AC_DEFINE(MOZ_ENABLE_DBUS)
1698 AC_SUBST(MOZ_ENABLE_DBUS)
1700 AC_TRY_COMPILE([#include <linux/ethtool.h>],
1701 [ struct ethtool_cmd cmd; cmd.speed_hi = 0; ],
1702 MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI=1)
1704 AC_SUBST(MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI)
1706 if test -n "$MOZ_WEBRTC"; then
1707 if test -n "$MOZ_X11"; then
1708 MOZ_WEBRTC_X11_LIBS="-lXext -lXdamage -lXfixes -lXcomposite"
1712 AC_SUBST_LIST(MOZ_WEBRTC_X11_LIBS)
1714 dnl ========================================================
1715 dnl = Apple platform decoder support
1716 dnl ========================================================
1717 if test "$COMPILE_ENVIRONMENT"; then
1718 if test -n "$MOZ_APPLEMEDIA"; then
1719 # hack in frameworks for fmp4 - see bug 1029974
1720 # We load VideoToolbox and CoreMedia dynamically, so they don't appear here.
1721 LDFLAGS="$LDFLAGS -framework AudioToolbox"
1722 dnl Verify CoreMedia is available.
1723 AC_CHECK_HEADERS([CoreMedia/CoreMedia.h VideoToolbox/VideoToolbox.h], [],
1724 [AC_MSG_ERROR([MacOS X 10.9 SDK or later is required])])
1726 fi # COMPILE_ENVIRONMENT
1728 dnl ========================================================
1729 dnl = Handle dependent MEDIA defines
1730 dnl ========================================================
1733 AC_DEFINE(MOZ_WEBM_ENCODER)
1734 AC_SUBST(MOZ_WEBM_ENCODER)
1736 dnl ========================================================
1738 dnl ========================================================
1740 MOZ_ARG_DISABLE_BOOL(negotiateauth,
1741 [ --disable-negotiateauth Disable GSS-API negotiation ],
1742 MOZ_AUTH_EXTENSION=,
1743 MOZ_AUTH_EXTENSION=1 )
1745 dnl ========================================================
1746 dnl Searching of system directories for extensions.
1747 dnl Note: this switch is meant to be used for test builds
1748 dnl whose behavior should not depend on what happens to be
1749 dnl installed on the local machine.
1750 dnl ========================================================
1751 MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
1752 [ --disable-system-extension-dirs
1753 Disable searching system- and account-global
1754 directories for extensions of any kind; use
1755 only profile-specific extension directories],
1756 ENABLE_SYSTEM_EXTENSION_DIRS=,
1757 ENABLE_SYSTEM_EXTENSION_DIRS=1 )
1758 if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
1759 AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
1762 dnl ========================================================
1763 dnl = Universalchardet
1764 dnl ========================================================
1765 MOZ_ARG_DISABLE_BOOL(universalchardet,
1766 [ --disable-universalchardet
1767 Disable universal encoding detection],
1768 MOZ_UNIVERSALCHARDET=,
1769 MOZ_UNIVERSALCHARDET=1 )
1771 dnl ========================================================
1773 dnl ========================================================
1775 if test "$COMPILE_ENVIRONMENT" ; then
1777 dnl Moved gamepad platform check to moz.build, linux header check still needed here.
1778 if test "$OS_TARGET" = "Linux"; then
1779 MOZ_CHECK_HEADER([linux/joystick.h])
1780 if test "$ac_cv_header_linux_joystick_h" != "yes"; then
1781 AC_MSG_ERROR([Can't find header linux/joystick.h, needed for gamepad support. Please install Linux kernel headers.])
1785 fi # COMPILE_ENVIRONMENT
1788 dnl ========================================================
1789 dnl = Breakpad crash reporting (on by default on supported platforms)
1790 dnl ========================================================
1793 i?86-*-mingw*|x86_64-*-mingw*|aarch64-*-mingw*)
1796 i?86-apple-darwin*|x86_64-apple-darwin*|aarch64-apple-darwin*)
1799 *-android*|*-linuxandroid*)
1800 dnl Android/arm is arm-unknown-linux-androideabi, so android condition should
1801 dnl be before Linux condition
1802 dnl The crash reporter prevents crash stacktraces to be logged in the
1803 dnl logs so we leave it out by default in developer builds.
1804 if test -z "$DEVELOPER_OPTIONS"; then
1808 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
1809 if test "$MOZ_ENABLE_GTK"; then
1815 MOZ_ARG_DISABLE_BOOL(crashreporter,
1816 [ --disable-crashreporter Disable breakpad crash reporting],
1817 [MOZ_CRASHREPORTER=],
1818 [MOZ_CRASHREPORTER=F # Force enable breakpad])
1820 if test "$OS_ARCH" != "$HOST_OS_ARCH" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "Darwin" -a "$MOZ_WIDGET_TOOLKIT" != "android"; then
1821 if test "$MOZ_CRASHREPORTER" = F; then
1822 AC_MSG_ERROR([Cannot --enable-crashreporter, as breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH.])
1827 if test -n "$MOZ_CRASHREPORTER"; then
1828 AC_DEFINE(MOZ_CRASHREPORTER)
1830 if test "$OS_TARGET" = "Linux" && \
1831 test -z "$SKIP_LIBRARY_CHECKS"; then
1832 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
1835 if test "$OS_ARCH" = "WINNT"; then
1836 if test -z "$HAVE_64BIT_BUILD" -a -n "$COMPILE_ENVIRONMENT"; then
1837 MOZ_CRASHREPORTER_INJECTOR=1
1838 AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
1843 dnl ========================================================
1844 dnl = Enable compilation of specific extension modules
1845 dnl ========================================================
1847 MOZ_ARG_ENABLE_STRING(extensions,
1848 [ --enable-extensions Enable extensions],
1849 [ for option in `echo $enableval | sed 's/,/ /g'`; do
1850 if test "$option" = "yes" -o "$option" = "all"; then
1851 AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
1852 elif test "$option" = "no" -o "$option" = "none"; then
1854 elif test "$option" = "default"; then
1855 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
1856 elif test `echo "$option" | grep -c \^-` != 0; then
1857 option=`echo $option | sed 's/^-//'`
1858 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
1860 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
1863 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
1865 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
1866 dnl when trying to build a nonexistent extension.
1867 for extension in $MOZ_EXTENSIONS; do
1868 if test ! -d "${srcdir}/extensions/${extension}"; then
1869 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
1873 # Avoid defining MOZ_ENABLE_CAIRO_FT on Windows platforms because
1874 # "cairo-ft-font.c" includes <dlfcn.h>, which only exists on posix platforms
1875 if test -n "$MOZ_TREE_FREETYPE" -a "$OS_TARGET" != WINNT; then
1876 MOZ_ENABLE_CAIRO_FT=1
1877 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
1878 CAIRO_FT_CFLAGS="-I$_topsrcdir/modules/freetype2/include"
1879 AC_SUBST_LIST(CAIRO_FT_CFLAGS)
1882 dnl ========================================================
1884 dnl ========================================================
1886 MOZ_ARG_DISABLE_BOOL(updater,
1887 [ --disable-updater Disable building of updater],
1891 if test -n "$MOZ_UPDATER"; then
1892 AC_DEFINE(MOZ_UPDATER)
1895 dnl ========================================================
1896 dnl parental controls (for Windows Vista)
1897 dnl ========================================================
1898 MOZ_ARG_DISABLE_BOOL(parental-controls,
1899 [ --disable-parental-controls
1900 Do not build parental controls],
1901 MOZ_DISABLE_PARENTAL_CONTROLS=1,
1902 MOZ_DISABLE_PARENTAL_CONTROLS=)
1903 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
1904 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
1907 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
1909 dnl ========================================================
1910 dnl = Disable smartcard support
1911 dnl ========================================================
1912 if test -n "$MOZ_NO_SMART_CARDS"; then
1913 AC_DEFINE(MOZ_NO_SMART_CARDS)
1915 AC_SUBST(MOZ_NO_SMART_CARDS)
1917 dnl ========================================================
1918 dnl = Sandboxing support
1919 dnl ========================================================
1920 if test -n "$MOZ_TSAN" -o -n "$MOZ_ASAN"; then
1921 # Bug 1182565: TSan conflicts with sandboxing on Linux.
1922 # Bug 1287971: LSan also conflicts with sandboxing on Linux.
1930 MOZ_ARG_DISABLE_BOOL(sandbox,
1931 [ --disable-sandbox Disable sandboxing support],
1935 case "$OS_TARGET" in
1936 WINNT|Darwin|OpenBSD)
1940 x86_64|x86|arm|aarch64)
1942 # Linux sandbox is only available on x86{,_64} and arm{,64}.
1949 # Only enable the sandbox by default on Linux, OpenBSD, macOS, and Windows
1954 if test -n "$MOZ_SANDBOX"; then
1955 AC_DEFINE(MOZ_SANDBOX)
1958 AC_SUBST(MOZ_SANDBOX)
1961 dnl ========================================================
1963 dnl = Module specific options
1965 dnl ========================================================
1966 MOZ_ARG_HEADER(Individual module options)
1968 dnl ==============================
1969 dnl === SQLite fdatasync check ===
1970 dnl ==============================
1971 dnl Check to see if fdatasync is available and make use of it
1972 AC_CHECK_FUNC(fdatasync)
1974 dnl ========================================================
1975 dnl = Disable zipwriter
1976 dnl ========================================================
1977 MOZ_ARG_DISABLE_BOOL(zipwriter,
1978 [ --disable-zipwriter Disable zipwriter component],
1981 AC_SUBST(MOZ_ZIPWRITER)
1983 dnl ========================================================
1985 dnl = Feature options that require extra sources to be pulled
1987 dnl ========================================================
1988 dnl MOZ_ARG_HEADER(Features that require extra sources)
1990 dnl ========================================================
1992 dnl = Runtime debugging and Optimization Options
1994 dnl ========================================================
1995 MOZ_ARG_HEADER(Runtime debugging and Optimizations)
1997 dnl ========================================================
1998 dnl = Enable code optimization. ON by default.
1999 dnl ========================================================
2001 # Use value from moz.configure if one is defined. Else use our computed
2003 if test -n "${MOZ_CONFIGURE_OPTIMIZE_FLAGS}"; then
2004 MOZ_OPTIMIZE_FLAGS=${MOZ_CONFIGURE_OPTIMIZE_FLAGS}
2007 if test "$COMPILE_ENVIRONMENT"; then
2008 if test -n "$MOZ_OPTIMIZE"; then
2009 AC_MSG_CHECKING([for valid C compiler optimization flags])
2010 _SAVE_CFLAGS=$CFLAGS
2011 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
2012 AC_TRY_COMPILE([#include <stdio.h>],
2013 [printf("Hello World\n");],
2016 AC_MSG_RESULT([$_results])
2017 if test "$_results" = "no"; then
2018 AC_MSG_ERROR([These compiler flags for C are invalid: $MOZ_OPTIMIZE_FLAGS])
2020 CFLAGS=$_SAVE_CFLAGS
2021 if test -n "$MOZ_LTO" -a -n "$CLANG_CC"; then
2022 # When using llvm-based LTO, non numeric optimization levels are
2023 # not supported by the linker, so force the linker to use -O2 (
2024 # which doesn't influence the level compilation units are actually
2026 case " $MOZ_OPTIMIZE_FLAGS " in
2027 *\ -Os\ *|*\ -Oz\ *)
2028 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -O2"
2033 fi # COMPILE_ENVIRONMENT
2035 AC_SUBST_LIST(MOZ_OPTIMIZE_FLAGS)
2036 AC_SUBST_LIST(MOZ_OPTIMIZE_LDFLAGS)
2037 AC_SUBST_LIST(MOZ_PGO_OPTIMIZE_FLAGS)
2039 dnl ========================================================
2040 dnl = Enable runtime logging
2041 dnl ========================================================
2042 AC_DEFINE(MOZ_LOGGING)
2043 AC_DEFINE(FORCE_PR_LOG)
2045 dnl ========================================================
2046 dnl = This will enable logging of addref, release, ctor, dtor.
2047 dnl ========================================================
2048 _ENABLE_LOGREFCNT=42
2049 MOZ_ARG_ENABLE_BOOL(logrefcnt,
2050 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
2051 _ENABLE_LOGREFCNT=1,
2052 _ENABLE_LOGREFCNT= )
2053 if test "$_ENABLE_LOGREFCNT" = "1"; then
2054 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
2055 elif test -z "$_ENABLE_LOGREFCNT"; then
2056 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
2059 dnl ========================================================
2060 dnl moz_dump_painting
2061 dnl ========================================================
2062 MOZ_ARG_ENABLE_BOOL(dump-painting,
2063 [ --enable-dump-painting Enable paint debugging.],
2064 MOZ_DUMP_PAINTING=1,
2065 MOZ_DUMP_PAINTING= )
2066 if test -n "$MOZ_DUMP_PAINTING"; then
2067 AC_DEFINE(MOZ_DUMP_PAINTING)
2068 AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
2070 if test -n "$MOZ_DEBUG"; then
2071 AC_DEFINE(MOZ_DUMP_PAINTING)
2074 case "${OS_TARGET}" in
2075 Android|WINNT|Darwin)
2076 MOZ_GLUE_IN_PROGRAM=
2079 dnl On !Android !Windows !OSX, we only want to link executables against mozglue
2080 MOZ_GLUE_IN_PROGRAM=1
2081 AC_DEFINE(MOZ_GLUE_IN_PROGRAM)
2085 dnl ========================================================
2086 dnl = Jemalloc build setup
2087 dnl ========================================================
2088 if test -z "$MOZ_MEMORY"; then
2091 if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
2092 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.])
2097 dnl The generic feature tests that determine how to compute ncpus are long and
2098 dnl complicated. Therefore, simply define special cpp variables for the
2099 dnl platforms we have special knowledge of.
2102 export MOZ_NO_DEBUG_RTL=1
2106 AC_SUBST(MOZ_GLUE_IN_PROGRAM)
2108 dnl ========================================================
2109 dnl = Enable using the clang plugin to build
2110 dnl ========================================================
2112 if test -n "$COMPILE_ENVIRONMENT"; then
2113 MOZ_CONFIG_CLANG_PLUGIN
2114 fi # COMPILE_ENVIRONMENT
2116 dnl ========================================================
2117 dnl = frontend JS debug mode
2118 dnl ========================================================
2120 MOZ_ARG_ENABLE_BOOL(debug-js-modules,
2121 [ --enable-debug-js-modules Enable debug mode for frontend JS libraries],
2125 AC_SUBST(DEBUG_JS_MODULES)
2127 dnl ========================================================
2129 dnl = Profiling and Instrumenting
2131 dnl ========================================================
2132 MOZ_ARG_HEADER(Profiling and Instrumenting)
2134 dnl ========================================================
2135 dnl = Support for demangling undefined symbols
2136 dnl ========================================================
2137 if test -z "$SKIP_LIBRARY_CHECKS"; then
2140 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
2144 # Demangle only for debug or DMD builds
2145 MOZ_DEMANGLE_SYMBOLS=
2146 if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$MOZ_DMD"; then
2147 MOZ_DEMANGLE_SYMBOLS=1
2148 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
2150 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
2152 dnl ========================================================
2153 dnl = Support for gcc stack unwinding (from gcc 3.3)
2154 dnl ========================================================
2155 if test -z "$SKIP_LIBRARY_CHECKS"; then
2158 MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
2162 dnl ========================================================
2166 dnl ========================================================
2167 MOZ_ARG_HEADER(Misc. Options)
2169 dnl ========================================================
2170 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
2171 dnl ========================================================
2172 MOZ_ARG_WITH_STRING(user-appdir,
2173 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
2174 [ val=`echo $withval`
2175 if echo "$val" | grep "\/" >/dev/null; then
2176 AC_MSG_ERROR("Homedir must be single relative path.")
2181 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
2183 if test -z "$SKIP_COMPILER_CHECKS"; then
2184 dnl ========================================================
2186 dnl = Compiler Options
2188 dnl ========================================================
2189 MOZ_ARG_HEADER(Compiler Options)
2191 dnl ========================================================
2192 dnl Check for gcc -pipe support
2193 dnl ========================================================
2194 AC_MSG_CHECKING([for -pipe support])
2195 if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
2196 dnl Any gcc that supports firefox supports -pipe.
2197 CFLAGS="$CFLAGS -pipe"
2198 CXXFLAGS="$CXXFLAGS -pipe"
2199 AC_MSG_RESULT([yes])
2204 fi # ! SKIP_COMPILER_CHECKS
2208 if test "$COMPILE_ENVIRONMENT"; then
2210 fi # COMPILE_ENVIRONMENT
2212 dnl ========================================================
2214 dnl = Static Build Options
2216 dnl ========================================================
2217 MOZ_ARG_HEADER(Static build options)
2219 if test -z "$MOZ_SYSTEM_ZLIB"; then
2220 if test -n "$JS_SHARED_LIBRARY" -o -n "$MOZ_LINKER" -o "$MOZ_WIDGET_TOOLKIT" = android; then
2222 AC_DEFINE(ZLIB_IN_MOZGLUE)
2226 AC_SUBST(ZLIB_IN_MOZGLUE)
2228 dnl ========================================================
2230 dnl = Standalone module options
2232 dnl ========================================================
2233 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
2236 dnl ========================================================
2238 if test -z "$SKIP_PATH_CHECKS"; then
2239 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
2240 if test "$MOZ_ENABLE_GTK" ; then
2241 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
2246 if test -z "${GLIB_GMODULE_LIBS}" \
2247 -a -n "${GLIB_CONFIG}"\
2248 -a "${GLIB_CONFIG}" != no\
2250 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
2253 AC_SUBST_LIST(GLIB_GMODULE_LIBS)
2255 if test "$USE_FC_FREETYPE"; then
2256 if test "$COMPILE_ENVIRONMENT"; then
2257 dnl ========================================================
2258 dnl = Check for freetype2 functionality
2259 dnl ========================================================
2260 if test "$_HAVE_FREETYPE2" -a -z "$MOZ_TREE_FREETYPE"; then
2262 _SAVE_CFLAGS="$CFLAGS"
2263 LIBS="$LIBS $FT2_LIBS"
2264 CFLAGS="$CFLAGS $FT2_CFLAGS"
2266 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
2267 ac_cv_member_FT_Bitmap_Size_y_ppem,
2268 [AC_TRY_COMPILE([#include <ft2build.h>
2269 #include FT_FREETYPE_H],
2271 if (sizeof s.y_ppem) return 0;
2273 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
2274 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
2275 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
2276 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
2278 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
2280 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
2281 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
2282 [FT_Bitmap_Size structure includes y_ppem field])
2284 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table)
2287 CFLAGS="$_SAVE_CFLAGS"
2290 _SAVE_CPPFLAGS="$CPPFLAGS"
2291 CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
2292 MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
2293 [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
2294 CPPFLAGS="$_SAVE_CPPFLAGS"
2298 dnl ========================================================
2299 dnl Check if we need the 32-bit Linux SSE2 error dialog
2300 dnl ========================================================
2302 AC_SUBST(MOZ_LINUX_32_SSE2_STARTUP_ERROR)
2304 dnl ========================================================
2305 dnl Check for pixman and cairo
2306 dnl ========================================================
2309 MOZ_ARG_ENABLE_BOOL(system-cairo,
2310 [ --enable-system-cairo Obsolete: do not use this option],
2311 AC_MSG_ERROR(--enable-system-cairo is not supported),
2315 MOZ_ARG_ENABLE_BOOL(system-pixman,
2316 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
2318 MOZ_TREE_PIXMAN=force,
2321 if test "$MOZ_TREE_PIXMAN"; then
2322 AC_DEFINE(MOZ_TREE_PIXMAN)
2324 PKG_CHECK_MODULES(MOZ_PIXMAN, pixman-1 >= 0.19.2)
2327 MOZ_CAIRO_CFLAGS="-I${DIST}/include/cairo"
2328 AC_DEFINE(MOZ_TREE_CAIRO)
2330 if test "$OS_ARCH" = "WINNT"; then
2331 # For now we assume that we will have a uint64_t available through
2332 # one of the above headers or mozstdint.h.
2333 AC_DEFINE(HAVE_UINT64_T)
2336 # Define macros for cairo-features.h
2337 TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
2338 if test "$MOZ_X11"; then
2339 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
2340 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
2341 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
2343 if test "$_HAVE_FREETYPE2"; then
2344 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
2345 MOZ_ENABLE_CAIRO_FT=1
2346 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
2349 case "$MOZ_WIDGET_TOOLKIT" in
2351 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
2352 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
2353 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
2356 WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
2357 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
2358 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
2360 if test "$COMPILE_ENVIRONMENT"; then
2361 MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
2365 if test "$USE_FC_FREETYPE"; then
2366 FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
2368 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
2369 AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
2371 AC_SUBST(PS_SURFACE_FEATURE)
2372 AC_SUBST(SVG_SURFACE_FEATURE)
2373 AC_SUBST(XLIB_SURFACE_FEATURE)
2374 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
2375 AC_SUBST(QUARTZ_SURFACE_FEATURE)
2376 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
2377 AC_SUBST(WIN32_SURFACE_FEATURE)
2378 AC_SUBST(OS2_SURFACE_FEATURE)
2379 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
2380 AC_SUBST(FT_FONT_FEATURE)
2381 AC_SUBST(FC_FONT_FEATURE)
2382 AC_SUBST(WIN32_FONT_FEATURE)
2383 AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
2384 AC_SUBST(QUARTZ_FONT_FEATURE)
2385 AC_SUBST(PNG_FUNCTIONS_FEATURE)
2386 AC_SUBST(QT_SURFACE_FEATURE)
2387 AC_SUBST(TEE_SURFACE_FEATURE)
2389 if test "$MOZ_X11"; then
2390 MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
2393 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
2395 case "$MOZ_WIDGET_TOOLKIT" in
2397 TK_CFLAGS="$MOZ_CAIRO_CFLAGS $MOZ_PIXMAN_CFLAGS"
2398 TK_LIBS="$MOZ_CAIRO_LIBS $MOZ_PIXMAN_LIBS"
2402 AC_SUBST(MOZ_TREE_CAIRO)
2403 AC_SUBST_LIST(MOZ_CAIRO_CFLAGS)
2404 AC_SUBST_LIST(MOZ_CAIRO_LIBS)
2405 AC_SUBST_LIST(MOZ_CAIRO_OSLIBS)
2406 AC_SUBST(MOZ_TREE_PIXMAN)
2408 BINDGEN_SYSTEM_FLAGS="$_BINDGEN_CFLAGS $NSPR_CFLAGS $NSS_CFLAGS $MOZ_PIXMAN_CFLAGS $MOZ_CAIRO_CFLAGS"
2409 AC_SUBST(BINDGEN_SYSTEM_FLAGS)
2410 BINDGEN_SYSTEM_TOML_FLAGS="$BINDGEN_SYSTEM_FLAGS"
2411 AC_SUBST_TOML_LIST(BINDGEN_SYSTEM_TOML_FLAGS)
2413 dnl ========================================================
2415 dnl ========================================================
2416 MOZ_ARG_DISABLE_BOOL(xul,
2417 [ --disable-xul Disable XUL],
2419 if test "$MOZ_XUL"; then
2422 dnl remove extensions that require XUL
2423 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/irc//' -e 's/tasks//'`
2428 dnl ========================================================
2429 dnl necko configuration options
2430 dnl ========================================================
2433 dnl option to disable necko's wifi scanner
2436 if test "$MOZ_WIDGET_TOOLKIT"; then
2438 case "$OS_TARGET" in
2442 DragonFly|FreeBSD|WINNT)
2453 MOZ_ARG_DISABLE_BOOL(necko-wifi,
2454 [ --disable-necko-wifi Disable necko wifi scanner],
2458 if test "$NECKO_WIFI"; then
2459 if test -z "$MOZ_ENABLE_DBUS" -a -n "$NECKO_WIFI_DBUS"; then
2460 AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi])
2462 AC_DEFINE(NECKO_WIFI)
2464 AC_SUBST(NECKO_WIFI)
2465 AC_SUBST(NECKO_WIFI_DBUS)
2467 dnl ========================================================
2469 dnl = Maintainer debug option (no --enable equivalent)
2471 dnl ========================================================
2473 AC_SUBST_LIST(ASFLAGS)
2476 AC_SUBST(MOZ_AUTH_EXTENSION)
2477 AC_SUBST_LIST(MOZ_DEBUG_LDFLAGS)
2478 AC_SUBST_LIST(WARNINGS_CFLAGS)
2479 AC_SUBST_SET(MOZ_EXTENSIONS)
2481 AC_SUBST(MOZ_UNIVERSALCHARDET)
2482 AC_SUBST(MOZ_SPELLCHECK)
2483 AC_SUBST(MOZ_ANDROID_ANR_REPORTER)
2484 AC_SUBST(MOZ_CRASHREPORTER)
2485 AC_SUBST(MOZ_CRASHREPORTER_INJECTOR)
2486 AC_SUBST(MOZ_STUB_INSTALLER)
2487 AC_SUBST(MOZ_UPDATER)
2489 AC_SUBST(MOZ_ANDROID_APPLICATION_CLASS)
2490 AC_SUBST(MOZ_ANDROID_BROWSER_INTENT_CLASS)
2491 AC_SUBST(INCREMENTAL_LINKER)
2493 AC_SUBST_LIST(MOZ_FIX_LINK_PATHS)
2495 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
2496 AC_SUBST(MOZ_LINKER_EXTRACT)
2498 if test -n "$MOZ_BINARY_EXTENSIONS"; then
2499 AC_DEFINE(MOZ_BINARY_EXTENSIONS)
2502 AC_SUBST(MOZ_REQUIRE_SIGNING)
2503 if test "$MOZ_REQUIRE_SIGNING" = 1; then
2504 AC_DEFINE(MOZ_REQUIRE_SIGNING)
2507 dnl ========================================================
2508 dnl = Mac bundle name prefix
2509 dnl ========================================================
2510 MOZ_ARG_WITH_STRING(macbundlename-prefix,
2511 [ --with-macbundlename-prefix=prefix
2512 Prefix for MOZ_MACBUNDLE_NAME],
2513 [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
2515 MOZ_MACBUNDLE_NAME=$MOZ_APP_DISPLAYNAME
2516 if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
2517 MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
2520 if test "$MOZ_DEBUG"; then
2521 MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME}Debug.app"
2523 MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
2525 AC_SUBST(MOZ_MACBUNDLE_NAME)
2527 dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
2528 # If the MOZ_MACBUNDLE_ID is defined in the configure.sh, use it
2529 # Otherwise, use MOZ_APP_DISPLAYNAME
2530 if test -z "$MOZ_MACBUNDLE_ID"; then
2531 MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr 'A-Z' 'a-z' | tr -dc 'a-z-'`
2533 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
2534 if test "$MOZ_DEBUG"; then
2535 MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
2538 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
2539 AC_SUBST(MOZ_MACBUNDLE_ID)
2541 dnl ========================================================
2542 dnl = Child Process Name for IPC
2543 dnl ========================================================
2544 if test "$MOZ_WIDGET_TOOLKIT" != "android"; then
2545 MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}"
2547 # We want to let Android unpack the file at install time, but it only does
2548 # so if the file is named libsomething.so. The lib/ path is also required
2549 # because the unpacked file will be under the lib/ subdirectory and will
2550 # need to be executed from that path.
2551 MOZ_CHILD_PROCESS_NAME="libplugin-container.so"
2553 MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/"
2554 MOZ_CHILD_PROCESS_BUNDLENAME="${MOZ_APP_DISPLAYNAME}CP"
2556 AC_SUBST(MOZ_CHILD_PROCESS_NAME)
2557 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE)
2558 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLENAME)
2560 # The following variables are available to branding and application
2561 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
2562 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
2563 # impacts profile location and user-visible fields.
2564 # - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
2565 # Mac Bundle name, Updater, Installer), it is typically used for nightly
2566 # builds (e.g. Aurora for Firefox).
2567 # - MOZ_APP_PROFILE: When set, used for application.ini's
2568 # "Profile" field, which controls profile location.
2569 # - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
2570 # crash reporter server url.
2571 # - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
2573 # The following environment variables used to have an effect, but don't anymore:
2574 # - MOZ_APP_VERSION: Defines the application version number. This was replaced with
2575 # the contents from the version.txt file in the application directory, or
2576 # browser/config/version.txt if there isn't one.
2577 # - MOZ_APP_VERSION_DISPLAY: Defines the application version number. Used
2578 # in the "About" window. This was replaced with the contents from the
2579 # version_display.txt or version.txt in the application directory, or
2580 # browser/config/version_display.txt.
2582 # For extensions and langpacks, we require a max version that is compatible
2583 # across security releases. MOZ_APP_MAXVERSION is our method for doing that.
2584 # 24.0a1 and 24.0a2 aren't affected
2586 # 24.1.1 becomes 24.*
2587 IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
2588 if test -z "$IS_ALPHA"; then
2590 if test "$(basename $MOZ_BUILD_APP)" = "suite"; then
2591 MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\.[0-9]*\).*|\1|"`.*
2593 MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\).*|\1|"`.*
2597 MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
2600 AC_SUBST(MOZ_APP_DISPLAYNAME)
2601 AC_SUBST(MOZ_APP_VENDOR)
2602 AC_SUBST(MOZ_APP_PROFILE)
2603 AC_SUBST(MOZ_APP_ID)
2604 AC_SUBST(MAR_CHANNEL_ID)
2605 AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
2606 AC_SUBST(MOZ_PROFILE_MIGRATOR)
2607 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
2608 AC_SUBST(MOZ_APP_UA_NAME)
2609 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
2610 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL, $BROWSER_CHROME_URL)
2611 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL_QUOTED, "$BROWSER_CHROME_URL")
2613 AC_SUBST(MOZ_APP_MAXVERSION)
2614 AC_SUBST(MOZ_UA_OS_AGNOSTIC)
2615 if test -n "$MOZ_UA_OS_AGNOSTIC"; then
2616 AC_DEFINE(MOZ_UA_OS_AGNOSTIC)
2619 AC_SUBST(MOZ_PKG_SPECIAL)
2620 AC_SUBST(MOZ_SIMPLE_PACKAGE_NAME)
2622 if test "$MOZILLA_OFFICIAL"; then
2623 # Build revisions should always be present in official builds
2624 MOZ_INCLUDE_SOURCE_INFO=1
2627 # External builds (specifically Ubuntu) may drop the hg repo information, so we allow to
2628 # explicitly set the repository and changeset information in.
2629 AC_SUBST(MOZ_SOURCE_REPO)
2630 AC_SUBST(MOZ_SOURCE_CHANGESET)
2631 AC_SUBST(MOZ_INCLUDE_SOURCE_INFO)
2633 dnl If we have any service that uploads data (and requires data submission
2634 dnl policy alert), set MOZ_DATA_REPORTING.
2635 dnl We need SUBST for build system and DEFINE for xul preprocessor.
2636 if test -n "$MOZ_TELEMETRY_REPORTING" || test -n "$MOZ_SERVICES_HEALTHREPORT" || test -n "$MOZ_CRASHREPORTER" || test -n "$MOZ_NORMANDY"; then
2637 MOZ_DATA_REPORTING=1
2638 AC_DEFINE(MOZ_DATA_REPORTING)
2639 AC_SUBST(MOZ_DATA_REPORTING)
2643 AC_SUBST(WIN32_REDIST_DIR)
2644 AC_SUBST(WIN_UCRT_REDIST_DIR)
2646 dnl Echo the CFLAGS to remove extra whitespace.
2648 $_COMPILATION_CFLAGS \
2652 $_WARNINGS_CXXFLAGS \
2653 $_COMPILATION_CXXFLAGS \
2656 COMPILE_CFLAGS=`echo \
2660 COMPILE_CXXFLAGS=`echo \
2661 $_DEFINES_CXXFLAGS \
2665 $_WARNINGS_HOST_CFLAGS \
2666 $_COMPILATION_HOST_CFLAGS \
2669 HOST_CXXFLAGS=`echo \
2670 $_WARNINGS_HOST_CXXFLAGS \
2671 $_COMPILATION_HOST_CXXFLAGS \
2674 AC_SUBST(MOZ_SYSTEM_PNG)
2676 AC_SUBST_LIST(MOZ_PNG_CFLAGS)
2677 AC_SUBST_LIST(MOZ_PNG_LIBS)
2679 HOST_CMFLAGS="-x objective-c -fobjc-exceptions"
2680 HOST_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
2681 OS_COMPILE_CMFLAGS="-x objective-c -fobjc-exceptions"
2682 OS_COMPILE_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
2683 if test "$MOZ_WIDGET_TOOLKIT" = uikit; then
2684 OS_COMPILE_CMFLAGS="$OS_COMPILE_CMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
2685 OS_COMPILE_CMMFLAGS="$OS_COMPILE_CMMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
2687 AC_SUBST(HOST_CMFLAGS)
2688 AC_SUBST(HOST_CMMFLAGS)
2689 AC_SUBST(OS_COMPILE_CMFLAGS)
2690 AC_SUBST(OS_COMPILE_CMMFLAGS)
2693 OS_CXXFLAGS="$CXXFLAGS"
2694 OS_CPPFLAGS="$CPPFLAGS"
2695 OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
2696 OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
2697 OS_LDFLAGS="$LDFLAGS"
2699 AC_SUBST_LIST(OS_CFLAGS)
2700 AC_SUBST_LIST(OS_CXXFLAGS)
2701 AC_SUBST_LIST(OS_CPPFLAGS)
2702 AC_SUBST_LIST(OS_COMPILE_CFLAGS)
2703 AC_SUBST_LIST(OS_COMPILE_CXXFLAGS)
2704 AC_SUBST_LIST(OS_LDFLAGS)
2709 AC_SUBST_LIST(HOST_CFLAGS)
2710 AC_SUBST_LIST(HOST_CPPFLAGS)
2711 AC_SUBST_LIST(HOST_CXXFLAGS)
2712 AC_SUBST(HOST_LDFLAGS)
2713 AC_SUBST_LIST(HOST_OPTIMIZE_FLAGS)
2714 AC_SUBST(HOST_BIN_SUFFIX)
2716 AC_SUBST(TARGET_XPCOM_ABI)
2717 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
2718 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1)
2719 AC_SUBST(HAVE_X86_AVX2)
2720 AC_SUBST(HAVE_ALTIVEC)
2722 AC_SUBST_LIST(DSO_CFLAGS)
2723 AC_SUBST_LIST(DSO_PIC_CFLAGS)
2724 AC_SUBST(DSO_LDOPTS)
2725 AC_SUBST(BIN_SUFFIX)
2727 AC_SUBST(WIN32_CONSOLE_EXE_LDFLAGS)
2728 AC_SUBST(WIN32_GUI_EXE_LDFLAGS)
2730 AC_SUBST(MOZ_DEVTOOLS)
2732 AC_SUBST(MOZ_PACKAGE_JSSHELL)
2736 dnl Host JavaScript runtime, if any, to use during cross compiles.
2739 AC_SUBST(NSS_EXTRA_SYMBOLS_FILE)
2741 if test -n "$COMPILE_ENVIRONMENT"; then
2742 AC_CHECK_FUNCS(posix_fadvise posix_fallocate)
2744 dnl Check for missing components
2745 if test "$MOZ_X11"; then
2746 dnl ====================================================
2747 dnl = Check if X headers exist
2748 dnl ====================================================
2749 _SAVE_CFLAGS=$CFLAGS
2750 CFLAGS="$CFLAGS $XCFLAGS"
2754 #include <X11/Xlib.h>
2755 #include <X11/Intrinsic.h>
2756 #include <X11/extensions/XShm.h>
2760 if ((dpy = XOpenDisplay(NULL)) == NULL) {
2761 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
2765 [ AC_MSG_ERROR([Can't find X headers (install libxt-dev (Debian/Ubuntu), libXt-devel (Fedora), or xorg-x11-libXt-devel (SuSE)).]) ])
2766 CFLAGS="$_SAVE_CFLAGS"
2768 if test -n "$MISSING_X"; then
2769 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
2774 fi # COMPILE_ENVIRONMENT
2776 dnl Set various defines and substitutions
2777 dnl ========================================================
2779 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK" ; then
2780 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
2781 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
2782 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
2783 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
2784 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
2785 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
2786 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
2787 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
2790 AC_SUBST(MOZ_DEV_EDITION)
2791 if test -n "$MOZ_DEV_EDITION"; then
2792 AC_DEFINE(MOZ_DEV_EDITION)
2795 if test "$MOZ_DEBUG" -o "$DEVELOPER_OPTIONS"; then
2799 if test -n "$A11Y_LOG"; then
2803 dnl Spit out some output
2804 dnl ========================================================
2806 # Avoid using obsolete NSPR features
2807 AC_DEFINE(NO_NSPR_10_SUPPORT)
2809 MOZ_CREATE_CONFIG_STATUS()
2811 rm -fr confdefs* $ac_clean_files