Merge mozilla-central to autoland on a CLOSED TREE
[gecko.git] / old-configure.in
blob847154905e2cb3ef853950e5c4f0f86bf31e962f
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 Set the minimum version of toolkit libs used by mozilla
30 dnl ========================================================
31 W32API_VERSION=3.14
33 dnl Set various checks
34 dnl ========================================================
35 MISSING_X=
37 dnl Initialize the Pthread test variables early so they can be
38 dnl  overridden by each platform.
39 dnl ========================================================
40 MOZ_USE_PTHREADS=
41 _PTHREAD_LDFLAGS=""
43 LDFLAGS="$LDFLAGS $LINKER_LDFLAGS $PACK_REL_RELOC_FLAGS"
44 HOST_LDFLAGS="$HOST_LDFLAGS $HOST_LINKER_LDFLAGS"
46 if test "$COMPILE_ENVIRONMENT"; then
47     MOZ_ANDROID_NDK
48 fi # COMPILE_ENVIRONMENT
50 dnl ========================================================
51 dnl Checks for compilers.
52 dnl ========================================================
54 if test "$COMPILE_ENVIRONMENT"; then
56 # Run some logic to figure out exe extensions (mostly for mingw's sake)
57 AC_EXEEXT
59 if test "$target" != "$host"; then
60     MOZ_CROSS_COMPILER
61 else
62     AC_PROG_CC
63     case "$target" in
64     *-mingw*)
65       # Work around the conftest.exe access problem on Windows
66       sleep 2
67     esac
68     AC_PROG_CXX
71 MOZ_TOOL_VARIABLES
73 dnl ========================================================
74 dnl Special win32 checks
75 dnl ========================================================
77 WINVER=0A00
79 case "$target" in
80 *-mingw*)
81     if test "$GCC" != "yes"; then
82         # Check to see if we are really running in a msvc environemnt
83         _WIN32_MSVC=1
85         # Make sure compilers are valid
86         CXXFLAGS="$CXXFLAGS -TP"
87         AC_LANG_SAVE
88         AC_LANG_C
89         AC_TRY_COMPILE([#include <stdio.h>],
90             [ printf("Hello World\n"); ],,
91             AC_MSG_ERROR([\$(CC) test failed.  You must have MS VC++ in your path to build.]) )
93         AC_LANG_CPLUSPLUS
94         AC_TRY_COMPILE([#include <new.h>],
95             [ unsigned *test = new unsigned(42); ],,
96             AC_MSG_ERROR([\$(CXX) test failed.  You must have MS VC++ in your path to build.]) )
97         AC_LANG_RESTORE
99         AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
100         AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
102         MSVC_C_RUNTIME_DLL=vcruntime140.dll
103         if test "$TARGET_CPU" != "x86"; then
104             MSVC_C_RUNTIME_1_DLL=vcruntime140_1.dll
105         fi
106         MSVC_CXX_RUNTIME_DLL=msvcp140.dll
108         # -Zc:sizedDealloc- disables C++14 global sized deallocation (see bug 1160146)
109         CXXFLAGS="$CXXFLAGS -Zc:sizedDealloc-"
111         AC_SUBST(MSVC_C_RUNTIME_DLL)
112         AC_SUBST(MSVC_C_RUNTIME_1_DLL)
113         AC_SUBST(MSVC_CXX_RUNTIME_DLL)
115         AC_DEFINE(HAVE_SEH_EXCEPTIONS)
116     else
117         # Check w32api version
118         _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
119         _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
120         AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
121         AC_TRY_COMPILE([#include <w32api.h>],
122             #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
123                 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
124                  __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
125                 #error "test failed."
126             #endif
127             , [ res=yes ], [ res=no ])
128         AC_MSG_RESULT([$res])
129         if test "$res" != "yes"; then
130             AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
131         fi
132         # strsafe.h on mingw uses macros for function deprecation that pollutes namespace
133         # causing problems with local implementations with the same name.
134         AC_DEFINE(STRSAFE_NO_DEPRECATE)
135     fi # !GNU_CC
137     AC_DEFINE(_USE_MATH_DEFINES) # Otherwise Windows' math.h doesn't #define M_PI.
139     CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0"
140     CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0"
142     AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
143     AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
144     AC_DEFINE_UNQUOTED(_WIN32_IE,0x0A00)
146     ;;
147 esac
149 if test -n "$_WIN32_MSVC"; then
150     SKIP_PATH_CHECKS=1
151     SKIP_COMPILER_CHECKS=1
152     SKIP_LIBRARY_CHECKS=1
154     # Since we're skipping compiler and library checks, hard-code
155     # some facts here.
156     AC_DEFINE(HAVE_IO_H)
157     AC_DEFINE(HAVE_ISATTY)
160 fi # COMPILE_ENVIRONMENT
162 AC_SUBST(GNU_CC)
163 AC_SUBST(GNU_CXX)
165 dnl ========================================================
166 dnl set the defaults first
167 dnl ========================================================
168 MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib"
170 dnl Configure platform-specific CPU architecture compiler options.
171 dnl ==============================================================
172 if test "$COMPILE_ENVIRONMENT"; then
173     MOZ_ARCH_OPTS
174 fi # COMPILE_ENVIRONMENT
176 if test -n "$COMPILE_ENVIRONMENT"; then
177    MOZ_CONFIG_SANITIZE
180 dnl ========================================================
181 dnl GNU specific defaults
182 dnl ========================================================
183 if test "$GNU_CC"; then
184     if test "$OS_ARCH" != "WINNT" -o -z "$CLANG_CC"; then
185         DSO_PIC_CFLAGS='-fPIC'
186         ASFLAGS="$ASFLAGS -fPIC"
187     fi
189     AC_MSG_CHECKING([for --ignore-unresolved-symbol option to ld])
190     HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=
191     _SAVE_LDFLAGS=$LDFLAGS
192     LDFLAGS="$LDFLAGS -Wl,--ignore-unresolved-symbol,environ"
193     AC_TRY_LINK(,,AC_MSG_RESULT([yes])
194                   [HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=1],
195                   AC_MSG_RESULT([no]))
196     LDFLAGS=$_SAVE_LDFLAGS
198     DSO_LDOPTS='-shared'
199     if test "$GCC_USE_GNU_LD"; then
200         # Some tools like ASan use a runtime library that is only
201         # linked against executables, so we must allow undefined
202         # symbols for shared objects in some cases.
203         if test -z "$MOZ_ASAN$MOZ_MSAN$MOZ_UBSAN$MOZ_TSAN$FUZZING_INTERFACES"; then
204             # Don't allow undefined symbols in libraries
205             DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
207             # BSDs need `environ' exposed for posix_spawn (bug 753046)
208             case "$OS_TARGET" in
209             DragonFly|FreeBSD|NetBSD|OpenBSD)
210                 if test -n "$HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED"; then
211                     DSO_LDOPTS="$DSO_LDOPTS -Wl,--ignore-unresolved-symbol,environ"
212                 else
213                     DSO_LDOPTS="$DSO_LDOPTS -Wl,--warn-unresolved-symbols"
214                 fi
215                 ;;
216             esac
217         fi
218     fi
220     _DEFINES_CFLAGS="-include $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
222     ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS"
225 if test "$GNU_CXX"; then
226     CXXFLAGS="$CXXFLAGS -fno-exceptions"
228     _DEFINES_CXXFLAGS="-DMOZILLA_CLIENT -include $_objdir/mozilla-config.h"
231 dnl ========================================================
232 dnl System overrides of the defaults for host
233 dnl ========================================================
234 case "$host" in
235 *mingw*)
236     if test -n "$_WIN32_MSVC"; then
237         HOST_CFLAGS="$HOST_CFLAGS"
238     else
239         HOST_CFLAGS="$HOST_CFLAGS -mwindows"
240     fi
241     HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN -DWIN32 -D_WIN32 -D_CRT_SECURE_NO_WARNINGS"
242     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
243     HOST_BIN_SUFFIX=.exe
245     case "${host_cpu}" in
246     i*86)
247         if test -n "$_WIN32_MSVC"; then
248             HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
249         fi
250         ;;
251     x86_64)
252         if test -n "$_WIN32_MSVC"; then
253             HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
254         fi
255         HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
256         ;;
257     esac
258     ;;
260 *-darwin*)
261     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX"
262     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
263     ;;
265 *-linux*|*-kfreebsd*-gnu|*-gnu*)
266     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
267     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
268     ;;
271     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
272     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
273     ;;
274 esac
276 dnl ========================================================
277 dnl System overrides of the defaults for target
278 dnl ========================================================
280 case "$target" in
281 *-darwin*)
282     MOZ_OPTIMIZE_FLAGS="-O3"
283     DSO_LDOPTS=''
285     dnl DTrace and -dead_strip don't interact well. See bug 403132.
286     dnl ===================================================================
287     if test "x$enable_dtrace" = "xyes"; then
288         echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
289     else
290         dnl check for the presence of the -dead_strip linker flag
291         AC_MSG_CHECKING([for -dead_strip option to ld])
292         _SAVE_LDFLAGS=$LDFLAGS
293         LDFLAGS="$LDFLAGS -Wl,-dead_strip"
294         AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
295         if test -n "$_HAVE_DEAD_STRIP" ; then
296             AC_MSG_RESULT([yes])
297             MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
298         else
299             AC_MSG_RESULT([no])
300         fi
302         LDFLAGS=$_SAVE_LDFLAGS
303     fi
305     MOZ_FIX_LINK_PATHS=
306     ;;
308 *-android*|*-linuxandroid*)
309     # From https://github.com/android-ndk/ndk/issues/133#issuecomment-308549264
310     # -Oz is smaller than -Os on clang.
311     MOZ_OPTIMIZE_FLAGS="-Oz"
312     # Disable the outliner, which causes performance regressions, and is
313     # enabled on some platforms at -Oz.
314     if test -z "$MOZ_LTO"; then
315         DISABLE_OUTLINER="-mno-outline"
316         _SAVE_CFLAGS=$CFLAGS
317         CFLAGS="$CFLAGS $DISABLE_OUTLINER"
318         AC_TRY_COMPILE(,,[MOZ_OPTIMIZE_FLAGS="$MOZ_OPTIMIZE_FLAGS $DISABLE_OUTLINER"])
319         CFLAGS="$_SAVE_CFLAGS"
320    else
321         DISABLE_OUTLINER="-Wl,-plugin-opt=-enable-machine-outliner=never"
322         _SAVE_LDFLAGS=$LDFLAGS
323         LDFLAGS="$LDFLAGS $MOZ_LTO_LDFLAGS $DISABLE_OUTLINER"
324         AC_TRY_LINK(,,[MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS $DISABLE_OUTLINER"])
325         LDFLAGS="$_SAVE_LDFLAGS"
326     fi
327     ;;
329 *-*linux*)
330     if test "$GNU_CC" -o "$GNU_CXX"; then
331         MOZ_PGO_OPTIMIZE_FLAGS="-O3"
332         MOZ_OPTIMIZE_FLAGS="-O2"
333     fi
335     case "${target_cpu}" in
336     alpha*)
337         CFLAGS="$CFLAGS -mieee"
338         CXXFLAGS="$CXXFLAGS -mieee"
339     ;;
340     esac
341     ;;
342 *-mingw*)
343     DSO_PIC_CFLAGS=
344     # certain versions of cygwin's makedepend barf on the
345     # #include <string> vs -I./dist/include/string issue so don't use it
346     if test -n "$GNU_CC" -o -n "$CLANG_CC"; then
347         # $GNU_CC will match gcc and clang; while $CLANG_CC will match only clang
348         if test -z "$CLANG_CC"; then
349             AC_MSG_ERROR(Firefox cannot be built with mingw-gcc and requires a mingw-clang toolchain to work)
350         fi
352         DSO_LDOPTS='-shared'
353         MOZ_FIX_LINK_PATHS=
355         MOZ_OPTIMIZE_FLAGS="-O2"
357         WIN32_CONSOLE_EXE_LDFLAGS=-mconsole
358         WIN32_GUI_EXE_LDFLAGS=-mwindows
360         # Silence problematic clang warnings
361         CXXFLAGS="$CXXFLAGS -Wno-incompatible-ms-struct"
362         LDFLAGS="$LDFLAGS -Wl,--no-insert-timestamp"
363     else
364         TARGET_COMPILER_ABI=msvc
365         WIN32_SUBSYSTEM_VERSION=10.0
366         WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION
367         WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
368         DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
369         _DEFINES_CFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
370         _DEFINES_CXXFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
371         CFLAGS="$CFLAGS -Gy -Zc:inline"
372         CXXFLAGS="$CXXFLAGS -Gy -Zc:inline"
373         if test "$TARGET_CPU" = "x86"; then
374             dnl VS2012+ defaults to -arch:SSE2. We want to target nothing
375             dnl more recent, so set that explicitly here unless another
376             dnl target arch has already been set.
377             changequote(,)
378             if test -z `echo $CFLAGS | grep -i [-/]arch:`; then
379               CFLAGS="$CFLAGS -arch:SSE2"
380             fi
381             if test -z `echo $CXXFLAGS | grep -i [-/]arch:`; then
382               CXXFLAGS="$CXXFLAGS -arch:SSE2"
383             fi
384             changequote([,])
385         fi
386         dnl VS2013+ supports -Gw for better linker optimizations.
387         dnl http://blogs.msdn.com/b/vcblog/archive/2013/09/11/introducing-gw-compiler-switch.aspx
388         dnl Disabled on ASan because it causes false-positive ODR violations.
389         if test -z "$MOZ_ASAN"; then
390             CFLAGS="$CFLAGS -Gw"
391             CXXFLAGS="$CXXFLAGS -Gw"
392         else
393             # String tail merging doesn't play nice with ASan's ODR checker.
394             LDFLAGS="$LDFLAGS -opt:nolldtailmerge"
395         fi
396         # Silence VS2017 15.5+ TR1 deprecation warnings hit by older gtest versions
397         CXXFLAGS="$CXXFLAGS -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING"
398         MOZ_DEBUG_LDFLAGS='-DEBUG'
399         if test "$HOST_OS_ARCH" != "WINNT"; then
400           # %_PDB% is a special signal to emit only the PDB basename. This
401           # avoids problems in Windows tools that don't like forward-slashes.
402           MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -PDBALTPATH:%_PDB%"
403         fi
404         MOZ_OPTIMIZE_FLAGS='-O2'
405         MOZ_FIX_LINK_PATHS=
406         LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE"
407     fi
408     AC_DEFINE(WIN32_LEAN_AND_MEAN)
409     dnl See http://support.microsoft.com/kb/143208 to use STL
410     AC_DEFINE(NOMINMAX)
411     BIN_SUFFIX='.exe'
413     case "$host_os" in
414     cygwin*|msvc*|mks*)
415         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.])
416         ;;
417     esac
419     case "$target" in
420     i*86-*)
421         if test -n "$GNU_CC"; then
422             CFLAGS="$CFLAGS -mstackrealign"
423             CXXFLAGS="$CXXFLAGS -mstackrealign"
424             LDFLAGS="$LDFLAGS -Wl,--large-address-aware"
425         else
426             DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
427             LDFLAGS="$LDFLAGS -SAFESEH"
428         fi
430         AC_DEFINE(_X86_)
431         ;;
432     x86_64-*)
433         if test -n "$_WIN32_MSVC"; then
434             DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
435         fi
436         AC_DEFINE(_AMD64_)
437         ;;
438     aarch64-*)
439         if test -n "$_WIN32_MSVC"; then
440             DSO_LDOPTS="$DSO_LDOPTS -MACHINE:ARM64"
441         fi
442         AC_DEFINE(_ARM64_)
443         ;;
444     *)
445         AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
446         ;;
447     esac
448     ;;
450 *-netbsd*)
451     CFLAGS="$CFLAGS -Dunix"
452     CXXFLAGS="$CXXFLAGS -Dunix"
453     if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
454         DSO_PIC_CFLAGS='-fPIC -DPIC'
455         DSO_LDOPTS='-shared'
456         MOZ_PROGRAM_LDFLAGS="$MOZ_PROGRAM_LDFLAGS -Wl,--export-dynamic"
457     else
458         DSO_PIC_CFLAGS='-fPIC -DPIC'
459         DSO_LDOPTS='-shared'
460     fi
461     # This will fail on a.out systems prior to 1.5.1_ALPHA.
462     if test "$LIBRUNPATH"; then
463         DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
464     fi
465     ;;
467 *-openbsd*)
468     if test -z "$X11BASE"; then
469         X11BASE=/usr/X11R6
470     fi
471     MOZ_FIX_LINK_PATHS="$MOZ_FIX_LINK_PATHS -Wl,-rpath-link,${X11BASE}/lib"
472     DSO_PIC_CFLAGS='-fPIC'
473     DSO_LDOPTS='-shared -fPIC'
474     if test "$LIBRUNPATH"; then
475         DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
476     fi
477     ;;
479 *-solaris*)
480     MOZ_FIX_LINK_PATHS="-L${DIST}/bin"
481     ;;
483 esac
485 CFLAGS="$CFLAGS $DSO_PIC_CFLAGS"
486 CXXFLAGS="$CXXFLAGS $DSO_PIC_CFLAGS"
488 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
489     MOZ_OPTIMIZE_FLAGS="-O"
493 if test -z "$COMPILE_ENVIRONMENT"; then
494     SKIP_COMPILER_CHECKS=1
495     SKIP_LIBRARY_CHECKS=1
496     MOZ_DEBUGGING_OPTS
497 else
498     MOZ_COMPILER_OPTS
499 fi # COMPILE_ENVIRONMENT
501 if test -z "$SKIP_COMPILER_CHECKS"; then
502 dnl Checks for typedefs, structures, and compiler characteristics.
503 dnl ========================================================
504 AC_C_CONST
505 AC_TYPE_MODE_T
506 AC_TYPE_OFF_T
507 AC_TYPE_PID_T
508 AC_TYPE_SIZE_T
509 AC_LANG_CPLUSPLUS
510 AC_LANG_C
512 AC_LANG_CPLUSPLUS
514 MOZ_CXX11
516 AC_LANG_C
518 dnl Checks for header files.
519 dnl ========================================================
520 AC_HEADER_DIRENT
522 dnl Checks for libraries.
523 dnl ========================================================
524 AC_CHECK_LIB(c_r, gethostbyname_r)
526 dnl We don't want to link with libdl even if it's present on OS X, since
527 dnl it's not used and not part of the default installation. OS/2 has dlfcn
528 dnl in libc.
529 dnl We don't want to link against libm or libpthread on Darwin since
530 dnl they both are just symlinks to libSystem and explicitly linking
531 dnl against libSystem causes issues when debugging (see bug 299601).
532 case $target in
533 *-darwin*)
534     ;;
536     AC_SEARCH_LIBS(dlopen, dl,
537         MOZ_CHECK_HEADER(dlfcn.h,
538         AC_DEFINE(HAVE_DLOPEN)))
539     ;;
540 esac
542 _SAVE_CFLAGS="$CFLAGS"
543 CFLAGS="$CFLAGS -D_GNU_SOURCE"
544 AC_CHECK_FUNCS(dladdr)
545 CFLAGS="$_SAVE_CFLAGS"
547 if test ! "$GNU_CXX"; then
548     AC_CHECK_LIB(C, demangle)
551 AC_CHECK_LIB(socket, socket)
553 dnl ========================================================
554 dnl = pthread support
555 dnl = Start by checking whether the system support pthreads
556 dnl ========================================================
557 case "$target_os" in
558 darwin*)
559     MOZ_USE_PTHREADS=1
560     ;;
562     AC_CHECK_LIB(pthreads, pthread_create,
563         MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
564         AC_CHECK_LIB(pthread, pthread_create,
565             MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
566             AC_CHECK_LIB(c_r, pthread_create,
567                 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
568                 AC_CHECK_LIB(c, pthread_create,
569                     MOZ_USE_PTHREADS=1
570                 )
571             )
572         )
573     )
574     ;;
575 esac
577 dnl ========================================================
578 dnl Do the platform specific pthread hackery
579 dnl ========================================================
580 if test "$MOZ_USE_PTHREADS"x != x
581 then
582     dnl
583     dnl See if -pthread is supported.
584     dnl
585     rm -f conftest*
586     ac_cv_have_dash_pthread=no
587     AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
588     echo 'int main() { return 0; }' | cat > conftest.c
589     ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
590     if test $? -eq 0; then
591         if test -z "`grep -E -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`grep -E -i '(error|incorrect)' conftest.out`" ; then
592             ac_cv_have_dash_pthread=yes
593             case "$target_os" in
594             freebsd*)
595 # Freebsd doesn't use -pthread for compiles, it uses them for linking
596                 ;;
597             *)
598                 CFLAGS="$CFLAGS -pthread"
599                 CXXFLAGS="$CXXFLAGS -pthread"
600                 ;;
601             esac
602         fi
603     fi
604     rm -f conftest*
605     AC_MSG_RESULT($ac_cv_have_dash_pthread)
607     dnl
608     dnl See if -pthreads is supported.
609     dnl
610     ac_cv_have_dash_pthreads=no
611     if test "$ac_cv_have_dash_pthread" = "no"; then
612         AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
613         echo 'int main() { return 0; }' | cat > conftest.c
614         ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
615         if test $? -eq 0; then
616             if test -z "`grep -E -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`grep -E -i '(error|incorrect)' conftest.out`" ; then
617                 ac_cv_have_dash_pthreads=yes
618                 CFLAGS="$CFLAGS -pthreads"
619                 CXXFLAGS="$CXXFLAGS -pthreads"
620             fi
621         fi
622         rm -f conftest*
623         AC_MSG_RESULT($ac_cv_have_dash_pthreads)
624     fi
626     case "$target" in
627         *-*-freebsd*)
628             AC_DEFINE(_REENTRANT)
629             AC_DEFINE(_THREAD_SAFE)
630             dnl -pthread links in -lpthread, so don't specify it explicitly.
631             if test "$ac_cv_have_dash_pthread" = "yes"; then
632                 _PTHREAD_LDFLAGS="-pthread"
633             fi
634             ;;
636         *-*-openbsd*|*-*-bsdi*)
637             AC_DEFINE(_REENTRANT)
638             AC_DEFINE(_THREAD_SAFE)
639             dnl -pthread links in -lc_r, so don't specify it explicitly.
640             if test "$ac_cv_have_dash_pthread" = "yes"; then
641                 _PTHREAD_LDFLAGS="-pthread"
642             fi
643             ;;
645         *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
646             AC_DEFINE(_REENTRANT)
647             ;;
649     esac
650     LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
651     AC_SUBST(MOZ_USE_PTHREADS)
652     MOZ_CHECK_HEADERS(pthread.h)
656 dnl Checks for library functions.
657 dnl ========================================================
659 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
660 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
661                ac_cv_clock_monotonic,
662                [for libs in "" -lrt; do
663                     _SAVE_LIBS="$LIBS"
664                     LIBS="$LIBS $libs"
665                     AC_TRY_LINK([#include <time.h>],
666                                  [ struct timespec ts;
667                                    clock_gettime(CLOCK_MONOTONIC, &ts); ],
668                                  ac_cv_clock_monotonic=$libs
669                                  LIBS="$_SAVE_LIBS"
670                                  break,
671                                  ac_cv_clock_monotonic=no)
672                     LIBS="$_SAVE_LIBS"
673                 done])
674 if test "$ac_cv_clock_monotonic" != "no"; then
675     HAVE_CLOCK_MONOTONIC=1
676     REALTIME_LIBS=$ac_cv_clock_monotonic
677     AC_DEFINE(HAVE_CLOCK_MONOTONIC)
678     AC_SUBST(HAVE_CLOCK_MONOTONIC)
679     AC_SUBST_LIST(REALTIME_LIBS)
682 AC_CACHE_CHECK(
683     [for res_ninit()],
684     ac_cv_func_res_ninit,
685     [if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then
686         dnl no need for res_ninit() on NetBSD and OpenBSD
687         ac_cv_func_res_ninit=no
688      else
689         AC_TRY_LINK([
690             #ifdef linux
691             #define _BSD_SOURCE 1
692             #endif
693             #include <sys/types.h>
694             #include <netinet/in.h>
695             #include <arpa/nameser.h>
696             #include <resolv.h>
697             ],
698             [int foo = res_ninit(&_res);],
699             [ac_cv_func_res_ninit=yes],
700             [ac_cv_func_res_ninit=no])
701      fi
702     ])
704 if test "$ac_cv_func_res_ninit" = "yes"; then
705     AC_DEFINE(HAVE_RES_NINIT)
706 dnl must add the link line we do something as foolish as this... dougt
707 dnl else
708 dnl    AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
709 dnl        AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
712 AC_LANG_C
714 dnl ===================================================================
715 dnl ========================================================
716 dnl Put your C++ language/feature checks below
717 dnl ========================================================
718 AC_LANG_CPLUSPLUS
720 ARM_ABI_PREFIX=
721 if test "$GNU_CC"; then
722   if test "$TARGET_CPU" = "arm" ; then
723     AC_CACHE_CHECK(for ARM EABI,
724         ac_cv_gcc_arm_eabi,
725         [AC_TRY_COMPILE([],
726                         [
727 #if defined(__ARM_EABI__)
728   return 0;
729 #else
730 #error Not ARM EABI.
731 #endif
732                         ],
733                         ac_cv_gcc_arm_eabi="yes",
734                         ac_cv_gcc_arm_eabi="no")])
735     if test "$ac_cv_gcc_arm_eabi" = "yes"; then
736         HAVE_ARM_EABI=1
737         ARM_ABI_PREFIX=eabi-
738     else
739         ARM_ABI_PREFIX=oabi-
740     fi
741   fi
743   TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
746 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
747 # We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
748 # enabled, the linker in xcode 4.1 will crash. Without this it would crash when
749 # linking XUL.
750 _SAVE_LDFLAGS=$LDFLAGS
751 LDFLAGS="$LDFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
752 AC_CACHE_CHECK(for __thread keyword for TLS variables,
753                ac_cv_thread_keyword,
754                [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
755                             [return tlsIsMainThread;],
756                             ac_cv_thread_keyword=yes,
757                             ac_cv_thread_keyword=no)])
758 LDFLAGS=$_SAVE_LDFLAGS
759 # The custom dynamic linker doesn't support TLS variables
760 if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
761   # mips builds fail with TLS variables because of a binutils bug.
762   # See bug 528687
763   # OpenBSD doesn't have TLS support, and the test succeeds with clang++
764   case "${target}" in
765     mips*-*)
766       :
767       ;;
768     *-android*|*-linuxandroid*)
769       :
770       ;;
771     *-openbsd*)
772       :
773       ;;
774     *)
775       AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
776       ;;
777   esac
780 if test -n "$MOZ_LINKER"; then
781 dnl gold emits wrong sysv-style elf hash tables when building both sysv and
782 dnl style tables. https://sourceware.org/bugzilla/show_bug.cgi?id=13597
783 dnl Since the linker only understands the sysv ones, no need to build the
784 dnl gnu style tables anyways.
785   LDFLAGS="$LDFLAGS -Wl,--hash-style=sysv"
788 dnl End of C++ language/feature checks
789 AC_LANG_C
791 fi # ! SKIP_COMPILER_CHECKS
793 if test -n "${COMPILE_ENVIRONMENT}"; then
794   MOZ_CHECK_ALLOCATOR
797 TARGET_XPCOM_ABI=
798 if test -n "${TARGET_CPU}" -a -n "${TARGET_COMPILER_ABI}"; then
799     TARGET_XPCOM_ABI="${TARGET_CPU}-${TARGET_COMPILER_ABI}"
800     AC_DEFINE_UNQUOTED(TARGET_XPCOM_ABI, ["${TARGET_XPCOM_ABI}"])
803 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
804 dnl features that Windows actually does support.
806 if test -n "$SKIP_COMPILER_CHECKS"; then
807    dnl Windows has malloc.h
808    AC_DEFINE(MALLOC_H, [<malloc.h>])
809    AC_DEFINE(HAVE_FORCEINLINE)
810 fi # SKIP_COMPILER_CHECKS
812 dnl Mozilla specific options
813 dnl ========================================================
814 dnl The macros used for command line options
815 dnl are defined in build/autoconf/altoptions.m4.
817 dnl ========================================================
818 dnl =
819 dnl = Application
820 dnl =
821 dnl ========================================================
823 MOZ_BRANDING_DIRECTORY=
824 MOZ_OFFICIAL_BRANDING=
825 MOZ_NO_SMART_CARDS=
826 MOZ_BINARY_EXTENSIONS=
827 MOZ_DEVTOOLS=server
829 dnl ========================================================
830 dnl = Trademarked Branding
831 dnl ========================================================
832 MOZ_ARG_ENABLE_BOOL(official-branding,
833 [  --enable-official-branding
834                           Enable Official mozilla.org Branding
835                           Do not distribute builds with
836                           --enable-official-branding unless you have
837                           permission to use trademarks per
838                           http://www.mozilla.org/foundation/trademarks/ .],
839     MOZ_OFFICIAL_BRANDING=1,
840     MOZ_OFFICIAL_BRANDING=)
842 # Allow the application to influence configure with a confvars.sh script.
843 AC_MSG_CHECKING([if app-specific confvars.sh exists])
844 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
845   AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
846   . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
847 else
848   AC_MSG_RESULT([no])
851 AC_SUBST(MOZ_OFFICIAL_BRANDING)
852 if test -n "$MOZ_OFFICIAL_BRANDING"; then
853   if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
854     AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
855   else
856     MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
857     AC_DEFINE(MOZ_OFFICIAL_BRANDING)
858   fi
861 MOZ_ARG_WITH_STRING(branding,
862 [  --with-branding=dir     Use branding from the specified directory.],
863     MOZ_BRANDING_DIRECTORY=$withval)
865 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
866 if test -z "$REAL_BRANDING_DIRECTORY"; then
867   REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
870 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
871   . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
874 AC_SUBST(MOZ_BRANDING_DIRECTORY)
876 dnl ========================================================
877 dnl = Distribution ID
878 dnl ========================================================
879 MOZ_ARG_WITH_STRING(distribution-id,
880 [  --with-distribution-id=ID
881                           Set distribution-specific id (default=org.mozilla)],
882 [ val=`echo $withval`
883     MOZ_DISTRIBUTION_ID="$val"])
885 if test -z "$MOZ_DISTRIBUTION_ID"; then
886    MOZ_DISTRIBUTION_ID="org.mozilla"
889 AC_SUBST(MOZ_DISTRIBUTION_ID)
891 dnl ========================================================
892 dnl = Enable code optimization. ON by default.
893 dnl ========================================================
895 # Use value from moz.configure if one is defined. Else use our computed
896 # value.
897 if test -n "${MOZ_CONFIGURE_OPTIMIZE_FLAGS}"; then
898     MOZ_OPTIMIZE_FLAGS=${MOZ_CONFIGURE_OPTIMIZE_FLAGS}
901 if test "$COMPILE_ENVIRONMENT"; then
902 if test -n "$MOZ_OPTIMIZE"; then
903     AC_MSG_CHECKING([for valid C compiler optimization flags])
904     _SAVE_CFLAGS=$CFLAGS
905     CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
906     AC_TRY_COMPILE([#include <stdio.h>],
907         [printf("Hello World\n");],
908         _results=yes,
909         _results=no)
910     AC_MSG_RESULT([$_results])
911     if test "$_results" = "no"; then
912         AC_MSG_ERROR([These compiler flags for C are invalid: $MOZ_OPTIMIZE_FLAGS])
913     fi
914     CFLAGS=$_SAVE_CFLAGS
915     if test -n "$MOZ_LTO" -a -n "$CLANG_CC"; then
916         # When using llvm-based LTO, non numeric optimization levels are
917         # not supported by the linker, so force the linker to use -O2 (
918         # which doesn't influence the level compilation units are actually
919         # compiled at).
920         case " $MOZ_OPTIMIZE_FLAGS " in
921         *\ -Os\ *|*\ -Oz\ *)
922             MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -O2"
923             ;;
924         esac
925     fi
927 fi # COMPILE_ENVIRONMENT
929 AC_SUBST_LIST(MOZ_OPTIMIZE_FLAGS)
930 AC_SUBST_LIST(MOZ_OPTIMIZE_LDFLAGS)
931 AC_SUBST_LIST(MOZ_PGO_OPTIMIZE_FLAGS)
933 case "${OS_TARGET}" in
934 Android|WINNT|Darwin)
935   MOZ_GLUE_IN_PROGRAM=
936   ;;
938   dnl On !Android !Windows !OSX, we only want to link executables against mozglue
939   MOZ_GLUE_IN_PROGRAM=1
940   AC_DEFINE(MOZ_GLUE_IN_PROGRAM)
941   ;;
942 esac
944 dnl ========================================================
945 dnl = Jemalloc build setup
946 dnl ========================================================
947 if test -n "$MOZ_MEMORY"; then
948   case "${target}" in
949   *-mingw*)
950     export MOZ_NO_DEBUG_RTL=1
951     ;;
952   esac
953 fi # MOZ_MEMORY
954 AC_SUBST(MOZ_GLUE_IN_PROGRAM)
956 dnl ========================================================
957 dnl = Enable using the clang plugin to build
958 dnl ========================================================
960 if test -n "$COMPILE_ENVIRONMENT"; then
961 MOZ_CONFIG_CLANG_PLUGIN
962 fi # COMPILE_ENVIRONMENT
964 AC_LANG_C
966 if test "$COMPILE_ENVIRONMENT"; then
967 MOZ_EXPAND_LIBS
968 fi # COMPILE_ENVIRONMENT
970 dnl ========================================================
971 dnl Check if we need the 32-bit Linux SSE2 error dialog
972 dnl ========================================================
974 AC_SUBST(MOZ_LINUX_32_SSE2_STARTUP_ERROR)
976 dnl ========================================================
977 dnl Check for cairo
978 dnl ========================================================
980 if test "$OS_ARCH" = "WINNT"; then
981     # For now we assume that we will have a uint64_t available through
982     # one of the above headers or mozstdint.h.
983     AC_DEFINE(HAVE_UINT64_T)
986 case "$MOZ_WIDGET_TOOLKIT" in
987   windows)
988     if test "$COMPILE_ENVIRONMENT"; then
989       MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
990     fi
991     ;;
992 esac
993 AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
995 dnl ========================================================
996 dnl =
997 dnl = Maintainer debug option (no --enable equivalent)
998 dnl =
999 dnl ========================================================
1001 AC_SUBST_LIST(ASFLAGS)
1002 AC_SUBST_LIST(MOZ_DEBUG_LDFLAGS)
1004 AC_SUBST(MOZ_STUB_INSTALLER)
1006 AC_SUBST_LIST(MOZ_FIX_LINK_PATHS)
1008 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
1010 if test -n "$MOZ_BINARY_EXTENSIONS"; then
1011   AC_DEFINE(MOZ_BINARY_EXTENSIONS)
1014 dnl ========================================================
1015 dnl = Mac bundle name prefix
1016 dnl ========================================================
1017 MOZ_ARG_WITH_STRING(macbundlename-prefix,
1018 [  --with-macbundlename-prefix=prefix
1019                           Prefix for MOZ_MACBUNDLE_NAME],
1020 [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
1022 MOZ_MACBUNDLE_NAME=$MOZ_APP_DISPLAYNAME
1023 if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
1024   MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
1027 if test "$MOZ_DEBUG"; then
1028   MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME}Debug.app"
1029 else
1030   MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
1032 AC_SUBST(MOZ_MACBUNDLE_NAME)
1034 dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
1035 # If the MOZ_MACBUNDLE_ID is defined in the configure.sh, use it
1036 # Otherwise, use MOZ_APP_DISPLAYNAME
1037 if test -z "$MOZ_MACBUNDLE_ID"; then
1038    MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr 'A-Z' 'a-z' | tr -dc 'a-z-'`
1040 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
1041 if test "$MOZ_DEBUG"; then
1042   MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
1045 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
1046 AC_SUBST(MOZ_MACBUNDLE_ID)
1048 dnl ========================================================
1049 dnl = Child Process Name for IPC
1050 dnl ========================================================
1051 if test "$MOZ_WIDGET_TOOLKIT" != "android"; then
1052   MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}"
1053 else
1054   # We want to let Android unpack the file at install time, but it only does
1055   # so if the file is named libsomething.so. The lib/ path is also required
1056   # because the unpacked file will be under the lib/ subdirectory and will
1057   # need to be executed from that path.
1058   MOZ_CHILD_PROCESS_NAME="libplugin-container.so"
1060 MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/"
1061 MOZ_CHILD_PROCESS_BUNDLEID=${MOZ_DISTRIBUTION_ID}.plugincontainer
1062 MOZ_CHILD_PROCESS_BUNDLENAME="plugin-container.app"
1063 MOZ_CHILD_PROCESS_APPNAME="${MOZ_APP_DISPLAYNAME}CP"
1065 AC_SUBST(MOZ_CHILD_PROCESS_NAME)
1066 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE)
1067 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLEID)
1068 AC_SUBST(MOZ_CHILD_PROCESS_APPNAME)
1069 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLENAME)
1071 dnl ==========================================================
1072 dnl = Mac Media Plugin Helper (GMP Child) Process Name for IPC
1073 dnl ==========================================================
1074 MOZ_EME_PROCESS_NAME="media-plugin-helper"
1075 MOZ_EME_PROCESS_NAME_BRANDED="$MOZ_APP_DISPLAYNAME Media Plugin Helper"
1076 MOZ_EME_PROCESS_BUNDLENAME="${MOZ_EME_PROCESS_NAME}.app"
1077 # Generate a lower case string with no spaces to be used as the bundle ID
1078 # for the EME helper .app of the form org.mozilla.<executable-name>.
1079 MOZ_EME_PROCESS_BUNDLEID=`echo "$MOZ_APP_DISPLAYNAME" | tr ' ' '-'`
1080 MOZ_EME_PROCESS_BUNDLEID=`echo "$MOZ_EME_PROCESS_BUNDLEID" | tr 'A-Z' 'a-z'`
1081 MOZ_EME_PROCESS_BUNDLEID=${MOZ_EME_PROCESS_BUNDLEID}-${MOZ_EME_PROCESS_NAME}
1082 MOZ_EME_PROCESS_BUNDLEID=${MOZ_DISTRIBUTION_ID}.${MOZ_EME_PROCESS_BUNDLEID}
1084 AC_SUBST(MOZ_EME_PROCESS_NAME)
1085 AC_SUBST(MOZ_EME_PROCESS_NAME_BRANDED)
1086 AC_SUBST(MOZ_EME_PROCESS_BUNDLENAME)
1087 AC_SUBST(MOZ_EME_PROCESS_BUNDLEID)
1089 # The following variables are available to branding and application
1090 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
1091 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
1092 # impacts profile location and user-visible fields.
1093 # - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
1094 # Mac Bundle name, Updater, Installer), it is typically used for nightly
1095 # builds (e.g. Aurora for Firefox).
1096 # - MOZ_APP_PROFILE: When set, used for application.ini's
1097 # "Profile" field, which controls profile location.
1098 # - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
1099 # crash reporter server url.
1100 # - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
1102 # The following environment variables used to have an effect, but don't anymore:
1103 # - MOZ_APP_VERSION: Defines the application version number. This was replaced with
1104 # the contents from the version.txt file in the application directory, or
1105 # browser/config/version.txt if there isn't one.
1106 # - MOZ_APP_VERSION_DISPLAY: Defines the application version number. Used
1107 # in the "About" window. This was replaced with the contents from the
1108 # version_display.txt or version.txt in the application directory, or
1109 # browser/config/version_display.txt.
1111 # For extensions and langpacks, we require a max version that is compatible
1112 # across security releases. MOZ_APP_MAXVERSION is our method for doing that.
1113 # 24.0a1 and 24.0a2 aren't affected
1114 # 24.0 becomes 24.*
1115 # 24.1.1 becomes 24.*
1116 IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
1117 if test -z "$IS_ALPHA"; then
1118   changequote(,)
1119   if test "$(basename $MOZ_BUILD_APP)" = "suite"; then
1120     MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\.[0-9]*\).*|\1|"`.*
1121   else
1122     MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\).*|\1|"`.*
1123   fi
1124   changequote([,])
1125 else
1126   MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
1129 AC_SUBST(MOZ_APP_DISPLAYNAME)
1130 AC_SUBST(MOZ_APP_VENDOR)
1131 AC_SUBST(MOZ_APP_PROFILE)
1132 AC_SUBST(MOZ_APP_ID)
1133 AC_SUBST(MAR_CHANNEL_ID)
1134 AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
1135 AC_SUBST(MOZ_PROFILE_MIGRATOR)
1136 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
1137 AC_SUBST(MOZ_APP_UA_NAME)
1138 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
1139 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL, $BROWSER_CHROME_URL)
1140 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL_QUOTED, "$BROWSER_CHROME_URL")
1142 AC_SUBST(MOZ_APP_MAXVERSION)
1143 AC_SUBST(MOZ_PKG_SPECIAL)
1144 AC_SUBST(MOZ_SIMPLE_PACKAGE_NAME)
1146 if test "$MOZILLA_OFFICIAL"; then
1147     # Build revisions should always be present in official builds
1148     MOZ_INCLUDE_SOURCE_INFO=1
1151 # External builds (specifically Ubuntu) may drop the hg repo information, so we allow to
1152 # explicitly set the repository and changeset information in.
1153 AC_SUBST(MOZ_SOURCE_REPO)
1154 AC_SUBST(MOZ_SOURCE_CHANGESET)
1155 AC_SUBST(MOZ_INCLUDE_SOURCE_INFO)
1157 dnl Echo the CFLAGS to remove extra whitespace.
1158 CFLAGS=`echo \
1159     $_COMPILATION_CFLAGS \
1160     $CFLAGS`
1162 CXXFLAGS=`echo \
1163     $_COMPILATION_CXXFLAGS \
1164     $CXXFLAGS`
1166 ASFLAGS=`echo \
1167     $_COMPILATION_ASFLAGS \
1168     $ASFLAGS`
1170 COMPILE_CFLAGS=`echo \
1171     $_DEFINES_CFLAGS \
1172     $COMPILE_CFLAGS`
1174 COMPILE_CXXFLAGS=`echo \
1175     $_DEFINES_CXXFLAGS \
1176     $COMPILE_CXXFLAGS`
1178 HOST_CFLAGS=`echo \
1179     $_COMPILATION_HOST_CFLAGS \
1180     $HOST_CFLAGS`
1182 HOST_CXXFLAGS=`echo \
1183     $_COMPILATION_HOST_CXXFLAGS \
1184     $HOST_CXXFLAGS`
1186 LDFLAGS=`echo \
1187     $LDFLAGS \
1188     $_COMPILATION_LDFLAGS`
1190 HOST_LDFLAGS=`echo \
1191     $HOST_LDFLAGS \
1192     $_COMPILATION_HOST_LDFLAGS`
1194 HOST_CMFLAGS="-x objective-c -fobjc-exceptions"
1195 HOST_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
1196 OS_COMPILE_CMFLAGS="-x objective-c -fobjc-exceptions"
1197 OS_COMPILE_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
1198 if test "$MOZ_WIDGET_TOOLKIT" = uikit; then
1199   OS_COMPILE_CMFLAGS="$OS_COMPILE_CMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
1200   OS_COMPILE_CMMFLAGS="$OS_COMPILE_CMMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
1202 AC_SUBST(HOST_CMFLAGS)
1203 AC_SUBST(HOST_CMMFLAGS)
1204 AC_SUBST(OS_COMPILE_CMFLAGS)
1205 AC_SUBST(OS_COMPILE_CMMFLAGS)
1207 OS_CFLAGS="$CFLAGS"
1208 OS_CXXFLAGS="$CXXFLAGS"
1209 OS_CPPFLAGS="$CPPFLAGS"
1210 OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
1211 OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
1212 OS_LDFLAGS="$LDFLAGS"
1213 OS_LIBS="$LIBS"
1214 AC_SUBST_LIST(OS_CFLAGS)
1215 AC_SUBST_LIST(OS_CXXFLAGS)
1216 AC_SUBST_LIST(OS_CPPFLAGS)
1217 AC_SUBST_LIST(OS_COMPILE_CFLAGS)
1218 AC_SUBST_LIST(OS_COMPILE_CXXFLAGS)
1219 AC_SUBST_LIST(OS_LDFLAGS)
1220 AC_SUBST(OS_LIBS)
1222 AC_SUBST(HOST_CC)
1223 AC_SUBST(HOST_CXX)
1224 AC_SUBST_LIST(HOST_CFLAGS)
1225 AC_SUBST_LIST(HOST_CPPFLAGS)
1226 AC_SUBST_LIST(HOST_CXXFLAGS)
1227 AC_SUBST(HOST_LDFLAGS)
1228 AC_SUBST_LIST(HOST_OPTIMIZE_FLAGS)
1229 AC_SUBST(HOST_BIN_SUFFIX)
1231 AC_SUBST(TARGET_XPCOM_ABI)
1233 AC_SUBST(DSO_LDOPTS)
1234 AC_SUBST(BIN_SUFFIX)
1235 AC_SUBST(USE_N32)
1236 AC_SUBST(WIN32_CONSOLE_EXE_LDFLAGS)
1237 AC_SUBST(WIN32_GUI_EXE_LDFLAGS)
1239 AC_SUBST(MOZ_DEVTOOLS)
1241 AC_SUBST(MOZ_PACKAGE_JSSHELL)
1243 AC_SUBST(DMG_TOOL)
1245 dnl Host JavaScript runtime, if any, to use during cross compiles.
1246 AC_SUBST(JS_BINARY)
1248 AC_SUBST(NSS_EXTRA_SYMBOLS_FILE)
1250 dnl Set various defines and substitutions
1251 dnl ========================================================
1253 AC_SUBST(MOZ_DEV_EDITION)
1254 if test -n "$MOZ_DEV_EDITION"; then
1255     AC_DEFINE(MOZ_DEV_EDITION)
1258 dnl Spit out some output
1259 dnl ========================================================
1261 # Avoid using obsolete NSPR features
1262 AC_DEFINE(NO_NSPR_10_SUPPORT)
1264 MOZ_CREATE_CONFIG_STATUS()
1266 rm -fr confdefs* $ac_clean_files