Bug 1702311 [wpt PR 28319] - Windows system colors with a dark color-scheme, a=testonly
[gecko.git] / old-configure.in
bloba05ac13cd110abbb71972f8f865a50ec9e385877
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"
305     if test "$OS_ARCH" != "WINNT" -o -z "$CLANG_CC"; then
306         DSO_PIC_CFLAGS='-fPIC'
307         ASFLAGS="$ASFLAGS -fPIC"
308     fi
310     AC_MSG_CHECKING([for --noexecstack option to as])
311     _SAVE_CFLAGS=$CFLAGS
312     CFLAGS="$CFLAGS -Wa,--noexecstack"
313     AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
314                      [ASFLAGS="$ASFLAGS -Wa,--noexecstack"],
315                      AC_MSG_RESULT([no]))
316     CFLAGS=$_SAVE_CFLAGS
317     AC_MSG_CHECKING([for -z noexecstack option to ld])
318     _SAVE_LDFLAGS=$LDFLAGS
319     LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
320     AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
321                   AC_MSG_RESULT([no])
322                   LDFLAGS=$_SAVE_LDFLAGS)
324     AC_MSG_CHECKING([for -z text option to ld])
325     _SAVE_LDFLAGS=$LDFLAGS
326     LDFLAGS="$LDFLAGS -Wl,-z,text"
327     AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
328                   AC_MSG_RESULT([no])
329                   LDFLAGS=$_SAVE_LDFLAGS)
331     AC_MSG_CHECKING([for -z relro option to ld])
332     _SAVE_LDFLAGS=$LDFLAGS
333     LDFLAGS="$LDFLAGS -Wl,-z,relro"
334     AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
335                   AC_MSG_RESULT([no])
336                   LDFLAGS=$_SAVE_LDFLAGS)
338     AC_MSG_CHECKING([for -z nocopyreloc option to ld])
339     _SAVE_LDFLAGS=$LDFLAGS
340     LDFLAGS="$LDFLAGS -Wl,-z,nocopyreloc"
341     AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
342                   AC_MSG_RESULT([no])
343                   LDFLAGS=$_SAVE_LDFLAGS)
345     AC_MSG_CHECKING([for -Bsymbolic-functions option to ld])
346     _SAVE_LDFLAGS=$LDFLAGS
347     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
348     AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
349                   AC_MSG_RESULT([no])
350                   LDFLAGS=$_SAVE_LDFLAGS)
352     AC_MSG_CHECKING([for --build-id=sha1 option to ld])
353     _SAVE_LDFLAGS=$LDFLAGS
354     LDFLAGS="$LDFLAGS -Wl,--build-id=sha1"
355     AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
356                   AC_MSG_RESULT([no])
357                   LDFLAGS=$_SAVE_LDFLAGS)
359     AC_MSG_CHECKING([for --ignore-unresolved-symbol option to ld])
360     HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=
361     _SAVE_LDFLAGS=$LDFLAGS
362     LDFLAGS="$LDFLAGS -Wl,--ignore-unresolved-symbol,environ"
363     AC_TRY_LINK(,,AC_MSG_RESULT([yes])
364                   [HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=1],
365                   AC_MSG_RESULT([no]))
366     LDFLAGS=$_SAVE_LDFLAGS
368     # Check for -mssse3 on $CC
369     AC_MSG_CHECKING([if toolchain supports -mssse3 option])
370     HAVE_TOOLCHAIN_SUPPORT_MSSSE3=
371     _SAVE_CFLAGS=$CFLAGS
372     CFLAGS="$CFLAGS -mssse3"
373     AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes])
374                      [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1],
375                      AC_MSG_RESULT([no]))
376     CFLAGS=$_SAVE_CFLAGS
378     # Check for -msse4.1 on $CC
379     AC_MSG_CHECKING([if toolchain supports -msse4.1 option])
380     HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=
381     _SAVE_CFLAGS=$CFLAGS
382     CFLAGS="$CFLAGS -msse4.1"
383     AC_TRY_COMPILE([asm ("pmulld %xmm6,%xmm0");],,AC_MSG_RESULT([yes])
384                      [HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1],
385                      AC_MSG_RESULT([no]))
386     CFLAGS=$_SAVE_CFLAGS
388     case "${CPU_ARCH}" in
389     x86 | x86_64)
390       AC_MSG_CHECKING(for x86 AVX2 asm support in compiler)
391       AC_TRY_COMPILE([],
392                      [asm volatile ("vpermq      \$0xd8,%ymm0,%ymm0 \n");],
393                      result="yes", result="no")
394       AC_MSG_RESULT("$result")
395       if test "$result" = "yes"; then
396           HAVE_X86_AVX2=1
397       fi
398       ;;
400     ppc*)
401       AC_MSG_CHECKING([whether we can enable AltiVec support])
402       HAVE_ALTIVEC=
403       _SAVE_CFLAGS=$CFLAGS
404       CFLAGS="$CFLAGS -maltivec"
405       AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
406                        [HAVE_ALTIVEC=1],
407                        AC_MSG_RESULT([no]))
408       CFLAGS=$_SAVE_CFLAGS
409       ;;
410     esac
412     DSO_LDOPTS='-shared'
413     if test "$GCC_USE_GNU_LD"; then
414         # Some tools like ASan use a runtime library that is only
415         # linked against executables, so we must allow undefined
416         # symbols for shared objects in some cases.
417         if test -z "$MOZ_ASAN$MOZ_MSAN$MOZ_UBSAN$MOZ_TSAN$FUZZING_INTERFACES"; then
418             # Don't allow undefined symbols in libraries
419             DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
421             # BSDs need `environ' exposed for posix_spawn (bug 753046)
422             case "$OS_TARGET" in
423             DragonFly|FreeBSD|NetBSD|OpenBSD)
424                 if test -n "$HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED"; then
425                     DSO_LDOPTS="$DSO_LDOPTS -Wl,--ignore-unresolved-symbol,environ"
426                 else
427                     DSO_LDOPTS="$DSO_LDOPTS -Wl,--warn-unresolved-symbols"
428                 fi
429                 ;;
430             esac
431         fi
432     fi
434     _DEFINES_CFLAGS="-include $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
436     ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS"
439 if test "$GNU_CXX"; then
440     CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-strict-aliasing"
442     _DEFINES_CXXFLAGS="-DMOZILLA_CLIENT -include $_objdir/mozilla-config.h"
445 dnl ========================================================
446 dnl = Enable DMD
447 dnl ========================================================
449 if test "$MOZ_DMD"; then
450     if test "${CPU_ARCH}" = "arm"; then
451         CFLAGS="$CFLAGS -funwind-tables"
452         CXXFLAGS="$CXXFLAGS -funwind-tables"
453     fi
456 dnl ========================================================
457 dnl System overrides of the defaults for host
458 dnl ========================================================
459 case "$host" in
460 *mingw*)
461     if test -n "$_WIN32_MSVC"; then
462         HOST_CFLAGS="$HOST_CFLAGS"
463     else
464         HOST_CFLAGS="$HOST_CFLAGS -mwindows"
465     fi
466     HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN -DWIN32 -D_WIN32 -D_CRT_SECURE_NO_WARNINGS"
467     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
468     HOST_BIN_SUFFIX=.exe
470     case "${host_cpu}" in
471     i*86)
472         if test -n "$_WIN32_MSVC"; then
473             HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
474         fi
475         ;;
476     x86_64)
477         if test -n "$_WIN32_MSVC"; then
478             HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
479         fi
480         HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
481         ;;
482     esac
483     ;;
485 *-darwin*)
486     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX"
487     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
488     ;;
490 *-linux*|*-kfreebsd*-gnu|*-gnu*)
491     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
492     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
493     ;;
496     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
497     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
498     ;;
499 esac
501 dnl ========================================================
502 dnl System overrides of the defaults for target
503 dnl ========================================================
505 case "$target" in
506 *-darwin*)
507     MOZ_OPTIMIZE_FLAGS="-O3"
508     CXXFLAGS="$CXXFLAGS -stdlib=libc++"
509     DSO_LDOPTS=''
510     # The ExceptionHandling framework is needed for Objective-C exception
511     # logging code in nsObjCExceptions.h. Currently we only use that in debug
512     # builds.
513     MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling";
515     dnl DTrace and -dead_strip don't interact well. See bug 403132.
516     dnl ===================================================================
517     if test "x$enable_dtrace" = "xyes"; then
518         echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
519     else
520         dnl check for the presence of the -dead_strip linker flag
521         AC_MSG_CHECKING([for -dead_strip option to ld])
522         _SAVE_LDFLAGS=$LDFLAGS
523         LDFLAGS="$LDFLAGS -Wl,-dead_strip"
524         AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
525         if test -n "$_HAVE_DEAD_STRIP" ; then
526             AC_MSG_RESULT([yes])
527             MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
528         else
529             AC_MSG_RESULT([no])
530         fi
532         LDFLAGS=$_SAVE_LDFLAGS
533     fi
535     MOZ_FIX_LINK_PATHS="-Wl,-executable_path,${DIST}/bin"
536     ;;
538 *-android*|*-linuxandroid*)
539     if test "$COMPILE_ENVIRONMENT" -a -n "$MOZ_MEMORY"; then
540         MOZ_LINKER=1
541     fi
543     if test -z "$CLANG_CC"; then
544         MOZ_OPTIMIZE_FLAGS="-freorder-blocks -fno-reorder-functions -Os"
545     else
546         # From https://github.com/android-ndk/ndk/issues/133#issuecomment-308549264
547         # -Oz is smaller than -Os on clang.
548         MOZ_OPTIMIZE_FLAGS="-Oz"
549         # Disable the outliner, which causes performance regressions, and is
550         # enabled on some platforms at -Oz.
551         if test -z "$MOZ_LTO"; then
552             DISABLE_OUTLINER="-mno-outline"
553             _SAVE_CFLAGS=$CFLAGS
554             CFLAGS="$CFLAGS $DISABLE_OUTLINER"
555             AC_TRY_COMPILE(,,[MOZ_OPTIMIZE_FLAGS="$MOZ_OPTIMIZE_FLAGS $DISABLE_OUTLINER"])
556             CFLAGS="$_SAVE_CFLAGS"
557         else
558             DISABLE_OUTLINER="-Wl,-plugin-opt=-enable-machine-outliner=never"
559             _SAVE_LDFLAGS=$LDFLAGS
560             LDFLAGS="$LDFLAGS $MOZ_LTO_LDFLAGS $DISABLE_OUTLINER"
561             AC_TRY_LINK(,,[MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS $DISABLE_OUTLINER"])
562             LDFLAGS="$_SAVE_LDFLAGS"
563         fi
564     fi
565     ;;
567 *-*linux*)
568     if test "$GNU_CC" -o "$GNU_CXX"; then
569         MOZ_PGO_OPTIMIZE_FLAGS="-O3"
570         if test -n "$MOZ_DEBUG"; then
571             MOZ_OPTIMIZE_FLAGS="-Os"
572         else
573             MOZ_OPTIMIZE_FLAGS="-O2"
574         fi
575         if test -z "$CLANG_CC"; then
576            MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS"
577         fi
578     fi
580     case "${target_cpu}" in
581     alpha*)
582         CFLAGS="$CFLAGS -mieee"
583         CXXFLAGS="$CXXFLAGS -mieee"
584     ;;
585     esac
586     ;;
587 *-mingw*)
588     DSO_PIC_CFLAGS=
589     # certain versions of cygwin's makedepend barf on the
590     # #include <string> vs -I./dist/include/string issue so don't use it
591     if test -n "$GNU_CC" -o -n "$CLANG_CC"; then
592         # $GNU_CC will match gcc and clang; while $CLANG_CC will match only clang
593         if test -z "$CLANG_CC"; then
594             AC_MSG_ERROR(Firefox cannot be built with mingw-gcc and requires a mingw-clang toolchain to work)
595         fi
597         DSO_LDOPTS='-shared'
598         # mingw doesn't require kernel32, user32, and advapi32 explicitly
599         LIBS="$LIBS -luuid -lusp10 -lgdi32 -lwinmm -lwsock32 -luserenv -lsecur32"
600         MOZ_FIX_LINK_PATHS=
602         MOZ_OPTIMIZE_FLAGS="-O2"
604         WIN32_CONSOLE_EXE_LDFLAGS=-mconsole
605         WIN32_GUI_EXE_LDFLAGS=-mwindows
607         # Silence problematic clang warnings
608         CXXFLAGS="$CXXFLAGS -Wno-incompatible-ms-struct"
609         LDFLAGS="$LDFLAGS -Wl,--no-insert-timestamp"
610     else
611         TARGET_COMPILER_ABI=msvc
612         STRIP='echo not_strip'
613         # aarch64 doesn't support subsystems below 6.02
614         if test "$CPU_ARCH" = "aarch64"; then
615             WIN32_SUBSYSTEM_VERSION=6.02
616         else
617             WIN32_SUBSYSTEM_VERSION=6.01
618         fi
619         WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION
620         WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
621         DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
622         _DEFINES_CFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
623         _DEFINES_CXXFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
624         CFLAGS="$CFLAGS -W3 -Gy -Zc:inline"
625         CXXFLAGS="$CXXFLAGS -W3 -Gy -Zc:inline"
626         if test -z "$CLANG_CL"; then
627             CPPFLAGS="$CPPFLAGS -utf-8"
628         fi
629         if test "$CPU_ARCH" = "x86"; then
630             dnl VS2012+ defaults to -arch:SSE2. We want to target nothing
631             dnl more recent, so set that explicitly here unless another
632             dnl target arch has already been set.
633             changequote(,)
634             if test -z `echo $CFLAGS | grep -i [-/]arch:`; then
635               CFLAGS="$CFLAGS -arch:SSE2"
636             fi
637             if test -z `echo $CXXFLAGS | grep -i [-/]arch:`; then
638               CXXFLAGS="$CXXFLAGS -arch:SSE2"
639             fi
640             changequote([,])
641             SSE_FLAGS="-arch:SSE"
642             SSE2_FLAGS="-arch:SSE2"
643             dnl MSVC allows the use of intrinsics without any flags
644             dnl and doesn't have a separate arch for SSSE3
645             SSSE3_FLAGS="-arch:SSE2"
646         fi
647         dnl clang-cl requires appropriate flags to enable SSSE3 support
648         dnl on all architectures.
649         if test -n "$CLANG_CL"; then
650             SSSE3_FLAGS="-mssse3"
651         fi
652         dnl VS2013+ supports -Gw for better linker optimizations.
653         dnl http://blogs.msdn.com/b/vcblog/archive/2013/09/11/introducing-gw-compiler-switch.aspx
654         dnl Disabled on ASan because it causes false-positive ODR violations.
655         if test -z "$MOZ_ASAN"; then
656             CFLAGS="$CFLAGS -Gw"
657             CXXFLAGS="$CXXFLAGS -Gw"
658         else
659             # String tail merging doesn't play nice with ASan's ODR checker.
660             LDFLAGS="$LDFLAGS -opt:nolldtailmerge"
661         fi
662         if test -n "$CLANG_CL"; then
663             # XXX We should combine some of these with our generic GCC-style
664             # warning checks.
665             #
666             # Suppress the clang-cl warning for the inline 'new' and 'delete' in mozalloc
667             CXXFLAGS="$CXXFLAGS -Wno-inline-new-delete"
668             # We use offsetof on non-POD objects all the time.
669             # We also suppress this warning on other platforms.
670             CXXFLAGS="$CXXFLAGS -Wno-invalid-offsetof"
671             # This warns for reasonable things like:
672             #   enum { X = 0xffffffffU };
673             # which is annoying for IDL headers.
674             CXXFLAGS="$CXXFLAGS -Wno-microsoft-enum-value"
675             # This warns for cases that would be reached by the Microsoft
676             # #include rules, but also currently warns on cases that would
677             # *also* be reached by standard C++ include rules.  That
678             # behavior doesn't seem useful, so we turn it off.
679             CXXFLAGS="$CXXFLAGS -Wno-microsoft-include"
680             # We normally error out on unknown pragmas, but since clang-cl
681             # claims to be MSVC, it would be difficult to add
682             # #if defined(_MSC_VER) && !defined(__clang__) everywhere we
683             # use such pragmas, so just ignore them.
684             CFLAGS="$CFLAGS -Wno-unknown-pragmas"
685             CXXFLAGS="$CXXFLAGS -Wno-unknown-pragmas"
686             # We get errors about various #pragma intrinsic directives from
687             # clang-cl, and we don't need to hear about those.
688             CFLAGS="$CFLAGS -Wno-ignored-pragmas"
689             CXXFLAGS="$CXXFLAGS -Wno-ignored-pragmas"
690             # clang-cl's Intrin.h marks things like _ReadWriteBarrier
691             # as __attribute((__deprecated__)).  This is nice to know,
692             # but since we don't get the equivalent warning from MSVC,
693             # let's just ignore it.
694             CFLAGS="$CFLAGS -Wno-deprecated-declarations"
695             CXXFLAGS="$CXXFLAGS -Wno-deprecated-declarations"
696             # We use a function like:
697             #   __declspec(noreturn) __inline void f() {}
698             # which -Winvalid-noreturn complains about.  Again, MSVC seems
699             # OK with it, so let's silence the warning.
700             CFLAGS="$CFLAGS -Wno-invalid-noreturn"
701             CXXFLAGS="$CXXFLAGS -Wno-invalid-noreturn"
702             # Missing |override| on virtual function declarations isn't
703             # something that MSVC currently warns about.
704             CXXFLAGS="$CXXFLAGS -Wno-inconsistent-missing-override"
705             # We use -DHAS_EXCEPTIONS=0, which removes the |throw()|
706             # declaration on |operator delete(void*)|.  However, clang-cl
707             # must internally declare |operator delete(void*)| differently,
708             # which causes this warning for virtually every file in the
709             # tree.  clang-cl doesn't support -fno-exceptions or equivalent,
710             # so there doesn't seem to be any way to convince clang-cl to
711             # declare |delete| differently.  Therefore, suppress this
712             # warning.
713             CXXFLAGS="$CXXFLAGS -Wno-implicit-exception-spec-mismatch"
714             # Macros like STDMETHOD() and IFACEMETHOD() can declare
715             # __attribute__((nothrow)) on their respective method declarations,
716             # while the definitions are left without the matching attribute.
717             CXXFLAGS="$CXXFLAGS -Wno-microsoft-exception-spec"
718             # At least one MSVC header and several headers in-tree have
719             # unused typedefs, so turn this on.
720             CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"
721             # jemalloc uses __declspec(allocator) as a profiler hint,
722             # which clang-cl doesn't understand.
723             CXXFLAGS="$CXXFLAGS -Wno-ignored-attributes"
724             # __attribute__((unused)) really means "might be unused" and
725             # we use it to avoid warnings about things that are unused
726             # in some compilation units, but used in many others.  This
727             # warning insists on complaining about the latter case, which
728             # is annoying, and rather noisy.
729             CXXFLAGS="$CXXFLAGS -Wno-used-but-marked-unused"
730         fi
731         # Silence VS2017 15.5+ TR1 deprecation warnings hit by older gtest versions
732         CXXFLAGS="$CXXFLAGS -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING"
733         LIBS="$LIBS user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib"
734         MOZ_DEBUG_LDFLAGS='-DEBUG'
735         if test "$HOST_OS_ARCH" != "WINNT"; then
736           # %_PDB% is a special signal to emit only the PDB basename. This
737           # avoids problems in Windows tools that don't like forward-slashes.
738           MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -PDBALTPATH:%_PDB%"
739         fi
740         # Use a higher optimization level for clang-cl, so we can come closer
741         # to MSVC's performance numbers (see bug 1443590).
742         if test -n "$CLANG_CL"; then
743             MOZ_OPTIMIZE_FLAGS='-O2'
744         else
745             MOZ_OPTIMIZE_FLAGS='-O1 -Oi'
746         fi
747         MOZ_FIX_LINK_PATHS=
748         LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE"
749         if test -z "$DEVELOPER_OPTIONS"; then
750             LDFLAGS="$LDFLAGS -RELEASE"
751         fi
752         dnl Minimum reqiurement of Gecko is VS2015 or later which supports
753         dnl both SSSE3 and SSE4.1.
754         HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1
755         HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1
756         dnl allow AVX2 code from VS2015
757         HAVE_X86_AVX2=1
758     fi
759     AC_DEFINE(WIN32_LEAN_AND_MEAN)
760     dnl See http://support.microsoft.com/kb/143208 to use STL
761     AC_DEFINE(NOMINMAX)
762     BIN_SUFFIX='.exe'
763     MOZ_USER_DIR="Mozilla"
765     case "$host_os" in
766     cygwin*|msvc*|mks*)
767         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.])
768         ;;
769     esac
771     case "$target" in
772     i*86-*)
773         if test -n "$GNU_CC"; then
774             CFLAGS="$CFLAGS -mstackrealign"
775             CXXFLAGS="$CXXFLAGS -mstackrealign"
776             LDFLAGS="$LDFLAGS -Wl,--large-address-aware"
777         else
778             DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
779             LDFLAGS="$LDFLAGS -SAFESEH"
780         fi
782         AC_DEFINE(_X86_)
783         ;;
784     x86_64-*)
785         if test -n "$_WIN32_MSVC"; then
786             DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
787         fi
788         AC_DEFINE(_AMD64_)
789         ;;
790     aarch64-*)
791         if test -n "$_WIN32_MSVC"; then
792             DSO_LDOPTS="$DSO_LDOPTS -MACHINE:ARM64"
793         fi
794         AC_DEFINE(_ARM64_)
795         ;;
796     *)
797         AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
798         ;;
799     esac
800     ;;
802 *-netbsd*)
803     CFLAGS="$CFLAGS -Dunix"
804     CXXFLAGS="$CXXFLAGS -Dunix"
805     if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
806         DSO_PIC_CFLAGS='-fPIC -DPIC'
807         DSO_LDOPTS='-shared'
808         MOZ_PROGRAM_LDFLAGS="$MOZ_PROGRAM_LDFLAGS -Wl,--export-dynamic"
809     else
810         DSO_PIC_CFLAGS='-fPIC -DPIC'
811         DSO_LDOPTS='-shared'
812     fi
813     # This will fail on a.out systems prior to 1.5.1_ALPHA.
814     if test "$LIBRUNPATH"; then
815         DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
816     fi
817     ;;
819 *-openbsd*)
820     if test -z "$X11BASE"; then
821         X11BASE=/usr/X11R6
822     fi
823     MOZ_FIX_LINK_PATHS="$MOZ_FIX_LINK_PATHS -Wl,-rpath-link,${X11BASE}/lib"
824     DSO_PIC_CFLAGS='-fPIC'
825     DSO_LDOPTS='-shared -fPIC'
826     if test "$LIBRUNPATH"; then
827         DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
828     fi
829     ;;
831 *-solaris*)
832     MOZ_FIX_LINK_PATHS="-L${DIST}/bin"
833     ;;
835 esac
837 CFLAGS="$CFLAGS $DSO_PIC_CFLAGS"
838 CXXFLAGS="$CXXFLAGS $DSO_PIC_CFLAGS"
840 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
841     MOZ_OPTIMIZE_FLAGS="-O"
844 AC_SUBST_LIST(MMX_FLAGS)
845 AC_SUBST_LIST(SSE_FLAGS)
846 AC_SUBST_LIST(SSE2_FLAGS)
847 AC_SUBST_LIST(SSSE3_FLAGS)
849 AC_SUBST(MOZ_LINKER)
850 if test -n "$MOZ_LINKER"; then
851   AC_DEFINE(MOZ_LINKER)
852   MOZ_LINKER_EXTRACT=1
853   AC_CHECK_PROGS(XZ, xz)
856 if test -z "$COMPILE_ENVIRONMENT"; then
857     SKIP_COMPILER_CHECKS=1
858     SKIP_LIBRARY_CHECKS=1
859     MOZ_DEBUGGING_OPTS
860 else
861     MOZ_COMPILER_OPTS
862 fi # COMPILE_ENVIRONMENT
864 if test -z "$SKIP_COMPILER_CHECKS"; then
865 dnl Checks for typedefs, structures, and compiler characteristics.
866 dnl ========================================================
867 AC_C_CONST
868 AC_TYPE_MODE_T
869 AC_TYPE_OFF_T
870 AC_TYPE_PID_T
871 AC_TYPE_SIZE_T
872 AC_LANG_CPLUSPLUS
873 AC_LANG_C
875 AC_LANG_CPLUSPLUS
877 MOZ_CXX11
879 AC_LANG_C
881 case "${OS_TARGET}" in
882 Darwin)
883   ;;
885   STL_FLAGS="-I${DIST}/stl_wrappers"
886   WRAP_STL_INCLUDES=1
887   ;;
888 esac
890 if test "$MOZ_BUILD_APP" = "tools/crashreporter"; then
891     WRAP_STL_INCLUDES=
894 dnl Checks for header files.
895 dnl ========================================================
896 AC_HEADER_DIRENT
897 case "$target_os" in
898 bitrig*|dragonfly*|freebsd*|openbsd*)
899 # for stuff like -lXshm
900     CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
901     ;;
902 esac
904 dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
905 AC_CACHE_CHECK(for sockaddr_in.sin_len,
906                    ac_cv_sockaddr_in_sin_len,
907                    [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
908                                     #include <sys/types.h>
909                                     #endif
910                                     #include <netinet/in.h>
911                                     struct sockaddr_in x;
912                                     void *foo = (void*) &x.sin_len;],
913                                    [],
914                                    [ac_cv_sockaddr_in_sin_len=true],
915                                    [ac_cv_sockaddr_in_sin_len=false])])
916 if test "$ac_cv_sockaddr_in_sin_len" = true ; then
917   AC_DEFINE(HAVE_SIN_LEN)
918 dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
919   AC_DEFINE(HAVE_SCONN_LEN)
922 AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
923                ac_cv_sockaddr_in6_sin6_len,
924                [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
925                                 #include <sys/types.h>
926                                 #endif
927                                 #include <netinet/in.h>
928                                 struct sockaddr_in6 x;
929                                 void *foo = (void*) &x.sin6_len;],
930                                [],
931                                [ac_cv_sockaddr_in6_sin6_len=true],
932                                [ac_cv_sockaddr_in6_sin6_len=false])])
933 if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
934   AC_DEFINE(HAVE_SIN6_LEN)
937 AC_CACHE_CHECK(for sockaddr.sa_len,
938                ac_cv_sockaddr_sa_len,
939                [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
940                                 #include <sys/types.h>
941                                 #endif
942                                 #include <sys/socket.h>
943                                 struct sockaddr x;
944                                 void *foo = (void*) &x.sa_len;],
945                                [],
946                                [ac_cv_sockaddr_sa_len=true],
947                                [ac_cv_sockaddr_sa_len=false])])
948 if test "$ac_cv_sockaddr_sa_len" = true ; then
949   AC_DEFINE(HAVE_SA_LEN)
952 dnl Checks for libraries.
953 dnl ========================================================
954 AC_CHECK_LIB(c_r, gethostbyname_r)
956 dnl We don't want to link with libdl even if it's present on OS X, since
957 dnl it's not used and not part of the default installation. OS/2 has dlfcn
958 dnl in libc.
959 dnl We don't want to link against libm or libpthread on Darwin since
960 dnl they both are just symlinks to libSystem and explicitly linking
961 dnl against libSystem causes issues when debugging (see bug 299601).
962 case $target in
963 *-darwin*)
964     ;;
966     AC_SEARCH_LIBS(dlopen, dl,
967         MOZ_CHECK_HEADER(dlfcn.h,
968         AC_DEFINE(HAVE_DLOPEN)))
969     ;;
970 esac
972 _SAVE_CFLAGS="$CFLAGS"
973 CFLAGS="$CFLAGS -D_GNU_SOURCE"
974 AC_CHECK_FUNCS(dladdr memmem)
975 CFLAGS="$_SAVE_CFLAGS"
977 if test ! "$GNU_CXX"; then
978     AC_CHECK_LIB(C, demangle)
981 AC_CHECK_LIB(socket, socket)
983 XLDFLAGS="$X_LIBS"
984 XLIBS="$X_EXTRA_LIBS"
986 dnl ========================================================
987 dnl Checks for X libraries.
988 dnl Ordering is important.
989 dnl Xt is dependent upon SM as of X11R6
990 dnl ========================================================
991 if test -n "$MOZ_X11"; then
992     AC_DEFINE_UNQUOTED(FUNCPROTO,15)
993     _SAVE_LDFLAGS="$LDFLAGS"
994     _SAVE_LIBS="$LIBS"
995     LDFLAGS="$XLDFLAGS $LDFLAGS"
996     AC_CHECK_LIB(X11, XDrawLines, [XLIBS="-lX11 $XLIBS"],
997         [MISSING_X="$MISSING_X -lX11"], $XLIBS)
998     AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
999         [MISSING_X="$MISSING_X -lXext"], $XLIBS)
1001     AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
1002         unset ac_cv_lib_Xt_XtFree
1003         AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
1004         AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
1005         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
1006             [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
1007         ])
1009     dnl ========================================================
1010     dnl = Check for xcb
1011     dnl ========================================================
1012     AC_CHECK_LIB(xcb, xcb_connect, [XLIBS="-lxcb $XLIBS"],
1013         [MISSING_X="$MISSING_X -lxcb"], $XLIBS)
1014     AC_CHECK_LIB(xcb-shm, xcb_shm_query_version, [XLIBS="-lxcb-shm $XLIBS"],
1015         [MISSING_X="$MISSING_X -lxcb-shm"], $XLIBS)
1016     AC_CHECK_LIB(X11-xcb, XGetXCBConnection, [XLIBS="-lX11-xcb $XLIBS"],
1017         [MISSING_X="$MISSING_X -lX11-xcb"], $XLIBS)
1019     LDFLAGS="$_SAVE_LDFLAGS"
1020     LIBS="$_SAVE_LIBS"
1021 fi # $MOZ_X11
1023 AC_SUBST_LIST(XCFLAGS)
1024 AC_SUBST_LIST(XLDFLAGS)
1025 AC_SUBST_LIST(XLIBS)
1026 AC_SUBST_LIST(XEXT_LIBS)
1027 AC_SUBST_LIST(XT_LIBS)
1029 dnl ========================================================
1030 dnl = pthread support
1031 dnl = Start by checking whether the system support pthreads
1032 dnl ========================================================
1033 case "$target_os" in
1034 darwin*)
1035     MOZ_USE_PTHREADS=1
1036     ;;
1038     AC_CHECK_LIB(pthreads, pthread_create,
1039         MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
1040         AC_CHECK_LIB(pthread, pthread_create,
1041             MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
1042             AC_CHECK_LIB(c_r, pthread_create,
1043                 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
1044                 AC_CHECK_LIB(c, pthread_create,
1045                     MOZ_USE_PTHREADS=1
1046                 )
1047             )
1048         )
1049     )
1050     ;;
1051 esac
1053 dnl ========================================================
1054 dnl Do the platform specific pthread hackery
1055 dnl ========================================================
1056 if test "$MOZ_USE_PTHREADS"x != x
1057 then
1058     dnl
1059     dnl See if -pthread is supported.
1060     dnl
1061     rm -f conftest*
1062     ac_cv_have_dash_pthread=no
1063     AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
1064     echo 'int main() { return 0; }' | cat > conftest.c
1065     ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
1066     if test $? -eq 0; then
1067         if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
1068             ac_cv_have_dash_pthread=yes
1069             case "$target_os" in
1070             freebsd*)
1071 # Freebsd doesn't use -pthread for compiles, it uses them for linking
1072                 ;;
1073             *)
1074                 CFLAGS="$CFLAGS -pthread"
1075                 CXXFLAGS="$CXXFLAGS -pthread"
1076                 ;;
1077             esac
1078         fi
1079     fi
1080     rm -f conftest*
1081     AC_MSG_RESULT($ac_cv_have_dash_pthread)
1083     dnl
1084     dnl See if -pthreads is supported.
1085     dnl
1086     ac_cv_have_dash_pthreads=no
1087     if test "$ac_cv_have_dash_pthread" = "no"; then
1088         AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
1089         echo 'int main() { return 0; }' | cat > conftest.c
1090         ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
1091         if test $? -eq 0; then
1092             if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
1093                 ac_cv_have_dash_pthreads=yes
1094                 CFLAGS="$CFLAGS -pthreads"
1095                 CXXFLAGS="$CXXFLAGS -pthreads"
1096             fi
1097         fi
1098         rm -f conftest*
1099         AC_MSG_RESULT($ac_cv_have_dash_pthreads)
1100     fi
1102     case "$target" in
1103         *-*-freebsd*)
1104             AC_DEFINE(_REENTRANT)
1105             AC_DEFINE(_THREAD_SAFE)
1106             dnl -pthread links in -lpthread, so don't specify it explicitly.
1107             if test "$ac_cv_have_dash_pthread" = "yes"; then
1108                 _PTHREAD_LDFLAGS="-pthread"
1109             fi
1110             ;;
1112         *-*-openbsd*|*-*-bsdi*)
1113             AC_DEFINE(_REENTRANT)
1114             AC_DEFINE(_THREAD_SAFE)
1115             dnl -pthread links in -lc_r, so don't specify it explicitly.
1116             if test "$ac_cv_have_dash_pthread" = "yes"; then
1117                 _PTHREAD_LDFLAGS="-pthread"
1118             fi
1119             ;;
1121         *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
1122             AC_DEFINE(_REENTRANT)
1123             ;;
1125     esac
1126     LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
1127     AC_SUBST(MOZ_USE_PTHREADS)
1128     MOZ_CHECK_HEADERS(pthread.h)
1132 dnl Checks for library functions.
1133 dnl ========================================================
1134 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)
1136 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
1137 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
1138                ac_cv_clock_monotonic,
1139                [for libs in "" -lrt; do
1140                     _SAVE_LIBS="$LIBS"
1141                     LIBS="$LIBS $libs"
1142 dnl clock_gettime is available on OSX since 10.12, so depending on MACOSX_DEPLOYMENT_TARGET,
1143 dnl we should or not be able to use it. To detect if we can, we need to make the
1144 dnl availability attribute strict, so that compilation fails when the target is < 10.12.
1145                     AC_TRY_LINK([#define availability(os, ...) availability(os, strict, __VA_ARGS)
1146                                  #include <time.h>],
1147                                  [ struct timespec ts;
1148                                    clock_gettime(CLOCK_MONOTONIC, &ts); ],
1149                                  ac_cv_clock_monotonic=$libs
1150                                  LIBS="$_SAVE_LIBS"
1151                                  break,
1152                                  ac_cv_clock_monotonic=no)
1153                     LIBS="$_SAVE_LIBS"
1154                 done])
1155 if test "$ac_cv_clock_monotonic" != "no"; then
1156     HAVE_CLOCK_MONOTONIC=1
1157     REALTIME_LIBS=$ac_cv_clock_monotonic
1158     AC_DEFINE(HAVE_CLOCK_MONOTONIC)
1159     AC_SUBST(HAVE_CLOCK_MONOTONIC)
1160     AC_SUBST_LIST(REALTIME_LIBS)
1163 dnl Turn on warnings-as-errors to prevent implicit declaration of
1164 dnl pthread_cond_timedwait_monotonic_np, which can cause this test to
1165 dnl inadvertently pass even if the function does not really exist.
1166 _SAVE_CFLAGS="$CFLAGS"
1167 CFLAGS="$CFLAGS $WARNINGS_AS_ERRORS"
1168 AC_CACHE_CHECK(for pthread_cond_timedwait_monotonic_np,
1169                ac_cv_pthread_cond_timedwait_monotonic_np,
1170                AC_TRY_LINK([#include <pthread.h>],
1171                            [pthread_cond_timedwait_monotonic_np(0, 0, 0);],
1172                            ac_cv_pthread_cond_timewait_monotonic_np=yes,
1173                            ac_cv_pthread_cond_timewait_monotonic_np=no))
1174 if test "$ac_cv_pthread_cond_timewait_monotonic_np" != "no"; then
1175     AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC)
1177 CFLAGS=$_SAVE_CFLAGS
1179 AC_CACHE_CHECK(
1180     [for res_ninit()],
1181     ac_cv_func_res_ninit,
1182     [if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then
1183         dnl no need for res_ninit() on NetBSD and OpenBSD
1184         ac_cv_func_res_ninit=no
1185      else
1186         AC_TRY_LINK([
1187             #ifdef linux
1188             #define _BSD_SOURCE 1
1189             #endif
1190             #include <sys/types.h>
1191             #include <netinet/in.h>
1192             #include <arpa/nameser.h>
1193             #include <resolv.h>
1194             ],
1195             [int foo = res_ninit(&_res);],
1196             [ac_cv_func_res_ninit=yes],
1197             [ac_cv_func_res_ninit=no])
1198      fi
1199     ])
1201 if test "$ac_cv_func_res_ninit" = "yes"; then
1202     AC_DEFINE(HAVE_RES_NINIT)
1203 dnl must add the link line we do something as foolish as this... dougt
1204 dnl else
1205 dnl    AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
1206 dnl        AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
1209 AC_LANG_C
1211 dnl **********************
1212 dnl *** va_copy checks ***
1213 AC_CACHE_CHECK([for an implementation of va_copy()],
1214                ac_cv_va_copy,
1215     [AC_TRY_COMPILE([#include <stdarg.h>
1216                      #include <stdlib.h>
1217         void f (int i, ...) {
1218             va_list args1, args2;
1219             va_start (args1, i);
1220             va_copy (args2, args1);
1221             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1222                 exit (1);
1223             va_end (args1); va_end (args2);
1224         }],
1225         [f(0, 42); return 0],
1226         [ac_cv_va_copy=yes],
1227         [ac_cv_va_copy=no]
1228     )]
1230 AC_CACHE_CHECK([whether va_list can be copied by value],
1231                ac_cv_va_val_copy,
1232     [AC_TRY_COMPILE([#include <stdarg.h>
1233                      #include <stdlib.h>
1234         void f (int i, ...) {
1235             va_list args1, args2;
1236             va_start (args1, i);
1237             args2 = args1;
1238             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1239                 exit (1);
1240             va_end (args1); va_end (args2);
1241         }],
1242         [f(0, 42); return 0],
1243         [ac_cv_va_val_copy=yes],
1244         [ac_cv_va_val_copy=no],
1245     )]
1247 if test "x$ac_cv_va_copy" = "xyes"; then
1248     AC_DEFINE(VA_COPY, va_copy)
1249     AC_DEFINE(HAVE_VA_COPY)
1252 if test "x$ac_cv_va_val_copy" = "xno"; then
1253    AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
1256 dnl ===================================================================
1257 dnl ========================================================
1258 dnl Put your C++ language/feature checks below
1259 dnl ========================================================
1260 AC_LANG_CPLUSPLUS
1262 ARM_ABI_PREFIX=
1263 if test "$GNU_CC"; then
1264   if test "$CPU_ARCH" = "arm" ; then
1265     AC_CACHE_CHECK(for ARM EABI,
1266         ac_cv_gcc_arm_eabi,
1267         [AC_TRY_COMPILE([],
1268                         [
1269 #if defined(__ARM_EABI__)
1270   return 0;
1271 #else
1272 #error Not ARM EABI.
1273 #endif
1274                         ],
1275                         ac_cv_gcc_arm_eabi="yes",
1276                         ac_cv_gcc_arm_eabi="no")])
1277     if test "$ac_cv_gcc_arm_eabi" = "yes"; then
1278         HAVE_ARM_EABI=1
1279         ARM_ABI_PREFIX=eabi-
1280     else
1281         ARM_ABI_PREFIX=oabi-
1282     fi
1283   fi
1285   TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
1288 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
1289 # We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
1290 # enabled, the linker in xcode 4.1 will crash. Without this it would crash when
1291 # linking XUL.
1292 _SAVE_LDFLAGS=$LDFLAGS
1293 LDFLAGS="$LDFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
1294 AC_CACHE_CHECK(for __thread keyword for TLS variables,
1295                ac_cv_thread_keyword,
1296                [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
1297                             [return tlsIsMainThread;],
1298                             ac_cv_thread_keyword=yes,
1299                             ac_cv_thread_keyword=no)])
1300 LDFLAGS=$_SAVE_LDFLAGS
1301 # The custom dynamic linker doesn't support TLS variables
1302 MOZ_TLS=
1303 if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
1304   # mips builds fail with TLS variables because of a binutils bug.
1305   # See bug 528687
1306   # OpenBSD doesn't have TLS support, and the test succeeds with clang++
1307   case "${target}" in
1308     mips*-*)
1309       :
1310       ;;
1311     *-android*|*-linuxandroid*)
1312       :
1313       ;;
1314     *-openbsd*)
1315       :
1316       ;;
1317     *)
1318       AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
1319       MOZ_TLS=1
1320       ;;
1321   esac
1324 dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments.
1325 if test -n "$MOZ_LINKER"; then
1326   if test "$CPU_ARCH" = arm; then
1327     dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments
1328     if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
1329       LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
1330       _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
1331     fi
1332   fi
1334 dnl gold emits wrong sysv-style elf hash tables when building both sysv and
1335 dnl style tables. https://sourceware.org/bugzilla/show_bug.cgi?id=13597
1336 dnl Since the linker only understands the sysv ones, no need to build the
1337 dnl gnu style tables anyways.
1338   LDFLAGS="$LDFLAGS -Wl,--hash-style=sysv"
1341 dnl End of C++ language/feature checks
1342 AC_LANG_C
1344 dnl ========================================================
1345 dnl =  Internationalization checks
1346 dnl ========================================================
1348 dnl Internationalization and Locale support is different
1349 dnl on various UNIX platforms.  Checks for specific i18n
1350 dnl features go here.
1352 AC_HAVE_FUNCS(localeconv)
1354 fi # ! SKIP_COMPILER_CHECKS
1356 if test -n "${COMPILE_ENVIRONMENT}"; then
1357   MOZ_CHECK_ALLOCATOR
1360 TARGET_XPCOM_ABI=
1361 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
1362     TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
1363     AC_DEFINE_UNQUOTED(TARGET_XPCOM_ABI, ["${TARGET_XPCOM_ABI}"])
1366 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
1367 dnl features that Windows actually does support.
1369 if test -n "$SKIP_COMPILER_CHECKS"; then
1370    dnl Windows has malloc.h
1371    AC_DEFINE(MALLOC_H, [<malloc.h>])
1372    AC_DEFINE(HAVE_FORCEINLINE)
1373    AC_DEFINE(HAVE_LOCALECONV)
1374 fi # SKIP_COMPILER_CHECKS
1376 dnl Mozilla specific options
1377 dnl ========================================================
1378 dnl The macros used for command line options
1379 dnl are defined in build/autoconf/altoptions.m4.
1381 dnl ========================================================
1382 dnl =
1383 dnl = Check for external package dependencies
1384 dnl =
1385 dnl ========================================================
1386 MOZ_ARG_HEADER(External Packages)
1388 dnl ========================================================
1389 dnl system libevent Support
1390 dnl ========================================================
1391 MOZ_ARG_WITH_STRING(system-libevent,
1392 [  --with-system-libevent[=PFX]
1393                           Use system libevent [installed at prefix PFX]],
1394     LIBEVENT_DIR=$withval)
1396 _SAVE_CFLAGS=$CFLAGS
1397 _SAVE_LDFLAGS=$LDFLAGS
1398 _SAVE_LIBS=$LIBS
1399 if test "$LIBEVENT_DIR" = yes; then
1400     PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
1401         MOZ_SYSTEM_LIBEVENT=1,
1402         LIBEVENT_DIR=/usr)
1404 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
1405     MOZ_SYSTEM_LIBEVENT=
1406 elif test -z "$MOZ_SYSTEM_LIBEVENT"; then
1407     CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
1408     LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
1409     MOZ_CHECK_HEADER(event.h,
1410         [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
1411              AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
1412          fi],
1413         AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
1414     AC_CHECK_LIB(event, event_init,
1415                  [MOZ_SYSTEM_LIBEVENT=1
1416                   MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
1417                   MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
1418                  [MOZ_SYSTEM_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
1420 CFLAGS=$_SAVE_CFLAGS
1421 LDFLAGS=$_SAVE_LDFLAGS
1422 LIBS=$_SAVE_LIBS
1424 AC_SUBST(MOZ_SYSTEM_LIBEVENT)
1426 if test -z "$SKIP_LIBRARY_CHECKS"; then
1428 dnl ========================================================
1429 dnl system PNG Support
1430 dnl ========================================================
1431 MOZ_ARG_WITH_STRING(system-png,
1432 [  --with-system-png[=PFX]
1433                           Use system libpng [installed at prefix PFX]],
1434     PNG_DIR=$withval)
1436 _SAVE_CFLAGS=$CFLAGS
1437 _SAVE_LDFLAGS=$LDFLAGS
1438 _SAVE_LIBS=$LIBS
1439 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
1440     CFLAGS="-I${PNG_DIR}/include $CFLAGS"
1441     LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
1443 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
1444     MOZ_SYSTEM_PNG=
1445 else
1446     AC_CHECK_LIB(png, png_get_valid, [MOZ_SYSTEM_PNG=1 MOZ_PNG_LIBS="-lpng"],
1447                  AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
1448     AC_CHECK_LIB(png, png_get_acTL, ,
1449                  AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]))
1451 if test "$MOZ_SYSTEM_PNG" = 1; then
1452     AC_TRY_COMPILE([ #include <stdio.h>
1453                      #include <sys/types.h>
1454                      #include <png.h> ],
1455                    [ #if PNG_LIBPNG_VER < $MOZPNG
1456                      #error "Insufficient libpng version ($MOZPNG required)."
1457                      #endif
1458                      #ifndef PNG_UINT_31_MAX
1459                      #error "Insufficient libpng version."
1460                      #endif ],
1461                    MOZ_SYSTEM_PNG=1,
1462                    AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
1464 CFLAGS=$_SAVE_CFLAGS
1465 LDFLAGS=$_SAVE_LDFLAGS
1466 LIBS=$_SAVE_LIBS
1468 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_SYSTEM_PNG" = 1; then
1469     MOZ_PNG_CFLAGS="-I${PNG_DIR}/include"
1470     MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}"
1473 fi # SKIP_LIBRARY_CHECKS
1475 dnl ========================================================
1476 dnl =
1477 dnl = Application
1478 dnl =
1479 dnl ========================================================
1481 MOZ_ARG_HEADER(Application)
1483 ENABLE_SYSTEM_EXTENSION_DIRS=1
1484 MOZ_BRANDING_DIRECTORY=
1485 MOZ_OFFICIAL_BRANDING=
1486 MOZ_AUTH_EXTENSION=1
1487 MOZ_SPELLCHECK=1
1488 MOZ_UNIVERSALCHARDET=1
1489 MOZ_XUL=1
1490 MOZ_ZIPWRITER=1
1491 MOZ_NO_SMART_CARDS=
1492 MOZ_SANDBOX=1
1493 MOZ_BINARY_EXTENSIONS=
1494 MOZ_DEVTOOLS=server
1496 dnl ========================================================
1497 dnl = Trademarked Branding
1498 dnl ========================================================
1499 MOZ_ARG_ENABLE_BOOL(official-branding,
1500 [  --enable-official-branding
1501                           Enable Official mozilla.org Branding
1502                           Do not distribute builds with
1503                           --enable-official-branding unless you have
1504                           permission to use trademarks per
1505                           http://www.mozilla.org/foundation/trademarks/ .],
1506     MOZ_OFFICIAL_BRANDING=1,
1507     MOZ_OFFICIAL_BRANDING=)
1509 # Allow the application to influence configure with a confvars.sh script.
1510 AC_MSG_CHECKING([if app-specific confvars.sh exists])
1511 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
1512   AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
1513   . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
1514 else
1515   AC_MSG_RESULT([no])
1518 dnl ========================================================
1519 dnl Ensure Android SDK and build-tools versions depending on
1520 dnl mobile target.
1521 dnl ========================================================
1523 case "$MOZ_BUILD_APP" in
1524 mobile/android)
1525     MOZ_ANDROID_SDK
1526     ;;
1527 esac
1529 dnl ========================================================
1530 dnl =
1531 dnl = Toolkit Options
1532 dnl =
1533 dnl ========================================================
1534 MOZ_ARG_HEADER(Toolkit Options)
1536 dnl ========================================================
1537 dnl = Enable the toolkit as needed                         =
1538 dnl ========================================================
1540 case "$MOZ_WIDGET_TOOLKIT" in
1542 cocoa)
1543     LDFLAGS="$LDFLAGS -framework Cocoa"
1544     # Use -Wl as a trick to avoid -framework and framework names from
1545     # being separated by AC_SUBST_LIST.
1546     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'
1547     TK_CFLAGS=""
1548     CFLAGS="$CFLAGS $TK_CFLAGS"
1549     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
1550     MOZ_USER_DIR="Mozilla"
1551     MOZ_FS_LAYOUT=bundle
1552     ;;
1554 uikit)
1555     LDFLAGS="$LDFLAGS -framework UIKit"
1556     TK_CFLAGS=""
1557     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'
1558     CFLAGS="$CFLAGS $TK_CFLAGS"
1559     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
1560     MOZ_USER_DIR="Mozilla"
1561     MOZ_FS_LAYOUT=bundle
1562     ;;
1564 esac
1566 if test "$OS_TARGET" = Darwin; then
1567     LDFLAGS="$LDFLAGS -lobjc"
1570 dnl there are a lot of tests on MOZ_ENABLE_GTK below, that are more convenient
1571 dnl to keep that way than testing against MOZ_WIDGET_TOOLKIT
1572 case "$MOZ_WIDGET_TOOLKIT" in
1573 gtk*)
1574     MOZ_ENABLE_GTK=1
1575     ;;
1576 esac
1578 if test "$COMPILE_ENVIRONMENT"; then
1579   if test "$MOZ_WIDGET_TOOLKIT" = gtk; then
1580     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)
1581     MOZ_GTK3_CFLAGS="-I${_topsrcdir}/widget/gtk/compat-gtk3 $MOZ_GTK3_CFLAGS"
1582     TK_CFLAGS=$MOZ_GTK3_CFLAGS
1583     TK_LIBS=$MOZ_GTK3_LIBS
1584     dnl GDK_VERSION_MIN_REQUIRED is not set here as GDK3 deprecated warnings
1585     dnl are suppressed by widget/gtk/compat-gtk3/gdk/gdkversionmacros.h.
1586     AC_DEFINE_UNQUOTED(GDK_VERSION_MAX_ALLOWED,$GDK_VERSION_MAX_ALLOWED)
1587   fi
1588   if test "$MOZ_ENABLE_GTK"; then
1589     AC_DEFINE_UNQUOTED(GLIB_VERSION_MIN_REQUIRED,$GLIB_VERSION_MIN_REQUIRED)
1590     AC_DEFINE_UNQUOTED(GLIB_VERSION_MAX_ALLOWED,$GLIB_VERSION_MAX_ALLOWED)
1592     if test "$MOZ_X11"; then
1593       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)
1594       MOZ_GTK2_CFLAGS="-I${_topsrcdir}/widget/gtk/compat $MOZ_GTK2_CFLAGS"
1595     fi
1596   fi
1597 fi # COMPILE_ENVIRONMENT
1599 AC_SUBST(MOZ_FS_LAYOUT)
1601 AC_SUBST_LIST(TK_CFLAGS)
1602 AC_SUBST_LIST(TK_LIBS)
1604 dnl ========================================================
1605 dnl =
1606 dnl = Components & Features
1607 dnl =
1608 dnl ========================================================
1609 MOZ_ARG_HEADER(Components and Features)
1611 AC_SUBST(MOZ_OFFICIAL_BRANDING)
1612 if test -n "$MOZ_OFFICIAL_BRANDING"; then
1613   if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
1614     AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
1615   else
1616     MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
1617     AC_DEFINE(MOZ_OFFICIAL_BRANDING)
1618   fi
1621 MOZ_ARG_WITH_STRING(branding,
1622 [  --with-branding=dir     Use branding from the specified directory.],
1623     MOZ_BRANDING_DIRECTORY=$withval)
1625 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
1626 if test -z "$REAL_BRANDING_DIRECTORY"; then
1627   REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
1630 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
1631   . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
1634 AC_SUBST(MOZ_BRANDING_DIRECTORY)
1636 dnl ========================================================
1637 dnl = Distribution ID
1638 dnl ========================================================
1639 MOZ_ARG_WITH_STRING(distribution-id,
1640 [  --with-distribution-id=ID
1641                           Set distribution-specific id (default=org.mozilla)],
1642 [ val=`echo $withval`
1643     MOZ_DISTRIBUTION_ID="$val"])
1645 if test -z "$MOZ_DISTRIBUTION_ID"; then
1646    MOZ_DISTRIBUTION_ID="org.mozilla"
1649 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
1650 AC_SUBST(MOZ_DISTRIBUTION_ID)
1652 dnl ========================================================
1653 dnl = libproxy support
1654 dnl ========================================================
1656 if test "$MOZ_ENABLE_GTK"
1657 then
1658     MOZ_ENABLE_LIBPROXY=
1660     MOZ_ARG_ENABLE_BOOL(libproxy,
1661     [  --enable-libproxy         Enable libproxy support ],
1662     MOZ_ENABLE_LIBPROXY=1,
1663     MOZ_ENABLE_LIBPROXY=)
1665     if test "$MOZ_ENABLE_LIBPROXY"
1666     then
1667         PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
1668         AC_DEFINE(MOZ_ENABLE_LIBPROXY)
1669     fi
1671 AC_SUBST(MOZ_ENABLE_LIBPROXY)
1673 dnl ========================================================
1674 dnl = dbus support
1675 dnl ========================================================
1677 if test "$MOZ_ENABLE_GTK"
1678 then
1679     MOZ_ENABLE_DBUS=1
1681     MOZ_ARG_DISABLE_BOOL(dbus,
1682     [  --disable-dbus          Disable dbus support ],
1683         MOZ_ENABLE_DBUS=,
1684         MOZ_ENABLE_DBUS=1)
1686     if test "$MOZ_ENABLE_DBUS"
1687     then
1688         PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
1689         PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
1690         AC_DEFINE(MOZ_ENABLE_DBUS)
1691     fi
1693 AC_SUBST(MOZ_ENABLE_DBUS)
1695 AC_TRY_COMPILE([#include <linux/ethtool.h>],
1696                [ struct ethtool_cmd cmd; cmd.speed_hi = 0; ],
1697                MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI=1)
1699 AC_SUBST(MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI)
1701 if test -n "$MOZ_WEBRTC"; then
1702     if test -n "$MOZ_X11"; then
1703       MOZ_WEBRTC_X11_LIBS="-lXext -lXdamage -lXfixes -lXcomposite"
1704     fi
1707 AC_SUBST_LIST(MOZ_WEBRTC_X11_LIBS)
1709 dnl ========================================================
1710 dnl = Apple platform decoder support
1711 dnl ========================================================
1712 if test "$COMPILE_ENVIRONMENT"; then
1713 if test -n "$MOZ_APPLEMEDIA"; then
1714   # hack in frameworks for fmp4 - see bug 1029974
1715   # We load VideoToolbox and CoreMedia dynamically, so they don't appear here.
1716   LDFLAGS="$LDFLAGS -framework AudioToolbox"
1717   dnl Verify CoreMedia is available.
1718   AC_CHECK_HEADERS([CoreMedia/CoreMedia.h VideoToolbox/VideoToolbox.h], [],
1719     [AC_MSG_ERROR([MacOS X 10.9 SDK or later is required])])
1721 fi # COMPILE_ENVIRONMENT
1723 dnl ========================================================
1724 dnl = Handle dependent MEDIA defines
1725 dnl ========================================================
1727 MOZ_WEBM_ENCODER=1
1728 AC_DEFINE(MOZ_WEBM_ENCODER)
1729 AC_SUBST(MOZ_WEBM_ENCODER)
1731 dnl ========================================================
1732 dnl NegotiateAuth
1733 dnl ========================================================
1735 MOZ_ARG_DISABLE_BOOL(negotiateauth,
1736 [  --disable-negotiateauth Disable GSS-API negotiation ],
1737     MOZ_AUTH_EXTENSION=,
1738     MOZ_AUTH_EXTENSION=1 )
1740 dnl ========================================================
1741 dnl Searching of system directories for extensions.
1742 dnl Note: this switch is meant to be used for test builds
1743 dnl whose behavior should not depend on what happens to be
1744 dnl installed on the local machine.
1745 dnl ========================================================
1746 MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
1747 [  --disable-system-extension-dirs
1748                           Disable searching system- and account-global
1749                           directories for extensions of any kind; use
1750                           only profile-specific extension directories],
1751   ENABLE_SYSTEM_EXTENSION_DIRS=,
1752   ENABLE_SYSTEM_EXTENSION_DIRS=1 )
1753 if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
1754   AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
1757 dnl ========================================================
1758 dnl = Universalchardet
1759 dnl ========================================================
1760 MOZ_ARG_DISABLE_BOOL(universalchardet,
1761 [  --disable-universalchardet
1762                           Disable universal encoding detection],
1763   MOZ_UNIVERSALCHARDET=,
1764   MOZ_UNIVERSALCHARDET=1 )
1766 dnl ========================================================
1767 dnl Gamepad support
1768 dnl ========================================================
1770 if test "$COMPILE_ENVIRONMENT" ; then
1772 dnl Moved gamepad platform check to moz.build, linux header check still needed here.
1773 if test "$OS_TARGET" = "Linux"; then
1774     MOZ_CHECK_HEADER([linux/joystick.h])
1775     if test "$ac_cv_header_linux_joystick_h" != "yes"; then
1776       AC_MSG_ERROR([Can't find header linux/joystick.h, needed for gamepad support. Please install Linux kernel headers.])
1777     fi
1780 fi # COMPILE_ENVIRONMENT
1783 dnl ========================================================
1784 dnl = Breakpad crash reporting (on by default on supported platforms)
1785 dnl ========================================================
1787 case $target in
1788 i?86-*-mingw*|x86_64-*-mingw*|aarch64-*-mingw*)
1789   MOZ_CRASHREPORTER=1
1790   ;;
1791 i?86-apple-darwin*|x86_64-apple-darwin*|aarch64-apple-darwin*)
1792   MOZ_CRASHREPORTER=1
1793   ;;
1794 *-android*|*-linuxandroid*)
1795   dnl Android/arm is arm-unknown-linux-androideabi, so android condition should
1796   dnl be before Linux condition
1797   dnl The crash reporter prevents crash stacktraces to be logged in the
1798   dnl logs so we leave it out by default in developer builds.
1799   if test -z "$DEVELOPER_OPTIONS"; then
1800     MOZ_CRASHREPORTER=1
1801   fi
1802   ;;
1803 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
1804   if test "$MOZ_ENABLE_GTK"; then
1805     MOZ_CRASHREPORTER=1
1806   fi
1807   ;;
1808 esac
1810 MOZ_ARG_DISABLE_BOOL(crashreporter,
1811 [  --disable-crashreporter Disable breakpad crash reporting],
1812     [MOZ_CRASHREPORTER=],
1813     [MOZ_CRASHREPORTER=F # Force enable breakpad])
1815 if test "$OS_ARCH" != "$HOST_OS_ARCH" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "Darwin" -a "$MOZ_WIDGET_TOOLKIT" != "android"; then
1816   if test "$MOZ_CRASHREPORTER" = F; then
1817     AC_MSG_ERROR([Cannot --enable-crashreporter, as breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH.])
1818   fi
1819   MOZ_CRASHREPORTER=
1822 if test -n "$MOZ_CRASHREPORTER"; then
1823    AC_DEFINE(MOZ_CRASHREPORTER)
1825   if test "$OS_TARGET" = "Linux" && \
1826     test -z "$SKIP_LIBRARY_CHECKS"; then
1827     PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
1828   fi
1830   if test "$OS_ARCH" = "WINNT"; then
1831     if test -z "$HAVE_64BIT_BUILD" -a -n "$COMPILE_ENVIRONMENT"; then
1832       MOZ_CRASHREPORTER_INJECTOR=1
1833       AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
1834     fi
1835   fi
1838 dnl ========================================================
1839 dnl = Enable compilation of specific extension modules
1840 dnl ========================================================
1842 MOZ_ARG_ENABLE_STRING(extensions,
1843 [  --enable-extensions     Enable extensions],
1844 [ for option in `echo $enableval | sed 's/,/ /g'`; do
1845     if test "$option" = "yes" -o "$option" = "all"; then
1846         AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
1847     elif test "$option" = "no" -o "$option" = "none"; then
1848         MOZ_EXTENSIONS=""
1849     elif test "$option" = "default"; then
1850         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
1851     elif test `echo "$option" | grep -c \^-` != 0; then
1852         option=`echo $option | sed 's/^-//'`
1853         MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
1854     else
1855         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
1856     fi
1857 done],
1858     MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
1860 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
1861 dnl when trying to build a nonexistent extension.
1862 for extension in $MOZ_EXTENSIONS; do
1863     if test ! -d "${srcdir}/extensions/${extension}"; then
1864         AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
1865     fi
1866 done
1868 # Avoid defining MOZ_ENABLE_CAIRO_FT on Windows platforms because
1869 # "cairo-ft-font.c" includes <dlfcn.h>, which only exists on posix platforms
1870 if test -n "$MOZ_TREE_FREETYPE" -a "$OS_TARGET" != WINNT; then
1871    MOZ_ENABLE_CAIRO_FT=1
1872    FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
1873    CAIRO_FT_CFLAGS="-I$_topsrcdir/modules/freetype2/include"
1874    AC_SUBST_LIST(CAIRO_FT_CFLAGS)
1877 dnl ========================================================
1878 dnl Updater
1879 dnl ========================================================
1881 MOZ_ARG_DISABLE_BOOL(updater,
1882 [  --disable-updater       Disable building of updater],
1883     MOZ_UPDATER=,
1884     MOZ_UPDATER=1 )
1886 if test -n "$MOZ_UPDATER"; then
1887     AC_DEFINE(MOZ_UPDATER)
1890 dnl ========================================================
1891 dnl parental controls (for Windows Vista)
1892 dnl ========================================================
1893 MOZ_ARG_DISABLE_BOOL(parental-controls,
1894 [  --disable-parental-controls
1895                           Do not build parental controls],
1896    MOZ_DISABLE_PARENTAL_CONTROLS=1,
1897    MOZ_DISABLE_PARENTAL_CONTROLS=)
1898 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
1899     AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
1902 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
1904 dnl ========================================================
1905 dnl = Disable smartcard support
1906 dnl ========================================================
1907 if test -n "$MOZ_NO_SMART_CARDS"; then
1908     AC_DEFINE(MOZ_NO_SMART_CARDS)
1910 AC_SUBST(MOZ_NO_SMART_CARDS)
1912 dnl ========================================================
1913 dnl = Sandboxing support
1914 dnl ========================================================
1915 if test -n "$MOZ_TSAN" -o -n "$MOZ_ASAN"; then
1916     # Bug 1182565: TSan conflicts with sandboxing on Linux.
1917     # Bug 1287971: LSan also conflicts with sandboxing on Linux.
1918     case $OS_TARGET in
1919     Linux|Android)
1920         MOZ_SANDBOX=
1921         ;;
1922     esac
1925 MOZ_ARG_DISABLE_BOOL(sandbox,
1926 [  --disable-sandbox        Disable sandboxing support],
1927     MOZ_SANDBOX=,
1928     MOZ_SANDBOX=1)
1930 case "$OS_TARGET" in
1931 WINNT|Darwin|OpenBSD)
1933 Linux)
1934     case $CPU_ARCH in
1935         x86_64|x86|arm|aarch64)
1936         ;;
1937         # Linux sandbox is only available on x86{,_64} and arm{,64}.
1938         *)
1939             MOZ_SANDBOX=
1940         ;;
1941     esac
1942     ;;
1944     # Only enable the sandbox by default on Linux, OpenBSD, macOS, and Windows
1945     MOZ_SANDBOX=
1947 esac
1949 if test -n "$MOZ_SANDBOX"; then
1950     AC_DEFINE(MOZ_SANDBOX)
1953 AC_SUBST(MOZ_SANDBOX)
1956 dnl ========================================================
1957 dnl =
1958 dnl = Module specific options
1959 dnl =
1960 dnl ========================================================
1961 MOZ_ARG_HEADER(Individual module options)
1963 dnl ==============================
1964 dnl === SQLite fdatasync check ===
1965 dnl ==============================
1966 dnl Check to see if fdatasync is available and make use of it
1967 AC_CHECK_FUNC(fdatasync)
1969 dnl ========================================================
1970 dnl = Disable zipwriter
1971 dnl ========================================================
1972 MOZ_ARG_DISABLE_BOOL(zipwriter,
1973 [  --disable-zipwriter     Disable zipwriter component],
1974     MOZ_ZIPWRITER=,
1975     MOZ_ZIPWRITER=1 )
1976 AC_SUBST(MOZ_ZIPWRITER)
1978 dnl ========================================================
1979 dnl =
1980 dnl = Feature options that require extra sources to be pulled
1981 dnl =
1982 dnl ========================================================
1983 dnl MOZ_ARG_HEADER(Features that require extra sources)
1985 dnl ========================================================
1986 dnl =
1987 dnl = Runtime debugging and Optimization Options
1988 dnl =
1989 dnl ========================================================
1990 MOZ_ARG_HEADER(Runtime debugging and Optimizations)
1992 dnl ========================================================
1993 dnl = Enable code optimization. ON by default.
1994 dnl ========================================================
1996 # Use value from moz.configure if one is defined. Else use our computed
1997 # value.
1998 if test -n "${MOZ_CONFIGURE_OPTIMIZE_FLAGS}"; then
1999     MOZ_OPTIMIZE_FLAGS=${MOZ_CONFIGURE_OPTIMIZE_FLAGS}
2002 if test "$COMPILE_ENVIRONMENT"; then
2003 if test -n "$MOZ_OPTIMIZE"; then
2004     AC_MSG_CHECKING([for valid C compiler optimization flags])
2005     _SAVE_CFLAGS=$CFLAGS
2006     CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
2007     AC_TRY_COMPILE([#include <stdio.h>],
2008         [printf("Hello World\n");],
2009         _results=yes,
2010         _results=no)
2011     AC_MSG_RESULT([$_results])
2012     if test "$_results" = "no"; then
2013         AC_MSG_ERROR([These compiler flags for C are invalid: $MOZ_OPTIMIZE_FLAGS])
2014     fi
2015     CFLAGS=$_SAVE_CFLAGS
2016     if test -n "$MOZ_LTO" -a -n "$CLANG_CC"; then
2017         # When using llvm-based LTO, non numeric optimization levels are
2018         # not supported by the linker, so force the linker to use -O2 (
2019         # which doesn't influence the level compilation units are actually
2020         # compiled at).
2021         case " $MOZ_OPTIMIZE_FLAGS " in
2022         *\ -Os\ *|*\ -Oz\ *)
2023             MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -O2"
2024             ;;
2025         esac
2026     fi
2028 fi # COMPILE_ENVIRONMENT
2030 AC_SUBST_LIST(MOZ_OPTIMIZE_FLAGS)
2031 AC_SUBST_LIST(MOZ_OPTIMIZE_LDFLAGS)
2032 AC_SUBST_LIST(MOZ_PGO_OPTIMIZE_FLAGS)
2034 dnl ========================================================
2035 dnl = Enable runtime logging
2036 dnl ========================================================
2037 AC_DEFINE(MOZ_LOGGING)
2038 AC_DEFINE(FORCE_PR_LOG)
2040 dnl ========================================================
2041 dnl = This will enable logging of addref, release, ctor, dtor.
2042 dnl ========================================================
2043 _ENABLE_LOGREFCNT=42
2044 MOZ_ARG_ENABLE_BOOL(logrefcnt,
2045 [  --enable-logrefcnt      Enable logging of refcounts (default=debug) ],
2046     _ENABLE_LOGREFCNT=1,
2047     _ENABLE_LOGREFCNT= )
2048 if test "$_ENABLE_LOGREFCNT" = "1"; then
2049     AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
2050 elif test -z "$_ENABLE_LOGREFCNT"; then
2051     AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
2054 dnl ========================================================
2055 dnl moz_dump_painting
2056 dnl ========================================================
2057 MOZ_ARG_ENABLE_BOOL(dump-painting,
2058 [  --enable-dump-painting          Enable paint debugging.],
2059     MOZ_DUMP_PAINTING=1,
2060     MOZ_DUMP_PAINTING= )
2061 if test -n "$MOZ_DUMP_PAINTING"; then
2062     AC_DEFINE(MOZ_DUMP_PAINTING)
2063     AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
2065 if test -n "$MOZ_DEBUG"; then
2066     AC_DEFINE(MOZ_DUMP_PAINTING)
2069 case "${OS_TARGET}" in
2070 Android|WINNT|Darwin)
2071   MOZ_GLUE_IN_PROGRAM=
2072   ;;
2074   dnl On !Android !Windows !OSX, we only want to link executables against mozglue
2075   MOZ_GLUE_IN_PROGRAM=1
2076   AC_DEFINE(MOZ_GLUE_IN_PROGRAM)
2077   ;;
2078 esac
2080 dnl ========================================================
2081 dnl = Jemalloc build setup
2082 dnl ========================================================
2083 if test -z "$MOZ_MEMORY"; then
2084   case "${target}" in
2085     *-mingw*)
2086       if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
2087         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.])
2088       fi
2089       ;;
2090   esac
2091 else
2092   dnl The generic feature tests that determine how to compute ncpus are long and
2093   dnl complicated.  Therefore, simply define special cpp variables for the
2094   dnl platforms we have special knowledge of.
2095   case "${target}" in
2096   *-mingw*)
2097     export MOZ_NO_DEBUG_RTL=1
2098     ;;
2099   esac
2100 fi # MOZ_MEMORY
2101 AC_SUBST(MOZ_GLUE_IN_PROGRAM)
2103 dnl ========================================================
2104 dnl = Enable using the clang plugin to build
2105 dnl ========================================================
2107 if test -n "$COMPILE_ENVIRONMENT"; then
2108 MOZ_CONFIG_CLANG_PLUGIN
2109 fi # COMPILE_ENVIRONMENT
2111 dnl ========================================================
2112 dnl = frontend JS debug mode
2113 dnl ========================================================
2115 MOZ_ARG_ENABLE_BOOL(debug-js-modules,
2116 [  --enable-debug-js-modules  Enable debug mode for frontend JS libraries],
2117    DEBUG_JS_MODULES=1,
2118    DEBUG_JS_MODULES=)
2120 AC_SUBST(DEBUG_JS_MODULES)
2122 dnl ========================================================
2123 dnl =
2124 dnl = Profiling and Instrumenting
2125 dnl =
2126 dnl ========================================================
2127 MOZ_ARG_HEADER(Profiling and Instrumenting)
2129 dnl ========================================================
2130 dnl = Support for demangling undefined symbols
2131 dnl ========================================================
2132 if test -z "$SKIP_LIBRARY_CHECKS"; then
2133     AC_LANG_SAVE
2134     AC_LANG_CPLUSPLUS
2135     AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
2136     AC_LANG_RESTORE
2139 # Demangle only for debug or DMD builds
2140 MOZ_DEMANGLE_SYMBOLS=
2141 if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$MOZ_DMD"; then
2142     MOZ_DEMANGLE_SYMBOLS=1
2143     AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
2145 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
2147 dnl ========================================================
2148 dnl = Support for gcc stack unwinding (from gcc 3.3)
2149 dnl ========================================================
2150 if test -z "$SKIP_LIBRARY_CHECKS"; then
2151     AC_LANG_SAVE
2152     AC_LANG_CPLUSPLUS
2153     MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
2154     AC_LANG_RESTORE
2157 dnl ========================================================
2158 dnl =
2159 dnl = Misc. Options
2160 dnl =
2161 dnl ========================================================
2162 MOZ_ARG_HEADER(Misc. Options)
2164 dnl ========================================================
2165 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
2166 dnl ========================================================
2167 MOZ_ARG_WITH_STRING(user-appdir,
2168 [  --with-user-appdir=DIR  Set user-specific appdir (default=.mozilla)],
2169 [ val=`echo $withval`
2170 if echo "$val" | grep "\/" >/dev/null; then
2171     AC_MSG_ERROR("Homedir must be single relative path.")
2172 else
2173     MOZ_USER_DIR="$val"
2174 fi])
2176 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
2178 if test -z "$SKIP_COMPILER_CHECKS"; then
2179 dnl ========================================================
2180 dnl =
2181 dnl = Compiler Options
2182 dnl =
2183 dnl ========================================================
2184 MOZ_ARG_HEADER(Compiler Options)
2186 dnl ========================================================
2187 dnl Check for gcc -pipe support
2188 dnl ========================================================
2189 AC_MSG_CHECKING([for -pipe support])
2190 if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
2191     dnl Any gcc that supports firefox supports -pipe.
2192     CFLAGS="$CFLAGS -pipe"
2193     CXXFLAGS="$CXXFLAGS -pipe"
2194     AC_MSG_RESULT([yes])
2195 else
2196     AC_MSG_RESULT([no])
2199 fi # ! SKIP_COMPILER_CHECKS
2201 AC_LANG_C
2203 if test "$COMPILE_ENVIRONMENT"; then
2204 MOZ_EXPAND_LIBS
2205 fi # COMPILE_ENVIRONMENT
2207 dnl ========================================================
2208 dnl =
2209 dnl = Static Build Options
2210 dnl =
2211 dnl ========================================================
2212 MOZ_ARG_HEADER(Static build options)
2214 if test -z "$MOZ_SYSTEM_ZLIB"; then
2215 if test -n "$JS_SHARED_LIBRARY" -o -n "$MOZ_LINKER" -o "$MOZ_WIDGET_TOOLKIT" = android; then
2216   ZLIB_IN_MOZGLUE=1
2217   AC_DEFINE(ZLIB_IN_MOZGLUE)
2221 AC_SUBST(ZLIB_IN_MOZGLUE)
2223 dnl ========================================================
2224 dnl =
2225 dnl = Standalone module options
2226 dnl =
2227 dnl ========================================================
2228 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
2230 dnl Check for GLib.
2231 dnl ========================================================
2233 if test -z "$SKIP_PATH_CHECKS"; then
2234 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
2235     if test "$MOZ_ENABLE_GTK" ; then
2236         PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
2237     fi
2241 if test -z "${GLIB_GMODULE_LIBS}" \
2242    -a -n "${GLIB_CONFIG}"\
2243     -a "${GLIB_CONFIG}" != no\
2244 ; then
2245     GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
2248 AC_SUBST_LIST(GLIB_GMODULE_LIBS)
2250 if test "$USE_FC_FREETYPE"; then
2251     if test "$COMPILE_ENVIRONMENT"; then
2252         dnl ========================================================
2253         dnl = Check for freetype2 functionality
2254         dnl ========================================================
2255         if test "$_HAVE_FREETYPE2" -a -z "$MOZ_TREE_FREETYPE"; then
2256             _SAVE_LIBS="$LIBS"
2257             _SAVE_CFLAGS="$CFLAGS"
2258             LIBS="$LIBS $FT2_LIBS"
2259             CFLAGS="$CFLAGS $FT2_CFLAGS"
2261             AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
2262                 ac_cv_member_FT_Bitmap_Size_y_ppem,
2263                 [AC_TRY_COMPILE([#include <ft2build.h>
2264                                  #include FT_FREETYPE_H],
2265                                 [FT_Bitmap_Size s;
2266                                  if (sizeof s.y_ppem) return 0;
2267                                  return 1],
2268                                 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
2269                                 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
2270             if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
2271                 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
2272             else
2273                 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
2274             fi
2275             AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
2276                                $HAVE_FT_BITMAP_SIZE_Y_PPEM,
2277                                [FT_Bitmap_Size structure includes y_ppem field])
2279             AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table)
2281             LIBS="$_SAVE_LIBS"
2282             CFLAGS="$_SAVE_CFLAGS"
2283         fi
2285         _SAVE_CPPFLAGS="$CPPFLAGS"
2286         CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
2287         MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
2288             [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
2289         CPPFLAGS="$_SAVE_CPPFLAGS"
2290     fi
2293 dnl ========================================================
2294 dnl Check if we need the 32-bit Linux SSE2 error dialog
2295 dnl ========================================================
2297 AC_SUBST(MOZ_LINUX_32_SSE2_STARTUP_ERROR)
2299 dnl ========================================================
2300 dnl Check for pixman and cairo
2301 dnl ========================================================
2303 MOZ_TREE_CAIRO=1
2304 MOZ_ARG_ENABLE_BOOL(system-cairo,
2305 [ --enable-system-cairo  Obsolete: do not use this option],
2306 AC_MSG_ERROR(--enable-system-cairo is not supported),
2307 MOZ_TREE_CAIRO=1 )
2309 MOZ_TREE_PIXMAN=1
2310 MOZ_ARG_ENABLE_BOOL(system-pixman,
2311 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
2312 MOZ_TREE_PIXMAN=,
2313 MOZ_TREE_PIXMAN=force,
2314 MOZ_TREE_PIXMAN=1 )
2316 if test "$MOZ_TREE_PIXMAN"; then
2317     AC_DEFINE(MOZ_TREE_PIXMAN)
2318 else
2319     PKG_CHECK_MODULES(MOZ_PIXMAN, pixman-1 >= 0.19.2)
2322 MOZ_CAIRO_CFLAGS="-I${DIST}/include/cairo"
2323 AC_DEFINE(MOZ_TREE_CAIRO)
2325 if test "$OS_ARCH" = "WINNT"; then
2326     # For now we assume that we will have a uint64_t available through
2327     # one of the above headers or mozstdint.h.
2328     AC_DEFINE(HAVE_UINT64_T)
2331 # Define macros for cairo-features.h
2332 TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
2333 if test "$MOZ_X11"; then
2334     XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
2335     XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
2336     PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
2338 if test "$_HAVE_FREETYPE2"; then
2339     FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
2340     MOZ_ENABLE_CAIRO_FT=1
2341     CAIRO_FT_CFLAGS="$FT2_CFLAGS"
2344 case "$MOZ_WIDGET_TOOLKIT" in
2345   cocoa | uikit)
2346     QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
2347     QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
2348     QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
2349     ;;
2350   windows)
2351     WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
2352     WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
2353     WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
2355     if test "$COMPILE_ENVIRONMENT"; then
2356       MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
2357     fi
2358     ;;
2359 esac
2360 if test "$USE_FC_FREETYPE"; then
2361     FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
2363 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
2364 AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
2366 AC_SUBST(PS_SURFACE_FEATURE)
2367 AC_SUBST(SVG_SURFACE_FEATURE)
2368 AC_SUBST(XLIB_SURFACE_FEATURE)
2369 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
2370 AC_SUBST(QUARTZ_SURFACE_FEATURE)
2371 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
2372 AC_SUBST(WIN32_SURFACE_FEATURE)
2373 AC_SUBST(OS2_SURFACE_FEATURE)
2374 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
2375 AC_SUBST(FT_FONT_FEATURE)
2376 AC_SUBST(FC_FONT_FEATURE)
2377 AC_SUBST(WIN32_FONT_FEATURE)
2378 AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
2379 AC_SUBST(QUARTZ_FONT_FEATURE)
2380 AC_SUBST(PNG_FUNCTIONS_FEATURE)
2381 AC_SUBST(QT_SURFACE_FEATURE)
2382 AC_SUBST(TEE_SURFACE_FEATURE)
2384 if test "$MOZ_X11"; then
2385     MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
2388 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
2390 case "$MOZ_WIDGET_TOOLKIT" in
2391 android)
2392     TK_CFLAGS="$MOZ_CAIRO_CFLAGS $MOZ_PIXMAN_CFLAGS"
2393     TK_LIBS="$MOZ_CAIRO_LIBS $MOZ_PIXMAN_LIBS"
2394     ;;
2395 esac
2397 AC_SUBST(MOZ_TREE_CAIRO)
2398 AC_SUBST_LIST(MOZ_CAIRO_CFLAGS)
2399 AC_SUBST_LIST(MOZ_CAIRO_LIBS)
2400 AC_SUBST_LIST(MOZ_CAIRO_OSLIBS)
2401 AC_SUBST(MOZ_TREE_PIXMAN)
2403 BINDGEN_SYSTEM_FLAGS="$_BINDGEN_CFLAGS $NSPR_CFLAGS $NSS_CFLAGS $MOZ_PIXMAN_CFLAGS $MOZ_CAIRO_CFLAGS"
2404 AC_SUBST(BINDGEN_SYSTEM_FLAGS)
2405 BINDGEN_SYSTEM_TOML_FLAGS="$BINDGEN_SYSTEM_FLAGS"
2406 AC_SUBST_TOML_LIST(BINDGEN_SYSTEM_TOML_FLAGS)
2408 dnl ========================================================
2409 dnl disable xul
2410 dnl ========================================================
2411 MOZ_ARG_DISABLE_BOOL(xul,
2412 [  --disable-xul           Disable XUL],
2413     MOZ_XUL= )
2414 if test "$MOZ_XUL"; then
2415   AC_DEFINE(MOZ_XUL)
2416 else
2417   dnl remove extensions that require XUL
2418   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/irc//' -e 's/tasks//'`
2421 AC_SUBST(MOZ_XUL)
2423 dnl ========================================================
2424 dnl necko configuration options
2425 dnl ========================================================
2428 dnl option to disable necko's wifi scanner
2431 if test "$MOZ_WIDGET_TOOLKIT"; then
2433   case "$OS_TARGET" in
2434     Darwin)
2435       NECKO_WIFI=1
2436       ;;
2437     DragonFly|FreeBSD|WINNT)
2438       NECKO_WIFI=1
2439       ;;
2440     Linux)
2441       NECKO_WIFI=1
2442       NECKO_WIFI_DBUS=1
2443       ;;
2444   esac
2448 MOZ_ARG_DISABLE_BOOL(necko-wifi,
2449 [  --disable-necko-wifi    Disable necko wifi scanner],
2450     NECKO_WIFI=,
2451     NECKO_WIFI=1)
2453 if test "$NECKO_WIFI"; then
2454   if test -z "$MOZ_ENABLE_DBUS" -a -n "$NECKO_WIFI_DBUS"; then
2455     AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi])
2456   fi
2457   AC_DEFINE(NECKO_WIFI)
2459 AC_SUBST(NECKO_WIFI)
2460 AC_SUBST(NECKO_WIFI_DBUS)
2462 dnl ========================================================
2463 dnl =
2464 dnl = Maintainer debug option (no --enable equivalent)
2465 dnl =
2466 dnl ========================================================
2468 AC_SUBST_LIST(ASFLAGS)
2469 AC_SUBST(IMPLIB)
2470 AC_SUBST(FILTER)
2471 AC_SUBST(MOZ_AUTH_EXTENSION)
2472 AC_SUBST_LIST(MOZ_DEBUG_LDFLAGS)
2473 AC_SUBST_LIST(WARNINGS_CFLAGS)
2474 AC_SUBST_SET(MOZ_EXTENSIONS)
2476 AC_SUBST(MOZ_UNIVERSALCHARDET)
2477 AC_SUBST(MOZ_SPELLCHECK)
2478 AC_SUBST(MOZ_ANDROID_ANR_REPORTER)
2479 AC_SUBST(MOZ_CRASHREPORTER)
2480 AC_SUBST(MOZ_CRASHREPORTER_INJECTOR)
2481 AC_SUBST(MOZ_STUB_INSTALLER)
2482 AC_SUBST(MOZ_UPDATER)
2484 AC_SUBST(MOZ_ANDROID_APPLICATION_CLASS)
2485 AC_SUBST(MOZ_ANDROID_BROWSER_INTENT_CLASS)
2486 AC_SUBST(INCREMENTAL_LINKER)
2488 AC_SUBST_LIST(MOZ_FIX_LINK_PATHS)
2490 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
2491 AC_SUBST(MOZ_LINKER_EXTRACT)
2493 if test -n "$MOZ_BINARY_EXTENSIONS"; then
2494   AC_DEFINE(MOZ_BINARY_EXTENSIONS)
2497 AC_SUBST(MOZ_REQUIRE_SIGNING)
2498 if test "$MOZ_REQUIRE_SIGNING" = 1; then
2499   AC_DEFINE(MOZ_REQUIRE_SIGNING)
2502 dnl ========================================================
2503 dnl = Mac bundle name prefix
2504 dnl ========================================================
2505 MOZ_ARG_WITH_STRING(macbundlename-prefix,
2506 [  --with-macbundlename-prefix=prefix
2507                           Prefix for MOZ_MACBUNDLE_NAME],
2508 [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
2510 MOZ_MACBUNDLE_NAME=$MOZ_APP_DISPLAYNAME
2511 if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
2512   MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
2515 if test "$MOZ_DEBUG"; then
2516   MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME}Debug.app"
2517 else
2518   MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
2520 AC_SUBST(MOZ_MACBUNDLE_NAME)
2522 dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
2523 # If the MOZ_MACBUNDLE_ID is defined in the configure.sh, use it
2524 # Otherwise, use MOZ_APP_DISPLAYNAME
2525 if test -z "$MOZ_MACBUNDLE_ID"; then
2526    MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr 'A-Z' 'a-z' | tr -dc 'a-z-'`
2528 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
2529 if test "$MOZ_DEBUG"; then
2530   MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
2533 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
2534 AC_SUBST(MOZ_MACBUNDLE_ID)
2536 dnl ========================================================
2537 dnl = Child Process Name for IPC
2538 dnl ========================================================
2539 if test "$MOZ_WIDGET_TOOLKIT" != "android"; then
2540   MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}"
2541 else
2542   # We want to let Android unpack the file at install time, but it only does
2543   # so if the file is named libsomething.so. The lib/ path is also required
2544   # because the unpacked file will be under the lib/ subdirectory and will
2545   # need to be executed from that path.
2546   MOZ_CHILD_PROCESS_NAME="libplugin-container.so"
2548 MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/"
2549 MOZ_CHILD_PROCESS_BUNDLENAME="${MOZ_APP_DISPLAYNAME}CP"
2551 AC_SUBST(MOZ_CHILD_PROCESS_NAME)
2552 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE)
2553 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLENAME)
2555 # The following variables are available to branding and application
2556 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
2557 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
2558 # impacts profile location and user-visible fields.
2559 # - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
2560 # Mac Bundle name, Updater, Installer), it is typically used for nightly
2561 # builds (e.g. Aurora for Firefox).
2562 # - MOZ_APP_PROFILE: When set, used for application.ini's
2563 # "Profile" field, which controls profile location.
2564 # - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
2565 # crash reporter server url.
2566 # - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
2568 # The following environment variables used to have an effect, but don't anymore:
2569 # - MOZ_APP_VERSION: Defines the application version number. This was replaced with
2570 # the contents from the version.txt file in the application directory, or
2571 # browser/config/version.txt if there isn't one.
2572 # - MOZ_APP_VERSION_DISPLAY: Defines the application version number. Used
2573 # in the "About" window. This was replaced with the contents from the
2574 # version_display.txt or version.txt in the application directory, or
2575 # browser/config/version_display.txt.
2577 # For extensions and langpacks, we require a max version that is compatible
2578 # across security releases. MOZ_APP_MAXVERSION is our method for doing that.
2579 # 24.0a1 and 24.0a2 aren't affected
2580 # 24.0 becomes 24.*
2581 # 24.1.1 becomes 24.*
2582 IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
2583 if test -z "$IS_ALPHA"; then
2584   changequote(,)
2585   if test "$(basename $MOZ_BUILD_APP)" = "suite"; then
2586     MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\.[0-9]*\).*|\1|"`.*
2587   else
2588     MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\).*|\1|"`.*
2589   fi
2590   changequote([,])
2591 else
2592   MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
2595 AC_SUBST(MOZ_APP_DISPLAYNAME)
2596 AC_SUBST(MOZ_APP_VENDOR)
2597 AC_SUBST(MOZ_APP_PROFILE)
2598 AC_SUBST(MOZ_APP_ID)
2599 AC_SUBST(MAR_CHANNEL_ID)
2600 AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
2601 AC_SUBST(MOZ_PROFILE_MIGRATOR)
2602 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
2603 AC_SUBST(MOZ_APP_UA_NAME)
2604 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
2605 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL, $BROWSER_CHROME_URL)
2606 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL_QUOTED, "$BROWSER_CHROME_URL")
2608 AC_SUBST(MOZ_APP_MAXVERSION)
2609 AC_SUBST(MOZ_UA_OS_AGNOSTIC)
2610 if test -n "$MOZ_UA_OS_AGNOSTIC"; then
2611   AC_DEFINE(MOZ_UA_OS_AGNOSTIC)
2614 AC_SUBST(MOZ_PKG_SPECIAL)
2615 AC_SUBST(MOZ_SIMPLE_PACKAGE_NAME)
2617 if test "$MOZILLA_OFFICIAL"; then
2618     # Build revisions should always be present in official builds
2619     MOZ_INCLUDE_SOURCE_INFO=1
2622 # External builds (specifically Ubuntu) may drop the hg repo information, so we allow to
2623 # explicitly set the repository and changeset information in.
2624 AC_SUBST(MOZ_SOURCE_REPO)
2625 AC_SUBST(MOZ_SOURCE_CHANGESET)
2626 AC_SUBST(MOZ_INCLUDE_SOURCE_INFO)
2628 dnl If we have any service that uploads data (and requires data submission
2629 dnl policy alert), set MOZ_DATA_REPORTING.
2630 dnl We need SUBST for build system and DEFINE for xul preprocessor.
2631 if test -n "$MOZ_TELEMETRY_REPORTING" || test -n "$MOZ_SERVICES_HEALTHREPORT" || test -n "$MOZ_CRASHREPORTER"  || test -n "$MOZ_NORMANDY"; then
2632   MOZ_DATA_REPORTING=1
2633   AC_DEFINE(MOZ_DATA_REPORTING)
2634   AC_SUBST(MOZ_DATA_REPORTING)
2637 dnl win32 options
2638 AC_SUBST(WIN32_REDIST_DIR)
2639 AC_SUBST(WIN_UCRT_REDIST_DIR)
2641 dnl Echo the CFLAGS to remove extra whitespace.
2642 CFLAGS=`echo \
2643     $_COMPILATION_CFLAGS \
2644     $CFLAGS`
2646 CXXFLAGS=`echo \
2647     $_WARNINGS_CXXFLAGS \
2648     $_COMPILATION_CXXFLAGS \
2649     $CXXFLAGS`
2651 COMPILE_CFLAGS=`echo \
2652     $_DEFINES_CFLAGS \
2653     $COMPILE_CFLAGS`
2655 COMPILE_CXXFLAGS=`echo \
2656     $_DEFINES_CXXFLAGS \
2657     $COMPILE_CXXFLAGS`
2659 HOST_CFLAGS=`echo \
2660     $_WARNINGS_HOST_CFLAGS \
2661     $_COMPILATION_HOST_CFLAGS \
2662     $HOST_CFLAGS`
2664 HOST_CXXFLAGS=`echo \
2665     $_WARNINGS_HOST_CXXFLAGS \
2666     $_COMPILATION_HOST_CXXFLAGS \
2667     $HOST_CXXFLAGS`
2669 AC_SUBST(MOZ_SYSTEM_PNG)
2671 AC_SUBST_LIST(MOZ_PNG_CFLAGS)
2672 AC_SUBST_LIST(MOZ_PNG_LIBS)
2674 HOST_CMFLAGS="-x objective-c -fobjc-exceptions"
2675 HOST_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
2676 OS_COMPILE_CMFLAGS="-x objective-c -fobjc-exceptions"
2677 OS_COMPILE_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
2678 if test "$MOZ_WIDGET_TOOLKIT" = uikit; then
2679   OS_COMPILE_CMFLAGS="$OS_COMPILE_CMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
2680   OS_COMPILE_CMMFLAGS="$OS_COMPILE_CMMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
2682 AC_SUBST(HOST_CMFLAGS)
2683 AC_SUBST(HOST_CMMFLAGS)
2684 AC_SUBST(OS_COMPILE_CMFLAGS)
2685 AC_SUBST(OS_COMPILE_CMMFLAGS)
2687 OS_CFLAGS="$CFLAGS"
2688 OS_CXXFLAGS="$CXXFLAGS"
2689 OS_CPPFLAGS="$CPPFLAGS"
2690 OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
2691 OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
2692 OS_LDFLAGS="$LDFLAGS"
2693 OS_LIBS="$LIBS"
2694 AC_SUBST_LIST(OS_CFLAGS)
2695 AC_SUBST_LIST(OS_CXXFLAGS)
2696 AC_SUBST_LIST(OS_CPPFLAGS)
2697 AC_SUBST_LIST(OS_COMPILE_CFLAGS)
2698 AC_SUBST_LIST(OS_COMPILE_CXXFLAGS)
2699 AC_SUBST_LIST(OS_LDFLAGS)
2700 AC_SUBST(OS_LIBS)
2702 AC_SUBST(HOST_CC)
2703 AC_SUBST(HOST_CXX)
2704 AC_SUBST_LIST(HOST_CFLAGS)
2705 AC_SUBST_LIST(HOST_CPPFLAGS)
2706 AC_SUBST_LIST(HOST_CXXFLAGS)
2707 AC_SUBST(HOST_LDFLAGS)
2708 AC_SUBST_LIST(HOST_OPTIMIZE_FLAGS)
2709 AC_SUBST(HOST_BIN_SUFFIX)
2711 AC_SUBST(TARGET_XPCOM_ABI)
2712 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
2713 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1)
2714 AC_SUBST(HAVE_X86_AVX2)
2715 AC_SUBST(HAVE_ALTIVEC)
2717 AC_SUBST(DSO_LDOPTS)
2718 AC_SUBST(BIN_SUFFIX)
2719 AC_SUBST(USE_N32)
2720 AC_SUBST(WIN32_CONSOLE_EXE_LDFLAGS)
2721 AC_SUBST(WIN32_GUI_EXE_LDFLAGS)
2723 AC_SUBST(MOZ_DEVTOOLS)
2725 AC_SUBST(MOZ_PACKAGE_JSSHELL)
2727 AC_SUBST(DMG_TOOL)
2729 dnl Host JavaScript runtime, if any, to use during cross compiles.
2730 AC_SUBST(JS_BINARY)
2732 AC_SUBST(NSS_EXTRA_SYMBOLS_FILE)
2734 if test -n "$COMPILE_ENVIRONMENT"; then
2735 AC_CHECK_FUNCS(posix_fadvise posix_fallocate)
2737 dnl Check for missing components
2738 if test "$MOZ_X11"; then
2739     dnl ====================================================
2740     dnl = Check if X headers exist
2741     dnl ====================================================
2742     _SAVE_CFLAGS=$CFLAGS
2743     CFLAGS="$CFLAGS $XCFLAGS"
2744     AC_TRY_COMPILE([
2745         #include <stdio.h>
2746         #include <stdlib.h>
2747         #include <X11/Xlib.h>
2748         #include <X11/Intrinsic.h>
2749         #include <X11/extensions/XShm.h>
2750     ],
2751     [
2752         Display *dpy = 0;
2753         if ((dpy = XOpenDisplay(NULL)) == NULL) {
2754             fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
2755             exit(1);
2756         }
2757     ], [],
2758     [ AC_MSG_ERROR([Can't find X headers (install libxt-dev (Debian/Ubuntu), libXt-devel (Fedora), or xorg-x11-libXt-devel (SuSE)).]) ])
2759     CFLAGS="$_SAVE_CFLAGS"
2761     if test -n "$MISSING_X"; then
2762         AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
2763     fi
2765 fi # MOZ_X11
2767 fi # COMPILE_ENVIRONMENT
2769 dnl Set various defines and substitutions
2770 dnl ========================================================
2772 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK" ; then
2773     AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
2774     ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
2775     ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
2776     ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
2777     ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
2778     AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
2779     AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
2780     AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
2783 AC_SUBST(MOZ_DEV_EDITION)
2784 if test -n "$MOZ_DEV_EDITION"; then
2785     AC_DEFINE(MOZ_DEV_EDITION)
2788 if test "$MOZ_DEBUG" -o "$DEVELOPER_OPTIONS"; then
2789     A11Y_LOG=1
2791 AC_SUBST(A11Y_LOG)
2792 if test -n "$A11Y_LOG"; then
2793     AC_DEFINE(A11Y_LOG)
2796 dnl Spit out some output
2797 dnl ========================================================
2799 # Avoid using obsolete NSPR features
2800 AC_DEFINE(NO_NSPR_10_SUPPORT)
2802 MOZ_CREATE_CONFIG_STATUS()
2804 rm -fr confdefs* $ac_clean_files