Bug 1713152 [wpt PR 29140] - Invalidate local attachment content-box background with...
[gecko.git] / old-configure.in
blobde2642f71d0fdc296a7eb4c9e8f5ef42c5694fab
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         dnl Minimum reqiurement of Gecko is VS2015 or later which supports
749         dnl both SSSE3 and SSE4.1.
750         HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1
751         HAVE_TOOLCHAIN_SUPPORT_MSSE4_1=1
752         dnl allow AVX2 code from VS2015
753         HAVE_X86_AVX2=1
754     fi
755     AC_DEFINE(WIN32_LEAN_AND_MEAN)
756     dnl See http://support.microsoft.com/kb/143208 to use STL
757     AC_DEFINE(NOMINMAX)
758     BIN_SUFFIX='.exe'
759     MOZ_USER_DIR="Mozilla"
761     case "$host_os" in
762     cygwin*|msvc*|mks*)
763         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.])
764         ;;
765     esac
767     case "$target" in
768     i*86-*)
769         if test -n "$GNU_CC"; then
770             CFLAGS="$CFLAGS -mstackrealign"
771             CXXFLAGS="$CXXFLAGS -mstackrealign"
772             LDFLAGS="$LDFLAGS -Wl,--large-address-aware"
773         else
774             DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
775             LDFLAGS="$LDFLAGS -SAFESEH"
776         fi
778         AC_DEFINE(_X86_)
779         ;;
780     x86_64-*)
781         if test -n "$_WIN32_MSVC"; then
782             DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
783         fi
784         AC_DEFINE(_AMD64_)
785         ;;
786     aarch64-*)
787         if test -n "$_WIN32_MSVC"; then
788             DSO_LDOPTS="$DSO_LDOPTS -MACHINE:ARM64"
789         fi
790         AC_DEFINE(_ARM64_)
791         ;;
792     *)
793         AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
794         ;;
795     esac
796     ;;
798 *-netbsd*)
799     CFLAGS="$CFLAGS -Dunix"
800     CXXFLAGS="$CXXFLAGS -Dunix"
801     if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
802         DSO_PIC_CFLAGS='-fPIC -DPIC'
803         DSO_LDOPTS='-shared'
804         MOZ_PROGRAM_LDFLAGS="$MOZ_PROGRAM_LDFLAGS -Wl,--export-dynamic"
805     else
806         DSO_PIC_CFLAGS='-fPIC -DPIC'
807         DSO_LDOPTS='-shared'
808     fi
809     # This will fail on a.out systems prior to 1.5.1_ALPHA.
810     if test "$LIBRUNPATH"; then
811         DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
812     fi
813     ;;
815 *-openbsd*)
816     if test -z "$X11BASE"; then
817         X11BASE=/usr/X11R6
818     fi
819     MOZ_FIX_LINK_PATHS="$MOZ_FIX_LINK_PATHS -Wl,-rpath-link,${X11BASE}/lib"
820     DSO_PIC_CFLAGS='-fPIC'
821     DSO_LDOPTS='-shared -fPIC'
822     if test "$LIBRUNPATH"; then
823         DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
824     fi
825     ;;
827 *-solaris*)
828     MOZ_FIX_LINK_PATHS="-L${DIST}/bin"
829     ;;
831 esac
833 CFLAGS="$CFLAGS $DSO_PIC_CFLAGS"
834 CXXFLAGS="$CXXFLAGS $DSO_PIC_CFLAGS"
836 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
837     MOZ_OPTIMIZE_FLAGS="-O"
840 AC_SUBST_LIST(MMX_FLAGS)
841 AC_SUBST_LIST(SSE_FLAGS)
842 AC_SUBST_LIST(SSE2_FLAGS)
843 AC_SUBST_LIST(SSSE3_FLAGS)
845 AC_SUBST(MOZ_LINKER)
846 if test -n "$MOZ_LINKER"; then
847   AC_DEFINE(MOZ_LINKER)
848   MOZ_LINKER_EXTRACT=1
849   AC_CHECK_PROGS(XZ, xz)
852 if test -z "$COMPILE_ENVIRONMENT"; then
853     SKIP_COMPILER_CHECKS=1
854     SKIP_LIBRARY_CHECKS=1
855     MOZ_DEBUGGING_OPTS
856 else
857     MOZ_COMPILER_OPTS
858 fi # COMPILE_ENVIRONMENT
860 if test -z "$SKIP_COMPILER_CHECKS"; then
861 dnl Checks for typedefs, structures, and compiler characteristics.
862 dnl ========================================================
863 AC_C_CONST
864 AC_TYPE_MODE_T
865 AC_TYPE_OFF_T
866 AC_TYPE_PID_T
867 AC_TYPE_SIZE_T
868 AC_LANG_CPLUSPLUS
869 AC_LANG_C
871 AC_LANG_CPLUSPLUS
873 MOZ_CXX11
875 AC_LANG_C
877 case "${OS_TARGET}" in
878 Darwin)
879   ;;
881   STL_FLAGS="-I${DIST}/stl_wrappers"
882   WRAP_STL_INCLUDES=1
883   ;;
884 esac
886 if test "$MOZ_BUILD_APP" = "tools/crashreporter"; then
887     WRAP_STL_INCLUDES=
889 if test "$MOZ_BUILD_APP" = "tools/crashreporter/injector"; then
890     WRAP_STL_INCLUDES=
893 dnl Checks for header files.
894 dnl ========================================================
895 AC_HEADER_DIRENT
896 case "$target_os" in
897 bitrig*|dragonfly*|freebsd*|openbsd*)
898 # for stuff like -lXshm
899     CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
900     ;;
901 esac
903 dnl Check for sin_len and sin6_len - used by SCTP; only appears in Mac/*BSD generally
904 AC_CACHE_CHECK(for sockaddr_in.sin_len,
905                    ac_cv_sockaddr_in_sin_len,
906                    [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
907                                     #include <sys/types.h>
908                                     #endif
909                                     #include <netinet/in.h>
910                                     struct sockaddr_in x;
911                                     void *foo = (void*) &x.sin_len;],
912                                    [],
913                                    [ac_cv_sockaddr_in_sin_len=true],
914                                    [ac_cv_sockaddr_in_sin_len=false])])
915 if test "$ac_cv_sockaddr_in_sin_len" = true ; then
916   AC_DEFINE(HAVE_SIN_LEN)
917 dnl HAVE_CONN_LEN must be the same as HAVE_SIN_LEN (and HAVE_SIN6_LEN too)
918   AC_DEFINE(HAVE_SCONN_LEN)
921 AC_CACHE_CHECK(for sockaddr_in6.sin6_len,
922                ac_cv_sockaddr_in6_sin6_len,
923                [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
924                                 #include <sys/types.h>
925                                 #endif
926                                 #include <netinet/in.h>
927                                 struct sockaddr_in6 x;
928                                 void *foo = (void*) &x.sin6_len;],
929                                [],
930                                [ac_cv_sockaddr_in6_sin6_len=true],
931                                [ac_cv_sockaddr_in6_sin6_len=false])])
932 if test "$ac_cv_sockaddr_in6_sin6_len" = true ; then
933   AC_DEFINE(HAVE_SIN6_LEN)
936 AC_CACHE_CHECK(for sockaddr.sa_len,
937                ac_cv_sockaddr_sa_len,
938                [AC_TRY_COMPILE([#ifdef HAVE_SYS_TYPES_H
939                                 #include <sys/types.h>
940                                 #endif
941                                 #include <sys/socket.h>
942                                 struct sockaddr x;
943                                 void *foo = (void*) &x.sa_len;],
944                                [],
945                                [ac_cv_sockaddr_sa_len=true],
946                                [ac_cv_sockaddr_sa_len=false])])
947 if test "$ac_cv_sockaddr_sa_len" = true ; then
948   AC_DEFINE(HAVE_SA_LEN)
951 dnl Checks for libraries.
952 dnl ========================================================
953 AC_CHECK_LIB(c_r, gethostbyname_r)
955 dnl We don't want to link with libdl even if it's present on OS X, since
956 dnl it's not used and not part of the default installation. OS/2 has dlfcn
957 dnl in libc.
958 dnl We don't want to link against libm or libpthread on Darwin since
959 dnl they both are just symlinks to libSystem and explicitly linking
960 dnl against libSystem causes issues when debugging (see bug 299601).
961 case $target in
962 *-darwin*)
963     ;;
965     AC_SEARCH_LIBS(dlopen, dl,
966         MOZ_CHECK_HEADER(dlfcn.h,
967         AC_DEFINE(HAVE_DLOPEN)))
968     ;;
969 esac
971 _SAVE_CFLAGS="$CFLAGS"
972 CFLAGS="$CFLAGS -D_GNU_SOURCE"
973 AC_CHECK_FUNCS(dladdr memmem)
974 CFLAGS="$_SAVE_CFLAGS"
976 if test ! "$GNU_CXX"; then
977     AC_CHECK_LIB(C, demangle)
980 AC_CHECK_LIB(socket, socket)
982 XLDFLAGS="$X_LIBS"
983 XLIBS="$X_EXTRA_LIBS"
985 dnl ========================================================
986 dnl Checks for X libraries.
987 dnl Ordering is important.
988 dnl Xt is dependent upon SM as of X11R6
989 dnl ========================================================
990 if test -n "$MOZ_X11"; then
991     AC_DEFINE_UNQUOTED(FUNCPROTO,15)
992     _SAVE_LDFLAGS="$LDFLAGS"
993     _SAVE_LIBS="$LIBS"
994     LDFLAGS="$XLDFLAGS $LDFLAGS"
995     AC_CHECK_LIB(X11, XDrawLines, [XLIBS="-lX11 $XLIBS"],
996         [MISSING_X="$MISSING_X -lX11"], $XLIBS)
997     AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
998         [MISSING_X="$MISSING_X -lXext"], $XLIBS)
1000     AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
1001         unset ac_cv_lib_Xt_XtFree
1002         AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
1003         AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
1004         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
1005             [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
1006         ])
1008     dnl ========================================================
1009     dnl = Check for xcb
1010     dnl ========================================================
1011     AC_CHECK_LIB(xcb, xcb_connect, [XLIBS="-lxcb $XLIBS"],
1012         [MISSING_X="$MISSING_X -lxcb"], $XLIBS)
1013     AC_CHECK_LIB(xcb-shm, xcb_shm_query_version, [XLIBS="-lxcb-shm $XLIBS"],
1014         [MISSING_X="$MISSING_X -lxcb-shm"], $XLIBS)
1015     AC_CHECK_LIB(X11-xcb, XGetXCBConnection, [XLIBS="-lX11-xcb $XLIBS"],
1016         [MISSING_X="$MISSING_X -lX11-xcb"], $XLIBS)
1018     LDFLAGS="$_SAVE_LDFLAGS"
1019     LIBS="$_SAVE_LIBS"
1020 fi # $MOZ_X11
1022 AC_SUBST_LIST(XCFLAGS)
1023 AC_SUBST_LIST(XLDFLAGS)
1024 AC_SUBST_LIST(XLIBS)
1025 AC_SUBST_LIST(XEXT_LIBS)
1026 AC_SUBST_LIST(XT_LIBS)
1028 dnl ========================================================
1029 dnl = pthread support
1030 dnl = Start by checking whether the system support pthreads
1031 dnl ========================================================
1032 case "$target_os" in
1033 darwin*)
1034     MOZ_USE_PTHREADS=1
1035     ;;
1037     AC_CHECK_LIB(pthreads, pthread_create,
1038         MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
1039         AC_CHECK_LIB(pthread, pthread_create,
1040             MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
1041             AC_CHECK_LIB(c_r, pthread_create,
1042                 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
1043                 AC_CHECK_LIB(c, pthread_create,
1044                     MOZ_USE_PTHREADS=1
1045                 )
1046             )
1047         )
1048     )
1049     ;;
1050 esac
1052 dnl ========================================================
1053 dnl Do the platform specific pthread hackery
1054 dnl ========================================================
1055 if test "$MOZ_USE_PTHREADS"x != x
1056 then
1057     dnl
1058     dnl See if -pthread is supported.
1059     dnl
1060     rm -f conftest*
1061     ac_cv_have_dash_pthread=no
1062     AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
1063     echo 'int main() { return 0; }' | cat > conftest.c
1064     ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
1065     if test $? -eq 0; then
1066         if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
1067             ac_cv_have_dash_pthread=yes
1068             case "$target_os" in
1069             freebsd*)
1070 # Freebsd doesn't use -pthread for compiles, it uses them for linking
1071                 ;;
1072             *)
1073                 CFLAGS="$CFLAGS -pthread"
1074                 CXXFLAGS="$CXXFLAGS -pthread"
1075                 ;;
1076             esac
1077         fi
1078     fi
1079     rm -f conftest*
1080     AC_MSG_RESULT($ac_cv_have_dash_pthread)
1082     dnl
1083     dnl See if -pthreads is supported.
1084     dnl
1085     ac_cv_have_dash_pthreads=no
1086     if test "$ac_cv_have_dash_pthread" = "no"; then
1087         AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
1088         echo 'int main() { return 0; }' | cat > conftest.c
1089         ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
1090         if test $? -eq 0; then
1091             if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
1092                 ac_cv_have_dash_pthreads=yes
1093                 CFLAGS="$CFLAGS -pthreads"
1094                 CXXFLAGS="$CXXFLAGS -pthreads"
1095             fi
1096         fi
1097         rm -f conftest*
1098         AC_MSG_RESULT($ac_cv_have_dash_pthreads)
1099     fi
1101     case "$target" in
1102         *-*-freebsd*)
1103             AC_DEFINE(_REENTRANT)
1104             AC_DEFINE(_THREAD_SAFE)
1105             dnl -pthread links in -lpthread, so don't specify it explicitly.
1106             if test "$ac_cv_have_dash_pthread" = "yes"; then
1107                 _PTHREAD_LDFLAGS="-pthread"
1108             fi
1109             ;;
1111         *-*-openbsd*|*-*-bsdi*)
1112             AC_DEFINE(_REENTRANT)
1113             AC_DEFINE(_THREAD_SAFE)
1114             dnl -pthread links in -lc_r, so don't specify it explicitly.
1115             if test "$ac_cv_have_dash_pthread" = "yes"; then
1116                 _PTHREAD_LDFLAGS="-pthread"
1117             fi
1118             ;;
1120         *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
1121             AC_DEFINE(_REENTRANT)
1122             ;;
1124     esac
1125     LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
1126     AC_SUBST(MOZ_USE_PTHREADS)
1127     MOZ_CHECK_HEADERS(pthread.h)
1131 dnl Checks for library functions.
1132 dnl ========================================================
1133 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)
1135 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
1136 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
1137                ac_cv_clock_monotonic,
1138                [for libs in "" -lrt; do
1139                     _SAVE_LIBS="$LIBS"
1140                     LIBS="$LIBS $libs"
1141 dnl clock_gettime is available on OSX since 10.12, so depending on MACOSX_DEPLOYMENT_TARGET,
1142 dnl we should or not be able to use it. To detect if we can, we need to make the
1143 dnl availability attribute strict, so that compilation fails when the target is < 10.12.
1144                     AC_TRY_LINK([#define availability(os, ...) availability(os, strict, __VA_ARGS)
1145                                  #include <time.h>],
1146                                  [ struct timespec ts;
1147                                    clock_gettime(CLOCK_MONOTONIC, &ts); ],
1148                                  ac_cv_clock_monotonic=$libs
1149                                  LIBS="$_SAVE_LIBS"
1150                                  break,
1151                                  ac_cv_clock_monotonic=no)
1152                     LIBS="$_SAVE_LIBS"
1153                 done])
1154 if test "$ac_cv_clock_monotonic" != "no"; then
1155     HAVE_CLOCK_MONOTONIC=1
1156     REALTIME_LIBS=$ac_cv_clock_monotonic
1157     AC_DEFINE(HAVE_CLOCK_MONOTONIC)
1158     AC_SUBST(HAVE_CLOCK_MONOTONIC)
1159     AC_SUBST_LIST(REALTIME_LIBS)
1162 dnl Turn on warnings-as-errors to prevent implicit declaration of
1163 dnl pthread_cond_timedwait_monotonic_np, which can cause this test to
1164 dnl inadvertently pass even if the function does not really exist.
1165 _SAVE_CFLAGS="$CFLAGS"
1166 CFLAGS="$CFLAGS $WARNINGS_AS_ERRORS"
1167 AC_CACHE_CHECK(for pthread_cond_timedwait_monotonic_np,
1168                ac_cv_pthread_cond_timedwait_monotonic_np,
1169                AC_TRY_LINK([#include <pthread.h>],
1170                            [pthread_cond_timedwait_monotonic_np(0, 0, 0);],
1171                            ac_cv_pthread_cond_timewait_monotonic_np=yes,
1172                            ac_cv_pthread_cond_timewait_monotonic_np=no))
1173 if test "$ac_cv_pthread_cond_timewait_monotonic_np" != "no"; then
1174     AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC)
1176 CFLAGS=$_SAVE_CFLAGS
1178 AC_CACHE_CHECK(
1179     [for res_ninit()],
1180     ac_cv_func_res_ninit,
1181     [if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then
1182         dnl no need for res_ninit() on NetBSD and OpenBSD
1183         ac_cv_func_res_ninit=no
1184      else
1185         AC_TRY_LINK([
1186             #ifdef linux
1187             #define _BSD_SOURCE 1
1188             #endif
1189             #include <sys/types.h>
1190             #include <netinet/in.h>
1191             #include <arpa/nameser.h>
1192             #include <resolv.h>
1193             ],
1194             [int foo = res_ninit(&_res);],
1195             [ac_cv_func_res_ninit=yes],
1196             [ac_cv_func_res_ninit=no])
1197      fi
1198     ])
1200 if test "$ac_cv_func_res_ninit" = "yes"; then
1201     AC_DEFINE(HAVE_RES_NINIT)
1202 dnl must add the link line we do something as foolish as this... dougt
1203 dnl else
1204 dnl    AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
1205 dnl        AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
1208 AC_LANG_C
1210 dnl **********************
1211 dnl *** va_copy checks ***
1212 AC_CACHE_CHECK([for an implementation of va_copy()],
1213                ac_cv_va_copy,
1214     [AC_TRY_COMPILE([#include <stdarg.h>
1215                      #include <stdlib.h>
1216         void f (int i, ...) {
1217             va_list args1, args2;
1218             va_start (args1, i);
1219             va_copy (args2, args1);
1220             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1221                 exit (1);
1222             va_end (args1); va_end (args2);
1223         }],
1224         [f(0, 42); return 0],
1225         [ac_cv_va_copy=yes],
1226         [ac_cv_va_copy=no]
1227     )]
1229 AC_CACHE_CHECK([whether va_list can be copied by value],
1230                ac_cv_va_val_copy,
1231     [AC_TRY_COMPILE([#include <stdarg.h>
1232                      #include <stdlib.h>
1233         void f (int i, ...) {
1234             va_list args1, args2;
1235             va_start (args1, i);
1236             args2 = args1;
1237             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
1238                 exit (1);
1239             va_end (args1); va_end (args2);
1240         }],
1241         [f(0, 42); return 0],
1242         [ac_cv_va_val_copy=yes],
1243         [ac_cv_va_val_copy=no],
1244     )]
1246 if test "x$ac_cv_va_copy" = "xyes"; then
1247     AC_DEFINE(VA_COPY, va_copy)
1248     AC_DEFINE(HAVE_VA_COPY)
1251 if test "x$ac_cv_va_val_copy" = "xno"; then
1252    AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
1255 dnl ===================================================================
1256 dnl ========================================================
1257 dnl Put your C++ language/feature checks below
1258 dnl ========================================================
1259 AC_LANG_CPLUSPLUS
1261 ARM_ABI_PREFIX=
1262 if test "$GNU_CC"; then
1263   if test "$CPU_ARCH" = "arm" ; then
1264     AC_CACHE_CHECK(for ARM EABI,
1265         ac_cv_gcc_arm_eabi,
1266         [AC_TRY_COMPILE([],
1267                         [
1268 #if defined(__ARM_EABI__)
1269   return 0;
1270 #else
1271 #error Not ARM EABI.
1272 #endif
1273                         ],
1274                         ac_cv_gcc_arm_eabi="yes",
1275                         ac_cv_gcc_arm_eabi="no")])
1276     if test "$ac_cv_gcc_arm_eabi" = "yes"; then
1277         HAVE_ARM_EABI=1
1278         ARM_ABI_PREFIX=eabi-
1279     else
1280         ARM_ABI_PREFIX=oabi-
1281     fi
1282   fi
1284   TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
1287 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
1288 # We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
1289 # enabled, the linker in xcode 4.1 will crash. Without this it would crash when
1290 # linking XUL.
1291 _SAVE_LDFLAGS=$LDFLAGS
1292 LDFLAGS="$LDFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
1293 AC_CACHE_CHECK(for __thread keyword for TLS variables,
1294                ac_cv_thread_keyword,
1295                [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
1296                             [return tlsIsMainThread;],
1297                             ac_cv_thread_keyword=yes,
1298                             ac_cv_thread_keyword=no)])
1299 LDFLAGS=$_SAVE_LDFLAGS
1300 # The custom dynamic linker doesn't support TLS variables
1301 MOZ_TLS=
1302 if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
1303   # mips builds fail with TLS variables because of a binutils bug.
1304   # See bug 528687
1305   # OpenBSD doesn't have TLS support, and the test succeeds with clang++
1306   case "${target}" in
1307     mips*-*)
1308       :
1309       ;;
1310     *-android*|*-linuxandroid*)
1311       :
1312       ;;
1313     *-openbsd*)
1314       :
1315       ;;
1316     *)
1317       AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
1318       MOZ_TLS=1
1319       ;;
1320   esac
1323 dnl Using the custom linker on ARMv6 requires 16k alignment of ELF segments.
1324 if test -n "$MOZ_LINKER"; then
1325   if test "$CPU_ARCH" = arm; then
1326     dnl When building for < ARMv7, we need to ensure 16k alignment of ELF segments
1327     if test -n "$ARM_ARCH" && test "$ARM_ARCH" -lt 7; then
1328       LDFLAGS="$LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
1329       _SUBDIR_LDFLAGS="$_SUBDIR_LDFLAGS -Wl,-z,max-page-size=0x4000 -Wl,-z,common-page-size=0x4000"
1330     fi
1331   fi
1333 dnl gold emits wrong sysv-style elf hash tables when building both sysv and
1334 dnl style tables. https://sourceware.org/bugzilla/show_bug.cgi?id=13597
1335 dnl Since the linker only understands the sysv ones, no need to build the
1336 dnl gnu style tables anyways.
1337   LDFLAGS="$LDFLAGS -Wl,--hash-style=sysv"
1340 dnl End of C++ language/feature checks
1341 AC_LANG_C
1343 dnl ========================================================
1344 dnl =  Internationalization checks
1345 dnl ========================================================
1347 dnl Internationalization and Locale support is different
1348 dnl on various UNIX platforms.  Checks for specific i18n
1349 dnl features go here.
1351 AC_HAVE_FUNCS(localeconv)
1353 fi # ! SKIP_COMPILER_CHECKS
1355 if test -n "${COMPILE_ENVIRONMENT}"; then
1356   MOZ_CHECK_ALLOCATOR
1359 TARGET_XPCOM_ABI=
1360 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
1361     TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
1362     AC_DEFINE_UNQUOTED(TARGET_XPCOM_ABI, ["${TARGET_XPCOM_ABI}"])
1365 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
1366 dnl features that Windows actually does support.
1368 if test -n "$SKIP_COMPILER_CHECKS"; then
1369    dnl Windows has malloc.h
1370    AC_DEFINE(MALLOC_H, [<malloc.h>])
1371    AC_DEFINE(HAVE_FORCEINLINE)
1372    AC_DEFINE(HAVE_LOCALECONV)
1373 fi # SKIP_COMPILER_CHECKS
1375 dnl Mozilla specific options
1376 dnl ========================================================
1377 dnl The macros used for command line options
1378 dnl are defined in build/autoconf/altoptions.m4.
1380 dnl ========================================================
1381 dnl =
1382 dnl = Check for external package dependencies
1383 dnl =
1384 dnl ========================================================
1385 MOZ_ARG_HEADER(External Packages)
1387 dnl ========================================================
1388 dnl system libevent Support
1389 dnl ========================================================
1390 MOZ_ARG_WITH_STRING(system-libevent,
1391 [  --with-system-libevent[=PFX]
1392                           Use system libevent [installed at prefix PFX]],
1393     LIBEVENT_DIR=$withval)
1395 _SAVE_CFLAGS=$CFLAGS
1396 _SAVE_LDFLAGS=$LDFLAGS
1397 _SAVE_LIBS=$LIBS
1398 if test "$LIBEVENT_DIR" = yes; then
1399     PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
1400         MOZ_SYSTEM_LIBEVENT=1,
1401         LIBEVENT_DIR=/usr)
1403 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
1404     MOZ_SYSTEM_LIBEVENT=
1405 elif test -z "$MOZ_SYSTEM_LIBEVENT"; then
1406     CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
1407     LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
1408     MOZ_CHECK_HEADER(event.h,
1409         [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
1410              AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
1411          fi],
1412         AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
1413     AC_CHECK_LIB(event, event_init,
1414                  [MOZ_SYSTEM_LIBEVENT=1
1415                   MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
1416                   MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
1417                  [MOZ_SYSTEM_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
1419 CFLAGS=$_SAVE_CFLAGS
1420 LDFLAGS=$_SAVE_LDFLAGS
1421 LIBS=$_SAVE_LIBS
1423 AC_SUBST(MOZ_SYSTEM_LIBEVENT)
1425 if test -z "$SKIP_LIBRARY_CHECKS"; then
1427 dnl ========================================================
1428 dnl system PNG Support
1429 dnl ========================================================
1430 MOZ_ARG_WITH_STRING(system-png,
1431 [  --with-system-png[=PFX]
1432                           Use system libpng [installed at prefix PFX]],
1433     PNG_DIR=$withval)
1435 _SAVE_CFLAGS=$CFLAGS
1436 _SAVE_LDFLAGS=$LDFLAGS
1437 _SAVE_LIBS=$LIBS
1438 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
1439     CFLAGS="-I${PNG_DIR}/include $CFLAGS"
1440     LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
1442 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
1443     MOZ_SYSTEM_PNG=
1444 else
1445     AC_CHECK_LIB(png, png_get_valid, [MOZ_SYSTEM_PNG=1 MOZ_PNG_LIBS="-lpng"],
1446                  AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
1447     AC_CHECK_LIB(png, png_get_acTL, ,
1448                  AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]))
1450 if test "$MOZ_SYSTEM_PNG" = 1; then
1451     AC_TRY_COMPILE([ #include <stdio.h>
1452                      #include <sys/types.h>
1453                      #include <png.h> ],
1454                    [ #if PNG_LIBPNG_VER < $MOZPNG
1455                      #error "Insufficient libpng version ($MOZPNG required)."
1456                      #endif
1457                      #ifndef PNG_UINT_31_MAX
1458                      #error "Insufficient libpng version."
1459                      #endif ],
1460                    MOZ_SYSTEM_PNG=1,
1461                    AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
1463 CFLAGS=$_SAVE_CFLAGS
1464 LDFLAGS=$_SAVE_LDFLAGS
1465 LIBS=$_SAVE_LIBS
1467 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$MOZ_SYSTEM_PNG" = 1; then
1468     MOZ_PNG_CFLAGS="-I${PNG_DIR}/include"
1469     MOZ_PNG_LIBS="-L${PNG_DIR}/lib ${MOZ_PNG_LIBS}"
1472 fi # SKIP_LIBRARY_CHECKS
1474 dnl ========================================================
1475 dnl =
1476 dnl = Application
1477 dnl =
1478 dnl ========================================================
1480 MOZ_ARG_HEADER(Application)
1482 ENABLE_SYSTEM_EXTENSION_DIRS=1
1483 MOZ_BRANDING_DIRECTORY=
1484 MOZ_OFFICIAL_BRANDING=
1485 MOZ_AUTH_EXTENSION=1
1486 MOZ_SPELLCHECK=1
1487 MOZ_UNIVERSALCHARDET=1
1488 MOZ_XUL=1
1489 MOZ_ZIPWRITER=1
1490 MOZ_NO_SMART_CARDS=
1491 MOZ_SANDBOX=1
1492 MOZ_BINARY_EXTENSIONS=
1493 MOZ_DEVTOOLS=server
1495 dnl ========================================================
1496 dnl = Trademarked Branding
1497 dnl ========================================================
1498 MOZ_ARG_ENABLE_BOOL(official-branding,
1499 [  --enable-official-branding
1500                           Enable Official mozilla.org Branding
1501                           Do not distribute builds with
1502                           --enable-official-branding unless you have
1503                           permission to use trademarks per
1504                           http://www.mozilla.org/foundation/trademarks/ .],
1505     MOZ_OFFICIAL_BRANDING=1,
1506     MOZ_OFFICIAL_BRANDING=)
1508 # Allow the application to influence configure with a confvars.sh script.
1509 AC_MSG_CHECKING([if app-specific confvars.sh exists])
1510 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
1511   AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
1512   . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
1513 else
1514   AC_MSG_RESULT([no])
1517 dnl ========================================================
1518 dnl Ensure Android SDK and build-tools versions depending on
1519 dnl mobile target.
1520 dnl ========================================================
1522 case "$MOZ_BUILD_APP" in
1523 mobile/android)
1524     MOZ_ANDROID_SDK
1525     ;;
1526 esac
1528 dnl ========================================================
1529 dnl =
1530 dnl = Toolkit Options
1531 dnl =
1532 dnl ========================================================
1533 MOZ_ARG_HEADER(Toolkit Options)
1535 dnl ========================================================
1536 dnl = Enable the toolkit as needed                         =
1537 dnl ========================================================
1539 case "$MOZ_WIDGET_TOOLKIT" in
1541 cocoa)
1542     LDFLAGS="$LDFLAGS -framework Cocoa"
1543     # Use -Wl as a trick to avoid -framework and framework names from
1544     # being separated by AC_SUBST_LIST.
1545     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'
1546     TK_CFLAGS=""
1547     CFLAGS="$CFLAGS $TK_CFLAGS"
1548     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
1549     MOZ_USER_DIR="Mozilla"
1550     MOZ_FS_LAYOUT=bundle
1551     ;;
1553 uikit)
1554     LDFLAGS="$LDFLAGS -framework UIKit"
1555     TK_CFLAGS=""
1556     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'
1557     CFLAGS="$CFLAGS $TK_CFLAGS"
1558     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
1559     MOZ_USER_DIR="Mozilla"
1560     MOZ_FS_LAYOUT=bundle
1561     ;;
1563 esac
1565 if test "$OS_TARGET" = Darwin; then
1566     LDFLAGS="$LDFLAGS -lobjc"
1569 dnl there are a lot of tests on MOZ_ENABLE_GTK below, that are more convenient
1570 dnl to keep that way than testing against MOZ_WIDGET_TOOLKIT
1571 case "$MOZ_WIDGET_TOOLKIT" in
1572 gtk*)
1573     MOZ_ENABLE_GTK=1
1574     ;;
1575 esac
1577 if test "$COMPILE_ENVIRONMENT"; then
1578   if test "$MOZ_WIDGET_TOOLKIT" = gtk; then
1579     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)
1580     MOZ_GTK3_CFLAGS="-I${_topsrcdir}/widget/gtk/compat-gtk3 $MOZ_GTK3_CFLAGS"
1581     TK_CFLAGS=$MOZ_GTK3_CFLAGS
1582     TK_LIBS=$MOZ_GTK3_LIBS
1583     dnl GDK_VERSION_MIN_REQUIRED is not set here as GDK3 deprecated warnings
1584     dnl are suppressed by widget/gtk/compat-gtk3/gdk/gdkversionmacros.h.
1585     AC_DEFINE_UNQUOTED(GDK_VERSION_MAX_ALLOWED,$GDK_VERSION_MAX_ALLOWED)
1586   fi
1587   if test "$MOZ_ENABLE_GTK"; then
1588     AC_DEFINE_UNQUOTED(GLIB_VERSION_MIN_REQUIRED,$GLIB_VERSION_MIN_REQUIRED)
1589     AC_DEFINE_UNQUOTED(GLIB_VERSION_MAX_ALLOWED,$GLIB_VERSION_MAX_ALLOWED)
1590   fi
1591 fi # COMPILE_ENVIRONMENT
1593 AC_SUBST(MOZ_FS_LAYOUT)
1595 AC_SUBST_LIST(TK_CFLAGS)
1596 AC_SUBST_LIST(TK_LIBS)
1598 dnl ========================================================
1599 dnl =
1600 dnl = Components & Features
1601 dnl =
1602 dnl ========================================================
1603 MOZ_ARG_HEADER(Components and Features)
1605 AC_SUBST(MOZ_OFFICIAL_BRANDING)
1606 if test -n "$MOZ_OFFICIAL_BRANDING"; then
1607   if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
1608     AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
1609   else
1610     MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
1611     AC_DEFINE(MOZ_OFFICIAL_BRANDING)
1612   fi
1615 MOZ_ARG_WITH_STRING(branding,
1616 [  --with-branding=dir     Use branding from the specified directory.],
1617     MOZ_BRANDING_DIRECTORY=$withval)
1619 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
1620 if test -z "$REAL_BRANDING_DIRECTORY"; then
1621   REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
1624 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
1625   . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
1628 AC_SUBST(MOZ_BRANDING_DIRECTORY)
1630 dnl ========================================================
1631 dnl = Distribution ID
1632 dnl ========================================================
1633 MOZ_ARG_WITH_STRING(distribution-id,
1634 [  --with-distribution-id=ID
1635                           Set distribution-specific id (default=org.mozilla)],
1636 [ val=`echo $withval`
1637     MOZ_DISTRIBUTION_ID="$val"])
1639 if test -z "$MOZ_DISTRIBUTION_ID"; then
1640    MOZ_DISTRIBUTION_ID="org.mozilla"
1643 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
1644 AC_SUBST(MOZ_DISTRIBUTION_ID)
1646 dnl ========================================================
1647 dnl = libproxy support
1648 dnl ========================================================
1650 if test "$MOZ_ENABLE_GTK"
1651 then
1652     MOZ_ENABLE_LIBPROXY=
1654     MOZ_ARG_ENABLE_BOOL(libproxy,
1655     [  --enable-libproxy         Enable libproxy support ],
1656     MOZ_ENABLE_LIBPROXY=1,
1657     MOZ_ENABLE_LIBPROXY=)
1659     if test "$MOZ_ENABLE_LIBPROXY"
1660     then
1661         PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
1662         AC_DEFINE(MOZ_ENABLE_LIBPROXY)
1663     fi
1665 AC_SUBST(MOZ_ENABLE_LIBPROXY)
1667 dnl ========================================================
1668 dnl = dbus support
1669 dnl ========================================================
1671 if test "$MOZ_ENABLE_GTK"
1672 then
1673     MOZ_ENABLE_DBUS=1
1675     MOZ_ARG_DISABLE_BOOL(dbus,
1676     [  --disable-dbus          Disable dbus support ],
1677         MOZ_ENABLE_DBUS=,
1678         MOZ_ENABLE_DBUS=1)
1680     if test "$MOZ_ENABLE_DBUS"
1681     then
1682         PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
1683         PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
1684         AC_DEFINE(MOZ_ENABLE_DBUS)
1685     fi
1687 AC_SUBST(MOZ_ENABLE_DBUS)
1689 AC_TRY_COMPILE([#include <linux/ethtool.h>],
1690                [ struct ethtool_cmd cmd; cmd.speed_hi = 0; ],
1691                MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI=1)
1693 AC_SUBST(MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI)
1695 if test -n "$MOZ_WEBRTC"; then
1696     if test -n "$MOZ_X11"; then
1697       MOZ_WEBRTC_X11_LIBS="-lXext -lXdamage -lXfixes -lXcomposite"
1698     fi
1701 AC_SUBST_LIST(MOZ_WEBRTC_X11_LIBS)
1703 dnl ========================================================
1704 dnl = Apple platform decoder support
1705 dnl ========================================================
1706 if test "$COMPILE_ENVIRONMENT"; then
1707 if test -n "$MOZ_APPLEMEDIA"; then
1708   # hack in frameworks for fmp4 - see bug 1029974
1709   # We load VideoToolbox and CoreMedia dynamically, so they don't appear here.
1710   LDFLAGS="$LDFLAGS -framework AudioToolbox"
1711   dnl Verify CoreMedia is available.
1712   AC_CHECK_HEADERS([CoreMedia/CoreMedia.h VideoToolbox/VideoToolbox.h], [],
1713     [AC_MSG_ERROR([MacOS X 10.9 SDK or later is required])])
1715 fi # COMPILE_ENVIRONMENT
1717 dnl ========================================================
1718 dnl = Handle dependent MEDIA defines
1719 dnl ========================================================
1721 MOZ_WEBM_ENCODER=1
1722 AC_DEFINE(MOZ_WEBM_ENCODER)
1723 AC_SUBST(MOZ_WEBM_ENCODER)
1725 dnl ========================================================
1726 dnl NegotiateAuth
1727 dnl ========================================================
1729 MOZ_ARG_DISABLE_BOOL(negotiateauth,
1730 [  --disable-negotiateauth Disable GSS-API negotiation ],
1731     MOZ_AUTH_EXTENSION=,
1732     MOZ_AUTH_EXTENSION=1 )
1734 dnl ========================================================
1735 dnl Searching of system directories for extensions.
1736 dnl Note: this switch is meant to be used for test builds
1737 dnl whose behavior should not depend on what happens to be
1738 dnl installed on the local machine.
1739 dnl ========================================================
1740 MOZ_ARG_DISABLE_BOOL(system-extension-dirs,
1741 [  --disable-system-extension-dirs
1742                           Disable searching system- and account-global
1743                           directories for extensions of any kind; use
1744                           only profile-specific extension directories],
1745   ENABLE_SYSTEM_EXTENSION_DIRS=,
1746   ENABLE_SYSTEM_EXTENSION_DIRS=1 )
1747 if test "$ENABLE_SYSTEM_EXTENSION_DIRS"; then
1748   AC_DEFINE(ENABLE_SYSTEM_EXTENSION_DIRS)
1751 dnl ========================================================
1752 dnl = Universalchardet
1753 dnl ========================================================
1754 MOZ_ARG_DISABLE_BOOL(universalchardet,
1755 [  --disable-universalchardet
1756                           Disable universal encoding detection],
1757   MOZ_UNIVERSALCHARDET=,
1758   MOZ_UNIVERSALCHARDET=1 )
1760 dnl ========================================================
1761 dnl Gamepad support
1762 dnl ========================================================
1764 if test "$COMPILE_ENVIRONMENT" ; then
1766 dnl Moved gamepad platform check to moz.build, linux header check still needed here.
1767 if test "$OS_TARGET" = "Linux"; then
1768     MOZ_CHECK_HEADER([linux/joystick.h])
1769     if test "$ac_cv_header_linux_joystick_h" != "yes"; then
1770       AC_MSG_ERROR([Can't find header linux/joystick.h, needed for gamepad support. Please install Linux kernel headers.])
1771     fi
1774 fi # COMPILE_ENVIRONMENT
1777 dnl ========================================================
1778 dnl = Breakpad crash reporting (on by default on supported platforms)
1779 dnl ========================================================
1781 case $target in
1782 i?86-*-mingw*|x86_64-*-mingw*|aarch64-*-mingw*)
1783   MOZ_CRASHREPORTER=1
1784   ;;
1785 i?86-apple-darwin*|x86_64-apple-darwin*|aarch64-apple-darwin*)
1786   MOZ_CRASHREPORTER=1
1787   ;;
1788 *-android*|*-linuxandroid*)
1789   dnl Android/arm is arm-unknown-linux-androideabi, so android condition should
1790   dnl be before Linux condition
1791   dnl The crash reporter prevents crash stacktraces to be logged in the
1792   dnl logs so we leave it out by default in developer builds.
1793   if test -z "$DEVELOPER_OPTIONS"; then
1794     MOZ_CRASHREPORTER=1
1795   fi
1796   ;;
1797 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
1798   if test "$MOZ_ENABLE_GTK"; then
1799     MOZ_CRASHREPORTER=1
1800   fi
1801   ;;
1802 esac
1804 MOZ_ARG_DISABLE_BOOL(crashreporter,
1805 [  --disable-crashreporter Disable breakpad crash reporting],
1806     [MOZ_CRASHREPORTER=],
1807     [MOZ_CRASHREPORTER=F # Force enable breakpad])
1809 if test "$OS_ARCH" != "$HOST_OS_ARCH" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "Darwin" -a "$MOZ_WIDGET_TOOLKIT" != "android"; then
1810   if test "$MOZ_CRASHREPORTER" = F; then
1811     AC_MSG_ERROR([Cannot --enable-crashreporter, as breakpad tools do not support compiling on $HOST_OS_ARCH while targeting $OS_ARCH.])
1812   fi
1813   MOZ_CRASHREPORTER=
1816 if test -n "$MOZ_CRASHREPORTER"; then
1817    AC_DEFINE(MOZ_CRASHREPORTER)
1819   if test "$OS_TARGET" = "Linux" && \
1820     test -z "$SKIP_LIBRARY_CHECKS"; then
1821     PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
1822   fi
1824   if test "$OS_ARCH" = "WINNT"; then
1825     if test -z "$HAVE_64BIT_BUILD" -a -n "$COMPILE_ENVIRONMENT"; then
1826       MOZ_CRASHREPORTER_INJECTOR=1
1827       AC_DEFINE(MOZ_CRASHREPORTER_INJECTOR)
1828     fi
1829   fi
1832 dnl ========================================================
1833 dnl = Enable compilation of specific extension modules
1834 dnl ========================================================
1836 MOZ_ARG_ENABLE_STRING(extensions,
1837 [  --enable-extensions     Enable extensions],
1838 [ for option in `echo $enableval | sed 's/,/ /g'`; do
1839     if test "$option" = "yes" -o "$option" = "all"; then
1840         AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
1841     elif test "$option" = "no" -o "$option" = "none"; then
1842         MOZ_EXTENSIONS=""
1843     elif test "$option" = "default"; then
1844         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
1845     elif test `echo "$option" | grep -c \^-` != 0; then
1846         option=`echo $option | sed 's/^-//'`
1847         MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
1848     else
1849         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
1850     fi
1851 done],
1852     MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
1854 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
1855 dnl when trying to build a nonexistent extension.
1856 for extension in $MOZ_EXTENSIONS; do
1857     if test ! -d "${srcdir}/extensions/${extension}"; then
1858         AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
1859     fi
1860 done
1862 # Avoid defining MOZ_ENABLE_CAIRO_FT on Windows platforms because
1863 # "cairo-ft-font.c" includes <dlfcn.h>, which only exists on posix platforms
1864 if test -n "$MOZ_TREE_FREETYPE" -a "$OS_TARGET" != WINNT; then
1865    MOZ_ENABLE_CAIRO_FT=1
1866    FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
1867    CAIRO_FT_CFLAGS="-I$_topsrcdir/modules/freetype2/include"
1868    AC_SUBST_LIST(CAIRO_FT_CFLAGS)
1871 dnl ========================================================
1872 dnl Updater
1873 dnl ========================================================
1875 MOZ_ARG_DISABLE_BOOL(updater,
1876 [  --disable-updater       Disable building of updater],
1877     MOZ_UPDATER=,
1878     MOZ_UPDATER=1 )
1880 if test -n "$MOZ_UPDATER"; then
1881     AC_DEFINE(MOZ_UPDATER)
1884 dnl ========================================================
1885 dnl parental controls (for Windows Vista)
1886 dnl ========================================================
1887 MOZ_ARG_DISABLE_BOOL(parental-controls,
1888 [  --disable-parental-controls
1889                           Do not build parental controls],
1890    MOZ_DISABLE_PARENTAL_CONTROLS=1,
1891    MOZ_DISABLE_PARENTAL_CONTROLS=)
1892 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
1893     AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
1896 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
1898 dnl ========================================================
1899 dnl = Disable smartcard support
1900 dnl ========================================================
1901 if test -n "$MOZ_NO_SMART_CARDS"; then
1902     AC_DEFINE(MOZ_NO_SMART_CARDS)
1904 AC_SUBST(MOZ_NO_SMART_CARDS)
1906 dnl ========================================================
1907 dnl = Sandboxing support
1908 dnl ========================================================
1909 if test -n "$MOZ_TSAN" -o -n "$MOZ_ASAN"; then
1910     # Bug 1182565: TSan conflicts with sandboxing on Linux.
1911     # Bug 1287971: LSan also conflicts with sandboxing on Linux.
1912     case $OS_TARGET in
1913     Linux|Android)
1914         MOZ_SANDBOX=
1915         ;;
1916     esac
1919 MOZ_ARG_DISABLE_BOOL(sandbox,
1920 [  --disable-sandbox        Disable sandboxing support],
1921     MOZ_SANDBOX=,
1922     MOZ_SANDBOX=1)
1924 case "$OS_TARGET" in
1925 WINNT|Darwin|OpenBSD)
1927 Linux)
1928     case $CPU_ARCH in
1929         x86_64|x86|arm|aarch64)
1930         ;;
1931         # Linux sandbox is only available on x86{,_64} and arm{,64}.
1932         *)
1933             MOZ_SANDBOX=
1934         ;;
1935     esac
1936     ;;
1938     # Only enable the sandbox by default on Linux, OpenBSD, macOS, and Windows
1939     MOZ_SANDBOX=
1941 esac
1943 if test -n "$MOZ_SANDBOX"; then
1944     AC_DEFINE(MOZ_SANDBOX)
1947 AC_SUBST(MOZ_SANDBOX)
1950 dnl ========================================================
1951 dnl =
1952 dnl = Module specific options
1953 dnl =
1954 dnl ========================================================
1955 MOZ_ARG_HEADER(Individual module options)
1957 dnl ==============================
1958 dnl === SQLite fdatasync check ===
1959 dnl ==============================
1960 dnl Check to see if fdatasync is available and make use of it
1961 AC_CHECK_FUNC(fdatasync)
1963 dnl ========================================================
1964 dnl = Disable zipwriter
1965 dnl ========================================================
1966 MOZ_ARG_DISABLE_BOOL(zipwriter,
1967 [  --disable-zipwriter     Disable zipwriter component],
1968     MOZ_ZIPWRITER=,
1969     MOZ_ZIPWRITER=1 )
1970 AC_SUBST(MOZ_ZIPWRITER)
1972 dnl ========================================================
1973 dnl =
1974 dnl = Feature options that require extra sources to be pulled
1975 dnl =
1976 dnl ========================================================
1977 dnl MOZ_ARG_HEADER(Features that require extra sources)
1979 dnl ========================================================
1980 dnl =
1981 dnl = Runtime debugging and Optimization Options
1982 dnl =
1983 dnl ========================================================
1984 MOZ_ARG_HEADER(Runtime debugging and Optimizations)
1986 dnl ========================================================
1987 dnl = Enable code optimization. ON by default.
1988 dnl ========================================================
1990 # Use value from moz.configure if one is defined. Else use our computed
1991 # value.
1992 if test -n "${MOZ_CONFIGURE_OPTIMIZE_FLAGS}"; then
1993     MOZ_OPTIMIZE_FLAGS=${MOZ_CONFIGURE_OPTIMIZE_FLAGS}
1996 if test "$COMPILE_ENVIRONMENT"; then
1997 if test -n "$MOZ_OPTIMIZE"; then
1998     AC_MSG_CHECKING([for valid C compiler optimization flags])
1999     _SAVE_CFLAGS=$CFLAGS
2000     CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
2001     AC_TRY_COMPILE([#include <stdio.h>],
2002         [printf("Hello World\n");],
2003         _results=yes,
2004         _results=no)
2005     AC_MSG_RESULT([$_results])
2006     if test "$_results" = "no"; then
2007         AC_MSG_ERROR([These compiler flags for C are invalid: $MOZ_OPTIMIZE_FLAGS])
2008     fi
2009     CFLAGS=$_SAVE_CFLAGS
2010     if test -n "$MOZ_LTO" -a -n "$CLANG_CC"; then
2011         # When using llvm-based LTO, non numeric optimization levels are
2012         # not supported by the linker, so force the linker to use -O2 (
2013         # which doesn't influence the level compilation units are actually
2014         # compiled at).
2015         case " $MOZ_OPTIMIZE_FLAGS " in
2016         *\ -Os\ *|*\ -Oz\ *)
2017             MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -O2"
2018             ;;
2019         esac
2020     fi
2022 fi # COMPILE_ENVIRONMENT
2024 AC_SUBST_LIST(MOZ_OPTIMIZE_FLAGS)
2025 AC_SUBST_LIST(MOZ_OPTIMIZE_LDFLAGS)
2026 AC_SUBST_LIST(MOZ_PGO_OPTIMIZE_FLAGS)
2028 dnl ========================================================
2029 dnl = Enable runtime logging
2030 dnl ========================================================
2031 AC_DEFINE(MOZ_LOGGING)
2032 AC_DEFINE(FORCE_PR_LOG)
2034 dnl ========================================================
2035 dnl = This will enable logging of addref, release, ctor, dtor.
2036 dnl ========================================================
2037 _ENABLE_LOGREFCNT=42
2038 MOZ_ARG_ENABLE_BOOL(logrefcnt,
2039 [  --enable-logrefcnt      Enable logging of refcounts (default=debug) ],
2040     _ENABLE_LOGREFCNT=1,
2041     _ENABLE_LOGREFCNT= )
2042 if test "$_ENABLE_LOGREFCNT" = "1"; then
2043     AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
2044 elif test -z "$_ENABLE_LOGREFCNT"; then
2045     AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
2048 dnl ========================================================
2049 dnl moz_dump_painting
2050 dnl ========================================================
2051 MOZ_ARG_ENABLE_BOOL(dump-painting,
2052 [  --enable-dump-painting          Enable paint debugging.],
2053     MOZ_DUMP_PAINTING=1,
2054     MOZ_DUMP_PAINTING= )
2055 if test -n "$MOZ_DUMP_PAINTING"; then
2056     AC_DEFINE(MOZ_DUMP_PAINTING)
2057     AC_DEFINE(MOZ_LAYERS_HAVE_LOG)
2059 if test -n "$MOZ_DEBUG"; then
2060     AC_DEFINE(MOZ_DUMP_PAINTING)
2063 case "${OS_TARGET}" in
2064 Android|WINNT|Darwin)
2065   MOZ_GLUE_IN_PROGRAM=
2066   ;;
2068   dnl On !Android !Windows !OSX, we only want to link executables against mozglue
2069   MOZ_GLUE_IN_PROGRAM=1
2070   AC_DEFINE(MOZ_GLUE_IN_PROGRAM)
2071   ;;
2072 esac
2074 dnl ========================================================
2075 dnl = Jemalloc build setup
2076 dnl ========================================================
2077 if test -z "$MOZ_MEMORY"; then
2078   case "${target}" in
2079     *-mingw*)
2080       if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
2081         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.])
2082       fi
2083       ;;
2084   esac
2085 else
2086   dnl The generic feature tests that determine how to compute ncpus are long and
2087   dnl complicated.  Therefore, simply define special cpp variables for the
2088   dnl platforms we have special knowledge of.
2089   case "${target}" in
2090   *-mingw*)
2091     export MOZ_NO_DEBUG_RTL=1
2092     ;;
2093   esac
2094 fi # MOZ_MEMORY
2095 AC_SUBST(MOZ_GLUE_IN_PROGRAM)
2097 dnl ========================================================
2098 dnl = Enable using the clang plugin to build
2099 dnl ========================================================
2101 if test -n "$COMPILE_ENVIRONMENT"; then
2102 MOZ_CONFIG_CLANG_PLUGIN
2103 fi # COMPILE_ENVIRONMENT
2105 dnl ========================================================
2106 dnl = frontend JS debug mode
2107 dnl ========================================================
2109 MOZ_ARG_ENABLE_BOOL(debug-js-modules,
2110 [  --enable-debug-js-modules  Enable debug mode for frontend JS libraries],
2111    DEBUG_JS_MODULES=1,
2112    DEBUG_JS_MODULES=)
2114 AC_SUBST(DEBUG_JS_MODULES)
2116 dnl ========================================================
2117 dnl =
2118 dnl = Profiling and Instrumenting
2119 dnl =
2120 dnl ========================================================
2121 MOZ_ARG_HEADER(Profiling and Instrumenting)
2123 dnl ========================================================
2124 dnl = Support for demangling undefined symbols
2125 dnl ========================================================
2126 if test -z "$SKIP_LIBRARY_CHECKS"; then
2127     AC_LANG_SAVE
2128     AC_LANG_CPLUSPLUS
2129     AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
2130     AC_LANG_RESTORE
2133 # Demangle only for debug or DMD builds
2134 MOZ_DEMANGLE_SYMBOLS=
2135 if test "$HAVE_DEMANGLE" && test "$MOZ_DEBUG" -o "$MOZ_DMD"; then
2136     MOZ_DEMANGLE_SYMBOLS=1
2137     AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
2139 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
2141 dnl ========================================================
2142 dnl = Support for gcc stack unwinding (from gcc 3.3)
2143 dnl ========================================================
2144 if test -z "$SKIP_LIBRARY_CHECKS"; then
2145     AC_LANG_SAVE
2146     AC_LANG_CPLUSPLUS
2147     MOZ_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
2148     AC_LANG_RESTORE
2151 dnl ========================================================
2152 dnl =
2153 dnl = Misc. Options
2154 dnl =
2155 dnl ========================================================
2156 MOZ_ARG_HEADER(Misc. Options)
2158 dnl ========================================================
2159 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
2160 dnl ========================================================
2161 MOZ_ARG_WITH_STRING(user-appdir,
2162 [  --with-user-appdir=DIR  Set user-specific appdir (default=.mozilla)],
2163 [ val=`echo $withval`
2164 if echo "$val" | grep "\/" >/dev/null; then
2165     AC_MSG_ERROR("Homedir must be single relative path.")
2166 else
2167     MOZ_USER_DIR="$val"
2168 fi])
2170 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
2172 if test -z "$SKIP_COMPILER_CHECKS"; then
2173 dnl ========================================================
2174 dnl =
2175 dnl = Compiler Options
2176 dnl =
2177 dnl ========================================================
2178 MOZ_ARG_HEADER(Compiler Options)
2180 dnl ========================================================
2181 dnl Check for gcc -pipe support
2182 dnl ========================================================
2183 AC_MSG_CHECKING([for -pipe support])
2184 if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
2185     dnl Any gcc that supports firefox supports -pipe.
2186     CFLAGS="$CFLAGS -pipe"
2187     CXXFLAGS="$CXXFLAGS -pipe"
2188     AC_MSG_RESULT([yes])
2189 else
2190     AC_MSG_RESULT([no])
2193 fi # ! SKIP_COMPILER_CHECKS
2195 AC_LANG_C
2197 if test "$COMPILE_ENVIRONMENT"; then
2198 MOZ_EXPAND_LIBS
2199 fi # COMPILE_ENVIRONMENT
2201 dnl ========================================================
2202 dnl =
2203 dnl = Static Build Options
2204 dnl =
2205 dnl ========================================================
2206 MOZ_ARG_HEADER(Static build options)
2208 if test -z "$MOZ_SYSTEM_ZLIB"; then
2209 if test -n "$JS_SHARED_LIBRARY" -o -n "$MOZ_LINKER" -o "$MOZ_WIDGET_TOOLKIT" = android; then
2210   ZLIB_IN_MOZGLUE=1
2211   AC_DEFINE(ZLIB_IN_MOZGLUE)
2215 AC_SUBST(ZLIB_IN_MOZGLUE)
2217 dnl ========================================================
2218 dnl =
2219 dnl = Standalone module options
2220 dnl =
2221 dnl ========================================================
2222 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
2224 dnl Check for GLib.
2225 dnl ========================================================
2227 if test -z "$SKIP_PATH_CHECKS"; then
2228 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
2229     if test "$MOZ_ENABLE_GTK" ; then
2230         PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
2231     fi
2235 if test -z "${GLIB_GMODULE_LIBS}" \
2236    -a -n "${GLIB_CONFIG}"\
2237     -a "${GLIB_CONFIG}" != no\
2238 ; then
2239     GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
2242 AC_SUBST_LIST(GLIB_GMODULE_LIBS)
2244 if test "$USE_FC_FREETYPE"; then
2245     if test "$COMPILE_ENVIRONMENT"; then
2246         dnl ========================================================
2247         dnl = Check for freetype2 functionality
2248         dnl ========================================================
2249         if test "$_HAVE_FREETYPE2" -a -z "$MOZ_TREE_FREETYPE"; then
2250             _SAVE_LIBS="$LIBS"
2251             _SAVE_CFLAGS="$CFLAGS"
2252             LIBS="$LIBS $FT2_LIBS"
2253             CFLAGS="$CFLAGS $FT2_CFLAGS"
2255             AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
2256                 ac_cv_member_FT_Bitmap_Size_y_ppem,
2257                 [AC_TRY_COMPILE([#include <ft2build.h>
2258                                  #include FT_FREETYPE_H],
2259                                 [FT_Bitmap_Size s;
2260                                  if (sizeof s.y_ppem) return 0;
2261                                  return 1],
2262                                 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
2263                                 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
2264             if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
2265                 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
2266             else
2267                 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
2268             fi
2269             AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
2270                                $HAVE_FT_BITMAP_SIZE_Y_PPEM,
2271                                [FT_Bitmap_Size structure includes y_ppem field])
2273             AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table)
2275             LIBS="$_SAVE_LIBS"
2276             CFLAGS="$_SAVE_CFLAGS"
2277         fi
2279         _SAVE_CPPFLAGS="$CPPFLAGS"
2280         CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
2281         MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
2282             [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)], [#include <fontconfig/fontconfig.h>])
2283         CPPFLAGS="$_SAVE_CPPFLAGS"
2284     fi
2287 dnl ========================================================
2288 dnl Check if we need the 32-bit Linux SSE2 error dialog
2289 dnl ========================================================
2291 AC_SUBST(MOZ_LINUX_32_SSE2_STARTUP_ERROR)
2293 dnl ========================================================
2294 dnl Check for pixman and cairo
2295 dnl ========================================================
2297 MOZ_TREE_CAIRO=1
2298 MOZ_ARG_ENABLE_BOOL(system-cairo,
2299 [ --enable-system-cairo  Obsolete: do not use this option],
2300 AC_MSG_ERROR(--enable-system-cairo is not supported),
2301 MOZ_TREE_CAIRO=1 )
2303 MOZ_TREE_PIXMAN=1
2304 MOZ_ARG_ENABLE_BOOL(system-pixman,
2305 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
2306 MOZ_TREE_PIXMAN=,
2307 MOZ_TREE_PIXMAN=force,
2308 MOZ_TREE_PIXMAN=1 )
2310 if test "$MOZ_TREE_PIXMAN"; then
2311     AC_DEFINE(MOZ_TREE_PIXMAN)
2312 else
2313     PKG_CHECK_MODULES(MOZ_PIXMAN, pixman-1 >= 0.19.2)
2316 MOZ_CAIRO_CFLAGS="-I${DIST}/include/cairo"
2317 AC_DEFINE(MOZ_TREE_CAIRO)
2319 if test "$OS_ARCH" = "WINNT"; then
2320     # For now we assume that we will have a uint64_t available through
2321     # one of the above headers or mozstdint.h.
2322     AC_DEFINE(HAVE_UINT64_T)
2325 # Define macros for cairo-features.h
2326 TEE_SURFACE_FEATURE="#define CAIRO_HAS_TEE_SURFACE 1"
2327 if test "$MOZ_X11"; then
2328     XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
2329     XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
2330     PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
2332 if test "$_HAVE_FREETYPE2"; then
2333     FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
2334     MOZ_ENABLE_CAIRO_FT=1
2335     CAIRO_FT_CFLAGS="$FT2_CFLAGS"
2338 case "$MOZ_WIDGET_TOOLKIT" in
2339   cocoa | uikit)
2340     QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
2341     QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
2342     QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
2343     ;;
2344   windows)
2345     WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
2346     WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
2347     WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
2349     if test "$COMPILE_ENVIRONMENT"; then
2350       MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
2351     fi
2352     ;;
2353 esac
2354 if test "$USE_FC_FREETYPE"; then
2355     FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
2357 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
2358 AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
2360 AC_SUBST(PS_SURFACE_FEATURE)
2361 AC_SUBST(SVG_SURFACE_FEATURE)
2362 AC_SUBST(XLIB_SURFACE_FEATURE)
2363 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
2364 AC_SUBST(QUARTZ_SURFACE_FEATURE)
2365 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
2366 AC_SUBST(WIN32_SURFACE_FEATURE)
2367 AC_SUBST(OS2_SURFACE_FEATURE)
2368 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
2369 AC_SUBST(FT_FONT_FEATURE)
2370 AC_SUBST(FC_FONT_FEATURE)
2371 AC_SUBST(WIN32_FONT_FEATURE)
2372 AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
2373 AC_SUBST(QUARTZ_FONT_FEATURE)
2374 AC_SUBST(PNG_FUNCTIONS_FEATURE)
2375 AC_SUBST(QT_SURFACE_FEATURE)
2376 AC_SUBST(TEE_SURFACE_FEATURE)
2378 if test "$MOZ_X11"; then
2379     MOZ_CAIRO_OSLIBS="$MOZ_CAIRO_OSLIBS $XLDFLAGS -lXrender"
2382 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
2384 case "$MOZ_WIDGET_TOOLKIT" in
2385 android)
2386     TK_CFLAGS="$MOZ_CAIRO_CFLAGS $MOZ_PIXMAN_CFLAGS"
2387     TK_LIBS="$MOZ_CAIRO_LIBS $MOZ_PIXMAN_LIBS"
2388     ;;
2389 esac
2391 AC_SUBST(MOZ_TREE_CAIRO)
2392 AC_SUBST_LIST(MOZ_CAIRO_CFLAGS)
2393 AC_SUBST_LIST(MOZ_CAIRO_LIBS)
2394 AC_SUBST_LIST(MOZ_CAIRO_OSLIBS)
2395 AC_SUBST(MOZ_TREE_PIXMAN)
2397 BINDGEN_SYSTEM_FLAGS="$_BINDGEN_CFLAGS $NSPR_CFLAGS $NSS_CFLAGS $MOZ_PIXMAN_CFLAGS $MOZ_CAIRO_CFLAGS"
2398 AC_SUBST(BINDGEN_SYSTEM_FLAGS)
2399 BINDGEN_SYSTEM_TOML_FLAGS="$BINDGEN_SYSTEM_FLAGS"
2400 AC_SUBST_TOML_LIST(BINDGEN_SYSTEM_TOML_FLAGS)
2402 dnl ========================================================
2403 dnl disable xul
2404 dnl ========================================================
2405 MOZ_ARG_DISABLE_BOOL(xul,
2406 [  --disable-xul           Disable XUL],
2407     MOZ_XUL= )
2408 if test "$MOZ_XUL"; then
2409   AC_DEFINE(MOZ_XUL)
2410 else
2411   dnl remove extensions that require XUL
2412   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/irc//' -e 's/tasks//'`
2415 AC_SUBST(MOZ_XUL)
2417 dnl ========================================================
2418 dnl necko configuration options
2419 dnl ========================================================
2422 dnl option to disable necko's wifi scanner
2425 if test "$MOZ_WIDGET_TOOLKIT"; then
2427   case "$OS_TARGET" in
2428     Darwin)
2429       NECKO_WIFI=1
2430       ;;
2431     DragonFly|FreeBSD|WINNT)
2432       NECKO_WIFI=1
2433       ;;
2434     Linux)
2435       NECKO_WIFI=1
2436       NECKO_WIFI_DBUS=1
2437       ;;
2438   esac
2442 MOZ_ARG_DISABLE_BOOL(necko-wifi,
2443 [  --disable-necko-wifi    Disable necko wifi scanner],
2444     NECKO_WIFI=,
2445     NECKO_WIFI=1)
2447 if test "$NECKO_WIFI"; then
2448   if test -z "$MOZ_ENABLE_DBUS" -a -n "$NECKO_WIFI_DBUS"; then
2449     AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi])
2450   fi
2451   AC_DEFINE(NECKO_WIFI)
2453 AC_SUBST(NECKO_WIFI)
2454 AC_SUBST(NECKO_WIFI_DBUS)
2456 dnl ========================================================
2457 dnl =
2458 dnl = Maintainer debug option (no --enable equivalent)
2459 dnl =
2460 dnl ========================================================
2462 AC_SUBST_LIST(ASFLAGS)
2463 AC_SUBST(IMPLIB)
2464 AC_SUBST(FILTER)
2465 AC_SUBST(MOZ_AUTH_EXTENSION)
2466 AC_SUBST_LIST(MOZ_DEBUG_LDFLAGS)
2467 AC_SUBST_LIST(WARNINGS_CFLAGS)
2468 AC_SUBST_SET(MOZ_EXTENSIONS)
2470 AC_SUBST(MOZ_UNIVERSALCHARDET)
2471 AC_SUBST(MOZ_SPELLCHECK)
2472 AC_SUBST(MOZ_ANDROID_ANR_REPORTER)
2473 AC_SUBST(MOZ_CRASHREPORTER)
2474 AC_SUBST(MOZ_CRASHREPORTER_INJECTOR)
2475 AC_SUBST(MOZ_STUB_INSTALLER)
2476 AC_SUBST(MOZ_UPDATER)
2478 AC_SUBST(MOZ_ANDROID_APPLICATION_CLASS)
2479 AC_SUBST(MOZ_ANDROID_BROWSER_INTENT_CLASS)
2480 AC_SUBST(INCREMENTAL_LINKER)
2482 AC_SUBST_LIST(MOZ_FIX_LINK_PATHS)
2484 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
2485 AC_SUBST(MOZ_LINKER_EXTRACT)
2487 if test -n "$MOZ_BINARY_EXTENSIONS"; then
2488   AC_DEFINE(MOZ_BINARY_EXTENSIONS)
2491 dnl ========================================================
2492 dnl = Mac bundle name prefix
2493 dnl ========================================================
2494 MOZ_ARG_WITH_STRING(macbundlename-prefix,
2495 [  --with-macbundlename-prefix=prefix
2496                           Prefix for MOZ_MACBUNDLE_NAME],
2497 [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
2499 MOZ_MACBUNDLE_NAME=$MOZ_APP_DISPLAYNAME
2500 if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
2501   MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
2504 if test "$MOZ_DEBUG"; then
2505   MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME}Debug.app"
2506 else
2507   MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
2509 AC_SUBST(MOZ_MACBUNDLE_NAME)
2511 dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
2512 # If the MOZ_MACBUNDLE_ID is defined in the configure.sh, use it
2513 # Otherwise, use MOZ_APP_DISPLAYNAME
2514 if test -z "$MOZ_MACBUNDLE_ID"; then
2515    MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr 'A-Z' 'a-z' | tr -dc 'a-z-'`
2517 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
2518 if test "$MOZ_DEBUG"; then
2519   MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
2522 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
2523 AC_SUBST(MOZ_MACBUNDLE_ID)
2525 dnl ========================================================
2526 dnl = Child Process Name for IPC
2527 dnl ========================================================
2528 if test "$MOZ_WIDGET_TOOLKIT" != "android"; then
2529   MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}"
2530 else
2531   # We want to let Android unpack the file at install time, but it only does
2532   # so if the file is named libsomething.so. The lib/ path is also required
2533   # because the unpacked file will be under the lib/ subdirectory and will
2534   # need to be executed from that path.
2535   MOZ_CHILD_PROCESS_NAME="libplugin-container.so"
2537 MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/"
2538 MOZ_CHILD_PROCESS_BUNDLENAME="${MOZ_APP_DISPLAYNAME}CP"
2540 AC_SUBST(MOZ_CHILD_PROCESS_NAME)
2541 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE)
2542 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLENAME)
2544 # The following variables are available to branding and application
2545 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
2546 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
2547 # impacts profile location and user-visible fields.
2548 # - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
2549 # Mac Bundle name, Updater, Installer), it is typically used for nightly
2550 # builds (e.g. Aurora for Firefox).
2551 # - MOZ_APP_PROFILE: When set, used for application.ini's
2552 # "Profile" field, which controls profile location.
2553 # - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
2554 # crash reporter server url.
2555 # - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
2557 # The following environment variables used to have an effect, but don't anymore:
2558 # - MOZ_APP_VERSION: Defines the application version number. This was replaced with
2559 # the contents from the version.txt file in the application directory, or
2560 # browser/config/version.txt if there isn't one.
2561 # - MOZ_APP_VERSION_DISPLAY: Defines the application version number. Used
2562 # in the "About" window. This was replaced with the contents from the
2563 # version_display.txt or version.txt in the application directory, or
2564 # browser/config/version_display.txt.
2566 # For extensions and langpacks, we require a max version that is compatible
2567 # across security releases. MOZ_APP_MAXVERSION is our method for doing that.
2568 # 24.0a1 and 24.0a2 aren't affected
2569 # 24.0 becomes 24.*
2570 # 24.1.1 becomes 24.*
2571 IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
2572 if test -z "$IS_ALPHA"; then
2573   changequote(,)
2574   if test "$(basename $MOZ_BUILD_APP)" = "suite"; then
2575     MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\.[0-9]*\).*|\1|"`.*
2576   else
2577     MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\).*|\1|"`.*
2578   fi
2579   changequote([,])
2580 else
2581   MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
2584 AC_SUBST(MOZ_APP_DISPLAYNAME)
2585 AC_SUBST(MOZ_APP_VENDOR)
2586 AC_SUBST(MOZ_APP_PROFILE)
2587 AC_SUBST(MOZ_APP_ID)
2588 AC_SUBST(MAR_CHANNEL_ID)
2589 AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
2590 AC_SUBST(MOZ_PROFILE_MIGRATOR)
2591 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
2592 AC_SUBST(MOZ_APP_UA_NAME)
2593 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
2594 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL, $BROWSER_CHROME_URL)
2595 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL_QUOTED, "$BROWSER_CHROME_URL")
2597 AC_SUBST(MOZ_APP_MAXVERSION)
2598 AC_SUBST(MOZ_PKG_SPECIAL)
2599 AC_SUBST(MOZ_SIMPLE_PACKAGE_NAME)
2601 if test "$MOZILLA_OFFICIAL"; then
2602     # Build revisions should always be present in official builds
2603     MOZ_INCLUDE_SOURCE_INFO=1
2606 # External builds (specifically Ubuntu) may drop the hg repo information, so we allow to
2607 # explicitly set the repository and changeset information in.
2608 AC_SUBST(MOZ_SOURCE_REPO)
2609 AC_SUBST(MOZ_SOURCE_CHANGESET)
2610 AC_SUBST(MOZ_INCLUDE_SOURCE_INFO)
2612 dnl If we have any service that uploads data (and requires data submission
2613 dnl policy alert), set MOZ_DATA_REPORTING.
2614 dnl We need SUBST for build system and DEFINE for xul preprocessor.
2615 if test -n "$MOZ_TELEMETRY_REPORTING" || test -n "$MOZ_SERVICES_HEALTHREPORT" || test -n "$MOZ_CRASHREPORTER"  || test -n "$MOZ_NORMANDY"; then
2616   MOZ_DATA_REPORTING=1
2617   AC_DEFINE(MOZ_DATA_REPORTING)
2618   AC_SUBST(MOZ_DATA_REPORTING)
2621 dnl win32 options
2622 AC_SUBST(WIN32_REDIST_DIR)
2623 AC_SUBST(WIN_UCRT_REDIST_DIR)
2625 dnl Echo the CFLAGS to remove extra whitespace.
2626 CFLAGS=`echo \
2627     $_COMPILATION_CFLAGS \
2628     $CFLAGS`
2630 CXXFLAGS=`echo \
2631     $_WARNINGS_CXXFLAGS \
2632     $_COMPILATION_CXXFLAGS \
2633     $CXXFLAGS`
2635 COMPILE_CFLAGS=`echo \
2636     $_DEFINES_CFLAGS \
2637     $COMPILE_CFLAGS`
2639 COMPILE_CXXFLAGS=`echo \
2640     $_DEFINES_CXXFLAGS \
2641     $COMPILE_CXXFLAGS`
2643 HOST_CFLAGS=`echo \
2644     $_WARNINGS_HOST_CFLAGS \
2645     $_COMPILATION_HOST_CFLAGS \
2646     $HOST_CFLAGS`
2648 HOST_CXXFLAGS=`echo \
2649     $_WARNINGS_HOST_CXXFLAGS \
2650     $_COMPILATION_HOST_CXXFLAGS \
2651     $HOST_CXXFLAGS`
2653 AC_SUBST(MOZ_SYSTEM_PNG)
2655 AC_SUBST_LIST(MOZ_PNG_CFLAGS)
2656 AC_SUBST_LIST(MOZ_PNG_LIBS)
2658 HOST_CMFLAGS="-x objective-c -fobjc-exceptions"
2659 HOST_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
2660 OS_COMPILE_CMFLAGS="-x objective-c -fobjc-exceptions"
2661 OS_COMPILE_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
2662 if test "$MOZ_WIDGET_TOOLKIT" = uikit; then
2663   OS_COMPILE_CMFLAGS="$OS_COMPILE_CMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
2664   OS_COMPILE_CMMFLAGS="$OS_COMPILE_CMMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
2666 AC_SUBST(HOST_CMFLAGS)
2667 AC_SUBST(HOST_CMMFLAGS)
2668 AC_SUBST(OS_COMPILE_CMFLAGS)
2669 AC_SUBST(OS_COMPILE_CMMFLAGS)
2671 OS_CFLAGS="$CFLAGS"
2672 OS_CXXFLAGS="$CXXFLAGS"
2673 OS_CPPFLAGS="$CPPFLAGS"
2674 OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
2675 OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
2676 OS_LDFLAGS="$LDFLAGS"
2677 OS_LIBS="$LIBS"
2678 AC_SUBST_LIST(OS_CFLAGS)
2679 AC_SUBST_LIST(OS_CXXFLAGS)
2680 AC_SUBST_LIST(OS_CPPFLAGS)
2681 AC_SUBST_LIST(OS_COMPILE_CFLAGS)
2682 AC_SUBST_LIST(OS_COMPILE_CXXFLAGS)
2683 AC_SUBST_LIST(OS_LDFLAGS)
2684 AC_SUBST(OS_LIBS)
2686 AC_SUBST(HOST_CC)
2687 AC_SUBST(HOST_CXX)
2688 AC_SUBST_LIST(HOST_CFLAGS)
2689 AC_SUBST_LIST(HOST_CPPFLAGS)
2690 AC_SUBST_LIST(HOST_CXXFLAGS)
2691 AC_SUBST(HOST_LDFLAGS)
2692 AC_SUBST_LIST(HOST_OPTIMIZE_FLAGS)
2693 AC_SUBST(HOST_BIN_SUFFIX)
2695 AC_SUBST(TARGET_XPCOM_ABI)
2696 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
2697 AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSE4_1)
2698 AC_SUBST(HAVE_X86_AVX2)
2699 AC_SUBST(HAVE_ALTIVEC)
2701 AC_SUBST(DSO_LDOPTS)
2702 AC_SUBST(BIN_SUFFIX)
2703 AC_SUBST(USE_N32)
2704 AC_SUBST(WIN32_CONSOLE_EXE_LDFLAGS)
2705 AC_SUBST(WIN32_GUI_EXE_LDFLAGS)
2707 AC_SUBST(MOZ_DEVTOOLS)
2709 AC_SUBST(MOZ_PACKAGE_JSSHELL)
2711 AC_SUBST(DMG_TOOL)
2713 dnl Host JavaScript runtime, if any, to use during cross compiles.
2714 AC_SUBST(JS_BINARY)
2716 AC_SUBST(NSS_EXTRA_SYMBOLS_FILE)
2718 if test -n "$COMPILE_ENVIRONMENT"; then
2719 AC_CHECK_FUNCS(posix_fadvise posix_fallocate)
2721 dnl Check for missing components
2722 if test "$MOZ_X11"; then
2723     dnl ====================================================
2724     dnl = Check if X headers exist
2725     dnl ====================================================
2726     _SAVE_CFLAGS=$CFLAGS
2727     CFLAGS="$CFLAGS $XCFLAGS"
2728     AC_TRY_COMPILE([
2729         #include <stdio.h>
2730         #include <stdlib.h>
2731         #include <X11/Xlib.h>
2732         #include <X11/Intrinsic.h>
2733         #include <X11/extensions/XShm.h>
2734     ],
2735     [
2736         Display *dpy = 0;
2737         if ((dpy = XOpenDisplay(NULL)) == NULL) {
2738             fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
2739             exit(1);
2740         }
2741     ], [],
2742     [ AC_MSG_ERROR([Can't find X headers (install libxt-dev (Debian/Ubuntu), libXt-devel (Fedora), or xorg-x11-libXt-devel (SuSE)).]) ])
2743     CFLAGS="$_SAVE_CFLAGS"
2745     if test -n "$MISSING_X"; then
2746         AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
2747     fi
2749 fi # MOZ_X11
2751 fi # COMPILE_ENVIRONMENT
2753 dnl Set various defines and substitutions
2754 dnl ========================================================
2756 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK" ; then
2757     AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
2758     ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
2759     ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
2760     ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
2761     ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
2762     AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
2763     AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
2764     AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
2767 AC_SUBST(MOZ_DEV_EDITION)
2768 if test -n "$MOZ_DEV_EDITION"; then
2769     AC_DEFINE(MOZ_DEV_EDITION)
2772 if test "$MOZ_DEBUG" -o "$DEVELOPER_OPTIONS"; then
2773     A11Y_LOG=1
2775 AC_SUBST(A11Y_LOG)
2776 if test -n "$A11Y_LOG"; then
2777     AC_DEFINE(A11Y_LOG)
2780 dnl Spit out some output
2781 dnl ========================================================
2783 # Avoid using obsolete NSPR features
2784 AC_DEFINE(NO_NSPR_10_SUPPORT)
2786 MOZ_CREATE_CONFIG_STATUS()
2788 rm -fr confdefs* $ac_clean_files