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 ========================================================
53 dnl Set the minimum version of toolkit libs used by mozilla
54 dnl ========================================================
56 # 2_26 is the earliest version we can set GLIB_VERSION_MIN_REQUIRED.
57 # The macro won't be used when compiling with earlier versions anyway.
58 GLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26
62 GDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_4
64 STARTUP_NOTIFICATION_VERSION=0.8
68 dnl Set various checks
69 dnl ========================================================
72 dnl Initialize the Pthread test variables early so they can be
73 dnl overridden by each platform.
74 dnl ========================================================
78 LDFLAGS="$LDFLAGS $LINKER_LDFLAGS"
80 if test "$COMPILE_ENVIRONMENT"; then
82 fi # COMPILE_ENVIRONMENT
85 *-android*|*-linuxandroid*)
88 AC_PATH_PROG(OBJCOPY,objcopy)
98 AC_SUBST(ANDROID_PACKAGE_NAME)
101 dnl ========================================================
102 dnl Checks for compilers.
103 dnl ========================================================
105 if test "$COMPILE_ENVIRONMENT"; then
107 if test "$target" != "$host"; then
113 # Work around the conftest.exe access problem on Windows
118 MOZ_PATH_PROGS(AS, $AS as, $CC)
119 AC_CHECK_PROGS(STRIP, strip, :)
120 AC_CHECK_PROGS(OTOOL, otool, :)
123 if test -n "$MOZ_WINCONSOLE"; then
124 AC_DEFINE(MOZ_WINCONSOLE)
129 dnl ========================================================
130 dnl Special win32 checks
131 dnl ========================================================
137 if test "$GCC" != "yes"; then
138 # Check to see if we are really running in a msvc environemnt
141 # Make sure compilers are valid
142 CFLAGS="$CFLAGS -nologo"
143 CXXFLAGS="$CXXFLAGS -TP -nologo"
146 AC_TRY_COMPILE([#include <stdio.h>],
147 [ printf("Hello World\n"); ],,
148 AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
151 AC_TRY_COMPILE([#include <new.h>],
152 [ unsigned *test = new unsigned(42); ],,
153 AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
157 _MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
160 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
161 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
162 AC_DEFINE(_USE_MATH_DEFINES) # Otherwise MSVC's math.h doesn't #define M_PI.
165 MSVC_C_RUNTIME_DLL=vcruntime140.dll
166 MSVC_CXX_RUNTIME_DLL=msvcp140.dll
168 # -Zc:sizedDealloc- disables C++14 global sized deallocation (see bug 1160146)
169 CXXFLAGS="$CXXFLAGS -Zc:sizedDealloc-"
171 if test -n "$WIN_UCRT_REDIST_DIR"; then
172 if test ! -d "$WIN_UCRT_REDIST_DIR"; then
173 AC_MSG_ERROR([Invalid Windows UCRT Redist directory: ${WIN_UCRT_REDIST_DIR}])
175 WIN_UCRT_REDIST_DIR=`cd "$WIN_UCRT_REDIST_DIR" && pwd -W`
178 AC_SUBST(MSVC_C_RUNTIME_DLL)
179 AC_SUBST(MSVC_CXX_RUNTIME_DLL)
181 AC_DEFINE(HAVE_SEH_EXCEPTIONS)
183 if test -n "$WIN32_REDIST_DIR"; then
184 if test ! -d "$WIN32_REDIST_DIR"; then
185 AC_MSG_ERROR([Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}])
187 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd -W`
190 # Check linker version, except in lld builds
195 _LD_FULL_VERSION=`"${LINKER}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
196 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
197 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
198 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
205 unset _MSVC_VER_FILTER
208 STL_FLAGS="-I${DIST}/stl_wrappers"
209 CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0"
210 CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0"
212 # Check w32api version
213 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
214 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
215 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
216 AC_TRY_COMPILE([#include <w32api.h>],
217 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
218 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
219 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
220 #error "test failed."
222 , [ res=yes ], [ res=no ])
223 AC_MSG_RESULT([$res])
224 if test "$res" != "yes"; then
225 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
227 # strsafe.h on mingw uses macros for function deprecation that pollutes namespace
228 # causing problems with local implementations with the same name.
229 AC_DEFINE(STRSAFE_NO_DEPRECATE)
232 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
233 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
234 # Require OS features provided by IE 8.0 (Win7)
235 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0800)
240 if test -n "$_WIN32_MSVC"; then
242 SKIP_COMPILER_CHECKS=1
243 SKIP_LIBRARY_CHECKS=1
245 # Since we're skipping compiler and library checks, hard-code
248 AC_DEFINE(HAVE_ISATTY)
251 fi # COMPILE_ENVIRONMENT
256 AC_SUBST_LIST(STL_FLAGS)
257 AC_SUBST(WRAP_STL_INCLUDES)
259 dnl ========================================================
260 dnl Checks for programs.
261 dnl ========================================================
262 if test "$COMPILE_ENVIRONMENT"; then
268 fi # COMPILE_ENVIRONMENT
270 dnl ========================================================
271 dnl set the defaults first
272 dnl ========================================================
273 MOZ_USER_DIR=".mozilla"
275 MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib"
279 dnl Configure platform-specific CPU architecture compiler options.
280 dnl ==============================================================
281 if test "$COMPILE_ENVIRONMENT"; then
283 fi # COMPILE_ENVIRONMENT
285 dnl ========================================================
286 dnl Android libstdc++
287 dnl ========================================================
290 if test "$COMPILE_ENVIRONMENT"; then
292 fi # COMPILE_ENVIRONMENT
294 dnl ========================================================
295 dnl Suppress Clang Argument Warnings
296 dnl ========================================================
297 WARNINGS_CFLAGS="$_WARNINGS_CFLAGS"
298 if test -n "${CLANG_CC}${CLANG_CL}"; then
299 WARNINGS_CFLAGS="-Qunused-arguments $WARNINGS_CFLAGS"
300 CPPFLAGS="-Qunused-arguments ${CPPFLAGS}"
302 if test -n "${CLANG_CXX}${CLANG_CL}"; then
303 _WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}"
306 if test -n "$COMPILE_ENVIRONMENT"; then
310 dnl ========================================================
311 dnl Add optional and non-optional hardening flags
312 dnl ========================================================
314 CFLAGS="$CFLAGS $MOZ_HARDENING_CFLAGS"
315 CPPFLAGS="$CPPFLAGS $MOZ_HARDENING_CFLAGS"
316 CXXFLAGS="$CXXFLAGS $MOZ_HARDENING_CFLAGS"
317 LDFLAGS="$LDFLAGS $MOZ_HARDENING_LDFLAGS"
319 dnl ========================================================
320 dnl GNU specific defaults
321 dnl ========================================================
322 if test "$GNU_CC"; then
326 SSSE3_FLAGS="-mssse3"
327 # FIXME: Let us build with strict aliasing. bug 414641.
328 CFLAGS="$CFLAGS -fno-strict-aliasing"
331 if test "$OS_ARCH" != "WINNT" -o -z "$CLANG_CC"; then
332 DSO_PIC_CFLAGS='-fPIC'
333 ASFLAGS="$ASFLAGS -fPIC"
336 AC_MSG_CHECKING([for --noexecstack option to as])
338 CFLAGS="$CFLAGS -Wa,--noexecstack"
339 AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
340 [ASFLAGS="$ASFLAGS -Wa,--noexecstack"],
343 AC_MSG_CHECKING([for -z noexecstack option to ld])
344 _SAVE_LDFLAGS=$LDFLAGS
345 LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
346 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
348 LDFLAGS=$_SAVE_LDFLAGS)
350 AC_MSG_CHECKING([for -z text option to ld])
351 _SAVE_LDFLAGS=$LDFLAGS
352 LDFLAGS="$LDFLAGS -Wl,-z,text"
353 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
355 LDFLAGS=$_SAVE_LDFLAGS)
357 AC_MSG_CHECKING([for -z relro option to ld])
358 _SAVE_LDFLAGS=$LDFLAGS
359 LDFLAGS="$LDFLAGS -Wl,-z,relro"
360 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
362 LDFLAGS=$_SAVE_LDFLAGS)
364 AC_MSG_CHECKING([for -z nocopyreloc option to ld])
365 _SAVE_LDFLAGS=$LDFLAGS
366 LDFLAGS="$LDFLAGS -Wl,-z,nocopyreloc"
367 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
369 LDFLAGS=$_SAVE_LDFLAGS)
371 AC_MSG_CHECKING([for -Bsymbolic-functions option to ld])
372 _SAVE_LDFLAGS=$LDFLAGS
373 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
374 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
376 LDFLAGS=$_SAVE_LDFLAGS)
378 AC_MSG_CHECKING([for --build-id=sha1 option to ld])
379 _SAVE_LDFLAGS=$LDFLAGS
380 LDFLAGS="$LDFLAGS -Wl,--build-id=sha1"
381 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
383 LDFLAGS=$_SAVE_LDFLAGS)
385 AC_MSG_CHECKING([for --ignore-unresolved-symbol option to ld])
386 HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=
387 _SAVE_LDFLAGS=$LDFLAGS
388 LDFLAGS="$LDFLAGS -Wl,--ignore-unresolved-symbol,environ"
389 AC_TRY_LINK(,,AC_MSG_RESULT([yes])
390 [HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=1],
392 LDFLAGS=$_SAVE_LDFLAGS
394 # Check for -mssse3 on $CC
395 AC_MSG_CHECKING([if toolchain supports -mssse3 option])
396 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=
398 CFLAGS="$CFLAGS -mssse3"
399 AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes])
400 [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1],
404 # Check for -msse4.1 on $CC
405 AC_MSG_CHECKING([if toolchain supports -msse4.1 option])
406 HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=
408 CFLAGS="$CFLAGS -msse4.1"
409 AC_TRY_COMPILE([asm ("pmulld %xmm6,%xmm0");],,AC_MSG_RESULT([yes])
410 [HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1],
414 case "${CPU_ARCH}" in
416 AC_MSG_CHECKING(for x86 AVX2 asm support in compiler)
418 [asm volatile ("vpermq \$0xd8,%ymm0,%ymm0 \n");],
419 result="yes", result="no")
420 AC_MSG_RESULT("$result")
421 if test "$result" = "yes"; then
427 AC_MSG_CHECKING([whether we can enable AltiVec support])
430 CFLAGS="$CFLAGS -maltivec"
431 AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
439 if test "$GCC_USE_GNU_LD"; then
440 # Some tools like ASan use a runtime library that is only
441 # linked against executables, so we must allow undefined
442 # symbols for shared objects in some cases.
443 if test -z "$MOZ_ASAN$MOZ_MSAN$MOZ_UBSAN$MOZ_TSAN$FUZZING_INTERFACES"; then
444 # Don't allow undefined symbols in libraries
445 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
447 # BSDs need `environ' exposed for posix_spawn (bug 753046)
449 DragonFly|FreeBSD|NetBSD|OpenBSD)
450 if test -n "$HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED"; then
451 DSO_LDOPTS="$DSO_LDOPTS -Wl,--ignore-unresolved-symbol,environ"
453 DSO_LDOPTS="$DSO_LDOPTS -Wl,--warn-unresolved-symbols"
460 _DEFINES_CFLAGS="-include $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
461 _USE_CPP_INCLUDE_FLAG=1
463 ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS"
466 if test "$GNU_CXX"; then
467 # FIXME: Let us build with strict aliasing. bug 414641.
468 CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing"
470 _DEFINES_CXXFLAGS="-DMOZILLA_CLIENT -include $_objdir/mozilla-config.h"
471 _USE_CPP_INCLUDE_FLAG=1
474 # For profiling builds keep the symbol information
475 if test "$MOZ_PROFILING" -a -z "$STRIP_FLAGS"; then
477 Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
478 STRIP_FLAGS="--strip-debug"
483 dnl ========================================================
485 dnl ========================================================
487 if test "$MOZ_DMD"; then
488 if test "${CPU_ARCH}" = "arm"; then
489 CFLAGS="$CFLAGS -funwind-tables"
490 CXXFLAGS="$CXXFLAGS -funwind-tables"
494 dnl ========================================================
495 dnl System overrides of the defaults for host
496 dnl ========================================================
499 if test -n "$_WIN32_MSVC"; then
500 HOST_CFLAGS="$HOST_CFLAGS -nologo"
502 HOST_CFLAGS="$HOST_CFLAGS -mwindows"
504 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN -DWIN32 -D_WIN32 -D_CRT_SECURE_NO_WARNINGS"
505 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
508 case "${host_cpu}" in
510 if test -n "$_WIN32_MSVC"; then
511 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
515 if test -n "$_WIN32_MSVC"; then
516 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
518 HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
524 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX"
525 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
528 *-linux*|*-kfreebsd*-gnu|*-gnu*)
529 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
530 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
534 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
535 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
539 dnl ========================================================
540 dnl System overrides of the defaults for target
541 dnl ========================================================
545 MOZ_OPTIMIZE_FLAGS="-O3"
546 CXXFLAGS="$CXXFLAGS -stdlib=libc++"
548 STRIP_FLAGS="$STRIP_FLAGS -x -S"
549 # Ensure that if we're targeting iOS an SDK was provided.
550 AC_CACHE_CHECK(for iOS target,
552 [AC_TRY_COMPILE([#include <TargetConditionals.h>
553 #if !(TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)
557 ac_cv_ios_target="yes",
558 ac_cv_ios_target="no")])
559 if test "$ac_cv_ios_target" = "yes" -a -z $MOZ_IOS; then
560 AC_MSG_ERROR([targeting iOS but not using an iOS SDK?])
562 if test -z "$MOZ_IOS"; then
563 # The ExceptionHandling framework is needed for Objective-C exception
564 # logging code in nsObjCExceptions.h. Currently we only use that in debug
566 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling";
569 dnl DTrace and -dead_strip don't interact well. See bug 403132.
570 dnl ===================================================================
571 if test "x$enable_dtrace" = "xyes"; then
572 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
574 dnl check for the presence of the -dead_strip linker flag
575 AC_MSG_CHECKING([for -dead_strip option to ld])
576 _SAVE_LDFLAGS=$LDFLAGS
577 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
578 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
579 if test -n "$_HAVE_DEAD_STRIP" ; then
581 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
586 LDFLAGS=$_SAVE_LDFLAGS
589 MOZ_FIX_LINK_PATHS="-Wl,-executable_path,${DIST}/bin"
592 *-android*|*-linuxandroid*)
593 if test "$COMPILE_ENVIRONMENT"; then
597 MOZ_GFX_OPTIMIZE_MOBILE=1
598 if test -z "$CLANG_CC"; then
599 MOZ_OPTIMIZE_FLAGS="-freorder-blocks -fno-reorder-functions -Os"
601 # From https://github.com/android-ndk/ndk/issues/133#issuecomment-308549264
602 # -Oz is smaller than -Os on clang.
603 MOZ_OPTIMIZE_FLAGS="-Oz"
604 # Disable the outliner, which causes performance regressions, and is
605 # enabled on some platforms at -Oz.
606 if test -z "$MOZ_LTO"; then
607 DISABLE_OUTLINER="-mno-outline"
609 CFLAGS="$CFLAGS $DISABLE_OUTLINER"
610 AC_TRY_COMPILE(,,[MOZ_OPTIMIZE_FLAGS="$MOZ_OPTIMIZE_FLAGS $DISABLE_OUTLINER"])
611 CFLAGS="$_SAVE_CFLAGS"
613 DISABLE_OUTLINER="-Wl,-plugin-opt=-enable-machine-outliner=never"
614 _SAVE_LDFLAGS=$LDFLAGS
615 LDFLAGS="$LDFLAGS $MOZ_LTO_LDFLAGS $DISABLE_OUTLINER"
616 AC_TRY_LINK(,,[MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS $DISABLE_OUTLINER"])
617 LDFLAGS="$_SAVE_LDFLAGS"
623 if test "$GNU_CC" -o "$GNU_CXX"; then
624 MOZ_PGO_OPTIMIZE_FLAGS="-O3"
625 if test -n "$MOZ_DEBUG"; then
626 MOZ_OPTIMIZE_FLAGS="-Os"
628 MOZ_OPTIMIZE_FLAGS="-O2"
630 if test -z "$CLANG_CC"; then
631 MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS"
635 case "${target_cpu}" in
637 CFLAGS="$CFLAGS -mieee"
638 CXXFLAGS="$CXXFLAGS -mieee"
645 # certain versions of cygwin's makedepend barf on the
646 # #include <string> vs -I./dist/include/string issue so don't use it
647 if test -n "$GNU_CC" -o -n "$CLANG_CC"; then
648 # $GNU_CC will match gcc and clang; while $CLANG_CC will match only clang
649 if test -z "$CLANG_CC"; then
650 AC_MSG_ERROR(Firefox cannot be built with mingw-gcc and requires a mingw-clang toolchain to work)
654 # Use temp file for windres (bug 213281)
655 RCFLAGS='-O coff --use-temp-file'
656 # mingw doesn't require kernel32, user32, and advapi32 explicitly
657 LIBS="$LIBS -luuid -lusp10 -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32"
660 MOZ_OPTIMIZE_FLAGS="-O2"
662 WIN32_CONSOLE_EXE_LDFLAGS=-mconsole
663 WIN32_GUI_EXE_LDFLAGS=-mwindows
665 # Silence problematic clang warnings
666 CXXFLAGS="$CXXFLAGS -Wno-incompatible-ms-struct"
668 TARGET_COMPILER_ABI=msvc
669 RANLIB='echo not_ranlib'
670 STRIP='echo not_strip'
672 # aarch64 doesn't support subsystems below 6.02
673 if test "$CPU_ARCH" = "aarch64"; then
674 WIN32_SUBSYSTEM_VERSION=6.02
676 WIN32_SUBSYSTEM_VERSION=6.01
678 WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION
679 WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
680 DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
681 _USE_CPP_INCLUDE_FLAG=1
682 _DEFINES_CFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
683 _DEFINES_CXXFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
684 CFLAGS="$CFLAGS -W3 -Gy -Zc:inline"
685 CXXFLAGS="$CXXFLAGS -W3 -Gy -Zc:inline"
686 if test -z "$CLANG_CL"; then
687 CPPFLAGS="$CPPFLAGS -utf-8"
689 if test "$CPU_ARCH" = "x86"; then
690 dnl VS2012+ defaults to -arch:SSE2. We want to target nothing
691 dnl more recent, so set that explicitly here unless another
692 dnl target arch has already been set.
694 if test -z `echo $CFLAGS | grep -i [-/]arch:`; then
695 CFLAGS="$CFLAGS -arch:SSE2"
697 if test -z `echo $CXXFLAGS | grep -i [-/]arch:`; then
698 CXXFLAGS="$CXXFLAGS -arch:SSE2"
701 SSE_FLAGS="-arch:SSE"
702 SSE2_FLAGS="-arch:SSE2"
703 dnl MSVC allows the use of intrinsics without any flags
704 dnl and doesn't have a separate arch for SSSE3
705 SSSE3_FLAGS="-arch:SSE2"
707 dnl clang-cl requires appropriate flags to enable SSSE3 support
708 dnl on all architectures.
709 if test -n "$CLANG_CL"; then
710 SSSE3_FLAGS="-mssse3"
712 dnl VS2013+ supports -Gw for better linker optimizations.
713 dnl http://blogs.msdn.com/b/vcblog/archive/2013/09/11/introducing-gw-compiler-switch.aspx
714 dnl Disabled on ASan because it causes false-positive ODR violations.
715 if test -z "$MOZ_ASAN"; then
717 CXXFLAGS="$CXXFLAGS -Gw"
719 # String tail merging doesn't play nice with ASan's ODR checker.
720 LDFLAGS="$LDFLAGS -opt:nolldtailmerge"
722 if test -n "$CLANG_CL"; then
723 # XXX We should combine some of these with our generic GCC-style
726 # Suppress the clang-cl warning for the inline 'new' and 'delete' in mozalloc
727 CXXFLAGS="$CXXFLAGS -Wno-inline-new-delete"
728 # We use offsetof on non-POD objects all the time.
729 # We also suppress this warning on other platforms.
730 CXXFLAGS="$CXXFLAGS -Wno-invalid-offsetof"
731 # This warns for reasonable things like:
732 # enum { X = 0xffffffffU };
733 # which is annoying for IDL headers.
734 CXXFLAGS="$CXXFLAGS -Wno-microsoft-enum-value"
735 # This warns for cases that would be reached by the Microsoft
736 # #include rules, but also currently warns on cases that would
737 # *also* be reached by standard C++ include rules. That
738 # behavior doesn't seem useful, so we turn it off.
739 CXXFLAGS="$CXXFLAGS -Wno-microsoft-include"
740 # We normally error out on unknown pragmas, but since clang-cl
741 # claims to be MSVC, it would be difficult to add
742 # #if defined(_MSC_VER) && !defined(__clang__) everywhere we
743 # use such pragmas, so just ignore them.
744 CFLAGS="$CFLAGS -Wno-unknown-pragmas"
745 CXXFLAGS="$CXXFLAGS -Wno-unknown-pragmas"
746 # We get errors about various #pragma intrinsic directives from
747 # clang-cl, and we don't need to hear about those.
748 CFLAGS="$CFLAGS -Wno-ignored-pragmas"
749 CXXFLAGS="$CXXFLAGS -Wno-ignored-pragmas"
750 # clang-cl's Intrin.h marks things like _ReadWriteBarrier
751 # as __attribute((__deprecated__)). This is nice to know,
752 # but since we don't get the equivalent warning from MSVC,
753 # let's just ignore it.
754 CFLAGS="$CFLAGS -Wno-deprecated-declarations"
755 CXXFLAGS="$CXXFLAGS -Wno-deprecated-declarations"
756 # We use a function like:
757 # __declspec(noreturn) __inline void f() {}
758 # which -Winvalid-noreturn complains about. Again, MSVC seems
759 # OK with it, so let's silence the warning.
760 CFLAGS="$CFLAGS -Wno-invalid-noreturn"
761 CXXFLAGS="$CXXFLAGS -Wno-invalid-noreturn"
762 # Missing |override| on virtual function declarations isn't
763 # something that MSVC currently warns about.
764 CXXFLAGS="$CXXFLAGS -Wno-inconsistent-missing-override"
765 # We use -DHAS_EXCEPTIONS=0, which removes the |throw()|
766 # declaration on |operator delete(void*)|. However, clang-cl
767 # must internally declare |operator delete(void*)| differently,
768 # which causes this warning for virtually every file in the
769 # tree. clang-cl doesn't support -fno-exceptions or equivalent,
770 # so there doesn't seem to be any way to convince clang-cl to
771 # declare |delete| differently. Therefore, suppress this
773 CXXFLAGS="$CXXFLAGS -Wno-implicit-exception-spec-mismatch"
774 # At least one MSVC header and several headers in-tree have
775 # unused typedefs, so turn this on.
776 CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"
777 # jemalloc uses __declspec(allocator) as a profiler hint,
778 # which clang-cl doesn't understand.
779 CXXFLAGS="$CXXFLAGS -Wno-ignored-attributes"
780 # __attribute__((unused)) really means "might be unused" and
781 # we use it to avoid warnings about things that are unused
782 # in some compilation units, but used in many others. This
783 # warning insists on complaining about the latter case, which
784 # is annoying, and rather noisy.
785 CXXFLAGS="$CXXFLAGS -Wno-used-but-marked-unused"
787 # Silence VS2017 15.5+ TR1 deprecation warnings hit by older gtest versions
788 CXXFLAGS="$CXXFLAGS -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING"
789 LIBS="$LIBS user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib"
790 MOZ_DEBUG_LDFLAGS='-DEBUG'
791 # Use a higher optimization level for clang-cl, so we can come closer
792 # to MSVC's performance numbers (see bug 1443590).
793 if test -n "$CLANG_CL"; then
794 MOZ_OPTIMIZE_FLAGS='-O2'
796 MOZ_OPTIMIZE_FLAGS='-O1 -Oi'
799 LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE"
800 if test -z "$DEVELOPER_OPTIONS"; then
801 LDFLAGS="$LDFLAGS -RELEASE"
804 dnl Minimum reqiurement of Gecko is VS2015 or later which supports
805 dnl both SSSE3 and SSE4.1.
806 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1
807 HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1
808 dnl allow AVX2 code from VS2015
811 AC_DEFINE(WIN32_LEAN_AND_MEAN)
812 dnl See http://support.microsoft.com/kb/143208 to use STL
815 MOZ_USER_DIR="Mozilla"
819 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.])
825 if test -n "$GNU_CC"; then
826 CFLAGS="$CFLAGS -mstackrealign"
827 CXXFLAGS="$CXXFLAGS -mstackrealign"
828 LDFLAGS="$LDFLAGS -Wl,--large-address-aware"
830 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
831 LDFLAGS="$LDFLAGS -SAFESEH"
837 if test -n "$_WIN32_MSVC"; then
838 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
843 if test -n "$_WIN32_MSVC"; then
844 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:ARM64"
849 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
856 CFLAGS="$CFLAGS -Dunix"
857 CXXFLAGS="$CXXFLAGS -Dunix"
858 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
859 DSO_PIC_CFLAGS='-fPIC -DPIC'
861 MOZ_PROGRAM_LDFLAGS="$MOZ_PROGRAM_LDFLAGS -Wl,--export-dynamic"
863 DSO_PIC_CFLAGS='-fPIC -DPIC'
866 # This will fail on a.out systems prior to 1.5.1_ALPHA.
867 if test "$LIBRUNPATH"; then
868 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
873 if test -z "$X11BASE"; then
876 MOZ_FIX_LINK_PATHS="$MOZ_FIX_LINK_PATHS -Wl,-rpath-link,${X11BASE}/lib"
878 DSO_PIC_CFLAGS='-fPIC'
879 DSO_LDOPTS='-shared -fPIC'
880 if test "$LIBRUNPATH"; then
881 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
886 MOZ_FIX_LINK_PATHS="-L${DIST}/bin"
891 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
892 MOZ_OPTIMIZE_FLAGS="-O"
895 AC_SUBST_LIST(MMX_FLAGS)
896 AC_SUBST_LIST(SSE_FLAGS)
897 AC_SUBST_LIST(SSE2_FLAGS)
898 AC_SUBST_LIST(SSSE3_FLAGS)
901 if test -n "$MOZ_LINKER"; then
902 AC_DEFINE(MOZ_LINKER)
904 AC_CHECK_PROGS(XZ, xz)
907 if test -z "$COMPILE_ENVIRONMENT"; then
908 SKIP_COMPILER_CHECKS=1
909 SKIP_LIBRARY_CHECKS=1
914 fi # COMPILE_ENVIRONMENT
916 if test -z "$SKIP_COMPILER_CHECKS"; then
917 dnl Checks for typedefs, structures, and compiler characteristics.
918 dnl ========================================================
933 case "${OS_TARGET}" in
937 STL_FLAGS="-I${DIST}/stl_wrappers"
942 if test "$MOZ_BUILD_APP" = "tools/crashreporter"; then
946 dnl Checks for header files.
947 dnl ========================================================
950 bitrig*|dragonfly*|freebsd*|openbsd*)
951 # for stuff like -lXshm
952 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
956 dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
957 AC_CACHE_CHECK(for sockaddr_in.sin_len,
958 ac_cv_sockaddr_in_sin_len,
959 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
960 #include <sys/types.h>
962 #include <netinet/in.h>
963 struct sockaddr_in x;
964 void *foo = (void*) &x.sin_len;],
966 [ac_cv_sockaddr_in_sin_len=true],
967 [ac_cv_sockaddr_in_sin_len=false])])
968 if test "$ac_cv_sockaddr_in_sin_len" = true ; then
969 AC_DEFINE(HAVE_SIN_LEN)
970 dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
971 AC_DEFINE(HAVE_SCONN_LEN)
974 AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
975 ac_cv_sockaddr_in6_sin6_len,
976 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
977 #include <sys/types.h>
979 #include <netinet/in.h>
980 struct sockaddr_in6 x;
981 void *foo = (void*) &x.sin6_len;],
983 [ac_cv_sockaddr_in6_sin6_len=true],
984 [ac_cv_sockaddr_in6_sin6_len=false])])
985 if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
986 AC_DEFINE(HAVE_SIN6_LEN)
989 AC_CACHE_CHECK(for sockaddr.sa_len,
990 ac_cv_sockaddr_sa_len,
991 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
992 #include <sys/types.h>
994 #include <sys/socket.h>
996 void *foo = (void*) &x.sa_len;],
998 [ac_cv_sockaddr_sa_len=true],
999 [ac_cv_sockaddr_sa_len=false])])
1000 if test "$ac_cv_sockaddr_sa_len" = true ; then
1001 AC_DEFINE(HAVE_SA_LEN)
1004 MOZ_ARG_ENABLE_BOOL(dtrace,
1005 [ --enable-dtrace build with dtrace support if available (default=no)],
1006 [enable_dtrace="yes"],)
1007 if test "x$enable_dtrace" = "xyes"; then
1008 MOZ_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
1009 if test -n "$HAVE_DTRACE"; then
1010 AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
1012 AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
1015 AC_SUBST(HAVE_DTRACE)
1017 dnl Checks for libraries.
1018 dnl ========================================================
1019 AC_CHECK_LIB(c_r, gethostbyname_r)
1021 dnl We don't want to link with libdl even if it's present on OS X, since
1022 dnl it's not used and not part of the default installation. OS/2 has dlfcn
1024 dnl We don't want to link against libm or libpthread on Darwin since
1025 dnl they both are just symlinks to libSystem and explicitly linking
1026 dnl against libSystem causes issues when debugging (see bug 299601).
1031 AC_SEARCH_LIBS(dlopen, dl,
1032 MOZ_CHECK_HEADER(dlfcn.h,
1033 AC_DEFINE(HAVE_DLOPEN)))
1037 _SAVE_CFLAGS="$CFLAGS"
1038 CFLAGS="$CFLAGS -D_GNU_SOURCE"
1039 AC_CHECK_FUNCS(dladdr memmem)
1040 CFLAGS="$_SAVE_CFLAGS"
1042 if test ! "$GNU_CXX"; then
1043 AC_CHECK_LIB(C, demangle)
1046 AC_CHECK_LIB(socket, socket)
1049 XLIBS="$X_EXTRA_LIBS"
1051 dnl ========================================================
1052 dnl Checks for X libraries.
1053 dnl Ordering is important.
1054 dnl Xt is dependent upon SM as of X11R6
1055 dnl ========================================================
1056 if test -n "$MOZ_X11"; then
1057 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
1058 _SAVE_LDFLAGS="$LDFLAGS"
1060 LDFLAGS="$XLDFLAGS $LDFLAGS"
1061 AC_CHECK_LIB(X11, XDrawLines, [XLIBS="-lX11 $XLIBS"],
1062 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
1063 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
1064 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
1066 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
1067 unset ac_cv_lib_Xt_XtFree
1068 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
1069 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
1070 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
1071 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
1074 dnl ========================================================
1076 dnl ========================================================
1077 AC_CHECK_LIB(xcb, xcb_connect, [XLIBS="-lxcb $XLIBS"],
1078 [MISSING_X="$MISSING_X -lxcb"], $XLIBS)
1079 AC_CHECK_LIB(xcb-shm, xcb_shm_query_version, [XLIBS="-lxcb-shm $XLIBS"],
1080 [MISSING_X="$MISSING_X -lxcb-shm"], $XLIBS)
1081 AC_CHECK_LIB(X11-xcb, XGetXCBConnection, [XLIBS="-lX11-xcb $XLIBS"],
1082 [MISSING_X="$MISSING_X -lX11-xcb"], $XLIBS)
1084 LDFLAGS="$_SAVE_LDFLAGS"
1088 AC_SUBST_LIST(XCFLAGS)
1089 AC_SUBST_LIST(XLDFLAGS)
1090 AC_SUBST_LIST(XLIBS)
1091 AC_SUBST_LIST(XEXT_LIBS)
1092 AC_SUBST_LIST(XT_LIBS)
1094 dnl ========================================================
1095 dnl = pthread support
1096 dnl = Start by checking whether the system support pthreads
1097 dnl ========================================================
1098 case "$target_os" in
1103 AC_CHECK_LIB(pthreads, pthread_create,
1104 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
1105 AC_CHECK_LIB(pthread, pthread_create,
1106 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
1107 AC_CHECK_LIB(c_r, pthread_create,
1108 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
1109 AC_CHECK_LIB(c, pthread_create,
1118 dnl ========================================================
1119 dnl Do the platform specific pthread hackery
1120 dnl ========================================================
1121 if test "$MOZ_USE_PTHREADS"x != x
1124 dnl See if -pthread is supported.
1127 ac_cv_have_dash_pthread=no
1128 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
1129 echo 'int main() { return 0; }' | cat > conftest.c
1130 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
1131 if test $? -eq 0; then
1132 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
1133 ac_cv_have_dash_pthread=yes
1134 case "$target_os" in
1136 # Freebsd doesn't use -pthread for compiles, it uses them for linking
1139 CFLAGS="$CFLAGS -pthread"
1140 CXXFLAGS="$CXXFLAGS -pthread"
1146 AC_MSG_RESULT($ac_cv_have_dash_pthread)
1149 dnl See if -pthreads is supported.
1151 ac_cv_have_dash_pthreads=no
1152 if test "$ac_cv_have_dash_pthread" = "no"; then
1153 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
1154 echo 'int main() { return 0; }' | cat > conftest.c
1155 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
1156 if test $? -eq 0; then
1157 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
1158 ac_cv_have_dash_pthreads=yes
1159 CFLAGS="$CFLAGS -pthreads"
1160 CXXFLAGS="$CXXFLAGS -pthreads"
1164 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
1169 AC_DEFINE(_REENTRANT)
1170 AC_DEFINE(_THREAD_SAFE)
1171 dnl -pthread links in -lpthread, so don't specify it explicitly.
1172 if test "$ac_cv_have_dash_pthread" = "yes"; then
1173 _PTHREAD_LDFLAGS="-pthread"
1177 *-*-openbsd*|*-*-bsdi*)
1178 AC_DEFINE(_REENTRANT)
1179 AC_DEFINE(_THREAD_SAFE)
1180 dnl -pthread links in -lc_r, so don't specify it explicitly.
1181 if test "$ac_cv_have_dash_pthread" = "yes"; then
1182 _PTHREAD_LDFLAGS="-pthread"
1186 *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
1187 AC_DEFINE(_REENTRANT)
1191 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
1192 AC_SUBST(MOZ_USE_PTHREADS)
1193 MOZ_CHECK_HEADERS(pthread.h)
1197 dnl Checks for library functions.
1198 dnl ========================================================
1199 AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize gmtime_r localtime_r arc4random arc4random_buf mallinfo gettid lchown setpriority strerror syscall)
1201 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
1202 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
1203 ac_cv_clock_monotonic,
1204 [for libs in "" -lrt; do
1206 _SAVE_CFLAGS="$CFLAGS"
1208 CFLAGS="$CFLAGS $DSO_PIC_CFLAGS"
1209 dnl clock_gettime is available on OSX since 10.12, so depending on MACOSX_DEPLOYMENT_TARGET,
1210 dnl we should or not be able to use it. To detect if we can, we need to make the
1211 dnl availability attribute strict, so that compilation fails when the target is < 10.12.
1212 AC_TRY_LINK([#define availability(os, ...) availability(os, strict, __VA_ARGS)
1214 [ struct timespec ts;
1215 clock_gettime(CLOCK_MONOTONIC, &ts); ],
1216 ac_cv_clock_monotonic=$libs
1219 ac_cv_clock_monotonic=no)
1221 CFLAGS="$_SAVE_CFLAGS"
1223 if test "$ac_cv_clock_monotonic" != "no"; then
1224 HAVE_CLOCK_MONOTONIC=1
1225 REALTIME_LIBS=$ac_cv_clock_monotonic
1226 AC_DEFINE(HAVE_CLOCK_MONOTONIC)
1227 AC_SUBST(HAVE_CLOCK_MONOTONIC)
1228 AC_SUBST_LIST(REALTIME_LIBS)
1231 dnl Turn on warnings-as-errors to prevent implicit declaration of
1232 dnl pthread_cond_timedwait_monotonic_np, which can cause this test to
1233 dnl inadvertently pass even if the function does not really exist.
1234 _SAVE_CFLAGS="$CFLAGS"
1235 CFLAGS="$CFLAGS $WARNINGS_AS_ERRORS"
1236 AC_CACHE_CHECK(for pthread_cond_timedwait_monotonic_np,
1237 ac_cv_pthread_cond_timedwait_monotonic_np,
1238 AC_TRY_LINK([#include <pthread.h>],
1239 [pthread_cond_timedwait_monotonic_np(0, 0, 0);],
1240 ac_cv_pthread_cond_timewait_monotonic_np=yes,
1241 ac_cv_pthread_cond_timewait_monotonic_np=no))
1242 if test "$ac_cv_pthread_cond_timewait_monotonic_np" != "no"; then
1243 AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC)
1245 CFLAGS=$_SAVE_CFLAGS
1249 ac_cv_func_res_ninit,
1250 [if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then
1251 dnl no need for res_ninit() on NetBSD and OpenBSD
1252 ac_cv_func_res_ninit=no
1256 #define _BSD_SOURCE 1
1258 #include <sys/types.h>
1259 #include <netinet/in.h>
1260 #include <arpa/nameser.h>
1263 [int foo = res_ninit(&_res);],
1264 [ac_cv_func_res_ninit=yes],
1265 [ac_cv_func_res_ninit=no])
1269 if test "$ac_cv_func_res_ninit" = "yes"; then
1270 AC_DEFINE(HAVE_RES_NINIT)
1271 dnl must add the link line we do something as foolish as this... dougt
1273 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
1274 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
1279 dnl **********************
1280 dnl *** va_copy checks ***
1281 AC_CACHE_CHECK([for an implementation of va_copy()],
1283 [AC_TRY_COMPILE([#include <stdarg.h>
1285 void f (int i, ...) {
1286 va_list args1, args2;
1287 va_start (args1, i);
1288 va_copy (args2, args1);
1289 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1291 va_end (args1); va_end (args2);
1293 [f(0, 42); return 0],
1294 [ac_cv_va_copy=yes],
1298 AC_CACHE_CHECK([whether va_list can be copied by value],
1300 [AC_TRY_COMPILE([#include <stdarg.h>
1302 void f (int i, ...) {
1303 va_list args1, args2;
1304 va_start (args1, i);
1306 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1308 va_end (args1); va_end (args2);
1310 [f(0, 42); return 0],
1311 [ac_cv_va_val_copy=yes],
1312 [ac_cv_va_val_copy=no],
1315 if test "x$ac_cv_va_copy" = "xyes"; then
1316 AC_DEFINE(VA_COPY, va_copy)
1317 AC_DEFINE(HAVE_VA_COPY)
1320 if test "x$ac_cv_va_val_copy" = "xno"; then
1321 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
1324 dnl ===================================================================
1325 dnl ========================================================
1326 dnl Put your C++ language/feature checks below
1327 dnl ========================================================
1331 if test "$GNU_CC"; then
1332 if test "$CPU_ARCH" = "arm" ; then
1333 AC_CACHE_CHECK(for ARM EABI,
1337 #if defined(__ARM_EABI__)
1340 #error Not ARM EABI.
1343 ac_cv_gcc_arm_eabi="yes",
1344 ac_cv_gcc_arm_eabi="no")])
1345 if test "$ac_cv_gcc_arm_eabi" = "yes"; then
1347 ARM_ABI_PREFIX=eabi-
1349 ARM_ABI_PREFIX=oabi-
1353 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
1356 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
1357 # We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
1358 # enabled, the linker in xcode 4.1 will crash. Without this it would crash when
1360 _SAVE_LDFLAGS=$LDFLAGS
1361 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
1362 AC_CACHE_CHECK(for __thread keyword for TLS variables,
1363 ac_cv_thread_keyword,
1364 [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
1365 [return tlsIsMainThread;],
1366 ac_cv_thread_keyword=yes,
1367 ac_cv_thread_keyword=no)])
1368 LDFLAGS=$_SAVE_LDFLAGS
1369 # The custom dynamic linker doesn't support TLS variables
1371 if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
1372 # mips builds fail with TLS variables because of a binutils bug.
1374 # OpenBSD doesn't have TLS support, and the test succeeds with clang++
1379 *-android*|*-linuxandroid*)
1386 AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
1392 dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments.
1393 if test -n "$MOZ_LINKER"; then
1394 if test "$CPU_ARCH" = arm; then
1395 dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments
1396 if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
1397 LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
1398 _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
1402 dnl gold emits wrong sysv-style elf hash tables when building both sysv and
1403 dnl style tables. https://sourceware.org/bugzilla/show_bug.cgi?id=13597
1404 dnl Since the linker only understands the sysv ones, no need to build the
1405 dnl gnu style tables anyways.
1406 LDFLAGS="$LDFLAGS -Wl,--hash-style=sysv"
1409 dnl End of C++ language/feature checks
1412 dnl ========================================================
1413 dnl = Internationalization checks
1414 dnl ========================================================
1416 dnl Internationalization and Locale support is different
1417 dnl on various UNIX platforms. Checks for specific i18n
1418 dnl features go here.
1420 AC_HAVE_FUNCS(localeconv)
1422 fi # ! SKIP_COMPILER_CHECKS
1424 if test -n "${COMPILE_ENVIRONMENT}"; then
1429 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
1430 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
1431 AC_DEFINE_UNQUOTED(TARGET_XPCOM_ABI, ["${TARGET_XPCOM_ABI}"])
1434 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
1435 dnl features that Windows actually does support.
1437 if test -n "$SKIP_COMPILER_CHECKS"; then
1438 dnl Windows has malloc.h
1439 AC_DEFINE(MALLOC_H, [<malloc.h>])
1440 AC_DEFINE(HAVE_FORCEINLINE)
1441 AC_DEFINE(HAVE_LOCALECONV)
1442 fi # SKIP_COMPILER_CHECKS
1444 dnl Mozilla specific options
1445 dnl ========================================================
1446 dnl The macros used for command line options
1447 dnl are defined in build/autoconf/altoptions.m4.
1449 dnl ========================================================
1451 dnl = Check for external package dependencies
1453 dnl ========================================================
1454 MOZ_ARG_HEADER(External Packages)
1456 case "$OS_TARGET" in
1457 WINNT|Darwin|Android)
1467 dnl ========================================================
1468 dnl system libevent Support
1469 dnl ========================================================
1470 MOZ_ARG_WITH_STRING(system-libevent,
1471 [ --with-system-libevent[=PFX]
1472 Use system libevent [installed at prefix PFX]],
1473 LIBEVENT_DIR=$withval)
1475 _SAVE_CFLAGS=$CFLAGS
1476 _SAVE_LDFLAGS=$LDFLAGS
1478 if test "$LIBEVENT_DIR" = yes; then
1479 PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
1480 MOZ_SYSTEM_LIBEVENT=1,
1483 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
1484 MOZ_SYSTEM_LIBEVENT=
1485 elif test -z "$MOZ_SYSTEM_LIBEVENT"; then
1486 CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
1487 LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
1488 MOZ_CHECK_HEADER(event.h,
1489 [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
1490 AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
1492 AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
1493 AC_CHECK_LIB(event, event_init,
1494 [MOZ_SYSTEM_LIBEVENT=1
1495 MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
1496 MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
1497 [MOZ_SYSTEM_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
1499 CFLAGS=$_SAVE_CFLAGS
1500 LDFLAGS=$_SAVE_LDFLAGS
1503 AC_SUBST(MOZ_SYSTEM_LIBEVENT)
1505 dnl ========================================================
1506 dnl = If NSS was not detected in the system,
1507 dnl = use the one in the source tree (mozilla/security/nss)
1508 dnl ========================================================
1510 MOZ_ARG_WITH_BOOL(system-nss,
1511 [ --with-system-nss Use system installed NSS],
1514 if test -n "$_USE_SYSTEM_NSS"; then
1515 AM_PATH_NSS(3.47, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
1518 NSS_CFLAGS="$NSS_CFLAGS -I${DIST}/include/nss"
1519 if test -z "$MOZ_SYSTEM_NSS"; then
1520 case "${OS_ARCH}" in
1521 # Only few platforms have been tested with GYP
1522 WINNT|Darwin|Linux|DragonFly|FreeBSD|NetBSD|OpenBSD|SunOS)
1525 AC_MSG_ERROR([building in-tree NSS is not supported on this platform. Use --with-system-nss])
1530 dnl system ZLIB support
1531 dnl ========================================================
1532 MOZ_ZLIB_CHECK([1.2.3])
1534 if test -z "$SKIP_LIBRARY_CHECKS"; then
1536 dnl ========================================================
1537 dnl system PNG Support
1538 dnl ========================================================
1539 MOZ_ARG_WITH_STRING(system-png,
1540 [ --with-system-png[=PFX]
1541 Use system libpng [installed at prefix PFX]],
1544 _SAVE_CFLAGS=$CFLAGS
1545 _SAVE_LDFLAGS=$LDFLAGS
1547 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
1548 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
1549 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
1551 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
1554 AC_CHECK_LIB(png, png_get_valid, [MOZ_SYSTEM_PNG=1 MOZ_PNG_LIBS="-lpng"],
1555 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
1556 AC_CHECK_LIB(png, png_get_acTL, ,
1557 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]))
1559 if test "$MOZ_SYSTEM_PNG" = 1; then
1560 AC_TRY_COMPILE([ #include <stdio.h>
1561 #include <sys/types.h>
1563 [ #if PNG_LIBPNG_VER < $MOZPNG
1564 #error "Insufficient libpng version ($MOZPNG required)."
1566 #ifndef PNG_UINT_31_MAX
1567 #error "Insufficient libpng version."
1570 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
1572 CFLAGS=$_SAVE_CFLAGS
1573 LDFLAGS=$_SAVE_LDFLAGS
1576 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_SYSTEM_PNG" = 1; then
1577 MOZ_PNG_CFLAGS="-I${PNG_DIR}/include"
1578 MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}"
1581 fi # SKIP_LIBRARY_CHECKS
1583 dnl ========================================================
1587 dnl ========================================================
1589 MOZ_ARG_HEADER(Application)
1591 ENABLE_SYSTEM_EXTENSION_DIRS=1
1592 MOZ_BRANDING_DIRECTORY=
1593 MOZ_OFFICIAL_BRANDING=
1594 MOZ_AUTH_EXTENSION=1
1595 if test "$MOZ_IOS"; then
1598 MOZ_PREF_EXTENSIONS=1
1600 MOZ_UNIVERSALCHARDET=1
1605 MOZ_USE_NATIVE_POPUP_WINDOWS=
1606 MOZ_EXCLUDE_HYPHENATION_DICTIONARIES=
1608 MOZ_BINARY_EXTENSIONS=
1611 case "$target_os" in
1614 AC_DEFINE(NS_ENABLE_TSF)
1618 # Optional Firefox for Android partner distribution directory.
1619 MOZ_ARG_WITH_STRING(android-distribution-directory,
1620 [ --with-android-distribution-directory=dir
1621 Optional Firefox for Android partner distribution directory.],
1622 MOZ_ANDROID_DISTRIBUTION_DIRECTORY=$withval)
1624 if test -n "$MOZ_ANDROID_DISTRIBUTION_DIRECTORY"; then
1625 # A distribution directory must have an assets/distribution directory.
1626 # See https://wiki.mozilla.org/Mobile/Distribution_Files.
1627 if test ! -d "$MOZ_ANDROID_DISTRIBUTION_DIRECTORY/assets/distribution" ; then
1628 AC_MSG_ERROR([--with-android-distribution-directory does not contain assets/distribution;
1629 (looked for ${MOZ_ANDROID_DISTRIBUTION_DIRECTORY}/assets/distribution).])
1632 AC_SUBST(MOZ_ANDROID_DISTRIBUTION_DIRECTORY)
1634 dnl ========================================================
1635 dnl = Trademarked Branding
1636 dnl ========================================================
1637 MOZ_ARG_ENABLE_BOOL(official-branding,
1638 [ --enable-official-branding
1639 Enable Official mozilla.org Branding
1640 Do not distribute builds with
1641 --enable-official-branding unless you have
1642 permission to use trademarks per
1643 http://www.mozilla.org/foundation/trademarks/ .],
1644 MOZ_OFFICIAL_BRANDING=1,
1645 MOZ_OFFICIAL_BRANDING=)
1647 # Allow the application to influence configure with a confvars.sh script.
1648 AC_MSG_CHECKING([if app-specific confvars.sh exists])
1649 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
1650 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
1651 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
1656 # Allow influencing configure with a defines.sh script.
1657 . "${srcdir}/build/defines.sh"
1659 # If we're not building a release build, define EARLY_BETA_OR_EARLIER if it is
1661 if test "$BUILDING_RELEASE"; then
1662 # Override value in defines.sh, if any
1663 EARLY_BETA_OR_EARLIER=
1664 elif test "$EARLY_BETA_OR_EARLIER"; then
1665 AC_DEFINE(EARLY_BETA_OR_EARLIER)
1667 AC_SUBST(EARLY_BETA_OR_EARLIER)
1669 # Allow someone to change MOZ_APP_NAME and MOZ_APP_BASENAME in mozconfig
1670 MOZ_ARG_WITH_STRING(app-name,
1671 [--with-app-name=APPNAME sets MOZ_APP_NAME to APPNAME],
1672 WITH_APP_NAME=$withval,
1675 if test -n "$WITH_APP_NAME" ; then
1676 MOZ_APP_NAME="$WITH_APP_NAME"
1679 MOZ_ARG_WITH_STRING(app-basename,
1680 [--with-app-basename=BASENAME sets MOZ_APP_BASENAME to BASENAME],
1681 WITH_APP_BASENAME=$withval,
1684 if test -n "$WITH_APP_BASENAME" ; then
1685 MOZ_APP_BASENAME="$WITH_APP_BASENAME"
1688 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
1689 # that haven't made a confvars.sh yet. Don't add new stuff here, use
1691 case "$MOZ_BUILD_APP" in
1693 AC_DEFINE(MOZ_PHOENIX)
1697 # Graphene is a desktop runtime for running applications with a HTML UI.
1698 if test -n "$MOZ_GRAPHENE"; then
1699 AC_DEFINE(MOZ_GRAPHENE)
1702 AC_SUBST(MOZ_PHOENIX)
1704 dnl ========================================================
1705 dnl Ensure Android SDK and build-tools versions depending on
1707 dnl ========================================================
1709 case "$MOZ_BUILD_APP" in
1715 dnl ========================================================
1717 dnl = Toolkit Options
1719 dnl ========================================================
1720 MOZ_ARG_HEADER(Toolkit Options)
1722 dnl ========================================================
1723 dnl = Enable the toolkit as needed =
1724 dnl ========================================================
1726 case "$MOZ_WIDGET_TOOLKIT" in
1729 LDFLAGS="$LDFLAGS -framework Cocoa"
1730 # Use -Wl as a trick to avoid -framework and framework names from
1731 # being separated by AC_SUBST_LIST.
1732 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'
1734 CFLAGS="$CFLAGS $TK_CFLAGS"
1735 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
1736 MOZ_USER_DIR="Mozilla"
1737 MOZ_FS_LAYOUT=bundle
1741 LDFLAGS="$LDFLAGS -framework UIKit"
1743 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'
1744 CFLAGS="$CFLAGS $TK_CFLAGS"
1745 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
1746 MOZ_USER_DIR="Mozilla"
1747 MOZ_FS_LAYOUT=bundle
1752 if test "$OS_TARGET" = Darwin; then
1753 LDFLAGS="$LDFLAGS -lobjc"
1756 dnl there are a lot of tests on MOZ_ENABLE_GTK below, that are more convenient
1757 dnl to keep that way than testing against MOZ_WIDGET_TOOLKIT
1758 case "$MOZ_WIDGET_TOOLKIT" in
1764 if test "$COMPILE_ENVIRONMENT"; then
1765 if test "$MOZ_WIDGET_TOOLKIT" = gtk; then
1766 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)
1767 MOZ_GTK3_CFLAGS="-I${_topsrcdir}/widget/gtk/compat-gtk3 $MOZ_GTK3_CFLAGS"
1768 TK_CFLAGS=$MOZ_GTK3_CFLAGS
1769 TK_LIBS=$MOZ_GTK3_LIBS
1770 dnl GDK_VERSION_MIN_REQUIRED is not set here as GDK3 deprecated warnings
1771 dnl are suppressed by widget/gtk/compat-gtk3/gdk/gdkversionmacros.h.
1772 AC_DEFINE_UNQUOTED(GDK_VERSION_MAX_ALLOWED,$GDK_VERSION_MAX_ALLOWED)
1773 GLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_32
1775 if test "$MOZ_ENABLE_GTK"; then
1776 if test "$MOZ_X11"; then
1777 GDK_PACKAGES=gdk-x11-2.0
1779 AC_DEFINE_UNQUOTED(GLIB_VERSION_MIN_REQUIRED,$GLIB_VERSION_MIN_REQUIRED)
1780 AC_DEFINE_UNQUOTED(GLIB_VERSION_MAX_ALLOWED,$GLIB_VERSION_MAX_ALLOWED)
1782 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_PACKAGES)
1783 MOZ_GTK2_CFLAGS="-I${_topsrcdir}/widget/gtk/compat $MOZ_GTK2_CFLAGS"
1785 fi # COMPILE_ENVIRONMENT
1787 AC_SUBST(MOZ_FS_LAYOUT)
1789 dnl ========================================================
1790 dnl = startup-notification support module
1791 dnl ========================================================
1793 if test "$MOZ_ENABLE_GTK"
1795 MOZ_ENABLE_STARTUP_NOTIFICATION=
1797 MOZ_ARG_ENABLE_BOOL(startup-notification,
1798 [ --enable-startup-notification
1799 Enable startup-notification support (default: disabled) ],
1800 MOZ_ENABLE_STARTUP_NOTIFICATION=force,
1801 MOZ_ENABLE_STARTUP_NOTIFICATION=)
1802 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
1804 PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
1805 libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
1806 [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
1807 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
1809 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
1811 MOZ_ENABLE_STARTUP_NOTIFICATION=
1815 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
1816 AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
1819 TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
1821 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
1823 AC_SUBST_LIST(TK_CFLAGS)
1824 AC_SUBST_LIST(TK_LIBS)
1826 dnl ========================================================
1828 dnl = Components & Features
1830 dnl ========================================================
1831 MOZ_ARG_HEADER(Components and Features)
1833 AC_SUBST(MOZ_OFFICIAL_BRANDING)
1834 if test -n "$MOZ_OFFICIAL_BRANDING"; then
1835 if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
1836 AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
1838 MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
1839 AC_DEFINE(MOZ_OFFICIAL_BRANDING)
1843 MOZ_ARG_WITH_STRING(branding,
1844 [ --with-branding=dir Use branding from the specified directory.],
1845 MOZ_BRANDING_DIRECTORY=$withval)
1847 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
1848 if test -z "$REAL_BRANDING_DIRECTORY"; then
1849 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
1852 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
1853 . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
1854 elif test -f "${EXTERNAL_SOURCE_DIR}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
1855 . "${EXTERNAL_SOURCE_DIR}/$REAL_BRANDING_DIRECTORY/configure.sh"
1858 AC_SUBST(MOZ_BRANDING_DIRECTORY)
1860 dnl ========================================================
1861 dnl = Distribution ID
1862 dnl ========================================================
1863 MOZ_ARG_WITH_STRING(distribution-id,
1864 [ --with-distribution-id=ID
1865 Set distribution-specific id (default=org.mozilla)],
1866 [ val=`echo $withval`
1867 MOZ_DISTRIBUTION_ID="$val"])
1869 if test -z "$MOZ_DISTRIBUTION_ID"; then
1870 MOZ_DISTRIBUTION_ID="org.mozilla"
1873 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
1874 AC_SUBST(MOZ_DISTRIBUTION_ID)
1876 dnl ========================================================
1877 dnl = libproxy support
1878 dnl ========================================================
1880 if test "$MOZ_ENABLE_GTK"
1882 MOZ_ENABLE_LIBPROXY=
1884 MOZ_ARG_ENABLE_BOOL(libproxy,
1885 [ --enable-libproxy Enable libproxy support ],
1886 MOZ_ENABLE_LIBPROXY=1,
1887 MOZ_ENABLE_LIBPROXY=)
1889 if test "$MOZ_ENABLE_LIBPROXY"
1891 PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
1892 AC_DEFINE(MOZ_ENABLE_LIBPROXY)
1895 AC_SUBST(MOZ_ENABLE_LIBPROXY)
1897 dnl ========================================================
1899 dnl ========================================================
1901 if test "$MOZ_ENABLE_GTK"
1905 MOZ_ARG_DISABLE_BOOL(dbus,
1906 [ --disable-dbus Disable dbus support ],
1910 if test "$MOZ_ENABLE_DBUS"
1912 PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
1913 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
1914 AC_DEFINE(MOZ_ENABLE_DBUS)
1917 AC_SUBST(MOZ_ENABLE_DBUS)
1919 dnl =========================================================
1920 dnl = Whether to exclude hyphenations files in the build
1921 dnl =========================================================
1922 if test -n "$MOZ_EXCLUDE_HYPHENATION_DICTIONARIES"; then
1923 AC_DEFINE(MOZ_EXCLUDE_HYPHENATION_DICTIONARIES)
1926 AC_TRY_COMPILE([#include <linux/ethtool.h>],
1927 [ struct ethtool_cmd cmd; cmd.speed_hi = 0; ],
1928 MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI=1)
1930 AC_SUBST(MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI)
1932 if test -n "$MOZ_WEBRTC"; then
1933 if test -n "$MOZ_X11"; then
1934 MOZ_WEBRTC_X11_LIBS="-lXext -lXdamage -lXfixes -lXcomposite"
1938 AC_SUBST_LIST(MOZ_WEBRTC_X11_LIBS)
1940 dnl ========================================================
1941 dnl = Apple platform decoder support
1942 dnl ========================================================
1943 if test "$COMPILE_ENVIRONMENT"; then
1944 if test -n "$MOZ_APPLEMEDIA"; then
1945 # hack in frameworks for fmp4 - see bug 1029974
1946 # We load VideoToolbox and CoreMedia dynamically, so they don't appear here.
1947 LDFLAGS="$LDFLAGS -framework AudioToolbox"
1948 dnl Verify CoreMedia is available.
1949 AC_CHECK_HEADERS([CoreMedia/CoreMedia.h VideoToolbox/VideoToolbox.h], [],
1950 [AC_MSG_ERROR([MacOS X 10.9 SDK or later is required])])
1952 fi # COMPILE_ENVIRONMENT
1954 dnl ========================================================
1955 dnl = Handle dependent MEDIA defines
1956 dnl ========================================================
1959 AC_DEFINE(MOZ_WEBM_ENCODER)
1960 AC_SUBST(MOZ_WEBM_ENCODER)
1962 dnl ========================================================
1964 dnl ========================================================
1966 MOZ_ARG_DISABLE_BOOL(negotiateauth,
1967 [ --disable-negotiateauth Disable GSS-API negotiation ],
1968 MOZ_AUTH_EXTENSION=,
1969 MOZ_AUTH_EXTENSION=1 )
1971 if test -n "$MOZ_IOS" -a -n "$MOZ_AUTH_EXTENSION"; then
1972 AC_MSG_ERROR([negotiateauth is not supported on iOS.])
1975 dnl ========================================================
1976 dnl Pref extensions (autoconfig)
1977 dnl ========================================================
1978 MOZ_ARG_DISABLE_BOOL(pref-extensions,
1979 [ --disable-pref-extensions
1980 Disable pref extensions such as autoconfig],
1981 MOZ_PREF_EXTENSIONS=,
1982 MOZ_PREF_EXTENSIONS=1 )
1984 dnl ========================================================
1985 dnl Searching of system directories for extensions.
1986 dnl Note: this switch is meant to be used for test builds
1987 dnl whose behavior should not depend on what happens to be
1988 dnl installed on the local machine.
1989 dnl ========================================================
1990 MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
1991 [ --disable-system-extension-dirs
1992 Disable searching system- and account-global
1993 directories for extensions of any kind; use
1994 only profile-specific extension directories],
1995 ENABLE_SYSTEM_EXTENSION_DIRS=,
1996 ENABLE_SYSTEM_EXTENSION_DIRS=1 )
1997 if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
1998 AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
2001 dnl ========================================================
2002 dnl = Universalchardet
2003 dnl ========================================================
2004 MOZ_ARG_DISABLE_BOOL(universalchardet,
2005 [ --disable-universalchardet
2006 Disable universal encoding detection],
2007 MOZ_UNIVERSALCHARDET=,
2008 MOZ_UNIVERSALCHARDET=1 )
2010 dnl ========================================================
2012 dnl ========================================================
2014 if test "$COMPILE_ENVIRONMENT" ; then
2016 dnl Moved gamepad platform check to moz.build, linux header check still needed here.
2017 if test "$OS_TARGET" = "Linux"; then
2018 MOZ_CHECK_HEADER([linux/joystick.h])
2019 if test "$ac_cv_header_linux_joystick_h" != "yes"; then
2020 AC_MSG_ERROR([Can't find header linux/joystick.h, needed for gamepad support. Please install Linux kernel headers.])
2024 fi # COMPILE_ENVIRONMENT
2027 dnl ========================================================
2028 dnl = Breakpad crash reporting (on by default on supported platforms)
2029 dnl ========================================================
2032 i?86-*-mingw*|x86_64-*-mingw*|aarch64-*-mingw*)
2035 i?86-apple-darwin*|x86_64-apple-darwin*)
2036 if test -z "$MOZ_IOS"; then
2040 *-android*|*-linuxandroid*)
2041 dnl Android/arm is arm-unknown-linux-androideabi, so android condition should
2042 dnl be before Linux condition
2045 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
2046 if test "$MOZ_ENABLE_GTK"; then
2052 MOZ_ARG_DISABLE_BOOL(crashreporter,
2053 [ --disable-crashreporter Disable breakpad crash reporting],
2054 [MOZ_CRASHREPORTER=],
2055 [MOZ_CRASHREPORTER=F # Force enable breakpad])
2057 if test "$OS_ARCH" != "$HOST_OS_ARCH" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "Darwin" -a "$MOZ_WIDGET_TOOLKIT" != "android"; then
2058 if test "$MOZ_CRASHREPORTER" = F; then
2059 AC_MSG_ERROR([Cannot --enable-crashreporter, as breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH.])
2064 if test -n "$MOZ_CRASHREPORTER"; then
2065 AC_DEFINE(MOZ_CRASHREPORTER)
2067 if test "$OS_TARGET" = "Linux" && \
2068 test -z "$SKIP_LIBRARY_CHECKS"; then
2069 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
2072 if test "$OS_ARCH" = "WINNT"; then
2073 if test -z "$HAVE_64BIT_BUILD" -a -n "$COMPILE_ENVIRONMENT"; then
2074 MOZ_CRASHREPORTER_INJECTOR=1
2075 AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
2080 dnl ========================================================
2081 dnl = Enable compilation of specific extension modules
2082 dnl ========================================================
2084 MOZ_ARG_ENABLE_STRING(extensions,
2085 [ --enable-extensions Enable extensions],
2086 [ for option in `echo $enableval | sed 's/,/ /g'`; do
2087 if test "$option" = "yes" -o "$option" = "all"; then
2088 AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
2089 elif test "$option" = "no" -o "$option" = "none"; then
2091 elif test "$option" = "default"; then
2092 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
2093 elif test `echo "$option" | grep -c \^-` != 0; then
2094 option=`echo $option | sed 's/^-//'`
2095 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
2097 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
2100 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
2102 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
2103 dnl when trying to build a nonexistent extension.
2104 for extension in $MOZ_EXTENSIONS; do
2105 if test ! -d "${srcdir}/extensions/${extension}"; then
2106 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
2110 if test -n "$MOZ_USE_NATIVE_POPUP_WINDOWS"; then
2111 AC_DEFINE(MOZ_USE_NATIVE_POPUP_WINDOWS)
2114 # Avoid defining MOZ_ENABLE_CAIRO_FT on Windows platforms because
2115 # "cairo-ft-font.c" includes <dlfcn.h>, which only exists on posix platforms
2116 if test -n "$MOZ_TREE_FREETYPE" -a "$OS_TARGET" != WINNT; then
2117 MOZ_ENABLE_CAIRO_FT=1
2118 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
2119 CAIRO_FT_CFLAGS="-I$_topsrcdir/modules/freetype2/include"
2120 AC_SUBST_LIST(CAIRO_FT_CFLAGS)
2123 AC_CHECK_PROGS(WGET, wget, "")
2126 dnl ========================================================
2128 dnl ========================================================
2130 if test "$MOZ_IOS"; then
2134 MOZ_ARG_DISABLE_BOOL(updater,
2135 [ --disable-updater Disable building of updater],
2139 if test -n "$MOZ_UPDATER"; then
2140 AC_DEFINE(MOZ_UPDATER)
2143 dnl ========================================================
2144 dnl parental controls (for Windows Vista)
2145 dnl ========================================================
2146 MOZ_ARG_DISABLE_BOOL(parental-controls,
2147 [ --disable-parental-controls
2148 Do not build parental controls],
2149 MOZ_DISABLE_PARENTAL_CONTROLS=1,
2150 MOZ_DISABLE_PARENTAL_CONTROLS=)
2151 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
2152 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
2155 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
2157 dnl ========================================================
2158 dnl = Disable smartcard support
2159 dnl ========================================================
2160 if test -n "$MOZ_NO_SMART_CARDS"; then
2161 AC_DEFINE(MOZ_NO_SMART_CARDS)
2163 AC_SUBST(MOZ_NO_SMART_CARDS)
2165 dnl ========================================================
2166 dnl = Sandboxing support
2167 dnl ========================================================
2168 if test -n "$MOZ_TSAN" -o -n "$MOZ_ASAN"; then
2169 # Bug 1182565: TSan conflicts with sandboxing on Linux.
2170 # Bug 1287971: LSan also conflicts with sandboxing on Linux.
2178 MOZ_ARG_DISABLE_BOOL(sandbox,
2179 [ --disable-sandbox Disable sandboxing support],
2183 case "$OS_TARGET" in
2184 WINNT|Darwin|OpenBSD)
2190 # Linux sandbox is only available on x86 and x86_64.
2197 # Only enable the sandbox by default on Linux, OpenBSD, macOS, and Windows
2202 if test -n "$MOZ_SANDBOX"; then
2203 AC_DEFINE(MOZ_SANDBOX)
2206 AC_SUBST(MOZ_SANDBOX)
2209 dnl ========================================================
2211 dnl = Module specific options
2213 dnl ========================================================
2214 MOZ_ARG_HEADER(Individual module options)
2216 dnl ========================================================
2217 dnl Check for sqlite
2218 dnl ========================================================
2221 MOZ_ARG_ENABLE_BOOL(system-sqlite,
2222 [ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
2223 MOZ_SYSTEM_SQLITE=1,
2224 MOZ_SYSTEM_SQLITE= )
2226 if test -n "$MOZ_SYSTEM_SQLITE"
2228 dnl ============================
2229 dnl === SQLite Version check ===
2230 dnl ============================
2231 dnl Check to see if the system SQLite package is new enough.
2232 PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
2234 dnl ==============================
2235 dnl === SQLite fdatasync check ===
2236 dnl ==============================
2237 dnl Check to see if fdatasync is available
2238 AC_CHECK_FUNC(fdatasync)
2241 if test -n "$MOZ_SYSTEM_SQLITE"; then
2242 AC_DEFINE(MOZ_SYSTEM_SQLITE)
2244 AC_SUBST(MOZ_SYSTEM_SQLITE)
2246 dnl ========================================================
2247 dnl = Disable zipwriter
2248 dnl ========================================================
2249 MOZ_ARG_DISABLE_BOOL(zipwriter,
2250 [ --disable-zipwriter Disable zipwriter component],
2253 AC_SUBST(MOZ_ZIPWRITER)
2255 dnl ========================================================
2257 dnl = Feature options that require extra sources to be pulled
2259 dnl ========================================================
2260 dnl MOZ_ARG_HEADER(Features that require extra sources)
2262 dnl ========================================================
2264 dnl = Runtime debugging and Optimization Options
2266 dnl ========================================================
2267 MOZ_ARG_HEADER(Runtime debugging and Optimizations)
2269 dnl ========================================================
2270 dnl enable mobile optimizations
2271 dnl ========================================================
2272 MOZ_ARG_ENABLE_BOOL(mobile-optimize,
2273 [ --enable-mobile-optimize
2274 Enable mobile optimizations],
2275 MOZ_GFX_OPTIMIZE_MOBILE=1)
2277 AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
2279 if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
2280 # We ignore paint will resample on mobile for performance.
2281 # We may want to revisit this later.
2282 MOZ_IGNORE_PAINT_WILL_RESAMPLE=1
2284 AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
2285 AC_DEFINE(MOZ_IGNORE_PAINT_WILL_RESAMPLE)
2288 dnl ========================================================
2289 dnl = Enable code optimization. ON by default.
2290 dnl ========================================================
2292 # Use value from moz.configure if one is defined. Else use our computed
2294 if test -n "${MOZ_CONFIGURE_OPTIMIZE_FLAGS}"; then
2295 MOZ_OPTIMIZE_FLAGS=${MOZ_CONFIGURE_OPTIMIZE_FLAGS}
2298 if test "$COMPILE_ENVIRONMENT"; then
2299 if test -n "$MOZ_OPTIMIZE"; then
2300 AC_MSG_CHECKING([for valid C compiler optimization flags])
2301 _SAVE_CFLAGS=$CFLAGS
2302 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
2303 AC_TRY_COMPILE([#include <stdio.h>],
2304 [printf("Hello World\n");],
2307 AC_MSG_RESULT([$_results])
2308 if test "$_results" = "no"; then
2309 AC_MSG_ERROR([These compiler flags for C are invalid: $MOZ_OPTIMIZE_FLAGS])
2311 CFLAGS=$_SAVE_CFLAGS
2312 if test -n "$MOZ_LTO" -a -n "$CLANG_CC"; then
2313 # When using llvm-based LTO, non numeric optimization levels are
2314 # not supported by the linker, so force the linker to use -O2 (
2315 # which doesn't influence the level compilation units are actually
2317 case " $MOZ_OPTIMIZE_FLAGS " in
2318 *\ -Os\ *|*\ -Oz\ *)
2319 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -O2"
2324 fi # COMPILE_ENVIRONMENT
2326 AC_SUBST_LIST(MOZ_OPTIMIZE_FLAGS)
2327 AC_SUBST_LIST(MOZ_OPTIMIZE_LDFLAGS)
2328 AC_SUBST_LIST(MOZ_PGO_OPTIMIZE_FLAGS)
2330 dnl ========================================================
2331 dnl = Enable runtime logging
2332 dnl ========================================================
2333 AC_DEFINE(MOZ_LOGGING)
2334 AC_DEFINE(FORCE_PR_LOG)
2336 dnl ========================================================
2337 dnl = This will enable logging of addref, release, ctor, dtor.
2338 dnl ========================================================
2339 _ENABLE_LOGREFCNT=42
2340 MOZ_ARG_ENABLE_BOOL(logrefcnt,
2341 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
2342 _ENABLE_LOGREFCNT=1,
2343 _ENABLE_LOGREFCNT= )
2344 if test "$_ENABLE_LOGREFCNT" = "1"; then
2345 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
2346 elif test -z "$_ENABLE_LOGREFCNT"; then
2347 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
2350 dnl ========================================================
2351 dnl moz_dump_painting
2352 dnl ========================================================
2353 MOZ_ARG_ENABLE_BOOL(dump-painting,
2354 [ --enable-dump-painting Enable paint debugging.],
2355 MOZ_DUMP_PAINTING=1,
2356 MOZ_DUMP_PAINTING= )
2357 if test -n "$MOZ_DUMP_PAINTING"; then
2358 AC_DEFINE(MOZ_DUMP_PAINTING)
2359 AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
2361 if test -n "$MOZ_DEBUG"; then
2362 AC_DEFINE(MOZ_DUMP_PAINTING)
2365 case "${OS_TARGET}" in
2366 Android|WINNT|Darwin)
2367 MOZ_GLUE_IN_PROGRAM=
2370 dnl On !Android !Windows !OSX, we only want to link executables against mozglue
2371 MOZ_GLUE_IN_PROGRAM=1
2372 AC_DEFINE(MOZ_GLUE_IN_PROGRAM)
2376 dnl ========================================================
2377 dnl = Jemalloc build setup
2378 dnl ========================================================
2379 if test -z "$MOZ_MEMORY"; then
2382 if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
2383 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.])
2388 dnl The generic feature tests that determine how to compute ncpus are long and
2389 dnl complicated. Therefore, simply define special cpp variables for the
2390 dnl platforms we have special knowledge of.
2393 export MOZ_NO_DEBUG_RTL=1
2397 AC_SUBST(MOZ_GLUE_IN_PROGRAM)
2399 dnl ========================================================
2400 dnl = Enable using the clang plugin to build
2401 dnl ========================================================
2403 if test -n "$COMPILE_ENVIRONMENT"; then
2404 MOZ_CONFIG_CLANG_PLUGIN
2405 fi # COMPILE_ENVIRONMENT
2407 dnl ========================================================
2408 dnl = Enable stripping of libs & executables
2409 dnl ========================================================
2410 MOZ_ARG_ENABLE_BOOL(strip,
2411 [ --enable-strip Enable stripping of libs & executables ],
2415 dnl ========================================================
2416 dnl = Enable stripping of libs & executables when packaging
2417 dnl ========================================================
2418 MOZ_ARG_ENABLE_BOOL(install-strip,
2419 [ --enable-install-strip Enable stripping of libs & executables when packaging ],
2423 dnl ========================================================
2424 dnl = frontend JS debug mode
2425 dnl ========================================================
2427 MOZ_ARG_ENABLE_BOOL(debug-js-modules,
2428 [ --enable-debug-js-modules Enable debug mode for frontend JS libraries],
2432 AC_SUBST(DEBUG_JS_MODULES)
2434 dnl ========================================================
2436 dnl = Profiling and Instrumenting
2438 dnl ========================================================
2439 MOZ_ARG_HEADER(Profiling and Instrumenting)
2441 dnl ========================================================
2442 dnl = Offer a way to disable the startup cache
2443 dnl ========================================================
2445 MOZ_ARG_DISABLE_BOOL(startupcache,
2446 [ --disable-startupcache Disable startup cache ],
2447 MOZ_DISABLE_STARTUPCACHE=1,
2448 MOZ_DISABLE_STARTUPCACHE=)
2450 if test -n "$MOZ_DISABLE_STARTUPCACHE"; then
2451 AC_DEFINE(MOZ_DISABLE_STARTUPCACHE)
2453 AC_SUBST(MOZ_DISABLE_STARTUPCACHE)
2455 dnl ========================================================
2456 dnl = Support for demangling undefined symbols
2457 dnl ========================================================
2458 if test -z "$SKIP_LIBRARY_CHECKS"; then
2461 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
2465 # Demangle only for debug or DMD builds
2466 MOZ_DEMANGLE_SYMBOLS=
2467 if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$MOZ_DMD"; then
2468 MOZ_DEMANGLE_SYMBOLS=1
2469 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
2471 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
2473 dnl ========================================================
2474 dnl = Support for gcc stack unwinding (from gcc 3.3)
2475 dnl ========================================================
2476 if test -z "$SKIP_LIBRARY_CHECKS"; then
2479 MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
2483 dnl ========================================================
2485 dnl ========================================================
2487 MOZ_ARG_WITH_STRING(jitreport-granularity,
2488 [ --jitreport-granularity=N
2489 Default granularity at which to report JIT code
2492 1 - code ranges for whole functions only
2493 2 - per-line information
2494 3 - per-op information],
2495 JITREPORT_GRANULARITY=$withval,
2496 JITREPORT_GRANULARITY=3)
2498 AC_DEFINE_UNQUOTED(JS_DEFAULT_JITREPORT_GRANULARITY, $JITREPORT_GRANULARITY)
2500 dnl ========================================================
2504 dnl ========================================================
2505 MOZ_ARG_HEADER(Misc. Options)
2507 dnl ========================================================
2508 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
2509 dnl ========================================================
2510 MOZ_ARG_WITH_STRING(user-appdir,
2511 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
2512 [ val=`echo $withval`
2513 if echo "$val" | grep "\/" >/dev/null; then
2514 AC_MSG_ERROR("Homedir must be single relative path.")
2519 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
2521 if test -z "$SKIP_COMPILER_CHECKS"; then
2522 dnl ========================================================
2524 dnl = Compiler Options
2526 dnl ========================================================
2527 MOZ_ARG_HEADER(Compiler Options)
2529 dnl ========================================================
2530 dnl Check for gcc -pipe support
2531 dnl ========================================================
2532 AC_MSG_CHECKING([for -pipe support])
2533 if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
2534 dnl Any gcc that supports firefox supports -pipe.
2535 CFLAGS="$CFLAGS -pipe"
2536 CXXFLAGS="$CXXFLAGS -pipe"
2537 AC_MSG_RESULT([yes])
2542 fi # ! SKIP_COMPILER_CHECKS
2546 if test "$COMPILE_ENVIRONMENT"; then
2548 fi # COMPILE_ENVIRONMENT
2550 dnl ========================================================
2552 dnl = Static Build Options
2554 dnl ========================================================
2555 MOZ_ARG_HEADER(Static build options)
2557 if test -z "$MOZ_SYSTEM_ZLIB"; then
2558 if test -n "$JS_SHARED_LIBRARY" -o -n "$MOZ_LINKER"; then
2560 AC_DEFINE(ZLIB_IN_MOZGLUE)
2564 AC_SUBST(ZLIB_IN_MOZGLUE)
2566 dnl ========================================================
2568 dnl = Standalone module options
2570 dnl ========================================================
2571 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
2574 dnl ========================================================
2576 if test -z "$SKIP_PATH_CHECKS"; then
2577 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
2578 if test "$MOZ_ENABLE_GTK" ; then
2579 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
2584 if test -z "${GLIB_GMODULE_LIBS}" \
2585 -a -n "${GLIB_CONFIG}"\
2586 -a "${GLIB_CONFIG}" != no\
2588 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
2591 AC_SUBST_LIST(GLIB_GMODULE_LIBS)
2593 if test "$USE_FC_FREETYPE"; then
2594 if test "$COMPILE_ENVIRONMENT"; then
2595 dnl ========================================================
2596 dnl = Check for freetype2 functionality
2597 dnl ========================================================
2598 if test "$_HAVE_FREETYPE2" -a -z "$MOZ_TREE_FREETYPE"; then
2600 _SAVE_CFLAGS="$CFLAGS"
2601 LIBS="$LIBS $FT2_LIBS"
2602 CFLAGS="$CFLAGS $FT2_CFLAGS"
2604 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
2605 ac_cv_member_FT_Bitmap_Size_y_ppem,
2606 [AC_TRY_COMPILE([#include <ft2build.h>
2607 #include FT_FREETYPE_H],
2609 if (sizeof s.y_ppem) return 0;
2611 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
2612 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
2613 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
2614 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
2616 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
2618 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
2619 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
2620 [FT_Bitmap_Size structure includes y_ppem field])
2622 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table)
2625 CFLAGS="$_SAVE_CFLAGS"
2628 _SAVE_CPPFLAGS="$CPPFLAGS"
2629 CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
2630 MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
2631 [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
2632 CPPFLAGS="$_SAVE_CPPFLAGS"
2636 dnl ========================================================
2637 dnl Check if we need the 32-bit Linux SSE2 error dialog
2638 dnl ========================================================
2640 AC_SUBST(MOZ_LINUX_32_SSE2_STARTUP_ERROR)
2642 dnl ========================================================
2643 dnl Check for pixman and cairo
2644 dnl ========================================================
2647 MOZ_ARG_ENABLE_BOOL(system-cairo,
2648 [ --enable-system-cairo Obsolete: do not use this option],
2649 AC_MSG_ERROR(--enable-system-cairo is not supported),
2653 MOZ_ARG_ENABLE_BOOL(system-pixman,
2654 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
2656 MOZ_TREE_PIXMAN=force,
2659 if test "$MOZ_TREE_PIXMAN"; then
2660 AC_DEFINE(MOZ_TREE_PIXMAN)
2662 PKG_CHECK_MODULES(MOZ_PIXMAN, pixman-1 >= 0.19.2)
2665 MOZ_CAIRO_CFLAGS="-I${DIST}/include/cairo"
2666 AC_DEFINE(MOZ_TREE_CAIRO)
2668 if test "$OS_ARCH" = "WINNT"; then
2669 # For now we assume that we will have a uint64_t available through
2670 # one of the above headers or mozstdint.h.
2671 AC_DEFINE(HAVE_UINT64_T)
2674 # Define macros for cairo-features.h
2675 TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
2676 if test "$MOZ_X11"; then
2677 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
2678 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
2679 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
2681 if test "$_HAVE_FREETYPE2"; then
2682 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
2683 MOZ_ENABLE_CAIRO_FT=1
2684 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
2687 case "$MOZ_WIDGET_TOOLKIT" in
2689 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
2690 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
2691 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
2694 WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
2695 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
2696 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
2698 if test "$COMPILE_ENVIRONMENT"; then
2699 MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
2703 if test "$USE_FC_FREETYPE"; then
2704 FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
2706 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
2707 AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
2709 AC_SUBST(PS_SURFACE_FEATURE)
2710 AC_SUBST(SVG_SURFACE_FEATURE)
2711 AC_SUBST(XLIB_SURFACE_FEATURE)
2712 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
2713 AC_SUBST(QUARTZ_SURFACE_FEATURE)
2714 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
2715 AC_SUBST(WIN32_SURFACE_FEATURE)
2716 AC_SUBST(OS2_SURFACE_FEATURE)
2717 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
2718 AC_SUBST(FT_FONT_FEATURE)
2719 AC_SUBST(FC_FONT_FEATURE)
2720 AC_SUBST(WIN32_FONT_FEATURE)
2721 AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
2722 AC_SUBST(QUARTZ_FONT_FEATURE)
2723 AC_SUBST(PNG_FUNCTIONS_FEATURE)
2724 AC_SUBST(QT_SURFACE_FEATURE)
2725 AC_SUBST(TEE_SURFACE_FEATURE)
2727 if test "$MOZ_X11"; then
2728 MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
2731 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
2733 case "$MOZ_WIDGET_TOOLKIT" in
2735 TK_CFLAGS="$MOZ_CAIRO_CFLAGS $MOZ_PIXMAN_CFLAGS"
2736 TK_LIBS="$MOZ_CAIRO_LIBS $MOZ_PIXMAN_LIBS"
2740 AC_SUBST(MOZ_TREE_CAIRO)
2741 AC_SUBST_LIST(MOZ_CAIRO_CFLAGS)
2742 AC_SUBST_LIST(MOZ_CAIRO_LIBS)
2743 AC_SUBST_LIST(MOZ_CAIRO_OSLIBS)
2744 AC_SUBST(MOZ_TREE_PIXMAN)
2746 BINDGEN_SYSTEM_FLAGS="$_BINDGEN_CFLAGS $NSPR_CFLAGS $NSS_CFLAGS $MOZ_PIXMAN_CFLAGS $MOZ_CAIRO_CFLAGS"
2747 AC_SUBST(BINDGEN_SYSTEM_FLAGS)
2748 BINDGEN_SYSTEM_TOML_FLAGS="$BINDGEN_SYSTEM_FLAGS"
2749 AC_SUBST_TOML_LIST(BINDGEN_SYSTEM_TOML_FLAGS)
2751 dnl ========================================================
2753 dnl ========================================================
2754 MOZ_ARG_DISABLE_BOOL(xul,
2755 [ --disable-xul Disable XUL],
2757 if test "$MOZ_XUL"; then
2760 dnl remove extensions that require XUL
2761 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/irc//' -e 's/tasks//'`
2766 dnl ========================================================
2767 dnl necko configuration options
2768 dnl ========================================================
2771 dnl option to disable necko's wifi scanner
2774 if test "$MOZ_WIDGET_TOOLKIT"; then
2776 case "$OS_TARGET" in
2778 if test -z "$MOZ_IOS"; then
2782 DragonFly|FreeBSD|WINNT)
2793 MOZ_ARG_DISABLE_BOOL(necko-wifi,
2794 [ --disable-necko-wifi Disable necko wifi scanner],
2798 if test "$NECKO_WIFI"; then
2799 if test -z "$MOZ_ENABLE_DBUS" -a -n "$NECKO_WIFI_DBUS"; then
2800 AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi])
2802 AC_DEFINE(NECKO_WIFI)
2803 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_WIFI"
2805 AC_SUBST(NECKO_WIFI)
2806 AC_SUBST(NECKO_WIFI_DBUS)
2809 dnl option to disable cookies
2811 MOZ_ARG_DISABLE_BOOL(cookies,
2812 [ --disable-cookies Disable cookie support],
2815 AC_SUBST(NECKO_COOKIES)
2816 if test "$NECKO_COOKIES"; then
2817 AC_DEFINE(NECKO_COOKIES)
2818 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_COOKIES"
2821 dnl ========================================================
2823 dnl = Maintainer debug option (no --enable equivalent)
2825 dnl ========================================================
2828 AC_SUBST_LIST(ASFLAGS)
2832 AC_SUBST(MOZ_AUTH_EXTENSION)
2833 AC_SUBST(MOZ_PREF_EXTENSIONS)
2834 AC_SUBST_LIST(MOZ_DEBUG_LDFLAGS)
2835 AC_SUBST_LIST(WARNINGS_CFLAGS)
2836 AC_SUBST_SET(MOZ_EXTENSIONS)
2838 AC_SUBST(MOZ_UNIVERSALCHARDET)
2839 AC_SUBST(MOZ_SPELLCHECK)
2840 AC_SUBST(MOZ_ANDROID_ANR_REPORTER)
2841 AC_SUBST(MOZ_CRASHREPORTER)
2842 AC_SUBST(MOZ_CRASHREPORTER_INJECTOR)
2843 AC_SUBST(MOZ_STUB_INSTALLER)
2844 AC_SUBST(MOZ_UPDATER)
2846 AC_SUBST(MOZ_ANDROID_APPLICATION_CLASS)
2847 AC_SUBST(MOZ_ANDROID_BROWSER_INTENT_CLASS)
2848 AC_SUBST(MOZ_EXCLUDE_HYPHENATION_DICTIONARIES)
2849 AC_SUBST(ENABLE_STRIP)
2850 AC_SUBST(PKG_SKIP_STRIP)
2851 AC_SUBST(STRIP_FLAGS)
2852 AC_SUBST(INCREMENTAL_LINKER)
2854 AC_SUBST_LIST(MOZ_FIX_LINK_PATHS)
2856 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
2857 AC_SUBST(MOZ_LINKER_EXTRACT)
2859 if test -n "$MOZ_BINARY_EXTENSIONS"; then
2860 AC_DEFINE(MOZ_BINARY_EXTENSIONS)
2863 AC_SUBST(MOZ_REQUIRE_SIGNING)
2864 if test "$MOZ_REQUIRE_SIGNING" = 1; then
2865 AC_DEFINE(MOZ_REQUIRE_SIGNING)
2868 dnl ========================================================
2869 dnl = Mac bundle name prefix
2870 dnl ========================================================
2871 MOZ_ARG_WITH_STRING(macbundlename-prefix,
2872 [ --with-macbundlename-prefix=prefix
2873 Prefix for MOZ_MACBUNDLE_NAME],
2874 [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
2876 MOZ_MACBUNDLE_NAME=$MOZ_APP_DISPLAYNAME
2877 if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
2878 MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
2881 if test "$MOZ_DEBUG"; then
2882 MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME}Debug.app"
2884 MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
2886 AC_SUBST(MOZ_MACBUNDLE_NAME)
2888 dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
2889 # If the MOZ_MACBUNDLE_ID is defined in the configure.sh, use it
2890 # Otherwise, use MOZ_APP_DISPLAYNAME
2891 if test -z "$MOZ_MACBUNDLE_ID"; then
2892 MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr 'A-Z' 'a-z' | tr -dc 'a-z-'`
2894 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
2895 if test "$MOZ_DEBUG"; then
2896 MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
2899 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
2900 AC_SUBST(MOZ_MACBUNDLE_ID)
2902 dnl ========================================================
2903 dnl = Child Process Name for IPC
2904 dnl ========================================================
2905 if test "$MOZ_WIDGET_TOOLKIT" != "android"; then
2906 MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}"
2908 # We want to let Android unpack the file at install time, but it only does
2909 # so if the file is named libsomething.so. The lib/ path is also required
2910 # because the unpacked file will be under the lib/ subdirectory and will
2911 # need to be executed from that path.
2912 MOZ_CHILD_PROCESS_NAME="libplugin-container.so"
2914 MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/"
2915 MOZ_CHILD_PROCESS_BUNDLENAME="${MOZ_APP_DISPLAYNAME}CP"
2917 AC_SUBST(MOZ_CHILD_PROCESS_NAME)
2918 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE)
2919 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLENAME)
2921 # The following variables are available to branding and application
2922 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
2923 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
2924 # impacts profile location and user-visible fields.
2925 # - MOZ_APP_BASENAME: Typically stays consistent for multiple branded
2926 # versions of a given application (e.g. Aurora and Firefox both use
2927 # "Firefox"), but may vary for full rebrandings (e.g. Iceweasel). Used
2928 # for application.ini's "Name" field, which controls profile location in
2929 # the absence of a "Profile" field (see below), and various system
2930 # integration hooks (Unix remoting, Windows MessageWindow name, etc.)
2931 # - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
2932 # Mac Bundle name, Updater, Installer), it is typically used for nightly
2933 # builds (e.g. Aurora for Firefox).
2934 # - MOZ_APP_NAME: Used for e.g. the binary program file name. If not set,
2935 # defaults to a lowercase form of MOZ_APP_BASENAME.
2936 # - MOZ_APP_REMOTINGNAME: Used for the internal program name, which affects
2937 # profile name and remoting. If not set, defaults to MOZ_APP_NAME.
2938 # - MOZ_APP_PROFILE: When set, used for application.ini's
2939 # "Profile" field, which controls profile location.
2940 # - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
2941 # crash reporter server url.
2942 # - MOZ_APP_ANDROID_VERSION_CODE: On Android, "android:versionCode" for
2943 # the main application is set to the value of this variable. If not
2944 # set, it falls back to a Mozilla-specific value derived from the
2946 # - MOZ_ANDROID_SHARED_ID: On Android, "android:sharedUserId" for all Android
2947 # packages produced.
2948 # - MOZ_ANDROID_GCM_SENDERID: On Android, the Android GCM Sender ID used. GCM
2949 # sender IDs are not sensitive: see, http://stackoverflow.com/a/18216063.
2950 # - MOZ_MMA_GCM_SENDERID: This GCM Sender ID is used for MMA integration.
2951 # - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
2953 # The following environment variables used to have an effect, but don't anymore:
2954 # - MOZ_APP_VERSION: Defines the application version number. This was replaced with
2955 # the contents from the version.txt file in the application directory, or
2956 # browser/config/version.txt if there isn't one.
2957 # - MOZ_APP_VERSION_DISPLAY: Defines the application version number. Used
2958 # in the "About" window. This was replaced with the contents from the
2959 # version_display.txt or version.txt in the application directory, or
2960 # browser/config/version_display.txt.
2962 if test -z "$MOZ_APP_NAME"; then
2963 MOZ_APP_NAME=`echo $MOZ_APP_BASENAME | tr A-Z a-z`
2966 if test -z "$MOZ_APP_REMOTINGNAME"; then
2967 MOZ_APP_REMOTINGNAME=$MOZ_APP_NAME
2970 if test -z "$ANDROID_PACKAGE_NAME" ; then
2971 # When we got rid of the Aurora channel we decided to replace the old
2972 # Nightly ANDROID_PACKAGE_NAME with Aurora. To make sure this is inherited
2973 # by all mozilla-central based branches we make this the new "default"
2974 # for Fennec. Non mozilla-central based branches set ANDROID_PACKAGE_NAME
2975 # in their mozconfig, so they will never get this. If there are ever
2976 # non-Fennec builds for Android, they will fall into the else block
2977 # and use their own default name.
2978 # https://bugzilla.mozilla.org/show_bug.cgi?id=1357808 has additional
2979 # background on this.
2980 if test "$MOZ_APP_NAME" = "fennec"; then
2981 ANDROID_PACKAGE_NAME="org.mozilla.fennec_aurora"
2983 ANDROID_PACKAGE_NAME="org.mozilla.$MOZ_APP_NAME"
2987 # Mozilla released Firefox for Android {Release,Beta} and {Aurora,Nightly} to
2988 # the public with specific common shared IDs and we need to keep them
2989 # consistent forever. The specific common values are set by per-channel
2990 # branding; all other channels use a generic sharedID, set below.
2991 if test -z "$MOZ_ANDROID_SHARED_ID" ; then
2992 MOZ_ANDROID_SHARED_ID="${ANDROID_PACKAGE_NAME}.sharedID"
2995 # For extensions and langpacks, we require a max version that is compatible
2996 # across security releases. MOZ_APP_MAXVERSION is our method for doing that.
2997 # 24.0a1 and 24.0a2 aren't affected
2999 # 24.1.1 becomes 24.*
3000 IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
3001 if test -z "$IS_ALPHA"; then
3003 if test "$(basename $MOZ_BUILD_APP)" = "suite"; then
3004 MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\.[0-9]*\).*|\1|"`.*
3006 MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\).*|\1|"`.*
3010 MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
3013 AC_SUBST(MOZ_APP_NAME)
3014 AC_SUBST(MOZ_APP_REMOTINGNAME)
3015 AC_SUBST(MOZ_APP_DISPLAYNAME)
3016 AC_SUBST(MOZ_APP_BASENAME)
3017 AC_SUBST(MOZ_APP_VENDOR)
3018 AC_SUBST(MOZ_APP_PROFILE)
3019 AC_SUBST(MOZ_APP_ID)
3020 AC_SUBST(MOZ_APP_ANDROID_VERSION_CODE)
3021 AC_SUBST(MOZ_ANDROID_SHARED_ID)
3022 AC_SUBST(MOZ_ANDROID_GCM_SENDERID)
3023 AC_SUBST(MOZ_MMA_GCM_SENDERID)
3024 AC_SUBST(MAR_CHANNEL_ID)
3025 AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
3026 AC_SUBST(MOZ_PROFILE_MIGRATOR)
3027 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
3028 AC_SUBST(MOZ_APP_UA_NAME)
3029 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
3030 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL, $BROWSER_CHROME_URL)
3031 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL_QUOTED, "$BROWSER_CHROME_URL")
3033 AC_SUBST(MOZ_APP_MAXVERSION)
3034 AC_SUBST(MOZ_UA_OS_AGNOSTIC)
3035 if test -n "$MOZ_UA_OS_AGNOSTIC"; then
3036 AC_DEFINE(MOZ_UA_OS_AGNOSTIC)
3039 AC_SUBST(MOZ_PKG_SPECIAL)
3040 AC_SUBST(MOZ_SIMPLE_PACKAGE_NAME)
3042 if test "$MOZILLA_OFFICIAL"; then
3043 # Build revisions should always be present in official builds
3044 MOZ_INCLUDE_SOURCE_INFO=1
3047 # External builds (specifically Ubuntu) may drop the hg repo information, so we allow to
3048 # explicitly set the repository and changeset information in.
3049 AC_SUBST(MOZ_SOURCE_REPO)
3050 AC_SUBST(MOZ_SOURCE_CHANGESET)
3051 AC_SUBST(MOZ_INCLUDE_SOURCE_INFO)
3053 dnl If we have any service that uploads data (and requires data submission
3054 dnl policy alert), set MOZ_DATA_REPORTING.
3055 dnl We need SUBST for build system and DEFINE for xul preprocessor.
3056 if test -n "$MOZ_TELEMETRY_REPORTING" || test -n "$MOZ_SERVICES_HEALTHREPORT" || test -n "$MOZ_CRASHREPORTER" || test -n "$MOZ_NORMANDY"; then
3057 MOZ_DATA_REPORTING=1
3058 AC_DEFINE(MOZ_DATA_REPORTING)
3059 AC_SUBST(MOZ_DATA_REPORTING)
3063 AC_SUBST(WIN32_REDIST_DIR)
3064 AC_SUBST(WIN_UCRT_REDIST_DIR)
3066 dnl ========================================================
3068 dnl ========================================================
3072 if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
3078 dnl Echo the CFLAGS to remove extra whitespace.
3080 $_COMPILATION_CFLAGS \
3084 $_WARNINGS_CXXFLAGS \
3085 $_COMPILATION_CXXFLAGS \
3088 COMPILE_CFLAGS=`echo \
3092 COMPILE_CXXFLAGS=`echo \
3093 $_DEFINES_CXXFLAGS \
3097 $_WARNINGS_HOST_CFLAGS \
3098 $_COMPILATION_HOST_CFLAGS \
3101 HOST_CXXFLAGS=`echo \
3102 $_WARNINGS_HOST_CXXFLAGS \
3103 $_COMPILATION_HOST_CXXFLAGS \
3106 AC_SUBST(MOZ_SYSTEM_PNG)
3108 AC_SUBST_LIST(MOZ_PNG_CFLAGS)
3109 AC_SUBST_LIST(MOZ_PNG_LIBS)
3111 AC_SUBST(MOZ_SYSTEM_NSPR)
3113 AC_SUBST(MOZ_SYSTEM_NSS)
3115 HOST_CMFLAGS="-x objective-c -fobjc-exceptions"
3116 HOST_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
3117 OS_COMPILE_CMFLAGS="-x objective-c -fobjc-exceptions"
3118 OS_COMPILE_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
3119 if test "$MOZ_WIDGET_TOOLKIT" = uikit; then
3120 OS_COMPILE_CMFLAGS="$OS_COMPILE_CMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
3121 OS_COMPILE_CMMFLAGS="$OS_COMPILE_CMMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
3123 AC_SUBST(HOST_CMFLAGS)
3124 AC_SUBST(HOST_CMMFLAGS)
3125 AC_SUBST(OS_COMPILE_CMFLAGS)
3126 AC_SUBST(OS_COMPILE_CMMFLAGS)
3129 OS_CXXFLAGS="$CXXFLAGS"
3130 OS_CPPFLAGS="$CPPFLAGS"
3131 OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
3132 OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
3133 OS_LDFLAGS="$LDFLAGS"
3135 AC_SUBST_LIST(OS_CFLAGS)
3136 AC_SUBST_LIST(OS_CXXFLAGS)
3137 AC_SUBST_LIST(OS_CPPFLAGS)
3138 AC_SUBST_LIST(OS_COMPILE_CFLAGS)
3139 AC_SUBST_LIST(OS_COMPILE_CXXFLAGS)
3140 AC_SUBST_LIST(OS_LDFLAGS)
3145 AC_SUBST_LIST(HOST_CFLAGS)
3146 AC_SUBST_LIST(HOST_CPPFLAGS)
3147 AC_SUBST_LIST(HOST_CXXFLAGS)
3148 AC_SUBST(HOST_LDFLAGS)
3149 AC_SUBST_LIST(HOST_OPTIMIZE_FLAGS)
3150 AC_SUBST(HOST_BIN_SUFFIX)
3152 AC_SUBST(TARGET_XPCOM_ABI)
3153 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
3154 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1)
3155 AC_SUBST(HAVE_X86_AVX2)
3156 AC_SUBST(HAVE_ALTIVEC)
3158 AC_SUBST_LIST(DSO_CFLAGS)
3159 AC_SUBST_LIST(DSO_PIC_CFLAGS)
3160 AC_SUBST(DSO_LDOPTS)
3161 AC_SUBST(BIN_SUFFIX)
3163 AC_SUBST(NS_ENABLE_TSF)
3164 AC_SUBST(WIN32_CONSOLE_EXE_LDFLAGS)
3165 AC_SUBST(WIN32_GUI_EXE_LDFLAGS)
3167 AC_SUBST(MOZ_DEVTOOLS)
3169 AC_SUBST(MOZ_PACKAGE_JSSHELL)
3170 AC_SUBST(MOZ_FOLD_LIBS)
3171 AC_SUBST_LIST(MOZ_FOLD_LIBS_FLAGS)
3175 dnl Host JavaScript runtime, if any, to use during cross compiles.
3178 AC_SUBST(NSS_EXTRA_SYMBOLS_FILE)
3180 if test -n "$COMPILE_ENVIRONMENT"; then
3181 AC_CHECK_FUNCS(posix_fadvise posix_fallocate)
3183 dnl Check for missing components
3184 if test "$MOZ_X11"; then
3185 dnl ====================================================
3186 dnl = Check if X headers exist
3187 dnl ====================================================
3188 _SAVE_CFLAGS=$CFLAGS
3189 CFLAGS="$CFLAGS $XCFLAGS"
3193 #include <X11/Xlib.h>
3194 #include <X11/Intrinsic.h>
3195 #include <X11/extensions/XShm.h>
3199 if ((dpy = XOpenDisplay(NULL)) == NULL) {
3200 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
3204 [ AC_MSG_ERROR([Can't find X headers (install libxt-dev (Debian/Ubuntu), libXt-devel (Fedora), or xorg-x11-libXt-devel (SuSE)).]) ])
3205 CFLAGS="$_SAVE_CFLAGS"
3207 if test -n "$MISSING_X"; then
3208 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
3213 fi # COMPILE_ENVIRONMENT
3215 dnl Set various defines and substitutions
3216 dnl ========================================================
3218 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK" ; then
3219 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
3220 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
3221 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
3222 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
3223 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
3224 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
3225 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
3226 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
3229 AC_SUBST(MOZ_DEV_EDITION)
3230 if test -n "$MOZ_DEV_EDITION"; then
3231 AC_DEFINE(MOZ_DEV_EDITION)
3234 if test "$MOZ_DEBUG" -o "$DEVELOPER_OPTIONS"; then
3238 if test -n "$A11Y_LOG"; then
3242 dnl Spit out some output
3243 dnl ========================================================
3245 dnl The following defines are used by xpcom
3246 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
3258 # Avoid using obsolete NSPR features
3259 AC_DEFINE(NO_NSPR_10_SUPPORT)
3261 MOZ_CREATE_CONFIG_STATUS()
3263 rm -fr confdefs* $ac_clean_files