Bug 1688781 [wpt PR 27320] - [testharness.js] Respect properties.output in assert_wra...
[gecko.git] / old-configure.in
blob0ac86af0c8c70ff8927b5927ea019fcfa3d3a026
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 ========================================================
9 AC_PREREQ(2.13)
10 AC_INIT(config/config.mk)
11 AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
12 AC_CANONICAL_SYSTEM
14 dnl ========================================================
15 dnl =
16 dnl = Don't change the following lines. Doing so breaks:
17 dnl =
18 dnl = CFLAGS="-foo" ./configure
19 dnl =
20 dnl ========================================================
21 CFLAGS="${CFLAGS=}"
22 CPPFLAGS="${CPPFLAGS=}"
23 CXXFLAGS="${CXXFLAGS=}"
24 LDFLAGS="${LDFLAGS=}"
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 ========================================================
34 _SUBDIR_CC="$CC"
35 _SUBDIR_CXX="$CXX"
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 ========================================================
48 MOZPNG=10635
50 dnl Set the minimum version of toolkit libs used by mozilla
51 dnl ========================================================
52 GLIB_VERSION=2.42
53 GLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_42
54 GLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_42
55 CAIRO_VERSION=1.10
56 GTK2_VERSION=2.18.0
57 GTK3_VERSION=3.14.0
58 GDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_14
59 W32API_VERSION=3.14
60 DBUS_VERSION=0.60
62 dnl Set various checks
63 dnl ========================================================
64 MISSING_X=
66 dnl Initialize the Pthread test variables early so they can be
67 dnl  overridden by each platform.
68 dnl ========================================================
69 MOZ_USE_PTHREADS=
70 _PTHREAD_LDFLAGS=""
72 LDFLAGS="$LDFLAGS $LINKER_LDFLAGS"
74 if test "$COMPILE_ENVIRONMENT"; then
75     MOZ_ANDROID_NDK
76 fi # COMPILE_ENVIRONMENT
78 case "$target" in
79 *-android*|*-linuxandroid*)
80     ;;
81 *-linux*)
82     AC_PATH_PROG(OBJCOPY,objcopy)
83     ;;
84 esac
86 AC_SUBST(OBJCOPY)
88 dnl ========================================================
89 dnl Checks for compilers.
90 dnl ========================================================
92 if test "$COMPILE_ENVIRONMENT"; then
94 # Run some logic to figure out exe extensions (mostly for mingw's sake)
95 AC_EXEEXT
97 if test "$target" != "$host"; then
98     MOZ_CROSS_COMPILER
99 else
100     AC_PROG_CC
101     case "$target" in
102     *-mingw*)
103       # Work around the conftest.exe access problem on Windows
104       sleep 2
105     esac
106     AC_PROG_CXX
107     MOZ_PATH_PROGS(AS, $AS as, $CC)
108     AC_CHECK_PROGS(STRIP, strip, :)
109     AC_CHECK_PROGS(OTOOL, otool, :)
112 MOZ_TOOL_VARIABLES
114 dnl ========================================================
115 dnl Special win32 checks
116 dnl ========================================================
118 WINVER=601
120 case "$target" in
121 *-mingw*)
122     if test "$GCC" != "yes"; then
123         # Check to see if we are really running in a msvc environemnt
124         _WIN32_MSVC=1
126         # Make sure compilers are valid
127         CXXFLAGS="$CXXFLAGS -TP"
128         AC_LANG_SAVE
129         AC_LANG_C
130         AC_TRY_COMPILE([#include <stdio.h>],
131             [ printf("Hello World\n"); ],,
132             AC_MSG_ERROR([\$(CC) test failed.  You must have MS VC++ in your path to build.]) )
134         AC_LANG_CPLUSPLUS
135         AC_TRY_COMPILE([#include <new.h>],
136             [ unsigned *test = new unsigned(42); ],,
137             AC_MSG_ERROR([\$(CXX) test failed.  You must have MS VC++ in your path to build.]) )
138         AC_LANG_RESTORE
140         changequote(,)
141         _MSVC_VER_FILTER='s|.*[^!-~]([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
142         changequote([,])
144         AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
145         AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
146         AC_DEFINE(_USE_MATH_DEFINES) # Otherwise MSVC's math.h doesn't #define M_PI.
148         _CC_SUITE=14
149         MSVC_C_RUNTIME_DLL=vcruntime140.dll
150         MSVC_CXX_RUNTIME_DLL=msvcp140.dll
152         # -Zc:sizedDealloc- disables C++14 global sized deallocation (see bug 1160146)
153         CXXFLAGS="$CXXFLAGS -Zc:sizedDealloc-"
155         if test -n "$WIN_UCRT_REDIST_DIR"; then
156           if test ! -d "$WIN_UCRT_REDIST_DIR"; then
157             AC_MSG_ERROR([Invalid Windows UCRT Redist directory: ${WIN_UCRT_REDIST_DIR}])
158           fi
159           WIN_UCRT_REDIST_DIR=`cd "$WIN_UCRT_REDIST_DIR" && (pwd -W 2>/dev/null || pwd)`
160         fi
162         AC_SUBST(MSVC_C_RUNTIME_DLL)
163         AC_SUBST(MSVC_CXX_RUNTIME_DLL)
165         AC_DEFINE(HAVE_SEH_EXCEPTIONS)
167         if test -n "$WIN32_REDIST_DIR"; then
168           if test ! -d "$WIN32_REDIST_DIR"; then
169             AC_MSG_ERROR([Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}])
170           fi
171           WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && (pwd -W 2>/dev/null || pwd)`
172         fi
174         # Check linker version, except in lld builds
175         case "$LINKER" in
176         *lld*)
177             ;;
178         *)
179             _LD_FULL_VERSION=`"${LINKER}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
180             _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
181             if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
182                 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION,  does not match the compiler suite version, $_CC_SUITE.])
183             fi
184             ;;
185         esac
187         INCREMENTAL_LINKER=1
189         unset _MSVC_VER_FILTER
191         WRAP_STL_INCLUDES=1
192         STL_FLAGS="-I${DIST}/stl_wrappers"
193     else
194         # Check w32api version
195         _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
196         _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
197         AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
198         AC_TRY_COMPILE([#include <w32api.h>],
199             #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
200                 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
201                  __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
202                 #error "test failed."
203             #endif
204             , [ res=yes ], [ res=no ])
205         AC_MSG_RESULT([$res])
206         if test "$res" != "yes"; then
207             AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
208         fi
209         # strsafe.h on mingw uses macros for function deprecation that pollutes namespace
210         # causing problems with local implementations with the same name.
211         AC_DEFINE(STRSAFE_NO_DEPRECATE)
212     fi # !GNU_CC
214     CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0"
215     CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0"
217     AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
218     AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
219     # Require OS features provided by IE 8.0 (Win7)
220     AC_DEFINE_UNQUOTED(_WIN32_IE,0x0800)
222     ;;
223 esac
225 if test -n "$_WIN32_MSVC"; then
226     SKIP_PATH_CHECKS=1
227     SKIP_COMPILER_CHECKS=1
228     SKIP_LIBRARY_CHECKS=1
230     # Since we're skipping compiler and library checks, hard-code
231     # some facts here.
232     AC_DEFINE(HAVE_IO_H)
233     AC_DEFINE(HAVE_ISATTY)
236 fi # COMPILE_ENVIRONMENT
238 AC_SUBST(GNU_CC)
239 AC_SUBST(GNU_CXX)
241 AC_SUBST_LIST(STL_FLAGS)
242 AC_SUBST(WRAP_STL_INCLUDES)
244 dnl ========================================================
245 dnl Checks for programs.
246 dnl ========================================================
247 if test "$COMPILE_ENVIRONMENT"; then
249 AC_PATH_XTRA
251 XCFLAGS="$X_CFLAGS"
253 fi # COMPILE_ENVIRONMENT
255 dnl ========================================================
256 dnl set the defaults first
257 dnl ========================================================
258 MOZ_USER_DIR=".mozilla"
260 MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib"
262 MOZ_FS_LAYOUT=unix
264 dnl Configure platform-specific CPU architecture compiler options.
265 dnl ==============================================================
266 if test "$COMPILE_ENVIRONMENT"; then
267     MOZ_ARCH_OPTS
268 fi # COMPILE_ENVIRONMENT
270 dnl ========================================================
271 dnl Android libstdc++
272 dnl ========================================================
274 MOZ_ANDROID_CPU_ARCH
275 if test "$COMPILE_ENVIRONMENT"; then
276     MOZ_ANDROID_STLPORT
277 fi # COMPILE_ENVIRONMENT
279 dnl ========================================================
280 dnl Suppress Clang Argument Warnings
281 dnl ========================================================
282 WARNINGS_CFLAGS="$_WARNINGS_CFLAGS"
283 if test -n "${CLANG_CC}${CLANG_CL}"; then
284     WARNINGS_CFLAGS="-Qunused-arguments $WARNINGS_CFLAGS"
285     CPPFLAGS="-Qunused-arguments ${CPPFLAGS}"
287 if test -n "${CLANG_CXX}${CLANG_CL}"; then
288     _WARNINGS_CXXFLAGS="-Qunused-arguments ${_WARNINGS_CXXFLAGS}"
291 if test -n "$COMPILE_ENVIRONMENT"; then
292    MOZ_CONFIG_SANITIZE
295 dnl ========================================================
296 dnl GNU specific defaults
297 dnl ========================================================
298 if test "$GNU_CC"; then
299     MMX_FLAGS="-mmmx"
300     SSE_FLAGS="-msse"
301     SSE2_FLAGS="-msse2"
302     SSSE3_FLAGS="-mssse3"
303     CFLAGS="$CFLAGS -fno-strict-aliasing"
304     DSO_CFLAGS=''
306     if test "$OS_ARCH" != "WINNT" -o -z "$CLANG_CC"; then
307         DSO_PIC_CFLAGS='-fPIC'
308         ASFLAGS="$ASFLAGS -fPIC"
309     fi
311     AC_MSG_CHECKING([for --noexecstack option to as])
312     _SAVE_CFLAGS=$CFLAGS
313     CFLAGS="$CFLAGS -Wa,--noexecstack"
314     AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
315                      [ASFLAGS="$ASFLAGS -Wa,--noexecstack"],
316                      AC_MSG_RESULT([no]))
317     CFLAGS=$_SAVE_CFLAGS
318     AC_MSG_CHECKING([for -z noexecstack option to ld])
319     _SAVE_LDFLAGS=$LDFLAGS
320     LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
321     AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
322                   AC_MSG_RESULT([no])
323                   LDFLAGS=$_SAVE_LDFLAGS)
325     AC_MSG_CHECKING([for -z text option to ld])
326     _SAVE_LDFLAGS=$LDFLAGS
327     LDFLAGS="$LDFLAGS -Wl,-z,text"
328     AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
329                   AC_MSG_RESULT([no])
330                   LDFLAGS=$_SAVE_LDFLAGS)
332     AC_MSG_CHECKING([for -z relro option to ld])
333     _SAVE_LDFLAGS=$LDFLAGS
334     LDFLAGS="$LDFLAGS -Wl,-z,relro"
335     AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
336                   AC_MSG_RESULT([no])
337                   LDFLAGS=$_SAVE_LDFLAGS)
339     AC_MSG_CHECKING([for -z nocopyreloc option to ld])
340     _SAVE_LDFLAGS=$LDFLAGS
341     LDFLAGS="$LDFLAGS -Wl,-z,nocopyreloc"
342     AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
343                   AC_MSG_RESULT([no])
344                   LDFLAGS=$_SAVE_LDFLAGS)
346     AC_MSG_CHECKING([for -Bsymbolic-functions option to ld])
347     _SAVE_LDFLAGS=$LDFLAGS
348     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
349     AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
350                   AC_MSG_RESULT([no])
351                   LDFLAGS=$_SAVE_LDFLAGS)
353     AC_MSG_CHECKING([for --build-id=sha1 option to ld])
354     _SAVE_LDFLAGS=$LDFLAGS
355     LDFLAGS="$LDFLAGS -Wl,--build-id=sha1"
356     AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
357                   AC_MSG_RESULT([no])
358                   LDFLAGS=$_SAVE_LDFLAGS)
360     AC_MSG_CHECKING([for --ignore-unresolved-symbol option to ld])
361     HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=
362     _SAVE_LDFLAGS=$LDFLAGS
363     LDFLAGS="$LDFLAGS -Wl,--ignore-unresolved-symbol,environ"
364     AC_TRY_LINK(,,AC_MSG_RESULT([yes])
365                   [HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=1],
366                   AC_MSG_RESULT([no]))
367     LDFLAGS=$_SAVE_LDFLAGS
369     # Check for -mssse3 on $CC
370     AC_MSG_CHECKING([if toolchain supports -mssse3 option])
371     HAVE_TOOLCHAIN_SUPPORT_MSSSE3=
372     _SAVE_CFLAGS=$CFLAGS
373     CFLAGS="$CFLAGS -mssse3"
374     AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes])
375                      [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1],
376                      AC_MSG_RESULT([no]))
377     CFLAGS=$_SAVE_CFLAGS
379     # Check for -msse4.1 on $CC
380     AC_MSG_CHECKING([if toolchain supports -msse4.1 option])
381     HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=
382     _SAVE_CFLAGS=$CFLAGS
383     CFLAGS="$CFLAGS -msse4.1"
384     AC_TRY_COMPILE([asm ("pmulld %xmm6,%xmm0");],,AC_MSG_RESULT([yes])
385                      [HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1],
386                      AC_MSG_RESULT([no]))
387     CFLAGS=$_SAVE_CFLAGS
389     case "${CPU_ARCH}" in
390     x86 | x86_64)
391       AC_MSG_CHECKING(for x86 AVX2 asm support in compiler)
392       AC_TRY_COMPILE([],
393                      [asm volatile ("vpermq      \$0xd8,%ymm0,%ymm0 \n");],
394                      result="yes", result="no")
395       AC_MSG_RESULT("$result")
396       if test "$result" = "yes"; then
397           HAVE_X86_AVX2=1
398       fi
399       ;;
401     ppc*)
402       AC_MSG_CHECKING([whether we can enable AltiVec support])
403       HAVE_ALTIVEC=
404       _SAVE_CFLAGS=$CFLAGS
405       CFLAGS="$CFLAGS -maltivec"
406       AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
407                        [HAVE_ALTIVEC=1],
408                        AC_MSG_RESULT([no]))
409       CFLAGS=$_SAVE_CFLAGS
410       ;;
411     esac
413     DSO_LDOPTS='-shared'
414     if test "$GCC_USE_GNU_LD"; then
415         # Some tools like ASan use a runtime library that is only
416         # linked against executables, so we must allow undefined
417         # symbols for shared objects in some cases.
418         if test -z "$MOZ_ASAN$MOZ_MSAN$MOZ_UBSAN$MOZ_TSAN$FUZZING_INTERFACES"; then
419             # Don't allow undefined symbols in libraries
420             DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
422             # BSDs need `environ' exposed for posix_spawn (bug 753046)
423             case "$OS_TARGET" in
424             DragonFly|FreeBSD|NetBSD|OpenBSD)
425                 if test -n "$HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED"; then
426                     DSO_LDOPTS="$DSO_LDOPTS -Wl,--ignore-unresolved-symbol,environ"
427                 else
428                     DSO_LDOPTS="$DSO_LDOPTS -Wl,--warn-unresolved-symbols"
429                 fi
430                 ;;
431             esac
432         fi
433     fi
435     _DEFINES_CFLAGS="-include $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
437     ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS"
440 if test "$GNU_CXX"; then
441     CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing"
443     _DEFINES_CXXFLAGS="-DMOZILLA_CLIENT -include $_objdir/mozilla-config.h"
446 dnl ========================================================
447 dnl = Enable DMD
448 dnl ========================================================
450 if test "$MOZ_DMD"; then
451     if test "${CPU_ARCH}" = "arm"; then
452         CFLAGS="$CFLAGS -funwind-tables"
453         CXXFLAGS="$CXXFLAGS -funwind-tables"
454     fi
457 dnl ========================================================
458 dnl System overrides of the defaults for host
459 dnl ========================================================
460 case "$host" in
461 *mingw*)
462     if test -n "$_WIN32_MSVC"; then
463         HOST_CFLAGS="$HOST_CFLAGS"
464     else
465         HOST_CFLAGS="$HOST_CFLAGS -mwindows"
466     fi
467     HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN -DWIN32 -D_WIN32 -D_CRT_SECURE_NO_WARNINGS"
468     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
469     HOST_BIN_SUFFIX=.exe
471     case "${host_cpu}" in
472     i*86)
473         if test -n "$_WIN32_MSVC"; then
474             HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
475         fi
476         ;;
477     x86_64)
478         if test -n "$_WIN32_MSVC"; then
479             HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
480         fi
481         HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
482         ;;
483     esac
484     ;;
486 *-darwin*)
487     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX"
488     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
489     ;;
491 *-linux*|*-kfreebsd*-gnu|*-gnu*)
492     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
493     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
494     ;;
497     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
498     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
499     ;;
500 esac
502 dnl ========================================================
503 dnl System overrides of the defaults for target
504 dnl ========================================================
506 case "$target" in
507 *-darwin*)
508     MOZ_OPTIMIZE_FLAGS="-O3"
509     CXXFLAGS="$CXXFLAGS -stdlib=libc++"
510     DSO_LDOPTS=''
511     # The ExceptionHandling framework is needed for Objective-C exception
512     # logging code in nsObjCExceptions.h. Currently we only use that in debug
513     # builds.
514     MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling";
516     dnl DTrace and -dead_strip don't interact well. See bug 403132.
517     dnl ===================================================================
518     if test "x$enable_dtrace" = "xyes"; then
519         echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
520     else
521         dnl check for the presence of the -dead_strip linker flag
522         AC_MSG_CHECKING([for -dead_strip option to ld])
523         _SAVE_LDFLAGS=$LDFLAGS
524         LDFLAGS="$LDFLAGS -Wl,-dead_strip"
525         AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
526         if test -n "$_HAVE_DEAD_STRIP" ; then
527             AC_MSG_RESULT([yes])
528             MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
529         else
530             AC_MSG_RESULT([no])
531         fi
533         LDFLAGS=$_SAVE_LDFLAGS
534     fi
536     MOZ_FIX_LINK_PATHS="-Wl,-executable_path,${DIST}/bin"
537     ;;
539 *-android*|*-linuxandroid*)
540     if test "$COMPILE_ENVIRONMENT" -a -n "$MOZ_MEMORY"; then
541         MOZ_LINKER=1
542     fi
544     if test -z "$CLANG_CC"; then
545         MOZ_OPTIMIZE_FLAGS="-freorder-blocks -fno-reorder-functions -Os"
546     else
547         # From https://github.com/android-ndk/ndk/issues/133#issuecomment-308549264
548         # -Oz is smaller than -Os on clang.
549         MOZ_OPTIMIZE_FLAGS="-Oz"
550         # Disable the outliner, which causes performance regressions, and is
551         # enabled on some platforms at -Oz.
552         if test -z "$MOZ_LTO"; then
553             DISABLE_OUTLINER="-mno-outline"
554             _SAVE_CFLAGS=$CFLAGS
555             CFLAGS="$CFLAGS $DISABLE_OUTLINER"
556             AC_TRY_COMPILE(,,[MOZ_OPTIMIZE_FLAGS="$MOZ_OPTIMIZE_FLAGS $DISABLE_OUTLINER"])
557             CFLAGS="$_SAVE_CFLAGS"
558         else
559             DISABLE_OUTLINER="-Wl,-plugin-opt=-enable-machine-outliner=never"
560             _SAVE_LDFLAGS=$LDFLAGS
561             LDFLAGS="$LDFLAGS $MOZ_LTO_LDFLAGS $DISABLE_OUTLINER"
562             AC_TRY_LINK(,,[MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS $DISABLE_OUTLINER"])
563             LDFLAGS="$_SAVE_LDFLAGS"
564         fi
565     fi
566     ;;
568 *-*linux*)
569     if test "$GNU_CC" -o "$GNU_CXX"; then
570         MOZ_PGO_OPTIMIZE_FLAGS="-O3"
571         if test -n "$MOZ_DEBUG"; then
572             MOZ_OPTIMIZE_FLAGS="-Os"
573         else
574             MOZ_OPTIMIZE_FLAGS="-O2"
575         fi
576         if test -z "$CLANG_CC"; then
577            MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS"
578         fi
579     fi
581     case "${target_cpu}" in
582     alpha*)
583         CFLAGS="$CFLAGS -mieee"
584         CXXFLAGS="$CXXFLAGS -mieee"
585     ;;
586     esac
587     ;;
588 *-mingw*)
589     DSO_CFLAGS=
590     DSO_PIC_CFLAGS=
591     # certain versions of cygwin's makedepend barf on the
592     # #include <string> vs -I./dist/include/string issue so don't use it
593     if test -n "$GNU_CC" -o -n "$CLANG_CC"; then
594         # $GNU_CC will match gcc and clang; while $CLANG_CC will match only clang
595         if test -z "$CLANG_CC"; then
596             AC_MSG_ERROR(Firefox cannot be built with mingw-gcc and requires a mingw-clang toolchain to work)
597         fi
599         DSO_LDOPTS='-shared'
600         # mingw doesn't require kernel32, user32, and advapi32 explicitly
601         LIBS="$LIBS -luuid -lusp10 -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32"
602         MOZ_FIX_LINK_PATHS=
604         MOZ_OPTIMIZE_FLAGS="-O2"
606         WIN32_CONSOLE_EXE_LDFLAGS=-mconsole
607         WIN32_GUI_EXE_LDFLAGS=-mwindows
609         # Silence problematic clang warnings
610         CXXFLAGS="$CXXFLAGS -Wno-incompatible-ms-struct"
611         LDFLAGS="$LDFLAGS -Wl,--no-insert-timestamp"
612     else
613         TARGET_COMPILER_ABI=msvc
614         STRIP='echo not_strip'
615         # aarch64 doesn't support subsystems below 6.02
616         if test "$CPU_ARCH" = "aarch64"; then
617             WIN32_SUBSYSTEM_VERSION=6.02
618         else
619             WIN32_SUBSYSTEM_VERSION=6.01
620         fi
621         WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION
622         WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
623         DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
624         _DEFINES_CFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
625         _DEFINES_CXXFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
626         CFLAGS="$CFLAGS -W3 -Gy -Zc:inline"
627         CXXFLAGS="$CXXFLAGS -W3 -Gy -Zc:inline"
628         if test -z "$CLANG_CL"; then
629             CPPFLAGS="$CPPFLAGS -utf-8"
630         fi
631         if test "$CPU_ARCH" = "x86"; then
632             dnl VS2012+ defaults to -arch:SSE2. We want to target nothing
633             dnl more recent, so set that explicitly here unless another
634             dnl target arch has already been set.
635             changequote(,)
636             if test -z `echo $CFLAGS | grep -i [-/]arch:`; then
637               CFLAGS="$CFLAGS -arch:SSE2"
638             fi
639             if test -z `echo $CXXFLAGS | grep -i [-/]arch:`; then
640               CXXFLAGS="$CXXFLAGS -arch:SSE2"
641             fi
642             changequote([,])
643             SSE_FLAGS="-arch:SSE"
644             SSE2_FLAGS="-arch:SSE2"
645             dnl MSVC allows the use of intrinsics without any flags
646             dnl and doesn't have a separate arch for SSSE3
647             SSSE3_FLAGS="-arch:SSE2"
648         fi
649         dnl clang-cl requires appropriate flags to enable SSSE3 support
650         dnl on all architectures.
651         if test -n "$CLANG_CL"; then
652             SSSE3_FLAGS="-mssse3"
653         fi
654         dnl VS2013+ supports -Gw for better linker optimizations.
655         dnl http://blogs.msdn.com/b/vcblog/archive/2013/09/11/introducing-gw-compiler-switch.aspx
656         dnl Disabled on ASan because it causes false-positive ODR violations.
657         if test -z "$MOZ_ASAN"; then
658             CFLAGS="$CFLAGS -Gw"
659             CXXFLAGS="$CXXFLAGS -Gw"
660         else
661             # String tail merging doesn't play nice with ASan's ODR checker.
662             LDFLAGS="$LDFLAGS -opt:nolldtailmerge"
663         fi
664         if test -n "$CLANG_CL"; then
665             # XXX We should combine some of these with our generic GCC-style
666             # warning checks.
667             #
668             # Suppress the clang-cl warning for the inline 'new' and 'delete' in mozalloc
669             CXXFLAGS="$CXXFLAGS -Wno-inline-new-delete"
670             # We use offsetof on non-POD objects all the time.
671             # We also suppress this warning on other platforms.
672             CXXFLAGS="$CXXFLAGS -Wno-invalid-offsetof"
673             # This warns for reasonable things like:
674             #   enum { X = 0xffffffffU };
675             # which is annoying for IDL headers.
676             CXXFLAGS="$CXXFLAGS -Wno-microsoft-enum-value"
677             # This warns for cases that would be reached by the Microsoft
678             # #include rules, but also currently warns on cases that would
679             # *also* be reached by standard C++ include rules.  That
680             # behavior doesn't seem useful, so we turn it off.
681             CXXFLAGS="$CXXFLAGS -Wno-microsoft-include"
682             # We normally error out on unknown pragmas, but since clang-cl
683             # claims to be MSVC, it would be difficult to add
684             # #if defined(_MSC_VER) && !defined(__clang__) everywhere we
685             # use such pragmas, so just ignore them.
686             CFLAGS="$CFLAGS -Wno-unknown-pragmas"
687             CXXFLAGS="$CXXFLAGS -Wno-unknown-pragmas"
688             # We get errors about various #pragma intrinsic directives from
689             # clang-cl, and we don't need to hear about those.
690             CFLAGS="$CFLAGS -Wno-ignored-pragmas"
691             CXXFLAGS="$CXXFLAGS -Wno-ignored-pragmas"
692             # clang-cl's Intrin.h marks things like _ReadWriteBarrier
693             # as __attribute((__deprecated__)).  This is nice to know,
694             # but since we don't get the equivalent warning from MSVC,
695             # let's just ignore it.
696             CFLAGS="$CFLAGS -Wno-deprecated-declarations"
697             CXXFLAGS="$CXXFLAGS -Wno-deprecated-declarations"
698             # We use a function like:
699             #   __declspec(noreturn) __inline void f() {}
700             # which -Winvalid-noreturn complains about.  Again, MSVC seems
701             # OK with it, so let's silence the warning.
702             CFLAGS="$CFLAGS -Wno-invalid-noreturn"
703             CXXFLAGS="$CXXFLAGS -Wno-invalid-noreturn"
704             # Missing |override| on virtual function declarations isn't
705             # something that MSVC currently warns about.
706             CXXFLAGS="$CXXFLAGS -Wno-inconsistent-missing-override"
707             # We use -DHAS_EXCEPTIONS=0, which removes the |throw()|
708             # declaration on |operator delete(void*)|.  However, clang-cl
709             # must internally declare |operator delete(void*)| differently,
710             # which causes this warning for virtually every file in the
711             # tree.  clang-cl doesn't support -fno-exceptions or equivalent,
712             # so there doesn't seem to be any way to convince clang-cl to
713             # declare |delete| differently.  Therefore, suppress this
714             # warning.
715             CXXFLAGS="$CXXFLAGS -Wno-implicit-exception-spec-mismatch"
716             # Macros like STDMETHOD() and IFACEMETHOD() can declare
717             # __attribute__((nothrow)) on their respective method declarations,
718             # while the definitions are left without the matching attribute.
719             CXXFLAGS="$CXXFLAGS -Wno-microsoft-exception-spec"
720             # At least one MSVC header and several headers in-tree have
721             # unused typedefs, so turn this on.
722             CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"
723             # jemalloc uses __declspec(allocator) as a profiler hint,
724             # which clang-cl doesn't understand.
725             CXXFLAGS="$CXXFLAGS -Wno-ignored-attributes"
726             # __attribute__((unused)) really means "might be unused" and
727             # we use it to avoid warnings about things that are unused
728             # in some compilation units, but used in many others.  This
729             # warning insists on complaining about the latter case, which
730             # is annoying, and rather noisy.
731             CXXFLAGS="$CXXFLAGS -Wno-used-but-marked-unused"
732         fi
733         # Silence VS2017 15.5+ TR1 deprecation warnings hit by older gtest versions
734         CXXFLAGS="$CXXFLAGS -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING"
735         LIBS="$LIBS user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib"
736         MOZ_DEBUG_LDFLAGS='-DEBUG'
737         if test "$HOST_OS_ARCH" != "WINNT"; then
738           # %_PDB% is a special signal to emit only the PDB basename. This
739           # avoids problems in Windows tools that don't like forward-slashes.
740           MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -PDBALTPATH:%_PDB%"
741         fi
742         # Use a higher optimization level for clang-cl, so we can come closer
743         # to MSVC's performance numbers (see bug 1443590).
744         if test -n "$CLANG_CL"; then
745             MOZ_OPTIMIZE_FLAGS='-O2'
746         else
747             MOZ_OPTIMIZE_FLAGS='-O1 -Oi'
748         fi
749         MOZ_FIX_LINK_PATHS=
750         LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE"
751         if test -z "$DEVELOPER_OPTIONS"; then
752             LDFLAGS="$LDFLAGS -RELEASE"
753         fi
754         dnl Minimum reqiurement of Gecko is VS2015 or later which supports
755         dnl both SSSE3 and SSE4.1.
756         HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1
757         HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1
758         dnl allow AVX2 code from VS2015
759         HAVE_X86_AVX2=1
760     fi
761     AC_DEFINE(WIN32_LEAN_AND_MEAN)
762     dnl See http://support.microsoft.com/kb/143208 to use STL
763     AC_DEFINE(NOMINMAX)
764     BIN_SUFFIX='.exe'
765     MOZ_USER_DIR="Mozilla"
767     case "$host_os" in
768     cygwin*|msvc*|mks*)
769         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.])
770         ;;
771     esac
773     case "$target" in
774     i*86-*)
775         if test -n "$GNU_CC"; then
776             CFLAGS="$CFLAGS -mstackrealign"
777             CXXFLAGS="$CXXFLAGS -mstackrealign"
778             LDFLAGS="$LDFLAGS -Wl,--large-address-aware"
779         else
780             DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
781             LDFLAGS="$LDFLAGS -SAFESEH"
782         fi
784         AC_DEFINE(_X86_)
785         ;;
786     x86_64-*)
787         if test -n "$_WIN32_MSVC"; then
788             DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
789         fi
790         AC_DEFINE(_AMD64_)
791         ;;
792     aarch64-*)
793         if test -n "$_WIN32_MSVC"; then
794             DSO_LDOPTS="$DSO_LDOPTS -MACHINE:ARM64"
795         fi
796         AC_DEFINE(_ARM64_)
797         ;;
798     *)
799         AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
800         ;;
801     esac
802     ;;
804 *-netbsd*)
805     DSO_CFLAGS=''
806     CFLAGS="$CFLAGS -Dunix"
807     CXXFLAGS="$CXXFLAGS -Dunix"
808     if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
809         DSO_PIC_CFLAGS='-fPIC -DPIC'
810         DSO_LDOPTS='-shared'
811         MOZ_PROGRAM_LDFLAGS="$MOZ_PROGRAM_LDFLAGS -Wl,--export-dynamic"
812     else
813         DSO_PIC_CFLAGS='-fPIC -DPIC'
814         DSO_LDOPTS='-shared'
815     fi
816     # This will fail on a.out systems prior to 1.5.1_ALPHA.
817     if test "$LIBRUNPATH"; then
818         DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
819     fi
820     ;;
822 *-openbsd*)
823     if test -z "$X11BASE"; then
824         X11BASE=/usr/X11R6
825     fi
826     MOZ_FIX_LINK_PATHS="$MOZ_FIX_LINK_PATHS -Wl,-rpath-link,${X11BASE}/lib"
827     DSO_CFLAGS=''
828     DSO_PIC_CFLAGS='-fPIC'
829     DSO_LDOPTS='-shared -fPIC'
830     if test "$LIBRUNPATH"; then
831         DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
832     fi
833     ;;
835 *-solaris*)
836     MOZ_FIX_LINK_PATHS="-L${DIST}/bin"
837     ;;
839 esac
841 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
842     MOZ_OPTIMIZE_FLAGS="-O"
845 AC_SUBST_LIST(MMX_FLAGS)
846 AC_SUBST_LIST(SSE_FLAGS)
847 AC_SUBST_LIST(SSE2_FLAGS)
848 AC_SUBST_LIST(SSSE3_FLAGS)
850 AC_SUBST(MOZ_LINKER)
851 if test -n "$MOZ_LINKER"; then
852   AC_DEFINE(MOZ_LINKER)
853   MOZ_LINKER_EXTRACT=1
854   AC_CHECK_PROGS(XZ, xz)
857 if test -z "$COMPILE_ENVIRONMENT"; then
858     SKIP_COMPILER_CHECKS=1
859     SKIP_LIBRARY_CHECKS=1
860     MOZ_DEBUGGING_OPTS
861 else
862     MOZ_COMPILER_OPTS
863 fi # COMPILE_ENVIRONMENT
865 if test -z "$SKIP_COMPILER_CHECKS"; then
866 dnl Checks for typedefs, structures, and compiler characteristics.
867 dnl ========================================================
868 AC_C_CONST
869 AC_TYPE_MODE_T
870 AC_TYPE_OFF_T
871 AC_TYPE_PID_T
872 AC_TYPE_SIZE_T
873 AC_LANG_CPLUSPLUS
874 AC_LANG_C
876 AC_LANG_CPLUSPLUS
878 MOZ_CXX11
880 AC_LANG_C
882 case "${OS_TARGET}" in
883 Darwin)
884   ;;
886   STL_FLAGS="-I${DIST}/stl_wrappers"
887   WRAP_STL_INCLUDES=1
888   ;;
889 esac
891 if test "$MOZ_BUILD_APP" = "tools/crashreporter"; then
892     WRAP_STL_INCLUDES=
895 dnl Checks for header files.
896 dnl ========================================================
897 AC_HEADER_DIRENT
898 case "$target_os" in
899 bitrig*|dragonfly*|freebsd*|openbsd*)
900 # for stuff like -lXshm
901     CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
902     ;;
903 esac
905 dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
906 AC_CACHE_CHECK(for sockaddr_in.sin_len,
907                    ac_cv_sockaddr_in_sin_len,
908                    [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
909                                     #include <sys/types.h>
910                                     #endif
911                                     #include <netinet/in.h>
912                                     struct sockaddr_in x;
913                                     void *foo = (void*) &x.sin_len;],
914                                    [],
915                                    [ac_cv_sockaddr_in_sin_len=true],
916                                    [ac_cv_sockaddr_in_sin_len=false])])
917 if test "$ac_cv_sockaddr_in_sin_len" = true ; then
918   AC_DEFINE(HAVE_SIN_LEN)
919 dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
920   AC_DEFINE(HAVE_SCONN_LEN)
923 AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
924                ac_cv_sockaddr_in6_sin6_len,
925                [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
926                                 #include <sys/types.h>
927                                 #endif
928                                 #include <netinet/in.h>
929                                 struct sockaddr_in6 x;
930                                 void *foo = (void*) &x.sin6_len;],
931                                [],
932                                [ac_cv_sockaddr_in6_sin6_len=true],
933                                [ac_cv_sockaddr_in6_sin6_len=false])])
934 if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
935   AC_DEFINE(HAVE_SIN6_LEN)
938 AC_CACHE_CHECK(for sockaddr.sa_len,
939                ac_cv_sockaddr_sa_len,
940                [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
941                                 #include <sys/types.h>
942                                 #endif
943                                 #include <sys/socket.h>
944                                 struct sockaddr x;
945                                 void *foo = (void*) &x.sa_len;],
946                                [],
947                                [ac_cv_sockaddr_sa_len=true],
948                                [ac_cv_sockaddr_sa_len=false])])
949 if test "$ac_cv_sockaddr_sa_len" = true ; then
950   AC_DEFINE(HAVE_SA_LEN)
953 dnl Checks for libraries.
954 dnl ========================================================
955 AC_CHECK_LIB(c_r, gethostbyname_r)
957 dnl We don't want to link with libdl even if it's present on OS X, since
958 dnl it's not used and not part of the default installation. OS/2 has dlfcn
959 dnl in libc.
960 dnl We don't want to link against libm or libpthread on Darwin since
961 dnl they both are just symlinks to libSystem and explicitly linking
962 dnl against libSystem causes issues when debugging (see bug 299601).
963 case $target in
964 *-darwin*)
965     ;;
967     AC_SEARCH_LIBS(dlopen, dl,
968         MOZ_CHECK_HEADER(dlfcn.h,
969         AC_DEFINE(HAVE_DLOPEN)))
970     ;;
971 esac
973 _SAVE_CFLAGS="$CFLAGS"
974 CFLAGS="$CFLAGS -D_GNU_SOURCE"
975 AC_CHECK_FUNCS(dladdr memmem)
976 CFLAGS="$_SAVE_CFLAGS"
978 if test ! "$GNU_CXX"; then
979     AC_CHECK_LIB(C, demangle)
982 AC_CHECK_LIB(socket, socket)
984 XLDFLAGS="$X_LIBS"
985 XLIBS="$X_EXTRA_LIBS"
987 dnl ========================================================
988 dnl Checks for X libraries.
989 dnl Ordering is important.
990 dnl Xt is dependent upon SM as of X11R6
991 dnl ========================================================
992 if test -n "$MOZ_X11"; then
993     AC_DEFINE_UNQUOTED(FUNCPROTO,15)
994     _SAVE_LDFLAGS="$LDFLAGS"
995     _SAVE_LIBS="$LIBS"
996     LDFLAGS="$XLDFLAGS $LDFLAGS"
997     AC_CHECK_LIB(X11, XDrawLines, [XLIBS="-lX11 $XLIBS"],
998         [MISSING_X="$MISSING_X -lX11"], $XLIBS)
999     AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
1000         [MISSING_X="$MISSING_X -lXext"], $XLIBS)
1002     AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
1003         unset ac_cv_lib_Xt_XtFree
1004         AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
1005         AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
1006         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
1007             [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
1008         ])
1010     dnl ========================================================
1011     dnl = Check for xcb
1012     dnl ========================================================
1013     AC_CHECK_LIB(xcb, xcb_connect, [XLIBS="-lxcb $XLIBS"],
1014         [MISSING_X="$MISSING_X -lxcb"], $XLIBS)
1015     AC_CHECK_LIB(xcb-shm, xcb_shm_query_version, [XLIBS="-lxcb-shm $XLIBS"],
1016         [MISSING_X="$MISSING_X -lxcb-shm"], $XLIBS)
1017     AC_CHECK_LIB(X11-xcb, XGetXCBConnection, [XLIBS="-lX11-xcb $XLIBS"],
1018         [MISSING_X="$MISSING_X -lX11-xcb"], $XLIBS)
1020     LDFLAGS="$_SAVE_LDFLAGS"
1021     LIBS="$_SAVE_LIBS"
1022 fi # $MOZ_X11
1024 AC_SUBST_LIST(XCFLAGS)
1025 AC_SUBST_LIST(XLDFLAGS)
1026 AC_SUBST_LIST(XLIBS)
1027 AC_SUBST_LIST(XEXT_LIBS)
1028 AC_SUBST_LIST(XT_LIBS)
1030 dnl ========================================================
1031 dnl = pthread support
1032 dnl = Start by checking whether the system support pthreads
1033 dnl ========================================================
1034 case "$target_os" in
1035 darwin*)
1036     MOZ_USE_PTHREADS=1
1037     ;;
1039     AC_CHECK_LIB(pthreads, pthread_create,
1040         MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
1041         AC_CHECK_LIB(pthread, pthread_create,
1042             MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
1043             AC_CHECK_LIB(c_r, pthread_create,
1044                 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
1045                 AC_CHECK_LIB(c, pthread_create,
1046                     MOZ_USE_PTHREADS=1
1047                 )
1048             )
1049         )
1050     )
1051     ;;
1052 esac
1054 dnl ========================================================
1055 dnl Do the platform specific pthread hackery
1056 dnl ========================================================
1057 if test "$MOZ_USE_PTHREADS"x != x
1058 then
1059     dnl
1060     dnl See if -pthread is supported.
1061     dnl
1062     rm -f conftest*
1063     ac_cv_have_dash_pthread=no
1064     AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
1065     echo 'int main() { return 0; }' | cat > conftest.c
1066     ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
1067     if test $? -eq 0; then
1068         if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
1069             ac_cv_have_dash_pthread=yes
1070             case "$target_os" in
1071             freebsd*)
1072 # Freebsd doesn't use -pthread for compiles, it uses them for linking
1073                 ;;
1074             *)
1075                 CFLAGS="$CFLAGS -pthread"
1076                 CXXFLAGS="$CXXFLAGS -pthread"
1077                 ;;
1078             esac
1079         fi
1080     fi
1081     rm -f conftest*
1082     AC_MSG_RESULT($ac_cv_have_dash_pthread)
1084     dnl
1085     dnl See if -pthreads is supported.
1086     dnl
1087     ac_cv_have_dash_pthreads=no
1088     if test "$ac_cv_have_dash_pthread" = "no"; then
1089         AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
1090         echo 'int main() { return 0; }' | cat > conftest.c
1091         ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
1092         if test $? -eq 0; then
1093             if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
1094                 ac_cv_have_dash_pthreads=yes
1095                 CFLAGS="$CFLAGS -pthreads"
1096                 CXXFLAGS="$CXXFLAGS -pthreads"
1097             fi
1098         fi
1099         rm -f conftest*
1100         AC_MSG_RESULT($ac_cv_have_dash_pthreads)
1101     fi
1103     case "$target" in
1104         *-*-freebsd*)
1105             AC_DEFINE(_REENTRANT)
1106             AC_DEFINE(_THREAD_SAFE)
1107             dnl -pthread links in -lpthread, so don't specify it explicitly.
1108             if test "$ac_cv_have_dash_pthread" = "yes"; then
1109                 _PTHREAD_LDFLAGS="-pthread"
1110             fi
1111             ;;
1113         *-*-openbsd*|*-*-bsdi*)
1114             AC_DEFINE(_REENTRANT)
1115             AC_DEFINE(_THREAD_SAFE)
1116             dnl -pthread links in -lc_r, so don't specify it explicitly.
1117             if test "$ac_cv_have_dash_pthread" = "yes"; then
1118                 _PTHREAD_LDFLAGS="-pthread"
1119             fi
1120             ;;
1122         *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
1123             AC_DEFINE(_REENTRANT)
1124             ;;
1126     esac
1127     LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
1128     AC_SUBST(MOZ_USE_PTHREADS)
1129     MOZ_CHECK_HEADERS(pthread.h)
1133 dnl Checks for library functions.
1134 dnl ========================================================
1135 AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize gmtime_r localtime_r arc4random arc4random_buf mallinfo gettid lchown setpriority strerror syscall lutimes)
1137 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
1138 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
1139                ac_cv_clock_monotonic,
1140                [for libs in "" -lrt; do
1141                     _SAVE_LIBS="$LIBS"
1142                     _SAVE_CFLAGS="$CFLAGS"
1143                     LIBS="$LIBS $libs"
1144                     CFLAGS="$CFLAGS $DSO_PIC_CFLAGS"
1145 dnl clock_gettime is available on OSX since 10.12, so depending on MACOSX_DEPLOYMENT_TARGET,
1146 dnl we should or not be able to use it. To detect if we can, we need to make the
1147 dnl availability attribute strict, so that compilation fails when the target is < 10.12.
1148                     AC_TRY_LINK([#define availability(os, ...) availability(os, strict, __VA_ARGS)
1149                                  #include <time.h>],
1150                                  [ struct timespec ts;
1151                                    clock_gettime(CLOCK_MONOTONIC, &ts); ],
1152                                  ac_cv_clock_monotonic=$libs
1153                                  LIBS="$_SAVE_LIBS"
1154                                  CFLAGS="$_SAVE_CFLAGS"
1155                                  break,
1156                                  ac_cv_clock_monotonic=no)
1157                     LIBS="$_SAVE_LIBS"
1158                     CFLAGS="$_SAVE_CFLAGS"
1159                 done])
1160 if test "$ac_cv_clock_monotonic" != "no"; then
1161     HAVE_CLOCK_MONOTONIC=1
1162     REALTIME_LIBS=$ac_cv_clock_monotonic
1163     AC_DEFINE(HAVE_CLOCK_MONOTONIC)
1164     AC_SUBST(HAVE_CLOCK_MONOTONIC)
1165     AC_SUBST_LIST(REALTIME_LIBS)
1168 dnl Turn on warnings-as-errors to prevent implicit declaration of
1169 dnl pthread_cond_timedwait_monotonic_np, which can cause this test to
1170 dnl inadvertently pass even if the function does not really exist.
1171 _SAVE_CFLAGS="$CFLAGS"
1172 CFLAGS="$CFLAGS $WARNINGS_AS_ERRORS"
1173 AC_CACHE_CHECK(for pthread_cond_timedwait_monotonic_np,
1174                ac_cv_pthread_cond_timedwait_monotonic_np,
1175                AC_TRY_LINK([#include <pthread.h>],
1176                            [pthread_cond_timedwait_monotonic_np(0, 0, 0);],
1177                            ac_cv_pthread_cond_timewait_monotonic_np=yes,
1178                            ac_cv_pthread_cond_timewait_monotonic_np=no))
1179 if test "$ac_cv_pthread_cond_timewait_monotonic_np" != "no"; then
1180     AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC)
1182 CFLAGS=$_SAVE_CFLAGS
1184 AC_CACHE_CHECK(
1185     [for res_ninit()],
1186     ac_cv_func_res_ninit,
1187     [if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then
1188         dnl no need for res_ninit() on NetBSD and OpenBSD
1189         ac_cv_func_res_ninit=no
1190      else
1191         AC_TRY_LINK([
1192             #ifdef linux
1193             #define _BSD_SOURCE 1
1194             #endif
1195             #include <sys/types.h>
1196             #include <netinet/in.h>
1197             #include <arpa/nameser.h>
1198             #include <resolv.h>
1199             ],
1200             [int foo = res_ninit(&_res);],
1201             [ac_cv_func_res_ninit=yes],
1202             [ac_cv_func_res_ninit=no])
1203      fi
1204     ])
1206 if test "$ac_cv_func_res_ninit" = "yes"; then
1207     AC_DEFINE(HAVE_RES_NINIT)
1208 dnl must add the link line we do something as foolish as this... dougt
1209 dnl else
1210 dnl    AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
1211 dnl        AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
1214 AC_LANG_C
1216 dnl **********************
1217 dnl *** va_copy checks ***
1218 AC_CACHE_CHECK([for an implementation of va_copy()],
1219                ac_cv_va_copy,
1220     [AC_TRY_COMPILE([#include <stdarg.h>
1221                      #include <stdlib.h>
1222         void f (int i, ...) {
1223             va_list args1, args2;
1224             va_start (args1, i);
1225             va_copy (args2, args1);
1226             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1227                 exit (1);
1228             va_end (args1); va_end (args2);
1229         }],
1230         [f(0, 42); return 0],
1231         [ac_cv_va_copy=yes],
1232         [ac_cv_va_copy=no]
1233     )]
1235 AC_CACHE_CHECK([whether va_list can be copied by value],
1236                ac_cv_va_val_copy,
1237     [AC_TRY_COMPILE([#include <stdarg.h>
1238                      #include <stdlib.h>
1239         void f (int i, ...) {
1240             va_list args1, args2;
1241             va_start (args1, i);
1242             args2 = args1;
1243             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1244                 exit (1);
1245             va_end (args1); va_end (args2);
1246         }],
1247         [f(0, 42); return 0],
1248         [ac_cv_va_val_copy=yes],
1249         [ac_cv_va_val_copy=no],
1250     )]
1252 if test "x$ac_cv_va_copy" = "xyes"; then
1253     AC_DEFINE(VA_COPY, va_copy)
1254     AC_DEFINE(HAVE_VA_COPY)
1257 if test "x$ac_cv_va_val_copy" = "xno"; then
1258    AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
1261 dnl ===================================================================
1262 dnl ========================================================
1263 dnl Put your C++ language/feature checks below
1264 dnl ========================================================
1265 AC_LANG_CPLUSPLUS
1267 ARM_ABI_PREFIX=
1268 if test "$GNU_CC"; then
1269   if test "$CPU_ARCH" = "arm" ; then
1270     AC_CACHE_CHECK(for ARM EABI,
1271         ac_cv_gcc_arm_eabi,
1272         [AC_TRY_COMPILE([],
1273                         [
1274 #if defined(__ARM_EABI__)
1275   return 0;
1276 #else
1277 #error Not ARM EABI.
1278 #endif
1279                         ],
1280                         ac_cv_gcc_arm_eabi="yes",
1281                         ac_cv_gcc_arm_eabi="no")])
1282     if test "$ac_cv_gcc_arm_eabi" = "yes"; then
1283         HAVE_ARM_EABI=1
1284         ARM_ABI_PREFIX=eabi-
1285     else
1286         ARM_ABI_PREFIX=oabi-
1287     fi
1288   fi
1290   TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
1293 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
1294 # We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
1295 # enabled, the linker in xcode 4.1 will crash. Without this it would crash when
1296 # linking XUL.
1297 _SAVE_LDFLAGS=$LDFLAGS
1298 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
1299 AC_CACHE_CHECK(for __thread keyword for TLS variables,
1300                ac_cv_thread_keyword,
1301                [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
1302                             [return tlsIsMainThread;],
1303                             ac_cv_thread_keyword=yes,
1304                             ac_cv_thread_keyword=no)])
1305 LDFLAGS=$_SAVE_LDFLAGS
1306 # The custom dynamic linker doesn't support TLS variables
1307 MOZ_TLS=
1308 if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
1309   # mips builds fail with TLS variables because of a binutils bug.
1310   # See bug 528687
1311   # OpenBSD doesn't have TLS support, and the test succeeds with clang++
1312   case "${target}" in
1313     mips*-*)
1314       :
1315       ;;
1316     *-android*|*-linuxandroid*)
1317       :
1318       ;;
1319     *-openbsd*)
1320       :
1321       ;;
1322     *)
1323       AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
1324       MOZ_TLS=1
1325       ;;
1326   esac
1329 dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments.
1330 if test -n "$MOZ_LINKER"; then
1331   if test "$CPU_ARCH" = arm; then
1332     dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments
1333     if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
1334       LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
1335       _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
1336     fi
1337   fi
1339 dnl gold emits wrong sysv-style elf hash tables when building both sysv and
1340 dnl style tables. https://sourceware.org/bugzilla/show_bug.cgi?id=13597
1341 dnl Since the linker only understands the sysv ones, no need to build the
1342 dnl gnu style tables anyways.
1343   LDFLAGS="$LDFLAGS -Wl,--hash-style=sysv"
1346 dnl End of C++ language/feature checks
1347 AC_LANG_C
1349 dnl ========================================================
1350 dnl =  Internationalization checks
1351 dnl ========================================================
1353 dnl Internationalization and Locale support is different
1354 dnl on various UNIX platforms.  Checks for specific i18n
1355 dnl features go here.
1357 AC_HAVE_FUNCS(localeconv)
1359 fi # ! SKIP_COMPILER_CHECKS
1361 if test -n "${COMPILE_ENVIRONMENT}"; then
1362   MOZ_CHECK_ALLOCATOR
1365 TARGET_XPCOM_ABI=
1366 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
1367     TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
1368     AC_DEFINE_UNQUOTED(TARGET_XPCOM_ABI, ["${TARGET_XPCOM_ABI}"])
1371 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
1372 dnl features that Windows actually does support.
1374 if test -n "$SKIP_COMPILER_CHECKS"; then
1375    dnl Windows has malloc.h
1376    AC_DEFINE(MALLOC_H, [<malloc.h>])
1377    AC_DEFINE(HAVE_FORCEINLINE)
1378    AC_DEFINE(HAVE_LOCALECONV)
1379 fi # SKIP_COMPILER_CHECKS
1381 dnl Mozilla specific options
1382 dnl ========================================================
1383 dnl The macros used for command line options
1384 dnl are defined in build/autoconf/altoptions.m4.
1386 dnl ========================================================
1387 dnl =
1388 dnl = Check for external package dependencies
1389 dnl =
1390 dnl ========================================================
1391 MOZ_ARG_HEADER(External Packages)
1393 dnl ========================================================
1394 dnl system libevent Support
1395 dnl ========================================================
1396 MOZ_ARG_WITH_STRING(system-libevent,
1397 [  --with-system-libevent[=PFX]
1398                           Use system libevent [installed at prefix PFX]],
1399     LIBEVENT_DIR=$withval)
1401 _SAVE_CFLAGS=$CFLAGS
1402 _SAVE_LDFLAGS=$LDFLAGS
1403 _SAVE_LIBS=$LIBS
1404 if test "$LIBEVENT_DIR" = yes; then
1405     PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
1406         MOZ_SYSTEM_LIBEVENT=1,
1407         LIBEVENT_DIR=/usr)
1409 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
1410     MOZ_SYSTEM_LIBEVENT=
1411 elif test -z "$MOZ_SYSTEM_LIBEVENT"; then
1412     CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
1413     LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
1414     MOZ_CHECK_HEADER(event.h,
1415         [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
1416              AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
1417          fi],
1418         AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
1419     AC_CHECK_LIB(event, event_init,
1420                  [MOZ_SYSTEM_LIBEVENT=1
1421                   MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
1422                   MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
1423                  [MOZ_SYSTEM_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
1425 CFLAGS=$_SAVE_CFLAGS
1426 LDFLAGS=$_SAVE_LDFLAGS
1427 LIBS=$_SAVE_LIBS
1429 AC_SUBST(MOZ_SYSTEM_LIBEVENT)
1431 if test -z "$SKIP_LIBRARY_CHECKS"; then
1433 dnl ========================================================
1434 dnl system PNG Support
1435 dnl ========================================================
1436 MOZ_ARG_WITH_STRING(system-png,
1437 [  --with-system-png[=PFX]
1438                           Use system libpng [installed at prefix PFX]],
1439     PNG_DIR=$withval)
1441 _SAVE_CFLAGS=$CFLAGS
1442 _SAVE_LDFLAGS=$LDFLAGS
1443 _SAVE_LIBS=$LIBS
1444 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
1445     CFLAGS="-I${PNG_DIR}/include $CFLAGS"
1446     LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
1448 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
1449     MOZ_SYSTEM_PNG=
1450 else
1451     AC_CHECK_LIB(png, png_get_valid, [MOZ_SYSTEM_PNG=1 MOZ_PNG_LIBS="-lpng"],
1452                  AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
1453     AC_CHECK_LIB(png, png_get_acTL, ,
1454                  AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]))
1456 if test "$MOZ_SYSTEM_PNG" = 1; then
1457     AC_TRY_COMPILE([ #include <stdio.h>
1458                      #include <sys/types.h>
1459                      #include <png.h> ],
1460                    [ #if PNG_LIBPNG_VER < $MOZPNG
1461                      #error "Insufficient libpng version ($MOZPNG required)."
1462                      #endif
1463                      #ifndef PNG_UINT_31_MAX
1464                      #error "Insufficient libpng version."
1465                      #endif ],
1466                    MOZ_SYSTEM_PNG=1,
1467                    AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
1469 CFLAGS=$_SAVE_CFLAGS
1470 LDFLAGS=$_SAVE_LDFLAGS
1471 LIBS=$_SAVE_LIBS
1473 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_SYSTEM_PNG" = 1; then
1474     MOZ_PNG_CFLAGS="-I${PNG_DIR}/include"
1475     MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}"
1478 fi # SKIP_LIBRARY_CHECKS
1480 dnl ========================================================
1481 dnl =
1482 dnl = Application
1483 dnl =
1484 dnl ========================================================
1486 MOZ_ARG_HEADER(Application)
1488 ENABLE_SYSTEM_EXTENSION_DIRS=1
1489 MOZ_BRANDING_DIRECTORY=
1490 MOZ_OFFICIAL_BRANDING=
1491 MOZ_AUTH_EXTENSION=1
1492 MOZ_SPELLCHECK=1
1493 MOZ_UNIVERSALCHARDET=1
1494 MOZ_XUL=1
1495 MOZ_ZIPWRITER=1
1496 MOZ_NO_SMART_CARDS=
1497 MOZ_SANDBOX=1
1498 MOZ_BINARY_EXTENSIONS=
1499 MOZ_DEVTOOLS=server
1501 dnl ========================================================
1502 dnl = Trademarked Branding
1503 dnl ========================================================
1504 MOZ_ARG_ENABLE_BOOL(official-branding,
1505 [  --enable-official-branding
1506                           Enable Official mozilla.org Branding
1507                           Do not distribute builds with
1508                           --enable-official-branding unless you have
1509                           permission to use trademarks per
1510                           http://www.mozilla.org/foundation/trademarks/ .],
1511     MOZ_OFFICIAL_BRANDING=1,
1512     MOZ_OFFICIAL_BRANDING=)
1514 # Allow the application to influence configure with a confvars.sh script.
1515 AC_MSG_CHECKING([if app-specific confvars.sh exists])
1516 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
1517   AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
1518   . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
1519 else
1520   AC_MSG_RESULT([no])
1523 dnl ========================================================
1524 dnl Ensure Android SDK and build-tools versions depending on
1525 dnl mobile target.
1526 dnl ========================================================
1528 case "$MOZ_BUILD_APP" in
1529 mobile/android)
1530     MOZ_ANDROID_SDK
1531     ;;
1532 esac
1534 dnl ========================================================
1535 dnl =
1536 dnl = Toolkit Options
1537 dnl =
1538 dnl ========================================================
1539 MOZ_ARG_HEADER(Toolkit Options)
1541 dnl ========================================================
1542 dnl = Enable the toolkit as needed                         =
1543 dnl ========================================================
1545 case "$MOZ_WIDGET_TOOLKIT" in
1547 cocoa)
1548     LDFLAGS="$LDFLAGS -framework Cocoa"
1549     # Use -Wl as a trick to avoid -framework and framework names from
1550     # being separated by AC_SUBST_LIST.
1551     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'
1552     TK_CFLAGS=""
1553     CFLAGS="$CFLAGS $TK_CFLAGS"
1554     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
1555     MOZ_USER_DIR="Mozilla"
1556     MOZ_FS_LAYOUT=bundle
1557     ;;
1559 uikit)
1560     LDFLAGS="$LDFLAGS -framework UIKit"
1561     TK_CFLAGS=""
1562     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'
1563     CFLAGS="$CFLAGS $TK_CFLAGS"
1564     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
1565     MOZ_USER_DIR="Mozilla"
1566     MOZ_FS_LAYOUT=bundle
1567     ;;
1569 esac
1571 if test "$OS_TARGET" = Darwin; then
1572     LDFLAGS="$LDFLAGS -lobjc"
1575 dnl there are a lot of tests on MOZ_ENABLE_GTK below, that are more convenient
1576 dnl to keep that way than testing against MOZ_WIDGET_TOOLKIT
1577 case "$MOZ_WIDGET_TOOLKIT" in
1578 gtk*)
1579     MOZ_ENABLE_GTK=1
1580     ;;
1581 esac
1583 if test "$COMPILE_ENVIRONMENT"; then
1584   if test "$MOZ_WIDGET_TOOLKIT" = gtk; then
1585     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)
1586     MOZ_GTK3_CFLAGS="-I${_topsrcdir}/widget/gtk/compat-gtk3 $MOZ_GTK3_CFLAGS"
1587     TK_CFLAGS=$MOZ_GTK3_CFLAGS
1588     TK_LIBS=$MOZ_GTK3_LIBS
1589     dnl GDK_VERSION_MIN_REQUIRED is not set here as GDK3 deprecated warnings
1590     dnl are suppressed by widget/gtk/compat-gtk3/gdk/gdkversionmacros.h.
1591     AC_DEFINE_UNQUOTED(GDK_VERSION_MAX_ALLOWED,$GDK_VERSION_MAX_ALLOWED)
1592   fi
1593   if test "$MOZ_ENABLE_GTK"; then
1594     AC_DEFINE_UNQUOTED(GLIB_VERSION_MIN_REQUIRED,$GLIB_VERSION_MIN_REQUIRED)
1595     AC_DEFINE_UNQUOTED(GLIB_VERSION_MAX_ALLOWED,$GLIB_VERSION_MAX_ALLOWED)
1597     if test "$MOZ_X11"; then
1598       PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 >= $GLIB_VERSION gobject-2.0 gio-unix-2.0 gdk-x11-2.0)
1599       MOZ_GTK2_CFLAGS="-I${_topsrcdir}/widget/gtk/compat $MOZ_GTK2_CFLAGS"
1600     fi
1601   fi
1602 fi # COMPILE_ENVIRONMENT
1604 AC_SUBST(MOZ_FS_LAYOUT)
1606 AC_SUBST_LIST(TK_CFLAGS)
1607 AC_SUBST_LIST(TK_LIBS)
1609 dnl ========================================================
1610 dnl =
1611 dnl = Components & Features
1612 dnl =
1613 dnl ========================================================
1614 MOZ_ARG_HEADER(Components and Features)
1616 AC_SUBST(MOZ_OFFICIAL_BRANDING)
1617 if test -n "$MOZ_OFFICIAL_BRANDING"; then
1618   if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
1619     AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
1620   else
1621     MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
1622     AC_DEFINE(MOZ_OFFICIAL_BRANDING)
1623   fi
1626 MOZ_ARG_WITH_STRING(branding,
1627 [  --with-branding=dir     Use branding from the specified directory.],
1628     MOZ_BRANDING_DIRECTORY=$withval)
1630 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
1631 if test -z "$REAL_BRANDING_DIRECTORY"; then
1632   REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
1635 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
1636   . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
1639 AC_SUBST(MOZ_BRANDING_DIRECTORY)
1641 dnl ========================================================
1642 dnl = Distribution ID
1643 dnl ========================================================
1644 MOZ_ARG_WITH_STRING(distribution-id,
1645 [  --with-distribution-id=ID
1646                           Set distribution-specific id (default=org.mozilla)],
1647 [ val=`echo $withval`
1648     MOZ_DISTRIBUTION_ID="$val"])
1650 if test -z "$MOZ_DISTRIBUTION_ID"; then
1651    MOZ_DISTRIBUTION_ID="org.mozilla"
1654 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
1655 AC_SUBST(MOZ_DISTRIBUTION_ID)
1657 dnl ========================================================
1658 dnl = libproxy support
1659 dnl ========================================================
1661 if test "$MOZ_ENABLE_GTK"
1662 then
1663     MOZ_ENABLE_LIBPROXY=
1665     MOZ_ARG_ENABLE_BOOL(libproxy,
1666     [  --enable-libproxy         Enable libproxy support ],
1667     MOZ_ENABLE_LIBPROXY=1,
1668     MOZ_ENABLE_LIBPROXY=)
1670     if test "$MOZ_ENABLE_LIBPROXY"
1671     then
1672         PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
1673         AC_DEFINE(MOZ_ENABLE_LIBPROXY)
1674     fi
1676 AC_SUBST(MOZ_ENABLE_LIBPROXY)
1678 dnl ========================================================
1679 dnl = dbus support
1680 dnl ========================================================
1682 if test "$MOZ_ENABLE_GTK"
1683 then
1684     MOZ_ENABLE_DBUS=1
1686     MOZ_ARG_DISABLE_BOOL(dbus,
1687     [  --disable-dbus          Disable dbus support ],
1688         MOZ_ENABLE_DBUS=,
1689         MOZ_ENABLE_DBUS=1)
1691     if test "$MOZ_ENABLE_DBUS"
1692     then
1693         PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
1694         PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
1695         AC_DEFINE(MOZ_ENABLE_DBUS)
1696     fi
1698 AC_SUBST(MOZ_ENABLE_DBUS)
1700 AC_TRY_COMPILE([#include <linux/ethtool.h>],
1701                [ struct ethtool_cmd cmd; cmd.speed_hi = 0; ],
1702                MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI=1)
1704 AC_SUBST(MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI)
1706 if test -n "$MOZ_WEBRTC"; then
1707     if test -n "$MOZ_X11"; then
1708       MOZ_WEBRTC_X11_LIBS="-lXext -lXdamage -lXfixes -lXcomposite"
1709     fi
1712 AC_SUBST_LIST(MOZ_WEBRTC_X11_LIBS)
1714 dnl ========================================================
1715 dnl = Apple platform decoder support
1716 dnl ========================================================
1717 if test "$COMPILE_ENVIRONMENT"; then
1718 if test -n "$MOZ_APPLEMEDIA"; then
1719   # hack in frameworks for fmp4 - see bug 1029974
1720   # We load VideoToolbox and CoreMedia dynamically, so they don't appear here.
1721   LDFLAGS="$LDFLAGS -framework AudioToolbox"
1722   dnl Verify CoreMedia is available.
1723   AC_CHECK_HEADERS([CoreMedia/CoreMedia.h VideoToolbox/VideoToolbox.h], [],
1724     [AC_MSG_ERROR([MacOS X 10.9 SDK or later is required])])
1726 fi # COMPILE_ENVIRONMENT
1728 dnl ========================================================
1729 dnl = Handle dependent MEDIA defines
1730 dnl ========================================================
1732 MOZ_WEBM_ENCODER=1
1733 AC_DEFINE(MOZ_WEBM_ENCODER)
1734 AC_SUBST(MOZ_WEBM_ENCODER)
1736 dnl ========================================================
1737 dnl NegotiateAuth
1738 dnl ========================================================
1740 MOZ_ARG_DISABLE_BOOL(negotiateauth,
1741 [  --disable-negotiateauth Disable GSS-API negotiation ],
1742     MOZ_AUTH_EXTENSION=,
1743     MOZ_AUTH_EXTENSION=1 )
1745 dnl ========================================================
1746 dnl Searching of system directories for extensions.
1747 dnl Note: this switch is meant to be used for test builds
1748 dnl whose behavior should not depend on what happens to be
1749 dnl installed on the local machine.
1750 dnl ========================================================
1751 MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
1752 [  --disable-system-extension-dirs
1753                           Disable searching system- and account-global
1754                           directories for extensions of any kind; use
1755                           only profile-specific extension directories],
1756   ENABLE_SYSTEM_EXTENSION_DIRS=,
1757   ENABLE_SYSTEM_EXTENSION_DIRS=1 )
1758 if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
1759   AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
1762 dnl ========================================================
1763 dnl = Universalchardet
1764 dnl ========================================================
1765 MOZ_ARG_DISABLE_BOOL(universalchardet,
1766 [  --disable-universalchardet
1767                           Disable universal encoding detection],
1768   MOZ_UNIVERSALCHARDET=,
1769   MOZ_UNIVERSALCHARDET=1 )
1771 dnl ========================================================
1772 dnl Gamepad support
1773 dnl ========================================================
1775 if test "$COMPILE_ENVIRONMENT" ; then
1777 dnl Moved gamepad platform check to moz.build, linux header check still needed here.
1778 if test "$OS_TARGET" = "Linux"; then
1779     MOZ_CHECK_HEADER([linux/joystick.h])
1780     if test "$ac_cv_header_linux_joystick_h" != "yes"; then
1781       AC_MSG_ERROR([Can't find header linux/joystick.h, needed for gamepad support. Please install Linux kernel headers.])
1782     fi
1785 fi # COMPILE_ENVIRONMENT
1788 dnl ========================================================
1789 dnl = Breakpad crash reporting (on by default on supported platforms)
1790 dnl ========================================================
1792 case $target in
1793 i?86-*-mingw*|x86_64-*-mingw*|aarch64-*-mingw*)
1794   MOZ_CRASHREPORTER=1
1795   ;;
1796 i?86-apple-darwin*|x86_64-apple-darwin*|aarch64-apple-darwin*)
1797   MOZ_CRASHREPORTER=1
1798   ;;
1799 *-android*|*-linuxandroid*)
1800   dnl Android/arm is arm-unknown-linux-androideabi, so android condition should
1801   dnl be before Linux condition
1802   dnl The crash reporter prevents crash stacktraces to be logged in the
1803   dnl logs so we leave it out by default in developer builds.
1804   if test -z "$DEVELOPER_OPTIONS"; then
1805     MOZ_CRASHREPORTER=1
1806   fi
1807   ;;
1808 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
1809   if test "$MOZ_ENABLE_GTK"; then
1810     MOZ_CRASHREPORTER=1
1811   fi
1812   ;;
1813 esac
1815 MOZ_ARG_DISABLE_BOOL(crashreporter,
1816 [  --disable-crashreporter Disable breakpad crash reporting],
1817     [MOZ_CRASHREPORTER=],
1818     [MOZ_CRASHREPORTER=F # Force enable breakpad])
1820 if test "$OS_ARCH" != "$HOST_OS_ARCH" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "Darwin" -a "$MOZ_WIDGET_TOOLKIT" != "android"; then
1821   if test "$MOZ_CRASHREPORTER" = F; then
1822     AC_MSG_ERROR([Cannot --enable-crashreporter, as breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH.])
1823   fi
1824   MOZ_CRASHREPORTER=
1827 if test -n "$MOZ_CRASHREPORTER"; then
1828    AC_DEFINE(MOZ_CRASHREPORTER)
1830   if test "$OS_TARGET" = "Linux" && \
1831     test -z "$SKIP_LIBRARY_CHECKS"; then
1832     PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
1833   fi
1835   if test "$OS_ARCH" = "WINNT"; then
1836     if test -z "$HAVE_64BIT_BUILD" -a -n "$COMPILE_ENVIRONMENT"; then
1837       MOZ_CRASHREPORTER_INJECTOR=1
1838       AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
1839     fi
1840   fi
1843 dnl ========================================================
1844 dnl = Enable compilation of specific extension modules
1845 dnl ========================================================
1847 MOZ_ARG_ENABLE_STRING(extensions,
1848 [  --enable-extensions     Enable extensions],
1849 [ for option in `echo $enableval | sed 's/,/ /g'`; do
1850     if test "$option" = "yes" -o "$option" = "all"; then
1851         AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
1852     elif test "$option" = "no" -o "$option" = "none"; then
1853         MOZ_EXTENSIONS=""
1854     elif test "$option" = "default"; then
1855         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
1856     elif test `echo "$option" | grep -c \^-` != 0; then
1857         option=`echo $option | sed 's/^-//'`
1858         MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
1859     else
1860         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
1861     fi
1862 done],
1863     MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
1865 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
1866 dnl when trying to build a nonexistent extension.
1867 for extension in $MOZ_EXTENSIONS; do
1868     if test ! -d "${srcdir}/extensions/${extension}"; then
1869         AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
1870     fi
1871 done
1873 # Avoid defining MOZ_ENABLE_CAIRO_FT on Windows platforms because
1874 # "cairo-ft-font.c" includes <dlfcn.h>, which only exists on posix platforms
1875 if test -n "$MOZ_TREE_FREETYPE" -a "$OS_TARGET" != WINNT; then
1876    MOZ_ENABLE_CAIRO_FT=1
1877    FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
1878    CAIRO_FT_CFLAGS="-I$_topsrcdir/modules/freetype2/include"
1879    AC_SUBST_LIST(CAIRO_FT_CFLAGS)
1882 dnl ========================================================
1883 dnl Updater
1884 dnl ========================================================
1886 MOZ_ARG_DISABLE_BOOL(updater,
1887 [  --disable-updater       Disable building of updater],
1888     MOZ_UPDATER=,
1889     MOZ_UPDATER=1 )
1891 if test -n "$MOZ_UPDATER"; then
1892     AC_DEFINE(MOZ_UPDATER)
1895 dnl ========================================================
1896 dnl parental controls (for Windows Vista)
1897 dnl ========================================================
1898 MOZ_ARG_DISABLE_BOOL(parental-controls,
1899 [  --disable-parental-controls
1900                           Do not build parental controls],
1901    MOZ_DISABLE_PARENTAL_CONTROLS=1,
1902    MOZ_DISABLE_PARENTAL_CONTROLS=)
1903 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
1904     AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
1907 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
1909 dnl ========================================================
1910 dnl = Disable smartcard support
1911 dnl ========================================================
1912 if test -n "$MOZ_NO_SMART_CARDS"; then
1913     AC_DEFINE(MOZ_NO_SMART_CARDS)
1915 AC_SUBST(MOZ_NO_SMART_CARDS)
1917 dnl ========================================================
1918 dnl = Sandboxing support
1919 dnl ========================================================
1920 if test -n "$MOZ_TSAN" -o -n "$MOZ_ASAN"; then
1921     # Bug 1182565: TSan conflicts with sandboxing on Linux.
1922     # Bug 1287971: LSan also conflicts with sandboxing on Linux.
1923     case $OS_TARGET in
1924     Linux|Android)
1925         MOZ_SANDBOX=
1926         ;;
1927     esac
1930 MOZ_ARG_DISABLE_BOOL(sandbox,
1931 [  --disable-sandbox        Disable sandboxing support],
1932     MOZ_SANDBOX=,
1933     MOZ_SANDBOX=1)
1935 case "$OS_TARGET" in
1936 WINNT|Darwin|OpenBSD)
1938 Linux)
1939     case $CPU_ARCH in
1940         x86_64|x86|arm|aarch64)
1941         ;;
1942         # Linux sandbox is only available on x86{,_64} and arm{,64}.
1943         *)
1944             MOZ_SANDBOX=
1945         ;;
1946     esac
1947     ;;
1949     # Only enable the sandbox by default on Linux, OpenBSD, macOS, and Windows
1950     MOZ_SANDBOX=
1952 esac
1954 if test -n "$MOZ_SANDBOX"; then
1955     AC_DEFINE(MOZ_SANDBOX)
1958 AC_SUBST(MOZ_SANDBOX)
1961 dnl ========================================================
1962 dnl =
1963 dnl = Module specific options
1964 dnl =
1965 dnl ========================================================
1966 MOZ_ARG_HEADER(Individual module options)
1968 dnl ==============================
1969 dnl === SQLite fdatasync check ===
1970 dnl ==============================
1971 dnl Check to see if fdatasync is available and make use of it
1972 AC_CHECK_FUNC(fdatasync)
1974 dnl ========================================================
1975 dnl = Disable zipwriter
1976 dnl ========================================================
1977 MOZ_ARG_DISABLE_BOOL(zipwriter,
1978 [  --disable-zipwriter     Disable zipwriter component],
1979     MOZ_ZIPWRITER=,
1980     MOZ_ZIPWRITER=1 )
1981 AC_SUBST(MOZ_ZIPWRITER)
1983 dnl ========================================================
1984 dnl =
1985 dnl = Feature options that require extra sources to be pulled
1986 dnl =
1987 dnl ========================================================
1988 dnl MOZ_ARG_HEADER(Features that require extra sources)
1990 dnl ========================================================
1991 dnl =
1992 dnl = Runtime debugging and Optimization Options
1993 dnl =
1994 dnl ========================================================
1995 MOZ_ARG_HEADER(Runtime debugging and Optimizations)
1997 dnl ========================================================
1998 dnl = Enable code optimization. ON by default.
1999 dnl ========================================================
2001 # Use value from moz.configure if one is defined. Else use our computed
2002 # value.
2003 if test -n "${MOZ_CONFIGURE_OPTIMIZE_FLAGS}"; then
2004     MOZ_OPTIMIZE_FLAGS=${MOZ_CONFIGURE_OPTIMIZE_FLAGS}
2007 if test "$COMPILE_ENVIRONMENT"; then
2008 if test -n "$MOZ_OPTIMIZE"; then
2009     AC_MSG_CHECKING([for valid C compiler optimization flags])
2010     _SAVE_CFLAGS=$CFLAGS
2011     CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
2012     AC_TRY_COMPILE([#include <stdio.h>],
2013         [printf("Hello World\n");],
2014         _results=yes,
2015         _results=no)
2016     AC_MSG_RESULT([$_results])
2017     if test "$_results" = "no"; then
2018         AC_MSG_ERROR([These compiler flags for C are invalid: $MOZ_OPTIMIZE_FLAGS])
2019     fi
2020     CFLAGS=$_SAVE_CFLAGS
2021     if test -n "$MOZ_LTO" -a -n "$CLANG_CC"; then
2022         # When using llvm-based LTO, non numeric optimization levels are
2023         # not supported by the linker, so force the linker to use -O2 (
2024         # which doesn't influence the level compilation units are actually
2025         # compiled at).
2026         case " $MOZ_OPTIMIZE_FLAGS " in
2027         *\ -Os\ *|*\ -Oz\ *)
2028             MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -O2"
2029             ;;
2030         esac
2031     fi
2033 fi # COMPILE_ENVIRONMENT
2035 AC_SUBST_LIST(MOZ_OPTIMIZE_FLAGS)
2036 AC_SUBST_LIST(MOZ_OPTIMIZE_LDFLAGS)
2037 AC_SUBST_LIST(MOZ_PGO_OPTIMIZE_FLAGS)
2039 dnl ========================================================
2040 dnl = Enable runtime logging
2041 dnl ========================================================
2042 AC_DEFINE(MOZ_LOGGING)
2043 AC_DEFINE(FORCE_PR_LOG)
2045 dnl ========================================================
2046 dnl = This will enable logging of addref, release, ctor, dtor.
2047 dnl ========================================================
2048 _ENABLE_LOGREFCNT=42
2049 MOZ_ARG_ENABLE_BOOL(logrefcnt,
2050 [  --enable-logrefcnt      Enable logging of refcounts (default=debug) ],
2051     _ENABLE_LOGREFCNT=1,
2052     _ENABLE_LOGREFCNT= )
2053 if test "$_ENABLE_LOGREFCNT" = "1"; then
2054     AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
2055 elif test -z "$_ENABLE_LOGREFCNT"; then
2056     AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
2059 dnl ========================================================
2060 dnl moz_dump_painting
2061 dnl ========================================================
2062 MOZ_ARG_ENABLE_BOOL(dump-painting,
2063 [  --enable-dump-painting          Enable paint debugging.],
2064     MOZ_DUMP_PAINTING=1,
2065     MOZ_DUMP_PAINTING= )
2066 if test -n "$MOZ_DUMP_PAINTING"; then
2067     AC_DEFINE(MOZ_DUMP_PAINTING)
2068     AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
2070 if test -n "$MOZ_DEBUG"; then
2071     AC_DEFINE(MOZ_DUMP_PAINTING)
2074 case "${OS_TARGET}" in
2075 Android|WINNT|Darwin)
2076   MOZ_GLUE_IN_PROGRAM=
2077   ;;
2079   dnl On !Android !Windows !OSX, we only want to link executables against mozglue
2080   MOZ_GLUE_IN_PROGRAM=1
2081   AC_DEFINE(MOZ_GLUE_IN_PROGRAM)
2082   ;;
2083 esac
2085 dnl ========================================================
2086 dnl = Jemalloc build setup
2087 dnl ========================================================
2088 if test -z "$MOZ_MEMORY"; then
2089   case "${target}" in
2090     *-mingw*)
2091       if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
2092         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.])
2093       fi
2094       ;;
2095   esac
2096 else
2097   dnl The generic feature tests that determine how to compute ncpus are long and
2098   dnl complicated.  Therefore, simply define special cpp variables for the
2099   dnl platforms we have special knowledge of.
2100   case "${target}" in
2101   *-mingw*)
2102     export MOZ_NO_DEBUG_RTL=1
2103     ;;
2104   esac
2105 fi # MOZ_MEMORY
2106 AC_SUBST(MOZ_GLUE_IN_PROGRAM)
2108 dnl ========================================================
2109 dnl = Enable using the clang plugin to build
2110 dnl ========================================================
2112 if test -n "$COMPILE_ENVIRONMENT"; then
2113 MOZ_CONFIG_CLANG_PLUGIN
2114 fi # COMPILE_ENVIRONMENT
2116 dnl ========================================================
2117 dnl = frontend JS debug mode
2118 dnl ========================================================
2120 MOZ_ARG_ENABLE_BOOL(debug-js-modules,
2121 [  --enable-debug-js-modules  Enable debug mode for frontend JS libraries],
2122    DEBUG_JS_MODULES=1,
2123    DEBUG_JS_MODULES=)
2125 AC_SUBST(DEBUG_JS_MODULES)
2127 dnl ========================================================
2128 dnl =
2129 dnl = Profiling and Instrumenting
2130 dnl =
2131 dnl ========================================================
2132 MOZ_ARG_HEADER(Profiling and Instrumenting)
2134 dnl ========================================================
2135 dnl = Support for demangling undefined symbols
2136 dnl ========================================================
2137 if test -z "$SKIP_LIBRARY_CHECKS"; then
2138     AC_LANG_SAVE
2139     AC_LANG_CPLUSPLUS
2140     AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
2141     AC_LANG_RESTORE
2144 # Demangle only for debug or DMD builds
2145 MOZ_DEMANGLE_SYMBOLS=
2146 if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$MOZ_DMD"; then
2147     MOZ_DEMANGLE_SYMBOLS=1
2148     AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
2150 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
2152 dnl ========================================================
2153 dnl = Support for gcc stack unwinding (from gcc 3.3)
2154 dnl ========================================================
2155 if test -z "$SKIP_LIBRARY_CHECKS"; then
2156     AC_LANG_SAVE
2157     AC_LANG_CPLUSPLUS
2158     MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
2159     AC_LANG_RESTORE
2162 dnl ========================================================
2163 dnl =
2164 dnl = Misc. Options
2165 dnl =
2166 dnl ========================================================
2167 MOZ_ARG_HEADER(Misc. Options)
2169 dnl ========================================================
2170 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
2171 dnl ========================================================
2172 MOZ_ARG_WITH_STRING(user-appdir,
2173 [  --with-user-appdir=DIR  Set user-specific appdir (default=.mozilla)],
2174 [ val=`echo $withval`
2175 if echo "$val" | grep "\/" >/dev/null; then
2176     AC_MSG_ERROR("Homedir must be single relative path.")
2177 else
2178     MOZ_USER_DIR="$val"
2179 fi])
2181 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
2183 if test -z "$SKIP_COMPILER_CHECKS"; then
2184 dnl ========================================================
2185 dnl =
2186 dnl = Compiler Options
2187 dnl =
2188 dnl ========================================================
2189 MOZ_ARG_HEADER(Compiler Options)
2191 dnl ========================================================
2192 dnl Check for gcc -pipe support
2193 dnl ========================================================
2194 AC_MSG_CHECKING([for -pipe support])
2195 if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
2196     dnl Any gcc that supports firefox supports -pipe.
2197     CFLAGS="$CFLAGS -pipe"
2198     CXXFLAGS="$CXXFLAGS -pipe"
2199     AC_MSG_RESULT([yes])
2200 else
2201     AC_MSG_RESULT([no])
2204 fi # ! SKIP_COMPILER_CHECKS
2206 AC_LANG_C
2208 if test "$COMPILE_ENVIRONMENT"; then
2209 MOZ_EXPAND_LIBS
2210 fi # COMPILE_ENVIRONMENT
2212 dnl ========================================================
2213 dnl =
2214 dnl = Static Build Options
2215 dnl =
2216 dnl ========================================================
2217 MOZ_ARG_HEADER(Static build options)
2219 if test -z "$MOZ_SYSTEM_ZLIB"; then
2220 if test -n "$JS_SHARED_LIBRARY" -o -n "$MOZ_LINKER" -o "$MOZ_WIDGET_TOOLKIT" = android; then
2221   ZLIB_IN_MOZGLUE=1
2222   AC_DEFINE(ZLIB_IN_MOZGLUE)
2226 AC_SUBST(ZLIB_IN_MOZGLUE)
2228 dnl ========================================================
2229 dnl =
2230 dnl = Standalone module options
2231 dnl =
2232 dnl ========================================================
2233 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
2235 dnl Check for GLib.
2236 dnl ========================================================
2238 if test -z "$SKIP_PATH_CHECKS"; then
2239 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
2240     if test "$MOZ_ENABLE_GTK" ; then
2241         PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
2242     fi
2246 if test -z "${GLIB_GMODULE_LIBS}" \
2247    -a -n "${GLIB_CONFIG}"\
2248     -a "${GLIB_CONFIG}" != no\
2249 ; then
2250     GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
2253 AC_SUBST_LIST(GLIB_GMODULE_LIBS)
2255 if test "$USE_FC_FREETYPE"; then
2256     if test "$COMPILE_ENVIRONMENT"; then
2257         dnl ========================================================
2258         dnl = Check for freetype2 functionality
2259         dnl ========================================================
2260         if test "$_HAVE_FREETYPE2" -a -z "$MOZ_TREE_FREETYPE"; then
2261             _SAVE_LIBS="$LIBS"
2262             _SAVE_CFLAGS="$CFLAGS"
2263             LIBS="$LIBS $FT2_LIBS"
2264             CFLAGS="$CFLAGS $FT2_CFLAGS"
2266             AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
2267                 ac_cv_member_FT_Bitmap_Size_y_ppem,
2268                 [AC_TRY_COMPILE([#include <ft2build.h>
2269                                  #include FT_FREETYPE_H],
2270                                 [FT_Bitmap_Size s;
2271                                  if (sizeof s.y_ppem) return 0;
2272                                  return 1],
2273                                 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
2274                                 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
2275             if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
2276                 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
2277             else
2278                 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
2279             fi
2280             AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
2281                                $HAVE_FT_BITMAP_SIZE_Y_PPEM,
2282                                [FT_Bitmap_Size structure includes y_ppem field])
2284             AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table)
2286             LIBS="$_SAVE_LIBS"
2287             CFLAGS="$_SAVE_CFLAGS"
2288         fi
2290         _SAVE_CPPFLAGS="$CPPFLAGS"
2291         CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
2292         MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
2293             [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
2294         CPPFLAGS="$_SAVE_CPPFLAGS"
2295     fi
2298 dnl ========================================================
2299 dnl Check if we need the 32-bit Linux SSE2 error dialog
2300 dnl ========================================================
2302 AC_SUBST(MOZ_LINUX_32_SSE2_STARTUP_ERROR)
2304 dnl ========================================================
2305 dnl Check for pixman and cairo
2306 dnl ========================================================
2308 MOZ_TREE_CAIRO=1
2309 MOZ_ARG_ENABLE_BOOL(system-cairo,
2310 [ --enable-system-cairo  Obsolete: do not use this option],
2311 AC_MSG_ERROR(--enable-system-cairo is not supported),
2312 MOZ_TREE_CAIRO=1 )
2314 MOZ_TREE_PIXMAN=1
2315 MOZ_ARG_ENABLE_BOOL(system-pixman,
2316 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
2317 MOZ_TREE_PIXMAN=,
2318 MOZ_TREE_PIXMAN=force,
2319 MOZ_TREE_PIXMAN=1 )
2321 if test "$MOZ_TREE_PIXMAN"; then
2322     AC_DEFINE(MOZ_TREE_PIXMAN)
2323 else
2324     PKG_CHECK_MODULES(MOZ_PIXMAN, pixman-1 >= 0.19.2)
2327 MOZ_CAIRO_CFLAGS="-I${DIST}/include/cairo"
2328 AC_DEFINE(MOZ_TREE_CAIRO)
2330 if test "$OS_ARCH" = "WINNT"; then
2331     # For now we assume that we will have a uint64_t available through
2332     # one of the above headers or mozstdint.h.
2333     AC_DEFINE(HAVE_UINT64_T)
2336 # Define macros for cairo-features.h
2337 TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
2338 if test "$MOZ_X11"; then
2339     XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
2340     XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
2341     PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
2343 if test "$_HAVE_FREETYPE2"; then
2344     FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
2345     MOZ_ENABLE_CAIRO_FT=1
2346     CAIRO_FT_CFLAGS="$FT2_CFLAGS"
2349 case "$MOZ_WIDGET_TOOLKIT" in
2350   cocoa | uikit)
2351     QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
2352     QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
2353     QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
2354     ;;
2355   windows)
2356     WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
2357     WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
2358     WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
2360     if test "$COMPILE_ENVIRONMENT"; then
2361       MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
2362     fi
2363     ;;
2364 esac
2365 if test "$USE_FC_FREETYPE"; then
2366     FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
2368 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
2369 AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
2371 AC_SUBST(PS_SURFACE_FEATURE)
2372 AC_SUBST(SVG_SURFACE_FEATURE)
2373 AC_SUBST(XLIB_SURFACE_FEATURE)
2374 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
2375 AC_SUBST(QUARTZ_SURFACE_FEATURE)
2376 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
2377 AC_SUBST(WIN32_SURFACE_FEATURE)
2378 AC_SUBST(OS2_SURFACE_FEATURE)
2379 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
2380 AC_SUBST(FT_FONT_FEATURE)
2381 AC_SUBST(FC_FONT_FEATURE)
2382 AC_SUBST(WIN32_FONT_FEATURE)
2383 AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
2384 AC_SUBST(QUARTZ_FONT_FEATURE)
2385 AC_SUBST(PNG_FUNCTIONS_FEATURE)
2386 AC_SUBST(QT_SURFACE_FEATURE)
2387 AC_SUBST(TEE_SURFACE_FEATURE)
2389 if test "$MOZ_X11"; then
2390     MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
2393 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
2395 case "$MOZ_WIDGET_TOOLKIT" in
2396 android)
2397     TK_CFLAGS="$MOZ_CAIRO_CFLAGS $MOZ_PIXMAN_CFLAGS"
2398     TK_LIBS="$MOZ_CAIRO_LIBS $MOZ_PIXMAN_LIBS"
2399     ;;
2400 esac
2402 AC_SUBST(MOZ_TREE_CAIRO)
2403 AC_SUBST_LIST(MOZ_CAIRO_CFLAGS)
2404 AC_SUBST_LIST(MOZ_CAIRO_LIBS)
2405 AC_SUBST_LIST(MOZ_CAIRO_OSLIBS)
2406 AC_SUBST(MOZ_TREE_PIXMAN)
2408 BINDGEN_SYSTEM_FLAGS="$_BINDGEN_CFLAGS $NSPR_CFLAGS $NSS_CFLAGS $MOZ_PIXMAN_CFLAGS $MOZ_CAIRO_CFLAGS"
2409 AC_SUBST(BINDGEN_SYSTEM_FLAGS)
2410 BINDGEN_SYSTEM_TOML_FLAGS="$BINDGEN_SYSTEM_FLAGS"
2411 AC_SUBST_TOML_LIST(BINDGEN_SYSTEM_TOML_FLAGS)
2413 dnl ========================================================
2414 dnl disable xul
2415 dnl ========================================================
2416 MOZ_ARG_DISABLE_BOOL(xul,
2417 [  --disable-xul           Disable XUL],
2418     MOZ_XUL= )
2419 if test "$MOZ_XUL"; then
2420   AC_DEFINE(MOZ_XUL)
2421 else
2422   dnl remove extensions that require XUL
2423   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/irc//' -e 's/tasks//'`
2426 AC_SUBST(MOZ_XUL)
2428 dnl ========================================================
2429 dnl necko configuration options
2430 dnl ========================================================
2433 dnl option to disable necko's wifi scanner
2436 if test "$MOZ_WIDGET_TOOLKIT"; then
2438   case "$OS_TARGET" in
2439     Darwin)
2440       NECKO_WIFI=1
2441       ;;
2442     DragonFly|FreeBSD|WINNT)
2443       NECKO_WIFI=1
2444       ;;
2445     Linux)
2446       NECKO_WIFI=1
2447       NECKO_WIFI_DBUS=1
2448       ;;
2449   esac
2453 MOZ_ARG_DISABLE_BOOL(necko-wifi,
2454 [  --disable-necko-wifi    Disable necko wifi scanner],
2455     NECKO_WIFI=,
2456     NECKO_WIFI=1)
2458 if test "$NECKO_WIFI"; then
2459   if test -z "$MOZ_ENABLE_DBUS" -a -n "$NECKO_WIFI_DBUS"; then
2460     AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi])
2461   fi
2462   AC_DEFINE(NECKO_WIFI)
2464 AC_SUBST(NECKO_WIFI)
2465 AC_SUBST(NECKO_WIFI_DBUS)
2467 dnl ========================================================
2468 dnl =
2469 dnl = Maintainer debug option (no --enable equivalent)
2470 dnl =
2471 dnl ========================================================
2473 AC_SUBST_LIST(ASFLAGS)
2474 AC_SUBST(IMPLIB)
2475 AC_SUBST(FILTER)
2476 AC_SUBST(MOZ_AUTH_EXTENSION)
2477 AC_SUBST_LIST(MOZ_DEBUG_LDFLAGS)
2478 AC_SUBST_LIST(WARNINGS_CFLAGS)
2479 AC_SUBST_SET(MOZ_EXTENSIONS)
2481 AC_SUBST(MOZ_UNIVERSALCHARDET)
2482 AC_SUBST(MOZ_SPELLCHECK)
2483 AC_SUBST(MOZ_ANDROID_ANR_REPORTER)
2484 AC_SUBST(MOZ_CRASHREPORTER)
2485 AC_SUBST(MOZ_CRASHREPORTER_INJECTOR)
2486 AC_SUBST(MOZ_STUB_INSTALLER)
2487 AC_SUBST(MOZ_UPDATER)
2489 AC_SUBST(MOZ_ANDROID_APPLICATION_CLASS)
2490 AC_SUBST(MOZ_ANDROID_BROWSER_INTENT_CLASS)
2491 AC_SUBST(INCREMENTAL_LINKER)
2493 AC_SUBST_LIST(MOZ_FIX_LINK_PATHS)
2495 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
2496 AC_SUBST(MOZ_LINKER_EXTRACT)
2498 if test -n "$MOZ_BINARY_EXTENSIONS"; then
2499   AC_DEFINE(MOZ_BINARY_EXTENSIONS)
2502 AC_SUBST(MOZ_REQUIRE_SIGNING)
2503 if test "$MOZ_REQUIRE_SIGNING" = 1; then
2504   AC_DEFINE(MOZ_REQUIRE_SIGNING)
2507 dnl ========================================================
2508 dnl = Mac bundle name prefix
2509 dnl ========================================================
2510 MOZ_ARG_WITH_STRING(macbundlename-prefix,
2511 [  --with-macbundlename-prefix=prefix
2512                           Prefix for MOZ_MACBUNDLE_NAME],
2513 [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
2515 MOZ_MACBUNDLE_NAME=$MOZ_APP_DISPLAYNAME
2516 if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
2517   MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
2520 if test "$MOZ_DEBUG"; then
2521   MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME}Debug.app"
2522 else
2523   MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
2525 AC_SUBST(MOZ_MACBUNDLE_NAME)
2527 dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
2528 # If the MOZ_MACBUNDLE_ID is defined in the configure.sh, use it
2529 # Otherwise, use MOZ_APP_DISPLAYNAME
2530 if test -z "$MOZ_MACBUNDLE_ID"; then
2531    MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr 'A-Z' 'a-z' | tr -dc 'a-z-'`
2533 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
2534 if test "$MOZ_DEBUG"; then
2535   MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
2538 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
2539 AC_SUBST(MOZ_MACBUNDLE_ID)
2541 dnl ========================================================
2542 dnl = Child Process Name for IPC
2543 dnl ========================================================
2544 if test "$MOZ_WIDGET_TOOLKIT" != "android"; then
2545   MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}"
2546 else
2547   # We want to let Android unpack the file at install time, but it only does
2548   # so if the file is named libsomething.so. The lib/ path is also required
2549   # because the unpacked file will be under the lib/ subdirectory and will
2550   # need to be executed from that path.
2551   MOZ_CHILD_PROCESS_NAME="libplugin-container.so"
2553 MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/"
2554 MOZ_CHILD_PROCESS_BUNDLENAME="${MOZ_APP_DISPLAYNAME}CP"
2556 AC_SUBST(MOZ_CHILD_PROCESS_NAME)
2557 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE)
2558 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLENAME)
2560 # The following variables are available to branding and application
2561 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
2562 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
2563 # impacts profile location and user-visible fields.
2564 # - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
2565 # Mac Bundle name, Updater, Installer), it is typically used for nightly
2566 # builds (e.g. Aurora for Firefox).
2567 # - MOZ_APP_PROFILE: When set, used for application.ini's
2568 # "Profile" field, which controls profile location.
2569 # - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
2570 # crash reporter server url.
2571 # - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
2573 # The following environment variables used to have an effect, but don't anymore:
2574 # - MOZ_APP_VERSION: Defines the application version number. This was replaced with
2575 # the contents from the version.txt file in the application directory, or
2576 # browser/config/version.txt if there isn't one.
2577 # - MOZ_APP_VERSION_DISPLAY: Defines the application version number. Used
2578 # in the "About" window. This was replaced with the contents from the
2579 # version_display.txt or version.txt in the application directory, or
2580 # browser/config/version_display.txt.
2582 # For extensions and langpacks, we require a max version that is compatible
2583 # across security releases. MOZ_APP_MAXVERSION is our method for doing that.
2584 # 24.0a1 and 24.0a2 aren't affected
2585 # 24.0 becomes 24.*
2586 # 24.1.1 becomes 24.*
2587 IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
2588 if test -z "$IS_ALPHA"; then
2589   changequote(,)
2590   if test "$(basename $MOZ_BUILD_APP)" = "suite"; then
2591     MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\.[0-9]*\).*|\1|"`.*
2592   else
2593     MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\).*|\1|"`.*
2594   fi
2595   changequote([,])
2596 else
2597   MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
2600 AC_SUBST(MOZ_APP_DISPLAYNAME)
2601 AC_SUBST(MOZ_APP_VENDOR)
2602 AC_SUBST(MOZ_APP_PROFILE)
2603 AC_SUBST(MOZ_APP_ID)
2604 AC_SUBST(MAR_CHANNEL_ID)
2605 AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
2606 AC_SUBST(MOZ_PROFILE_MIGRATOR)
2607 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
2608 AC_SUBST(MOZ_APP_UA_NAME)
2609 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
2610 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL, $BROWSER_CHROME_URL)
2611 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL_QUOTED, "$BROWSER_CHROME_URL")
2613 AC_SUBST(MOZ_APP_MAXVERSION)
2614 AC_SUBST(MOZ_UA_OS_AGNOSTIC)
2615 if test -n "$MOZ_UA_OS_AGNOSTIC"; then
2616   AC_DEFINE(MOZ_UA_OS_AGNOSTIC)
2619 AC_SUBST(MOZ_PKG_SPECIAL)
2620 AC_SUBST(MOZ_SIMPLE_PACKAGE_NAME)
2622 if test "$MOZILLA_OFFICIAL"; then
2623     # Build revisions should always be present in official builds
2624     MOZ_INCLUDE_SOURCE_INFO=1
2627 # External builds (specifically Ubuntu) may drop the hg repo information, so we allow to
2628 # explicitly set the repository and changeset information in.
2629 AC_SUBST(MOZ_SOURCE_REPO)
2630 AC_SUBST(MOZ_SOURCE_CHANGESET)
2631 AC_SUBST(MOZ_INCLUDE_SOURCE_INFO)
2633 dnl If we have any service that uploads data (and requires data submission
2634 dnl policy alert), set MOZ_DATA_REPORTING.
2635 dnl We need SUBST for build system and DEFINE for xul preprocessor.
2636 if test -n "$MOZ_TELEMETRY_REPORTING" || test -n "$MOZ_SERVICES_HEALTHREPORT" || test -n "$MOZ_CRASHREPORTER"  || test -n "$MOZ_NORMANDY"; then
2637   MOZ_DATA_REPORTING=1
2638   AC_DEFINE(MOZ_DATA_REPORTING)
2639   AC_SUBST(MOZ_DATA_REPORTING)
2642 dnl win32 options
2643 AC_SUBST(WIN32_REDIST_DIR)
2644 AC_SUBST(WIN_UCRT_REDIST_DIR)
2646 dnl Echo the CFLAGS to remove extra whitespace.
2647 CFLAGS=`echo \
2648     $_COMPILATION_CFLAGS \
2649     $CFLAGS`
2651 CXXFLAGS=`echo \
2652     $_WARNINGS_CXXFLAGS \
2653     $_COMPILATION_CXXFLAGS \
2654     $CXXFLAGS`
2656 COMPILE_CFLAGS=`echo \
2657     $_DEFINES_CFLAGS \
2658     $COMPILE_CFLAGS`
2660 COMPILE_CXXFLAGS=`echo \
2661     $_DEFINES_CXXFLAGS \
2662     $COMPILE_CXXFLAGS`
2664 HOST_CFLAGS=`echo \
2665     $_WARNINGS_HOST_CFLAGS \
2666     $_COMPILATION_HOST_CFLAGS \
2667     $HOST_CFLAGS`
2669 HOST_CXXFLAGS=`echo \
2670     $_WARNINGS_HOST_CXXFLAGS \
2671     $_COMPILATION_HOST_CXXFLAGS \
2672     $HOST_CXXFLAGS`
2674 AC_SUBST(MOZ_SYSTEM_PNG)
2676 AC_SUBST_LIST(MOZ_PNG_CFLAGS)
2677 AC_SUBST_LIST(MOZ_PNG_LIBS)
2679 HOST_CMFLAGS="-x objective-c -fobjc-exceptions"
2680 HOST_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
2681 OS_COMPILE_CMFLAGS="-x objective-c -fobjc-exceptions"
2682 OS_COMPILE_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
2683 if test "$MOZ_WIDGET_TOOLKIT" = uikit; then
2684   OS_COMPILE_CMFLAGS="$OS_COMPILE_CMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
2685   OS_COMPILE_CMMFLAGS="$OS_COMPILE_CMMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
2687 AC_SUBST(HOST_CMFLAGS)
2688 AC_SUBST(HOST_CMMFLAGS)
2689 AC_SUBST(OS_COMPILE_CMFLAGS)
2690 AC_SUBST(OS_COMPILE_CMMFLAGS)
2692 OS_CFLAGS="$CFLAGS"
2693 OS_CXXFLAGS="$CXXFLAGS"
2694 OS_CPPFLAGS="$CPPFLAGS"
2695 OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
2696 OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
2697 OS_LDFLAGS="$LDFLAGS"
2698 OS_LIBS="$LIBS"
2699 AC_SUBST_LIST(OS_CFLAGS)
2700 AC_SUBST_LIST(OS_CXXFLAGS)
2701 AC_SUBST_LIST(OS_CPPFLAGS)
2702 AC_SUBST_LIST(OS_COMPILE_CFLAGS)
2703 AC_SUBST_LIST(OS_COMPILE_CXXFLAGS)
2704 AC_SUBST_LIST(OS_LDFLAGS)
2705 AC_SUBST(OS_LIBS)
2707 AC_SUBST(HOST_CC)
2708 AC_SUBST(HOST_CXX)
2709 AC_SUBST_LIST(HOST_CFLAGS)
2710 AC_SUBST_LIST(HOST_CPPFLAGS)
2711 AC_SUBST_LIST(HOST_CXXFLAGS)
2712 AC_SUBST(HOST_LDFLAGS)
2713 AC_SUBST_LIST(HOST_OPTIMIZE_FLAGS)
2714 AC_SUBST(HOST_BIN_SUFFIX)
2716 AC_SUBST(TARGET_XPCOM_ABI)
2717 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
2718 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1)
2719 AC_SUBST(HAVE_X86_AVX2)
2720 AC_SUBST(HAVE_ALTIVEC)
2722 AC_SUBST_LIST(DSO_CFLAGS)
2723 AC_SUBST_LIST(DSO_PIC_CFLAGS)
2724 AC_SUBST(DSO_LDOPTS)
2725 AC_SUBST(BIN_SUFFIX)
2726 AC_SUBST(USE_N32)
2727 AC_SUBST(WIN32_CONSOLE_EXE_LDFLAGS)
2728 AC_SUBST(WIN32_GUI_EXE_LDFLAGS)
2730 AC_SUBST(MOZ_DEVTOOLS)
2732 AC_SUBST(MOZ_PACKAGE_JSSHELL)
2734 AC_SUBST(DMG_TOOL)
2736 dnl Host JavaScript runtime, if any, to use during cross compiles.
2737 AC_SUBST(JS_BINARY)
2739 AC_SUBST(NSS_EXTRA_SYMBOLS_FILE)
2741 if test -n "$COMPILE_ENVIRONMENT"; then
2742 AC_CHECK_FUNCS(posix_fadvise posix_fallocate)
2744 dnl Check for missing components
2745 if test "$MOZ_X11"; then
2746     dnl ====================================================
2747     dnl = Check if X headers exist
2748     dnl ====================================================
2749     _SAVE_CFLAGS=$CFLAGS
2750     CFLAGS="$CFLAGS $XCFLAGS"
2751     AC_TRY_COMPILE([
2752         #include <stdio.h>
2753         #include <stdlib.h>
2754         #include <X11/Xlib.h>
2755         #include <X11/Intrinsic.h>
2756         #include <X11/extensions/XShm.h>
2757     ],
2758     [
2759         Display *dpy = 0;
2760         if ((dpy = XOpenDisplay(NULL)) == NULL) {
2761             fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
2762             exit(1);
2763         }
2764     ], [],
2765     [ AC_MSG_ERROR([Can't find X headers (install libxt-dev (Debian/Ubuntu), libXt-devel (Fedora), or xorg-x11-libXt-devel (SuSE)).]) ])
2766     CFLAGS="$_SAVE_CFLAGS"
2768     if test -n "$MISSING_X"; then
2769         AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
2770     fi
2772 fi # MOZ_X11
2774 fi # COMPILE_ENVIRONMENT
2776 dnl Set various defines and substitutions
2777 dnl ========================================================
2779 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK" ; then
2780     AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
2781     ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
2782     ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
2783     ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
2784     ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
2785     AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
2786     AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
2787     AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
2790 AC_SUBST(MOZ_DEV_EDITION)
2791 if test -n "$MOZ_DEV_EDITION"; then
2792     AC_DEFINE(MOZ_DEV_EDITION)
2795 if test "$MOZ_DEBUG" -o "$DEVELOPER_OPTIONS"; then
2796     A11Y_LOG=1
2798 AC_SUBST(A11Y_LOG)
2799 if test -n "$A11Y_LOG"; then
2800     AC_DEFINE(A11Y_LOG)
2803 dnl Spit out some output
2804 dnl ========================================================
2806 # Avoid using obsolete NSPR features
2807 AC_DEFINE(NO_NSPR_10_SUPPORT)
2809 MOZ_CREATE_CONFIG_STATUS()
2811 rm -fr confdefs* $ac_clean_files