Bug 1835231 - Use dlopen() wrapper for Android <= 22 r=gsvelto
[gecko.git] / old-configure.in
blobada50d1aa51df360c73e5956d7e80e25d51363ec
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"
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=601
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 -n "$IS_VS2019_OR_MORE" -a "$CPU_ARCH" != "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         if test -n "$WIN_UCRT_REDIST_DIR"; then
112           if test ! -d "$WIN_UCRT_REDIST_DIR"; then
113             AC_MSG_ERROR([Invalid Windows UCRT Redist directory: ${WIN_UCRT_REDIST_DIR}])
114           fi
115           WIN_UCRT_REDIST_DIR=`cd "$WIN_UCRT_REDIST_DIR" && (pwd -W 2>/dev/null || pwd)`
116         fi
118         AC_SUBST(MSVC_C_RUNTIME_DLL)
119         AC_SUBST(MSVC_C_RUNTIME_1_DLL)
120         AC_SUBST(MSVC_CXX_RUNTIME_DLL)
122         AC_DEFINE(HAVE_SEH_EXCEPTIONS)
124         if test -n "$WIN32_REDIST_DIR"; then
125           if test ! -d "$WIN32_REDIST_DIR"; then
126             AC_MSG_ERROR([Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}])
127           fi
128           WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && (pwd -W 2>/dev/null || pwd)`
129         fi
130     else
131         # Check w32api version
132         _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
133         _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
134         AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
135         AC_TRY_COMPILE([#include <w32api.h>],
136             #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
137                 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
138                  __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
139                 #error "test failed."
140             #endif
141             , [ res=yes ], [ res=no ])
142         AC_MSG_RESULT([$res])
143         if test "$res" != "yes"; then
144             AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
145         fi
146         # strsafe.h on mingw uses macros for function deprecation that pollutes namespace
147         # causing problems with local implementations with the same name.
148         AC_DEFINE(STRSAFE_NO_DEPRECATE)
149     fi # !GNU_CC
151     AC_DEFINE(_USE_MATH_DEFINES) # Otherwise Windows' math.h doesn't #define M_PI.
153     CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0"
154     CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0"
156     AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
157     AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
158     # Require OS features provided by IE 8.0 (Win7)
159     AC_DEFINE_UNQUOTED(_WIN32_IE,0x0800)
161     ;;
162 esac
164 if test -n "$_WIN32_MSVC"; then
165     SKIP_PATH_CHECKS=1
166     SKIP_COMPILER_CHECKS=1
167     SKIP_LIBRARY_CHECKS=1
169     # Since we're skipping compiler and library checks, hard-code
170     # some facts here.
171     AC_DEFINE(HAVE_IO_H)
172     AC_DEFINE(HAVE_ISATTY)
175 fi # COMPILE_ENVIRONMENT
177 AC_SUBST(GNU_CC)
178 AC_SUBST(GNU_CXX)
180 dnl ========================================================
181 dnl set the defaults first
182 dnl ========================================================
183 MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib"
185 dnl Configure platform-specific CPU architecture compiler options.
186 dnl ==============================================================
187 if test "$COMPILE_ENVIRONMENT"; then
188     MOZ_ARCH_OPTS
189 fi # COMPILE_ENVIRONMENT
191 if test -n "$COMPILE_ENVIRONMENT"; then
192    MOZ_CONFIG_SANITIZE
195 dnl ========================================================
196 dnl GNU specific defaults
197 dnl ========================================================
198 if test "$GNU_CC"; then
199     if test "$OS_ARCH" != "WINNT" -o -z "$CLANG_CC"; then
200         DSO_PIC_CFLAGS='-fPIC'
201         ASFLAGS="$ASFLAGS -fPIC"
202     fi
204     AC_MSG_CHECKING([for --noexecstack option to as])
205     _SAVE_CFLAGS=$CFLAGS
206     CFLAGS="$CFLAGS -Wa,--noexecstack"
207     AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
208                      [ASFLAGS="$ASFLAGS -Wa,--noexecstack"],
209                      AC_MSG_RESULT([no]))
210     CFLAGS=$_SAVE_CFLAGS
211     AC_MSG_CHECKING([for -z noexecstack option to ld])
212     _SAVE_LDFLAGS=$LDFLAGS
213     LDFLAGS="$LDFLAGS -Wl,-z,noexecstack"
214     AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
215                   AC_MSG_RESULT([no])
216                   LDFLAGS=$_SAVE_LDFLAGS)
218     AC_MSG_CHECKING([for -z text option to ld])
219     _SAVE_LDFLAGS=$LDFLAGS
220     LDFLAGS="$LDFLAGS -Wl,-z,text"
221     AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
222                   AC_MSG_RESULT([no])
223                   LDFLAGS=$_SAVE_LDFLAGS)
225     AC_MSG_CHECKING([for -z relro option to ld])
226     _SAVE_LDFLAGS=$LDFLAGS
227     LDFLAGS="$LDFLAGS -Wl,-z,relro"
228     AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
229                   AC_MSG_RESULT([no])
230                   LDFLAGS=$_SAVE_LDFLAGS)
232     AC_MSG_CHECKING([for -z nocopyreloc option to ld])
233     _SAVE_LDFLAGS=$LDFLAGS
234     LDFLAGS="$LDFLAGS -Wl,-z,nocopyreloc"
235     AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
236                   AC_MSG_RESULT([no])
237                   LDFLAGS=$_SAVE_LDFLAGS)
239     AC_MSG_CHECKING([for -Bsymbolic-functions option to ld])
240     _SAVE_LDFLAGS=$LDFLAGS
241     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
242     AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
243                   AC_MSG_RESULT([no])
244                   LDFLAGS=$_SAVE_LDFLAGS)
246     # While sha1 is deterministic, it is slower.
247     if test -z "$DEVELOPER_OPTIONS"; then
248         build_id=sha1
249     else
250         build_id=uuid
251     fi
252     AC_MSG_CHECKING([for --build-id=$build_id option to ld])
253     _SAVE_LDFLAGS=$LDFLAGS
254     LDFLAGS="$LDFLAGS -Wl,--build-id=$build_id"
255     AC_TRY_LINK(,,AC_MSG_RESULT([yes]),
256                   AC_MSG_RESULT([no])
257                   LDFLAGS=$_SAVE_LDFLAGS)
259     AC_MSG_CHECKING([for --ignore-unresolved-symbol option to ld])
260     HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=
261     _SAVE_LDFLAGS=$LDFLAGS
262     LDFLAGS="$LDFLAGS -Wl,--ignore-unresolved-symbol,environ"
263     AC_TRY_LINK(,,AC_MSG_RESULT([yes])
264                   [HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED=1],
265                   AC_MSG_RESULT([no]))
266     LDFLAGS=$_SAVE_LDFLAGS
268     DSO_LDOPTS='-shared'
269     if test "$GCC_USE_GNU_LD"; then
270         # Some tools like ASan use a runtime library that is only
271         # linked against executables, so we must allow undefined
272         # symbols for shared objects in some cases.
273         if test -z "$MOZ_ASAN$MOZ_MSAN$MOZ_UBSAN$MOZ_TSAN$FUZZING_INTERFACES"; then
274             # Don't allow undefined symbols in libraries
275             DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
277             # BSDs need `environ' exposed for posix_spawn (bug 753046)
278             case "$OS_TARGET" in
279             DragonFly|FreeBSD|NetBSD|OpenBSD)
280                 if test -n "$HAVE_LINKER_SUPPORT_IGNORE_UNRESOLVED"; then
281                     DSO_LDOPTS="$DSO_LDOPTS -Wl,--ignore-unresolved-symbol,environ"
282                 else
283                     DSO_LDOPTS="$DSO_LDOPTS -Wl,--warn-unresolved-symbols"
284                 fi
285                 ;;
286             esac
287         fi
288     fi
290     _DEFINES_CFLAGS="-include $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
292     ASFLAGS="$ASFLAGS $_DEFINES_CFLAGS"
295 if test "$GNU_CXX"; then
296     CXXFLAGS="$CXXFLAGS -fno-exceptions"
298     _DEFINES_CXXFLAGS="-DMOZILLA_CLIENT -include $_objdir/mozilla-config.h"
301 dnl ========================================================
302 dnl System overrides of the defaults for host
303 dnl ========================================================
304 case "$host" in
305 *mingw*)
306     if test -n "$_WIN32_MSVC"; then
307         HOST_CFLAGS="$HOST_CFLAGS"
308     else
309         HOST_CFLAGS="$HOST_CFLAGS -mwindows"
310     fi
311     HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN -DWIN32 -D_WIN32 -D_CRT_SECURE_NO_WARNINGS"
312     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
313     HOST_BIN_SUFFIX=.exe
315     case "${host_cpu}" in
316     i*86)
317         if test -n "$_WIN32_MSVC"; then
318             HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X86"
319         fi
320         ;;
321     x86_64)
322         if test -n "$_WIN32_MSVC"; then
323             HOST_LDFLAGS="$HOST_LDFLAGS -MACHINE:X64"
324         fi
325         HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
326         ;;
327     esac
328     ;;
330 *-darwin*)
331     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX"
332     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
333     ;;
335 *-linux*|*-kfreebsd*-gnu|*-gnu*)
336     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
337     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
338     ;;
341     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
342     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
343     ;;
344 esac
346 dnl ========================================================
347 dnl System overrides of the defaults for target
348 dnl ========================================================
350 case "$target" in
351 *-darwin*)
352     MOZ_OPTIMIZE_FLAGS="-O3"
353     DSO_LDOPTS=''
355     dnl DTrace and -dead_strip don't interact well. See bug 403132.
356     dnl ===================================================================
357     if test "x$enable_dtrace" = "xyes"; then
358         echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
359     else
360         dnl check for the presence of the -dead_strip linker flag
361         AC_MSG_CHECKING([for -dead_strip option to ld])
362         _SAVE_LDFLAGS=$LDFLAGS
363         LDFLAGS="$LDFLAGS -Wl,-dead_strip"
364         AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
365         if test -n "$_HAVE_DEAD_STRIP" ; then
366             AC_MSG_RESULT([yes])
367             MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
368         else
369             AC_MSG_RESULT([no])
370         fi
372         LDFLAGS=$_SAVE_LDFLAGS
373     fi
375     MOZ_FIX_LINK_PATHS=
376     ;;
378 *-android*|*-linuxandroid*)
379     if test -z "$CLANG_CC"; then
380         MOZ_OPTIMIZE_FLAGS="-freorder-blocks -fno-reorder-functions -Os"
381     else
382         # From https://github.com/android-ndk/ndk/issues/133#issuecomment-308549264
383         # -Oz is smaller than -Os on clang.
384         MOZ_OPTIMIZE_FLAGS="-Oz"
385         # Disable the outliner, which causes performance regressions, and is
386         # enabled on some platforms at -Oz.
387         if test -z "$MOZ_LTO"; then
388             DISABLE_OUTLINER="-mno-outline"
389             _SAVE_CFLAGS=$CFLAGS
390             CFLAGS="$CFLAGS $DISABLE_OUTLINER"
391             AC_TRY_COMPILE(,,[MOZ_OPTIMIZE_FLAGS="$MOZ_OPTIMIZE_FLAGS $DISABLE_OUTLINER"])
392             CFLAGS="$_SAVE_CFLAGS"
393         else
394             DISABLE_OUTLINER="-Wl,-plugin-opt=-enable-machine-outliner=never"
395             _SAVE_LDFLAGS=$LDFLAGS
396             LDFLAGS="$LDFLAGS $MOZ_LTO_LDFLAGS $DISABLE_OUTLINER"
397             AC_TRY_LINK(,,[MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS $DISABLE_OUTLINER"])
398             LDFLAGS="$_SAVE_LDFLAGS"
399         fi
400     fi
401     ;;
403 *-*linux*)
404     if test "$GNU_CC" -o "$GNU_CXX"; then
405         MOZ_PGO_OPTIMIZE_FLAGS="-O3"
406         if test -n "$MOZ_DEBUG"; then
407             MOZ_OPTIMIZE_FLAGS="-Os"
408         else
409             MOZ_OPTIMIZE_FLAGS="-O2"
410         fi
411         if test -z "$CLANG_CC"; then
412            MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS"
413         fi
414     fi
416     case "${target_cpu}" in
417     alpha*)
418         CFLAGS="$CFLAGS -mieee"
419         CXXFLAGS="$CXXFLAGS -mieee"
420     ;;
421     esac
422     ;;
423 *-mingw*)
424     DSO_PIC_CFLAGS=
425     # certain versions of cygwin's makedepend barf on the
426     # #include <string> vs -I./dist/include/string issue so don't use it
427     if test -n "$GNU_CC" -o -n "$CLANG_CC"; then
428         # $GNU_CC will match gcc and clang; while $CLANG_CC will match only clang
429         if test -z "$CLANG_CC"; then
430             AC_MSG_ERROR(Firefox cannot be built with mingw-gcc and requires a mingw-clang toolchain to work)
431         fi
433         DSO_LDOPTS='-shared'
434         MOZ_FIX_LINK_PATHS=
436         MOZ_OPTIMIZE_FLAGS="-O2"
438         WIN32_CONSOLE_EXE_LDFLAGS=-mconsole
439         WIN32_GUI_EXE_LDFLAGS=-mwindows
441         # Silence problematic clang warnings
442         CXXFLAGS="$CXXFLAGS -Wno-incompatible-ms-struct"
443         LDFLAGS="$LDFLAGS -Wl,--no-insert-timestamp"
444     else
445         TARGET_COMPILER_ABI=msvc
446         # aarch64 doesn't support subsystems below 6.02
447         if test "$CPU_ARCH" = "aarch64"; then
448             WIN32_SUBSYSTEM_VERSION=6.02
449         else
450             WIN32_SUBSYSTEM_VERSION=6.01
451         fi
452         WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION
453         WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
454         DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
455         _DEFINES_CFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
456         _DEFINES_CXXFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
457         CFLAGS="$CFLAGS -Gy -Zc:inline"
458         CXXFLAGS="$CXXFLAGS -Gy -Zc:inline"
459         if test "$CPU_ARCH" = "x86"; then
460             dnl VS2012+ defaults to -arch:SSE2. We want to target nothing
461             dnl more recent, so set that explicitly here unless another
462             dnl target arch has already been set.
463             changequote(,)
464             if test -z `echo $CFLAGS | grep -i [-/]arch:`; then
465               CFLAGS="$CFLAGS -arch:SSE2"
466             fi
467             if test -z `echo $CXXFLAGS | grep -i [-/]arch:`; then
468               CXXFLAGS="$CXXFLAGS -arch:SSE2"
469             fi
470             changequote([,])
471         fi
472         dnl VS2013+ supports -Gw for better linker optimizations.
473         dnl http://blogs.msdn.com/b/vcblog/archive/2013/09/11/introducing-gw-compiler-switch.aspx
474         dnl Disabled on ASan because it causes false-positive ODR violations.
475         if test -z "$MOZ_ASAN"; then
476             CFLAGS="$CFLAGS -Gw"
477             CXXFLAGS="$CXXFLAGS -Gw"
478         else
479             # String tail merging doesn't play nice with ASan's ODR checker.
480             LDFLAGS="$LDFLAGS -opt:nolldtailmerge"
481         fi
482         # Silence VS2017 15.5+ TR1 deprecation warnings hit by older gtest versions
483         CXXFLAGS="$CXXFLAGS -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING"
484         MOZ_DEBUG_LDFLAGS='-DEBUG'
485         if test "$HOST_OS_ARCH" != "WINNT"; then
486           # %_PDB% is a special signal to emit only the PDB basename. This
487           # avoids problems in Windows tools that don't like forward-slashes.
488           MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -PDBALTPATH:%_PDB%"
489         fi
490         MOZ_OPTIMIZE_FLAGS='-O2'
491         MOZ_FIX_LINK_PATHS=
492         LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE"
493     fi
494     AC_DEFINE(WIN32_LEAN_AND_MEAN)
495     dnl See http://support.microsoft.com/kb/143208 to use STL
496     AC_DEFINE(NOMINMAX)
497     BIN_SUFFIX='.exe'
499     case "$host_os" in
500     cygwin*|msvc*|mks*)
501         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.])
502         ;;
503     esac
505     case "$target" in
506     i*86-*)
507         if test -n "$GNU_CC"; then
508             CFLAGS="$CFLAGS -mstackrealign"
509             CXXFLAGS="$CXXFLAGS -mstackrealign"
510             LDFLAGS="$LDFLAGS -Wl,--large-address-aware"
511         else
512             DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X86"
513             LDFLAGS="$LDFLAGS -SAFESEH"
514         fi
516         AC_DEFINE(_X86_)
517         ;;
518     x86_64-*)
519         if test -n "$_WIN32_MSVC"; then
520             DSO_LDOPTS="$DSO_LDOPTS -MACHINE:X64"
521         fi
522         AC_DEFINE(_AMD64_)
523         ;;
524     aarch64-*)
525         if test -n "$_WIN32_MSVC"; then
526             DSO_LDOPTS="$DSO_LDOPTS -MACHINE:ARM64"
527         fi
528         AC_DEFINE(_ARM64_)
529         ;;
530     *)
531         AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
532         ;;
533     esac
534     ;;
536 *-netbsd*)
537     CFLAGS="$CFLAGS -Dunix"
538     CXXFLAGS="$CXXFLAGS -Dunix"
539     if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
540         DSO_PIC_CFLAGS='-fPIC -DPIC'
541         DSO_LDOPTS='-shared'
542         MOZ_PROGRAM_LDFLAGS="$MOZ_PROGRAM_LDFLAGS -Wl,--export-dynamic"
543     else
544         DSO_PIC_CFLAGS='-fPIC -DPIC'
545         DSO_LDOPTS='-shared'
546     fi
547     # This will fail on a.out systems prior to 1.5.1_ALPHA.
548     if test "$LIBRUNPATH"; then
549         DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
550     fi
551     ;;
553 *-openbsd*)
554     if test -z "$X11BASE"; then
555         X11BASE=/usr/X11R6
556     fi
557     MOZ_FIX_LINK_PATHS="$MOZ_FIX_LINK_PATHS -Wl,-rpath-link,${X11BASE}/lib"
558     DSO_PIC_CFLAGS='-fPIC'
559     DSO_LDOPTS='-shared -fPIC'
560     if test "$LIBRUNPATH"; then
561         DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
562     fi
563     ;;
565 *-solaris*)
566     MOZ_FIX_LINK_PATHS="-L${DIST}/bin"
567     ;;
569 esac
571 CFLAGS="$CFLAGS $DSO_PIC_CFLAGS"
572 CXXFLAGS="$CXXFLAGS $DSO_PIC_CFLAGS"
574 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
575     MOZ_OPTIMIZE_FLAGS="-O"
579 if test -z "$COMPILE_ENVIRONMENT"; then
580     SKIP_COMPILER_CHECKS=1
581     SKIP_LIBRARY_CHECKS=1
582     MOZ_DEBUGGING_OPTS
583 else
584     MOZ_COMPILER_OPTS
585 fi # COMPILE_ENVIRONMENT
587 if test -z "$SKIP_COMPILER_CHECKS"; then
588 dnl Checks for typedefs, structures, and compiler characteristics.
589 dnl ========================================================
590 AC_C_CONST
591 AC_TYPE_MODE_T
592 AC_TYPE_OFF_T
593 AC_TYPE_PID_T
594 AC_TYPE_SIZE_T
595 AC_LANG_CPLUSPLUS
596 AC_LANG_C
598 AC_LANG_CPLUSPLUS
600 MOZ_CXX11
602 AC_LANG_C
604 dnl Checks for header files.
605 dnl ========================================================
606 AC_HEADER_DIRENT
608 dnl Checks for libraries.
609 dnl ========================================================
610 AC_CHECK_LIB(c_r, gethostbyname_r)
612 dnl We don't want to link with libdl even if it's present on OS X, since
613 dnl it's not used and not part of the default installation. OS/2 has dlfcn
614 dnl in libc.
615 dnl We don't want to link against libm or libpthread on Darwin since
616 dnl they both are just symlinks to libSystem and explicitly linking
617 dnl against libSystem causes issues when debugging (see bug 299601).
618 case $target in
619 *-darwin*)
620     ;;
622     AC_SEARCH_LIBS(dlopen, dl,
623         MOZ_CHECK_HEADER(dlfcn.h,
624         AC_DEFINE(HAVE_DLOPEN)))
625     ;;
626 esac
628 _SAVE_CFLAGS="$CFLAGS"
629 CFLAGS="$CFLAGS -D_GNU_SOURCE"
630 AC_CHECK_FUNCS(dladdr)
631 CFLAGS="$_SAVE_CFLAGS"
633 if test ! "$GNU_CXX"; then
634     AC_CHECK_LIB(C, demangle)
637 AC_CHECK_LIB(socket, socket)
639 dnl ========================================================
640 dnl = pthread support
641 dnl = Start by checking whether the system support pthreads
642 dnl ========================================================
643 case "$target_os" in
644 darwin*)
645     MOZ_USE_PTHREADS=1
646     ;;
648     AC_CHECK_LIB(pthreads, pthread_create,
649         MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
650         AC_CHECK_LIB(pthread, pthread_create,
651             MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
652             AC_CHECK_LIB(c_r, pthread_create,
653                 MOZ_USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
654                 AC_CHECK_LIB(c, pthread_create,
655                     MOZ_USE_PTHREADS=1
656                 )
657             )
658         )
659     )
660     ;;
661 esac
663 dnl ========================================================
664 dnl Do the platform specific pthread hackery
665 dnl ========================================================
666 if test "$MOZ_USE_PTHREADS"x != x
667 then
668     dnl
669     dnl See if -pthread is supported.
670     dnl
671     rm -f conftest*
672     ac_cv_have_dash_pthread=no
673     AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
674     echo 'int main() { return 0; }' | cat > conftest.c
675     ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
676     if test $? -eq 0; then
677         if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
678             ac_cv_have_dash_pthread=yes
679             case "$target_os" in
680             freebsd*)
681 # Freebsd doesn't use -pthread for compiles, it uses them for linking
682                 ;;
683             *)
684                 CFLAGS="$CFLAGS -pthread"
685                 CXXFLAGS="$CXXFLAGS -pthread"
686                 ;;
687             esac
688         fi
689     fi
690     rm -f conftest*
691     AC_MSG_RESULT($ac_cv_have_dash_pthread)
693     dnl
694     dnl See if -pthreads is supported.
695     dnl
696     ac_cv_have_dash_pthreads=no
697     if test "$ac_cv_have_dash_pthread" = "no"; then
698         AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
699         echo 'int main() { return 0; }' | cat > conftest.c
700         ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
701         if test $? -eq 0; then
702             if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
703                 ac_cv_have_dash_pthreads=yes
704                 CFLAGS="$CFLAGS -pthreads"
705                 CXXFLAGS="$CXXFLAGS -pthreads"
706             fi
707         fi
708         rm -f conftest*
709         AC_MSG_RESULT($ac_cv_have_dash_pthreads)
710     fi
712     case "$target" in
713         *-*-freebsd*)
714             AC_DEFINE(_REENTRANT)
715             AC_DEFINE(_THREAD_SAFE)
716             dnl -pthread links in -lpthread, so don't specify it explicitly.
717             if test "$ac_cv_have_dash_pthread" = "yes"; then
718                 _PTHREAD_LDFLAGS="-pthread"
719             fi
720             ;;
722         *-*-openbsd*|*-*-bsdi*)
723             AC_DEFINE(_REENTRANT)
724             AC_DEFINE(_THREAD_SAFE)
725             dnl -pthread links in -lc_r, so don't specify it explicitly.
726             if test "$ac_cv_have_dash_pthread" = "yes"; then
727                 _PTHREAD_LDFLAGS="-pthread"
728             fi
729             ;;
731         *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
732             AC_DEFINE(_REENTRANT)
733             ;;
735     esac
736     LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
737     AC_SUBST(MOZ_USE_PTHREADS)
738     MOZ_CHECK_HEADERS(pthread.h)
742 dnl Checks for library functions.
743 dnl ========================================================
745 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock
746 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC),
747                ac_cv_clock_monotonic,
748                [for libs in "" -lrt; do
749                     _SAVE_LIBS="$LIBS"
750                     LIBS="$LIBS $libs"
751 dnl clock_gettime is available on OSX since 10.12, so depending on MACOSX_DEPLOYMENT_TARGET,
752 dnl we should or not be able to use it. To detect if we can, we need to make the
753 dnl availability attribute strict, so that compilation fails when the target is < 10.12.
754                     AC_TRY_LINK([#define availability(os, ...) availability(os, strict, __VA_ARGS)
755                                  #include <time.h>],
756                                  [ struct timespec ts;
757                                    clock_gettime(CLOCK_MONOTONIC, &ts); ],
758                                  ac_cv_clock_monotonic=$libs
759                                  LIBS="$_SAVE_LIBS"
760                                  break,
761                                  ac_cv_clock_monotonic=no)
762                     LIBS="$_SAVE_LIBS"
763                 done])
764 if test "$ac_cv_clock_monotonic" != "no"; then
765     HAVE_CLOCK_MONOTONIC=1
766     REALTIME_LIBS=$ac_cv_clock_monotonic
767     AC_DEFINE(HAVE_CLOCK_MONOTONIC)
768     AC_SUBST(HAVE_CLOCK_MONOTONIC)
769     AC_SUBST_LIST(REALTIME_LIBS)
772 AC_CACHE_CHECK(
773     [for res_ninit()],
774     ac_cv_func_res_ninit,
775     [if test "$OS_TARGET" = NetBSD -o "$OS_TARGET" = OpenBSD; then
776         dnl no need for res_ninit() on NetBSD and OpenBSD
777         ac_cv_func_res_ninit=no
778      else
779         AC_TRY_LINK([
780             #ifdef linux
781             #define _BSD_SOURCE 1
782             #endif
783             #include <sys/types.h>
784             #include <netinet/in.h>
785             #include <arpa/nameser.h>
786             #include <resolv.h>
787             ],
788             [int foo = res_ninit(&_res);],
789             [ac_cv_func_res_ninit=yes],
790             [ac_cv_func_res_ninit=no])
791      fi
792     ])
794 if test "$ac_cv_func_res_ninit" = "yes"; then
795     AC_DEFINE(HAVE_RES_NINIT)
796 dnl must add the link line we do something as foolish as this... dougt
797 dnl else
798 dnl    AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
799 dnl        AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
802 AC_LANG_C
804 dnl ===================================================================
805 dnl ========================================================
806 dnl Put your C++ language/feature checks below
807 dnl ========================================================
808 AC_LANG_CPLUSPLUS
810 ARM_ABI_PREFIX=
811 if test "$GNU_CC"; then
812   if test "$CPU_ARCH" = "arm" ; then
813     AC_CACHE_CHECK(for ARM EABI,
814         ac_cv_gcc_arm_eabi,
815         [AC_TRY_COMPILE([],
816                         [
817 #if defined(__ARM_EABI__)
818   return 0;
819 #else
820 #error Not ARM EABI.
821 #endif
822                         ],
823                         ac_cv_gcc_arm_eabi="yes",
824                         ac_cv_gcc_arm_eabi="no")])
825     if test "$ac_cv_gcc_arm_eabi" = "yes"; then
826         HAVE_ARM_EABI=1
827         ARM_ABI_PREFIX=eabi-
828     else
829         ARM_ABI_PREFIX=oabi-
830     fi
831   fi
833   TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
836 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
837 # We pass MOZ_OPTIMIZE_LDFLAGS to the linker because if dead_strip is
838 # enabled, the linker in xcode 4.1 will crash. Without this it would crash when
839 # linking XUL.
840 _SAVE_LDFLAGS=$LDFLAGS
841 LDFLAGS="$LDFLAGS $DSO_LDOPTS $MOZ_OPTIMIZE_LDFLAGS"
842 AC_CACHE_CHECK(for __thread keyword for TLS variables,
843                ac_cv_thread_keyword,
844                [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
845                             [return tlsIsMainThread;],
846                             ac_cv_thread_keyword=yes,
847                             ac_cv_thread_keyword=no)])
848 LDFLAGS=$_SAVE_LDFLAGS
849 # The custom dynamic linker doesn't support TLS variables
850 if test "$ac_cv_thread_keyword" = yes -a "$MOZ_LINKER" != 1; then
851   # mips builds fail with TLS variables because of a binutils bug.
852   # See bug 528687
853   # OpenBSD doesn't have TLS support, and the test succeeds with clang++
854   case "${target}" in
855     mips*-*)
856       :
857       ;;
858     *-android*|*-linuxandroid*)
859       :
860       ;;
861     *-openbsd*)
862       :
863       ;;
864     *)
865       AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
866       ;;
867   esac
870 if test -n "$MOZ_LINKER"; then
871 dnl gold emits wrong sysv-style elf hash tables when building both sysv and
872 dnl style tables. https://sourceware.org/bugzilla/show_bug.cgi?id=13597
873 dnl Since the linker only understands the sysv ones, no need to build the
874 dnl gnu style tables anyways.
875   LDFLAGS="$LDFLAGS -Wl,--hash-style=sysv"
878 dnl End of C++ language/feature checks
879 AC_LANG_C
881 fi # ! SKIP_COMPILER_CHECKS
883 if test -n "${COMPILE_ENVIRONMENT}"; then
884   MOZ_CHECK_ALLOCATOR
887 TARGET_XPCOM_ABI=
888 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
889     TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
890     AC_DEFINE_UNQUOTED(TARGET_XPCOM_ABI, ["${TARGET_XPCOM_ABI}"])
893 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
894 dnl features that Windows actually does support.
896 if test -n "$SKIP_COMPILER_CHECKS"; then
897    dnl Windows has malloc.h
898    AC_DEFINE(MALLOC_H, [<malloc.h>])
899    AC_DEFINE(HAVE_FORCEINLINE)
900 fi # SKIP_COMPILER_CHECKS
902 dnl Mozilla specific options
903 dnl ========================================================
904 dnl The macros used for command line options
905 dnl are defined in build/autoconf/altoptions.m4.
907 dnl ========================================================
908 dnl =
909 dnl = Application
910 dnl =
911 dnl ========================================================
913 MOZ_BRANDING_DIRECTORY=
914 MOZ_OFFICIAL_BRANDING=
915 MOZ_NO_SMART_CARDS=
916 MOZ_BINARY_EXTENSIONS=
917 MOZ_DEVTOOLS=server
919 dnl ========================================================
920 dnl = Trademarked Branding
921 dnl ========================================================
922 MOZ_ARG_ENABLE_BOOL(official-branding,
923 [  --enable-official-branding
924                           Enable Official mozilla.org Branding
925                           Do not distribute builds with
926                           --enable-official-branding unless you have
927                           permission to use trademarks per
928                           http://www.mozilla.org/foundation/trademarks/ .],
929     MOZ_OFFICIAL_BRANDING=1,
930     MOZ_OFFICIAL_BRANDING=)
932 # Allow the application to influence configure with a confvars.sh script.
933 AC_MSG_CHECKING([if app-specific confvars.sh exists])
934 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
935   AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
936   . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
937 else
938   AC_MSG_RESULT([no])
941 AC_SUBST(MOZ_OFFICIAL_BRANDING)
942 if test -n "$MOZ_OFFICIAL_BRANDING"; then
943   if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
944     AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
945   else
946     MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
947     AC_DEFINE(MOZ_OFFICIAL_BRANDING)
948   fi
951 MOZ_ARG_WITH_STRING(branding,
952 [  --with-branding=dir     Use branding from the specified directory.],
953     MOZ_BRANDING_DIRECTORY=$withval)
955 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
956 if test -z "$REAL_BRANDING_DIRECTORY"; then
957   REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
960 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
961   . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
964 AC_SUBST(MOZ_BRANDING_DIRECTORY)
966 dnl ========================================================
967 dnl = Distribution ID
968 dnl ========================================================
969 MOZ_ARG_WITH_STRING(distribution-id,
970 [  --with-distribution-id=ID
971                           Set distribution-specific id (default=org.mozilla)],
972 [ val=`echo $withval`
973     MOZ_DISTRIBUTION_ID="$val"])
975 if test -z "$MOZ_DISTRIBUTION_ID"; then
976    MOZ_DISTRIBUTION_ID="org.mozilla"
979 AC_SUBST(MOZ_DISTRIBUTION_ID)
981 dnl ========================================================
982 dnl = Enable code optimization. ON by default.
983 dnl ========================================================
985 # Use value from moz.configure if one is defined. Else use our computed
986 # value.
987 if test -n "${MOZ_CONFIGURE_OPTIMIZE_FLAGS}"; then
988     MOZ_OPTIMIZE_FLAGS=${MOZ_CONFIGURE_OPTIMIZE_FLAGS}
991 if test "$COMPILE_ENVIRONMENT"; then
992 if test -n "$MOZ_OPTIMIZE"; then
993     AC_MSG_CHECKING([for valid C compiler optimization flags])
994     _SAVE_CFLAGS=$CFLAGS
995     CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
996     AC_TRY_COMPILE([#include <stdio.h>],
997         [printf("Hello World\n");],
998         _results=yes,
999         _results=no)
1000     AC_MSG_RESULT([$_results])
1001     if test "$_results" = "no"; then
1002         AC_MSG_ERROR([These compiler flags for C are invalid: $MOZ_OPTIMIZE_FLAGS])
1003     fi
1004     CFLAGS=$_SAVE_CFLAGS
1005     if test -n "$MOZ_LTO" -a -n "$CLANG_CC"; then
1006         # When using llvm-based LTO, non numeric optimization levels are
1007         # not supported by the linker, so force the linker to use -O2 (
1008         # which doesn't influence the level compilation units are actually
1009         # compiled at).
1010         case " $MOZ_OPTIMIZE_FLAGS " in
1011         *\ -Os\ *|*\ -Oz\ *)
1012             MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -O2"
1013             ;;
1014         esac
1015     fi
1017 fi # COMPILE_ENVIRONMENT
1019 AC_SUBST_LIST(MOZ_OPTIMIZE_FLAGS)
1020 AC_SUBST_LIST(MOZ_OPTIMIZE_LDFLAGS)
1021 AC_SUBST_LIST(MOZ_PGO_OPTIMIZE_FLAGS)
1023 case "${OS_TARGET}" in
1024 Android|WINNT|Darwin)
1025   MOZ_GLUE_IN_PROGRAM=
1026   ;;
1028   dnl On !Android !Windows !OSX, we only want to link executables against mozglue
1029   MOZ_GLUE_IN_PROGRAM=1
1030   AC_DEFINE(MOZ_GLUE_IN_PROGRAM)
1031   ;;
1032 esac
1034 dnl ========================================================
1035 dnl = Jemalloc build setup
1036 dnl ========================================================
1037 if test -z "$MOZ_MEMORY"; then
1038   case "${target}" in
1039     *-mingw*)
1040       if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
1041         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.])
1042       fi
1043       ;;
1044   esac
1045 else
1046   dnl The generic feature tests that determine how to compute ncpus are long and
1047   dnl complicated.  Therefore, simply define special cpp variables for the
1048   dnl platforms we have special knowledge of.
1049   case "${target}" in
1050   *-mingw*)
1051     export MOZ_NO_DEBUG_RTL=1
1052     ;;
1053   esac
1054 fi # MOZ_MEMORY
1055 AC_SUBST(MOZ_GLUE_IN_PROGRAM)
1057 dnl ========================================================
1058 dnl = Enable using the clang plugin to build
1059 dnl ========================================================
1061 if test -n "$COMPILE_ENVIRONMENT"; then
1062 MOZ_CONFIG_CLANG_PLUGIN
1063 fi # COMPILE_ENVIRONMENT
1065 if test -z "$SKIP_COMPILER_CHECKS"; then
1066 dnl ========================================================
1067 dnl Check for gcc -pipe support
1068 dnl ========================================================
1069 AC_MSG_CHECKING([for -pipe support])
1070 if test -n "$GNU_CC" -a -n "$GNU_CXX"; then
1071     dnl Any gcc that supports firefox supports -pipe.
1072     CFLAGS="$CFLAGS -pipe"
1073     CXXFLAGS="$CXXFLAGS -pipe"
1074     AC_MSG_RESULT([yes])
1075 else
1076     AC_MSG_RESULT([no])
1079 fi # ! SKIP_COMPILER_CHECKS
1081 AC_LANG_C
1083 if test "$COMPILE_ENVIRONMENT"; then
1084 MOZ_EXPAND_LIBS
1085 fi # COMPILE_ENVIRONMENT
1087 dnl ========================================================
1088 dnl Check if we need the 32-bit Linux SSE2 error dialog
1089 dnl ========================================================
1091 AC_SUBST(MOZ_LINUX_32_SSE2_STARTUP_ERROR)
1093 dnl ========================================================
1094 dnl Check for cairo
1095 dnl ========================================================
1097 if test "$OS_ARCH" = "WINNT"; then
1098     # For now we assume that we will have a uint64_t available through
1099     # one of the above headers or mozstdint.h.
1100     AC_DEFINE(HAVE_UINT64_T)
1103 case "$MOZ_WIDGET_TOOLKIT" in
1104   windows)
1105     if test "$COMPILE_ENVIRONMENT"; then
1106       MOZ_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
1107     fi
1108     ;;
1109 esac
1110 AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
1112 dnl ========================================================
1113 dnl =
1114 dnl = Maintainer debug option (no --enable equivalent)
1115 dnl =
1116 dnl ========================================================
1118 AC_SUBST_LIST(ASFLAGS)
1119 AC_SUBST_LIST(MOZ_DEBUG_LDFLAGS)
1121 AC_SUBST(MOZ_STUB_INSTALLER)
1123 AC_SUBST_LIST(MOZ_FIX_LINK_PATHS)
1125 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
1127 if test -n "$MOZ_BINARY_EXTENSIONS"; then
1128   AC_DEFINE(MOZ_BINARY_EXTENSIONS)
1131 dnl ========================================================
1132 dnl = Mac bundle name prefix
1133 dnl ========================================================
1134 MOZ_ARG_WITH_STRING(macbundlename-prefix,
1135 [  --with-macbundlename-prefix=prefix
1136                           Prefix for MOZ_MACBUNDLE_NAME],
1137 [ MOZ_MACBUNDLE_NAME_PREFIX="$withval"])
1139 MOZ_MACBUNDLE_NAME=$MOZ_APP_DISPLAYNAME
1140 if test "$MOZ_MACBUNDLE_NAME_PREFIX"; then
1141   MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME_PREFIX}${MOZ_MACBUNDLE_NAME}"
1144 if test "$MOZ_DEBUG"; then
1145   MOZ_MACBUNDLE_NAME="${MOZ_MACBUNDLE_NAME}Debug.app"
1146 else
1147   MOZ_MACBUNDLE_NAME=${MOZ_MACBUNDLE_NAME}.app
1149 AC_SUBST(MOZ_MACBUNDLE_NAME)
1151 dnl Mac bundle identifier (based on MOZ_APP_DISPLAYNAME)
1152 # If the MOZ_MACBUNDLE_ID is defined in the configure.sh, use it
1153 # Otherwise, use MOZ_APP_DISPLAYNAME
1154 if test -z "$MOZ_MACBUNDLE_ID"; then
1155    MOZ_MACBUNDLE_ID=`echo $MOZ_APP_DISPLAYNAME | tr 'A-Z' 'a-z' | tr -dc 'a-z-'`
1157 MOZ_MACBUNDLE_ID=${MOZ_DISTRIBUTION_ID}.${MOZ_MACBUNDLE_ID}
1158 if test "$MOZ_DEBUG"; then
1159   MOZ_MACBUNDLE_ID=${MOZ_MACBUNDLE_ID}debug
1162 AC_DEFINE_UNQUOTED(MOZ_MACBUNDLE_ID,$MOZ_MACBUNDLE_ID)
1163 AC_SUBST(MOZ_MACBUNDLE_ID)
1165 dnl ========================================================
1166 dnl = Child Process Name for IPC
1167 dnl ========================================================
1168 if test "$MOZ_WIDGET_TOOLKIT" != "android"; then
1169   MOZ_CHILD_PROCESS_NAME="plugin-container${BIN_SUFFIX}"
1170 else
1171   # We want to let Android unpack the file at install time, but it only does
1172   # so if the file is named libsomething.so. The lib/ path is also required
1173   # because the unpacked file will be under the lib/ subdirectory and will
1174   # need to be executed from that path.
1175   MOZ_CHILD_PROCESS_NAME="libplugin-container.so"
1177 MOZ_CHILD_PROCESS_BUNDLE="plugin-container.app/Contents/MacOS/"
1178 MOZ_CHILD_PROCESS_BUNDLENAME="${MOZ_APP_DISPLAYNAME}CP"
1180 AC_SUBST(MOZ_CHILD_PROCESS_NAME)
1181 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLE)
1182 AC_SUBST(MOZ_CHILD_PROCESS_BUNDLENAME)
1184 # The following variables are available to branding and application
1185 # configuration ($BRANDING/configure.sh and $APPLICATION/confvars.sh):
1186 # - MOZ_APP_VENDOR: Used for application.ini's "Vendor" field, which also
1187 # impacts profile location and user-visible fields.
1188 # - MOZ_APP_DISPLAYNAME: Used in user-visible fields (DLL properties,
1189 # Mac Bundle name, Updater, Installer), it is typically used for nightly
1190 # builds (e.g. Aurora for Firefox).
1191 # - MOZ_APP_PROFILE: When set, used for application.ini's
1192 # "Profile" field, which controls profile location.
1193 # - MOZ_APP_ID: When set, used for application.ini's "ID" field, and
1194 # crash reporter server url.
1195 # - MOZ_PROFILE_MIGRATOR: When set, enables profile migrator.
1197 # The following environment variables used to have an effect, but don't anymore:
1198 # - MOZ_APP_VERSION: Defines the application version number. This was replaced with
1199 # the contents from the version.txt file in the application directory, or
1200 # browser/config/version.txt if there isn't one.
1201 # - MOZ_APP_VERSION_DISPLAY: Defines the application version number. Used
1202 # in the "About" window. This was replaced with the contents from the
1203 # version_display.txt or version.txt in the application directory, or
1204 # browser/config/version_display.txt.
1206 # For extensions and langpacks, we require a max version that is compatible
1207 # across security releases. MOZ_APP_MAXVERSION is our method for doing that.
1208 # 24.0a1 and 24.0a2 aren't affected
1209 # 24.0 becomes 24.*
1210 # 24.1.1 becomes 24.*
1211 IS_ALPHA=`echo $MOZ_APP_VERSION | grep a`
1212 if test -z "$IS_ALPHA"; then
1213   changequote(,)
1214   if test "$(basename $MOZ_BUILD_APP)" = "suite"; then
1215     MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\.[0-9]*\).*|\1|"`.*
1216   else
1217     MOZ_APP_MAXVERSION=`echo $MOZ_APP_VERSION | sed "s|\(^[0-9]*\).*|\1|"`.*
1218   fi
1219   changequote([,])
1220 else
1221   MOZ_APP_MAXVERSION=$MOZ_APP_VERSION
1224 AC_SUBST(MOZ_APP_DISPLAYNAME)
1225 AC_SUBST(MOZ_APP_VENDOR)
1226 AC_SUBST(MOZ_APP_PROFILE)
1227 AC_SUBST(MOZ_APP_ID)
1228 AC_SUBST(MAR_CHANNEL_ID)
1229 AC_SUBST(ACCEPTED_MAR_CHANNEL_IDS)
1230 AC_SUBST(MOZ_PROFILE_MIGRATOR)
1231 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
1232 AC_SUBST(MOZ_APP_UA_NAME)
1233 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
1234 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL, $BROWSER_CHROME_URL)
1235 AC_DEFINE_UNQUOTED(BROWSER_CHROME_URL_QUOTED, "$BROWSER_CHROME_URL")
1237 AC_SUBST(MOZ_APP_MAXVERSION)
1238 AC_SUBST(MOZ_PKG_SPECIAL)
1239 AC_SUBST(MOZ_SIMPLE_PACKAGE_NAME)
1241 if test "$MOZILLA_OFFICIAL"; then
1242     # Build revisions should always be present in official builds
1243     MOZ_INCLUDE_SOURCE_INFO=1
1246 # External builds (specifically Ubuntu) may drop the hg repo information, so we allow to
1247 # explicitly set the repository and changeset information in.
1248 AC_SUBST(MOZ_SOURCE_REPO)
1249 AC_SUBST(MOZ_SOURCE_CHANGESET)
1250 AC_SUBST(MOZ_INCLUDE_SOURCE_INFO)
1252 dnl win32 options
1253 AC_SUBST(WIN32_REDIST_DIR)
1254 AC_SUBST(WIN_UCRT_REDIST_DIR)
1256 dnl Echo the CFLAGS to remove extra whitespace.
1257 CFLAGS=`echo \
1258     $_COMPILATION_CFLAGS \
1259     $CFLAGS`
1261 CXXFLAGS=`echo \
1262     $_COMPILATION_CXXFLAGS \
1263     $CXXFLAGS`
1265 COMPILE_CFLAGS=`echo \
1266     $_DEFINES_CFLAGS \
1267     $COMPILE_CFLAGS`
1269 COMPILE_CXXFLAGS=`echo \
1270     $_DEFINES_CXXFLAGS \
1271     $COMPILE_CXXFLAGS`
1273 HOST_CFLAGS=`echo \
1274     $_COMPILATION_HOST_CFLAGS \
1275     $HOST_CFLAGS`
1277 HOST_CXXFLAGS=`echo \
1278     $_COMPILATION_HOST_CXXFLAGS \
1279     $HOST_CXXFLAGS`
1281 HOST_CMFLAGS="-x objective-c -fobjc-exceptions"
1282 HOST_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
1283 OS_COMPILE_CMFLAGS="-x objective-c -fobjc-exceptions"
1284 OS_COMPILE_CMMFLAGS="-x objective-c++ -fobjc-exceptions"
1285 if test "$MOZ_WIDGET_TOOLKIT" = uikit; then
1286   OS_COMPILE_CMFLAGS="$OS_COMPILE_CMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
1287   OS_COMPILE_CMMFLAGS="$OS_COMPILE_CMMFLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch"
1289 AC_SUBST(HOST_CMFLAGS)
1290 AC_SUBST(HOST_CMMFLAGS)
1291 AC_SUBST(OS_COMPILE_CMFLAGS)
1292 AC_SUBST(OS_COMPILE_CMMFLAGS)
1294 OS_CFLAGS="$CFLAGS"
1295 OS_CXXFLAGS="$CXXFLAGS"
1296 OS_CPPFLAGS="$CPPFLAGS"
1297 OS_COMPILE_CFLAGS="$COMPILE_CFLAGS"
1298 OS_COMPILE_CXXFLAGS="$COMPILE_CXXFLAGS"
1299 OS_LDFLAGS="$LDFLAGS"
1300 OS_LIBS="$LIBS"
1301 AC_SUBST_LIST(OS_CFLAGS)
1302 AC_SUBST_LIST(OS_CXXFLAGS)
1303 AC_SUBST_LIST(OS_CPPFLAGS)
1304 AC_SUBST_LIST(OS_COMPILE_CFLAGS)
1305 AC_SUBST_LIST(OS_COMPILE_CXXFLAGS)
1306 AC_SUBST_LIST(OS_LDFLAGS)
1307 AC_SUBST(OS_LIBS)
1309 AC_SUBST(HOST_CC)
1310 AC_SUBST(HOST_CXX)
1311 AC_SUBST_LIST(HOST_CFLAGS)
1312 AC_SUBST_LIST(HOST_CPPFLAGS)
1313 AC_SUBST_LIST(HOST_CXXFLAGS)
1314 AC_SUBST(HOST_LDFLAGS)
1315 AC_SUBST_LIST(HOST_OPTIMIZE_FLAGS)
1316 AC_SUBST(HOST_BIN_SUFFIX)
1318 AC_SUBST(TARGET_XPCOM_ABI)
1320 AC_SUBST(DSO_LDOPTS)
1321 AC_SUBST(BIN_SUFFIX)
1322 AC_SUBST(USE_N32)
1323 AC_SUBST(WIN32_CONSOLE_EXE_LDFLAGS)
1324 AC_SUBST(WIN32_GUI_EXE_LDFLAGS)
1326 AC_SUBST(MOZ_DEVTOOLS)
1328 AC_SUBST(MOZ_PACKAGE_JSSHELL)
1330 AC_SUBST(DMG_TOOL)
1332 dnl Host JavaScript runtime, if any, to use during cross compiles.
1333 AC_SUBST(JS_BINARY)
1335 AC_SUBST(NSS_EXTRA_SYMBOLS_FILE)
1337 dnl Set various defines and substitutions
1338 dnl ========================================================
1340 AC_SUBST(MOZ_DEV_EDITION)
1341 if test -n "$MOZ_DEV_EDITION"; then
1342     AC_DEFINE(MOZ_DEV_EDITION)
1345 dnl Spit out some output
1346 dnl ========================================================
1348 # Avoid using obsolete NSPR features
1349 AC_DEFINE(NO_NSPR_10_SUPPORT)
1351 MOZ_CREATE_CONFIG_STATUS()
1353 rm -fr confdefs* $ac_clean_files