Try to fix jsreftest report results on win32.
[mozilla-central.git] / configure.in
blobc16f4c7de918aed89d11a27d09531565de98705b
1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*-
2 dnl vi: set tabstop=4 shiftwidth=4 expandtab:
3 dnl ***** BEGIN LICENSE BLOCK *****
4 dnl Version: MPL 1.1/GPL 2.0/LGPL 2.1
5 dnl
6 dnl The contents of this file are subject to the Mozilla Public License Version
7 dnl 1.1 (the "License"); you may not use this file except in compliance with
8 dnl the License. You may obtain a copy of the License at
9 dnl http://www.mozilla.org/MPL/
10 dnl
11 dnl Software distributed under the License is distributed on an "AS IS" basis,
12 dnl WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13 dnl for the specific language governing rights and limitations under the
14 dnl License.
15 dnl
16 dnl The Original Code is this file as it was released upon August 6, 1998.
17 dnl
18 dnl The Initial Developer of the Original Code is
19 dnl Christopher Seawood.
20 dnl Portions created by the Initial Developer are Copyright (C) 1998-2001
21 dnl the Initial Developer. All Rights Reserved.
22 dnl
23 dnl Contributor(s):
24 dnl   Jamie Zawinski <jwz@jwz.org>
25 dnl   gettimeofday args check
26 dnl   Christopher Blizzard <blizzard@appliedtheory.com>
27 dnl   gnomefe update & enable-pthreads
28 dnl   Ramiro Estrugo <ramiro@netscape.com>
29 dnl   X11 makedepend support
30 dnl   Insure support.
31 dnl   Henry Sobotka <sobotka@axess.com>
32 dnl   OS/2 support
33 dnl   Dan Mosedale <dmose@mozilla.org>
34 dnl   LDAP support
35 dnl   Seth Spitzer <sspitzer@netscape.com>
36 dnl   xpctools support
37 dnl   Benjamin Smedberg <benjamin@smedbergs.us>
38 dnl   Howard Chu <hyc@symas.com>
39 dnl   MSYS support
40 dnl   Mark Mentovai <mark@moxienet.com>:
41 dnl   Mac OS X 10.4 support
42 dnl   Giorgio Maone <g.maone@informaction.com>
43 dnl   MSVC l10n compatible version check
44 dnl   Ben Turner <mozilla@songbirdnest.com>
45 dnl   Windows x64 support
46 dnl   Makoto Kato <m_kato@ga2.so-net.ne.jp>
47 dnl
48 dnl Alternatively, the contents of this file may be used under the terms of
49 dnl either the GNU General Public License Version 2 or later (the "GPL"), or
50 dnl the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
51 dnl in which case the provisions of the GPL or the LGPL are applicable instead
52 dnl of those above. If you wish to allow use of your version of this file only
53 dnl under the terms of either the GPL or the LGPL, and not to allow others to
54 dnl use your version of this file under the terms of the MPL, indicate your
55 dnl decision by deleting the provisions above and replace them with the notice
56 dnl and other provisions required by the GPL or the LGPL. If you do not delete
57 dnl the provisions above, a recipient may use your version of this file under
58 dnl the terms of any one of the MPL, the GPL or the LGPL.
59 dnl
60 dnl ***** END LICENSE BLOCK *****
62 dnl Process this file with autoconf to produce a configure script.
63 dnl ========================================================
65 AC_PREREQ(2.13)
66 AC_INIT(config/config.mk)
67 AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
68 AC_CANONICAL_SYSTEM
69 TARGET_CPU="${target_cpu}"
70 TARGET_VENDOR="${target_vendor}"
71 TARGET_OS="${target_os}"
73 MOZ_DEB_TIMESTAMP=`date +"%a, %d  %b %Y %T %z"   2>&1` 
74 AC_SUBST(MOZ_DEB_TIMESTAMP)
76 dnl ========================================================
77 dnl =
78 dnl = Don't change the following two lines.  Doing so breaks:
79 dnl =
80 dnl = CFLAGS="-foo" ./configure
81 dnl =
82 dnl ========================================================
83 CFLAGS="${CFLAGS=}"
84 CPPFLAGS="${CPPFLAGS=}"
85 CXXFLAGS="${CXXFLAGS=}"
86 LDFLAGS="${LDFLAGS=}"
87 HOST_CFLAGS="${HOST_CFLAGS=}"
88 HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
89 HOST_LDFLAGS="${HOST_LDFLAGS=}"
91 dnl ========================================================
92 dnl = Preserve certain environment flags passed to configure
93 dnl = We want sub projects to receive the same flags
94 dnl = untainted by this configure script
95 dnl ========================================================
96 _SUBDIR_CC="$CC"
97 _SUBDIR_CXX="$CXX"
98 _SUBDIR_CFLAGS="$CFLAGS"
99 _SUBDIR_CPPFLAGS="$CPPFLAGS"
100 _SUBDIR_CXXFLAGS="$CXXFLAGS"
101 _SUBDIR_LDFLAGS="$LDFLAGS"
102 _SUBDIR_HOST_CC="$HOST_CC"
103 _SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
104 _SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
105 _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
106 _SUBDIR_CONFIG_ARGS="$ac_configure_args"
108 dnl Set the version number of the libs included with mozilla
109 dnl ========================================================
110 MOZJPEG=62
111 MOZPNG=10401
112 MOZZLIB=0x1230
113 NSPR_VERSION=4
114 NSS_VERSION=3
116 dnl Set the minimum version of toolkit libs used by mozilla
117 dnl ========================================================
118 GLIB_VERSION=1.2.0
119 LIBIDL_VERSION=0.6.3
120 PERL_VERSION=5.006
121 PYTHON_VERSION=2.5
122 CAIRO_VERSION=1.10
123 PANGO_VERSION=1.14.0
124 GTK2_VERSION=2.10.0
125 WINDRES_VERSION=2.14.90
126 W32API_VERSION=3.8
127 GNOMEVFS_VERSION=2.0
128 GNOMEUI_VERSION=2.2.0
129 GCONF_VERSION=1.2.1
130 GIO_VERSION=2.0
131 STARTUP_NOTIFICATION_VERSION=0.8
132 DBUS_VERSION=0.60
133 SQLITE_VERSION=3.7.3
134 LIBNOTIFY_VERSION=0.4
136 MSMANIFEST_TOOL=
138 dnl Set various checks
139 dnl ========================================================
140 MISSING_X=
141 AC_PROG_AWK
143 dnl Initialize the Pthread test variables early so they can be
144 dnl  overridden by each platform.
145 dnl ========================================================
146 USE_PTHREADS=
147 _PTHREAD_LDFLAGS=""
149 dnl Do not allow a separate objdir build if a srcdir build exists.
150 dnl ==============================================================
151 _topsrcdir=`cd \`dirname $0\`; pwd`
152 _objdir=`pwd`
154 if test "$_topsrcdir" != "$_objdir"
155 then
156   # Check for a couple representative files in the source tree
157   _conflict_files=
158   for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
159     if test -f $file; then
160       _conflict_files="$_conflict_files $file"
161     fi
162   done
163   if test "$_conflict_files"; then
164     echo "***"
165     echo "*   Your source tree contains these files:"
166     for file in $_conflict_files; do
167       echo "*         $file"
168     done
169     cat 1>&2 <<-EOF
170         *   This indicates that you previously built in the source tree.
171         *   A source tree build can confuse the separate objdir build.
172         *
173         *   To clean up the source tree:
174         *     1. cd $_topsrcdir
175         *     2. gmake distclean
176         ***
177         EOF
178     exit 1
179     break
180   fi
182 MOZ_BUILD_ROOT=`pwd`
184 dnl Default to MSVC for win32 and gcc-4.2 for darwin
185 dnl ==============================================================
186 if test -z "$CROSS_COMPILE"; then
187 case "$target" in
188 *-cygwin*|*-mingw*|*-msvc*|*-mks*)
189     if test -z "$CC"; then CC=cl; fi
190     if test -z "$CXX"; then CXX=cl; fi
191     if test -z "$CPP"; then CPP="cl -E -nologo"; fi
192     if test -z "$CXXCPP"; then CXXCPP="cl -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
193     if test -z "$LD"; then LD=link; fi
194     if test -z "$AS"; then
195         case "${target_cpu}" in
196         i*86)
197             AS=ml;
198             ;;
199         x86_64)
200             AS=ml64;
201             ;;
202         esac
203     fi
204     if test -z "$MIDL"; then MIDL=midl; fi
205     ;;
206 *-darwin*)
207     if test -z "$CC"; then CC=gcc-4.2; fi
208     if test -z "$CXX"; then CXX=g++-4.2; fi
209     ;;
210 esac
213 COMPILE_ENVIRONMENT=1
214 MOZ_ARG_DISABLE_BOOL(compile-environment,
215 [  --disable-compile-environment
216                           Disable compiler/library checks.],
217     COMPILE_ENVIRONMENT= )
218 AC_SUBST(COMPILE_ENVIRONMENT)
220 MOZ_ARG_WITH_STRING(l10n-base,
221 [  --with-l10n-base=DIR    path to l10n repositories],
222     L10NBASEDIR=$withval)
223 if test ! -z "$L10NBASEDIR"; then
224     if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then
225         AC_MSG_ERROR([--with-l10n-base must specify a path])
226     elif test -d "$L10NBASEDIR"; then
227         L10NBASEDIR=`cd "$L10NBASEDIR" && pwd`
228     else
229         AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
230     fi
232 AC_SUBST(L10NBASEDIR)
234 dnl Check for Perl first -- needed for win32 SDK checks
235 MOZ_PATH_PROGS(PERL, $PERL perl5 perl )
236 if test -z "$PERL" -o "$PERL" = ":"; then
237     AC_MSG_ERROR([perl not found in \$PATH])
240 dnl ========================================================
241 dnl = Android uses a very custom (hacky) toolchain; we need to do this
242 dnl = here, so that the compiler checks can succeed
243 dnl ========================================================
245 MOZ_ARG_WITH_STRING(android-ndk,
246 [  --with-android-ndk=DIR
247                           location where the Android NDK can be found],
248     android_ndk=$withval)
250 MOZ_ARG_WITH_STRING(android-toolchain,
251 [  --with-android-toolchain=DIR
252                           location of the android toolchain, default NDK/build/prebuilt/HOST/arm-eabi-4.4.0],
253     android_toolchain=$withval)
256 MOZ_ARG_WITH_STRING(android-version,
257 [  --with-android-version=VER
258                           android platform version, default 5],
259     android_version=$withval,
260     android_version=5)
262 MOZ_ARG_WITH_STRING(android-sdk,
263 [  --with-android-sdk=DIR
264                           location where the Android SDK can be found (base directory, e.g. .../android/platforms/android-6)],
265     android_sdk=$withval)
267 if test "$target" = "arm-android-eabi" ; then
268     if test -z "$android_ndk" ; then
269         AC_MSG_ERROR([You must specify --with-android-ndk=/path/to/ndk when targeting Android.])
270     fi
272     if test -z "$android_sdk" ; then
273         AC_MSG_ERROR([You must specify --with-android-sdk=/path/to/sdk when targeting Android.])
274     fi
276     android_platform_tools="$android_sdk"/../../platform-tools
277     if test ! -d "$android_platform_tools" ; then
278         android_platform_tools="$android_sdk"/tools # SDK Tools < r8
279     fi
281     if test -z "$android_toolchain" ; then
282         android_toolchain="$android_ndk"/build/prebuilt/`uname -s | tr "[[:upper:]]" "[[:lower:]]"`-x86/arm-eabi-4.4.0
283     fi
285     if test -z "$android_platform" ; then
286        android_platform="$android_ndk"/build/platforms/android-"$android_version"/arch-"$target_cpu"
287     fi
289     dnl set up compilers
290     AS="$android_toolchain"/bin/arm-eabi-as
291     CC="$android_toolchain"/bin/arm-eabi-gcc
292     CXX="$android_toolchain"/bin/arm-eabi-g++
293     CPP="$android_toolchain"/bin/arm-eabi-cpp
294     LD="$android_toolchain"/bin/arm-eabi-ld
295     AR="$android_toolchain"/bin/arm-eabi-ar
296     RANLIB="$android_toolchain"/bin/arm-eabi-ranlib
297     STRIP="$android_toolchain"/bin/arm-eabi-strip
299     CPPFLAGS="-I$android_platform/usr/include $CPPFLAGS"
300     CFLAGS="-mandroid -I$android_platform/usr/include -msoft-float -fno-short-enums -fno-exceptions $CFLAGS"
301     CXXFLAGS="-mandroid -I$android_platform/usr/include -msoft-float -fno-short-enums -fno-exceptions $CXXFLAGS"
303     dnl Add -llog by default, since we use it all over the place.
304     dnl Add --allow-shlib-undefined, because libGLESv2 links to an
305     dnl undefined symbol (present on the hardware, just not in the
306     dnl NDK.)
307     LDFLAGS="-mandroid -L$android_platform/usr/lib -Wl,-rpath-link=$android_platform/usr/lib --sysroot=$android_platform -llog -Wl,--allow-shlib-undefined $LDFLAGS"
309     dnl prevent cross compile section from using these flags as host flags
310     if test -z "$HOST_CPPFLAGS" ; then
311         HOST_CPPFLAGS=" "
312     fi
313     if test -z "$HOST_CFLAGS" ; then
314         HOST_CFLAGS=" "
315     fi
316     if test -z "$HOST_CXXFLAGS" ; then
317         HOST_CXXFLAGS=" "
318     fi
319     if test -z "$HOST_LDFLAGS" ; then
320         HOST_LDFLAGS=" "
321     fi
323     ANDROID_NDK="${android_ndk}"
324     ANDROID_TOOLCHAIN="{android_toolchain}"
325     ANDROID_PLATFORM="{android_platform}"
326     ANDROID_SDK="${android_sdk}"
327     ANDROID_PLATFORM_TOOLS="${android_platform_tools}"
328     ANDROID_VERSION="${android_version}"
329     if test -z "$ANDROID_PACKAGE_NAME" ; then
330         ANDROID_PACKAGE_NAME='org.mozilla.$(MOZ_APP_NAME)'
331     fi
333     AC_DEFINE(ANDROID)
334     AC_DEFINE_UNQUOTED(ANDROID_VERSION, $android_version)
335     AC_SUBST(ANDROID_VERSION)
336     CROSS_COMPILE=1
337     MOZ_CHROME_FILE_FORMAT=omni
338     ZLIB_DIR=yes
341 AC_SUBST(ANDROID_NDK)
342 AC_SUBST(ANDROID_TOOLCHAIN)
343 AC_SUBST(ANDROID_PLATFORM)
344 AC_SUBST(ANDROID_SDK)
345 AC_SUBST(ANDROID_PLATFORM_TOOLS)
346 AC_SUBST(ANDROID_PACKAGE_NAME)
348 dnl ========================================================
349 dnl Checks for compilers.
350 dnl ========================================================
351 dnl Set CROSS_COMPILE in the environment when running configure
352 dnl to use the cross-compile setup for now
353 dnl ========================================================
355 dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269)
356 AR_FLAGS='cr $@'
358 if test "$COMPILE_ENVIRONMENT"; then
360 dnl Do some special WinCE toolchain stuff
361 case "$target" in
362 *wince|*winmo)
364     MOZ_ARG_WITH_STRING(wince-sdk,
365     [  --with-wince-sdk=WINCE_SDK_DIR
366                           The path to the Windows CE SDK],
367     WINCE_SDK_DIR=$withval)
369     MOZ_ARG_WITH_STRING(ogles-sdk,
370     [  --with-ogles-sdk=OGLES_SDK_DIR
371                           The path to the OGLES SDK],
372     OGLES_SDK_DIR=$withval)
374     AC_DEFINE(WINCE)
375     
376     export WINCE=1
378     echo -----------------------------------------------------------------------------
379     echo Building Windows CE Shunt Library and Tool Chain
380     echo Using SDK in:
381     echo $WINCE_SDK_DIR
383     ac_exeext=.exe
385     _pwd=`pwd -W`
386     _topsrcdirwin=`cd \`dirname $0\`; pwd -W`
387     make OGLES_SDK_DIR="$OGLES_SDK_DIR" WINCE_SDK_DIR="$WINCE_SDK_DIR" \
388     TOPSRCDIR="$_topsrcdirwin" OBJDIR="$_pwd" target="$target" \
389     -C $srcdir/build/wince/tools
391     CC="$_pwd/dist/sdk/bin/$target-gcc.exe"
392     CXX="$_pwd/dist/sdk/bin/$target-gcc.exe"
393     CPP="$_pwd/dist/sdk/bin/$target-gcc.exe -E -nologo"
394     CXXCPP="$_pwd/dist/sdk/bin/$target-gcc.exe -TP -E -nologo"
395     LD="$_pwd/dist/sdk/bin/$target-link.exe"
396     AR="$_pwd/dist/sdk/bin/$target-lib.exe"
397     AS="$_pwd/dist/sdk/bin/$target-as.exe"
398     RC="$_pwd/dist/sdk/bin/$target-res.exe"
401     echo -----------------------------------------------------------------------------
403     ;;
404 esac
406 if test -n "$CROSS_COMPILE" -a "$target" != "$host"; then
407     echo "cross compiling from $host to $target"
408     cross_compiling=yes
410     _SAVE_CC="$CC"
411     _SAVE_CFLAGS="$CFLAGS"
412     _SAVE_LDFLAGS="$LDFLAGS"
414     AC_MSG_CHECKING([for host c compiler])
415     AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
416     if test -z "$HOST_CC"; then
417         AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
418     fi
419     AC_MSG_RESULT([$HOST_CC])
420     AC_MSG_CHECKING([for host c++ compiler])
421     AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
422     if test -z "$HOST_CXX"; then
423         AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
424     fi
425     AC_MSG_RESULT([$HOST_CXX])
427     if test -z "$HOST_CFLAGS"; then
428         HOST_CFLAGS="$CFLAGS"
429     fi
430     if test -z "$HOST_CXXFLAGS"; then
431         HOST_CXXFLAGS="$CXXFLAGS"
432     fi
433     if test -z "$HOST_LDFLAGS"; then
434         HOST_LDFLAGS="$LDFLAGS"
435     fi
436     if test -z "$HOST_AR_FLAGS"; then
437         HOST_AR_FLAGS="$AR_FLAGS"
438     fi
439     AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
440     AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
441     CC="$HOST_CC"
442     CFLAGS="$HOST_CFLAGS"
443     LDFLAGS="$HOST_LDFLAGS"
445     AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
446     AC_TRY_COMPILE([], [return(0);], 
447         [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
448         AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
450     CC="$HOST_CXX"
451     CFLAGS="$HOST_CXXFLAGS"
453     AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
454     AC_TRY_COMPILE([], [return(0);], 
455         [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
456         AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
457     
458     CC=$_SAVE_CC
459     CFLAGS=$_SAVE_CFLAGS
460     LDFLAGS=$_SAVE_LDFLAGS
462     case "$build:$target" in
463       powerpc-apple-darwin8*:i?86-apple-darwin*)
464         dnl The Darwin cross compiler doesn't necessarily point itself at a
465         dnl root that has libraries for the proper architecture, it defaults
466         dnl to the system root.  The libraries in the system root on current
467         dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
468         dnl checks will fail.  Fake a working SDK in that case.
469         _SAVE_CFLAGS=$CFLAGS
470         _SAVE_CXXFLAGS=$CXXLAGS
471         CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk $CFLAGS"
472         CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk $CXXFLAGS"
473         ;;
474     esac
476     AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
477     unset ac_cv_prog_CC
478     AC_PROG_CC
479     AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
480     unset ac_cv_prog_CXX
481     AC_PROG_CXX
483     case "$build:$target" in
484       powerpc-apple-darwin8*:i?86-apple-darwin*)
485         dnl Revert the changes made above.  From this point on, the target
486         dnl compiler will never be used without applying the SDK to CFLAGS
487         dnl (see --with-macos-sdk below).
488         CFLAGS=$_SAVE_CFLAGS
489         CXXFLAGS=$_SAVE_CXXFLAGS
490         ;;
491     esac
493     AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
494     AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
495     MOZ_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
496     AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
497     AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
498     AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
499     AC_DEFINE(CROSS_COMPILE)
500 else
501     AC_PROG_CC
502     AC_PROG_CXX
503     AC_PROG_RANLIB
504     MOZ_PATH_PROGS(AS, $AS as, $CC)
505     AC_CHECK_PROGS(AR, ar, :)
506     AC_CHECK_PROGS(LD, ld, :)
507     AC_CHECK_PROGS(STRIP, strip, :)
508     AC_CHECK_PROGS(WINDRES, windres, :)
509     if test -z "$HOST_CC"; then
510         HOST_CC='$(CC)'
511     fi
512     if test -z "$HOST_CFLAGS"; then
513         HOST_CFLAGS='$(CFLAGS)'
514     fi
515     if test -z "$HOST_CXX"; then
516         HOST_CXX='$(CXX)'
517     fi
518     if test -z "$HOST_CXXFLAGS"; then
519         HOST_CXXFLAGS='$(CXXFLAGS)'
520     fi
521     if test -z "$HOST_LDFLAGS"; then
522         HOST_LDFLAGS='$(LDFLAGS)'
523     fi
524     if test -z "$HOST_RANLIB"; then
525         HOST_RANLIB='$(RANLIB)'
526     fi
527     if test -z "$HOST_AR"; then
528         HOST_AR='$(AR)'
529     fi
530     if test -z "$HOST_AR_FLAGS"; then
531         HOST_AR_FLAGS='$(AR_FLAGS)'
532     fi
535 GNU_AS=
536 GNU_LD=
537 GNU_CC=
538 GNU_CXX=
539 CC_VERSION='N/A'
540 CXX_VERSION='N/A'
541 if test "$GCC" = "yes"; then
542     GNU_CC=1
543     CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
545 if test "$GXX" = "yes"; then
546     GNU_CXX=1
547     CXX_VERSION=`$CXX -v 2>&1 | grep 'gcc version'`
549 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
550     GNU_AS=1
552 if test "`echo | $LD -v 2>&1 | grep -c GNU`" != "0"; then
553     GNU_LD=1
555 if test "$GNU_CC"; then
556     if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
557         GCC_USE_GNU_LD=1
558     fi
561 INTEL_CC=
562 INTEL_CXX=
563 if test "$GCC" = yes; then
564    if test "`$CC -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
565      INTEL_CC=1
566    fi
569 if test "$GXX" = yes; then
570    if test "`$CXX -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
571      INTEL_CXX=1
572    fi
575 dnl Special win32 checks
576 dnl ========================================================
577 case "$target" in
578 *-wince|*-winmo)
579     WINVER=500
580     WINSDK_TARGETVER=502
581     ;;
583     WINVER=502
584     dnl Target the Windows 7 SDK by default
585     WINSDK_TARGETVER=601
586     ;;
587 esac
589 MOZ_ARG_WITH_STRING(windows-version,
590 [  --with-windows-version=WINSDK_TARGETVER
591                           Highest Windows version to target using this SDK
592                               502: Windows Server 2003
593                               600: Windows Vista
594                               601: Windows 7],
595   WINSDK_TARGETVER=$withval)
597 case "$WINSDK_TARGETVER" in
598 502|600|601)
599     MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000
600     ;;
603     AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER), must be 502, 600 or 601]);
604     ;;
606 esac
608 if test -n "$COMPILE_ENVIRONMENT"; then
609 if test "$MOZ_WINSDK_TARGETVER" -lt "06000000"; then
610     # We can't build parental controls either
611     MOZ_DISABLE_PARENTAL_CONTROLS=1
615 case "$target" in
616 *-cygwin*|*-mingw*|*-msvc*|*-mks*|*-wince|*-winmo)
617     if test "$GCC" != "yes"; then
618         # Check to see if we are really running in a msvc environemnt
619         _WIN32_MSVC=1
620         AC_CHECK_PROGS(MIDL, midl)
622         # Make sure compilers are valid
623         CFLAGS="$CFLAGS -TC -nologo"
624         CXXFLAGS="$CXXFLAGS -TP -nologo"
625         AC_LANG_SAVE
626         AC_LANG_C
627         AC_TRY_COMPILE([#include <stdio.h>],
628             [ printf("Hello World\n"); ],,
629             AC_MSG_ERROR([\$(CC) test failed.  You must have MS VC++ in your path to build.]) )
631         AC_LANG_CPLUSPLUS
632         AC_TRY_COMPILE([#include <new.h>],
633             [ unsigned *test = new unsigned(42); ],,
634             AC_MSG_ERROR([\$(CXX) test failed.  You must have MS VC++ in your path to build.]) )
635         AC_LANG_RESTORE
636         
637         changequote(,)
638         _MSVC_VER_FILTER='s|.* ([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
639         changequote([,])
640         
641         # Determine compiler version
642         CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
643         _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
644         _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
645         _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
646         _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
647         _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
649         CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
650         _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
652         if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
653             AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
654         fi
656         if test "$_CC_MAJOR_VERSION" = "14"; then
657             dnl Require VC8SP1 or newer.
658             dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762.
659             if test "$_CC_RELEASE" -lt 50727 -o \
660                     \( "$_CC_RELEASE" -eq 50727 -a "$_CC_BUILD" -lt 762 \); then
661               AC_MSG_ERROR([This version ($CC_VERSION) of the MSVC compiler is unsupported. You probably need to install Service Pack 1 of Visual Studio 2005. See https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
662             fi
664             _CC_SUITE=8
665             CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
666             AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
667             AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
668         elif test "$_CC_MAJOR_VERSION" = "15"; then
669             _CC_SUITE=9
670             CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
671             AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
672             AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
673         elif test "$_CC_MAJOR_VERSION" = "16"; then
674             _CC_SUITE=10
675             CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
676             AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
677             AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
678         else
679             AC_MSG_ERROR([This version ($CC_VERSION) of the MSVC compiler is unsupported. See https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
680         fi
682         _MOZ_RTTI_FLAGS_ON='-GR'
683         _MOZ_RTTI_FLAGS_OFF='-GR-'
684         _MOZ_EXCEPTIONS_FLAGS_ON='-EHsc'
685         _MOZ_EXCEPTIONS_FLAGS_OFF=''
686         AC_DEFINE(HAVE_SEH_EXCEPTIONS)
688         if test -n "$WIN32_REDIST_DIR"; then
689             WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
690         fi
692         dnl Ensure that mt.exe is 'Microsoft (R) Manifest Tool',
693         dnl not something else like "magnetic tape manipulation utility".
694         MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
695         if test -z "$MSMT_TOOL"; then
696           AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
697         fi
699         changequote(,)
700         _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
701         changequote([,])
702         MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
703         if test -z "$MSMANIFEST_TOOL_VERSION"; then
704           AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
705         fi
707         MSMANIFEST_TOOL=1
708         unset MSMT_TOOL
710         # Check linker version
711         _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
712         _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
713         if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
714             AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION,  does not match the compiler suite version, $_CC_SUITE.])
715         fi
717         INCREMENTAL_LINKER=1
719         # Check midl version
720         _MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
721         _MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
722         _MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
723         _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
724         # Add flags if necessary
725         AC_MSG_CHECKING([for midl flags])
726         case "$target" in
727         i*86-*)
728             if test \( "$_MIDL_MAJOR_VERSION" = "7" -a "$_MIDL_MINOR_VERSION" = "00" -a "$_MIDL_REV_VERSION" = "0499" \); then
729                 # MIDL version 7.00.0499 defaults /env win64 on x64 platforms.
730                 # MIDL version 7.00.0500 or later has no problem.
731                 MIDL_FLAGS="${MIDL_FLAGS} -env win32"
732                 AC_MSG_RESULT([need -env win32])
733             else
734                 AC_MSG_RESULT([none needed])
735             fi
736             ;;
737         x86_64-*)
738             MIDL_FLAGS="${MIDL_FLAGS} -env x64"
739             ;;
740         *)
741             AC_MSG_RESULT([none needed])
742             ;;
743         esac
745         # Identify which version of the SDK we're building with
746         # Windows Server 2008 and newer SDKs have WinSDKVer.h, get the version
747         # from there
748         AC_CHECK_HEADERS([winsdkver.h])
749         if test "$ac_cv_header_winsdkver_h" = "yes"; then
750             # Get the highest _WIN32_WINNT and NTDDI versions supported
751             # Take the higher of the two
752             # This is done because the Windows 7 beta SDK reports its
753             # NTDDI_MAXVER to be 0x06000100 instead of 0x06010000, as it should
754             AC_CACHE_CHECK(for highest Windows version supported by this SDK,
755                            ac_cv_winsdk_maxver,
756                            [cat > conftest.h <<EOF
757 #include <winsdkver.h>
758 #include <sdkddkver.h>
760 #if (NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER) > NTDDI_MAXVER)
761 #define WINSDK_MAXVER NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER)
762 #else
763 #define WINSDK_MAXVER NTDDI_MAXVER
764 #endif
766 WINSDK_MAXVER
768                             ac_cv_winsdk_maxver=`$CPP conftest.h 2>/dev/null | tail -n1`
769                             rm -f conftest.h
770                            ])
771             MOZ_WINSDK_MAXVER=${ac_cv_winsdk_maxver}
772         else
773             # The Vista SDK is the only one to have sdkddkver.h but not
774             # WinSDKVer.h
775             AC_CHECK_HEADERS([sdkddkver.h])
776             if test "$ac_cv_header_sdkddkver_h" = "yes"; then
777                 MOZ_WINSDK_MAXVER=0x06000000
778             else
779                 # Assume the Server 2003 Platform SDK
780                 MOZ_WINSDK_MAXVER=0x05020000
781             fi
782         fi
784         unset _MSVC_VER_FILTER
786         AC_CACHE_CHECK(for std::_Throw, ac_cv_have_std__Throw,
787             [
788                 AC_LANG_SAVE
789                 AC_LANG_CPLUSPLUS
790                 _SAVE_CXXFLAGS="$CXXFLAGS"
791                 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
792                 AC_TRY_COMPILE([#include <exception>],
793                             [std::_Throw(std::exception()); return 0;],
794                             ac_cv_have_std__Throw="yes",
795                             ac_cv_have_std__Throw="no")
796                 CXXFLAGS="$_SAVE_CXXFLAGS"
797                 AC_LANG_RESTORE
798             ])
800         if test "$ac_cv_have_std__Throw" = "yes"; then
801             AC_CACHE_CHECK(for |class __declspec(dllimport) exception| bug,
802                            ac_cv_have_dllimport_exception_bug,
803                 [
804                     AC_LANG_SAVE
805                     AC_LANG_CPLUSPLUS
806                     _SAVE_CXXFLAGS="$CXXFLAGS"
807                     CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
808                     AC_TRY_LINK([#include <vector>],
809                                 [std::vector<int> v; return v.at(1);],
810                                 ac_cv_have_dllimport_exception_bug="no",
811                                 ac_cv_have_dllimport_exception_bug="yes")
812                     CXXFLAGS="$_SAVE_CXXFLAGS"
813                     AC_LANG_RESTORE
814                 ])
815             if test "$ac_cv_have_dllimport_exception_bug" = "no"; then
816                 WRAP_STL_INCLUDES=1
817                 MOZ_MSVC_STL_WRAP__Throw=1
818                 AC_DEFINE(MOZ_MSVC_STL_WRAP__Throw)
819             fi
820         else
821             AC_CACHE_CHECK(for overridable _RAISE,
822                            ac_cv_have__RAISE,
823                 [
824                     AC_LANG_SAVE
825                     AC_LANG_CPLUSPLUS
826                     _SAVE_CXXFLAGS="$CXXFLAGS"
827                     CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
828                     AC_TRY_COMPILE([#include <xstddef>
829                                     #undef _RAISE
830                                     #define _RAISE(x) externallyDefinedFunction((x).what())
831                                     #include <vector>
832                                    ],
833                                    [std::vector<int> v; return v.at(1);],
834                                    ac_cv_have__RAISE="no",
835                                    ac_cv_have__RAISE="yes")
836                     CXXFLAGS="$_SAVE_CXXFLAGS"
837                     AC_LANG_RESTORE
838                 ])
839             if test "$ac_cv_have__RAISE" = "yes"; then
840                 WRAP_STL_INCLUDES=1
841                 MOZ_MSVC_STL_WRAP__RAISE=1
842                 AC_DEFINE(MOZ_MSVC_STL_WRAP__RAISE)
843             else
844                 AC_MSG_ERROR([Gecko exception wrapping doesn't understand your your MSVC/SDK.  Please file a bug describing this error and your build configuration.])
845             fi
846         fi
848         if test "$WRAP_STL_INCLUDES" = "1"; then
849             STL_FLAGS='-D_HAS_EXCEPTIONS=0 -I$(DIST)/stl_wrappers'
850         fi
851     else
852         # Check w32api version
853         _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
854         _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
855         AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
856         AC_TRY_COMPILE([#include <w32api.h>],
857             #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
858                 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
859                  __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
860                 #error "test failed."
861             #endif
862             , [ res=yes ], [ res=no ])
863         AC_MSG_RESULT([$res])
864         if test "$res" != "yes"; then
865             AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
866         fi
867         # Check windres version
868         AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
869         _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
870         AC_MSG_RESULT([$_WINDRES_VERSION])
871         _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
872         _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
873         _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
874         WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
875         WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
876         WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
877         if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
878                 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
879                 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
880                 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
881                 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
882                 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
883         then
884             AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
885         fi
887         # Server 2003 is the highest version supported
888         MOZ_WINSDK_MAXVER=0x05020000
889     fi # !GNU_CC
891     AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
892     AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
893     # Require OS features provided by IE 5.0
894     AC_DEFINE_UNQUOTED(_WIN32_IE,0x0500)
896     # If the maximum version supported by this SDK is lower than the target
897     # version, error out
898     AC_MSG_CHECKING([for Windows SDK being recent enough])
899     if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then
900         AC_MSG_RESULT("yes")
901     else
902         AC_MSG_RESULT("no")
903         AC_MSG_ERROR([You are targeting Windows version 0x$MOZ_WINSDK_TARGETVER, but your SDK only supports up to version $MOZ_WINSDK_MAXVER. Install and use an updated SDK, or target a lower version using --with-windows-version. Alternatively, try running the Windows SDK Configuration Tool and selecting a newer SDK. See https://developer.mozilla.org/En/Windows_SDK_versions for more details on fixing this.])
904     fi
906     AC_DEFINE_UNQUOTED(MOZ_WINSDK_TARGETVER,0x$MOZ_WINSDK_TARGETVER)
907     # Definitions matching sdkddkver.h
908     AC_DEFINE_UNQUOTED(MOZ_NTDDI_WS03, 0x05020000)
909     AC_DEFINE_UNQUOTED(MOZ_NTDDI_LONGHORN, 0x06000000)
910     AC_DEFINE_UNQUOTED(MOZ_NTDDI_WIN7, 0x06010000)
911     ;;
912 esac
914 dnl Test breaks icc on OS/2 && MSVC
915 if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
916     AC_PROG_CC_C_O
917     if grep "NO_MINUS_C_MINUS_O 1" ./confdefs.h >/dev/null; then
918         USING_HCC=1
919         _OLDCC=$CC
920         _OLDCXX=$CXX
921         CC="${srcdir}/build/hcc '$CC'"
922         CXX="${srcdir}/build/hcpp '$CXX'"
923     fi
926 AC_PROG_CPP
927 AC_PROG_CXXCPP
929 if test -n "$_WIN32_MSVC"; then
930     SKIP_PATH_CHECKS=1
931     SKIP_COMPILER_CHECKS=1
932     SKIP_LIBRARY_CHECKS=1
934     # Since we're skipping compiler and library checks, hard-code
935     # some facts here.
936     case "$target" in
937     *-wince|*-winmo)
938         ;;
939     *)
940         AC_DEFINE(HAVE_IO_H)
941         AC_DEFINE(HAVE_SETBUF)
942         AC_DEFINE(HAVE_ISATTY)
943         ;;
944     esac
947 fi # COMPILE_ENVIRONMENT
949 AC_SUBST(MIDL_FLAGS)
950 AC_SUBST(_MSC_VER)
952 AC_SUBST(GNU_AS)
953 AC_SUBST(GNU_LD)
954 AC_SUBST(GNU_CC)
955 AC_SUBST(GNU_CXX)
956 AC_SUBST(INTEL_CC)
957 AC_SUBST(INTEL_CXX)
959 AC_SUBST(STL_FLAGS)
960 AC_SUBST(WRAP_STL_INCLUDES)
961 AC_SUBST(MOZ_MSVC_STL_WRAP__Throw)
962 AC_SUBST(MOZ_MSVC_STL_WRAP__RAISE)
964 dnl ========================================================
965 dnl Checks for programs.
966 dnl ========================================================
967 AC_PROG_INSTALL
968 AC_PROG_LN_S
970 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
971 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
972 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
973 _perl_res=$?
974 AC_MSG_RESULT([$_perl_version])
976 if test "$_perl_res" != 0; then
977     AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
981 AC_MSG_CHECKING([for full perl installation])
982 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
983 _perl_res=$?
984 if test "$_perl_res" != 0; then
985     AC_MSG_RESULT([no])
986     AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}.  A full perl installation is required.])
987 else
988     AC_MSG_RESULT([yes])    
991 MOZ_PATH_PROGS(PYTHON, $PYTHON python2.7 python2.6 python2.5 python)
992 if test -z "$PYTHON"; then
993     AC_MSG_ERROR([python was not found in \$PATH])
996 if test -z "$COMPILE_ENVIRONMENT"; then
997     NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
999 AC_SUBST(NSINSTALL_BIN)
1001 MOZ_PATH_PROG(DOXYGEN, doxygen, :)
1002 MOZ_PATH_PROG(AUTOCONF, autoconf, :)
1003 MOZ_PATH_PROG(UNZIP, unzip, :)
1004 MOZ_PATH_PROGS(ZIP, zip)
1005 if test -z "$ZIP" -o "$ZIP" = ":"; then
1006     AC_MSG_ERROR([zip not found in \$PATH])
1008 MOZ_PATH_PROG(SYSTEM_MAKEDEPEND, makedepend)
1009 MOZ_PATH_PROG(XARGS, xargs)
1010 if test -z "$XARGS" -o "$XARGS" = ":"; then
1011     AC_MSG_ERROR([xargs not found in \$PATH .])
1014 if test "$COMPILE_ENVIRONMENT"; then
1016 dnl ========================================================
1017 dnl = Mac OS X toolchain support
1018 dnl ========================================================
1020 case "$target_os" in
1021 darwin*)
1022     dnl Current known valid versions for GCC_VERSION are 2.95.2 3.1 3.3 4.0.
1023     dnl 4.0 identifies itself as 4.0.x, so strip the decidecimal for
1024     dnl the environment and includedir purposes (when using an SDK, below),
1025     dnl but remember the full version number for the libdir (SDK).
1026     changequote(,)
1027     GCC_VERSION_FULL=`echo $CXX_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
1028     GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
1029     changequote([,])
1030     if test "$GCC_VERSION_FULL" = "4.0.0" ; then
1031         dnl Bug 280479, but this keeps popping up in bug 292530 too because
1032         dnl 4.0.0/4061 is the default compiler in Tiger.
1033         changequote(,)
1034         GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
1035         changequote([,])
1036         if test "$GCC_BUILD" = "4061" ; then
1037             AC_MSG_ERROR([You are attempting to use Apple gcc 4.0 build 4061.
1038 This compiler was supplied with Xcode 2.0, and contains bugs that prevent it
1039 from building Mozilla. Upgrade to Xcode 2.1 or later.])
1040         fi
1041     fi
1043     dnl xcodebuild needs GCC_VERSION defined in the environment, since it
1044     dnl doesn't respect the CC/CXX setting.  With GCC_VERSION set, it will use
1045     dnl /usr/bin/g(cc|++)-$GCC_VERSION.
1046     MOZ_PATH_PROGS(PBBUILD, pbbuild xcodebuild pbxbuild)
1048     case "$PBBUILD" in
1049       *xcodebuild*)
1050         changequote(,)
1051         XCODEBUILD_VERSION=`$PBBUILD -version 2>/dev/null | xargs | sed -e 's/.*DevToolsCore-\([0-9]*\).*/\1/'`
1052         changequote([,])
1053         if test -n "$XCODEBUILD_VERSION" && test "$XCODEBUILD_VERSION" -ge 620 ; then
1054           HAS_XCODE_2_1=1;
1055         fi
1056       ;;
1057     esac
1059     dnl sdp was formerly in /Developer/Tools.  As of Mac OS X 10.4 (Darwin 8),
1060     dnl it has moved into /usr/bin.
1061     MOZ_PATH_PROG(SDP, sdp, :, [$PATH:/usr/bin:/Developer/Tools])
1062     ;;
1063 esac
1065 AC_SUBST(GCC_VERSION)
1066 AC_SUBST(XCODEBUILD_VERSION)
1067 AC_SUBST(HAS_XCODE_2_1)
1069 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
1070 dnl that a universal binary is being produced.
1071 AC_SUBST(UNIVERSAL_BINARY)
1073 dnl ========================================================
1074 dnl Check for MacOS deployment target version
1075 dnl ========================================================
1077 MOZ_ARG_ENABLE_STRING(macos-target,
1078                       [  --enable-macos-target=VER (default=10.5)
1079                           Set the minimum MacOS version needed at runtime],
1080                       [_MACOSX_DEPLOYMENT_TARGET=$enableval])
1082 case "$target" in
1083 *-darwin*)
1084     if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
1085         dnl Use the specified value
1086         export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
1087         AC_DEFINE_UNQUOTED(__ENVIRONMENT_MAC_OS_X_VERION_MIN_REQUIRED__,$_MACOSX_DEPLOYMENT_TARGET)
1088     else
1089         dnl No value specified on the command line or in the environment,
1090         dnl use architecture minimum.
1091         case "${target_cpu}" in
1092           ppc*)
1093             export MACOSX_DEPLOYMENT_TARGET=10.5
1094             ;;
1095           i*86)
1096             export MACOSX_DEPLOYMENT_TARGET=10.5
1097             ;;
1098           x86_64)
1099             export MACOSX_DEPLOYMENT_TARGET=10.6
1100             ;;
1101         esac
1102     fi
1103     ;;
1104 esac
1106 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
1108 dnl ========================================================
1109 dnl = Mac OS X SDK support
1110 dnl ========================================================
1111 MACOS_SDK_DIR=
1112 NEXT_ROOT=
1113 MOZ_ARG_WITH_STRING(macos-sdk,
1114 [  --with-macos-sdk=dir    Location of platform SDK to use (Mac OS X only)],
1115     MACOS_SDK_DIR=$withval)
1117 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
1118 dnl NEXT_ROOT will be set and exported only if it's needed.
1119 AC_SUBST(MACOS_SDK_DIR)
1120 AC_SUBST(NEXT_ROOT)
1122 if test "$MACOS_SDK_DIR"; then
1123   dnl Sync this section with the ones in NSPR and NSS.
1124   dnl Changes to the cross environment here need to be accounted for in
1125   dnl the libIDL checks (below) and xpidl build.
1127   if test ! -d "$MACOS_SDK_DIR"; then
1128     AC_MSG_ERROR([SDK not found.  When using --with-macos-sdk, you must
1129 specify a valid SDK.  SDKs are installed when the optional cross-development
1130 tools are selected during the Xcode/Developer Tools installation.])
1131   fi
1133   GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
1134   if test "$GCC_VERSION_MAJOR" -lt "4" ; then
1135     AC_MSG_ERROR([You need to upgrade the compiler version to 4.x])
1136   else
1137     CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
1138     CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
1140     dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
1141     CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
1142     CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
1144     if test "$GCC_VERSION_FULL" = "4.0.0" ; then
1145       dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
1146       dnl that supports -syslibroot.  Don't set NEXT_ROOT because it will
1147       dnl be ignored and cause warnings when -syslibroot is specified.
1148       dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
1149       dnl the -isysroot it receives, so this is only needed with 4.0.0.
1150       LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
1151     fi
1152   fi
1154   AC_LANG_SAVE
1155   AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
1156   AC_LANG_CPLUSPLUS
1157   AC_TRY_COMPILE([#include <new>
1158                  int main() { return 0; }],
1159    result=yes,
1160    result=no)
1161   AC_LANG_RESTORE
1162   AC_MSG_RESULT($result)
1164   if test "$result" = "no" ; then
1165     AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
1166   fi
1169 fi # COMPILE_ENVIRONMENT
1171 if test -n "$MAKE"; then
1172   if test `echo $MAKE | grep -c make.py` != 1; then
1173      NOT_PYMAKE=$MAKE
1174   fi
1177 case "$host_os" in
1178 cygwin*|mingw*|mks*|msvc*)
1179     MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :)
1180     ;;
1182     MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :)
1183     ;;
1184 esac
1185 if test "$GMAKE" = ":"; then
1186    AC_MSG_ERROR([GNU make not found])
1188 AC_SUBST(GMAKE)
1190 if test "$COMPILE_ENVIRONMENT"; then
1192 AC_PATH_XTRA
1194 XCFLAGS="$X_CFLAGS"
1196 fi # COMPILE_ENVIRONMENT
1198 dnl ========================================================
1199 dnl set the defaults first
1200 dnl ========================================================
1201 AS_BIN=$AS
1202 AR_LIST='$(AR) t'
1203 AR_EXTRACT='$(AR) x'
1204 AR_DELETE='$(AR) d'
1205 AS='$(CC)'
1206 AS_DASH_C_FLAG='-c'
1207 DLL_PREFIX=lib
1208 LIB_PREFIX=lib
1209 DLL_SUFFIX=.so
1210 OBJ_SUFFIX=o
1211 LIB_SUFFIX=a
1212 ASM_SUFFIX=s
1213 IMPORT_LIB_SUFFIX=
1214 TARGET_MD_ARCH=unix
1215 DIRENT_INO=d_ino
1216 CYGWIN_WRAPPER=
1217 WIN_TOP_SRC=
1218 MOZ_USER_DIR=".mozilla"
1220 MOZ_JPEG_CFLAGS=
1221 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/jpeg)'
1222 MOZ_ZLIB_CFLAGS=
1223 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,$(DEPTH)/modules/zlib/src)'
1224 MOZ_BZ2_CFLAGS=
1225 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
1226 MOZ_PNG_CFLAGS=
1227 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/modules/libimg/png)'
1229 MOZ_JS_STATIC_LIBS='-L$(LIBXUL_DIST)/bin -ljs_static'
1230 MOZ_JS_SHARED_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs'
1231 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxpcom -lxpcom_core -lmozalloc'
1232 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
1233 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxpcom -lmozalloc'
1234 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) -lxul'
1235 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
1236 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
1238 MOZ_FS_LAYOUT=unix
1240 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
1242 USE_DEPENDENT_LIBS=1
1244 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
1246 if test -n "$CROSS_COMPILE"; then
1247     OS_TARGET="${target_os}"
1248     OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
1249     OS_RELEASE=
1250     case "${target_os}" in
1251         linux*)       OS_ARCH=Linux OS_TARGET=Linux ;;
1252         kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
1253         gnu*)         OS_ARCH=GNU ;;
1254         solaris*)     OS_ARCH=SunOS OS_RELEASE=5 ;;
1255         mingw*)       OS_ARCH=WINNT ;;
1256         wince*)       OS_ARCH=WINCE ;;
1257         winmo*)       OS_ARCH=WINCE ;;
1258         darwin*)      OS_ARCH=Darwin OS_TARGET=Darwin ;;
1259     esac
1260     case "${target}" in
1261         arm-android-eabi) OS_ARCH=Linux OS_TARGET=Android ;;
1262     esac
1263 else
1264     OS_TARGET=`uname -s`
1265     OS_ARCH=`uname -s | sed -e 's|/|_|g'`
1266     OS_RELEASE=`uname -r`
1269 # Before this used `uname -m` when not cross compiling
1270 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1271 OS_TEST="${target_cpu}"
1273 _COMPILER_PREFIX=
1275 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1277 #######################################################################
1278 # Master "Core Components" macros for getting the OS target           #
1279 #######################################################################
1282 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1283 # cross-compilation.
1287 # Define and override various archtecture-specific variables, including
1288 # HOST_OS_ARCH
1289 # OS_ARCH
1290 # OS_TEST
1291 # OS_TARGET
1292 # OS_RELEASE
1293 # OS_MINOR_RELEASE
1296 case "$HOST_OS_ARCH" in
1297 cygwin*|mingw*|mks*|msvc*)
1298     HOST_OS_ARCH=WINNT
1299     ;;
1300 darwin*)
1301     HOST_OS_ARCH=Darwin
1302     ;;
1303 linux*)
1304     HOST_OS_ARCH=Linux
1305     ;;
1306 solaris*)
1307     HOST_OS_ARCH=SunOS
1308     SOLARIS_SUNPRO_CC=
1309     SOLARIS_SUNPRO_CXX=
1310     if test -z "$GNU_CC"; then
1311         if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then
1312             SOLARIS_SUNPRO_CC=1
1313        fi
1314     fi
1316     if test -z "$GNU_CXX"; then
1317        if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then
1318            SOLARIS_SUNPRO_CXX=1
1319        fi
1320     fi
1321     AC_SUBST(SOLARIS_SUNPRO_CC)
1322     AC_SUBST(SOLARIS_SUNPRO_CXX)
1323     ;;
1324 BSD_386)
1325     HOST_OS_ARCH=BSD
1326     ;;
1327 dgux)
1328     HOST_OS_ARCH=DGUX
1329     ;;
1330 IRIX64)
1331     HOST_OS_ARCH=IRIX
1332     ;;
1333 UNIX_SV)
1334     if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1335         HOST_OS_ARCH=NCR
1336     else
1337         HOST_OS_ARCH=UNIXWARE
1338     fi
1339     ;;
1340 ncr)
1341     HOST_OS_ARCH=NCR
1342     ;;
1343 UNIX_SYSTEM_V)
1344     HOST_OS_ARCH=NEC
1345     ;;
1346 OSF1)
1347     ;;
1348 *OpenVMS*)
1349     HOST_OS_ARCH=OpenVMS
1350     ;;
1351 OS_2)
1352     HOST_OS_ARCH=OS2
1353     ;;
1354 QNX)
1355     ;;
1356 SCO_SV)
1357     HOST_OS_ARCH=SCOOS
1358     ;;
1359 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1360     HOST_OS_ARCH=SINIX
1361     ;;
1362 UnixWare)
1363     HOST_OS_ARCH=UNIXWARE
1364     ;;
1365 esac
1367 case "$OS_ARCH" in
1368 WINNT)
1369     if test -z "$CROSS_COMPILE" ; then
1370         OS_TEST=`uname -p`
1371     fi
1372     ;;
1373 Windows_NT)
1375 # If uname -s returns "Windows_NT", we assume that we are using
1376 # the uname.exe in MKS toolkit.
1378 # The -r option of MKS uname only returns the major version number.
1379 # So we need to use its -v option to get the minor version number.
1380 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1382     OS_ARCH=WINNT
1383     OS_TARGET=WINNT
1384     OS_MINOR_RELEASE=`uname -v`
1385     if test "$OS_MINOR_RELEASE" = "00"; then
1386         OS_MINOR_RELEASE=0
1387     fi
1388     OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1389     ;;
1390 CYGWIN32_NT|CYGWIN_NT*|MINGW*_NT*)
1392 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
1393 # the uname.exe in the Cygwin tools.
1394 # Prior to the Beta 20 release, Cygwin was called GNU-Win32.
1395 # If uname -s returns "CYGWIN32/NT", we assume that we are using
1396 # the uname.exe in the GNU-Win32 tools.
1397 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1398 # the uname.exe in the MSYS tools.
1400     OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1401     OS_ARCH=WINNT
1402     OS_TARGET=WINNT
1403     ;;
1404 AIX)
1405     OS_RELEASE=`uname -v`.`uname -r`
1406     OS_TEST=${target_cpu}
1407     ;;
1408 BSD_386)
1409     OS_ARCH=BSD
1410     ;;
1411 dgux)
1412     OS_ARCH=DGUX
1413     ;;
1414 IRIX64)
1415     OS_ARCH=IRIX
1416     ;;
1417 UNIX_SV)
1418     if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1419         OS_ARCH=NCR
1420     else
1421         OS_ARCH=UNIXWARE
1422         OS_RELEASE=`uname -v`
1423     fi
1424     ;;
1425 ncr)
1426     OS_ARCH=NCR
1427     ;;
1428 UNIX_SYSTEM_V)
1429     OS_ARCH=NEC
1430     ;;
1431 OSF1)
1432     case `uname -v` in
1433     148)
1434         OS_RELEASE=V3.2C
1435         ;;
1436     564)
1437         OS_RELEASE=V4.0B
1438         ;;
1439     878)
1440         OS_RELEASE=V4.0D
1441         ;;
1442     esac
1443     ;;
1444 *OpenVMS*)
1445     OS_ARCH=OpenVMS
1446     OS_RELEASE=`uname -v`
1447     OS_TEST=`uname -p`
1448     ;;
1449 OS_2)
1450     OS_ARCH=OS2
1451     OS_TARGET=OS2
1452     OS_RELEASE=`uname -v`
1453     ;;
1454 QNX)
1455     if test "$OS_TARGET" != "NTO"; then
1456         changequote(,)
1457         OS_RELEASE=`uname -v | sed 's/^\([0-9]\)\([0-9]*\)$/\1.\2/'`
1458         changequote([,])
1459     fi
1460     OS_TEST=x86
1461     ;;
1462 SCO_SV)
1463     OS_ARCH=SCOOS
1464     OS_RELEASE=5.0
1465     ;;
1466 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1467     OS_ARCH=SINIX
1468     OS_TEST=`uname -p`
1469     ;;
1470 UnixWare)
1471     OS_ARCH=UNIXWARE
1472     OS_RELEASE=`uname -v`
1473     ;;
1474 WINCE)
1475     OS_ARCH=WINCE
1476     case "${target_os}" in
1477     *winmo)
1478         OS_TARGET=WINMO
1479         WINCE_WINDOWS_MOBILE=1
1480         AC_DEFINE(WINCE_WINDOWS_MOBILE)
1481         ;;
1482     *)
1483         OS_TARGET=WINCE
1484         ;;
1485     esac
1486     ;;
1487 Darwin)
1488     case "${target_cpu}" in
1489     powerpc*)
1490         OS_TEST=ppc
1491         ;;
1492     i*86*)
1493         OS_TEST=i386 
1494         ;;
1495     x86_64)
1496         OS_TEST=x86_64
1497         ;;
1498     *)
1499         if test -z "$CROSS_COMPILE" ; then
1500             OS_TEST=`uname -p`
1501         fi
1502         ;;
1503     esac
1504     ;;
1505 esac
1507 if test "$OS_ARCH" = "NCR"; then
1508     changequote(,)
1509     OS_RELEASE=`awk '{print $3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$/\2.\3/'`
1510     changequote([,])
1513 # Only set CPU_ARCH if we recognize the value of OS_TEST
1515 case "$OS_TEST" in
1516 *86 | i86pc)
1517     CPU_ARCH=x86
1518     ;;
1520 powerpc64 | ppc64)
1521     CPU_ARCH=ppc64
1522     ;;
1524 powerpc | ppc | rs6000)
1525     CPU_ARCH=ppc
1526     ;;
1528 Alpha | alpha | ALPHA)
1529     CPU_ARCH=Alpha
1530     ;;
1532 s390)
1533     CPU_ARCH=s390
1534     ;;
1536 s390x)
1537     CPU_ARCH=s390x
1538     ;;
1540 hppa* | parisc)
1541     CPU_ARCH=hppa
1542     ;;
1544 sun4u | sparc*)
1545     CPU_ARCH=sparc
1546     ;;
1548 x86_64 | ia64)
1549     CPU_ARCH="$OS_TEST"
1550     ;;
1552 arm*)
1553     CPU_ARCH=arm
1554     ;;
1556 mips|mipsel)
1557     CPU_ARCH="mips"
1558     ;;
1559 esac
1561 if test -z "$OS_TARGET"; then
1562     OS_TARGET=$OS_ARCH
1564 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1566 dnl ========================================================
1567 dnl GNU specific defaults
1568 dnl ========================================================
1569 if test "$GNU_CC"; then
1570     # FIXME: Let us build with strict aliasing. bug 414641.
1571     CFLAGS="$CFLAGS -fno-strict-aliasing"
1572     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1573     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1574     DSO_LDOPTS='-shared'
1575     if test "$GCC_USE_GNU_LD"; then
1576         # Don't allow undefined symbols in libraries
1577         DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1578     fi
1579     WARNINGS_AS_ERRORS='-Werror'
1580     DSO_CFLAGS=''
1581     DSO_PIC_CFLAGS='-fPIC'
1582     ASFLAGS="$ASFLAGS -fPIC"
1583     _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
1584     _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
1585     _MOZ_EXCEPTIONS_FLAGS_ON='-fexceptions'
1586     _MOZ_EXCEPTIONS_FLAGS_OFF='-fno-exceptions'
1588     # Turn on GNU specific features
1589     # -Wall - turn on all warnings
1590     # -pedantic - make compiler warn about non-ANSI stuff, and
1591     #             be a little bit stricter
1592     # Warnings slamm took out for now (these were giving more noise than help):
1593     # -Wbad-function-cast - warns when casting a function to a new return type
1594     # -Wshadow - removed because it generates more noise than help --pete
1595     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
1596     if test -z "$INTEL_CC"; then
1597        # Don't use -Wcast-align with ICC
1598        case "$CPU_ARCH" in
1599            # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1600            hppa | ia64 | sparc | arm)
1601            ;;
1602            *)
1603         _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1604            ;;
1605        esac
1606     fi
1608     dnl Turn pedantic on but disable the warnings for long long
1609     _PEDANTIC=1
1611     if test -z "$INTEL_CC"; then
1612       _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
1613     fi
1615     _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1616     _USE_CPP_INCLUDE_FLAG=1
1617 elif test "$SOLARIS_SUNPRO_CC"; then
1618     DSO_CFLAGS=''
1619     if test "$CPU_ARCH" = "sparc"; then
1620         # for Sun Studio on Solaris/SPARC
1621         DSO_PIC_CFLAGS='-xcode=pic32'
1622     else
1623         DSO_PIC_CFLAGS='-KPIC'
1624     fi
1625     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1626 else
1627     MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1628     MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1630     DSO_LDOPTS='-shared'
1631     if test "$GNU_LD"; then
1632         # Don't allow undefined symbols in libraries
1633         DSO_LDOPTS="$DSO_LDOPTS -z defs"
1634     fi
1636     DSO_CFLAGS=''
1637     DSO_PIC_CFLAGS='-KPIC'
1638     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1641 if test "$GNU_CXX"; then
1642     # FIXME: Let us build with strict aliasing. bug 414641.
1643     CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
1644     # Turn on GNU specific features
1645     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
1646     if test -z "$INTEL_CC"; then
1647        # Don't use -Wcast-align with ICC
1648        case "$CPU_ARCH" in
1649            # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1650            hppa | ia64 | sparc | arm)
1651            ;;
1652            *)
1653         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1654            ;;
1655        esac
1656     fi
1658     _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1659     _USE_CPP_INCLUDE_FLAG=1
1661     AC_CACHE_CHECK(whether the compiler supports -Wno-invalid-offsetof,
1662                    ac_has_wno_invalid_offsetof,
1663         [
1664             AC_LANG_SAVE
1665             AC_LANG_CPLUSPLUS
1666             _SAVE_CXXFLAGS="$CXXFLAGS"
1667             CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1668             AC_TRY_COMPILE([],
1669                            [return(0);],
1670                            ac_has_wno_invalid_offsetof="yes",
1671                            ac_has_wno_invalid_offsetof="no")
1672             CXXFLAGS="$_SAVE_CXXFLAGS"
1673             AC_LANG_RESTORE
1674         ])
1675     if test "$ac_has_wno_invalid_offsetof" = "yes"; then
1676         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1677     fi
1679     AC_CACHE_CHECK(whether the compiler supports -Wno-variadic-macros,
1680                    ac_has_wno_variadic_macros,
1681         [
1682             AC_LANG_SAVE
1683             AC_LANG_CPLUSPLUS
1684             _SAVE_CXXFLAGS="$CXXFLAGS"
1685             CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-variadic-macros"
1686             AC_TRY_COMPILE([],
1687                            [return(0);],
1688                            ac_has_wno_variadic_macros="yes",
1689                            ac_has_wno_variadic_macros="no")
1690             CXXFLAGS="$_SAVE_CXXFLAGS"
1691             AC_LANG_RESTORE
1692         ])
1693     if test "$ac_has_wno_variadic_macros" = "yes"; then
1694         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-variadic-macros"
1695     fi
1697     AC_CACHE_CHECK(whether the compiler supports -Werror=return-type,
1698                    ac_has_werror_return_type,
1699         [
1700             AC_LANG_SAVE
1701             AC_LANG_CPLUSPLUS
1702             _SAVE_CXXFLAGS="$CXXFLAGS"
1703             CXXFLAGS="$CXXFLAGS -Werror=return-type"
1704             AC_TRY_COMPILE([],
1705                            [return(0);],
1706                            ac_has_werror_return_type="yes",
1707                            ac_has_werror_return_type="no")
1708             CXXFLAGS="$_SAVE_CXXFLAGS"
1709             AC_LANG_RESTORE
1710         ])
1711     if test "$ac_has_werror_return_type" = "yes"; then
1712         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Werror=return-type"
1713     fi
1715 else
1716     _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1719 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1720 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1721 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1722 dnl normal behavior.
1723 dnl ========================================================
1724 MKSHLIB_FORCE_ALL=
1725 MKSHLIB_UNFORCE_ALL=
1727 if test "$COMPILE_ENVIRONMENT"; then
1728 if test "$GNU_CC"; then
1729   AC_MSG_CHECKING(whether ld has archive extraction flags)
1730   AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1731    [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1732     ac_cv_mkshlib_force_and_unforce="no"
1733     exec 3<&0 <<LOOP_INPUT
1734         force="-Wl,--whole-archive";   unforce="-Wl,--no-whole-archive"
1735         force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1736         force="-Wl,-all";              unforce="-Wl,-none"
1737 LOOP_INPUT
1738     while read line
1739     do
1740       eval $line
1741       LDFLAGS=$force
1742       LIBS=$unforce
1743       AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1744     done
1745     exec 0<&3 3<&-
1746     LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1747    ])
1748   if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1749     AC_MSG_RESULT(no)
1750   else
1751     AC_MSG_RESULT(yes)
1752     eval $ac_cv_mkshlib_force_and_unforce
1753     MKSHLIB_FORCE_ALL=$force
1754     MKSHLIB_UNFORCE_ALL=$unforce
1755   fi
1756 fi # GNU_CC
1757 fi # COMPILE_ENVIRONMENT
1759 dnl =================================================================
1760 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1761 dnl which is bad when cross compiling.
1762 dnl =================================================================
1763 if test "$COMPILE_ENVIRONMENT"; then
1764 configure_static_assert_macros='
1765 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1766 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1767 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1770 dnl test that the macros actually work:
1771 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1772 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1773  [AC_LANG_SAVE
1774   AC_LANG_C
1775   ac_cv_static_assertion_macros_work="yes"
1776   AC_TRY_COMPILE([$configure_static_assert_macros],
1777                  [CONFIGURE_STATIC_ASSERT(1)],
1778                  ,
1779                  ac_cv_static_assertion_macros_work="no")
1780   AC_TRY_COMPILE([$configure_static_assert_macros],
1781                  [CONFIGURE_STATIC_ASSERT(0)],
1782                  ac_cv_static_assertion_macros_work="no",
1783                  )
1784   AC_LANG_CPLUSPLUS
1785   AC_TRY_COMPILE([$configure_static_assert_macros],
1786                  [CONFIGURE_STATIC_ASSERT(1)],
1787                  ,
1788                  ac_cv_static_assertion_macros_work="no")
1789   AC_TRY_COMPILE([$configure_static_assert_macros],
1790                  [CONFIGURE_STATIC_ASSERT(0)],
1791                  ac_cv_static_assertion_macros_work="no",
1792                  )
1793   AC_LANG_RESTORE
1794  ])
1795 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1796 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1797     AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1799 fi # COMPILE_ENVIRONMENT
1801 dnl ========================================================
1802 dnl Checking for 64-bit OS
1803 dnl ========================================================
1804 if test "$COMPILE_ENVIRONMENT"; then
1805 AC_LANG_SAVE
1806 AC_LANG_C
1807 AC_MSG_CHECKING(for 64-bit OS)
1808 AC_TRY_COMPILE([$configure_static_assert_macros],
1809                [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)],
1810                result="yes", result="no")
1811 AC_MSG_RESULT("$result")
1812 if test "$result" = "yes"; then
1813     AC_DEFINE(HAVE_64BIT_OS)
1814     HAVE_64BIT_OS=1
1816 AC_SUBST(HAVE_64BIT_OS)
1817 AC_LANG_RESTORE
1818 fi # COMPILE_ENVIRONMENT
1820 dnl ========================================================
1821 dnl Enable high-memory support on OS/2 by default.
1822 dnl ========================================================
1823 MOZ_OS2_HIGH_MEMORY=1
1824 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1825 [  --disable-os2-high-mem  Disable high-memory support on OS/2],
1826     MOZ_OS2_HIGH_MEMORY=,
1827     MOZ_OS2_HIGH_MEMORY=1 )
1828 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1830 dnl ========================================================
1831 dnl = Use profiling compile flags
1832 dnl ========================================================
1833 MOZ_ARG_ENABLE_BOOL(profiling,
1834 [  --enable-profiling      Set compile flags necessary for using sampling profilers (e.g. shark, perf)],
1835     MOZ_PROFILING=1,
1836     MOZ_PROFILING= )
1838 dnl ========================================================
1839 dnl System overrides of the defaults for host
1840 dnl ========================================================
1841 case "$host" in
1842 *-beos*)
1843     HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
1844     HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
1845     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1846     ;;
1848 *cygwin*|*mingw*|*mks*|*msvc*|*wince|*winmo)
1849     if test -n "$_WIN32_MSVC"; then
1850         HOST_AR=lib
1851         HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1852         HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1853         HOST_RANLIB='echo ranlib'
1854     else
1855         HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
1856     fi
1857     HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
1858     HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1859     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1860     HOST_BIN_SUFFIX=.exe
1861     case "$host" in
1862     *mingw*)
1863     dnl MinGW/MSYS does not need CYGWIN_WRAPPER
1864         PERL="/bin/sh ${_topsrcdir}/build/msys-perl-wrapper"
1865         ;;
1866     *)
1867         CYGWIN_WRAPPER="${srcdir}/build/cygwin-wrapper"
1868         if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
1869             _pwd=`pwd`
1870             CYGWIN_WRAPPER="${_pwd}/${srcdir}/build/cygwin-wrapper"
1871         fi
1872         if test "`${PERL} -v | grep -c cygwin  2>/dev/null`" = 0; then
1873             AS_PERL=1
1874             PERL="${CYGWIN_WRAPPER} $PERL"
1875         fi
1877         if test "`${PYTHON} -c 'import sys; print sys.platform;'`" != "cygwin"; then
1878             PYTHON="${CYGWIN_WRAPPER} $PYTHON"
1879         fi
1880         ;;
1881     esac
1883     case "${host_cpu}" in
1884     x86_64)
1885         HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
1886         ;;
1887     esac
1888     ;;
1890 *-darwin*)
1891     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1892     HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1893     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1894     ;;
1896 *-linux*|*-kfreebsd*-gnu|*-gnu*)
1897     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1898     HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1899     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1900     ;;
1902 *os2*)
1903     HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1904     HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1905     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1906     HOST_BIN_SUFFIX=.exe
1907     MOZ_FIX_LINK_PATHS=
1908     ;;
1910 *-osf*)
1911     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1912     HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
1913     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1914     ;;
1917     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1918     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1919     ;;
1920 esac
1922 dnl We require version 2.5 or newer of Python to build.
1923 AC_MSG_CHECKING([for Python version >= $PYTHON_VERSION but not 3.x])
1924 changequote(,)
1925 $PYTHON -c "import sys; sys.exit(sys.version[:3] < sys.argv[1] or sys.version[:2] != '2.')" $PYTHON_VERSION
1926 _python_res=$?
1927 changequote([,])
1928 if test "$_python_res" != 0; then
1929     AC_MSG_ERROR([Python $PYTHON_VERSION or higher (but not Python 3.x) is required.])
1931 AC_MSG_RESULT([yes])
1933 dnl Get mozilla version from central milestone file
1934 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1936 dnl Get version of various core apps from the version files.
1937 FIREFOX_VERSION=`cat $topsrcdir/browser/config/version.txt`
1939 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1940 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1942 dnl ========================================================
1943 dnl System overrides of the defaults for target
1944 dnl ========================================================
1946 case "$target" in
1947 *-aix*)
1948     AC_DEFINE(AIX)
1949     if test ! "$GNU_CC"; then
1950         if test ! "$HAVE_64BIT_OS"; then
1951             # Compiling with Visual Age C++ object model compat is the
1952             # default. To compile with object model ibm, add 
1953             # AIX_OBJMODEL=ibm to .mozconfig.
1954             if test "$AIX_OBJMODEL" = "ibm"; then
1955                 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1956             else
1957                 AIX_OBJMODEL=compat
1958             fi
1959         else
1960             AIX_OBJMODEL=compat
1961         fi
1962         AC_SUBST(AIX_OBJMODEL)
1963         DSO_LDOPTS='-qmkshrobj=1'
1964         DSO_CFLAGS='-qflag=w:w'
1965         DSO_PIC_CFLAGS=
1966         LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1967         AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
1968         MOZ_FIX_LINK_PATHS=
1969         MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1970         MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1971         if test "$COMPILE_ENVIRONMENT"; then
1972             AC_LANG_SAVE
1973             AC_LANG_CPLUSPLUS
1974             AC_MSG_CHECKING([for VisualAge C++ compiler version >= 6.0.0.3])
1975             AC_TRY_COMPILE([],
1976                 [#if (__IBMCPP__ < 600)
1977                  #error "Bad compiler"
1978                  #endif],
1979                 _BAD_COMPILER=,_BAD_COMPILER=1)
1980             if test -n "$_BAD_COMPILER"; then
1981                 AC_MSG_RESULT([no])    
1982                 AC_MSG_ERROR([VisualAge C++ version 6.0.0.3 or higher is required to build.])
1983             else
1984                 AC_MSG_RESULT([yes])    
1985             fi
1986             AC_LANG_RESTORE
1987             TARGET_COMPILER_ABI="ibmc"
1988             CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1989             CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1990         fi
1991     fi
1992     case "${target_os}" in
1993     aix4.1*)
1994         DLL_SUFFIX='_shr.a'
1995         ;;
1996     esac
1997     if test "$COMPILE_ENVIRONMENT"; then
1998         AC_CHECK_HEADERS(sys/inttypes.h)
1999     fi
2000     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2001     ;;
2003 *-beos*)
2004     no_x=yes
2005     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
2006     _PLATFORM_DEFAULT_TOOLKIT="cairo-beos"
2007     DSO_LDOPTS='-nostart'
2008     TK_LIBS='-lbe -lroot'
2009     LIBS="$LIBS -lbe"
2010     if test "$COMPILE_ENVIRONMENT"; then
2011         AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
2012         AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
2013     fi
2014     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
2015     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
2016     _MOZ_USE_RTTI=1
2017     USE_DEPENDENT_LIBS=
2018     MOZ_USER_DIR="Mozilla"
2019     ;;
2021 *-bsdi*)
2022     dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
2023     _PEDANTIC=
2024     case $OS_RELEASE in
2025         4.*|5.*)
2026             STRIP="$STRIP -d"
2027             ;;
2028         *)
2029             DSO_CFLAGS=''
2030             DSO_LDOPTS='-r'
2031             _WARNINGS_CFLAGS="-Wall"
2032             _WARNINGS_CXXFLAGS="-Wall"
2033             # The test above doesn't work properly, at least on 3.1.
2034             MKSHLIB_FORCE_ALL=''
2035             MKSHLIB_UNFORCE_ALL=''
2036         ;;
2037     esac
2038     ;;
2040 *-darwin*) 
2041     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2042     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2043     # If we're building with --enable-profiling, we need a frame pointer.
2044     if test -z "$MOZ_PROFILING"; then
2045         MOZ_OPTIMIZE_FLAGS="-O3 -fomit-frame-pointer"
2046     else
2047         MOZ_OPTIMIZE_FLAGS="-O3 -fno-omit-frame-pointer"
2048     fi
2049     _PEDANTIC=
2050     CFLAGS="$CFLAGS -fpascal-strings -fno-common"
2051     CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
2052     DLL_SUFFIX=".dylib"
2053     DSO_LDOPTS=''
2054     STRIP="$STRIP -x -S"
2055     _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
2056     TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
2057     # The ExceptionHandling framework is needed for Objective-C exception
2058     # logging code in nsObjCExceptions.h. Currently we only use that in debug
2059     # builds.
2060     MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"
2062     dnl DTrace and -dead_strip don't interact well. See bug 403132.
2063     dnl ===================================================================
2064     if test "x$enable_dtrace" = "xyes"; then
2065         echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
2066     else
2067         dnl check for the presence of the -dead_strip linker flag
2068         AC_MSG_CHECKING([for -dead_strip option to ld])
2069         _SAVE_LDFLAGS=$LDFLAGS
2070         LDFLAGS="$LDFLAGS -Wl,-dead_strip"
2071         AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
2072         if test -n "$_HAVE_DEAD_STRIP" ; then
2073             AC_MSG_RESULT([yes])
2074             MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
2075         else
2076             AC_MSG_RESULT([no])
2077         fi
2078         
2079         LDFLAGS=$_SAVE_LDFLAGS
2080     fi
2081     MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
2082     ;;
2084 *-freebsd*)
2085     if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` != "elf"; then
2086         DLL_SUFFIX=".so.1.0"
2087         DSO_LDOPTS="-shared"
2088     fi
2089     if test ! "$GNU_CC"; then
2090         DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
2091     fi
2092     ;; 
2094 ia64*-hpux*)
2095     DLL_SUFFIX=".so"
2096     if test ! "$GNU_CC"; then
2097        DSO_LDOPTS='-b'
2098        DSO_CFLAGS=""
2099        DSO_PIC_CFLAGS=
2100        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@'
2101        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@'
2102        CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2103     else
2104        DSO_LDOPTS='-b -E'
2105        MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2106        MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2107     fi
2108     MOZ_FIX_LINK_PATHS=
2109     SYSTEM_MAKEDEPEND=
2110     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2111     AC_DEFINE(_LARGEFILE64_SOURCE)
2112     ;;
2114 *-hpux*)
2115     DLL_SUFFIX=".sl"
2116     if test ! "$GNU_CC"; then
2117         DSO_LDOPTS='-b -Wl,+s'
2118         DSO_CFLAGS=""
2119         DSO_PIC_CFLAGS="+Z"
2120         MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
2121         MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
2122         CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2123     else
2124         DSO_LDOPTS='-b -E +s'
2125         MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2126         MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2127     fi
2128     MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
2129     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2130     ;;
2132 *-irix5*)
2133     AC_DEFINE(IRIX)
2134     DSO_LDOPTS='-elf -shared'
2136     if test "$GNU_CC"; then
2137        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2138        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2139        MKSHLIB_FORCE_ALL='-Wl,-all'
2140        MKSHLIB_UNFORCE_ALL='-Wl,-none'
2141        CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
2142     else
2143        MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2144        MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2145        MKSHLIB_FORCE_ALL='-all'
2146        MKSHLIB_UNFORCE_ALL='-none'
2147     fi
2148     ;;
2150 *-irix6*)
2151     AC_DEFINE(IRIX)
2152     dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must* 
2153     dnl compile and link using -n32
2154     USE_N32=1
2155     TARGET_COMPILER_ABI=n32
2156     DSO_LDOPTS='-elf -shared'
2157     MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2158     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2159     _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
2160     _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
2161     if test "$GNU_CC"; then
2162        MKSHLIB_FORCE_ALL='-Wl,-all'
2163        MKSHLIB_UNFORCE_ALL='-Wl,-none'
2164        _WARNINGS_CFLAGS="-Wall"
2165        _WARNINGS_CXXFLAGS="-Wall"
2166        CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
2167     else
2168        MKSHLIB_FORCE_ALL='-all'
2169        MKSHLIB_UNFORCE_ALL='-none'
2170            AR_LIST="$AR t"
2171            AR_EXTRACT="$AR x"
2172            AR_DELETE="$AR d"
2173            AR='$(CXX) -ar'
2174            AR_FLAGS='-o $@'
2175        CFLAGS="$CFLAGS -woff 3262 -G 4"
2176        CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
2177        if test -n "$USE_N32"; then
2178            ASFLAGS="$ASFLAGS -n32"
2179            CFLAGS="$CFLAGS -n32"
2180            CXXFLAGS="$CXXFLAGS -n32"
2181            LDFLAGS="$LDFLAGS -n32"
2182        fi
2183        AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2184        AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
2185        MOZ_FIX_LINK_PATHS=
2186     fi
2187     if test -z "$GNU_CXX"; then
2188       MIPSPRO_CXX=1
2189     fi
2190     ;;
2192 *-*linux*)
2193     # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
2194     # Similarly for GNU_CXX and INTEL_CXX.
2195     if test "$INTEL_CC" -o "$INTEL_CXX"; then
2196         # -Os has been broken on Intel's C/C++ compilers for quite a
2197         # while; Intel recommends against using it.
2198         MOZ_OPTIMIZE_FLAGS="-O2"
2199         MOZ_DEBUG_FLAGS="-g"
2200     elif test "$GNU_CC" -o "$GNU_CXX"; then
2201         GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
2202         case $GCC_VERSION in
2203         4.1.*|4.2.*|4.5.*)
2204             # -Os is broken on gcc 4.1.x 4.2.x, 4.5.x we need to tweak it to get good results.
2205             MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
2206         esac
2207         # If we're building with --enable-profiling, we need a frame pointer.
2208         if test -z "$MOZ_PROFILING"; then
2209             MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fomit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK"
2210         else
2211             MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-omit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK"
2212         fi
2213         MOZ_DEBUG_FLAGS="-g"
2214     fi
2216     TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2218     MOZ_MEMORY=1
2220     case "${target_cpu}" in
2221     alpha*)
2222         CFLAGS="$CFLAGS -mieee"
2223         CXXFLAGS="$CXXFLAGS -mieee"
2224     ;;
2225     i*86)
2226         USE_ELF_DYNSTR_GC=1
2227     ;;
2228     mips*)
2229         MOZ_DEBUG_FLAGS="-g" # We want inlining
2230     ;;
2231     esac
2232     ;;
2234 *-wince*|*-winmo*)
2235     TARGET_COMPILER_ABI=msvc
2236     _PLATFORM_DEFAULT_TOOLKIT=cairo-windows
2237     MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2238     MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2239     AR_LIST="$AR -list"
2240     AR_EXTRACT="$AR -extract"
2241     AR_DELETE="$AR d"
2242     AR_FLAGS='-OUT:"$@"'
2243     MOZ_MEMORY=1
2244     NSS_DISABLE_DBM=1
2245     MOZ_OGG=
2246     ac_configure_args="$ac_configure_args --enable-win32-target=WINCE"
2248     if test "$AS_BIN"; then
2249         AS="$AS_BIN"
2250     fi
2251     DSO_CFLAGS=
2252     DSO_PIC_CFLAGS=
2253     DLL_SUFFIX=.dll
2254     BIN_SUFFIX='.exe'
2255     if test -z "$RC"; then 
2256         RC=rc.exe  
2257     fi
2258     # certain versions of cygwin's makedepend barf on the 
2259     # #include <string> vs -I./dist/include/string issue so don't use it
2260     SYSTEM_MAKEDEPEND=
2262     HOST_CC=cl
2263     HOST_CXX=cl
2264     HOST_LD=link
2265     HOST_AR='lib -OUT:$@'
2266     HOST_RANLIB='echo ranlib'
2267     HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
2268         
2269         
2270     WARNINGS_AS_ERRORS='-WX'
2271     MOZ_OPTIMIZE_FLAGS='-Ox'
2272     AR_FLAGS='-NOLOGO -OUT:"$@"'
2273     ASM_SUFFIX=asm
2274     CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2275     CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2276     DLL_PREFIX=
2277     DOXYGEN=:
2278     DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
2279     DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2280     GARBAGE=
2281     IMPORT_LIB_SUFFIX=lib
2282     dnl Need to force-link against mozalloc because it's used in the shunt
2283     LIBS="$LIBS \$(LIBXUL_DIST)/lib/mozalloc.lib"
2284     LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2285     LIB_PREFIX=
2286     LIB_SUFFIX=lib 
2287     MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
2288     MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
2289     MKSHLIB_FORCE_ALL=
2290     MKSHLIB_UNFORCE_ALL=
2291     MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2292     MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2293     MOZ_DEBUG_FLAGS='-Zi'
2294     MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2295     MOZ_FIX_LINK_PATHS=
2296     MOZ_JS_STATIC_LIBS='$(LIBXUL_DIST)/lib/js_static.lib'
2297     MOZ_JS_SHARED_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2298     OBJ_SUFFIX=obj
2299     RANLIB='echo not_ranlib'
2300     STRIP='echo not_strip'
2301     TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
2302     UNZIP=unzip
2303     XARGS=xargs
2304     XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2305     ZIP=zip
2306     MOZ_TREE_FREETYPE=1
2308     AC_DEFINE(HAVE_SNPRINTF)
2309     AC_DEFINE(_WINDOWS)
2310     AC_DEFINE(WIN32)
2311     AC_DEFINE(XP_WIN)
2312     AC_DEFINE(XP_WIN32)
2313     AC_DEFINE(HW_THREADS)
2314     AC_DEFINE(STDC_HEADERS)
2315     AC_DEFINE(NEW_H, <new>)
2316     AC_DEFINE(WIN32_LEAN_AND_MEAN)
2317     AC_DEFINE(HAVE_LOCALTIME_R)
2319     TARGET_MD_ARCH=win32
2320     _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2321     BIN_SUFFIX='.exe'
2322     MOZ_USER_DIR="Mozilla"
2324     MOZ_GFX_OPTIMIZE_MOBILE=1
2326     # Sanity check for WINCE_WINDOWS_MOBILE
2327     # XXX disabled until we can fix the mobile tinderbox
2328     ##if test "$WINCE_WINDOWS_MOBILE"; then
2329     ##   AC_CHECK_HEADER(tpcshell.h, [],
2330     ##        AC_MSG_ERROR([Can't find tpcshell.h in your SDK; are you sure you don't need --disable-windows-mobile-components?]))
2331     ##fi
2335 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2336     DSO_CFLAGS=
2337     DSO_PIC_CFLAGS=
2338     DLL_SUFFIX=.dll
2339     RC=rc.exe
2340     # certain versions of cygwin's makedepend barf on the 
2341     # #include <string> vs -I./dist/include/string issue so don't use it
2342     SYSTEM_MAKEDEPEND=
2343     if test -n "$GNU_CC"; then
2344         CC="$CC -mno-cygwin"
2345         CXX="$CXX -mno-cygwin"
2346         CPP="$CPP -mno-cygwin"
2347         CFLAGS="$CFLAGS -mms-bitfields"
2348         CXXFLAGS="$CXXFLAGS -mms-bitfields"
2349         DSO_LDOPTS='-shared'
2350         MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
2351         MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2352         RC='$(WINDRES)'
2353         # Use temp file for windres (bug 213281)
2354         RCFLAGS='-O coff --use-temp-file'
2355         # mingw doesn't require kernel32, user32, and advapi32 explicitly
2356         LIBS="$LIBS -luuid -lgdi32 -lwinmm -lwsock32"
2357         MOZ_JS_STATIC_LIBS='-L$(LIBXUL_DIST)/bin -ljs_static'
2358         MOZ_JS_SHARED_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs'
2359         MOZ_FIX_LINK_PATHS=
2360         DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core -lmozalloc'
2361         XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom -lmozalloc'
2362         DLL_PREFIX=
2363         IMPORT_LIB_SUFFIX=dll.a
2364         GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
2365     else
2366         TARGET_COMPILER_ABI=msvc
2367         HOST_CC='$(CC)'
2368         HOST_CXX='$(CXX)'
2369         HOST_LD='$(LD)'
2370         if test "$AS_BIN"; then
2371             AS="$(basename "$AS_BIN")"
2372         fi
2373         AR='lib -NOLOGO -OUT:"$@"'
2374         AR_FLAGS=
2375         RANLIB='echo not_ranlib'
2376         STRIP='echo not_strip'
2377         PKG_SKIP_STRIP=1
2378         XARGS=xargs
2379         ZIP=zip
2380         UNZIP=unzip
2381         DOXYGEN=:
2382         GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
2383         ASM_SUFFIX=asm
2384         OBJ_SUFFIX=obj
2385         LIB_SUFFIX=lib
2386         DLL_PREFIX=
2387         LIB_PREFIX=
2388         IMPORT_LIB_SUFFIX=lib
2389         MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2390         MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2391         MKSHLIB_FORCE_ALL=
2392         MKSHLIB_UNFORCE_ALL=
2393         DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2394         _USE_CPP_INCLUDE_FLAG=1
2395         _DEFINES_CFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2396         _DEFINES_CXXFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2397         CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2398         CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2399         CXXFLAGS="$CXXFLAGS -wd4800" # disable warning "forcing value to bool"
2400         LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
2401         MOZ_DEBUG_FLAGS='-Zi'
2402         MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2403         WARNINGS_AS_ERRORS='-WX'
2404         # If we're building with --enable-profiling, we need -Oy-, which forces a frame pointer.
2405         if test -z "$MOZ_PROFILING"; then
2406             MOZ_OPTIMIZE_FLAGS='-O1'
2407         else
2408             MOZ_OPTIMIZE_FLAGS='-O1 -Oy-'
2409         fi
2410         MOZ_JS_STATIC_LIBS='$(LIBXUL_DIST)/lib/js_static.lib'
2411         MOZ_JS_SHARED_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2412         MOZ_FIX_LINK_PATHS=
2413         DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2414         XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2415         LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2416         MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2417         if test $_MSC_VER -ge 1400; then
2418             LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE -NXCOMPAT"
2419             dnl For profile-guided optimization
2420             PROFILE_GEN_CFLAGS="-GL"
2421             PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2422             dnl XXX: PGO builds can fail with warnings treated as errors,
2423             dnl specifically "no profile data available" appears to be
2424             dnl treated as an error sometimes. This might be a consequence
2425             dnl of using WARNINGS_AS_ERRORS in some modules, combined
2426             dnl with the linker doing most of the work in the whole-program
2427             dnl optimization/PGO case. I think it's probably a compiler bug,
2428             dnl but we work around it here.
2429             PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2430             dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2431             dnl Probably also a compiler bug, but what can you do?
2432             PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2433             LDFLAGS="$LDFLAGS -DYNAMICBASE"
2434         fi
2435     fi
2436     MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,jpeg32$(VERSION_NUMBER),$(DEPTH)/jpeg)'
2437     MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,png,$(DEPTH)/modules/libimg/png)'
2438     AC_DEFINE(HAVE_SNPRINTF)
2439     AC_DEFINE(_WINDOWS)
2440     AC_DEFINE(WIN32)
2441     AC_DEFINE(XP_WIN)
2442     AC_DEFINE(XP_WIN32)
2443     AC_DEFINE(HW_THREADS)
2444     AC_DEFINE(STDC_HEADERS)
2445     AC_DEFINE(NEW_H, <new>)
2446     AC_DEFINE(WIN32_LEAN_AND_MEAN)
2447     TARGET_MD_ARCH=win32
2448     _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2449     BIN_SUFFIX='.exe'
2450     MOZ_USER_DIR="Mozilla"
2452     dnl Hardcode to win95 for now - cls
2453     TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2455     dnl set NO_X11 defines here as the general check is skipped on win32
2456     no_x=yes
2457     AC_DEFINE(NO_X11)
2459     dnl MinGW/MSYS doesn't provide or need cygpath
2460     case "$host" in
2461     *-mingw*)
2462         CYGPATH_W=echo
2463         CYGPATH_S=cat
2464         MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2465         ;;
2466     *-cygwin*|*-msvc*|*-mks*)
2467         CYGPATH_W="cygpath -a -w"
2468         CYGPATH_S="sed -e s|\\\\|/|g"
2469         MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
2470         ;;
2471     esac
2472     case "$host" in
2473     *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2475     if test -z "$MOZ_TOOLS"; then
2476         AC_MSG_ERROR([MOZ_TOOLS is not set])
2477     fi
2479     MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2480     if test "$?" != "0" -o -z "$MOZ_TOOLS_DIR"; then
2481         AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2482     fi
2483     MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
2484     if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
2485         AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2486     fi
2487     MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
2488     ;;
2489     esac 
2492     case "$host_os" in
2493     cygwin*|msvc*|mks*)
2494         AC_MSG_WARN([Using a cygwin build environment is unsupported. Configure cannot check for the presence of necessary headers. Please upgrade to MozillaBuild; see https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
2495         ;;
2497     *)
2498         AC_CHECK_HEADERS(oleacc.idl)
2500         AC_LANG_SAVE
2501         AC_LANG_CPLUSPLUS
2502         AC_CHECK_HEADERS(atlbase.h)
2503         AC_LANG_RESTORE
2504         ;;
2505     esac
2507     case "$target" in
2508     i*86-*)
2509         if test "$HAVE_64BIT_OS"; then
2510             AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
2511         fi
2513         if test $_MSC_VER -ge 1400; then
2514             LDFLAGS="$LDFLAGS -SAFESEH"
2515         fi
2516         AC_CHECK_HEADERS(mmintrin.h)
2517         AC_DEFINE(_X86_)
2518         ;;
2519     alpha-*)
2520         AC_DEFINE(_ALPHA_)
2521         ;;
2522     mips-*)
2523         AC_DEFINE(_MIPS_)
2524         ;;
2525     x86_64-*)
2526         AC_DEFINE(_AMD64_)
2527         ;;
2528     *)
2529         AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2530         ;;
2531     esac
2533     if test "$HAVE_64BIT_OS"; then
2534         AC_DEFINE(_WIN64)
2535     fi
2536     ;;
2538 *-netbsd*)
2539     DSO_CFLAGS=''
2540     CFLAGS="$CFLAGS -Dunix"
2541     CXXFLAGS="$CXXFLAGS -Dunix"
2542     if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2543         DLL_SUFFIX=".so"
2544         DSO_PIC_CFLAGS='-fPIC -DPIC'
2545         DSO_LDOPTS='-shared'
2546         BIN_FLAGS='-Wl,--export-dynamic'
2547     else
2548         DSO_PIC_CFLAGS='-fPIC -DPIC'
2549         DLL_SUFFIX=".so.1.0"
2550         DSO_LDOPTS='-shared'
2551     fi
2552     # This will fail on a.out systems prior to 1.5.1_ALPHA.
2553     MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2554     MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2555     if test "$LIBRUNPATH"; then
2556         DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2557     fi
2558     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2559     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2560     ;;
2562 *-nto*) 
2563         AC_DEFINE(NTO)  
2564         AC_DEFINE(_QNX_SOURCE)
2565         AC_DEFINE(_i386)
2566         OS_TARGET=NTO
2567         WARNINGS_AS_ERRORS=''
2568         MOZ_OPTIMIZE_FLAGS="-O"
2569         MOZ_DEBUG_FLAGS="-gstabs"
2570         USE_PTHREADS=1
2571         _PEDANTIC=
2572         LIBS="$LIBS -lsocket -lstdc++"
2573         _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
2574         _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h -D_POSIX_C_SOURCE=199506'
2575         if test "$with_x" != "yes"
2576         then
2577                 _PLATFORM_DEFAULT_TOOLKIT="photon"
2578             TK_CFLAGS='-I/usr/include/photon'
2579                 TK_LIBS='-lph'
2580         fi
2581         case "${target_cpu}" in
2582         ppc*)
2583         AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)        
2584         ;;
2585         esac
2586         case "${host_cpu}" in
2587         i*86)
2588         USE_ELF_DYNSTR_GC=1
2589         ;;
2590         esac
2591         ;;
2593 *-openbsd*)
2594     DLL_SUFFIX=".so.1.0"
2595     DSO_CFLAGS=''
2596     DSO_PIC_CFLAGS='-fPIC'
2597     DSO_LDOPTS='-shared -fPIC'
2598     if test "$LIBRUNPATH"; then
2599         DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2600     fi
2601     ;;
2603 *-openvms*) 
2604     AC_DEFINE(NO_PW_GECOS)
2605     AC_DEFINE(NO_UDSOCK)
2606     AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
2607     USE_PTHREADS=1
2608     MKSHLIB_FORCE_ALL='-all'
2609     MKSHLIB_UNFORCE_ALL='-none'
2610     AS='as'
2611     AS_DASH_C_FLAG='-Wc/names=as_is'
2612     AR_FLAGS='c $@'
2613     DSO_LDOPTS='-shared -auto_symvec'
2614     DSO_PIC_CFLAGS=
2615     MOZ_DEBUG_LDFLAGS='-g'
2616     COMPAQ_CXX=1
2617     CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
2618     CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
2619     ;;
2622 *-os2*)
2623     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2624     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2625     AC_DEFINE(OS2)
2626     AC_DEFINE(XP_OS2)
2627     AC_DEFINE(OS2EMX_PLAIN_CHAR)
2628     AC_DEFINE(TCPV40HDRS)
2629     DLL_PREFIX=
2630     LIB_PREFIX=
2631     LIB_SUFFIX=lib
2632     BIN_SUFFIX=".exe"
2633     DLL_SUFFIX=".dll"
2634     IMPORT_LIB_SUFFIX=lib
2635     DSO_PIC_CFLAGS=
2636     AR=emxomfar
2637     AR_FLAGS='r $@'
2638     CFLAGS="$CFLAGS -Zomf"
2639     CXXFLAGS="$CXXFLAGS -Zomf"
2640     DSO_LDOPTS='-Zdll'
2641     BIN_FLAGS='-Zlinker /ST:0x100000'
2642     IMPLIB='emximp -o'
2643     FILTER='true'
2644     LDFLAGS='-Zmap'
2645     WARNINGS_AS_ERRORS='-Werror'
2646     MOZ_DEBUG_FLAGS="-g -fno-inline"
2647     MOZ_OPTIMIZE_FLAGS="-O2"
2648     MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2649     DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2650     LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2651     TARGET_MD_ARCH=os2
2652     _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2653     RC=rc.exe
2654     RCFLAGS='-n'
2655     MOZ_USER_DIR="Mozilla"
2657     if test "$MOZTOOLS"; then
2658         MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2659     else
2660         AC_MSG_ERROR([MOZTOOLS is not set])
2661     fi
2662     if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2663         DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2664         LDFLAGS="$LDFLAGS -Zhigh-mem"
2665         MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2666         AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2667     fi
2669     # GCC for OS/2 currently predefines these, but we don't want them
2670     _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2671     _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2673     AC_CACHE_CHECK(for __declspec(dllexport),
2674         ac_os2_declspec,
2675         [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2676                         [return 0;],
2677                         ac_os2_declspec="yes",
2678                         ac_os2_declspec="no")])
2679     if test "$ac_os2_declspec" != "yes"; then
2680         AC_MSG_ERROR([Compiler does not support __declspec(dllexport), install GCC-4.3.2 or newer])
2681     fi
2682     ;;
2684 alpha*-*-osf*)
2685     if test "$GNU_CC"; then
2686       MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2687       MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2689     else
2690         MOZ_DEBUG_FLAGS='-g'
2691         ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
2692         CFLAGS="$CFLAGS -ieee"
2693         CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee  -ptr $(DIST)/cxx_repository'
2694         DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
2695         DSO_CFLAGS=
2696         DSO_PIC_CFLAGS=
2697         MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2698         MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2699         MKSHLIB_FORCE_ALL='-all'
2700         MKSHLIB_UNFORCE_ALL='-none'
2701         dnl Might fix the libxpcom.so breakage on this platform as well....
2702         AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2703         AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2704     fi
2705     if test -z "$GNU_CXX"; then
2706       COMPAQ_CXX=1
2707     fi
2708     AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2709     ;;
2711 *-qnx*) 
2712     DIRENT_INO=d_stat.st_ino
2713     dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
2714     AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2715     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2716     dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
2717     AC_DEFINE(STDC_HEADERS)
2718     if test "$no_x" = "yes"; then
2719             _PLATFORM_DEFAULT_TOOLKIT='photon'
2720             TK_CFLAGS='-I/usr/nto/include/photon'
2721             TK_LIBS='-lphoton -lphrender'
2722     fi
2723     ;;
2725 *-sco*) 
2726     AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2727     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2728     CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
2729     if test ! "$GNU_CC"; then
2730        DSO_LDOPTS='-G'
2731     fi
2732     ;;
2734 *-solaris*) 
2735     AC_DEFINE(SOLARIS)
2736     TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2737     SYSTEM_MAKEDEPEND=
2738     MOZ_FIX_LINK_PATHS=
2739     # $ORIGIN/.. is for shared libraries under components/ to locate shared
2740     # libraries one level up (e.g. libnspr4.so)
2741     if test "$SOLARIS_SUNPRO_CC"; then
2742        LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..' -z lazyload -z combreloc -z muldefs"
2743        LIBS="-lCrun -lCstd -lc $LIBS"
2744        NS_USE_NATIVE=1
2745        AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2746        CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__"
2747        CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions -norunpath -D__FUNCTION__=__func__ -template=no%extdef"
2748        _MOZ_EXCEPTIONS_FLAGS_ON='-features=except'
2749        _MOZ_EXCEPTIONS_FLAGS_OFF='-features=no%except'
2750        LDFLAGS="-xildoff $LDFLAGS"
2751        if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then
2752            _SAVE_LDFLAGS=$LDFLAGS
2753            LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS" 
2754            AC_TRY_LINK([#include <stdio.h>],
2755                        [printf("Hello World\n");],
2756                        ,
2757                        [LDFLAGS=$_SAVE_LDFLAGS])
2758        fi
2759        WARNINGS_AS_ERRORS='-Werror'
2760        MOZ_OPTIMIZE_FLAGS="-xO4"
2761        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2762        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2763        MKSHLIB_FORCE_ALL='-z allextract'
2764        MKSHLIB_UNFORCE_ALL='-z defaultextract'
2765        DSO_LDOPTS='-G'
2766        AR_LIST="$AR t"
2767        AR_EXTRACT="$AR x"
2768        AR_DELETE="$AR d"
2769        AR='$(CXX) -xar'
2770        AR_FLAGS='-o $@'
2771        AS='/usr/ccs/bin/as'
2772        ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2773        AS_DASH_C_FLAG=''
2774        TARGET_COMPILER_ABI="sunc"
2775        CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2776        CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2777        AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
2778        AC_LANG_SAVE
2779        AC_LANG_CPLUSPLUS
2780        AC_TRY_COMPILE([],
2781            [#if (__SUNPRO_CC < 0x590)
2782            #error "Denied"
2783            #endif],
2784            _BAD_COMPILER=,_BAD_COMPILER=1)
2785        if test -n "$_BAD_COMPILER"; then
2786            _res="no"
2787            AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
2788        else
2789            _res="yes"
2790        fi
2791        AC_TRY_COMPILE([],
2792            [#if (__SUNPRO_CC >= 0x5100)
2793            #error "Sun C++ 5.10 or above"
2794            #endif],
2795            _ABOVE_SS12U1=,_ABOVE_SS12U1=1)
2796        if test "$_ABOVE_SS12U1"; then
2797            # disable xannotate
2798            CXXFLAGS="$CXXFLAGS -xannotate=no"
2799        fi
2800        AC_MSG_RESULT([$_res])
2801        AC_LANG_RESTORE
2802     else
2803        LDFLAGS="$LDFLAGS -Wl,-z,ignore -Wl,-R,'\$\$ORIGIN:\$\$ORIGIN/..' -Wl,-z,lazyload -Wl,-z,combreloc -Wl,-z,muldefs"
2804        LIBS="-lc $LIBS"
2805        MKSHLIB_FORCE_ALL='-Wl,-z -Wl,allextract'
2806        MKSHLIB_UNFORCE_ALL='-Wl,-z -Wl,defaultextract'
2807        ASFLAGS="$ASFLAGS -fPIC"
2808        DSO_LDOPTS='-shared'
2809        _WARNINGS_CFLAGS=''
2810        _WARNINGS_CXXFLAGS=''
2811        if test "$OS_RELEASE" = "5.3"; then
2812            AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2813        fi
2814     fi
2815     if test "$OS_RELEASE" = "5.5.1"; then
2816         AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2817     fi
2818     ;;
2820 *-sunos*) 
2821     DSO_LDOPTS='-Bdynamic'
2822     MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2823     MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2824     AC_DEFINE(SUNOS4)
2825     AC_DEFINE(SPRINTF_RETURNS_STRING)
2826     case "$(target_os)" in
2827     sunos4.1*)
2828         DLL_SUFFIX='.so.1.0'
2829         ;;
2830     esac
2831     ;;
2833 *-sysv4.2uw7*) 
2834         NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2835     ;;
2837 *-os2*)
2838     HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2839     ;;
2841 *-android*)
2842     AC_DEFINE(NO_PW_GECOS)
2843     no_x=yes
2844     _PLATFORM_DEFAULT_TOOLKIT=cairo-android
2845     TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2847     MOZ_GFX_OPTIMIZE_MOBILE=1
2848     # If we're building with --enable-profiling, we need a frame pointer.
2849     if test -z "$MOZ_PROFILING"; then
2850         MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions -fomit-frame-pointer"
2851     else
2852         MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions -fno-omit-frame-pointer"
2853     fi
2854     ;;
2856 esac
2858 dnl Only one oddball right now (QNX), but this gives us flexibility
2859 dnl if any other platforms need to override this in the future.
2860 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2862 dnl ========================================================
2863 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2864 dnl by now will not have any way to link most binaries (tests
2865 dnl as well as viewer, apprunner, etc.), because some symbols
2866 dnl will be left out of the "composite" .so's by ld as unneeded.
2867 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2868 dnl they can link in the static libs that provide the missing
2869 dnl symbols.
2870 dnl ========================================================
2871 NO_LD_ARCHIVE_FLAGS=
2872 if test -z "$MKSHLIB_FORCE_ALL" -o -z "$MKSHLIB_UNFORCE_ALL"; then
2873     NO_LD_ARCHIVE_FLAGS=1
2875 case "$target" in
2876 *-os2*)
2877     NO_LD_ARCHIVE_FLAGS=
2878     ;;
2879 *-aix4.3*|*-aix5*)
2880     NO_LD_ARCHIVE_FLAGS=
2881     ;;
2882 *-openvms*)
2883     NO_LD_ARCHIVE_FLAGS=
2884     ;;
2885 *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince|*-winmo)
2886     if test -z "$GNU_CC"; then
2887         NO_LD_ARCHIVE_FLAGS=
2888     fi
2889     ;;
2890 esac
2891 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2893 dnl ========================================================
2894 dnl = Flags to strip unused symbols from .so components and
2895 dnl = to export jemalloc symbols when linking a program
2896 dnl ========================================================
2897 case "$target" in
2898     *-linux*|*-kfreebsd*-gnu|*-gnu*)
2899         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2900         MOZ_JEMALLOC_STANDALONE_GLUE_LDOPTS='-rdynamic -Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/jemalloc-standalone-linkage-version-script'
2901         ;;
2902     *-solaris*)
2903         if test -z "$GNU_CC"; then
2904          MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2905         else
2906          if test -z "$GCC_USE_GNU_LD"; then
2907           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2908          else
2909           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2910          fi
2911         fi
2912         ;;
2913     *-nto*) 
2914         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2915         ;;
2916     *-darwin*)
2917         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2918         ;;
2919     *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince|*-winmo)
2920         if test -n "$GNU_CC"; then
2921            MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2922         fi
2923         ;;
2924 esac
2926 if test -z "$COMPILE_ENVIRONMENT"; then
2927     SKIP_COMPILER_CHECKS=1
2928     SKIP_LIBRARY_CHECKS=1
2931 if test -z "$SKIP_COMPILER_CHECKS"; then
2932 dnl Checks for typedefs, structures, and compiler characteristics.
2933 dnl ========================================================
2934 AC_HEADER_STDC
2935 AC_C_CONST
2936 AC_TYPE_MODE_T
2937 AC_TYPE_OFF_T
2938 AC_TYPE_PID_T
2939 AC_TYPE_SIZE_T
2940 AC_LANG_CPLUSPLUS
2941 AC_MSG_CHECKING(for __stdcall)
2942 AC_CACHE_VAL(ac_cv___stdcall,
2943  [AC_TRY_COMPILE([template <typename Method> struct foo;
2944                   template <> struct foo<void (*)()> {};
2945                   template <> struct foo<void (__stdcall*)()> {};],
2946                  [],
2947                  [ac_cv___stdcall=true],
2948                  [ac_cv___stdcall=false])])
2949 if test "$ac_cv___stdcall" = true ; then
2950   AC_DEFINE(HAVE_STDCALL)
2951   AC_MSG_RESULT(yes)
2952 else
2953   AC_MSG_RESULT(no)
2955 AC_LANG_C
2956 AC_MSG_CHECKING(for ssize_t)
2957 AC_CACHE_VAL(ac_cv_type_ssize_t,
2958  [AC_TRY_COMPILE([#include <stdio.h>
2959                   #include <sys/types.h>],
2960                  [ssize_t foo = 0;],
2961                  [ac_cv_type_ssize_t=true],
2962                  [ac_cv_type_ssize_t=false])])
2963 if test "$ac_cv_type_ssize_t" = true ; then
2964   AC_DEFINE(HAVE_SSIZE_T)
2965   AC_MSG_RESULT(yes)
2966 else
2967   AC_MSG_RESULT(no)
2969 AC_STRUCT_ST_BLKSIZE
2970 AC_MSG_CHECKING(for siginfo_t)
2971 AC_CACHE_VAL(ac_cv_siginfo_t,
2972  [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2973                   #include <signal.h>],
2974                  [siginfo_t* info;],
2975                  [ac_cv_siginfo_t=true],
2976                  [ac_cv_siginfo_t=false])])
2977 if test "$ac_cv_siginfo_t" = true ; then
2978   AC_DEFINE(HAVE_SIGINFO_T)
2979   AC_MSG_RESULT(yes)
2980 else
2981   AC_MSG_RESULT(no)
2984 dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
2985 dnl ========================================================
2986 AC_MSG_CHECKING(for int16_t)
2987 AC_CACHE_VAL(ac_cv_int16_t,
2988  [AC_TRY_COMPILE([#include <stdio.h>
2989                   #include <sys/types.h>],
2990                  [int16_t foo = 0;],
2991                  [ac_cv_int16_t=true],
2992                  [ac_cv_int16_t=false])])
2993 if test "$ac_cv_int16_t" = true ; then
2994   AC_DEFINE(HAVE_INT16_T)
2995   AC_MSG_RESULT(yes)
2996 else
2997   AC_MSG_RESULT(no)
2999 AC_MSG_CHECKING(for int32_t)
3000 AC_CACHE_VAL(ac_cv_int32_t,
3001  [AC_TRY_COMPILE([#include <stdio.h>
3002                   #include <sys/types.h>],
3003                  [int32_t foo = 0;],
3004                  [ac_cv_int32_t=true],
3005                  [ac_cv_int32_t=false])])
3006 if test "$ac_cv_int32_t" = true ; then
3007   AC_DEFINE(HAVE_INT32_T)
3008   AC_MSG_RESULT(yes)
3009 else
3010   AC_MSG_RESULT(no)
3012 AC_MSG_CHECKING(for int64_t)
3013 AC_CACHE_VAL(ac_cv_int64_t,
3014  [AC_TRY_COMPILE([#include <stdio.h>
3015                   #include <sys/types.h>],
3016                  [int64_t foo = 0;],
3017                  [ac_cv_int64_t=true],
3018                  [ac_cv_int64_t=false])])
3019 if test "$ac_cv_int64_t" = true ; then
3020   AC_DEFINE(HAVE_INT64_T)
3021   AC_MSG_RESULT(yes)
3022 else
3023   AC_MSG_RESULT(no)
3025 AC_MSG_CHECKING(for int64)
3026 AC_CACHE_VAL(ac_cv_int64,
3027  [AC_TRY_COMPILE([#include <stdio.h>
3028                   #include <sys/types.h>],
3029                  [int64 foo = 0;],
3030                  [ac_cv_int64=true],
3031                  [ac_cv_int64=false])])
3032 if test "$ac_cv_int64" = true ; then
3033   AC_DEFINE(HAVE_INT64)
3034   AC_MSG_RESULT(yes)
3035 else
3036   AC_MSG_RESULT(no)
3038 AC_MSG_CHECKING(for uint)
3039 AC_CACHE_VAL(ac_cv_uint,
3040  [AC_TRY_COMPILE([#include <stdio.h>
3041                   #include <sys/types.h>],
3042                  [uint foo = 0;],
3043                  [ac_cv_uint=true],
3044                  [ac_cv_uint=false])])
3045 if test "$ac_cv_uint" = true ; then
3046   AC_DEFINE(HAVE_UINT)
3047   AC_MSG_RESULT(yes)
3048 else
3049   AC_MSG_RESULT(no)
3051 AC_MSG_CHECKING(for uint_t)
3052 AC_CACHE_VAL(ac_cv_uint_t,
3053  [AC_TRY_COMPILE([#include <stdio.h>
3054                   #include <sys/types.h>],
3055                  [uint_t foo = 0;],
3056                  [ac_cv_uint_t=true],
3057                  [ac_cv_uint_t=false])])
3058 if test "$ac_cv_uint_t" = true ; then
3059   AC_DEFINE(HAVE_UINT_T)
3060   AC_MSG_RESULT(yes)
3061 else
3062   AC_MSG_RESULT(no)
3064 AC_MSG_CHECKING(for uint16_t)
3065 AC_CACHE_VAL(ac_cv_uint16_t,
3066  [AC_TRY_COMPILE([#include <stdio.h>
3067                   #include <sys/types.h>],
3068                  [uint16_t foo = 0;],
3069                  [ac_cv_uint16_t=true],
3070                  [ac_cv_uint16_t=false])])
3071 if test "$ac_cv_uint16_t" = true ; then
3072   AC_DEFINE(HAVE_UINT16_T)
3073   AC_MSG_RESULT(yes)
3074 else
3075   AC_MSG_RESULT(no)
3078 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
3079 dnl are defined when compiling C++ but not C.  Since the result of this
3080 dnl test is used only in C++, do it in C++.
3081 AC_LANG_CPLUSPLUS
3083 AC_MSG_CHECKING(for uname.domainname)
3084 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
3085     [AC_TRY_COMPILE([#include <sys/utsname.h>],
3086         [ struct utsname *res; char *domain; 
3087             (void)uname(res);  if (res != 0) { domain = res->domainname; } ],
3088         [ac_cv_have_uname_domainname_field=true],
3089         [ac_cv_have_uname_domainname_field=false])])
3091 if test "$ac_cv_have_uname_domainname_field" = "true"; then
3092     AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
3093     AC_MSG_RESULT(yes)
3094 else
3095     AC_MSG_RESULT(no)
3098 AC_MSG_CHECKING(for uname.__domainname)
3099 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
3100     [AC_TRY_COMPILE([#include <sys/utsname.h>],
3101         [ struct utsname *res; char *domain; 
3102             (void)uname(res);  if (res != 0) { domain = res->__domainname; } ],
3103         [ac_cv_have_uname_us_domainname_field=true],
3104         [ac_cv_have_uname_us_domainname_field=false])])
3106 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
3107     AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
3108     AC_MSG_RESULT(yes)
3109 else
3110     AC_MSG_RESULT(no)
3113 AC_LANG_CPLUSPLUS
3115 dnl Check for usable char16_t (2 bytes, unsigned)
3116 dnl (we might not need the unsignedness check anymore)
3117 AC_CACHE_CHECK(for usable char16_t (2 bytes, unsigned),
3118     ac_cv_have_usable_char16_t,
3119     [AC_TRY_COMPILE([$configure_static_assert_macros],
3120                     [CONFIGURE_STATIC_ASSERT(sizeof(char16_t) == 2);
3121                      CONFIGURE_STATIC_ASSERT(char16_t(-1) > char16_t(0));
3122                      CONFIGURE_STATIC_ASSERT(sizeof((u"hello")[0]) == 2);
3123                      CONFIGURE_STATIC_ASSERT(sizeof(u'a') == 2);
3124                      CONFIGURE_STATIC_ASSERT(u'\xFFFF' > u'\x0')],
3125                     ac_cv_have_usable_char16_t="yes",
3126                     ac_cv_have_usable_char16_t="no")])
3127 if test "$ac_cv_have_usable_char16_t" = "yes"; then
3128     AC_DEFINE(HAVE_CPP_CHAR16_T)
3129     HAVE_CPP_CHAR16_T=1
3132 dnl Check for usable wchar_t (2 bytes, unsigned)
3133 dnl (we really don't need the unsignedness check anymore)
3134 dnl ========================================================
3136 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
3137     ac_cv_have_usable_wchar_v2,
3138     [AC_TRY_COMPILE([#include <stddef.h>
3139                      $configure_static_assert_macros],
3140                     [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
3141                      CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
3142                     ac_cv_have_usable_wchar_v2="yes",
3143                     ac_cv_have_usable_wchar_v2="no")])
3144 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
3145     AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
3146     HAVE_CPP_2BYTE_WCHAR_T=1
3147 elif test "$ac_cv_have_usable_char16_t" != "yes"; then
3148 dnl This is really gcc-only
3149 dnl Do this test using CXX only since some versions of gcc
3150 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
3151 dnl only have short-wchar support for c++.
3152 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
3154     _SAVE_CXXFLAGS=$CXXFLAGS
3155     CXXFLAGS="$CXXFLAGS -fshort-wchar"
3157     AC_CACHE_CHECK(for compiler -fshort-wchar option, 
3158         ac_cv_have_usable_wchar_option_v2,
3159         [AC_TRY_LINK([#include <stddef.h>
3160                       $configure_static_assert_macros],
3161                      [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
3162                       CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
3163                      ac_cv_have_usable_wchar_option_v2="yes",
3164                      ac_cv_have_usable_wchar_option_v2="no")])
3166     if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
3167         AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
3168         HAVE_CPP_2BYTE_WCHAR_T=1
3169         if test "$OS_TARGET" = Android; then
3170             WCHAR_CFLAGS="-fshort-wchar -Wl,--no-wchar-size-warning"
3171             CXXFLAGS="$CXXFLAGS -Wl,--no-wchar-size-warning"
3172             CFLAGS="$CFLAGS -Wl,--no-wchar-size-warning"
3173             DSO_LDOPTS="$DSO_LDOPTS -Wl,--no-wchar-size-warning"
3174         else
3175             WCHAR_CFLAGS="-fshort-wchar"
3176         fi
3177     else    
3178         CXXFLAGS=$_SAVE_CXXFLAGS
3179     fi
3182 AC_LANG_C
3184 dnl Check for .hidden assembler directive and visibility attribute.
3185 dnl Borrowed from glibc configure.in
3186 dnl ===============================================================
3187 if test "$GNU_CC"; then
3188   AC_CACHE_CHECK(for visibility(hidden) attribute,
3189                  ac_cv_visibility_hidden,
3190                  [cat > conftest.c <<EOF
3191                   int foo __attribute__ ((visibility ("hidden"))) = 1;
3193                   ac_cv_visibility_hidden=no
3194                   if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3195                     if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
3196                       ac_cv_visibility_hidden=yes
3197                     fi
3198                   fi
3199                   rm -f conftest.[cs]
3200                  ])
3201   if test "$ac_cv_visibility_hidden" = "yes"; then
3202     AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
3204     AC_CACHE_CHECK(for visibility(default) attribute,
3205                    ac_cv_visibility_default,
3206                    [cat > conftest.c <<EOF
3207                     int foo __attribute__ ((visibility ("default"))) = 1;
3209                     ac_cv_visibility_default=no
3210                     if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3211                       if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
3212                         ac_cv_visibility_default=yes
3213                       fi
3214                     fi
3215                     rm -f conftest.[cs]
3216                    ])
3217     if test "$ac_cv_visibility_default" = "yes"; then
3218       AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
3220       AC_CACHE_CHECK(for visibility pragma support,
3221                      ac_cv_visibility_pragma,
3222                      [cat > conftest.c <<EOF
3223 #pragma GCC visibility push(hidden)
3224                       int foo_hidden = 1;
3225 #pragma GCC visibility push(default)
3226                       int foo_default = 1;
3228                       ac_cv_visibility_pragma=no
3229                       if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3230                         if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
3231                           if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
3232                             ac_cv_visibility_pragma=yes
3233                           fi
3234                         fi
3235                       fi
3236                       rm -f conftest.[cs]
3237                     ])
3238       if test "$ac_cv_visibility_pragma" = "yes"; then
3239         AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
3240                        ac_cv_have_visibility_class_bug,
3241                        [cat > conftest.c <<EOF
3242 #pragma GCC visibility push(hidden)
3243 struct __attribute__ ((visibility ("default"))) TestStruct {
3244   static void Init();
3246 __attribute__ ((visibility ("default"))) void TestFunc() {
3247   TestStruct::Init();
3250                        ac_cv_have_visibility_class_bug=no
3251                        if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
3252                          ac_cv_have_visibility_class_bug=yes
3253                        else
3254                          if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
3255                            ac_cv_have_visibility_class_bug=yes
3256                          fi
3257                        fi
3258                        rm -rf conftest.{c,S}
3259                        ])
3261         AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
3262                        ac_cv_have_visibility_builtin_bug,
3263                        [cat > conftest.c <<EOF
3264 #pragma GCC visibility push(hidden)
3265 #pragma GCC visibility push(default)
3266 #include <string.h>
3267 #pragma GCC visibility pop
3269 __attribute__ ((visibility ("default"))) void Func() {
3270   char c[[100]];
3271   memset(c, 0, sizeof(c));
3274                        ac_cv_have_visibility_builtin_bug=no
3275                        if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
3276                          ac_cv_have_visibility_builtin_bug=yes
3277                        else
3278                          if test `grep -c "@PLT" conftest.S` = 0; then
3279                            ac_cv_visibility_builtin_bug=yes
3280                          fi
3281                        fi
3282                        rm -f conftest.{c,S}
3283                        ])
3284         if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
3285                 "$ac_cv_have_visibility_class_bug" = "no"; then
3286           VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
3287           WRAP_SYSTEM_INCLUDES=1
3288           STL_FLAGS='-I$(DIST)/stl_wrappers'
3289           WRAP_STL_INCLUDES=1
3290         else
3291           VISIBILITY_FLAGS='-fvisibility=hidden'
3292         fi # have visibility pragma bug
3293       fi   # have visibility pragma
3294     fi     # have visibility(default) attribute
3295   fi       # have visibility(hidden) attribute
3296 fi         # GNU_CC
3298 # visibility hidden flag for Sun Studio on Solaris
3299 if test "$SOLARIS_SUNPRO_CC"; then
3300 VISIBILITY_FLAGS='-xldscope=hidden'
3301 fi         # Sun Studio on Solaris
3303 AC_SUBST(WRAP_SYSTEM_INCLUDES)
3304 AC_SUBST(VISIBILITY_FLAGS)
3306 dnl Check for __force_align_arg_pointer__ for SSE2 on gcc
3307 dnl ========================================================
3308 if test "$GNU_CC"; then
3309   CFLAGS_save="${CFLAGS}"
3310   CFLAGS="${CFLAGS} -Werror"
3311   AC_CACHE_CHECK(for __force_align_arg_pointer__ attribute,
3312                  ac_cv_force_align_arg_pointer,
3313                  [AC_TRY_COMPILE([__attribute__ ((__force_align_arg_pointer__)) void test() {}],
3314                                  [],
3315                                  ac_cv_force_align_arg_pointer="yes",
3316                                  ac_cv_force_align_arg_pointer="no")])
3317   CFLAGS="${CFLAGS_save}"
3318   if test "$ac_cv_force_align_arg_pointer" = "yes"; then
3319     HAVE_GCC_ALIGN_ARG_POINTER=1
3320   else
3321     HAVE_GCC_ALIGN_ARG_POINTER=
3322   fi
3324 AC_SUBST(HAVE_GCC_ALIGN_ARG_POINTER)
3326 dnl Checks for header files.
3327 dnl ========================================================
3328 AC_HEADER_DIRENT
3329 case "$target_os" in
3330 freebsd*)
3331 # for stuff like -lXshm
3332     CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
3333     ;;
3334 esac
3335 AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
3336 AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
3337 AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
3338 AC_CHECK_HEADERS(malloc.h)
3339 AC_CHECK_HEADERS(X11/XKBlib.h)
3340 AC_CHECK_HEADERS(io.h)
3342 dnl These are all the places some variant of statfs can be hiding.
3343 AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
3345 dnl Quota support
3346 AC_CHECK_HEADERS(sys/quota.h)
3347 AC_CHECK_HEADERS(linux/quota.h)
3349 dnl Try for MMX support
3350 dnl NB - later gcc versions require -mmmx for this header to be successfully
3351 dnl included (or another option which implies it, such as -march=pentium-mmx)
3352 AC_CHECK_HEADERS(mmintrin.h)
3354 dnl Check whether the compiler supports the new-style C++ standard
3355 dnl library headers (i.e. <new>) or needs the old "new.h"
3356 AC_LANG_CPLUSPLUS
3357 NEW_H=new.h
3358 AC_CHECK_HEADER(new, [NEW_H=new])
3359 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
3360 AC_LANG_C
3362 AC_ARG_ENABLE(dtrace,
3363               [  --enable-dtrace         build with dtrace support if available (default=no)],
3364               [enable_dtrace="yes"],)
3365 if test "x$enable_dtrace" = "xyes"; then
3366   AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
3367   if test -n "$HAVE_DTRACE"; then
3368       AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
3369   else
3370       AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
3371   fi
3373 AC_SUBST(HAVE_DTRACE)
3375 case $target in
3376 *-aix4.3*|*-aix5*)
3377         ;;
3379         AC_CHECK_HEADERS(sys/cdefs.h)
3380         ;;
3381 esac
3383 dnl Checks for libraries.
3384 dnl ========================================================
3385 case $target in
3386 *-hpux11.*)
3387         ;;
3389         AC_CHECK_LIB(c_r, gethostbyname_r)
3390         ;;
3391 esac
3393 dnl We don't want to link with libdl even if it's present on OS X, since
3394 dnl it's not used and not part of the default installation.
3395 dnl The same goes for BeOS. OS/2 has dlfcn in libc.
3396 dnl We don't want to link against libm or libpthread on Darwin since
3397 dnl they both are just symlinks to libSystem and explicitly linking
3398 dnl against libSystem causes issues when debugging (see bug 299601).
3399 case $target in
3400 *-darwin*)
3401     ;;
3402 *-beos*)
3403     ;;
3404 *-os2*)
3405     ;;
3407     AC_SEARCH_LIBS(dlopen, dl, 
3408         AC_CHECK_HEADER(dlfcn.h, 
3409         AC_DEFINE(HAVE_DLOPEN)))
3410     ;;
3411 esac
3413 _SAVE_CFLAGS="$CFLAGS"
3414 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3415 AC_CHECK_FUNCS(dladdr)
3416 CFLAGS="$_SAVE_CFLAGS"
3418 if test ! "$GNU_CXX"; then
3420     case $target in
3421     *-aix*)
3422         AC_CHECK_LIB(C_r, demangle)
3423         ;;
3424      *)
3425         AC_CHECK_LIB(C, demangle)
3426         ;;
3427      esac
3430 dnl OS/2 has socket in libc.
3431 case $target in
3432 *-os2*)
3433     ;;
3435     AC_CHECK_LIB(socket, socket)
3436 esac
3438 dnl ========================================================
3439 dnl Check whether we can compile code for Core Text
3440 dnl (available on Mac OS X 10.5 or later)
3441 dnl ========================================================
3442 case "$target" in
3443 *-darwin*)
3444   AC_MSG_CHECKING([for Core Text])
3445   AC_TRY_COMPILE([#include <ApplicationServices/ApplicationServices.h>],
3446                  [CTLineRef lineRef;],
3447                   ac_cv_have_core_text="yes",
3448                   ac_cv_have_core_text="no")
3449   AC_MSG_RESULT([$ac_cv_have_core_text])
3451   if test "$ac_cv_have_core_text" = "no"; then
3452     AC_MSG_ERROR([Core Text is required (available on Mac OS X 10.5 or later).])
3453   fi
3454   ;;
3455 esac
3457 XLDFLAGS="$X_LIBS"
3458 XLIBS="$X_EXTRA_LIBS"
3460 dnl ========================================================
3461 dnl Checks for X libraries.
3462 dnl Ordering is important.
3463 dnl Xt is dependent upon SM as of X11R6
3464 dnl ========================================================
3465 if test "$no_x" = "yes"; then
3466     AC_DEFINE(NO_X11)
3467 else
3468     AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3469         XLIBS="-lX11 $XLIBS"
3470         _SAVE_LDFLAGS="$LDFLAGS"
3471         LDFLAGS="$XLDFLAGS $LDFLAGS"
3472         AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3473                 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3474         AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3475                 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3476      
3477         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3478         unset ac_cv_lib_Xt_XtFree
3479             AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3480             AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS) 
3481         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3482                     [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3483         ])
3485     # AIX needs the motif library linked before libXt to prevent
3486     # crashes in plugins linked against Motif - Bug #98892
3487     case "${target_os}" in
3488     aix*)
3489         XT_LIBS="-lXm $XT_LIBS"
3490         ;;
3491     esac
3493     dnl ========================================================
3494     dnl = Check for XShm
3495     dnl ========================================================
3496     AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3497         $XLIBS $XEXT_LIBS)
3498     AC_CHECK_HEADER(X11/extensions/XShm.h)
3499     if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" &&
3500         test -n "$_HAVE_XSHM_XEXT"; then
3501         AC_DEFINE(HAVE_XSHM)
3502     fi
3504     dnl ========================================================
3505     dnl = Check for Xss
3506     dnl ========================================================
3507     AC_CHECK_HEADER(X11/extensions/scrnsaver.h,
3508         AC_CHECK_LIB(Xss, XScreenSaverQueryInfo,
3509             [XSS_LIBS="-lXss $XEXT_LIBS $XLIBS"
3510              AC_DEFINE(HAVE_LIBXSS)],, $XEXT_LIBS $XLIBS))
3512     dnl ========================================================
3513     dnl = Check for XIE
3514     dnl ========================================================
3515     AC_CHECK_LIB(XIE, XieFloGeometry, [MOZ_XIE_LIBS="-lXIE"],,
3516         $XLIBS $XEXT_LIBS)
3517     AC_CHECK_HEADER(X11/extensions/XIElib.h)
3519     if test "$MOZ_XIE_LIBS"; then
3520         dnl ====================================================
3521         dnl = If XIE is present and is desired, turn it on
3522         dnl ====================================================
3523         case $target in
3524             *-hpux*)
3525                 ;;
3526             *)
3527                 HAVE_XIE=1
3528                 ;;
3529         esac
3530     fi
3532         LDFLAGS="$_SAVE_LDFLAGS"
3534     dnl ========================================================
3535     dnl = Check for freetype2 and its functionality
3536     dnl ========================================================
3537     AC_CHECK_FT2(6.1.0, [_HAVE_FREETYPE2=1], [_HAVE_FREETYPE2=])
3539     if test "$_HAVE_FREETYPE2"; then
3540         _SAVE_LIBS="$LIBS"
3541         _SAVE_CFLAGS="$CFLAGS"
3542         LIBS="$LIBS $FT2_LIBS"
3543         CFLAGS="$CFLAGS $FT2_CFLAGS"
3545         AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
3546             ac_cv_member_FT_Bitmap_Size_y_ppem,
3547             [AC_TRY_COMPILE([#include <ft2build.h>
3548                              #include FT_FREETYPE_H],
3549                             [FT_Bitmap_Size s;
3550                              if (sizeof s.y_ppem) return 0;
3551                              return 1],
3552                             ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
3553                             ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
3554         if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
3555             HAVE_FT_BITMAP_SIZE_Y_PPEM=1
3556         else
3557             HAVE_FT_BITMAP_SIZE_Y_PPEM=0
3558         fi
3559         AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
3560                            $HAVE_FT_BITMAP_SIZE_Y_PPEM,
3561                            [FT_Bitmap_Size structure includes y_ppem field])
3563         AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
3565         LIBS="$_SAVE_LIBS"
3566         CFLAGS="$_SAVE_CFLAGS"
3567     fi
3569 fi # $no_x
3571 AC_SUBST(XCFLAGS)
3572 AC_SUBST(XLDFLAGS)
3573 AC_SUBST(XLIBS)
3574 AC_SUBST(XEXT_LIBS)
3575 AC_SUBST(XT_LIBS)
3576 AC_SUBST(XSS_LIBS)
3578 AC_MSG_CHECKING(for ARM SIMD support in compiler)
3579 AC_TRY_COMPILE([],
3580                [asm("uqadd8 r1, r1, r2");],
3581                result="yes", result="no")
3582 AC_MSG_RESULT("$result")
3583 if test "$result" = "yes"; then
3584     AC_DEFINE(HAVE_ARM_SIMD)
3585     HAVE_ARM_SIMD=1
3587 AC_SUBST(HAVE_ARM_SIMD)
3589 AC_MSG_CHECKING(for ARM NEON support in compiler)
3590 _SAVE_CFLAGS="$CFLAGS"
3591 if test "$GNU_CC"; then
3592   # gcc needs -mfpu=neon to recognize NEON instructions
3593   CFLAGS="$CFLAGS -mfpu=neon -mfloat-abi=softfp"
3595 AC_TRY_COMPILE([],
3596                [asm("vadd.i8 d0, d0, d0");],
3597                result="yes", result="no")
3598 AC_MSG_RESULT("$result")
3599 if test "$result" = "yes"; then
3600     AC_DEFINE(HAVE_ARM_NEON)
3601     HAVE_ARM_NEON=1
3603 CFLAGS="$_SAVE_CFLAGS"
3604 AC_SUBST(HAVE_ARM_NEON)
3606 dnl ========================================================
3607 dnl = pthread support
3608 dnl = Start by checking whether the system support pthreads
3609 dnl ========================================================
3610 case "$target_os" in
3611 darwin*)
3612     USE_PTHREADS=1
3613     ;;
3615     MOZ_CHECK_PTHREADS(pthreads,
3616         USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3617         MOZ_CHECK_PTHREADS(pthread,
3618             USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3619             MOZ_CHECK_PTHREADS(c_r,
3620                 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3621                 MOZ_CHECK_PTHREADS(c,
3622                     USE_PTHREADS=1
3623                 )
3624             )
3625         )
3626     )
3627     ;;
3628 esac
3630 dnl ========================================================
3631 dnl Check the command line for --with-pthreads 
3632 dnl ========================================================
3633 MOZ_ARG_WITH_BOOL(pthreads,
3634 [  --with-pthreads         Force use of system pthread library with NSPR ],
3635 [ if test "$USE_PTHREADS"x = x; then
3636     AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3637 fi],
3638     USE_PTHREADS=
3639     _PTHREAD_LDFLAGS=
3642 dnl ========================================================
3643 dnl Do the platform specific pthread hackery
3644 dnl ========================================================
3645 if test "$USE_PTHREADS"x != x
3646 then
3647         dnl
3648         dnl See if -pthread is supported.
3649         dnl
3650         rm -f conftest*
3651         ac_cv_have_dash_pthread=no
3652         AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3653         echo 'int main() { return 0; }' | cat > conftest.c
3654         ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3655         if test $? -eq 0; then
3656                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3657                         ac_cv_have_dash_pthread=yes
3658                 case "$target_os" in
3659                 freebsd*)
3660 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3661                 ;;
3662                 *)
3663                             CFLAGS="$CFLAGS -pthread"
3664                             CXXFLAGS="$CXXFLAGS -pthread"
3665                 ;;
3666                 esac
3667                 fi
3668         fi
3669         rm -f conftest*
3670     AC_MSG_RESULT($ac_cv_have_dash_pthread)
3672         dnl
3673         dnl See if -pthreads is supported.
3674         dnl
3675     ac_cv_have_dash_pthreads=no
3676     if test "$ac_cv_have_dash_pthread" = "no"; then
3677             AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3678         echo 'int main() { return 0; }' | cat > conftest.c
3679             ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3680         if test $? -eq 0; then
3681                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3682                             ac_cv_have_dash_pthreads=yes
3683                             CFLAGS="$CFLAGS -pthreads"
3684                             CXXFLAGS="$CXXFLAGS -pthreads"
3685                     fi
3686             fi
3687             rm -f conftest*
3688         AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3689     fi
3691         case "$target" in
3692             *-*-freebsd*)
3693                         AC_DEFINE(_REENTRANT)
3694                         AC_DEFINE(_THREAD_SAFE)
3695                         dnl -pthread links in -lc_r, so don't specify it explicitly.
3696                         if test "$ac_cv_have_dash_pthread" = "yes"; then
3697                                 _PTHREAD_LDFLAGS="-pthread"
3698                         else
3699                                 _PTHREAD_LDFLAGS="-lc_r"
3700                         fi
3701                         ;;
3703             *-*-openbsd*|*-*-bsdi*)
3704                         AC_DEFINE(_REENTRANT)
3705                         AC_DEFINE(_THREAD_SAFE)
3706                         dnl -pthread links in -lc_r, so don't specify it explicitly.
3707                         if test "$ac_cv_have_dash_pthread" = "yes"; then
3708                 _PTHREAD_LDFLAGS="-pthread"
3709                         fi
3710                         ;;
3712             *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
3713                         AC_DEFINE(_REENTRANT) 
3714                         ;;
3716             *-*-nto*) 
3717                         AC_DEFINE(_REENTRANT) 
3718                         ;;
3720             *-aix4.3*|*-aix5*)
3721                         AC_DEFINE(_REENTRANT) 
3722                         ;;
3724             *-hpux11.*)
3725                         AC_DEFINE(_REENTRANT) 
3726                         ;;
3728             alpha*-*-osf*)
3729                         AC_DEFINE(_REENTRANT)
3730                         ;;
3732             *-*-solaris*) 
3733                         AC_DEFINE(_REENTRANT)
3734                         if test "$SOLARIS_SUNPRO_CC"; then
3735                                 CFLAGS="$CFLAGS -mt" 
3736                                 CXXFLAGS="$CXXFLAGS -mt" 
3737                         fi
3738                         ;;
3739         esac
3740     LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3743 dnl ========================================================
3744 dnl See if mmap sees writes
3745 dnl For cross compiling, just define it as no, which is a safe default
3746 dnl ========================================================
3747 AC_MSG_CHECKING(whether mmap() sees write()s)
3749 changequote(,)
3750 mmap_test_prog='
3751     #include <stdlib.h>
3752     #include <unistd.h>
3753     #include <sys/mman.h>
3754     #include <sys/types.h>
3755     #include <sys/stat.h>
3756     #include <fcntl.h>
3758     char fname[] = "conftest.file";
3759     char zbuff[1024]; /* Fractional page is probably worst case */
3761     int main() {
3762         char *map;
3763         int fd;
3764         int i;
3765         unlink(fname);
3766         fd = open(fname, O_RDWR | O_CREAT, 0660);
3767         if(fd<0) return 1;
3768         unlink(fname);
3769         write(fd, zbuff, sizeof(zbuff));
3770         lseek(fd, 0, SEEK_SET);
3771         map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
3772         if(map==(char*)-1) return 2;
3773         for(i=0; fname[i]; i++) {
3774             int rc = write(fd, &fname[i], 1);
3775             if(map[i]!=fname[i]) return 4;
3776         }
3777         return 0;
3778     }
3780 changequote([,])
3782 AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
3784 AC_MSG_RESULT("$result")
3786 if test "$result" = "no"; then
3787     AC_DEFINE(MMAP_MISSES_WRITES)
3791 dnl Checks for library functions.
3792 dnl ========================================================
3793 AC_PROG_GCC_TRADITIONAL
3794 AC_FUNC_MEMCMP
3795 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 truncate64 statvfs64 setbuf isatty)
3796 AC_CHECK_FUNCS(flockfile getpagesize)
3797 AC_CHECK_FUNCS(localtime_r strtok_r)
3799 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock, and -lrt
3800 _SAVE_LDFLAGS=$LDFLAGS
3801 LDFLAGS="$LDFLAGS -lrt"
3802 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC) and -lrt,
3803                ac_cv_have_clock_monotonic,
3804                [AC_TRY_LINK([#include <time.h>],
3805                             [ struct timespec ts;
3806                               clock_gettime(CLOCK_MONOTONIC, &ts); ],
3807                             ac_cv_have_clock_monotonic=yes,
3808                             ac_cv_have_clock_monotonic=no)])
3809 LDFLAGS=$_SAVE_LDFLAGS
3810 if test "$ac_cv_have_clock_monotonic" = "yes"; then
3811     HAVE_CLOCK_MONOTONIC=1
3812     REALTIME_LIBS=-lrt
3813     AC_DEFINE(HAVE_CLOCK_MONOTONIC)
3814     AC_SUBST(HAVE_CLOCK_MONOTONIC)
3815     AC_SUBST(REALTIME_LIBS)
3818 dnl check for wcrtomb/mbrtowc
3819 dnl =======================================================================
3820 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3821 AC_LANG_SAVE
3822 AC_LANG_CPLUSPLUS
3823 AC_CACHE_CHECK(for wcrtomb,
3824     ac_cv_have_wcrtomb,
3825     [AC_TRY_LINK([#include <wchar.h>],
3826                  [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3827                  ac_cv_have_wcrtomb="yes",
3828                  ac_cv_have_wcrtomb="no")])
3829 if test "$ac_cv_have_wcrtomb" = "yes"; then
3830     AC_DEFINE(HAVE_WCRTOMB)
3832 AC_CACHE_CHECK(for mbrtowc,
3833     ac_cv_have_mbrtowc,
3834     [AC_TRY_LINK([#include <wchar.h>],
3835                  [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3836                  ac_cv_have_mbrtowc="yes",
3837                  ac_cv_have_mbrtowc="no")])
3838 if test "$ac_cv_have_mbrtowc" = "yes"; then
3839     AC_DEFINE(HAVE_MBRTOWC)
3841 AC_LANG_RESTORE
3844 AC_CACHE_CHECK(
3845     [for res_ninit()],
3846     ac_cv_func_res_ninit,
3847     [AC_TRY_LINK([
3848         #ifdef linux
3849         #define _BSD_SOURCE 1
3850         #endif
3851         #include <resolv.h>
3852         ],
3853         [int foo = res_ninit(&_res);],
3854         [ac_cv_func_res_ninit=yes],
3855         [ac_cv_func_res_ninit=no])
3856     ])
3858 if test "$ac_cv_func_res_ninit" = "yes"; then
3859     AC_DEFINE(HAVE_RES_NINIT)
3860 dnl must add the link line we do something as foolish as this... dougt
3861 dnl else
3862 dnl    AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3863 dnl        AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3866 AC_LANG_CPLUSPLUS
3867 AC_CACHE_CHECK(
3868     [for gnu_get_libc_version()],
3869     ac_cv_func_gnu_get_libc_version,
3870     [AC_TRY_LINK([
3871         #ifdef HAVE_GNU_LIBC_VERSION_H
3872         #include <gnu/libc-version.h>
3873         #endif
3874         ],
3875         [const char *glibc_version = gnu_get_libc_version();],
3876         [ac_cv_func_gnu_get_libc_version=yes],
3877         [ac_cv_func_gnu_get_libc_version=no] 
3878         )]
3879     )
3881 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3882     AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3885 case $target_os in
3886     os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|winmo*|beos*)
3887         ;;
3888     *)
3889     
3890 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3891     AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3892         AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3893 _SAVE_LIBS=$LIBS
3894 LIBS="$LIBS $_ICONV_LIBS"
3895 AC_CACHE_CHECK(
3896     [for iconv()],
3897     ac_cv_func_iconv,
3898     [AC_TRY_LINK([
3899         #include <stdlib.h>
3900         #include <iconv.h>
3901         ],
3902         [
3903             iconv_t h = iconv_open("", "");
3904             iconv(h, NULL, NULL, NULL, NULL);
3905             iconv_close(h);
3906         ],
3907         [ac_cv_func_iconv=yes],
3908         [ac_cv_func_iconv=no] 
3909         )]
3910     )
3911 if test "$ac_cv_func_iconv" = "yes"; then
3912     AC_DEFINE(HAVE_ICONV)
3913     DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3914     LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3915     LIBICONV="$_ICONV_LIBS"
3916     AC_CACHE_CHECK(
3917         [for iconv() with const input],
3918         ac_cv_func_const_iconv,
3919         [AC_TRY_COMPILE([
3920             #include <stdlib.h>
3921             #include <iconv.h>
3922             ],
3923             [
3924                 const char *input = "testing";
3925                 iconv_t h = iconv_open("", "");
3926                 iconv(h, &input, NULL, NULL, NULL);
3927                 iconv_close(h);
3928             ],
3929             [ac_cv_func_const_iconv=yes],
3930             [ac_cv_func_const_iconv=no] 
3931             )]
3932         )
3933     if test "$ac_cv_func_const_iconv" = "yes"; then
3934         AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3935     fi
3937 LIBS=$_SAVE_LIBS
3939     ;;
3940 esac
3942 AM_LANGINFO_CODESET
3944 AC_LANG_C
3946 dnl **********************
3947 dnl *** va_copy checks ***
3948 dnl **********************
3949 dnl we currently check for all three va_copy possibilities, so we get
3950 dnl all results in config.log for bug reports.
3951 AC_MSG_CHECKING(for an implementation of va_copy())
3952 AC_CACHE_VAL(ac_cv_va_copy,[
3953     AC_TRY_RUN([
3954         #include <stdarg.h>
3955         void f (int i, ...) {
3956             va_list args1, args2;
3957             va_start (args1, i);
3958             va_copy (args2, args1);
3959             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3960                 exit (1);
3961             va_end (args1); va_end (args2);
3962         }
3963         int main() { f (0, 42); return 0; }],
3964         ac_cv_va_copy=yes,
3965         ac_cv_va_copy=no,
3966         ac_cv_va_copy=no
3967     )
3969 AC_MSG_RESULT($ac_cv_va_copy)
3970 AC_MSG_CHECKING(for an implementation of __va_copy())
3971 AC_CACHE_VAL(ac_cv___va_copy,[
3972     AC_TRY_RUN([
3973         #include <stdarg.h>
3974         void f (int i, ...) {
3975             va_list args1, args2;
3976             va_start (args1, i);
3977             __va_copy (args2, args1);
3978             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3979                 exit (1);
3980             va_end (args1); va_end (args2);
3981         }
3982         int main() { f (0, 42); return 0; }],
3983         ac_cv___va_copy=yes,
3984         ac_cv___va_copy=no,
3985         ac_cv___va_copy=no
3986     )
3988 AC_MSG_RESULT($ac_cv___va_copy)
3989 AC_MSG_CHECKING(whether va_lists can be copied by value)
3990 AC_CACHE_VAL(ac_cv_va_val_copy,[
3991     AC_TRY_RUN([
3992         #include <stdarg.h>
3993         void f (int i, ...) {
3994             va_list args1, args2;
3995             va_start (args1, i);
3996             args2 = args1;
3997             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3998                 exit (1);
3999             va_end (args1); va_end (args2);
4000         }
4001         int main() { f (0, 42); return 0; }],
4002         ac_cv_va_val_copy=yes,
4003         ac_cv_va_val_copy=no,
4004         ac_cv_va_val_copy=yes
4005     )
4007 if test "x$ac_cv_va_copy" = "xyes"; then
4008     AC_DEFINE(VA_COPY, va_copy)
4009     AC_DEFINE(HAVE_VA_COPY)
4010 elif test "x$ac_cv___va_copy" = "xyes"; then
4011     AC_DEFINE(VA_COPY, __va_copy)
4012     AC_DEFINE(HAVE_VA_COPY)
4015 if test "x$ac_cv_va_val_copy" = "xno"; then
4016    AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
4018 AC_MSG_RESULT($ac_cv_va_val_copy)
4020 dnl Check for dll-challenged libc's.
4021 dnl This check is apparently only needed for Linux.
4022 case "$target" in
4023         *-linux*)
4024             dnl ===================================================================
4025             _curdir=`pwd`
4026             export _curdir
4027             rm -rf conftest* _conftest
4028             mkdir _conftest
4029             cat >> conftest.C <<\EOF
4030 #include <stdio.h>
4031 #include <link.h>
4032 #include <dlfcn.h>
4033 #ifdef _dl_loaded
4034 void __dump_link_map(void) {
4035   struct link_map *map = _dl_loaded;
4036   while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
4038 int main() {
4039   dlopen("./conftest1.so",RTLD_LAZY);
4040   dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
4041   dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
4042   dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
4043   __dump_link_map();
4045 #else
4046 /* _dl_loaded isn't defined, so this should be either a libc5 (glibc1) system, or a glibc2 system that doesn't have the multiple load bug (i.e., RH6.0).*/
4047 int main() { printf("./conftest1.so\n"); }
4048 #endif
4051             $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
4053             cat >> conftest1.C <<\EOF
4054 #include <stdio.h>
4055 void foo(void) {printf("foo in dll called\n");}
4057             ${CXX-g++} -fPIC -c -g conftest1.C
4058             ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
4059             ${CXX-g++} -g conftest.C -o conftest -ldl
4060             cp -f conftest1.so conftest _conftest
4061             cd _conftest
4062             if test `./conftest | grep conftest1.so | wc -l` -gt 1
4063             then
4064                 echo
4065                 echo "*** Your libc has a bug that can result in loading the same dynamic"
4066                 echo "*** library multiple times.  This bug is known to be fixed in glibc-2.0.7-32"
4067                 echo "*** or later.  However, if you choose not to upgrade, the only effect"
4068                 echo "*** will be excessive memory usage at runtime."
4069                 echo
4070             fi
4071             cd ${_curdir}
4072             rm -rf conftest* _conftest
4073             dnl ===================================================================
4074             ;;
4075 esac
4077 dnl ===================================================================
4078 dnl ========================================================
4079 dnl Put your C++ language/feature checks below
4080 dnl ========================================================
4081 AC_LANG_CPLUSPLUS
4083 ARM_ABI_PREFIX=
4084 HAVE_GCC3_ABI=
4085 if test "$GNU_CC"; then
4086   if test "$CPU_ARCH" = "arm" ; then
4087     AC_CACHE_CHECK(for ARM EABI,
4088         ac_cv_gcc_arm_eabi,
4089         [AC_TRY_COMPILE([],
4090                         [
4091 #if defined(__ARM_EABI__)
4092   return 0;
4093 #else
4094 #error Not ARM EABI.
4095 #endif
4096                         ],
4097                         ac_cv_gcc_arm_eabi="yes",
4098                         ac_cv_gcc_arm_eabi="no")])
4099     if test "$ac_cv_gcc_arm_eabi" = "yes"; then
4100         HAVE_ARM_EABI=1
4101         ARM_ABI_PREFIX=eabi-
4102     else
4103         ARM_ABI_PREFIX=oabi-
4104     fi
4105   fi
4107   AC_CACHE_CHECK(for gcc 3.0 ABI,
4108       ac_cv_gcc_three_abi,
4109       [AC_TRY_COMPILE([],
4110                       [
4111 #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
4112   return 0;
4113 #else
4114 #error Not gcc3.
4115 #endif
4116                       ],
4117                       ac_cv_gcc_three_abi="yes",
4118                       ac_cv_gcc_three_abi="no")])
4119   if test "$ac_cv_gcc_three_abi" = "yes"; then
4120       TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
4121       HAVE_GCC3_ABI=1
4122   else
4123       TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc2}"
4124   fi
4126 AC_SUBST(HAVE_GCC3_ABI)
4129 AC_CACHE_CHECK(for C++ \"explicit\" keyword,
4130                ac_cv_cpp_explicit,
4131                [AC_TRY_COMPILE(class X {
4132                                public: explicit X(int i) : i_(i) {}
4133                                private: int i_;
4134                                };,
4135                                X x(3);,
4136                                ac_cv_cpp_explicit=yes,
4137                                ac_cv_cpp_explicit=no)])
4138 if test "$ac_cv_cpp_explicit" = yes ; then
4139    AC_DEFINE(HAVE_CPP_EXPLICIT)
4142 AC_CACHE_CHECK(for C++ \"typename\" keyword,
4143                ac_cv_cpp_typename,
4144                [AC_TRY_COMPILE(class param {
4145                                public:
4146                                    typedef unsigned long num_type;
4147                                };
4149                                template <class T> class tplt {
4150                                public:
4151                                    typedef typename T::num_type t_num_type;
4152                                    t_num_type foo(typename T::num_type num) {
4153                                        return num;
4154                                    }
4155                                };,
4156                                tplt<param> A;
4157                                A.foo(0);,
4158                                ac_cv_cpp_typename=yes,
4159                                ac_cv_cpp_typename=no)])
4160 if test "$ac_cv_cpp_typename" = yes ; then
4161    AC_DEFINE(HAVE_CPP_TYPENAME)
4164 dnl Check for support of modern template specialization syntax
4165 dnl Test code and requirement from scc@netscape.com.
4166 dnl Autoconf cut-and-paste job by waterson@netscape.com
4167 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
4168                ac_cv_cpp_modern_specialize_template_syntax,
4169                [AC_TRY_COMPILE(template <class T> struct X { int a; };
4170                                class Y {};
4171                                template <> struct X<Y> { double a; };,
4172                                X<int> int_x;
4173                                X<Y> y_x;,
4174                                ac_cv_cpp_modern_specialize_template_syntax=yes,
4175                                ac_cv_cpp_modern_specialize_template_syntax=no)])
4176 if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
4177   AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
4181 dnl Some compilers support only full specialization, and some don't.
4182 AC_CACHE_CHECK(whether partial template specialization works,
4183                ac_cv_cpp_partial_specialization,
4184                [AC_TRY_COMPILE(template <class T> class Foo {};
4185                                template <class T> class Foo<T*> {};,
4186                                return 0;,
4187                                ac_cv_cpp_partial_specialization=yes,
4188                                ac_cv_cpp_partial_specialization=no)])
4189 if test "$ac_cv_cpp_partial_specialization" = yes ; then
4190   AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
4193 dnl Some compilers have limited support for operators with templates;
4194 dnl specifically, it is necessary to define derived operators when a base
4195 dnl class's operator declaration should suffice.
4196 AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
4197                ac_cv_need_derived_template_operators,
4198                [AC_TRY_COMPILE([template <class T> class Base { };
4199                                 template <class T>
4200                                 Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
4201                                 template <class T> class Derived : public Base<T> { };],
4202                                [Derived<char> a, b;
4203                                 Base<char> c = a + b;
4204                                 return 0;],
4205                                ac_cv_need_derived_template_operators=no,
4206                                ac_cv_need_derived_template_operators=yes)])
4207 if test "$ac_cv_need_derived_template_operators" = yes ; then
4208   AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
4212 dnl Some compilers have trouble detecting that a template class
4213 dnl that derives from another template is actually an instance
4214 dnl of the base class. This test checks for that.
4215 AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
4216                ac_cv_need_cpp_template_cast_to_base,
4217                [AC_TRY_COMPILE([template <class T> class Base { };
4218                                 template <class T> class Derived : public Base<T> { };
4219                                 template <class T> int foo(const Base<T>&) { return 0; }],
4220                                [Derived<char> bar; return foo(bar);],
4221                                ac_cv_need_cpp_template_cast_to_base=no,
4222                                ac_cv_need_cpp_template_cast_to_base=yes)])
4223 if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
4224   AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
4227 dnl Some compilers have trouble resolving the ambiguity between two
4228 dnl functions whose arguments differ only by cv-qualifications.
4229 AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
4230                ac_cv_can_resolve_const_ambiguity,
4231                [AC_TRY_COMPILE([
4232                                 template <class T> class ptrClass {
4233                                   public: T* ptr;
4234                                 };
4236                                 template <class T> T* a(ptrClass<T> *arg) {
4237                                   return arg->ptr;
4238                                 }
4240                                 template <class T>
4241                                 const T* a(const ptrClass<T> *arg) {
4242                                   return arg->ptr;
4243                                 }
4244                                ],
4245                                [ ptrClass<int> i;
4246                                  a(&i); ],
4247                                ac_cv_can_resolve_const_ambiguity=yes,
4248                                ac_cv_can_resolve_const_ambiguity=no)])
4249 if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
4250   AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
4254 dnl We don't do exceptions on unix.  The only reason this used to be here
4255 dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses 
4256 dnl exceptions.  But, we turn exceptions off by default and this test breaks.
4257 dnl So im commenting this out until someone writes some artificial 
4258 dnl intelligence to detect not only if the compiler has exceptions, but if 
4259 dnl they are enabled as well.
4260 dnl 
4261 dnl AC_CACHE_CHECK(for C++ \"exceptions\",
4262 dnl                ac_cv_cpp_exceptions,
4263 dnl                [AC_TRY_COMPILE(class X { public: X() {} };
4264 dnl                                static void F() { throw X(); },
4265 dnl                                try { F(); } catch(X & e) { },
4266 dnl                                ac_cv_cpp_exceptions=yes,
4267 dnl                                ac_cv_cpp_exceptions=no)])
4268 dnl if test $ac_cv_cpp_exceptions = yes ; then
4269 dnl    AC_DEFINE(HAVE_CPP_EXCEPTIONS)
4270 dnl fi
4272 dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
4273 dnl supports it well enough to allow us to use it to change access, but not
4274 dnl to resolve ambiguity. The next two tests determine how well the |using|
4275 dnl keyword is supported.
4277 dnl Check to see if we can change access with |using|.  Test both a
4278 dnl legal and an illegal example.
4279 AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
4280                ac_cv_cpp_access_changing_using2,
4281                [AC_TRY_COMPILE(
4282                    class A { protected: int foo() { return 0; } };
4283                    class B : public A { public: using A::foo; };,
4284                    B b; return b.foo();,
4285                    [AC_TRY_COMPILE(
4286                        class A { public: int foo() { return 1; } };
4287                        class B : public A { private: using A::foo; };,
4288                        B b; return b.foo();,
4289                        ac_cv_cpp_access_changing_using2=no,
4290                        ac_cv_cpp_access_changing_using2=yes)],
4291                    ac_cv_cpp_access_changing_using2=no)])
4292 if test "$ac_cv_cpp_access_changing_using2" = yes ; then
4293    AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
4296 dnl Check to see if we can resolve ambiguity with |using|.
4297 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
4298                ac_cv_cpp_ambiguity_resolving_using,
4299                [AC_TRY_COMPILE(class X { 
4300                                  public: int go(const X&) {return 3;}
4301                                          int jo(const X&) {return 3;}
4302                                };
4303                                class Y : public X {
4304                                  public:  int go(int) {return 2;}
4305                                           int jo(int) {return 2;}
4306                                           using X::jo;
4307                                  private: using X::go;
4308                                };,
4309                                X x; Y y; y.jo(x);,
4310                                ac_cv_cpp_ambiguity_resolving_using=yes,
4311                                ac_cv_cpp_ambiguity_resolving_using=no)])
4312 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
4313    AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
4316 dnl Check to see if the |std| namespace is supported. If so, we'll want
4317 dnl to qualify any standard library calls with "std::" to ensure that
4318 dnl those functions can be resolved.
4319 AC_CACHE_CHECK(for \"std::\" namespace,
4320                ac_cv_cpp_namespace_std,
4321                [AC_TRY_COMPILE([#include <algorithm>],
4322                                [return std::min(0, 1);],
4323                                ac_cv_cpp_namespace_std=yes,
4324                                ac_cv_cpp_namespace_std=no)])
4325 if test "$ac_cv_cpp_namespace_std" = yes ; then
4326    AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
4329 dnl Older compilers are overly ambitious with respect to using the standard
4330 dnl template library's |operator!=()| when |operator==()| is defined. In
4331 dnl which case, defining |operator!=()| in addition to |operator==()| causes
4332 dnl ambiguity at compile-time. This test checks for that case.
4333 AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
4334                ac_cv_cpp_unambiguous_std_notequal,
4335                [AC_TRY_COMPILE([#include <algorithm>
4336                                 struct T1 {};
4337                                 int operator==(const T1&, const T1&) { return 0; }
4338                                 int operator!=(const T1&, const T1&) { return 0; }],
4339                                [T1 a,b; return a != b;],
4340                                ac_cv_cpp_unambiguous_std_notequal=unambiguous,
4341                                ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
4342 if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
4343   AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
4347 AC_CACHE_CHECK(for C++ reinterpret_cast,
4348                ac_cv_cpp_reinterpret_cast,
4349                [AC_TRY_COMPILE(struct X { int i; };
4350                                struct Y { int i; };,
4351                                X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
4352                                ac_cv_cpp_reinterpret_cast=yes,
4353                                ac_cv_cpp_reinterpret_cast=no)])
4354 if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
4355    AC_DEFINE(HAVE_CPP_NEW_CASTS)
4358 dnl See if a dynamic_cast to void* gives the most derived object.
4359 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
4360                ac_cv_cpp_dynamic_cast_void_ptr,
4361                [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
4362                             class Y { int j; public: virtual ~Y() { } };
4363                             class Z : public X, public Y { int k; };
4365                             int main() {
4366                                  Z mdo;
4367                                  X *subx = (X*)&mdo;
4368                                  Y *suby = (Y*)&mdo;
4369                                  return !((((void*)&mdo != (void*)subx) &&
4370                                            ((void*)&mdo == dynamic_cast<void*>(subx))) ||
4371                                           (((void*)&mdo != (void*)suby) &&
4372                                            ((void*)&mdo == dynamic_cast<void*>(suby))));
4373                             }],
4374                            ac_cv_cpp_dynamic_cast_void_ptr=yes,
4375                            ac_cv_cpp_dynamic_cast_void_ptr=no,
4376                            ac_cv_cpp_dynamic_cast_void_ptr=no)])
4377 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
4378    AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
4382 dnl note that this one is reversed - if the test fails, then
4383 dnl we require implementations of unused virtual methods. Which
4384 dnl really blows because it means we'll have useless vtable
4385 dnl bloat.
4386 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
4387                ac_cv_cpp_unused_required,
4388                [AC_TRY_LINK(class X {private: virtual void never_called();};,
4389                                X x;,
4390                                ac_cv_cpp_unused_required=no,
4391                                ac_cv_cpp_unused_required=yes)])
4392 if test "$ac_cv_cpp_unused_required" = yes ; then
4393    AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
4397 dnl Some compilers have trouble comparing a constant reference to a templatized
4398 dnl class to zero, and require an explicit operator==() to be defined that takes
4399 dnl an int. This test separates the strong from the weak.
4401 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
4402                ac_cv_trouble_comparing_to_zero,
4403                [AC_TRY_COMPILE([#include <algorithm>
4404                                 template <class T> class Foo {};
4405                                 class T2;
4406                                 template <class T> int operator==(const T2*, const T&) { return 0; }
4407                                 template <class T> int operator!=(const T2*, const T&) { return 0; }],
4408                                [Foo<int> f; return (0 != f);],
4409                                ac_cv_trouble_comparing_to_zero=no,
4410                                ac_cv_trouble_comparing_to_zero=yes)])
4411 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
4412   AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
4415 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
4416 _SAVE_LDFLAGS=$LDFLAGS
4417 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS"
4418 AC_CACHE_CHECK(for __thread keyword for TLS variables,
4419                ac_cv_thread_keyword,
4420                [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
4421                             [return tlsIsMainThread;],
4422                             ac_cv_thread_keyword=yes,
4423                             ac_cv_thread_keyword=no)])
4424 LDFLAGS=$_SAVE_LDFLAGS
4425 if test "$ac_cv_thread_keyword" = yes; then
4426   # mips builds fail with TLS variables because of a binutils bug.
4427   # See bug 528687
4428   case "${target}" in
4429     mips*-*)
4430       :
4431       ;;
4432     *-android*)
4433       :
4434       ;;
4435     *)
4436       AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
4437       ;;
4438   esac
4441 dnl Check for the existence of various allocation headers/functions
4443 MALLOC_H=
4444 AC_CHECK_HEADER(malloc.h,        [MALLOC_H=malloc.h])
4445 if test "$MALLOC_H" = ""; then
4446   AC_CHECK_HEADER(malloc/malloc.h, [MALLOC_H=malloc/malloc.h])
4447   if test "$MALLOC_H" = ""; then
4448     AC_CHECK_HEADER(sys/malloc.h,    [MALLOC_H=sys/malloc.h])
4449   fi
4451 if test "$MALLOC_H" != ""; then
4452    AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
4455 MOZ_ALLOCATING_FUNCS="strndup posix_memalign memalign valloc"
4456 AC_CHECK_FUNCS(strndup posix_memalign memalign valloc)
4458 dnl See if compiler supports some gcc-style attributes
4460 AC_CACHE_CHECK(for __attribute__((always_inline)),
4461                ac_cv_attribute_always_inline,
4462                [AC_TRY_COMPILE([],
4463                                [inline void f(void) __attribute__((always_inline));],
4464                                ac_cv_attribute_always_inline=yes,
4465                                ac_cv_attribute_always_inline=no)])
4467 AC_CACHE_CHECK(for __attribute__((malloc)),
4468                ac_cv_attribute_malloc,
4469                [AC_TRY_COMPILE([],
4470                                [void* f(int) __attribute__((malloc));],
4471                                ac_cv_attribute_malloc=yes,
4472                                ac_cv_attribute_malloc=no)])
4474 AC_CACHE_CHECK(for __attribute__((warn_unused_result)),
4475                ac_cv_attribute_warn_unused,
4476                [AC_TRY_COMPILE([],
4477                                [int f(void) __attribute__((warn_unused_result));],
4478                                ac_cv_attribute_warn_unused=yes,
4479                                ac_cv_attribute_warn_unused=no)])
4481 AC_CACHE_CHECK(for __attribute__((noreturn)),
4482                ac_cv_attribute_noreturn,
4483                [AC_TRY_COMPILE([],
4484                                [void f(void) __attribute__((noreturn));],
4485                                ac_cv_attribute_noreturn=yes,
4486                                ac_cv_attribute_noreturn=no)])
4488 dnl End of C++ language/feature checks
4489 AC_LANG_C
4491 dnl ========================================================
4492 dnl =  Internationalization checks
4493 dnl ========================================================
4495 dnl Internationalization and Locale support is different
4496 dnl on various UNIX platforms.  Checks for specific i18n
4497 dnl features go here.
4499 dnl check for LC_MESSAGES
4500 AC_CACHE_CHECK(for LC_MESSAGES,
4501                 ac_cv_i18n_lc_messages,
4502                 [AC_TRY_COMPILE([#include <locale.h>],
4503                                 [int category = LC_MESSAGES;],
4504                                 ac_cv_i18n_lc_messages=yes,
4505                                 ac_cv_i18n_lc_messages=no)])
4506 if test "$ac_cv_i18n_lc_messages" = yes; then
4507    AC_DEFINE(HAVE_I18N_LC_MESSAGES)
4510 AC_HAVE_FUNCS(localeconv)
4512 fi # SKIP_COMPILER_CHECKS
4514 TARGET_XPCOM_ABI=
4515 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
4516     TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
4519 dnl Mozilla specific options
4520 dnl ========================================================
4521 dnl The macros used for command line options
4522 dnl are defined in build/autoconf/altoptions.m4.
4524 dnl If the compiler supports these attributes, define them as
4525 dnl convenience macros.
4526 if test "$ac_cv_attribute_always_inline" = yes ; then
4527   AC_DEFINE(NS_ALWAYS_INLINE, [__attribute__((always_inline))])
4528 else
4529   AC_DEFINE(NS_ALWAYS_INLINE,)
4532 if test "$ac_cv_attribute_malloc" = yes ; then
4533   AC_DEFINE(NS_ATTR_MALLOC, [__attribute__((malloc))])
4534 else
4535   AC_DEFINE(NS_ATTR_MALLOC,)
4538 if test "$ac_cv_attribute_warn_unused" = yes ; then
4539   AC_DEFINE(NS_WARN_UNUSED_RESULT, [__attribute__((warn_unused_result))])
4540 else
4541   AC_DEFINE(NS_WARN_UNUSED_RESULT,)
4544 if test "$ac_cv_attribute_noreturn" = yes ; then
4545   AC_DEFINE(NS_NORETURN, [__attribute__((noreturn))])
4546 else
4547   AC_DEFINE(NS_NORETURN,)
4550 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
4551 dnl features that Windows actually does support.
4553 if test -n "$SKIP_COMPILER_CHECKS"; then
4554    dnl Windows has malloc.h
4555    AC_DEFINE(MALLOC_H, [<malloc.h>])
4556    AC_DEFINE(HAVE_FORCEINLINE)
4557    AC_DEFINE(HAVE_LOCALECONV)
4558 fi # SKIP_COMPILER_CHECKS
4560 dnl ========================================================
4561 dnl =
4562 dnl = Check for external package dependencies
4563 dnl =
4564 dnl ========================================================
4565 MOZ_ARG_HEADER(External Packages)
4567 MOZ_ENABLE_LIBXUL=1
4569 MOZ_ARG_WITH_STRING(libxul-sdk,
4570 [  --with-libxul-sdk=PFX   Use the libXUL SDK at <PFX>],
4571   LIBXUL_SDK_DIR=$withval)
4573 if test "$LIBXUL_SDK_DIR" = "yes"; then
4574     AC_MSG_ERROR([--with-libxul-sdk must specify a path])
4575 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
4576     LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
4578     if test ! -f "$LIBXUL_SDK/include/xpcom-config.h"; then
4579         AC_MSG_ERROR([$LIBXUL_SDK/include/xpcom-config.h doesn't exist])
4580     fi
4582     MOZ_ENABLE_LIBXUL=1
4584 AC_SUBST(LIBXUL_SDK)
4586 if test -n "$LIBXUL_SDK"; then
4587     LIBXUL_DIST="$LIBXUL_SDK"
4588 else
4589     LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
4591 AC_SUBST(LIBXUL_DIST)
4593 SYSTEM_LIBXUL=
4595 MOZ_ARG_WITH_BOOL(system-libxul,
4596 [  --with-system-libxul    Use system installed libxul SDK],
4597     SYSTEM_LIBXUL=1)
4599 if test -n "$SYSTEM_LIBXUL" -a -z "$MOZ_ENABLE_LIBXUL"; then
4600     AC_MSG_ERROR([--with-system-libxul needs --with-libxul-sdk])
4603 dnl ========================================================
4604 dnl = If NSPR was not detected in the system, 
4605 dnl = use the one in the source tree (mozilla/nsprpub)
4606 dnl ========================================================
4607 MOZ_ARG_WITH_BOOL(system-nspr,
4608 [  --with-system-nspr      Use system installed NSPR],
4609     _USE_SYSTEM_NSPR=1 )
4611 if test -n "$_USE_SYSTEM_NSPR"; then
4612     AM_PATH_NSPR(4.8.7, [MOZ_NATIVE_NSPR=1], [MOZ_NATIVE_NSPR=])
4615 if test -n "$MOZ_NATIVE_NSPR"; then
4616     _SAVE_CFLAGS=$CFLAGS
4617     CFLAGS="$CFLAGS $NSPR_CFLAGS"
4618     AC_TRY_COMPILE([#include "prtypes.h"],
4619                 [#ifndef PR_STATIC_ASSERT
4620                  #error PR_STATIC_ASSERT not defined or requires including prlog.h
4621                  #endif],
4622                 [MOZ_NATIVE_NSPR=1],
4623                 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT or including prtypes.h does not provide it]))
4624     CFLAGS=$_SAVE_CFLAGS
4625 else
4626     if test "$OS_ARCH" = "WINCE"; then
4627         NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4628         NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4629     elif test "$OS_ARCH" = "WINNT"; then
4630         NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4631         if test -n "$GNU_CC"; then
4632             NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
4633         else
4634             NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4635         fi
4636     else
4637         NSPR_CFLAGS='`$(LIBXUL_DIST)/bin/nspr-config --prefix='${LIBXUL_DIST}' --includedir='${LIBXUL_DIST}'/include/nspr --cflags`'
4638         NSPR_LIBS='`$(LIBXUL_DIST)/bin/nspr-config --prefix='${LIBXUL_DIST}' --libdir='${LIBXUL_DIST}'/lib --libs`'
4639     fi
4642 dnl system libevent Support
4643 dnl ========================================================
4644 MOZ_ARG_WITH_STRING(system-libevent,
4645 [  --with-system-libevent=[PFX]
4646                           Use system libevent [installed at prefix PFX]],
4647     LIBEVENT_DIR=$withval)
4649 _SAVE_CFLAGS=$CFLAGS
4650 _SAVE_LDFLAGS=$LDFLAGS
4651 _SAVE_LIBS=$LIBS
4652 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
4653     MOZ_NATIVE_LIBEVENT=
4654 else
4655     if test "${LIBEVENT_DIR}" = "yes"; then
4656         LIBEVENT_DIR=/usr
4657     fi
4658     CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
4659     LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
4660     AC_CHECK_HEADER(event.h,
4661                     [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
4662                          AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
4663                      fi],
4664                     AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
4665     AC_CHECK_LIB(event, event_init,
4666                  [MOZ_NATIVE_LIBEVENT=1
4667                   MOZ_LIBEVENT_INCLUDES="${LIBEVENT_DIR}/include"
4668                   MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
4669                  [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_INCLUDES= MOZ_LIBEVENT_LIBS=])
4671 CFLAGS=$_SAVE_CFLAGS
4672 LDFLAGS=$_SAVE_LDFLAGS
4673 LIBS=$_SAVE_LIBS
4675 AC_SUBST(MOZ_NATIVE_LIBEVENT)
4676 AC_SUBST(MOZ_LIBEVENT_INCLUDES)
4677 AC_SUBST(MOZ_LIBEVENT_LIBS)
4679 dnl ========================================================
4680 dnl = If NSS was not detected in the system, 
4681 dnl = use the one in the source tree (mozilla/security/nss)
4682 dnl ========================================================
4684 MOZ_ARG_WITH_BOOL(system-nss,
4685 [  --with-system-nss       Use system installed NSS],
4686     _USE_SYSTEM_NSS=1 )
4688 if test -n "$_USE_SYSTEM_NSS"; then
4689     AM_PATH_NSS(3.12.9, [MOZ_NATIVE_NSS=1], [MOZ_NATIVE_NSS=])
4692 if test -n "$MOZ_NATIVE_NSS"; then
4693    NSS_LIBS="$NSS_LIBS -lcrmf"
4694 else
4695    NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4696    NSS_DEP_LIBS="\
4697         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4698         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4699         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4700         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4701         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX)"
4703    if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "WINCE" -o "$OS_ARCH" = "OS2"; then
4704        NSS_LIBS="\
4705         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4706         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(LIB_SUFFIX) \
4707         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(LIB_SUFFIX) \
4708         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(LIB_SUFFIX) \
4709         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(LIB_SUFFIX)"
4710    else
4711        NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION"
4712    fi
4715 dnl ======================
4716 dnl Detect yasm
4717 dnl ======================
4719 AC_MSG_CHECKING([for YASM assembler])
4720 AC_CHECK_PROGS(YASM, yasm, "")
4722 if test -n "$YASM"; then
4723   dnl Pull out yasm's version string
4724   changequote(,)
4725   _YASM_VER_FILTER='s|.* \([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\).*|\1|p'
4726   changequote([,])
4728   YASM_VERSION=`yasm --version | sed -ne "$_YASM_VER_FILTER"`
4729   _YASM_MAJOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $1 }'`
4730   _YASM_MINOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $2 }'`
4731   _YASM_RELEASE=`      echo ${YASM_VERSION} | $AWK -F\. '{ print $3 }'`
4732   _YASM_BUILD=`        echo ${YASM_VERSION} | $AWK -F\. '{ print $4 }'`
4735 if test -z "$SKIP_LIBRARY_CHECKS"; then
4736 dnl system JPEG support
4737 dnl ========================================================
4738 MOZ_ARG_WITH_STRING(system-jpeg,
4739 [  --with-system-jpeg[=PFX]
4740                           Use system libjpeg [installed at prefix PFX]],
4741     JPEG_DIR=$withval)
4743 _SAVE_CFLAGS=$CFLAGS
4744 _SAVE_LDFLAGS=$LDFLAGS
4745 _SAVE_LIBS=$LIBS
4746 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4747     CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4748     LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4750 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4751     SYSTEM_JPEG=
4752 else
4753     AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS)
4756 if test "$SYSTEM_JPEG" = 1; then
4757     LIBS="$JPEG_LIBS $LIBS"
4758     AC_TRY_COMPILE([ #include <stdio.h>
4759                      #include <sys/types.h>
4760                      #include <jpeglib.h> ],
4761                    [ #if JPEG_LIB_VERSION < $MOZJPEG
4762                      #error "Insufficient JPEG library version ($MOZJPEG required)."
4763                      #endif ],
4764                    SYSTEM_JPEG=1,
4765                    [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=]) 
4766 fi 
4767 CFLAGS=$_SAVE_CFLAGS
4768 LDFLAGS=$_SAVE_LDFLAGS
4769 LIBS=$_SAVE_LIBS
4771 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$SYSTEM_JPEG" = 1; then
4772     JPEG_CFLAGS="-I${JPEG_DIR}/include"
4773     JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
4776 dnl system ZLIB support
4777 dnl ========================================================
4778 MOZ_ARG_WITH_STRING(system-zlib,
4779 [  --with-system-zlib[=PFX]
4780                           Use system libz [installed at prefix PFX]],
4781     ZLIB_DIR=$withval)
4783 _SAVE_CFLAGS=$CFLAGS
4784 _SAVE_LDFLAGS=$LDFLAGS
4785 _SAVE_LIBS=$LIBS
4786 if test -n "${ZLIB_DIR}" -a "${ZLIB_DIR}" != "yes"; then
4787     CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
4788     LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
4790 if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
4791     SYSTEM_ZLIB=
4792 else
4793     AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"], 
4794         [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
4796 if test "$SYSTEM_ZLIB" = 1; then
4797     LIBS="$ZLIB_LIBS $LIBS"
4798     AC_TRY_COMPILE([ #include <stdio.h>
4799                      #include <string.h>
4800                      #include <zlib.h> ],
4801                    [ #if ZLIB_VERNUM < $MOZZLIB 
4802                      #error "Insufficient zlib version ($MOZZLIB required)."
4803                      #endif ],
4804                    SYSTEM_ZLIB=1,
4805                    [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=]) 
4807 CFLAGS=$_SAVE_CFLAGS
4808 LDFLAGS=$_SAVE_LDFLAGS
4809 LIBS=$_SAVE_LIBS
4811 if test "${ZLIB_DIR}" -a -d "${ZLIB_DIR}" -a "$SYSTEM_ZLIB" = 1; then
4812     ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
4813     ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
4816 dnl system BZIP2 Support
4817 dnl ========================================================
4818 MOZ_ARG_WITH_STRING(system-bz2,
4819 [  --with-system-bz2[=PFX]
4820                           Use system libbz2 [installed at prefix PFX]],
4821     BZ2_DIR=$withval)
4823 _SAVE_CFLAGS=$CFLAGS
4824 _SAVE_LDFLAGS=$LDFLAGS
4825 _SAVE_LIBS=$LIBS
4826 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4827     CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4828     LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4830 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4831     SYSTEM_BZ2=
4832 else
4833     AC_CHECK_LIB(bz2, BZ2_bzread, [SYSTEM_BZ2=1 BZ2_LIBS="-lbz2"],
4834         [SYSTEM_BZ2= BZ2_CFLAGS= BZ2_LIBS=])
4836 CFLAGS=$_SAVE_CFLAGS
4837 LDFLAGS=$_SAVE_LDFLAGS
4838 LIBS=$_SAVE_LIBS
4840 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$SYSTEM_BZ2" = 1; then
4841     BZ2_CFLAGS="-I${BZ2_DIR}/include"
4842     BZ2_LIBS="-L${BZ2_DIR}/lib ${BZ2_LIBS}"
4845 dnl system PNG Support
4846 dnl ========================================================
4847 MOZ_ARG_WITH_STRING(system-png, 
4848 [  --with-system-png[=PFX]
4849                           Use system libpng [installed at prefix PFX]],
4850     PNG_DIR=$withval)
4852 _SAVE_CFLAGS=$CFLAGS
4853 _SAVE_LDFLAGS=$LDFLAGS
4854 _SAVE_LIBS=$LIBS
4855 CFLAGS="$ZLIB_CFLAGS $CFLAGS"
4856 LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
4857 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4858     CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4859     LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4861 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4862     SYSTEM_PNG=
4863 else
4864     _SAVE_PNG_LIBS=$PNG_LIBS
4865     AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"],
4866                  AC_MSG_ERROR([--with-system-png requested but no working libpng found]), 
4867                  $PNG_LIBS)
4868     AC_CHECK_LIB(png, png_get_acTL, ,
4869                  AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]),
4870                  $_SAVE_PNG_LIBS)
4872 if test "$SYSTEM_PNG" = 1; then
4873     LIBS="$PNG_LIBS $LIBS"
4874     AC_TRY_COMPILE([ #include <stdio.h>
4875                      #include <sys/types.h>
4876                      #include <png.h> ],
4877                    [ #if PNG_LIBPNG_VER < $MOZPNG
4878                      #error "Insufficient libpng version ($MOZPNG required)."
4879                      #endif
4880                      #ifndef PNG_UINT_31_MAX
4881                      #error "Insufficient libpng version."
4882                      #endif ],
4883                    SYSTEM_PNG=1,
4884                    AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4886 CFLAGS=$_SAVE_CFLAGS
4887 LDFLAGS=$_SAVE_LDFLAGS
4888 LIBS=$_SAVE_LIBS
4890 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
4891     PNG_CFLAGS="-I${PNG_DIR}/include"
4892     PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
4895 fi # SKIP_LIBRARY_CHECKS
4897 dnl system HunSpell Support
4898 dnl ========================================================
4899 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4900 [  --enable-system-hunspell
4901                           Use system hunspell (located with pkgconfig)],
4902     SYSTEM_HUNSPELL=1 )
4904 if test -n "$SYSTEM_HUNSPELL"; then
4905     PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4908 AC_SUBST(SYSTEM_HUNSPELL)
4910 dnl ========================================================
4911 dnl Java SDK support
4912 dnl ========================================================
4913 JAVA_INCLUDE_PATH=
4914 MOZ_ARG_WITH_STRING(java-include-path,
4915 [  --with-java-include-path=dir
4916                           Location of Java SDK headers],
4917     JAVA_INCLUDE_PATH=$withval)
4919 JAVA_BIN_PATH=
4920 MOZ_ARG_WITH_STRING(java-bin-path,
4921 [  --with-java-bin-path=dir
4922                           Location of Java binaries (java, javac, jar)],
4923     JAVA_BIN_PATH=$withval)
4925 dnl ========================================================
4926 dnl =
4927 dnl = Application
4928 dnl =
4929 dnl ========================================================
4931 MOZ_ARG_HEADER(Application)
4933 BUILD_STATIC_LIBS=
4934 ENABLE_TESTS=1
4935 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4936 MOZ_BRANDING_DIRECTORY=
4937 MOZ_OFFICIAL_BRANDING=
4938 MOZ_FEEDS=1
4939 MOZ_INSTALLER=1
4940 MOZ_IPC=1
4941 MOZ_JAVAXPCOM=
4942 MOZ_JSDEBUGGER=1
4943 MOZ_JSLOADER=1
4944 MOZ_MATHML=1
4945 MOZ_MORK=
4946 MOZ_MORKREADER=1
4947 MOZ_AUTH_EXTENSION=1
4948 MOZ_NO_ACTIVEX_SUPPORT=1
4949 MOZ_NO_FAST_LOAD=
4950 MOZ_OGG=1
4951 MOZ_RAW=
4952 MOZ_SYDNEYAUDIO=
4953 MOZ_VORBIS=
4954 MOZ_TREMOR=
4955 MOZ_WAVE=1
4956 MOZ_MEDIA=
4957 MOZ_WEBM=1
4958 VPX_AS=
4959 VPX_ASFLAGS=
4960 VPX_AS_DASH_C_FLAG=
4961 VPX_AS_CONVERSION=
4962 VPX_ASM_SUFFIX=
4963 VPX_X86_ASM=
4964 VPX_ARM_ASM=
4965 MOZ_PANGO=1
4966 MOZ_PERMISSIONS=1
4967 MOZ_PLACES=1
4968 MOZ_PLAINTEXT_EDITOR_ONLY=
4969 MOZ_PLUGINS=1
4970 MOZ_PREF_EXTENSIONS=1
4971 MOZ_PROFILELOCKING=1
4972 MOZ_PSM=1
4973 MOZ_RDF=1
4974 MOZ_REFLOW_PERF=
4975 MOZ_SAFE_BROWSING=
4976 MOZ_FASTSTART=
4977 MOZ_HELP_VIEWER=
4978 MOZ_SPELLCHECK=1
4979 MOZ_SPLASHSCREEN=
4980 MOZ_STORAGE=1
4981 MOZ_SVG=1
4982 MOZ_THUMB2=
4983 MOZ_TIMELINE=
4984 MOZ_TOOLKIT_SEARCH=1
4985 MOZ_UI_LOCALE=en-US
4986 MOZ_UNIVERSALCHARDET=1
4987 MOZ_URL_CLASSIFIER=
4988 MOZ_USE_NATIVE_UCONV=
4989 MOZ_VIEW_SOURCE=1
4990 MOZ_XSLT_STANDALONE=
4991 MOZ_XTF=1
4992 MOZ_XUL=1
4993 MOZ_ZIPWRITER=1
4994 NS_PRINTING=1
4995 MOZ_PDF_PRINTING=
4996 MOZ_DISABLE_DOMCRYPTO=
4997 NSS_DISABLE_DBM=
4998 NECKO_WIFI=1
4999 NECKO_COOKIES=1
5000 NECKO_DISK_CACHE=1
5001 NECKO_PROTOCOLS_DEFAULT="about data file ftp http res viewsource wyciwyg"
5002 USE_ARM_KUSER=
5003 BUILD_CTYPES=1
5004 XPC_IDISPATCH_SUPPORT=
5007 case "${target}" in
5008 *android*|*darwin*|*wince*|*winmo*)
5009     ACCESSIBILITY=
5010     ;;
5012     ACCESSIBILITY=1
5013     ;;
5014 esac
5016 case "$target_os" in
5017     msvc*|mks*|cygwin*|mingw*)
5018         NS_ENABLE_TSF=1
5019         if test -z "$GNU_CC"; then 
5020             if test "$MOZ_WINSDK_TARGETVER" -lt "06000000"; then
5021                 NS_ENABLE_TSF=
5022             fi
5023         fi
5024         if test -n "$NS_ENABLE_TSF"; then
5025             AC_DEFINE(NS_ENABLE_TSF)
5026         fi
5027         ;;
5028 esac
5030 case "${target}" in
5031     arm-android-eabi)
5032         NSS_DISABLE_DBM=1
5033         USE_ARM_KUSER=1
5034         MOZ_INSTALLER=
5035         NECKO_WIFI=
5036         MOZ_THUMB2=1
5037         MOZ_THEME_FASTSTRIPE=1
5038         MOZ_TREE_FREETYPE=1
5039         MOZ_MEMORY=1
5040         ;;
5041 esac
5043 MOZ_ARG_ENABLE_STRING(application,
5044 [  --enable-application=APP
5045                           Options include:
5046                             browser (Firefox)
5047                             xulrunner
5048                             content/xslt (Standalone Transformiix XSLT)
5049                             netwerk (Standalone Necko)
5050                             tools/update-packaging (AUS-related packaging tools)
5051                             standalone (use this for standalone
5052                               xpcom/xpconnect or to manually drive a build)],
5053 [ MOZ_BUILD_APP=$enableval ] )
5055 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
5056 [  --with-xulrunner-stub-name=appname   Create the xulrunner stub with the given name],
5057   XULRUNNER_STUB_NAME=$withval)
5059 if test -z "$XULRUNNER_STUB_NAME"; then
5060   case "$target_os" in
5061   darwin*)
5062     XULRUNNER_STUB_NAME=xulrunner
5063     ;;
5064   *)
5065     XULRUNNER_STUB_NAME=xulrunner-stub
5066   esac
5068 AC_SUBST(XULRUNNER_STUB_NAME)
5070 if test -z "$MOZ_BUILD_APP"; then
5071   AC_MSG_ERROR([--enable-application=APP was not specified and is required.])
5072 else
5073   # We have a valid application only if it has a build.mk file in its top
5074   # directory.
5075   if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
5076     AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
5077   fi
5080 # Allow the application to influence configure with a confvars.sh script.
5082 AC_MSG_CHECKING([if app-specific confvars.sh exists])
5083 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
5084   AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
5085   . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
5086 else
5087   AC_MSG_RESULT([no])
5090 # Now is a good time to test for logic errors, define mismatches, etc.
5091 case "$MOZ_BUILD_APP" in
5092 xulrunner)
5093   if test "$LIBXUL_SDK"; then
5094     AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
5095   fi
5096   ;;
5097 esac
5099 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
5100 # that haven't made a confvars.sh yet. Don't add new stuff here, use
5101 # MOZ_BUILD_APP.
5102 case "$MOZ_BUILD_APP" in
5103 browser)
5104   AC_DEFINE(MOZ_PHOENIX)
5105   ;;
5107 xulrunner)
5108   AC_DEFINE(MOZ_XULRUNNER)
5109   ;;
5111 content/xslt)
5112   AC_DEFINE(TX_EXE)
5113   ;;
5115 standalone) 
5116   MOZ_APP_NAME=mozilla
5117   MOZ_APP_DISPLAYNAME=Mozilla
5118   MOZ_APP_VERSION=$MOZILLA_VERSION
5119   ;;
5121 esac
5123 AC_SUBST(MOZ_BUILD_APP)
5124 AC_SUBST(MOZ_PHOENIX)
5125 AC_SUBST(MOZ_XULRUNNER)
5127 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
5129 dnl ========================================================
5130 dnl = 
5131 dnl = Toolkit Options
5132 dnl = 
5133 dnl ========================================================
5134 MOZ_ARG_HEADER(Toolkit Options)
5136     dnl ========================================================
5137     dnl = Select the default toolkit
5138     dnl ========================================================
5139         MOZ_ARG_ENABLE_STRING(default-toolkit,
5140         [  --enable-default-toolkit=TK
5141                           Select default toolkit
5142                           Platform specific defaults:
5143                             BeOS - cairo-beos
5144                             Mac OS X - cairo-cocoa
5145                             Neutrino/QNX - photon
5146                             OS/2 - cairo-os2
5147                             Win32/WinCE - cairo-windows
5148                             Gtk2 with DirectFB - cairo-gtk2-dfb
5149                             * - cairo-gtk2
5150                             * - cairo-qt],
5151     [ _DEFAULT_TOOLKIT=$enableval ],
5152     [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
5154     if test "$_DEFAULT_TOOLKIT" = "photon" \
5155         -o "$_DEFAULT_TOOLKIT" = "cairo-windows" \
5156         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
5157         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-dfb" \
5158         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
5159         -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
5160         -o "$_DEFAULT_TOOLKIT" = "cairo-beos" \
5161         -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
5162         -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa" \
5163         -o "$_DEFAULT_TOOLKIT" = "cairo-android"
5164     then
5165         dnl nglayout only supports building with one toolkit,
5166         dnl so ignore everything after the first comma (",").
5167         MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
5168     else
5169         AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
5170     fi
5172 dnl ========================================================
5173 dnl = Enable the toolkit as needed                         =
5174 dnl ========================================================
5176 case "$MOZ_WIDGET_TOOLKIT" in
5177 photon)
5178         MOZ_ENABLE_PHOTON=1
5179         AC_DEFINE(MOZ_WIDGET_PHOTON)
5180     ;;
5182 cairo-windows)
5183     MOZ_WIDGET_TOOLKIT=windows
5184     MOZ_WEBGL=1
5185     case "${target}" in
5186     *-wince*)
5187         NS_PRINTING=
5188         ;;
5189     esac
5190     MOZ_PDF_PRINTING=1
5191     ;;
5193 cairo-gtk2|cairo-gtk2-x11)
5194     MOZ_WIDGET_TOOLKIT=gtk2
5195     MOZ_ENABLE_GTK2=1
5196     MOZ_ENABLE_XREMOTE=1
5197     MOZ_WEBGL=1
5198     MOZ_WEBGL_GLX=1
5200     AC_DEFINE(MOZ_X11)
5201     MOZ_X11=1
5202     USE_FC_FREETYPE=1
5204     TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
5205     TK_LIBS='$(MOZ_GTK2_LIBS)'
5206     AC_DEFINE(MOZ_WIDGET_GTK2)
5207     MOZ_PDF_PRINTING=1
5208     ;;
5210 cairo-gtk2-dfb)
5211     MOZ_WIDGET_TOOLKIT=gtk2
5212     MOZ_ENABLE_GTK2=1
5213     MOZ_WEBGL=
5215     AC_DEFINE(MOZ_DFB)
5216     MOZ_DFB=1
5218     TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
5219     TK_LIBS='$(MOZ_GTK2_LIBS)'
5220     AC_DEFINE(MOZ_WIDGET_GTK2)
5221     if test "$no_x" != "yes"; then
5222         AC_MSG_WARN([Disabling X when DirectFB is specified.])
5223         no_x=yes
5224     fi
5225     MOZ_PDF_PRINTING=1
5226     ;;
5228 cairo-qt)
5229     MOZ_WIDGET_TOOLKIT=qt
5230     MOZ_ENABLE_QT=1
5231     MOZ_ENABLE_XREMOTE=1
5232     MOZ_WEBGL=1
5233     MOZ_WEBGL_GLX=1
5234     USE_ELF_DYNSTR_GC=
5236     AC_DEFINE(MOZ_X11)
5237     MOZ_X11=1
5238     USE_FC_FREETYPE=1
5240     TK_CFLAGS='$(MOZ_QT_CFLAGS)'
5241     TK_LIBS='$(MOZ_QT_LIBS)'
5242     AC_DEFINE(MOZ_WIDGET_QT)
5243     MOZ_PDF_PRINTING=1
5244     ;;
5246 cairo-beos)
5247     MOZ_WIDGET_TOOLKIT=beos
5248     USE_FC_FREETYPE=1
5249     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
5250     TK_LIBS='$(MOZ_CAIRO_LIBS)'
5251     ;;
5253 cairo-os2)
5254     MOZ_WIDGET_TOOLKIT=os2
5255     USE_FC_FREETYPE=1
5256     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
5257     TK_LIBS='$(MOZ_CAIRO_LIBS)'
5258     MOZ_PDF_PRINTING=1
5259     ;;
5261 cairo-cocoa)
5262     MOZ_WIDGET_TOOLKIT=cocoa
5263     AC_DEFINE(MOZ_WIDGET_COCOA)
5264     MOZ_USER_DIR="Mozilla"
5265     AC_DEFINE(XP_MACOSX)
5266     TK_LIBS='-framework QuartzCore -framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook -framework OpenGL'
5267     TK_CFLAGS="-DNO_X11"
5268     LDFLAGS="$LDFLAGS -framework Cocoa -lobjc"
5269     CFLAGS="$CFLAGS $TK_CFLAGS"
5270     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
5271     LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL'
5272     MOZ_FS_LAYOUT=bundle
5273     MOZ_WEBGL=1
5274     ;;
5276 cairo-android)
5277     AC_DEFINE(MOZ_WIDGET_ANDROID)
5278     MOZ_WIDGET_TOOLKIT=android
5279     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
5280     TK_LIBS='$(MOZ_CAIRO_LIBS)'
5281     MOZ_WEBGL=1
5282     MOZ_PDF_PRINTING=1
5283     ;;
5285 esac
5287 AC_SUBST(MOZ_PDF_PRINTING)
5288 if test "$MOZ_PDF_PRINTING"; then
5289    PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
5290    AC_DEFINE(MOZ_PDF_PRINTING)
5293 if test "$MOZ_ENABLE_XREMOTE"; then
5294     AC_DEFINE(MOZ_ENABLE_XREMOTE)
5297 if test "$COMPILE_ENVIRONMENT"; then
5298   if test "$MOZ_ENABLE_GTK2"; then
5299     if test "$MOZ_X11"; then
5300       GDK_PACKAGES=gdk-x11-2.0
5301     elif test "$MOZ_DFB"; then
5302       PKG_CHECK_MODULES(MOZ_DFB, directfb >= 1.1.0)
5303       GDK_PACKAGES=directfb
5304     fi
5306     PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
5307   fi
5309 fi # COMPILE_ENVIRONMENT
5311 AC_SUBST(MOZ_FS_LAYOUT)
5313 dnl ========================================================
5314 dnl Use ARM userspace kernel helpers; tell NSPR to enable
5315 dnl their usage and use them in spidermonkey.
5316 dnl ========================================================
5317 MOZ_ARG_WITH_BOOL(arm-kuser,
5318 [  --with-arm-kuser         Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
5319     USE_ARM_KUSER=1,)
5320 if test -n "$USE_ARM_KUSER"; then
5321    AC_DEFINE(USE_ARM_KUSER)
5324 dnl ========================================================
5325 dnl = startup-notification support module
5326 dnl ========================================================
5328 if test "$MOZ_ENABLE_GTK2"
5329 then
5330     MOZ_ENABLE_STARTUP_NOTIFICATION=
5332     MOZ_ARG_ENABLE_BOOL(startup-notification,
5333     [  --enable-startup-notification
5334                           Enable startup-notification support (default: disabled) ],
5335         MOZ_ENABLE_STARTUP_NOTIFICATION=force,
5336         MOZ_ENABLE_STARTUP_NOTIFICATION=)
5337     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
5338     then
5339         PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
5340                           libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
5341         [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
5342             if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
5343             then
5344                 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
5345             fi
5346             MOZ_ENABLE_STARTUP_NOTIFICATION=
5347         ])
5348     fi
5350     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
5351         AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
5352     fi
5354     TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
5356 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
5357 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
5358 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
5360 dnl ========================================================
5361 dnl = QT support
5362 dnl ========================================================
5363 if test "$MOZ_ENABLE_QT"
5364 then
5365     MOZ_ARG_WITH_STRING(qtdir,
5366     [  --with-qtdir=\$dir       Specify Qt directory ],
5367     [ QTDIR=$withval])
5369     if test -z "$QTDIR"; then
5370         PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtCore QtOpenGL)
5371         AC_CHECK_PROGS(HOST_MOC, $MOC moc, "")
5372     else
5373         MOZ_QT_LIBS="-L$QTDIR/lib/ -lQtGui -lQtNetwork -lQtCore -lQtDBus -lQtXml -lQtOpenGL"
5375         MOZ_QT_CFLAGS="-DQT_SHARED"
5376         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include"
5377         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/Qt"
5378         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui"
5379         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtCore"
5380         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtNetwork"
5381         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtDBus"
5382         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtXml"
5383         HOST_MOC="$QTDIR/bin/moc"
5384     fi
5385     if test -z "$HOST_MOC"; then
5386         AC_MSG_ERROR([No acceptable moc preprocessor found. Qt SDK is not installed or --with-qt is
5387 incorrect])
5388     fi
5389     MOC=$HOST_MOC
5391     MOZ_ENABLE_QTNETWORK=
5392     PKG_CHECK_MODULES(_QTNETWORK, QtNetwork >= 4.7,
5393                       MOZ_ENABLE_QTNETWORK=1,
5394                       MOZ_ENABLE_QTNETWORK=)
5396     if test "$MOZ_ENABLE_QTNETWORK"; then
5397       MOZ_ENABLE_QTNETWORK=1
5398       AC_DEFINE(MOZ_ENABLE_QTNETWORK)
5399     fi
5402 AC_SUBST(GTK_CONFIG)
5403 AC_SUBST(TK_CFLAGS)
5404 AC_SUBST(TK_LIBS)
5406 AC_SUBST(MOZ_ENABLE_GTK2)
5407 AC_SUBST(MOZ_ENABLE_PHOTON)
5408 AC_SUBST(MOZ_ENABLE_QT)
5409 AC_SUBST(MOZ_ENABLE_QTNETWORK)
5410 AC_SUBST(MOZ_ENABLE_XREMOTE)
5411 AC_SUBST(MOZ_GTK2_CFLAGS)
5412 AC_SUBST(MOZ_GTK2_LIBS)
5413 AC_SUBST(MOZ_QT_CFLAGS)
5414 AC_SUBST(MOZ_QT_LIBS)
5415 AC_SUBST(MOZ_ENABLE_MEEGOTOUCH)
5417 AC_SUBST(MOC)
5419 AC_SUBST(MOZ_DFB)
5420 AC_SUBST(MOZ_X11)
5422 dnl ========================================================
5423 dnl =
5424 dnl = Components & Features
5425 dnl = 
5426 dnl ========================================================
5427 MOZ_ARG_HEADER(Components and Features)
5429 dnl ========================================================
5430 dnl = Localization
5431 dnl ========================================================
5432 MOZ_ARG_ENABLE_STRING(ui-locale,
5433 [  --enable-ui-locale=ab-CD
5434                           Select the user interface locale (default: en-US)],
5435     MOZ_UI_LOCALE=$enableval )
5436 AC_SUBST(MOZ_UI_LOCALE)
5438 dnl ========================================================
5439 dnl = Trademarked Branding 
5440 dnl ========================================================
5441 MOZ_ARG_ENABLE_BOOL(official-branding,
5442 [  --enable-official-branding
5443                           Enable Official mozilla.org Branding
5444                           Do not distribute builds with
5445                           --enable-official-branding unless you have
5446                           permission to use trademarks per
5447                           http://www.mozilla.org/foundation/trademarks/ .],
5449   if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
5450     AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
5451   else
5452     MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
5453     MOZ_OFFICIAL_BRANDING=1
5454   fi
5455 ], MOZ_OFFICIAL_BRANDING=)
5457 AC_SUBST(MOZ_OFFICIAL_BRANDING)
5458 if test -n "$MOZ_OFFICIAL_BRANDING"; then
5459   AC_DEFINE(MOZ_OFFICIAL_BRANDING)
5462 MOZ_ARG_WITH_STRING(branding,
5463 [  --with-branding=dir     Use branding from the specified directory.],
5464     MOZ_BRANDING_DIRECTORY=$withval)
5466 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
5467 if test -z "$REAL_BRANDING_DIRECTORY"; then
5468   REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
5471 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
5472   . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
5475 AC_SUBST(MOZ_BRANDING_DIRECTORY)
5477 dnl ========================================================
5478 dnl = Distribution ID
5479 dnl ========================================================
5480 MOZ_ARG_WITH_STRING(distribution-id,
5481 [  --with-distribution-id=ID
5482                           Set distribution-specific id (default=org.mozilla)],
5483 [ val=`echo $withval`
5484     MOZ_DISTRIBUTION_ID="$val"])
5486 if test -z "$MOZ_DISTRIBUTION_ID"; then
5487    MOZ_DISTRIBUTION_ID="org.mozilla"
5490 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
5491 AC_SUBST(MOZ_DISTRIBUTION_ID)
5494 dnl ========================================================
5495 dnl complex text support off by default
5496 dnl ========================================================
5497 MOZ_ARG_DISABLE_BOOL(pango,
5498 [  --disable-pango         Disable usage of Pango ],
5499     MOZ_PANGO=,
5500     MOZ_PANGO=1)
5502 dnl ========================================================
5503 dnl = Pango
5504 dnl ========================================================
5505 if test "$MOZ_ENABLE_GTK2"
5506 then
5507     AC_SUBST(MOZ_PANGO)
5509     PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
5511     PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION pangocairo >= $PANGO_VERSION)
5512     AC_SUBST(MOZ_PANGO_CFLAGS)
5513     AC_SUBST(MOZ_PANGO_LIBS)
5514     if test "$MOZ_PANGO"
5515     then
5516         AC_DEFINE(MOZ_PANGO)
5517     else
5518         PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0 fontconfig)
5519         AC_SUBST(FT2_CFLAGS)
5520         AC_SUBST(FT2_LIBS)
5521     fi
5524 if test "$MOZ_ENABLE_QT"
5525 then
5526     if test "$MOZ_PANGO"
5527     then
5528         PKG_CHECK_MODULES(MOZ_PANGO, [pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION pangocairo >= $PANGO_VERSION],
5529         [
5530             AC_SUBST(MOZ_PANGO_CFLAGS)
5531             AC_SUBST(MOZ_PANGO_LIBS)
5532             AC_DEFINE(MOZ_PANGO)
5533         ],
5534         [
5535             echo "Pango library not found, will use FT2 font engine"
5536             MOZ_PANGO=
5537         ])
5538     fi
5539     AC_SUBST(MOZ_PANGO)
5542 dnl ========================================================
5543 dnl = GnomeVFS, GIO and GConf support module
5544 dnl ========================================================
5546 if test "$MOZ_X11"
5547 then
5548     dnl build the gnomevfs extension by default only when the
5549     dnl GTK2 toolkit is in use.
5550     if test "$MOZ_ENABLE_GTK2"
5551     then
5552         MOZ_ENABLE_GNOMEVFS=1
5553         MOZ_ENABLE_GCONF=1
5554     fi
5556     dnl ========================================================
5557     dnl = GnomeVFS support module
5558     dnl ========================================================
5559     MOZ_ARG_DISABLE_BOOL(gnomevfs,
5560     [  --disable-gnomevfs      Disable GnomeVFS support ],
5561         MOZ_ENABLE_GNOMEVFS=,
5562         MOZ_ENABLE_GNOMEVFS=force)
5564     if test "$MOZ_ENABLE_GNOMEVFS"
5565     then
5566         PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
5567             MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
5568             MOZ_ENABLE_GNOMEVFS=1
5569             AC_DEFINE(MOZ_ENABLE_GNOMEVFS)
5570         ],[
5571             if test "$MOZ_ENABLE_GNOMEVFS" = "force"
5572             then
5573                 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
5574             fi
5575             MOZ_ENABLE_GNOMEVFS=
5576         ])
5577     else
5578         if test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
5579             PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
5580               MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
5581             ])
5582         fi
5583     fi
5585     AC_SUBST(MOZ_ENABLE_GNOMEVFS)
5586     AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
5587     AC_SUBST(MOZ_GNOMEVFS_LIBS)
5589     dnl ========================================================
5590     dnl = GIO support module
5591     dnl ========================================================
5592     MOZ_ARG_ENABLE_BOOL(gio,
5593     [  --enable-gio            Enable GIO support (default: disabled)],
5594         MOZ_ENABLE_GIO=force,
5595         MOZ_ENABLE_GIO=)
5597     if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK2"
5598     then
5599         PKG_CHECK_MODULES(MOZ_GIO, gio-2.0 >= $GIO_VERSION,[
5600             MOZ_GIO_LIBS=`echo $MOZ_GIO_LIBS | sed 's/-llinc\>//'`
5601             MOZ_ENABLE_GIO=1
5602             AC_DEFINE(MOZ_ENABLE_GIO)
5603         ],[
5604             if test "$MOZ_ENABLE_GIO" = "force"
5605             then
5606                 AC_MSG_ERROR([* * * Could not find gio-2.0 >= $GIO_VERSION])
5607             fi
5608             MOZ_ENABLE_GIO=
5609         ])
5610     fi
5612     AC_SUBST(MOZ_ENABLE_GIO)
5613     AC_SUBST(MOZ_GIO_CFLAGS)
5614     AC_SUBST(MOZ_GIO_LIBS)
5615    
5616     dnl ========================================================
5617     dnl = GConf support module
5618     dnl ========================================================
5619     if test "$MOZ_ENABLE_GCONF"
5620     then
5621         PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION gobject-2.0 ,[
5622             MOZ_GCONF_LIBS=`echo $MOZ_GCONF_LIBS | sed 's/-llinc\>//'`
5623             MOZ_ENABLE_GCONF=1
5624         ],[
5625             if test "$MOZ_ENABLE_GCONF" = "force"
5626             then
5627                 AC_MSG_ERROR([* * * Could not find gconf-2.0 ])
5628             fi
5629             MOZ_ENABLE_GCONF=
5630         ])
5631     fi
5633     if test "$MOZ_ENABLE_GCONF"; then
5634         AC_DEFINE(MOZ_ENABLE_GCONF)
5635     fi
5637     AC_SUBST(MOZ_ENABLE_GCONF)
5638     AC_SUBST(MOZ_GCONF_CFLAGS)
5639     AC_SUBST(MOZ_GCONF_LIBS)
5642 dnl ========================================================
5643 dnl = libproxy support
5644 dnl ========================================================
5646 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
5647 then
5648     MOZ_ENABLE_LIBPROXY=
5650     MOZ_ARG_ENABLE_BOOL(libproxy,
5651     [  --enable-libproxy         Enable libproxy support ],
5652     MOZ_ENABLE_LIBPROXY=1,
5653     MOZ_ENABLE_LIBPROXY=)
5655     if test "$MOZ_ENABLE_LIBPROXY"
5656     then
5657         PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
5658         AC_DEFINE(MOZ_ENABLE_LIBPROXY)
5659     fi
5661 AC_SUBST(MOZ_ENABLE_LIBPROXY)
5662 AC_SUBST(MOZ_LIBPROXY_CFLAGS)
5663 AC_SUBST(MOZ_LIBPROXY_LIBS)
5665 dnl ========================================================
5666 dnl = libnotify support
5667 dnl ========================================================
5669 if test "$MOZ_ENABLE_GTK2"
5670 then
5671     MOZ_ENABLE_LIBNOTIFY=1
5673     MOZ_ARG_DISABLE_BOOL(libnotify,
5674     [  --disable-libnotify     Disable libnotify support ],
5675     MOZ_ENABLE_LIBNOTIFY=,
5676     MOZ_ENABLE_LIBNOTIFY=1)
5678     if test "$MOZ_ENABLE_LIBNOTIFY"
5679     then
5680         AC_DEFINE(MOZ_ENABLE_LIBNOTIFY)
5681     fi
5684 if test -z "$SKIP_LIBRARY_CHECKS"
5685 then
5686     if test "$MOZ_ENABLE_GTK2"
5687     then
5688         if test "$MOZ_ENABLE_LIBNOTIFY"
5689         then
5690             PKG_CHECK_MODULES(MOZ_LIBNOTIFY, libnotify >= $LIBNOTIFY_VERSION)
5691         fi
5692     fi
5694 AC_SUBST(MOZ_ENABLE_LIBNOTIFY)
5695 AC_SUBST(MOZ_LIBNOTIFY_CFLAGS)
5696 AC_SUBST(MOZ_LIBNOTIFY_LIBS)
5698 dnl ========================================================
5699 dnl = GNOME component (mozgnome)
5700 dnl ========================================================
5702 # The GNOME component is built if one of 
5703 # gnome-vfs, gio, gconf or libnotify is available.
5704 if test "$MOZ_ENABLE_GCONF" -o \
5705    "$MOZ_ENABLE_GNOMEVFS" -o \
5706    "$MOZ_ENABLE_GIO" -o \
5707    "$MOZ_ENABLE_LIBNOTIFY"; then
5708     MOZ_ENABLE_GNOME_COMPONENT=1
5709 else
5710     MOZ_ENABLE_GNOME_COMPONENT=
5712 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5714 dnl ========================================================
5715 dnl = libgnomeui support module
5716 dnl ========================================================
5718 if test "$MOZ_ENABLE_GTK2"
5719 then
5720     MOZ_ENABLE_GNOMEUI=1
5722     MOZ_ARG_DISABLE_BOOL(gnomeui,
5723     [  --disable-gnomeui       Disable libgnomeui support (default: auto, optional at runtime) ],
5724         MOZ_ENABLE_GNOMEUI=,
5725         MOZ_ENABLE_GNOMEUI=force)
5727     if test "$MOZ_ENABLE_GNOMEUI"
5728     then
5729         PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5730         [
5731             MOZ_GNOMEUI_LIBS=`echo $MOZ_GNOMEUI_LIBS | sed 's/-llinc\>//'`
5732             MOZ_ENABLE_GNOMEUI=1
5733         ],[
5734             if test "$MOZ_ENABLE_GNOMEUI" = "force"
5735             then
5736                 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5737             fi
5738             MOZ_ENABLE_GNOMEUI=
5739         ])
5740     fi
5742     if test "$MOZ_ENABLE_GNOMEUI"; then
5743         AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5744     fi
5747 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5748 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5749 AC_SUBST(MOZ_GNOMEUI_LIBS)
5751 dnl ========================================================
5752 dnl = dbus support
5753 dnl ========================================================
5755 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
5756 then
5757     MOZ_ENABLE_DBUS=1
5759     MOZ_ARG_DISABLE_BOOL(dbus,
5760     [  --disable-dbus          Disable dbus support ],
5761         MOZ_ENABLE_DBUS=,
5762         MOZ_ENABLE_DBUS=1)
5764     if test "$MOZ_ENABLE_DBUS"
5765     then
5766         PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
5767         PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5768         AC_DEFINE(MOZ_ENABLE_DBUS)
5769     fi
5771 AC_SUBST(MOZ_ENABLE_DBUS)
5772 AC_SUBST(MOZ_DBUS_CFLAGS)
5773 AC_SUBST(MOZ_DBUS_LIBS)
5774 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5775 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5777 dnl ========================================================
5778 dnl = Build Personal Security Manager
5779 dnl ========================================================
5780 MOZ_ARG_DISABLE_BOOL(crypto,
5781 [  --disable-crypto        Disable crypto support (Personal Security Manager)],
5782     MOZ_PSM=,
5783     MOZ_PSM=1 )
5785 dnl ========================================================
5786 dnl = JS Debugger XPCOM component (js/jsd)
5787 dnl ========================================================
5788 MOZ_ARG_DISABLE_BOOL(jsd,
5789 [  --disable-jsd           Disable JavaScript debug library],
5790     MOZ_JSDEBUGGER=,
5791     MOZ_JSDEBUGGER=1)
5794 dnl ========================================================
5795 dnl = Disable IPC support for tabs and plugins
5796 dnl ========================================================
5797 MOZ_ARG_DISABLE_BOOL(ipc,
5798 [  --disable-ipc           Disable IPC supports for tabs and plugins],
5799     MOZ_IPC=,
5800     MOZ_IPC=1)
5802 if test -n "$MOZ_IPC"; then
5803     AC_DEFINE(MOZ_IPC)
5806 AC_SUBST(MOZ_IPC)
5808 dnl ========================================================
5809 dnl = Enable IPDL's "expensive" unit tests
5810 dnl ========================================================
5811 MOZ_IPDL_TESTS=
5813 MOZ_ARG_ENABLE_BOOL(ipdl-tests,
5814 [  --enable-ipdl-tests     Enable expensive IPDL tests],
5815     MOZ_IPDL_TESTS=1,
5816     MOZ_IPDL_TESTS=)
5818 if test -z "$MOZ_IPC" -a -n "$MOZ_IPDL_TESTS"; then
5819     AC_MSG_ERROR([--enable-ipdl-tests requires --enable-ipc])
5822 if test -n "$MOZ_IPDL_TESTS"; then
5823     AC_DEFINE(MOZ_IPDL_TESTS)
5826 AC_SUBST(MOZ_IPDL_TESTS)
5828 dnl ========================================================
5829 dnl = Disable plugin support
5830 dnl ========================================================
5831 MOZ_ARG_DISABLE_BOOL(plugins,
5832 [  --disable-plugins       Disable plugins support],
5833     MOZ_PLUGINS=,
5834     MOZ_PLUGINS=1)
5836 dnl ========================================================
5837 dnl = Disable building dbm
5838 dnl ========================================================
5839 MOZ_ARG_DISABLE_BOOL(dbm,
5840 [  --disable-dbm           Disable building dbm],
5841     NSS_DISABLE_DBM=1,
5842     NSS_DISABLE_DBM=)
5844 dnl bi-directional support always on
5845 IBMBIDI=1
5846 AC_DEFINE(IBMBIDI)
5848 dnl ========================================================
5849 dnl view source support on by default
5850 dnl ========================================================
5851 if test "$MOZ_VIEW_SOURCE"; then
5852     AC_DEFINE(MOZ_VIEW_SOURCE)
5855 dnl ========================================================
5856 dnl accessibility support on by default on all platforms 
5857 dnl except OS X.
5858 dnl ========================================================
5859 MOZ_ARG_DISABLE_BOOL(accessibility,
5860 [  --disable-accessibility Disable accessibility support (off by default on OS X)],
5861     ACCESSIBILITY=,
5862     ACCESSIBILITY=1 )
5863 if test "$ACCESSIBILITY"; then
5864     AC_DEFINE(ACCESSIBILITY)
5867 if test -n "$ACCESSIBILITY" -a "$COMPILE_ENVIRONMENT" = "1"; then
5868 case "$target" in
5869 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5870     if test "$ac_cv_header_atlbase_h" = "no"; then
5871         AC_MSG_ERROR([System header atlbase.h is not available. See http://developer.mozilla.org/en/docs/atlbase.h for details on fixing this problem.])
5872     fi
5873     if test "$ac_cv_header_oleacc_idl" = "no"; then
5874         AC_MSG_ERROR([System header oleacc.idl is not available. See http://developer.mozilla.org/en/docs/oleacc.idl for details on fixing this problem.])
5875     fi
5876     ;;
5877 esac
5880 dnl ========================================================
5881 dnl xpcom js loader support on by default
5882 dnl ========================================================
5883 if test "$MOZ_JSLOADER"; then
5884     AC_DEFINE(MOZ_JSLOADER)
5887 dnl ========================================================
5888 dnl Disable printing
5889 dnl ========================================================
5890 MOZ_ARG_DISABLE_BOOL(printing,
5891 [  --disable-printing      Disable printing support],
5892     NS_PRINTING=,
5893     NS_PRINTING=1)
5895 if test "$NS_PRINTING"; then
5896     AC_DEFINE(NS_PRINTING)
5897     AC_DEFINE(NS_PRINT_PREVIEW)
5899 dnl ========================================================
5900 dnl use native unicode converters
5901 dnl ========================================================
5902 MOZ_ARG_ENABLE_BOOL(native-uconv,
5903 [  --enable-native-uconv   Enable iconv support],
5904     MOZ_USE_NATIVE_UCONV=1,
5905     MOZ_USE_NATIVE_UCONV= )
5906 if test "$MOZ_USE_NATIVE_UCONV"; then
5907     AC_DEFINE(MOZ_USE_NATIVE_UCONV)
5909 if test "$OS_ARCH" != "WINCE" -a "$OS_ARCH" != "WINNT" -a "$MOZ_USE_NATIVE_UCONV" -a "$ac_cv_func_iconv" != "yes"; then
5910     AC_MSG_ERROR([iconv() not found.  Cannot enable native uconv support.])
5914 dnl ========================================================
5915 dnl Libeditor can be build as plaintext-only,
5916 dnl or as a full html and text editing component.
5917 dnl We build both by default.
5918 dnl ========================================================
5919 MOZ_ARG_ENABLE_BOOL(plaintext-editor-only,
5920 [  --enable-plaintext-editor-only
5921                           Allow only plaintext editing],
5922     MOZ_PLAINTEXT_EDITOR_ONLY=1,
5923     MOZ_PLAINTEXT_EDITOR_ONLY= )
5924 dnl Note the #define is MOZILLA, not MOZ, for compat with the Mac build.
5925 AC_SUBST(MOZ_PLAINTEXT_EDITOR_ONLY)
5927 dnl ========================================================
5928 dnl = Disable Fast Load
5929 dnl ========================================================
5930 MOZ_ARG_DISABLE_BOOL(xpcom-fastload,
5931 [  --disable-xpcom-fastload
5932                           Disable XPCOM fastload support],
5933     MOZ_NO_FAST_LOAD=1,
5934     MOZ_NO_FAST_LOAD=)
5936 AC_SUBST(MOZ_NO_FAST_LOAD)
5938 if test -n "$MOZ_NO_FAST_LOAD"; then
5939     AC_DEFINE(MOZ_NO_FAST_LOAD)
5942 dnl ========================================================
5943 dnl = Enable Raw Codecs
5944 dnl ========================================================
5945 MOZ_ARG_ENABLE_BOOL(raw,
5946 [  --enable-raw           Enable support for RAW media],
5947     MOZ_RAW=1,
5948     MOZ_RAW=)
5950 if test -n "$MOZ_RAW"; then
5951     AC_DEFINE(MOZ_RAW)
5952     MOZ_MEDIA=1
5955 AC_SUBST(MOZ_RAW)
5957 dnl ========================================================
5958 dnl = Disable Ogg Codecs
5959 dnl ========================================================
5960 MOZ_ARG_DISABLE_BOOL(ogg,
5961 [  --disable-ogg           Disable support for OGG media (Theora video and Vorbis audio)],
5962     MOZ_OGG=,
5963     MOZ_OGG=1)
5965 if test -n "$MOZ_OGG"; then
5966     AC_DEFINE(MOZ_OGG)
5967     MOZ_SYDNEYAUDIO=1
5968     MOZ_MEDIA=1
5969     case "$target_cpu" in
5970     arm*)
5971         MOZ_TREMOR=1
5972     ;;
5973     *)
5974         MOZ_VORBIS=1
5975     ;;
5976     esac
5978     dnl Checks for __attribute__(aligned()) directive
5979     AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
5980         [ac_cv_c_attribute_aligned],
5981         [ac_cv_c_attribute_aligned=0
5982          CFLAGS_save="${CFLAGS}"
5983          CFLAGS="${CFLAGS} -Werror"
5984          for ac_cv_c_attr_align_try in 64 32 16 8; do
5985            echo "trying $ac_cv_c_attr_align_try"
5986            AC_TRY_COMPILE([],
5987                           [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
5988                           [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
5989            if test "$ac_cv_c_attribute_aligned" != 0; then
5990              break;
5991            fi
5992          done
5993            CFLAGS="${CFLAGS_save}"])
5994     if test "${ac_cv_c_attribute_aligned}" != "0"; then
5995       AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
5996                          [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
5997     fi
6000 dnl ========================================================
6001 dnl = Disable VP8 decoder support
6002 dnl ========================================================
6003 MOZ_ARG_DISABLE_BOOL(webm,
6004 [  --disable-webm          Disable support for WebM media (VP8 video and Vorbis audio)],
6005     MOZ_WEBM=,
6006     MOZ_WEBM=1)
6008 dnl system libvpx Support
6009 dnl ========================================================
6010 MOZ_ARG_WITH_STRING(system-libvpx,
6011 [  --with-system-libvpx=[PFX]
6012                           Use system libvpx [installed at prefix PFX]],
6013     LIBVPX_DIR=$withval)
6015 MOZ_NATIVE_LIBVPX=
6016 MOZ_LIBVPX_INCLUDES=
6017 MOZ_LIBVPX_LIBS=
6019 if test -n "$MOZ_WEBM"; then
6020     AC_DEFINE(MOZ_WEBM)
6022     if test -n "$LIBVPX_DIR" -a "$LIBVPX_DIR" != no; then
6023         _SAVE_CFLAGS=$CFLAGS
6024         _SAVE_LDFLAGS=$LDFLAGS
6025         _SAVE_LIBS=$LIBS
6026         if test "${LIBVPX_DIR}" = "yes"; then
6027             LIBVPX_DIR=/usr
6028         fi
6029         CFLAGS="-I${LIBVPX_DIR}/include $CFLAGS"
6030         LDFLAGS="-L${LIBVPX_DIR}/lib $LDFLAGS"
6031         AC_CHECK_HEADER(vpx/vpx_decoder.h,
6032                         [if test ! -f "${LIBVPX_DIR}/include/vpx/vpx_decoder.h"; then
6033                              AC_MSG_ERROR([vpx/vpx_decoder.h found, but is not in ${LIBVPX_DIR}/include])
6034                          fi],
6035                         AC_MSG_ERROR([--with-system-libvpx requested but vpx/vpx_decoder.h not found]))
6036         AC_CHECK_LIB(vpx, vpx_codec_dec_init_ver,
6037                      [MOZ_NATIVE_LIBVPX=1
6038                       MOZ_LIBVPX_INCLUDES="-I${LIBVPX_DIR}/include"
6039                       MOZ_LIBVPX_LIBS="-L${LIBVPX_DIR}/lib -lvpx"],
6040                      ([--with-system-libvpx requested but symbol vpx_codec_dec_init_ver not found]))
6041         CFLAGS=$_SAVE_CFLAGS
6042         LDFLAGS=$_SAVE_LDFLAGS
6043         LIBS=$_SAVE_LIBS
6044     fi
6047 AC_SUBST(MOZ_NATIVE_LIBVPX)
6048 AC_SUBST(MOZ_LIBVPX_INCLUDES)
6049 AC_SUBST(MOZ_LIBVPX_LIBS)
6051 if test -n "$MOZ_WEBM" -a -z "$MOZ_NATIVE_LIBVPX"; then
6052     MOZ_SYDNEYAUDIO=1
6053     MOZ_MEDIA=1
6054     case "$target_cpu" in
6055     arm*)
6056         MOZ_TREMOR=1
6057     ;;
6058     *)
6059         MOZ_VORBIS=1
6060     ;;
6061     esac
6064     dnl Detect if we can use an assembler to compile optimized assembly for libvpx.
6065     dnl We currently require yasm on all x86 platforms and require yasm 1.1.0 on Win32.
6066     dnl We currently require gcc on all arm platforms.
6067     VPX_AS=$YASM
6068     VPX_ASM_SUFFIX=asm
6070     dnl See if we have assembly on this platform.  
6071     case "$OS_ARCH:$CPU_ARCH" in
6072     Linux:x86)
6073       VPX_ASFLAGS="-f elf32 -rnasm -pnasm"
6074       VPX_X86_ASM=1
6075     ;;
6076     Linux:x86_64)
6077       VPX_ASFLAGS="-f elf64 -rnasm -pnasm -DPIC"
6078       VPX_X86_ASM=1
6079     ;;
6080     SunOS:x86)
6081       VPX_ASFLAGS="-f elf32 -rnasm -pnasm"
6082       VPX_X86_ASM=1
6083     ;;
6084     SunOS:x86_64)
6085       VPX_ASFLAGS="-f elf64 -rnasm -pnasm -DPIC"
6086       VPX_X86_ASM=1
6087     ;;
6088     Darwin:x86)
6089       VPX_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC"
6090       VPX_X86_ASM=1
6091     ;;
6092     Darwin:x86_64)
6093       VPX_ASFLAGS="-f macho64 -rnasm -pnasm -DPIC"
6094       VPX_X86_ASM=1
6095     ;;
6096     WINNT:x86_64)
6097       if test -z "$GNU_CC"; then
6098         VPX_ASFLAGS="-f x64 -rnasm -pnasm"
6099         VPX_X86_ASM=1
6100       fi
6101     ;;
6102     WINNT:x86)
6103       if test -z "$GNU_CC"; then
6104         dnl Check for yasm 1.1 or greater.
6105         if test -n "$COMPILE_ENVIRONMENT" -a -z "$YASM"; then
6106           AC_MSG_ERROR([yasm 1.1 or greater is required to build libvpx on Win32, but it appears not to be installed.  Install it (included in MozillaBuild 1.5.1 and newer) or configure with --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
6107         elif test -n "$COMPILE_ENVIRONMENT" -a "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
6108           AC_MSG_ERROR([yasm 1.1 or greater is required to build libvpx on Win32, but you appear to have version $_YASM_MAJOR_VERSION.$_YASM_MINOR_VERSION.  Upgrade to the newest version (included in MozillaBuild 1.5.1 and newer) or configure with --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
6109         else
6110           VPX_ASFLAGS="-f win32 -rnasm -pnasm -DPIC"
6111           VPX_X86_ASM=1
6112         fi
6113       fi
6114     ;;
6115     *:arm*)
6116       if test -n "$GNU_AS" ; then
6117         VPX_AS=$AS
6118         dnl These flags are a lie; they're just used to enable the requisite
6119         dnl opcodes; actual arch detection is done at runtime.
6120         VPX_ASFLAGS="-march=armv7-a -mfpu=neon"
6121         VPX_DASH_C_FLAG="-c"
6122         VPX_AS_CONVERSION='$(PERL) $(topsrcdir)/media/libvpx/build/make/ads2gas.pl'
6123         VPX_ASM_SUFFIX="$ASM_SUFFIX"
6124         VPX_ARM_ASM=1
6125       fi
6126     esac
6128     if test -n "$COMPILE_ENVIRONMENT" -a -n "$VPX_X86_ASM" -a -z "$VPX_AS"; then
6129       AC_MSG_ERROR([yasm is a required build tool for this architecture when webm is enabled. You may either install yasm or --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
6130     fi
6132     if test -n "$VPX_X86_ASM"; then
6133       AC_DEFINE(VPX_X86_ASM)
6134     elif test -n "$VPX_ARM_ASM"; then
6135       AC_DEFINE(VPX_ARM_ASM)
6136     else
6137       AC_MSG_WARN([No assembler or assembly support for libvpx. Using unoptimized C routines.])
6138     fi
6141 dnl ========================================================
6142 dnl = Disable Wave decoder support
6143 dnl ========================================================
6144 MOZ_ARG_DISABLE_BOOL(wave,
6145 [  --disable-wave          Disable Wave decoder support],
6146     MOZ_WAVE=,
6147     MOZ_WAVE=1)
6149 if test -n "$MOZ_WAVE"; then
6150     AC_DEFINE(MOZ_WAVE)
6151     MOZ_SYDNEYAUDIO=1
6152     MOZ_MEDIA=1
6155 dnl ========================================================
6156 dnl = Handle dependent SYDNEYAUDIO and MEDIA defines
6157 dnl ========================================================
6159 if test -n "$MOZ_SYDNEYAUDIO"; then
6160     AC_DEFINE(MOZ_SYDNEYAUDIO)
6163 if test -n "$MOZ_MEDIA"; then
6164     AC_DEFINE(MOZ_MEDIA)
6167 if test -n "$MOZ_VORBIS" -a -n "$MOZ_TREMOR"; then
6168     AC_MSG_ERROR([MOZ_VORBIS and MOZ_TREMOR are mutually exclusive!  The build system should not allow them both to be set, but they are.  Please file a bug at https://bugzilla.mozilla.org/])
6171 if test -n "$MOZ_VORBIS"; then
6172     AC_DEFINE(MOZ_VORBIS)
6175 if test -n "$MOZ_TREMOR"; then
6176     AC_DEFINE(MOZ_TREMOR)
6179 dnl ========================================================
6180 dnl = Check alsa availability on Linux if using sydneyaudio
6181 dnl ========================================================
6183 dnl If using sydneyaudio with Linux, ensure that the alsa library is available
6184 if test -n "$MOZ_SYDNEYAUDIO"; then
6185    case "$target_os" in
6186 linux*)
6187       PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
6188          [echo "$MOZ_ALSA_PKG_ERRORS"
6189           AC_MSG_ERROR([Need alsa for Ogg, Wave or WebM decoding on Linux.  Disable with --disable-ogg --disable-wave --disable-webm.  (On Ubuntu, you might try installing the package libasound2-dev.)])])
6190       ;;
6191    esac
6194 dnl ========================================================
6195 dnl Splashscreen
6196 dnl ========================================================
6197 AC_ARG_ENABLE(splashscreen,
6198               [  --enable-splashscreen   display splashscreen while loading (default=no)],
6199               [enable_splash="yes"],[enable_splash=""])
6200 if test "x$enable_splash" = "xyes"; then
6201   MOZ_SPLASHSCREEN=1
6202   AC_DEFINE(MOZ_SPLASHSCREEN)
6204 AC_SUBST(MOZ_SPLASHSCREEN)
6206 dnl ========================================================
6207 dnl Permissions System
6208 dnl ========================================================
6209 MOZ_ARG_DISABLE_BOOL(permissions,
6210 [  --disable-permissions   Disable permissions (popup and cookie blocking)],
6211     MOZ_PERMISSIONS=,
6212     MOZ_PERMISSIONS=1
6215 dnl ========================================================
6216 dnl NegotiateAuth
6217 dnl ========================================================
6218 MOZ_ARG_DISABLE_BOOL(negotiateauth,
6219 [  --disable-negotiateauth Disable GSS-API negotiation ],
6220     MOZ_AUTH_EXTENSION=,
6221     MOZ_AUTH_EXTENSION=1 )
6223 dnl ========================================================
6224 dnl XTF
6225 dnl ========================================================
6226 MOZ_ARG_DISABLE_BOOL(xtf,
6227 [  --disable-xtf           Disable XTF (pluggable xml tags) support],
6228     MOZ_XTF=,
6229     MOZ_XTF=1 )
6230 if test "$MOZ_XTF"; then
6231   AC_DEFINE(MOZ_XTF)
6234 dnl ========================================================
6235 dnl Pref extensions (autoconfig and system-pref)
6236 dnl ========================================================
6237 MOZ_ARG_DISABLE_BOOL(pref-extensions,
6238 [  --disable-pref-extensions
6239                           Disable pref extensions such as autoconfig and
6240                           system-pref],
6241   MOZ_PREF_EXTENSIONS=,
6242   MOZ_PREF_EXTENSIONS=1 )
6244 dnl ========================================================
6245 dnl = Universalchardet
6246 dnl ========================================================
6247 MOZ_ARG_DISABLE_BOOL(universalchardet,
6248 [  --disable-universalchardet
6249                           Disable universal encoding detection],
6250   MOZ_UNIVERSALCHARDET=,
6251   MOZ_UNIVERSALCHARDET=1 )
6253 dnl ========================================================
6254 dnl JavaXPCOM
6255 dnl ========================================================
6256 case "${target}" in
6257 *-wince*)
6258     MOZ_JAVAXPCOM=
6259     ;;
6260 esac
6262 MOZ_ARG_ENABLE_BOOL(javaxpcom,
6263 [  --enable-javaxpcom
6264                           Enable Java-XPCOM bridge],
6265     MOZ_JAVAXPCOM=1,
6266     MOZ_JAVAXPCOM=)
6268 case "$host_os" in
6269   cygwin*|msvc*|mks*)
6270     if test -n "$JAVA_HOME"; then
6271       JAVA_HOME=`cygpath -u \`cygpath -m -s "$JAVA_HOME"\``
6272     fi
6273     ;;
6274   *mingw*)
6275     if test -n "$JAVA_HOME"; then
6276       JAVA_HOME=`cd "$JAVA_HOME" && pwd`
6277     fi
6278     ;;
6279 esac
6281 if test -n "${JAVA_BIN_PATH}"; then
6282   dnl Look for javac and jar in the specified path.
6283   JAVA_PATH="$JAVA_BIN_PATH"
6284 else
6285   dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
6286   JAVA_PATH="$JAVA_HOME/bin:$PATH"
6289 MOZ_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
6290 MOZ_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
6291 MOZ_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
6293 if test -n "${JAVA_BIN_PATH}" -o "$OS_TARGET" = Android; then
6294   if test -z "$JAVA" -o "$JAVA" = ":" -o -z "$JAVAC" -o "$JAVAC" = ":" -o -z "$JAR" -o "$JAR" = ":"; then
6295     AC_MSG_ERROR([The programs java, javac and jar were not found.  Set \$JAVA_HOME to your java sdk directory or use --with-java-bin-path={java-bin-dir}])
6296   fi
6299 if test -n "${MOZ_JAVAXPCOM}"; then
6300   if test -n "${JAVA_INCLUDE_PATH}"; then
6301     dnl Make sure jni.h exists in the given include path.
6302     if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
6303       AC_MSG_ERROR([jni.h was not found in given include path $JAVA_INCLUDE_PATH.])
6304     fi
6305   else
6306     case "$target_os" in
6307       darwin*)
6308         dnl Default to java system location
6309         JAVA_INCLUDE_PATH=/System/Library/Frameworks/JavaVM.framework/Headers
6310         ;;
6311       *)
6312         dnl Try $JAVA_HOME
6313         JAVA_INCLUDE_PATH="$JAVA_HOME/include"
6314         ;;
6315     esac
6316     if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
6317       AC_MSG_ERROR([The header jni.h was not found.  Set \$JAVA_HOME to your java sdk directory, use --with-java-bin-path={java-bin-dir}, or reconfigure with --disable-javaxpcom.])
6318     fi
6319   fi
6322 dnl ========================================================
6323 dnl = ANGLE OpenGL->D3D translator for WebGL
6324 dnl = * only applies to win32
6325 dnl = * enabled by default (shipping build); requires explicit --disable to disable
6326 dnl ========================================================
6327 MOZ_ANGLE=
6328 MOZ_DIRECTX_SDK_PATH=
6329 case "$target_os" in
6330     *msvc*|*mks*|*cygwin*|*mingw*)
6331         MOZ_ANGLE=1
6332         ;;
6333 esac
6335 if test -n "$MOZ_ANGLE"; then
6336 MOZ_ARG_DISABLE_BOOL(angle,
6337 [  --disable-angle     Disable building of ANGLE for WebGL->D3D translation],
6338     MOZ_ANGLE=,
6339     MOZ_ANGLE=1)
6341 if test -n "$MOZ_ANGLE"; then
6342   if test -z "$_WIN32_MSVC"; then
6343     AC_MSG_ERROR([Building ANGLE requires MSVC.  To build without ANGLE, reconfigure with --disable-angle.])
6344   fi
6346   AC_CHECK_HEADER(d3dx9.h, [], [MOZ_ANGLE=])
6348   if test -z "$MOZ_ANGLE"; then
6349     # Try again, but try to get the SDK path from the registry.  We're going to hardcode
6350     # the February 2010 SDK, since that's the one that's installed on the tinderboxen.
6351     MOZ_DIRECTX_SDK_PATH=`reg query 'HKLM\Software\Microsoft\DirectX\Microsoft DirectX SDK (February 2010)' //v InstallPath | grep REG_SZ | sed 's,  *, ,g' | cut -d' ' -f4-`
6352     if test -n "$MOZ_DIRECTX_SDK_PATH" ; then
6353       if test -f "$MOZ_DIRECTX_SDK_PATH"/include/d3dx9.h && test -f "$MOZ_DIRECTX_SDK_PATH"/lib/x86/dxguid.lib ; then
6354         AC_MSG_WARN([Found DirectX SDK in registry, using $MOZ_DIRECTX_SDK_PATH])
6355         MOZ_ANGLE=1
6356       fi
6357     fi
6358   fi
6360   if test -z "$MOZ_ANGLE"; then
6361     AC_MSG_WARN([Couldn't find d3dx9.h in your INCLUDE path, needed for ANGLE.  Please install the February 2010 DirectX SDK, or make another version available in your LIB and INCLUDE path env variables.  To explicitly build without ANGLE, reconfigure with --disable-angle.])
6362     AC_MSG_WARN([This will become an error in the future.])
6363   fi
6367 dnl ========================================================
6368 dnl = Breakpad crash reporting (on by default on supported platforms)
6369 dnl ========================================================
6371 case $target in
6372 i?86-*-mingw*|x86_64-*-mingw*)
6373   MOZ_CRASHREPORTER=1
6374   ;;
6375 i?86-apple-darwin*|powerpc-apple-darwin*|x86_64-apple-darwin*)
6376   MOZ_CRASHREPORTER=1
6377   ;;
6378 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
6379   MOZ_CRASHREPORTER=1
6380   ;;
6381 arm-android-eabi)
6382   MOZ_CRASHREPORTER=1
6383   ;;
6384 *solaris*)
6385   MOZ_CRASHREPORTER=1
6386   ;;
6387 esac
6389 MOZ_ARG_DISABLE_BOOL(crashreporter,
6390 [  --disable-crashreporter Disable breakpad crash reporting],
6391     MOZ_CRASHREPORTER=,
6392     MOZ_CRASHREPORTER=1)
6394 if test -n "$MOZ_CRASHREPORTER"; then
6395    AC_DEFINE(MOZ_CRASHREPORTER)
6397   if (test "$OS_TARGET" = "Linux" -o "$OS_ARCH" = "SunOS") && \
6398     test -z "$SKIP_LIBRARY_CHECKS"; then
6399     PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
6400     AC_SUBST(MOZ_GTHREAD_CFLAGS)
6401     AC_SUBST(MOZ_GTHREAD_LIBS)
6403     AC_CHECK_HEADERS([curl/curl.h], [], [AC_MSG_ERROR([Couldn't find curl/curl.h which is required for the crash reporter.  Use --disable-crashreporter to disable the crash reporter.])])
6404   fi
6407 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
6408 [  --with-crashreporter-enable-percent=NN
6409                           Enable sending crash reports by default on NN% of users. (default=100)],
6410 [ val=`echo $withval | sed 's/[^0-9]//g'`
6411     MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
6413 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
6414    MOZ_CRASHREPORTER_ENABLE_PERCENT=100
6416 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
6418 dnl ========================================================
6419 dnl = Enable compilation of specific extension modules
6420 dnl ========================================================
6422 MOZ_ARG_ENABLE_STRING(extensions,
6423 [  --enable-extensions     Enable extensions],
6424 [ for option in `echo $enableval | sed 's/,/ /g'`; do
6425     if test "$option" = "yes" -o "$option" = "all"; then
6426         AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
6427     elif test "$option" = "no" -o "$option" = "none"; then
6428         MOZ_EXTENSIONS=""
6429     elif test "$option" = "default"; then
6430         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
6431     elif test `echo "$option" | grep -c \^-` != 0; then
6432         option=`echo $option | sed 's/^-//'`
6433         MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
6434     else
6435         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
6436     fi
6437 done],
6438     MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
6440 if test -z "$MOZ_ENABLE_GNOMEVFS" -a -z "$MOZ_GNOMEVFS_LIBS" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6441     # Suppress warning on non-X11 platforms
6442     if test -n "$MOZ_X11"; then
6443         AC_MSG_WARN([Cannot build gnomevfs without required libraries. Removing gnomevfs from MOZ_EXTENSIONS.])
6444     fi
6445     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6448 dnl Do not build gnomevfs with libxul based apps
6449 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6450     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6453 if test -z "$MOZ_ENABLE_GIO" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6454     # Suppress warning on non-X11 platforms
6455     if test -n "$MOZ_X11"; then
6456         AC_MSG_WARN([Cannot build gio without required libraries. Removing gio from MOZ_EXTENSIONS.])
6457     fi
6458     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6461 dnl Do not build gio with libxul based apps
6462 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6463     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6466 if test -z "$MOZ_JSDEBUGGER" -a `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
6467     AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
6468     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
6471 dnl This might be temporary: build tridentprofile only on Windows
6472 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0 && test "$OS_ARCH" != "WINNT"; then
6473     AC_MSG_WARN([tridentprofile extension works only on Windows at this time. Removing tridentprofile from MOZ_EXTENSIONS.])
6474     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
6477 dnl cookie must be built before tridentprofile. put it at list's end.
6478 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0; then
6479   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
6480   MOZ_EXTENSIONS="$MOZ_EXTENSIONS tridentprofile"
6483 dnl xforms requires xtf
6484 if test -z "$MOZ_XTF" -a `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
6485     AC_MSG_WARN([Cannot build XForms without XTF support.  Removing XForms from MOZ_EXTENSIONS.])
6486     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
6489 if test `echo "$MOZ_EXTENSIONS" | grep -c auth` -ne 0; then
6490     AC_MSG_WARN([auth is no longer an extension, use --disable-negotiateauth to disable.])
6491     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|auth||g'`
6494 if test `echo "$MOZ_EXTENSIONS" | grep -c 'cookie\|permissions'` -ne 0; then
6495     AC_MSG_WARN([cookie and permissions are no longer extensions, use --disable-permissions to disable.])
6496     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|cookie||g; s|permissions||g'`
6499 if test `echo "$MOZ_EXTENSIONS" | grep -c pref` -ne 0; then
6500     AC_MSG_WARN([pref is no longer an extension, use --disable-pref-extensions to disable.])
6501     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|pref||g'`
6504 if test `echo "$MOZ_EXTENSIONS" | grep -c universalchardet` -ne 0; then
6505     AC_MSG_WARN([universalchardet is no longer an extension, use --disable-universalchardet to disable.])
6506     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|universalchardet||g'`
6509 if test `echo "$MOZ_EXTENSIONS" | grep -c java` -ne 0; then
6510     AC_MSG_WARN([java is no longer an extension, use --enable-javaxpcom to enable.])
6511     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|java||g'`
6514 if test `echo "$MOZ_EXTENSIONS" | grep -c spellcheck` -ne 0; then
6515     AC_MSG_WARN([spellcheck is no longer an extension.])
6516     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|spellcheck||g'`
6519 dnl Remove dupes
6520 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
6522 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
6523 dnl when trying to build a nonexistent extension.
6524 for extension in $MOZ_EXTENSIONS; do
6525     if test ! -d "${srcdir}/extensions/${extension}"; then
6526         AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
6527     fi
6528 done
6530 dnl ========================================================
6531 dnl MathML on by default
6532 dnl ========================================================
6533 MOZ_ARG_DISABLE_BOOL(mathml,
6534 [  --disable-mathml        Disable MathML support],
6535     MOZ_MATHML=,
6536     MOZ_MATHML=1 )
6537 if test "$MOZ_MATHML"; then
6538   AC_DEFINE(MOZ_MATHML)
6541 dnl ========================================================
6542 dnl Keeping AC_DEFINE(MOZ_SVG) for the moment in case of something needs it.
6543 dnl ========================================================
6544 AC_DEFINE(MOZ_SVG)
6546 dnl ========================================================
6547 dnl SMIL
6548 dnl ========================================================
6549 MOZ_SMIL=1
6550 MOZ_ARG_DISABLE_BOOL(smil,
6551 [  --disable-smil          Disable SMIL animation support],
6552     MOZ_SMIL=,
6553     MOZ_SMIL=1 )
6554 if test -n "$MOZ_SMIL"; then
6555   AC_DEFINE(MOZ_SMIL)
6558 dnl ========================================================
6559 dnl Build Freetype in the tree
6560 dnl ========================================================
6561 MOZ_ARG_ENABLE_BOOL(tree-freetype,
6562 [  --enable-tree-freetype  Enable Tree FreeType],
6563     MOZ_TREE_FREETYPE=1,
6564     MOZ_TREE_FREETYPE= )
6565 if test -n "$MOZ_TREE_FREETYPE"; then
6566    if test -n "$_WIN32_MSVC"; then
6567       AC_ERROR("building with in-tree freetype is not supported on MSVC")
6568    fi
6569    AC_DEFINE(MOZ_TREE_FREETYPE)
6570    AC_SUBST(MOZ_TREE_FREETYPE)
6571    MOZ_ENABLE_CAIRO_FT=1       
6572    FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
6573    FT2_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6574    CAIRO_FT_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6575    FT2_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6576    CAIRO_FT_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6577    AC_DEFINE(HAVE_FT_BITMAP_SIZE_Y_PPEM)
6578    AC_DEFINE(HAVE_FT_GLYPHSLOT_EMBOLDEN)
6579    AC_DEFINE(HAVE_FT_LOAD_SFNT_TABLE)
6580    AC_SUBST(CAIRO_FT_CFLAGS)
6584 dnl ========================================================
6585 dnl Installer
6586 dnl ========================================================
6587 case "$target_os" in
6588     aix*|solaris*|linux*|msvc*|mks*|cygwin*|mingw*|os2*|wince*|winmo*)
6589         MOZ_INSTALLER=1
6590         ;;
6591 esac
6593 MOZ_ARG_DISABLE_BOOL(installer,
6594 [  --disable-installer     Disable building of installer],
6595     MOZ_INSTALLER=,
6596     MOZ_INSTALLER=1)
6597 if test -n "$MOZ_INSTALLER" -a "$OS_ARCH" = "WINNT"; then
6598     # Disable installer for Windows builds that use the new toolkit if the
6599     # required major version and minimum minor version of Unicode NSIS isn't in
6600     # the path.
6601     REQ_NSIS_MAJOR_VER=2
6602     MIN_NSIS_MINOR_VER=33
6603     MOZ_PATH_PROGS(MAKENSISU, $MAKENSISU makensisu-2.46 makensisu makensis)
6604     if test -z "$MAKENSISU" -o "$MAKENSISU" = ":"; then
6605         AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or Unicode NSIS with a major version of $REQ_NSIS_MAJOR_VER and a minimum minor version of $MIN_NSIS_MINOR_VER in your path. To build without the installer reconfigure using --disable-installer.])
6606     fi
6607     changequote(,)
6608     MAKENSISU_VER=`"$MAKENSISU" -version 2>/dev/null | sed -e '/-Unicode/!s/.*//g' -e 's/^v\([0-9]\+\.[0-9]\+\)\-Unicode$/\1/g'`
6609     changequote([,])
6610     if test ! "$MAKENSISU_VER" = ""; then
6611         MAKENSISU_MAJOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $1 }'`
6612         MAKENSISU_MINOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $2 }'`
6613     fi
6614     AC_MSG_CHECKING([for Unicode NSIS with major version == $REQ_NSIS_MAJOR_VER and minor version >= $MIN_NSIS_MINOR_VER])
6615     if test "$MAKENSISU_VER" = "" ||
6616        test ! "$MAKENSISU_MAJOR_VER" = "$REQ_NSIS_MAJOR_VER" -o \
6617             ! "$MAKENSISU_MINOR_VER" -ge $MIN_NSIS_MINOR_VER; then
6618         AC_MSG_RESULT([no])
6619         AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or Unicode NSIS with a major version of $REQ_NSIS_MAJOR_VER and a minimum minor version of $MIN_NSIS_MINOR_VER in your path. To build without the installer reconfigure using --disable-installer.])
6620     fi
6621     AC_MSG_RESULT([yes])
6622     MAKENSISU="${CYGWIN_WRAPPER} $MAKENSISU"
6625 AC_SUBST(MOZ_INSTALLER)
6627 AC_MSG_CHECKING([for tar archiver])
6628 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
6629 if test -z "$TAR"; then
6630     AC_MSG_ERROR([no tar archiver found in \$PATH])
6632 AC_MSG_RESULT([$TAR])
6633 AC_SUBST(TAR)
6635 AC_MSG_CHECKING([for wget])
6636 AC_CHECK_PROGS(WGET, wget, "")
6637 AC_MSG_RESULT([$WGET])
6638 AC_SUBST(WGET)
6640 dnl ========================================================
6641 dnl Updater
6642 dnl ========================================================
6644 MOZ_ARG_DISABLE_BOOL(updater,
6645 [  --disable-updater       Disable building of updater],
6646     MOZ_UPDATER=,
6647     MOZ_UPDATER=1 )
6649 if test -n "$MOZ_UPDATER"; then
6650     AC_DEFINE(MOZ_UPDATER)
6653 # app update channel is 'default' when not supplied.
6654 MOZ_ARG_ENABLE_STRING([update-channel],
6655 [  --enable-update-channel=CHANNEL
6656                           Select application update channel (default=default)],
6657     MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
6659 if test -z "$MOZ_UPDATE_CHANNEL"; then
6660     MOZ_UPDATE_CHANNEL=default
6662 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
6663 AC_SUBST(MOZ_UPDATE_CHANNEL)
6665 # tools/update-packaging is not checked out by default.
6666 MOZ_ARG_ENABLE_BOOL(update-packaging,
6667 [  --enable-update-packaging
6668                           Enable tools/update-packaging],
6669     MOZ_UPDATE_PACKAGING=1,
6670     MOZ_UPDATE_PACKAGING= )
6671 AC_SUBST(MOZ_UPDATE_PACKAGING)
6673 dnl ========================================================
6674 dnl ActiveX
6675 dnl ========================================================
6677 MOZ_ARG_DISABLE_BOOL(xpconnect-idispatch,
6678 [  --disable-xpconnect-idispatch
6679                           Disable building of xpconnect support for IDispatch
6680                           (win32 only)],
6681     XPC_IDISPATCH_SUPPORT=,
6682     XPC_IDISPATCH_SUPPORT=1)
6683 AC_SUBST(XPC_IDISPATCH_SUPPORT)
6685 MOZ_ARG_DISABLE_BOOL(activex,
6686 [  --disable-activex       Disable building of ActiveX control (win32 only)],
6687     MOZ_NO_ACTIVEX_SUPPORT=1,
6688     MOZ_NO_ACTIVEX_SUPPORT= )
6689 AC_SUBST(MOZ_NO_ACTIVEX_SUPPORT)
6691 MOZ_ARG_ENABLE_BOOL(activex-scripting,
6692 [  --enable-activex-scripting
6693                           Enable building of ActiveX scripting support (win32)],
6694     MOZ_ACTIVEX_SCRIPTING_SUPPORT=1,
6695     MOZ_ACTIVEX_SCRIPTING_SUPPORT=)
6696 AC_SUBST(MOZ_ACTIVEX_SCRIPTING_SUPPORT)
6698 if test -n "$MOZ_NO_ACTIVEX_SUPPORT" -a -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT";
6699 then
6700     AC_MSG_ERROR([Cannot enable ActiveX scripting support when ActiveX support is disabled.])
6703 if test "$COMPILE_ENVIRONMENT" = "1"; then
6704 if test -n "$XPC_IDISPATCH_SUPPORT" -o -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
6705 case "$target" in
6706 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
6707     if test "$ac_cv_header_atlbase_h" = "no"; then
6708         AC_MSG_ERROR([System header atlbase.h is not available. See http://developer.mozilla.org/en/docs/atlbase.h for details on fixing this problem.])
6709     fi
6710     ;;
6711 esac
6715 dnl ========================================================
6716 dnl leaky
6717 dnl ========================================================
6718 MOZ_ARG_ENABLE_BOOL(leaky,
6719 [  --enable-leaky          Build leaky memory tool],
6720     MOZ_LEAKY=1,
6721     MOZ_LEAKY=)
6724 dnl ========================================================
6725 dnl build the tests by default
6726 dnl ========================================================
6727 MOZ_ARG_DISABLE_BOOL(tests,
6728 [  --disable-tests         Do not build test libraries & programs],
6729     ENABLE_TESTS=,
6730     ENABLE_TESTS=1 )
6732 dnl ========================================================
6733 dnl parental controls (for Windows Vista)
6734 dnl ========================================================
6735 MOZ_ARG_DISABLE_BOOL(parental-controls,
6736 [  --disable-parental-controls
6737                           Do not build parental controls],
6738    MOZ_DISABLE_PARENTAL_CONTROLS=1,
6739    MOZ_DISABLE_PARENTAL_CONTROLS=)
6740 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
6741     AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
6744 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
6746 dnl ========================================================
6747 dnl = Disable DOMCrypto
6748 dnl ========================================================
6749 if test -n "$MOZ_DISABLE_DOMCRYPTO"; then
6750     AC_DEFINE(MOZ_DISABLE_DOMCRYPTO)
6753 dnl ========================================================
6754 dnl =
6755 dnl = Module specific options
6756 dnl =
6757 dnl ========================================================
6758 MOZ_ARG_HEADER(Individual module options)
6760 dnl ========================================================
6761 dnl = Disable feed handling components
6762 dnl ========================================================
6763 MOZ_ARG_DISABLE_BOOL(feeds,
6764 [  --disable-feeds         Disable feed handling and processing components],
6765     MOZ_FEEDS=,
6766     MOZ_FEEDS=1 )
6767 if test -n "$MOZ_FEEDS"; then
6768     AC_DEFINE(MOZ_FEEDS)
6769 else
6770     if test "$MOZ_BUILD_APP" = "browser"; then
6771         AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
6772     fi
6775 dnl ========================================================
6776 dnl = Enable mozStorage
6777 dnl ========================================================
6778 dnl Implicitly enabled by default if building calendar or places
6779 MOZ_ARG_ENABLE_BOOL(storage,
6780 [  --enable-storage        Enable mozStorage module and related components],
6781     MOZ_STORAGE=1,
6782     MOZ_STORAGE= )
6783 if test -n "$MOZ_STORAGE"; then
6784     AC_DEFINE(MOZ_STORAGE)
6787 dnl ========================================================
6788 dnl Check for sqlite
6789 dnl ========================================================
6791 MOZ_NATIVE_SQLITE=
6792 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6793 [  --enable-system-sqlite  Use system sqlite (located with pkgconfig)],
6794 MOZ_NATIVE_SQLITE=1,
6795 MOZ_NATIVE_SQLITE= )
6797 if test -z "$MOZ_NATIVE_SQLITE"
6798 then
6799     SQLITE_CFLAGS=
6800     SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,mozsqlite3,$(DIST)/lib)'
6801 else
6802     dnl ============================
6803     dnl === SQLite Version check ===
6804     dnl ============================
6805     dnl Check to see if the system SQLite package is new enough.
6806     PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6808     dnl ==================================
6809     dnl === SQLITE_SECURE_DELETE check ===
6810     dnl ==================================
6811     dnl Check to see if the system SQLite package is compiled with
6812     dnl SQLITE_SECURE_DELETE enabled.
6813     AC_MSG_CHECKING(for SQLITE_SECURE_DELETE support in system SQLite)
6814     _SAVE_CFLAGS="$CFLAGS"
6815     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6816     _SAVE_LIBS="$LIBS"
6817     LIBS="$LIBS $SQLITE_LIBS"
6818     AC_CACHE_VAL(ac_cv_sqlite_secure_delete,[
6819         AC_TRY_RUN([
6820             #include "sqlite3.h"
6822             int main(int argc, char **argv){
6823               return !sqlite3_compileoption_used("SQLITE_SECURE_DELETE");
6824             }],
6825             ac_cv_sqlite_secure_delete=yes,
6826             ac_cv_sqlite_secure_delete=no,
6827             ac_cv_sqlite_secure_delete=no
6828         )
6829     ])
6830     AC_MSG_RESULT($ac_cv_sqlite_secure_delete)
6831     CFLAGS="$_SAVE_CFLAGS"
6832     LIBS="$_SAVE_LIBS"
6833     if test "x$ac_cv_sqlite_secure_delete" = "xno"; then
6834         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_SECURE_DELETE.])
6835     fi
6837     dnl ===============================
6838     dnl === SQLITE_THREADSAFE check ===
6839     dnl ===============================
6840     dnl Check to see if the system SQLite package is compiled with
6841     dnl SQLITE_THREADSAFE enabled.
6842     AC_MSG_CHECKING(for SQLITE_THREADSAFE support in system SQLite)
6843     _SAVE_CFLAGS="$CFLAGS"
6844     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6845     _SAVE_LIBS="$LIBS"
6846     LIBS="$LIBS $SQLITE_LIBS"
6847     AC_CACHE_VAL(ac_cv_sqlite_threadsafe,[
6848         AC_TRY_RUN([
6849             #include "sqlite3.h"
6851             int main(int argc, char **argv){
6852               return !sqlite3_compileoption_used("SQLITE_THREADSAFE=1");
6853             }],
6854             ac_cv_sqlite_threadsafe=yes,
6855             ac_cv_sqlite_threadsafe=no,
6856             ac_cv_sqlite_threadsafe=no
6857         )
6858     ])
6859     AC_MSG_RESULT($ac_cv_sqlite_threadsafe)
6860     CFLAGS="$_SAVE_CFLAGS"
6861     LIBS="$_SAVE_LIBS"
6862     if test "x$ac_cv_sqlite_threadsafe" = "xno"; then
6863         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_THREADSAFE.])
6864     fi
6866     dnl ================================
6867     dnl === SQLITE_ENABLE_FTS3 check ===
6868     dnl ================================
6869     dnl check to see if the system SQLite package is compiled with
6870     dnl SQLITE_ENABLE_FTS3 enabled.
6871     AC_MSG_CHECKING(for SQLITE_ENABLE_FTS3 support in system SQLite)
6872     _SAVE_CFLAGS="$CFLAGS"
6873     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6874     _SAVE_LIBS="$LIBS"
6875     LIBS="$LIBS $SQLITE_LIBS"
6876     AC_CACHE_VAL(ac_cv_sqlite_enable_fts3,[
6877         AC_TRY_RUN([
6878             #include "sqlite3.h"
6880             int main(int argc, char **argv){
6881               return !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3");
6882             }],
6883             ac_cv_sqlite_enable_fts3=yes,
6884             ac_cv_sqlite_enable_fts3=no,
6885             ac_cv_sqlite_enable_fts3=no
6886         )
6887     ])
6888     AC_MSG_RESULT($ac_cv_sqlite_enable_fts3)
6889     CFLAGS="$_SAVE_CFLAGS"
6890     LIBS="$_SAVE_LIBS"
6891     if test "x$ac_cv_sqlite_enable_fts3" = "xno"; then
6892         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_FTS3.])
6893     fi
6895     dnl =========================================
6896     dnl === SQLITE_ENABLE_UNLOCK_NOTIFY check ===
6897     dnl =========================================
6898     dnl check to see if the system SQLite package is compiled with
6899     dnl SQLITE_ENABLE_UNLOCK_NOTIFY enabled.
6900     AC_MSG_CHECKING(for SQLITE_ENABLE_UNLOCK_NOTIFY support in system SQLite)
6901     _SAVE_CFLAGS="$CFLAGS"
6902     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6903     _SAVE_LIBS="$LIBS"
6904     LIBS="$LIBS $SQLITE_LIBS"
6905     AC_CACHE_VAL(ac_cv_sqlite_enable_unlock_notify,[
6906         AC_TRY_RUN([
6907             #include "sqlite3.h"
6909             int main(int argc, char **argv){
6910               return !sqlite3_compileoption_used("SQLITE_ENABLE_UNLOCK_NOTIFY");
6911             }],
6912             ac_cv_sqlite_enable_unlock_notify=yes,
6913             ac_cv_sqlite_enable_unlock_notify=no,
6914             ac_cv_sqlite_enable_unlock_notify=no
6915         )
6916     ])
6917     AC_MSG_RESULT($ac_cv_sqlite_enable_unlock_notify)
6918     CFLAGS="$_SAVE_CFLAGS"
6919     LIBS="$_SAVE_LIBS"
6920     if test "x$ac_cv_sqlite_enable_unlock_notify" = "xno"; then
6921         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_UNLOCK_NOTIFY.])
6922     fi
6925 AC_SUBST(MOZ_NATIVE_SQLITE)
6927 dnl ========================================================
6928 dnl = Enable help viewer (off by default)
6929 dnl ========================================================
6930 if test -n "$MOZ_HELP_VIEWER"; then
6931      dnl Do this if defined in confvars.sh
6932      AC_DEFINE(MOZ_HELP_VIEWER)
6935 dnl ========================================================
6936 dnl = Enable safe browsing (anti-phishing)
6937 dnl ========================================================
6938 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6939 [  --enable-safe-browsing  Enable safe browsing (anti-phishing) implementation],
6940     MOZ_SAFE_BROWSING=1,
6941     MOZ_SAFE_BROWSING= )
6942 if test -n "$MOZ_SAFE_BROWSING"; then
6943     AC_DEFINE(MOZ_SAFE_BROWSING)
6945 AC_SUBST(MOZ_SAFE_BROWSING)
6947 dnl ========================================================
6948 dnl = Enable faststart component
6949 dnl ========================================================
6950 MOZ_ARG_ENABLE_BOOL(faststart,
6951 [  --enable-faststart      Enable the faststart component],
6952     MOZ_FASTSTART=1,
6953     MOZ_FASTSTART= )
6954 if test -n "$MOZ_FASTSTART"; then
6955     AC_DEFINE(MOZ_FASTSTART)
6957 AC_SUBST(MOZ_FASTSTART)
6959 dnl ========================================================
6960 dnl = Enable url-classifier
6961 dnl ========================================================
6962 dnl Implicitly enabled by default if building with safe-browsing
6963 if test -n "$MOZ_SAFE_BROWSING"; then
6964     MOZ_URL_CLASSIFIER=1
6966 MOZ_ARG_ENABLE_BOOL(url-classifier,
6967 [  --enable-url-classifier Enable url classifier module],
6968     MOZ_URL_CLASSIFIER=1,
6969     MOZ_URL_CLASSIFIER= )
6970 if test -n "$MOZ_URL_CLASSIFIER"; then
6971     AC_DEFINE(MOZ_URL_CLASSIFIER)
6973 AC_SUBST(MOZ_URL_CLASSIFIER)
6975 dnl ========================================================
6976 dnl = Disable zipwriter
6977 dnl ========================================================
6978 MOZ_ARG_DISABLE_BOOL(zipwriter,
6979 [  --disable-zipwriter     Disable zipwriter component],
6980     MOZ_ZIPWRITER=,
6981     MOZ_ZIPWRITER=1 )
6982 AC_SUBST(MOZ_ZIPWRITER)
6984 dnl ========================================================
6985 dnl = libconic
6986 dnl ========================================================
6987 dnl superseded by QtNetwork starting from 4.7
6988 MOZ_ENABLE_LIBCONIC=1
6990 if test -n "$MOZ_ENABLE_QT"; then
6991   if test "$MOZ_ENABLE_QTNETWORK"; then
6992     MOZ_ENABLE_LIBCONIC=
6993   fi
6996 MOZ_ARG_DISABLE_BOOL(libconic,
6997 [  --disable-libconic      Disable libconic],
6998     MOZ_ENABLE_LIBCONIC=,
6999     MOZ_ENABLE_LIBCONIC=1 )
7001 if test -n "$MOZ_ENABLE_LIBCONIC"; then
7002     PKG_CHECK_MODULES(LIBCONIC, conic,
7003                       MOZ_ENABLE_LIBCONIC=1,
7004                       MOZ_ENABLE_LIBCONIC=)
7006 if test "$MOZ_ENABLE_LIBCONIC"; then
7007     AC_DEFINE(MOZ_ENABLE_LIBCONIC)
7010 AC_SUBST(MOZ_ENABLE_LIBCONIC)
7011 AC_SUBST(LIBCONIC_CFLAGS)
7012 AC_SUBST(LIBCONIC_LIBS)
7014 dnl ========================================================
7015 dnl = Maemo checks
7016 dnl ========================================================
7018 MAEMO_SDK_TARGET_VER=-1
7020 MOZ_ARG_WITH_STRING(maemo-version,
7021 [  --with-maemo-version=MAEMO_SDK_TARGET_VER
7022                           Maemo SDK Version],
7023   MAEMO_SDK_TARGET_VER=$withval)
7025 case "$MAEMO_SDK_TARGET_VER" in
7027     MOZ_PLATFORM_MAEMO=5
7028     ;;
7031     MOZ_PLATFORM_MAEMO=6
7032     ;;
7035     dnl We aren't compiling for Maemo, move on.
7036     ;;
7038     AC_MSG_ERROR([Unknown Maemo Version.  Try setting --with-maemo-version to 5 or 6.])
7039     ;;
7040 esac
7042 if test $MOZ_PLATFORM_MAEMO; then
7043    AC_DEFINE_UNQUOTED([MOZ_PLATFORM_MAEMO], $MOZ_PLATFORM_MAEMO)
7045    if test -z "$MOZ_ENABLE_DBUS"; then
7046        AC_MSG_ERROR([DBus is required when building for Maemo])
7047    fi
7049    MOZ_GFX_OPTIMIZE_MOBILE=1
7050    MOZ_WEBGL_GLX=
7051    MOZ_MAEMO_LIBLOCATION=
7053    if test $MOZ_PLATFORM_MAEMO = 5; then
7054       dnl if we have Xcomposite we should also have Xdamage and Xfixes
7055       AC_CHECK_HEADERS([X11/extensions/Xdamage.h], [],
7056                        [AC_MSG_ERROR([Couldn't find X11/extensions/Xdamage.h which is required for composited plugins.])])
7057       AC_CHECK_LIB(Xcomposite, XCompositeRedirectWindow, [XCOMPOSITE_LIBS="-lXcomposite -lXdamage -lXfixes"],
7058                    [MISSING_X="$MISSING_X -lXcomposite"], $XLIBS)
7060       AC_SUBST(XCOMPOSITE_LIBS)
7062       PKG_CHECK_MODULES(LIBHILDONMIME,libhildonmime, _LIB_FOUND=1, _LIB_FOUND=)
7063       MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONMIME_LIBS"
7064       MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONMIME_CFLAGS"
7065       if test -z "$_LIB_FOUND"; then
7066          AC_MSG_ERROR([Hildon Mime is required when building for Maemo])
7067       fi
7070       PKG_CHECK_MODULES(LIBOSSO,libosso, _LIB_FOUND=1, _LIB_FOUND=)
7071       MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBOSSO_LIBS"
7072       MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBOSSO_CFLAGS"
7073       if test -z "$_LIB_FOUND"; then
7074          AC_MSG_ERROR([LibOSSO is required when building for Maemo])
7075       fi
7077       PKG_CHECK_MODULES(LIBHILDONFM,hildon-fm-2, _LIB_FOUND=1, _LIB_FOUND=)
7078       MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONFM_LIBS"
7079       MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONFM_CFLAGS"
7080       if test -z "$_LIB_FOUND"; then
7081          AC_MSG_ERROR([Hildon FM-2 is required when building for Maemo])
7082       fi
7084    fi
7085    if test $MOZ_PLATFORM_MAEMO = 6; then
7086       PKG_CHECK_MODULES(LIBCONTENTACTION, contentaction-0.1, _LIB_FOUND=1, _LIB_FOUND=)
7087       MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBCONTENTACTION_LIBS"
7088       MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBCONTENTACTION_CFLAGS"
7089       if test -z "$_LIB_FOUND"; then
7090          AC_MSG_ERROR([libcontentaction is required when build for Maemo])
7091       fi
7092      
7093      MOZ_THUMB2=1
7094      PKG_CHECK_MODULES(MOZ_MEEGOTOUCH, meegotouchcore)
7095      MOZ_ENABLE_MEEGOTOUCH=1
7096      AC_DEFINE(MOZ_ENABLE_MEEGOTOUCH)
7097      MOZ_QT_CFLAGS="$MOZ_MEEGOTOUCH_CFLAGS $MOZ_QT_CFLAGS"
7098      MOZ_QT_LIBS="$MOZ_MEEGOTOUCH_LIBS $MOZ_QT_LIBS"
7099    fi
7101    PKG_CHECK_MODULES(LIBLOCATION,liblocation, _LIB_FOUND=1, _LIB_FOUND=)
7102    MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBLOCATION_LIBS"
7103    MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBLOCATION_CFLAGS"
7104    if test "$_LIB_FOUND"; then
7105       MOZ_MAEMO_LIBLOCATION=1
7106       AC_DEFINE(MOZ_MAEMO_LIBLOCATION)
7107    else
7108       AC_MSG_WARN([Cannot liblocation-dev. Disabling Maemo geolocation.])
7109    fi
7110    AC_SUBST(MOZ_MAEMO_LIBLOCATION)
7112    PKG_CHECK_MODULES(LIBMEEGOTOUCHSHARE, ShareUiInterface-maemo-meegotouch >= 0.3.31 mdatauri, _LIB_FOUND=1, _LIB_FOUND=)
7113    MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBMEEGOTOUCHSHARE_LIBS"
7114    MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBMEEGOTOUCHSHARE_CFLAGS"
7115    if test "$_LIB_FOUND"; then
7116       MOZ_ENABLE_MEEGOTOUCHSHARE=1
7117       AC_DEFINE(MOZ_ENABLE_MEEGOTOUCHSHARE)
7118    else
7119       AC_MSG_WARN([Cannot find maemo-meegotouch-interfaces-dev or libmdatauri-dev. Disabling meegotouch share ui.])
7120    fi
7121    AC_SUBST(MOZ_ENABLE_MEEGOTOUCHSHARE)
7123    AC_SUBST(MOZ_PLATFORM_MAEMO_LIBS)
7124    AC_SUBST(MOZ_PLATFORM_MAEMO_CFLAGS)
7127 dnl ========================================================
7128 dnl = Enable building the Thumb2 instruction set
7129 dnl ========================================================
7130 MOZ_ARG_ENABLE_BOOL(thumb2,
7131  [  --enable-thumb2         Enable Thumb2 instruction set],
7132     MOZ_THUMB2=1,
7133     MOZ_THUMB2=)
7135 if test -n "$MOZ_THUMB2"; then
7136   case "$target_cpu" in
7137     arm*)
7138       if test "$GNU_CC"; then
7139         CFLAGS="$CFLAGS -march=armv7-a -mthumb -Wa, -march=armv7-a -Wa, -mthumb"
7140         CXXFLAGS="$CXXFLAGS -march=armv7-a -mthumb -Wa, -march=armv7-a -Wa, -mthumb"
7141         ASFLAGS="$ASFLAGS -march=armv7-a -mthumb"
7142       else
7143         AC_MSG_ERROR([--enable-thumb2 is not supported for non-GNU toolchains])
7144       fi
7145     ;;
7146     *)
7147       AC_MSG_ERROR([--enable-thumb2 is not supported for non-ARM CPU architectures])
7148     ;;
7149   esac
7150 else
7151   case "$target_cpu" in
7152     arm*)
7153       if test "$GNU_CC"; then
7154        CFLAGS="$CFLAGS -march=armv5te -mthumb-interwork -Wa, -march=armv5te -Wa, -mthumb-interwork"
7155         CXXFLAGS="$CXXFLAGS -march=armv5te -mthumb-interwork -Wa, -march=armv5te -Wa, -mthumb-interwork"
7156         ASFLAGS="$ASFLAGS -march=armv5te -mthumb-interwork"
7157       fi
7158       ;;
7159   esac
7162 AC_SUBST(MOZ_THUMB2)
7164 dnl ========================================================
7165 dnl = faststripe theme
7166 dnl ========================================================
7167 MOZ_ARG_ENABLE_BOOL(faststripe,
7168 [  --enable-faststripe     Use faststripe theme],
7169     MOZ_THEME_FASTSTRIPE=1,
7170     MOZ_THEME_FASTSTRIPE= )
7171 AC_SUBST(MOZ_THEME_FASTSTRIPE)
7173 dnl ========================================================
7174 dnl =
7175 dnl = Feature options that require extra sources to be pulled
7176 dnl =
7177 dnl ========================================================
7178 dnl MOZ_ARG_HEADER(Features that require extra sources)
7180 dnl ========================================================
7181 dnl =
7182 dnl = Debugging Options
7183 dnl = 
7184 dnl ========================================================
7185 MOZ_ARG_HEADER(Debugging and Optimizations)
7187 dnl ========================================================
7188 dnl = Disable building with debug info.
7189 dnl = Debugging is OFF by default
7190 dnl ========================================================
7191 if test -z "$MOZ_DEBUG_FLAGS"; then
7192   MOZ_DEBUG_FLAGS="-g"
7195 MOZ_ARG_ENABLE_STRING(debug,
7196 [  --enable-debug[=DBG]    Enable building with developer debug info
7197                            (using compiler flags DBG)],
7198 [ if test "$enableval" != "no"; then
7199     MOZ_DEBUG=1
7200     if test -n "$enableval" -a "$enableval" != "yes"; then
7201         MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
7202         _MOZ_DEBUG_FLAGS_SET=1
7203     fi
7204   else
7205     MOZ_DEBUG=
7206   fi ],
7207   MOZ_DEBUG=)
7209 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG -DTRACING"
7210 MOZ_ARG_WITH_STRING(debug-label,
7211 [  --with-debug-label=LABELS
7212                           Define DEBUG_<value> for each comma-separated
7213                           value given.],
7214 [ for option in `echo $withval | sed 's/,/ /g'`; do
7215     MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${option}"
7216 done])
7218 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
7220 if test -n "$MOZ_DEBUG"; then
7221     AC_MSG_CHECKING([for valid debug flags])
7222     _SAVE_CFLAGS=$CFLAGS
7223     CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
7224     AC_TRY_COMPILE([#include <stdio.h>], 
7225         [printf("Hello World\n");],
7226         _results=yes,
7227         _results=no)
7228     AC_MSG_RESULT([$_results])
7229     if test "$_results" = "no"; then
7230         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
7231     fi
7232     CFLAGS=$_SAVE_CFLAGS
7235 dnl ========================================================
7236 dnl enable mobile optimizations
7237 dnl ========================================================
7238 MOZ_ARG_ENABLE_BOOL(mobile-optimize,
7239 [  --enable-mobile-optimize
7240                           Enable mobile optimizations],
7241     MOZ_GFX_OPTIMIZE_MOBILE=1)
7243 AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
7245 if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
7246     AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
7249 dnl ========================================================
7250 dnl = Enable code optimization. ON by default.
7251 dnl ========================================================
7252 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
7253         MOZ_OPTIMIZE_FLAGS="-O"
7256 MOZ_ARG_ENABLE_STRING(optimize,
7257 [  --disable-optimize      Disable compiler optimization
7258   --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
7259 [ if test "$enableval" != "no"; then
7260     MOZ_OPTIMIZE=1
7261     if test -n "$enableval" -a "$enableval" != "yes"; then
7262         MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
7263         MOZ_OPTIMIZE=2
7264     fi
7265 else
7266     MOZ_OPTIMIZE=
7267 fi ], MOZ_OPTIMIZE=1)
7269 if test "$COMPILE_ENVIRONMENT"; then
7270 if test -n "$MOZ_OPTIMIZE"; then
7271     AC_MSG_CHECKING([for valid optimization flags])
7272     _SAVE_CFLAGS=$CFLAGS
7273     CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
7274     AC_TRY_COMPILE([#include <stdio.h>], 
7275         [printf("Hello World\n");],
7276         _results=yes,
7277         _results=no)
7278     AC_MSG_RESULT([$_results])
7279     if test "$_results" = "no"; then
7280         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
7281     fi
7282     CFLAGS=$_SAVE_CFLAGS
7284 fi # COMPILE_ENVIRONMENT
7286 AC_SUBST(MOZ_OPTIMIZE)
7287 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
7288 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
7289 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
7291 dnl ========================================================
7292 dnl = (Deprecated) generation of debugger info for specific modules
7293 dnl ========================================================
7294 MOZ_ARG_ENABLE_STRING(debugger-info-modules,
7295 [  --enable-debugger-info-modules
7296                           Enable/disable debugger info for specific modules],
7297 [ if test "$enableval" != "no"; then
7298     AC_MSG_WARN([--enable-debugger-info-modules is deprecated, use --enable-debug-symbols instead])
7299     MOZ_DEBUG_SYMBOLS=1
7300   fi ])
7302 dnl ========================================================
7303 dnl = Enable generation of debug symbols
7304 dnl ========================================================
7305 MOZ_ARG_ENABLE_STRING(debug-symbols,
7306 [  --enable-debug-symbols[=DBG]
7307                           Enable debugging symbols (using compiler flags DBG)],
7308 [ if test "$enableval" != "no"; then
7309       MOZ_DEBUG_SYMBOLS=1
7310       if test -n "$enableval" -a "$enableval" != "yes"; then
7311           if test -z "$_MOZ_DEBUG_FLAGS_SET"; then
7312               MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
7313           else
7314               AC_MSG_ERROR([--enable-debug-symbols flags cannot be used with --enable-debug flags])
7315           fi
7316       fi
7317   fi ])
7319 if test -n "$MOZ_DEBUG" -o -n "$MOZ_DEBUG_SYMBOLS"; then
7320     AC_DEFINE(MOZ_DEBUG_SYMBOLS)
7321     export MOZ_DEBUG_SYMBOLS
7324 dnl ========================================================
7325 dnl = Disable any treating of compile warnings as errors
7326 dnl ========================================================
7327 MOZ_ARG_DISABLE_BOOL(warnings-as-errors,
7328 [  --disable-warnings-as-errors
7329                           Disable treating of warnings as errors],
7330     MOZ_DISABLE_WARNINGS_AS_ERRORS=1,
7331     MOZ_DISABLE_WARNINGS_AS_ERRORS= )
7332 if test "$MOZ_DISABLE_WARNINGS_AS_ERRORS"; then
7333    WARNINGS_AS_ERRORS=''
7336 dnl ========================================================
7337 dnl = Disable runtime logging checks
7338 dnl ========================================================
7339 MOZ_ARG_DISABLE_BOOL(logging,
7340 [  --disable-logging       Disable logging facilities],
7341     NS_DISABLE_LOGGING=1,
7342     NS_DISABLE_LOGGING= )
7343 if test "$NS_DISABLE_LOGGING"; then
7344     AC_DEFINE(NS_DISABLE_LOGGING)
7345 else
7346     AC_DEFINE(MOZ_LOGGING)
7349 dnl ========================================================
7350 dnl = This will enable logging of addref, release, ctor, dtor.
7351 dnl ========================================================
7352 _ENABLE_LOGREFCNT=42
7353 MOZ_ARG_ENABLE_BOOL(logrefcnt,
7354 [  --enable-logrefcnt      Enable logging of refcounts (default=debug) ],
7355     _ENABLE_LOGREFCNT=1,
7356     _ENABLE_LOGREFCNT= )
7357 if test "$_ENABLE_LOGREFCNT" = "1"; then
7358     AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
7359 elif test -z "$_ENABLE_LOGREFCNT"; then
7360     AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
7363 dnl ========================================================
7364 dnl = Enable trace malloc
7365 dnl ========================================================
7366 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
7367 MOZ_ARG_ENABLE_BOOL(trace-malloc,
7368 [  --enable-trace-malloc   Enable malloc tracing],
7369     NS_TRACE_MALLOC=1,
7370     NS_TRACE_MALLOC= )
7371 if test "$NS_TRACE_MALLOC"; then
7372   # Please, Mr. Linker Man, don't take away our symbol names
7373   MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7374   USE_ELF_DYNSTR_GC=
7375   AC_DEFINE(NS_TRACE_MALLOC)
7377 AC_SUBST(NS_TRACE_MALLOC)
7379 dnl ========================================================
7380 dnl = Enable jemalloc
7381 dnl ========================================================
7382 MOZ_ARG_ENABLE_BOOL(jemalloc,
7383 [  --enable-jemalloc       Replace memory allocator with jemalloc],
7384     MOZ_MEMORY=1,
7385     MOZ_MEMORY=)
7387 if test "$NS_TRACE_MALLOC"; then
7388     MOZ_MEMORY=
7391 if test "$MOZ_MEMORY"; then
7393   dnl Don't try to run compiler tests on Windows  
7394   if test "$OS_ARCH" = "WINNT"; then
7395     if test -z "$HAVE_64BIT_OS"; then
7396       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7397     else
7398       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7399     fi
7400   else
7401     AC_CHECK_SIZEOF([int *], [4])
7402     case "${ac_cv_sizeof_int_p}" in
7403     4)
7404       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7405       ;;
7406     8)
7407       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7408       ;;
7409     *)
7410       AC_MSG_ERROR([Unexpected pointer size])
7411       ;;
7412     esac
7413   fi
7415   AC_DEFINE(MOZ_MEMORY)
7416   if test "x$MOZ_DEBUG" = "x1"; then
7417     AC_DEFINE(MOZ_MEMORY_DEBUG)
7418   fi
7419   dnl The generic feature tests that determine how to compute ncpus are long and
7420   dnl complicated.  Therefore, simply define special cpp variables for the
7421   dnl platforms we have special knowledge of.
7422   case "${target}" in
7423   *-darwin*)
7424     AC_DEFINE(MOZ_MEMORY_DARWIN)
7425     ;;
7426   *-*freebsd*)
7427     AC_DEFINE(MOZ_MEMORY_BSD)
7428     ;;
7429   *-*linux*)
7430     AC_DEFINE(MOZ_MEMORY_LINUX)
7431     ;;
7432   *-netbsd*)
7433     AC_DEFINE(MOZ_MEMORY_BSD)
7434     ;;
7435   *-solaris*)
7436     AC_DEFINE(MOZ_MEMORY_SOLARIS)
7437     ;;
7438   *-msvc*|*-mks*|*-cygwin*|*-mingw*)
7439     AC_DEFINE(MOZ_MEMORY_WINDOWS)
7440     dnl This is sort of awful. Will revisit if we add support for more versions
7441     if test "$CC_VERSION" != "14.00.50727.762" -a "$CC_VERSION" != "15.00.30729.01"; then
7442         AC_MSG_ERROR([Building jemalloc requires exactly Visual C++ 2005 SP1 or 2008 SP1 currently.])
7443     fi
7444     if test -z "$WIN32_CRT_SRC_DIR"; then
7445       if test -z "$VCINSTALLDIR" -o ! -d "$VCINSTALLDIR"; then
7446         AC_MSG_ERROR([When building jemalloc, set WIN32_CRT_SRC_DIR to the path to the Visual C++ CRT source (usually VCINSTALLDIR\crt\src, but VCINSTALLDIR is not set, so I can't autodetect it for you).])
7447       else
7448         WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src"
7449       fi
7450     fi
7451     dnl cpu check
7452     case "${target_cpu}" in
7453     i*86)
7454       MOZ_CRT_CPU_ARCH=intel
7455       ;;
7456     x86_64)
7457       MOZ_CRT_CPU_ARCH=amd64
7458       ;;
7459     *)
7460       AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7461       ;;
7462     esac
7464     AC_SUBST(MOZ_CRT_CPU_ARCH)
7466     if test ! -d "$WIN32_CRT_SRC_DIR"; then
7467       AC_MSG_ERROR([Invalid Win32 CRT source directory: ${WIN32_CRT_SRC_DIR}])
7468     fi
7469     WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd -W`
7470     _objdir_win=`pwd -W`
7471     WIN32_CUSTOM_CRT_DIR="$_objdir_win/memory/jemalloc/crtsrc/build/$MOZ_CRT_CPU_ARCH"
7472     MOZ_MEMORY_LDFLAGS="-MANIFEST:NO -LIBPATH:\"$WIN32_CUSTOM_CRT_DIR\" -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt19 -DEFAULTLIB:mozcpp19"
7473     dnl Also pass this to NSPR/NSS
7474     DLLFLAGS="$DLLFLAGS $MOZ_MEMORY_LDFLAGS"
7475     export DLLFLAGS
7476     ;;
7477   *-*wince)
7478     AC_DEFINE(MOZ_MEMORY_WINCE)
7479     AC_DEFINE(MOZ_MEMORY_WINDOWS)
7480     if test -z "$WINCE_WINDOWS_MOBILE"; then
7481       AC_DEFINE(MOZ_MEMORY_WINCE6)
7482     fi
7483     ;;
7484   *-*winmo)
7485     AC_DEFINE(MOZ_MEMORY_WINCE)
7486     AC_DEFINE(MOZ_MEMORY_WINDOWS)
7487     ;;
7488   *-android*)
7489     AC_DEFINE(MOZ_MEMORY_LINUX)
7490     AC_DEFINE(MOZ_MEMORY_ANDROID)
7491     _WRAP_MALLOC=1
7492     export WRAP_MALLOC_LIB="-L$_objdir/dist/lib -lmozalloc -lmozutils"
7493     WRAP_MALLOC_CFLAGS="-Wl,--wrap=dlopen -Wl,--wrap=dlclose -Wl,--wrap=dlerror -Wl,--wrap=dlsym -Wl,--wrap=dladdr"
7494     ;;
7495   *)
7496     AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7497     ;;
7498   esac
7500   if test "$OS_ARCH" != "Darwin"; then
7501     dnl NB: this must be kept in sync with jemalloc.h
7502     AC_DEFINE(HAVE_JEMALLOC_VALLOC)
7503     AC_DEFINE(HAVE_JEMALLOC_POSIX_MEMALIGN)
7504     AC_DEFINE(HAVE_JEMALLOC_MEMALIGN)
7505   fi
7507 AC_SUBST(MOZ_MEMORY)
7508 AC_SUBST(MOZ_MEMORY_LDFLAGS)
7509 AC_SUBST(WIN32_CRT_SRC_DIR)
7510 dnl Need to set this for make because NSS doesn't have configure
7511 AC_SUBST(DLLFLAGS)
7513 dnl ========================================================
7514 dnl = Use malloc wrapper lib
7515 dnl ========================================================
7516 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
7517 [  --enable-wrap-malloc    Wrap malloc calls (gnu linker only)],
7518     _WRAP_MALLOC=1,
7519     _WRAP_MALLOC= )
7521 if test -n "$_WRAP_MALLOC"; then
7522     if test "$GNU_CC"; then
7523     WRAP_MALLOC_CFLAGS="${LDFLAGS} ${WRAP_MALLOC_CFLAGS} -Wl,--wrap -Wl,malloc -Wl,--wrap -Wl,calloc -Wl,--wrap -Wl,valloc -Wl,--wrap -Wl,free -Wl,--wrap -Wl,realloc -Wl,--wrap -Wl,memalign -Wl,--wrap -Wl,__builtin_new -Wl,--wrap -Wl,__builtin_vec_new -Wl,--wrap -Wl,__builtin_delete -Wl,--wrap -Wl,__builtin_vec_delete -Wl,--wrap -Wl,PR_Free -Wl,--wrap -Wl,PR_Malloc -Wl,--wrap -Wl,PR_Calloc -Wl,--wrap -Wl,PR_Realloc -Wl,--wrap -Wl,strdup -Wl,--wrap -Wl,strndup -Wl,--wrap -Wl,posix_memalign"
7524     MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) $(WRAP_MALLOC_LIB) -o $@'
7525     MKCSHLIB='$(CC) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) $(WRAP_MALLOC_LIB) -o $@'
7526     fi
7529 dnl ========================================================
7530 dnl = Location of malloc wrapper lib
7531 dnl ========================================================
7532 MOZ_ARG_WITH_STRING(wrap-malloc,
7533 [  --with-wrap-malloc=DIR  Location of malloc wrapper library],
7534     WRAP_MALLOC_LIB=$withval)
7536 dnl ========================================================
7537 dnl = Use JS Call tracing
7538 dnl ========================================================
7539 MOZ_ARG_ENABLE_BOOL(trace-jscalls,
7540 [  --enable-trace-jscalls  Enable JS call enter/exit callback (default=no)],
7541     MOZ_TRACE_JSCALLS=1,
7542     MOZ_TRACE_JSCALLS= )
7543 if test -n "$MOZ_TRACE_JSCALLS"; then
7544     AC_DEFINE(MOZ_TRACE_JSCALLS)
7547 dnl ========================================================
7548 dnl = Use TraceVis
7549 dnl ========================================================
7550 MOZ_ARG_ENABLE_BOOL(tracevis,
7551 [  --enable-tracevis       Enable TraceVis tracing tool (default=no)],
7552     MOZ_TRACEVIS=1,
7553     MOZ_TRACEVIS= )
7554 if test -n "$MOZ_TRACEVIS"; then
7555     AC_DEFINE(MOZ_TRACEVIS)
7558 dnl ========================================================
7559 dnl = Use GCTimer
7560 dnl ========================================================
7561 MOZ_ARG_ENABLE_BOOL(gctimer,
7562 [  --enable-gctimer        Enable GC timer (default=no)],
7563     MOZ_GCTIMER=1,
7564     MOZ_GCTIMER= )
7565 if test -n "$MOZ_GCTIMER"; then
7566     AC_DEFINE(MOZ_GCTIMER)
7569 dnl ========================================================
7570 dnl = Use Valgrind
7571 dnl ========================================================
7572 MOZ_ARG_ENABLE_BOOL(valgrind,
7573 [  --enable-valgrind       Enable Valgrind integration hooks (default=no)],
7574     MOZ_VALGRIND=1,
7575     MOZ_VALGRIND= )
7576 if test -n "$MOZ_VALGRIND"; then
7577     AC_CHECK_HEADER([valgrind/valgrind.h], [],
7578         AC_MSG_ERROR(
7579             [--enable-valgrind specified but Valgrind is not installed]))
7580     AC_DEFINE(MOZ_VALGRIND)
7583 dnl ========================================================
7584 dnl jprof
7585 dnl ========================================================
7586 MOZ_ARG_ENABLE_BOOL(jprof,
7587 [  --enable-jprof          Enable jprof profiling tool (needs mozilla/tools/jprof). Implies --enable-profiling.],
7588     MOZ_JPROF=1,
7589     MOZ_JPROF= )
7590 if test -n "$MOZ_JPROF"; then
7591     MOZ_PROFILING=1
7592     AC_DEFINE(MOZ_JPROF)
7595 dnl ========================================================
7596 dnl shark
7597 dnl ========================================================
7598 MOZ_ARG_ENABLE_BOOL(shark,
7599 [  --enable-shark          Enable shark remote profiling (needs CHUD framework). Implies --enable-profiling.],
7600     MOZ_SHARK=1,
7601     MOZ_SHARK= )
7602 if test -n "$MOZ_SHARK"; then
7603     MOZ_PROFILING=1
7604     AC_DEFINE(MOZ_SHARK)
7607 dnl ========================================================
7608 dnl callgrind
7609 dnl ========================================================
7610 MOZ_ARG_ENABLE_BOOL(callgrind,
7611 [  --enable-callgrind      Enable callgrind profiling],
7612     MOZ_CALLGRIND=1,
7613     MOZ_CALLGRIND= )
7614 if test -n "$MOZ_CALLGRIND"; then
7615     AC_DEFINE(MOZ_CALLGRIND)
7618 dnl ========================================================
7619 dnl vtune
7620 dnl ========================================================
7621 MOZ_ARG_ENABLE_BOOL(vtune,
7622 [  --enable-vtune          Enable vtune profiling. Implies --enable-profiling.],
7623     MOZ_VTUNE=1,
7624     MOZ_VTUNE= )
7625 if test -n "$MOZ_VTUNE"; then
7626     MOZ_PROFILING=1
7627     AC_DEFINE(MOZ_VTUNE)
7630 dnl ========================================================
7631 dnl Zealous JavaScript GC
7632 dnl ========================================================
7633 MOZ_ARG_ENABLE_BOOL(gczeal,
7634 [  --enable-gczeal         Enable zealous JavaScript GCing],
7635     JS_GC_ZEAL=1,
7636     JS_GC_ZEAL= )
7637 if test -n "$JS_GC_ZEAL"; then
7638     AC_DEFINE(JS_GC_ZEAL)
7641 dnl ======================================================
7642 dnl = Enable compiling with ccache
7643 dnl ======================================================
7644 MOZ_ARG_WITH_STRING(ccache,
7645 [  --with-ccache[=path/to/ccache]
7646                           Enable compiling with ccache],
7647     CCACHE=$withval, CCACHE="no")
7649 if test "$CCACHE" != "no"; then
7650     if test -z "$CCACHE" -o "$CCACHE" = "yes"; then
7651         CCACHE=
7652     else
7653         if test ! -e "$CCACHE"; then
7654             AC_MSG_ERROR([$CCACHE not found])
7655         fi
7656     fi
7657     MOZ_PATH_PROGS(CCACHE, $CCACHE ccache)
7658     if test -z "$CCACHE" -o "$CCACHE" = ":"; then
7659         AC_MSG_ERROR([ccache not found])
7660     elif test -x "$CCACHE"; then
7661         CC="$CCACHE $CC"
7662         CXX="$CCACHE $CXX"
7663     else
7664         AC_MSG_ERROR([$CCACHE is not executable])
7665     fi
7668 dnl ========================================================
7669 dnl = Enable static checking using gcc-dehydra
7670 dnl ========================================================
7672 MOZ_ARG_WITH_STRING(static-checking,
7673 [  --with-static-checking=path/to/gcc_dehydra.so
7674                           Enable static checking of code using GCC-dehydra],
7675     DEHYDRA_PATH=$withval,
7676     DEHYDRA_PATH= )
7678 if test -n "$DEHYDRA_PATH"; then
7679     if test ! -f "$DEHYDRA_PATH"; then
7680         AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
7681     fi
7682     AC_DEFINE(NS_STATIC_CHECKING)
7684 AC_SUBST(DEHYDRA_PATH)
7686 dnl ========================================================
7687 dnl = Enable stripping of libs & executables
7688 dnl ========================================================
7689 MOZ_ARG_ENABLE_BOOL(strip,
7690 [  --enable-strip          Enable stripping of libs & executables ],
7691     ENABLE_STRIP=1,
7692     ENABLE_STRIP= )
7694 dnl ========================================================
7695 dnl = Enable stripping of libs & executables when packaging
7696 dnl ========================================================
7697 MOZ_ARG_ENABLE_BOOL(install-strip,
7698 [  --enable-install-strip  Enable stripping of libs & executables when packaging ],
7699     PKG_SKIP_STRIP= ,
7700     PKG_SKIP_STRIP=1)
7702 dnl ========================================================
7703 dnl = --enable-elf-dynstr-gc
7704 dnl ========================================================
7705 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
7706 [  --enable-elf-dynstr-gc  Enable elf dynstr garbage collector (opt builds only)],
7707     USE_ELF_DYNSTR_GC=1,
7708     USE_ELF_DYNSTR_GC= )
7710 dnl ========================================================
7711 dnl = 
7712 dnl = Profiling and Instrumenting
7713 dnl = 
7714 dnl ========================================================
7715 MOZ_ARG_HEADER(Profiling and Instrumenting)
7717 dnl ========================================================
7718 dnl = Enable timeline service, which provides lightweight
7719 dnl = instrumentation of mozilla for performance measurement.
7720 dnl = Timeline is off by default.
7721 dnl ========================================================
7722 MOZ_ARG_ENABLE_BOOL(timeline,
7723 [  --enable-timeline       Enable timeline services ],
7724     MOZ_TIMELINE=1,
7725     MOZ_TIMELINE= )
7726 if test -n "$MOZ_TIMELINE"; then
7727     AC_DEFINE(MOZ_TIMELINE)
7730 dnl ========================================================
7731 dnl = Enable NS_FUNCTION_TIMER, which provides Function 
7732 dnl = timing for identifying code bottlenecks 
7733 dnl = NS_FUNCTION_TIMER is off by default.
7734 dnl ========================================================
7735 MOZ_ARG_ENABLE_BOOL(functiontimer,
7736 [  --enable-functiontimer  Enable NS_FUNCTION_TIMER ],
7737     NS_FUNCTION_TIMER=1,
7738     NS_FUNCTION_TIMER= )
7739 if test -n "$NS_FUNCTION_TIMER"; then
7740     AC_DEFINE(NS_FUNCTION_TIMER)
7743 dnl ========================================================
7744 dnl Turn on reflow counting
7745 dnl ========================================================
7746 MOZ_ARG_ENABLE_BOOL(reflow-perf,
7747 [  --enable-reflow-perf    Enable reflow performance tracing],
7748     MOZ_REFLOW_PERF=1,
7749     MOZ_REFLOW_PERF= )
7750 if test -n "$MOZ_REFLOW_PERF"; then
7751     AC_DEFINE(MOZ_REFLOW_PERF)
7754 dnl ========================================================
7755 dnl Enable code size metrics.
7756 dnl ========================================================
7757 MOZ_ARG_ENABLE_BOOL(codesighs,
7758 [  --enable-codesighs      Enable code size analysis tools],
7759     _ENABLE_CODESIGHS=1,
7760     _ENABLE_CODESIGHS= )
7761 if test -n "$_ENABLE_CODESIGHS"; then
7762     if test -d $srcdir/tools/codesighs; then 
7763         MOZ_MAPINFO=1
7764     else
7765         AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
7766     fi
7769 dnl ========================================================
7770 dnl = Support for Quantify (Windows)
7771 dnl ========================================================
7772 MOZ_ARG_ENABLE_BOOL(quantify,
7773 [  --enable-quantify       Enable Quantify support (Windows only) ],
7774     MOZ_QUANTIFY=1,
7775     MOZ_QUANTIFY= )
7777 dnl ========================================================
7778 dnl = Support for demangling undefined symbols
7779 dnl ========================================================
7780 if test -z "$SKIP_LIBRARY_CHECKS"; then
7781     AC_LANG_SAVE
7782     AC_LANG_CPLUSPLUS
7783     AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
7784     AC_LANG_RESTORE
7787 # Demangle only for debug or trace-malloc builds
7788 MOZ_DEMANGLE_SYMBOLS=
7789 if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
7790     MOZ_DEMANGLE_SYMBOLS=1
7791     AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
7793 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
7795 dnl ========================================================
7796 dnl = Support for gcc stack unwinding (from gcc 3.3)
7797 dnl ========================================================
7798 if test "$HAVE_GCC3_ABI" -a -z "$SKIP_LIBRARY_CHECKS"; then
7799     AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
7802 dnl ========================================================
7803 dnl =
7804 dnl = Misc. Options
7805 dnl = 
7806 dnl ========================================================
7807 MOZ_ARG_HEADER(Misc. Options)
7809 dnl ========================================================
7810 dnl update xterm title
7811 dnl ========================================================
7812 MOZ_ARG_ENABLE_BOOL(xterm-updates,
7813 [  --enable-xterm-updates  Update XTERM titles with current command.],
7814     MOZ_UPDATE_XTERM=1,
7815     MOZ_UPDATE_XTERM= )
7817 dnl =========================================================
7818 dnl = Chrome format
7819 dnl =========================================================
7820 MOZ_ARG_ENABLE_STRING([chrome-format],
7821 [  --enable-chrome-format=jar|flat|both|symlink|omni
7822                           Select FORMAT of chrome files (default=jar)],
7823     MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
7825 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
7826     MOZ_CHROME_FILE_FORMAT=jar
7829 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" && 
7830     test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
7831     test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
7832     test "$MOZ_CHROME_FILE_FORMAT" != "both" &&
7833     test "$MOZ_CHROME_FILE_FORMAT" != "omni"; then
7834     AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, symlink, or omni])
7837 dnl =========================================================
7838 dnl Omnijar packaging (bug 552121)
7839 dnl =========================================================
7840 dnl Omnijar packaging is compatible with flat packaging.
7841 dnl In unpackaged builds, omnijar looks for files as if
7842 dnl things were flat packaged. After packaging, all files
7843 dnl are loaded from a single jar. MOZ_CHROME_FILE_FORMAT
7844 dnl is set to flat since putting files into jars is only
7845 dnl done during packaging with omnijar.
7846 if test "$MOZ_CHROME_FILE_FORMAT" = "omni"; then
7847     MOZ_OMNIJAR=1
7848     AC_DEFINE(MOZ_OMNIJAR)
7849     MOZ_CHROME_FILE_FORMAT=flat
7850 elif test "$MOZ_CHROME_FILE_FORMAT" = "jar"; then
7851     AC_DEFINE(MOZ_CHROME_FILE_FORMAT_JAR)
7854 AC_SUBST(MOZ_OMNIJAR)
7856 dnl ========================================================
7857 dnl = Define default location for MOZILLA_FIVE_HOME
7858 dnl ========================================================
7859 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
7860 [  --with-default-mozilla-five-home
7861                           Set the default value for MOZILLA_FIVE_HOME],
7862 [ val=`echo $withval`
7863   AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
7865 dnl ========================================================
7866 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
7867 dnl ========================================================
7868 MOZ_ARG_WITH_STRING(user-appdir,
7869 [  --with-user-appdir=DIR  Set user-specific appdir (default=.mozilla)],
7870 [ val=`echo $withval`
7871 if echo "$val" | grep "\/" >/dev/null; then
7872     AC_MSG_ERROR("Homedir must be single relative path.")
7873 else 
7874     MOZ_USER_DIR="$val"
7875 fi])
7877 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
7879 dnl ========================================================
7880 dnl = Doxygen configuration
7881 dnl ========================================================
7882 dnl Use commas to specify multiple dirs to this arg
7883 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
7884 MOZ_ARG_WITH_STRING(doc-input-dirs,
7885 [  --with-doc-input-dirs=DIRS
7886                           Header/idl dirs to create docs from],
7887 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7888 AC_SUBST(MOZ_DOC_INPUT_DIRS)
7890 dnl Use commas to specify multiple dirs to this arg
7891 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
7892 MOZ_ARG_WITH_STRING(doc-include-dirs,
7893 [  --with-doc-include-dirs=DIRS  
7894                           Include dirs to preprocess doc headers],
7895 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7896 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
7898 MOZ_DOC_OUTPUT_DIR='./dist/docs'
7899 MOZ_ARG_WITH_STRING(doc-output-dir,
7900 [  --with-doc-output-dir=DIR
7901                           Dir to generate docs into],
7902 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
7903 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
7905 if test -z "$SKIP_COMPILER_CHECKS"; then
7906 dnl ========================================================
7907 dnl =
7908 dnl = Compiler Options
7909 dnl = 
7910 dnl ========================================================
7911 MOZ_ARG_HEADER(Compiler Options)
7913 dnl ========================================================
7914 dnl Check for gcc -pipe support
7915 dnl ========================================================
7916 AC_MSG_CHECKING([for gcc -pipe support])
7917 if test -n "$GNU_CC" -a -n "$GNU_CXX" -a -n "$GNU_AS"; then
7918     echo '#include <stdio.h>' > dummy-hello.c
7919     echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
7920     ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
7921     cat dummy-hello.s 2> /dev/null | ${AS_BIN} -o dummy-hello.S - 2>&5
7922     if test $? = 0; then
7923         _res_as_stdin="yes"
7924     else
7925         _res_as_stdin="no"
7926     fi
7927     if test "$_res_as_stdin" = "yes"; then
7928         _SAVE_CFLAGS=$CFLAGS
7929         CFLAGS="$CFLAGS -pipe"
7930         AC_TRY_COMPILE( [ #include <stdio.h> ],
7931             [printf("Hello World\n");],
7932             [_res_gcc_pipe="yes"],
7933             [_res_gcc_pipe="no"] )
7934         CFLAGS=$_SAVE_CFLAGS
7935     fi
7936     if test "$_res_as_stdin" = "yes" -a "$_res_gcc_pipe" = "yes"; then
7937         _res="yes";
7938         CFLAGS="$CFLAGS -pipe"
7939         CXXFLAGS="$CXXFLAGS -pipe"
7940     else
7941         _res="no"
7942     fi
7943     rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
7944     AC_MSG_RESULT([$_res])
7945 else
7946     AC_MSG_RESULT([no])
7949 dnl ========================================================
7950 dnl Profile guided optimization
7951 dnl ========================================================
7952 dnl Test for profiling options
7953 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
7955 dnl Provide a switch to disable PGO even when called via profiledbuild.
7956 MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
7957 [  --disable-profile-guided-optimization
7958                           Don't build with PGO even if called via make profiledbuild],
7959 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
7960 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
7962 AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
7964 _SAVE_CFLAGS="$CFLAGS"
7965 CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
7967 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
7968 AC_TRY_COMPILE([], [return 0;],
7969                [ PROFILE_GEN_CFLAGS="-fprofile-generate"
7970                  result="yes" ], result="no")
7971 AC_MSG_RESULT([$result])
7973 if test $result = "yes"; then
7974   PROFILE_GEN_LDFLAGS="-fprofile-generate"
7975   PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch -freorder-blocks-and-partition"
7976   PROFILE_USE_LDFLAGS="-fprofile-use"
7979 CFLAGS="$_SAVE_CFLAGS"
7981 if test -n "$INTEL_CC"; then
7982   PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
7983   PROFILE_GEN_LDFLAGS=
7984   PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
7985   PROFILE_USE_LDFLAGS=
7988 dnl Sun Studio on Solaris
7989 if test "$SOLARIS_SUNPRO_CC"; then
7990   PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
7991   PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
7992   PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
7993   PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
7996 AC_SUBST(PROFILE_GEN_CFLAGS)
7997 AC_SUBST(PROFILE_GEN_LDFLAGS)
7998 AC_SUBST(PROFILE_USE_CFLAGS)
7999 AC_SUBST(PROFILE_USE_LDFLAGS)
8001 AC_LANG_CPLUSPLUS
8003 dnl ========================================================
8004 dnl Test for -pedantic bustage
8005 dnl ========================================================
8006 MOZ_ARG_DISABLE_BOOL(pedantic,
8007 [  --disable-pedantic      Issue all warnings demanded by strict ANSI C ],
8008 _PEDANTIC= )
8009 if test "$_PEDANTIC"; then
8010     _SAVE_CXXFLAGS=$CXXFLAGS
8011     CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
8012     AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
8013     AC_TRY_COMPILE([$configure_static_assert_macros],
8014                    [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
8015                    result="no", result="yes" )
8016     AC_MSG_RESULT([$result])
8017     CXXFLAGS="$_SAVE_CXXFLAGS"
8019     case "$result" in
8020     no)
8021         _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
8022         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
8023         ;;
8024     yes)
8025         AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic.  Reconfigure using --disable-pedantic. ])
8026         ;;
8027     esac
8030 dnl ========================================================
8031 dnl Test for correct temporary object destruction order
8032 dnl ========================================================
8033 dnl We want to make sure the compiler follows the C++ spec here as 
8034 dnl xpcom and the string classes depend on it (bug 235381).
8035 AC_MSG_CHECKING([for correct temporary object destruction order])
8036 AC_TRY_RUN([ class A {
8037              public:  A(int& x) : mValue(x) {}
8038                       ~A() { mValue--; }
8039                       operator char**() { return 0; }
8040              private:  int& mValue;
8041              };
8042              void func(char **arg) {}
8043              int m=2;
8044              void test() {
8045                   func(A(m));
8046                   if (m==1) m = 0;
8047              }
8048              int main() {
8049                  test();
8050                  return(m);
8051              }
8052              ],
8053      result="yes", result="no", result="maybe")
8054 AC_MSG_RESULT([$result])
8056 if test "$result" = "no"; then
8057     AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
8060 dnl ========================================================
8061 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
8062 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
8063 dnl raw pointers in nsCOMPtr.h.  (VC++ has the same bug.)
8064 dnl ========================================================
8065 _SAVE_CXXFLAGS=$CXXFLAGS
8066 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
8067 AC_CACHE_CHECK(for correct overload resolution with const and templates,
8068     ac_nscap_nonconst_opeq_bug,
8069     [AC_TRY_COMPILE([
8070                       template <class T>
8071                       class Pointer
8072                         {
8073                         public:
8074                           T* myPtr;
8075                         };
8076                       
8077                       template <class T, class U>
8078                       int operator==(const Pointer<T>& rhs, U* lhs)
8079                         {
8080                           return rhs.myPtr == lhs;
8081                         }
8082                       
8083                       template <class T, class U>
8084                       int operator==(const Pointer<T>& rhs, const U* lhs)
8085                         {
8086                           return rhs.myPtr == lhs;
8087                         }
8088                     ],
8089                     [
8090                       Pointer<int> foo;
8091                       const int* bar;
8092                       return foo == bar;
8093                     ],
8094                     ac_nscap_nonconst_opeq_bug="no",
8095                     ac_nscap_nonconst_opeq_bug="yes")])
8096 CXXFLAGS="$_SAVE_CXXFLAGS"
8098 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
8099     AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
8101 fi # SKIP_COMPILER_CHECKS
8103 dnl ========================================================
8104 dnl C++ rtti
8105 dnl Should be smarter and check that the compiler does indeed have rtti
8106 dnl ========================================================
8108 MOZ_ARG_ENABLE_BOOL(cpp-rtti,
8109 [  --enable-cpp-rtti       Enable C++ RTTI ],
8110 [ _MOZ_USE_RTTI=1 ],
8111 [ _MOZ_USE_RTTI= ])
8113 if test "$_MOZ_USE_RTTI"; then
8114    _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
8115 else
8116    _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
8119 AC_SUBST(_MOZ_RTTI_FLAGS_ON)
8121 dnl ========================================================
8122 dnl C++ exceptions (g++/VC/irix6/Sun only - for now)
8123 dnl Should be smarter and check that the compiler does indeed have exceptions
8124 dnl ========================================================
8125 MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
8126 [  --enable-cpp-exceptions Enable C++ exceptions ],
8127 [ _MOZ_CPP_EXCEPTIONS=1 ],
8128 [ _MOZ_CPP_EXCEPTIONS= ])
8130 if test "$_MOZ_CPP_EXCEPTIONS"; then
8131     _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_ON
8132     AC_DEFINE(MOZ_CPP_EXCEPTIONS)
8133 else
8134     _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_OFF
8137 AC_SUBST(_MOZ_EXCEPTIONS_FLAGS_ON)
8139 # Irix & OSF native compilers do not like exception declarations 
8140 # when exceptions are disabled
8141 if test -n "$MIPSPRO_CXX" -o -n "$COMPAQ_CXX" -o -n "$VACPP"; then
8142     AC_DEFINE(CPP_THROW_NEW, [])
8143 else
8144     AC_DEFINE(CPP_THROW_NEW, [throw()])
8146 AC_LANG_C
8148 dnl ========================================================
8149 dnl =
8150 dnl = Build depencency options
8151 dnl =
8152 dnl ========================================================
8153 MOZ_ARG_HEADER(Build dependencies)
8155 dnl ========================================================
8156 dnl = Do not auto generate dependency info
8157 dnl ========================================================
8158 MOZ_AUTO_DEPS=1
8159 MOZ_ARG_DISABLE_BOOL(auto-deps,
8160 [  --disable-auto-deps     Do not automatically generate dependency info],
8161     MOZ_AUTO_DEPS=,
8162     MOZ_AUTO_DEPS=1)
8164 if test -n "$MOZ_AUTO_DEPS"; then
8165 dnl ========================================================
8166 dnl = Use mkdepend instead of $CC -MD for dependency generation
8167 dnl ========================================================
8168 _cpp_md_flag=
8169 MOZ_ARG_DISABLE_BOOL(md,
8170 [  --disable-md            Do not use compiler-based dependencies ],
8171   [_cpp_md_flag=],
8172   [_cpp_md_flag=1],
8173   [dnl Default is to turn on -MD if using GNU-compatible compilers
8174    if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
8175      _cpp_md_flag=1
8176    fi
8177   dnl Default is to use -xM if using Sun Studio on Solaris
8178    if test "$SOLARIS_SUNPRO_CC"; then
8179      _cpp_md_flag=1
8180    fi])
8181 if test "$_cpp_md_flag"; then
8182   COMPILER_DEPEND=1
8183   if test "$OS_ARCH" = "OpenVMS"; then
8184     _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(basename $(@F)).pp))'
8185   else
8186     _DEPEND_CFLAGS='$(filter-out %/.pp,-MD -MF $(MDDEPDIR)/$(basename $(@F)).pp)'
8187   fi
8188   dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
8189   if test "$SOLARIS_SUNPRO_CC"; then
8190     _DEPEND_CFLAGS=
8191   fi
8192 else
8193   COMPILER_DEPEND=
8194   dnl Don't override this for MSVC
8195   if test -z "$_WIN32_MSVC"; then
8196     _USE_CPP_INCLUDE_FLAG=
8197     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
8198     _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
8199   else
8200     echo '#include <stdio.h>' > dummy-hello.c
8201     changequote(,)
8202     CL_INCLUDES_PREFIX=`"${CC}" -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/^\([^:]*:[^:]*:\).*stdio.h$/\1/p'`
8203     changequote([,])
8204     if test -z "$CL_INCLUDES_PREFIX"; then
8205         AC_MSG_ERROR([Cannot find cl -showIncludes prefix.])
8206     fi
8207     AC_SUBST(CL_INCLUDES_PREFIX)
8208     rm -f dummy-hello.c
8209     _topsrcdirwin=`cd \`dirname $0\`; pwd -W`
8210     dnl cl.py provides dependency generation for MSVC
8211     CC_WRAPPER="$PYTHON -O $_topsrcdirwin/build/cl.py"
8212     CXX_WRAPPER="$PYTHON -O $_topsrcdirwin/build/cl.py"
8213     COMPILER_DEPEND=1
8214   fi
8216 fi # MOZ_AUTO_DEPS
8217 MDDEPDIR='.deps'
8218 AC_SUBST(MOZ_AUTO_DEPS)
8219 AC_SUBST(COMPILER_DEPEND)
8220 AC_SUBST(MDDEPDIR)
8221 AC_SUBST(CC_WRAPPER)
8222 AC_SUBST(CXX_WRAPPER)
8225 dnl ========================================================
8226 dnl =
8227 dnl = Static Build Options
8228 dnl =
8229 dnl ========================================================
8230 MOZ_ARG_HEADER(Static build options)
8232 MOZ_ARG_ENABLE_BOOL(static,
8233 [  --enable-static         Enable building of internal static libs],
8234     BUILD_STATIC_LIBS=1,
8235     BUILD_STATIC_LIBS=)
8237 MOZ_ARG_ENABLE_BOOL(libxul,
8238 [  --enable-libxul         Enable building of libxul],
8239     MOZ_ENABLE_LIBXUL=1,
8240     MOZ_ENABLE_LIBXUL=)
8242 # split JS out by default to avoid VS2005 PGO crash (bug 591836).
8243 if test "$OS_ARCH" = "WINNT"; then
8244   ENABLE_SHARED_JS=1
8247 MOZ_ARG_ENABLE_BOOL(shared-js,
8248 [  --enable-shared-js
8249                           Create a shared JavaScript library.],
8250     ENABLE_SHARED_JS=1,
8251     ENABLE_SHARED_JS=)
8253 if test -z "$MOZ_ENABLE_LIBXUL"; then
8254   dnl --disable-libxul implies shared js
8255   ENABLE_SHARED_JS=1
8258 if test -n "$ENABLE_SHARED_JS"; then
8259   JS_SHARED_LIBRARY=1
8260   MOZ_JS_LIBS=$MOZ_JS_SHARED_LIBS
8261 else
8262   MOZ_JS_LIBS=$MOZ_JS_STATIC_LIBS
8263   AC_DEFINE(MOZ_STATIC_JS)
8265 AC_SUBST(JS_SHARED_LIBRARY)
8267 if test -n "$MOZ_STATIC_BUILD_UNSUPPORTED" -a -n "$BUILD_STATIC_LIBS"; then
8268         AC_MSG_ERROR([--enable-static is not supported for building $MOZ_APP_NAME. You probably want --enable-libxul.])
8271 if test -n "$MOZ_ENABLE_LIBXUL" -a -n "$BUILD_STATIC_LIBS"; then
8272         AC_MSG_ERROR([--enable-libxul is not compatible with --enable-static])
8275 if test -n "$MOZ_IPC" -a -z "$MOZ_ENABLE_LIBXUL"; then
8276     AC_MSG_ERROR([--enable-ipc requires --enable-libxul])
8279 if test -z "$MOZ_ENABLE_LIBXUL" -a -n "$MOZ_OMNIJAR"; then
8280     AC_MSG_ERROR([Omnijar packaging is incompatible with --disable-libxul. Please either --enable-libxul or --enable-chrome-format=jar|flat|symlink]);
8283 AC_SUBST(LIBXUL_LIBS)
8285 if test -n "$MOZ_ENABLE_LIBXUL"; then
8286     XPCOM_LIBS="$LIBXUL_LIBS"
8287     AC_DEFINE(MOZ_ENABLE_LIBXUL)
8288 else
8289     if test -n "$BUILD_STATIC_LIBS"; then
8290         AC_DEFINE(MOZ_STATIC_BUILD)
8291     fi
8292     XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS"
8295 dnl ========================================================
8296 dnl =
8297 dnl = Standalone module options
8298 dnl = 
8299 dnl ========================================================
8300 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
8302 dnl Check for GLib and libIDL.
8303 dnl ========================================================
8304 SKIP_IDL_CHECK="no"
8306 if test -z "$COMPILE_ENVIRONMENT"; then
8307     SKIP_IDL_CHECK="yes"
8310 dnl = Allow users to disable libIDL checking for standalone modules
8311 MOZ_ARG_WITHOUT_BOOL(libIDL,
8312 [  --without-libIDL        Skip check for libIDL (standalone modules only)],
8313         SKIP_IDL_CHECK="yes")
8315 if test -z "$CROSS_COMPILE"; then
8316     if test -z "$HOST_LIBIDL_CONFIG"; then
8317         HOST_LIBIDL_CONFIG="$LIBIDL_CONFIG"
8318     fi
8319     if test -z "$HOST_LIBIDL_PREFIX"; then
8320         HOST_LIBIDL_PREFIX="$LIBIDL_PREFIX"
8321     fi
8324 if test "$SKIP_IDL_CHECK" = "no"
8325 then
8326     _LIBIDL_FOUND=
8327     case "$host" in
8328     *-mingw*|*-cygwin*|*-msvc*|*-mks*)
8329         if test -n "$GLIB_PREFIX"; then
8330             _GLIB_PREFIX_DIR=`cd $GLIB_PREFIX && pwd -W`
8331             if test "$?" = "0"; then
8332                 if test `echo ${PATH}: | grep -ic "$_GLIB_PREFIX_DIR/bin:"` = 0; then
8333                     AC_MSG_ERROR([GLIB_PREFIX must be in your \$PATH.])
8334                 fi
8335                 _GLIB_PREFIX_DIR=`$CYGPATH_W $_GLIB_PREFIX_DIR | $CYGPATH_S`
8336             else
8337                  AC_MSG_ERROR([GLIB_PREFIX is set but "${GLIB_PREFIX}" is not a directory.])
8338             fi
8339         else
8340             _GLIB_PREFIX_DIR=$MOZ_TOOLS_DIR
8341         fi
8342         if test ! -f "${_GLIB_PREFIX_DIR}/include/glib.h"; then
8343             AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/include/glib.h .])
8344         fi
8345         GLIB_CFLAGS="-I${_GLIB_PREFIX_DIR}/include"
8346         if test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"; then
8347             GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"
8348         elif test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"; then
8349             GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"
8350         else
8351             AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/lib/glib-1.2.lib or $_GLIB_PREFIX_DIR/lib/glib-1.2_s.lib])
8352         fi
8354         if test -n "$HOST_LIBIDL_PREFIX"; then
8355             _LIBIDL_PREFIX_DIR=`cd $HOST_LIBIDL_PREFIX && pwd -W`
8356             if test "$?" = "0"; then
8357                 if test `echo ${PATH}: | grep -ic "$_LIBIDL_PREFIX_DIR/bin:"` = 0; then
8358                     AC_MSG_ERROR([LIBIDL_PREFIX must be in your \$PATH.])
8359                 fi
8360                 _LIBIDL_PREFIX_DIR=`$CYGPATH_W $_LIBIDL_PREFIX_DIR | $CYGPATH_S`
8361             else
8362                 AC_MSG_ERROR([LIBIDL_PREFIX is set but "${LIBIDL_PREFIX}" is not a directory.])
8363             fi
8364         else
8365             _LIBIDL_PREFIX_DIR=$MOZ_TOOLS_DIR
8366         fi        
8367         if test ! -f "${_LIBIDL_PREFIX_DIR}/include/libIDL/IDL.h"; then
8368             AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/include/libIDL/IDL.h .])
8369         fi
8370         HOST_LIBIDL_CFLAGS="-I${_LIBIDL_PREFIX_DIR}/include ${GLIB_CFLAGS}"
8371         if test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"; then
8372             HOST_LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"
8373             STATIC_LIBIDL=1
8374         elif test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"; then
8375             HOST_LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"
8376         else
8377             AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/lib/libidl-0.6.lib or $_LIBIDL_PREFIX_DIR/lib/libidl-0.6_s.lib])
8378         fi
8379         HOST_LIBIDL_LIBS="${HOST_LIBIDL_LIBS} ${GLIB_LIBS}"
8380         _LIBIDL_FOUND=1
8381         ;;
8382     esac
8384     if test -z "$_LIBIDL_FOUND"; then
8385         if test "$MACOS_SDK_DIR"; then 
8386             dnl xpidl, and therefore libIDL, is only needed on the build host.
8387             dnl Don't build it against the SDK, as that causes problems.
8388             _MACSAVE_CFLAGS="$CFLAGS"
8389             _MACSAVE_LIBS="$LIBS"
8390             _MACSAVE_LDFLAGS="$LDFLAGS"
8391             _MACSAVE_NEXT_ROOT="$NEXT_ROOT"
8392           changequote(,)
8393           CFLAGS=`echo $CFLAGS|sed -E -e "s%((-I|-isystem )${MACOS_SDK_DIR}/usr/(include|lib/gcc)[^ ]*)|-F${MACOS_SDK_DIR}(/System)?/Library/Frameworks[^ ]*|-nostdinc[^ ]*|-isysroot ${MACOS_SDK_DIR}%%g"`
8394           LIBS=`echo $LIBS|sed -e "s?-L${MACOS_SDK_DIR}/usr/lib[^ ]*??g"`
8395           LDFLAGS=`echo $LDFLAGS|sed -e "s?-Wl,-syslibroot,${MACOS_SDK_DIR}??g"`
8396           changequote([,])
8397           unset NEXT_ROOT
8398         fi
8400         PKG_CHECK_MODULES(HOST_LIBIDL, libIDL-2.0 >= 0.8.0 glib-2.0 gobject-2.0, _LIBIDL_FOUND=1,_LIBIDL_FOUND=)
8401     fi
8403     dnl if no gtk/libIDL1 or gtk2/libIDL2 combination was found, fall back
8404     dnl to either libIDL1 or libIDL2.
8405     if test -z "$_LIBIDL_FOUND"; then
8406         AM_PATH_LIBIDL($LIBIDL_VERSION,_LIBIDL_FOUND=1)
8407         if test -z "$_LIBIDL_FOUND"; then
8408             PKG_CHECK_MODULES(HOST_LIBIDL, libIDL-2.0 >= 0.8.0,_LIBIDL_FOUND=1)
8409         fi
8410     fi
8411     dnl
8412     dnl If we don't have a libIDL config program & not cross-compiling, 
8413     dnl     look for orbit-config instead.
8414     dnl
8415     if test -z "$_LIBIDL_FOUND" -a -z "$CROSS_COMPILE"; then
8416         MOZ_PATH_PROGS(ORBIT_CONFIG, $ORBIT_CONFIG orbit-config)
8417         if test -n "$ORBIT_CONFIG"; then
8418             AC_MSG_CHECKING([for ORBit libIDL usability])
8419                 _ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags`
8420             _ORBIT_LIBS=`${ORBIT_CONFIG} client --libs`
8421             _ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}`
8422             _ORBIT_LIB_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-L/); } }' -- ${_ORBIT_LIBS}`
8423             HOST_LIBIDL_CFLAGS="$_ORBIT_INC_PATH"
8424             HOST_LIBIDL_LIBS="$_ORBIT_LIB_PATH -lIDL -lglib"
8425             HOST_LIBIDL_CONFIG=
8426             _SAVE_CFLAGS="$CFLAGS"
8427             _SAVE_LIBS="$LIBS"
8428             CFLAGS="$HOST_LIBIDL_CFLAGS $CFLAGS"
8429             LIBS="$HOST_LIBIDL_LIBS $LIBS"
8430             AC_TRY_RUN([
8431 #include <stdlib.h>
8432 #include <libIDL/IDL.h>
8433 int main() {
8434   char *s;
8435   s=strdup(IDL_get_libver_string());
8436   if(s==NULL) {
8437     exit(1);
8438   }
8439   exit(0);
8441             ], [_LIBIDL_FOUND=1
8442                 result="yes"],
8443                [HOST_LIBIDL_CFLAGS=
8444                 HOST_LIBIDL_LIBS=
8445                 result="no"],
8446                [_LIBIDL_FOUND=1
8447                 result="maybe"] )
8448             AC_MSG_RESULT($result)
8449             CFLAGS="$_SAVE_CFLAGS"
8450             LIBS="$_SAVE_LIBS"
8451         fi
8452     fi
8453     if test -z "$_LIBIDL_FOUND"; then
8454         AC_MSG_ERROR([libIDL not found.
8455         libIDL $LIBIDL_VERSION or higher is required.])
8456     fi
8457     if test "$MACOS_SDK_DIR"; then
8458       CFLAGS="$_MACSAVE_CFLAGS"
8459       LIBS="$_MACSAVE_LIBS"
8460       LDFLAGS="$_MACSAVE_LDFLAGS"
8461       if test -n "$_MACSAVE_NEXT_ROOT" ; then
8462         export NEXT_ROOT="$_MACSAVE_NEXT_ROOT"
8463       fi
8464     fi
8467 if test -n "$CROSS_COMPILE"; then
8468     case "$target" in
8469     *-mingw*|*-cygwin*|*-msvc*|*-mks*)
8470         if test -n "$GLIB_PREFIX"; then
8471             GLIB_CFLAGS="-I${GLIB_PREFIX}/include"
8472             if test -f "${GLIB_PREFIX}/lib/glib-1.2_s.lib"; then
8473                 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2_s.lib"
8474             elif test -f "${GLIB_PREFIX}/lib/glib-1.2.lib"; then
8475                 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2.lib"
8476             else
8477                 AC_MSG_ERROR([Cannot find $GLIB_PREFIX/lib/glib-1.2.lib or $GLIB_PREFIX/lib/glib-1.2_s.lib])
8478             fi
8479         fi
8481         if test -n "$LIBIDL_PREFIX"; then
8482             LIBIDL_CFLAGS="-I${LIBIDL_PREFIX}/include ${GLIB_CFLAGS}"
8483             if test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"; then
8484                 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"
8485                 STATIC_LIBIDL=1
8486             elif test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"; then
8487                 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"
8488             else
8489                 AC_MSG_ERROR([Cannot find $LIBIDL_PREFIX/lib/libIDL-0.6.lib or $LIBIDL_PREFIX/lib/libIDL-0.6_s.lib])
8490             fi
8491         fi
8492         LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
8493         ;;
8494     *)
8495         if test -n "LIBIDL_CONFIG" -a "LIBIDL_CONFIG" != "no"; then
8496             LIBIDL_CFLAGS=`${LIBIDL_CONFIG} --cflags`
8497             LIBIDL_LIBS=`${LIBIDL_CONFIG} --libs`
8498         fi
8499         ;;
8500     esac
8501 else
8502     LIBIDL_CFLAGS="$HOST_LIBIDL_CFLAGS"
8503     LIBIDL_LIBS="$HOST_LIBIDL_LIBS"
8506 if test -z "$SKIP_PATH_CHECKS"; then
8507 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
8508     if test "$MOZ_ENABLE_GTK2" -o "$USE_ELF_DYNSTR_GC" ; then
8509         PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
8510     else
8511         AM_PATH_GLIB(${GLIB_VERSION})
8512     fi
8516 if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then
8517     GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
8520 AC_SUBST(LIBIDL_CFLAGS)
8521 AC_SUBST(LIBIDL_LIBS)
8522 AC_SUBST(STATIC_LIBIDL)
8523 AC_SUBST(GLIB_CFLAGS)
8524 AC_SUBST(GLIB_LIBS)
8525 AC_SUBST(GLIB_GMODULE_LIBS)
8526 AC_SUBST(HOST_LIBIDL_CONFIG)
8527 AC_SUBST(HOST_LIBIDL_CFLAGS)
8528 AC_SUBST(HOST_LIBIDL_LIBS)
8530 dnl ========================================================
8531 dnl Check for cairo
8532 dnl ========================================================
8533 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
8535 MOZ_TREE_CAIRO=1
8536 MOZ_ARG_ENABLE_BOOL(system-cairo,
8537 [  --enable-system-cairo   Use system cairo (located with pkgconfig)],
8538 MOZ_TREE_CAIRO=,
8539 MOZ_TREE_CAIRO=1 )
8541 MOZ_TREE_PIXMAN=1
8542 MOZ_ARG_ENABLE_BOOL(system-pixman,
8543 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
8544 MOZ_TREE_PIXMAN=,
8545 MOZ_TREE_PIXMAN=1 )
8547 # Check for headers defining standard int types.
8548 AC_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
8550 if test "$MOZ_TREE_CAIRO"; then
8551     AC_DEFINE(MOZ_TREE_CAIRO)
8553     # For now we assume that we will have a uint64_t available through
8554     # one of the above headers or mozstdint.h.
8555     AC_DEFINE(HAVE_UINT64_T)
8557     # Define macros for cairo-features.h
8558     if test "$MOZ_X11"; then
8559         XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
8560         XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
8561         PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
8562         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8563         MOZ_ENABLE_CAIRO_FT=1
8564         CAIRO_FT_CFLAGS="$FT2_CFLAGS"
8565     fi
8566     if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
8567         QT_SURFACE_FEATURE="#define CAIRO_HAS_QT_SURFACE 1"
8568     fi
8569     if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
8570         QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
8571         QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
8572         QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
8573     fi
8574     if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
8575         WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
8576         if test -z "$WINCE"; then
8577             WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
8578             if test "$MOZ_WINSDK_TARGETVER" -ge "06010000"; then
8579                 WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
8580                 WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1"
8581                 MOZ_ENABLE_D2D_SURFACE=1
8582                 MOZ_ENABLE_DWRITE_FONT=1
8583             else
8584                 WIN32_DWRITE_FONT_FEATURE=
8585                 WIN32_D2D_SURFACE_FEATURE=
8586             fi
8587         else
8588             WIN32_FONT_FEATURE=
8589             WIN32_DWRITE_FONT_FEATURE=
8590             WIN32_D2D_SURFACE_FEATURE=
8591         fi
8593         AC_CHECK_HEADER(d3d9.h, MOZ_ENABLE_D3D9_LAYER=1)
8595         dnl D3D10 Layers depend on D2D Surfaces.
8596         if test -n "$WIN32_D2D_SURFACE_FEATURE"; then
8597           AC_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
8598         fi
8600     fi
8601     if test "$MOZ_WIDGET_TOOLKIT" = "os2"; then
8602         OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
8603         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8604         MOZ_ENABLE_CAIRO_FT=1
8605         CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
8606         CAIRO_FT_LIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
8607     fi
8608     if test "$MOZ_WIDGET_TOOLKIT" = "beos"; then
8609         PKG_CHECK_MODULES(CAIRO_FT, fontconfig freetype2)
8610         BEOS_SURFACE_FEATURE="#define CAIRO_HAS_BEOS_SURFACE 1"
8611         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8612         MOZ_ENABLE_CAIRO_FT=1
8613     fi
8614     if test "$USE_FC_FREETYPE"; then
8615         FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
8616     fi
8617     AC_SUBST(MOZ_ENABLE_CAIRO_FT)
8618     AC_SUBST(MOZ_ENABLE_DWRITE_FONT)
8619     AC_SUBST(MOZ_ENABLE_D2D_SURFACE)
8620     AC_SUBST(MOZ_ENABLE_D3D9_LAYER)
8621     AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
8622     AC_SUBST(CAIRO_FT_CFLAGS)
8623     AC_SUBST(HAS_OGLES)
8625     if test "$MOZ_DEBUG"; then
8626       SANITY_CHECKING_FEATURE="#define CAIRO_DO_SANITY_CHECKING 1"
8627     else
8628       SANITY_CHECKING_FEATURE="#undef CAIRO_DO_SANITY_CHECKING"
8629     fi
8631     PNG_FUNCTIONS_FEATURE="#define CAIRO_HAS_PNG_FUNCTIONS 1"
8633     AC_SUBST(PS_SURFACE_FEATURE)
8634     AC_SUBST(PDF_SURFACE_FEATURE)
8635     AC_SUBST(SVG_SURFACE_FEATURE)
8636     AC_SUBST(XLIB_SURFACE_FEATURE)
8637     AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
8638     AC_SUBST(QUARTZ_SURFACE_FEATURE)
8639     AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
8640     AC_SUBST(XCB_SURFACE_FEATURE)
8641     AC_SUBST(WIN32_SURFACE_FEATURE)
8642     AC_SUBST(OS2_SURFACE_FEATURE)
8643     AC_SUBST(BEOS_SURFACE_FEATURE)
8644     AC_SUBST(DIRECTFB_SURFACE_FEATURE)
8645     AC_SUBST(FT_FONT_FEATURE)
8646     AC_SUBST(FC_FONT_FEATURE)
8647     AC_SUBST(WIN32_FONT_FEATURE)
8648     AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
8649     AC_SUBST(WIN32_D2D_SURFACE_FEATURE)
8650     AC_SUBST(QUARTZ_FONT_FEATURE)
8651     AC_SUBST(PNG_FUNCTIONS_FEATURE)
8652     AC_SUBST(QT_SURFACE_FEATURE)
8654     MOZ_CAIRO_LIBS='$(call EXPAND_LIBNAME_PATH,mozcairo,$(DEPTH)/gfx/cairo/cairo/src)'" $CAIRO_FT_LIBS"
8656     if test "$MOZ_TREE_PIXMAN"; then
8657         AC_DEFINE(MOZ_TREE_PIXMAN)
8658         MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS"' $(call EXPAND_LIBNAME_PATH,mozlibpixman,$(DEPTH)/gfx/cairo/libpixman/src)'
8659     else
8660         PKG_CHECK_MODULES(PIXMAN, pixman-1 >= 0.19.2)
8661         MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $PIXMAN_CFLAGS"
8662         MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $PIXMAN_LIBS"
8663     fi
8665     if test "$MOZ_X11"; then
8666         MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS -lXrender -lfreetype -lfontconfig"
8667     fi
8669     CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
8670     mv -f $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig 2> /dev/null
8672 else
8673    PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION pixman-1 freetype2 fontconfig)
8674    MOZ_CAIRO_CFLAGS=$CAIRO_CFLAGS
8675    MOZ_CAIRO_LIBS=$CAIRO_LIBS
8676    if test "$MOZ_X11"; then
8677         PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
8678         MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
8679         MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
8680    fi
8683 AC_SUBST(MOZ_TREE_CAIRO)
8684 AC_SUBST(MOZ_CAIRO_CFLAGS)
8685 AC_SUBST(MOZ_CAIRO_LIBS)
8686 AC_SUBST(MOZ_TREE_PIXMAN)
8688 dnl ========================================================
8689 dnl qcms
8690 dnl ========================================================
8692 QCMS_LIBS='$(call EXPAND_LIBNAME_PATH,mozqcms,$(DEPTH)/gfx/qcms)'
8693 AC_SUBST(QCMS_LIBS)
8695 dnl ========================================================
8696 dnl HarfBuzz
8697 dnl ========================================================
8698 MOZ_HARFBUZZ_LIBS='$(DEPTH)/gfx/harfbuzz/src/$(LIB_PREFIX)mozharfbuzz.$(LIB_SUFFIX)'
8699 AC_SUBST(MOZ_HARFBUZZ_LIBS)
8701 dnl ========================================================
8702 dnl OTS
8703 dnl ========================================================
8704 MOZ_OTS_LIBS='$(DEPTH)/gfx/ots/src/$(LIB_PREFIX)mozots.$(LIB_SUFFIX)'
8705 AC_SUBST(MOZ_OTS_LIBS)
8707 dnl ========================================================
8708 dnl disable xul
8709 dnl ========================================================
8710 MOZ_ARG_DISABLE_BOOL(xul,
8711 [  --disable-xul           Disable XUL],
8712     MOZ_XUL= )
8713 if test "$MOZ_XUL"; then
8714   AC_DEFINE(MOZ_XUL)
8715 else
8716   dnl remove extensions that require XUL
8717   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
8720 AC_SUBST(MOZ_XUL)
8722 dnl ========================================================
8723 dnl disable profile locking
8724 dnl   do no use this in applications that can have more than
8725 dnl   one process accessing the profile directory.
8726 dnl ========================================================
8727 MOZ_ARG_DISABLE_BOOL(profilelocking,
8728 [  --disable-profilelocking
8729                           Disable profile locking],
8730     MOZ_PROFILELOCKING=,
8731     MOZ_PROFILELOCKING=1 )
8732 if test "$MOZ_PROFILELOCKING"; then
8733   AC_DEFINE(MOZ_PROFILELOCKING)
8736 dnl ========================================================
8737 dnl disable rdf services
8738 dnl ========================================================
8739 MOZ_ARG_DISABLE_BOOL(rdf,
8740 [  --disable-rdf           Disable RDF],
8741     MOZ_RDF= )
8742 if test "$MOZ_RDF"; then
8743   AC_DEFINE(MOZ_RDF)
8746 AC_SUBST(MOZ_RDF)
8748 dnl ========================================================
8749 dnl necko configuration options
8750 dnl ========================================================
8753 dnl option to disable various necko protocols
8755 MOZ_ARG_ENABLE_STRING(necko-protocols,
8756 [  --enable-necko-protocols[={http,ftp,default,all,none}]
8757                           Enable/disable specific protocol handlers],
8758 [ for option in `echo $enableval | sed 's/,/ /g'`; do
8759     if test "$option" = "yes" -o "$option" = "all"; then
8760         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8761     elif test "$option" = "no" -o "$option" = "none"; then
8762         NECKO_PROTOCOLS=""
8763     elif test "$option" = "default"; then
8764         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8765     elif test `echo "$option" | grep -c \^-` != 0; then
8766         option=`echo $option | sed 's/^-//'`
8767         NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
8768     else
8769         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
8770     fi
8771 done],
8772     NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
8773 dnl Remove dupes
8774 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
8775 AC_SUBST(NECKO_PROTOCOLS)
8776 for p in $NECKO_PROTOCOLS; do
8777     AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
8778 done
8781 dnl option to disable necko's disk cache
8783 MOZ_ARG_DISABLE_BOOL(necko-disk-cache,
8784 [  --disable-necko-disk-cache
8785                           Disable necko disk cache],
8786     NECKO_DISK_CACHE=,
8787     NECKO_DISK_CACHE=1)
8788 AC_SUBST(NECKO_DISK_CACHE)
8789 if test "$NECKO_DISK_CACHE"; then
8790     AC_DEFINE(NECKO_DISK_CACHE)
8794 dnl option to disable necko's wifi scanner
8796 MOZ_ARG_DISABLE_BOOL(necko-wifi,
8797 [  --disable-necko-wifi    Disable necko wifi scanner],
8798     NECKO_WIFI=,
8799     NECKO_WIFI=1)
8801 if test "$OS_ARCH" = "OS2"; then
8802   dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566
8803   NECKO_WIFI=
8805 if test "$NECKO_WIFI" -a \
8806         "$OS_ARCH" != "Linux" -a \
8807         "$OS_ARCH" != "Darwin" -a \
8808         "$OS_ARCH" != "SunOS" -a \
8809         "$OS_ARCH" != "WINNT" -a \
8810         "$OS_ARCH" != "WINCE"; then
8811   AC_MSG_ERROR([Necko WiFi scanning not supported on your platform, use --disable-necko-wifi])
8814 if test -z "$SKIP_LIBRARY_CHECKS" -a "$NECKO_WIFI" -a "$OS_ARCH" = "Linux"
8815 then
8816   AC_CHECK_HEADER([iwlib.h])
8817   if test "$ac_cv_header_iwlib_h" != "yes"; then
8818     AC_MSG_ERROR([Can't find header iwlib.h for Necko WiFi scanning (might be in package libiw-dev (Ubuntu) or wireless-tools-devel (Fedora)); use --disable-necko-wifi to disable])
8819   fi
8822 if test "$NECKO_WIFI"; then
8823   AC_DEFINE(NECKO_WIFI)
8825 AC_SUBST(NECKO_WIFI)
8828 dnl option to disable cookies
8830 MOZ_ARG_DISABLE_BOOL(cookies,
8831 [  --disable-cookies       Disable cookie support],
8832     NECKO_COOKIES=,
8833     NECKO_COOKIES=1)
8834 AC_SUBST(NECKO_COOKIES)
8835 if test "$NECKO_COOKIES"; then
8836     AC_DEFINE(NECKO_COOKIES)
8840 dnl Build jsctypes on the platforms we can, unless it's explicitly disabled.
8842 MOZ_ARG_DISABLE_BOOL(ctypes,
8843 [  --disable-ctypes        Disable js-ctypes],
8844     BUILD_CTYPES=,
8845     BUILD_CTYPES=1)
8846 AC_SUBST(BUILD_CTYPES)
8847 if test "$BUILD_CTYPES"; then
8848   if test "$OS_ARCH" = "WINCE" -a `echo $OS_TEST | grep -ic arm` = 1; then
8849     # Disable ctypes for arm/wince.
8850     BUILD_CTYPES=
8851   else
8852     AC_DEFINE(BUILD_CTYPES)
8853   fi
8856 dnl NECKO_ configuration options are not global
8857 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_"
8859 dnl Only build Mork if it's required
8860 AC_SUBST(MOZ_MORK)
8861 if test "$MOZ_MORK"; then
8862   AC_DEFINE(MOZ_MORK)
8865 dnl Build the lightweight Mork reader if required
8866 AC_SUBST(MOZ_MORKREADER)
8867 if test "$MOZ_MORKREADER"; then
8868   AC_DEFINE(MOZ_MORKREADER)
8871 dnl Build Places if required
8872 if test "$MOZ_PLACES"; then
8873   AC_DEFINE(MOZ_PLACES)
8876 dnl Build Sync Services if required
8877 AC_SUBST(MOZ_SERVICES_SYNC)
8878 if test -n "$MOZ_SERVICES_SYNC"; then
8879   AC_DEFINE(MOZ_SERVICES_SYNC)
8882 dnl ========================================================
8883 if test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
8884     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
8887 if test "$MOZ_APP_COMPONENT_INCLUDE"; then
8888   AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_INCLUDE, "$MOZ_APP_COMPONENT_INCLUDE")
8891 dnl ========================================================
8892 dnl =
8893 dnl = Maintainer debug option (no --enable equivalent)
8894 dnl =
8895 dnl ========================================================
8897 AC_SUBST(AR)
8898 AC_SUBST(AR_FLAGS)
8899 AC_SUBST(AR_LIST)
8900 AC_SUBST(AR_EXTRACT)
8901 AC_SUBST(AR_DELETE)
8902 AC_SUBST(AS)
8903 AC_SUBST(ASFLAGS)
8904 AC_SUBST(AS_DASH_C_FLAG)
8905 AC_SUBST(LD)
8906 AC_SUBST(RC)
8907 AC_SUBST(RCFLAGS)
8908 AC_SUBST(WINDRES)
8909 AC_SUBST(IMPLIB)
8910 AC_SUBST(FILTER)
8911 AC_SUBST(BIN_FLAGS)
8912 AC_SUBST(NS_USE_NATIVE)
8913 AC_SUBST(MOZ_WIDGET_TOOLKIT)
8914 AC_SUBST(MOZ_UPDATE_XTERM)
8915 AC_SUBST(MINIMO)
8916 AC_SUBST(MOZ_PLATFORM_MAEMO)
8917 AC_SUBST(MOZ_AUTH_EXTENSION)
8918 AC_SUBST(MOZ_MATHML)
8919 AC_SUBST(MOZ_PERMISSIONS)
8920 AC_SUBST(MOZ_XTF)
8921 AC_SUBST(MOZ_PREF_EXTENSIONS)
8922 AC_SUBST(MOZ_SVG)
8923 AC_SUBST(MOZ_SMIL)
8924 AC_SUBST(MOZ_XSLT_STANDALONE)
8925 AC_SUBST(MOZ_JS_LIBS)
8926 AC_SUBST(MOZ_PSM)
8927 AC_SUBST(MOZ_DEBUG)
8928 AC_SUBST(MOZ_DEBUG_SYMBOLS)
8929 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
8930 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
8931 AC_SUBST(MOZ_DEBUG_FLAGS)
8932 AC_SUBST(MOZ_DEBUG_LDFLAGS)
8933 AC_SUBST(WARNINGS_AS_ERRORS)
8934 AC_SUBST(MOZ_EXTENSIONS)
8935 AC_SUBST(MOZ_JSDEBUGGER)
8936 AC_SUBST(MOZ_PLUGINS)
8937 AC_SUBST(MOZ_LOG_REFCNT)
8938 AC_SUBST(MOZ_LEAKY)
8939 AC_SUBST(MOZ_JPROF)
8940 AC_SUBST(MOZ_SHARK)
8941 AC_SUBST(MOZ_CALLGRIND)
8942 AC_SUBST(MOZ_VTUNE)
8943 AC_SUBST(MOZ_PROFILING)
8944 AC_SUBST(MOZ_JSLOADER)
8945 AC_SUBST(MOZ_USE_NATIVE_UCONV)
8946 AC_SUBST(MOZ_QUANTIFY)
8947 AC_SUBST(LIBICONV)
8948 AC_SUBST(MOZ_PLACES)
8949 AC_SUBST(MOZ_PLACES_BOOKMARKS)
8950 AC_SUBST(MOZ_STORAGE)
8951 AC_SUBST(MOZ_TOOLKIT_SEARCH)
8952 AC_SUBST(MOZ_FEEDS)
8953 AC_SUBST(NS_PRINTING)
8954 AC_SUBST(MOZ_WEBGL)
8955 AC_SUBST(MOZ_HELP_VIEWER)
8957 AC_SUBST(MOZ_JAVAXPCOM)
8958 AC_SUBST(JAVA_INCLUDE_PATH)
8959 AC_SUBST(JAVA)
8960 AC_SUBST(JAVAC)
8961 AC_SUBST(JAR)
8963 AC_SUBST(MOZ_PROFILELOCKING)
8965 AC_SUBST(HAVE_XIE)
8966 AC_SUBST(MOZ_XIE_LIBS)
8968 AC_SUBST(BUILD_STATIC_LIBS)
8969 AC_SUBST(MOZ_ENABLE_LIBXUL)
8970 AC_SUBST(ENABLE_TESTS)
8971 AC_SUBST(IBMBIDI)
8972 AC_SUBST(MOZ_UNIVERSALCHARDET)
8973 AC_SUBST(ACCESSIBILITY)
8974 AC_SUBST(MOZ_VIEW_SOURCE)
8975 AC_SUBST(MOZ_SPELLCHECK)
8976 AC_SUBST(MOZ_USER_DIR)
8977 AC_SUBST(MOZ_CRASHREPORTER)
8978 AC_SUBST(MOZ_UPDATER)
8979 AC_SUBST(MOZ_ANGLE)
8980 AC_SUBST(MOZ_DIRECTX_SDK_PATH)
8982 AC_SUBST(ENABLE_STRIP)
8983 AC_SUBST(PKG_SKIP_STRIP)
8984 AC_SUBST(USE_ELF_DYNSTR_GC)
8985 AC_SUBST(INCREMENTAL_LINKER)
8986 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
8987 AC_SUBST(MOZ_JEMALLOC_STANDALONE_GLUE_LDOPTS)
8988 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
8990 AC_SUBST(MOZ_FIX_LINK_PATHS)
8991 AC_SUBST(XPCOM_LIBS)
8992 AC_SUBST(XPCOM_FROZEN_LDOPTS)
8993 AC_SUBST(XPCOM_GLUE_LDOPTS)
8994 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
8996 AC_SUBST(USE_DEPENDENT_LIBS)
8998 AC_SUBST(MOZ_BUILD_ROOT)
8999 AC_SUBST(MOZ_OS2_TOOLS)
9001 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
9002 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
9003 AC_SUBST(MOZ_TIMELINE)
9004 AC_SUBST(OGLES_SDK_DIR)
9006 AC_SUBST(MOZ_APP_NAME)
9007 AC_SUBST(MOZ_APP_DISPLAYNAME)
9008 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
9009 AC_SUBST(MOZ_APP_UA_NAME)
9010 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
9011 AC_SUBST(MOZ_APP_VERSION)
9012 AC_DEFINE_UNQUOTED(MOZ_UA_FIREFOX_VERSION, "$FIREFOX_VERSION")
9013 AC_SUBST(MOZ_UA_FIREFOX_VERSION)
9014 AC_SUBST(FIREFOX_VERSION)
9015 AC_DEFINE_UNQUOTED(MOZ_UA_BUILDID, "$MOZ_UA_BUILDID")
9016 AC_SUBST(MOZ_UA_BUILDID)
9018 AC_SUBST(MOZ_PKG_SPECIAL)
9020 AC_SUBST(MOZILLA_OFFICIAL)
9022 dnl win32 options
9023 AC_SUBST(MOZ_MAPINFO)
9024 AC_SUBST(MOZ_BROWSE_INFO)
9025 AC_SUBST(MOZ_TOOLS_DIR)
9026 AC_SUBST(CYGWIN_WRAPPER)
9027 AC_SUBST(AS_PERL)
9028 AC_SUBST(WIN32_REDIST_DIR)
9029 AC_SUBST(PYTHON)
9030 AC_SUBST(MAKENSISU)
9032 AC_SUBST(WINCE)
9033 AC_SUBST(WINCE_SDK_DIR)
9034 AC_SUBST(WINCE_WINDOWS_MOBILE)
9036 dnl Echo the CFLAGS to remove extra whitespace.
9037 CFLAGS=`echo \
9038         $_WARNINGS_CFLAGS \
9039         $CFLAGS`
9041 CXXFLAGS=`echo \
9042         $_MOZ_RTTI_FLAGS \
9043         $_MOZ_EXCEPTIONS_FLAGS \
9044         $_WARNINGS_CXXFLAGS \
9045         $CXXFLAGS`
9047 COMPILE_CFLAGS=`echo \
9048     $_DEFINES_CFLAGS \
9049         $_DEPEND_CFLAGS \
9050     $COMPILE_CFLAGS`
9052 COMPILE_CXXFLAGS=`echo \
9053     $_DEFINES_CXXFLAGS \
9054         $_DEPEND_CFLAGS \
9055     $COMPILE_CXXFLAGS`
9057 AC_SUBST(SYSTEM_MAKEDEPEND)
9058 AC_SUBST(SYSTEM_LIBXUL)
9059 AC_SUBST(SYSTEM_JPEG)
9060 AC_SUBST(SYSTEM_PNG)
9061 AC_SUBST(SYSTEM_ZLIB)
9062 AC_SUBST(SYSTEM_BZ2)
9064 AC_SUBST(JPEG_CFLAGS)
9065 AC_SUBST(JPEG_LIBS)
9066 AC_SUBST(ZLIB_CFLAGS)
9067 AC_SUBST(ZLIB_LIBS)
9068 AC_SUBST(BZ2_CFLAGS)
9069 AC_SUBST(BZ2_LIBS)
9070 AC_SUBST(PNG_CFLAGS)
9071 AC_SUBST(PNG_LIBS)
9073 AC_SUBST(MOZ_JPEG_CFLAGS)
9074 AC_SUBST(MOZ_JPEG_LIBS)
9075 AC_SUBST(MOZ_ZLIB_CFLAGS)
9076 AC_SUBST(MOZ_ZLIB_LIBS)
9077 AC_SUBST(MOZ_BZ2_CFLAGS)
9078 AC_SUBST(MOZ_BZ2_LIBS)
9079 AC_SUBST(MOZ_PNG_CFLAGS)
9080 AC_SUBST(MOZ_PNG_LIBS)
9082 AC_SUBST(NSPR_CFLAGS)
9083 AC_SUBST(NSPR_LIBS)
9084 AC_SUBST(MOZ_NATIVE_NSPR)
9086 AC_SUBST(NSS_CFLAGS)
9087 AC_SUBST(NSS_LIBS)
9088 AC_SUBST(NSS_DEP_LIBS)
9089 AC_SUBST(MOZ_NATIVE_NSS)
9090 AC_SUBST(NSS_DISABLE_DBM)
9092 AC_SUBST(CFLAGS)
9093 AC_SUBST(CXXFLAGS)
9094 AC_SUBST(CPPFLAGS)
9095 AC_SUBST(COMPILE_CFLAGS)
9096 AC_SUBST(COMPILE_CXXFLAGS)
9097 AC_SUBST(LDFLAGS)
9098 AC_SUBST(LIBS)
9099 AC_SUBST(CROSS_COMPILE)
9100 AC_SUBST(WCHAR_CFLAGS)
9102 AC_SUBST(HOST_CC)
9103 AC_SUBST(HOST_CXX)
9104 AC_SUBST(HOST_CFLAGS)
9105 AC_SUBST(HOST_CXXFLAGS)
9106 AC_SUBST(HOST_OPTIMIZE_FLAGS)
9107 AC_SUBST(HOST_AR)
9108 AC_SUBST(HOST_AR_FLAGS)
9109 AC_SUBST(HOST_LD)
9110 AC_SUBST(HOST_RANLIB)
9111 AC_SUBST(HOST_NSPR_MDCPUCFG)
9112 AC_SUBST(HOST_BIN_SUFFIX)
9113 AC_SUBST(HOST_OS_ARCH)
9115 AC_SUBST(TARGET_CPU)
9116 AC_SUBST(TARGET_VENDOR)
9117 AC_SUBST(TARGET_OS)
9118 AC_SUBST(TARGET_NSPR_MDCPUCFG)
9119 AC_SUBST(TARGET_MD_ARCH)
9120 AC_SUBST(TARGET_XPCOM_ABI)
9121 AC_SUBST(OS_TARGET)
9122 AC_SUBST(OS_ARCH)
9123 AC_SUBST(OS_RELEASE)
9124 AC_SUBST(OS_TEST)
9126 AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
9127 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
9129 AC_SUBST(WRAP_MALLOC_CFLAGS)
9130 AC_SUBST(WRAP_MALLOC_LIB)
9131 AC_SUBST(MKSHLIB)
9132 AC_SUBST(MKCSHLIB)
9133 AC_SUBST(MKSHLIB_FORCE_ALL)
9134 AC_SUBST(MKSHLIB_UNFORCE_ALL)
9135 AC_SUBST(DSO_CFLAGS)
9136 AC_SUBST(DSO_PIC_CFLAGS)
9137 AC_SUBST(DSO_LDOPTS)
9138 AC_SUBST(LIB_PREFIX)
9139 AC_SUBST(DLL_PREFIX)
9140 AC_SUBST(DLL_SUFFIX)
9141 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
9142 AC_SUBST(LIB_SUFFIX)
9143 AC_SUBST(OBJ_SUFFIX)
9144 AC_SUBST(BIN_SUFFIX)
9145 AC_SUBST(ASM_SUFFIX)
9146 AC_SUBST(IMPORT_LIB_SUFFIX)
9147 AC_SUBST(USE_N32)
9148 AC_SUBST(CC_VERSION)
9149 AC_SUBST(CXX_VERSION)
9150 AC_SUBST(MSMANIFEST_TOOL)
9151 AC_SUBST(NS_ENABLE_TSF)
9152 AC_SUBST(MOZ_NSS_PATCH)
9153 AC_SUBST(MOZ_APP_COMPONENT_LIBS)
9154 AC_SUBST(MOZ_APP_EXTRA_LIBS)
9156 AC_SUBST(MOZ_MEDIA)
9157 AC_SUBST(MOZ_SYDNEYAUDIO)
9158 AC_SUBST(MOZ_WAVE)
9159 AC_SUBST(MOZ_VORBIS)
9160 AC_SUBST(MOZ_TREMOR)
9161 AC_SUBST(MOZ_WEBM)
9162 AC_SUBST(MOZ_OGG)
9163 AC_SUBST(MOZ_ALSA_LIBS)
9164 AC_SUBST(VPX_AS)
9165 AC_SUBST(VPX_ASFLAGS)
9166 AC_SUBST(VPX_DASH_C_FLAG)
9167 AC_SUBST(VPX_AS_CONVERSION)
9168 AC_SUBST(VPX_ASM_SUFFIX)
9169 AC_SUBST(VPX_X86_ASM)
9170 AC_SUBST(VPX_ARM_ASM)
9172 if test "$USING_HCC"; then
9173    CC='${topsrcdir}/build/hcc'
9174    CC="$CC '$_OLDCC'"
9175    CXX='${topsrcdir}/build/hcpp'
9176    CXX="$CXX '$_OLDCXX'"
9177    AC_SUBST(CC)
9178    AC_SUBST(CXX)
9181 AC_MSG_CHECKING([for posix_fallocate])       
9182 AC_TRY_LINK([#define _XOPEN_SOURCE 600
9183   #include <fcntl.h>],
9184                  [posix_fallocate(0, 0, 0);],
9185                  [ac_cv___posix_fallocate=true],
9186                  [ac_cv___posix_fallocate=false])
9188 if test "$ac_cv___posix_fallocate" = true ; then
9189   AC_DEFINE(HAVE_POSIX_FALLOCATE)
9190   AC_MSG_RESULT(yes)
9191 else
9192   AC_MSG_RESULT(no)
9195 dnl Check for missing components
9196 if test "$COMPILE_ENVIRONMENT"; then
9197 if test "$MOZ_X11"; then
9198     dnl ====================================================
9199     dnl = Check if X headers exist
9200     dnl ====================================================
9201     _SAVE_CFLAGS=$CFLAGS
9202     CFLAGS="$CFLAGS $XCFLAGS"
9203     AC_TRY_COMPILE([
9204         #include <stdio.h>
9205         #include <stdlib.h>
9206         #include <X11/Xlib.h>
9207         #include <X11/Intrinsic.h>
9208     ],
9209     [
9210         Display *dpy = 0;
9211         if ((dpy = XOpenDisplay(NULL)) == NULL) {
9212             fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
9213             exit(1);
9214         }
9215     ], [], 
9216     [ AC_MSG_ERROR([Could not compile basic X program.]) ])
9217     CFLAGS="$_SAVE_CFLAGS"
9219     if test ! -z "$MISSING_X"; then
9220         AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
9221     fi
9223 fi # MOZ_X11
9225 dnl Check for headers, etc. needed by WebGL.
9226 if test -n "$MOZ_WEBGL_GLX"; then
9227     AC_CHECK_HEADER(GL/glx.h)
9228     if test "$ac_cv_header_GL_glx_h" != "yes"; then
9229         AC_MSG_ERROR([Can't find header GL/glx.h for WebGL (install mesa-common-dev (Ubuntu), mesa-libGL-devel (Fedora), or Mesa (SuSE))])
9230     fi
9231 fi # MOZ_WEBGL_GLX
9232 fi # COMPILE_ENVIRONMENT
9234 if test "$USE_FC_FREETYPE"; then
9235     if test "$COMPILE_ENVIRONMENT"; then
9236         _SAVE_CPPFLAGS="$CPPFLAGS"
9237         CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
9238         AC_CHECK_HEADERS(fontconfig/fcfreetype.h, , 
9239             [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)])
9240         CPPFLAGS="$_SAVE_CPPFLAGS"
9241     else
9242         AC_DEFINE(HAVE_FONTCONFIG_FCFREETYPE_H)
9243     fi
9246 dnl Set various defines and substitutions
9247 dnl ========================================================
9249 if test "$OS_ARCH" = "BeOS"; then
9250   AC_DEFINE(XP_BEOS)
9251 elif test "$OS_ARCH" = "Darwin"; then
9252   AC_DEFINE(XP_UNIX)
9253   AC_DEFINE(UNIX_ASYNC_DNS)
9254 elif test "$OS_ARCH" = "OpenVMS"; then
9255   AC_DEFINE(XP_UNIX)
9256 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
9257   AC_DEFINE(XP_UNIX)
9258   AC_DEFINE(UNIX_ASYNC_DNS)
9261 if test "$MOZ_DEBUG"; then
9262     AC_DEFINE(MOZ_REFLOW_PERF)
9263     AC_DEFINE(MOZ_REFLOW_PERF_DSP)
9266 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
9267     AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
9268     ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
9269     ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
9270     ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
9271     ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
9272     AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
9273     AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
9274     AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
9277 dnl ========================================================
9278 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
9279 dnl ========================================================
9280 case "$host_os" in
9281 mingw*)
9282     WIN_TOP_SRC=`cd $srcdir; pwd -W`
9283     ;;
9284 cygwin*|msvc*|mks*)
9285     HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
9286     HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
9287     CC="\$(CYGWIN_WRAPPER) $CC"
9288     CXX="\$(CYGWIN_WRAPPER) $CXX"
9289     CPP="\$(CYGWIN_WRAPPER) $CPP"
9290     LD="\$(CYGWIN_WRAPPER) $LD"
9291     AS="\$(CYGWIN_WRAPPER) $AS"
9292     RC="\$(CYGWIN_WRAPPER) $RC"
9293     MIDL="\$(CYGWIN_WRAPPER) $MIDL"
9294     CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
9295     WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
9296     ;;
9297 esac
9299 AC_SUBST(CYGDRIVE_MOUNT)
9300 AC_SUBST(WIN_TOP_SRC)
9302 AC_SUBST(MOZILLA_VERSION)
9304 AC_SUBST(ac_configure_args)
9306 dnl Spit out some output
9307 dnl ========================================================
9309 dnl The following defines are used by xpcom
9310 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
9311 CPP_THROW_NEW
9312 HAVE_CPP_2BYTE_WCHAR_T
9313 HAVE_CPP_ACCESS_CHANGING_USING
9314 HAVE_CPP_AMBIGUITY_RESOLVING_USING
9315 HAVE_CPP_BOOL
9316 HAVE_CPP_CHAR16_T
9317 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
9318 HAVE_CPP_EXPLICIT
9319 HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
9320 HAVE_CPP_NAMESPACE_STD
9321 HAVE_CPP_NEW_CASTS
9322 HAVE_CPP_PARTIAL_SPECIALIZATION
9323 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
9324 HAVE_CPP_TYPENAME
9325 HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL
9326 HAVE_STATVFS
9327 NEED_CPP_UNUSED_IMPLEMENTATIONS
9328 NEW_H
9329 HAVE_GETPAGESIZE
9330 HAVE_ICONV
9331 HAVE_ICONV_WITH_CONST_INPUT
9332 HAVE_MBRTOWC
9333 HAVE_SYS_MOUNT_H
9334 HAVE_SYS_VFS_H
9335 HAVE_WCRTOMB
9338 AC_CONFIG_HEADER(
9339 netwerk/necko-config.h
9340 xpcom/xpcom-config.h
9341 xpcom/xpcom-private.h
9344 # Save the defines header file before autoconf removes it.
9345 # (Do not add AC_DEFINE calls after this line.)
9346   _CONFIG_TMP=confdefs-tmp.h
9347   _CONFIG_DEFS_H=mozilla-config.h
9349   cat > $_CONFIG_TMP <<\EOF
9350 /* List of defines generated by configure. Included with preprocessor flag,
9351  * -include, to avoid long list of -D defines on the compile command-line.
9352  * Do not edit.
9353  */
9355 #ifndef _MOZILLA_CONFIG_H_
9356 #define _MOZILLA_CONFIG_H_
9359 _EGREP_PATTERN='^#define ('
9360 if test -n "$_NON_GLOBAL_ACDEFINES"; then
9361     for f in $_NON_GLOBAL_ACDEFINES; do
9362         _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
9363     done
9365 _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
9367   sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
9369   cat >> $_CONFIG_TMP <<\EOF
9371 #endif /* _MOZILLA_CONFIG_H_ */
9375   # Only write mozilla-config.h when something changes (or it doesn't exist)
9376   if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
9377     rm $_CONFIG_TMP
9378   else
9379     AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
9380     mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
9382     echo ==== $_CONFIG_DEFS_H =================================
9383     cat $_CONFIG_DEFS_H
9384   fi
9386 dnl Probably shouldn't call this manually but we always want the output of DEFS
9387 rm -f confdefs.h.save
9388 mv confdefs.h confdefs.h.save
9389 egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
9390 AC_OUTPUT_MAKE_DEFS()
9391 MOZ_DEFINES=$DEFS
9392 AC_SUBST(MOZ_DEFINES)
9393 rm -f confdefs.h
9394 mv confdefs.h.save confdefs.h
9396 dnl Load the list of Makefiles to generate.
9397 dnl   To add new Makefiles, edit allmakefiles.sh.
9398 dnl   allmakefiles.sh sets the variable, MAKEFILES.
9399 . ${srcdir}/allmakefiles.sh
9400 dnl 
9401 dnl Run a perl script to quickly create the makefiles.
9402 dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
9403 dnl   for the files it cannot handle correctly. This way, config.status
9404 dnl   will handle these files.
9405 dnl If it fails, nothing is set and config.status will run as usual.
9407 dnl This does not change the $MAKEFILES variable.
9409 dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
9411 if test -z "${AS_PERL}"; then
9412 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
9413 else
9414 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
9416 . ./conftest.sh
9417 rm conftest.sh
9419 echo $MAKEFILES > unallmakefiles
9421 mv -f config/autoconf.mk config/autoconf.mk.orig 2> /dev/null
9423 AC_OUTPUT($MAKEFILES)
9425 dnl Prevent the regeneration of cairo-features.h forcing rebuilds of gfx stuff
9426 if test "$CAIRO_FEATURES_H"; then
9427   if cmp -s $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig; then
9428     echo "$CAIRO_FEATURES_H is unchanged"
9429     mv -f "$CAIRO_FEATURES_H".orig "$CAIRO_FEATURES_H" 2> /dev/null
9430   else
9431     rm -f "$CAIRO_FEATURES_H".orig 2> /dev/null
9432   fi
9435 # Run freetype configure script
9437 if test "$MOZ_TREE_FREETYPE"; then
9438    export CFLAGS="$CFLAGS -std=c99"
9439    export CPPFLAGS="$CPPFLAGS"
9440    export CXXFLAGS="$CXXFLAGS"
9441    export LDFLAGS="$LDFLAGS"
9442    export CONFIG_FILES="unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config freetype2.pc:freetype2.in"
9443    ac_configure_args="$ac_configure_args --host=$target --disable-shared --with-pic=yes"
9444    AC_OUTPUT_SUBDIRS(modules/freetype2)
9447 dnl ========================================================
9448 dnl = Setup a nice relatively clean build environment for
9449 dnl = sub-configures.
9450 dnl ========================================================
9451 CC="$_SUBDIR_CC" 
9452 CXX="$_SUBDIR_CXX" 
9453 CFLAGS="$_SUBDIR_CFLAGS" 
9454 CPPFLAGS="$_SUBDIR_CPPFLAGS"
9455 CXXFLAGS="$_SUBDIR_CXXFLAGS"
9456 LDFLAGS="$_SUBDIR_LDFLAGS"
9457 HOST_CC="$_SUBDIR_HOST_CC" 
9458 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9459 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9462 unset MAKEFILES
9463 unset CONFIG_FILES
9465 # No need to run subconfigures when building with LIBXUL_SDK_DIR
9466 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
9468 if test -n "$MOZ_THUMB2"; then
9469   _SUBDIR_CONFIG_ARGS="$_SUBDIR_CONFIG_ARGS --enable-thumb2"
9471 if test -n "$_WRAP_MALLOC"; then
9472   _SUBDIR_CONFIG_ARGS="$_SUBDIR_CONFIG_ARGS --enable-wrap-malloc"
9475 if test -z "$MOZ_NATIVE_NSPR"; then
9476     ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
9477     if test -z "$MOZ_DEBUG"; then
9478         ac_configure_args="$ac_configure_args --disable-debug"
9479     fi
9480     if test "$MOZ_OPTIMIZE" = "1"; then
9481         ac_configure_args="$ac_configure_args --enable-optimize"
9482     fi
9483     if test "$OS_ARCH" = "WINNT" -a "$NS_TRACE_MALLOC"; then
9484        ac_configure_args="$ac_configure_args --enable-debug --disable-optimize"
9485     fi
9486     if test -n "$HAVE_64BIT_OS"; then
9487         ac_configure_args="$ac_configure_args --enable-64bit"
9488     fi
9489     if test -n "$USE_ARM_KUSER"; then
9490         ac_configure_args="$ac_configure_args --with-arm-kuser"
9491     fi
9492     AC_OUTPUT_SUBDIRS(nsprpub)
9493     ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9496 if test -z "$MOZ_NATIVE_NSPR"; then
9497     # Hack to deal with the fact that we use NSPR_CFLAGS everywhere
9498     AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
9499     if test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
9500        NSPR_LIBS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --libdir=$LIBXUL_DIST/lib --libs`
9501        $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $NSPR_LIBS'" config/autoconf.mk
9502        NSPR_CFLAGS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --includedir=$LIBXUL_DIST/include/nspr --cflags`
9503        $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $NSPR_CFLAGS'" config/autoconf.mk
9504     fi
9505     rm -f config/autoconf.mk.bak
9508 # Run the SpiderMonkey 'configure' script.
9509 dist=$MOZ_BUILD_ROOT/dist
9510 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9511 ac_configure_args="$ac_configure_args --enable-threadsafe"
9512 if test "$BUILD_CTYPES"; then
9513     # Build js-ctypes on the platforms we can.
9514     ac_configure_args="$ac_configure_args --enable-ctypes"
9516 if test -z "$JS_SHARED_LIBRARY" ; then
9517     ac_configure_args="$ac_configure_args --disable-shared-js"
9519 if test -z "$MOZ_NATIVE_NSPR"; then
9520     ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
9521     ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
9523 ac_configure_args="$ac_configure_args --with-dist-dir=../../dist"
9524 ac_configure_args="$ac_configure_args --prefix=$dist"
9525 ac_configure_args="$ac_configure_args --with-sync-build-files=$_topsrcdir"
9526 if test "$MOZ_MEMORY"; then
9527    ac_configure_args="$ac_configure_args --enable-jemalloc"
9528    if test -n "$MOZ_MEMORY_LDFLAGS"; then
9529      export MOZ_MEMORY_LDFLAGS
9530    fi
9532 AC_OUTPUT_SUBDIRS(js/src)
9533 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9535 fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR
9537 dnl Prevent the regeneration of autoconf.mk forcing rebuilds of the world
9538 dnl Needs to be at the end to respect possible changes from NSPR configure
9539 if cmp -s config/autoconf.mk config/autoconf.mk.orig; then
9540   echo "config/autoconf.mk is unchanged"
9541   mv -f config/autoconf.mk.orig config/autoconf.mk 2> /dev/null
9542 else
9543   rm -f config/autoconf.mk.orig 2> /dev/null