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 two 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 ========================================================
54 dnl Set the minimum version of toolkit libs used by mozilla
55 dnl ========================================================
57 # 2_26 is the earliest version we can set GLIB_VERSION_MIN_REQUIRED.
58 # The macro won't be used when compiling with earlier versions anyway.
59 GLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26
63 GDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_4
64 WINDRES_VERSION=2.14.90
67 STARTUP_NOTIFICATION_VERSION=0.8
71 dnl Set various checks
72 dnl ========================================================
75 dnl Initialize the Pthread test variables early so they can be
76 dnl overridden by each platform.
77 dnl ========================================================
81 LDFLAGS="$LDFLAGS $LINKER_LDFLAGS"
83 if test "$COMPILE_ENVIRONMENT"; then
85 fi # COMPILE_ENVIRONMENT
88 *-android*|*-linuxandroid*)
92 AC_PATH_PROG(OBJCOPY,objcopy)
102 AC_SUBST(ANDROID_SOURCE)
103 AC_SUBST(ANDROID_PACKAGE_NAME)
106 dnl ========================================================
107 dnl Checks for compilers.
108 dnl ========================================================
110 dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269)
113 if test "$COMPILE_ENVIRONMENT"; then
115 if test "$target" != "$host"; then
121 # Work around the conftest.exe access problem on Windows
126 MOZ_PATH_PROGS(AS, $AS as, $CC)
127 AC_CHECK_PROGS(AR, ar, :)
128 AC_CHECK_PROGS(STRIP, strip, :)
129 AC_CHECK_PROGS(WINDRES, windres, :)
130 AC_CHECK_PROGS(OTOOL, otool, :)
131 if test -z "$HOST_RANLIB"; then
132 HOST_RANLIB="$RANLIB"
134 if test -z "$HOST_AR"; then
137 if test -z "$HOST_AR_FLAGS"; then
138 HOST_AR_FLAGS="$AR_FLAGS"
142 if test -n "$MOZ_WINCONSOLE"; then
143 AC_DEFINE(MOZ_WINCONSOLE)
148 dnl ========================================================
149 dnl Special win32 checks
150 dnl ========================================================
156 if test "$GCC" != "yes"; then
157 # Check to see if we are really running in a msvc environemnt
160 # Make sure compilers are valid
161 CFLAGS="$CFLAGS -nologo"
162 CXXFLAGS="$CXXFLAGS -TP -nologo"
165 AC_TRY_COMPILE([#include <stdio.h>],
166 [ printf("Hello World\n"); ],,
167 AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
170 AC_TRY_COMPILE([#include <new.h>],
171 [ unsigned *test = new unsigned(42); ],,
172 AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
176 _MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
179 _MSC_VER=`echo ${CC_VERSION} | cut -c 1-2,4-5`
181 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
182 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
183 AC_DEFINE(_USE_MATH_DEFINES) # Otherwise MSVC's math.h doesn't #define M_PI.
186 MSVC_C_RUNTIME_DLL=vcruntime140.dll
187 MSVC_CXX_RUNTIME_DLL=msvcp140.dll
189 MOZ_CHECK_HEADER(dia2.h, MSVC_HAS_DIA_SDK=1)
190 if test -n "$MSVC_HAS_DIA_SDK"; then
191 AC_DEFINE(MSVC_HAS_DIA_SDK)
194 if test "$_MSC_VER" -ge "1910"; then # VS2017+
195 # C5038: Enable initializer list order warnings
196 # The -w1#### flag treats warning C#### as if it was a warning level
197 # 1 warning, and thus enables it because we enable /W3 warnings. We
198 # don't use -we#### because it would enable warning C#### but treat
199 # it as an error, even in third-party code.
200 # https://docs.microsoft.com/en-us/cpp/build/reference/compiler-option-warning-level
201 CXXFLAGS="$CXXFLAGS -w15038"
204 # C5026: move constructor was implicitly defined as deleted
205 CXXFLAGS="$CXXFLAGS -wd5026"
207 # C5027: move assignment operator was implicitly defined as deleted
208 CXXFLAGS="$CXXFLAGS -wd5027"
210 # -Zc:sizedDealloc- disables C++14 global sized deallocation (see bug 1160146)
211 CXXFLAGS="$CXXFLAGS -Zc:sizedDealloc-"
213 # https://connect.microsoft.com/VisualStudio/feedback/details/888527/warnings-on-dbghelp-h
214 # for dbghelp.h, imagehlp.h, and shobj.h
215 # C4091: 'typedef ': ignored on left of '' when no variable is declared
216 CFLAGS="$CFLAGS -wd4091"
217 CXXFLAGS="$CXXFLAGS -wd4091"
219 # This is intended as a temporary hack to support building with VS2015.
220 # 'noexcept' used with no exception handling mode specified;
221 # termination on exception is not guaranteed. Specify /EHsc
222 CXXFLAGS="$CXXFLAGS -wd4577"
224 if test -n "$WIN_UCRT_REDIST_DIR"; then
225 if test ! -d "$WIN_UCRT_REDIST_DIR"; then
226 AC_MSG_ERROR([Invalid Windows UCRT Redist directory: ${WIN_UCRT_REDIST_DIR}])
228 WIN_UCRT_REDIST_DIR=`cd "$WIN_UCRT_REDIST_DIR" && pwd -W`
231 if test -n "$WIN_DIA_SDK_BIN_DIR"; then
232 if test ! -d "$WIN_DIA_SDK_BIN_DIR"; then
233 AC_MSG_ERROR([Invalid Windows DIA SDK directory: ${WIN_DIA_SDK_BIN_DIR}])
235 WIN_DIA_SDK_BIN_DIR=`cd "$WIN_DIA_SDK_BIN_DIR" && pwd -W`
238 AC_SUBST(MSVC_HAS_DIA_SDK)
239 AC_SUBST(MSVC_C_RUNTIME_DLL)
240 AC_SUBST(MSVC_CXX_RUNTIME_DLL)
242 AC_DEFINE(HAVE_SEH_EXCEPTIONS)
244 if test -n "$WIN32_REDIST_DIR"; then
245 if test ! -d "$WIN32_REDIST_DIR"; then
246 AC_MSG_ERROR([Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}])
248 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd -W`
251 # Check linker version, except in lld builds
256 _LD_FULL_VERSION=`"${LINKER}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
257 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
258 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
259 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
266 unset _MSVC_VER_FILTER
269 STL_FLAGS="-I${DIST}/stl_wrappers"
270 CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0"
271 CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0"
273 # Check w32api version
274 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
275 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
276 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
277 AC_TRY_COMPILE([#include <w32api.h>],
278 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
279 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
280 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
281 #error "test failed."
283 , [ res=yes ], [ res=no ])
284 AC_MSG_RESULT([$res])
285 if test "$res" != "yes"; then
286 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
288 # Check windres version
289 AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
290 _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
291 AC_MSG_RESULT([$_WINDRES_VERSION])
292 _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
293 _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
294 _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
295 WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
296 WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
297 WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
298 if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
299 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
300 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
301 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
302 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
303 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
305 AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
308 # strsafe.h on mingw uses macros for function deprecation that pollutes namespace
309 # causing problems with local implementations with the same name.
310 AC_DEFINE(STRSAFE_NO_DEPRECATE)
313 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
314 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
315 # Require OS features provided by IE 8.0 (Win7)
316 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0800)
321 if test -n "$_WIN32_MSVC"; then
323 SKIP_COMPILER_CHECKS=1
324 SKIP_LIBRARY_CHECKS=1
326 # Since we're skipping compiler and library checks, hard-code
329 AC_DEFINE(HAVE_ISATTY)
332 fi # COMPILE_ENVIRONMENT
339 AC_SUBST_LIST(STL_FLAGS)
340 AC_SUBST(WRAP_STL_INCLUDES)
342 dnl ========================================================
343 dnl Checks for programs.
344 dnl ========================================================
345 if test "$COMPILE_ENVIRONMENT"; then
347 dnl ========================================================
348 dnl = Mac OS X SDK support
349 dnl ========================================================
351 MOZ_ARG_WITH_STRING(macos-sdk,
352 [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
353 MACOS_SDK_DIR=$withval)
355 MACOS_PRIVATE_FRAMEWORKS_DIR_DEFAULTED=
356 MOZ_ARG_WITH_STRING(macos-private-frameworks,
357 [ --with-macos-private-frameworks=dir Location of private frameworks to use (Mac OS X only)],
358 MACOS_PRIVATE_FRAMEWORKS_DIR=$withval,
359 MACOS_PRIVATE_FRAMEWORKS_DIR=/System/Library/PrivateFrameworks
360 MACOS_PRIVATE_FRAMEWORKS_DEFAULTED=1)
362 if test -z "${MACOS_PRIVATE_FRAMEWORKS_DEFAULTED}"; then
363 if test -z "$CROSS_COMPILE"; then
364 AC_MSG_WARN([You should only be using --with-macos-private-frameworks when cross-compiling.])
366 if test ! -d "$MACOS_PRIVATE_FRAMEWORKS_DIR"; then
367 AC_MSG_ERROR([PrivateFrameworks directory not found.])
371 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
372 AC_SUBST(MACOS_SDK_DIR)
373 AC_SUBST(MACOS_PRIVATE_FRAMEWORKS_DIR)
375 if test "$MACOS_SDK_DIR"; then
376 dnl Sync this section with the ones in NSPR and NSS.
377 dnl Changes to the cross environment here need to be accounted for in
378 dnl the libIDL checks (below) and xpidl build.
380 if test ! -d "$MACOS_SDK_DIR"; then
381 AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
382 specify a valid SDK. SDKs are installed when the optional cross-development
383 tools are selected during the Xcode/Developer Tools installation.])
386 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
387 CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
389 dnl CPP/CXXCPP needs to be set for MOZ_CHECK_HEADER.
390 CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
391 CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
394 AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
396 AC_TRY_COMPILE([#include <new>],[],
400 AC_MSG_RESULT($result)
402 if test "$result" = "no" ; then
403 AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
411 fi # COMPILE_ENVIRONMENT
413 dnl ========================================================
414 dnl set the defaults first
415 dnl ========================================================
417 MOZ_USER_DIR=".mozilla"
419 MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib"
423 dnl Configure platform-specific CPU architecture compiler options.
424 dnl ==============================================================
425 if test "$COMPILE_ENVIRONMENT"; then
428 if test "$OS_TARGET" = Android; then
429 dnl Default Android builds to ARMv7.
432 fi # COMPILE_ENVIRONMENT
434 dnl ========================================================
435 dnl Android libstdc++, placed here so it can use MOZ_ARCH
437 dnl ========================================================
440 if test "$COMPILE_ENVIRONMENT"; then
442 fi # COMPILE_ENVIRONMENT
444 dnl ========================================================
445 dnl Suppress Clang Argument Warnings
446 dnl ========================================================
447 WARNINGS_CFLAGS="$_WARNINGS_CFLAGS"
448 if test -n "${CLANG_CC}${CLANG_CL}"; then
449 WARNINGS_CFLAGS="-Qunused-arguments $WARNINGS_CFLAGS"
450 CPPFLAGS="-Qunused-arguments ${CPPFLAGS}"
452 if test -n "${CLANG_CXX}${CLANG_CL}"; then
453 _WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}"
456 if test -n "$COMPILE_ENVIRONMENT"; then
460 dnl ========================================================
461 dnl Add optional and non-optional hardening flags
462 dnl ========================================================
464 CFLAGS="$CFLAGS $MOZ_HARDENING_CFLAGS"
465 CPPFLAGS="$CPPFLAGS $MOZ_HARDENING_CFLAGS"
466 CXXFLAGS="$CXXFLAGS $MOZ_HARDENING_CFLAGS"
468 dnl ========================================================
469 dnl GNU specific defaults
470 dnl ========================================================
471 if test "$GNU_CC"; then
475 SSSE3_FLAGS="-mssse3"
476 # FIXME: Let us build with strict aliasing. bug 414641.
477 CFLAGS="$CFLAGS -fno-strict-aliasing"
478 WARNINGS_AS_ERRORS='-Werror'
481 if test "$OS_ARCH" != "WINNT" -o -z "$CLANG_CC"; then
482 DSO_PIC_CFLAGS='-fPIC'
483 ASFLAGS="$ASFLAGS -fPIC"
486 AC_MSG_CHECKING([for --noexecstack option to as])
488 CFLAGS="$CFLAGS -Wa,--noexecstack"
489 AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
490 [ASFLAGS="$ASFLAGS -Wa,--noexecstack"],
493 AC_MSG_CHECKING([for -z noexecstack option to ld])
494 _SAVE_LDFLAGS=$LDFLAGS
495 LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
496 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
498 LDFLAGS=$_SAVE_LDFLAGS)
500 AC_MSG_CHECKING([for -z text option to ld])
501 _SAVE_LDFLAGS=$LDFLAGS
502 LDFLAGS="$LDFLAGS -Wl,-z,text"
503 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
505 LDFLAGS=$_SAVE_LDFLAGS)
507 AC_MSG_CHECKING([for -z relro option to ld])
508 _SAVE_LDFLAGS=$LDFLAGS
509 LDFLAGS="$LDFLAGS -Wl,-z,relro"
510 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
512 LDFLAGS=$_SAVE_LDFLAGS)
514 AC_MSG_CHECKING([for -z nocopyreloc option to ld])
515 _SAVE_LDFLAGS=$LDFLAGS
516 LDFLAGS="$LDFLAGS -Wl,-z,nocopyreloc"
517 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
519 LDFLAGS=$_SAVE_LDFLAGS)
521 AC_MSG_CHECKING([for -Bsymbolic-functions option to ld])
522 _SAVE_LDFLAGS=$LDFLAGS
523 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
524 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
526 LDFLAGS=$_SAVE_LDFLAGS)
528 AC_MSG_CHECKING([for --build-id=sha1 option to ld])
529 _SAVE_LDFLAGS=$LDFLAGS
530 LDFLAGS="$LDFLAGS -Wl,--build-id=sha1"
531 AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
533 LDFLAGS=$_SAVE_LDFLAGS)
535 AC_MSG_CHECKING([for --ignore-unresolved-symbol option to ld])
536 HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=
537 _SAVE_LDFLAGS=$LDFLAGS
538 LDFLAGS="$LDFLAGS -Wl,--ignore-unresolved-symbol,environ"
539 AC_TRY_LINK(,,AC_MSG_RESULT([yes])
540 [HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=1],
542 LDFLAGS=$_SAVE_LDFLAGS
544 # Check for -mssse3 on $CC
545 AC_MSG_CHECKING([if toolchain supports -mssse3 option])
546 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=
548 CFLAGS="$CFLAGS -mssse3"
549 AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes])
550 [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1],
554 # Check for -msse4.1 on $CC
555 AC_MSG_CHECKING([if toolchain supports -msse4.1 option])
556 HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=
558 CFLAGS="$CFLAGS -msse4.1"
559 AC_TRY_COMPILE([asm ("pmulld %xmm6,%xmm0");],,AC_MSG_RESULT([yes])
560 [HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1],
564 case "${CPU_ARCH}" in
566 AC_MSG_CHECKING(for x86 AVX2 asm support in compiler)
568 [asm volatile ("vpermq \$0xd8,%ymm0,%ymm0 \n");],
569 result="yes", result="no")
570 AC_MSG_RESULT("$result")
571 if test "$result" = "yes"; then
577 AC_MSG_CHECKING([whether we can enable AltiVec support])
580 CFLAGS="$CFLAGS -maltivec"
581 AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
589 if test "$GCC_USE_GNU_LD"; then
590 # Some tools like ASan use a runtime library that is only
591 # linked against executables, so we must allow undefined
592 # symbols for shared objects in some cases.
593 if test -z "$MOZ_ASAN$MOZ_MSAN$MOZ_UBSAN$MOZ_TSAN$FUZZING_INTERFACES"; then
594 # Don't allow undefined symbols in libraries
595 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
597 # BSDs need `environ' exposed for posix_spawn (bug 753046)
599 DragonFly|FreeBSD|NetBSD|OpenBSD)
600 if test -n "$HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED"; then
601 DSO_LDOPTS="$DSO_LDOPTS -Wl,--ignore-unresolved-symbol,environ"
603 DSO_LDOPTS="$DSO_LDOPTS -Wl,--warn-unresolved-symbols"
610 _DEFINES_CFLAGS="-include $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
611 _USE_CPP_INCLUDE_FLAG=1
613 ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS"
616 if test "$GNU_CXX"; then
617 # FIXME: Let us build with strict aliasing. bug 414641.
618 CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing"
620 _DEFINES_CXXFLAGS="-DMOZILLA_CLIENT -include $_objdir/mozilla-config.h"
621 _USE_CPP_INCLUDE_FLAG=1
624 # For profiling builds keep the symbol information
625 if test "$MOZ_PROFILING" -a -z "$STRIP_FLAGS"; then
627 Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
628 STRIP_FLAGS="--strip-debug"
633 dnl ========================================================
635 dnl ========================================================
637 if test "$MOZ_DMD"; then
638 if test "${CPU_ARCH}" = "arm"; then
639 CFLAGS="$CFLAGS -funwind-tables"
640 CXXFLAGS="$CXXFLAGS -funwind-tables"
644 dnl ========================================================
645 dnl System overrides of the defaults for host
646 dnl ========================================================
649 if test -n "$_WIN32_MSVC"; then
651 HOST_AR_FLAGS='-NOLOGO -OUT:$@'
652 HOST_CFLAGS="$HOST_CFLAGS -nologo"
653 HOST_RANLIB='echo ranlib'
655 HOST_CFLAGS="$HOST_CFLAGS -mwindows"
657 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -D_CRT_SECURE_NO_WARNINGS"
658 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
661 case "${host_cpu}" in
663 if test -n "$_WIN32_MSVC"; then
664 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
668 if test -n "$_WIN32_MSVC"; then
669 HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
671 HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
677 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX"
678 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
681 *-linux*|*-kfreebsd*-gnu|*-gnu*)
682 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
683 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
687 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
688 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
692 MOZ_DOING_LTO(lto_is_enabled)
694 dnl ========================================================
695 dnl System overrides of the defaults for target
696 dnl ========================================================
700 MOZ_OPTIMIZE_FLAGS="-O3"
701 CXXFLAGS="$CXXFLAGS -stdlib=libc++"
703 STRIP_FLAGS="$STRIP_FLAGS -x -S"
704 # Ensure that if we're targeting iOS an SDK was provided.
705 AC_CACHE_CHECK(for iOS target,
707 [AC_TRY_COMPILE([#include <TargetConditionals.h>
708 #if !(TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)
712 ac_cv_ios_target="yes",
713 ac_cv_ios_target="no")])
714 if test "$ac_cv_ios_target" = "yes" -a -z $MOZ_IOS; then
715 AC_MSG_ERROR([targeting iOS but not using an iOS SDK?])
717 if test -n "$MOZ_IOS"; then
720 # The ExceptionHandling framework is needed for Objective-C exception
721 # logging code in nsObjCExceptions.h. Currently we only use that in debug
723 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling";
726 if test "x$lto_is_enabled" = "xyes"; then
727 echo "Skipping -dead_strip because lto is enabled."
728 dnl DTrace and -dead_strip don't interact well. See bug 403132.
729 dnl ===================================================================
730 elif test "x$enable_dtrace" = "xyes"; then
731 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
733 dnl check for the presence of the -dead_strip linker flag
734 AC_MSG_CHECKING([for -dead_strip option to ld])
735 _SAVE_LDFLAGS=$LDFLAGS
736 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
737 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
738 if test -n "$_HAVE_DEAD_STRIP" ; then
740 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
745 LDFLAGS=$_SAVE_LDFLAGS
748 MOZ_FIX_LINK_PATHS="-Wl,-executable_path,${DIST}/bin"
751 *-android*|*-linuxandroid*)
752 AC_DEFINE(NO_PW_GECOS)
754 if test "$COMPILE_ENVIRONMENT"; then
758 MOZ_GFX_OPTIMIZE_MOBILE=1
759 if test -z "$CLANG_CC"; then
760 MOZ_OPTIMIZE_FLAGS="-freorder-blocks -fno-reorder-functions -Os"
762 # From https://github.com/android-ndk/ndk/issues/133#issuecomment-308549264
763 # -Oz is smaller than -Os on clang.
764 MOZ_OPTIMIZE_FLAGS="-Oz"
769 if test "$GNU_CC" -o "$GNU_CXX"; then
770 MOZ_PGO_OPTIMIZE_FLAGS="-O3"
771 if test -n "$MOZ_DEBUG"; then
772 MOZ_OPTIMIZE_FLAGS="-Os"
774 MOZ_OPTIMIZE_FLAGS="-O2"
776 if test -z "$CLANG_CC"; then
777 MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS"
781 case "${target_cpu}" in
783 CFLAGS="$CFLAGS -mieee"
784 CXXFLAGS="$CXXFLAGS -mieee"
792 # certain versions of cygwin's makedepend barf on the
793 # #include <string> vs -I./dist/include/string issue so don't use it
794 if test -n "$GNU_CC" -o -n "$CLANG_CC"; then
798 CFLAGS="$CFLAGS -mms-bitfields"
799 CXXFLAGS="$CXXFLAGS -mms-bitfields"
802 # Use temp file for windres (bug 213281)
803 RCFLAGS='-O coff --use-temp-file'
804 # mingw doesn't require kernel32, user32, and advapi32 explicitly
805 LIBS="$LIBS -luuid -lusp10 -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32"
808 MOZ_OPTIMIZE_FLAGS="-O1"
810 WIN32_CONSOLE_EXE_LDFLAGS=-mconsole
811 WIN32_GUI_EXE_LDFLAGS=-mwindows
813 if test -z "$CLANG_CC"; then
814 # Use static libgcc and libstdc++
815 LDFLAGS="$LDFLAGS -static"
817 # GCC/binutils can't link to a function if we try to include dllexport function
818 # in the same library as dllimport caller. To work around it, we build NSPR
819 # and NSS with -mnop-fun-dllimport flag. The drawback of this solution is that
820 # function thunks need to be generated for cross-DLL calls.
821 MOZ_FOLD_LIBS_FLAGS="-mnop-fun-dllimport"
823 # Silence problematic clang warnings
824 CXXFLAGS="$CXXFLAGS -Wno-incompatible-ms-struct"
827 TARGET_COMPILER_ABI=msvc
831 AR_FLAGS='-llvmlibthin -out:$@'
835 AR_FLAGS='-NOLOGO -OUT:$@'
839 RANLIB='echo not_ranlib'
840 STRIP='echo not_strip'
842 # aarch64 doesn't support subsystems below 6.02
843 if test "$CPU_ARCH" = "aarch64"; then
844 WIN32_SUBSYSTEM_VERSION=6.02
846 WIN32_SUBSYSTEM_VERSION=6.01
848 WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION
849 WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
850 DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
851 _USE_CPP_INCLUDE_FLAG=1
852 _DEFINES_CFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
853 _DEFINES_CXXFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
854 CFLAGS="$CFLAGS -W3 -Gy -Zc:inline"
855 CXXFLAGS="$CXXFLAGS -W3 -Gy -Zc:inline"
856 if test -z "$CLANG_CL"; then
857 CPPFLAGS="$CPPFLAGS -utf-8"
859 if test "$CPU_ARCH" = "x86"; then
860 dnl VS2012+ defaults to -arch:SSE2. We want to target nothing
861 dnl more recent, so set that explicitly here unless another
862 dnl target arch has already been set.
864 if test -z `echo $CFLAGS | grep -i [-/]arch:`; then
865 CFLAGS="$CFLAGS -arch:SSE2"
867 if test -z `echo $CXXFLAGS | grep -i [-/]arch:`; then
868 CXXFLAGS="$CXXFLAGS -arch:SSE2"
871 SSE_FLAGS="-arch:SSE"
872 SSE2_FLAGS="-arch:SSE2"
873 dnl MSVC allows the use of intrinsics without any flags
874 dnl and doesn't have a separate arch for SSSE3
875 SSSE3_FLAGS="-arch:SSE2"
877 dnl clang-cl requires appropriate flags to enable SSSE3 support
878 dnl on all architectures.
879 if test -n "$CLANG_CL"; then
880 SSSE3_FLAGS="-mssse3"
882 dnl VS2013+ supports -Gw for better linker optimizations.
883 dnl http://blogs.msdn.com/b/vcblog/archive/2013/09/11/introducing-gw-compiler-switch.aspx
884 dnl Disabled on ASan because it causes false-positive ODR violations.
885 if test -z "$MOZ_ASAN"; then
887 CXXFLAGS="$CXXFLAGS -Gw"
889 # khuey says we can safely ignore MSVC warning C4251
890 # MSVC warning C4244 (implicit type conversion may lose data) warns
891 # and requires workarounds for perfectly valid code. Also, GCC/clang
892 # don't warn about it by default. So for consistency/sanity, we turn
893 # it off on MSVC, too.
894 # MSVC warning C4267 warns for narrowing type conversions from size_t
895 # to 32-bit integer types on 64-bit platforms. Since this is virtually
896 # the same thing as C4244, we disable C4267, too.
897 # MSVC warning C4800 warns when a value is implicitly cast to bool,
898 # because this also forces narrowing to a single byte, which can be a
899 # perf hit. But this matters so little in practice (and often we want
900 # that behavior) that it's better to turn it off.
901 # MSVC warning C4595 warns non-member operator new or delete functions
902 # may not be declared inline, as of VS2015 Update 2.
903 CFLAGS="$CFLAGS -wd4244 -wd4267"
904 CXXFLAGS="$CXXFLAGS -wd4251 -wd4244 -wd4267 -wd4800 -wd4595"
905 # Silence "warning C4065: switch statement contains 'default' but no
906 # 'case' labels". See bug 1461304.
907 CXXFLAGS="$CXXFLAGS -wd4065"
908 if test -n "$CLANG_CL"; then
909 # XXX We should combine some of these with our generic GCC-style
912 # Suppress the clang-cl warning for the inline 'new' and 'delete' in mozalloc
913 CXXFLAGS="$CXXFLAGS -Wno-inline-new-delete"
914 # We use offsetof on non-POD objects all the time.
915 # We also suppress this warning on other platforms.
916 CXXFLAGS="$CXXFLAGS -Wno-invalid-offsetof"
917 # This warns for reasonable things like:
918 # enum { X = 0xffffffffU };
919 # which is annoying for IDL headers.
920 CXXFLAGS="$CXXFLAGS -Wno-microsoft-enum-value"
921 # This warns for cases that would be reached by the Microsoft
922 # #include rules, but also currently warns on cases that would
923 # *also* be reached by standard C++ include rules. That
924 # behavior doesn't seem useful, so we turn it off.
925 CXXFLAGS="$CXXFLAGS -Wno-microsoft-include"
926 # We normally error out on unknown pragmas, but since clang-cl
927 # claims to be MSVC, it would be difficult to add
928 # #if defined(_MSC_VER) && !defined(__clang__) everywhere we
929 # use such pragmas, so just ignore them.
930 CFLAGS="$CFLAGS -Wno-unknown-pragmas"
931 CXXFLAGS="$CXXFLAGS -Wno-unknown-pragmas"
932 # We get errors about various #pragma intrinsic directives from
933 # clang-cl, and we don't need to hear about those.
934 CFLAGS="$CFLAGS -Wno-ignored-pragmas"
935 CXXFLAGS="$CXXFLAGS -Wno-ignored-pragmas"
936 # clang-cl's Intrin.h marks things like _ReadWriteBarrier
937 # as __attribute((__deprecated__)). This is nice to know,
938 # but since we don't get the equivalent warning from MSVC,
939 # let's just ignore it.
940 CFLAGS="$CFLAGS -Wno-deprecated-declarations"
941 CXXFLAGS="$CXXFLAGS -Wno-deprecated-declarations"
942 # We use a function like:
943 # __declspec(noreturn) __inline void f() {}
944 # which -Winvalid-noreturn complains about. Again, MSVC seems
945 # OK with it, so let's silence the warning.
946 CFLAGS="$CFLAGS -Wno-invalid-noreturn"
947 CXXFLAGS="$CXXFLAGS -Wno-invalid-noreturn"
948 # Missing |override| on virtual function declarations isn't
949 # something that MSVC currently warns about.
950 CXXFLAGS="$CXXFLAGS -Wno-inconsistent-missing-override"
951 # We use -DHAS_EXCEPTIONS=0, which removes the |throw()|
952 # declaration on |operator delete(void*)|. However, clang-cl
953 # must internally declare |operator delete(void*)| differently,
954 # which causes this warning for virtually every file in the
955 # tree. clang-cl doesn't support -fno-exceptions or equivalent,
956 # so there doesn't seem to be any way to convince clang-cl to
957 # declare |delete| differently. Therefore, suppress this
959 CXXFLAGS="$CXXFLAGS -Wno-implicit-exception-spec-mismatch"
960 # At least one MSVC header and several headers in-tree have
961 # unused typedefs, so turn this on.
962 CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"
963 # jemalloc uses __declspec(allocator) as a profiler hint,
964 # which clang-cl doesn't understand.
965 CXXFLAGS="$CXXFLAGS -Wno-ignored-attributes"
966 # __attribute__((unused)) really means "might be unused" and
967 # we use it to avoid warnings about things that are unused
968 # in some compilation units, but used in many others. This
969 # warning insists on complaining about the latter case, which
970 # is annoying, and rather noisy.
971 CXXFLAGS="$CXXFLAGS -Wno-used-but-marked-unused"
973 # make 'foo == bar;' error out
974 CFLAGS="$CFLAGS -we4553"
975 CXXFLAGS="$CXXFLAGS -we4553"
976 # Silence VS2017 15.5+ TR1 deprecation warnings hit by older gtest versions
977 CXXFLAGS="$CXXFLAGS -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING"
978 LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib"
979 MOZ_DEBUG_LDFLAGS='-DEBUG'
980 WARNINGS_AS_ERRORS='-WX'
981 # Use a higher optimization level for clang-cl, so we can come closer
982 # to MSVC's performance numbers (see bug 1443590).
983 if test -n "$CLANG_CL"; then
984 MOZ_OPTIMIZE_FLAGS='-O2'
986 MOZ_OPTIMIZE_FLAGS='-O1 -Oi'
989 LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE"
990 if test -z "$DEVELOPER_OPTIONS"; then
991 LDFLAGS="$LDFLAGS -RELEASE"
994 dnl Minimum reqiurement of Gecko is VS2015 or later which supports
995 dnl both SSSE3 and SSE4.1.
996 HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1
997 HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1
998 dnl allow AVX2 code from VS2015
1001 AC_DEFINE(WIN32_LEAN_AND_MEAN)
1002 dnl See http://support.microsoft.com/kb/143208 to use STL
1005 MOZ_USER_DIR="Mozilla"
1009 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.])
1013 if test -n "$GNU_CC" -a -z "$CLANG_CC"; then
1014 CFLAGS="$CFLAGS -fno-keep-inline-dllexport"
1015 CXXFLAGS="$CXXFLAGS -fno-keep-inline-dllexport"
1020 if test -n "$GNU_CC"; then
1021 CFLAGS="$CFLAGS -mstackrealign"
1022 CXXFLAGS="$CXXFLAGS -mstackrealign"
1023 LDFLAGS="$LDFLAGS -Wl,--large-address-aware"
1024 if test -z "$CLANG_CC"; then
1025 LDFLAGS="$LDFLAGS -Wl,--enable-stdcall-fixup"
1028 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
1029 LDFLAGS="$LDFLAGS -SAFESEH"
1035 if test -n "$_WIN32_MSVC"; then
1036 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
1041 if test -n "$_WIN32_MSVC"; then
1042 DSO_LDOPTS="$DSO_LDOPTS -MACHINE:ARM64"
1047 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
1054 CFLAGS="$CFLAGS -Dunix"
1055 CXXFLAGS="$CXXFLAGS -Dunix"
1056 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
1057 DSO_PIC_CFLAGS='-fPIC -DPIC'
1058 DSO_LDOPTS='-shared'
1059 MOZ_PROGRAM_LDFLAGS="$MOZ_PROGRAM_LDFLAGS -Wl,--export-dynamic"
1061 DSO_PIC_CFLAGS='-fPIC -DPIC'
1062 DSO_LDOPTS='-shared'
1064 # This will fail on a.out systems prior to 1.5.1_ALPHA.
1065 if test "$LIBRUNPATH"; then
1066 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
1071 if test -z "$X11BASE"; then
1074 MOZ_FIX_LINK_PATHS="$MOZ_FIX_LINK_PATHS -Wl,-rpath-link,${X11BASE}/lib"
1076 DSO_PIC_CFLAGS='-fPIC'
1077 DSO_LDOPTS='-shared -fPIC'
1078 if test "$LIBRUNPATH"; then
1079 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
1084 MOZ_FIX_LINK_PATHS="-L${DIST}/bin"
1089 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
1090 MOZ_OPTIMIZE_FLAGS="-O"
1093 AC_SUBST_LIST(MMX_FLAGS)
1094 AC_SUBST_LIST(SSE_FLAGS)
1095 AC_SUBST_LIST(SSE2_FLAGS)
1096 AC_SUBST_LIST(SSSE3_FLAGS)
1098 AC_SUBST(MOZ_LINKER)
1099 if test -n "$MOZ_LINKER"; then
1100 AC_DEFINE(MOZ_LINKER)
1101 MOZ_LINKER_EXTRACT=1
1102 AC_CHECK_PROGS(XZ, xz)
1105 if test -z "$COMPILE_ENVIRONMENT"; then
1106 SKIP_COMPILER_CHECKS=1
1107 SKIP_LIBRARY_CHECKS=1
1112 fi # COMPILE_ENVIRONMENT
1114 if test -z "$SKIP_COMPILER_CHECKS"; then
1115 dnl Checks for typedefs, structures, and compiler characteristics.
1116 dnl ========================================================
1131 case "${OS_TARGET}" in
1135 STL_FLAGS="-I${DIST}/stl_wrappers"
1140 dnl Checks for header files.
1141 dnl ========================================================
1143 case "$target_os" in
1144 bitrig*|dragonfly*|freebsd*|openbsd*)
1145 # for stuff like -lXshm
1146 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
1150 dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
1151 AC_CACHE_CHECK(for sockaddr_in.sin_len,
1152 ac_cv_sockaddr_in_sin_len,
1153 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
1154 #include <sys/types.h>
1156 #include <netinet/in.h>
1157 struct sockaddr_in x;
1158 void *foo = (void*) &x.sin_len;],
1160 [ac_cv_sockaddr_in_sin_len=true],
1161 [ac_cv_sockaddr_in_sin_len=false])])
1162 if test "$ac_cv_sockaddr_in_sin_len" = true ; then
1163 AC_DEFINE(HAVE_SIN_LEN)
1164 dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
1165 AC_DEFINE(HAVE_SCONN_LEN)
1168 AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
1169 ac_cv_sockaddr_in6_sin6_len,
1170 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
1171 #include <sys/types.h>
1173 #include <netinet/in.h>
1174 struct sockaddr_in6 x;
1175 void *foo = (void*) &x.sin6_len;],
1177 [ac_cv_sockaddr_in6_sin6_len=true],
1178 [ac_cv_sockaddr_in6_sin6_len=false])])
1179 if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
1180 AC_DEFINE(HAVE_SIN6_LEN)
1183 AC_CACHE_CHECK(for sockaddr.sa_len,
1184 ac_cv_sockaddr_sa_len,
1185 [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
1186 #include <sys/types.h>
1188 #include <sys/socket.h>
1190 void *foo = (void*) &x.sa_len;],
1192 [ac_cv_sockaddr_sa_len=true],
1193 [ac_cv_sockaddr_sa_len=false])])
1194 if test "$ac_cv_sockaddr_sa_len" = true ; then
1195 AC_DEFINE(HAVE_SA_LEN)
1198 MOZ_ARG_ENABLE_BOOL(dtrace,
1199 [ --enable-dtrace build with dtrace support if available (default=no)],
1200 [enable_dtrace="yes"],)
1201 if test "x$enable_dtrace" = "xyes"; then
1202 MOZ_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
1203 if test -n "$HAVE_DTRACE"; then
1204 AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
1206 AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
1209 AC_SUBST(HAVE_DTRACE)
1211 dnl Checks for libraries.
1212 dnl ========================================================
1213 AC_CHECK_LIB(c_r, gethostbyname_r)
1215 dnl We don't want to link with libdl even if it's present on OS X, since
1216 dnl it's not used and not part of the default installation. OS/2 has dlfcn
1218 dnl We don't want to link against libm or libpthread on Darwin since
1219 dnl they both are just symlinks to libSystem and explicitly linking
1220 dnl against libSystem causes issues when debugging (see bug 299601).
1225 AC_SEARCH_LIBS(dlopen, dl,
1226 MOZ_CHECK_HEADER(dlfcn.h,
1227 AC_DEFINE(HAVE_DLOPEN)))
1231 _SAVE_CFLAGS="$CFLAGS"
1232 CFLAGS="$CFLAGS -D_GNU_SOURCE"
1233 AC_CHECK_FUNCS(dladdr memmem)
1234 CFLAGS="$_SAVE_CFLAGS"
1236 if test ! "$GNU_CXX"; then
1237 AC_CHECK_LIB(C, demangle)
1240 AC_CHECK_LIB(socket, socket)
1243 XLIBS="$X_EXTRA_LIBS"
1245 dnl ========================================================
1246 dnl Checks for X libraries.
1247 dnl Ordering is important.
1248 dnl Xt is dependent upon SM as of X11R6
1249 dnl ========================================================
1250 if test -n "$MOZ_X11"; then
1251 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
1252 _SAVE_LDFLAGS="$LDFLAGS"
1254 LDFLAGS="$XLDFLAGS $LDFLAGS"
1255 AC_CHECK_LIB(X11, XDrawLines, [XLIBS="-lX11 $XLIBS"],
1256 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
1257 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
1258 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
1260 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
1261 unset ac_cv_lib_Xt_XtFree
1262 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
1263 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
1264 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
1265 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
1268 dnl ========================================================
1270 dnl ========================================================
1271 AC_CHECK_LIB(xcb, xcb_connect, [XLIBS="-lxcb $XLIBS"],
1272 [MISSING_X="$MISSING_X -lxcb"], $XLIBS)
1273 AC_CHECK_LIB(xcb-shm, xcb_shm_query_version, [XLIBS="-lxcb-shm $XLIBS"],
1274 [MISSING_X="$MISSING_X -lxcb-shm"], $XLIBS)
1275 AC_CHECK_LIB(X11-xcb, XGetXCBConnection, [XLIBS="-lX11-xcb $XLIBS"],
1276 [MISSING_X="$MISSING_X -lX11-xcb"], $XLIBS)
1278 LDFLAGS="$_SAVE_LDFLAGS"
1282 AC_SUBST_LIST(XCFLAGS)
1283 AC_SUBST_LIST(XLDFLAGS)
1284 AC_SUBST_LIST(XLIBS)
1285 AC_SUBST_LIST(XEXT_LIBS)
1286 AC_SUBST_LIST(XT_LIBS)
1288 dnl ========================================================
1289 dnl = pthread support
1290 dnl = Start by checking whether the system support pthreads
1291 dnl ========================================================
1292 case "$target_os" in
1297 AC_CHECK_LIB(pthreads, pthread_create,
1298 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
1299 AC_CHECK_LIB(pthread, pthread_create,
1300 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
1301 AC_CHECK_LIB(c_r, pthread_create,
1302 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
1303 AC_CHECK_LIB(c, pthread_create,
1312 dnl ========================================================
1313 dnl Do the platform specific pthread hackery
1314 dnl ========================================================
1315 if test "$MOZ_USE_PTHREADS"x != x
1318 dnl See if -pthread is supported.
1321 ac_cv_have_dash_pthread=no
1322 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
1323 echo 'int main() { return 0; }' | cat > conftest.c
1324 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
1325 if test $? -eq 0; then
1326 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
1327 ac_cv_have_dash_pthread=yes
1328 case "$target_os" in
1330 # Freebsd doesn't use -pthread for compiles, it uses them for linking
1333 CFLAGS="$CFLAGS -pthread"
1334 CXXFLAGS="$CXXFLAGS -pthread"
1340 AC_MSG_RESULT($ac_cv_have_dash_pthread)
1343 dnl See if -pthreads is supported.
1345 ac_cv_have_dash_pthreads=no
1346 if test "$ac_cv_have_dash_pthread" = "no"; then
1347 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
1348 echo 'int main() { return 0; }' | cat > conftest.c
1349 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
1350 if test $? -eq 0; then
1351 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
1352 ac_cv_have_dash_pthreads=yes
1353 CFLAGS="$CFLAGS -pthreads"
1354 CXXFLAGS="$CXXFLAGS -pthreads"
1358 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
1363 AC_DEFINE(_REENTRANT)
1364 AC_DEFINE(_THREAD_SAFE)
1365 dnl -pthread links in -lpthread, so don't specify it explicitly.
1366 if test "$ac_cv_have_dash_pthread" = "yes"; then
1367 _PTHREAD_LDFLAGS="-pthread"
1371 *-*-openbsd*|*-*-bsdi*)
1372 AC_DEFINE(_REENTRANT)
1373 AC_DEFINE(_THREAD_SAFE)
1374 dnl -pthread links in -lc_r, so don't specify it explicitly.
1375 if test "$ac_cv_have_dash_pthread" = "yes"; then
1376 _PTHREAD_LDFLAGS="-pthread"
1380 *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
1381 AC_DEFINE(_REENTRANT)
1385 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
1386 AC_SUBST(MOZ_USE_PTHREADS)
1387 MOZ_CHECK_HEADERS(pthread.h)
1391 dnl Checks for library functions.
1392 dnl ========================================================
1393 AC_PROG_GCC_TRADITIONAL
1395 AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize gmtime_r localtime_r arc4random arc4random_buf mallinfo gettid lchown setpriority strerror syscall)
1397 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
1398 dnl avoid this on Darwin, since depending on your system config, we may think
1399 dnl it exists but it really doesn't
1400 case "$OS_TARGET" in
1404 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
1405 ac_cv_clock_monotonic,
1406 [for libs in "" -lrt; do
1409 AC_TRY_LINK([#include <time.h>],
1410 [ struct timespec ts;
1411 clock_gettime(CLOCK_MONOTONIC, &ts); ],
1412 ac_cv_clock_monotonic=$libs
1415 ac_cv_clock_monotonic=no)
1418 if test "$ac_cv_clock_monotonic" != "no"; then
1419 HAVE_CLOCK_MONOTONIC=1
1420 REALTIME_LIBS=$ac_cv_clock_monotonic
1421 AC_DEFINE(HAVE_CLOCK_MONOTONIC)
1422 AC_SUBST(HAVE_CLOCK_MONOTONIC)
1423 AC_SUBST_LIST(REALTIME_LIBS)
1428 dnl Turn on warnings-as-errors to prevent implicit declaration of
1429 dnl pthread_cond_timedwait_monotonic_np, which can cause this test to
1430 dnl inadvertently pass even if the function does not really exist.
1431 _SAVE_CFLAGS="$CFLAGS"
1432 CFLAGS="$CFLAGS $WARNINGS_AS_ERRORS"
1433 AC_CACHE_CHECK(for pthread_cond_timedwait_monotonic_np,
1434 ac_cv_pthread_cond_timedwait_monotonic_np,
1435 AC_TRY_LINK([#include <pthread.h>],
1436 [pthread_cond_timedwait_monotonic_np(0, 0, 0);],
1437 ac_cv_pthread_cond_timewait_monotonic_np=yes,
1438 ac_cv_pthread_cond_timewait_monotonic_np=no))
1439 if test "$ac_cv_pthread_cond_timewait_monotonic_np" != "no"; then
1440 AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC)
1442 CFLAGS=$_SAVE_CFLAGS
1446 ac_cv_func_res_ninit,
1447 [if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then
1448 dnl no need for res_ninit() on NetBSD and OpenBSD
1449 ac_cv_func_res_ninit=no
1453 #define _BSD_SOURCE 1
1455 #include <sys/types.h>
1456 #include <netinet/in.h>
1457 #include <arpa/nameser.h>
1460 [int foo = res_ninit(&_res);],
1461 [ac_cv_func_res_ninit=yes],
1462 [ac_cv_func_res_ninit=no])
1466 if test "$ac_cv_func_res_ninit" = "yes"; then
1467 AC_DEFINE(HAVE_RES_NINIT)
1468 dnl must add the link line we do something as foolish as this... dougt
1470 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
1471 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
1476 dnl **********************
1477 dnl *** va_copy checks ***
1478 AC_CACHE_CHECK([for an implementation of va_copy()],
1480 [AC_TRY_COMPILE([#include <stdarg.h>
1482 void f (int i, ...) {
1483 va_list args1, args2;
1484 va_start (args1, i);
1485 va_copy (args2, args1);
1486 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1488 va_end (args1); va_end (args2);
1490 [f(0, 42); return 0],
1491 [ac_cv_va_copy=yes],
1495 AC_CACHE_CHECK([whether va_list can be copied by value],
1497 [AC_TRY_COMPILE([#include <stdarg.h>
1499 void f (int i, ...) {
1500 va_list args1, args2;
1501 va_start (args1, i);
1503 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1505 va_end (args1); va_end (args2);
1507 [f(0, 42); return 0],
1508 [ac_cv_va_val_copy=yes],
1509 [ac_cv_va_val_copy=no],
1512 if test "x$ac_cv_va_copy" = "xyes"; then
1513 AC_DEFINE(VA_COPY, va_copy)
1514 AC_DEFINE(HAVE_VA_COPY)
1517 if test "x$ac_cv_va_val_copy" = "xno"; then
1518 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
1521 dnl ===================================================================
1522 dnl ========================================================
1523 dnl Put your C++ language/feature checks below
1524 dnl ========================================================
1528 if test "$GNU_CC"; then
1529 if test "$CPU_ARCH" = "arm" ; then
1530 AC_CACHE_CHECK(for ARM EABI,
1534 #if defined(__ARM_EABI__)
1537 #error Not ARM EABI.
1540 ac_cv_gcc_arm_eabi="yes",
1541 ac_cv_gcc_arm_eabi="no")])
1542 if test "$ac_cv_gcc_arm_eabi" = "yes"; then
1544 ARM_ABI_PREFIX=eabi-
1546 ARM_ABI_PREFIX=oabi-
1550 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
1553 dnl See if a dynamic_cast to void* gives the most derived object.
1554 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
1555 ac_cv_cpp_dynamic_cast_void_ptr,
1556 [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
1557 class Y { int j; public: virtual ~Y() { } };
1558 class Z : public X, public Y { int k; };
1564 return !((((void*)&mdo != (void*)subx) &&
1565 ((void*)&mdo == dynamic_cast<void*>(subx))) ||
1566 (((void*)&mdo != (void*)suby) &&
1567 ((void*)&mdo == dynamic_cast<void*>(suby))));
1569 ac_cv_cpp_dynamic_cast_void_ptr=yes,
1570 ac_cv_cpp_dynamic_cast_void_ptr=no,
1571 ac_cv_cpp_dynamic_cast_void_ptr=no)])
1572 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
1573 AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
1577 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
1578 # We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
1579 # enabled, the linker in xcode 4.1 will crash. Without this it would crash when
1581 _SAVE_LDFLAGS=$LDFLAGS
1582 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
1583 AC_CACHE_CHECK(for __thread keyword for TLS variables,
1584 ac_cv_thread_keyword,
1585 [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
1586 [return tlsIsMainThread;],
1587 ac_cv_thread_keyword=yes,
1588 ac_cv_thread_keyword=no)])
1589 LDFLAGS=$_SAVE_LDFLAGS
1590 # The custom dynamic linker doesn't support TLS variables
1592 if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
1593 # mips builds fail with TLS variables because of a binutils bug.
1595 # OpenBSD doesn't have TLS support, and the test succeeds with clang++
1600 *-android*|*-linuxandroid*)
1607 AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
1613 dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments.
1614 if test -n "$MOZ_LINKER"; then
1615 if test "$CPU_ARCH" = arm; then
1616 dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments
1617 if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
1618 LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
1619 _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
1623 dnl gold emits wrong sysv-style elf hash tables when building both sysv and
1624 dnl style tables. https://sourceware.org/bugzilla/show_bug.cgi?id=13597
1625 dnl Since the linker only understands the sysv ones, no need to build the
1626 dnl gnu style tables anyways.
1627 LDFLAGS="$LDFLAGS -Wl,--hash-style=sysv"
1630 dnl End of C++ language/feature checks
1633 dnl ========================================================
1634 dnl = Internationalization checks
1635 dnl ========================================================
1637 dnl Internationalization and Locale support is different
1638 dnl on various UNIX platforms. Checks for specific i18n
1639 dnl features go here.
1641 AC_HAVE_FUNCS(localeconv)
1643 fi # ! SKIP_COMPILER_CHECKS
1645 if test -n "${COMPILE_ENVIRONMENT}"; then
1650 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
1651 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
1652 AC_DEFINE_UNQUOTED(TARGET_XPCOM_ABI, ["${TARGET_XPCOM_ABI}"])
1655 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
1656 dnl features that Windows actually does support.
1658 if test -n "$SKIP_COMPILER_CHECKS"; then
1659 dnl Windows has malloc.h
1660 AC_DEFINE(MALLOC_H, [<malloc.h>])
1661 AC_DEFINE(HAVE_FORCEINLINE)
1662 AC_DEFINE(HAVE_LOCALECONV)
1663 fi # SKIP_COMPILER_CHECKS
1665 dnl Mozilla specific options
1666 dnl ========================================================
1667 dnl The macros used for command line options
1668 dnl are defined in build/autoconf/altoptions.m4.
1670 dnl ========================================================
1672 dnl = Check for external package dependencies
1674 dnl ========================================================
1675 MOZ_ARG_HEADER(External Packages)
1677 case "$OS_TARGET" in
1678 WINNT|Darwin|Android)
1688 dnl ========================================================
1689 dnl system libevent Support
1690 dnl ========================================================
1691 MOZ_ARG_WITH_STRING(system-libevent,
1692 [ --with-system-libevent[=PFX]
1693 Use system libevent [installed at prefix PFX]],
1694 LIBEVENT_DIR=$withval)
1696 _SAVE_CFLAGS=$CFLAGS
1697 _SAVE_LDFLAGS=$LDFLAGS
1699 if test "$LIBEVENT_DIR" = yes; then
1700 PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
1701 MOZ_SYSTEM_LIBEVENT=1,
1704 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
1705 MOZ_SYSTEM_LIBEVENT=
1706 elif test -z "$MOZ_SYSTEM_LIBEVENT"; then
1707 CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
1708 LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
1709 MOZ_CHECK_HEADER(event.h,
1710 [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
1711 AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
1713 AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
1714 AC_CHECK_LIB(event, event_init,
1715 [MOZ_SYSTEM_LIBEVENT=1
1716 MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
1717 MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
1718 [MOZ_SYSTEM_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
1720 CFLAGS=$_SAVE_CFLAGS
1721 LDFLAGS=$_SAVE_LDFLAGS
1724 AC_SUBST(MOZ_SYSTEM_LIBEVENT)
1726 dnl ========================================================
1727 dnl = If NSS was not detected in the system,
1728 dnl = use the one in the source tree (mozilla/security/nss)
1729 dnl ========================================================
1731 MOZ_ARG_WITH_BOOL(system-nss,
1732 [ --with-system-nss Use system installed NSS],
1735 if test -n "$_USE_SYSTEM_NSS"; then
1736 AM_PATH_NSS(3.40, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
1739 NSS_CFLAGS="$NSS_CFLAGS -I${DIST}/include/nss"
1740 if test -z "$MOZ_SYSTEM_NSS"; then
1741 case "${OS_ARCH}" in
1742 # Only few platforms have been tested with GYP
1743 WINNT|Darwin|Linux|DragonFly|FreeBSD|NetBSD|OpenBSD|SunOS)
1746 AC_MSG_ERROR([building in-tree NSS is not supported on this platform. Use --with-system-nss])
1751 if test -z "$SKIP_LIBRARY_CHECKS"; then
1752 dnl system JPEG support
1753 dnl ========================================================
1754 MOZ_ARG_WITH_STRING(system-jpeg,
1755 [ --with-system-jpeg[=PFX]
1756 Use system libjpeg [installed at prefix PFX]],
1759 _SAVE_CFLAGS=$CFLAGS
1760 _SAVE_LDFLAGS=$LDFLAGS
1762 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
1763 CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
1764 LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
1766 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
1769 AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [MOZ_SYSTEM_JPEG=1 MOZ_JPEG_LIBS="-ljpeg"], MOZ_SYSTEM_JPEG=)
1772 if test "$MOZ_SYSTEM_JPEG" = 1; then
1773 AC_TRY_COMPILE([ #include <stdio.h>
1774 #include <sys/types.h>
1775 #include <jpeglib.h> ],
1776 [ #if JPEG_LIB_VERSION < $MOZJPEG
1777 #error "Insufficient JPEG library version ($MOZJPEG required)."
1779 #ifndef JCS_EXTENSIONS
1780 #error "libjpeg-turbo JCS_EXTENSIONS required"
1784 AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg]))
1786 CFLAGS=$_SAVE_CFLAGS
1787 LDFLAGS=$_SAVE_LDFLAGS
1790 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$MOZ_SYSTEM_JPEG" = 1; then
1791 MOZ_JPEG_CFLAGS="-I${JPEG_DIR}/include"
1792 MOZ_JPEG_LIBS="-L${JPEG_DIR}/lib ${MOZ_JPEG_LIBS}"
1794 fi # SKIP_LIBRARY_CHECKS
1796 dnl system ZLIB support
1797 dnl ========================================================
1798 MOZ_ZLIB_CHECK([1.2.3])
1800 if test -z "$SKIP_LIBRARY_CHECKS"; then
1802 dnl ========================================================
1803 dnl system PNG Support
1804 dnl ========================================================
1805 MOZ_ARG_WITH_STRING(system-png,
1806 [ --with-system-png[=PFX]
1807 Use system libpng [installed at prefix PFX]],
1810 _SAVE_CFLAGS=$CFLAGS
1811 _SAVE_LDFLAGS=$LDFLAGS
1813 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
1814 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
1815 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
1817 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
1820 AC_CHECK_LIB(png, png_get_valid, [MOZ_SYSTEM_PNG=1 MOZ_PNG_LIBS="-lpng"],
1821 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
1822 AC_CHECK_LIB(png, png_get_acTL, ,
1823 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]))
1825 if test "$MOZ_SYSTEM_PNG" = 1; then
1826 AC_TRY_COMPILE([ #include <stdio.h>
1827 #include <sys/types.h>
1829 [ #if PNG_LIBPNG_VER < $MOZPNG
1830 #error "Insufficient libpng version ($MOZPNG required)."
1832 #ifndef PNG_UINT_31_MAX
1833 #error "Insufficient libpng version."
1836 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
1838 CFLAGS=$_SAVE_CFLAGS
1839 LDFLAGS=$_SAVE_LDFLAGS
1842 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_SYSTEM_PNG" = 1; then
1843 MOZ_PNG_CFLAGS="-I${PNG_DIR}/include"
1844 MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}"
1847 fi # SKIP_LIBRARY_CHECKS
1849 dnl ========================================================
1853 dnl ========================================================
1855 MOZ_ARG_HEADER(Application)
1857 ENABLE_SYSTEM_EXTENSION_DIRS=1
1858 MOZ_BRANDING_DIRECTORY=
1859 MOZ_OFFICIAL_BRANDING=
1861 MOZ_AUTH_EXTENSION=1
1862 if test "$MOZ_IOS"; then
1871 LIBJPEG_TURBO_ASFLAGS=
1872 MOZ_PREF_EXTENSIONS=1
1874 MOZ_TOOLKIT_SEARCH=1
1875 MOZ_UNIVERSALCHARDET=1
1880 MOZ_USE_NATIVE_POPUP_WINDOWS=
1881 MOZ_EXCLUDE_HYPHENATION_DICTIONARIES=
1882 MOZ_CONTENT_SANDBOX=
1885 MOZ_BINARY_EXTENSIONS=
1888 case "$target_os" in
1891 AC_DEFINE(NS_ENABLE_TSF)
1895 # Optional Firefox for Android partner distribution directory.
1896 MOZ_ARG_WITH_STRING(android-distribution-directory,
1897 [ --with-android-distribution-directory=dir
1898 Optional Firefox for Android partner distribution directory.],
1899 MOZ_ANDROID_DISTRIBUTION_DIRECTORY=$withval)
1901 if test -n "$MOZ_ANDROID_DISTRIBUTION_DIRECTORY"; then
1902 # A distribution directory must have an assets/distribution directory.
1903 # See https://wiki.mozilla.org/Mobile/Distribution_Files.
1904 if test ! -d "$MOZ_ANDROID_DISTRIBUTION_DIRECTORY/assets/distribution" ; then
1905 AC_MSG_ERROR([--with-android-distribution-directory does not contain assets/distribution;
1906 (looked for ${MOZ_ANDROID_DISTRIBUTION_DIRECTORY}/assets/distribution).])
1909 AC_SUBST(MOZ_ANDROID_DISTRIBUTION_DIRECTORY)
1911 dnl ========================================================
1912 dnl = Trademarked Branding
1913 dnl ========================================================
1914 MOZ_ARG_ENABLE_BOOL(official-branding,
1915 [ --enable-official-branding
1916 Enable Official mozilla.org Branding
1917 Do not distribute builds with
1918 --enable-official-branding unless you have
1919 permission to use trademarks per
1920 http://www.mozilla.org/foundation/trademarks/ .],
1921 MOZ_OFFICIAL_BRANDING=1,
1922 MOZ_OFFICIAL_BRANDING=)
1924 # Allow the application to influence configure with a confvars.sh script.
1925 AC_MSG_CHECKING([if app-specific confvars.sh exists])
1926 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
1927 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
1928 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
1933 # Allow influencing configure with a defines.sh script.
1934 . "${srcdir}/build/defines.sh"
1936 # If we're not building a release build, define EARLY_BETA_OR_EARLIER if it is
1938 if test "$BUILDING_RELEASE"; then
1939 # Override value in defines.sh, if any
1940 EARLY_BETA_OR_EARLIER=
1941 elif test "$EARLY_BETA_OR_EARLIER"; then
1942 AC_DEFINE(EARLY_BETA_OR_EARLIER)
1944 AC_SUBST(EARLY_BETA_OR_EARLIER)
1946 # Allow someone to change MOZ_APP_NAME and MOZ_APP_BASENAME in mozconfig
1947 MOZ_ARG_WITH_STRING(app-name,
1948 [--with-app-name=APPNAME sets MOZ_APP_NAME to APPNAME],
1949 WITH_APP_NAME=$withval,
1952 if test -n "$WITH_APP_NAME" ; then
1953 MOZ_APP_NAME="$WITH_APP_NAME"
1956 MOZ_ARG_WITH_STRING(app-basename,
1957 [--with-app-basename=BASENAME sets MOZ_APP_BASENAME to BASENAME],
1958 WITH_APP_BASENAME=$withval,
1961 if test -n "$WITH_APP_BASENAME" ; then
1962 MOZ_APP_BASENAME="$WITH_APP_BASENAME"
1965 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
1966 # that haven't made a confvars.sh yet. Don't add new stuff here, use
1968 case "$MOZ_BUILD_APP" in
1970 AC_DEFINE(MOZ_PHOENIX)
1974 AC_DEFINE(MOZ_XULRUNNER)
1978 # Graphene is a desktop runtime for running applications with a HTML UI.
1979 if test -n "$MOZ_GRAPHENE"; then
1980 AC_DEFINE(MOZ_GRAPHENE)
1983 AC_SUBST(MOZ_PHOENIX)
1984 AC_SUBST(MOZ_XULRUNNER)
1986 dnl ========================================================
1987 dnl Ensure Android SDK and build-tools versions depending on
1989 dnl ========================================================
1991 case "$MOZ_BUILD_APP" in
1993 MOZ_ANDROID_SDK(26, 26, 27.0.3)
1997 dnl ========================================================
1999 dnl = Toolkit Options
2001 dnl ========================================================
2002 MOZ_ARG_HEADER(Toolkit Options)
2004 dnl ========================================================
2005 dnl = Enable the toolkit as needed =
2006 dnl ========================================================
2008 case "$MOZ_WIDGET_TOOLKIT" in
2011 LDFLAGS="$LDFLAGS -framework Cocoa -lobjc"
2012 # Use -Wl as a trick to avoid -framework and framework names from
2013 # being separated by AC_SUBST_LIST.
2014 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'
2016 CFLAGS="$CFLAGS $TK_CFLAGS"
2017 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
2018 MOZ_USER_DIR="Mozilla"
2019 MOZ_FS_LAYOUT=bundle
2023 LDFLAGS="$LDFLAGS -framework UIKit -lobjc"
2025 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'
2026 CFLAGS="$CFLAGS $TK_CFLAGS"
2027 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
2028 MOZ_USER_DIR="Mozilla"
2029 MOZ_FS_LAYOUT=bundle
2034 dnl there are a lot of tests on MOZ_ENABLE_GTK below, that are more convenient
2035 dnl to keep that way than testing against MOZ_WIDGET_TOOLKIT
2036 case "$MOZ_WIDGET_TOOLKIT" in
2042 if test "$COMPILE_ENVIRONMENT"; then
2043 if test "$MOZ_WIDGET_TOOLKIT" = gtk3; then
2044 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)
2045 MOZ_GTK3_CFLAGS="-I${_topsrcdir}/widget/gtk/compat-gtk3 $MOZ_GTK3_CFLAGS"
2046 TK_CFLAGS=$MOZ_GTK3_CFLAGS
2047 TK_LIBS=$MOZ_GTK3_LIBS
2048 dnl GDK_VERSION_MIN_REQUIRED is not set here as GDK3 deprecated warnings
2049 dnl are suppressed by widget/gtk/compat-gtk3/gdk/gdkversionmacros.h.
2050 AC_DEFINE_UNQUOTED(GDK_VERSION_MAX_ALLOWED,$GDK_VERSION_MAX_ALLOWED)
2051 GLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_32
2053 if test "$MOZ_ENABLE_GTK"; then
2054 if test "$MOZ_X11"; then
2055 GDK_PACKAGES=gdk-x11-2.0
2057 AC_DEFINE_UNQUOTED(GLIB_VERSION_MIN_REQUIRED,$GLIB_VERSION_MIN_REQUIRED)
2058 AC_DEFINE_UNQUOTED(GLIB_VERSION_MAX_ALLOWED,$GLIB_VERSION_MAX_ALLOWED)
2060 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)
2061 MOZ_GTK2_CFLAGS="-I${_topsrcdir}/widget/gtk/compat $MOZ_GTK2_CFLAGS"
2063 fi # COMPILE_ENVIRONMENT
2065 AC_SUBST(MOZ_FS_LAYOUT)
2067 dnl ========================================================
2068 dnl = startup-notification support module
2069 dnl ========================================================
2071 if test "$MOZ_ENABLE_GTK"
2073 MOZ_ENABLE_STARTUP_NOTIFICATION=
2075 MOZ_ARG_ENABLE_BOOL(startup-notification,
2076 [ --enable-startup-notification
2077 Enable startup-notification support (default: disabled) ],
2078 MOZ_ENABLE_STARTUP_NOTIFICATION=force,
2079 MOZ_ENABLE_STARTUP_NOTIFICATION=)
2080 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
2082 PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
2083 libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
2084 [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
2085 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
2087 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
2089 MOZ_ENABLE_STARTUP_NOTIFICATION=
2093 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
2094 AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
2097 TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
2099 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
2101 AC_SUBST_LIST(TK_CFLAGS)
2102 AC_SUBST_LIST(TK_LIBS)
2107 dnl ========================================================
2109 dnl = Components & Features
2111 dnl ========================================================
2112 MOZ_ARG_HEADER(Components and Features)
2114 AC_SUBST(MOZ_OFFICIAL_BRANDING)
2115 if test -n "$MOZ_OFFICIAL_BRANDING"; then
2116 if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
2117 AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
2119 MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
2120 AC_DEFINE(MOZ_OFFICIAL_BRANDING)
2124 MOZ_ARG_WITH_STRING(branding,
2125 [ --with-branding=dir Use branding from the specified directory.],
2126 MOZ_BRANDING_DIRECTORY=$withval)
2128 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
2129 if test -z "$REAL_BRANDING_DIRECTORY"; then
2130 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
2133 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
2134 . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
2135 elif test -f "${EXTERNAL_SOURCE_DIR}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
2136 . "${EXTERNAL_SOURCE_DIR}/$REAL_BRANDING_DIRECTORY/configure.sh"
2139 AC_SUBST(MOZ_BRANDING_DIRECTORY)
2141 dnl ========================================================
2142 dnl = Distribution ID
2143 dnl ========================================================
2144 MOZ_ARG_WITH_STRING(distribution-id,
2145 [ --with-distribution-id=ID
2146 Set distribution-specific id (default=org.mozilla)],
2147 [ val=`echo $withval`
2148 MOZ_DISTRIBUTION_ID="$val"])
2150 if test -z "$MOZ_DISTRIBUTION_ID"; then
2151 MOZ_DISTRIBUTION_ID="org.mozilla"
2154 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
2155 AC_SUBST(MOZ_DISTRIBUTION_ID)
2157 dnl ========================================================
2158 dnl = GConf support module
2159 dnl ========================================================
2163 if test "$MOZ_ENABLE_GTK"
2168 dnl ========================================================
2169 dnl = GConf support module
2170 dnl ========================================================
2171 MOZ_ARG_DISABLE_BOOL(gconf,
2172 [ --disable-gconf Disable Gconf support ],
2176 if test "$MOZ_ENABLE_GCONF"
2178 PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION gobject-2.0 ,[
2179 MOZ_GCONF_LIBS=`$PKG_CONFIG --libs gobject-2.0`
2182 if test -n "$MOZ_ENABLE_GCONF";
2184 AC_MSG_ERROR([* * * Could not find gconf-2.0 ])
2186 AC_MSG_WARN([Many automated tests will fail with --disable-gconf. See bug 1167201.])
2191 if test "$MOZ_ENABLE_GCONF"; then
2192 AC_DEFINE(MOZ_ENABLE_GCONF)
2195 AC_SUBST(MOZ_ENABLE_GCONF)
2198 dnl ========================================================
2199 dnl = libproxy support
2200 dnl ========================================================
2202 if test "$MOZ_ENABLE_GTK"
2204 MOZ_ENABLE_LIBPROXY=
2206 MOZ_ARG_ENABLE_BOOL(libproxy,
2207 [ --enable-libproxy Enable libproxy support ],
2208 MOZ_ENABLE_LIBPROXY=1,
2209 MOZ_ENABLE_LIBPROXY=)
2211 if test "$MOZ_ENABLE_LIBPROXY"
2213 PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
2214 AC_DEFINE(MOZ_ENABLE_LIBPROXY)
2217 AC_SUBST(MOZ_ENABLE_LIBPROXY)
2219 dnl ========================================================
2221 dnl ========================================================
2223 if test "$MOZ_ENABLE_GTK"
2227 MOZ_ARG_DISABLE_BOOL(dbus,
2228 [ --disable-dbus Disable dbus support ],
2232 if test "$MOZ_ENABLE_DBUS"
2234 PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
2235 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
2236 AC_DEFINE(MOZ_ENABLE_DBUS)
2239 AC_SUBST(MOZ_ENABLE_DBUS)
2241 dnl =========================================================
2242 dnl = Whether to exclude hyphenations files in the build
2243 dnl =========================================================
2244 if test -n "$MOZ_EXCLUDE_HYPHENATION_DICTIONARIES"; then
2245 AC_DEFINE(MOZ_EXCLUDE_HYPHENATION_DICTIONARIES)
2248 AC_TRY_COMPILE([#include <linux/ethtool.h>],
2249 [ struct ethtool_cmd cmd; cmd.speed_hi = 0; ],
2250 MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI=1)
2252 AC_SUBST(MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI)
2254 if test -n "$MOZ_WEBRTC"; then
2255 if test -n "$MOZ_X11"; then
2256 MOZ_WEBRTC_X11_LIBS="-lXext -lXdamage -lXfixes -lXcomposite"
2260 AC_SUBST_LIST(MOZ_WEBRTC_X11_LIBS)
2262 dnl ========================================================
2263 dnl = Apple platform decoder support
2264 dnl ========================================================
2265 if test "$COMPILE_ENVIRONMENT"; then
2266 if test -n "$MOZ_APPLEMEDIA"; then
2267 # hack in frameworks for fmp4 - see bug 1029974
2268 # We load VideoToolbox and CoreMedia dynamically, so they don't appear here.
2269 LDFLAGS="$LDFLAGS -framework AudioToolbox"
2270 dnl Verify CoreMedia is available.
2271 AC_CHECK_HEADER([CoreMedia/CoreMedia.h], [],
2272 [AC_MSG_ERROR([MacOS X 10.9 SDK or later is required])])
2274 fi # COMPILE_ENVIRONMENT
2276 dnl system libvpx Support
2277 dnl ========================================================
2278 MOZ_ARG_WITH_BOOL(system-libvpx,
2279 [ --with-system-libvpx Use system libvpx (located with pkgconfig)],
2280 MOZ_SYSTEM_LIBVPX=1)
2285 _SAVE_CFLAGS=$CFLAGS
2287 if test -n "$MOZ_SYSTEM_LIBVPX"; then
2288 dnl ============================
2289 dnl === libvpx Version check ===
2290 dnl ============================
2291 dnl Check to see if we have a system libvpx package.
2292 PKG_CHECK_MODULES(MOZ_LIBVPX, vpx >= 1.5.0)
2294 CFLAGS="$CFLAGS $MOZ_LIBVPX_CFLAGS"
2295 LIBS="$LIBS $MOZ_LIBVPX_LIBS"
2297 MOZ_CHECK_HEADER([vpx/vpx_decoder.h], [],
2298 [AC_MSG_ERROR([Couldn't find vpx/vpx_decoder.h which is required for build with system libvpx. Use --without-system-libvpx to build with in-tree libvpx.])])
2300 AC_CHECK_LIB(vpx, vpx_codec_dec_init_ver, [],
2301 [AC_MSG_ERROR([--with-system-libvpx requested but symbol vpx_codec_dec_init_ver not found])])
2303 MOZ_CHECK_HEADER([vpx_mem/vpx_mem.h],
2304 [AC_CHECK_FUNC(vpx_mem_set_functions)])
2305 if test "$ac_cv_header_vpx_mem_vpx_mem_h" = no -o \
2306 "$ac_cv_func_vpx_mem_set_functions" = no; then
2307 AC_DEFINE(MOZ_VPX_NO_MEM_REPORTING)
2310 CFLAGS=$_SAVE_CFLAGS
2313 AC_SUBST(MOZ_SYSTEM_LIBVPX)
2314 AC_SUBST_LIST(MOZ_LIBVPX_CFLAGS)
2315 AC_SUBST_LIST(MOZ_LIBVPX_LIBS)
2317 if test -z "$MOZ_SYSTEM_LIBVPX"; then
2319 dnl Detect if we can use an assembler to compile optimized assembly for libvpx.
2320 dnl We currently require yasm on all x86 platforms and require yasm 1.1.0 on Win32.
2321 dnl We currently require gcc on all arm platforms.
2323 dnl See if we have assembly on this platform.
2324 case "$OS_ARCH:$CPU_ARCH" in
2338 dnl Check for yasm 1.1 or greater.
2339 if test -n "$COMPILE_ENVIRONMENT" -a -z "$YASM"; then
2340 AC_MSG_ERROR([yasm 1.1 or greater is required to build libvpx on Win32, but it appears not to be installed. Install it (included in MozillaBuild 1.5.1 and newer) or configure with --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
2341 elif test -n "$COMPILE_ENVIRONMENT" -a "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
2342 AC_MSG_ERROR([yasm 1.1 or greater is required to build libvpx on Win32, but you appear to have version $_YASM_MAJOR_VERSION.$_YASM_MINOR_VERSION. Upgrade to the newest version (included in MozillaBuild 1.5.1 and newer) or configure with --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
2346 dnl The encoder needs obj_int_extract to get asm offsets.
2347 fi # COMPILE_ENVIRONMENT and others
2350 if test -n "$GNU_AS" ; then
2351 dnl These flags are a lie; they're just used to enable the requisite
2352 dnl opcodes; actual arch detection is done at runtime.
2353 VPX_ASFLAGS="-march=armv7-a -mfpu=neon"
2354 VPX_AS_CONVERSION='$(PERL) $(topsrcdir)/media/libvpx/libvpx/build/make/ads2gas.pl'
2356 dnl Building with -mfpu=neon requires either the "softfp" or the
2357 dnl "hardfp" ABI. Depending on the compiler's default target, and the
2358 dnl CFLAGS, the default ABI might be neither, in which case it is the
2359 dnl "softfloat" ABI.
2360 dnl The "softfloat" ABI is binary-compatible with the "softfp" ABI, so
2361 dnl we can safely mix code built with both ABIs. So, if we detect
2362 dnl that compiling uses the "softfloat" ABI, force the use of the
2363 dnl "softfp" ABI instead.
2364 dnl Confusingly, the __SOFTFP__ preprocessor variable indicates the
2365 dnl "softfloat" ABI, not the "softfp" ABI.
2366 dnl Note: VPX_ASFLAGS is also used in CFLAGS.
2369 #error "compiler target supports -mfpu=neon, so we don't have to add extra flags"
2371 VPX_ASFLAGS="$VPX_ASFLAGS -mfloat-abi=softfp"
2376 if $CC -E -dM -</dev/null | grep -q __ELF__; then
2382 if $CC -E -dM -</dev/null | grep -q __ELF__; then
2389 if test -n "$COMPILE_ENVIRONMENT" -a -n "$VPX_USE_YASM" -a -z "$YASM"; then
2390 AC_MSG_ERROR([yasm is a required build tool for this architecture when webm is enabled. You may either install yasm or --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
2391 fi # COMPILE_ENVIRONMENT and others
2393 if test -n "$VPX_USE_YASM" && test "$OS_ARCH:$CPU_ARCH" != "WINNT:x86_64"; then
2397 if test -n "$VPX_X86_ASM"; then
2398 AC_DEFINE(VPX_X86_ASM)
2399 elif test -n "$VPX_ARM_ASM"; then
2400 AC_DEFINE(VPX_ARM_ASM)
2402 AC_MSG_WARN([No assembler or assembly support for libvpx. Using unoptimized C routines.])
2405 dnl native libvpx no longer has vpx_mem_set_functions
2406 AC_DEFINE(MOZ_VPX_NO_MEM_REPORTING)
2409 dnl ========================================================
2410 dnl = Handle dependent MEDIA defines
2411 dnl ========================================================
2414 AC_DEFINE(MOZ_WEBM_ENCODER)
2415 AC_SUBST(MOZ_WEBM_ENCODER)
2417 dnl ========================================================
2419 dnl ========================================================
2421 MOZ_ARG_DISABLE_BOOL(negotiateauth,
2422 [ --disable-negotiateauth Disable GSS-API negotiation ],
2423 MOZ_AUTH_EXTENSION=,
2424 MOZ_AUTH_EXTENSION=1 )
2426 if test -n "$MOZ_IOS" -a -n "$MOZ_AUTH_EXTENSION"; then
2427 AC_MSG_ERROR([negotiateauth is not supported on iOS.])
2430 dnl ========================================================
2431 dnl Pref extensions (autoconfig)
2432 dnl ========================================================
2433 MOZ_ARG_DISABLE_BOOL(pref-extensions,
2434 [ --disable-pref-extensions
2435 Disable pref extensions such as autoconfig],
2436 MOZ_PREF_EXTENSIONS=,
2437 MOZ_PREF_EXTENSIONS=1 )
2439 dnl ========================================================
2440 dnl Searching of system directories for extensions.
2441 dnl Note: this switch is meant to be used for test builds
2442 dnl whose behavior should not depend on what happens to be
2443 dnl installed on the local machine.
2444 dnl ========================================================
2445 MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
2446 [ --disable-system-extension-dirs
2447 Disable searching system- and account-global
2448 directories for extensions of any kind; use
2449 only profile-specific extension directories],
2450 ENABLE_SYSTEM_EXTENSION_DIRS=,
2451 ENABLE_SYSTEM_EXTENSION_DIRS=1 )
2452 if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
2453 AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
2456 dnl ========================================================
2457 dnl = Universalchardet
2458 dnl ========================================================
2459 MOZ_ARG_DISABLE_BOOL(universalchardet,
2460 [ --disable-universalchardet
2461 Disable universal encoding detection],
2462 MOZ_UNIVERSALCHARDET=,
2463 MOZ_UNIVERSALCHARDET=1 )
2465 dnl ========================================================
2466 dnl = ANGLE OpenGL->D3D translator for WebGL
2467 dnl = * only applies to win32 (and then, not MINGW)
2468 dnl ========================================================
2472 MOZ_HAS_WINSDK_WITH_D3D=
2473 MOZ_D3DCOMPILER_VISTA_DLL=
2474 MOZ_D3DCOMPILER_VISTA_DLL_PATH=
2476 if test "$COMPILE_ENVIRONMENT" ; then
2477 case "$target_os" in
2479 MOZ_ANGLE_RENDERER=1
2483 # The DirectX SDK libraries are split into x86 and x64 sub-directories
2484 case "${target_cpu}" in
2486 MOZ_D3D_CPU_SUFFIX=x86
2489 MOZ_D3D_CPU_SUFFIX=x64
2492 MOZ_D3D_CPU_SUFFIX=arm
2496 dnl ========================================================
2497 dnl D3D compiler DLL
2498 dnl ========================================================
2499 MOZ_FOUND_D3D_COMPILERS=
2501 if test -n "$MOZ_ANGLE_RENDERER"; then
2502 if test -z "$MOZ_D3D_CPU_SUFFIX"; then
2503 AC_MSG_ERROR([Couldn't determine MOZ_D3D_CPU_SUFFIX.])
2506 ######################################
2507 # Find _46+ for use by Vista+.
2509 # Find a D3D compiler DLL in a Windows SDK.
2510 MOZ_D3DCOMPILER_VISTA_DLL=
2511 case "$MOZ_WINSDK_MAXVER" in
2513 MOZ_D3DCOMPILER_VISTA_DLL=d3dcompiler_47.dll
2514 AC_MSG_RESULT([Found D3D compiler in Windows SDK.])
2518 if test -n "$MOZ_D3DCOMPILER_VISTA_DLL"; then
2519 # We have a name, now track down the path.
2520 if test -n "$WINDOWSSDKDIR"; then
2521 MOZ_D3DCOMPILER_VISTA_DLL_PATH="$WINDOWSSDKDIR/Redist/D3D/$MOZ_D3D_CPU_SUFFIX/$MOZ_D3DCOMPILER_VISTA_DLL"
2522 if test -f "$MOZ_D3DCOMPILER_VISTA_DLL_PATH"; then
2523 AC_MSG_RESULT([Found MOZ_D3DCOMPILER_VISTA_DLL_PATH: $MOZ_D3DCOMPILER_VISTA_DLL_PATH])
2524 MOZ_HAS_WINSDK_WITH_D3D=1
2525 elif test "$target_cpu" = "aarch64" -a "$MOZ_D3DCOMPILER_VISTA_DLL" = "d3dcompiler_47.dll"; then
2526 AC_MSG_RESULT([AArch64 Windows includes d3dcompiler DLLs])
2527 MOZ_D3DCOMPILER_VISTA_DLL_PATH=
2529 AC_MSG_RESULT([MOZ_D3DCOMPILER_VISTA_DLL_PATH doesn't exist: $MOZ_D3DCOMPILER_VISTA_DLL_PATH])
2530 AC_MSG_ERROR([Windows SDK at "$WINDOWSSDKDIR" appears broken. Try updating to MozillaBuild 1.9 final or higher.])
2531 MOZ_D3DCOMPILER_VISTA_DLL_PATH=
2534 AC_MSG_RESULT([Windows SDK not found.])
2537 if test "$OS_ARCH" = "$HOST_OS_ARCH"; then
2538 AC_MSG_ERROR([Couldn't find Windows SDK 8.1 or higher needed for ANGLE.])
2540 AC_MSG_RESULT([Windows SDK not needed for ANGLE in Linux MinGW build.])
2544 if test -z "$MOZ_D3DCOMPILER_VISTA_DLL_PATH"; then
2545 MOZ_D3DCOMPILER_VISTA_DLL=
2548 # On mingw, check if headers are provided by toolchain.
2549 if test -n "$GNU_CC"; then
2550 MOZ_CHECK_HEADER(d3d10.h, MOZ_HAS_WINSDK_WITH_D3D=1)
2553 ######################################
2554 # Check that we found what we needed.
2555 MOZ_FOUND_A_D3D_COMPILER=
2557 if test -n "$MOZ_D3DCOMPILER_VISTA_DLL"; then
2558 MOZ_FOUND_A_D3D_COMPILER=1
2559 AC_MSG_RESULT([Found d3dcompiler DLL for Vista+: $MOZ_D3DCOMPILER_VISTA_DLL])
2562 if test -z "$CROSS_COMPILE"; then
2563 if test -z "MOZ_FOUND_A_D3D_COMPILER"; then
2564 AC_MSG_ERROR([Couldn't find an acceptable D3D compiler DLL.])
2567 fi # MOZ_ANGLE_RENDERER
2569 dnl ========================================================
2571 dnl ========================================================
2573 dnl Moved gamepad platform check to moz.build, linux header check still needed here.
2574 if test "$OS_TARGET" = "Linux"; then
2575 MOZ_CHECK_HEADER([linux/joystick.h])
2576 if test "$ac_cv_header_linux_joystick_h" != "yes"; then
2577 AC_MSG_ERROR([Can't find header linux/joystick.h, needed for gamepad support. Please install Linux kernel headers.])
2581 fi # COMPILE_ENVIRONMENT
2584 dnl ========================================================
2585 dnl = Breakpad crash reporting (on by default on supported platforms)
2586 dnl ========================================================
2589 i?86-*-mingw*|x86_64-*-mingw*)
2592 i?86-apple-darwin*|x86_64-apple-darwin*)
2593 if test -z "$MOZ_IOS"; then
2597 *-android*|*-linuxandroid*)
2598 dnl Android/arm is arm-unknown-linux-androideabi, so android condition should
2599 dnl be before Linux condition
2602 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
2603 if test "$MOZ_ENABLE_GTK"; then
2609 MOZ_ARG_DISABLE_BOOL(crashreporter,
2610 [ --disable-crashreporter Disable breakpad crash reporting],
2611 [MOZ_CRASHREPORTER=],
2612 [MOZ_CRASHREPORTER=F # Force enable breakpad])
2614 if test "$OS_ARCH" != "$HOST_OS_ARCH" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "Darwin"; then
2615 if test "$MOZ_CRASHREPORTER" = F; then
2616 AC_MSG_ERROR([Cannot --enable-crashreporter, as breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH.])
2621 if test -n "$MOZ_CRASHREPORTER"; then
2622 AC_DEFINE(MOZ_CRASHREPORTER)
2624 if test "$OS_TARGET" = "Linux" && \
2625 test -z "$SKIP_LIBRARY_CHECKS"; then
2626 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
2629 if test "$OS_ARCH" = "WINNT"; then
2630 if test -z "$HAVE_64BIT_BUILD" -a -n "$COMPILE_ENVIRONMENT"; then
2631 MOZ_CRASHREPORTER_INJECTOR=1
2632 AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
2637 dnl ========================================================
2638 dnl = libjpeg-turbo configuration
2639 dnl ========================================================
2641 LIBJPEG_TURBO_USE_YASM=
2642 if test -z "$MOZ_SYSTEM_JPEG"; then
2646 MOZ_ARG_DISABLE_BOOL(libjpeg_turbo,
2647 [ --disable-libjpeg-turbo Disable optimized jpeg decoding routines],
2649 MOZ_LIBJPEG_TURBO=1)
2651 if test "$MOZ_SYSTEM_JPEG" = 1 -a "$MOZ_LIBJPEG_TURBO" = 1; then
2652 AC_MSG_ERROR([cannot use --with-system-jpeg with --enable-libjpeg-turbo.])
2655 dnl Detect if we can use yasm to compile libjpeg-turbo's optimized assembly
2658 if test -n "$MOZ_LIBJPEG_TURBO" -a -n "$COMPILE_ENVIRONMENT"; then
2660 dnl Do we support libjpeg-turbo on this platform?
2661 case "$OS_ARCH:$CPU_ARCH" in
2663 LIBJPEG_TURBO_ASFLAGS="-DPIC -DMACHO"
2666 LIBJPEG_TURBO_ASFLAGS="-D__x86_64__ -DPIC -DMACHO"
2671 LIBJPEG_TURBO_ASFLAGS="-DPIC -DWIN32"
2674 LIBJPEG_TURBO_ASFLAGS="-D__x86_64__ -DPIC -DWIN64 -DMSVC"
2679 LIBJPEG_TURBO_ASFLAGS="-march=armv7-a -mfpu=neon"
2682 LIBJPEG_TURBO_ASFLAGS="-march=armv8-a"
2685 LIBJPEG_TURBO_ASFLAGS="-mdspr2"
2688 if $CC -E -dM -</dev/null | grep -q __ELF__; then
2689 LIBJPEG_TURBO_ASFLAGS="-DPIC -DELF"
2693 if $CC -E -dM -</dev/null | grep -q __ELF__; then
2694 LIBJPEG_TURBO_ASFLAGS="-D__x86_64__ -DPIC -DELF"
2700 if test -n "$LIBJPEG_TURBO_ASFLAGS"; then
2702 dnl If we're on an x86 or x64 system which supports libjpeg-turbo's asm routines
2703 dnl and --disable-libjpeg-turbo wasn't passed, check for Yasm, and error out if
2704 dnl it doesn't exist or we have too old of a version.
2706 LIBJPEG_TURBO_USE_YASM=1
2708 if test -z "$YASM" ; then
2709 AC_MSG_ERROR([Yasm is required to build with libjpeg-turbo's optimized JPEG decoding routines, but you do not appear to have Yasm installed. Either install it or configure with --disable-libjpeg-turbo to use the pure C JPEG decoder. See https://developer.mozilla.org/en/YASM for more details.])
2712 dnl Check that we have the right yasm version. We require 1.0.1 or newer
2713 dnl on Linux and 1.1 or newer everywhere else.
2714 if test "$OS_ARCH" = "Linux" ; then
2715 if test "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -eq "0" -a "$_YASM_RELEASE" -lt "1" \) ; then
2716 AC_MSG_ERROR([Yasm 1.0.1 or greater is required to build with libjpeg-turbo's optimized JPEG decoding routines, but you appear to have version $_YASM_MAJOR_VERSION.$_YASM_MINOR_VERSION.$_YASM_RELEASE. Upgrade to the newest version or configure with --disable-libjpeg-turbo to use the pure C JPEG decoder. See https://developer.mozilla.org/en/YASM for more details.])
2719 if test "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
2720 AC_MSG_ERROR([Yasm 1.1 or greater is required to build with libjpeg-turbo's optimized JPEG decoding routines, but you appear to have version $_YASM_MAJOR_VERSION.$_YASM_MINOR_VERSION. Upgrade to the newest version or configure with --disable-libjpeg-turbo to use the pure C JPEG decoder. See https://developer.mozilla.org/en/YASM for more details.])
2727 dnl ========================================================
2728 dnl = libav-fft configuration
2729 dnl ========================================================
2733 dnl Turn on libav-fft for 32-bit windows, and all 64-bit supported platforms.
2734 dnl 32-bit linux/os x have text relocation issues.
2736 case "$OS_ARCH:$CPU_ARCH" in
2745 dnl Detect if we can use yasm to compile libav's assembly
2747 if test -n "$MOZ_LIBAV_FFT" -a -n "$COMPILE_ENVIRONMENT"; then
2748 AC_DEFINE(MOZ_LIBAV_FFT)
2749 dnl Do we support libav-fft on this platform?
2750 case "$OS_ARCH:$CPU_ARCH" in
2752 LIBAV_FFT_ASFLAGS="-D__x86_64__ -DPIC -DMACHO"
2755 LIBAV_FFT_ASFLAGS="-DPIC -DWIN32"
2758 LIBAV_FFT_ASFLAGS="-D__x86_64__ -DPIC -DWIN64 -DMSVC"
2761 if $CC -E -dM -</dev/null | grep -q __ELF__; then
2762 LIBAV_FFT_ASFLAGS="-D__x86_64__ -DPIC -DELF"
2766 AC_MSG_ERROR([libav's FFT routines are only available for 32-bit windows or 64-bit x86 based platforms.])
2771 if test -n "$LIBAV_FFT_ASFLAGS"; then
2772 dnl If we're on an x86 or x64 system which supports libav-fft's asm routines
2773 dnl check for Yasm, and error out if it doesn't exist or we have too old of a
2775 if test -z "$YASM" ; then
2776 AC_MSG_ERROR([Yasm is required to build with libav's optimized FFT routines, but you do not appear to have Yasm installed. See https://developer.mozilla.org/en/YASM for more details.])
2778 dnl Check that we have the right yasm version. We require 1.0.1 or newer
2779 dnl on Linux and 1.1 or newer everywhere else.
2780 if test "$OS_ARCH" = "Linux" ; then
2781 if test "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -eq "0" -a "$_YASM_RELEASE" -lt "1" \) ; then
2782 AC_MSG_ERROR([Yasm 1.0.1 or greater is required to build with libav's optimized FFT routines, but you do not appear to have Yasm installed. See https://developer.mozilla.org/en/YASM for more details.])
2785 if test "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
2786 AC_MSG_ERROR([Yasm 1.1 or greater is required to build with libav's optimized FFT routines, but you do not appear to have Yasm installed. See https://developer.mozilla.org/en/YASM for more details.])
2789 elif test -n "$MOZ_LIBAV_FFT" -a "${CPU_ARCH}" != "arm"; then
2790 dnl Warn if we're not building either libav or opendl-max optimized routines.
2791 AC_MSG_WARN([No assembler or assembly support for libav-fft. Using unoptimized C routines.])
2794 dnl ========================================================
2795 dnl = FFmpeg's ffvpx configuration
2796 dnl ========================================================
2803 dnl Use same conditional as MOZ_LIBAV_FFT to enable FFmpeg's ffvpx assembly decoder.
2804 if test -n "$LIBAV_FFT_ASFLAGS"; then
2805 FFVPX_ASFLAGS=$LIBAV_FFT_ASFLAGS
2807 dnl On x86 system with assembly optimizations disabled, the ffvp9 and
2808 dnl ffvp8 decoders give worse performance than libvpx ones. So we only
2809 dnl enable the FFmpeg FLAC decoder on those machines.
2810 MOZ_FFVPX_FLACONLY=1
2814 case "$OS_TARGET" in
2816 dnl don't set up anything special
2820 MOZ_FFVPX_FLACONLY=1
2821 dnl Use same conditional as MOZ_LIBVPX to enable FFmpeg's ffvpx assembly decoder.
2822 dnl aarch 64 FLAC decoder for now will be C only.
2823 FFVPX_ASFLAGS=$VPX_ASFLAGS
2829 if test -n "$MOZ_FFVPX"; then
2830 AC_DEFINE(MOZ_FFVPX)
2832 if test -n "$MOZ_FFVPX_FLACONLY"; then
2833 AC_DEFINE(MOZ_FFVPX_FLACONLY)
2836 dnl ========================================================
2837 dnl = Enable compilation of specific extension modules
2838 dnl ========================================================
2840 MOZ_ARG_ENABLE_STRING(extensions,
2841 [ --enable-extensions Enable extensions],
2842 [ for option in `echo $enableval | sed 's/,/ /g'`; do
2843 if test "$option" = "yes" -o "$option" = "all"; then
2844 AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
2845 elif test "$option" = "no" -o "$option" = "none"; then
2847 elif test "$option" = "default"; then
2848 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
2849 elif test `echo "$option" | grep -c \^-` != 0; then
2850 option=`echo $option | sed 's/^-//'`
2851 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
2853 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
2856 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
2858 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
2859 dnl when trying to build a nonexistent extension.
2860 for extension in $MOZ_EXTENSIONS; do
2861 if test ! -d "${srcdir}/extensions/${extension}"; then
2862 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
2866 if test -n "$MOZ_USE_NATIVE_POPUP_WINDOWS"; then
2867 AC_DEFINE(MOZ_USE_NATIVE_POPUP_WINDOWS)
2870 # Avoid defining MOZ_ENABLE_CAIRO_FT on Windows platforms because
2871 # "cairo-ft-font.c" includes <dlfcn.h>, which only exists on posix platforms
2872 if test -n "$MOZ_TREE_FREETYPE" -a "$OS_TARGET" != WINNT; then
2873 MOZ_ENABLE_CAIRO_FT=1
2874 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
2875 CAIRO_FT_CFLAGS="-I$_topsrcdir/modules/freetype2/include"
2876 AC_SUBST_LIST(CAIRO_FT_CFLAGS)
2879 AC_CHECK_PROGS(WGET, wget, "")
2882 dnl ========================================================
2883 dnl Enable building the signmar program.
2884 dnl This option is much different than the --enable-verify-mar option.
2885 dnl --enable-verify-mar is for enabling the verification check on MAR
2886 dnl files in the updater. The --enable-signmar option is for building
2887 dnl the signmar program.
2888 dnl ========================================================
2890 MOZ_ARG_ENABLE_BOOL(signmar,
2891 [ --enable-signmar Enable building the signmar program],
2892 MOZ_ENABLE_SIGNMAR=1,
2893 MOZ_ENABLE_SIGNMAR= )
2895 if test -n "$MOZ_ENABLE_SIGNMAR"; then
2896 if test -z "$COMPILE_ENVIRONMENT" ; then
2897 AC_MSG_WARN([Cannot --enable-signmar with --disable-compile-environment])
2900 AC_DEFINE(MOZ_ENABLE_SIGNMAR)
2904 dnl ========================================================
2906 dnl ========================================================
2908 if test "$MOZ_IOS"; then
2912 MOZ_ARG_DISABLE_BOOL(updater,
2913 [ --disable-updater Disable building of updater],
2917 if test -n "$MOZ_UPDATER"; then
2918 AC_DEFINE(MOZ_UPDATER)
2921 dnl ========================================================
2922 dnl parental controls (for Windows Vista)
2923 dnl ========================================================
2924 MOZ_ARG_DISABLE_BOOL(parental-controls,
2925 [ --disable-parental-controls
2926 Do not build parental controls],
2927 MOZ_DISABLE_PARENTAL_CONTROLS=1,
2928 MOZ_DISABLE_PARENTAL_CONTROLS=)
2929 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
2930 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
2933 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
2935 dnl ========================================================
2936 dnl = Disable smartcard support
2937 dnl ========================================================
2938 if test -n "$MOZ_NO_SMART_CARDS"; then
2939 AC_DEFINE(MOZ_NO_SMART_CARDS)
2941 AC_SUBST(MOZ_NO_SMART_CARDS)
2943 dnl ========================================================
2944 dnl = Sandboxing support
2945 dnl ========================================================
2946 if test -n "$MOZ_TSAN" -o -n "$MOZ_ASAN"; then
2947 # Bug 1182565: TSan conflicts with sandboxing on Linux.
2948 # Bug 1287971: LSan also conflicts with sandboxing on Linux.
2956 case "$OS_TARGET:$CPU_ARCH" in
2958 # No sandbox support on AArch64 Windows.
2963 MOZ_ARG_DISABLE_BOOL(sandbox,
2964 [ --disable-sandbox Disable sandboxing support],
2968 dnl ========================================================
2969 dnl = Content process sandboxing
2970 dnl ========================================================
2972 case "$OS_TARGET" in
2974 MOZ_CONTENT_SANDBOX=$MOZ_SANDBOX
2977 MOZ_CONTENT_SANDBOX=$MOZ_SANDBOX
2982 MOZ_CONTENT_SANDBOX=$MOZ_SANDBOX
2988 MOZ_ARG_ENABLE_BOOL(content-sandbox,
2989 [ --enable-content-sandbox Enable sandboxing support for content-processes
2990 --disable-content-sandbox Disable sandboxing support for content-processes],
2991 MOZ_CONTENT_SANDBOX=1,
2992 MOZ_CONTENT_SANDBOX=)
2994 if test -n "$MOZ_CONTENT_SANDBOX" -a -z "$MOZ_SANDBOX"; then
2995 AC_MSG_ERROR([--enable-content-sandbox and --disable-sandbox are conflicting options])
2998 if test -n "$MOZ_CONTENT_SANDBOX"; then
2999 AC_DEFINE(MOZ_CONTENT_SANDBOX)
3002 AC_SUBST(MOZ_CONTENT_SANDBOX)
3004 dnl ========================================================
3005 dnl = Gecko Media Plugin sandboxing
3006 dnl ========================================================
3009 MOZ_GMP_SANDBOX=$MOZ_SANDBOX
3014 MOZ_GMP_SANDBOX=$MOZ_SANDBOX
3019 MOZ_GMP_SANDBOX=$MOZ_SANDBOX
3023 if test -n "$MOZ_GMP_SANDBOX"; then
3024 AC_DEFINE(MOZ_GMP_SANDBOX)
3027 AC_SUBST(MOZ_GMP_SANDBOX)
3029 if test -z "$MOZ_CONTENT_SANDBOX" -a -z "$MOZ_GMP_SANDBOX"; then
3033 if test -n "$MOZ_SANDBOX"; then
3034 AC_DEFINE(MOZ_SANDBOX)
3037 AC_SUBST(MOZ_SANDBOX)
3040 dnl ========================================================
3042 dnl = Module specific options
3044 dnl ========================================================
3045 MOZ_ARG_HEADER(Individual module options)
3047 dnl ========================================================
3048 dnl = Disable feed handling components
3049 dnl ========================================================
3050 MOZ_ARG_DISABLE_BOOL(feeds,
3051 [ --disable-feeds Disable feed handling and processing components],
3054 if test -n "$MOZ_FEEDS"; then
3055 AC_DEFINE(MOZ_FEEDS)
3057 if test "$MOZ_BUILD_APP" = "browser"; then
3058 AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
3062 dnl ========================================================
3063 dnl Check for sqlite
3064 dnl ========================================================
3067 MOZ_ARG_ENABLE_BOOL(system-sqlite,
3068 [ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
3069 MOZ_SYSTEM_SQLITE=1,
3070 MOZ_SYSTEM_SQLITE= )
3072 if test -n "$MOZ_SYSTEM_SQLITE"
3074 dnl ============================
3075 dnl === SQLite Version check ===
3076 dnl ============================
3077 dnl Check to see if the system SQLite package is new enough.
3078 PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
3080 dnl ==================================
3081 dnl === SQLITE_SECURE_DELETE check ===
3082 dnl ==================================
3083 dnl Check to see if the system SQLite package is compiled with
3084 dnl SQLITE_SECURE_DELETE enabled.
3085 AC_MSG_CHECKING(for SQLITE_SECURE_DELETE support in system SQLite)
3086 _SAVE_CFLAGS="$CFLAGS"
3087 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
3089 LIBS="$LIBS $SQLITE_LIBS"
3090 AC_CACHE_VAL(ac_cv_sqlite_secure_delete,[
3092 #include "sqlite3.h"
3094 int main(int argc, char **argv){
3095 return !sqlite3_compileoption_used("SQLITE_SECURE_DELETE");
3097 ac_cv_sqlite_secure_delete=yes,
3098 ac_cv_sqlite_secure_delete=no,
3099 ac_cv_sqlite_secure_delete=no
3102 AC_MSG_RESULT($ac_cv_sqlite_secure_delete)
3103 CFLAGS="$_SAVE_CFLAGS"
3105 if test "x$ac_cv_sqlite_secure_delete" = "xno"; then
3106 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_SECURE_DELETE.])
3109 dnl ===============================
3110 dnl === SQLITE_THREADSAFE check ===
3111 dnl ===============================
3112 dnl Check to see if the system SQLite package is compiled with
3113 dnl SQLITE_THREADSAFE enabled.
3114 AC_MSG_CHECKING(for SQLITE_THREADSAFE support in system SQLite)
3115 _SAVE_CFLAGS="$CFLAGS"
3116 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
3118 LIBS="$LIBS $SQLITE_LIBS"
3119 AC_CACHE_VAL(ac_cv_sqlite_threadsafe,[
3121 #include "sqlite3.h"
3123 int main(int argc, char **argv){
3124 return !sqlite3_compileoption_used("SQLITE_THREADSAFE=1");
3126 ac_cv_sqlite_threadsafe=yes,
3127 ac_cv_sqlite_threadsafe=no,
3128 ac_cv_sqlite_threadsafe=no
3131 AC_MSG_RESULT($ac_cv_sqlite_threadsafe)
3132 CFLAGS="$_SAVE_CFLAGS"
3134 if test "x$ac_cv_sqlite_threadsafe" = "xno"; then
3135 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_THREADSAFE.])
3138 dnl ================================
3139 dnl === SQLITE_ENABLE_FTS3 check ===
3140 dnl ================================
3141 dnl check to see if the system SQLite package is compiled with
3142 dnl SQLITE_ENABLE_FTS3 enabled.
3143 AC_MSG_CHECKING(for SQLITE_ENABLE_FTS3 support in system SQLite)
3144 _SAVE_CFLAGS="$CFLAGS"
3145 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
3147 LIBS="$LIBS $SQLITE_LIBS"
3148 AC_CACHE_VAL(ac_cv_sqlite_enable_fts3,[
3150 #include "sqlite3.h"
3152 int main(int argc, char **argv){
3153 return !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3");
3155 ac_cv_sqlite_enable_fts3=yes,
3156 ac_cv_sqlite_enable_fts3=no,
3157 ac_cv_sqlite_enable_fts3=no
3160 AC_MSG_RESULT($ac_cv_sqlite_enable_fts3)
3161 CFLAGS="$_SAVE_CFLAGS"
3163 if test "x$ac_cv_sqlite_enable_fts3" = "xno"; then
3164 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_FTS3.])
3167 dnl =========================================
3168 dnl === SQLITE_ENABLE_UNLOCK_NOTIFY check ===
3169 dnl =========================================
3170 dnl check to see if the system SQLite package is compiled with
3171 dnl SQLITE_ENABLE_UNLOCK_NOTIFY enabled.
3172 AC_MSG_CHECKING(for SQLITE_ENABLE_UNLOCK_NOTIFY support in system SQLite)
3173 _SAVE_CFLAGS="$CFLAGS"
3174 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
3176 LIBS="$LIBS $SQLITE_LIBS"
3177 AC_CACHE_VAL(ac_cv_sqlite_enable_unlock_notify,[
3179 #include "sqlite3.h"
3181 int main(int argc, char **argv){
3182 return !sqlite3_compileoption_used("SQLITE_ENABLE_UNLOCK_NOTIFY");
3184 ac_cv_sqlite_enable_unlock_notify=yes,
3185 ac_cv_sqlite_enable_unlock_notify=no,
3186 ac_cv_sqlite_enable_unlock_notify=no
3189 AC_MSG_RESULT($ac_cv_sqlite_enable_unlock_notify)
3190 CFLAGS="$_SAVE_CFLAGS"
3192 if test "x$ac_cv_sqlite_enable_unlock_notify" = "xno"; then
3193 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_UNLOCK_NOTIFY.])
3196 dnl =========================================
3197 dnl === SQLITE_ENABLE_DBSTAT_VTAB check ===
3198 dnl =========================================
3199 dnl check to see if the system SQLite package is compiled with
3200 dnl SQLITE_ENABLE_DBSTAT_VTAB.
3201 AC_MSG_CHECKING(for SQLITE_ENABLE_DBSTAT_VTAB support in system SQLite)
3202 _SAVE_CFLAGS="$CFLAGS"
3203 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
3205 LIBS="$LIBS $SQLITE_LIBS"
3206 AC_CACHE_VAL(ac_cv_sqlite_dbstat_vtab,[
3208 #include "sqlite3.h"
3210 int main(int argc, char **argv){
3211 return !sqlite3_compileoption_used("SQLITE_ENABLE_DBSTAT_VTAB");
3213 ac_cv_sqlite_dbstat_vtab=yes,
3214 ac_cv_sqlite_dbstat_vtab=no,
3215 ac_cv_sqlite_dbstat_vtab=no
3218 AC_MSG_RESULT($ac_cv_sqlite_dbstat_vtab)
3219 CFLAGS="$_SAVE_CFLAGS"
3221 if test "x$ac_cv_sqlite_dbstat_vtab" = "xno"; then
3222 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_DBSTAT_VTAB.])
3225 dnl ==============================
3226 dnl === SQLite fdatasync check ===
3227 dnl ==============================
3228 dnl Check to see if fdatasync is available
3229 AC_CHECK_FUNC(fdatasync)
3232 if test -n "$MOZ_SYSTEM_SQLITE"; then
3233 AC_DEFINE(MOZ_SYSTEM_SQLITE)
3235 AC_SUBST(MOZ_SYSTEM_SQLITE)
3237 dnl ========================================================
3238 dnl = Disable zipwriter
3239 dnl ========================================================
3240 MOZ_ARG_DISABLE_BOOL(zipwriter,
3241 [ --disable-zipwriter Disable zipwriter component],
3244 AC_SUBST(MOZ_ZIPWRITER)
3246 dnl ========================================================
3248 dnl = Feature options that require extra sources to be pulled
3250 dnl ========================================================
3251 dnl MOZ_ARG_HEADER(Features that require extra sources)
3253 dnl ========================================================
3255 dnl = Runtime debugging and Optimization Options
3257 dnl ========================================================
3258 MOZ_ARG_HEADER(Runtime debugging and Optimizations)
3260 dnl ========================================================
3261 dnl enable mobile optimizations
3262 dnl ========================================================
3263 MOZ_ARG_ENABLE_BOOL(mobile-optimize,
3264 [ --enable-mobile-optimize
3265 Enable mobile optimizations],
3266 MOZ_GFX_OPTIMIZE_MOBILE=1)
3268 AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
3270 if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
3271 # We ignore paint will resample on mobile for performance.
3272 # We may want to revisit this later.
3273 MOZ_IGNORE_PAINT_WILL_RESAMPLE=1
3275 AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
3276 AC_DEFINE(MOZ_IGNORE_PAINT_WILL_RESAMPLE)
3279 dnl ========================================================
3280 dnl = Enable code optimization. ON by default.
3281 dnl ========================================================
3283 # Use value from moz.configure if one is defined. Else use our computed
3285 if test -n "${MOZ_CONFIGURE_OPTIMIZE_FLAGS}"; then
3286 MOZ_OPTIMIZE_FLAGS=${MOZ_CONFIGURE_OPTIMIZE_FLAGS}
3289 MOZ_SET_FRAMEPTR_FLAGS
3291 if test "$COMPILE_ENVIRONMENT"; then
3292 if test -n "$MOZ_OPTIMIZE"; then
3293 AC_MSG_CHECKING([for valid C compiler optimization flags])
3294 _SAVE_CFLAGS=$CFLAGS
3295 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
3296 AC_TRY_COMPILE([#include <stdio.h>],
3297 [printf("Hello World\n");],
3300 AC_MSG_RESULT([$_results])
3301 if test "$_results" = "no"; then
3302 AC_MSG_ERROR([These compiler flags for C are invalid: $MOZ_OPTIMIZE_FLAGS])
3304 CFLAGS=$_SAVE_CFLAGS
3305 if test -n "$MOZ_LTO" -a -n "$CLANG_CC"; then
3306 # When using llvm-based LTO, non numeric optimization levels are
3307 # not supported by the linker, so force the linker to use -O2 (
3308 # which doesn't influence the level compilation units are actually
3310 case " $MOZ_OPTIMIZE_FLAGS " in
3311 *\ -Os\ *|*\ -Oz\ *)
3312 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -O2"
3317 fi # COMPILE_ENVIRONMENT
3319 AC_SUBST_LIST(MOZ_FRAMEPTR_FLAGS)
3320 AC_SUBST_LIST(MOZ_OPTIMIZE_FLAGS)
3321 AC_SUBST_LIST(MOZ_OPTIMIZE_LDFLAGS)
3322 AC_SUBST_LIST(MOZ_PGO_OPTIMIZE_FLAGS)
3324 dnl ========================================================
3325 dnl = Disable treating compiler warnings as errors
3326 dnl ========================================================
3327 if test -z "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then
3328 WARNINGS_AS_ERRORS=''
3331 dnl ========================================================
3332 dnl = Enable runtime logging
3333 dnl ========================================================
3334 AC_DEFINE(MOZ_LOGGING)
3335 AC_DEFINE(FORCE_PR_LOG)
3337 dnl ========================================================
3338 dnl = This will enable logging of addref, release, ctor, dtor.
3339 dnl ========================================================
3340 _ENABLE_LOGREFCNT=42
3341 MOZ_ARG_ENABLE_BOOL(logrefcnt,
3342 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
3343 _ENABLE_LOGREFCNT=1,
3344 _ENABLE_LOGREFCNT= )
3345 if test "$_ENABLE_LOGREFCNT" = "1"; then
3346 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
3347 elif test -z "$_ENABLE_LOGREFCNT"; then
3348 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
3351 dnl ========================================================
3352 dnl moz_dump_painting
3353 dnl ========================================================
3354 MOZ_ARG_ENABLE_BOOL(dump-painting,
3355 [ --enable-dump-painting Enable paint debugging.],
3356 MOZ_DUMP_PAINTING=1,
3357 MOZ_DUMP_PAINTING= )
3358 if test -n "$MOZ_DUMP_PAINTING"; then
3359 AC_DEFINE(MOZ_DUMP_PAINTING)
3360 AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
3362 if test -n "$MOZ_DEBUG"; then
3363 AC_DEFINE(MOZ_DUMP_PAINTING)
3366 case "${OS_TARGET}" in
3367 Android|WINNT|Darwin)
3368 MOZ_GLUE_IN_PROGRAM=
3371 dnl On !Android !Windows !OSX, we only want to link executables against mozglue
3372 MOZ_GLUE_IN_PROGRAM=1
3373 AC_DEFINE(MOZ_GLUE_IN_PROGRAM)
3377 dnl ========================================================
3378 dnl = Jemalloc build setup
3379 dnl ========================================================
3380 if test -z "$MOZ_MEMORY"; then
3383 if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
3384 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.])
3389 dnl The generic feature tests that determine how to compute ncpus are long and
3390 dnl complicated. Therefore, simply define special cpp variables for the
3391 dnl platforms we have special knowledge of.
3394 export MOZ_NO_DEBUG_RTL=1
3398 AC_SUBST(MOZ_GLUE_IN_PROGRAM)
3400 AC_SUBST_LIST(MOZ_GLUE_WRAP_LDFLAGS)
3401 export MOZ_GLUE_WRAP_LDFLAGS
3403 dnl ========================================================
3404 dnl = Enable using the clang plugin to build
3405 dnl ========================================================
3407 if test -n "$COMPILE_ENVIRONMENT"; then
3408 MOZ_CONFIG_CLANG_PLUGIN
3409 fi # COMPILE_ENVIRONMENT
3411 dnl ========================================================
3412 dnl = Enable stripping of libs & executables
3413 dnl ========================================================
3414 MOZ_ARG_ENABLE_BOOL(strip,
3415 [ --enable-strip Enable stripping of libs & executables ],
3419 dnl ========================================================
3420 dnl = Enable stripping of libs & executables when packaging
3421 dnl ========================================================
3422 MOZ_ARG_ENABLE_BOOL(install-strip,
3423 [ --enable-install-strip Enable stripping of libs & executables when packaging ],
3427 dnl ========================================================
3428 dnl = frontend JS debug mode
3429 dnl ========================================================
3431 MOZ_ARG_ENABLE_BOOL(debug-js-modules,
3432 [ --enable-debug-js-modules Enable debug mode for frontend JS libraries],
3436 AC_SUBST(DEBUG_JS_MODULES)
3438 dnl ========================================================
3440 dnl = Profiling and Instrumenting
3442 dnl ========================================================
3443 MOZ_ARG_HEADER(Profiling and Instrumenting)
3445 dnl ========================================================
3446 dnl = Offer a way to disable the startup cache
3447 dnl ========================================================
3449 MOZ_ARG_DISABLE_BOOL(startupcache,
3450 [ --disable-startupcache Disable startup cache ],
3451 MOZ_DISABLE_STARTUPCACHE=1,
3452 MOZ_DISABLE_STARTUPCACHE=)
3454 if test -n "$MOZ_DISABLE_STARTUPCACHE"; then
3455 AC_DEFINE(MOZ_DISABLE_STARTUPCACHE)
3457 AC_SUBST(MOZ_DISABLE_STARTUPCACHE)
3459 dnl ========================================================
3460 dnl = Support for demangling undefined symbols
3461 dnl ========================================================
3462 if test -z "$SKIP_LIBRARY_CHECKS"; then
3465 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
3469 # Demangle only for debug or DMD builds
3470 MOZ_DEMANGLE_SYMBOLS=
3471 if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$MOZ_DMD"; then
3472 MOZ_DEMANGLE_SYMBOLS=1
3473 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
3475 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
3477 dnl ========================================================
3478 dnl = Support for gcc stack unwinding (from gcc 3.3)
3479 dnl ========================================================
3480 if test -z "$SKIP_LIBRARY_CHECKS"; then
3483 MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
3487 dnl ========================================================
3489 dnl ========================================================
3491 MOZ_ARG_WITH_STRING(jitreport-granularity,
3492 [ --jitreport-granularity=N
3493 Default granularity at which to report JIT code
3496 1 - code ranges for whole functions only
3497 2 - per-line information
3498 3 - per-op information],
3499 JITREPORT_GRANULARITY=$withval,
3500 JITREPORT_GRANULARITY=3)
3502 AC_DEFINE_UNQUOTED(JS_DEFAULT_JITREPORT_GRANULARITY, $JITREPORT_GRANULARITY)
3504 dnl ========================================================
3508 dnl ========================================================
3509 MOZ_ARG_HEADER(Misc. Options)
3511 dnl ========================================================
3512 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
3513 dnl ========================================================
3514 MOZ_ARG_WITH_STRING(user-appdir,
3515 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
3516 [ val=`echo $withval`
3517 if echo "$val" | grep "\/" >/dev/null; then
3518 AC_MSG_ERROR("Homedir must be single relative path.")
3523 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
3525 if test -z "$SKIP_COMPILER_CHECKS"; then
3526 dnl ========================================================
3528 dnl = Compiler Options
3530 dnl ========================================================
3531 MOZ_ARG_HEADER(Compiler Options)
3533 dnl ========================================================
3534 dnl Check for gcc -pipe support
3535 dnl ========================================================
3536 AC_MSG_CHECKING([for -pipe support])
3537 if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
3538 dnl Any gcc that supports firefox supports -pipe.
3539 CFLAGS="$CFLAGS -pipe"
3540 CXXFLAGS="$CXXFLAGS -pipe"
3541 AC_MSG_RESULT([yes])
3546 fi # ! SKIP_COMPILER_CHECKS
3548 AC_DEFINE(CPP_THROW_NEW, [throw()])
3551 if test "$COMPILE_ENVIRONMENT"; then
3553 fi # COMPILE_ENVIRONMENT
3555 dnl ========================================================
3557 dnl = Static Build Options
3559 dnl ========================================================
3560 MOZ_ARG_HEADER(Static build options)
3562 if test -z "$MOZ_SYSTEM_ZLIB"; then
3563 if test -n "$JS_SHARED_LIBRARY" -o -n "$MOZ_LINKER"; then
3565 AC_DEFINE(ZLIB_IN_MOZGLUE)
3569 AC_SUBST(ZLIB_IN_MOZGLUE)
3571 dnl ========================================================
3573 dnl = Standalone module options
3575 dnl ========================================================
3576 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
3579 dnl ========================================================
3581 if test -z "$SKIP_PATH_CHECKS"; then
3582 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
3583 if test "$MOZ_ENABLE_GTK" ; then
3584 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
3589 if test -z "${GLIB_GMODULE_LIBS}" \
3590 -a -n "${GLIB_CONFIG}"\
3591 -a "${GLIB_CONFIG}" != no\
3593 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
3596 AC_SUBST_LIST(GLIB_GMODULE_LIBS)
3598 if test "$USE_FC_FREETYPE"; then
3599 if test "$COMPILE_ENVIRONMENT"; then
3600 dnl ========================================================
3601 dnl = Check for freetype2 functionality
3602 dnl ========================================================
3603 if test "$_HAVE_FREETYPE2" -a -z "$MOZ_TREE_FREETYPE"; then
3605 _SAVE_CFLAGS="$CFLAGS"
3606 LIBS="$LIBS $FT2_LIBS"
3607 CFLAGS="$CFLAGS $FT2_CFLAGS"
3609 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
3610 ac_cv_member_FT_Bitmap_Size_y_ppem,
3611 [AC_TRY_COMPILE([#include <ft2build.h>
3612 #include FT_FREETYPE_H],
3614 if (sizeof s.y_ppem) return 0;
3616 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
3617 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
3618 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
3619 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
3621 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
3623 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
3624 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
3625 [FT_Bitmap_Size structure includes y_ppem field])
3627 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table)
3630 CFLAGS="$_SAVE_CFLAGS"
3633 _SAVE_CPPFLAGS="$CPPFLAGS"
3634 CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
3635 MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
3636 [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
3637 CPPFLAGS="$_SAVE_CPPFLAGS"
3641 dnl ========================================================
3642 dnl Check if we need the 32-bit Linux SSE2 error dialog
3643 dnl ========================================================
3645 AC_SUBST(MOZ_LINUX_32_SSE2_STARTUP_ERROR)
3647 dnl ========================================================
3648 dnl Check for pixman and cairo
3649 dnl ========================================================
3652 MOZ_ARG_ENABLE_BOOL(system-cairo,
3653 [ --enable-system-cairo Obsolete: do not use this option],
3654 AC_MSG_ERROR(--enable-system-cairo is not supported),
3658 MOZ_ARG_ENABLE_BOOL(system-pixman,
3659 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
3661 MOZ_TREE_PIXMAN=force,
3664 if test "$MOZ_TREE_PIXMAN"; then
3665 AC_DEFINE(MOZ_TREE_PIXMAN)
3667 PKG_CHECK_MODULES(MOZ_PIXMAN, pixman-1 >= 0.19.2)
3670 MOZ_CAIRO_CFLAGS="-I${DIST}/include/cairo"
3671 AC_DEFINE(MOZ_TREE_CAIRO)
3673 if test "$OS_ARCH" = "WINNT"; then
3674 # For now we assume that we will have a uint64_t available through
3675 # one of the above headers or mozstdint.h.
3676 AC_DEFINE(HAVE_UINT64_T)
3679 # Define macros for cairo-features.h
3680 TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
3681 if test "$MOZ_X11"; then
3682 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
3683 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
3684 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
3686 if test "$_HAVE_FREETYPE2"; then
3687 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
3688 MOZ_ENABLE_CAIRO_FT=1
3689 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
3692 case "$MOZ_WIDGET_TOOLKIT" in
3694 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
3695 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
3696 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
3699 WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1"
3700 WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
3701 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
3702 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
3703 MOZ_ENABLE_D2D_SURFACE=1
3705 if test "$COMPILE_ENVIRONMENT"; then
3707 dnl D3D10 Layers depend on D2D Surfaces.
3708 if test -n "$WIN32_D2D_SURFACE_FEATURE"; then
3709 MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
3714 if test "$USE_FC_FREETYPE"; then
3715 FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
3717 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
3718 AC_SUBST(MOZ_ENABLE_D2D_SURFACE)
3719 AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
3721 AC_SUBST(PS_SURFACE_FEATURE)
3722 AC_SUBST(SVG_SURFACE_FEATURE)
3723 AC_SUBST(XLIB_SURFACE_FEATURE)
3724 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
3725 AC_SUBST(QUARTZ_SURFACE_FEATURE)
3726 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
3727 AC_SUBST(WIN32_SURFACE_FEATURE)
3728 AC_SUBST(OS2_SURFACE_FEATURE)
3729 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
3730 AC_SUBST(FT_FONT_FEATURE)
3731 AC_SUBST(FC_FONT_FEATURE)
3732 AC_SUBST(WIN32_FONT_FEATURE)
3733 AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
3734 AC_SUBST(WIN32_D2D_SURFACE_FEATURE)
3735 AC_SUBST(QUARTZ_FONT_FEATURE)
3736 AC_SUBST(PNG_FUNCTIONS_FEATURE)
3737 AC_SUBST(QT_SURFACE_FEATURE)
3738 AC_SUBST(TEE_SURFACE_FEATURE)
3740 if test "$MOZ_X11"; then
3741 MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
3744 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
3746 case "$MOZ_WIDGET_TOOLKIT" in
3748 TK_CFLAGS="$MOZ_CAIRO_CFLAGS $MOZ_PIXMAN_CFLAGS"
3749 TK_LIBS="$MOZ_CAIRO_LIBS $MOZ_PIXMAN_LIBS"
3753 AC_SUBST(MOZ_TREE_CAIRO)
3754 AC_SUBST_LIST(MOZ_CAIRO_CFLAGS)
3755 AC_SUBST_LIST(MOZ_CAIRO_LIBS)
3756 AC_SUBST_LIST(MOZ_CAIRO_OSLIBS)
3757 AC_SUBST(MOZ_TREE_PIXMAN)
3759 BINDGEN_SYSTEM_FLAGS="$_BINDGEN_CFLAGS $NSPR_CFLAGS $NSS_CFLAGS $MOZ_PIXMAN_CFLAGS $MOZ_CAIRO_CFLAGS"
3760 AC_SUBST(BINDGEN_SYSTEM_FLAGS)
3761 BINDGEN_SYSTEM_TOML_FLAGS="$BINDGEN_SYSTEM_FLAGS"
3762 AC_SUBST_TOML_LIST(BINDGEN_SYSTEM_TOML_FLAGS)
3764 dnl ========================================================
3766 dnl ========================================================
3767 MOZ_ARG_DISABLE_BOOL(xul,
3768 [ --disable-xul Disable XUL],
3770 if test "$MOZ_XUL"; then
3773 dnl remove extensions that require XUL
3774 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/irc//' -e 's/tasks//'`
3779 dnl ========================================================
3780 dnl necko configuration options
3781 dnl ========================================================
3784 dnl option to disable necko's wifi scanner
3787 if test "$MOZ_WIDGET_TOOLKIT"; then
3789 case "$OS_TARGET" in
3791 if test -z "$MOZ_IOS"; then
3795 DragonFly|FreeBSD|WINNT)
3806 MOZ_ARG_DISABLE_BOOL(necko-wifi,
3807 [ --disable-necko-wifi Disable necko wifi scanner],
3811 if test "$NECKO_WIFI"; then
3812 if test -z "$MOZ_ENABLE_DBUS" -a -n "$NECKO_WIFI_DBUS"; then
3813 AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi])
3815 AC_DEFINE(NECKO_WIFI)
3816 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_WIFI"
3818 AC_SUBST(NECKO_WIFI)
3819 AC_SUBST(NECKO_WIFI_DBUS)
3822 dnl option to disable cookies
3824 MOZ_ARG_DISABLE_BOOL(cookies,
3825 [ --disable-cookies Disable cookie support],
3828 AC_SUBST(NECKO_COOKIES)
3829 if test "$NECKO_COOKIES"; then
3830 AC_DEFINE(NECKO_COOKIES)
3831 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_COOKIES"
3834 dnl ========================================================
3836 dnl = Maintainer debug option (no --enable equivalent)
3838 dnl ========================================================
3842 AC_SUBST(AR_EXTRACT)
3844 AC_SUBST_LIST(ASFLAGS)
3850 AC_SUBST(MOZ_AUTH_EXTENSION)
3851 AC_SUBST(MOZ_PREF_EXTENSIONS)
3852 AC_SUBST_LIST(MOZ_DEBUG_LDFLAGS)
3853 AC_SUBST(WARNINGS_AS_ERRORS)
3854 AC_SUBST_LIST(WARNINGS_CFLAGS)
3855 AC_SUBST_SET(MOZ_EXTENSIONS)
3856 AC_SUBST(MOZ_TOOLKIT_SEARCH)
3859 AC_SUBST(MOZ_UNIVERSALCHARDET)
3860 AC_SUBST(MOZ_SPELLCHECK)
3861 AC_SUBST(MOZ_ANDROID_ANR_REPORTER)
3862 AC_SUBST(MOZ_CRASHREPORTER)
3863 AC_SUBST(MOZ_CRASHREPORTER_INJECTOR)
3864 AC_SUBST(MOZ_STUB_INSTALLER)
3865 AC_SUBST(MOZ_ENABLE_SIGNMAR)
3866 AC_SUBST(MOZ_UPDATER)
3868 AC_SUBST(MOZ_ANGLE_RENDERER)
3869 AC_SUBST(MOZ_D3D_CPU_SUFFIX)
3870 AC_SUBST(MOZ_HAS_WINSDK_WITH_D3D)
3871 AC_SUBST(MOZ_D3DCOMPILER_VISTA_DLL)
3872 AC_SUBST(MOZ_D3DCOMPILER_VISTA_DLL_PATH)
3874 AC_SUBST(MOZ_ANDROID_APPLICATION_CLASS)
3875 AC_SUBST(MOZ_ANDROID_BROWSER_INTENT_CLASS)
3876 AC_SUBST(MOZ_EXCLUDE_HYPHENATION_DICTIONARIES)
3877 AC_SUBST(ENABLE_STRIP)
3878 AC_SUBST(PKG_SKIP_STRIP)
3879 AC_SUBST(STRIP_FLAGS)
3880 AC_SUBST(INCREMENTAL_LINKER)
3882 AC_SUBST_LIST(MOZ_FIX_LINK_PATHS)
3884 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
3885 AC_SUBST(MOZ_LINKER_EXTRACT)
3887 if test -n "$MOZ_BINARY_EXTENSIONS"; then
3888 AC_DEFINE(MOZ_BINARY_EXTENSIONS)
3891 AC_SUBST(MOZ_REQUIRE_SIGNING)
3892 if test "$MOZ_REQUIRE_SIGNING" = 1; then
3893 AC_DEFINE(MOZ_REQUIRE_SIGNING)
3896 dnl ========================================================
3897 dnl = Mac bundle name prefix
3898 dnl ========================================================
3899 MOZ_ARG_WITH_STRING(macbundlename-prefix,
3900 [ --with-macbundlename-prefix=prefix
3901 Prefix for MOZ_MACBUNDLE_NAME],
3902 [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
3904 MOZ_MACBUNDLE_NAME=$MOZ_APP_DISPLAYNAME
3905 if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
3906 MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
3909 if test "$MOZ_DEBUG"; then
3910 MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME}Debug.app"
3912 MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
3914 AC_SUBST(MOZ_MACBUNDLE_NAME)
3916 dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
3917 # If the MOZ_MACBUNDLE_ID is defined in the configure.sh, use it
3918 # Otherwise, use MOZ_APP_DISPLAYNAME
3919 if test -z "$MOZ_MACBUNDLE_ID"; then
3920 MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr 'A-Z' 'a-z' | tr -dc 'a-z-'`
3922 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
3923 if test "$MOZ_DEBUG"; then
3924 MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
3927 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
3928 AC_SUBST(MOZ_MACBUNDLE_ID)
3930 dnl ========================================================
3931 dnl = Child Process Name for IPC
3932 dnl ========================================================
3933 if test "$MOZ_WIDGET_TOOLKIT" != "android"; then
3934 MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}"
3936 # We want to let Android unpack the file at install time, but it only does
3937 # so if the file is named libsomething.so. The lib/ path is also required
3938 # because the unpacked file will be under the lib/ subdirectory and will
3939 # need to be executed from that path.
3940 MOZ_CHILD_PROCESS_NAME="libplugin-container.so"
3942 MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/"
3943 MOZ_CHILD_PROCESS_BUNDLENAME="${MOZ_APP_DISPLAYNAME}CP"
3945 AC_SUBST(MOZ_CHILD_PROCESS_NAME)
3946 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE)
3947 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLENAME)
3949 # The following variables are available to branding and application
3950 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
3951 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
3952 # impacts profile location and user-visible fields.
3953 # - MOZ_APP_BASENAME: Typically stays consistent for multiple branded
3954 # versions of a given application (e.g. Aurora and Firefox both use
3955 # "Firefox"), but may vary for full rebrandings (e.g. Iceweasel). Used
3956 # for application.ini's "Name" field, which controls profile location in
3957 # the absence of a "Profile" field (see below), and various system
3958 # integration hooks (Unix remoting, Windows MessageWindow name, etc.)
3959 # - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
3960 # Mac Bundle name, Updater, Installer), it is typically used for nightly
3961 # builds (e.g. Aurora for Firefox).
3962 # - MOZ_APP_NAME: Used for e.g. the binary program file name. If not set,
3963 # defaults to a lowercase form of MOZ_APP_BASENAME.
3964 # - MOZ_APP_REMOTINGNAME: Used for the internal program name, which affects
3965 # profile name and remoting. If not set, defaults to MOZ_APP_NAME.
3966 # - MOZ_APP_PROFILE: When set, used for application.ini's
3967 # "Profile" field, which controls profile location.
3968 # - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
3969 # crash reporter server url.
3970 # - MOZ_APP_ANDROID_VERSION_CODE: On Android, "android:versionCode" for
3971 # the main application is set to the value of this variable. If not
3972 # set, it falls back to a Mozilla-specific value derived from the
3974 # - MOZ_ANDROID_SHARED_ID: On Android, "android:sharedUserId" for all Android
3975 # packages produced.
3976 # - MOZ_ANDROID_GCM_SENDERID: On Android, the Android GCM Sender ID used. GCM
3977 # sender IDs are not sensitive: see, http://stackoverflow.com/a/18216063.
3978 # - MOZ_MMA_GCM_SENDERID: This GCM Sender ID is used for MMA integration.
3979 # - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
3981 # The following environment variables used to have an effect, but don't anymore:
3982 # - MOZ_APP_VERSION: Defines the application version number. This was replaced with
3983 # the contents from the version.txt file in the application directory, or
3984 # browser/config/version.txt if there isn't one.
3985 # - MOZ_APP_VERSION_DISPLAY: Defines the application version number. Used
3986 # in the "About" window. This was replaced with the contents from the
3987 # version_display.txt or version.txt in the application directory, or
3988 # browser/config/version_display.txt.
3990 if test -z "$MOZ_APP_NAME"; then
3991 MOZ_APP_NAME=`echo $MOZ_APP_BASENAME | tr A-Z a-z`
3994 if test -z "$MOZ_APP_REMOTINGNAME"; then
3995 MOZ_APP_REMOTINGNAME=$MOZ_APP_NAME
3998 if test -z "$ANDROID_PACKAGE_NAME" ; then
3999 # When we got rid of the Aurora channel we decided to replace the old
4000 # Nightly ANDROID_PACKAGE_NAME with Aurora. To make sure this is inherited
4001 # by all mozilla-central based branches we make this the new "default"
4002 # for Fennec. Non mozilla-central based branches set ANDROID_PACKAGE_NAME
4003 # in their mozconfig, so they will never get this. If there are ever
4004 # non-Fennec builds for Android, they will fall into the else block
4005 # and use their own default name.
4006 # https://bugzilla.mozilla.org/show_bug.cgi?id=1357808 has additional
4007 # background on this.
4008 if test "$MOZ_APP_NAME" = "fennec"; then
4009 ANDROID_PACKAGE_NAME="org.mozilla.fennec_aurora"
4011 ANDROID_PACKAGE_NAME="org.mozilla.$MOZ_APP_NAME"
4015 # Mozilla released Firefox for Android {Release,Beta} and {Aurora,Nightly} to
4016 # the public with specific common shared IDs and we need to keep them
4017 # consistent forever. The specific common values are set by per-channel
4018 # branding; all other channels use a generic sharedID, set below.
4019 if test -z "$MOZ_ANDROID_SHARED_ID" ; then
4020 MOZ_ANDROID_SHARED_ID="${ANDROID_PACKAGE_NAME}.sharedID"
4023 # For extensions and langpacks, we require a max version that is compatible
4024 # across security releases. MOZ_APP_MAXVERSION is our method for doing that.
4025 # 24.0a1 and 24.0a2 aren't affected
4027 # 24.1.1 becomes 24.*
4028 IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
4029 if test -z "$IS_ALPHA"; then
4031 if test "$(basename $MOZ_BUILD_APP)" = "suite"; then
4032 MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\.[0-9]*\).*|\1|"`.*
4034 MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\).*|\1|"`.*
4038 MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
4041 AC_SUBST(MOZ_APP_NAME)
4042 AC_SUBST(MOZ_APP_REMOTINGNAME)
4043 AC_SUBST(MOZ_APP_DISPLAYNAME)
4044 AC_SUBST(MOZ_APP_BASENAME)
4045 AC_SUBST(MOZ_APP_VENDOR)
4046 AC_SUBST(MOZ_APP_PROFILE)
4047 AC_SUBST(MOZ_APP_ID)
4048 AC_SUBST(MOZ_APP_ANDROID_VERSION_CODE)
4049 AC_SUBST(MOZ_ANDROID_SHARED_ID)
4050 AC_SUBST(MOZ_ANDROID_GCM_SENDERID)
4051 AC_SUBST(MOZ_MMA_GCM_SENDERID)
4052 AC_SUBST(MAR_CHANNEL_ID)
4053 AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
4054 AC_SUBST(MOZ_PROFILE_MIGRATOR)
4055 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
4056 AC_SUBST(MOZ_APP_UA_NAME)
4057 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
4058 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL, $BROWSER_CHROME_URL)
4059 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL_QUOTED, "$BROWSER_CHROME_URL")
4061 AC_SUBST(MOZ_APP_MAXVERSION)
4062 AC_SUBST(MOZ_UA_OS_AGNOSTIC)
4063 if test -n "$MOZ_UA_OS_AGNOSTIC"; then
4064 AC_DEFINE(MOZ_UA_OS_AGNOSTIC)
4067 AC_SUBST(MOZ_PKG_SPECIAL)
4068 AC_SUBST(MOZ_SIMPLE_PACKAGE_NAME)
4070 if test "$MOZILLA_OFFICIAL"; then
4071 # Build revisions should always be present in official builds
4072 MOZ_INCLUDE_SOURCE_INFO=1
4075 # External builds (specifically Ubuntu) may drop the hg repo information, so we allow to
4076 # explicitly set the repository and changeset information in.
4077 AC_SUBST(MOZ_SOURCE_REPO)
4078 AC_SUBST(MOZ_SOURCE_CHANGESET)
4079 AC_SUBST(MOZ_INCLUDE_SOURCE_INFO)
4081 if test "$MOZ_TELEMETRY_REPORTING"; then
4082 AC_DEFINE(MOZ_TELEMETRY_REPORTING)
4084 # Enable Telemetry by default for nightly and aurora channels
4085 if test -z "$RELEASE_OR_BETA"; then
4086 AC_DEFINE(MOZ_TELEMETRY_ON_BY_DEFAULT)
4090 dnl If we have any service that uploads data (and requires data submission
4091 dnl policy alert), set MOZ_DATA_REPORTING.
4092 dnl We need SUBST for build system and DEFINE for xul preprocessor.
4093 if test -n "$MOZ_TELEMETRY_REPORTING" || test -n "$MOZ_SERVICES_HEALTHREPORT" || test -n "$MOZ_CRASHREPORTER"; then
4094 MOZ_DATA_REPORTING=1
4095 AC_DEFINE(MOZ_DATA_REPORTING)
4096 AC_SUBST(MOZ_DATA_REPORTING)
4100 AC_SUBST(WIN32_REDIST_DIR)
4101 AC_SUBST(WIN_UCRT_REDIST_DIR)
4102 AC_SUBST(WIN_DIA_SDK_BIN_DIR)
4104 dnl ========================================================
4106 dnl ========================================================
4110 if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
4116 dnl Echo the CFLAGS to remove extra whitespace.
4118 $_COMPILATION_CFLAGS \
4122 $_WARNINGS_CXXFLAGS \
4123 $_COMPILATION_CXXFLAGS \
4126 COMPILE_CFLAGS=`echo \
4130 COMPILE_CXXFLAGS=`echo \
4131 $_DEFINES_CXXFLAGS \
4135 $_WARNINGS_HOST_CFLAGS \
4136 $_COMPILATION_HOST_CFLAGS \
4139 HOST_CXXFLAGS=`echo \
4140 $_WARNINGS_HOST_CXXFLAGS \
4141 $_COMPILATION_HOST_CXXFLAGS \
4144 AC_SUBST(MOZ_SYSTEM_JPEG)
4145 AC_SUBST(MOZ_SYSTEM_PNG)
4147 AC_SUBST_LIST(MOZ_JPEG_CFLAGS)
4148 AC_SUBST_LIST(MOZ_JPEG_LIBS)
4149 AC_SUBST_LIST(MOZ_PNG_CFLAGS)
4150 AC_SUBST_LIST(MOZ_PNG_LIBS)
4152 AC_SUBST(MOZ_SYSTEM_NSPR)
4154 AC_SUBST(MOZ_SYSTEM_NSS)
4156 HOST_CMFLAGS="-x objective-c -fobjc-exceptions"
4157 HOST_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
4158 OS_COMPILE_CMFLAGS="-x objective-c -fobjc-exceptions"
4159 OS_COMPILE_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
4160 if test "$MOZ_WIDGET_TOOLKIT" = uikit; then
4161 OS_COMPILE_CMFLAGS="$OS_COMPILE_CMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
4162 OS_COMPILE_CMMFLAGS="$OS_COMPILE_CMMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
4164 AC_SUBST(HOST_CMFLAGS)
4165 AC_SUBST(HOST_CMMFLAGS)
4166 AC_SUBST(OS_COMPILE_CMFLAGS)
4167 AC_SUBST(OS_COMPILE_CMMFLAGS)
4170 OS_CXXFLAGS="$CXXFLAGS"
4171 OS_CPPFLAGS="$CPPFLAGS"
4172 OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
4173 OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
4174 OS_LDFLAGS="$LDFLAGS"
4176 AC_SUBST_LIST(OS_CFLAGS)
4177 AC_SUBST_LIST(OS_CXXFLAGS)
4178 AC_SUBST_LIST(OS_CPPFLAGS)
4179 AC_SUBST_LIST(OS_COMPILE_CFLAGS)
4180 AC_SUBST_LIST(OS_COMPILE_CXXFLAGS)
4181 AC_SUBST_LIST(OS_LDFLAGS)
4186 AC_SUBST_LIST(HOST_CFLAGS)
4187 AC_SUBST_LIST(HOST_CPPFLAGS)
4188 AC_SUBST_LIST(HOST_CXXFLAGS)
4189 AC_SUBST(HOST_LDFLAGS)
4190 AC_SUBST_LIST(HOST_OPTIMIZE_FLAGS)
4192 AC_SUBST(HOST_AR_FLAGS)
4193 AC_SUBST(HOST_RANLIB)
4194 AC_SUBST(HOST_BIN_SUFFIX)
4196 AC_SUBST(TARGET_XPCOM_ABI)
4197 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
4198 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1)
4199 AC_SUBST(HAVE_X86_AVX2)
4200 AC_SUBST(HAVE_ALTIVEC)
4202 AC_SUBST_LIST(DSO_CFLAGS)
4203 AC_SUBST_LIST(DSO_PIC_CFLAGS)
4204 AC_SUBST(DSO_LDOPTS)
4205 AC_SUBST(BIN_SUFFIX)
4207 AC_SUBST(CC_VERSION)
4208 AC_SUBST(NS_ENABLE_TSF)
4209 AC_SUBST(WIN32_CONSOLE_EXE_LDFLAGS)
4210 AC_SUBST(WIN32_GUI_EXE_LDFLAGS)
4213 AC_SUBST(MOZ_FFVPX_FLACONLY)
4214 AC_SUBST_LIST(FFVPX_ASFLAGS)
4215 AC_SUBST(VPX_USE_YASM)
4216 AC_SUBST_LIST(VPX_ASFLAGS)
4217 AC_SUBST(VPX_AS_CONVERSION)
4218 AC_SUBST(VPX_X86_ASM)
4219 AC_SUBST(VPX_ARM_ASM)
4220 AC_SUBST(LIBJPEG_TURBO_USE_YASM)
4221 AC_SUBST_LIST(LIBJPEG_TURBO_ASFLAGS)
4222 AC_SUBST(MOZ_LIBAV_FFT)
4223 AC_SUBST_LIST(LIBAV_FFT_ASFLAGS)
4224 AC_SUBST(MOZ_DEVTOOLS)
4226 AC_SUBST(MOZ_PACKAGE_JSSHELL)
4227 AC_SUBST(MOZ_FOLD_LIBS)
4228 AC_SUBST_LIST(MOZ_FOLD_LIBS_FLAGS)
4232 dnl Host JavaScript runtime, if any, to use during cross compiles.
4235 AC_SUBST(NSS_EXTRA_SYMBOLS_FILE)
4237 if test -n "$COMPILE_ENVIRONMENT"; then
4238 AC_CHECK_FUNCS(posix_fadvise posix_fallocate)
4240 dnl Check for missing components
4241 if test "$MOZ_X11"; then
4242 dnl ====================================================
4243 dnl = Check if X headers exist
4244 dnl ====================================================
4245 _SAVE_CFLAGS=$CFLAGS
4246 CFLAGS="$CFLAGS $XCFLAGS"
4250 #include <X11/Xlib.h>
4251 #include <X11/Intrinsic.h>
4252 #include <X11/extensions/XShm.h>
4256 if ((dpy = XOpenDisplay(NULL)) == NULL) {
4257 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
4261 [ AC_MSG_ERROR([Can't find X headers (install libxt-dev (Debian/Ubuntu), libXt-devel (Fedora), or xorg-x11-libXt-devel (SuSE)).]) ])
4262 CFLAGS="$_SAVE_CFLAGS"
4264 if test -n "$MISSING_X"; then
4265 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
4270 fi # COMPILE_ENVIRONMENT
4272 dnl Set various defines and substitutions
4273 dnl ========================================================
4275 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK" ; then
4276 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
4277 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
4278 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
4279 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
4280 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
4281 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
4282 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
4283 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
4286 AC_SUBST(MOZ_DEV_EDITION)
4287 if test -n "$MOZ_DEV_EDITION"; then
4288 AC_DEFINE(MOZ_DEV_EDITION)
4291 if test "$MOZ_DEBUG" -o "$DEVELOPER_OPTIONS"; then
4295 if test -n "$A11Y_LOG"; then
4299 dnl Spit out some output
4300 dnl ========================================================
4302 dnl The following defines are used by xpcom
4303 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
4305 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
4317 # Avoid using obsolete NSPR features
4318 AC_DEFINE(NO_NSPR_10_SUPPORT)
4320 # Don't build NSS libpkix
4321 NSS_DISABLE_LIBPKIX=1
4322 AC_SUBST(NSS_DISABLE_LIBPKIX)
4324 MOZ_CREATE_CONFIG_STATUS()
4326 if test -z "$direct_nspr_config"; then
4327 dnl ========================================================
4328 dnl = Setup a nice relatively clean build environment for
4329 dnl = sub-configures.
4330 dnl ========================================================
4333 CFLAGS="$_SUBDIR_CFLAGS"
4334 CPPFLAGS="$_SUBDIR_CPPFLAGS"
4335 CXXFLAGS="$_SUBDIR_CXXFLAGS"
4336 LDFLAGS="$_SUBDIR_LDFLAGS"
4337 HOST_CC="$_SUBDIR_HOST_CC"
4338 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
4339 HOST_CXXFLAGS="$_SUBDIR_HOST_CXXFLAGS"
4340 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
4347 # Run all configure scripts specified by a subconfigure
4348 if test -n "$_subconfigure_subdir"; then
4349 _save_srcdir="$srcdir"
4351 _save_ac_configure_args="$ac_configure_args"
4352 ac_configure_args="$_subconfigure_config_args"
4353 AC_OUTPUT_SUBDIRS_NOW("$_subconfigure_subdir",$cache_file)
4354 ac_configure_args="$_save_ac_configure_args"
4355 srcdir="$_save_srcdir"
4358 if test "$COMPILE_ENVIRONMENT" -a "$MOZ_WIDGET_TOOLKIT"; then
4361 dnl ========================================================
4362 dnl = Setup a nice relatively clean build environment for
4363 dnl = sub-configures.
4364 dnl ========================================================
4367 CFLAGS="$_SUBDIR_CFLAGS"
4368 CPPFLAGS="$_SUBDIR_CPPFLAGS"
4369 CXXFLAGS="$_SUBDIR_CXXFLAGS"
4370 LDFLAGS="$_SUBDIR_LDFLAGS"
4371 HOST_CC="$_SUBDIR_HOST_CC"
4372 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
4373 HOST_CXXFLAGS="$_SUBDIR_HOST_CXXFLAGS"
4374 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
4377 # Run the SpiderMonkey 'configure' script.
4378 dist=$MOZ_BUILD_ROOT/dist
4379 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
4381 # --with-system-nspr will have been converted into the relevant $NSPR_CFLAGS
4383 ac_configure_args="`echo $ac_configure_args | sed -e 's/--with-system-nspr\S* *//'`"
4385 if test "$_INTL_API" = no; then
4386 ac_configure_args="$ac_configure_args --without-intl-api"
4389 if test -n "$NSPR_CFLAGS" -o -n "$NSPR_LIBS"; then
4390 ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
4391 ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
4393 ac_configure_args="$ac_configure_args --prefix=$dist"
4394 if test -n "$ZLIB_IN_MOZGLUE"; then
4397 export MOZ_SYSTEM_ZLIB
4398 export MOZ_ZLIB_CFLAGS
4399 export MOZ_ZLIB_LIBS
4401 export MOZ_APP_REMOTINGNAME
4402 export MOZ_DEV_EDITION
4405 export MOZILLA_CENTRAL_PATH=$_topsrcdir
4406 export STLPORT_CPPFLAGS
4411 export ZLIB_IN_MOZGLUE
4425 export HOST_CPPFLAGS
4426 export HOST_CXXFLAGS
4429 if ! test -e js; then
4433 ac_configure_args="$ac_configure_args JS_STANDALONE="
4434 AC_OUTPUT_SUBDIRS(js/src,$cache_file)
4435 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
4437 fi # COMPILE_ENVIRONMENT
4439 dnl we need to run config.status after js/src subconfigure because we're
4440 dnl traversing its moz.build and we need its config.status for that.
4441 dnl However, writing our own config.status needs to happen before
4442 dnl subconfigures because the setup surrounding subconfigures alters
4443 dnl many AC_SUBSTed variables.
4444 MOZ_RUN_ALL_SUBCONFIGURES()
4446 rm -fr confdefs* $ac_clean_files