1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*-
2 dnl vi: set tabstop=4 shiftwidth=4 expandtab syntax=m4:
3 dnl This Source Code Form is subject to the terms of the Mozilla Public
4 dnl License, v. 2.0. If a copy of the MPL was not distributed with this
5 dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 dnl Process this file with autoconf to produce a configure script.
8 dnl ========================================================
10 AC_INIT(config/config.mk)
11 AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
14 dnl ========================================================
16 dnl = Don't change the following lines. Doing so breaks:
18 dnl = CFLAGS="-foo" ./configure
20 dnl ========================================================
22 CPPFLAGS="${CPPFLAGS=}"
23 CXXFLAGS="${CXXFLAGS=}"
25 HOST_CFLAGS="${HOST_CFLAGS=}"
26 HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
27 HOST_LDFLAGS="${HOST_LDFLAGS=}"
29 dnl ========================================================
30 dnl = Preserve certain environment flags passed to configure
31 dnl = We want sub projects to receive the same flags
32 dnl = untainted by this configure script
33 dnl ========================================================
36 _SUBDIR_CFLAGS="$CFLAGS"
37 _SUBDIR_CPPFLAGS="$CPPFLAGS"
38 _SUBDIR_CXXFLAGS="$CXXFLAGS"
39 _SUBDIR_LDFLAGS="$LDFLAGS"
40 _SUBDIR_HOST_CC="$HOST_CC"
41 _SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
42 _SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
43 _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
44 _SUBDIR_CONFIG_ARGS="$ac_configure_args"
46 dnl Set the version number of the libs included with mozilla
47 dnl ========================================================
50 dnl Set the minimum version of toolkit libs used by mozilla
51 dnl ========================================================
53 GLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_42
54 GLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_42
57 GDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_14
61 dnl Set various checks
62 dnl ========================================================
65 dnl Initialize the Pthread test variables early so they can be
66 dnl overridden by each platform.
67 dnl ========================================================
71 LDFLAGS="$LDFLAGS $LINKER_LDFLAGS"
73 if test "$COMPILE_ENVIRONMENT"; then
75 fi # COMPILE_ENVIRONMENT
78 *-android*|*-linuxandroid*)
81 AC_PATH_PROG(OBJCOPY,objcopy)
87 dnl ========================================================
88 dnl Checks for compilers.
89 dnl ========================================================
91 if test "$COMPILE_ENVIRONMENT"; then
93 # Run some logic to figure out exe extensions (mostly for mingw's sake)
96 if test "$target" != "$host"; then
102 # Work around the conftest.exe access problem on Windows
106 MOZ_PATH_PROGS(AS, $AS as, $CC)
107 AC_CHECK_PROGS(STRIP, strip, :)
108 AC_CHECK_PROGS(OTOOL, otool, :)
113 dnl ========================================================
114 dnl Special win32 checks
115 dnl ========================================================
121 if test "$GCC" != "yes"; then
122 # Check to see if we are really running in a msvc environemnt
125 # Make sure compilers are valid
126 CXXFLAGS="$CXXFLAGS -TP"
129 AC_TRY_COMPILE([#include <stdio.h>],
130 [ printf("Hello World\n"); ],,
131 AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
134 AC_TRY_COMPILE([#include <new.h>],
135 [ unsigned *test = new unsigned(42); ],,
136 AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
140 _MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
143 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
144 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
145 AC_DEFINE(_USE_MATH_DEFINES) # Otherwise MSVC's math.h doesn't #define M_PI.
148 MSVC_C_RUNTIME_DLL=vcruntime140.dll
149 MSVC_CXX_RUNTIME_DLL=msvcp140.dll
151 # -Zc:sizedDealloc- disables C++14 global sized deallocation (see bug 1160146)
152 CXXFLAGS="$CXXFLAGS -Zc:sizedDealloc-"
154 if test -n "$WIN_UCRT_REDIST_DIR"; then
155 if test ! -d "$WIN_UCRT_REDIST_DIR"; then
156 AC_MSG_ERROR([Invalid Windows UCRT Redist directory: ${WIN_UCRT_REDIST_DIR}])
158 WIN_UCRT_REDIST_DIR=`cd "$WIN_UCRT_REDIST_DIR" && (pwd -W 2>/dev/null || pwd)`
161 AC_SUBST(MSVC_C_RUNTIME_DLL)
162 AC_SUBST(MSVC_CXX_RUNTIME_DLL)
164 AC_DEFINE(HAVE_SEH_EXCEPTIONS)
166 if test -n "$WIN32_REDIST_DIR"; then
167 if test ! -d "$WIN32_REDIST_DIR"; then
168 AC_MSG_ERROR([Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}])
170 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && (pwd -W 2>/dev/null || pwd)`
173 # Check linker version, except in lld builds
178 _LD_FULL_VERSION=`"${LINKER}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
179 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
180 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
181 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
188 unset _MSVC_VER_FILTER
191 STL_FLAGS="-I${DIST}/stl_wrappers"
193 # Check w32api version
194 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
195 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
196 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
197 AC_TRY_COMPILE([#include <w32api.h>],
198 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
199 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
200 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
201 #error "test failed."
203 , [ res=yes ], [ res=no ])
204 AC_MSG_RESULT([$res])
205 if test "$res" != "yes"; then
206 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
208 # strsafe.h on mingw uses macros for function deprecation that pollutes namespace
209 # causing problems with local implementations with the same name.
210 AC_DEFINE(STRSAFE_NO_DEPRECATE)
213 CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0"
214 CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0"
216 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
217 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
218 # Require OS features provided by IE 8.0 (Win7)
219 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0800)
224 if test -n "$_WIN32_MSVC"; then
226 SKIP_COMPILER_CHECKS=1
227 SKIP_LIBRARY_CHECKS=1
229 # Since we're skipping compiler and library checks, hard-code
232 AC_DEFINE(HAVE_ISATTY)
235 fi # COMPILE_ENVIRONMENT
240 AC_SUBST_LIST(STL_FLAGS)
241 AC_SUBST(WRAP_STL_INCLUDES)
243 dnl ========================================================
244 dnl Checks for programs.
245 dnl ========================================================
246 if test "$COMPILE_ENVIRONMENT"; then
252 fi # COMPILE_ENVIRONMENT
254 dnl ========================================================
255 dnl set the defaults first
256 dnl ========================================================
257 MOZ_USER_DIR=".mozilla"
259 MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib"
263 dnl Configure platform-specific CPU architecture compiler options.
264 dnl ==============================================================
265 if test "$COMPILE_ENVIRONMENT"; then
267 fi # COMPILE_ENVIRONMENT
269 dnl ========================================================
270 dnl Android libstdc++
271 dnl ========================================================
274 if test "$COMPILE_ENVIRONMENT"; then
276 fi # COMPILE_ENVIRONMENT
278 dnl ========================================================
279 dnl Suppress Clang Argument Warnings
280 dnl ========================================================
281 WARNINGS_CFLAGS="$_WARNINGS_CFLAGS"
282 if test -n "${CLANG_CC}${CLANG_CL}"; then
283 WARNINGS_CFLAGS="-Qunused-arguments $WARNINGS_CFLAGS"
284 CPPFLAGS="-Qunused-arguments ${CPPFLAGS}"
286 if test -n "${CLANG_CXX}${CLANG_CL}"; then
287 _WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}"
290 if test -n "$COMPILE_ENVIRONMENT"; then
294 dnl ========================================================
295 dnl GNU specific defaults
296 dnl ========================================================
297 if test "$GNU_CC"; then
301 SSSE3_FLAGS="-mssse3"
302 CFLAGS="$CFLAGS -fno-strict-aliasing"
304 if test "$OS_ARCH" != "WINNT" -o -z "$CLANG_CC"; then
305 DSO_PIC_CFLAGS='-fPIC'
306 ASFLAGS="$ASFLAGS -fPIC"
309 AC_MSG_CHECKING([for --noexecstack option to as])
311 CFLAGS="$CFLAGS -Wa,--noexecstack"
312 AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
313 [ASFLAGS="$ASFLAGS -Wa,--noexecstack"],
316 AC_MSG_CHECKING([for -z noexecstack option to ld])
317 _SAVE_LDFLAGS=$LDFLAGS
318 LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
319 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
321 LDFLAGS=$_SAVE_LDFLAGS)
323 AC_MSG_CHECKING([for -z text option to ld])
324 _SAVE_LDFLAGS=$LDFLAGS
325 LDFLAGS="$LDFLAGS -Wl,-z,text"
326 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
328 LDFLAGS=$_SAVE_LDFLAGS)
330 AC_MSG_CHECKING([for -z relro option to ld])
331 _SAVE_LDFLAGS=$LDFLAGS
332 LDFLAGS="$LDFLAGS -Wl,-z,relro"
333 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
335 LDFLAGS=$_SAVE_LDFLAGS)
337 AC_MSG_CHECKING([for -z nocopyreloc option to ld])
338 _SAVE_LDFLAGS=$LDFLAGS
339 LDFLAGS="$LDFLAGS -Wl,-z,nocopyreloc"
340 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
342 LDFLAGS=$_SAVE_LDFLAGS)
344 AC_MSG_CHECKING([for -Bsymbolic-functions option to ld])
345 _SAVE_LDFLAGS=$LDFLAGS
346 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
347 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
349 LDFLAGS=$_SAVE_LDFLAGS)
351 AC_MSG_CHECKING([for --build-id=sha1 option to ld])
352 _SAVE_LDFLAGS=$LDFLAGS
353 LDFLAGS="$LDFLAGS -Wl,--build-id=sha1"
354 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
356 LDFLAGS=$_SAVE_LDFLAGS)
358 AC_MSG_CHECKING([for --ignore-unresolved-symbol option to ld])
359 HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=
360 _SAVE_LDFLAGS=$LDFLAGS
361 LDFLAGS="$LDFLAGS -Wl,--ignore-unresolved-symbol,environ"
362 AC_TRY_LINK(,,AC_MSG_RESULT([yes])
363 [HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=1],
365 LDFLAGS=$_SAVE_LDFLAGS
367 # Check for -mssse3 on $CC
368 AC_MSG_CHECKING([if toolchain supports -mssse3 option])
369 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=
371 CFLAGS="$CFLAGS -mssse3"
372 AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes])
373 [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1],
377 # Check for -msse4.1 on $CC
378 AC_MSG_CHECKING([if toolchain supports -msse4.1 option])
379 HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=
381 CFLAGS="$CFLAGS -msse4.1"
382 AC_TRY_COMPILE([asm ("pmulld %xmm6,%xmm0");],,AC_MSG_RESULT([yes])
383 [HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1],
387 case "${CPU_ARCH}" in
389 AC_MSG_CHECKING(for x86 AVX2 asm support in compiler)
391 [asm volatile ("vpermq \$0xd8,%ymm0,%ymm0 \n");],
392 result="yes", result="no")
393 AC_MSG_RESULT("$result")
394 if test "$result" = "yes"; then
400 AC_MSG_CHECKING([whether we can enable AltiVec support])
403 CFLAGS="$CFLAGS -maltivec"
404 AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
412 if test "$GCC_USE_GNU_LD"; then
413 # Some tools like ASan use a runtime library that is only
414 # linked against executables, so we must allow undefined
415 # symbols for shared objects in some cases.
416 if test -z "$MOZ_ASAN$MOZ_MSAN$MOZ_UBSAN$MOZ_TSAN$FUZZING_INTERFACES"; then
417 # Don't allow undefined symbols in libraries
418 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
420 # BSDs need `environ' exposed for posix_spawn (bug 753046)
422 DragonFly|FreeBSD|NetBSD|OpenBSD)
423 if test -n "$HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED"; then
424 DSO_LDOPTS="$DSO_LDOPTS -Wl,--ignore-unresolved-symbol,environ"
426 DSO_LDOPTS="$DSO_LDOPTS -Wl,--warn-unresolved-symbols"
433 _DEFINES_CFLAGS="-include $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
435 ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS"
438 if test "$GNU_CXX"; then
439 CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing"
441 _DEFINES_CXXFLAGS="-DMOZILLA_CLIENT -include $_objdir/mozilla-config.h"
444 dnl ========================================================
446 dnl ========================================================
448 if test "$MOZ_DMD"; then
449 if test "${CPU_ARCH}" = "arm"; then
450 CFLAGS="$CFLAGS -funwind-tables"
451 CXXFLAGS="$CXXFLAGS -funwind-tables"
455 dnl ========================================================
456 dnl System overrides of the defaults for host
457 dnl ========================================================
460 if test -n "$_WIN32_MSVC"; then
461 HOST_CFLAGS="$HOST_CFLAGS"
463 HOST_CFLAGS="$HOST_CFLAGS -mwindows"
465 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN -DWIN32 -D_WIN32 -D_CRT_SECURE_NO_WARNINGS"
466 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
469 case "${host_cpu}" in
471 if test -n "$_WIN32_MSVC"; then
472 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
476 if test -n "$_WIN32_MSVC"; then
477 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
479 HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
485 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX"
486 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
489 *-linux*|*-kfreebsd*-gnu|*-gnu*)
490 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
491 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
495 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
496 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
500 dnl ========================================================
501 dnl System overrides of the defaults for target
502 dnl ========================================================
506 MOZ_OPTIMIZE_FLAGS="-O3"
507 CXXFLAGS="$CXXFLAGS -stdlib=libc++"
509 # The ExceptionHandling framework is needed for Objective-C exception
510 # logging code in nsObjCExceptions.h. Currently we only use that in debug
512 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling";
514 dnl DTrace and -dead_strip don't interact well. See bug 403132.
515 dnl ===================================================================
516 if test "x$enable_dtrace" = "xyes"; then
517 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
519 dnl check for the presence of the -dead_strip linker flag
520 AC_MSG_CHECKING([for -dead_strip option to ld])
521 _SAVE_LDFLAGS=$LDFLAGS
522 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
523 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
524 if test -n "$_HAVE_DEAD_STRIP" ; then
526 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
531 LDFLAGS=$_SAVE_LDFLAGS
534 MOZ_FIX_LINK_PATHS="-Wl,-executable_path,${DIST}/bin"
537 *-android*|*-linuxandroid*)
538 if test "$COMPILE_ENVIRONMENT" -a -n "$MOZ_MEMORY"; then
542 if test -z "$CLANG_CC"; then
543 MOZ_OPTIMIZE_FLAGS="-freorder-blocks -fno-reorder-functions -Os"
545 # From https://github.com/android-ndk/ndk/issues/133#issuecomment-308549264
546 # -Oz is smaller than -Os on clang.
547 MOZ_OPTIMIZE_FLAGS="-Oz"
548 # Disable the outliner, which causes performance regressions, and is
549 # enabled on some platforms at -Oz.
550 if test -z "$MOZ_LTO"; then
551 DISABLE_OUTLINER="-mno-outline"
553 CFLAGS="$CFLAGS $DISABLE_OUTLINER"
554 AC_TRY_COMPILE(,,[MOZ_OPTIMIZE_FLAGS="$MOZ_OPTIMIZE_FLAGS $DISABLE_OUTLINER"])
555 CFLAGS="$_SAVE_CFLAGS"
557 DISABLE_OUTLINER="-Wl,-plugin-opt=-enable-machine-outliner=never"
558 _SAVE_LDFLAGS=$LDFLAGS
559 LDFLAGS="$LDFLAGS $MOZ_LTO_LDFLAGS $DISABLE_OUTLINER"
560 AC_TRY_LINK(,,[MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS $DISABLE_OUTLINER"])
561 LDFLAGS="$_SAVE_LDFLAGS"
567 if test "$GNU_CC" -o "$GNU_CXX"; then
568 MOZ_PGO_OPTIMIZE_FLAGS="-O3"
569 if test -n "$MOZ_DEBUG"; then
570 MOZ_OPTIMIZE_FLAGS="-Os"
572 MOZ_OPTIMIZE_FLAGS="-O2"
574 if test -z "$CLANG_CC"; then
575 MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS"
579 case "${target_cpu}" in
581 CFLAGS="$CFLAGS -mieee"
582 CXXFLAGS="$CXXFLAGS -mieee"
588 # certain versions of cygwin's makedepend barf on the
589 # #include <string> vs -I./dist/include/string issue so don't use it
590 if test -n "$GNU_CC" -o -n "$CLANG_CC"; then
591 # $GNU_CC will match gcc and clang; while $CLANG_CC will match only clang
592 if test -z "$CLANG_CC"; then
593 AC_MSG_ERROR(Firefox cannot be built with mingw-gcc and requires a mingw-clang toolchain to work)
597 # mingw doesn't require kernel32, user32, and advapi32 explicitly
598 LIBS="$LIBS -luuid -lusp10 -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32"
601 MOZ_OPTIMIZE_FLAGS="-O2"
603 WIN32_CONSOLE_EXE_LDFLAGS=-mconsole
604 WIN32_GUI_EXE_LDFLAGS=-mwindows
606 # Silence problematic clang warnings
607 CXXFLAGS="$CXXFLAGS -Wno-incompatible-ms-struct"
608 LDFLAGS="$LDFLAGS -Wl,--no-insert-timestamp"
610 TARGET_COMPILER_ABI=msvc
611 STRIP='echo not_strip'
612 # aarch64 doesn't support subsystems below 6.02
613 if test "$CPU_ARCH" = "aarch64"; then
614 WIN32_SUBSYSTEM_VERSION=6.02
616 WIN32_SUBSYSTEM_VERSION=6.01
618 WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION
619 WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
620 DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
621 _DEFINES_CFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
622 _DEFINES_CXXFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
623 CFLAGS="$CFLAGS -W3 -Gy -Zc:inline"
624 CXXFLAGS="$CXXFLAGS -W3 -Gy -Zc:inline"
625 if test -z "$CLANG_CL"; then
626 CPPFLAGS="$CPPFLAGS -utf-8"
628 if test "$CPU_ARCH" = "x86"; then
629 dnl VS2012+ defaults to -arch:SSE2. We want to target nothing
630 dnl more recent, so set that explicitly here unless another
631 dnl target arch has already been set.
633 if test -z `echo $CFLAGS | grep -i [-/]arch:`; then
634 CFLAGS="$CFLAGS -arch:SSE2"
636 if test -z `echo $CXXFLAGS | grep -i [-/]arch:`; then
637 CXXFLAGS="$CXXFLAGS -arch:SSE2"
640 SSE_FLAGS="-arch:SSE"
641 SSE2_FLAGS="-arch:SSE2"
642 dnl MSVC allows the use of intrinsics without any flags
643 dnl and doesn't have a separate arch for SSSE3
644 SSSE3_FLAGS="-arch:SSE2"
646 dnl clang-cl requires appropriate flags to enable SSSE3 support
647 dnl on all architectures.
648 if test -n "$CLANG_CL"; then
649 SSSE3_FLAGS="-mssse3"
651 dnl VS2013+ supports -Gw for better linker optimizations.
652 dnl http://blogs.msdn.com/b/vcblog/archive/2013/09/11/introducing-gw-compiler-switch.aspx
653 dnl Disabled on ASan because it causes false-positive ODR violations.
654 if test -z "$MOZ_ASAN"; then
656 CXXFLAGS="$CXXFLAGS -Gw"
658 # String tail merging doesn't play nice with ASan's ODR checker.
659 LDFLAGS="$LDFLAGS -opt:nolldtailmerge"
661 if test -n "$CLANG_CL"; then
662 # XXX We should combine some of these with our generic GCC-style
665 # Suppress the clang-cl warning for the inline 'new' and 'delete' in mozalloc
666 CXXFLAGS="$CXXFLAGS -Wno-inline-new-delete"
667 # We use offsetof on non-POD objects all the time.
668 # We also suppress this warning on other platforms.
669 CXXFLAGS="$CXXFLAGS -Wno-invalid-offsetof"
670 # This warns for reasonable things like:
671 # enum { X = 0xffffffffU };
672 # which is annoying for IDL headers.
673 CXXFLAGS="$CXXFLAGS -Wno-microsoft-enum-value"
674 # This warns for cases that would be reached by the Microsoft
675 # #include rules, but also currently warns on cases that would
676 # *also* be reached by standard C++ include rules. That
677 # behavior doesn't seem useful, so we turn it off.
678 CXXFLAGS="$CXXFLAGS -Wno-microsoft-include"
679 # We normally error out on unknown pragmas, but since clang-cl
680 # claims to be MSVC, it would be difficult to add
681 # #if defined(_MSC_VER) && !defined(__clang__) everywhere we
682 # use such pragmas, so just ignore them.
683 CFLAGS="$CFLAGS -Wno-unknown-pragmas"
684 CXXFLAGS="$CXXFLAGS -Wno-unknown-pragmas"
685 # We get errors about various #pragma intrinsic directives from
686 # clang-cl, and we don't need to hear about those.
687 CFLAGS="$CFLAGS -Wno-ignored-pragmas"
688 CXXFLAGS="$CXXFLAGS -Wno-ignored-pragmas"
689 # clang-cl's Intrin.h marks things like _ReadWriteBarrier
690 # as __attribute((__deprecated__)). This is nice to know,
691 # but since we don't get the equivalent warning from MSVC,
692 # let's just ignore it.
693 CFLAGS="$CFLAGS -Wno-deprecated-declarations"
694 CXXFLAGS="$CXXFLAGS -Wno-deprecated-declarations"
695 # We use a function like:
696 # __declspec(noreturn) __inline void f() {}
697 # which -Winvalid-noreturn complains about. Again, MSVC seems
698 # OK with it, so let's silence the warning.
699 CFLAGS="$CFLAGS -Wno-invalid-noreturn"
700 CXXFLAGS="$CXXFLAGS -Wno-invalid-noreturn"
701 # Missing |override| on virtual function declarations isn't
702 # something that MSVC currently warns about.
703 CXXFLAGS="$CXXFLAGS -Wno-inconsistent-missing-override"
704 # We use -DHAS_EXCEPTIONS=0, which removes the |throw()|
705 # declaration on |operator delete(void*)|. However, clang-cl
706 # must internally declare |operator delete(void*)| differently,
707 # which causes this warning for virtually every file in the
708 # tree. clang-cl doesn't support -fno-exceptions or equivalent,
709 # so there doesn't seem to be any way to convince clang-cl to
710 # declare |delete| differently. Therefore, suppress this
712 CXXFLAGS="$CXXFLAGS -Wno-implicit-exception-spec-mismatch"
713 # Macros like STDMETHOD() and IFACEMETHOD() can declare
714 # __attribute__((nothrow)) on their respective method declarations,
715 # while the definitions are left without the matching attribute.
716 CXXFLAGS="$CXXFLAGS -Wno-microsoft-exception-spec"
717 # At least one MSVC header and several headers in-tree have
718 # unused typedefs, so turn this on.
719 CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"
720 # jemalloc uses __declspec(allocator) as a profiler hint,
721 # which clang-cl doesn't understand.
722 CXXFLAGS="$CXXFLAGS -Wno-ignored-attributes"
723 # __attribute__((unused)) really means "might be unused" and
724 # we use it to avoid warnings about things that are unused
725 # in some compilation units, but used in many others. This
726 # warning insists on complaining about the latter case, which
727 # is annoying, and rather noisy.
728 CXXFLAGS="$CXXFLAGS -Wno-used-but-marked-unused"
730 # Silence VS2017 15.5+ TR1 deprecation warnings hit by older gtest versions
731 CXXFLAGS="$CXXFLAGS -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING"
732 LIBS="$LIBS user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib"
733 MOZ_DEBUG_LDFLAGS='-DEBUG'
734 if test "$HOST_OS_ARCH" != "WINNT"; then
735 # %_PDB% is a special signal to emit only the PDB basename. This
736 # avoids problems in Windows tools that don't like forward-slashes.
737 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -PDBALTPATH:%_PDB%"
739 # Use a higher optimization level for clang-cl, so we can come closer
740 # to MSVC's performance numbers (see bug 1443590).
741 if test -n "$CLANG_CL"; then
742 MOZ_OPTIMIZE_FLAGS='-O2'
744 MOZ_OPTIMIZE_FLAGS='-O1 -Oi'
747 LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE"
748 if test -z "$DEVELOPER_OPTIONS"; then
749 LDFLAGS="$LDFLAGS -RELEASE"
751 dnl Minimum reqiurement of Gecko is VS2015 or later which supports
752 dnl both SSSE3 and SSE4.1.
753 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1
754 HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1
755 dnl allow AVX2 code from VS2015
758 AC_DEFINE(WIN32_LEAN_AND_MEAN)
759 dnl See http://support.microsoft.com/kb/143208 to use STL
762 MOZ_USER_DIR="Mozilla"
766 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.])
772 if test -n "$GNU_CC"; then
773 CFLAGS="$CFLAGS -mstackrealign"
774 CXXFLAGS="$CXXFLAGS -mstackrealign"
775 LDFLAGS="$LDFLAGS -Wl,--large-address-aware"
777 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
778 LDFLAGS="$LDFLAGS -SAFESEH"
784 if test -n "$_WIN32_MSVC"; then
785 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
790 if test -n "$_WIN32_MSVC"; then
791 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:ARM64"
796 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
802 CFLAGS="$CFLAGS -Dunix"
803 CXXFLAGS="$CXXFLAGS -Dunix"
804 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
805 DSO_PIC_CFLAGS='-fPIC -DPIC'
807 MOZ_PROGRAM_LDFLAGS="$MOZ_PROGRAM_LDFLAGS -Wl,--export-dynamic"
809 DSO_PIC_CFLAGS='-fPIC -DPIC'
812 # This will fail on a.out systems prior to 1.5.1_ALPHA.
813 if test "$LIBRUNPATH"; then
814 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
819 if test -z "$X11BASE"; then
822 MOZ_FIX_LINK_PATHS="$MOZ_FIX_LINK_PATHS -Wl,-rpath-link,${X11BASE}/lib"
823 DSO_PIC_CFLAGS='-fPIC'
824 DSO_LDOPTS='-shared -fPIC'
825 if test "$LIBRUNPATH"; then
826 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
831 MOZ_FIX_LINK_PATHS="-L${DIST}/bin"
836 CFLAGS="$CFLAGS $DSO_PIC_CFLAGS"
837 CXXFLAGS="$CXXFLAGS $DSO_PIC_CFLAGS"
839 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
840 MOZ_OPTIMIZE_FLAGS="-O"
843 AC_SUBST_LIST(MMX_FLAGS)
844 AC_SUBST_LIST(SSE_FLAGS)
845 AC_SUBST_LIST(SSE2_FLAGS)
846 AC_SUBST_LIST(SSSE3_FLAGS)
849 if test -n "$MOZ_LINKER"; then
850 AC_DEFINE(MOZ_LINKER)
852 AC_CHECK_PROGS(XZ, xz)
855 if test -z "$COMPILE_ENVIRONMENT"; then
856 SKIP_COMPILER_CHECKS=1
857 SKIP_LIBRARY_CHECKS=1
861 fi # COMPILE_ENVIRONMENT
863 if test -z "$SKIP_COMPILER_CHECKS"; then
864 dnl Checks for typedefs, structures, and compiler characteristics.
865 dnl ========================================================
880 case "${OS_TARGET}" in
884 STL_FLAGS="-I${DIST}/stl_wrappers"
889 if test "$MOZ_BUILD_APP" = "tools/crashreporter"; then
892 if test "$MOZ_BUILD_APP" = "tools/crashreporter/injector"; then
896 dnl Checks for header files.
897 dnl ========================================================
900 bitrig*|dragonfly*|freebsd*|openbsd*)
901 # for stuff like -lXshm
902 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
906 dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
907 AC_CACHE_CHECK(for sockaddr_in.sin_len,
908 ac_cv_sockaddr_in_sin_len,
909 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
910 #include <sys/types.h>
912 #include <netinet/in.h>
913 struct sockaddr_in x;
914 void *foo = (void*) &x.sin_len;],
916 [ac_cv_sockaddr_in_sin_len=true],
917 [ac_cv_sockaddr_in_sin_len=false])])
918 if test "$ac_cv_sockaddr_in_sin_len" = true ; then
919 AC_DEFINE(HAVE_SIN_LEN)
920 dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
921 AC_DEFINE(HAVE_SCONN_LEN)
924 AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
925 ac_cv_sockaddr_in6_sin6_len,
926 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
927 #include <sys/types.h>
929 #include <netinet/in.h>
930 struct sockaddr_in6 x;
931 void *foo = (void*) &x.sin6_len;],
933 [ac_cv_sockaddr_in6_sin6_len=true],
934 [ac_cv_sockaddr_in6_sin6_len=false])])
935 if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
936 AC_DEFINE(HAVE_SIN6_LEN)
939 AC_CACHE_CHECK(for sockaddr.sa_len,
940 ac_cv_sockaddr_sa_len,
941 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
942 #include <sys/types.h>
944 #include <sys/socket.h>
946 void *foo = (void*) &x.sa_len;],
948 [ac_cv_sockaddr_sa_len=true],
949 [ac_cv_sockaddr_sa_len=false])])
950 if test "$ac_cv_sockaddr_sa_len" = true ; then
951 AC_DEFINE(HAVE_SA_LEN)
954 dnl Checks for libraries.
955 dnl ========================================================
956 AC_CHECK_LIB(c_r, gethostbyname_r)
958 dnl We don't want to link with libdl even if it's present on OS X, since
959 dnl it's not used and not part of the default installation. OS/2 has dlfcn
961 dnl We don't want to link against libm or libpthread on Darwin since
962 dnl they both are just symlinks to libSystem and explicitly linking
963 dnl against libSystem causes issues when debugging (see bug 299601).
968 AC_SEARCH_LIBS(dlopen, dl,
969 MOZ_CHECK_HEADER(dlfcn.h,
970 AC_DEFINE(HAVE_DLOPEN)))
974 _SAVE_CFLAGS="$CFLAGS"
975 CFLAGS="$CFLAGS -D_GNU_SOURCE"
976 AC_CHECK_FUNCS(dladdr memmem)
977 CFLAGS="$_SAVE_CFLAGS"
979 if test ! "$GNU_CXX"; then
980 AC_CHECK_LIB(C, demangle)
983 AC_CHECK_LIB(socket, socket)
986 XLIBS="$X_EXTRA_LIBS"
988 dnl ========================================================
989 dnl Checks for X libraries.
990 dnl Ordering is important.
991 dnl Xt is dependent upon SM as of X11R6
992 dnl ========================================================
993 if test -n "$MOZ_X11"; then
994 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
995 _SAVE_LDFLAGS="$LDFLAGS"
997 LDFLAGS="$XLDFLAGS $LDFLAGS"
998 AC_CHECK_LIB(X11, XDrawLines, [XLIBS="-lX11 $XLIBS"],
999 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
1000 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
1001 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
1003 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
1004 unset ac_cv_lib_Xt_XtFree
1005 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
1006 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
1007 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
1008 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
1011 dnl ========================================================
1013 dnl ========================================================
1014 AC_CHECK_LIB(xcb, xcb_connect, [XLIBS="-lxcb $XLIBS"],
1015 [MISSING_X="$MISSING_X -lxcb"], $XLIBS)
1016 AC_CHECK_LIB(xcb-shm, xcb_shm_query_version, [XLIBS="-lxcb-shm $XLIBS"],
1017 [MISSING_X="$MISSING_X -lxcb-shm"], $XLIBS)
1018 AC_CHECK_LIB(X11-xcb, XGetXCBConnection, [XLIBS="-lX11-xcb $XLIBS"],
1019 [MISSING_X="$MISSING_X -lX11-xcb"], $XLIBS)
1021 LDFLAGS="$_SAVE_LDFLAGS"
1025 AC_SUBST_LIST(XCFLAGS)
1026 AC_SUBST_LIST(XLDFLAGS)
1027 AC_SUBST_LIST(XLIBS)
1028 AC_SUBST_LIST(XEXT_LIBS)
1029 AC_SUBST_LIST(XT_LIBS)
1031 dnl ========================================================
1032 dnl = pthread support
1033 dnl = Start by checking whether the system support pthreads
1034 dnl ========================================================
1035 case "$target_os" in
1040 AC_CHECK_LIB(pthreads, pthread_create,
1041 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
1042 AC_CHECK_LIB(pthread, pthread_create,
1043 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
1044 AC_CHECK_LIB(c_r, pthread_create,
1045 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
1046 AC_CHECK_LIB(c, pthread_create,
1055 dnl ========================================================
1056 dnl Do the platform specific pthread hackery
1057 dnl ========================================================
1058 if test "$MOZ_USE_PTHREADS"x != x
1061 dnl See if -pthread is supported.
1064 ac_cv_have_dash_pthread=no
1065 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
1066 echo 'int main() { return 0; }' | cat > conftest.c
1067 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
1068 if test $? -eq 0; then
1069 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
1070 ac_cv_have_dash_pthread=yes
1071 case "$target_os" in
1073 # Freebsd doesn't use -pthread for compiles, it uses them for linking
1076 CFLAGS="$CFLAGS -pthread"
1077 CXXFLAGS="$CXXFLAGS -pthread"
1083 AC_MSG_RESULT($ac_cv_have_dash_pthread)
1086 dnl See if -pthreads is supported.
1088 ac_cv_have_dash_pthreads=no
1089 if test "$ac_cv_have_dash_pthread" = "no"; then
1090 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
1091 echo 'int main() { return 0; }' | cat > conftest.c
1092 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
1093 if test $? -eq 0; then
1094 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
1095 ac_cv_have_dash_pthreads=yes
1096 CFLAGS="$CFLAGS -pthreads"
1097 CXXFLAGS="$CXXFLAGS -pthreads"
1101 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
1106 AC_DEFINE(_REENTRANT)
1107 AC_DEFINE(_THREAD_SAFE)
1108 dnl -pthread links in -lpthread, so don't specify it explicitly.
1109 if test "$ac_cv_have_dash_pthread" = "yes"; then
1110 _PTHREAD_LDFLAGS="-pthread"
1114 *-*-openbsd*|*-*-bsdi*)
1115 AC_DEFINE(_REENTRANT)
1116 AC_DEFINE(_THREAD_SAFE)
1117 dnl -pthread links in -lc_r, so don't specify it explicitly.
1118 if test "$ac_cv_have_dash_pthread" = "yes"; then
1119 _PTHREAD_LDFLAGS="-pthread"
1123 *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
1124 AC_DEFINE(_REENTRANT)
1128 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
1129 AC_SUBST(MOZ_USE_PTHREADS)
1130 MOZ_CHECK_HEADERS(pthread.h)
1134 dnl Checks for library functions.
1135 dnl ========================================================
1136 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)
1138 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
1139 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
1140 ac_cv_clock_monotonic,
1141 [for libs in "" -lrt; do
1144 dnl clock_gettime is available on OSX since 10.12, so depending on MACOSX_DEPLOYMENT_TARGET,
1145 dnl we should or not be able to use it. To detect if we can, we need to make the
1146 dnl availability attribute strict, so that compilation fails when the target is < 10.12.
1147 AC_TRY_LINK([#define availability(os, ...) availability(os, strict, __VA_ARGS)
1149 [ struct timespec ts;
1150 clock_gettime(CLOCK_MONOTONIC, &ts); ],
1151 ac_cv_clock_monotonic=$libs
1154 ac_cv_clock_monotonic=no)
1157 if test "$ac_cv_clock_monotonic" != "no"; then
1158 HAVE_CLOCK_MONOTONIC=1
1159 REALTIME_LIBS=$ac_cv_clock_monotonic
1160 AC_DEFINE(HAVE_CLOCK_MONOTONIC)
1161 AC_SUBST(HAVE_CLOCK_MONOTONIC)
1162 AC_SUBST_LIST(REALTIME_LIBS)
1165 dnl Turn on warnings-as-errors to prevent implicit declaration of
1166 dnl pthread_cond_timedwait_monotonic_np, which can cause this test to
1167 dnl inadvertently pass even if the function does not really exist.
1168 _SAVE_CFLAGS="$CFLAGS"
1169 CFLAGS="$CFLAGS $WARNINGS_AS_ERRORS"
1170 AC_CACHE_CHECK(for pthread_cond_timedwait_monotonic_np,
1171 ac_cv_pthread_cond_timedwait_monotonic_np,
1172 AC_TRY_LINK([#include <pthread.h>],
1173 [pthread_cond_timedwait_monotonic_np(0, 0, 0);],
1174 ac_cv_pthread_cond_timewait_monotonic_np=yes,
1175 ac_cv_pthread_cond_timewait_monotonic_np=no))
1176 if test "$ac_cv_pthread_cond_timewait_monotonic_np" != "no"; then
1177 AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC)
1179 CFLAGS=$_SAVE_CFLAGS
1183 ac_cv_func_res_ninit,
1184 [if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then
1185 dnl no need for res_ninit() on NetBSD and OpenBSD
1186 ac_cv_func_res_ninit=no
1190 #define _BSD_SOURCE 1
1192 #include <sys/types.h>
1193 #include <netinet/in.h>
1194 #include <arpa/nameser.h>
1197 [int foo = res_ninit(&_res);],
1198 [ac_cv_func_res_ninit=yes],
1199 [ac_cv_func_res_ninit=no])
1203 if test "$ac_cv_func_res_ninit" = "yes"; then
1204 AC_DEFINE(HAVE_RES_NINIT)
1205 dnl must add the link line we do something as foolish as this... dougt
1207 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
1208 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
1213 dnl **********************
1214 dnl *** va_copy checks ***
1215 AC_CACHE_CHECK([for an implementation of va_copy()],
1217 [AC_TRY_COMPILE([#include <stdarg.h>
1219 void f (int i, ...) {
1220 va_list args1, args2;
1221 va_start (args1, i);
1222 va_copy (args2, args1);
1223 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1225 va_end (args1); va_end (args2);
1227 [f(0, 42); return 0],
1228 [ac_cv_va_copy=yes],
1232 AC_CACHE_CHECK([whether va_list can be copied by value],
1234 [AC_TRY_COMPILE([#include <stdarg.h>
1236 void f (int i, ...) {
1237 va_list args1, args2;
1238 va_start (args1, i);
1240 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1242 va_end (args1); va_end (args2);
1244 [f(0, 42); return 0],
1245 [ac_cv_va_val_copy=yes],
1246 [ac_cv_va_val_copy=no],
1249 if test "x$ac_cv_va_copy" = "xyes"; then
1250 AC_DEFINE(VA_COPY, va_copy)
1251 AC_DEFINE(HAVE_VA_COPY)
1254 if test "x$ac_cv_va_val_copy" = "xno"; then
1255 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
1258 dnl ===================================================================
1259 dnl ========================================================
1260 dnl Put your C++ language/feature checks below
1261 dnl ========================================================
1265 if test "$GNU_CC"; then
1266 if test "$CPU_ARCH" = "arm" ; then
1267 AC_CACHE_CHECK(for ARM EABI,
1271 #if defined(__ARM_EABI__)
1274 #error Not ARM EABI.
1277 ac_cv_gcc_arm_eabi="yes",
1278 ac_cv_gcc_arm_eabi="no")])
1279 if test "$ac_cv_gcc_arm_eabi" = "yes"; then
1281 ARM_ABI_PREFIX=eabi-
1283 ARM_ABI_PREFIX=oabi-
1287 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
1290 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
1291 # We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
1292 # enabled, the linker in xcode 4.1 will crash. Without this it would crash when
1294 _SAVE_LDFLAGS=$LDFLAGS
1295 LDFLAGS="$LDFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
1296 AC_CACHE_CHECK(for __thread keyword for TLS variables,
1297 ac_cv_thread_keyword,
1298 [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
1299 [return tlsIsMainThread;],
1300 ac_cv_thread_keyword=yes,
1301 ac_cv_thread_keyword=no)])
1302 LDFLAGS=$_SAVE_LDFLAGS
1303 # The custom dynamic linker doesn't support TLS variables
1305 if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
1306 # mips builds fail with TLS variables because of a binutils bug.
1308 # OpenBSD doesn't have TLS support, and the test succeeds with clang++
1313 *-android*|*-linuxandroid*)
1320 AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
1326 dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments.
1327 if test -n "$MOZ_LINKER"; then
1328 if test "$CPU_ARCH" = arm; then
1329 dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments
1330 if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
1331 LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
1332 _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
1336 dnl gold emits wrong sysv-style elf hash tables when building both sysv and
1337 dnl style tables. https://sourceware.org/bugzilla/show_bug.cgi?id=13597
1338 dnl Since the linker only understands the sysv ones, no need to build the
1339 dnl gnu style tables anyways.
1340 LDFLAGS="$LDFLAGS -Wl,--hash-style=sysv"
1343 dnl End of C++ language/feature checks
1346 dnl ========================================================
1347 dnl = Internationalization checks
1348 dnl ========================================================
1350 dnl Internationalization and Locale support is different
1351 dnl on various UNIX platforms. Checks for specific i18n
1352 dnl features go here.
1354 AC_HAVE_FUNCS(localeconv)
1356 fi # ! SKIP_COMPILER_CHECKS
1358 if test -n "${COMPILE_ENVIRONMENT}"; then
1363 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
1364 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
1365 AC_DEFINE_UNQUOTED(TARGET_XPCOM_ABI, ["${TARGET_XPCOM_ABI}"])
1368 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
1369 dnl features that Windows actually does support.
1371 if test -n "$SKIP_COMPILER_CHECKS"; then
1372 dnl Windows has malloc.h
1373 AC_DEFINE(MALLOC_H, [<malloc.h>])
1374 AC_DEFINE(HAVE_FORCEINLINE)
1375 AC_DEFINE(HAVE_LOCALECONV)
1376 fi # SKIP_COMPILER_CHECKS
1378 dnl Mozilla specific options
1379 dnl ========================================================
1380 dnl The macros used for command line options
1381 dnl are defined in build/autoconf/altoptions.m4.
1383 dnl ========================================================
1385 dnl = Check for external package dependencies
1387 dnl ========================================================
1388 MOZ_ARG_HEADER(External Packages)
1390 dnl ========================================================
1391 dnl system libevent Support
1392 dnl ========================================================
1393 MOZ_ARG_WITH_STRING(system-libevent,
1394 [ --with-system-libevent[=PFX]
1395 Use system libevent [installed at prefix PFX]],
1396 LIBEVENT_DIR=$withval)
1398 _SAVE_CFLAGS=$CFLAGS
1399 _SAVE_LDFLAGS=$LDFLAGS
1401 if test "$LIBEVENT_DIR" = yes; then
1402 PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
1403 MOZ_SYSTEM_LIBEVENT=1,
1406 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
1407 MOZ_SYSTEM_LIBEVENT=
1408 elif test -z "$MOZ_SYSTEM_LIBEVENT"; then
1409 CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
1410 LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
1411 MOZ_CHECK_HEADER(event.h,
1412 [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
1413 AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
1415 AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
1416 AC_CHECK_LIB(event, event_init,
1417 [MOZ_SYSTEM_LIBEVENT=1
1418 MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
1419 MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
1420 [MOZ_SYSTEM_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
1422 CFLAGS=$_SAVE_CFLAGS
1423 LDFLAGS=$_SAVE_LDFLAGS
1426 AC_SUBST(MOZ_SYSTEM_LIBEVENT)
1428 if test -z "$SKIP_LIBRARY_CHECKS"; then
1430 dnl ========================================================
1431 dnl system PNG Support
1432 dnl ========================================================
1433 MOZ_ARG_WITH_STRING(system-png,
1434 [ --with-system-png[=PFX]
1435 Use system libpng [installed at prefix PFX]],
1438 _SAVE_CFLAGS=$CFLAGS
1439 _SAVE_LDFLAGS=$LDFLAGS
1441 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
1442 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
1443 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
1445 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
1448 AC_CHECK_LIB(png, png_get_valid, [MOZ_SYSTEM_PNG=1 MOZ_PNG_LIBS="-lpng"],
1449 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
1450 AC_CHECK_LIB(png, png_get_acTL, ,
1451 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]))
1453 if test "$MOZ_SYSTEM_PNG" = 1; then
1454 AC_TRY_COMPILE([ #include <stdio.h>
1455 #include <sys/types.h>
1457 [ #if PNG_LIBPNG_VER < $MOZPNG
1458 #error "Insufficient libpng version ($MOZPNG required)."
1460 #ifndef PNG_UINT_31_MAX
1461 #error "Insufficient libpng version."
1464 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
1466 CFLAGS=$_SAVE_CFLAGS
1467 LDFLAGS=$_SAVE_LDFLAGS
1470 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_SYSTEM_PNG" = 1; then
1471 MOZ_PNG_CFLAGS="-I${PNG_DIR}/include"
1472 MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}"
1475 fi # SKIP_LIBRARY_CHECKS
1477 dnl ========================================================
1481 dnl ========================================================
1483 MOZ_ARG_HEADER(Application)
1485 ENABLE_SYSTEM_EXTENSION_DIRS=1
1486 MOZ_BRANDING_DIRECTORY=
1487 MOZ_OFFICIAL_BRANDING=
1488 MOZ_AUTH_EXTENSION=1
1490 MOZ_UNIVERSALCHARDET=1
1495 MOZ_BINARY_EXTENSIONS=
1498 dnl ========================================================
1499 dnl = Trademarked Branding
1500 dnl ========================================================
1501 MOZ_ARG_ENABLE_BOOL(official-branding,
1502 [ --enable-official-branding
1503 Enable Official mozilla.org Branding
1504 Do not distribute builds with
1505 --enable-official-branding unless you have
1506 permission to use trademarks per
1507 http://www.mozilla.org/foundation/trademarks/ .],
1508 MOZ_OFFICIAL_BRANDING=1,
1509 MOZ_OFFICIAL_BRANDING=)
1511 # Allow the application to influence configure with a confvars.sh script.
1512 AC_MSG_CHECKING([if app-specific confvars.sh exists])
1513 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
1514 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
1515 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
1520 dnl ========================================================
1521 dnl Ensure Android SDK and build-tools versions depending on
1523 dnl ========================================================
1525 case "$MOZ_BUILD_APP" in
1531 dnl ========================================================
1533 dnl = Toolkit Options
1535 dnl ========================================================
1536 MOZ_ARG_HEADER(Toolkit Options)
1538 dnl ========================================================
1539 dnl = Enable the toolkit as needed =
1540 dnl ========================================================
1542 case "$MOZ_WIDGET_TOOLKIT" in
1545 LDFLAGS="$LDFLAGS -framework Cocoa"
1546 # Use -Wl as a trick to avoid -framework and framework names from
1547 # being separated by AC_SUBST_LIST.
1548 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'
1550 CFLAGS="$CFLAGS $TK_CFLAGS"
1551 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
1552 MOZ_USER_DIR="Mozilla"
1553 MOZ_FS_LAYOUT=bundle
1557 LDFLAGS="$LDFLAGS -framework UIKit"
1559 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'
1560 CFLAGS="$CFLAGS $TK_CFLAGS"
1561 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
1562 MOZ_USER_DIR="Mozilla"
1563 MOZ_FS_LAYOUT=bundle
1568 if test "$OS_TARGET" = Darwin; then
1569 LDFLAGS="$LDFLAGS -lobjc"
1572 dnl there are a lot of tests on MOZ_ENABLE_GTK below, that are more convenient
1573 dnl to keep that way than testing against MOZ_WIDGET_TOOLKIT
1574 case "$MOZ_WIDGET_TOOLKIT" in
1580 if test "$COMPILE_ENVIRONMENT"; then
1581 if test "$MOZ_WIDGET_TOOLKIT" = gtk; then
1582 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)
1583 MOZ_GTK3_CFLAGS="-I${_topsrcdir}/widget/gtk/compat-gtk3 $MOZ_GTK3_CFLAGS"
1584 TK_CFLAGS=$MOZ_GTK3_CFLAGS
1585 TK_LIBS=$MOZ_GTK3_LIBS
1586 dnl GDK_VERSION_MIN_REQUIRED is not set here as GDK3 deprecated warnings
1587 dnl are suppressed by widget/gtk/compat-gtk3/gdk/gdkversionmacros.h.
1588 AC_DEFINE_UNQUOTED(GDK_VERSION_MAX_ALLOWED,$GDK_VERSION_MAX_ALLOWED)
1590 if test "$MOZ_ENABLE_GTK"; then
1591 AC_DEFINE_UNQUOTED(GLIB_VERSION_MIN_REQUIRED,$GLIB_VERSION_MIN_REQUIRED)
1592 AC_DEFINE_UNQUOTED(GLIB_VERSION_MAX_ALLOWED,$GLIB_VERSION_MAX_ALLOWED)
1594 fi # COMPILE_ENVIRONMENT
1596 AC_SUBST(MOZ_FS_LAYOUT)
1598 AC_SUBST_LIST(TK_CFLAGS)
1599 AC_SUBST_LIST(TK_LIBS)
1601 dnl ========================================================
1603 dnl = Components & Features
1605 dnl ========================================================
1606 MOZ_ARG_HEADER(Components and Features)
1608 AC_SUBST(MOZ_OFFICIAL_BRANDING)
1609 if test -n "$MOZ_OFFICIAL_BRANDING"; then
1610 if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
1611 AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
1613 MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
1614 AC_DEFINE(MOZ_OFFICIAL_BRANDING)
1618 MOZ_ARG_WITH_STRING(branding,
1619 [ --with-branding=dir Use branding from the specified directory.],
1620 MOZ_BRANDING_DIRECTORY=$withval)
1622 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
1623 if test -z "$REAL_BRANDING_DIRECTORY"; then
1624 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
1627 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
1628 . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
1631 AC_SUBST(MOZ_BRANDING_DIRECTORY)
1633 dnl ========================================================
1634 dnl = Distribution ID
1635 dnl ========================================================
1636 MOZ_ARG_WITH_STRING(distribution-id,
1637 [ --with-distribution-id=ID
1638 Set distribution-specific id (default=org.mozilla)],
1639 [ val=`echo $withval`
1640 MOZ_DISTRIBUTION_ID="$val"])
1642 if test -z "$MOZ_DISTRIBUTION_ID"; then
1643 MOZ_DISTRIBUTION_ID="org.mozilla"
1646 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
1647 AC_SUBST(MOZ_DISTRIBUTION_ID)
1649 dnl ========================================================
1650 dnl = libproxy support
1651 dnl ========================================================
1653 if test "$MOZ_ENABLE_GTK"
1655 MOZ_ENABLE_LIBPROXY=
1657 MOZ_ARG_ENABLE_BOOL(libproxy,
1658 [ --enable-libproxy Enable libproxy support ],
1659 MOZ_ENABLE_LIBPROXY=1,
1660 MOZ_ENABLE_LIBPROXY=)
1662 if test "$MOZ_ENABLE_LIBPROXY"
1664 PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
1665 AC_DEFINE(MOZ_ENABLE_LIBPROXY)
1668 AC_SUBST(MOZ_ENABLE_LIBPROXY)
1670 dnl ========================================================
1672 dnl ========================================================
1674 if test "$MOZ_ENABLE_GTK"
1678 MOZ_ARG_DISABLE_BOOL(dbus,
1679 [ --disable-dbus Disable dbus support ],
1683 if test "$MOZ_ENABLE_DBUS"
1685 PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
1686 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
1687 AC_DEFINE(MOZ_ENABLE_DBUS)
1690 AC_SUBST(MOZ_ENABLE_DBUS)
1692 AC_TRY_COMPILE([#include <linux/ethtool.h>],
1693 [ struct ethtool_cmd cmd; cmd.speed_hi = 0; ],
1694 MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI=1)
1696 AC_SUBST(MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI)
1698 if test -n "$MOZ_WEBRTC"; then
1699 if test -n "$MOZ_X11"; then
1700 MOZ_WEBRTC_X11_LIBS="-lXext -lXdamage -lXfixes -lXcomposite"
1704 AC_SUBST_LIST(MOZ_WEBRTC_X11_LIBS)
1706 dnl ========================================================
1707 dnl = Apple platform decoder support
1708 dnl ========================================================
1709 if test "$COMPILE_ENVIRONMENT"; then
1710 if test -n "$MOZ_APPLEMEDIA"; then
1711 # hack in frameworks for fmp4 - see bug 1029974
1712 # We load VideoToolbox and CoreMedia dynamically, so they don't appear here.
1713 LDFLAGS="$LDFLAGS -framework AudioToolbox"
1714 dnl Verify CoreMedia is available.
1715 AC_CHECK_HEADERS([CoreMedia/CoreMedia.h VideoToolbox/VideoToolbox.h], [],
1716 [AC_MSG_ERROR([MacOS X 10.9 SDK or later is required])])
1718 fi # COMPILE_ENVIRONMENT
1720 dnl ========================================================
1721 dnl = Handle dependent MEDIA defines
1722 dnl ========================================================
1725 AC_DEFINE(MOZ_WEBM_ENCODER)
1726 AC_SUBST(MOZ_WEBM_ENCODER)
1728 dnl ========================================================
1730 dnl ========================================================
1732 MOZ_ARG_DISABLE_BOOL(negotiateauth,
1733 [ --disable-negotiateauth Disable GSS-API negotiation ],
1734 MOZ_AUTH_EXTENSION=,
1735 MOZ_AUTH_EXTENSION=1 )
1737 dnl ========================================================
1738 dnl Searching of system directories for extensions.
1739 dnl Note: this switch is meant to be used for test builds
1740 dnl whose behavior should not depend on what happens to be
1741 dnl installed on the local machine.
1742 dnl ========================================================
1743 MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
1744 [ --disable-system-extension-dirs
1745 Disable searching system- and account-global
1746 directories for extensions of any kind; use
1747 only profile-specific extension directories],
1748 ENABLE_SYSTEM_EXTENSION_DIRS=,
1749 ENABLE_SYSTEM_EXTENSION_DIRS=1 )
1750 if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
1751 AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
1754 dnl ========================================================
1755 dnl = Universalchardet
1756 dnl ========================================================
1757 MOZ_ARG_DISABLE_BOOL(universalchardet,
1758 [ --disable-universalchardet
1759 Disable universal encoding detection],
1760 MOZ_UNIVERSALCHARDET=,
1761 MOZ_UNIVERSALCHARDET=1 )
1763 dnl ========================================================
1765 dnl ========================================================
1767 if test "$COMPILE_ENVIRONMENT" ; then
1769 dnl Moved gamepad platform check to moz.build, linux header check still needed here.
1770 if test "$OS_TARGET" = "Linux"; then
1771 MOZ_CHECK_HEADER([linux/joystick.h])
1772 if test "$ac_cv_header_linux_joystick_h" != "yes"; then
1773 AC_MSG_ERROR([Can't find header linux/joystick.h, needed for gamepad support. Please install Linux kernel headers.])
1777 fi # COMPILE_ENVIRONMENT
1780 dnl ========================================================
1781 dnl = Breakpad crash reporting (on by default on supported platforms)
1782 dnl ========================================================
1785 i?86-*-mingw*|x86_64-*-mingw*|aarch64-*-mingw*)
1788 i?86-apple-darwin*|x86_64-apple-darwin*|aarch64-apple-darwin*)
1791 *-android*|*-linuxandroid*)
1792 dnl Android/arm is arm-unknown-linux-androideabi, so android condition should
1793 dnl be before Linux condition
1794 dnl The crash reporter prevents crash stacktraces to be logged in the
1795 dnl logs so we leave it out by default in developer builds.
1796 if test -z "$DEVELOPER_OPTIONS"; then
1800 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
1801 if test "$MOZ_ENABLE_GTK"; then
1807 MOZ_ARG_DISABLE_BOOL(crashreporter,
1808 [ --disable-crashreporter Disable breakpad crash reporting],
1809 [MOZ_CRASHREPORTER=],
1810 [MOZ_CRASHREPORTER=F # Force enable breakpad])
1812 if test "$OS_ARCH" != "$HOST_OS_ARCH" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "Darwin" -a "$MOZ_WIDGET_TOOLKIT" != "android"; then
1813 if test "$MOZ_CRASHREPORTER" = F; then
1814 AC_MSG_ERROR([Cannot --enable-crashreporter, as breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH.])
1819 if test -n "$MOZ_CRASHREPORTER"; then
1820 AC_DEFINE(MOZ_CRASHREPORTER)
1822 if test "$OS_TARGET" = "Linux" && \
1823 test -z "$SKIP_LIBRARY_CHECKS"; then
1824 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
1827 if test "$OS_ARCH" = "WINNT"; then
1828 if test -z "$HAVE_64BIT_BUILD" -a -n "$COMPILE_ENVIRONMENT"; then
1829 MOZ_CRASHREPORTER_INJECTOR=1
1830 AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
1835 dnl ========================================================
1836 dnl = Enable compilation of specific extension modules
1837 dnl ========================================================
1839 MOZ_ARG_ENABLE_STRING(extensions,
1840 [ --enable-extensions Enable extensions],
1841 [ for option in `echo $enableval | sed 's/,/ /g'`; do
1842 if test "$option" = "yes" -o "$option" = "all"; then
1843 AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
1844 elif test "$option" = "no" -o "$option" = "none"; then
1846 elif test "$option" = "default"; then
1847 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
1848 elif test `echo "$option" | grep -c \^-` != 0; then
1849 option=`echo $option | sed 's/^-//'`
1850 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
1852 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
1855 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
1857 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
1858 dnl when trying to build a nonexistent extension.
1859 for extension in $MOZ_EXTENSIONS; do
1860 if test ! -d "${srcdir}/extensions/${extension}"; then
1861 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
1865 # Avoid defining MOZ_ENABLE_CAIRO_FT on Windows platforms because
1866 # "cairo-ft-font.c" includes <dlfcn.h>, which only exists on posix platforms
1867 if test -n "$MOZ_TREE_FREETYPE" -a "$OS_TARGET" != WINNT; then
1868 MOZ_ENABLE_CAIRO_FT=1
1869 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
1870 CAIRO_FT_CFLAGS="-I$_topsrcdir/modules/freetype2/include"
1871 AC_SUBST_LIST(CAIRO_FT_CFLAGS)
1874 dnl ========================================================
1876 dnl ========================================================
1878 MOZ_ARG_DISABLE_BOOL(updater,
1879 [ --disable-updater Disable building of updater],
1883 if test -n "$MOZ_UPDATER"; then
1884 AC_DEFINE(MOZ_UPDATER)
1887 dnl ========================================================
1888 dnl parental controls (for Windows Vista)
1889 dnl ========================================================
1890 MOZ_ARG_DISABLE_BOOL(parental-controls,
1891 [ --disable-parental-controls
1892 Do not build parental controls],
1893 MOZ_DISABLE_PARENTAL_CONTROLS=1,
1894 MOZ_DISABLE_PARENTAL_CONTROLS=)
1895 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
1896 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
1899 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
1901 dnl ========================================================
1902 dnl = Disable smartcard support
1903 dnl ========================================================
1904 if test -n "$MOZ_NO_SMART_CARDS"; then
1905 AC_DEFINE(MOZ_NO_SMART_CARDS)
1907 AC_SUBST(MOZ_NO_SMART_CARDS)
1909 dnl ========================================================
1910 dnl = Sandboxing support
1911 dnl ========================================================
1912 if test -n "$MOZ_TSAN" -o -n "$MOZ_ASAN"; then
1913 # Bug 1182565: TSan conflicts with sandboxing on Linux.
1914 # Bug 1287971: LSan also conflicts with sandboxing on Linux.
1922 MOZ_ARG_DISABLE_BOOL(sandbox,
1923 [ --disable-sandbox Disable sandboxing support],
1927 case "$OS_TARGET" in
1928 WINNT|Darwin|OpenBSD)
1932 x86_64|x86|arm|aarch64)
1934 # Linux sandbox is only available on x86{,_64} and arm{,64}.
1941 # Only enable the sandbox by default on Linux, OpenBSD, macOS, and Windows
1946 if test -n "$MOZ_SANDBOX"; then
1947 AC_DEFINE(MOZ_SANDBOX)
1950 AC_SUBST(MOZ_SANDBOX)
1953 dnl ========================================================
1955 dnl = Module specific options
1957 dnl ========================================================
1958 MOZ_ARG_HEADER(Individual module options)
1960 dnl ==============================
1961 dnl === SQLite fdatasync check ===
1962 dnl ==============================
1963 dnl Check to see if fdatasync is available and make use of it
1964 AC_CHECK_FUNC(fdatasync)
1966 dnl ========================================================
1967 dnl = Disable zipwriter
1968 dnl ========================================================
1969 MOZ_ARG_DISABLE_BOOL(zipwriter,
1970 [ --disable-zipwriter Disable zipwriter component],
1973 AC_SUBST(MOZ_ZIPWRITER)
1975 dnl ========================================================
1977 dnl = Feature options that require extra sources to be pulled
1979 dnl ========================================================
1980 dnl MOZ_ARG_HEADER(Features that require extra sources)
1982 dnl ========================================================
1984 dnl = Runtime debugging and Optimization Options
1986 dnl ========================================================
1987 MOZ_ARG_HEADER(Runtime debugging and Optimizations)
1989 dnl ========================================================
1990 dnl = Enable code optimization. ON by default.
1991 dnl ========================================================
1993 # Use value from moz.configure if one is defined. Else use our computed
1995 if test -n "${MOZ_CONFIGURE_OPTIMIZE_FLAGS}"; then
1996 MOZ_OPTIMIZE_FLAGS=${MOZ_CONFIGURE_OPTIMIZE_FLAGS}
1999 if test "$COMPILE_ENVIRONMENT"; then
2000 if test -n "$MOZ_OPTIMIZE"; then
2001 AC_MSG_CHECKING([for valid C compiler optimization flags])
2002 _SAVE_CFLAGS=$CFLAGS
2003 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
2004 AC_TRY_COMPILE([#include <stdio.h>],
2005 [printf("Hello World\n");],
2008 AC_MSG_RESULT([$_results])
2009 if test "$_results" = "no"; then
2010 AC_MSG_ERROR([These compiler flags for C are invalid: $MOZ_OPTIMIZE_FLAGS])
2012 CFLAGS=$_SAVE_CFLAGS
2013 if test -n "$MOZ_LTO" -a -n "$CLANG_CC"; then
2014 # When using llvm-based LTO, non numeric optimization levels are
2015 # not supported by the linker, so force the linker to use -O2 (
2016 # which doesn't influence the level compilation units are actually
2018 case " $MOZ_OPTIMIZE_FLAGS " in
2019 *\ -Os\ *|*\ -Oz\ *)
2020 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -O2"
2025 fi # COMPILE_ENVIRONMENT
2027 AC_SUBST_LIST(MOZ_OPTIMIZE_FLAGS)
2028 AC_SUBST_LIST(MOZ_OPTIMIZE_LDFLAGS)
2029 AC_SUBST_LIST(MOZ_PGO_OPTIMIZE_FLAGS)
2031 dnl ========================================================
2032 dnl = Enable runtime logging
2033 dnl ========================================================
2034 AC_DEFINE(MOZ_LOGGING)
2035 AC_DEFINE(FORCE_PR_LOG)
2037 dnl ========================================================
2038 dnl = This will enable logging of addref, release, ctor, dtor.
2039 dnl ========================================================
2040 _ENABLE_LOGREFCNT=42
2041 MOZ_ARG_ENABLE_BOOL(logrefcnt,
2042 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
2043 _ENABLE_LOGREFCNT=1,
2044 _ENABLE_LOGREFCNT= )
2045 if test "$_ENABLE_LOGREFCNT" = "1"; then
2046 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
2047 elif test -z "$_ENABLE_LOGREFCNT"; then
2048 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
2051 dnl ========================================================
2052 dnl moz_dump_painting
2053 dnl ========================================================
2054 MOZ_ARG_ENABLE_BOOL(dump-painting,
2055 [ --enable-dump-painting Enable paint debugging.],
2056 MOZ_DUMP_PAINTING=1,
2057 MOZ_DUMP_PAINTING= )
2058 if test -n "$MOZ_DUMP_PAINTING"; then
2059 AC_DEFINE(MOZ_DUMP_PAINTING)
2060 AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
2062 if test -n "$MOZ_DEBUG"; then
2063 AC_DEFINE(MOZ_DUMP_PAINTING)
2066 case "${OS_TARGET}" in
2067 Android|WINNT|Darwin)
2068 MOZ_GLUE_IN_PROGRAM=
2071 dnl On !Android !Windows !OSX, we only want to link executables against mozglue
2072 MOZ_GLUE_IN_PROGRAM=1
2073 AC_DEFINE(MOZ_GLUE_IN_PROGRAM)
2077 dnl ========================================================
2078 dnl = Jemalloc build setup
2079 dnl ========================================================
2080 if test -z "$MOZ_MEMORY"; then
2083 if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
2084 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.])
2089 dnl The generic feature tests that determine how to compute ncpus are long and
2090 dnl complicated. Therefore, simply define special cpp variables for the
2091 dnl platforms we have special knowledge of.
2094 export MOZ_NO_DEBUG_RTL=1
2098 AC_SUBST(MOZ_GLUE_IN_PROGRAM)
2100 dnl ========================================================
2101 dnl = Enable using the clang plugin to build
2102 dnl ========================================================
2104 if test -n "$COMPILE_ENVIRONMENT"; then
2105 MOZ_CONFIG_CLANG_PLUGIN
2106 fi # COMPILE_ENVIRONMENT
2108 dnl ========================================================
2109 dnl = frontend JS debug mode
2110 dnl ========================================================
2112 MOZ_ARG_ENABLE_BOOL(debug-js-modules,
2113 [ --enable-debug-js-modules Enable debug mode for frontend JS libraries],
2117 AC_SUBST(DEBUG_JS_MODULES)
2119 dnl ========================================================
2121 dnl = Profiling and Instrumenting
2123 dnl ========================================================
2124 MOZ_ARG_HEADER(Profiling and Instrumenting)
2126 dnl ========================================================
2127 dnl = Support for demangling undefined symbols
2128 dnl ========================================================
2129 if test -z "$SKIP_LIBRARY_CHECKS"; then
2132 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
2136 # Demangle only for debug or DMD builds
2137 MOZ_DEMANGLE_SYMBOLS=
2138 if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$MOZ_DMD"; then
2139 MOZ_DEMANGLE_SYMBOLS=1
2140 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
2142 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
2144 dnl ========================================================
2145 dnl = Support for gcc stack unwinding (from gcc 3.3)
2146 dnl ========================================================
2147 if test -z "$SKIP_LIBRARY_CHECKS"; then
2150 MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
2154 dnl ========================================================
2158 dnl ========================================================
2159 MOZ_ARG_HEADER(Misc. Options)
2161 dnl ========================================================
2162 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
2163 dnl ========================================================
2164 MOZ_ARG_WITH_STRING(user-appdir,
2165 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
2166 [ val=`echo $withval`
2167 if echo "$val" | grep "\/" >/dev/null; then
2168 AC_MSG_ERROR("Homedir must be single relative path.")
2173 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
2175 if test -z "$SKIP_COMPILER_CHECKS"; then
2176 dnl ========================================================
2178 dnl = Compiler Options
2180 dnl ========================================================
2181 MOZ_ARG_HEADER(Compiler Options)
2183 dnl ========================================================
2184 dnl Check for gcc -pipe support
2185 dnl ========================================================
2186 AC_MSG_CHECKING([for -pipe support])
2187 if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
2188 dnl Any gcc that supports firefox supports -pipe.
2189 CFLAGS="$CFLAGS -pipe"
2190 CXXFLAGS="$CXXFLAGS -pipe"
2191 AC_MSG_RESULT([yes])
2196 fi # ! SKIP_COMPILER_CHECKS
2200 if test "$COMPILE_ENVIRONMENT"; then
2202 fi # COMPILE_ENVIRONMENT
2204 dnl ========================================================
2206 dnl = Static Build Options
2208 dnl ========================================================
2209 MOZ_ARG_HEADER(Static build options)
2211 if test -z "$MOZ_SYSTEM_ZLIB"; then
2212 if test -n "$JS_SHARED_LIBRARY" -o -n "$MOZ_LINKER" -o "$MOZ_WIDGET_TOOLKIT" = android; then
2214 AC_DEFINE(ZLIB_IN_MOZGLUE)
2218 AC_SUBST(ZLIB_IN_MOZGLUE)
2220 dnl ========================================================
2222 dnl = Standalone module options
2224 dnl ========================================================
2225 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
2228 dnl ========================================================
2230 if test -z "$SKIP_PATH_CHECKS"; then
2231 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
2232 if test "$MOZ_ENABLE_GTK" ; then
2233 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
2238 if test -z "${GLIB_GMODULE_LIBS}" \
2239 -a -n "${GLIB_CONFIG}"\
2240 -a "${GLIB_CONFIG}" != no\
2242 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
2245 AC_SUBST_LIST(GLIB_GMODULE_LIBS)
2247 if test "$USE_FC_FREETYPE"; then
2248 if test "$COMPILE_ENVIRONMENT"; then
2249 dnl ========================================================
2250 dnl = Check for freetype2 functionality
2251 dnl ========================================================
2252 if test "$_HAVE_FREETYPE2" -a -z "$MOZ_TREE_FREETYPE"; then
2254 _SAVE_CFLAGS="$CFLAGS"
2255 LIBS="$LIBS $FT2_LIBS"
2256 CFLAGS="$CFLAGS $FT2_CFLAGS"
2258 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
2259 ac_cv_member_FT_Bitmap_Size_y_ppem,
2260 [AC_TRY_COMPILE([#include <ft2build.h>
2261 #include FT_FREETYPE_H],
2263 if (sizeof s.y_ppem) return 0;
2265 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
2266 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
2267 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
2268 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
2270 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
2272 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
2273 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
2274 [FT_Bitmap_Size structure includes y_ppem field])
2276 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table)
2279 CFLAGS="$_SAVE_CFLAGS"
2282 _SAVE_CPPFLAGS="$CPPFLAGS"
2283 CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
2284 MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
2285 [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
2286 CPPFLAGS="$_SAVE_CPPFLAGS"
2290 dnl ========================================================
2291 dnl Check if we need the 32-bit Linux SSE2 error dialog
2292 dnl ========================================================
2294 AC_SUBST(MOZ_LINUX_32_SSE2_STARTUP_ERROR)
2296 dnl ========================================================
2297 dnl Check for pixman and cairo
2298 dnl ========================================================
2301 MOZ_ARG_ENABLE_BOOL(system-cairo,
2302 [ --enable-system-cairo Obsolete: do not use this option],
2303 AC_MSG_ERROR(--enable-system-cairo is not supported),
2307 MOZ_ARG_ENABLE_BOOL(system-pixman,
2308 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
2310 MOZ_TREE_PIXMAN=force,
2313 if test "$MOZ_TREE_PIXMAN"; then
2314 AC_DEFINE(MOZ_TREE_PIXMAN)
2316 PKG_CHECK_MODULES(MOZ_PIXMAN, pixman-1 >= 0.19.2)
2319 MOZ_CAIRO_CFLAGS="-I${DIST}/include/cairo"
2320 AC_DEFINE(MOZ_TREE_CAIRO)
2322 if test "$OS_ARCH" = "WINNT"; then
2323 # For now we assume that we will have a uint64_t available through
2324 # one of the above headers or mozstdint.h.
2325 AC_DEFINE(HAVE_UINT64_T)
2328 # Define macros for cairo-features.h
2329 TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
2330 if test "$MOZ_X11"; then
2331 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
2332 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
2333 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
2335 if test "$_HAVE_FREETYPE2"; then
2336 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
2337 MOZ_ENABLE_CAIRO_FT=1
2338 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
2341 case "$MOZ_WIDGET_TOOLKIT" in
2343 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
2344 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
2345 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
2348 WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
2349 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
2350 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
2352 if test "$COMPILE_ENVIRONMENT"; then
2353 MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
2357 if test "$USE_FC_FREETYPE"; then
2358 FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
2360 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
2361 AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
2363 AC_SUBST(PS_SURFACE_FEATURE)
2364 AC_SUBST(SVG_SURFACE_FEATURE)
2365 AC_SUBST(XLIB_SURFACE_FEATURE)
2366 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
2367 AC_SUBST(QUARTZ_SURFACE_FEATURE)
2368 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
2369 AC_SUBST(WIN32_SURFACE_FEATURE)
2370 AC_SUBST(OS2_SURFACE_FEATURE)
2371 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
2372 AC_SUBST(FT_FONT_FEATURE)
2373 AC_SUBST(FC_FONT_FEATURE)
2374 AC_SUBST(WIN32_FONT_FEATURE)
2375 AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
2376 AC_SUBST(QUARTZ_FONT_FEATURE)
2377 AC_SUBST(PNG_FUNCTIONS_FEATURE)
2378 AC_SUBST(QT_SURFACE_FEATURE)
2379 AC_SUBST(TEE_SURFACE_FEATURE)
2381 if test "$MOZ_X11"; then
2382 MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
2385 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
2387 case "$MOZ_WIDGET_TOOLKIT" in
2389 TK_CFLAGS="$MOZ_CAIRO_CFLAGS $MOZ_PIXMAN_CFLAGS"
2390 TK_LIBS="$MOZ_CAIRO_LIBS $MOZ_PIXMAN_LIBS"
2394 AC_SUBST(MOZ_TREE_CAIRO)
2395 AC_SUBST_LIST(MOZ_CAIRO_CFLAGS)
2396 AC_SUBST_LIST(MOZ_CAIRO_LIBS)
2397 AC_SUBST_LIST(MOZ_CAIRO_OSLIBS)
2398 AC_SUBST(MOZ_TREE_PIXMAN)
2400 BINDGEN_SYSTEM_FLAGS="$_BINDGEN_CFLAGS $NSPR_CFLAGS $NSS_CFLAGS $MOZ_PIXMAN_CFLAGS $MOZ_CAIRO_CFLAGS"
2401 AC_SUBST(BINDGEN_SYSTEM_FLAGS)
2402 BINDGEN_SYSTEM_TOML_FLAGS="$BINDGEN_SYSTEM_FLAGS"
2403 AC_SUBST_TOML_LIST(BINDGEN_SYSTEM_TOML_FLAGS)
2405 dnl ========================================================
2407 dnl ========================================================
2408 MOZ_ARG_DISABLE_BOOL(xul,
2409 [ --disable-xul Disable XUL],
2411 if test "$MOZ_XUL"; then
2414 dnl remove extensions that require XUL
2415 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/irc//' -e 's/tasks//'`
2420 dnl ========================================================
2421 dnl necko configuration options
2422 dnl ========================================================
2425 dnl option to disable necko's wifi scanner
2428 if test "$MOZ_WIDGET_TOOLKIT"; then
2430 case "$OS_TARGET" in
2434 DragonFly|FreeBSD|WINNT)
2445 MOZ_ARG_DISABLE_BOOL(necko-wifi,
2446 [ --disable-necko-wifi Disable necko wifi scanner],
2450 if test "$NECKO_WIFI"; then
2451 if test -z "$MOZ_ENABLE_DBUS" -a -n "$NECKO_WIFI_DBUS"; then
2452 AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi])
2454 AC_DEFINE(NECKO_WIFI)
2456 AC_SUBST(NECKO_WIFI)
2457 AC_SUBST(NECKO_WIFI_DBUS)
2459 dnl ========================================================
2461 dnl = Maintainer debug option (no --enable equivalent)
2463 dnl ========================================================
2465 AC_SUBST_LIST(ASFLAGS)
2468 AC_SUBST(MOZ_AUTH_EXTENSION)
2469 AC_SUBST_LIST(MOZ_DEBUG_LDFLAGS)
2470 AC_SUBST_LIST(WARNINGS_CFLAGS)
2471 AC_SUBST_SET(MOZ_EXTENSIONS)
2473 AC_SUBST(MOZ_UNIVERSALCHARDET)
2474 AC_SUBST(MOZ_SPELLCHECK)
2475 AC_SUBST(MOZ_ANDROID_ANR_REPORTER)
2476 AC_SUBST(MOZ_CRASHREPORTER)
2477 AC_SUBST(MOZ_CRASHREPORTER_INJECTOR)
2478 AC_SUBST(MOZ_STUB_INSTALLER)
2479 AC_SUBST(MOZ_UPDATER)
2481 AC_SUBST(MOZ_ANDROID_APPLICATION_CLASS)
2482 AC_SUBST(MOZ_ANDROID_BROWSER_INTENT_CLASS)
2483 AC_SUBST(INCREMENTAL_LINKER)
2485 AC_SUBST_LIST(MOZ_FIX_LINK_PATHS)
2487 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
2488 AC_SUBST(MOZ_LINKER_EXTRACT)
2490 if test -n "$MOZ_BINARY_EXTENSIONS"; then
2491 AC_DEFINE(MOZ_BINARY_EXTENSIONS)
2494 AC_SUBST(MOZ_REQUIRE_SIGNING)
2495 if test "$MOZ_REQUIRE_SIGNING" = 1; then
2496 AC_DEFINE(MOZ_REQUIRE_SIGNING)
2499 dnl ========================================================
2500 dnl = Mac bundle name prefix
2501 dnl ========================================================
2502 MOZ_ARG_WITH_STRING(macbundlename-prefix,
2503 [ --with-macbundlename-prefix=prefix
2504 Prefix for MOZ_MACBUNDLE_NAME],
2505 [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
2507 MOZ_MACBUNDLE_NAME=$MOZ_APP_DISPLAYNAME
2508 if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
2509 MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
2512 if test "$MOZ_DEBUG"; then
2513 MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME}Debug.app"
2515 MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
2517 AC_SUBST(MOZ_MACBUNDLE_NAME)
2519 dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
2520 # If the MOZ_MACBUNDLE_ID is defined in the configure.sh, use it
2521 # Otherwise, use MOZ_APP_DISPLAYNAME
2522 if test -z "$MOZ_MACBUNDLE_ID"; then
2523 MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr 'A-Z' 'a-z' | tr -dc 'a-z-'`
2525 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
2526 if test "$MOZ_DEBUG"; then
2527 MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
2530 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
2531 AC_SUBST(MOZ_MACBUNDLE_ID)
2533 dnl ========================================================
2534 dnl = Child Process Name for IPC
2535 dnl ========================================================
2536 if test "$MOZ_WIDGET_TOOLKIT" != "android"; then
2537 MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}"
2539 # We want to let Android unpack the file at install time, but it only does
2540 # so if the file is named libsomething.so. The lib/ path is also required
2541 # because the unpacked file will be under the lib/ subdirectory and will
2542 # need to be executed from that path.
2543 MOZ_CHILD_PROCESS_NAME="libplugin-container.so"
2545 MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/"
2546 MOZ_CHILD_PROCESS_BUNDLENAME="${MOZ_APP_DISPLAYNAME}CP"
2548 AC_SUBST(MOZ_CHILD_PROCESS_NAME)
2549 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE)
2550 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLENAME)
2552 # The following variables are available to branding and application
2553 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
2554 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
2555 # impacts profile location and user-visible fields.
2556 # - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
2557 # Mac Bundle name, Updater, Installer), it is typically used for nightly
2558 # builds (e.g. Aurora for Firefox).
2559 # - MOZ_APP_PROFILE: When set, used for application.ini's
2560 # "Profile" field, which controls profile location.
2561 # - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
2562 # crash reporter server url.
2563 # - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
2565 # The following environment variables used to have an effect, but don't anymore:
2566 # - MOZ_APP_VERSION: Defines the application version number. This was replaced with
2567 # the contents from the version.txt file in the application directory, or
2568 # browser/config/version.txt if there isn't one.
2569 # - MOZ_APP_VERSION_DISPLAY: Defines the application version number. Used
2570 # in the "About" window. This was replaced with the contents from the
2571 # version_display.txt or version.txt in the application directory, or
2572 # browser/config/version_display.txt.
2574 # For extensions and langpacks, we require a max version that is compatible
2575 # across security releases. MOZ_APP_MAXVERSION is our method for doing that.
2576 # 24.0a1 and 24.0a2 aren't affected
2578 # 24.1.1 becomes 24.*
2579 IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
2580 if test -z "$IS_ALPHA"; then
2582 if test "$(basename $MOZ_BUILD_APP)" = "suite"; then
2583 MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\.[0-9]*\).*|\1|"`.*
2585 MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\).*|\1|"`.*
2589 MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
2592 AC_SUBST(MOZ_APP_DISPLAYNAME)
2593 AC_SUBST(MOZ_APP_VENDOR)
2594 AC_SUBST(MOZ_APP_PROFILE)
2595 AC_SUBST(MOZ_APP_ID)
2596 AC_SUBST(MAR_CHANNEL_ID)
2597 AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
2598 AC_SUBST(MOZ_PROFILE_MIGRATOR)
2599 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
2600 AC_SUBST(MOZ_APP_UA_NAME)
2601 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
2602 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL, $BROWSER_CHROME_URL)
2603 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL_QUOTED, "$BROWSER_CHROME_URL")
2605 AC_SUBST(MOZ_APP_MAXVERSION)
2606 AC_SUBST(MOZ_UA_OS_AGNOSTIC)
2607 if test -n "$MOZ_UA_OS_AGNOSTIC"; then
2608 AC_DEFINE(MOZ_UA_OS_AGNOSTIC)
2611 AC_SUBST(MOZ_PKG_SPECIAL)
2612 AC_SUBST(MOZ_SIMPLE_PACKAGE_NAME)
2614 if test "$MOZILLA_OFFICIAL"; then
2615 # Build revisions should always be present in official builds
2616 MOZ_INCLUDE_SOURCE_INFO=1
2619 # External builds (specifically Ubuntu) may drop the hg repo information, so we allow to
2620 # explicitly set the repository and changeset information in.
2621 AC_SUBST(MOZ_SOURCE_REPO)
2622 AC_SUBST(MOZ_SOURCE_CHANGESET)
2623 AC_SUBST(MOZ_INCLUDE_SOURCE_INFO)
2625 dnl If we have any service that uploads data (and requires data submission
2626 dnl policy alert), set MOZ_DATA_REPORTING.
2627 dnl We need SUBST for build system and DEFINE for xul preprocessor.
2628 if test -n "$MOZ_TELEMETRY_REPORTING" || test -n "$MOZ_SERVICES_HEALTHREPORT" || test -n "$MOZ_CRASHREPORTER" || test -n "$MOZ_NORMANDY"; then
2629 MOZ_DATA_REPORTING=1
2630 AC_DEFINE(MOZ_DATA_REPORTING)
2631 AC_SUBST(MOZ_DATA_REPORTING)
2635 AC_SUBST(WIN32_REDIST_DIR)
2636 AC_SUBST(WIN_UCRT_REDIST_DIR)
2638 dnl Echo the CFLAGS to remove extra whitespace.
2640 $_COMPILATION_CFLAGS \
2644 $_WARNINGS_CXXFLAGS \
2645 $_COMPILATION_CXXFLAGS \
2648 COMPILE_CFLAGS=`echo \
2652 COMPILE_CXXFLAGS=`echo \
2653 $_DEFINES_CXXFLAGS \
2657 $_WARNINGS_HOST_CFLAGS \
2658 $_COMPILATION_HOST_CFLAGS \
2661 HOST_CXXFLAGS=`echo \
2662 $_WARNINGS_HOST_CXXFLAGS \
2663 $_COMPILATION_HOST_CXXFLAGS \
2666 AC_SUBST(MOZ_SYSTEM_PNG)
2668 AC_SUBST_LIST(MOZ_PNG_CFLAGS)
2669 AC_SUBST_LIST(MOZ_PNG_LIBS)
2671 HOST_CMFLAGS="-x objective-c -fobjc-exceptions"
2672 HOST_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
2673 OS_COMPILE_CMFLAGS="-x objective-c -fobjc-exceptions"
2674 OS_COMPILE_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
2675 if test "$MOZ_WIDGET_TOOLKIT" = uikit; then
2676 OS_COMPILE_CMFLAGS="$OS_COMPILE_CMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
2677 OS_COMPILE_CMMFLAGS="$OS_COMPILE_CMMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
2679 AC_SUBST(HOST_CMFLAGS)
2680 AC_SUBST(HOST_CMMFLAGS)
2681 AC_SUBST(OS_COMPILE_CMFLAGS)
2682 AC_SUBST(OS_COMPILE_CMMFLAGS)
2685 OS_CXXFLAGS="$CXXFLAGS"
2686 OS_CPPFLAGS="$CPPFLAGS"
2687 OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
2688 OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
2689 OS_LDFLAGS="$LDFLAGS"
2691 AC_SUBST_LIST(OS_CFLAGS)
2692 AC_SUBST_LIST(OS_CXXFLAGS)
2693 AC_SUBST_LIST(OS_CPPFLAGS)
2694 AC_SUBST_LIST(OS_COMPILE_CFLAGS)
2695 AC_SUBST_LIST(OS_COMPILE_CXXFLAGS)
2696 AC_SUBST_LIST(OS_LDFLAGS)
2701 AC_SUBST_LIST(HOST_CFLAGS)
2702 AC_SUBST_LIST(HOST_CPPFLAGS)
2703 AC_SUBST_LIST(HOST_CXXFLAGS)
2704 AC_SUBST(HOST_LDFLAGS)
2705 AC_SUBST_LIST(HOST_OPTIMIZE_FLAGS)
2706 AC_SUBST(HOST_BIN_SUFFIX)
2708 AC_SUBST(TARGET_XPCOM_ABI)
2709 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
2710 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1)
2711 AC_SUBST(HAVE_X86_AVX2)
2712 AC_SUBST(HAVE_ALTIVEC)
2714 AC_SUBST(DSO_LDOPTS)
2715 AC_SUBST(BIN_SUFFIX)
2717 AC_SUBST(WIN32_CONSOLE_EXE_LDFLAGS)
2718 AC_SUBST(WIN32_GUI_EXE_LDFLAGS)
2720 AC_SUBST(MOZ_DEVTOOLS)
2722 AC_SUBST(MOZ_PACKAGE_JSSHELL)
2726 dnl Host JavaScript runtime, if any, to use during cross compiles.
2729 AC_SUBST(NSS_EXTRA_SYMBOLS_FILE)
2731 if test -n "$COMPILE_ENVIRONMENT"; then
2732 AC_CHECK_FUNCS(posix_fadvise posix_fallocate)
2734 dnl Check for missing components
2735 if test "$MOZ_X11"; then
2736 dnl ====================================================
2737 dnl = Check if X headers exist
2738 dnl ====================================================
2739 _SAVE_CFLAGS=$CFLAGS
2740 CFLAGS="$CFLAGS $XCFLAGS"
2744 #include <X11/Xlib.h>
2745 #include <X11/Intrinsic.h>
2746 #include <X11/extensions/XShm.h>
2750 if ((dpy = XOpenDisplay(NULL)) == NULL) {
2751 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
2755 [ AC_MSG_ERROR([Can't find X headers (install libxt-dev (Debian/Ubuntu), libXt-devel (Fedora), or xorg-x11-libXt-devel (SuSE)).]) ])
2756 CFLAGS="$_SAVE_CFLAGS"
2758 if test -n "$MISSING_X"; then
2759 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
2764 fi # COMPILE_ENVIRONMENT
2766 dnl Set various defines and substitutions
2767 dnl ========================================================
2769 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK" ; then
2770 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
2771 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
2772 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
2773 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
2774 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
2775 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
2776 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
2777 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
2780 AC_SUBST(MOZ_DEV_EDITION)
2781 if test -n "$MOZ_DEV_EDITION"; then
2782 AC_DEFINE(MOZ_DEV_EDITION)
2785 if test "$MOZ_DEBUG" -o "$DEVELOPER_OPTIONS"; then
2789 if test -n "$A11Y_LOG"; then
2793 dnl Spit out some output
2794 dnl ========================================================
2796 # Avoid using obsolete NSPR features
2797 AC_DEFINE(NO_NSPR_10_SUPPORT)
2799 MOZ_CREATE_CONFIG_STATUS()
2801 rm -fr confdefs* $ac_clean_files