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