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"
305 if test "$OS_ARCH" != "WINNT" -o -z "$CLANG_CC"; then
306 DSO_PIC_CFLAGS='-fPIC'
307 ASFLAGS="$ASFLAGS -fPIC"
310 AC_MSG_CHECKING([for --noexecstack option to as])
312 CFLAGS="$CFLAGS -Wa,--noexecstack"
313 AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
314 [ASFLAGS="$ASFLAGS -Wa,--noexecstack"],
317 AC_MSG_CHECKING([for -z noexecstack option to ld])
318 _SAVE_LDFLAGS=$LDFLAGS
319 LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
320 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
322 LDFLAGS=$_SAVE_LDFLAGS)
324 AC_MSG_CHECKING([for -z text option to ld])
325 _SAVE_LDFLAGS=$LDFLAGS
326 LDFLAGS="$LDFLAGS -Wl,-z,text"
327 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
329 LDFLAGS=$_SAVE_LDFLAGS)
331 AC_MSG_CHECKING([for -z relro option to ld])
332 _SAVE_LDFLAGS=$LDFLAGS
333 LDFLAGS="$LDFLAGS -Wl,-z,relro"
334 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
336 LDFLAGS=$_SAVE_LDFLAGS)
338 AC_MSG_CHECKING([for -z nocopyreloc option to ld])
339 _SAVE_LDFLAGS=$LDFLAGS
340 LDFLAGS="$LDFLAGS -Wl,-z,nocopyreloc"
341 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
343 LDFLAGS=$_SAVE_LDFLAGS)
345 AC_MSG_CHECKING([for -Bsymbolic-functions option to ld])
346 _SAVE_LDFLAGS=$LDFLAGS
347 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
348 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
350 LDFLAGS=$_SAVE_LDFLAGS)
352 AC_MSG_CHECKING([for --build-id=sha1 option to ld])
353 _SAVE_LDFLAGS=$LDFLAGS
354 LDFLAGS="$LDFLAGS -Wl,--build-id=sha1"
355 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
357 LDFLAGS=$_SAVE_LDFLAGS)
359 AC_MSG_CHECKING([for --ignore-unresolved-symbol option to ld])
360 HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=
361 _SAVE_LDFLAGS=$LDFLAGS
362 LDFLAGS="$LDFLAGS -Wl,--ignore-unresolved-symbol,environ"
363 AC_TRY_LINK(,,AC_MSG_RESULT([yes])
364 [HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=1],
366 LDFLAGS=$_SAVE_LDFLAGS
368 # Check for -mssse3 on $CC
369 AC_MSG_CHECKING([if toolchain supports -mssse3 option])
370 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=
372 CFLAGS="$CFLAGS -mssse3"
373 AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes])
374 [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1],
378 # Check for -msse4.1 on $CC
379 AC_MSG_CHECKING([if toolchain supports -msse4.1 option])
380 HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=
382 CFLAGS="$CFLAGS -msse4.1"
383 AC_TRY_COMPILE([asm ("pmulld %xmm6,%xmm0");],,AC_MSG_RESULT([yes])
384 [HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1],
388 case "${CPU_ARCH}" in
390 AC_MSG_CHECKING(for x86 AVX2 asm support in compiler)
392 [asm volatile ("vpermq \$0xd8,%ymm0,%ymm0 \n");],
393 result="yes", result="no")
394 AC_MSG_RESULT("$result")
395 if test "$result" = "yes"; then
401 AC_MSG_CHECKING([whether we can enable AltiVec support])
404 CFLAGS="$CFLAGS -maltivec"
405 AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
413 if test "$GCC_USE_GNU_LD"; then
414 # Some tools like ASan use a runtime library that is only
415 # linked against executables, so we must allow undefined
416 # symbols for shared objects in some cases.
417 if test -z "$MOZ_ASAN$MOZ_MSAN$MOZ_UBSAN$MOZ_TSAN$FUZZING_INTERFACES"; then
418 # Don't allow undefined symbols in libraries
419 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
421 # BSDs need `environ' exposed for posix_spawn (bug 753046)
423 DragonFly|FreeBSD|NetBSD|OpenBSD)
424 if test -n "$HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED"; then
425 DSO_LDOPTS="$DSO_LDOPTS -Wl,--ignore-unresolved-symbol,environ"
427 DSO_LDOPTS="$DSO_LDOPTS -Wl,--warn-unresolved-symbols"
434 _DEFINES_CFLAGS="-include $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
436 ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS"
439 if test "$GNU_CXX"; then
440 CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing"
442 _DEFINES_CXXFLAGS="-DMOZILLA_CLIENT -include $_objdir/mozilla-config.h"
445 dnl ========================================================
447 dnl ========================================================
449 if test "$MOZ_DMD"; then
450 if test "${CPU_ARCH}" = "arm"; then
451 CFLAGS="$CFLAGS -funwind-tables"
452 CXXFLAGS="$CXXFLAGS -funwind-tables"
456 dnl ========================================================
457 dnl System overrides of the defaults for host
458 dnl ========================================================
461 if test -n "$_WIN32_MSVC"; then
462 HOST_CFLAGS="$HOST_CFLAGS"
464 HOST_CFLAGS="$HOST_CFLAGS -mwindows"
466 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN -DWIN32 -D_WIN32 -D_CRT_SECURE_NO_WARNINGS"
467 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
470 case "${host_cpu}" in
472 if test -n "$_WIN32_MSVC"; then
473 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
477 if test -n "$_WIN32_MSVC"; then
478 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
480 HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
486 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX"
487 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
490 *-linux*|*-kfreebsd*-gnu|*-gnu*)
491 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
492 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
496 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
497 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
501 dnl ========================================================
502 dnl System overrides of the defaults for target
503 dnl ========================================================
507 MOZ_OPTIMIZE_FLAGS="-O3"
508 CXXFLAGS="$CXXFLAGS -stdlib=libc++"
510 # The ExceptionHandling framework is needed for Objective-C exception
511 # logging code in nsObjCExceptions.h. Currently we only use that in debug
513 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling";
515 dnl DTrace and -dead_strip don't interact well. See bug 403132.
516 dnl ===================================================================
517 if test "x$enable_dtrace" = "xyes"; then
518 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
520 dnl check for the presence of the -dead_strip linker flag
521 AC_MSG_CHECKING([for -dead_strip option to ld])
522 _SAVE_LDFLAGS=$LDFLAGS
523 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
524 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
525 if test -n "$_HAVE_DEAD_STRIP" ; then
527 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
532 LDFLAGS=$_SAVE_LDFLAGS
535 MOZ_FIX_LINK_PATHS="-Wl,-executable_path,${DIST}/bin"
538 *-android*|*-linuxandroid*)
539 if test "$COMPILE_ENVIRONMENT" -a -n "$MOZ_MEMORY"; then
543 if test -z "$CLANG_CC"; then
544 MOZ_OPTIMIZE_FLAGS="-freorder-blocks -fno-reorder-functions -Os"
546 # From https://github.com/android-ndk/ndk/issues/133#issuecomment-308549264
547 # -Oz is smaller than -Os on clang.
548 MOZ_OPTIMIZE_FLAGS="-Oz"
549 # Disable the outliner, which causes performance regressions, and is
550 # enabled on some platforms at -Oz.
551 if test -z "$MOZ_LTO"; then
552 DISABLE_OUTLINER="-mno-outline"
554 CFLAGS="$CFLAGS $DISABLE_OUTLINER"
555 AC_TRY_COMPILE(,,[MOZ_OPTIMIZE_FLAGS="$MOZ_OPTIMIZE_FLAGS $DISABLE_OUTLINER"])
556 CFLAGS="$_SAVE_CFLAGS"
558 DISABLE_OUTLINER="-Wl,-plugin-opt=-enable-machine-outliner=never"
559 _SAVE_LDFLAGS=$LDFLAGS
560 LDFLAGS="$LDFLAGS $MOZ_LTO_LDFLAGS $DISABLE_OUTLINER"
561 AC_TRY_LINK(,,[MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS $DISABLE_OUTLINER"])
562 LDFLAGS="$_SAVE_LDFLAGS"
568 if test "$GNU_CC" -o "$GNU_CXX"; then
569 MOZ_PGO_OPTIMIZE_FLAGS="-O3"
570 if test -n "$MOZ_DEBUG"; then
571 MOZ_OPTIMIZE_FLAGS="-Os"
573 MOZ_OPTIMIZE_FLAGS="-O2"
575 if test -z "$CLANG_CC"; then
576 MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS"
580 case "${target_cpu}" in
582 CFLAGS="$CFLAGS -mieee"
583 CXXFLAGS="$CXXFLAGS -mieee"
589 # certain versions of cygwin's makedepend barf on the
590 # #include <string> vs -I./dist/include/string issue so don't use it
591 if test -n "$GNU_CC" -o -n "$CLANG_CC"; then
592 # $GNU_CC will match gcc and clang; while $CLANG_CC will match only clang
593 if test -z "$CLANG_CC"; then
594 AC_MSG_ERROR(Firefox cannot be built with mingw-gcc and requires a mingw-clang toolchain to work)
598 # mingw doesn't require kernel32, user32, and advapi32 explicitly
599 LIBS="$LIBS -luuid -lusp10 -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32"
602 MOZ_OPTIMIZE_FLAGS="-O2"
604 WIN32_CONSOLE_EXE_LDFLAGS=-mconsole
605 WIN32_GUI_EXE_LDFLAGS=-mwindows
607 # Silence problematic clang warnings
608 CXXFLAGS="$CXXFLAGS -Wno-incompatible-ms-struct"
609 LDFLAGS="$LDFLAGS -Wl,--no-insert-timestamp"
611 TARGET_COMPILER_ABI=msvc
612 STRIP='echo not_strip'
613 # aarch64 doesn't support subsystems below 6.02
614 if test "$CPU_ARCH" = "aarch64"; then
615 WIN32_SUBSYSTEM_VERSION=6.02
617 WIN32_SUBSYSTEM_VERSION=6.01
619 WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION
620 WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
621 DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
622 _DEFINES_CFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
623 _DEFINES_CXXFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
624 CFLAGS="$CFLAGS -W3 -Gy -Zc:inline"
625 CXXFLAGS="$CXXFLAGS -W3 -Gy -Zc:inline"
626 if test -z "$CLANG_CL"; then
627 CPPFLAGS="$CPPFLAGS -utf-8"
629 if test "$CPU_ARCH" = "x86"; then
630 dnl VS2012+ defaults to -arch:SSE2. We want to target nothing
631 dnl more recent, so set that explicitly here unless another
632 dnl target arch has already been set.
634 if test -z `echo $CFLAGS | grep -i [-/]arch:`; then
635 CFLAGS="$CFLAGS -arch:SSE2"
637 if test -z `echo $CXXFLAGS | grep -i [-/]arch:`; then
638 CXXFLAGS="$CXXFLAGS -arch:SSE2"
641 SSE_FLAGS="-arch:SSE"
642 SSE2_FLAGS="-arch:SSE2"
643 dnl MSVC allows the use of intrinsics without any flags
644 dnl and doesn't have a separate arch for SSSE3
645 SSSE3_FLAGS="-arch:SSE2"
647 dnl clang-cl requires appropriate flags to enable SSSE3 support
648 dnl on all architectures.
649 if test -n "$CLANG_CL"; then
650 SSSE3_FLAGS="-mssse3"
652 dnl VS2013+ supports -Gw for better linker optimizations.
653 dnl http://blogs.msdn.com/b/vcblog/archive/2013/09/11/introducing-gw-compiler-switch.aspx
654 dnl Disabled on ASan because it causes false-positive ODR violations.
655 if test -z "$MOZ_ASAN"; then
657 CXXFLAGS="$CXXFLAGS -Gw"
659 # String tail merging doesn't play nice with ASan's ODR checker.
660 LDFLAGS="$LDFLAGS -opt:nolldtailmerge"
662 if test -n "$CLANG_CL"; then
663 # XXX We should combine some of these with our generic GCC-style
666 # Suppress the clang-cl warning for the inline 'new' and 'delete' in mozalloc
667 CXXFLAGS="$CXXFLAGS -Wno-inline-new-delete"
668 # We use offsetof on non-POD objects all the time.
669 # We also suppress this warning on other platforms.
670 CXXFLAGS="$CXXFLAGS -Wno-invalid-offsetof"
671 # This warns for reasonable things like:
672 # enum { X = 0xffffffffU };
673 # which is annoying for IDL headers.
674 CXXFLAGS="$CXXFLAGS -Wno-microsoft-enum-value"
675 # This warns for cases that would be reached by the Microsoft
676 # #include rules, but also currently warns on cases that would
677 # *also* be reached by standard C++ include rules. That
678 # behavior doesn't seem useful, so we turn it off.
679 CXXFLAGS="$CXXFLAGS -Wno-microsoft-include"
680 # We normally error out on unknown pragmas, but since clang-cl
681 # claims to be MSVC, it would be difficult to add
682 # #if defined(_MSC_VER) && !defined(__clang__) everywhere we
683 # use such pragmas, so just ignore them.
684 CFLAGS="$CFLAGS -Wno-unknown-pragmas"
685 CXXFLAGS="$CXXFLAGS -Wno-unknown-pragmas"
686 # We get errors about various #pragma intrinsic directives from
687 # clang-cl, and we don't need to hear about those.
688 CFLAGS="$CFLAGS -Wno-ignored-pragmas"
689 CXXFLAGS="$CXXFLAGS -Wno-ignored-pragmas"
690 # clang-cl's Intrin.h marks things like _ReadWriteBarrier
691 # as __attribute((__deprecated__)). This is nice to know,
692 # but since we don't get the equivalent warning from MSVC,
693 # let's just ignore it.
694 CFLAGS="$CFLAGS -Wno-deprecated-declarations"
695 CXXFLAGS="$CXXFLAGS -Wno-deprecated-declarations"
696 # We use a function like:
697 # __declspec(noreturn) __inline void f() {}
698 # which -Winvalid-noreturn complains about. Again, MSVC seems
699 # OK with it, so let's silence the warning.
700 CFLAGS="$CFLAGS -Wno-invalid-noreturn"
701 CXXFLAGS="$CXXFLAGS -Wno-invalid-noreturn"
702 # Missing |override| on virtual function declarations isn't
703 # something that MSVC currently warns about.
704 CXXFLAGS="$CXXFLAGS -Wno-inconsistent-missing-override"
705 # We use -DHAS_EXCEPTIONS=0, which removes the |throw()|
706 # declaration on |operator delete(void*)|. However, clang-cl
707 # must internally declare |operator delete(void*)| differently,
708 # which causes this warning for virtually every file in the
709 # tree. clang-cl doesn't support -fno-exceptions or equivalent,
710 # so there doesn't seem to be any way to convince clang-cl to
711 # declare |delete| differently. Therefore, suppress this
713 CXXFLAGS="$CXXFLAGS -Wno-implicit-exception-spec-mismatch"
714 # Macros like STDMETHOD() and IFACEMETHOD() can declare
715 # __attribute__((nothrow)) on their respective method declarations,
716 # while the definitions are left without the matching attribute.
717 CXXFLAGS="$CXXFLAGS -Wno-microsoft-exception-spec"
718 # At least one MSVC header and several headers in-tree have
719 # unused typedefs, so turn this on.
720 CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"
721 # jemalloc uses __declspec(allocator) as a profiler hint,
722 # which clang-cl doesn't understand.
723 CXXFLAGS="$CXXFLAGS -Wno-ignored-attributes"
724 # __attribute__((unused)) really means "might be unused" and
725 # we use it to avoid warnings about things that are unused
726 # in some compilation units, but used in many others. This
727 # warning insists on complaining about the latter case, which
728 # is annoying, and rather noisy.
729 CXXFLAGS="$CXXFLAGS -Wno-used-but-marked-unused"
731 # Silence VS2017 15.5+ TR1 deprecation warnings hit by older gtest versions
732 CXXFLAGS="$CXXFLAGS -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING"
733 LIBS="$LIBS user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib"
734 MOZ_DEBUG_LDFLAGS='-DEBUG'
735 if test "$HOST_OS_ARCH" != "WINNT"; then
736 # %_PDB% is a special signal to emit only the PDB basename. This
737 # avoids problems in Windows tools that don't like forward-slashes.
738 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -PDBALTPATH:%_PDB%"
740 # Use a higher optimization level for clang-cl, so we can come closer
741 # to MSVC's performance numbers (see bug 1443590).
742 if test -n "$CLANG_CL"; then
743 MOZ_OPTIMIZE_FLAGS='-O2'
745 MOZ_OPTIMIZE_FLAGS='-O1 -Oi'
748 LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE"
749 if test -z "$DEVELOPER_OPTIONS"; then
750 LDFLAGS="$LDFLAGS -RELEASE"
752 dnl Minimum reqiurement of Gecko is VS2015 or later which supports
753 dnl both SSSE3 and SSE4.1.
754 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1
755 HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1
756 dnl allow AVX2 code from VS2015
759 AC_DEFINE(WIN32_LEAN_AND_MEAN)
760 dnl See http://support.microsoft.com/kb/143208 to use STL
763 MOZ_USER_DIR="Mozilla"
767 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.])
773 if test -n "$GNU_CC"; then
774 CFLAGS="$CFLAGS -mstackrealign"
775 CXXFLAGS="$CXXFLAGS -mstackrealign"
776 LDFLAGS="$LDFLAGS -Wl,--large-address-aware"
778 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
779 LDFLAGS="$LDFLAGS -SAFESEH"
785 if test -n "$_WIN32_MSVC"; then
786 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
791 if test -n "$_WIN32_MSVC"; then
792 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:ARM64"
797 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
803 CFLAGS="$CFLAGS -Dunix"
804 CXXFLAGS="$CXXFLAGS -Dunix"
805 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
806 DSO_PIC_CFLAGS='-fPIC -DPIC'
808 MOZ_PROGRAM_LDFLAGS="$MOZ_PROGRAM_LDFLAGS -Wl,--export-dynamic"
810 DSO_PIC_CFLAGS='-fPIC -DPIC'
813 # This will fail on a.out systems prior to 1.5.1_ALPHA.
814 if test "$LIBRUNPATH"; then
815 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
820 if test -z "$X11BASE"; then
823 MOZ_FIX_LINK_PATHS="$MOZ_FIX_LINK_PATHS -Wl,-rpath-link,${X11BASE}/lib"
824 DSO_PIC_CFLAGS='-fPIC'
825 DSO_LDOPTS='-shared -fPIC'
826 if test "$LIBRUNPATH"; then
827 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
832 MOZ_FIX_LINK_PATHS="-L${DIST}/bin"
837 CFLAGS="$CFLAGS $DSO_PIC_CFLAGS"
838 CXXFLAGS="$CXXFLAGS $DSO_PIC_CFLAGS"
840 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
841 MOZ_OPTIMIZE_FLAGS="-O"
844 AC_SUBST_LIST(MMX_FLAGS)
845 AC_SUBST_LIST(SSE_FLAGS)
846 AC_SUBST_LIST(SSE2_FLAGS)
847 AC_SUBST_LIST(SSSE3_FLAGS)
850 if test -n "$MOZ_LINKER"; then
851 AC_DEFINE(MOZ_LINKER)
853 AC_CHECK_PROGS(XZ, xz)
856 if test -z "$COMPILE_ENVIRONMENT"; then
857 SKIP_COMPILER_CHECKS=1
858 SKIP_LIBRARY_CHECKS=1
862 fi # COMPILE_ENVIRONMENT
864 if test -z "$SKIP_COMPILER_CHECKS"; then
865 dnl Checks for typedefs, structures, and compiler characteristics.
866 dnl ========================================================
881 case "${OS_TARGET}" in
885 STL_FLAGS="-I${DIST}/stl_wrappers"
890 if test "$MOZ_BUILD_APP" = "tools/crashreporter"; then
894 dnl Checks for header files.
895 dnl ========================================================
898 bitrig*|dragonfly*|freebsd*|openbsd*)
899 # for stuff like -lXshm
900 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
904 dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
905 AC_CACHE_CHECK(for sockaddr_in.sin_len,
906 ac_cv_sockaddr_in_sin_len,
907 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
908 #include <sys/types.h>
910 #include <netinet/in.h>
911 struct sockaddr_in x;
912 void *foo = (void*) &x.sin_len;],
914 [ac_cv_sockaddr_in_sin_len=true],
915 [ac_cv_sockaddr_in_sin_len=false])])
916 if test "$ac_cv_sockaddr_in_sin_len" = true ; then
917 AC_DEFINE(HAVE_SIN_LEN)
918 dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
919 AC_DEFINE(HAVE_SCONN_LEN)
922 AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
923 ac_cv_sockaddr_in6_sin6_len,
924 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
925 #include <sys/types.h>
927 #include <netinet/in.h>
928 struct sockaddr_in6 x;
929 void *foo = (void*) &x.sin6_len;],
931 [ac_cv_sockaddr_in6_sin6_len=true],
932 [ac_cv_sockaddr_in6_sin6_len=false])])
933 if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
934 AC_DEFINE(HAVE_SIN6_LEN)
937 AC_CACHE_CHECK(for sockaddr.sa_len,
938 ac_cv_sockaddr_sa_len,
939 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
940 #include <sys/types.h>
942 #include <sys/socket.h>
944 void *foo = (void*) &x.sa_len;],
946 [ac_cv_sockaddr_sa_len=true],
947 [ac_cv_sockaddr_sa_len=false])])
948 if test "$ac_cv_sockaddr_sa_len" = true ; then
949 AC_DEFINE(HAVE_SA_LEN)
952 dnl Checks for libraries.
953 dnl ========================================================
954 AC_CHECK_LIB(c_r, gethostbyname_r)
956 dnl We don't want to link with libdl even if it's present on OS X, since
957 dnl it's not used and not part of the default installation. OS/2 has dlfcn
959 dnl We don't want to link against libm or libpthread on Darwin since
960 dnl they both are just symlinks to libSystem and explicitly linking
961 dnl against libSystem causes issues when debugging (see bug 299601).
966 AC_SEARCH_LIBS(dlopen, dl,
967 MOZ_CHECK_HEADER(dlfcn.h,
968 AC_DEFINE(HAVE_DLOPEN)))
972 _SAVE_CFLAGS="$CFLAGS"
973 CFLAGS="$CFLAGS -D_GNU_SOURCE"
974 AC_CHECK_FUNCS(dladdr memmem)
975 CFLAGS="$_SAVE_CFLAGS"
977 if test ! "$GNU_CXX"; then
978 AC_CHECK_LIB(C, demangle)
981 AC_CHECK_LIB(socket, socket)
984 XLIBS="$X_EXTRA_LIBS"
986 dnl ========================================================
987 dnl Checks for X libraries.
988 dnl Ordering is important.
989 dnl Xt is dependent upon SM as of X11R6
990 dnl ========================================================
991 if test -n "$MOZ_X11"; then
992 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
993 _SAVE_LDFLAGS="$LDFLAGS"
995 LDFLAGS="$XLDFLAGS $LDFLAGS"
996 AC_CHECK_LIB(X11, XDrawLines, [XLIBS="-lX11 $XLIBS"],
997 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
998 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
999 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
1001 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
1002 unset ac_cv_lib_Xt_XtFree
1003 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
1004 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
1005 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
1006 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
1009 dnl ========================================================
1011 dnl ========================================================
1012 AC_CHECK_LIB(xcb, xcb_connect, [XLIBS="-lxcb $XLIBS"],
1013 [MISSING_X="$MISSING_X -lxcb"], $XLIBS)
1014 AC_CHECK_LIB(xcb-shm, xcb_shm_query_version, [XLIBS="-lxcb-shm $XLIBS"],
1015 [MISSING_X="$MISSING_X -lxcb-shm"], $XLIBS)
1016 AC_CHECK_LIB(X11-xcb, XGetXCBConnection, [XLIBS="-lX11-xcb $XLIBS"],
1017 [MISSING_X="$MISSING_X -lX11-xcb"], $XLIBS)
1019 LDFLAGS="$_SAVE_LDFLAGS"
1023 AC_SUBST_LIST(XCFLAGS)
1024 AC_SUBST_LIST(XLDFLAGS)
1025 AC_SUBST_LIST(XLIBS)
1026 AC_SUBST_LIST(XEXT_LIBS)
1027 AC_SUBST_LIST(XT_LIBS)
1029 dnl ========================================================
1030 dnl = pthread support
1031 dnl = Start by checking whether the system support pthreads
1032 dnl ========================================================
1033 case "$target_os" in
1038 AC_CHECK_LIB(pthreads, pthread_create,
1039 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
1040 AC_CHECK_LIB(pthread, pthread_create,
1041 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
1042 AC_CHECK_LIB(c_r, pthread_create,
1043 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
1044 AC_CHECK_LIB(c, pthread_create,
1053 dnl ========================================================
1054 dnl Do the platform specific pthread hackery
1055 dnl ========================================================
1056 if test "$MOZ_USE_PTHREADS"x != x
1059 dnl See if -pthread is supported.
1062 ac_cv_have_dash_pthread=no
1063 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
1064 echo 'int main() { return 0; }' | cat > conftest.c
1065 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
1066 if test $? -eq 0; then
1067 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
1068 ac_cv_have_dash_pthread=yes
1069 case "$target_os" in
1071 # Freebsd doesn't use -pthread for compiles, it uses them for linking
1074 CFLAGS="$CFLAGS -pthread"
1075 CXXFLAGS="$CXXFLAGS -pthread"
1081 AC_MSG_RESULT($ac_cv_have_dash_pthread)
1084 dnl See if -pthreads is supported.
1086 ac_cv_have_dash_pthreads=no
1087 if test "$ac_cv_have_dash_pthread" = "no"; then
1088 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
1089 echo 'int main() { return 0; }' | cat > conftest.c
1090 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
1091 if test $? -eq 0; then
1092 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
1093 ac_cv_have_dash_pthreads=yes
1094 CFLAGS="$CFLAGS -pthreads"
1095 CXXFLAGS="$CXXFLAGS -pthreads"
1099 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
1104 AC_DEFINE(_REENTRANT)
1105 AC_DEFINE(_THREAD_SAFE)
1106 dnl -pthread links in -lpthread, so don't specify it explicitly.
1107 if test "$ac_cv_have_dash_pthread" = "yes"; then
1108 _PTHREAD_LDFLAGS="-pthread"
1112 *-*-openbsd*|*-*-bsdi*)
1113 AC_DEFINE(_REENTRANT)
1114 AC_DEFINE(_THREAD_SAFE)
1115 dnl -pthread links in -lc_r, so don't specify it explicitly.
1116 if test "$ac_cv_have_dash_pthread" = "yes"; then
1117 _PTHREAD_LDFLAGS="-pthread"
1121 *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
1122 AC_DEFINE(_REENTRANT)
1126 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
1127 AC_SUBST(MOZ_USE_PTHREADS)
1128 MOZ_CHECK_HEADERS(pthread.h)
1132 dnl Checks for library functions.
1133 dnl ========================================================
1134 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)
1136 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
1137 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
1138 ac_cv_clock_monotonic,
1139 [for libs in "" -lrt; do
1142 dnl clock_gettime is available on OSX since 10.12, so depending on MACOSX_DEPLOYMENT_TARGET,
1143 dnl we should or not be able to use it. To detect if we can, we need to make the
1144 dnl availability attribute strict, so that compilation fails when the target is < 10.12.
1145 AC_TRY_LINK([#define availability(os, ...) availability(os, strict, __VA_ARGS)
1147 [ struct timespec ts;
1148 clock_gettime(CLOCK_MONOTONIC, &ts); ],
1149 ac_cv_clock_monotonic=$libs
1152 ac_cv_clock_monotonic=no)
1155 if test "$ac_cv_clock_monotonic" != "no"; then
1156 HAVE_CLOCK_MONOTONIC=1
1157 REALTIME_LIBS=$ac_cv_clock_monotonic
1158 AC_DEFINE(HAVE_CLOCK_MONOTONIC)
1159 AC_SUBST(HAVE_CLOCK_MONOTONIC)
1160 AC_SUBST_LIST(REALTIME_LIBS)
1163 dnl Turn on warnings-as-errors to prevent implicit declaration of
1164 dnl pthread_cond_timedwait_monotonic_np, which can cause this test to
1165 dnl inadvertently pass even if the function does not really exist.
1166 _SAVE_CFLAGS="$CFLAGS"
1167 CFLAGS="$CFLAGS $WARNINGS_AS_ERRORS"
1168 AC_CACHE_CHECK(for pthread_cond_timedwait_monotonic_np,
1169 ac_cv_pthread_cond_timedwait_monotonic_np,
1170 AC_TRY_LINK([#include <pthread.h>],
1171 [pthread_cond_timedwait_monotonic_np(0, 0, 0);],
1172 ac_cv_pthread_cond_timewait_monotonic_np=yes,
1173 ac_cv_pthread_cond_timewait_monotonic_np=no))
1174 if test "$ac_cv_pthread_cond_timewait_monotonic_np" != "no"; then
1175 AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC)
1177 CFLAGS=$_SAVE_CFLAGS
1181 ac_cv_func_res_ninit,
1182 [if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then
1183 dnl no need for res_ninit() on NetBSD and OpenBSD
1184 ac_cv_func_res_ninit=no
1188 #define _BSD_SOURCE 1
1190 #include <sys/types.h>
1191 #include <netinet/in.h>
1192 #include <arpa/nameser.h>
1195 [int foo = res_ninit(&_res);],
1196 [ac_cv_func_res_ninit=yes],
1197 [ac_cv_func_res_ninit=no])
1201 if test "$ac_cv_func_res_ninit" = "yes"; then
1202 AC_DEFINE(HAVE_RES_NINIT)
1203 dnl must add the link line we do something as foolish as this... dougt
1205 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
1206 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
1211 dnl **********************
1212 dnl *** va_copy checks ***
1213 AC_CACHE_CHECK([for an implementation of va_copy()],
1215 [AC_TRY_COMPILE([#include <stdarg.h>
1217 void f (int i, ...) {
1218 va_list args1, args2;
1219 va_start (args1, i);
1220 va_copy (args2, args1);
1221 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1223 va_end (args1); va_end (args2);
1225 [f(0, 42); return 0],
1226 [ac_cv_va_copy=yes],
1230 AC_CACHE_CHECK([whether va_list can be copied by value],
1232 [AC_TRY_COMPILE([#include <stdarg.h>
1234 void f (int i, ...) {
1235 va_list args1, args2;
1236 va_start (args1, i);
1238 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1240 va_end (args1); va_end (args2);
1242 [f(0, 42); return 0],
1243 [ac_cv_va_val_copy=yes],
1244 [ac_cv_va_val_copy=no],
1247 if test "x$ac_cv_va_copy" = "xyes"; then
1248 AC_DEFINE(VA_COPY, va_copy)
1249 AC_DEFINE(HAVE_VA_COPY)
1252 if test "x$ac_cv_va_val_copy" = "xno"; then
1253 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
1256 dnl ===================================================================
1257 dnl ========================================================
1258 dnl Put your C++ language/feature checks below
1259 dnl ========================================================
1263 if test "$GNU_CC"; then
1264 if test "$CPU_ARCH" = "arm" ; then
1265 AC_CACHE_CHECK(for ARM EABI,
1269 #if defined(__ARM_EABI__)
1272 #error Not ARM EABI.
1275 ac_cv_gcc_arm_eabi="yes",
1276 ac_cv_gcc_arm_eabi="no")])
1277 if test "$ac_cv_gcc_arm_eabi" = "yes"; then
1279 ARM_ABI_PREFIX=eabi-
1281 ARM_ABI_PREFIX=oabi-
1285 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
1288 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
1289 # We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
1290 # enabled, the linker in xcode 4.1 will crash. Without this it would crash when
1292 _SAVE_LDFLAGS=$LDFLAGS
1293 LDFLAGS="$LDFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
1294 AC_CACHE_CHECK(for __thread keyword for TLS variables,
1295 ac_cv_thread_keyword,
1296 [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
1297 [return tlsIsMainThread;],
1298 ac_cv_thread_keyword=yes,
1299 ac_cv_thread_keyword=no)])
1300 LDFLAGS=$_SAVE_LDFLAGS
1301 # The custom dynamic linker doesn't support TLS variables
1303 if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
1304 # mips builds fail with TLS variables because of a binutils bug.
1306 # OpenBSD doesn't have TLS support, and the test succeeds with clang++
1311 *-android*|*-linuxandroid*)
1318 AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
1324 dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments.
1325 if test -n "$MOZ_LINKER"; then
1326 if test "$CPU_ARCH" = arm; then
1327 dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments
1328 if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
1329 LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
1330 _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
1334 dnl gold emits wrong sysv-style elf hash tables when building both sysv and
1335 dnl style tables. https://sourceware.org/bugzilla/show_bug.cgi?id=13597
1336 dnl Since the linker only understands the sysv ones, no need to build the
1337 dnl gnu style tables anyways.
1338 LDFLAGS="$LDFLAGS -Wl,--hash-style=sysv"
1341 dnl End of C++ language/feature checks
1344 dnl ========================================================
1345 dnl = Internationalization checks
1346 dnl ========================================================
1348 dnl Internationalization and Locale support is different
1349 dnl on various UNIX platforms. Checks for specific i18n
1350 dnl features go here.
1352 AC_HAVE_FUNCS(localeconv)
1354 fi # ! SKIP_COMPILER_CHECKS
1356 if test -n "${COMPILE_ENVIRONMENT}"; then
1361 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
1362 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
1363 AC_DEFINE_UNQUOTED(TARGET_XPCOM_ABI, ["${TARGET_XPCOM_ABI}"])
1366 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
1367 dnl features that Windows actually does support.
1369 if test -n "$SKIP_COMPILER_CHECKS"; then
1370 dnl Windows has malloc.h
1371 AC_DEFINE(MALLOC_H, [<malloc.h>])
1372 AC_DEFINE(HAVE_FORCEINLINE)
1373 AC_DEFINE(HAVE_LOCALECONV)
1374 fi # SKIP_COMPILER_CHECKS
1376 dnl Mozilla specific options
1377 dnl ========================================================
1378 dnl The macros used for command line options
1379 dnl are defined in build/autoconf/altoptions.m4.
1381 dnl ========================================================
1383 dnl = Check for external package dependencies
1385 dnl ========================================================
1386 MOZ_ARG_HEADER(External Packages)
1388 dnl ========================================================
1389 dnl system libevent Support
1390 dnl ========================================================
1391 MOZ_ARG_WITH_STRING(system-libevent,
1392 [ --with-system-libevent[=PFX]
1393 Use system libevent [installed at prefix PFX]],
1394 LIBEVENT_DIR=$withval)
1396 _SAVE_CFLAGS=$CFLAGS
1397 _SAVE_LDFLAGS=$LDFLAGS
1399 if test "$LIBEVENT_DIR" = yes; then
1400 PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
1401 MOZ_SYSTEM_LIBEVENT=1,
1404 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
1405 MOZ_SYSTEM_LIBEVENT=
1406 elif test -z "$MOZ_SYSTEM_LIBEVENT"; then
1407 CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
1408 LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
1409 MOZ_CHECK_HEADER(event.h,
1410 [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
1411 AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
1413 AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
1414 AC_CHECK_LIB(event, event_init,
1415 [MOZ_SYSTEM_LIBEVENT=1
1416 MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
1417 MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
1418 [MOZ_SYSTEM_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
1420 CFLAGS=$_SAVE_CFLAGS
1421 LDFLAGS=$_SAVE_LDFLAGS
1424 AC_SUBST(MOZ_SYSTEM_LIBEVENT)
1426 if test -z "$SKIP_LIBRARY_CHECKS"; then
1428 dnl ========================================================
1429 dnl system PNG Support
1430 dnl ========================================================
1431 MOZ_ARG_WITH_STRING(system-png,
1432 [ --with-system-png[=PFX]
1433 Use system libpng [installed at prefix PFX]],
1436 _SAVE_CFLAGS=$CFLAGS
1437 _SAVE_LDFLAGS=$LDFLAGS
1439 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
1440 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
1441 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
1443 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
1446 AC_CHECK_LIB(png, png_get_valid, [MOZ_SYSTEM_PNG=1 MOZ_PNG_LIBS="-lpng"],
1447 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
1448 AC_CHECK_LIB(png, png_get_acTL, ,
1449 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]))
1451 if test "$MOZ_SYSTEM_PNG" = 1; then
1452 AC_TRY_COMPILE([ #include <stdio.h>
1453 #include <sys/types.h>
1455 [ #if PNG_LIBPNG_VER < $MOZPNG
1456 #error "Insufficient libpng version ($MOZPNG required)."
1458 #ifndef PNG_UINT_31_MAX
1459 #error "Insufficient libpng version."
1462 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
1464 CFLAGS=$_SAVE_CFLAGS
1465 LDFLAGS=$_SAVE_LDFLAGS
1468 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_SYSTEM_PNG" = 1; then
1469 MOZ_PNG_CFLAGS="-I${PNG_DIR}/include"
1470 MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}"
1473 fi # SKIP_LIBRARY_CHECKS
1475 dnl ========================================================
1479 dnl ========================================================
1481 MOZ_ARG_HEADER(Application)
1483 ENABLE_SYSTEM_EXTENSION_DIRS=1
1484 MOZ_BRANDING_DIRECTORY=
1485 MOZ_OFFICIAL_BRANDING=
1486 MOZ_AUTH_EXTENSION=1
1488 MOZ_UNIVERSALCHARDET=1
1493 MOZ_BINARY_EXTENSIONS=
1496 dnl ========================================================
1497 dnl = Trademarked Branding
1498 dnl ========================================================
1499 MOZ_ARG_ENABLE_BOOL(official-branding,
1500 [ --enable-official-branding
1501 Enable Official mozilla.org Branding
1502 Do not distribute builds with
1503 --enable-official-branding unless you have
1504 permission to use trademarks per
1505 http://www.mozilla.org/foundation/trademarks/ .],
1506 MOZ_OFFICIAL_BRANDING=1,
1507 MOZ_OFFICIAL_BRANDING=)
1509 # Allow the application to influence configure with a confvars.sh script.
1510 AC_MSG_CHECKING([if app-specific confvars.sh exists])
1511 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
1512 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
1513 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
1518 dnl ========================================================
1519 dnl Ensure Android SDK and build-tools versions depending on
1521 dnl ========================================================
1523 case "$MOZ_BUILD_APP" in
1529 dnl ========================================================
1531 dnl = Toolkit Options
1533 dnl ========================================================
1534 MOZ_ARG_HEADER(Toolkit Options)
1536 dnl ========================================================
1537 dnl = Enable the toolkit as needed =
1538 dnl ========================================================
1540 case "$MOZ_WIDGET_TOOLKIT" in
1543 LDFLAGS="$LDFLAGS -framework Cocoa"
1544 # Use -Wl as a trick to avoid -framework and framework names from
1545 # being separated by AC_SUBST_LIST.
1546 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'
1548 CFLAGS="$CFLAGS $TK_CFLAGS"
1549 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
1550 MOZ_USER_DIR="Mozilla"
1551 MOZ_FS_LAYOUT=bundle
1555 LDFLAGS="$LDFLAGS -framework UIKit"
1557 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'
1558 CFLAGS="$CFLAGS $TK_CFLAGS"
1559 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
1560 MOZ_USER_DIR="Mozilla"
1561 MOZ_FS_LAYOUT=bundle
1566 if test "$OS_TARGET" = Darwin; then
1567 LDFLAGS="$LDFLAGS -lobjc"
1570 dnl there are a lot of tests on MOZ_ENABLE_GTK below, that are more convenient
1571 dnl to keep that way than testing against MOZ_WIDGET_TOOLKIT
1572 case "$MOZ_WIDGET_TOOLKIT" in
1578 if test "$COMPILE_ENVIRONMENT"; then
1579 if test "$MOZ_WIDGET_TOOLKIT" = gtk; then
1580 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)
1581 MOZ_GTK3_CFLAGS="-I${_topsrcdir}/widget/gtk/compat-gtk3 $MOZ_GTK3_CFLAGS"
1582 TK_CFLAGS=$MOZ_GTK3_CFLAGS
1583 TK_LIBS=$MOZ_GTK3_LIBS
1584 dnl GDK_VERSION_MIN_REQUIRED is not set here as GDK3 deprecated warnings
1585 dnl are suppressed by widget/gtk/compat-gtk3/gdk/gdkversionmacros.h.
1586 AC_DEFINE_UNQUOTED(GDK_VERSION_MAX_ALLOWED,$GDK_VERSION_MAX_ALLOWED)
1588 if test "$MOZ_ENABLE_GTK"; then
1589 AC_DEFINE_UNQUOTED(GLIB_VERSION_MIN_REQUIRED,$GLIB_VERSION_MIN_REQUIRED)
1590 AC_DEFINE_UNQUOTED(GLIB_VERSION_MAX_ALLOWED,$GLIB_VERSION_MAX_ALLOWED)
1592 if test "$MOZ_X11"; then
1593 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)
1594 MOZ_GTK2_CFLAGS="-I${_topsrcdir}/widget/gtk/compat $MOZ_GTK2_CFLAGS"
1597 fi # COMPILE_ENVIRONMENT
1599 AC_SUBST(MOZ_FS_LAYOUT)
1601 AC_SUBST_LIST(TK_CFLAGS)
1602 AC_SUBST_LIST(TK_LIBS)
1604 dnl ========================================================
1606 dnl = Components & Features
1608 dnl ========================================================
1609 MOZ_ARG_HEADER(Components and Features)
1611 AC_SUBST(MOZ_OFFICIAL_BRANDING)
1612 if test -n "$MOZ_OFFICIAL_BRANDING"; then
1613 if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
1614 AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
1616 MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
1617 AC_DEFINE(MOZ_OFFICIAL_BRANDING)
1621 MOZ_ARG_WITH_STRING(branding,
1622 [ --with-branding=dir Use branding from the specified directory.],
1623 MOZ_BRANDING_DIRECTORY=$withval)
1625 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
1626 if test -z "$REAL_BRANDING_DIRECTORY"; then
1627 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
1630 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
1631 . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
1634 AC_SUBST(MOZ_BRANDING_DIRECTORY)
1636 dnl ========================================================
1637 dnl = Distribution ID
1638 dnl ========================================================
1639 MOZ_ARG_WITH_STRING(distribution-id,
1640 [ --with-distribution-id=ID
1641 Set distribution-specific id (default=org.mozilla)],
1642 [ val=`echo $withval`
1643 MOZ_DISTRIBUTION_ID="$val"])
1645 if test -z "$MOZ_DISTRIBUTION_ID"; then
1646 MOZ_DISTRIBUTION_ID="org.mozilla"
1649 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
1650 AC_SUBST(MOZ_DISTRIBUTION_ID)
1652 dnl ========================================================
1653 dnl = libproxy support
1654 dnl ========================================================
1656 if test "$MOZ_ENABLE_GTK"
1658 MOZ_ENABLE_LIBPROXY=
1660 MOZ_ARG_ENABLE_BOOL(libproxy,
1661 [ --enable-libproxy Enable libproxy support ],
1662 MOZ_ENABLE_LIBPROXY=1,
1663 MOZ_ENABLE_LIBPROXY=)
1665 if test "$MOZ_ENABLE_LIBPROXY"
1667 PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
1668 AC_DEFINE(MOZ_ENABLE_LIBPROXY)
1671 AC_SUBST(MOZ_ENABLE_LIBPROXY)
1673 dnl ========================================================
1675 dnl ========================================================
1677 if test "$MOZ_ENABLE_GTK"
1681 MOZ_ARG_DISABLE_BOOL(dbus,
1682 [ --disable-dbus Disable dbus support ],
1686 if test "$MOZ_ENABLE_DBUS"
1688 PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
1689 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
1690 AC_DEFINE(MOZ_ENABLE_DBUS)
1693 AC_SUBST(MOZ_ENABLE_DBUS)
1695 AC_TRY_COMPILE([#include <linux/ethtool.h>],
1696 [ struct ethtool_cmd cmd; cmd.speed_hi = 0; ],
1697 MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI=1)
1699 AC_SUBST(MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI)
1701 if test -n "$MOZ_WEBRTC"; then
1702 if test -n "$MOZ_X11"; then
1703 MOZ_WEBRTC_X11_LIBS="-lXext -lXdamage -lXfixes -lXcomposite"
1707 AC_SUBST_LIST(MOZ_WEBRTC_X11_LIBS)
1709 dnl ========================================================
1710 dnl = Apple platform decoder support
1711 dnl ========================================================
1712 if test "$COMPILE_ENVIRONMENT"; then
1713 if test -n "$MOZ_APPLEMEDIA"; then
1714 # hack in frameworks for fmp4 - see bug 1029974
1715 # We load VideoToolbox and CoreMedia dynamically, so they don't appear here.
1716 LDFLAGS="$LDFLAGS -framework AudioToolbox"
1717 dnl Verify CoreMedia is available.
1718 AC_CHECK_HEADERS([CoreMedia/CoreMedia.h VideoToolbox/VideoToolbox.h], [],
1719 [AC_MSG_ERROR([MacOS X 10.9 SDK or later is required])])
1721 fi # COMPILE_ENVIRONMENT
1723 dnl ========================================================
1724 dnl = Handle dependent MEDIA defines
1725 dnl ========================================================
1728 AC_DEFINE(MOZ_WEBM_ENCODER)
1729 AC_SUBST(MOZ_WEBM_ENCODER)
1731 dnl ========================================================
1733 dnl ========================================================
1735 MOZ_ARG_DISABLE_BOOL(negotiateauth,
1736 [ --disable-negotiateauth Disable GSS-API negotiation ],
1737 MOZ_AUTH_EXTENSION=,
1738 MOZ_AUTH_EXTENSION=1 )
1740 dnl ========================================================
1741 dnl Searching of system directories for extensions.
1742 dnl Note: this switch is meant to be used for test builds
1743 dnl whose behavior should not depend on what happens to be
1744 dnl installed on the local machine.
1745 dnl ========================================================
1746 MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
1747 [ --disable-system-extension-dirs
1748 Disable searching system- and account-global
1749 directories for extensions of any kind; use
1750 only profile-specific extension directories],
1751 ENABLE_SYSTEM_EXTENSION_DIRS=,
1752 ENABLE_SYSTEM_EXTENSION_DIRS=1 )
1753 if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
1754 AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
1757 dnl ========================================================
1758 dnl = Universalchardet
1759 dnl ========================================================
1760 MOZ_ARG_DISABLE_BOOL(universalchardet,
1761 [ --disable-universalchardet
1762 Disable universal encoding detection],
1763 MOZ_UNIVERSALCHARDET=,
1764 MOZ_UNIVERSALCHARDET=1 )
1766 dnl ========================================================
1768 dnl ========================================================
1770 if test "$COMPILE_ENVIRONMENT" ; then
1772 dnl Moved gamepad platform check to moz.build, linux header check still needed here.
1773 if test "$OS_TARGET" = "Linux"; then
1774 MOZ_CHECK_HEADER([linux/joystick.h])
1775 if test "$ac_cv_header_linux_joystick_h" != "yes"; then
1776 AC_MSG_ERROR([Can't find header linux/joystick.h, needed for gamepad support. Please install Linux kernel headers.])
1780 fi # COMPILE_ENVIRONMENT
1783 dnl ========================================================
1784 dnl = Breakpad crash reporting (on by default on supported platforms)
1785 dnl ========================================================
1788 i?86-*-mingw*|x86_64-*-mingw*|aarch64-*-mingw*)
1791 i?86-apple-darwin*|x86_64-apple-darwin*|aarch64-apple-darwin*)
1794 *-android*|*-linuxandroid*)
1795 dnl Android/arm is arm-unknown-linux-androideabi, so android condition should
1796 dnl be before Linux condition
1797 dnl The crash reporter prevents crash stacktraces to be logged in the
1798 dnl logs so we leave it out by default in developer builds.
1799 if test -z "$DEVELOPER_OPTIONS"; then
1803 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
1804 if test "$MOZ_ENABLE_GTK"; then
1810 MOZ_ARG_DISABLE_BOOL(crashreporter,
1811 [ --disable-crashreporter Disable breakpad crash reporting],
1812 [MOZ_CRASHREPORTER=],
1813 [MOZ_CRASHREPORTER=F # Force enable breakpad])
1815 if test "$OS_ARCH" != "$HOST_OS_ARCH" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "Darwin" -a "$MOZ_WIDGET_TOOLKIT" != "android"; then
1816 if test "$MOZ_CRASHREPORTER" = F; then
1817 AC_MSG_ERROR([Cannot --enable-crashreporter, as breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH.])
1822 if test -n "$MOZ_CRASHREPORTER"; then
1823 AC_DEFINE(MOZ_CRASHREPORTER)
1825 if test "$OS_TARGET" = "Linux" && \
1826 test -z "$SKIP_LIBRARY_CHECKS"; then
1827 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
1830 if test "$OS_ARCH" = "WINNT"; then
1831 if test -z "$HAVE_64BIT_BUILD" -a -n "$COMPILE_ENVIRONMENT"; then
1832 MOZ_CRASHREPORTER_INJECTOR=1
1833 AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
1838 dnl ========================================================
1839 dnl = Enable compilation of specific extension modules
1840 dnl ========================================================
1842 MOZ_ARG_ENABLE_STRING(extensions,
1843 [ --enable-extensions Enable extensions],
1844 [ for option in `echo $enableval | sed 's/,/ /g'`; do
1845 if test "$option" = "yes" -o "$option" = "all"; then
1846 AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
1847 elif test "$option" = "no" -o "$option" = "none"; then
1849 elif test "$option" = "default"; then
1850 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
1851 elif test `echo "$option" | grep -c \^-` != 0; then
1852 option=`echo $option | sed 's/^-//'`
1853 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
1855 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
1858 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
1860 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
1861 dnl when trying to build a nonexistent extension.
1862 for extension in $MOZ_EXTENSIONS; do
1863 if test ! -d "${srcdir}/extensions/${extension}"; then
1864 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
1868 # Avoid defining MOZ_ENABLE_CAIRO_FT on Windows platforms because
1869 # "cairo-ft-font.c" includes <dlfcn.h>, which only exists on posix platforms
1870 if test -n "$MOZ_TREE_FREETYPE" -a "$OS_TARGET" != WINNT; then
1871 MOZ_ENABLE_CAIRO_FT=1
1872 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
1873 CAIRO_FT_CFLAGS="-I$_topsrcdir/modules/freetype2/include"
1874 AC_SUBST_LIST(CAIRO_FT_CFLAGS)
1877 dnl ========================================================
1879 dnl ========================================================
1881 MOZ_ARG_DISABLE_BOOL(updater,
1882 [ --disable-updater Disable building of updater],
1886 if test -n "$MOZ_UPDATER"; then
1887 AC_DEFINE(MOZ_UPDATER)
1890 dnl ========================================================
1891 dnl parental controls (for Windows Vista)
1892 dnl ========================================================
1893 MOZ_ARG_DISABLE_BOOL(parental-controls,
1894 [ --disable-parental-controls
1895 Do not build parental controls],
1896 MOZ_DISABLE_PARENTAL_CONTROLS=1,
1897 MOZ_DISABLE_PARENTAL_CONTROLS=)
1898 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
1899 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
1902 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
1904 dnl ========================================================
1905 dnl = Disable smartcard support
1906 dnl ========================================================
1907 if test -n "$MOZ_NO_SMART_CARDS"; then
1908 AC_DEFINE(MOZ_NO_SMART_CARDS)
1910 AC_SUBST(MOZ_NO_SMART_CARDS)
1912 dnl ========================================================
1913 dnl = Sandboxing support
1914 dnl ========================================================
1915 if test -n "$MOZ_TSAN" -o -n "$MOZ_ASAN"; then
1916 # Bug 1182565: TSan conflicts with sandboxing on Linux.
1917 # Bug 1287971: LSan also conflicts with sandboxing on Linux.
1925 MOZ_ARG_DISABLE_BOOL(sandbox,
1926 [ --disable-sandbox Disable sandboxing support],
1930 case "$OS_TARGET" in
1931 WINNT|Darwin|OpenBSD)
1935 x86_64|x86|arm|aarch64)
1937 # Linux sandbox is only available on x86{,_64} and arm{,64}.
1944 # Only enable the sandbox by default on Linux, OpenBSD, macOS, and Windows
1949 if test -n "$MOZ_SANDBOX"; then
1950 AC_DEFINE(MOZ_SANDBOX)
1953 AC_SUBST(MOZ_SANDBOX)
1956 dnl ========================================================
1958 dnl = Module specific options
1960 dnl ========================================================
1961 MOZ_ARG_HEADER(Individual module options)
1963 dnl ==============================
1964 dnl === SQLite fdatasync check ===
1965 dnl ==============================
1966 dnl Check to see if fdatasync is available and make use of it
1967 AC_CHECK_FUNC(fdatasync)
1969 dnl ========================================================
1970 dnl = Disable zipwriter
1971 dnl ========================================================
1972 MOZ_ARG_DISABLE_BOOL(zipwriter,
1973 [ --disable-zipwriter Disable zipwriter component],
1976 AC_SUBST(MOZ_ZIPWRITER)
1978 dnl ========================================================
1980 dnl = Feature options that require extra sources to be pulled
1982 dnl ========================================================
1983 dnl MOZ_ARG_HEADER(Features that require extra sources)
1985 dnl ========================================================
1987 dnl = Runtime debugging and Optimization Options
1989 dnl ========================================================
1990 MOZ_ARG_HEADER(Runtime debugging and Optimizations)
1992 dnl ========================================================
1993 dnl = Enable code optimization. ON by default.
1994 dnl ========================================================
1996 # Use value from moz.configure if one is defined. Else use our computed
1998 if test -n "${MOZ_CONFIGURE_OPTIMIZE_FLAGS}"; then
1999 MOZ_OPTIMIZE_FLAGS=${MOZ_CONFIGURE_OPTIMIZE_FLAGS}
2002 if test "$COMPILE_ENVIRONMENT"; then
2003 if test -n "$MOZ_OPTIMIZE"; then
2004 AC_MSG_CHECKING([for valid C compiler optimization flags])
2005 _SAVE_CFLAGS=$CFLAGS
2006 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
2007 AC_TRY_COMPILE([#include <stdio.h>],
2008 [printf("Hello World\n");],
2011 AC_MSG_RESULT([$_results])
2012 if test "$_results" = "no"; then
2013 AC_MSG_ERROR([These compiler flags for C are invalid: $MOZ_OPTIMIZE_FLAGS])
2015 CFLAGS=$_SAVE_CFLAGS
2016 if test -n "$MOZ_LTO" -a -n "$CLANG_CC"; then
2017 # When using llvm-based LTO, non numeric optimization levels are
2018 # not supported by the linker, so force the linker to use -O2 (
2019 # which doesn't influence the level compilation units are actually
2021 case " $MOZ_OPTIMIZE_FLAGS " in
2022 *\ -Os\ *|*\ -Oz\ *)
2023 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -O2"
2028 fi # COMPILE_ENVIRONMENT
2030 AC_SUBST_LIST(MOZ_OPTIMIZE_FLAGS)
2031 AC_SUBST_LIST(MOZ_OPTIMIZE_LDFLAGS)
2032 AC_SUBST_LIST(MOZ_PGO_OPTIMIZE_FLAGS)
2034 dnl ========================================================
2035 dnl = Enable runtime logging
2036 dnl ========================================================
2037 AC_DEFINE(MOZ_LOGGING)
2038 AC_DEFINE(FORCE_PR_LOG)
2040 dnl ========================================================
2041 dnl = This will enable logging of addref, release, ctor, dtor.
2042 dnl ========================================================
2043 _ENABLE_LOGREFCNT=42
2044 MOZ_ARG_ENABLE_BOOL(logrefcnt,
2045 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
2046 _ENABLE_LOGREFCNT=1,
2047 _ENABLE_LOGREFCNT= )
2048 if test "$_ENABLE_LOGREFCNT" = "1"; then
2049 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
2050 elif test -z "$_ENABLE_LOGREFCNT"; then
2051 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
2054 dnl ========================================================
2055 dnl moz_dump_painting
2056 dnl ========================================================
2057 MOZ_ARG_ENABLE_BOOL(dump-painting,
2058 [ --enable-dump-painting Enable paint debugging.],
2059 MOZ_DUMP_PAINTING=1,
2060 MOZ_DUMP_PAINTING= )
2061 if test -n "$MOZ_DUMP_PAINTING"; then
2062 AC_DEFINE(MOZ_DUMP_PAINTING)
2063 AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
2065 if test -n "$MOZ_DEBUG"; then
2066 AC_DEFINE(MOZ_DUMP_PAINTING)
2069 case "${OS_TARGET}" in
2070 Android|WINNT|Darwin)
2071 MOZ_GLUE_IN_PROGRAM=
2074 dnl On !Android !Windows !OSX, we only want to link executables against mozglue
2075 MOZ_GLUE_IN_PROGRAM=1
2076 AC_DEFINE(MOZ_GLUE_IN_PROGRAM)
2080 dnl ========================================================
2081 dnl = Jemalloc build setup
2082 dnl ========================================================
2083 if test -z "$MOZ_MEMORY"; then
2086 if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
2087 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.])
2092 dnl The generic feature tests that determine how to compute ncpus are long and
2093 dnl complicated. Therefore, simply define special cpp variables for the
2094 dnl platforms we have special knowledge of.
2097 export MOZ_NO_DEBUG_RTL=1
2101 AC_SUBST(MOZ_GLUE_IN_PROGRAM)
2103 dnl ========================================================
2104 dnl = Enable using the clang plugin to build
2105 dnl ========================================================
2107 if test -n "$COMPILE_ENVIRONMENT"; then
2108 MOZ_CONFIG_CLANG_PLUGIN
2109 fi # COMPILE_ENVIRONMENT
2111 dnl ========================================================
2112 dnl = frontend JS debug mode
2113 dnl ========================================================
2115 MOZ_ARG_ENABLE_BOOL(debug-js-modules,
2116 [ --enable-debug-js-modules Enable debug mode for frontend JS libraries],
2120 AC_SUBST(DEBUG_JS_MODULES)
2122 dnl ========================================================
2124 dnl = Profiling and Instrumenting
2126 dnl ========================================================
2127 MOZ_ARG_HEADER(Profiling and Instrumenting)
2129 dnl ========================================================
2130 dnl = Support for demangling undefined symbols
2131 dnl ========================================================
2132 if test -z "$SKIP_LIBRARY_CHECKS"; then
2135 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
2139 # Demangle only for debug or DMD builds
2140 MOZ_DEMANGLE_SYMBOLS=
2141 if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$MOZ_DMD"; then
2142 MOZ_DEMANGLE_SYMBOLS=1
2143 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
2145 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
2147 dnl ========================================================
2148 dnl = Support for gcc stack unwinding (from gcc 3.3)
2149 dnl ========================================================
2150 if test -z "$SKIP_LIBRARY_CHECKS"; then
2153 MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
2157 dnl ========================================================
2161 dnl ========================================================
2162 MOZ_ARG_HEADER(Misc. Options)
2164 dnl ========================================================
2165 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
2166 dnl ========================================================
2167 MOZ_ARG_WITH_STRING(user-appdir,
2168 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
2169 [ val=`echo $withval`
2170 if echo "$val" | grep "\/" >/dev/null; then
2171 AC_MSG_ERROR("Homedir must be single relative path.")
2176 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
2178 if test -z "$SKIP_COMPILER_CHECKS"; then
2179 dnl ========================================================
2181 dnl = Compiler Options
2183 dnl ========================================================
2184 MOZ_ARG_HEADER(Compiler Options)
2186 dnl ========================================================
2187 dnl Check for gcc -pipe support
2188 dnl ========================================================
2189 AC_MSG_CHECKING([for -pipe support])
2190 if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
2191 dnl Any gcc that supports firefox supports -pipe.
2192 CFLAGS="$CFLAGS -pipe"
2193 CXXFLAGS="$CXXFLAGS -pipe"
2194 AC_MSG_RESULT([yes])
2199 fi # ! SKIP_COMPILER_CHECKS
2203 if test "$COMPILE_ENVIRONMENT"; then
2205 fi # COMPILE_ENVIRONMENT
2207 dnl ========================================================
2209 dnl = Static Build Options
2211 dnl ========================================================
2212 MOZ_ARG_HEADER(Static build options)
2214 if test -z "$MOZ_SYSTEM_ZLIB"; then
2215 if test -n "$JS_SHARED_LIBRARY" -o -n "$MOZ_LINKER" -o "$MOZ_WIDGET_TOOLKIT" = android; then
2217 AC_DEFINE(ZLIB_IN_MOZGLUE)
2221 AC_SUBST(ZLIB_IN_MOZGLUE)
2223 dnl ========================================================
2225 dnl = Standalone module options
2227 dnl ========================================================
2228 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
2231 dnl ========================================================
2233 if test -z "$SKIP_PATH_CHECKS"; then
2234 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
2235 if test "$MOZ_ENABLE_GTK" ; then
2236 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
2241 if test -z "${GLIB_GMODULE_LIBS}" \
2242 -a -n "${GLIB_CONFIG}"\
2243 -a "${GLIB_CONFIG}" != no\
2245 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
2248 AC_SUBST_LIST(GLIB_GMODULE_LIBS)
2250 if test "$USE_FC_FREETYPE"; then
2251 if test "$COMPILE_ENVIRONMENT"; then
2252 dnl ========================================================
2253 dnl = Check for freetype2 functionality
2254 dnl ========================================================
2255 if test "$_HAVE_FREETYPE2" -a -z "$MOZ_TREE_FREETYPE"; then
2257 _SAVE_CFLAGS="$CFLAGS"
2258 LIBS="$LIBS $FT2_LIBS"
2259 CFLAGS="$CFLAGS $FT2_CFLAGS"
2261 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
2262 ac_cv_member_FT_Bitmap_Size_y_ppem,
2263 [AC_TRY_COMPILE([#include <ft2build.h>
2264 #include FT_FREETYPE_H],
2266 if (sizeof s.y_ppem) return 0;
2268 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
2269 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
2270 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
2271 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
2273 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
2275 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
2276 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
2277 [FT_Bitmap_Size structure includes y_ppem field])
2279 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table)
2282 CFLAGS="$_SAVE_CFLAGS"
2285 _SAVE_CPPFLAGS="$CPPFLAGS"
2286 CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
2287 MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
2288 [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
2289 CPPFLAGS="$_SAVE_CPPFLAGS"
2293 dnl ========================================================
2294 dnl Check if we need the 32-bit Linux SSE2 error dialog
2295 dnl ========================================================
2297 AC_SUBST(MOZ_LINUX_32_SSE2_STARTUP_ERROR)
2299 dnl ========================================================
2300 dnl Check for pixman and cairo
2301 dnl ========================================================
2304 MOZ_ARG_ENABLE_BOOL(system-cairo,
2305 [ --enable-system-cairo Obsolete: do not use this option],
2306 AC_MSG_ERROR(--enable-system-cairo is not supported),
2310 MOZ_ARG_ENABLE_BOOL(system-pixman,
2311 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
2313 MOZ_TREE_PIXMAN=force,
2316 if test "$MOZ_TREE_PIXMAN"; then
2317 AC_DEFINE(MOZ_TREE_PIXMAN)
2319 PKG_CHECK_MODULES(MOZ_PIXMAN, pixman-1 >= 0.19.2)
2322 MOZ_CAIRO_CFLAGS="-I${DIST}/include/cairo"
2323 AC_DEFINE(MOZ_TREE_CAIRO)
2325 if test "$OS_ARCH" = "WINNT"; then
2326 # For now we assume that we will have a uint64_t available through
2327 # one of the above headers or mozstdint.h.
2328 AC_DEFINE(HAVE_UINT64_T)
2331 # Define macros for cairo-features.h
2332 TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
2333 if test "$MOZ_X11"; then
2334 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
2335 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
2336 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
2338 if test "$_HAVE_FREETYPE2"; then
2339 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
2340 MOZ_ENABLE_CAIRO_FT=1
2341 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
2344 case "$MOZ_WIDGET_TOOLKIT" in
2346 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
2347 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
2348 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
2351 WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
2352 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
2353 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
2355 if test "$COMPILE_ENVIRONMENT"; then
2356 MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
2360 if test "$USE_FC_FREETYPE"; then
2361 FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
2363 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
2364 AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
2366 AC_SUBST(PS_SURFACE_FEATURE)
2367 AC_SUBST(SVG_SURFACE_FEATURE)
2368 AC_SUBST(XLIB_SURFACE_FEATURE)
2369 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
2370 AC_SUBST(QUARTZ_SURFACE_FEATURE)
2371 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
2372 AC_SUBST(WIN32_SURFACE_FEATURE)
2373 AC_SUBST(OS2_SURFACE_FEATURE)
2374 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
2375 AC_SUBST(FT_FONT_FEATURE)
2376 AC_SUBST(FC_FONT_FEATURE)
2377 AC_SUBST(WIN32_FONT_FEATURE)
2378 AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
2379 AC_SUBST(QUARTZ_FONT_FEATURE)
2380 AC_SUBST(PNG_FUNCTIONS_FEATURE)
2381 AC_SUBST(QT_SURFACE_FEATURE)
2382 AC_SUBST(TEE_SURFACE_FEATURE)
2384 if test "$MOZ_X11"; then
2385 MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
2388 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
2390 case "$MOZ_WIDGET_TOOLKIT" in
2392 TK_CFLAGS="$MOZ_CAIRO_CFLAGS $MOZ_PIXMAN_CFLAGS"
2393 TK_LIBS="$MOZ_CAIRO_LIBS $MOZ_PIXMAN_LIBS"
2397 AC_SUBST(MOZ_TREE_CAIRO)
2398 AC_SUBST_LIST(MOZ_CAIRO_CFLAGS)
2399 AC_SUBST_LIST(MOZ_CAIRO_LIBS)
2400 AC_SUBST_LIST(MOZ_CAIRO_OSLIBS)
2401 AC_SUBST(MOZ_TREE_PIXMAN)
2403 BINDGEN_SYSTEM_FLAGS="$_BINDGEN_CFLAGS $NSPR_CFLAGS $NSS_CFLAGS $MOZ_PIXMAN_CFLAGS $MOZ_CAIRO_CFLAGS"
2404 AC_SUBST(BINDGEN_SYSTEM_FLAGS)
2405 BINDGEN_SYSTEM_TOML_FLAGS="$BINDGEN_SYSTEM_FLAGS"
2406 AC_SUBST_TOML_LIST(BINDGEN_SYSTEM_TOML_FLAGS)
2408 dnl ========================================================
2410 dnl ========================================================
2411 MOZ_ARG_DISABLE_BOOL(xul,
2412 [ --disable-xul Disable XUL],
2414 if test "$MOZ_XUL"; then
2417 dnl remove extensions that require XUL
2418 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/irc//' -e 's/tasks//'`
2423 dnl ========================================================
2424 dnl necko configuration options
2425 dnl ========================================================
2428 dnl option to disable necko's wifi scanner
2431 if test "$MOZ_WIDGET_TOOLKIT"; then
2433 case "$OS_TARGET" in
2437 DragonFly|FreeBSD|WINNT)
2448 MOZ_ARG_DISABLE_BOOL(necko-wifi,
2449 [ --disable-necko-wifi Disable necko wifi scanner],
2453 if test "$NECKO_WIFI"; then
2454 if test -z "$MOZ_ENABLE_DBUS" -a -n "$NECKO_WIFI_DBUS"; then
2455 AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi])
2457 AC_DEFINE(NECKO_WIFI)
2459 AC_SUBST(NECKO_WIFI)
2460 AC_SUBST(NECKO_WIFI_DBUS)
2462 dnl ========================================================
2464 dnl = Maintainer debug option (no --enable equivalent)
2466 dnl ========================================================
2468 AC_SUBST_LIST(ASFLAGS)
2471 AC_SUBST(MOZ_AUTH_EXTENSION)
2472 AC_SUBST_LIST(MOZ_DEBUG_LDFLAGS)
2473 AC_SUBST_LIST(WARNINGS_CFLAGS)
2474 AC_SUBST_SET(MOZ_EXTENSIONS)
2476 AC_SUBST(MOZ_UNIVERSALCHARDET)
2477 AC_SUBST(MOZ_SPELLCHECK)
2478 AC_SUBST(MOZ_ANDROID_ANR_REPORTER)
2479 AC_SUBST(MOZ_CRASHREPORTER)
2480 AC_SUBST(MOZ_CRASHREPORTER_INJECTOR)
2481 AC_SUBST(MOZ_STUB_INSTALLER)
2482 AC_SUBST(MOZ_UPDATER)
2484 AC_SUBST(MOZ_ANDROID_APPLICATION_CLASS)
2485 AC_SUBST(MOZ_ANDROID_BROWSER_INTENT_CLASS)
2486 AC_SUBST(INCREMENTAL_LINKER)
2488 AC_SUBST_LIST(MOZ_FIX_LINK_PATHS)
2490 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
2491 AC_SUBST(MOZ_LINKER_EXTRACT)
2493 if test -n "$MOZ_BINARY_EXTENSIONS"; then
2494 AC_DEFINE(MOZ_BINARY_EXTENSIONS)
2497 AC_SUBST(MOZ_REQUIRE_SIGNING)
2498 if test "$MOZ_REQUIRE_SIGNING" = 1; then
2499 AC_DEFINE(MOZ_REQUIRE_SIGNING)
2502 dnl ========================================================
2503 dnl = Mac bundle name prefix
2504 dnl ========================================================
2505 MOZ_ARG_WITH_STRING(macbundlename-prefix,
2506 [ --with-macbundlename-prefix=prefix
2507 Prefix for MOZ_MACBUNDLE_NAME],
2508 [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
2510 MOZ_MACBUNDLE_NAME=$MOZ_APP_DISPLAYNAME
2511 if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
2512 MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
2515 if test "$MOZ_DEBUG"; then
2516 MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME}Debug.app"
2518 MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
2520 AC_SUBST(MOZ_MACBUNDLE_NAME)
2522 dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
2523 # If the MOZ_MACBUNDLE_ID is defined in the configure.sh, use it
2524 # Otherwise, use MOZ_APP_DISPLAYNAME
2525 if test -z "$MOZ_MACBUNDLE_ID"; then
2526 MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr 'A-Z' 'a-z' | tr -dc 'a-z-'`
2528 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
2529 if test "$MOZ_DEBUG"; then
2530 MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
2533 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
2534 AC_SUBST(MOZ_MACBUNDLE_ID)
2536 dnl ========================================================
2537 dnl = Child Process Name for IPC
2538 dnl ========================================================
2539 if test "$MOZ_WIDGET_TOOLKIT" != "android"; then
2540 MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}"
2542 # We want to let Android unpack the file at install time, but it only does
2543 # so if the file is named libsomething.so. The lib/ path is also required
2544 # because the unpacked file will be under the lib/ subdirectory and will
2545 # need to be executed from that path.
2546 MOZ_CHILD_PROCESS_NAME="libplugin-container.so"
2548 MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/"
2549 MOZ_CHILD_PROCESS_BUNDLENAME="${MOZ_APP_DISPLAYNAME}CP"
2551 AC_SUBST(MOZ_CHILD_PROCESS_NAME)
2552 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE)
2553 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLENAME)
2555 # The following variables are available to branding and application
2556 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
2557 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
2558 # impacts profile location and user-visible fields.
2559 # - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
2560 # Mac Bundle name, Updater, Installer), it is typically used for nightly
2561 # builds (e.g. Aurora for Firefox).
2562 # - MOZ_APP_PROFILE: When set, used for application.ini's
2563 # "Profile" field, which controls profile location.
2564 # - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
2565 # crash reporter server url.
2566 # - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
2568 # The following environment variables used to have an effect, but don't anymore:
2569 # - MOZ_APP_VERSION: Defines the application version number. This was replaced with
2570 # the contents from the version.txt file in the application directory, or
2571 # browser/config/version.txt if there isn't one.
2572 # - MOZ_APP_VERSION_DISPLAY: Defines the application version number. Used
2573 # in the "About" window. This was replaced with the contents from the
2574 # version_display.txt or version.txt in the application directory, or
2575 # browser/config/version_display.txt.
2577 # For extensions and langpacks, we require a max version that is compatible
2578 # across security releases. MOZ_APP_MAXVERSION is our method for doing that.
2579 # 24.0a1 and 24.0a2 aren't affected
2581 # 24.1.1 becomes 24.*
2582 IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
2583 if test -z "$IS_ALPHA"; then
2585 if test "$(basename $MOZ_BUILD_APP)" = "suite"; then
2586 MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\.[0-9]*\).*|\1|"`.*
2588 MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\).*|\1|"`.*
2592 MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
2595 AC_SUBST(MOZ_APP_DISPLAYNAME)
2596 AC_SUBST(MOZ_APP_VENDOR)
2597 AC_SUBST(MOZ_APP_PROFILE)
2598 AC_SUBST(MOZ_APP_ID)
2599 AC_SUBST(MAR_CHANNEL_ID)
2600 AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
2601 AC_SUBST(MOZ_PROFILE_MIGRATOR)
2602 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
2603 AC_SUBST(MOZ_APP_UA_NAME)
2604 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
2605 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL, $BROWSER_CHROME_URL)
2606 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL_QUOTED, "$BROWSER_CHROME_URL")
2608 AC_SUBST(MOZ_APP_MAXVERSION)
2609 AC_SUBST(MOZ_UA_OS_AGNOSTIC)
2610 if test -n "$MOZ_UA_OS_AGNOSTIC"; then
2611 AC_DEFINE(MOZ_UA_OS_AGNOSTIC)
2614 AC_SUBST(MOZ_PKG_SPECIAL)
2615 AC_SUBST(MOZ_SIMPLE_PACKAGE_NAME)
2617 if test "$MOZILLA_OFFICIAL"; then
2618 # Build revisions should always be present in official builds
2619 MOZ_INCLUDE_SOURCE_INFO=1
2622 # External builds (specifically Ubuntu) may drop the hg repo information, so we allow to
2623 # explicitly set the repository and changeset information in.
2624 AC_SUBST(MOZ_SOURCE_REPO)
2625 AC_SUBST(MOZ_SOURCE_CHANGESET)
2626 AC_SUBST(MOZ_INCLUDE_SOURCE_INFO)
2628 dnl If we have any service that uploads data (and requires data submission
2629 dnl policy alert), set MOZ_DATA_REPORTING.
2630 dnl We need SUBST for build system and DEFINE for xul preprocessor.
2631 if test -n "$MOZ_TELEMETRY_REPORTING" || test -n "$MOZ_SERVICES_HEALTHREPORT" || test -n "$MOZ_CRASHREPORTER" || test -n "$MOZ_NORMANDY"; then
2632 MOZ_DATA_REPORTING=1
2633 AC_DEFINE(MOZ_DATA_REPORTING)
2634 AC_SUBST(MOZ_DATA_REPORTING)
2638 AC_SUBST(WIN32_REDIST_DIR)
2639 AC_SUBST(WIN_UCRT_REDIST_DIR)
2641 dnl Echo the CFLAGS to remove extra whitespace.
2643 $_COMPILATION_CFLAGS \
2647 $_WARNINGS_CXXFLAGS \
2648 $_COMPILATION_CXXFLAGS \
2651 COMPILE_CFLAGS=`echo \
2655 COMPILE_CXXFLAGS=`echo \
2656 $_DEFINES_CXXFLAGS \
2660 $_WARNINGS_HOST_CFLAGS \
2661 $_COMPILATION_HOST_CFLAGS \
2664 HOST_CXXFLAGS=`echo \
2665 $_WARNINGS_HOST_CXXFLAGS \
2666 $_COMPILATION_HOST_CXXFLAGS \
2669 AC_SUBST(MOZ_SYSTEM_PNG)
2671 AC_SUBST_LIST(MOZ_PNG_CFLAGS)
2672 AC_SUBST_LIST(MOZ_PNG_LIBS)
2674 HOST_CMFLAGS="-x objective-c -fobjc-exceptions"
2675 HOST_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
2676 OS_COMPILE_CMFLAGS="-x objective-c -fobjc-exceptions"
2677 OS_COMPILE_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
2678 if test "$MOZ_WIDGET_TOOLKIT" = uikit; then
2679 OS_COMPILE_CMFLAGS="$OS_COMPILE_CMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
2680 OS_COMPILE_CMMFLAGS="$OS_COMPILE_CMMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
2682 AC_SUBST(HOST_CMFLAGS)
2683 AC_SUBST(HOST_CMMFLAGS)
2684 AC_SUBST(OS_COMPILE_CMFLAGS)
2685 AC_SUBST(OS_COMPILE_CMMFLAGS)
2688 OS_CXXFLAGS="$CXXFLAGS"
2689 OS_CPPFLAGS="$CPPFLAGS"
2690 OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
2691 OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
2692 OS_LDFLAGS="$LDFLAGS"
2694 AC_SUBST_LIST(OS_CFLAGS)
2695 AC_SUBST_LIST(OS_CXXFLAGS)
2696 AC_SUBST_LIST(OS_CPPFLAGS)
2697 AC_SUBST_LIST(OS_COMPILE_CFLAGS)
2698 AC_SUBST_LIST(OS_COMPILE_CXXFLAGS)
2699 AC_SUBST_LIST(OS_LDFLAGS)
2704 AC_SUBST_LIST(HOST_CFLAGS)
2705 AC_SUBST_LIST(HOST_CPPFLAGS)
2706 AC_SUBST_LIST(HOST_CXXFLAGS)
2707 AC_SUBST(HOST_LDFLAGS)
2708 AC_SUBST_LIST(HOST_OPTIMIZE_FLAGS)
2709 AC_SUBST(HOST_BIN_SUFFIX)
2711 AC_SUBST(TARGET_XPCOM_ABI)
2712 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
2713 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1)
2714 AC_SUBST(HAVE_X86_AVX2)
2715 AC_SUBST(HAVE_ALTIVEC)
2717 AC_SUBST(DSO_LDOPTS)
2718 AC_SUBST(BIN_SUFFIX)
2720 AC_SUBST(WIN32_CONSOLE_EXE_LDFLAGS)
2721 AC_SUBST(WIN32_GUI_EXE_LDFLAGS)
2723 AC_SUBST(MOZ_DEVTOOLS)
2725 AC_SUBST(MOZ_PACKAGE_JSSHELL)
2729 dnl Host JavaScript runtime, if any, to use during cross compiles.
2732 AC_SUBST(NSS_EXTRA_SYMBOLS_FILE)
2734 if test -n "$COMPILE_ENVIRONMENT"; then
2735 AC_CHECK_FUNCS(posix_fadvise posix_fallocate)
2737 dnl Check for missing components
2738 if test "$MOZ_X11"; then
2739 dnl ====================================================
2740 dnl = Check if X headers exist
2741 dnl ====================================================
2742 _SAVE_CFLAGS=$CFLAGS
2743 CFLAGS="$CFLAGS $XCFLAGS"
2747 #include <X11/Xlib.h>
2748 #include <X11/Intrinsic.h>
2749 #include <X11/extensions/XShm.h>
2753 if ((dpy = XOpenDisplay(NULL)) == NULL) {
2754 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
2758 [ AC_MSG_ERROR([Can't find X headers (install libxt-dev (Debian/Ubuntu), libXt-devel (Fedora), or xorg-x11-libXt-devel (SuSE)).]) ])
2759 CFLAGS="$_SAVE_CFLAGS"
2761 if test -n "$MISSING_X"; then
2762 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
2767 fi # COMPILE_ENVIRONMENT
2769 dnl Set various defines and substitutions
2770 dnl ========================================================
2772 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK" ; then
2773 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
2774 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
2775 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
2776 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
2777 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
2778 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
2779 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
2780 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
2783 AC_SUBST(MOZ_DEV_EDITION)
2784 if test -n "$MOZ_DEV_EDITION"; then
2785 AC_DEFINE(MOZ_DEV_EDITION)
2788 if test "$MOZ_DEBUG" -o "$DEVELOPER_OPTIONS"; then
2792 if test -n "$A11Y_LOG"; then
2796 dnl Spit out some output
2797 dnl ========================================================
2799 # Avoid using obsolete NSPR features
2800 AC_DEFINE(NO_NSPR_10_SUPPORT)
2802 MOZ_CREATE_CONFIG_STATUS()
2804 rm -fr confdefs* $ac_clean_files