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*)
89 AC_PATH_PROG(OBJCOPY,objcopy)
99 AC_SUBST(ANDROID_SOURCE)
100 AC_SUBST(ANDROID_PACKAGE_NAME)
103 dnl ========================================================
104 dnl Checks for compilers.
105 dnl ========================================================
107 if test "$COMPILE_ENVIRONMENT"; then
109 if test "$target" != "$host"; then
115 # Work around the conftest.exe access problem on Windows
120 MOZ_PATH_PROGS(AS, $AS as, $CC)
121 AC_CHECK_PROGS(STRIP, strip, :)
122 AC_CHECK_PROGS(OTOOL, otool, :)
125 if test -n "$MOZ_WINCONSOLE"; then
126 AC_DEFINE(MOZ_WINCONSOLE)
131 dnl ========================================================
132 dnl Special win32 checks
133 dnl ========================================================
139 if test "$GCC" != "yes"; then
140 # Check to see if we are really running in a msvc environemnt
143 # Make sure compilers are valid
144 CFLAGS="$CFLAGS -nologo"
145 CXXFLAGS="$CXXFLAGS -TP -nologo"
148 AC_TRY_COMPILE([#include <stdio.h>],
149 [ printf("Hello World\n"); ],,
150 AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
153 AC_TRY_COMPILE([#include <new.h>],
154 [ unsigned *test = new unsigned(42); ],,
155 AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
159 _MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
162 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
163 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
164 AC_DEFINE(_USE_MATH_DEFINES) # Otherwise MSVC's math.h doesn't #define M_PI.
167 MSVC_C_RUNTIME_DLL=vcruntime140.dll
168 MSVC_CXX_RUNTIME_DLL=msvcp140.dll
170 # -Zc:sizedDealloc- disables C++14 global sized deallocation (see bug 1160146)
171 CXXFLAGS="$CXXFLAGS -Zc:sizedDealloc-"
173 if test -n "$WIN_UCRT_REDIST_DIR"; then
174 if test ! -d "$WIN_UCRT_REDIST_DIR"; then
175 AC_MSG_ERROR([Invalid Windows UCRT Redist directory: ${WIN_UCRT_REDIST_DIR}])
177 WIN_UCRT_REDIST_DIR=`cd "$WIN_UCRT_REDIST_DIR" && pwd -W`
180 AC_SUBST(MSVC_C_RUNTIME_DLL)
181 AC_SUBST(MSVC_CXX_RUNTIME_DLL)
183 AC_DEFINE(HAVE_SEH_EXCEPTIONS)
185 if test -n "$WIN32_REDIST_DIR"; then
186 if test ! -d "$WIN32_REDIST_DIR"; then
187 AC_MSG_ERROR([Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}])
189 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd -W`
192 # Check linker version, except in lld builds
197 _LD_FULL_VERSION=`"${LINKER}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
198 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
199 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
200 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
207 unset _MSVC_VER_FILTER
210 STL_FLAGS="-I${DIST}/stl_wrappers"
211 CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0"
212 CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0"
214 # Check w32api version
215 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
216 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
217 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
218 AC_TRY_COMPILE([#include <w32api.h>],
219 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
220 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
221 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
222 #error "test failed."
224 , [ res=yes ], [ res=no ])
225 AC_MSG_RESULT([$res])
226 if test "$res" != "yes"; then
227 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
229 # strsafe.h on mingw uses macros for function deprecation that pollutes namespace
230 # causing problems with local implementations with the same name.
231 AC_DEFINE(STRSAFE_NO_DEPRECATE)
234 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
235 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
236 # Require OS features provided by IE 8.0 (Win7)
237 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0800)
242 if test -n "$_WIN32_MSVC"; then
244 SKIP_COMPILER_CHECKS=1
245 SKIP_LIBRARY_CHECKS=1
247 # Since we're skipping compiler and library checks, hard-code
250 AC_DEFINE(HAVE_ISATTY)
253 fi # COMPILE_ENVIRONMENT
258 AC_SUBST_LIST(STL_FLAGS)
259 AC_SUBST(WRAP_STL_INCLUDES)
261 dnl ========================================================
262 dnl Checks for programs.
263 dnl ========================================================
264 if test "$COMPILE_ENVIRONMENT"; then
270 fi # COMPILE_ENVIRONMENT
272 dnl ========================================================
273 dnl set the defaults first
274 dnl ========================================================
275 MOZ_USER_DIR=".mozilla"
277 MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib"
281 dnl Configure platform-specific CPU architecture compiler options.
282 dnl ==============================================================
283 if test "$COMPILE_ENVIRONMENT"; then
285 fi # COMPILE_ENVIRONMENT
287 dnl ========================================================
288 dnl Android libstdc++
289 dnl ========================================================
292 if test "$COMPILE_ENVIRONMENT"; then
294 fi # COMPILE_ENVIRONMENT
296 dnl ========================================================
297 dnl Suppress Clang Argument Warnings
298 dnl ========================================================
299 WARNINGS_CFLAGS="$_WARNINGS_CFLAGS"
300 if test -n "${CLANG_CC}${CLANG_CL}"; then
301 WARNINGS_CFLAGS="-Qunused-arguments $WARNINGS_CFLAGS"
302 CPPFLAGS="-Qunused-arguments ${CPPFLAGS}"
304 if test -n "${CLANG_CXX}${CLANG_CL}"; then
305 _WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}"
308 if test -n "$COMPILE_ENVIRONMENT"; then
312 dnl ========================================================
313 dnl Add optional and non-optional hardening flags
314 dnl ========================================================
316 CFLAGS="$CFLAGS $MOZ_HARDENING_CFLAGS"
317 CPPFLAGS="$CPPFLAGS $MOZ_HARDENING_CFLAGS"
318 CXXFLAGS="$CXXFLAGS $MOZ_HARDENING_CFLAGS"
319 LDFLAGS="$LDFLAGS $MOZ_HARDENING_LDFLAGS"
321 dnl ========================================================
322 dnl GNU specific defaults
323 dnl ========================================================
324 if test "$GNU_CC"; then
328 SSSE3_FLAGS="-mssse3"
329 # FIXME: Let us build with strict aliasing. bug 414641.
330 CFLAGS="$CFLAGS -fno-strict-aliasing"
331 WARNINGS_AS_ERRORS='-Werror'
334 if test "$OS_ARCH" != "WINNT" -o -z "$CLANG_CC"; then
335 DSO_PIC_CFLAGS='-fPIC'
336 ASFLAGS="$ASFLAGS -fPIC"
339 AC_MSG_CHECKING([for --noexecstack option to as])
341 CFLAGS="$CFLAGS -Wa,--noexecstack"
342 AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
343 [ASFLAGS="$ASFLAGS -Wa,--noexecstack"],
346 AC_MSG_CHECKING([for -z noexecstack option to ld])
347 _SAVE_LDFLAGS=$LDFLAGS
348 LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
349 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
351 LDFLAGS=$_SAVE_LDFLAGS)
353 AC_MSG_CHECKING([for -z text option to ld])
354 _SAVE_LDFLAGS=$LDFLAGS
355 LDFLAGS="$LDFLAGS -Wl,-z,text"
356 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
358 LDFLAGS=$_SAVE_LDFLAGS)
360 AC_MSG_CHECKING([for -z relro option to ld])
361 _SAVE_LDFLAGS=$LDFLAGS
362 LDFLAGS="$LDFLAGS -Wl,-z,relro"
363 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
365 LDFLAGS=$_SAVE_LDFLAGS)
367 AC_MSG_CHECKING([for -z nocopyreloc option to ld])
368 _SAVE_LDFLAGS=$LDFLAGS
369 LDFLAGS="$LDFLAGS -Wl,-z,nocopyreloc"
370 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
372 LDFLAGS=$_SAVE_LDFLAGS)
374 AC_MSG_CHECKING([for -Bsymbolic-functions option to ld])
375 _SAVE_LDFLAGS=$LDFLAGS
376 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
377 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
379 LDFLAGS=$_SAVE_LDFLAGS)
381 AC_MSG_CHECKING([for --build-id=sha1 option to ld])
382 _SAVE_LDFLAGS=$LDFLAGS
383 LDFLAGS="$LDFLAGS -Wl,--build-id=sha1"
384 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
386 LDFLAGS=$_SAVE_LDFLAGS)
388 AC_MSG_CHECKING([for --ignore-unresolved-symbol option to ld])
389 HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=
390 _SAVE_LDFLAGS=$LDFLAGS
391 LDFLAGS="$LDFLAGS -Wl,--ignore-unresolved-symbol,environ"
392 AC_TRY_LINK(,,AC_MSG_RESULT([yes])
393 [HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=1],
395 LDFLAGS=$_SAVE_LDFLAGS
397 # Check for -mssse3 on $CC
398 AC_MSG_CHECKING([if toolchain supports -mssse3 option])
399 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=
401 CFLAGS="$CFLAGS -mssse3"
402 AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes])
403 [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1],
407 # Check for -msse4.1 on $CC
408 AC_MSG_CHECKING([if toolchain supports -msse4.1 option])
409 HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=
411 CFLAGS="$CFLAGS -msse4.1"
412 AC_TRY_COMPILE([asm ("pmulld %xmm6,%xmm0");],,AC_MSG_RESULT([yes])
413 [HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1],
417 case "${CPU_ARCH}" in
419 AC_MSG_CHECKING(for x86 AVX2 asm support in compiler)
421 [asm volatile ("vpermq \$0xd8,%ymm0,%ymm0 \n");],
422 result="yes", result="no")
423 AC_MSG_RESULT("$result")
424 if test "$result" = "yes"; then
430 AC_MSG_CHECKING([whether we can enable AltiVec support])
433 CFLAGS="$CFLAGS -maltivec"
434 AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
442 if test "$GCC_USE_GNU_LD"; then
443 # Some tools like ASan use a runtime library that is only
444 # linked against executables, so we must allow undefined
445 # symbols for shared objects in some cases.
446 if test -z "$MOZ_ASAN$MOZ_MSAN$MOZ_UBSAN$MOZ_TSAN$FUZZING_INTERFACES"; then
447 # Don't allow undefined symbols in libraries
448 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
450 # BSDs need `environ' exposed for posix_spawn (bug 753046)
452 DragonFly|FreeBSD|NetBSD|OpenBSD)
453 if test -n "$HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED"; then
454 DSO_LDOPTS="$DSO_LDOPTS -Wl,--ignore-unresolved-symbol,environ"
456 DSO_LDOPTS="$DSO_LDOPTS -Wl,--warn-unresolved-symbols"
463 _DEFINES_CFLAGS="-include $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
464 _USE_CPP_INCLUDE_FLAG=1
466 ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS"
469 if test "$GNU_CXX"; then
470 # FIXME: Let us build with strict aliasing. bug 414641.
471 CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing"
473 _DEFINES_CXXFLAGS="-DMOZILLA_CLIENT -include $_objdir/mozilla-config.h"
474 _USE_CPP_INCLUDE_FLAG=1
477 # For profiling builds keep the symbol information
478 if test "$MOZ_PROFILING" -a -z "$STRIP_FLAGS"; then
480 Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
481 STRIP_FLAGS="--strip-debug"
486 dnl ========================================================
488 dnl ========================================================
490 if test "$MOZ_DMD"; then
491 if test "${CPU_ARCH}" = "arm"; then
492 CFLAGS="$CFLAGS -funwind-tables"
493 CXXFLAGS="$CXXFLAGS -funwind-tables"
497 dnl ========================================================
498 dnl System overrides of the defaults for host
499 dnl ========================================================
502 if test -n "$_WIN32_MSVC"; then
503 HOST_CFLAGS="$HOST_CFLAGS -nologo"
505 HOST_CFLAGS="$HOST_CFLAGS -mwindows"
507 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN -DWIN32 -D_WIN32 -D_CRT_SECURE_NO_WARNINGS"
508 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
511 case "${host_cpu}" in
513 if test -n "$_WIN32_MSVC"; then
514 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
518 if test -n "$_WIN32_MSVC"; then
519 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
521 HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
527 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX"
528 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
531 *-linux*|*-kfreebsd*-gnu|*-gnu*)
532 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
533 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
537 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
538 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
542 dnl ========================================================
543 dnl System overrides of the defaults for target
544 dnl ========================================================
548 MOZ_OPTIMIZE_FLAGS="-O3"
549 CXXFLAGS="$CXXFLAGS -stdlib=libc++"
551 STRIP_FLAGS="$STRIP_FLAGS -x -S"
552 # Ensure that if we're targeting iOS an SDK was provided.
553 AC_CACHE_CHECK(for iOS target,
555 [AC_TRY_COMPILE([#include <TargetConditionals.h>
556 #if !(TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)
560 ac_cv_ios_target="yes",
561 ac_cv_ios_target="no")])
562 if test "$ac_cv_ios_target" = "yes" -a -z $MOZ_IOS; then
563 AC_MSG_ERROR([targeting iOS but not using an iOS SDK?])
565 if test -z "$MOZ_IOS"; then
566 # The ExceptionHandling framework is needed for Objective-C exception
567 # logging code in nsObjCExceptions.h. Currently we only use that in debug
569 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling";
572 dnl DTrace and -dead_strip don't interact well. See bug 403132.
573 dnl ===================================================================
574 if test "x$enable_dtrace" = "xyes"; then
575 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
577 dnl check for the presence of the -dead_strip linker flag
578 AC_MSG_CHECKING([for -dead_strip option to ld])
579 _SAVE_LDFLAGS=$LDFLAGS
580 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
581 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
582 if test -n "$_HAVE_DEAD_STRIP" ; then
584 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
589 LDFLAGS=$_SAVE_LDFLAGS
592 MOZ_FIX_LINK_PATHS="-Wl,-executable_path,${DIST}/bin"
595 *-android*|*-linuxandroid*)
596 AC_DEFINE(NO_PW_GECOS)
598 if test "$COMPILE_ENVIRONMENT"; then
602 MOZ_GFX_OPTIMIZE_MOBILE=1
603 if test -z "$CLANG_CC"; then
604 MOZ_OPTIMIZE_FLAGS="-freorder-blocks -fno-reorder-functions -Os"
606 # From https://github.com/android-ndk/ndk/issues/133#issuecomment-308549264
607 # -Oz is smaller than -Os on clang.
608 MOZ_OPTIMIZE_FLAGS="-Oz"
609 # Disable the outliner, which causes performance regressions, and is
610 # enabled on some platforms at -Oz.
611 if test -z "$MOZ_LTO"; then
612 DISABLE_OUTLINER="-mno-outline"
614 CFLAGS="$CFLAGS $DISABLE_OUTLINER"
615 AC_TRY_COMPILE(,,[MOZ_OPTIMIZE_FLAGS="$MOZ_OPTIMIZE_FLAGS $DISABLE_OUTLINER"])
616 CFLAGS="$_SAVE_CFLAGS"
618 DISABLE_OUTLINER="-Wl,-plugin-opt=-enable-machine-outliner=never"
619 _SAVE_LDFLAGS=$LDFLAGS
620 LDFLAGS="$LDFLAGS $MOZ_LTO_LDFLAGS $DISABLE_OUTLINER"
621 AC_TRY_LINK(,,[MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS $DISABLE_OUTLINER"])
622 LDFLAGS="$_SAVE_LDFLAGS"
628 if test "$GNU_CC" -o "$GNU_CXX"; then
629 MOZ_PGO_OPTIMIZE_FLAGS="-O3"
630 if test -n "$MOZ_DEBUG"; then
631 MOZ_OPTIMIZE_FLAGS="-Os"
633 MOZ_OPTIMIZE_FLAGS="-O2"
635 if test -z "$CLANG_CC"; then
636 MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS"
640 case "${target_cpu}" in
642 CFLAGS="$CFLAGS -mieee"
643 CXXFLAGS="$CXXFLAGS -mieee"
650 # certain versions of cygwin's makedepend barf on the
651 # #include <string> vs -I./dist/include/string issue so don't use it
652 if test -n "$GNU_CC" -o -n "$CLANG_CC"; then
656 CFLAGS="$CFLAGS -mms-bitfields"
657 CXXFLAGS="$CXXFLAGS -mms-bitfields"
659 # Use temp file for windres (bug 213281)
660 RCFLAGS='-O coff --use-temp-file'
661 # mingw doesn't require kernel32, user32, and advapi32 explicitly
662 LIBS="$LIBS -luuid -lusp10 -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32"
665 MOZ_OPTIMIZE_FLAGS="-O1"
667 WIN32_CONSOLE_EXE_LDFLAGS=-mconsole
668 WIN32_GUI_EXE_LDFLAGS=-mwindows
670 if test -z "$CLANG_CC"; then
671 # Use static libgcc and libstdc++
672 LDFLAGS="$LDFLAGS -static"
674 # GCC/binutils can't link to a function if we try to include dllexport function
675 # in the same library as dllimport caller. To work around it, we build NSPR
676 # and NSS with -mnop-fun-dllimport flag. The drawback of this solution is that
677 # function thunks need to be generated for cross-DLL calls.
678 MOZ_FOLD_LIBS_FLAGS="-mnop-fun-dllimport"
680 # Silence problematic clang warnings
681 CXXFLAGS="$CXXFLAGS -Wno-incompatible-ms-struct"
684 TARGET_COMPILER_ABI=msvc
685 RANLIB='echo not_ranlib'
686 STRIP='echo not_strip'
688 # aarch64 doesn't support subsystems below 6.02
689 if test "$CPU_ARCH" = "aarch64"; then
690 WIN32_SUBSYSTEM_VERSION=6.02
692 WIN32_SUBSYSTEM_VERSION=6.01
694 WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION
695 WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
696 DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
697 _USE_CPP_INCLUDE_FLAG=1
698 _DEFINES_CFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
699 _DEFINES_CXXFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
700 CFLAGS="$CFLAGS -W3 -Gy -Zc:inline"
701 CXXFLAGS="$CXXFLAGS -W3 -Gy -Zc:inline"
702 if test -z "$CLANG_CL"; then
703 CPPFLAGS="$CPPFLAGS -utf-8"
705 if test "$CPU_ARCH" = "x86"; then
706 dnl VS2012+ defaults to -arch:SSE2. We want to target nothing
707 dnl more recent, so set that explicitly here unless another
708 dnl target arch has already been set.
710 if test -z `echo $CFLAGS | grep -i [-/]arch:`; then
711 CFLAGS="$CFLAGS -arch:SSE2"
713 if test -z `echo $CXXFLAGS | grep -i [-/]arch:`; then
714 CXXFLAGS="$CXXFLAGS -arch:SSE2"
717 SSE_FLAGS="-arch:SSE"
718 SSE2_FLAGS="-arch:SSE2"
719 dnl MSVC allows the use of intrinsics without any flags
720 dnl and doesn't have a separate arch for SSSE3
721 SSSE3_FLAGS="-arch:SSE2"
723 dnl clang-cl requires appropriate flags to enable SSSE3 support
724 dnl on all architectures.
725 if test -n "$CLANG_CL"; then
726 SSSE3_FLAGS="-mssse3"
728 dnl VS2013+ supports -Gw for better linker optimizations.
729 dnl http://blogs.msdn.com/b/vcblog/archive/2013/09/11/introducing-gw-compiler-switch.aspx
730 dnl Disabled on ASan because it causes false-positive ODR violations.
731 if test -z "$MOZ_ASAN"; then
733 CXXFLAGS="$CXXFLAGS -Gw"
735 # String tail merging doesn't play nice with ASan's ODR checker.
736 LDFLAGS="$LDFLAGS -opt:nolldtailmerge"
738 if test -n "$CLANG_CL"; then
739 # XXX We should combine some of these with our generic GCC-style
742 # Suppress the clang-cl warning for the inline 'new' and 'delete' in mozalloc
743 CXXFLAGS="$CXXFLAGS -Wno-inline-new-delete"
744 # We use offsetof on non-POD objects all the time.
745 # We also suppress this warning on other platforms.
746 CXXFLAGS="$CXXFLAGS -Wno-invalid-offsetof"
747 # This warns for reasonable things like:
748 # enum { X = 0xffffffffU };
749 # which is annoying for IDL headers.
750 CXXFLAGS="$CXXFLAGS -Wno-microsoft-enum-value"
751 # This warns for cases that would be reached by the Microsoft
752 # #include rules, but also currently warns on cases that would
753 # *also* be reached by standard C++ include rules. That
754 # behavior doesn't seem useful, so we turn it off.
755 CXXFLAGS="$CXXFLAGS -Wno-microsoft-include"
756 # We normally error out on unknown pragmas, but since clang-cl
757 # claims to be MSVC, it would be difficult to add
758 # #if defined(_MSC_VER) && !defined(__clang__) everywhere we
759 # use such pragmas, so just ignore them.
760 CFLAGS="$CFLAGS -Wno-unknown-pragmas"
761 CXXFLAGS="$CXXFLAGS -Wno-unknown-pragmas"
762 # We get errors about various #pragma intrinsic directives from
763 # clang-cl, and we don't need to hear about those.
764 CFLAGS="$CFLAGS -Wno-ignored-pragmas"
765 CXXFLAGS="$CXXFLAGS -Wno-ignored-pragmas"
766 # clang-cl's Intrin.h marks things like _ReadWriteBarrier
767 # as __attribute((__deprecated__)). This is nice to know,
768 # but since we don't get the equivalent warning from MSVC,
769 # let's just ignore it.
770 CFLAGS="$CFLAGS -Wno-deprecated-declarations"
771 CXXFLAGS="$CXXFLAGS -Wno-deprecated-declarations"
772 # We use a function like:
773 # __declspec(noreturn) __inline void f() {}
774 # which -Winvalid-noreturn complains about. Again, MSVC seems
775 # OK with it, so let's silence the warning.
776 CFLAGS="$CFLAGS -Wno-invalid-noreturn"
777 CXXFLAGS="$CXXFLAGS -Wno-invalid-noreturn"
778 # Missing |override| on virtual function declarations isn't
779 # something that MSVC currently warns about.
780 CXXFLAGS="$CXXFLAGS -Wno-inconsistent-missing-override"
781 # We use -DHAS_EXCEPTIONS=0, which removes the |throw()|
782 # declaration on |operator delete(void*)|. However, clang-cl
783 # must internally declare |operator delete(void*)| differently,
784 # which causes this warning for virtually every file in the
785 # tree. clang-cl doesn't support -fno-exceptions or equivalent,
786 # so there doesn't seem to be any way to convince clang-cl to
787 # declare |delete| differently. Therefore, suppress this
789 CXXFLAGS="$CXXFLAGS -Wno-implicit-exception-spec-mismatch"
790 # At least one MSVC header and several headers in-tree have
791 # unused typedefs, so turn this on.
792 CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"
793 # jemalloc uses __declspec(allocator) as a profiler hint,
794 # which clang-cl doesn't understand.
795 CXXFLAGS="$CXXFLAGS -Wno-ignored-attributes"
796 # __attribute__((unused)) really means "might be unused" and
797 # we use it to avoid warnings about things that are unused
798 # in some compilation units, but used in many others. This
799 # warning insists on complaining about the latter case, which
800 # is annoying, and rather noisy.
801 CXXFLAGS="$CXXFLAGS -Wno-used-but-marked-unused"
803 # Silence VS2017 15.5+ TR1 deprecation warnings hit by older gtest versions
804 CXXFLAGS="$CXXFLAGS -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING"
805 LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib"
806 MOZ_DEBUG_LDFLAGS='-DEBUG'
807 WARNINGS_AS_ERRORS='-WX'
808 # Use a higher optimization level for clang-cl, so we can come closer
809 # to MSVC's performance numbers (see bug 1443590).
810 if test -n "$CLANG_CL"; then
811 MOZ_OPTIMIZE_FLAGS='-O2'
813 MOZ_OPTIMIZE_FLAGS='-O1 -Oi'
816 LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE"
817 if test -z "$DEVELOPER_OPTIONS"; then
818 LDFLAGS="$LDFLAGS -RELEASE"
821 dnl Minimum reqiurement of Gecko is VS2015 or later which supports
822 dnl both SSSE3 and SSE4.1.
823 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1
824 HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1
825 dnl allow AVX2 code from VS2015
828 AC_DEFINE(WIN32_LEAN_AND_MEAN)
829 dnl See http://support.microsoft.com/kb/143208 to use STL
832 MOZ_USER_DIR="Mozilla"
836 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.])
840 if test -n "$GNU_CC" -a -z "$CLANG_CC"; then
841 CFLAGS="$CFLAGS -fno-keep-inline-dllexport"
842 CXXFLAGS="$CXXFLAGS -fno-keep-inline-dllexport"
847 if test -n "$GNU_CC"; then
848 CFLAGS="$CFLAGS -mstackrealign"
849 CXXFLAGS="$CXXFLAGS -mstackrealign"
850 LDFLAGS="$LDFLAGS -Wl,--large-address-aware"
851 if test -z "$CLANG_CC"; then
852 LDFLAGS="$LDFLAGS -Wl,--enable-stdcall-fixup"
855 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
856 LDFLAGS="$LDFLAGS -SAFESEH"
862 if test -n "$_WIN32_MSVC"; then
863 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
868 if test -n "$_WIN32_MSVC"; then
869 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:ARM64"
874 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
881 CFLAGS="$CFLAGS -Dunix"
882 CXXFLAGS="$CXXFLAGS -Dunix"
883 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
884 DSO_PIC_CFLAGS='-fPIC -DPIC'
886 MOZ_PROGRAM_LDFLAGS="$MOZ_PROGRAM_LDFLAGS -Wl,--export-dynamic"
888 DSO_PIC_CFLAGS='-fPIC -DPIC'
891 # This will fail on a.out systems prior to 1.5.1_ALPHA.
892 if test "$LIBRUNPATH"; then
893 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
898 if test -z "$X11BASE"; then
901 MOZ_FIX_LINK_PATHS="$MOZ_FIX_LINK_PATHS -Wl,-rpath-link,${X11BASE}/lib"
903 DSO_PIC_CFLAGS='-fPIC'
904 DSO_LDOPTS='-shared -fPIC'
905 if test "$LIBRUNPATH"; then
906 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
911 MOZ_FIX_LINK_PATHS="-L${DIST}/bin"
916 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
917 MOZ_OPTIMIZE_FLAGS="-O"
920 AC_SUBST_LIST(MMX_FLAGS)
921 AC_SUBST_LIST(SSE_FLAGS)
922 AC_SUBST_LIST(SSE2_FLAGS)
923 AC_SUBST_LIST(SSSE3_FLAGS)
926 if test -n "$MOZ_LINKER"; then
927 AC_DEFINE(MOZ_LINKER)
929 AC_CHECK_PROGS(XZ, xz)
932 if test -z "$COMPILE_ENVIRONMENT"; then
933 SKIP_COMPILER_CHECKS=1
934 SKIP_LIBRARY_CHECKS=1
939 fi # COMPILE_ENVIRONMENT
941 if test -z "$SKIP_COMPILER_CHECKS"; then
942 dnl Checks for typedefs, structures, and compiler characteristics.
943 dnl ========================================================
958 case "${OS_TARGET}" in
962 STL_FLAGS="-I${DIST}/stl_wrappers"
967 if test "$MOZ_BUILD_APP" = "tools/crashreporter"; then
971 dnl Checks for header files.
972 dnl ========================================================
975 bitrig*|dragonfly*|freebsd*|openbsd*)
976 # for stuff like -lXshm
977 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
981 dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
982 AC_CACHE_CHECK(for sockaddr_in.sin_len,
983 ac_cv_sockaddr_in_sin_len,
984 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
985 #include <sys/types.h>
987 #include <netinet/in.h>
988 struct sockaddr_in x;
989 void *foo = (void*) &x.sin_len;],
991 [ac_cv_sockaddr_in_sin_len=true],
992 [ac_cv_sockaddr_in_sin_len=false])])
993 if test "$ac_cv_sockaddr_in_sin_len" = true ; then
994 AC_DEFINE(HAVE_SIN_LEN)
995 dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
996 AC_DEFINE(HAVE_SCONN_LEN)
999 AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
1000 ac_cv_sockaddr_in6_sin6_len,
1001 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
1002 #include <sys/types.h>
1004 #include <netinet/in.h>
1005 struct sockaddr_in6 x;
1006 void *foo = (void*) &x.sin6_len;],
1008 [ac_cv_sockaddr_in6_sin6_len=true],
1009 [ac_cv_sockaddr_in6_sin6_len=false])])
1010 if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
1011 AC_DEFINE(HAVE_SIN6_LEN)
1014 AC_CACHE_CHECK(for sockaddr.sa_len,
1015 ac_cv_sockaddr_sa_len,
1016 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
1017 #include <sys/types.h>
1019 #include <sys/socket.h>
1021 void *foo = (void*) &x.sa_len;],
1023 [ac_cv_sockaddr_sa_len=true],
1024 [ac_cv_sockaddr_sa_len=false])])
1025 if test "$ac_cv_sockaddr_sa_len" = true ; then
1026 AC_DEFINE(HAVE_SA_LEN)
1029 MOZ_ARG_ENABLE_BOOL(dtrace,
1030 [ --enable-dtrace build with dtrace support if available (default=no)],
1031 [enable_dtrace="yes"],)
1032 if test "x$enable_dtrace" = "xyes"; then
1033 MOZ_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
1034 if test -n "$HAVE_DTRACE"; then
1035 AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
1037 AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
1040 AC_SUBST(HAVE_DTRACE)
1042 dnl Checks for libraries.
1043 dnl ========================================================
1044 AC_CHECK_LIB(c_r, gethostbyname_r)
1046 dnl We don't want to link with libdl even if it's present on OS X, since
1047 dnl it's not used and not part of the default installation. OS/2 has dlfcn
1049 dnl We don't want to link against libm or libpthread on Darwin since
1050 dnl they both are just symlinks to libSystem and explicitly linking
1051 dnl against libSystem causes issues when debugging (see bug 299601).
1056 AC_SEARCH_LIBS(dlopen, dl,
1057 MOZ_CHECK_HEADER(dlfcn.h,
1058 AC_DEFINE(HAVE_DLOPEN)))
1062 _SAVE_CFLAGS="$CFLAGS"
1063 CFLAGS="$CFLAGS -D_GNU_SOURCE"
1064 AC_CHECK_FUNCS(dladdr memmem)
1065 CFLAGS="$_SAVE_CFLAGS"
1067 if test ! "$GNU_CXX"; then
1068 AC_CHECK_LIB(C, demangle)
1071 AC_CHECK_LIB(socket, socket)
1074 XLIBS="$X_EXTRA_LIBS"
1076 dnl ========================================================
1077 dnl Checks for X libraries.
1078 dnl Ordering is important.
1079 dnl Xt is dependent upon SM as of X11R6
1080 dnl ========================================================
1081 if test -n "$MOZ_X11"; then
1082 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
1083 _SAVE_LDFLAGS="$LDFLAGS"
1085 LDFLAGS="$XLDFLAGS $LDFLAGS"
1086 AC_CHECK_LIB(X11, XDrawLines, [XLIBS="-lX11 $XLIBS"],
1087 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
1088 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
1089 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
1091 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
1092 unset ac_cv_lib_Xt_XtFree
1093 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
1094 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
1095 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
1096 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
1099 dnl ========================================================
1101 dnl ========================================================
1102 AC_CHECK_LIB(xcb, xcb_connect, [XLIBS="-lxcb $XLIBS"],
1103 [MISSING_X="$MISSING_X -lxcb"], $XLIBS)
1104 AC_CHECK_LIB(xcb-shm, xcb_shm_query_version, [XLIBS="-lxcb-shm $XLIBS"],
1105 [MISSING_X="$MISSING_X -lxcb-shm"], $XLIBS)
1106 AC_CHECK_LIB(X11-xcb, XGetXCBConnection, [XLIBS="-lX11-xcb $XLIBS"],
1107 [MISSING_X="$MISSING_X -lX11-xcb"], $XLIBS)
1109 LDFLAGS="$_SAVE_LDFLAGS"
1113 AC_SUBST_LIST(XCFLAGS)
1114 AC_SUBST_LIST(XLDFLAGS)
1115 AC_SUBST_LIST(XLIBS)
1116 AC_SUBST_LIST(XEXT_LIBS)
1117 AC_SUBST_LIST(XT_LIBS)
1119 dnl ========================================================
1120 dnl = pthread support
1121 dnl = Start by checking whether the system support pthreads
1122 dnl ========================================================
1123 case "$target_os" in
1128 AC_CHECK_LIB(pthreads, pthread_create,
1129 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
1130 AC_CHECK_LIB(pthread, pthread_create,
1131 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
1132 AC_CHECK_LIB(c_r, pthread_create,
1133 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
1134 AC_CHECK_LIB(c, pthread_create,
1143 dnl ========================================================
1144 dnl Do the platform specific pthread hackery
1145 dnl ========================================================
1146 if test "$MOZ_USE_PTHREADS"x != x
1149 dnl See if -pthread is supported.
1152 ac_cv_have_dash_pthread=no
1153 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
1154 echo 'int main() { return 0; }' | cat > conftest.c
1155 ${CC-cc} -pthread -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 pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
1158 ac_cv_have_dash_pthread=yes
1159 case "$target_os" in
1161 # Freebsd doesn't use -pthread for compiles, it uses them for linking
1164 CFLAGS="$CFLAGS -pthread"
1165 CXXFLAGS="$CXXFLAGS -pthread"
1171 AC_MSG_RESULT($ac_cv_have_dash_pthread)
1174 dnl See if -pthreads is supported.
1176 ac_cv_have_dash_pthreads=no
1177 if test "$ac_cv_have_dash_pthread" = "no"; then
1178 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
1179 echo 'int main() { return 0; }' | cat > conftest.c
1180 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
1181 if test $? -eq 0; then
1182 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
1183 ac_cv_have_dash_pthreads=yes
1184 CFLAGS="$CFLAGS -pthreads"
1185 CXXFLAGS="$CXXFLAGS -pthreads"
1189 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
1194 AC_DEFINE(_REENTRANT)
1195 AC_DEFINE(_THREAD_SAFE)
1196 dnl -pthread links in -lpthread, so don't specify it explicitly.
1197 if test "$ac_cv_have_dash_pthread" = "yes"; then
1198 _PTHREAD_LDFLAGS="-pthread"
1202 *-*-openbsd*|*-*-bsdi*)
1203 AC_DEFINE(_REENTRANT)
1204 AC_DEFINE(_THREAD_SAFE)
1205 dnl -pthread links in -lc_r, so don't specify it explicitly.
1206 if test "$ac_cv_have_dash_pthread" = "yes"; then
1207 _PTHREAD_LDFLAGS="-pthread"
1211 *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
1212 AC_DEFINE(_REENTRANT)
1216 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
1217 AC_SUBST(MOZ_USE_PTHREADS)
1218 MOZ_CHECK_HEADERS(pthread.h)
1222 dnl Checks for library functions.
1223 dnl ========================================================
1224 AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize gmtime_r localtime_r arc4random arc4random_buf mallinfo gettid lchown setpriority strerror syscall)
1226 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
1227 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
1228 ac_cv_clock_monotonic,
1229 [for libs in "" -lrt; do
1231 _SAVE_CFLAGS="$CFLAGS"
1233 CFLAGS="$CFLAGS $DSO_PIC_CFLAGS"
1234 dnl clock_gettime is available on OSX since 10.12, so depending on MACOSX_DEPLOYMENT_TARGET,
1235 dnl we should or not be able to use it. To detect if we can, we need to make the
1236 dnl availability attribute strict, so that compilation fails when the target is < 10.12.
1237 AC_TRY_LINK([#define availability(os, ...) availability(os, strict, __VA_ARGS)
1239 [ struct timespec ts;
1240 clock_gettime(CLOCK_MONOTONIC, &ts); ],
1241 ac_cv_clock_monotonic=$libs
1244 ac_cv_clock_monotonic=no)
1246 CFLAGS="$_SAVE_CFLAGS"
1248 if test "$ac_cv_clock_monotonic" != "no"; then
1249 HAVE_CLOCK_MONOTONIC=1
1250 REALTIME_LIBS=$ac_cv_clock_monotonic
1251 AC_DEFINE(HAVE_CLOCK_MONOTONIC)
1252 AC_SUBST(HAVE_CLOCK_MONOTONIC)
1253 AC_SUBST_LIST(REALTIME_LIBS)
1256 dnl Turn on warnings-as-errors to prevent implicit declaration of
1257 dnl pthread_cond_timedwait_monotonic_np, which can cause this test to
1258 dnl inadvertently pass even if the function does not really exist.
1259 _SAVE_CFLAGS="$CFLAGS"
1260 CFLAGS="$CFLAGS $WARNINGS_AS_ERRORS"
1261 AC_CACHE_CHECK(for pthread_cond_timedwait_monotonic_np,
1262 ac_cv_pthread_cond_timedwait_monotonic_np,
1263 AC_TRY_LINK([#include <pthread.h>],
1264 [pthread_cond_timedwait_monotonic_np(0, 0, 0);],
1265 ac_cv_pthread_cond_timewait_monotonic_np=yes,
1266 ac_cv_pthread_cond_timewait_monotonic_np=no))
1267 if test "$ac_cv_pthread_cond_timewait_monotonic_np" != "no"; then
1268 AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC)
1270 CFLAGS=$_SAVE_CFLAGS
1274 ac_cv_func_res_ninit,
1275 [if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then
1276 dnl no need for res_ninit() on NetBSD and OpenBSD
1277 ac_cv_func_res_ninit=no
1281 #define _BSD_SOURCE 1
1283 #include <sys/types.h>
1284 #include <netinet/in.h>
1285 #include <arpa/nameser.h>
1288 [int foo = res_ninit(&_res);],
1289 [ac_cv_func_res_ninit=yes],
1290 [ac_cv_func_res_ninit=no])
1294 if test "$ac_cv_func_res_ninit" = "yes"; then
1295 AC_DEFINE(HAVE_RES_NINIT)
1296 dnl must add the link line we do something as foolish as this... dougt
1298 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
1299 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
1304 dnl **********************
1305 dnl *** va_copy checks ***
1306 AC_CACHE_CHECK([for an implementation of va_copy()],
1308 [AC_TRY_COMPILE([#include <stdarg.h>
1310 void f (int i, ...) {
1311 va_list args1, args2;
1312 va_start (args1, i);
1313 va_copy (args2, args1);
1314 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1316 va_end (args1); va_end (args2);
1318 [f(0, 42); return 0],
1319 [ac_cv_va_copy=yes],
1323 AC_CACHE_CHECK([whether va_list can be copied by value],
1325 [AC_TRY_COMPILE([#include <stdarg.h>
1327 void f (int i, ...) {
1328 va_list args1, args2;
1329 va_start (args1, i);
1331 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1333 va_end (args1); va_end (args2);
1335 [f(0, 42); return 0],
1336 [ac_cv_va_val_copy=yes],
1337 [ac_cv_va_val_copy=no],
1340 if test "x$ac_cv_va_copy" = "xyes"; then
1341 AC_DEFINE(VA_COPY, va_copy)
1342 AC_DEFINE(HAVE_VA_COPY)
1345 if test "x$ac_cv_va_val_copy" = "xno"; then
1346 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
1349 dnl ===================================================================
1350 dnl ========================================================
1351 dnl Put your C++ language/feature checks below
1352 dnl ========================================================
1356 if test "$GNU_CC"; then
1357 if test "$CPU_ARCH" = "arm" ; then
1358 AC_CACHE_CHECK(for ARM EABI,
1362 #if defined(__ARM_EABI__)
1365 #error Not ARM EABI.
1368 ac_cv_gcc_arm_eabi="yes",
1369 ac_cv_gcc_arm_eabi="no")])
1370 if test "$ac_cv_gcc_arm_eabi" = "yes"; then
1372 ARM_ABI_PREFIX=eabi-
1374 ARM_ABI_PREFIX=oabi-
1378 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
1381 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
1382 # We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
1383 # enabled, the linker in xcode 4.1 will crash. Without this it would crash when
1385 _SAVE_LDFLAGS=$LDFLAGS
1386 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
1387 AC_CACHE_CHECK(for __thread keyword for TLS variables,
1388 ac_cv_thread_keyword,
1389 [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
1390 [return tlsIsMainThread;],
1391 ac_cv_thread_keyword=yes,
1392 ac_cv_thread_keyword=no)])
1393 LDFLAGS=$_SAVE_LDFLAGS
1394 # The custom dynamic linker doesn't support TLS variables
1396 if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
1397 # mips builds fail with TLS variables because of a binutils bug.
1399 # OpenBSD doesn't have TLS support, and the test succeeds with clang++
1404 *-android*|*-linuxandroid*)
1411 AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
1417 dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments.
1418 if test -n "$MOZ_LINKER"; then
1419 if test "$CPU_ARCH" = arm; then
1420 dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments
1421 if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
1422 LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
1423 _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
1427 dnl gold emits wrong sysv-style elf hash tables when building both sysv and
1428 dnl style tables. https://sourceware.org/bugzilla/show_bug.cgi?id=13597
1429 dnl Since the linker only understands the sysv ones, no need to build the
1430 dnl gnu style tables anyways.
1431 LDFLAGS="$LDFLAGS -Wl,--hash-style=sysv"
1434 dnl End of C++ language/feature checks
1437 dnl ========================================================
1438 dnl = Internationalization checks
1439 dnl ========================================================
1441 dnl Internationalization and Locale support is different
1442 dnl on various UNIX platforms. Checks for specific i18n
1443 dnl features go here.
1445 AC_HAVE_FUNCS(localeconv)
1447 fi # ! SKIP_COMPILER_CHECKS
1449 if test -n "${COMPILE_ENVIRONMENT}"; then
1454 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
1455 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
1456 AC_DEFINE_UNQUOTED(TARGET_XPCOM_ABI, ["${TARGET_XPCOM_ABI}"])
1459 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
1460 dnl features that Windows actually does support.
1462 if test -n "$SKIP_COMPILER_CHECKS"; then
1463 dnl Windows has malloc.h
1464 AC_DEFINE(MALLOC_H, [<malloc.h>])
1465 AC_DEFINE(HAVE_FORCEINLINE)
1466 AC_DEFINE(HAVE_LOCALECONV)
1467 fi # SKIP_COMPILER_CHECKS
1469 dnl Mozilla specific options
1470 dnl ========================================================
1471 dnl The macros used for command line options
1472 dnl are defined in build/autoconf/altoptions.m4.
1474 dnl ========================================================
1476 dnl = Check for external package dependencies
1478 dnl ========================================================
1479 MOZ_ARG_HEADER(External Packages)
1481 case "$OS_TARGET" in
1482 WINNT|Darwin|Android)
1492 dnl ========================================================
1493 dnl system libevent Support
1494 dnl ========================================================
1495 MOZ_ARG_WITH_STRING(system-libevent,
1496 [ --with-system-libevent[=PFX]
1497 Use system libevent [installed at prefix PFX]],
1498 LIBEVENT_DIR=$withval)
1500 _SAVE_CFLAGS=$CFLAGS
1501 _SAVE_LDFLAGS=$LDFLAGS
1503 if test "$LIBEVENT_DIR" = yes; then
1504 PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
1505 MOZ_SYSTEM_LIBEVENT=1,
1508 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
1509 MOZ_SYSTEM_LIBEVENT=
1510 elif test -z "$MOZ_SYSTEM_LIBEVENT"; then
1511 CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
1512 LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
1513 MOZ_CHECK_HEADER(event.h,
1514 [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
1515 AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
1517 AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
1518 AC_CHECK_LIB(event, event_init,
1519 [MOZ_SYSTEM_LIBEVENT=1
1520 MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
1521 MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
1522 [MOZ_SYSTEM_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
1524 CFLAGS=$_SAVE_CFLAGS
1525 LDFLAGS=$_SAVE_LDFLAGS
1528 AC_SUBST(MOZ_SYSTEM_LIBEVENT)
1530 dnl ========================================================
1531 dnl = If NSS was not detected in the system,
1532 dnl = use the one in the source tree (mozilla/security/nss)
1533 dnl ========================================================
1535 MOZ_ARG_WITH_BOOL(system-nss,
1536 [ --with-system-nss Use system installed NSS],
1539 if test -n "$_USE_SYSTEM_NSS"; then
1540 AM_PATH_NSS(3.45, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
1543 NSS_CFLAGS="$NSS_CFLAGS -I${DIST}/include/nss"
1544 if test -z "$MOZ_SYSTEM_NSS"; then
1545 case "${OS_ARCH}" in
1546 # Only few platforms have been tested with GYP
1547 WINNT|Darwin|Linux|DragonFly|FreeBSD|NetBSD|OpenBSD|SunOS)
1550 AC_MSG_ERROR([building in-tree NSS is not supported on this platform. Use --with-system-nss])
1555 dnl system ZLIB support
1556 dnl ========================================================
1557 MOZ_ZLIB_CHECK([1.2.3])
1559 if test -z "$SKIP_LIBRARY_CHECKS"; then
1561 dnl ========================================================
1562 dnl system PNG Support
1563 dnl ========================================================
1564 MOZ_ARG_WITH_STRING(system-png,
1565 [ --with-system-png[=PFX]
1566 Use system libpng [installed at prefix PFX]],
1569 _SAVE_CFLAGS=$CFLAGS
1570 _SAVE_LDFLAGS=$LDFLAGS
1572 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
1573 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
1574 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
1576 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
1579 AC_CHECK_LIB(png, png_get_valid, [MOZ_SYSTEM_PNG=1 MOZ_PNG_LIBS="-lpng"],
1580 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
1581 AC_CHECK_LIB(png, png_get_acTL, ,
1582 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]))
1584 if test "$MOZ_SYSTEM_PNG" = 1; then
1585 AC_TRY_COMPILE([ #include <stdio.h>
1586 #include <sys/types.h>
1588 [ #if PNG_LIBPNG_VER < $MOZPNG
1589 #error "Insufficient libpng version ($MOZPNG required)."
1591 #ifndef PNG_UINT_31_MAX
1592 #error "Insufficient libpng version."
1595 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
1597 CFLAGS=$_SAVE_CFLAGS
1598 LDFLAGS=$_SAVE_LDFLAGS
1601 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_SYSTEM_PNG" = 1; then
1602 MOZ_PNG_CFLAGS="-I${PNG_DIR}/include"
1603 MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}"
1606 fi # SKIP_LIBRARY_CHECKS
1608 dnl ========================================================
1612 dnl ========================================================
1614 MOZ_ARG_HEADER(Application)
1616 ENABLE_SYSTEM_EXTENSION_DIRS=1
1617 MOZ_BRANDING_DIRECTORY=
1618 MOZ_OFFICIAL_BRANDING=
1619 MOZ_AUTH_EXTENSION=1
1620 if test "$MOZ_IOS"; then
1623 MOZ_PREF_EXTENSIONS=1
1625 MOZ_UNIVERSALCHARDET=1
1630 MOZ_USE_NATIVE_POPUP_WINDOWS=
1631 MOZ_EXCLUDE_HYPHENATION_DICTIONARIES=
1633 MOZ_BINARY_EXTENSIONS=
1636 case "$target_os" in
1639 AC_DEFINE(NS_ENABLE_TSF)
1643 # Optional Firefox for Android partner distribution directory.
1644 MOZ_ARG_WITH_STRING(android-distribution-directory,
1645 [ --with-android-distribution-directory=dir
1646 Optional Firefox for Android partner distribution directory.],
1647 MOZ_ANDROID_DISTRIBUTION_DIRECTORY=$withval)
1649 if test -n "$MOZ_ANDROID_DISTRIBUTION_DIRECTORY"; then
1650 # A distribution directory must have an assets/distribution directory.
1651 # See https://wiki.mozilla.org/Mobile/Distribution_Files.
1652 if test ! -d "$MOZ_ANDROID_DISTRIBUTION_DIRECTORY/assets/distribution" ; then
1653 AC_MSG_ERROR([--with-android-distribution-directory does not contain assets/distribution;
1654 (looked for ${MOZ_ANDROID_DISTRIBUTION_DIRECTORY}/assets/distribution).])
1657 AC_SUBST(MOZ_ANDROID_DISTRIBUTION_DIRECTORY)
1659 dnl ========================================================
1660 dnl = Trademarked Branding
1661 dnl ========================================================
1662 MOZ_ARG_ENABLE_BOOL(official-branding,
1663 [ --enable-official-branding
1664 Enable Official mozilla.org Branding
1665 Do not distribute builds with
1666 --enable-official-branding unless you have
1667 permission to use trademarks per
1668 http://www.mozilla.org/foundation/trademarks/ .],
1669 MOZ_OFFICIAL_BRANDING=1,
1670 MOZ_OFFICIAL_BRANDING=)
1672 # Allow the application to influence configure with a confvars.sh script.
1673 AC_MSG_CHECKING([if app-specific confvars.sh exists])
1674 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
1675 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
1676 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
1681 # Allow influencing configure with a defines.sh script.
1682 . "${srcdir}/build/defines.sh"
1684 # If we're not building a release build, define EARLY_BETA_OR_EARLIER if it is
1686 if test "$BUILDING_RELEASE"; then
1687 # Override value in defines.sh, if any
1688 EARLY_BETA_OR_EARLIER=
1689 elif test "$EARLY_BETA_OR_EARLIER"; then
1690 AC_DEFINE(EARLY_BETA_OR_EARLIER)
1692 AC_SUBST(EARLY_BETA_OR_EARLIER)
1694 # Allow someone to change MOZ_APP_NAME and MOZ_APP_BASENAME in mozconfig
1695 MOZ_ARG_WITH_STRING(app-name,
1696 [--with-app-name=APPNAME sets MOZ_APP_NAME to APPNAME],
1697 WITH_APP_NAME=$withval,
1700 if test -n "$WITH_APP_NAME" ; then
1701 MOZ_APP_NAME="$WITH_APP_NAME"
1704 MOZ_ARG_WITH_STRING(app-basename,
1705 [--with-app-basename=BASENAME sets MOZ_APP_BASENAME to BASENAME],
1706 WITH_APP_BASENAME=$withval,
1709 if test -n "$WITH_APP_BASENAME" ; then
1710 MOZ_APP_BASENAME="$WITH_APP_BASENAME"
1713 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
1714 # that haven't made a confvars.sh yet. Don't add new stuff here, use
1716 case "$MOZ_BUILD_APP" in
1718 AC_DEFINE(MOZ_PHOENIX)
1722 # Graphene is a desktop runtime for running applications with a HTML UI.
1723 if test -n "$MOZ_GRAPHENE"; then
1724 AC_DEFINE(MOZ_GRAPHENE)
1727 AC_SUBST(MOZ_PHOENIX)
1729 dnl ========================================================
1730 dnl Ensure Android SDK and build-tools versions depending on
1732 dnl ========================================================
1734 case "$MOZ_BUILD_APP" in
1740 dnl ========================================================
1742 dnl = Toolkit Options
1744 dnl ========================================================
1745 MOZ_ARG_HEADER(Toolkit Options)
1747 dnl ========================================================
1748 dnl = Enable the toolkit as needed =
1749 dnl ========================================================
1751 case "$MOZ_WIDGET_TOOLKIT" in
1754 LDFLAGS="$LDFLAGS -framework Cocoa"
1755 # Use -Wl as a trick to avoid -framework and framework names from
1756 # being separated by AC_SUBST_LIST.
1757 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'
1759 CFLAGS="$CFLAGS $TK_CFLAGS"
1760 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
1761 MOZ_USER_DIR="Mozilla"
1762 MOZ_FS_LAYOUT=bundle
1766 LDFLAGS="$LDFLAGS -framework UIKit"
1768 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'
1769 CFLAGS="$CFLAGS $TK_CFLAGS"
1770 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
1771 MOZ_USER_DIR="Mozilla"
1772 MOZ_FS_LAYOUT=bundle
1777 if test "$OS_TARGET" = Darwin; then
1778 LDFLAGS="$LDFLAGS -lobjc"
1781 dnl there are a lot of tests on MOZ_ENABLE_GTK below, that are more convenient
1782 dnl to keep that way than testing against MOZ_WIDGET_TOOLKIT
1783 case "$MOZ_WIDGET_TOOLKIT" in
1789 if test "$COMPILE_ENVIRONMENT"; then
1790 if test "$MOZ_WIDGET_TOOLKIT" = gtk3; then
1791 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)
1792 MOZ_GTK3_CFLAGS="-I${_topsrcdir}/widget/gtk/compat-gtk3 $MOZ_GTK3_CFLAGS"
1793 TK_CFLAGS=$MOZ_GTK3_CFLAGS
1794 TK_LIBS=$MOZ_GTK3_LIBS
1795 dnl GDK_VERSION_MIN_REQUIRED is not set here as GDK3 deprecated warnings
1796 dnl are suppressed by widget/gtk/compat-gtk3/gdk/gdkversionmacros.h.
1797 AC_DEFINE_UNQUOTED(GDK_VERSION_MAX_ALLOWED,$GDK_VERSION_MAX_ALLOWED)
1798 GLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_32
1800 if test "$MOZ_ENABLE_GTK"; then
1801 if test "$MOZ_X11"; then
1802 GDK_PACKAGES=gdk-x11-2.0
1804 AC_DEFINE_UNQUOTED(GLIB_VERSION_MIN_REQUIRED,$GLIB_VERSION_MIN_REQUIRED)
1805 AC_DEFINE_UNQUOTED(GLIB_VERSION_MAX_ALLOWED,$GLIB_VERSION_MAX_ALLOWED)
1807 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)
1808 MOZ_GTK2_CFLAGS="-I${_topsrcdir}/widget/gtk/compat $MOZ_GTK2_CFLAGS"
1810 fi # COMPILE_ENVIRONMENT
1812 AC_SUBST(MOZ_FS_LAYOUT)
1814 dnl ========================================================
1815 dnl = startup-notification support module
1816 dnl ========================================================
1818 if test "$MOZ_ENABLE_GTK"
1820 MOZ_ENABLE_STARTUP_NOTIFICATION=
1822 MOZ_ARG_ENABLE_BOOL(startup-notification,
1823 [ --enable-startup-notification
1824 Enable startup-notification support (default: disabled) ],
1825 MOZ_ENABLE_STARTUP_NOTIFICATION=force,
1826 MOZ_ENABLE_STARTUP_NOTIFICATION=)
1827 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
1829 PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
1830 libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
1831 [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
1832 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
1834 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
1836 MOZ_ENABLE_STARTUP_NOTIFICATION=
1840 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
1841 AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
1844 TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
1846 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
1848 AC_SUBST_LIST(TK_CFLAGS)
1849 AC_SUBST_LIST(TK_LIBS)
1854 dnl ========================================================
1856 dnl = Components & Features
1858 dnl ========================================================
1859 MOZ_ARG_HEADER(Components and Features)
1861 AC_SUBST(MOZ_OFFICIAL_BRANDING)
1862 if test -n "$MOZ_OFFICIAL_BRANDING"; then
1863 if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
1864 AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
1866 MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
1867 AC_DEFINE(MOZ_OFFICIAL_BRANDING)
1871 MOZ_ARG_WITH_STRING(branding,
1872 [ --with-branding=dir Use branding from the specified directory.],
1873 MOZ_BRANDING_DIRECTORY=$withval)
1875 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
1876 if test -z "$REAL_BRANDING_DIRECTORY"; then
1877 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
1880 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
1881 . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
1882 elif test -f "${EXTERNAL_SOURCE_DIR}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
1883 . "${EXTERNAL_SOURCE_DIR}/$REAL_BRANDING_DIRECTORY/configure.sh"
1886 AC_SUBST(MOZ_BRANDING_DIRECTORY)
1888 dnl ========================================================
1889 dnl = Distribution ID
1890 dnl ========================================================
1891 MOZ_ARG_WITH_STRING(distribution-id,
1892 [ --with-distribution-id=ID
1893 Set distribution-specific id (default=org.mozilla)],
1894 [ val=`echo $withval`
1895 MOZ_DISTRIBUTION_ID="$val"])
1897 if test -z "$MOZ_DISTRIBUTION_ID"; then
1898 MOZ_DISTRIBUTION_ID="org.mozilla"
1901 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
1902 AC_SUBST(MOZ_DISTRIBUTION_ID)
1904 dnl ========================================================
1905 dnl = libproxy support
1906 dnl ========================================================
1908 if test "$MOZ_ENABLE_GTK"
1910 MOZ_ENABLE_LIBPROXY=
1912 MOZ_ARG_ENABLE_BOOL(libproxy,
1913 [ --enable-libproxy Enable libproxy support ],
1914 MOZ_ENABLE_LIBPROXY=1,
1915 MOZ_ENABLE_LIBPROXY=)
1917 if test "$MOZ_ENABLE_LIBPROXY"
1919 PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
1920 AC_DEFINE(MOZ_ENABLE_LIBPROXY)
1923 AC_SUBST(MOZ_ENABLE_LIBPROXY)
1925 dnl ========================================================
1927 dnl ========================================================
1929 if test "$MOZ_ENABLE_GTK"
1933 MOZ_ARG_DISABLE_BOOL(dbus,
1934 [ --disable-dbus Disable dbus support ],
1938 if test "$MOZ_ENABLE_DBUS"
1940 PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
1941 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
1942 AC_DEFINE(MOZ_ENABLE_DBUS)
1945 AC_SUBST(MOZ_ENABLE_DBUS)
1947 dnl =========================================================
1948 dnl = Whether to exclude hyphenations files in the build
1949 dnl =========================================================
1950 if test -n "$MOZ_EXCLUDE_HYPHENATION_DICTIONARIES"; then
1951 AC_DEFINE(MOZ_EXCLUDE_HYPHENATION_DICTIONARIES)
1954 AC_TRY_COMPILE([#include <linux/ethtool.h>],
1955 [ struct ethtool_cmd cmd; cmd.speed_hi = 0; ],
1956 MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI=1)
1958 AC_SUBST(MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI)
1960 if test -n "$MOZ_WEBRTC"; then
1961 if test -n "$MOZ_X11"; then
1962 MOZ_WEBRTC_X11_LIBS="-lXext -lXdamage -lXfixes -lXcomposite"
1966 AC_SUBST_LIST(MOZ_WEBRTC_X11_LIBS)
1968 dnl ========================================================
1969 dnl = Apple platform decoder support
1970 dnl ========================================================
1971 if test "$COMPILE_ENVIRONMENT"; then
1972 if test -n "$MOZ_APPLEMEDIA"; then
1973 # hack in frameworks for fmp4 - see bug 1029974
1974 # We load VideoToolbox and CoreMedia dynamically, so they don't appear here.
1975 LDFLAGS="$LDFLAGS -framework AudioToolbox"
1976 dnl Verify CoreMedia is available.
1977 AC_CHECK_HEADERS([CoreMedia/CoreMedia.h VideoToolbox/VideoToolbox.h], [],
1978 [AC_MSG_ERROR([MacOS X 10.9 SDK or later is required])])
1980 fi # COMPILE_ENVIRONMENT
1982 dnl ========================================================
1983 dnl = Handle dependent MEDIA defines
1984 dnl ========================================================
1987 AC_DEFINE(MOZ_WEBM_ENCODER)
1988 AC_SUBST(MOZ_WEBM_ENCODER)
1990 dnl ========================================================
1992 dnl ========================================================
1994 MOZ_ARG_DISABLE_BOOL(negotiateauth,
1995 [ --disable-negotiateauth Disable GSS-API negotiation ],
1996 MOZ_AUTH_EXTENSION=,
1997 MOZ_AUTH_EXTENSION=1 )
1999 if test -n "$MOZ_IOS" -a -n "$MOZ_AUTH_EXTENSION"; then
2000 AC_MSG_ERROR([negotiateauth is not supported on iOS.])
2003 dnl ========================================================
2004 dnl Pref extensions (autoconfig)
2005 dnl ========================================================
2006 MOZ_ARG_DISABLE_BOOL(pref-extensions,
2007 [ --disable-pref-extensions
2008 Disable pref extensions such as autoconfig],
2009 MOZ_PREF_EXTENSIONS=,
2010 MOZ_PREF_EXTENSIONS=1 )
2012 dnl ========================================================
2013 dnl Searching of system directories for extensions.
2014 dnl Note: this switch is meant to be used for test builds
2015 dnl whose behavior should not depend on what happens to be
2016 dnl installed on the local machine.
2017 dnl ========================================================
2018 MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
2019 [ --disable-system-extension-dirs
2020 Disable searching system- and account-global
2021 directories for extensions of any kind; use
2022 only profile-specific extension directories],
2023 ENABLE_SYSTEM_EXTENSION_DIRS=,
2024 ENABLE_SYSTEM_EXTENSION_DIRS=1 )
2025 if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
2026 AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
2029 dnl ========================================================
2030 dnl = Universalchardet
2031 dnl ========================================================
2032 MOZ_ARG_DISABLE_BOOL(universalchardet,
2033 [ --disable-universalchardet
2034 Disable universal encoding detection],
2035 MOZ_UNIVERSALCHARDET=,
2036 MOZ_UNIVERSALCHARDET=1 )
2038 dnl ========================================================
2040 dnl ========================================================
2042 if test "$COMPILE_ENVIRONMENT" ; then
2044 dnl Moved gamepad platform check to moz.build, linux header check still needed here.
2045 if test "$OS_TARGET" = "Linux"; then
2046 MOZ_CHECK_HEADER([linux/joystick.h])
2047 if test "$ac_cv_header_linux_joystick_h" != "yes"; then
2048 AC_MSG_ERROR([Can't find header linux/joystick.h, needed for gamepad support. Please install Linux kernel headers.])
2052 fi # COMPILE_ENVIRONMENT
2055 dnl ========================================================
2056 dnl = Breakpad crash reporting (on by default on supported platforms)
2057 dnl ========================================================
2060 i?86-*-mingw*|x86_64-*-mingw*|aarch64-*-mingw*)
2063 i?86-apple-darwin*|x86_64-apple-darwin*)
2064 if test -z "$MOZ_IOS"; then
2068 *-android*|*-linuxandroid*)
2069 dnl Android/arm is arm-unknown-linux-androideabi, so android condition should
2070 dnl be before Linux condition
2073 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
2074 if test "$MOZ_ENABLE_GTK"; then
2080 MOZ_ARG_DISABLE_BOOL(crashreporter,
2081 [ --disable-crashreporter Disable breakpad crash reporting],
2082 [MOZ_CRASHREPORTER=],
2083 [MOZ_CRASHREPORTER=F # Force enable breakpad])
2085 if test "$OS_ARCH" != "$HOST_OS_ARCH" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "Darwin"; then
2086 if test "$MOZ_CRASHREPORTER" = F; then
2087 AC_MSG_ERROR([Cannot --enable-crashreporter, as breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH.])
2092 if test -n "$MOZ_CRASHREPORTER"; then
2093 AC_DEFINE(MOZ_CRASHREPORTER)
2095 if test "$OS_TARGET" = "Linux" && \
2096 test -z "$SKIP_LIBRARY_CHECKS"; then
2097 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
2100 if test "$OS_ARCH" = "WINNT"; then
2101 if test -z "$HAVE_64BIT_BUILD" -a -n "$COMPILE_ENVIRONMENT"; then
2102 MOZ_CRASHREPORTER_INJECTOR=1
2103 AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
2108 dnl ========================================================
2109 dnl = Enable compilation of specific extension modules
2110 dnl ========================================================
2112 MOZ_ARG_ENABLE_STRING(extensions,
2113 [ --enable-extensions Enable extensions],
2114 [ for option in `echo $enableval | sed 's/,/ /g'`; do
2115 if test "$option" = "yes" -o "$option" = "all"; then
2116 AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
2117 elif test "$option" = "no" -o "$option" = "none"; then
2119 elif test "$option" = "default"; then
2120 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
2121 elif test `echo "$option" | grep -c \^-` != 0; then
2122 option=`echo $option | sed 's/^-//'`
2123 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
2125 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
2128 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
2130 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
2131 dnl when trying to build a nonexistent extension.
2132 for extension in $MOZ_EXTENSIONS; do
2133 if test ! -d "${srcdir}/extensions/${extension}"; then
2134 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
2138 if test -n "$MOZ_USE_NATIVE_POPUP_WINDOWS"; then
2139 AC_DEFINE(MOZ_USE_NATIVE_POPUP_WINDOWS)
2142 # Avoid defining MOZ_ENABLE_CAIRO_FT on Windows platforms because
2143 # "cairo-ft-font.c" includes <dlfcn.h>, which only exists on posix platforms
2144 if test -n "$MOZ_TREE_FREETYPE" -a "$OS_TARGET" != WINNT; then
2145 MOZ_ENABLE_CAIRO_FT=1
2146 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
2147 CAIRO_FT_CFLAGS="-I$_topsrcdir/modules/freetype2/include"
2148 AC_SUBST_LIST(CAIRO_FT_CFLAGS)
2151 AC_CHECK_PROGS(WGET, wget, "")
2154 dnl ========================================================
2155 dnl Enable building the signmar program.
2156 dnl This option is much different than the --enable-verify-mar option.
2157 dnl --enable-verify-mar is for enabling the verification check on MAR
2158 dnl files in the updater. The --enable-signmar option is for building
2159 dnl the signmar program.
2160 dnl ========================================================
2162 MOZ_ARG_ENABLE_BOOL(signmar,
2163 [ --enable-signmar Enable building the signmar program],
2164 MOZ_ENABLE_SIGNMAR=1,
2165 MOZ_ENABLE_SIGNMAR= )
2167 if test -n "$MOZ_ENABLE_SIGNMAR"; then
2168 if test -z "$COMPILE_ENVIRONMENT" ; then
2169 AC_MSG_WARN([Cannot --enable-signmar with --disable-compile-environment])
2172 AC_DEFINE(MOZ_ENABLE_SIGNMAR)
2176 dnl ========================================================
2178 dnl ========================================================
2180 if test "$MOZ_IOS"; then
2184 MOZ_ARG_DISABLE_BOOL(updater,
2185 [ --disable-updater Disable building of updater],
2189 if test -n "$MOZ_UPDATER"; then
2190 AC_DEFINE(MOZ_UPDATER)
2193 dnl ========================================================
2194 dnl parental controls (for Windows Vista)
2195 dnl ========================================================
2196 MOZ_ARG_DISABLE_BOOL(parental-controls,
2197 [ --disable-parental-controls
2198 Do not build parental controls],
2199 MOZ_DISABLE_PARENTAL_CONTROLS=1,
2200 MOZ_DISABLE_PARENTAL_CONTROLS=)
2201 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
2202 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
2205 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
2207 dnl ========================================================
2208 dnl = Disable smartcard support
2209 dnl ========================================================
2210 if test -n "$MOZ_NO_SMART_CARDS"; then
2211 AC_DEFINE(MOZ_NO_SMART_CARDS)
2213 AC_SUBST(MOZ_NO_SMART_CARDS)
2215 dnl ========================================================
2216 dnl = Sandboxing support
2217 dnl ========================================================
2218 if test -n "$MOZ_TSAN" -o -n "$MOZ_ASAN"; then
2219 # Bug 1182565: TSan conflicts with sandboxing on Linux.
2220 # Bug 1287971: LSan also conflicts with sandboxing on Linux.
2228 MOZ_ARG_DISABLE_BOOL(sandbox,
2229 [ --disable-sandbox Disable sandboxing support],
2233 case "$OS_TARGET" in
2240 # Linux sandbox is only available on x86 and x86_64.
2247 # Only enable the sandbox by default on Linux, macOS, and Windows
2252 if test -n "$MOZ_SANDBOX"; then
2253 AC_DEFINE(MOZ_SANDBOX)
2256 AC_SUBST(MOZ_SANDBOX)
2259 dnl ========================================================
2261 dnl = Module specific options
2263 dnl ========================================================
2264 MOZ_ARG_HEADER(Individual module options)
2266 dnl ========================================================
2267 dnl Check for sqlite
2268 dnl ========================================================
2271 MOZ_ARG_ENABLE_BOOL(system-sqlite,
2272 [ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
2273 MOZ_SYSTEM_SQLITE=1,
2274 MOZ_SYSTEM_SQLITE= )
2276 if test -n "$MOZ_SYSTEM_SQLITE"
2278 dnl ============================
2279 dnl === SQLite Version check ===
2280 dnl ============================
2281 dnl Check to see if the system SQLite package is new enough.
2282 PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
2284 dnl ==============================
2285 dnl === SQLite fdatasync check ===
2286 dnl ==============================
2287 dnl Check to see if fdatasync is available
2288 AC_CHECK_FUNC(fdatasync)
2291 if test -n "$MOZ_SYSTEM_SQLITE"; then
2292 AC_DEFINE(MOZ_SYSTEM_SQLITE)
2294 AC_SUBST(MOZ_SYSTEM_SQLITE)
2296 dnl ========================================================
2297 dnl = Disable zipwriter
2298 dnl ========================================================
2299 MOZ_ARG_DISABLE_BOOL(zipwriter,
2300 [ --disable-zipwriter Disable zipwriter component],
2303 AC_SUBST(MOZ_ZIPWRITER)
2305 dnl ========================================================
2307 dnl = Feature options that require extra sources to be pulled
2309 dnl ========================================================
2310 dnl MOZ_ARG_HEADER(Features that require extra sources)
2312 dnl ========================================================
2314 dnl = Runtime debugging and Optimization Options
2316 dnl ========================================================
2317 MOZ_ARG_HEADER(Runtime debugging and Optimizations)
2319 dnl ========================================================
2320 dnl enable mobile optimizations
2321 dnl ========================================================
2322 MOZ_ARG_ENABLE_BOOL(mobile-optimize,
2323 [ --enable-mobile-optimize
2324 Enable mobile optimizations],
2325 MOZ_GFX_OPTIMIZE_MOBILE=1)
2327 AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
2329 if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
2330 # We ignore paint will resample on mobile for performance.
2331 # We may want to revisit this later.
2332 MOZ_IGNORE_PAINT_WILL_RESAMPLE=1
2334 AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
2335 AC_DEFINE(MOZ_IGNORE_PAINT_WILL_RESAMPLE)
2338 dnl ========================================================
2339 dnl = Enable code optimization. ON by default.
2340 dnl ========================================================
2342 # Use value from moz.configure if one is defined. Else use our computed
2344 if test -n "${MOZ_CONFIGURE_OPTIMIZE_FLAGS}"; then
2345 MOZ_OPTIMIZE_FLAGS=${MOZ_CONFIGURE_OPTIMIZE_FLAGS}
2348 if test "$COMPILE_ENVIRONMENT"; then
2349 if test -n "$MOZ_OPTIMIZE"; then
2350 AC_MSG_CHECKING([for valid C compiler optimization flags])
2351 _SAVE_CFLAGS=$CFLAGS
2352 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
2353 AC_TRY_COMPILE([#include <stdio.h>],
2354 [printf("Hello World\n");],
2357 AC_MSG_RESULT([$_results])
2358 if test "$_results" = "no"; then
2359 AC_MSG_ERROR([These compiler flags for C are invalid: $MOZ_OPTIMIZE_FLAGS])
2361 CFLAGS=$_SAVE_CFLAGS
2362 if test -n "$MOZ_LTO" -a -n "$CLANG_CC"; then
2363 # When using llvm-based LTO, non numeric optimization levels are
2364 # not supported by the linker, so force the linker to use -O2 (
2365 # which doesn't influence the level compilation units are actually
2367 case " $MOZ_OPTIMIZE_FLAGS " in
2368 *\ -Os\ *|*\ -Oz\ *)
2369 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -O2"
2374 fi # COMPILE_ENVIRONMENT
2376 AC_SUBST_LIST(MOZ_OPTIMIZE_FLAGS)
2377 AC_SUBST_LIST(MOZ_OPTIMIZE_LDFLAGS)
2378 AC_SUBST_LIST(MOZ_PGO_OPTIMIZE_FLAGS)
2380 dnl ========================================================
2381 dnl = Disable treating compiler warnings as errors
2382 dnl ========================================================
2383 if test -z "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then
2384 WARNINGS_AS_ERRORS=''
2387 dnl ========================================================
2388 dnl = Enable runtime logging
2389 dnl ========================================================
2390 AC_DEFINE(MOZ_LOGGING)
2391 AC_DEFINE(FORCE_PR_LOG)
2393 dnl ========================================================
2394 dnl = This will enable logging of addref, release, ctor, dtor.
2395 dnl ========================================================
2396 _ENABLE_LOGREFCNT=42
2397 MOZ_ARG_ENABLE_BOOL(logrefcnt,
2398 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
2399 _ENABLE_LOGREFCNT=1,
2400 _ENABLE_LOGREFCNT= )
2401 if test "$_ENABLE_LOGREFCNT" = "1"; then
2402 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
2403 elif test -z "$_ENABLE_LOGREFCNT"; then
2404 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
2407 dnl ========================================================
2408 dnl moz_dump_painting
2409 dnl ========================================================
2410 MOZ_ARG_ENABLE_BOOL(dump-painting,
2411 [ --enable-dump-painting Enable paint debugging.],
2412 MOZ_DUMP_PAINTING=1,
2413 MOZ_DUMP_PAINTING= )
2414 if test -n "$MOZ_DUMP_PAINTING"; then
2415 AC_DEFINE(MOZ_DUMP_PAINTING)
2416 AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
2418 if test -n "$MOZ_DEBUG"; then
2419 AC_DEFINE(MOZ_DUMP_PAINTING)
2422 case "${OS_TARGET}" in
2423 Android|WINNT|Darwin)
2424 MOZ_GLUE_IN_PROGRAM=
2427 dnl On !Android !Windows !OSX, we only want to link executables against mozglue
2428 MOZ_GLUE_IN_PROGRAM=1
2429 AC_DEFINE(MOZ_GLUE_IN_PROGRAM)
2433 dnl ========================================================
2434 dnl = Jemalloc build setup
2435 dnl ========================================================
2436 if test -z "$MOZ_MEMORY"; then
2439 if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
2440 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.])
2445 dnl The generic feature tests that determine how to compute ncpus are long and
2446 dnl complicated. Therefore, simply define special cpp variables for the
2447 dnl platforms we have special knowledge of.
2450 export MOZ_NO_DEBUG_RTL=1
2454 AC_SUBST(MOZ_GLUE_IN_PROGRAM)
2456 dnl ========================================================
2457 dnl = Enable using the clang plugin to build
2458 dnl ========================================================
2460 if test -n "$COMPILE_ENVIRONMENT"; then
2461 MOZ_CONFIG_CLANG_PLUGIN
2462 fi # COMPILE_ENVIRONMENT
2464 dnl ========================================================
2465 dnl = Enable stripping of libs & executables
2466 dnl ========================================================
2467 MOZ_ARG_ENABLE_BOOL(strip,
2468 [ --enable-strip Enable stripping of libs & executables ],
2472 dnl ========================================================
2473 dnl = Enable stripping of libs & executables when packaging
2474 dnl ========================================================
2475 MOZ_ARG_ENABLE_BOOL(install-strip,
2476 [ --enable-install-strip Enable stripping of libs & executables when packaging ],
2480 dnl ========================================================
2481 dnl = frontend JS debug mode
2482 dnl ========================================================
2484 MOZ_ARG_ENABLE_BOOL(debug-js-modules,
2485 [ --enable-debug-js-modules Enable debug mode for frontend JS libraries],
2489 AC_SUBST(DEBUG_JS_MODULES)
2491 dnl ========================================================
2493 dnl = Profiling and Instrumenting
2495 dnl ========================================================
2496 MOZ_ARG_HEADER(Profiling and Instrumenting)
2498 dnl ========================================================
2499 dnl = Offer a way to disable the startup cache
2500 dnl ========================================================
2502 MOZ_ARG_DISABLE_BOOL(startupcache,
2503 [ --disable-startupcache Disable startup cache ],
2504 MOZ_DISABLE_STARTUPCACHE=1,
2505 MOZ_DISABLE_STARTUPCACHE=)
2507 if test -n "$MOZ_DISABLE_STARTUPCACHE"; then
2508 AC_DEFINE(MOZ_DISABLE_STARTUPCACHE)
2510 AC_SUBST(MOZ_DISABLE_STARTUPCACHE)
2512 dnl ========================================================
2513 dnl = Support for demangling undefined symbols
2514 dnl ========================================================
2515 if test -z "$SKIP_LIBRARY_CHECKS"; then
2518 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
2522 # Demangle only for debug or DMD builds
2523 MOZ_DEMANGLE_SYMBOLS=
2524 if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$MOZ_DMD"; then
2525 MOZ_DEMANGLE_SYMBOLS=1
2526 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
2528 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
2530 dnl ========================================================
2531 dnl = Support for gcc stack unwinding (from gcc 3.3)
2532 dnl ========================================================
2533 if test -z "$SKIP_LIBRARY_CHECKS"; then
2536 MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
2540 dnl ========================================================
2542 dnl ========================================================
2544 MOZ_ARG_WITH_STRING(jitreport-granularity,
2545 [ --jitreport-granularity=N
2546 Default granularity at which to report JIT code
2549 1 - code ranges for whole functions only
2550 2 - per-line information
2551 3 - per-op information],
2552 JITREPORT_GRANULARITY=$withval,
2553 JITREPORT_GRANULARITY=3)
2555 AC_DEFINE_UNQUOTED(JS_DEFAULT_JITREPORT_GRANULARITY, $JITREPORT_GRANULARITY)
2557 dnl ========================================================
2561 dnl ========================================================
2562 MOZ_ARG_HEADER(Misc. Options)
2564 dnl ========================================================
2565 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
2566 dnl ========================================================
2567 MOZ_ARG_WITH_STRING(user-appdir,
2568 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
2569 [ val=`echo $withval`
2570 if echo "$val" | grep "\/" >/dev/null; then
2571 AC_MSG_ERROR("Homedir must be single relative path.")
2576 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
2578 if test -z "$SKIP_COMPILER_CHECKS"; then
2579 dnl ========================================================
2581 dnl = Compiler Options
2583 dnl ========================================================
2584 MOZ_ARG_HEADER(Compiler Options)
2586 dnl ========================================================
2587 dnl Check for gcc -pipe support
2588 dnl ========================================================
2589 AC_MSG_CHECKING([for -pipe support])
2590 if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
2591 dnl Any gcc that supports firefox supports -pipe.
2592 CFLAGS="$CFLAGS -pipe"
2593 CXXFLAGS="$CXXFLAGS -pipe"
2594 AC_MSG_RESULT([yes])
2599 fi # ! SKIP_COMPILER_CHECKS
2601 AC_DEFINE(CPP_THROW_NEW, [throw()])
2604 if test "$COMPILE_ENVIRONMENT"; then
2606 fi # COMPILE_ENVIRONMENT
2608 dnl ========================================================
2610 dnl = Static Build Options
2612 dnl ========================================================
2613 MOZ_ARG_HEADER(Static build options)
2615 if test -z "$MOZ_SYSTEM_ZLIB"; then
2616 if test -n "$JS_SHARED_LIBRARY" -o -n "$MOZ_LINKER"; then
2618 AC_DEFINE(ZLIB_IN_MOZGLUE)
2622 AC_SUBST(ZLIB_IN_MOZGLUE)
2624 dnl ========================================================
2626 dnl = Standalone module options
2628 dnl ========================================================
2629 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
2632 dnl ========================================================
2634 if test -z "$SKIP_PATH_CHECKS"; then
2635 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
2636 if test "$MOZ_ENABLE_GTK" ; then
2637 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
2642 if test -z "${GLIB_GMODULE_LIBS}" \
2643 -a -n "${GLIB_CONFIG}"\
2644 -a "${GLIB_CONFIG}" != no\
2646 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
2649 AC_SUBST_LIST(GLIB_GMODULE_LIBS)
2651 if test "$USE_FC_FREETYPE"; then
2652 if test "$COMPILE_ENVIRONMENT"; then
2653 dnl ========================================================
2654 dnl = Check for freetype2 functionality
2655 dnl ========================================================
2656 if test "$_HAVE_FREETYPE2" -a -z "$MOZ_TREE_FREETYPE"; then
2658 _SAVE_CFLAGS="$CFLAGS"
2659 LIBS="$LIBS $FT2_LIBS"
2660 CFLAGS="$CFLAGS $FT2_CFLAGS"
2662 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
2663 ac_cv_member_FT_Bitmap_Size_y_ppem,
2664 [AC_TRY_COMPILE([#include <ft2build.h>
2665 #include FT_FREETYPE_H],
2667 if (sizeof s.y_ppem) return 0;
2669 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
2670 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
2671 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
2672 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
2674 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
2676 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
2677 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
2678 [FT_Bitmap_Size structure includes y_ppem field])
2680 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table)
2683 CFLAGS="$_SAVE_CFLAGS"
2686 _SAVE_CPPFLAGS="$CPPFLAGS"
2687 CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
2688 MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
2689 [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
2690 CPPFLAGS="$_SAVE_CPPFLAGS"
2694 dnl ========================================================
2695 dnl Check if we need the 32-bit Linux SSE2 error dialog
2696 dnl ========================================================
2698 AC_SUBST(MOZ_LINUX_32_SSE2_STARTUP_ERROR)
2700 dnl ========================================================
2701 dnl Check for pixman and cairo
2702 dnl ========================================================
2705 MOZ_ARG_ENABLE_BOOL(system-cairo,
2706 [ --enable-system-cairo Obsolete: do not use this option],
2707 AC_MSG_ERROR(--enable-system-cairo is not supported),
2711 MOZ_ARG_ENABLE_BOOL(system-pixman,
2712 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
2714 MOZ_TREE_PIXMAN=force,
2717 if test "$MOZ_TREE_PIXMAN"; then
2718 AC_DEFINE(MOZ_TREE_PIXMAN)
2720 PKG_CHECK_MODULES(MOZ_PIXMAN, pixman-1 >= 0.19.2)
2723 MOZ_CAIRO_CFLAGS="-I${DIST}/include/cairo"
2724 AC_DEFINE(MOZ_TREE_CAIRO)
2726 if test "$OS_ARCH" = "WINNT"; then
2727 # For now we assume that we will have a uint64_t available through
2728 # one of the above headers or mozstdint.h.
2729 AC_DEFINE(HAVE_UINT64_T)
2732 # Define macros for cairo-features.h
2733 TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
2734 if test "$MOZ_X11"; then
2735 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
2736 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
2737 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
2739 if test "$_HAVE_FREETYPE2"; then
2740 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
2741 MOZ_ENABLE_CAIRO_FT=1
2742 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
2745 case "$MOZ_WIDGET_TOOLKIT" in
2747 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
2748 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
2749 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
2752 WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
2753 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
2754 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
2756 if test "$COMPILE_ENVIRONMENT"; then
2757 MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
2761 if test "$USE_FC_FREETYPE"; then
2762 FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
2764 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
2765 AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
2767 AC_SUBST(PS_SURFACE_FEATURE)
2768 AC_SUBST(SVG_SURFACE_FEATURE)
2769 AC_SUBST(XLIB_SURFACE_FEATURE)
2770 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
2771 AC_SUBST(QUARTZ_SURFACE_FEATURE)
2772 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
2773 AC_SUBST(WIN32_SURFACE_FEATURE)
2774 AC_SUBST(OS2_SURFACE_FEATURE)
2775 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
2776 AC_SUBST(FT_FONT_FEATURE)
2777 AC_SUBST(FC_FONT_FEATURE)
2778 AC_SUBST(WIN32_FONT_FEATURE)
2779 AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
2780 AC_SUBST(QUARTZ_FONT_FEATURE)
2781 AC_SUBST(PNG_FUNCTIONS_FEATURE)
2782 AC_SUBST(QT_SURFACE_FEATURE)
2783 AC_SUBST(TEE_SURFACE_FEATURE)
2785 if test "$MOZ_X11"; then
2786 MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
2789 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
2791 case "$MOZ_WIDGET_TOOLKIT" in
2793 TK_CFLAGS="$MOZ_CAIRO_CFLAGS $MOZ_PIXMAN_CFLAGS"
2794 TK_LIBS="$MOZ_CAIRO_LIBS $MOZ_PIXMAN_LIBS"
2798 AC_SUBST(MOZ_TREE_CAIRO)
2799 AC_SUBST_LIST(MOZ_CAIRO_CFLAGS)
2800 AC_SUBST_LIST(MOZ_CAIRO_LIBS)
2801 AC_SUBST_LIST(MOZ_CAIRO_OSLIBS)
2802 AC_SUBST(MOZ_TREE_PIXMAN)
2804 BINDGEN_SYSTEM_FLAGS="$_BINDGEN_CFLAGS $NSPR_CFLAGS $NSS_CFLAGS $MOZ_PIXMAN_CFLAGS $MOZ_CAIRO_CFLAGS"
2805 AC_SUBST(BINDGEN_SYSTEM_FLAGS)
2806 BINDGEN_SYSTEM_TOML_FLAGS="$BINDGEN_SYSTEM_FLAGS"
2807 AC_SUBST_TOML_LIST(BINDGEN_SYSTEM_TOML_FLAGS)
2809 dnl ========================================================
2811 dnl ========================================================
2812 MOZ_ARG_DISABLE_BOOL(xul,
2813 [ --disable-xul Disable XUL],
2815 if test "$MOZ_XUL"; then
2818 dnl remove extensions that require XUL
2819 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/irc//' -e 's/tasks//'`
2824 dnl ========================================================
2825 dnl necko configuration options
2826 dnl ========================================================
2829 dnl option to disable necko's wifi scanner
2832 if test "$MOZ_WIDGET_TOOLKIT"; then
2834 case "$OS_TARGET" in
2836 if test -z "$MOZ_IOS"; then
2840 DragonFly|FreeBSD|WINNT)
2851 MOZ_ARG_DISABLE_BOOL(necko-wifi,
2852 [ --disable-necko-wifi Disable necko wifi scanner],
2856 if test "$NECKO_WIFI"; then
2857 if test -z "$MOZ_ENABLE_DBUS" -a -n "$NECKO_WIFI_DBUS"; then
2858 AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi])
2860 AC_DEFINE(NECKO_WIFI)
2861 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_WIFI"
2863 AC_SUBST(NECKO_WIFI)
2864 AC_SUBST(NECKO_WIFI_DBUS)
2867 dnl option to disable cookies
2869 MOZ_ARG_DISABLE_BOOL(cookies,
2870 [ --disable-cookies Disable cookie support],
2873 AC_SUBST(NECKO_COOKIES)
2874 if test "$NECKO_COOKIES"; then
2875 AC_DEFINE(NECKO_COOKIES)
2876 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_COOKIES"
2879 dnl ========================================================
2881 dnl = Maintainer debug option (no --enable equivalent)
2883 dnl ========================================================
2886 AC_SUBST_LIST(ASFLAGS)
2890 AC_SUBST(MOZ_AUTH_EXTENSION)
2891 AC_SUBST(MOZ_PREF_EXTENSIONS)
2892 AC_SUBST_LIST(MOZ_DEBUG_LDFLAGS)
2893 AC_SUBST(WARNINGS_AS_ERRORS)
2894 AC_SUBST_LIST(WARNINGS_CFLAGS)
2895 AC_SUBST_SET(MOZ_EXTENSIONS)
2897 AC_SUBST(MOZ_UNIVERSALCHARDET)
2898 AC_SUBST(MOZ_SPELLCHECK)
2899 AC_SUBST(MOZ_ANDROID_ANR_REPORTER)
2900 AC_SUBST(MOZ_CRASHREPORTER)
2901 AC_SUBST(MOZ_CRASHREPORTER_INJECTOR)
2902 AC_SUBST(MOZ_STUB_INSTALLER)
2903 AC_SUBST(MOZ_ENABLE_SIGNMAR)
2904 AC_SUBST(MOZ_UPDATER)
2906 AC_SUBST(MOZ_ANDROID_APPLICATION_CLASS)
2907 AC_SUBST(MOZ_ANDROID_BROWSER_INTENT_CLASS)
2908 AC_SUBST(MOZ_EXCLUDE_HYPHENATION_DICTIONARIES)
2909 AC_SUBST(ENABLE_STRIP)
2910 AC_SUBST(PKG_SKIP_STRIP)
2911 AC_SUBST(STRIP_FLAGS)
2912 AC_SUBST(INCREMENTAL_LINKER)
2914 AC_SUBST_LIST(MOZ_FIX_LINK_PATHS)
2916 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
2917 AC_SUBST(MOZ_LINKER_EXTRACT)
2919 if test -n "$MOZ_BINARY_EXTENSIONS"; then
2920 AC_DEFINE(MOZ_BINARY_EXTENSIONS)
2923 AC_SUBST(MOZ_REQUIRE_SIGNING)
2924 if test "$MOZ_REQUIRE_SIGNING" = 1; then
2925 AC_DEFINE(MOZ_REQUIRE_SIGNING)
2928 dnl ========================================================
2929 dnl = Mac bundle name prefix
2930 dnl ========================================================
2931 MOZ_ARG_WITH_STRING(macbundlename-prefix,
2932 [ --with-macbundlename-prefix=prefix
2933 Prefix for MOZ_MACBUNDLE_NAME],
2934 [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
2936 MOZ_MACBUNDLE_NAME=$MOZ_APP_DISPLAYNAME
2937 if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
2938 MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
2941 if test "$MOZ_DEBUG"; then
2942 MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME}Debug.app"
2944 MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
2946 AC_SUBST(MOZ_MACBUNDLE_NAME)
2948 dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
2949 # If the MOZ_MACBUNDLE_ID is defined in the configure.sh, use it
2950 # Otherwise, use MOZ_APP_DISPLAYNAME
2951 if test -z "$MOZ_MACBUNDLE_ID"; then
2952 MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr 'A-Z' 'a-z' | tr -dc 'a-z-'`
2954 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
2955 if test "$MOZ_DEBUG"; then
2956 MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
2959 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
2960 AC_SUBST(MOZ_MACBUNDLE_ID)
2962 dnl ========================================================
2963 dnl = Child Process Name for IPC
2964 dnl ========================================================
2965 if test "$MOZ_WIDGET_TOOLKIT" != "android"; then
2966 MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}"
2968 # We want to let Android unpack the file at install time, but it only does
2969 # so if the file is named libsomething.so. The lib/ path is also required
2970 # because the unpacked file will be under the lib/ subdirectory and will
2971 # need to be executed from that path.
2972 MOZ_CHILD_PROCESS_NAME="libplugin-container.so"
2974 MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/"
2975 MOZ_CHILD_PROCESS_BUNDLENAME="${MOZ_APP_DISPLAYNAME}CP"
2977 AC_SUBST(MOZ_CHILD_PROCESS_NAME)
2978 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE)
2979 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLENAME)
2981 # The following variables are available to branding and application
2982 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
2983 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
2984 # impacts profile location and user-visible fields.
2985 # - MOZ_APP_BASENAME: Typically stays consistent for multiple branded
2986 # versions of a given application (e.g. Aurora and Firefox both use
2987 # "Firefox"), but may vary for full rebrandings (e.g. Iceweasel). Used
2988 # for application.ini's "Name" field, which controls profile location in
2989 # the absence of a "Profile" field (see below), and various system
2990 # integration hooks (Unix remoting, Windows MessageWindow name, etc.)
2991 # - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
2992 # Mac Bundle name, Updater, Installer), it is typically used for nightly
2993 # builds (e.g. Aurora for Firefox).
2994 # - MOZ_APP_NAME: Used for e.g. the binary program file name. If not set,
2995 # defaults to a lowercase form of MOZ_APP_BASENAME.
2996 # - MOZ_APP_REMOTINGNAME: Used for the internal program name, which affects
2997 # profile name and remoting. If not set, defaults to MOZ_APP_NAME.
2998 # - MOZ_APP_PROFILE: When set, used for application.ini's
2999 # "Profile" field, which controls profile location.
3000 # - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
3001 # crash reporter server url.
3002 # - MOZ_APP_ANDROID_VERSION_CODE: On Android, "android:versionCode" for
3003 # the main application is set to the value of this variable. If not
3004 # set, it falls back to a Mozilla-specific value derived from the
3006 # - MOZ_ANDROID_SHARED_ID: On Android, "android:sharedUserId" for all Android
3007 # packages produced.
3008 # - MOZ_ANDROID_GCM_SENDERID: On Android, the Android GCM Sender ID used. GCM
3009 # sender IDs are not sensitive: see, http://stackoverflow.com/a/18216063.
3010 # - MOZ_MMA_GCM_SENDERID: This GCM Sender ID is used for MMA integration.
3011 # - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
3013 # The following environment variables used to have an effect, but don't anymore:
3014 # - MOZ_APP_VERSION: Defines the application version number. This was replaced with
3015 # the contents from the version.txt file in the application directory, or
3016 # browser/config/version.txt if there isn't one.
3017 # - MOZ_APP_VERSION_DISPLAY: Defines the application version number. Used
3018 # in the "About" window. This was replaced with the contents from the
3019 # version_display.txt or version.txt in the application directory, or
3020 # browser/config/version_display.txt.
3022 if test -z "$MOZ_APP_NAME"; then
3023 MOZ_APP_NAME=`echo $MOZ_APP_BASENAME | tr A-Z a-z`
3026 if test -z "$MOZ_APP_REMOTINGNAME"; then
3027 MOZ_APP_REMOTINGNAME=$MOZ_APP_NAME
3030 if test -z "$ANDROID_PACKAGE_NAME" ; then
3031 # When we got rid of the Aurora channel we decided to replace the old
3032 # Nightly ANDROID_PACKAGE_NAME with Aurora. To make sure this is inherited
3033 # by all mozilla-central based branches we make this the new "default"
3034 # for Fennec. Non mozilla-central based branches set ANDROID_PACKAGE_NAME
3035 # in their mozconfig, so they will never get this. If there are ever
3036 # non-Fennec builds for Android, they will fall into the else block
3037 # and use their own default name.
3038 # https://bugzilla.mozilla.org/show_bug.cgi?id=1357808 has additional
3039 # background on this.
3040 if test "$MOZ_APP_NAME" = "fennec"; then
3041 ANDROID_PACKAGE_NAME="org.mozilla.fennec_aurora"
3043 ANDROID_PACKAGE_NAME="org.mozilla.$MOZ_APP_NAME"
3047 # Mozilla released Firefox for Android {Release,Beta} and {Aurora,Nightly} to
3048 # the public with specific common shared IDs and we need to keep them
3049 # consistent forever. The specific common values are set by per-channel
3050 # branding; all other channels use a generic sharedID, set below.
3051 if test -z "$MOZ_ANDROID_SHARED_ID" ; then
3052 MOZ_ANDROID_SHARED_ID="${ANDROID_PACKAGE_NAME}.sharedID"
3055 # For extensions and langpacks, we require a max version that is compatible
3056 # across security releases. MOZ_APP_MAXVERSION is our method for doing that.
3057 # 24.0a1 and 24.0a2 aren't affected
3059 # 24.1.1 becomes 24.*
3060 IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
3061 if test -z "$IS_ALPHA"; then
3063 if test "$(basename $MOZ_BUILD_APP)" = "suite"; then
3064 MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\.[0-9]*\).*|\1|"`.*
3066 MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\).*|\1|"`.*
3070 MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
3073 AC_SUBST(MOZ_APP_NAME)
3074 AC_SUBST(MOZ_APP_REMOTINGNAME)
3075 AC_SUBST(MOZ_APP_DISPLAYNAME)
3076 AC_SUBST(MOZ_APP_BASENAME)
3077 AC_SUBST(MOZ_APP_VENDOR)
3078 AC_SUBST(MOZ_APP_PROFILE)
3079 AC_SUBST(MOZ_APP_ID)
3080 AC_SUBST(MOZ_APP_ANDROID_VERSION_CODE)
3081 AC_SUBST(MOZ_ANDROID_SHARED_ID)
3082 AC_SUBST(MOZ_ANDROID_GCM_SENDERID)
3083 AC_SUBST(MOZ_MMA_GCM_SENDERID)
3084 AC_SUBST(MAR_CHANNEL_ID)
3085 AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
3086 AC_SUBST(MOZ_PROFILE_MIGRATOR)
3087 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
3088 AC_SUBST(MOZ_APP_UA_NAME)
3089 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
3090 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL, $BROWSER_CHROME_URL)
3091 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL_QUOTED, "$BROWSER_CHROME_URL")
3093 AC_SUBST(MOZ_APP_MAXVERSION)
3094 AC_SUBST(MOZ_UA_OS_AGNOSTIC)
3095 if test -n "$MOZ_UA_OS_AGNOSTIC"; then
3096 AC_DEFINE(MOZ_UA_OS_AGNOSTIC)
3099 AC_SUBST(MOZ_PKG_SPECIAL)
3100 AC_SUBST(MOZ_SIMPLE_PACKAGE_NAME)
3102 if test "$MOZILLA_OFFICIAL"; then
3103 # Build revisions should always be present in official builds
3104 MOZ_INCLUDE_SOURCE_INFO=1
3107 # External builds (specifically Ubuntu) may drop the hg repo information, so we allow to
3108 # explicitly set the repository and changeset information in.
3109 AC_SUBST(MOZ_SOURCE_REPO)
3110 AC_SUBST(MOZ_SOURCE_CHANGESET)
3111 AC_SUBST(MOZ_INCLUDE_SOURCE_INFO)
3113 dnl If we have any service that uploads data (and requires data submission
3114 dnl policy alert), set MOZ_DATA_REPORTING.
3115 dnl We need SUBST for build system and DEFINE for xul preprocessor.
3116 if test -n "$MOZ_TELEMETRY_REPORTING" || test -n "$MOZ_SERVICES_HEALTHREPORT" || test -n "$MOZ_CRASHREPORTER"; then
3117 MOZ_DATA_REPORTING=1
3118 AC_DEFINE(MOZ_DATA_REPORTING)
3119 AC_SUBST(MOZ_DATA_REPORTING)
3123 AC_SUBST(WIN32_REDIST_DIR)
3124 AC_SUBST(WIN_UCRT_REDIST_DIR)
3126 dnl ========================================================
3128 dnl ========================================================
3132 if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
3138 dnl Echo the CFLAGS to remove extra whitespace.
3140 $_COMPILATION_CFLAGS \
3144 $_WARNINGS_CXXFLAGS \
3145 $_COMPILATION_CXXFLAGS \
3148 COMPILE_CFLAGS=`echo \
3152 COMPILE_CXXFLAGS=`echo \
3153 $_DEFINES_CXXFLAGS \
3157 $_WARNINGS_HOST_CFLAGS \
3158 $_COMPILATION_HOST_CFLAGS \
3161 HOST_CXXFLAGS=`echo \
3162 $_WARNINGS_HOST_CXXFLAGS \
3163 $_COMPILATION_HOST_CXXFLAGS \
3166 AC_SUBST(MOZ_SYSTEM_PNG)
3168 AC_SUBST_LIST(MOZ_PNG_CFLAGS)
3169 AC_SUBST_LIST(MOZ_PNG_LIBS)
3171 AC_SUBST(MOZ_SYSTEM_NSPR)
3173 AC_SUBST(MOZ_SYSTEM_NSS)
3175 HOST_CMFLAGS="-x objective-c -fobjc-exceptions"
3176 HOST_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
3177 OS_COMPILE_CMFLAGS="-x objective-c -fobjc-exceptions"
3178 OS_COMPILE_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
3179 if test "$MOZ_WIDGET_TOOLKIT" = uikit; then
3180 OS_COMPILE_CMFLAGS="$OS_COMPILE_CMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
3181 OS_COMPILE_CMMFLAGS="$OS_COMPILE_CMMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
3183 AC_SUBST(HOST_CMFLAGS)
3184 AC_SUBST(HOST_CMMFLAGS)
3185 AC_SUBST(OS_COMPILE_CMFLAGS)
3186 AC_SUBST(OS_COMPILE_CMMFLAGS)
3189 OS_CXXFLAGS="$CXXFLAGS"
3190 OS_CPPFLAGS="$CPPFLAGS"
3191 OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
3192 OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
3193 OS_LDFLAGS="$LDFLAGS"
3195 AC_SUBST_LIST(OS_CFLAGS)
3196 AC_SUBST_LIST(OS_CXXFLAGS)
3197 AC_SUBST_LIST(OS_CPPFLAGS)
3198 AC_SUBST_LIST(OS_COMPILE_CFLAGS)
3199 AC_SUBST_LIST(OS_COMPILE_CXXFLAGS)
3200 AC_SUBST_LIST(OS_LDFLAGS)
3205 AC_SUBST_LIST(HOST_CFLAGS)
3206 AC_SUBST_LIST(HOST_CPPFLAGS)
3207 AC_SUBST_LIST(HOST_CXXFLAGS)
3208 AC_SUBST(HOST_LDFLAGS)
3209 AC_SUBST_LIST(HOST_OPTIMIZE_FLAGS)
3210 AC_SUBST(HOST_BIN_SUFFIX)
3212 AC_SUBST(TARGET_XPCOM_ABI)
3213 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
3214 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1)
3215 AC_SUBST(HAVE_X86_AVX2)
3216 AC_SUBST(HAVE_ALTIVEC)
3218 AC_SUBST_LIST(DSO_CFLAGS)
3219 AC_SUBST_LIST(DSO_PIC_CFLAGS)
3220 AC_SUBST(DSO_LDOPTS)
3221 AC_SUBST(BIN_SUFFIX)
3223 AC_SUBST(NS_ENABLE_TSF)
3224 AC_SUBST(WIN32_CONSOLE_EXE_LDFLAGS)
3225 AC_SUBST(WIN32_GUI_EXE_LDFLAGS)
3227 AC_SUBST(MOZ_DEVTOOLS)
3229 AC_SUBST(MOZ_PACKAGE_JSSHELL)
3230 AC_SUBST(MOZ_FOLD_LIBS)
3231 AC_SUBST_LIST(MOZ_FOLD_LIBS_FLAGS)
3235 dnl Host JavaScript runtime, if any, to use during cross compiles.
3238 AC_SUBST(NSS_EXTRA_SYMBOLS_FILE)
3240 if test -n "$COMPILE_ENVIRONMENT"; then
3241 AC_CHECK_FUNCS(posix_fadvise posix_fallocate)
3243 dnl Check for missing components
3244 if test "$MOZ_X11"; then
3245 dnl ====================================================
3246 dnl = Check if X headers exist
3247 dnl ====================================================
3248 _SAVE_CFLAGS=$CFLAGS
3249 CFLAGS="$CFLAGS $XCFLAGS"
3253 #include <X11/Xlib.h>
3254 #include <X11/Intrinsic.h>
3255 #include <X11/extensions/XShm.h>
3259 if ((dpy = XOpenDisplay(NULL)) == NULL) {
3260 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
3264 [ AC_MSG_ERROR([Can't find X headers (install libxt-dev (Debian/Ubuntu), libXt-devel (Fedora), or xorg-x11-libXt-devel (SuSE)).]) ])
3265 CFLAGS="$_SAVE_CFLAGS"
3267 if test -n "$MISSING_X"; then
3268 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
3273 fi # COMPILE_ENVIRONMENT
3275 dnl Set various defines and substitutions
3276 dnl ========================================================
3278 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK" ; then
3279 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
3280 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
3281 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
3282 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
3283 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
3284 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
3285 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
3286 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
3289 AC_SUBST(MOZ_DEV_EDITION)
3290 if test -n "$MOZ_DEV_EDITION"; then
3291 AC_DEFINE(MOZ_DEV_EDITION)
3294 if test "$MOZ_DEBUG" -o "$DEVELOPER_OPTIONS"; then
3298 if test -n "$A11Y_LOG"; then
3302 dnl Spit out some output
3303 dnl ========================================================
3305 dnl The following defines are used by xpcom
3306 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
3319 # Avoid using obsolete NSPR features
3320 AC_DEFINE(NO_NSPR_10_SUPPORT)
3322 MOZ_CREATE_CONFIG_STATUS()
3324 rm -fr confdefs* $ac_clean_files