Bug 566827 - Connect win7 jump lists to purge session history observer. r=dao.
[mozilla-central.git] / configure.in
blob49e36194a749f6ca3185a943827a209c19a232ba
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}"
74 MOZ_DEB_TIMESTAMP=`date +"%a, %d  %b %Y %T %z"   2>&1` 
75 AC_SUBST(MOZ_DEB_TIMESTAMP)
78 dnl ========================================================
79 dnl =
80 dnl = Don't change the following two lines.  Doing so breaks:
81 dnl =
82 dnl = CFLAGS="-foo" ./configure
83 dnl =
84 dnl ========================================================
85 CFLAGS="${CFLAGS=}"
86 CPPFLAGS="${CPPFLAGS=}"
87 CXXFLAGS="${CXXFLAGS=}"
88 LDFLAGS="${LDFLAGS=}"
89 HOST_CFLAGS="${HOST_CFLAGS=}"
90 HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
91 HOST_LDFLAGS="${HOST_LDFLAGS=}"
93 dnl ========================================================
94 dnl = Preserve certain environment flags passed to configure
95 dnl = We want sub projects to receive the same flags
96 dnl = untainted by this configure script
97 dnl ========================================================
98 _SUBDIR_CC="$CC"
99 _SUBDIR_CXX="$CXX"
100 _SUBDIR_CFLAGS="$CFLAGS"
101 _SUBDIR_CPPFLAGS="$CPPFLAGS"
102 _SUBDIR_CXXFLAGS="$CXXFLAGS"
103 _SUBDIR_LDFLAGS="$LDFLAGS"
104 _SUBDIR_HOST_CC="$HOST_CC"
105 _SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
106 _SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
107 _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
108 _SUBDIR_CONFIG_ARGS="$ac_configure_args"
110 dnl Set the version number of the libs included with mozilla
111 dnl ========================================================
112 MOZJPEG=62
113 MOZPNG=10400
114 MOZZLIB=0x1230
115 NSPR_VERSION=4
116 NSS_VERSION=3
118 dnl Set the minimum version of toolkit libs used by mozilla
119 dnl ========================================================
120 GLIB_VERSION=1.2.0
121 LIBIDL_VERSION=0.6.3
122 PERL_VERSION=5.006
123 PYTHON_VERSION=2.4
124 CAIRO_VERSION=1.8.8
125 PANGO_VERSION=1.14.0
126 GTK2_VERSION=2.10.0
127 WINDRES_VERSION=2.14.90
128 W32API_VERSION=3.8
129 GNOMEVFS_VERSION=2.0
130 GNOMEUI_VERSION=2.2.0
131 GCONF_VERSION=1.2.1
132 GIO_VERSION=2.0
133 STARTUP_NOTIFICATION_VERSION=0.8
134 DBUS_VERSION=0.60
135 SQLITE_VERSION=3.6.23.1
136 LIBNOTIFY_VERSION=0.4
138 MSMANIFEST_TOOL=
140 dnl Set various checks
141 dnl ========================================================
142 MISSING_X=
143 AC_PROG_AWK
145 dnl Initialize the Pthread test variables early so they can be
146 dnl  overridden by each platform.
147 dnl ========================================================
148 USE_PTHREADS=
149 _PTHREAD_LDFLAGS=""
151 dnl Do not allow a separate objdir build if a srcdir build exists.
152 dnl ==============================================================
153 _topsrcdir=`cd \`dirname $0\`; pwd`
154 _objdir=`pwd`
156 if test "$_topsrcdir" != "$_objdir"
157 then
158   # Check for a couple representative files in the source tree
159   _conflict_files=
160   for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
161     if test -f $file; then
162       _conflict_files="$_conflict_files $file"
163     fi
164   done
165   if test "$_conflict_files"; then
166     echo "***"
167     echo "*   Your source tree contains these files:"
168     for file in $_conflict_files; do
169       echo "*         $file"
170     done
171     cat 1>&2 <<-EOF
172         *   This indicates that you previously built in the source tree.
173         *   A source tree build can confuse the separate objdir build.
174         *
175         *   To clean up the source tree:
176         *     1. cd $_topsrcdir
177         *     2. gmake distclean
178         ***
179         EOF
180     exit 1
181     break
182   fi
184 MOZ_BUILD_ROOT=`pwd`
186 dnl Default to MSVC for win32 and gcc-4.2 for darwin
187 dnl ==============================================================
188 if test -z "$CROSS_COMPILE"; then
189 case "$target" in
190 *-cygwin*|*-mingw*|*-msvc*|*-mks*)
191     if test -z "$CC"; then CC=cl; fi
192     if test -z "$CXX"; then CXX=cl; fi
193     if test -z "$CPP"; then CPP="cl -E -nologo"; fi
194     if test -z "$CXXCPP"; then CXXCPP="cl -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
195     if test -z "$LD"; then LD=link; fi
196     if test -z "$AS"; then
197         case "${target_cpu}" in
198         i*86)
199             AS=ml;
200             ;;
201         x86_64)
202             AS=ml64;
203             ;;
204         esac
205     fi
206     if test -z "$MIDL"; then MIDL=midl; fi
207     ;;
208 *-darwin*)
209     if test -z "$CC"; then CC=gcc-4.2; fi
210     if test -z "$CXX"; then CXX=g++-4.2; fi
211     ;;
212 esac
215 COMPILE_ENVIRONMENT=1
216 MOZ_ARG_DISABLE_BOOL(compile-environment,
217 [  --disable-compile-environment
218                            Disable compiler/library checks.],
219     COMPILE_ENVIRONMENT= )
220 AC_SUBST(COMPILE_ENVIRONMENT)
222 MOZ_ARG_WITH_STRING(l10n-base,
223 [  --with-l10n-base=DIR     path to l10n repositories],
224     L10NBASEDIR=$withval)
225 if test ! -z "$L10NBASEDIR"; then
226     if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then
227         AC_MSG_ERROR([--with-l10n-base must specify a path])
228     elif test -d "$L10NBASEDIR"; then
229         L10NBASEDIR=`cd "$L10NBASEDIR" && pwd`
230     else
231         AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
232     fi
234 AC_SUBST(L10NBASEDIR)
236 dnl Check for Perl first -- needed for win32 SDK checks
237 MOZ_PATH_PROGS(PERL, $PERL perl5 perl )
238 if test -z "$PERL" || test "$PERL" = ":"; then
239     AC_MSG_ERROR([perl not found in \$PATH])
242 dnl ========================================================
243 dnl = Android uses a very custom (hacky) toolchain; we need to do this
244 dnl = here, so that the compiler checks can succeed
245 dnl ========================================================
247 MOZ_ARG_WITH_STRING(android-ndk,
248 [  --with-android-ndk=DIR
249                            location where the Android NDK can be found],
250     android_ndk=$withval)
252 MOZ_ARG_WITH_STRING(android-toolchain,
253 [  --with-android-toolchain=DIR
254                            location of the android toolchain, default NDK/build/prebuilt/HOST/arm-eabi-4.4.0],
255     android_toolchain=$withval)
257 MOZ_ARG_WITH_STRING(android-platform,
258 [  --with-android-platform=DIR
259                            location of NDK platform dir, default NDK/build/platforms/android-5/arch-arm],
260     android_platform=$withval)
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 MOZ_ARG_WITH_STRING(android-tools,
268 [  --with-android-tools=DIR
269                            location where the Android Tools can be found (base directory, e.g. .../android/tools)],
270     android_tools=$withval)
272 if test "$target" = "arm-android-eabi" ; then
273     if test -z "$android_ndk" ; then
274         AC_MSG_ERROR([You must specify --with-android-ndk=/path/to/ndk when targeting Android.])
275     fi
277     if test -z "$android_sdk" ; then
278         AC_MSG_ERROR([You must specify --with-android-sdk=/path/to/sdk when targeting Android.])
279     fi
281     if test -z "$android_tools" ; then
282         AC_MSG_ERROR([You must specify --with-android-tools=/path/to/sdk/tools when targeting Android.])
283     fi
285     if test -z "$android_toolchain" ; then
286         android_toolchain="$android_ndk"/build/prebuilt/`uname -s | tr "[[:upper:]]" "[[:lower:]]"`-x86/arm-eabi-4.4.0
287     fi
289     if test -z "$android_platform" ; then
290        android_platform="$android_ndk"/build/platforms/android-5/arch-arm
291     fi
293     dnl set up compilers
294     AS="$android_toolchain"/bin/arm-eabi-as
295     CC="$android_toolchain"/bin/arm-eabi-gcc
296     CXX="$android_toolchain"/bin/arm-eabi-g++
297     CPP="$android_toolchain"/bin/arm-eabi-cpp
298     LD="$android_toolchain"/bin/arm-eabi-ld
299     AR="$android_toolchain"/bin/arm-eabi-ar
300     RANLIB="$android_toolchain"/bin/arm-eabi-ranlib
301     STRIP="$android_toolchain"/bin/arm-eabi-strip
303     CPPFLAGS="-I$android_platform/usr/include $CPPFLAGS"
304     CFLAGS="-mandroid -I$android_platform/usr/include -msoft-float -fno-short-enums -fno-exceptions -march=armv5te -mthumb-interwork $CFLAGS"
305     CXXFLAGS="-mandroid -I$android_platform/usr/include -msoft-float -fno-short-enums -fno-exceptions -march=armv5te -mthumb-interwork $CXXFLAGS"
307     dnl Add -llog by default, since we use it all over the place.
308     dnl Add --allow-shlib-undefined, because libGLESv2 links to an
309     dnl undefined symbol (present on the hardware, just not in the
310     dnl NDK.)
311     LDFLAGS="-mandroid -L$android_platform/usr/lib -Wl,-rpath-link=$android_platform/usr/lib --sysroot=$android_platform -llog -Wl,--allow-shlib-undefined $LDFLAGS"
313     dnl prevent cross compile section from using these flags as host flags
314     if test -z "$HOST_CPPFLAGS" ; then
315         HOST_CPPFLAGS=" "
316     fi
317     if test -z "$HOST_CFLAGS" ; then
318         HOST_CFLAGS=" "
319     fi
320     if test -z "$HOST_CXXFLAGS" ; then
321         HOST_CXXFLAGS=" "
322     fi
323     if test -z "$HOST_LDFLAGS" ; then
324         HOST_LDFLAGS=" "
325     fi
327     ANDROID_NDK="${android_ndk}"
328     ANDROID_TOOLCHAIN="{android_toolchain}"
329     ANDROID_PLATFORM="{android_platform}"
330     ANDROID_SDK="${android_sdk}"
331     ANDROID_TOOLS="${android_tools}"
333     AC_DEFINE(ANDROID)
334     CROSS_COMPILE=1
335     MOZ_CHROME_FILE_FORMAT=omni
338 AC_SUBST(ANDROID_NDK)
339 AC_SUBST(ANDROID_TOOLCHAIN)
340 AC_SUBST(ANDROID_PLATFORM)
341 AC_SUBST(ANDROID_SDK)
342 AC_SUBST(ANDROID_TOOLS)
344 dnl ========================================================
345 dnl Checks for compilers.
346 dnl ========================================================
347 dnl Set CROSS_COMPILE in the environment when running configure
348 dnl to use the cross-compile setup for now
349 dnl ========================================================
351 dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269)
352 AR_FLAGS='cr $@'
354 if test "$COMPILE_ENVIRONMENT"; then
356 dnl Do some special WinCE toolchain stuff
357 case "$target" in
358 *wince|*winmo)
360     MOZ_ARG_WITH_STRING(wince-sdk,
361     [  --with-wince-sdk=WINCE_SDK_DIR
362                         The path to the Windows CE SDK],
363     WINCE_SDK_DIR=$withval)
365     MOZ_ARG_WITH_STRING(ogles-sdk,
366     [  --with-ogles-sdk=OGLES_SDK_DIR
367                         The path to the OGLES SDK],
368     OGLES_SDK_DIR=$withval)
370     AC_DEFINE(WINCE)
371     
372     export WINCE=1
374     echo -----------------------------------------------------------------------------
375     echo Building Windows CE Shunt Library and Tool Chain
376     echo Using SDK in:
377     echo $WINCE_SDK_DIR
379     ac_exeext=.exe
381     _pwd=`pwd -W`
382     _topsrcdirwin=`cd \`dirname $0\`; pwd -W`
383     make OGLES_SDK_DIR="$OGLES_SDK_DIR" WINCE_SDK_DIR="$WINCE_SDK_DIR" \
384     TOPSRCDIR="$_topsrcdirwin" OBJDIR="$_pwd" target="$target" \
385     -C $srcdir/build/wince/tools
387     CC="$_pwd/dist/sdk/bin/$target-gcc.exe"
388     CXX="$_pwd/dist/sdk/bin/$target-gcc.exe"
389     CPP="$_pwd/dist/sdk/bin/$target-gcc.exe -E -nologo"
390     CXXCPP="$_pwd/dist/sdk/bin/$target-gcc.exe -TP -E -nologo"
391     LD="$_pwd/dist/sdk/bin/$target-link.exe"
392     AR="$_pwd/dist/sdk/bin/$target-lib.exe"
393     AS="$_pwd/dist/sdk/bin/$target-as.exe"
394     RC="$_pwd/dist/sdk/bin/$target-res.exe"
397     echo -----------------------------------------------------------------------------
399     ;;
400 esac
402 if test -n "$CROSS_COMPILE" && test "$target" != "$host"; then
403     echo "cross compiling from $host to $target"
404     cross_compiling=yes
406     _SAVE_CC="$CC"
407     _SAVE_CFLAGS="$CFLAGS"
408     _SAVE_LDFLAGS="$LDFLAGS"
410     AC_MSG_CHECKING([for host c compiler])
411     AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
412     if test -z "$HOST_CC"; then
413         AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
414     fi
415     AC_MSG_RESULT([$HOST_CC])
416     AC_MSG_CHECKING([for host c++ compiler])
417     AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
418     if test -z "$HOST_CXX"; then
419         AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
420     fi
421     AC_MSG_RESULT([$HOST_CXX])
423     if test -z "$HOST_CFLAGS"; then
424         HOST_CFLAGS="$CFLAGS"
425     fi
426     if test -z "$HOST_CXXFLAGS"; then
427         HOST_CXXFLAGS="$CXXFLAGS"
428     fi
429     if test -z "$HOST_LDFLAGS"; then
430         HOST_LDFLAGS="$LDFLAGS"
431     fi
432     if test -z "$HOST_AR_FLAGS"; then
433         HOST_AR_FLAGS="$AR_FLAGS"
434     fi
435     AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
436     AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
437     CC="$HOST_CC"
438     CFLAGS="$HOST_CFLAGS"
439     LDFLAGS="$HOST_LDFLAGS"
441     AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
442     AC_TRY_COMPILE([], [return(0);], 
443         [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
444         AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
446     CC="$HOST_CXX"
447     CFLAGS="$HOST_CXXFLAGS"
449     AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
450     AC_TRY_COMPILE([], [return(0);], 
451         [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
452         AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
453     
454     CC=$_SAVE_CC
455     CFLAGS=$_SAVE_CFLAGS
456     LDFLAGS=$_SAVE_LDFLAGS
458     case "$build:$target" in
459       powerpc-apple-darwin8*:i?86-apple-darwin*)
460         dnl The Darwin cross compiler doesn't necessarily point itself at a
461         dnl root that has libraries for the proper architecture, it defaults
462         dnl to the system root.  The libraries in the system root on current
463         dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
464         dnl checks will fail.  Fake a working SDK in that case.
465         _SAVE_CFLAGS=$CFLAGS
466         _SAVE_CXXFLAGS=$CXXLAGS
467         CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk $CFLAGS"
468         CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk $CXXFLAGS"
469         ;;
470     esac
472     AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
473     unset ac_cv_prog_CC
474     AC_PROG_CC
475     AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
476     unset ac_cv_prog_CXX
477     AC_PROG_CXX
479     case "$build:$target" in
480       powerpc-apple-darwin8*:i?86-apple-darwin*)
481         dnl Revert the changes made above.  From this point on, the target
482         dnl compiler will never be used without applying the SDK to CFLAGS
483         dnl (see --with-macos-sdk below).
484         CFLAGS=$_SAVE_CFLAGS
485         CXXFLAGS=$_SAVE_CXXFLAGS
486         ;;
487     esac
489     AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
490     AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
491     MOZ_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
492     AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
493     AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
494     AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
495     AC_DEFINE(CROSS_COMPILE)
496 else
497     AC_PROG_CC
498     AC_PROG_CXX
499     AC_PROG_RANLIB
500     MOZ_PATH_PROGS(AS, $AS as, $CC)
501     AC_CHECK_PROGS(AR, ar, :)
502     AC_CHECK_PROGS(LD, ld, :)
503     AC_CHECK_PROGS(STRIP, strip, :)
504     AC_CHECK_PROGS(WINDRES, windres, :)
505     if test -z "$HOST_CC"; then
506         HOST_CC='$(CC)'
507     fi
508     if test -z "$HOST_CFLAGS"; then
509         HOST_CFLAGS='$(CFLAGS)'
510     fi
511     if test -z "$HOST_CXX"; then
512         HOST_CXX='$(CXX)'
513     fi
514     if test -z "$HOST_CXXFLAGS"; then
515         HOST_CXXFLAGS='$(CXXFLAGS)'
516     fi
517     if test -z "$HOST_LDFLAGS"; then
518         HOST_LDFLAGS='$(LDFLAGS)'
519     fi
520     if test -z "$HOST_RANLIB"; then
521         HOST_RANLIB='$(RANLIB)'
522     fi
523     if test -z "$HOST_AR"; then
524         HOST_AR='$(AR)'
525     fi
526     if test -z "$HOST_AR_FLAGS"; then
527         HOST_AR_FLAGS='$(AR_FLAGS)'
528     fi
531 GNU_AS=
532 GNU_LD=
533 GNU_CC=
534 GNU_CXX=
535 CC_VERSION='N/A'
536 CXX_VERSION='N/A'
537 if test "$GCC" = "yes"; then
538     GNU_CC=1
539     CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
541 if test "$GXX" = "yes"; then
542     GNU_CXX=1
543     CXX_VERSION=`$CXX -v 2>&1 | grep 'gcc version'`
545 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
546     GNU_AS=1
548 if test "`echo | $LD -v 2>&1 | grep -c GNU`" != "0"; then
549     GNU_LD=1
551 if test "$GNU_CC"; then
552     if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
553         GCC_USE_GNU_LD=1
554     fi
557 INTEL_CC=
558 INTEL_CXX=
559 if test "$GCC" = yes; then
560    if test "`$CC -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
561      INTEL_CC=1
562    fi
565 if test "$GXX" = yes; then
566    if test "`$CXX -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
567      INTEL_CXX=1
568    fi
571 dnl Special win32 checks
572 dnl ========================================================
573 case "$target" in
574 *-wince|*-winmo)
575     WINVER=500
576     WINSDK_TARGETVER=502
577     ;;
579     WINVER=502
580     dnl Target the Windows 7 SDK by default
581     WINSDK_TARGETVER=601
582     ;;
583 esac
585 MOZ_ARG_WITH_STRING(windows-version,
586 [  --with-windows-version=WINSDK_TARGETVER
587                           Highest Windows version to target using this SDK
588                               502: Windows Server 2003
589                               600: Windows Vista
590                               601: Windows 7],
591   WINSDK_TARGETVER=$withval)
593 case "$WINSDK_TARGETVER" in
594 502|600|601)
595     MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000
596     ;;
599     AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER), must be 502, 600 or 601]);
600     ;;
602 esac
604 if test -n "$COMPILE_ENVIRONMENT"; then
605 if test "$MOZ_WINSDK_TARGETVER" -lt "06000000"; then
606     # We can't build parental controls either
607     MOZ_DISABLE_PARENTAL_CONTROLS=1
611 case "$target" in
612 *-cygwin*|*-mingw*|*-msvc*|*-mks*|*-wince|*-winmo)
613     if test "$GCC" != "yes"; then
614         # Check to see if we are really running in a msvc environemnt
615         _WIN32_MSVC=1
616         AC_CHECK_PROGS(MIDL, midl)
618         # Make sure compilers are valid
619         CFLAGS="$CFLAGS -TC -nologo"
620         CXXFLAGS="$CXXFLAGS -TP -nologo"
621         AC_LANG_SAVE
622         AC_LANG_C
623         AC_TRY_COMPILE([#include <stdio.h>],
624             [ printf("Hello World\n"); ],,
625             AC_MSG_ERROR([\$(CC) test failed.  You must have MS VC++ in your path to build.]) )
627         AC_LANG_CPLUSPLUS
628         AC_TRY_COMPILE([#include <new.h>],
629             [ unsigned *test = new unsigned(42); ],,
630             AC_MSG_ERROR([\$(CXX) test failed.  You must have MS VC++ in your path to build.]) )
631         AC_LANG_RESTORE
632         
633         changequote(,)
634         _MSVC_VER_FILTER='s|.* ([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
635         changequote([,])
636         
637         # Determine compiler version
638         CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
639         _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
640         _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
641         _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
642         _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
643         _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
645         CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
646         _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
648         if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
649             AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
650         fi
651         if test "$_CC_MAJOR_VERSION" = "13"; then
652             _CC_SUITE=7
653         elif test "$_CC_MAJOR_VERSION" = "14"; then
654             _CC_SUITE=8
655             CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
656             dnl -DYNAMICBASE is only supported on VC8SP1 or newer,
657             dnl so be very specific here!
658             dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762
659             if test $_CC_RELEASE -gt 50727; then
660                _USE_DYNAMICBASE=1
661             elif test $_CC_BUILD -ge 762; then
662                _USE_DYNAMICBASE=1
663             fi
664             AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
665             AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
666         elif test "$_CC_MAJOR_VERSION" = "15"; then
667             _CC_SUITE=9
668             CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
669             LDFLAGS="$LDFLAGS -MANIFESTUAC:NO"
670             _USE_DYNAMICBASE=1
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             LDFLAGS="$LDFLAGS -MANIFESTUAC:NO"
677             _USE_DYNAMICBASE=1
678             AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
679             AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
680         else
681             AC_MSG_ERROR([This version of the MSVC compiler, $CC_VERSION , is unsupported.])
682         fi
684         _MOZ_RTTI_FLAGS_ON='-GR'
685         _MOZ_RTTI_FLAGS_OFF='-GR-'
686         _MOZ_EXCEPTIONS_FLAGS_ON='-EHsc'
687         _MOZ_EXCEPTIONS_FLAGS_OFF=''
689         if test -n "$WIN32_REDIST_DIR"; then
690             WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
691         fi
692         
693         # bug #249782
694         # ensure that mt.exe is Microsoft (R) Manifest Tool and not magnetic tape manipulation utility (or something else)
695         if test "$_CC_SUITE" -ge "8"; then
696                 changequote(,)
697                 _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
698                 changequote([,])
700                 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
701                 if test -n "$MSMT_TOOL"; then
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
706                         MSMANIFEST_TOOL=1
707                         unset MSMT_TOOL
708                 else
709                         AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
710                 fi
711         fi
713         # Check linker version
714         _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
715         _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
716         if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
717             AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION,  does not match the compiler suite version, $_CC_SUITE.])
718         fi
719         INCREMENTAL_LINKER=1
721         # Check midl version
722         _MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
723         _MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
724         _MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
725         _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
726         # Add flags if necessary
727         AC_MSG_CHECKING([for midl flags])
728         case "$target" in
729         i*86-*)
730             if test \( "$_MIDL_MAJOR_VERSION" = "7" -a "$_MIDL_MINOR_VERSION" = "00" -a "$_MIDL_REV_VERSION" = "0499" \); then
731                 # MIDL version 7.00.0499 defaults /env win64 on x64 platforms.
732                 # MIDL version 7.00.0500 or later has no problem.
733                 MIDL_FLAGS="${MIDL_FLAGS} -env win32"
734                 AC_MSG_RESULT([need -env win32])
735             else
736                 AC_MSG_RESULT([none needed])
737             fi
738             ;;
739         x86_64-*)
740             MIDL_FLAGS="${MIDL_FLAGS} -env x64"
741             ;;
742         *)
743             AC_MSG_RESULT([none needed])
744             ;;
745         esac
747         # Identify which version of the SDK we're building with
748         # Windows Server 2008 and newer SDKs have WinSDKVer.h, get the version
749         # from there
750         AC_CHECK_HEADERS([winsdkver.h])
751         if test "$ac_cv_header_winsdkver_h" = "yes"; then
752             # Get the highest _WIN32_WINNT and NTDDI versions supported
753             # Take the higher of the two
754             # This is done because the Windows 7 beta SDK reports its
755             # NTDDI_MAXVER to be 0x06000100 instead of 0x06010000, as it should
756             AC_CACHE_CHECK(for highest Windows version supported by this SDK,
757                            ac_cv_winsdk_maxver,
758                            [cat > conftest.h <<EOF
759 #include <winsdkver.h>
760 #include <sdkddkver.h>
762 #if (NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER) > NTDDI_MAXVER)
763 #define WINSDK_MAXVER NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER)
764 #else
765 #define WINSDK_MAXVER NTDDI_MAXVER
766 #endif
768 WINSDK_MAXVER
770                             ac_cv_winsdk_maxver=`$CPP conftest.h 2>/dev/null | tail -n1`
771                             rm -f conftest.h
772                            ])
773             MOZ_WINSDK_MAXVER=${ac_cv_winsdk_maxver}
774         else
775             # The Vista SDK is the only one to have sdkddkver.h but not
776             # WinSDKVer.h
777             AC_CHECK_HEADERS([sdkddkver.h])
778             if test "$ac_cv_header_sdkddkver_h" = "yes"; then
779                 MOZ_WINSDK_MAXVER=0x06000000
780             else
781                 # Assume the Server 2003 Platform SDK
782                 MOZ_WINSDK_MAXVER=0x05020000
783             fi
784         fi
786         unset _MSVC_VER_FILTER
788         AC_CACHE_CHECK(for std::_Throw, ac_cv_have_std__Throw,
789             [
790                 AC_LANG_SAVE
791                 AC_LANG_CPLUSPLUS
792                 _SAVE_CXXFLAGS="$CXXFLAGS"
793                 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
794                 AC_TRY_COMPILE([#include <exception>],
795                             [std::_Throw(std::exception()); return 0;],
796                             ac_cv_have_std__Throw="yes",
797                             ac_cv_have_std__Throw="no")
798                 CXXFLAGS="$_SAVE_CXXFLAGS"
799                 AC_LANG_RESTORE
800             ])
802         if test "$ac_cv_have_std__Throw" == "yes"; then
803             AC_CACHE_CHECK(for |class __declspec(dllimport) exception| bug,
804                            ac_cv_have_dllimport_exception_bug,
805                 [
806                     AC_LANG_SAVE
807                     AC_LANG_CPLUSPLUS
808                     _SAVE_CXXFLAGS="$CXXFLAGS"
809                     CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
810                     AC_TRY_LINK([#include <vector>],
811                                 [std::vector<int> v; return v.at(1);],
812                                 ac_cv_have_dllimport_exception_bug="no",
813                                 ac_cv_have_dllimport_exception_bug="yes")
814                     CXXFLAGS="$_SAVE_CXXFLAGS"
815                     AC_LANG_RESTORE
816                 ])
817             if test "$ac_cv_have_dllimport_exception_bug" = "no"; then
818                 WRAP_STL_INCLUDES=1
819                 MOZ_MSVC_STL_WRAP__Throw=1
820                 AC_DEFINE(MOZ_MSVC_STL_WRAP__Throw)
821             fi
822         else
823             AC_CACHE_CHECK(for overridable _RAISE,
824                            ac_cv_have__RAISE,
825                 [
826                     AC_LANG_SAVE
827                     AC_LANG_CPLUSPLUS
828                     _SAVE_CXXFLAGS="$CXXFLAGS"
829                     CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
830                     AC_TRY_COMPILE([#include <xstddef>
831                                     #undef _RAISE
832                                     #define _RAISE(x) externallyDefinedFunction((x).what())
833                                     #include <vector>
834                                    ],
835                                    [std::vector<int> v; return v.at(1);],
836                                    ac_cv_have__RAISE="no",
837                                    ac_cv_have__RAISE="yes")
838                     CXXFLAGS="$_SAVE_CXXFLAGS"
839                     AC_LANG_RESTORE
840                 ])
841             if test "$ac_cv_have__RAISE" = "yes"; then
842                 WRAP_STL_INCLUDES=1
843                 MOZ_MSVC_STL_WRAP__RAISE=1
844                 AC_DEFINE(MOZ_MSVC_STL_WRAP__RAISE)
845             else
846                 AC_MSG_ERROR([Gecko exception wrapping doesn't understand your your MSVC/SDK.  Please file a bug describing this error and your build configuration.])
847             fi
848         fi
850         if test "$WRAP_STL_INCLUDES" = "1"; then
851             STL_FLAGS='-D_HAS_EXCEPTIONS=0 -I$(DIST)/stl_wrappers'
852         fi
853     else
854         # Check w32api version
855         _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
856         _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
857         AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
858         AC_TRY_COMPILE([#include <w32api.h>],
859             #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
860                 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
861                  __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
862                 #error "test failed."
863             #endif
864             , [ res=yes ], [ res=no ])
865         AC_MSG_RESULT([$res])
866         if test "$res" != "yes"; then
867             AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
868         fi
869         # Check windres version
870         AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
871         _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
872         AC_MSG_RESULT([$_WINDRES_VERSION])
873         _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
874         _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
875         _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
876         WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
877         WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
878         WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
879         if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
880                 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
881                 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
882                 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
883                 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
884                 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
885         then
886             AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
887         fi
889         # Server 2003 is the highest version supported
890         MOZ_WINSDK_MAXVER=0x05020000
891     fi # !GNU_CC
893     AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
894     AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
895     # Require OS features provided by IE 5.0
896     AC_DEFINE_UNQUOTED(_WIN32_IE,0x0500)
898     # If the maximum version supported by this SDK is lower than the target
899     # version, error out
900     AC_MSG_CHECKING([for Windows SDK being recent enough])
901     if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then
902         AC_MSG_RESULT("yes")
903     else
904         AC_MSG_RESULT("no")
905         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. See https://developer.mozilla.org/En/Windows_SDK_versions for more details on fixing this.])
906     fi
908     AC_DEFINE_UNQUOTED(MOZ_WINSDK_TARGETVER,0x$MOZ_WINSDK_TARGETVER)
909     # Definitions matching sdkddkver.h
910     AC_DEFINE_UNQUOTED(MOZ_NTDDI_WS03, 0x05020000)
911     AC_DEFINE_UNQUOTED(MOZ_NTDDI_LONGHORN, 0x06000000)
912     AC_DEFINE_UNQUOTED(MOZ_NTDDI_WIN7, 0x06010000)
913     ;;
914 esac
916 dnl Test breaks icc on OS/2 && MSVC
917 if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
918     AC_PROG_CC_C_O
919     if grep "NO_MINUS_C_MINUS_O 1" ./confdefs.h >/dev/null; then
920         USING_HCC=1
921         _OLDCC=$CC
922         _OLDCXX=$CXX
923         CC="${srcdir}/build/hcc '$CC'"
924         CXX="${srcdir}/build/hcpp '$CXX'"
925     fi
928 AC_PROG_CPP
929 AC_PROG_CXXCPP
931 if test -n "$_WIN32_MSVC"; then
932     SKIP_PATH_CHECKS=1
933     SKIP_COMPILER_CHECKS=1
934     SKIP_LIBRARY_CHECKS=1
936     # Since we're skipping compiler and library checks, hard-code
937     # some facts here.
938     case "$target" in
939     *-wince|*-winmo)
940         ;;
941     *)
942         AC_DEFINE(HAVE_IO_H)
943         AC_DEFINE(HAVE_SETBUF)
944         AC_DEFINE(HAVE_ISATTY)
945         ;;
946     esac
949 fi # COMPILE_ENVIRONMENT
951 AC_SUBST(MIDL_FLAGS)
952 AC_SUBST(_MSC_VER)
954 AC_SUBST(GNU_AS)
955 AC_SUBST(GNU_LD)
956 AC_SUBST(GNU_CC)
957 AC_SUBST(GNU_CXX)
958 AC_SUBST(INTEL_CC)
959 AC_SUBST(INTEL_CXX)
961 AC_SUBST(STL_FLAGS)
962 AC_SUBST(WRAP_STL_INCLUDES)
963 AC_SUBST(MOZ_MSVC_STL_WRAP__Throw)
964 AC_SUBST(MOZ_MSVC_STL_WRAP__RAISE)
966 dnl ========================================================
967 dnl Checks for programs.
968 dnl ========================================================
969 AC_PROG_INSTALL
970 AC_PROG_LN_S
972 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
973 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
974 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
975 _perl_res=$?
976 AC_MSG_RESULT([$_perl_version])
978 if test "$_perl_res" != 0; then
979     AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
983 AC_MSG_CHECKING([for full perl installation])
984 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
985 _perl_res=$?
986 if test "$_perl_res" != 0; then
987     AC_MSG_RESULT([no])
988     AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}.  A full perl installation is required.])
989 else
990     AC_MSG_RESULT([yes])    
993 MOZ_PATH_PROGS(PYTHON, $PYTHON python2.6 python2.5 python2.4 python)
994 if test -z "$PYTHON"; then
995     AC_MSG_ERROR([python was not found in \$PATH])
998 if test -z "$COMPILE_ENVIRONMENT"; then
999     NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
1001 AC_SUBST(NSINSTALL_BIN)
1003 MOZ_PATH_PROG(DOXYGEN, doxygen, :)
1004 MOZ_PATH_PROG(WHOAMI, whoami, :)
1005 MOZ_PATH_PROG(AUTOCONF, autoconf, :)
1006 MOZ_PATH_PROG(UNZIP, unzip, :)
1007 MOZ_PATH_PROGS(ZIP, zip)
1008 if test -z "$ZIP" || test "$ZIP" = ":"; then
1009     AC_MSG_ERROR([zip not found in \$PATH])
1011 MOZ_PATH_PROG(SYSTEM_MAKEDEPEND, makedepend)
1012 MOZ_PATH_PROG(XARGS, xargs)
1013 if test -z "$XARGS" || test "$XARGS" = ":"; then
1014     AC_MSG_ERROR([xargs not found in \$PATH .])
1017 if test "$COMPILE_ENVIRONMENT"; then
1019 dnl ========================================================
1020 dnl = Mac OS X toolchain support
1021 dnl ========================================================
1023 case "$target_os" in
1024 darwin*)
1025     dnl Current known valid versions for GCC_VERSION are 2.95.2 3.1 3.3 4.0.
1026     dnl 4.0 identifies itself as 4.0.x, so strip the decidecimal for
1027     dnl the environment and includedir purposes (when using an SDK, below),
1028     dnl but remember the full version number for the libdir (SDK).
1029     changequote(,)
1030     GCC_VERSION_FULL=`echo $CXX_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
1031     GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
1032     changequote([,])
1033     if test "$GCC_VERSION_FULL" = "4.0.0" ; then
1034         dnl Bug 280479, but this keeps popping up in bug 292530 too because
1035         dnl 4.0.0/4061 is the default compiler in Tiger.
1036         changequote(,)
1037         GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
1038         changequote([,])
1039         if test "$GCC_BUILD" = "4061" ; then
1040             AC_MSG_ERROR([You are attempting to use Apple gcc 4.0 build 4061.
1041 This compiler was supplied with Xcode 2.0, and contains bugs that prevent it
1042 from building Mozilla. Upgrade to Xcode 2.1 or later.])
1043         fi
1044     fi
1046     dnl xcodebuild needs GCC_VERSION defined in the environment, since it
1047     dnl doesn't respect the CC/CXX setting.  With GCC_VERSION set, it will use
1048     dnl /usr/bin/g(cc|++)-$GCC_VERSION.
1049     MOZ_PATH_PROGS(PBBUILD, pbbuild xcodebuild pbxbuild)
1051     case "$PBBUILD" in
1052       *xcodebuild*)
1053         changequote(,)
1054         XCODEBUILD_VERSION=`$PBBUILD -version 2>/dev/null | xargs | sed -e 's/.*DevToolsCore-\([0-9]*\).*/\1/'`
1055         changequote([,])
1056         if test -n "$XCODEBUILD_VERSION" && test "$XCODEBUILD_VERSION" -ge 620 ; then
1057           HAS_XCODE_2_1=1;
1058         fi
1059       ;;
1060     esac
1062     dnl sdp was formerly in /Developer/Tools.  As of Mac OS X 10.4 (Darwin 8),
1063     dnl it has moved into /usr/bin.
1064     MOZ_PATH_PROG(SDP, sdp, :, [$PATH:/usr/bin:/Developer/Tools])
1065     ;;
1066 esac
1068 AC_SUBST(GCC_VERSION)
1069 AC_SUBST(XCODEBUILD_VERSION)
1070 AC_SUBST(HAS_XCODE_2_1)
1072 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
1073 dnl that a universal binary is being produced.
1074 AC_SUBST(UNIVERSAL_BINARY)
1076 dnl ========================================================
1077 dnl Check for MacOS deployment target version
1078 dnl ========================================================
1080 MOZ_ARG_ENABLE_STRING(macos-target,
1081                       [  --enable-macos-target=VER (default=10.5)
1082                           Set the minimum MacOS version needed at runtime],
1083                       [_MACOSX_DEPLOYMENT_TARGET=$enableval])
1085 case "$target" in
1086 *-darwin*)
1087     if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
1088         dnl Use the specified value
1089         export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
1090         AC_DEFINE_UNQUOTED(__ENVIRONMENT_MAC_OS_X_VERION_MIN_REQUIRED__,$_MACOSX_DEPLOYMENT_TARGET)
1091     elif test -z "$MACOSX_DEPLOYMENT_TARGET" ; then
1092         dnl No value specified on the command line or in the environment,
1093         dnl use architecture minimum.
1094         export MACOSX_DEPLOYMENT_TARGET=10.5
1095     fi
1096     ;;
1097 esac
1099 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
1101 dnl ========================================================
1102 dnl = Mac OS X SDK support
1103 dnl ========================================================
1104 MACOS_SDK_DIR=
1105 NEXT_ROOT=
1106 MOZ_ARG_WITH_STRING(macos-sdk,
1107 [  --with-macos-sdk=dir   Location of platform SDK to use (Mac OS X only)],
1108     MACOS_SDK_DIR=$withval)
1110 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
1111 dnl NEXT_ROOT will be set and exported only if it's needed.
1112 AC_SUBST(MACOS_SDK_DIR)
1113 AC_SUBST(NEXT_ROOT)
1115 if test "$MACOS_SDK_DIR"; then
1116   dnl Sync this section with the ones in NSPR and NSS.
1117   dnl Changes to the cross environment here need to be accounted for in
1118   dnl the libIDL checks (below) and xpidl build.
1120   if test ! -d "$MACOS_SDK_DIR"; then
1121     AC_MSG_ERROR([SDK not found.  When using --with-macos-sdk, you must
1122 specify a valid SDK.  SDKs are installed when the optional cross-development
1123 tools are selected during the Xcode/Developer Tools installation.])
1124   fi
1126   GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
1127   if test "$GCC_VERSION_MAJOR" -lt "4" ; then
1128     AC_MSG_ERROR([You need to upgrade the compiler version to 4.x])
1129   else
1130     CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
1131     CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
1133     dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
1134     CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
1135     CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
1137     if test "$GCC_VERSION_FULL" = "4.0.0" ; then
1138       dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
1139       dnl that supports -syslibroot.  Don't set NEXT_ROOT because it will
1140       dnl be ignored and cause warnings when -syslibroot is specified.
1141       dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
1142       dnl the -isysroot it receives, so this is only needed with 4.0.0.
1143       LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
1144     fi
1145   fi
1147   AC_LANG_SAVE
1148   AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
1149   AC_LANG_CPLUSPLUS
1150   AC_TRY_COMPILE([#include <new>
1151                  int main() { return 0; }],
1152    result=yes,
1153    result=no)
1154   AC_LANG_RESTORE
1155   AC_MSG_RESULT($result)
1157   if test "$result" = "no" ; then
1158     AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
1159   fi
1162 fi # COMPILE_ENVIRONMENT
1164 if test -n "$MAKE"; then
1165   if test `echo $MAKE | grep -c make.py` != 1; then
1166      NOT_PYMAKE=$MAKE
1167   fi
1170 case "$host_os" in
1171 cygwin*|mingw*|mks*|msvc*)
1172     MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :)
1173     ;;
1175     MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :)
1176     ;;
1177 esac
1178 if test "$GMAKE" = ":"; then
1179    AC_MSG_ERROR([GNU make not found])
1181 AC_SUBST(GMAKE)
1183 if test "$COMPILE_ENVIRONMENT"; then
1185 AC_PATH_XTRA
1187 XCFLAGS="$X_CFLAGS"
1189 fi # COMPILE_ENVIRONMENT
1191 dnl ========================================================
1192 dnl set the defaults first
1193 dnl ========================================================
1194 AS_BIN=$AS
1195 AR_LIST='$(AR) t'
1196 AR_EXTRACT='$(AR) x'
1197 AR_DELETE='$(AR) d'
1198 AS='$(CC)'
1199 AS_DASH_C_FLAG='-c'
1200 DLL_PREFIX=lib
1201 LIB_PREFIX=lib
1202 DLL_SUFFIX=.so
1203 OBJ_SUFFIX=o
1204 LIB_SUFFIX=a
1205 ASM_SUFFIX=s
1206 IMPORT_LIB_SUFFIX=
1207 TARGET_MD_ARCH=unix
1208 DIRENT_INO=d_ino
1209 CYGWIN_WRAPPER=
1210 WIN_TOP_SRC=
1211 MOZ_USER_DIR=".mozilla"
1213 MOZ_JPEG_CFLAGS=
1214 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/jpeg)'
1215 MOZ_ZLIB_CFLAGS=
1216 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,$(DEPTH)/modules/zlib/src)'
1217 MOZ_BZ2_CFLAGS=
1218 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
1219 MOZ_PNG_CFLAGS=
1220 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/modules/libimg/png)'
1222 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs'
1223 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxpcom -lxpcom_core -lmozalloc'
1224 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
1225 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxpcom -lmozalloc'
1226 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) -lxul'
1227 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
1228 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
1230 MOZ_FS_LAYOUT=unix
1232 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
1234 USE_DEPENDENT_LIBS=1
1236 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
1238 MOZ_ENABLE_POSTSCRIPT=1 
1240 if test -n "$CROSS_COMPILE"; then
1241     OS_TARGET="${target_os}"
1242     OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
1243     OS_RELEASE=
1244     case "${target_os}" in
1245         linux*)       OS_ARCH=Linux OS_TARGET=Linux ;;
1246         kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
1247         gnu*)         OS_ARCH=GNU ;;
1248         solaris*)     OS_ARCH=SunOS OS_RELEASE=5 ;;
1249         mingw*)       OS_ARCH=WINNT ;;
1250         wince*)       OS_ARCH=WINCE ;;
1251         winmo*)       OS_ARCH=WINCE ;;
1252         darwin*)      OS_ARCH=Darwin OS_TARGET=Darwin ;;
1253     esac
1254     case "${target}" in
1255         arm-android-eabi) OS_ARCH=Linux OS_TARGET=Android ;;
1256     esac
1257 else
1258     OS_TARGET=`uname -s`
1259     OS_ARCH=`uname -s | sed -e 's|/|_|g'`
1260     OS_RELEASE=`uname -r`
1263 # Before this used `uname -m` when not cross compiling
1264 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1265 OS_TEST="${target_cpu}"
1267 _COMPILER_PREFIX=
1269 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1271 #######################################################################
1272 # Master "Core Components" macros for getting the OS target           #
1273 #######################################################################
1276 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1277 # cross-compilation.
1281 # Define and override various archtecture-specific variables, including
1282 # HOST_OS_ARCH
1283 # OS_ARCH
1284 # OS_TEST
1285 # OS_TARGET
1286 # OS_RELEASE
1287 # OS_MINOR_RELEASE
1290 case "$HOST_OS_ARCH" in
1291 cygwin*|mingw*|mks*|msvc*)
1292     HOST_OS_ARCH=WINNT
1293     ;;
1294 darwin*)
1295     HOST_OS_ARCH=Darwin
1296     ;;
1297 linux*)
1298     HOST_OS_ARCH=Linux
1299     ;;
1300 solaris*)
1301     HOST_OS_ARCH=SunOS
1302     SOLARIS_SUNPRO_CC=
1303     SOLARIS_SUNPRO_CXX=
1304     if test -z "$GNU_CC"; then
1305         if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then
1306             SOLARIS_SUNPRO_CC=1
1307        fi
1308     fi
1310     if test -z "$GNU_CXX"; then
1311        if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then
1312            SOLARIS_SUNPRO_CXX=1
1313        fi
1314     fi
1315     AC_SUBST(SOLARIS_SUNPRO_CC)
1316     AC_SUBST(SOLARIS_SUNPRO_CXX)
1317     ;;
1318 BSD_386)
1319     HOST_OS_ARCH=BSD
1320     ;;
1321 dgux)
1322     HOST_OS_ARCH=DGUX
1323     ;;
1324 IRIX64)
1325     HOST_OS_ARCH=IRIX
1326     ;;
1327 UNIX_SV)
1328     if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1329         HOST_OS_ARCH=NCR
1330     else
1331         HOST_OS_ARCH=UNIXWARE
1332     fi
1333     ;;
1334 ncr)
1335     HOST_OS_ARCH=NCR
1336     ;;
1337 UNIX_SYSTEM_V)
1338     HOST_OS_ARCH=NEC
1339     ;;
1340 OSF1)
1341     ;;
1342 *OpenVMS*)
1343     HOST_OS_ARCH=OpenVMS
1344     ;;
1345 OS_2)
1346     HOST_OS_ARCH=OS2
1347     ;;
1348 QNX)
1349     ;;
1350 SCO_SV)
1351     HOST_OS_ARCH=SCOOS
1352     ;;
1353 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1354     HOST_OS_ARCH=SINIX
1355     ;;
1356 UnixWare)
1357     HOST_OS_ARCH=UNIXWARE
1358     ;;
1359 esac
1361 case "$OS_ARCH" in
1362 WINNT)
1363     if test -z "$CROSS_COMPILE" ; then
1364         OS_TEST=`uname -p`
1365     fi
1366     ;;
1367 Windows_NT)
1369 # If uname -s returns "Windows_NT", we assume that we are using
1370 # the uname.exe in MKS toolkit.
1372 # The -r option of MKS uname only returns the major version number.
1373 # So we need to use its -v option to get the minor version number.
1374 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1376     OS_ARCH=WINNT
1377     OS_TARGET=WINNT
1378     OS_MINOR_RELEASE=`uname -v`
1379     if test "$OS_MINOR_RELEASE" = "00"; then
1380         OS_MINOR_RELEASE=0
1381     fi
1382     OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1383     ;;
1384 CYGWIN32_NT|CYGWIN_NT*|MINGW*_NT*)
1386 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
1387 # the uname.exe in the Cygwin tools.
1388 # Prior to the Beta 20 release, Cygwin was called GNU-Win32.
1389 # If uname -s returns "CYGWIN32/NT", we assume that we are using
1390 # the uname.exe in the GNU-Win32 tools.
1391 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1392 # the uname.exe in the MSYS tools.
1394     OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1395     OS_ARCH=WINNT
1396     OS_TARGET=WINNT
1397     ;;
1398 AIX)
1399     OS_RELEASE=`uname -v`.`uname -r`
1400     OS_TEST=${target_cpu}
1401     ;;
1402 BSD_386)
1403     OS_ARCH=BSD
1404     ;;
1405 dgux)
1406     OS_ARCH=DGUX
1407     ;;
1408 IRIX64)
1409     OS_ARCH=IRIX
1410     ;;
1411 UNIX_SV)
1412     if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1413         OS_ARCH=NCR
1414     else
1415         OS_ARCH=UNIXWARE
1416         OS_RELEASE=`uname -v`
1417     fi
1418     ;;
1419 ncr)
1420     OS_ARCH=NCR
1421     ;;
1422 UNIX_SYSTEM_V)
1423     OS_ARCH=NEC
1424     ;;
1425 OSF1)
1426     case `uname -v` in
1427     148)
1428         OS_RELEASE=V3.2C
1429         ;;
1430     564)
1431         OS_RELEASE=V4.0B
1432         ;;
1433     878)
1434         OS_RELEASE=V4.0D
1435         ;;
1436     esac
1437     ;;
1438 *OpenVMS*)
1439     OS_ARCH=OpenVMS
1440     OS_RELEASE=`uname -v`
1441     OS_TEST=`uname -p`
1442     ;;
1443 OS_2)
1444     OS_ARCH=OS2
1445     OS_TARGET=OS2
1446     OS_RELEASE=`uname -v`
1447     ;;
1448 QNX)
1449     if test "$OS_TARGET" != "NTO"; then
1450         changequote(,)
1451         OS_RELEASE=`uname -v | sed 's/^\([0-9]\)\([0-9]*\)$/\1.\2/'`
1452         changequote([,])
1453     fi
1454     OS_TEST=x86
1455     ;;
1456 SCO_SV)
1457     OS_ARCH=SCOOS
1458     OS_RELEASE=5.0
1459     ;;
1460 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1461     OS_ARCH=SINIX
1462     OS_TEST=`uname -p`
1463     ;;
1464 UnixWare)
1465     OS_ARCH=UNIXWARE
1466     OS_RELEASE=`uname -v`
1467     ;;
1468 WINCE)
1469     OS_ARCH=WINCE
1470     case "${target_os}" in
1471     *winmo)
1472         OS_TARGET=WINMO
1473         WINCE_WINDOWS_MOBILE=1
1474         AC_DEFINE(WINCE_WINDOWS_MOBILE)
1475         ;;
1476     *)
1477         OS_TARGET=WINCE
1478         ;;
1479     esac
1480     ;;
1481 Darwin)
1482     case "${target_cpu}" in
1483     powerpc*)
1484         OS_TEST=ppc
1485         ;;
1486     i*86*)
1487         OS_TEST=i386 
1488         ;;
1489     x86_64)
1490         OS_TEST=x86_64
1491         ;;
1492     *)
1493         if test -z "$CROSS_COMPILE" ; then
1494             OS_TEST=`uname -p`
1495         fi
1496         ;;
1497     esac
1498     ;;
1499 esac
1501 if test "$OS_ARCH" = "NCR"; then
1502     changequote(,)
1503     OS_RELEASE=`awk '{print $3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$/\2.\3/'`
1504     changequote([,])
1507 # Only set CPU_ARCH if we recognize the value of OS_TEST
1509 case "$OS_TEST" in
1510 *86 | i86pc)
1511     CPU_ARCH=x86
1512     ;;
1514 powerpc64 | ppc64)
1515     CPU_ARCH=ppc64
1516     ;;
1518 powerpc | ppc | rs6000)
1519     CPU_ARCH=ppc
1520     ;;
1522 Alpha | alpha | ALPHA)
1523     CPU_ARCH=Alpha
1524     ;;
1526 s390)
1527     CPU_ARCH=s390
1528     ;;
1530 s390x)
1531     CPU_ARCH=s390x
1532     ;;
1534 hppa* | parisc)
1535     CPU_ARCH=hppa
1536     ;;
1538 sun4u | sparc*)
1539     CPU_ARCH=sparc
1540     ;;
1542 x86_64 | ia64)
1543     CPU_ARCH="$OS_TEST"
1544     ;;
1546 arm)
1547     CPU_ARCH=arm
1548     ;;
1549 esac
1551 if test -z "$OS_TARGET"; then
1552     OS_TARGET=$OS_ARCH
1554 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1556 dnl ========================================================
1557 dnl GNU specific defaults
1558 dnl ========================================================
1559 if test "$GNU_CC"; then
1560     # FIXME: Let us build with strict aliasing. bug 414641.
1561     CFLAGS="$CFLAGS -fno-strict-aliasing"
1562     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1563     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1564     DSO_LDOPTS='-shared'
1565     if test "$GCC_USE_GNU_LD"; then
1566         # Don't allow undefined symbols in libraries
1567         DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1568     fi
1569     WARNINGS_AS_ERRORS='-Werror'
1570     DSO_CFLAGS=''
1571     DSO_PIC_CFLAGS='-fPIC'
1572     ASFLAGS="$ASFLAGS -fPIC"
1573     _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
1574     _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
1575     _MOZ_EXCEPTIONS_FLAGS_ON='-fhandle-exceptions'
1576     _MOZ_EXCEPTIONS_FLAGS_OFF='-fno-handle-exceptions'
1578     # Turn on GNU specific features
1579     # -Wall - turn on all warnings
1580     # -pedantic - make compiler warn about non-ANSI stuff, and
1581     #             be a little bit stricter
1582     # Warnings slamm took out for now (these were giving more noise than help):
1583     # -Wbad-function-cast - warns when casting a function to a new return type
1584     # -Wshadow - removed because it generates more noise than help --pete
1585     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
1586     if test -z "$INTEL_CC"; then
1587        # Don't use -Wcast-align with ICC
1588        case "$CPU_ARCH" in
1589            # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1590            hppa | ia64 | sparc | arm)
1591            ;;
1592            *)
1593         _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1594            ;;
1595        esac
1596     fi
1598     dnl Turn pedantic on but disable the warnings for long long
1599     _PEDANTIC=1
1601     if test -z "$INTEL_CC"; then
1602       _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
1603     fi
1605     _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1606     _USE_CPP_INCLUDE_FLAG=1
1607 elif test "$SOLARIS_SUNPRO_CC"; then
1608     MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1609     MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1611     DSO_LDOPTS='-shared'
1612     if test "$GNU_LD"; then
1613         # Don't allow undefined symbols in libraries
1614         DSO_LDOPTS="$DSO_LDOPTS -z defs"
1615     fi
1617     DSO_CFLAGS=''
1618     if test "$CPU_ARCH" = "sparc"; then
1619         # for Sun Studio on Solaris/SPARC
1620         DSO_PIC_CFLAGS='-xcode=pic32'
1621     else
1622         DSO_PIC_CFLAGS='-KPIC'
1623     fi
1624     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1625 else
1626     MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1627     MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1629     DSO_LDOPTS='-shared'
1630     if test "$GNU_LD"; then
1631         # Don't allow undefined symbols in libraries
1632         DSO_LDOPTS="$DSO_LDOPTS -z defs"
1633     fi
1635     DSO_CFLAGS=''
1636     DSO_PIC_CFLAGS='-KPIC'
1637     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1640 if test "$GNU_CXX"; then
1641     # FIXME: Let us build with strict aliasing. bug 414641.
1642     CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
1643     # Turn on GNU specific features
1644     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
1645     if test -z "$INTEL_CC"; then
1646        # Don't use -Wcast-align with ICC
1647        case "$CPU_ARCH" in
1648            # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1649            hppa | ia64 | sparc | arm)
1650            ;;
1651            *)
1652         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1653            ;;
1654        esac
1655     fi
1657     _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1658     _USE_CPP_INCLUDE_FLAG=1
1660     AC_CACHE_CHECK(whether the compiler supports -Wno-invalid-offsetof,
1661                    ac_has_wno_invalid_offsetof,
1662         [
1663             AC_LANG_SAVE
1664             AC_LANG_CPLUSPLUS
1665             _SAVE_CXXFLAGS="$CXXFLAGS"
1666             CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1667             AC_TRY_COMPILE([],
1668                            [return(0);],
1669                            ac_has_wno_invalid_offsetof="yes",
1670                            ac_has_wno_invalid_offsetof="no")
1671             CXXFLAGS="$_SAVE_CXXFLAGS"
1672             AC_LANG_RESTORE
1673         ])
1674     if test "$ac_has_wno_invalid_offsetof" = "yes"; then
1675         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1676     fi
1678     AC_CACHE_CHECK(whether the compiler supports -Wno-variadic-macros,
1679                    ac_has_wno_variadic_macros,
1680         [
1681             AC_LANG_SAVE
1682             AC_LANG_CPLUSPLUS
1683             _SAVE_CXXFLAGS="$CXXFLAGS"
1684             CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-variadic-macros"
1685             AC_TRY_COMPILE([],
1686                            [return(0);],
1687                            ac_has_wno_variadic_macros="yes",
1688                            ac_has_wno_variadic_macros="no")
1689             CXXFLAGS="$_SAVE_CXXFLAGS"
1690             AC_LANG_RESTORE
1691         ])
1692     if test "$ac_has_wno_variadic_macros" = "yes"; then
1693         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-variadic-macros"
1694     fi
1696     AC_CACHE_CHECK(whether the compiler supports -Werror=return-type,
1697                    ac_has_werror_return_type,
1698         [
1699             AC_LANG_SAVE
1700             AC_LANG_CPLUSPLUS
1701             _SAVE_CXXFLAGS="$CXXFLAGS"
1702             CXXFLAGS="$CXXFLAGS -Werror=return-type"
1703             AC_TRY_COMPILE([],
1704                            [return(0);],
1705                            ac_has_werror_return_type="yes",
1706                            ac_has_werror_return_type="no")
1707             CXXFLAGS="$_SAVE_CXXFLAGS"
1708             AC_LANG_RESTORE
1709         ])
1710     if test "$ac_has_werror_return_type" = "yes"; then
1711         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Werror=return-type"
1712     fi
1714 else
1715     _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1718 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1719 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1720 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1721 dnl normal behavior.
1722 dnl ========================================================
1723 MKSHLIB_FORCE_ALL=
1724 MKSHLIB_UNFORCE_ALL=
1726 if test "$COMPILE_ENVIRONMENT"; then
1727 if test "$GNU_CC"; then
1728   AC_MSG_CHECKING(whether ld has archive extraction flags)
1729   AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1730    [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1731     ac_cv_mkshlib_force_and_unforce="no"
1732     exec 3<&0 <<LOOP_INPUT
1733         force="-Wl,--whole-archive";   unforce="-Wl,--no-whole-archive"
1734         force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1735         force="-Wl,-all";              unforce="-Wl,-none"
1736 LOOP_INPUT
1737     while read line
1738     do
1739       eval $line
1740       LDFLAGS=$force
1741       LIBS=$unforce
1742       AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1743     done
1744     exec 0<&3 3<&-
1745     LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1746    ])
1747   if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1748     AC_MSG_RESULT(no)
1749   else
1750     AC_MSG_RESULT(yes)
1751     eval $ac_cv_mkshlib_force_and_unforce
1752     MKSHLIB_FORCE_ALL=$force
1753     MKSHLIB_UNFORCE_ALL=$unforce
1754   fi
1755 fi # GNU_CC
1756 fi # COMPILE_ENVIRONMENT
1758 dnl =================================================================
1759 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1760 dnl which is bad when cross compiling.
1761 dnl =================================================================
1762 if test "$COMPILE_ENVIRONMENT"; then
1763 configure_static_assert_macros='
1764 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1765 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1766 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1769 dnl test that the macros actually work:
1770 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1771 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1772  [AC_LANG_SAVE
1773   AC_LANG_C
1774   ac_cv_static_assertion_macros_work="yes"
1775   AC_TRY_COMPILE([$configure_static_assert_macros],
1776                  [CONFIGURE_STATIC_ASSERT(1)],
1777                  ,
1778                  ac_cv_static_assertion_macros_work="no")
1779   AC_TRY_COMPILE([$configure_static_assert_macros],
1780                  [CONFIGURE_STATIC_ASSERT(0)],
1781                  ac_cv_static_assertion_macros_work="no",
1782                  )
1783   AC_LANG_CPLUSPLUS
1784   AC_TRY_COMPILE([$configure_static_assert_macros],
1785                  [CONFIGURE_STATIC_ASSERT(1)],
1786                  ,
1787                  ac_cv_static_assertion_macros_work="no")
1788   AC_TRY_COMPILE([$configure_static_assert_macros],
1789                  [CONFIGURE_STATIC_ASSERT(0)],
1790                  ac_cv_static_assertion_macros_work="no",
1791                  )
1792   AC_LANG_RESTORE
1793  ])
1794 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1795 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1796     AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1798 fi # COMPILE_ENVIRONMENT
1800 dnl ========================================================
1801 dnl Checking for 64-bit OS
1802 dnl ========================================================
1803 if test "$COMPILE_ENVIRONMENT"; then
1804 AC_LANG_SAVE
1805 AC_LANG_C
1806 AC_MSG_CHECKING(for 64-bit OS)
1807 AC_TRY_COMPILE([$configure_static_assert_macros],
1808                [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)],
1809                result="yes", result="no")
1810 AC_MSG_RESULT("$result")
1811 if test "$result" = "yes"; then
1812     AC_DEFINE(HAVE_64BIT_OS)
1813     HAVE_64BIT_OS=1
1815 AC_SUBST(HAVE_64BIT_OS)
1816 AC_LANG_RESTORE
1817 fi # COMPILE_ENVIRONMENT
1819 dnl ========================================================
1820 dnl Enable high-memory support on OS/2 by default.
1821 dnl ========================================================
1822 MOZ_OS2_HIGH_MEMORY=1
1823 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1824 [  --disable-os2-high-mem  Disable high-memory support on OS/2],
1825     MOZ_OS2_HIGH_MEMORY=,
1826     MOZ_OS2_HIGH_MEMORY=1 )
1827 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1829 dnl ========================================================
1830 dnl System overrides of the defaults for host
1831 dnl ========================================================
1832 case "$host" in
1833 *-beos*)
1834     HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
1835     HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
1836     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1837     ;;
1839 *cygwin*|*mingw*|*mks*|*msvc*|*wince|*winmo)
1840     # we need Python 2.5 on Windows
1841     PYTHON_VERSION=2.5
1842     if test -n "$_WIN32_MSVC"; then
1843         HOST_AR=lib
1844         HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1845         HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1846         HOST_RANLIB='echo ranlib'
1847     else
1848         HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
1849     fi
1850     HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
1851     HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1852     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1853     HOST_BIN_SUFFIX=.exe
1854     case "$host" in
1855     *mingw*)
1856     dnl MinGW/MSYS does not need CYGWIN_WRAPPER
1857         PERL="/bin/sh ${_topsrcdir}/build/msys-perl-wrapper"
1858         ;;
1859     *)
1860         CYGWIN_WRAPPER="${srcdir}/build/cygwin-wrapper"
1861         if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
1862             _pwd=`pwd`
1863             CYGWIN_WRAPPER="${_pwd}/${srcdir}/build/cygwin-wrapper"
1864         fi
1865         if test "`${PERL} -v | grep -c cygwin  2>/dev/null`" = 0; then
1866             AS_PERL=1
1867             PERL="${CYGWIN_WRAPPER} $PERL"
1868         fi
1870         if test "`${PYTHON} -c 'import sys; print sys.platform;'`" != "cygwin"; then
1871             PYTHON="${CYGWIN_WRAPPER} $PYTHON"
1872         fi
1873         ;;
1874     esac
1876     case "${host_cpu}" in
1877     x86_64)
1878         HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
1879         ;;
1880     esac
1881     ;;
1883 *-darwin*)
1884     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1885     HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1886     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1887     ;;
1889 *-linux*|*-kfreebsd*-gnu|*-gnu*)
1890     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1891     HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1892     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1893     ;;
1895 *os2*)
1896     HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1897     HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1898     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1899     HOST_BIN_SUFFIX=.exe
1900     MOZ_FIX_LINK_PATHS=
1901     ;;
1903 *-osf*)
1904     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1905     HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
1906     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1907     ;;
1910     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1911     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1912     ;;
1913 esac
1915 dnl We require version 2.4 or newer of Python to build,
1916 dnl and 2.5 or newer on Windows.
1917 AC_MSG_CHECKING([for minimum required Python version >= $PYTHON_VERSION])
1918 changequote(,)
1919 $PYTHON -c "import sys; sys.exit(sys.version[:3] < sys.argv[1])" $PYTHON_VERSION
1920 _python_res=$?
1921 changequote([,])
1922 if test "$_python_res" != 0; then
1923     AC_MSG_ERROR([Python $PYTHON_VERSION or higher is required.])
1925 AC_MSG_RESULT([yes])
1927 dnl Get mozilla version from central milestone file
1928 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1930 dnl Get version of various core apps from the version files.
1931 FIREFOX_VERSION=`cat $topsrcdir/browser/config/version.txt`
1933 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1934 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1936 dnl ========================================================
1937 dnl System overrides of the defaults for target
1938 dnl ========================================================
1940 case "$target" in
1941 *-aix*)
1942     AC_DEFINE(AIX)
1943     if test ! "$GNU_CC"; then
1944         if test ! "$HAVE_64BIT_OS"; then
1945             # Compiling with Visual Age C++ object model compat is the
1946             # default. To compile with object model ibm, add 
1947             # AIX_OBJMODEL=ibm to .mozconfig.
1948             if test "$AIX_OBJMODEL" = "ibm"; then
1949                 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1950             else
1951                 AIX_OBJMODEL=compat
1952             fi
1953         else
1954             AIX_OBJMODEL=compat
1955         fi
1956         AC_SUBST(AIX_OBJMODEL)
1957         DSO_LDOPTS='-qmkshrobj=1'
1958         DSO_CFLAGS='-qflag=w:w'
1959         DSO_PIC_CFLAGS=
1960         LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1961         AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
1962         MOZ_FIX_LINK_PATHS=
1963         MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1964         MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1965         if test "$COMPILE_ENVIRONMENT"; then
1966             AC_LANG_SAVE
1967             AC_LANG_CPLUSPLUS
1968             AC_MSG_CHECKING([for VisualAge C++ compiler version >= 6.0.0.3])
1969             AC_TRY_COMPILE([],
1970                 [#if (__IBMCPP__ < 600)
1971                  #error "Bad compiler"
1972                  #endif],
1973                 _BAD_COMPILER=,_BAD_COMPILER=1)
1974             if test -n "$_BAD_COMPILER"; then
1975                 AC_MSG_RESULT([no])    
1976                 AC_MSG_ERROR([VisualAge C++ version 6.0.0.3 or higher is required to build.])
1977             else
1978                 AC_MSG_RESULT([yes])    
1979             fi
1980             AC_LANG_RESTORE
1981             TARGET_COMPILER_ABI="ibmc"
1982             CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1983             CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1984         fi
1985     fi
1986     case "${target_os}" in
1987     aix4.1*)
1988         DLL_SUFFIX='_shr.a'
1989         ;;
1990     esac
1991     if test "$COMPILE_ENVIRONMENT"; then
1992         AC_CHECK_HEADERS(sys/inttypes.h)
1993     fi
1994     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1995     ;;
1997 *-beos*)
1998     no_x=yes
1999     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
2000     _PLATFORM_DEFAULT_TOOLKIT="cairo-beos"
2001     DSO_LDOPTS='-nostart'
2002     TK_LIBS='-lbe -lroot'
2003     LIBS="$LIBS -lbe"
2004     if test "$COMPILE_ENVIRONMENT"; then
2005         AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
2006         AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
2007     fi
2008     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
2009     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
2010     _MOZ_USE_RTTI=1
2011     USE_DEPENDENT_LIBS=
2012     MOZ_USER_DIR="Mozilla"
2013     ;;
2015 *-bsdi*)
2016     dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
2017     _PEDANTIC=
2018     case $OS_RELEASE in
2019         4.*|5.*)
2020             STRIP="$STRIP -d"
2021             ;;
2022         *)
2023             DSO_CFLAGS=''
2024             DSO_LDOPTS='-r'
2025             _WARNINGS_CFLAGS="-Wall"
2026             _WARNINGS_CXXFLAGS="-Wall"
2027             # The test above doesn't work properly, at least on 3.1.
2028             MKSHLIB_FORCE_ALL=''
2029             MKSHLIB_UNFORCE_ALL=''
2030         ;;
2031     esac
2032     ;;
2034 *-darwin*) 
2035     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2036     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2037     MOZ_OPTIMIZE_FLAGS="-O3"
2038     _PEDANTIC=
2039     CFLAGS="$CFLAGS -fpascal-strings -fno-common"
2040     CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
2041     DLL_SUFFIX=".dylib"
2042     DSO_LDOPTS=''
2043     STRIP="$STRIP -x -S"
2044     _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
2045     MOZ_ENABLE_POSTSCRIPT=
2046     TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
2047     # The ExceptionHandling framework is needed for Objective-C exception
2048     # logging code in nsObjCExceptions.h. Currently we only use that in debug
2049     # builds.
2050     MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"
2052     dnl DTrace and -dead_strip don't interact well. See bug 403132.
2053     dnl ===================================================================
2054     if test "x$enable_dtrace" = "xyes"; then
2055         echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
2056     else
2057         dnl check for the presence of the -dead_strip linker flag
2058         AC_MSG_CHECKING([for -dead_strip option to ld])
2059         _SAVE_LDFLAGS=$LDFLAGS
2060         LDFLAGS="$LDFLAGS -Wl,-dead_strip"
2061         AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
2062         if test -n "$_HAVE_DEAD_STRIP" ; then
2063             AC_MSG_RESULT([yes])
2064             MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
2065         else
2066             AC_MSG_RESULT([no])
2067         fi
2068         
2069         LDFLAGS=$_SAVE_LDFLAGS
2070     fi
2071     MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
2072     ;;
2074 *-freebsd*)
2075     if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` != "elf"; then
2076         DLL_SUFFIX=".so.1.0"
2077         DSO_LDOPTS="-shared"
2078     fi
2079     if test ! "$GNU_CC"; then
2080         DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
2081     fi
2082 # Can't have force w/o an unforce.
2083 #    # Hack for FreeBSD 2.2
2084 #    if test -z "$MKSHLIB_FORCE_ALL"; then
2085 #       MKSHLIB_FORCE_ALL='-Wl,-Bforcearchive'
2086 #       MKSHLIB_UNFORCE_ALL=''
2087 #    fi
2088     ;; 
2090 ia64*-hpux*)
2091     DLL_SUFFIX=".so"
2092     if test ! "$GNU_CC"; then
2093        DSO_LDOPTS='-b'
2094        DSO_CFLAGS=""
2095        DSO_PIC_CFLAGS=
2096        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@'
2097        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@'
2098        CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2099     else
2100        DSO_LDOPTS='-b -E'
2101        MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2102        MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2103     fi
2104     MOZ_FIX_LINK_PATHS=
2105     SYSTEM_MAKEDEPEND=
2106     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2107     AC_DEFINE(_LARGEFILE64_SOURCE)
2108     ;;
2110 *-hpux*)
2111     DLL_SUFFIX=".sl"
2112     if test ! "$GNU_CC"; then
2113         DSO_LDOPTS='-b -Wl,+s'
2114         DSO_CFLAGS=""
2115         DSO_PIC_CFLAGS="+Z"
2116         MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
2117         MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
2118         CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2119     else
2120         DSO_LDOPTS='-b -E +s'
2121         MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2122         MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2123     fi
2124     MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
2125     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2126     ;;
2128 *-irix5*)
2129     AC_DEFINE(IRIX)
2130     DSO_LDOPTS='-elf -shared'
2132     if test "$GNU_CC"; then
2133        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2134        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2135        MKSHLIB_FORCE_ALL='-Wl,-all'
2136        MKSHLIB_UNFORCE_ALL='-Wl,-none'
2137        CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
2138     else
2139        MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2140        MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2141        MKSHLIB_FORCE_ALL='-all'
2142        MKSHLIB_UNFORCE_ALL='-none'
2143     fi
2144     ;;
2146 *-irix6*)
2147     AC_DEFINE(IRIX)
2148     dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must* 
2149     dnl compile and link using -n32
2150     USE_N32=1
2151     TARGET_COMPILER_ABI=n32
2152     DSO_LDOPTS='-elf -shared'
2153     MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2154     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2155     _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
2156     _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
2157     if test "$GNU_CC"; then
2158        MKSHLIB_FORCE_ALL='-Wl,-all'
2159        MKSHLIB_UNFORCE_ALL='-Wl,-none'
2160        _WARNINGS_CFLAGS="-Wall"
2161        _WARNINGS_CXXFLAGS="-Wall"
2162        CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
2163     else
2164        MKSHLIB_FORCE_ALL='-all'
2165        MKSHLIB_UNFORCE_ALL='-none'
2166            AR_LIST="$AR t"
2167            AR_EXTRACT="$AR x"
2168            AR_DELETE="$AR d"
2169            AR='$(CXX) -ar'
2170            AR_FLAGS='-o $@'
2171        CFLAGS="$CFLAGS -woff 3262 -G 4"
2172        CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
2173        if test -n "$USE_N32"; then
2174            ASFLAGS="$ASFLAGS -n32"
2175            CFLAGS="$CFLAGS -n32"
2176            CXXFLAGS="$CXXFLAGS -n32"
2177            LDFLAGS="$LDFLAGS -n32"
2178        fi
2179        AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2180        AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
2181        MOZ_FIX_LINK_PATHS=
2182     fi
2183     if test -z "$GNU_CXX"; then
2184       MIPSPRO_CXX=1
2185     fi
2186     ;;
2188 *-*linux*)
2189     # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
2190     # Similarly for GNU_CXX and INTEL_CXX.
2191     if test "$INTEL_CC" || test "$INTEL_CXX"; then
2192         # -Os has been broken on Intel's C/C++ compilers for quite a
2193         # while; Intel recommends against using it.
2194         MOZ_OPTIMIZE_FLAGS="-O2"
2195         MOZ_DEBUG_FLAGS="-g"
2196     elif test "$GNU_CC" || test "$GNU_CXX"; then
2197         GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
2198         case $GCC_VERSION in
2199         4.1.*|4.2.*)
2200             # -Os is broken on gcc 4.1.x and 4.2.x, we need to tweak it to get good results.
2201             MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
2202         esac
2203         MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fomit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK"
2204         MOZ_DEBUG_FLAGS="-g"
2205     fi
2207     TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2209     MOZ_MEMORY=1
2211     case "${target_cpu}" in
2212     alpha*)
2213         CFLAGS="$CFLAGS -mieee"
2214         CXXFLAGS="$CXXFLAGS -mieee"
2215     ;;
2216     i*86)
2217         USE_ELF_DYNSTR_GC=1
2218     ;;
2219     mips*)
2220         MOZ_DEBUG_FLAGS="-g" # We want inlining
2221     ;;
2222     esac
2223     ;;
2225 *-wince*|*-winmo*)
2226     TARGET_COMPILER_ABI=msvc
2227     _PLATFORM_DEFAULT_TOOLKIT=cairo-windows
2228     MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2229     MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2230     AR_LIST="$AR -list"
2231     AR_EXTRACT="$AR -extract"
2232     AR_DELETE="$AR d"
2233     AR_FLAGS='-OUT:"$@"'
2234     MOZ_MEMORY=1
2235     NSS_DISABLE_DBM=1
2236     MOZ_OGG=
2237     ac_configure_args="$ac_configure_args --enable-win32-target=WINCE"
2239     if test "$AS_BIN"; then
2240         AS="$AS_BIN"
2241     fi
2242     DSO_CFLAGS=
2243     DSO_PIC_CFLAGS=
2244     DLL_SUFFIX=.dll
2245     BIN_SUFFIX='.exe'
2246     if test -z "$RC"; then 
2247         RC=rc.exe  
2248     fi
2249     # certain versions of cygwin's makedepend barf on the 
2250     # #include <string> vs -I./dist/include/string issue so don't use it
2251     SYSTEM_MAKEDEPEND=
2253     HOST_CC=cl
2254     HOST_CXX=cl
2255     HOST_LD=link
2256     HOST_AR='lib -OUT:$@'
2257     HOST_RANLIB='echo ranlib'
2258     HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
2259         
2260         
2261     WARNINGS_AS_ERRORS='-WX'
2262     MOZ_OPTIMIZE_FLAGS='-Ox'
2263     AR_FLAGS='-NOLOGO -OUT:"$@"'
2264     ASM_SUFFIX=asm
2265     CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2266     CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2267     DLL_PREFIX=
2268     DOXYGEN=:
2269     DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
2270     DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2271     GARBAGE=
2272     IMPORT_LIB_SUFFIX=lib
2273     dnl Need to force-link against mozalloc because it's used in the shunt
2274     LIBS="$LIBS \$(LIBXUL_DIST)/lib/mozalloc.lib"
2275     LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2276     LIB_PREFIX=
2277     LIB_SUFFIX=lib 
2278     MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
2279     MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
2280     MKSHLIB_FORCE_ALL=
2281     MKSHLIB_UNFORCE_ALL=
2282     MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2283     MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2284     MOZ_DEBUG_FLAGS='-Zi'
2285     MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2286     MOZ_FIX_LINK_PATHS=
2287     MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2288     OBJ_SUFFIX=obj
2289     RANLIB='echo not_ranlib'
2290     STRIP='echo not_strip'
2291     TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
2292     UNZIP=unzip
2293     XARGS=xargs
2294     XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2295     ZIP=zip
2296     LIBIDL_CFLAGS="-I$MOZ_TOOLS_DIR/include ${GLIB_CFLAGS}"
2297     LIBIDL_LIBS="$MOZ_TOOLS_DIR/lib/libidl-0.6_s.lib $MOZ_TOOLS_DIR/lib/glib-1.2_s.lib"
2298     STATIC_LIBIDL=1
2299     MOZ_TREE_FREETYPE=1
2301     AC_DEFINE(HAVE_SNPRINTF)
2302     AC_DEFINE(_WINDOWS)
2303     AC_DEFINE(WIN32)
2304     AC_DEFINE(XP_WIN)
2305     AC_DEFINE(XP_WIN32)
2306     AC_DEFINE(HW_THREADS)
2307     AC_DEFINE(STDC_HEADERS)
2308     AC_DEFINE(NEW_H, <new>)
2309     AC_DEFINE(WIN32_LEAN_AND_MEAN)
2310     AC_DEFINE(HAVE_LOCALTIME_R)
2312     TARGET_MD_ARCH=win32
2313     _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2314     BIN_SUFFIX='.exe'
2315     MOZ_ENABLE_POSTSCRIPT=
2316     MOZ_USER_DIR="Mozilla"
2318     MOZ_GFX_OPTIMIZE_MOBILE=1
2320     # Sanity check for WINCE_WINDOWS_MOBILE
2321     # XXX disabled until we can fix the mobile tinderbox
2322     ##if test "$WINCE_WINDOWS_MOBILE"; then
2323     ##   AC_CHECK_HEADER(tpcshell.h, [],
2324     ##        AC_MSG_ERROR([Can't find tpcshell.h in your SDK; are you sure you don't need --disable-windows-mobile-components?]))
2325     ##fi
2329 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2330     DSO_CFLAGS=
2331     DSO_PIC_CFLAGS=
2332     DLL_SUFFIX=.dll
2333     RC=rc.exe
2334     # certain versions of cygwin's makedepend barf on the 
2335     # #include <string> vs -I./dist/include/string issue so don't use it
2336     SYSTEM_MAKEDEPEND=
2337     if test -n "$GNU_CC"; then
2338         CC="$CC -mno-cygwin"
2339         CXX="$CXX -mno-cygwin"
2340         CPP="$CPP -mno-cygwin"
2341         CFLAGS="$CFLAGS -mms-bitfields"
2342         CXXFLAGS="$CXXFLAGS -mms-bitfields"
2343         DSO_LDOPTS='-shared'
2344         MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
2345         MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2346         RC='$(WINDRES)'
2347         # Use temp file for windres (bug 213281)
2348         RCFLAGS='-O coff --use-temp-file'
2349         # mingw doesn't require kernel32, user32, and advapi32 explicitly
2350         LIBS="$LIBS -luuid -lgdi32 -lwinmm -lwsock32"
2351         MOZ_JS_LIBS='-L$(LIBXUL_DIST)/lib -lmozjs'
2352         MOZ_FIX_LINK_PATHS=
2353         DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core -lmozalloc'
2354         XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom -lmozalloc'
2355         DLL_PREFIX=
2356         IMPORT_LIB_SUFFIX=dll.a
2357         GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
2358     else
2359         TARGET_COMPILER_ABI=msvc
2360         HOST_CC='$(CC)'
2361         HOST_CXX='$(CXX)'
2362         HOST_LD='$(LD)'
2363         if test "$AS_BIN"; then
2364             AS="$(basename "$AS_BIN")"
2365         fi
2366         AR='lib -NOLOGO -OUT:"$@"'
2367         AR_FLAGS=
2368         RANLIB='echo not_ranlib'
2369         STRIP='echo not_strip'
2370         XARGS=xargs
2371         ZIP=zip
2372         UNZIP=unzip
2373         DOXYGEN=:
2374         GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
2375         ASM_SUFFIX=asm
2376         OBJ_SUFFIX=obj
2377         LIB_SUFFIX=lib
2378         DLL_PREFIX=
2379         LIB_PREFIX=
2380         IMPORT_LIB_SUFFIX=lib
2381         MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2382         MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2383         MKSHLIB_FORCE_ALL=
2384         MKSHLIB_UNFORCE_ALL=
2385         DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2386         _USE_CPP_INCLUDE_FLAG=1
2387         _DEFINES_CFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2388         _DEFINES_CXXFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2389         CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2390         CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2391         CXXFLAGS="$CXXFLAGS -wd4800" # disable warning "forcing value to bool"
2392         LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
2393         MOZ_DEBUG_FLAGS='-Zi'
2394         MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2395         WARNINGS_AS_ERRORS='-WX'
2396         MOZ_OPTIMIZE_FLAGS='-O1'
2397         MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2398         MOZ_FIX_LINK_PATHS=
2399         DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2400         XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2401         LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2402         MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2403         if test $_MSC_VER -ge 1400; then
2404             LDFLAGS="$LDFLAGS -NXCOMPAT"
2405             dnl For profile-guided optimization
2406             PROFILE_GEN_CFLAGS="-GL"
2407             PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2408             dnl XXX: PGO builds can fail with warnings treated as errors,
2409             dnl specifically "no profile data available" appears to be
2410             dnl treated as an error sometimes. This might be a consequence
2411             dnl of using WARNINGS_AS_ERRORS in some modules, combined
2412             dnl with the linker doing most of the work in the whole-program
2413             dnl optimization/PGO case. I think it's probably a compiler bug,
2414             dnl but we work around it here.
2415             PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2416             dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2417             dnl Probably also a compiler bug, but what can you do?
2418             PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2419             if test -n "$_USE_DYNAMICBASE"; then
2420                LDFLAGS="$LDFLAGS -DYNAMICBASE"
2421             fi
2422         fi
2423     fi
2424     MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,jpeg32$(VERSION_NUMBER),$(DEPTH)/jpeg)'
2425     MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,png,$(DEPTH)/modules/libimg/png)'
2426     AC_DEFINE(HAVE_SNPRINTF)
2427     AC_DEFINE(_WINDOWS)
2428     AC_DEFINE(WIN32)
2429     AC_DEFINE(XP_WIN)
2430     AC_DEFINE(XP_WIN32)
2431     AC_DEFINE(HW_THREADS)
2432     AC_DEFINE(STDC_HEADERS)
2433     AC_DEFINE(NEW_H, <new>)
2434     AC_DEFINE(WIN32_LEAN_AND_MEAN)
2435     TARGET_MD_ARCH=win32
2436     _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2437     BIN_SUFFIX='.exe'
2438     MOZ_ENABLE_POSTSCRIPT=
2439     MOZ_USER_DIR="Mozilla"
2441     dnl Hardcode to win95 for now - cls
2442     TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2444     dnl set NO_X11 defines here as the general check is skipped on win32
2445     no_x=yes
2446     AC_DEFINE(NO_X11)
2448     dnl MinGW/MSYS doesn't provide or need cygpath
2449     case "$host" in
2450     *-mingw*)
2451         CYGPATH_W=echo
2452         CYGPATH_S=cat
2453         MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2454         ;;
2455     *-cygwin*|*-msvc*|*-mks*)
2456         CYGPATH_W="cygpath -a -w"
2457         CYGPATH_S="sed -e s|\\\\|/|g"
2458         MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
2459         ;;
2460     esac
2461     case "$host" in
2462     *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2464     if test -z "$MOZ_TOOLS"; then
2465         AC_MSG_ERROR([MOZ_TOOLS is not set])
2466     fi
2468     MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2469     if test "$?" != "0" || test -z "$MOZ_TOOLS_DIR"; then
2470         AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2471     fi
2472     MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
2473     if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
2474         AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2475     fi
2476     MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
2478     if test -n "$GLIB_PREFIX"; then
2479         _GLIB_PREFIX_DIR=`cd $GLIB_PREFIX && pwd -W`
2480         if test "$?" = "0"; then
2481             if test `echo ${PATH}: | grep -ic "$_GLIB_PREFIX_DIR/bin:"` = 0; then
2482                 AC_MSG_ERROR([GLIB_PREFIX must be in your \$PATH.])
2483             fi
2484             _GLIB_PREFIX_DIR=`$CYGPATH_W $_GLIB_PREFIX_DIR | $CYGPATH_S`
2485         else
2486             AC_MSG_ERROR([GLIB_PREFIX is set but "${GLIB_PREFIX}" is not a directory.])
2487         fi
2488     else
2489         _GLIB_PREFIX_DIR=$MOZ_TOOLS_DIR
2490     fi
2491     if test ! -f "${_GLIB_PREFIX_DIR}/include/glib.h"; then
2492         AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/include/glib.h .])
2493     fi
2494     GLIB_CFLAGS="-I${_GLIB_PREFIX_DIR}/include"
2495     if test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"; then
2496         GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"
2497     elif test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"; then
2498         GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"
2499     else
2500         AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/lib/glib-1.2.lib or $_GLIB_PREFIX_DIR/lib/glib-1.2_s.lib])
2501     fi
2503     if test -n "$LIBIDL_PREFIX"; then
2504         _LIBIDL_PREFIX_DIR=`cd $LIBIDL_PREFIX && pwd -W`
2505         if test "$?" = "0"; then
2506             if test `echo ${PATH}: | grep -ic "$_LIBIDL_PREFIX_DIR/bin:"` = 0; then
2507                 AC_MSG_ERROR([LIBIDL_PREFIX must be in your \$PATH.])
2508             fi
2509             _LIBIDL_PREFIX_DIR=`$CYGPATH_W $_LIBIDL_PREFIX_DIR | $CYGPATH_S`
2510         else
2511             AC_MSG_ERROR([LIBIDL_PREFIX is set but "${LIBIDL_PREFIX}" is not a directory.])
2512         fi
2513     else
2514         _LIBIDL_PREFIX_DIR=$MOZ_TOOLS_DIR
2515     fi        
2516     if test ! -f "${_LIBIDL_PREFIX_DIR}/include/libIDL/IDL.h"; then
2517         AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/include/libIDL/IDL.h .])
2518     fi
2519     LIBIDL_CFLAGS="-I${_LIBIDL_PREFIX_DIR}/include ${GLIB_CFLAGS}"
2520     if test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"; then
2521         LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"
2522         STATIC_LIBIDL=1
2523     elif test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"; then
2524         LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"
2525     else
2526         AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/lib/libidl-0.6.lib or $_LIBIDL_PREFIX_DIR/lib/libidl-0.6_s.lib])
2527     fi
2528     LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2529     ;;
2531     *) # else cross-compiling
2532         if test -n "$GLIB_PREFIX"; then
2533             GLIB_CFLAGS="-I${GLIB_PREFIX}/include"
2534             if test -f "${GLIB_PREFIX}/lib/glib-1.2_s.lib"; then
2535                 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2_s.lib"
2536             elif test -f "${GLIB_PREFIX}/lib/glib-1.2.lib"; then
2537                 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2.lib"
2538             else
2539                 AC_MSG_ERROR([Cannot find $GLIB_PREFIX/lib/glib-1.2.lib or $GLIB_PREFIX/lib/glib-1.2_s.lib])
2540             fi
2541         fi
2542         if test -n "$LIBIDL_PREFIX"; then
2543             LIBIDL_CFLAGS="-I${LIBIDL_PREFIX}/include ${GLIB_CFLAGS}"
2544             if test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"; then
2545                 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"
2546                 STATIC_LIBIDL=1
2547             elif test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"; then
2548                 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"
2549             else
2550                 AC_MSG_ERROR([Cannot find $LIBIDL_PREFIX/lib/libIDL-0.6.lib or $LIBIDL_PREFIX/lib/libIDL-0.6_s.lib])
2551             fi
2552         fi
2553         LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2554         ;;
2555     esac 
2558     case "$host_os" in
2559     cygwin*|msvc*|mks*)
2560         AC_MSG_WARN([Using a cygwin build environment is unsupported. Configure cannot check for the presence of necessary headers. Please upgrade to MozillaBuild; see http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites])
2561         ;;
2563     *)
2564         AC_CHECK_HEADERS(oleacc.idl)
2566         AC_LANG_SAVE
2567         AC_LANG_CPLUSPLUS
2568         AC_CHECK_HEADERS(atlbase.h)
2569         AC_LANG_RESTORE
2570         ;;
2571     esac
2573     case "$target" in
2574     i*86-*)
2575         if test "$HAVE_64BIT_OS"; then
2576             AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
2577         fi
2579         if test $_MSC_VER -ge 1400; then
2580             LDFLAGS="$LDFLAGS -SAFESEH"
2581         fi
2582         AC_CHECK_HEADERS(mmintrin.h)
2583         AC_DEFINE(_X86_)
2584         ;;
2585     alpha-*)
2586         AC_DEFINE(_ALPHA_)
2587         ;;
2588     mips-*)
2589         AC_DEFINE(_MIPS_)
2590         ;;
2591     x86_64-*)
2592         AC_DEFINE(_AMD64_)
2593         ;;
2594     *)
2595         AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2596         ;;
2597     esac
2599     if test "$HAVE_64BIT_OS"; then
2600         AC_DEFINE(_WIN64)
2601     fi
2602     ;;
2604 *-netbsd*)
2605     DSO_CFLAGS=''
2606     CFLAGS="$CFLAGS -Dunix"
2607     CXXFLAGS="$CXXFLAGS -Dunix"
2608     if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2609         DLL_SUFFIX=".so"
2610         DSO_PIC_CFLAGS='-fPIC -DPIC'
2611         DSO_LDOPTS='-shared'
2612         BIN_FLAGS='-Wl,--export-dynamic'
2613     else
2614         DSO_PIC_CFLAGS='-fPIC -DPIC'
2615         DLL_SUFFIX=".so.1.0"
2616         DSO_LDOPTS='-shared'
2617     fi
2618     # This will fail on a.out systems prior to 1.5.1_ALPHA.
2619     MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2620     MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2621     if test "$LIBRUNPATH"; then
2622         DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2623     fi
2624     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2625     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2626     ;;
2628 *-nto*) 
2629         AC_DEFINE(NTO)  
2630         AC_DEFINE(_QNX_SOURCE)
2631         AC_DEFINE(_i386)
2632         OS_TARGET=NTO
2633         WARNINGS_AS_ERRORS=''
2634         MOZ_OPTIMIZE_FLAGS="-O"
2635         MOZ_DEBUG_FLAGS="-gstabs"
2636         USE_PTHREADS=1
2637         _PEDANTIC=
2638         LIBS="$LIBS -lsocket -lstdc++"
2639         _DEFINES_CFLAGS='-Wp,-include -Wp,$(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
2640         _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -Wp,-include -Wp,$(DEPTH)/mozilla-config.h -D_POSIX_C_SOURCE=199506'
2641         if test "$with_x" != "yes"
2642         then
2643                 _PLATFORM_DEFAULT_TOOLKIT="photon"
2644             TK_CFLAGS='-I/usr/include/photon'
2645                 TK_LIBS='-lph'
2646         fi
2647         case "${target_cpu}" in
2648         ppc*)
2649         AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)        
2650         ;;
2651         esac
2652         case "${host_cpu}" in
2653         i*86)
2654         USE_ELF_DYNSTR_GC=1
2655         ;;
2656         esac
2657         ;;
2659 *-openbsd*)
2660     DLL_SUFFIX=".so.1.0"
2661     DSO_CFLAGS=''
2662     DSO_PIC_CFLAGS='-fPIC'
2663     DSO_LDOPTS='-shared -fPIC'
2664     if test "$LIBRUNPATH"; then
2665         DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2666     fi
2667     ;;
2669 *-openvms*) 
2670     AC_DEFINE(NO_PW_GECOS)
2671     AC_DEFINE(NO_UDSOCK)
2672     AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
2673     USE_PTHREADS=1
2674     MKSHLIB_FORCE_ALL='-all'
2675     MKSHLIB_UNFORCE_ALL='-none'
2676     AS='as'
2677     AS_DASH_C_FLAG='-Wc/names=as_is'
2678     AR_FLAGS='c $@'
2679     DSO_LDOPTS='-shared -auto_symvec'
2680     DSO_PIC_CFLAGS=
2681     MOZ_DEBUG_LDFLAGS='-g'
2682     COMPAQ_CXX=1
2683     CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
2684     CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
2685     ;;
2688 *-os2*)
2689     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2690     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2691     AC_DEFINE(OS2)
2692     AC_DEFINE(XP_OS2)
2693     AC_DEFINE(OS2EMX_PLAIN_CHAR)
2694     AC_DEFINE(TCPV40HDRS)
2695     DLL_PREFIX=
2696     LIB_PREFIX=
2697     LIB_SUFFIX=lib
2698     BIN_SUFFIX=".exe"
2699     DLL_SUFFIX=".dll"
2700     IMPORT_LIB_SUFFIX=lib
2701     DSO_PIC_CFLAGS=
2702     AR=emxomfar
2703     AR_FLAGS='r $@'
2704     CFLAGS="$CFLAGS -Zomf"
2705     CXXFLAGS="$CXXFLAGS -Zomf"
2706     DSO_LDOPTS='-Zdll'
2707     BIN_FLAGS='-Zlinker /ST:0x100000'
2708     IMPLIB='emximp -o'
2709     FILTER='emxexp -o'
2710     LDFLAGS='-Zmap'
2711     WARNINGS_AS_ERRORS='-Werror'
2712     MOZ_DEBUG_FLAGS="-g -fno-inline"
2713     MOZ_OPTIMIZE_FLAGS="-O2"
2714     MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2715     DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2716     LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2717     TARGET_MD_ARCH=os2
2718     _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2719     MOZ_ENABLE_POSTSCRIPT=
2720     RC=rc.exe
2721     RCFLAGS='-n'
2722     MOZ_USER_DIR="Mozilla"
2724     if test "$MOZTOOLS"; then
2725         MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2726     else
2727         AC_MSG_ERROR([MOZTOOLS is not set])
2728     fi
2729     if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2730         DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2731         LDFLAGS="$LDFLAGS -Zhigh-mem"
2732         MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2733         AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2734     fi
2736     # GCC for OS/2 currently predefines these, but we don't want them
2737     _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2738     _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2740     AC_CACHE_CHECK(for __declspec(dllexport),
2741         ac_os2_declspec,
2742         [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2743                         [return 0;],
2744                         ac_os2_declspec="yes",
2745                         ac_os2_declspec="no")])
2746     if test "$ac_os2_declspec" = "yes"; then
2747         FILTER='true'
2748         MOZ_OS2_USE_DECLSPEC='1'
2749     fi
2750     ;;
2752 alpha*-*-osf*)
2753     if test "$GNU_CC"; then
2754       MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2755       MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2757     else
2758         MOZ_DEBUG_FLAGS='-g'
2759         ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
2760         CFLAGS="$CFLAGS -ieee"
2761         CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee  -ptr $(DIST)/cxx_repository'
2762         DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
2763         DSO_CFLAGS=
2764         DSO_PIC_CFLAGS=
2765         MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2766         MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2767         MKSHLIB_FORCE_ALL='-all'
2768         MKSHLIB_UNFORCE_ALL='-none'
2769         dnl Might fix the libxpcom.so breakage on this platform as well....
2770         AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2771         AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2772     fi
2773     if test -z "$GNU_CXX"; then
2774       COMPAQ_CXX=1
2775     fi
2776     AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2777     ;;
2779 *-qnx*) 
2780     DIRENT_INO=d_stat.st_ino
2781     dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
2782     AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2783     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2784     dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
2785     AC_DEFINE(STDC_HEADERS)
2786     if test "$no_x" = "yes"; then
2787             _PLATFORM_DEFAULT_TOOLKIT='photon'
2788             TK_CFLAGS='-I/usr/nto/include/photon'
2789             TK_LIBS='-lphoton -lphrender'
2790     fi
2791     ;;
2793 *-sco*) 
2794     AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2795     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2796     CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
2797     if test ! "$GNU_CC"; then
2798        DSO_LDOPTS='-G'
2799     fi
2800     ;;
2802 *-solaris*) 
2803     AC_DEFINE(SOLARIS)
2804     TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2805     SYSTEM_MAKEDEPEND=
2806     # $ORIGIN/.. is for shared libraries under components/ to locate shared
2807     # libraries one level up (e.g. libnspr4.so)
2808     LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..'"
2809     if test "$SOLARIS_SUNPRO_CC"; then
2810        LIBS="-lCrun -lCstd $LIBS"
2811        NS_USE_NATIVE=1
2812        MOZ_FIX_LINK_PATHS=
2813        AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2814        CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all"
2815        CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic -norunpath"
2816        _MOZ_EXCEPTIONS_FLAGS_ON='-features=except'
2817        _MOZ_EXCEPTIONS_FLAGS_OFF='-features=no%except'
2818        LDFLAGS="-xildoff -z lazyload -z combreloc $LDFLAGS"
2819        if test -z "$CROSS_COMPILE" && test -f /usr/lib/ld/map.noexstk; then
2820            _SAVE_LDFLAGS=$LDFLAGS
2821            LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS" 
2822            AC_TRY_LINK([#include <stdio.h>],
2823                        [printf("Hello World\n");],
2824                        ,
2825                        [LDFLAGS=$_SAVE_LDFLAGS])
2826        fi
2827        WARNINGS_AS_ERRORS='-Werror'
2828        MOZ_OPTIMIZE_FLAGS="-xO4"
2829        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2830        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) -G -z muldefs -h $@ -o $@'
2831        MKSHLIB_FORCE_ALL='-z allextract'
2832        MKSHLIB_UNFORCE_ALL='-z defaultextract'
2833        DSO_LDOPTS='-G -z muldefs'
2834        AR_LIST="$AR t"
2835        AR_EXTRACT="$AR x"
2836        AR_DELETE="$AR d"
2837        AR='$(CXX) -xar'
2838        AR_FLAGS='-o $@'
2839        AS='/usr/ccs/bin/as'
2840        ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2841        AS_DASH_C_FLAG=''
2842        TARGET_COMPILER_ABI="sunc"
2843        CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2844        CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2845        AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
2846        AC_LANG_SAVE
2847        AC_LANG_CPLUSPLUS
2848        AC_TRY_COMPILE([],
2849            [#if (__SUNPRO_CC < 0x590)
2850            #error "Denied"
2851            #endif],
2852            _BAD_COMPILER=,_BAD_COMPILER=1)
2853         if test -n "$_BAD_COMPILER"; then
2854             _res="no"
2855             AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
2856         else
2857             _res="yes"
2858         fi
2859         AC_MSG_RESULT([$_res])
2860         AC_LANG_RESTORE
2861     else
2862        ASFLAGS="$ASFLAGS -fPIC"
2863        DSO_LDOPTS='-G'
2864        _WARNINGS_CFLAGS=''
2865        _WARNINGS_CXXFLAGS=''
2866        if test "$OS_RELEASE" = "5.3"; then
2867           AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2868        fi
2869     fi
2870     if test "$OS_RELEASE" = "5.5.1"; then
2871        AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2872     fi
2873     ;;
2875 *-sunos*) 
2876     DSO_LDOPTS='-Bdynamic'
2877     MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2878     MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2879     AC_DEFINE(SUNOS4)
2880     AC_DEFINE(SPRINTF_RETURNS_STRING)
2881     case "$(target_os)" in
2882     sunos4.1*)
2883         DLL_SUFFIX='.so.1.0'
2884         ;;
2885     esac
2886     ;;
2888 *-sysv4.2uw7*) 
2889         NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2890     ;;
2892 *-os2*)
2893     HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2894     ;;
2896 *-android*)
2897     AC_DEFINE(NO_PW_GECOS)
2898     no_x=yes
2899     _PLATFORM_DEFAULT_TOOLKIT=cairo-android
2900     TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2902     MOZ_GFX_OPTIMIZE_MOBILE=1
2903     MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions -fomit-frame-pointer"
2905     dnl MOZ_MEMORY=1
2906     ;;
2908 esac
2910 dnl Only one oddball right now (QNX), but this gives us flexibility
2911 dnl if any other platforms need to override this in the future.
2912 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2914 dnl ========================================================
2915 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2916 dnl by now will not have any way to link most binaries (tests
2917 dnl as well as viewer, apprunner, etc.), because some symbols
2918 dnl will be left out of the "composite" .so's by ld as unneeded.
2919 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2920 dnl they can link in the static libs that provide the missing
2921 dnl symbols.
2922 dnl ========================================================
2923 NO_LD_ARCHIVE_FLAGS=
2924 if test -z "$MKSHLIB_FORCE_ALL" || test -z "$MKSHLIB_UNFORCE_ALL"; then
2925     NO_LD_ARCHIVE_FLAGS=1
2927 case "$target" in
2928 *-os2*)
2929     NO_LD_ARCHIVE_FLAGS=
2930     ;;
2931 *-aix4.3*|*-aix5*)
2932     NO_LD_ARCHIVE_FLAGS=
2933     ;;
2934 *-openvms*)
2935     NO_LD_ARCHIVE_FLAGS=
2936     ;;
2937 *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince|*-winmo)
2938     if test -z "$GNU_CC"; then
2939         NO_LD_ARCHIVE_FLAGS=
2940     fi
2941     ;;
2942 esac
2943 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2945 dnl ========================================================
2946 dnl = Flags to strip unused symbols from .so components
2947 dnl ========================================================
2948 case "$target" in
2949     *-linux*|*-kfreebsd*-gnu|*-gnu*)
2950         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2951         ;;
2952     *-solaris*)
2953         if test -z "$GNU_CC"; then
2954          MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2955         else
2956          if test -z "$GCC_USE_GNU_LD"; then
2957           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2958          else
2959           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2960          fi
2961         fi
2962         ;;
2963     *-nto*) 
2964         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2965         ;;
2966     *-darwin*)
2967         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2968         ;;
2969     *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince|*-winmo)
2970         if test -n "$GNU_CC"; then
2971            MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2972         fi
2973         ;;
2974 esac
2976 if test -z "$COMPILE_ENVIRONMENT"; then
2977     SKIP_COMPILER_CHECKS=1
2978     SKIP_LIBRARY_CHECKS=1
2981 if test -z "$SKIP_COMPILER_CHECKS"; then
2982 dnl Checks for typedefs, structures, and compiler characteristics.
2983 dnl ========================================================
2984 AC_LANG_C
2985 AC_HEADER_STDC
2986 AC_C_CONST
2987 AC_TYPE_MODE_T
2988 AC_TYPE_OFF_T
2989 AC_TYPE_PID_T
2990 AC_TYPE_SIZE_T
2991 AC_MSG_CHECKING(for __stdcall)
2992 AC_CACHE_VAL(ac_cv___stdcall,
2993  [AC_TRY_COMPILE([],
2994                  [void foo(); void __stdcall foo();],
2995                  [ac_cv___stdcall=true],
2996                  [ac_cv___stdcall=false])])
2997 if test "$ac_cv___stdcall" = true ; then
2998   AC_DEFINE(HAVE_STDCALL)
2999   AC_MSG_RESULT(yes)
3000 else
3001   AC_MSG_RESULT(no)
3003 AC_MSG_CHECKING(for ssize_t)
3004 AC_CACHE_VAL(ac_cv_type_ssize_t,
3005  [AC_TRY_COMPILE([#include <stdio.h>
3006                   #include <sys/types.h>],
3007                  [ssize_t foo = 0;],
3008                  [ac_cv_type_ssize_t=true],
3009                  [ac_cv_type_ssize_t=false])])
3010 if test "$ac_cv_type_ssize_t" = true ; then
3011   AC_DEFINE(HAVE_SSIZE_T)
3012   AC_MSG_RESULT(yes)
3013 else
3014   AC_MSG_RESULT(no)
3016 AC_STRUCT_ST_BLKSIZE
3017 AC_MSG_CHECKING(for siginfo_t)
3018 AC_CACHE_VAL(ac_cv_siginfo_t,
3019  [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
3020                   #include <signal.h>],
3021                  [siginfo_t* info;],
3022                  [ac_cv_siginfo_t=true],
3023                  [ac_cv_siginfo_t=false])])
3024 if test "$ac_cv_siginfo_t" = true ; then
3025   AC_DEFINE(HAVE_SIGINFO_T)
3026   AC_MSG_RESULT(yes)
3027 else
3028   AC_MSG_RESULT(no)
3031 dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
3032 dnl ========================================================
3033 AC_MSG_CHECKING(for int16_t)
3034 AC_CACHE_VAL(ac_cv_int16_t,
3035  [AC_TRY_COMPILE([#include <stdio.h>
3036                   #include <sys/types.h>],
3037                  [int16_t foo = 0;],
3038                  [ac_cv_int16_t=true],
3039                  [ac_cv_int16_t=false])])
3040 if test "$ac_cv_int16_t" = true ; then
3041   AC_DEFINE(HAVE_INT16_T)
3042   AC_MSG_RESULT(yes)
3043 else
3044   AC_MSG_RESULT(no)
3046 AC_MSG_CHECKING(for int32_t)
3047 AC_CACHE_VAL(ac_cv_int32_t,
3048  [AC_TRY_COMPILE([#include <stdio.h>
3049                   #include <sys/types.h>],
3050                  [int32_t foo = 0;],
3051                  [ac_cv_int32_t=true],
3052                  [ac_cv_int32_t=false])])
3053 if test "$ac_cv_int32_t" = true ; then
3054   AC_DEFINE(HAVE_INT32_T)
3055   AC_MSG_RESULT(yes)
3056 else
3057   AC_MSG_RESULT(no)
3059 AC_MSG_CHECKING(for int64_t)
3060 AC_CACHE_VAL(ac_cv_int64_t,
3061  [AC_TRY_COMPILE([#include <stdio.h>
3062                   #include <sys/types.h>],
3063                  [int64_t foo = 0;],
3064                  [ac_cv_int64_t=true],
3065                  [ac_cv_int64_t=false])])
3066 if test "$ac_cv_int64_t" = true ; then
3067   AC_DEFINE(HAVE_INT64_T)
3068   AC_MSG_RESULT(yes)
3069 else
3070   AC_MSG_RESULT(no)
3072 AC_MSG_CHECKING(for int64)
3073 AC_CACHE_VAL(ac_cv_int64,
3074  [AC_TRY_COMPILE([#include <stdio.h>
3075                   #include <sys/types.h>],
3076                  [int64 foo = 0;],
3077                  [ac_cv_int64=true],
3078                  [ac_cv_int64=false])])
3079 if test "$ac_cv_int64" = true ; then
3080   AC_DEFINE(HAVE_INT64)
3081   AC_MSG_RESULT(yes)
3082 else
3083   AC_MSG_RESULT(no)
3085 AC_MSG_CHECKING(for uint)
3086 AC_CACHE_VAL(ac_cv_uint,
3087  [AC_TRY_COMPILE([#include <stdio.h>
3088                   #include <sys/types.h>],
3089                  [uint foo = 0;],
3090                  [ac_cv_uint=true],
3091                  [ac_cv_uint=false])])
3092 if test "$ac_cv_uint" = true ; then
3093   AC_DEFINE(HAVE_UINT)
3094   AC_MSG_RESULT(yes)
3095 else
3096   AC_MSG_RESULT(no)
3098 AC_MSG_CHECKING(for uint_t)
3099 AC_CACHE_VAL(ac_cv_uint_t,
3100  [AC_TRY_COMPILE([#include <stdio.h>
3101                   #include <sys/types.h>],
3102                  [uint_t foo = 0;],
3103                  [ac_cv_uint_t=true],
3104                  [ac_cv_uint_t=false])])
3105 if test "$ac_cv_uint_t" = true ; then
3106   AC_DEFINE(HAVE_UINT_T)
3107   AC_MSG_RESULT(yes)
3108 else
3109   AC_MSG_RESULT(no)
3111 AC_MSG_CHECKING(for uint16_t)
3112 AC_CACHE_VAL(ac_cv_uint16_t,
3113  [AC_TRY_COMPILE([#include <stdio.h>
3114                   #include <sys/types.h>],
3115                  [uint16_t foo = 0;],
3116                  [ac_cv_uint16_t=true],
3117                  [ac_cv_uint16_t=false])])
3118 if test "$ac_cv_uint16_t" = true ; then
3119   AC_DEFINE(HAVE_UINT16_T)
3120   AC_MSG_RESULT(yes)
3121 else
3122   AC_MSG_RESULT(no)
3125 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
3126 dnl are defined when compiling C++ but not C.  Since the result of this
3127 dnl test is used only in C++, do it in C++.
3128 AC_LANG_CPLUSPLUS
3130 AC_MSG_CHECKING(for uname.domainname)
3131 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
3132     [AC_TRY_COMPILE([#include <sys/utsname.h>],
3133         [ struct utsname *res; char *domain; 
3134             (void)uname(res);  if (res != 0) { domain = res->domainname; } ],
3135         [ac_cv_have_uname_domainname_field=true],
3136         [ac_cv_have_uname_domainname_field=false])])
3138 if test "$ac_cv_have_uname_domainname_field" = "true"; then
3139     AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
3140     AC_MSG_RESULT(yes)
3141 else
3142     AC_MSG_RESULT(no)
3145 AC_MSG_CHECKING(for uname.__domainname)
3146 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
3147     [AC_TRY_COMPILE([#include <sys/utsname.h>],
3148         [ struct utsname *res; char *domain; 
3149             (void)uname(res);  if (res != 0) { domain = res->__domainname; } ],
3150         [ac_cv_have_uname_us_domainname_field=true],
3151         [ac_cv_have_uname_us_domainname_field=false])])
3153 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
3154     AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
3155     AC_MSG_RESULT(yes)
3156 else
3157     AC_MSG_RESULT(no)
3160 AC_LANG_CPLUSPLUS
3162 dnl Check for usable char16_t (2 bytes, unsigned)
3163 dnl (we might not need the unsignedness check anymore)
3164 AC_CACHE_CHECK(for usable char16_t (2 bytes, unsigned),
3165     ac_cv_have_usable_char16_t,
3166     [AC_TRY_COMPILE([$configure_static_assert_macros],
3167                     [CONFIGURE_STATIC_ASSERT(sizeof(char16_t) == 2);
3168                      CONFIGURE_STATIC_ASSERT(char16_t(-1) > char16_t(0));
3169                      CONFIGURE_STATIC_ASSERT(sizeof((u"hello")[0]) == 2);
3170                      CONFIGURE_STATIC_ASSERT(sizeof(u'a') == 2);
3171                      CONFIGURE_STATIC_ASSERT(u'\xFFFF' > u'\x0')],
3172                     ac_cv_have_usable_char16_t="yes",
3173                     ac_cv_have_usable_char16_t="no")])
3174 if test "$ac_cv_have_usable_char16_t" = "yes"; then
3175     AC_DEFINE(HAVE_CPP_CHAR16_T)
3176     HAVE_CPP_CHAR16_T=1
3179 dnl Check for usable wchar_t (2 bytes, unsigned)
3180 dnl (we really don't need the unsignedness check anymore)
3181 dnl ========================================================
3183 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
3184     ac_cv_have_usable_wchar_v2,
3185     [AC_TRY_COMPILE([#include <stddef.h>
3186                      $configure_static_assert_macros],
3187                     [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
3188                      CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
3189                     ac_cv_have_usable_wchar_v2="yes",
3190                     ac_cv_have_usable_wchar_v2="no")])
3191 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
3192     AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
3193     HAVE_CPP_2BYTE_WCHAR_T=1
3194 elif test "$ac_cv_have_usable_char16_t" != "yes"; then
3195 dnl This is really gcc-only
3196 dnl Do this test using CXX only since some versions of gcc
3197 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
3198 dnl only have short-wchar support for c++.
3199 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
3201     _SAVE_CXXFLAGS=$CXXFLAGS
3202     CXXFLAGS="$CXXFLAGS -fshort-wchar"
3204     AC_CACHE_CHECK(for compiler -fshort-wchar option, 
3205         ac_cv_have_usable_wchar_option_v2,
3206         [AC_TRY_LINK([#include <stddef.h>
3207                       $configure_static_assert_macros],
3208                      [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
3209                       CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
3210                      ac_cv_have_usable_wchar_option_v2="yes",
3211                      ac_cv_have_usable_wchar_option_v2="no")])
3213     if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
3214         AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
3215         HAVE_CPP_2BYTE_WCHAR_T=1
3216         WCHAR_CFLAGS="-fshort-wchar"
3217     else    
3218         CXXFLAGS=$_SAVE_CXXFLAGS
3219     fi
3222 AC_LANG_C
3224 dnl Check for .hidden assembler directive and visibility attribute.
3225 dnl Borrowed from glibc configure.in
3226 dnl ===============================================================
3227 if test "$GNU_CC"; then
3228   AC_CACHE_CHECK(for visibility(hidden) attribute,
3229                  ac_cv_visibility_hidden,
3230                  [cat > conftest.c <<EOF
3231                   int foo __attribute__ ((visibility ("hidden"))) = 1;
3233                   ac_cv_visibility_hidden=no
3234                   if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3235                     if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
3236                       ac_cv_visibility_hidden=yes
3237                     fi
3238                   fi
3239                   rm -f conftest.[cs]
3240                  ])
3241   if test "$ac_cv_visibility_hidden" = "yes"; then
3242     AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
3244     AC_CACHE_CHECK(for visibility(default) attribute,
3245                    ac_cv_visibility_default,
3246                    [cat > conftest.c <<EOF
3247                     int foo __attribute__ ((visibility ("default"))) = 1;
3249                     ac_cv_visibility_default=no
3250                     if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3251                       if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
3252                         ac_cv_visibility_default=yes
3253                       fi
3254                     fi
3255                     rm -f conftest.[cs]
3256                    ])
3257     if test "$ac_cv_visibility_default" = "yes"; then
3258       AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
3260       AC_CACHE_CHECK(for visibility pragma support,
3261                      ac_cv_visibility_pragma,
3262                      [cat > conftest.c <<EOF
3263 #pragma GCC visibility push(hidden)
3264                       int foo_hidden = 1;
3265 #pragma GCC visibility push(default)
3266                       int foo_default = 1;
3268                       ac_cv_visibility_pragma=no
3269                       if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3270                         if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
3271                           if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
3272                             ac_cv_visibility_pragma=yes
3273                           fi
3274                         fi
3275                       fi
3276                       rm -f conftest.[cs]
3277                     ])
3278       if test "$ac_cv_visibility_pragma" = "yes"; then
3279         AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
3280                        ac_cv_have_visibility_class_bug,
3281                        [cat > conftest.c <<EOF
3282 #pragma GCC visibility push(hidden)
3283 struct __attribute__ ((visibility ("default"))) TestStruct {
3284   static void Init();
3286 __attribute__ ((visibility ("default"))) void TestFunc() {
3287   TestStruct::Init();
3290                        ac_cv_have_visibility_class_bug=no
3291                        if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
3292                          ac_cv_have_visibility_class_bug=yes
3293                        else
3294                          if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
3295                            ac_cv_have_visibility_class_bug=yes
3296                          fi
3297                        fi
3298                        rm -rf conftest.{c,S}
3299                        ])
3301         AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
3302                        ac_cv_have_visibility_builtin_bug,
3303                        [cat > conftest.c <<EOF
3304 #pragma GCC visibility push(hidden)
3305 #pragma GCC visibility push(default)
3306 #include <string.h>
3307 #pragma GCC visibility pop
3309 __attribute__ ((visibility ("default"))) void Func() {
3310   char c[[100]];
3311   memset(c, 0, sizeof(c));
3314                        ac_cv_have_visibility_builtin_bug=no
3315                        if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
3316                          ac_cv_have_visibility_builtin_bug=yes
3317                        else
3318                          if test `grep -c "@PLT" conftest.S` = 0; then
3319                            ac_cv_visibility_builtin_bug=yes
3320                          fi
3321                        fi
3322                        rm -f conftest.{c,S}
3323                        ])
3324         if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
3325                 "$ac_cv_have_visibility_class_bug" = "no"; then
3326           VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
3327           WRAP_SYSTEM_INCLUDES=1
3328           STL_FLAGS='-I$(DIST)/stl_wrappers'
3329           WRAP_STL_INCLUDES=1
3330         else
3331           VISIBILITY_FLAGS='-fvisibility=hidden'
3332         fi # have visibility pragma bug
3333       fi   # have visibility pragma
3334     fi     # have visibility(default) attribute
3335   fi       # have visibility(hidden) attribute
3336 fi         # GNU_CC
3338 # visibility hidden flag for Sun Studio on Solaris
3339 if test "$SOLARIS_SUNPRO_CC"; then
3340 VISIBILITY_FLAGS='-xldscope=hidden'
3341 fi         # Sun Studio on Solaris
3343 AC_SUBST(WRAP_SYSTEM_INCLUDES)
3344 AC_SUBST(VISIBILITY_FLAGS)
3346 dnl Check for __force_align_arg_pointer__ for SSE2 on gcc
3347 dnl ========================================================
3348 if test "$GNU_CC"; then
3349   CFLAGS_save="${CFLAGS}"
3350   CFLAGS="${CFLAGS} -Werror"
3351   AC_CACHE_CHECK(for __force_align_arg_pointer__ attribute,
3352                  ac_cv_force_align_arg_pointer,
3353                  [AC_TRY_COMPILE([__attribute__ ((__force_align_arg_pointer__)) void test() {}],
3354                                  [],
3355                                  ac_cv_force_align_arg_pointer="yes",
3356                                  ac_cv_force_align_arg_pointer="no")])
3357   CFLAGS="${CFLAGS_save}"
3358   if test "$ac_cv_force_align_arg_pointer" = "yes"; then
3359     HAVE_GCC_ALIGN_ARG_POINTER=1
3360   else
3361     HAVE_GCC_ALIGN_ARG_POINTER=
3362   fi
3364 AC_SUBST(HAVE_GCC_ALIGN_ARG_POINTER)
3366 dnl Checks for header files.
3367 dnl ========================================================
3368 AC_HEADER_DIRENT
3369 case "$target_os" in
3370 freebsd*)
3371 # for stuff like -lXshm
3372     CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
3373     ;;
3374 esac
3375 AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
3376 AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
3377 AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
3378 AC_CHECK_HEADERS(malloc.h)
3379 AC_CHECK_HEADERS(X11/XKBlib.h)
3380 AC_CHECK_HEADERS(io.h)
3382 dnl These are all the places some variant of statfs can be hiding.
3383 AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
3385 dnl Quota support
3386 AC_CHECK_HEADERS(sys/quota.h)
3388 dnl Try for MMX support
3389 dnl NB - later gcc versions require -mmmx for this header to be successfully
3390 dnl included (or another option which implies it, such as -march=pentium-mmx)
3391 AC_CHECK_HEADERS(mmintrin.h)
3393 dnl Check whether the compiler supports the new-style C++ standard
3394 dnl library headers (i.e. <new>) or needs the old "new.h"
3395 AC_LANG_CPLUSPLUS
3396 NEW_H=new.h
3397 AC_CHECK_HEADER(new, [NEW_H=new])
3398 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
3399 AC_LANG_C
3401 AC_ARG_ENABLE(dtrace,
3402               [  --enable-dtrace         build with dtrace support if available (default=no)],
3403               [enable_dtrace="yes"],)
3404 if test "x$enable_dtrace" = "xyes"; then
3405   AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
3406   if test -n "$HAVE_DTRACE"; then
3407       AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
3408   else
3409       AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
3410   fi
3412 AC_SUBST(HAVE_DTRACE)
3414 case $target in
3415 *-aix4.3*|*-aix5*)
3416         ;;
3418         AC_CHECK_HEADERS(sys/cdefs.h)
3419         ;;
3420 esac
3422 dnl Checks for libraries.
3423 dnl ========================================================
3424 case $target in
3425 *-hpux11.*)
3426         ;;
3428         AC_CHECK_LIB(c_r, gethostbyname_r)
3429         ;;
3430 esac
3432 dnl We don't want to link with libdl even if it's present on OS X, since
3433 dnl it's not used and not part of the default installation.
3434 dnl The same goes for BeOS. OS/2 has dlfcn in libc.
3435 dnl We don't want to link against libm or libpthread on Darwin since
3436 dnl they both are just symlinks to libSystem and explicitly linking
3437 dnl against libSystem causes issues when debugging (see bug 299601).
3438 case $target in
3439 *-darwin*)
3440     ;;
3441 *-beos*)
3442     ;;
3443 *-os2*)
3444     ;;
3446     AC_CHECK_LIB(m, atan)
3447     AC_CHECK_LIB(dl, dlopen,
3448     AC_CHECK_HEADER(dlfcn.h, 
3449         LIBS="-ldl $LIBS"
3450         AC_DEFINE(HAVE_LIBDL)))
3451     ;;
3452 esac
3454 _SAVE_CFLAGS="$CFLAGS"
3455 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3456 AC_CHECK_FUNCS(dladdr)
3457 CFLAGS="$_SAVE_CFLAGS"
3459 if test ! "$GNU_CXX"; then
3461     case $target in
3462     *-aix*)
3463         AC_CHECK_LIB(C_r, demangle)
3464         ;;
3465      *)
3466         AC_CHECK_LIB(C, demangle)
3467         ;;
3468      esac
3471 dnl OS/2 has socket in libc.
3472 case $target in
3473 *-os2*)
3474     ;;
3476     AC_CHECK_LIB(socket, socket)
3477 esac
3479 dnl ========================================================
3480 dnl Check whether we can compile code for Core Text
3481 dnl (available on Mac OS X 10.5 or later)
3482 dnl ========================================================
3483 case "$target" in
3484 *-darwin*)
3485   AC_MSG_CHECKING([for Core Text])
3486   AC_TRY_COMPILE([#include <ApplicationServices/ApplicationServices.h>],
3487                  [CTLineRef lineRef;],
3488                   ac_cv_have_core_text="yes",
3489                   ac_cv_have_core_text="no")
3490   AC_MSG_RESULT([$ac_cv_have_core_text])
3492   if test "$ac_cv_have_core_text" = "no"; then
3493     AC_MSG_ERROR([Core Text is required (available on Mac OS X 10.5 or later).])
3494   fi
3495   ;;
3496 esac
3498 XLDFLAGS="$X_LIBS"
3499 XLIBS="$X_EXTRA_LIBS"
3501 dnl ========================================================
3502 dnl Checks for X libraries.
3503 dnl Ordering is important.
3504 dnl Xt is dependent upon SM as of X11R6
3505 dnl ========================================================
3506 if test "$no_x" = "yes"; then
3507     AC_DEFINE(NO_X11)
3508 else
3509     AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3510         XLIBS="-lX11 $XLIBS"
3511         _SAVE_LDFLAGS="$LDFLAGS"
3512         LDFLAGS="$XLDFLAGS $LDFLAGS"
3513         AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3514                 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3515         AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3516                 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3517      
3518         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3519         unset ac_cv_lib_Xt_XtFree
3520             AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3521             AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS) 
3522         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3523                     [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3524         ])
3526     # AIX needs the motif library linked before libXt to prevent
3527     # crashes in plugins linked against Motif - Bug #98892
3528     case "${target_os}" in
3529     aix*)
3530         XT_LIBS="-lXm $XT_LIBS"
3531         ;;
3532     esac
3534     dnl ========================================================
3535     dnl = Check for XShm
3536     dnl ========================================================
3537     AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3538         $XLIBS $XEXT_LIBS)
3539     AC_CHECK_HEADER(X11/extensions/XShm.h)
3540     if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" &&
3541         test -n "$_HAVE_XSHM_XEXT"; then
3542         AC_DEFINE(HAVE_XSHM)
3543     fi
3545     dnl ========================================================
3546     dnl = Check for XIE
3547     dnl ========================================================
3548     AC_CHECK_LIB(XIE, XieFloGeometry, [MOZ_XIE_LIBS="-lXIE"],,
3549         $XLIBS $XEXT_LIBS)
3550     AC_CHECK_HEADER(X11/extensions/XIElib.h)
3552     if test "$MOZ_XIE_LIBS"; then
3553         dnl ====================================================
3554         dnl = If XIE is present and is desired, turn it on
3555         dnl ====================================================
3556         case $target in
3557             *-hpux*)
3558                 ;;
3559             *)
3560                 HAVE_XIE=1
3561                 ;;
3562         esac
3563     fi
3565         LDFLAGS="$_SAVE_LDFLAGS"
3567     dnl ========================================================
3568     dnl = Check for freetype2 and its functionality
3569     dnl ========================================================
3570     AC_CHECK_FT2(6.1.0, [_HAVE_FREETYPE2=1], [_HAVE_FREETYPE2=])
3572     if test "$_HAVE_FREETYPE2"; then
3573         _SAVE_LIBS="$LIBS"
3574         _SAVE_CFLAGS="$CFLAGS"
3575         LIBS="$LIBS $FT2_LIBS"
3576         CFLAGS="$CFLAGS $FT2_CFLAGS"
3578         AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
3579             ac_cv_member_FT_Bitmap_Size_y_ppem,
3580             [AC_TRY_COMPILE([#include <ft2build.h>
3581                              #include FT_FREETYPE_H],
3582                             [FT_Bitmap_Size s;
3583                              if (sizeof s.y_ppem) return 0;
3584                              return 1],
3585                             ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
3586                             ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
3587         if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
3588             HAVE_FT_BITMAP_SIZE_Y_PPEM=1
3589         else
3590             HAVE_FT_BITMAP_SIZE_Y_PPEM=0
3591         fi
3592         AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
3593                            $HAVE_FT_BITMAP_SIZE_Y_PPEM,
3594                            [FT_Bitmap_Size structure includes y_ppem field])
3596         AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
3598         LIBS="$_SAVE_LIBS"
3599         CFLAGS="$_SAVE_CFLAGS"
3600     fi
3602 fi # $no_x
3604 AC_SUBST(XCFLAGS)
3605 AC_SUBST(XLDFLAGS)
3606 AC_SUBST(XLIBS)
3607 AC_SUBST(XEXT_LIBS)
3608 AC_SUBST(XT_LIBS)
3610 AC_MSG_CHECKING(for ARM SIMD support in compiler)
3611 AC_TRY_COMPILE([],
3612                [asm("uqadd8 r1, r1, r2");],
3613                result="yes", result="no")
3614 AC_MSG_RESULT("$result")
3615 if test "$result" = "yes"; then
3616     AC_DEFINE(HAVE_ARM_SIMD)
3617     HAVE_ARM_SIMD=1
3619 AC_SUBST(HAVE_ARM_SIMD)
3621 AC_MSG_CHECKING(for ARM NEON support in compiler)
3622 _SAVE_CFLAGS="$CFLAGS"
3623 if test "$GNU_CC"; then
3624   # gcc needs -mfpu=neon to recognize NEON instructions
3625   CFLAGS="$CFLAGS -mfpu=neon -mfloat-abi=softfp"
3627 AC_TRY_COMPILE([],
3628                [asm("vadd.i8 d0, d0, d0");],
3629                result="yes", result="no")
3630 AC_MSG_RESULT("$result")
3631 if test "$result" = "yes"; then
3632     AC_DEFINE(HAVE_ARM_NEON)
3633     HAVE_ARM_NEON=1
3635 CFLAGS="$_SAVE_CFLAGS"
3636 AC_SUBST(HAVE_ARM_NEON)
3638 dnl ========================================================
3639 dnl = pthread support
3640 dnl = Start by checking whether the system support pthreads
3641 dnl ========================================================
3642 case "$target_os" in
3643 darwin*)
3644     USE_PTHREADS=1
3645     ;;
3647     MOZ_CHECK_PTHREADS(pthreads,
3648         USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3649         MOZ_CHECK_PTHREADS(pthread,
3650             USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3651             MOZ_CHECK_PTHREADS(c_r,
3652                 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3653                 MOZ_CHECK_PTHREADS(c,
3654                     USE_PTHREADS=1
3655                 )
3656             )
3657         )
3658     )
3659     ;;
3660 esac
3662 dnl ========================================================
3663 dnl Check the command line for --with-pthreads 
3664 dnl ========================================================
3665 MOZ_ARG_WITH_BOOL(pthreads,
3666 [  --with-pthreads         Force use of system pthread library with NSPR ],
3667 [ if test "$USE_PTHREADS"x = x; then
3668     AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3669 fi],
3670     USE_PTHREADS=
3671     _PTHREAD_LDFLAGS=
3674 dnl ========================================================
3675 dnl Do the platform specific pthread hackery
3676 dnl ========================================================
3677 if test "$USE_PTHREADS"x != x
3678 then
3679         dnl
3680         dnl See if -pthread is supported.
3681         dnl
3682         rm -f conftest*
3683         ac_cv_have_dash_pthread=no
3684         AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3685         echo 'int main() { return 0; }' | cat > conftest.c
3686         ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3687         if test $? -eq 0; then
3688                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3689                         ac_cv_have_dash_pthread=yes
3690                 case "$target_os" in
3691                 freebsd*)
3692 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3693                 ;;
3694                 *)
3695                             CFLAGS="$CFLAGS -pthread"
3696                             CXXFLAGS="$CXXFLAGS -pthread"
3697                 ;;
3698                 esac
3699                 fi
3700         fi
3701         rm -f conftest*
3702     AC_MSG_RESULT($ac_cv_have_dash_pthread)
3704         dnl
3705         dnl See if -pthreads is supported.
3706         dnl
3707     ac_cv_have_dash_pthreads=no
3708     if test "$ac_cv_have_dash_pthread" = "no"; then
3709             AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3710         echo 'int main() { return 0; }' | cat > conftest.c
3711             ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3712         if test $? -eq 0; then
3713                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3714                             ac_cv_have_dash_pthreads=yes
3715                             CFLAGS="$CFLAGS -pthreads"
3716                             CXXFLAGS="$CXXFLAGS -pthreads"
3717                     fi
3718             fi
3719             rm -f conftest*
3720         AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3721     fi
3723         case "$target" in
3724             *-*-freebsd*)
3725                         AC_DEFINE(_REENTRANT)
3726                         AC_DEFINE(_THREAD_SAFE)
3727                         dnl -pthread links in -lc_r, so don't specify it explicitly.
3728                         if test "$ac_cv_have_dash_pthread" = "yes"; then
3729                                 _PTHREAD_LDFLAGS="-pthread"
3730                         else
3731                                 _PTHREAD_LDFLAGS="-lc_r"
3732                         fi
3733                         ;;
3735             *-*-openbsd*|*-*-bsdi*)
3736                         AC_DEFINE(_REENTRANT)
3737                         AC_DEFINE(_THREAD_SAFE)
3738                         dnl -pthread links in -lc_r, so don't specify it explicitly.
3739                         if test "$ac_cv_have_dash_pthread" = "yes"; then
3740                 _PTHREAD_LDFLAGS="-pthread"
3741                         fi
3742                         ;;
3744             *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
3745                         AC_DEFINE(_REENTRANT) 
3746                         ;;
3748             *-*-nto*) 
3749                         AC_DEFINE(_REENTRANT) 
3750                         ;;
3752             *-aix4.3*|*-aix5*)
3753                         AC_DEFINE(_REENTRANT) 
3754                         ;;
3756             *-hpux11.*)
3757                         AC_DEFINE(_REENTRANT) 
3758                         ;;
3760             alpha*-*-osf*)
3761                         AC_DEFINE(_REENTRANT)
3762                         ;;
3764             *-*-solaris*) 
3765                         AC_DEFINE(_REENTRANT)
3766                         if test "$SOLARIS_SUNPRO_CC"; then
3767                                 CFLAGS="$CFLAGS -mt" 
3768                                 CXXFLAGS="$CXXFLAGS -mt" 
3769                         fi
3770                         ;;
3771         esac
3772     LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3775 dnl ========================================================
3776 dnl See if mmap sees writes
3777 dnl For cross compiling, just define it as no, which is a safe default
3778 dnl ========================================================
3779 AC_MSG_CHECKING(whether mmap() sees write()s)
3781 changequote(,)
3782 mmap_test_prog='
3783     #include <stdlib.h>
3784     #include <unistd.h>
3785     #include <sys/mman.h>
3786     #include <sys/types.h>
3787     #include <sys/stat.h>
3788     #include <fcntl.h>
3790     char fname[] = "conftest.file";
3791     char zbuff[1024]; /* Fractional page is probably worst case */
3793     int main() {
3794         char *map;
3795         int fd;
3796         int i;
3797         unlink(fname);
3798         fd = open(fname, O_RDWR | O_CREAT, 0660);
3799         if(fd<0) return 1;
3800         unlink(fname);
3801         write(fd, zbuff, sizeof(zbuff));
3802         lseek(fd, 0, SEEK_SET);
3803         map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
3804         if(map==(char*)-1) return 2;
3805         for(i=0; fname[i]; i++) {
3806             int rc = write(fd, &fname[i], 1);
3807             if(map[i]!=fname[i]) return 4;
3808         }
3809         return 0;
3810     }
3812 changequote([,])
3814 AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
3816 AC_MSG_RESULT("$result")
3818 if test "$result" = "no"; then
3819     AC_DEFINE(MMAP_MISSES_WRITES)
3823 dnl Checks for library functions.
3824 dnl ========================================================
3825 AC_PROG_GCC_TRADITIONAL
3826 AC_FUNC_MEMCMP
3827 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 truncate64 statvfs64 setbuf isatty)
3828 AC_CHECK_FUNCS(flockfile getpagesize)
3829 AC_CHECK_FUNCS(localtime_r strtok_r)
3831 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock, and -lrt
3832 _SAVE_LDFLAGS=$LDFLAGS
3833 LDFLAGS="$LDFLAGS -lrt"
3834 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC) and -lrt,
3835                ac_cv_have_clock_monotonic,
3836                [AC_TRY_LINK([#include <time.h>],
3837                             [ struct timespec ts;
3838                               clock_gettime(CLOCK_MONOTONIC, &ts); ],
3839                             ac_cv_have_clock_monotonic=yes,
3840                             ac_cv_have_clock_monotonic=no)])
3841 LDFLAGS=$_SAVE_LDFLAGS
3842 if test "$ac_cv_have_clock_monotonic" = "yes"; then
3843     HAVE_CLOCK_MONOTONIC=1
3844     REALTIME_LIBS=-lrt
3845     AC_DEFINE(HAVE_CLOCK_MONOTONIC)
3846     AC_SUBST(HAVE_CLOCK_MONOTONIC)
3847     AC_SUBST(REALTIME_LIBS)
3850 dnl check for wcrtomb/mbrtowc
3851 dnl =======================================================================
3852 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3853 AC_LANG_SAVE
3854 AC_LANG_CPLUSPLUS
3855 AC_CACHE_CHECK(for wcrtomb,
3856     ac_cv_have_wcrtomb,
3857     [AC_TRY_LINK([#include <wchar.h>],
3858                  [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3859                  ac_cv_have_wcrtomb="yes",
3860                  ac_cv_have_wcrtomb="no")])
3861 if test "$ac_cv_have_wcrtomb" = "yes"; then
3862     AC_DEFINE(HAVE_WCRTOMB)
3864 AC_CACHE_CHECK(for mbrtowc,
3865     ac_cv_have_mbrtowc,
3866     [AC_TRY_LINK([#include <wchar.h>],
3867                  [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3868                  ac_cv_have_mbrtowc="yes",
3869                  ac_cv_have_mbrtowc="no")])
3870 if test "$ac_cv_have_mbrtowc" = "yes"; then
3871     AC_DEFINE(HAVE_MBRTOWC)
3873 AC_LANG_RESTORE
3876 AC_CACHE_CHECK(
3877     [for res_ninit()],
3878     ac_cv_func_res_ninit,
3879     [AC_TRY_LINK([
3880         #ifdef linux
3881         #define _BSD_SOURCE 1
3882         #endif
3883         #include <resolv.h>
3884         ],
3885         [int foo = res_ninit(&_res);],
3886         [ac_cv_func_res_ninit=yes],
3887         [ac_cv_func_res_ninit=no])
3888     ])
3890 if test "$ac_cv_func_res_ninit" = "yes"; then
3891     AC_DEFINE(HAVE_RES_NINIT)
3892 dnl must add the link line we do something as foolish as this... dougt
3893 dnl else
3894 dnl    AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3895 dnl        AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3898 AC_LANG_CPLUSPLUS
3899 AC_CACHE_CHECK(
3900     [for gnu_get_libc_version()],
3901     ac_cv_func_gnu_get_libc_version,
3902     [AC_TRY_LINK([
3903         #ifdef HAVE_GNU_LIBC_VERSION_H
3904         #include <gnu/libc-version.h>
3905         #endif
3906         ],
3907         [const char *glibc_version = gnu_get_libc_version();],
3908         [ac_cv_func_gnu_get_libc_version=yes],
3909         [ac_cv_func_gnu_get_libc_version=no] 
3910         )]
3911     )
3913 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3914     AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3917 case $target_os in
3918     os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|winmo*|beos*)
3919         ;;
3920     *)
3921     
3922 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3923     AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3924         AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3925 _SAVE_LIBS=$LIBS
3926 LIBS="$LIBS $_ICONV_LIBS"
3927 AC_CACHE_CHECK(
3928     [for iconv()],
3929     ac_cv_func_iconv,
3930     [AC_TRY_LINK([
3931         #include <stdlib.h>
3932         #include <iconv.h>
3933         ],
3934         [
3935             iconv_t h = iconv_open("", "");
3936             iconv(h, NULL, NULL, NULL, NULL);
3937             iconv_close(h);
3938         ],
3939         [ac_cv_func_iconv=yes],
3940         [ac_cv_func_iconv=no] 
3941         )]
3942     )
3943 if test "$ac_cv_func_iconv" = "yes"; then
3944     AC_DEFINE(HAVE_ICONV)
3945     DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3946     LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3947     LIBICONV="$_ICONV_LIBS"
3948     AC_CACHE_CHECK(
3949         [for iconv() with const input],
3950         ac_cv_func_const_iconv,
3951         [AC_TRY_COMPILE([
3952             #include <stdlib.h>
3953             #include <iconv.h>
3954             ],
3955             [
3956                 const char *input = "testing";
3957                 iconv_t h = iconv_open("", "");
3958                 iconv(h, &input, NULL, NULL, NULL);
3959                 iconv_close(h);
3960             ],
3961             [ac_cv_func_const_iconv=yes],
3962             [ac_cv_func_const_iconv=no] 
3963             )]
3964         )
3965     if test "$ac_cv_func_const_iconv" = "yes"; then
3966         AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3967     fi
3969 LIBS=$_SAVE_LIBS
3971     ;;
3972 esac
3974 AM_LANGINFO_CODESET
3976 AC_LANG_C
3978 dnl **********************
3979 dnl *** va_copy checks ***
3980 dnl **********************
3981 dnl we currently check for all three va_copy possibilities, so we get
3982 dnl all results in config.log for bug reports.
3983 AC_MSG_CHECKING(for an implementation of va_copy())
3984 AC_CACHE_VAL(ac_cv_va_copy,[
3985     AC_TRY_RUN([
3986         #include <stdarg.h>
3987         void f (int i, ...) {
3988             va_list args1, args2;
3989             va_start (args1, i);
3990             va_copy (args2, args1);
3991             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3992                 exit (1);
3993             va_end (args1); va_end (args2);
3994         }
3995         int main() { f (0, 42); return 0; }],
3996         ac_cv_va_copy=yes,
3997         ac_cv_va_copy=no,
3998         ac_cv_va_copy=no
3999     )
4001 AC_MSG_RESULT($ac_cv_va_copy)
4002 AC_MSG_CHECKING(for an implementation of __va_copy())
4003 AC_CACHE_VAL(ac_cv___va_copy,[
4004     AC_TRY_RUN([
4005         #include <stdarg.h>
4006         void f (int i, ...) {
4007             va_list args1, args2;
4008             va_start (args1, i);
4009             __va_copy (args2, args1);
4010             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
4011                 exit (1);
4012             va_end (args1); va_end (args2);
4013         }
4014         int main() { f (0, 42); return 0; }],
4015         ac_cv___va_copy=yes,
4016         ac_cv___va_copy=no,
4017         ac_cv___va_copy=no
4018     )
4020 AC_MSG_RESULT($ac_cv___va_copy)
4021 AC_MSG_CHECKING(whether va_lists can be copied by value)
4022 AC_CACHE_VAL(ac_cv_va_val_copy,[
4023     AC_TRY_RUN([
4024         #include <stdarg.h>
4025         void f (int i, ...) {
4026             va_list args1, args2;
4027             va_start (args1, i);
4028             args2 = args1;
4029             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
4030                 exit (1);
4031             va_end (args1); va_end (args2);
4032         }
4033         int main() { f (0, 42); return 0; }],
4034         ac_cv_va_val_copy=yes,
4035         ac_cv_va_val_copy=no,
4036         ac_cv_va_val_copy=yes
4037     )
4039 if test "x$ac_cv_va_copy" = "xyes"; then
4040     AC_DEFINE(VA_COPY, va_copy)
4041     AC_DEFINE(HAVE_VA_COPY)
4042 elif test "x$ac_cv___va_copy" = "xyes"; then
4043     AC_DEFINE(VA_COPY, __va_copy)
4044     AC_DEFINE(HAVE_VA_COPY)
4047 if test "x$ac_cv_va_val_copy" = "xno"; then
4048    AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
4050 AC_MSG_RESULT($ac_cv_va_val_copy)
4052 dnl Check for dll-challenged libc's.
4053 dnl This check is apparently only needed for Linux.
4054 case "$target" in
4055         *-linux*)
4056             dnl ===================================================================
4057             _curdir=`pwd`
4058             export _curdir
4059             rm -rf conftest* _conftest
4060             mkdir _conftest
4061             cat >> conftest.C <<\EOF
4062 #include <stdio.h>
4063 #include <link.h>
4064 #include <dlfcn.h>
4065 #ifdef _dl_loaded
4066 void __dump_link_map(void) {
4067   struct link_map *map = _dl_loaded;
4068   while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
4070 int main() {
4071   dlopen("./conftest1.so",RTLD_LAZY);
4072   dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
4073   dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
4074   dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
4075   __dump_link_map();
4077 #else
4078 /* _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).*/
4079 int main() { printf("./conftest1.so\n"); }
4080 #endif
4083             $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
4085             cat >> conftest1.C <<\EOF
4086 #include <stdio.h>
4087 void foo(void) {printf("foo in dll called\n");}
4089             ${CXX-g++} -fPIC -c -g conftest1.C
4090             ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
4091             ${CXX-g++} -g conftest.C -o conftest -ldl
4092             cp -f conftest1.so conftest _conftest
4093             cd _conftest
4094             if test `./conftest | grep conftest1.so | wc -l` -gt 1
4095             then
4096                 echo
4097                 echo "*** Your libc has a bug that can result in loading the same dynamic"
4098                 echo "*** library multiple times.  This bug is known to be fixed in glibc-2.0.7-32"
4099                 echo "*** or later.  However, if you choose not to upgrade, the only effect"
4100                 echo "*** will be excessive memory usage at runtime."
4101                 echo
4102             fi
4103             cd ${_curdir}
4104             rm -rf conftest* _conftest
4105             dnl ===================================================================
4106             ;;
4107 esac
4109 dnl ===================================================================
4110 dnl ========================================================
4111 dnl By default, turn rtti and exceptions off on g++/egcs
4112 dnl ========================================================
4113 if test "$GNU_CXX"; then
4115   AC_MSG_CHECKING(for C++ exceptions flag)
4117   dnl They changed -f[no-]handle-exceptions to -f[no-]exceptions in g++ 2.8
4118   AC_CACHE_VAL(ac_cv_cxx_exceptions_flags,
4119   [echo "int main() { return 0; }" | cat > conftest.C
4121   ${CXX-g++} ${CXXFLAGS} -c -fno-handle-exceptions conftest.C > conftest.out 2>&1
4123   if egrep "warning.*renamed" conftest.out >/dev/null; then
4124     ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-exceptions
4125   else
4126     ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-handle-exceptions
4127   fi
4129   rm -f conftest*])
4131   AC_MSG_RESULT($ac_cv_cxx_exceptions_flags)
4132   _MOZ_EXCEPTIONS_FLAGS_OFF=$ac_cv_cxx_exceptions_flags
4133   _MOZ_EXCEPTIONS_FLAGS_ON=`echo $ac_cv_cxx_exceptions_flags | sed 's|no-||'`
4136 dnl ========================================================
4137 dnl Put your C++ language/feature checks below
4138 dnl ========================================================
4139 AC_LANG_CPLUSPLUS
4141 ARM_ABI_PREFIX=
4142 HAVE_GCC3_ABI=
4143 if test "$GNU_CC"; then
4144   if test "$CPU_ARCH" = "arm" ; then
4145     AC_CACHE_CHECK(for ARM EABI,
4146         ac_cv_gcc_arm_eabi,
4147         [AC_TRY_COMPILE([],
4148                         [
4149 #if defined(__ARM_EABI__)
4150   return 0;
4151 #else
4152 #error Not ARM EABI.
4153 #endif
4154                         ],
4155                         ac_cv_gcc_arm_eabi="yes",
4156                         ac_cv_gcc_arm_eabi="no")])
4157     if test "$ac_cv_gcc_arm_eabi" = "yes"; then
4158         HAVE_ARM_EABI=1
4159         ARM_ABI_PREFIX=eabi-
4160     else
4161         ARM_ABI_PREFIX=oabi-
4162     fi
4163   fi
4165   AC_CACHE_CHECK(for gcc 3.0 ABI,
4166       ac_cv_gcc_three_abi,
4167       [AC_TRY_COMPILE([],
4168                       [
4169 #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
4170   return 0;
4171 #else
4172 #error Not gcc3.
4173 #endif
4174                       ],
4175                       ac_cv_gcc_three_abi="yes",
4176                       ac_cv_gcc_three_abi="no")])
4177   if test "$ac_cv_gcc_three_abi" = "yes"; then
4178       TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
4179       HAVE_GCC3_ABI=1
4180   else
4181       TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc2}"
4182   fi
4184 AC_SUBST(HAVE_GCC3_ABI)
4187 AC_CACHE_CHECK(for C++ \"explicit\" keyword,
4188                ac_cv_cpp_explicit,
4189                [AC_TRY_COMPILE(class X {
4190                                public: explicit X(int i) : i_(i) {}
4191                                private: int i_;
4192                                };,
4193                                X x(3);,
4194                                ac_cv_cpp_explicit=yes,
4195                                ac_cv_cpp_explicit=no)])
4196 if test "$ac_cv_cpp_explicit" = yes ; then
4197    AC_DEFINE(HAVE_CPP_EXPLICIT)
4200 AC_CACHE_CHECK(for C++ \"typename\" keyword,
4201                ac_cv_cpp_typename,
4202                [AC_TRY_COMPILE(class param {
4203                                public:
4204                                    typedef unsigned long num_type;
4205                                };
4207                                template <class T> class tplt {
4208                                public:
4209                                    typedef typename T::num_type t_num_type;
4210                                    t_num_type foo(typename T::num_type num) {
4211                                        return num;
4212                                    }
4213                                };,
4214                                tplt<param> A;
4215                                A.foo(0);,
4216                                ac_cv_cpp_typename=yes,
4217                                ac_cv_cpp_typename=no)])
4218 if test "$ac_cv_cpp_typename" = yes ; then
4219    AC_DEFINE(HAVE_CPP_TYPENAME)
4222 dnl Check for support of modern template specialization syntax
4223 dnl Test code and requirement from scc@netscape.com.
4224 dnl Autoconf cut-and-paste job by waterson@netscape.com
4225 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
4226                ac_cv_cpp_modern_specialize_template_syntax,
4227                [AC_TRY_COMPILE(template <class T> struct X { int a; };
4228                                class Y {};
4229                                template <> struct X<Y> { double a; };,
4230                                X<int> int_x;
4231                                X<Y> y_x;,
4232                                ac_cv_cpp_modern_specialize_template_syntax=yes,
4233                                ac_cv_cpp_modern_specialize_template_syntax=no)])
4234 if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
4235   AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
4239 dnl Some compilers support only full specialization, and some don't.
4240 AC_CACHE_CHECK(whether partial template specialization works,
4241                ac_cv_cpp_partial_specialization,
4242                [AC_TRY_COMPILE(template <class T> class Foo {};
4243                                template <class T> class Foo<T*> {};,
4244                                return 0;,
4245                                ac_cv_cpp_partial_specialization=yes,
4246                                ac_cv_cpp_partial_specialization=no)])
4247 if test "$ac_cv_cpp_partial_specialization" = yes ; then
4248   AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
4251 dnl Some compilers have limited support for operators with templates;
4252 dnl specifically, it is necessary to define derived operators when a base
4253 dnl class's operator declaration should suffice.
4254 AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
4255                ac_cv_need_derived_template_operators,
4256                [AC_TRY_COMPILE([template <class T> class Base { };
4257                                 template <class T>
4258                                 Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
4259                                 template <class T> class Derived : public Base<T> { };],
4260                                [Derived<char> a, b;
4261                                 Base<char> c = a + b;
4262                                 return 0;],
4263                                ac_cv_need_derived_template_operators=no,
4264                                ac_cv_need_derived_template_operators=yes)])
4265 if test "$ac_cv_need_derived_template_operators" = yes ; then
4266   AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
4270 dnl Some compilers have trouble detecting that a template class
4271 dnl that derives from another template is actually an instance
4272 dnl of the base class. This test checks for that.
4273 AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
4274                ac_cv_need_cpp_template_cast_to_base,
4275                [AC_TRY_COMPILE([template <class T> class Base { };
4276                                 template <class T> class Derived : public Base<T> { };
4277                                 template <class T> int foo(const Base<T>&) { return 0; }],
4278                                [Derived<char> bar; return foo(bar);],
4279                                ac_cv_need_cpp_template_cast_to_base=no,
4280                                ac_cv_need_cpp_template_cast_to_base=yes)])
4281 if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
4282   AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
4285 dnl Some compilers have trouble resolving the ambiguity between two
4286 dnl functions whose arguments differ only by cv-qualifications.
4287 AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
4288                ac_cv_can_resolve_const_ambiguity,
4289                [AC_TRY_COMPILE([
4290                                 template <class T> class ptrClass {
4291                                   public: T* ptr;
4292                                 };
4294                                 template <class T> T* a(ptrClass<T> *arg) {
4295                                   return arg->ptr;
4296                                 }
4298                                 template <class T>
4299                                 const T* a(const ptrClass<T> *arg) {
4300                                   return arg->ptr;
4301                                 }
4302                                ],
4303                                [ ptrClass<int> i;
4304                                  a(&i); ],
4305                                ac_cv_can_resolve_const_ambiguity=yes,
4306                                ac_cv_can_resolve_const_ambiguity=no)])
4307 if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
4308   AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
4312 dnl We don't do exceptions on unix.  The only reason this used to be here
4313 dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses 
4314 dnl exceptions.  But, we turn exceptions off by default and this test breaks.
4315 dnl So im commenting this out until someone writes some artificial 
4316 dnl intelligence to detect not only if the compiler has exceptions, but if 
4317 dnl they are enabled as well.
4318 dnl 
4319 dnl AC_CACHE_CHECK(for C++ \"exceptions\",
4320 dnl                ac_cv_cpp_exceptions,
4321 dnl                [AC_TRY_COMPILE(class X { public: X() {} };
4322 dnl                                static void F() { throw X(); },
4323 dnl                                try { F(); } catch(X & e) { },
4324 dnl                                ac_cv_cpp_exceptions=yes,
4325 dnl                                ac_cv_cpp_exceptions=no)])
4326 dnl if test $ac_cv_cpp_exceptions = yes ; then
4327 dnl    AC_DEFINE(HAVE_CPP_EXCEPTIONS)
4328 dnl fi
4330 dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
4331 dnl supports it well enough to allow us to use it to change access, but not
4332 dnl to resolve ambiguity. The next two tests determine how well the |using|
4333 dnl keyword is supported.
4335 dnl Check to see if we can change access with |using|.  Test both a
4336 dnl legal and an illegal example.
4337 AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
4338                ac_cv_cpp_access_changing_using2,
4339                [AC_TRY_COMPILE(
4340                    class A { protected: int foo() { return 0; } };
4341                    class B : public A { public: using A::foo; };,
4342                    B b; return b.foo();,
4343                    [AC_TRY_COMPILE(
4344                        class A { public: int foo() { return 1; } };
4345                        class B : public A { private: using A::foo; };,
4346                        B b; return b.foo();,
4347                        ac_cv_cpp_access_changing_using2=no,
4348                        ac_cv_cpp_access_changing_using2=yes)],
4349                    ac_cv_cpp_access_changing_using2=no)])
4350 if test "$ac_cv_cpp_access_changing_using2" = yes ; then
4351    AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
4354 dnl Check to see if we can resolve ambiguity with |using|.
4355 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
4356                ac_cv_cpp_ambiguity_resolving_using,
4357                [AC_TRY_COMPILE(class X { 
4358                                  public: int go(const X&) {return 3;}
4359                                          int jo(const X&) {return 3;}
4360                                };
4361                                class Y : public X {
4362                                  public:  int go(int) {return 2;}
4363                                           int jo(int) {return 2;}
4364                                           using X::jo;
4365                                  private: using X::go;
4366                                };,
4367                                X x; Y y; y.jo(x);,
4368                                ac_cv_cpp_ambiguity_resolving_using=yes,
4369                                ac_cv_cpp_ambiguity_resolving_using=no)])
4370 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
4371    AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
4374 dnl Check to see if the |std| namespace is supported. If so, we'll want
4375 dnl to qualify any standard library calls with "std::" to ensure that
4376 dnl those functions can be resolved.
4377 AC_CACHE_CHECK(for \"std::\" namespace,
4378                ac_cv_cpp_namespace_std,
4379                [AC_TRY_COMPILE([#include <algorithm>],
4380                                [return std::min(0, 1);],
4381                                ac_cv_cpp_namespace_std=yes,
4382                                ac_cv_cpp_namespace_std=no)])
4383 if test "$ac_cv_cpp_namespace_std" = yes ; then
4384    AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
4387 dnl Older compilers are overly ambitious with respect to using the standard
4388 dnl template library's |operator!=()| when |operator==()| is defined. In
4389 dnl which case, defining |operator!=()| in addition to |operator==()| causes
4390 dnl ambiguity at compile-time. This test checks for that case.
4391 AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
4392                ac_cv_cpp_unambiguous_std_notequal,
4393                [AC_TRY_COMPILE([#include <algorithm>
4394                                 struct T1 {};
4395                                 int operator==(const T1&, const T1&) { return 0; }
4396                                 int operator!=(const T1&, const T1&) { return 0; }],
4397                                [T1 a,b; return a != b;],
4398                                ac_cv_cpp_unambiguous_std_notequal=unambiguous,
4399                                ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
4400 if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
4401   AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
4405 AC_CACHE_CHECK(for C++ reinterpret_cast,
4406                ac_cv_cpp_reinterpret_cast,
4407                [AC_TRY_COMPILE(struct X { int i; };
4408                                struct Y { int i; };,
4409                                X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
4410                                ac_cv_cpp_reinterpret_cast=yes,
4411                                ac_cv_cpp_reinterpret_cast=no)])
4412 if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
4413    AC_DEFINE(HAVE_CPP_NEW_CASTS)
4416 dnl See if a dynamic_cast to void* gives the most derived object.
4417 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
4418                ac_cv_cpp_dynamic_cast_void_ptr,
4419                [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
4420                             class Y { int j; public: virtual ~Y() { } };
4421                             class Z : public X, public Y { int k; };
4423                             int main() {
4424                                  Z mdo;
4425                                  X *subx = (X*)&mdo;
4426                                  Y *suby = (Y*)&mdo;
4427                                  return !((((void*)&mdo != (void*)subx) &&
4428                                            ((void*)&mdo == dynamic_cast<void*>(subx))) ||
4429                                           (((void*)&mdo != (void*)suby) &&
4430                                            ((void*)&mdo == dynamic_cast<void*>(suby))));
4431                             }],
4432                            ac_cv_cpp_dynamic_cast_void_ptr=yes,
4433                            ac_cv_cpp_dynamic_cast_void_ptr=no,
4434                            ac_cv_cpp_dynamic_cast_void_ptr=no)])
4435 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
4436    AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
4440 dnl note that this one is reversed - if the test fails, then
4441 dnl we require implementations of unused virtual methods. Which
4442 dnl really blows because it means we'll have useless vtable
4443 dnl bloat.
4444 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
4445                ac_cv_cpp_unused_required,
4446                [AC_TRY_LINK(class X {private: virtual void never_called();};,
4447                                X x;,
4448                                ac_cv_cpp_unused_required=no,
4449                                ac_cv_cpp_unused_required=yes)])
4450 if test "$ac_cv_cpp_unused_required" = yes ; then
4451    AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
4455 dnl Some compilers have trouble comparing a constant reference to a templatized
4456 dnl class to zero, and require an explicit operator==() to be defined that takes
4457 dnl an int. This test separates the strong from the weak.
4459 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
4460                ac_cv_trouble_comparing_to_zero,
4461                [AC_TRY_COMPILE([#include <algorithm>
4462                                 template <class T> class Foo {};
4463                                 class T2;
4464                                 template <class T> int operator==(const T2*, const T&) { return 0; }
4465                                 template <class T> int operator!=(const T2*, const T&) { return 0; }],
4466                                [Foo<int> f; return (0 != f);],
4467                                ac_cv_trouble_comparing_to_zero=no,
4468                                ac_cv_trouble_comparing_to_zero=yes)])
4469 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
4470   AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
4473 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
4474 _SAVE_LDFLAGS=$LDFLAGS
4475 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS"
4476 AC_CACHE_CHECK(for __thread keyword for TLS variables,
4477                ac_cv_thread_keyword,
4478                [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
4479                             [return tlsIsMainThread;],
4480                             ac_cv_thread_keyword=yes,
4481                             ac_cv_thread_keyword=no)])
4482 LDFLAGS=$_SAVE_LDFLAGS
4483 if test "$ac_cv_thread_keyword" = yes; then
4484   # mips builds fail with TLS variables because of a binutils bug.
4485   # See bug 528687
4486   case "${target}" in
4487     mips*-*)
4488       :
4489       ;;
4490     *-android*)
4491       :
4492       ;;
4493     *)
4494       AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
4495       ;;
4496   esac
4499 dnl Check for the existence of various allocation headers/functions
4501 MALLOC_H=
4502 AC_CHECK_HEADER(malloc.h,        [MALLOC_H=malloc.h])
4503 if test "$MALLOC_H" = ""; then
4504   AC_CHECK_HEADER(malloc/malloc.h, [MALLOC_H=malloc/malloc.h])
4505   if test "$MALLOC_H" = ""; then
4506     AC_CHECK_HEADER(sys/malloc.h,    [MALLOC_H=sys/malloc.h])
4507   fi
4509 if test "$MALLOC_H" != ""; then
4510    AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
4513 MOZ_ALLOCATING_FUNCS="strndup posix_memalign memalign valloc"
4514 AC_CHECK_FUNCS(strndup posix_memalign memalign valloc)
4516 dnl See if compiler supports some gcc-style attributes
4518 AC_CACHE_CHECK(for __attribute__((always_inline)),
4519                ac_cv_attribute_always_inline,
4520                [AC_TRY_COMPILE([],
4521                                [inline void f(void) __attribute__((always_inline));],
4522                                ac_cv_attribute_always_inline=yes,
4523                                ac_cv_attribute_always_inline=no)])
4525 AC_CACHE_CHECK(for __attribute__((malloc)),
4526                ac_cv_attribute_malloc,
4527                [AC_TRY_COMPILE([],
4528                                [void* f(int) __attribute__((malloc));],
4529                                ac_cv_attribute_malloc=yes,
4530                                ac_cv_attribute_malloc=no)])
4532 AC_CACHE_CHECK(for __attribute__((warn_unused_result)),
4533                ac_cv_attribute_warn_unused,
4534                [AC_TRY_COMPILE([],
4535                                [int f(void) __attribute__((warn_unused_result));],
4536                                ac_cv_attribute_warn_unused=yes,
4537                                ac_cv_attribute_warn_unused=no)])
4539 AC_CACHE_CHECK(for __attribute__((noreturn)),
4540                ac_cv_attribute_noreturn,
4541                [AC_TRY_COMPILE([],
4542                                [void f(void) __attribute__((noreturn));],
4543                                ac_cv_attribute_noreturn=yes,
4544                                ac_cv_attribute_noreturn=no)])
4546 dnl End of C++ language/feature checks
4547 AC_LANG_C
4549 dnl ========================================================
4550 dnl =  Internationalization checks
4551 dnl ========================================================
4553 dnl Internationalization and Locale support is different
4554 dnl on various UNIX platforms.  Checks for specific i18n
4555 dnl features go here.
4557 dnl check for LC_MESSAGES
4558 AC_CACHE_CHECK(for LC_MESSAGES,
4559                 ac_cv_i18n_lc_messages,
4560                 [AC_TRY_COMPILE([#include <locale.h>],
4561                                 [int category = LC_MESSAGES;],
4562                                 ac_cv_i18n_lc_messages=yes,
4563                                 ac_cv_i18n_lc_messages=no)])
4564 if test "$ac_cv_i18n_lc_messages" = yes; then
4565    AC_DEFINE(HAVE_I18N_LC_MESSAGES)
4568 AC_HAVE_FUNCS(localeconv)
4570 fi # SKIP_COMPILER_CHECKS
4572 TARGET_XPCOM_ABI=
4573 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
4574     TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
4577 dnl Mozilla specific options
4578 dnl ========================================================
4579 dnl The macros used for command line options
4580 dnl are defined in build/autoconf/altoptions.m4.
4582 dnl If the compiler supports these attributes, define them as
4583 dnl convenience macros.
4584 if test "$ac_cv_attribute_always_inline" = yes ; then
4585   AC_DEFINE(NS_ALWAYS_INLINE, [__attribute__((always_inline))])
4586 else
4587   AC_DEFINE(NS_ALWAYS_INLINE,)
4590 if test "$ac_cv_attribute_malloc" = yes ; then
4591   AC_DEFINE(NS_ATTR_MALLOC, [__attribute__((malloc))])
4592 else
4593   AC_DEFINE(NS_ATTR_MALLOC,)
4596 if test "$ac_cv_attribute_warn_unused" = yes ; then
4597   AC_DEFINE(NS_WARN_UNUSED_RESULT, [__attribute__((warn_unused_result))])
4598 else
4599   AC_DEFINE(NS_WARN_UNUSED_RESULT,)
4602 if test "$ac_cv_attribute_noreturn" = yes ; then
4603   AC_DEFINE(NS_NORETURN, [__attribute__((noreturn))])
4604 else
4605   AC_DEFINE(NS_NORETURN,)
4608 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
4609 dnl features that Windows actually does support.
4611 if test -n "$SKIP_COMPILER_CHECKS"; then
4612    dnl Windows has malloc.h
4613    AC_DEFINE(MALLOC_H, [<malloc.h>])
4614    AC_DEFINE(HAVE_FORCEINLINE)
4615    AC_DEFINE(HAVE_LOCALECONV)
4616 fi # SKIP_COMPILER_CHECKS
4618 dnl ========================================================
4619 dnl =
4620 dnl = Check for external package dependencies
4621 dnl =
4622 dnl ========================================================
4623 MOZ_ARG_HEADER(External Packages)
4625 MOZ_ENABLE_LIBXUL=1
4627 MOZ_ARG_WITH_STRING(libxul-sdk,
4628 [  --with-libxul-sdk=PFX   Use the libXUL SDK at <PFX>],
4629   LIBXUL_SDK_DIR=$withval)
4631 if test "$LIBXUL_SDK_DIR" = "yes"; then
4632     AC_MSG_ERROR([--with-libxul-sdk must specify a path])
4633 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
4634     LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
4636     if test ! -f "$LIBXUL_SDK/include/xpcom-config.h"; then
4637         AC_MSG_ERROR([$LIBXUL_SDK/include/xpcom-config.h doesn't exist])
4638     fi
4640     MOZ_ENABLE_LIBXUL=1
4642 AC_SUBST(LIBXUL_SDK)
4644 if test -n "$LIBXUL_SDK"; then
4645     LIBXUL_DIST="$LIBXUL_SDK"
4646 else
4647     LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
4649 AC_SUBST(LIBXUL_DIST)
4651 SYSTEM_LIBXUL=
4653 MOZ_ARG_WITH_BOOL(system-libxul,
4654 [  --with-system-libxul   Use system installed libxul SDK],
4655     SYSTEM_LIBXUL=1)
4657 if test -n "$SYSTEM_LIBXUL" && test -z "$MOZ_ENABLE_LIBXUL"; then
4658     AC_MSG_ERROR([--with-system-libxul needs --with-libxul-sdk])
4661 dnl ========================================================
4662 dnl = If NSPR was not detected in the system, 
4663 dnl = use the one in the source tree (mozilla/nsprpub)
4664 dnl ========================================================
4665 MOZ_ARG_WITH_BOOL(system-nspr,
4666 [  --with-system-nspr      Use system installed NSPR],
4667     _USE_SYSTEM_NSPR=1 )
4669 if test -n "$_USE_SYSTEM_NSPR"; then
4670     AM_PATH_NSPR(4.8.0, [MOZ_NATIVE_NSPR=1], [MOZ_NATIVE_NSPR=])
4673 if test -n "$MOZ_NATIVE_NSPR"; then
4674     _SAVE_CFLAGS=$CFLAGS
4675     CFLAGS="$CFLAGS $NSPR_CFLAGS"
4676     AC_TRY_COMPILE([#include "prtypes.h"],
4677                 [#ifndef PR_STATIC_ASSERT
4678                  #error PR_STATIC_ASSERT not defined or requires including prlog.h
4679                  #endif],
4680                 [MOZ_NATIVE_NSPR=1],
4681                 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT or including prtypes.h does not provide it]))
4682     CFLAGS=$_SAVE_CFLAGS
4683 else
4684     if test "$OS_ARCH" = "WINCE"; then
4685         NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4686         NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4687     elif test "$OS_ARCH" = "WINNT"; then
4688         NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4689         if test -n "$GNU_CC"; then
4690             NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
4691         else
4692             NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4693         fi
4694     else
4695         NSPR_CFLAGS='`$(LIBXUL_DIST)/bin/nspr-config --prefix='${LIBXUL_DIST}' --includedir='${LIBXUL_DIST}'/include/nspr --cflags`'
4696         NSPR_LIBS='`$(LIBXUL_DIST)/bin/nspr-config --prefix='${LIBXUL_DIST}' --libdir='${LIBXUL_DIST}'/lib --libs`'
4697     fi
4700 dnl system libevent Support
4701 dnl ========================================================
4702 MOZ_ARG_WITH_STRING(system-libevent,
4703 [  --with-system-libevent=[PFX]
4704                           Use system libevent [installed at prefix PFX]],
4705     LIBEVENT_DIR=$withval)
4707 _SAVE_CFLAGS=$CFLAGS
4708 _SAVE_LDFLAGS=$LDFLAGS
4709 _SAVE_LIBS=$LIBS
4710 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
4711     MOZ_NATIVE_LIBEVENT=
4712 else
4713     if test "${LIBEVENT_DIR}" = "yes"; then
4714         LIBEVENT_DIR=/usr
4715     fi
4716     CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
4717     LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
4718     AC_CHECK_HEADER(event.h,
4719                     [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
4720                          AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
4721                      fi],
4722                     AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
4723     AC_CHECK_LIB(event, event_init,
4724                  [MOZ_NATIVE_LIBEVENT=1
4725                   MOZ_LIBEVENT_INCLUDES="${LIBEVENT_DIR}/include"
4726                   MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
4727                  [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_INCLUDES= MOZ_LIBEVENT_LIBS=])
4729 CFLAGS=$_SAVE_CFLAGS
4730 LDFLAGS=$_SAVE_LDFLAGS
4731 LIBS=$_SAVE_LIBS
4733 AC_SUBST(MOZ_NATIVE_LIBEVENT)
4734 AC_SUBST(MOZ_LIBEVENT_INCLUDES)
4735 AC_SUBST(MOZ_LIBEVENT_LIBS)
4737 dnl ========================================================
4738 dnl = If NSS was not detected in the system, 
4739 dnl = use the one in the source tree (mozilla/security/nss)
4740 dnl ========================================================
4742 MOZ_ARG_WITH_BOOL(system-nss,
4743 [  --with-system-nss      Use system installed NSS],
4744     _USE_SYSTEM_NSS=1 )
4746 if test -n "$_USE_SYSTEM_NSS"; then
4747     AM_PATH_NSS(3.12.6, [MOZ_NATIVE_NSS=1], [MOZ_NATIVE_NSS=])
4750 if test -n "$MOZ_NATIVE_NSS"; then
4751    NSS_LIBS="$NSS_LIBS -lcrmf"
4752 else
4753    NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4754    NSS_DEP_LIBS="\
4755         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4756         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4757         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4758         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4759         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX)"
4761    if test -z "$GNU_CC" && test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "WINCE" -o "$OS_ARCH" = "OS2"; then
4762        NSS_LIBS="\
4763         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4764         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(LIB_SUFFIX) \
4765         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(LIB_SUFFIX) \
4766         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(LIB_SUFFIX) \
4767         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(LIB_SUFFIX)"
4768    else
4769        NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION"
4770    fi
4773 if test -z "$SKIP_LIBRARY_CHECKS"; then
4774 dnl system JPEG support
4775 dnl ========================================================
4776 MOZ_ARG_WITH_STRING(system-jpeg,
4777 [  --with-system-jpeg[=PFX]
4778                           Use system libjpeg [installed at prefix PFX]],
4779     JPEG_DIR=$withval)
4781 _SAVE_CFLAGS=$CFLAGS
4782 _SAVE_LDFLAGS=$LDFLAGS
4783 _SAVE_LIBS=$LIBS
4784 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4785     CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4786     LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4788 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4789     SYSTEM_JPEG=
4790 else
4791     AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS)
4794 if test "$SYSTEM_JPEG" = 1; then
4795     LIBS="$JPEG_LIBS $LIBS"
4796     AC_TRY_COMPILE([ #include <stdio.h>
4797                      #include <sys/types.h>
4798                      #include <jpeglib.h> ],
4799                    [ #if JPEG_LIB_VERSION < $MOZJPEG
4800                      #error "Insufficient JPEG library version ($MOZJPEG required)."
4801                      #endif ],
4802                    SYSTEM_JPEG=1,
4803                    [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=]) 
4804 fi 
4805 CFLAGS=$_SAVE_CFLAGS
4806 LDFLAGS=$_SAVE_LDFLAGS
4807 LIBS=$_SAVE_LIBS
4809 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$SYSTEM_JPEG" = 1; then
4810     JPEG_CFLAGS="-I${JPEG_DIR}/include"
4811     JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
4814 dnl system ZLIB support
4815 dnl ========================================================
4816 MOZ_ARG_WITH_STRING(system-zlib,
4817 [  --with-system-zlib[=PFX]
4818                           Use system libz [installed at prefix PFX]],
4819     ZLIB_DIR=$withval)
4821 _SAVE_CFLAGS=$CFLAGS
4822 _SAVE_LDFLAGS=$LDFLAGS
4823 _SAVE_LIBS=$LIBS
4824 if test -n "${ZLIB_DIR}" -a "${ZLIB_DIR}" != "yes"; then
4825     CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
4826     LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
4828 if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
4829     SYSTEM_ZLIB=
4830 else
4831     AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"], 
4832         [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
4834 if test "$SYSTEM_ZLIB" = 1; then
4835     LIBS="$ZLIB_LIBS $LIBS"
4836     AC_TRY_COMPILE([ #include <stdio.h>
4837                      #include <string.h>
4838                      #include <zlib.h> ],
4839                    [ #if ZLIB_VERNUM < $MOZZLIB 
4840                      #error "Insufficient zlib version ($MOZZLIB required)."
4841                      #endif ],
4842                    SYSTEM_ZLIB=1,
4843                    [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=]) 
4845 CFLAGS=$_SAVE_CFLAGS
4846 LDFLAGS=$_SAVE_LDFLAGS
4847 LIBS=$_SAVE_LIBS
4849 if test "${ZLIB_DIR}" -a -d "${ZLIB_DIR}" -a "$SYSTEM_ZLIB" = 1; then
4850     ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
4851     ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
4854 dnl system BZIP2 Support
4855 dnl ========================================================
4856 MOZ_ARG_WITH_STRING(system-bz2,
4857 [  --with-system-bz2[=PFX]
4858                           Use system libbz2 [installed at prefix PFX]],
4859     BZ2_DIR=$withval)
4861 _SAVE_CFLAGS=$CFLAGS
4862 _SAVE_LDFLAGS=$LDFLAGS
4863 _SAVE_LIBS=$LIBS
4864 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4865     CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4866     LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4868 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4869     SYSTEM_BZ2=
4870 else
4871     AC_CHECK_LIB(bz2, BZ2_bzread, [SYSTEM_BZ2=1 BZ2_LIBS="-lbz2"],
4872         [SYSTEM_BZ2= BZ2_CFLAGS= BZ2_LIBS=])
4874 CFLAGS=$_SAVE_CFLAGS
4875 LDFLAGS=$_SAVE_LDFLAGS
4876 LIBS=$_SAVE_LIBS
4878 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$SYSTEM_BZ2" = 1; then
4879     BZ2_CFLAGS="-I${BZ2_DIR}/include"
4880     BZ2_LIBS="-L${BZ2_DIR}/lib ${BZ2_LIBS}"
4883 dnl system PNG Support
4884 dnl ========================================================
4885 MOZ_ARG_WITH_STRING(system-png, 
4886 [  --with-system-png[=PFX]
4887                           Use system libpng [installed at prefix PFX]],
4888     PNG_DIR=$withval)
4890 _SAVE_CFLAGS=$CFLAGS
4891 _SAVE_LDFLAGS=$LDFLAGS
4892 _SAVE_LIBS=$LIBS
4893 CFLAGS="$ZLIB_CFLAGS $CFLAGS"
4894 LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
4895 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4896     CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4897     LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4899 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4900     SYSTEM_PNG=
4901 else
4902     _SAVE_PNG_LIBS=$PNG_LIBS
4903     AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"],
4904                  AC_MSG_ERROR([--with-system-png requested but no working libpng found]), 
4905                  $PNG_LIBS)
4906     AC_CHECK_LIB(png, png_get_acTL, ,
4907                  AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]),
4908                  $_SAVE_PNG_LIBS)
4910 if test "$SYSTEM_PNG" = 1; then
4911     LIBS="$PNG_LIBS $LIBS"
4912     AC_TRY_COMPILE([ #include <stdio.h>
4913                      #include <sys/types.h>
4914                      #include <png.h> ],
4915                    [ #if PNG_LIBPNG_VER < $MOZPNG
4916                      #error "Insufficient libpng version ($MOZPNG required)."
4917                      #endif
4918                      #ifndef PNG_UINT_31_MAX
4919                      #error "Insufficient libpng version."
4920                      #endif ],
4921                    SYSTEM_PNG=1,
4922                    AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4924 CFLAGS=$_SAVE_CFLAGS
4925 LDFLAGS=$_SAVE_LDFLAGS
4926 LIBS=$_SAVE_LIBS
4928 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
4929     PNG_CFLAGS="-I${PNG_DIR}/include"
4930     PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
4933 fi # SKIP_LIBRARY_CHECKS
4935 dnl system HunSpell Support
4936 dnl ========================================================
4937 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4938 [  --enable-system-hunspell  Use system hunspell (located with pkgconfig)],
4939     SYSTEM_HUNSPELL=1 )
4941 if test -n "$SYSTEM_HUNSPELL"; then
4942     PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4945 AC_SUBST(SYSTEM_HUNSPELL)
4947 dnl ========================================================
4948 dnl Java SDK support
4949 dnl ========================================================
4950 JAVA_INCLUDE_PATH=
4951 MOZ_ARG_WITH_STRING(java-include-path,
4952 [  --with-java-include-path=dir   Location of Java SDK headers],
4953     JAVA_INCLUDE_PATH=$withval)
4955 JAVA_BIN_PATH=
4956 MOZ_ARG_WITH_STRING(java-bin-path,
4957 [  --with-java-bin-path=dir   Location of Java binaries (java, javac, jar)],
4958     JAVA_BIN_PATH=$withval)
4960 dnl ========================================================
4961 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4962 dnl their usage and use them in spidermonkey.
4963 dnl ========================================================
4964 MOZ_ARG_WITH_BOOL(arm-kuser,
4965 [  --with-arm-kuser         Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4966     USE_ARM_KUSER=1,
4967     USE_ARM_KUSER=)
4968 if test -n "$USE_ARM_KUSER"; then
4969    AC_DEFINE(USE_ARM_KUSER)
4972 dnl ========================================================
4973 dnl =
4974 dnl = Application
4975 dnl =
4976 dnl ========================================================
4978 MOZ_ARG_HEADER(Application)
4980 BUILD_STATIC_LIBS=
4981 ENABLE_TESTS=1
4982 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4983 MOZ_BRANDING_DIRECTORY=
4984 MOZ_OFFICIAL_BRANDING=
4985 MOZ_FEEDS=1
4986 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg bmp icon"
4987 MOZ_IMG_ENCODERS_DEFAULT="png jpeg"
4988 MOZ_IPC=1
4989 MOZ_JAVAXPCOM=
4990 MOZ_JSDEBUGGER=1
4991 MOZ_JSLOADER=1
4992 MOZ_MATHML=1
4993 MOZ_MORK=
4994 MOZ_MORKREADER=1
4995 MOZ_AUTH_EXTENSION=1
4996 MOZ_NO_ACTIVEX_SUPPORT=1
4997 MOZ_NO_INSPECTOR_APIS=
4998 MOZ_NO_FAST_LOAD=
4999 MOZ_OGG=1
5000 MOZ_SYDNEYAUDIO=
5001 MOZ_WAVE=1
5002 MOZ_MEDIA=
5003 MOZ_PANGO=1
5004 MOZ_PERMISSIONS=1
5005 MOZ_PLACES=1
5006 MOZ_PLAINTEXT_EDITOR_ONLY=
5007 MOZ_PLUGINS=1
5008 MOZ_PREF_EXTENSIONS=1
5009 MOZ_PROFILELOCKING=1
5010 MOZ_PSM=1
5011 MOZ_RDF=1
5012 MOZ_REFLOW_PERF=
5013 MOZ_SAFE_BROWSING=
5014 MOZ_FASTSTART=
5015 MOZ_HELP_VIEWER=
5016 MOZ_SPELLCHECK=1
5017 MOZ_SPLASHSCREEN=
5018 MOZ_STORAGE=1
5019 MOZ_SVG=1
5020 MOZ_THUMB2=
5021 MOZ_TIMELINE=
5022 MOZ_TOOLKIT_SEARCH=1
5023 MOZ_UI_LOCALE=en-US
5024 MOZ_UNIVERSALCHARDET=1
5025 MOZ_URL_CLASSIFIER=
5026 MOZ_USE_NATIVE_UCONV=
5027 MOZ_VIEW_SOURCE=1
5028 MOZ_XSLT_STANDALONE=
5029 MOZ_XTF=1
5030 MOZ_XUL=1
5031 MOZ_ZIPWRITER=1
5032 NS_PRINTING=1
5033 NECKO_WIFI=1
5034 NECKO_COOKIES=1
5035 NECKO_DISK_CACHE=1
5036 NECKO_PROTOCOLS_DEFAULT="about data file ftp gopher http res viewsource"
5037 BUILD_CTYPES=1
5038 XPC_IDISPATCH_SUPPORT=
5041 case "$target_os" in
5042 darwin*|*wince*|*winmo*)
5043     ACCESSIBILITY=
5044     ;;
5046     ACCESSIBILITY=1
5047     ;;
5048 esac
5050 case "$target_os" in
5051     msvc*|mks*|cygwin*|mingw*)
5052         NS_ENABLE_TSF=1
5053         if test -z "$GNU_CC"; then 
5054             if test "$MOZ_WINSDK_TARGETVER" -lt "06000000"; then
5055                 NS_ENABLE_TSF=
5056             fi
5057             XPC_IDISPATCH_SUPPORT=1
5058             MOZ_NO_ACTIVEX_SUPPORT=
5059         fi
5060         if test -n "$NS_ENABLE_TSF"; then
5061             AC_DEFINE(NS_ENABLE_TSF)
5062         fi
5063         ;;
5064 esac
5066 MOZ_ARG_ENABLE_STRING(application,
5067 [  --enable-application=APP
5068                           Options include:
5069                             browser (Firefox)
5070                             xulrunner
5071                             content/xslt (Standalone Transformiix XSLT)
5072                             netwerk (Standalone Necko)
5073                             tools/update-packaging (AUS-related packaging tools)
5074                             standalone (use this for standalone
5075                               xpcom/xpconnect or to manually drive a build)],
5076 [ MOZ_BUILD_APP=$enableval ] )
5078 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
5079 [  --with-xulrunner-stub-name=appname   Create the xulrunner stub with the given name],
5080   XULRUNNER_STUB_NAME=$withval)
5082 if test -z "$XULRUNNER_STUB_NAME"; then
5083   case "$target_os" in
5084   darwin*)
5085     XULRUNNER_STUB_NAME=xulrunner
5086     ;;
5087   *)
5088     XULRUNNER_STUB_NAME=xulrunner-stub
5089   esac
5091 AC_SUBST(XULRUNNER_STUB_NAME)
5093 if test -z "$MOZ_BUILD_APP"; then
5094   AC_MSG_ERROR([--enable-application=APP was not specified and is required.])
5095 else
5096   # We have a valid application only if it has a build.mk file in its top
5097   # directory.
5098   if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
5099     AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
5100   fi
5103 # Allow the application to influence configure with a confvars.sh script.
5105 AC_MSG_CHECKING([if app-specific confvars.sh exists])
5106 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
5107   AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
5108   . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
5109 else
5110   AC_MSG_RESULT([no])
5113 # Now is a good time to test for logic errors, define mismatches, etc.
5114 case "$MOZ_BUILD_APP" in
5115 xulrunner)
5116   if test "$LIBXUL_SDK"; then
5117     AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
5118   fi
5119   ;;
5120 esac
5122 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
5123 # that haven't made a confvars.sh yet. Don't add new stuff here, use
5124 # MOZ_BUILD_APP.
5125 case "$MOZ_BUILD_APP" in
5126 browser)
5127   AC_DEFINE(MOZ_PHOENIX)
5128   ;;
5130 xulrunner)
5131   AC_DEFINE(MOZ_XULRUNNER)
5132   ;;
5134 content/xslt)
5135   AC_DEFINE(TX_EXE)
5136   ;;
5138 standalone) 
5139   MOZ_APP_NAME=mozilla
5140   MOZ_APP_DISPLAYNAME=Mozilla
5141   MOZ_APP_VERSION=$MOZILLA_VERSION
5142   ;;
5144 esac
5146 AC_SUBST(MOZ_BUILD_APP)
5147 AC_SUBST(MOZ_PHOENIX)
5148 AC_SUBST(MOZ_XULRUNNER)
5150 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
5152 dnl ========================================================
5153 dnl = 
5154 dnl = Toolkit Options
5155 dnl = 
5156 dnl ========================================================
5157 MOZ_ARG_HEADER(Toolkit Options)
5159     dnl ========================================================
5160     dnl = Select the default toolkit
5161     dnl ========================================================
5162         MOZ_ARG_ENABLE_STRING(default-toolkit,
5163         [  --enable-default-toolkit=TK
5164                           Select default toolkit
5165                           Platform specific defaults:
5166                             BeOS - cairo-beos
5167                             Mac OS X - cairo-cocoa
5168                             Neutrino/QNX - photon
5169                             OS/2 - cairo-os2
5170                             Win32/WinCE - cairo-windows
5171                             Gtk2 with DirectFB - cairo-gtk2-dfb
5172                             * - cairo-gtk2
5173                             * - cairo-qt],
5174     [ _DEFAULT_TOOLKIT=$enableval ],
5175     [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
5177     if test "$_DEFAULT_TOOLKIT" = "photon" \
5178         -o "$_DEFAULT_TOOLKIT" = "cairo-windows" \
5179         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
5180         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-dfb" \
5181         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
5182         -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
5183         -o "$_DEFAULT_TOOLKIT" = "cairo-beos" \
5184         -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
5185         -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa" \
5186         -o "$_DEFAULT_TOOLKIT" = "cairo-android"
5187     then
5188         dnl nglayout only supports building with one toolkit,
5189         dnl so ignore everything after the first comma (",").
5190         MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
5191     else
5192         AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
5193     fi
5195 dnl ========================================================
5196 dnl = Enable the toolkit as needed                         =
5197 dnl ========================================================
5199 case "$MOZ_WIDGET_TOOLKIT" in
5200 photon)
5201         MOZ_ENABLE_PHOTON=1
5202         AC_DEFINE(MOZ_WIDGET_PHOTON)
5203     ;;
5205 cairo-windows)
5206     MOZ_WIDGET_TOOLKIT=windows
5207     MOZ_WEBGL=1
5208     case "${target}" in
5209     *-wince*)
5210         NS_PRINTING=
5211         ;;
5212     esac
5213     ;;
5215 cairo-gtk2|cairo-gtk2-x11)
5216     MOZ_WIDGET_TOOLKIT=gtk2
5217     MOZ_ENABLE_GTK2=1
5218     MOZ_ENABLE_XREMOTE=1
5219     MOZ_WEBGL=1
5220     MOZ_WEBGL_GLX=1
5222     AC_DEFINE(MOZ_X11)
5223     MOZ_X11=1
5224     USE_FC_FREETYPE=1
5226     TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
5227     TK_LIBS='$(MOZ_GTK2_LIBS)'
5228     AC_DEFINE(MOZ_WIDGET_GTK2)
5229     ;;
5231 cairo-gtk2-dfb)
5232     MOZ_WIDGET_TOOLKIT=gtk2
5233     MOZ_ENABLE_GTK2=1
5234     MOZ_WEBGL=
5236     AC_DEFINE(MOZ_DFB)
5237     MOZ_DFB=1
5239     TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
5240     TK_LIBS='$(MOZ_GTK2_LIBS)'
5241     AC_DEFINE(MOZ_WIDGET_GTK2)
5242     if test "$no_x" != "yes"; then
5243         AC_MSG_WARN([Disabling X when DirectFB is specified.])
5244         no_x=yes
5245     fi
5246     ;;
5248 cairo-qt)
5249     MOZ_WIDGET_TOOLKIT=qt
5250     MOZ_ENABLE_QT=1
5251     MOZ_ENABLE_XREMOTE=1
5252     MOZ_WEBGL=1
5253     MOZ_WEBGL_GLX=1
5254     USE_ELF_DYNSTR_GC=
5255     NS_PRINTING=
5257     AC_DEFINE(MOZ_X11)
5258     MOZ_X11=1
5259     USE_FC_FREETYPE=1
5261     TK_CFLAGS='$(MOZ_QT_CFLAGS)'
5262     TK_LIBS='$(MOZ_QT_LIBS)'
5263     AC_DEFINE(MOZ_WIDGET_QT)
5264     ;;
5266 cairo-beos)
5267     MOZ_WIDGET_TOOLKIT=beos
5268     USE_FC_FREETYPE=1
5269     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
5270     TK_LIBS='$(MOZ_CAIRO_LIBS)'
5271     ;;
5273 cairo-os2)
5274     MOZ_WIDGET_TOOLKIT=os2
5275     USE_FC_FREETYPE=1
5276     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
5277     TK_LIBS='$(MOZ_CAIRO_LIBS)'
5278     ;;
5280 cairo-cocoa)
5281     MOZ_WIDGET_TOOLKIT=cocoa
5282     AC_DEFINE(MOZ_WIDGET_COCOA)
5283     MOZ_USER_DIR="Mozilla"
5284     AC_DEFINE(XP_MACOSX)
5285     TK_LIBS='-framework QuartzCore -framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook -framework OpenGL'
5286     TK_CFLAGS="-DNO_X11"
5287     LDFLAGS="$LDFLAGS -framework Cocoa -lobjc"
5288     CFLAGS="$CFLAGS $TK_CFLAGS"
5289     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
5290     LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL'
5291     MOZ_FS_LAYOUT=bundle
5292     MOZ_WEBGL=1
5293     ;;
5295 cairo-android)
5296     AC_DEFINE(MOZ_WIDGET_ANDROID)
5297     MOZ_WIDGET_TOOLKIT=android
5298     MOZ_WEBGL=
5299     ;;
5301 esac
5303 if test "$MOZ_ENABLE_XREMOTE"; then
5304     AC_DEFINE(MOZ_ENABLE_XREMOTE)
5307 if test "$COMPILE_ENVIRONMENT"; then
5308   if test "$MOZ_ENABLE_GTK2"; then
5309     if test "$MOZ_X11"; then
5310       GDK_PACKAGES=gdk-x11-2.0
5311     elif test "$MOZ_DFB"; then
5312       PKG_CHECK_MODULES(MOZ_DFB, directfb >= 1.1.0)
5313       GDK_PACKAGES=directfb
5314     fi
5316     PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
5317   fi
5319 fi # COMPILE_ENVIRONMENT
5321 AC_SUBST(MOZ_FS_LAYOUT)
5323 dnl ========================================================
5324 dnl = startup-notification support module
5325 dnl ========================================================
5327 if test "$MOZ_ENABLE_GTK2"
5328 then
5329     MOZ_ENABLE_STARTUP_NOTIFICATION=
5331     MOZ_ARG_ENABLE_BOOL(startup-notification,
5332     [  --enable-startup-notification       Enable startup-notification support (default: disabled) ],
5333         MOZ_ENABLE_STARTUP_NOTIFICATION=force,
5334         MOZ_ENABLE_STARTUP_NOTIFICATION=)
5335     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
5336     then
5337         PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
5338                           libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
5339         [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
5340             if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
5341             then
5342                 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
5343             fi
5344             MOZ_ENABLE_STARTUP_NOTIFICATION=
5345         ])
5346     fi
5348     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
5349         AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
5350     fi
5352     TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
5354 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
5355 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
5356 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
5358 dnl ========================================================
5359 dnl = QT support
5360 dnl ========================================================
5361 if test "$MOZ_ENABLE_QT"
5362 then
5363     MOZ_ARG_WITH_STRING(qtdir,
5364     [  --with-qtdir=\$dir       Specify Qt directory ],
5365     [ QTDIR=$withval])
5367     if test -z "$QTDIR"; then
5368         PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtCore QtOpenGL)
5369         AC_CHECK_PROGS(HOST_MOC, moc, "")
5370     else
5371         MOZ_QT_LIBS="-L$QTDIR/lib/ -lQtGui -lQtNetwork -lQtCore -lQtDBus -lQtXml -lQtOpenGL"
5373         MOZ_QT_CFLAGS="-DQT_SHARED"
5374         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include"
5375         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/Qt"
5376         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui"
5377         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtCore"
5378         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtNetwork"
5379         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtDBus"
5380         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtXml"
5381         HOST_MOC="$QTDIR/bin/moc"
5382     fi
5383     if test -z "$HOST_MOC"; then
5384         AC_MSG_ERROR([No acceptable moc preprocessor found. Qt SDK is not installed or --with-qt is
5385 incorrect])
5386     fi
5387     MOC=$HOST_MOC
5390 AC_SUBST(GTK_CONFIG)
5391 AC_SUBST(TK_CFLAGS)
5392 AC_SUBST(TK_LIBS)
5394 AC_SUBST(MOZ_ENABLE_GTK2)
5395 AC_SUBST(MOZ_ENABLE_PHOTON)
5396 AC_SUBST(MOZ_ENABLE_QT)
5397 AC_SUBST(MOZ_ENABLE_XREMOTE)
5398 AC_SUBST(MOZ_GTK2_CFLAGS)
5399 AC_SUBST(MOZ_GTK2_LIBS)
5400 AC_SUBST(MOZ_QT_CFLAGS)
5401 AC_SUBST(MOZ_QT_LIBS)
5403 AC_SUBST(MOC)
5405 AC_SUBST(MOZ_DFB)
5406 AC_SUBST(MOZ_X11)
5408 dnl ========================================================
5409 dnl =
5410 dnl = Components & Features
5411 dnl = 
5412 dnl ========================================================
5413 MOZ_ARG_HEADER(Components and Features)
5415 dnl ========================================================
5416 dnl = Localization
5417 dnl ========================================================
5418 MOZ_ARG_ENABLE_STRING(ui-locale,
5419 [  --enable-ui-locale=ab-CD
5420                           Select the user interface locale (default: en-US)],
5421     MOZ_UI_LOCALE=$enableval )
5422 AC_SUBST(MOZ_UI_LOCALE)
5424 dnl ========================================================
5425 dnl = Trademarked Branding 
5426 dnl ========================================================
5427 MOZ_ARG_ENABLE_BOOL(official-branding,
5428 [  --enable-official-branding Enable Official mozilla.org Branding
5429                           Do not distribute builds with
5430                           --enable-official-branding unless you have
5431                           permission to use trademarks per
5432                           http://www.mozilla.org/foundation/trademarks/ .],
5434   if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
5435     AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
5436   else
5437     MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
5438     MOZ_OFFICIAL_BRANDING=1
5439   fi
5440 ], MOZ_OFFICIAL_BRANDING=)
5442 AC_SUBST(MOZ_OFFICIAL_BRANDING)
5443 if test -n "$MOZ_OFFICIAL_BRANDING"; then
5444   AC_DEFINE(MOZ_OFFICIAL_BRANDING)
5447 MOZ_ARG_WITH_STRING(branding,
5448 [  --with-branding=dir    Use branding from the specified directory.],
5449     MOZ_BRANDING_DIRECTORY=$withval)
5451 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
5452 if test -z "$REAL_BRANDING_DIRECTORY"; then
5453   REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
5456 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
5457   . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
5460 AC_SUBST(MOZ_BRANDING_DIRECTORY)
5462 dnl ========================================================
5463 dnl = Distribution ID
5464 dnl ========================================================
5465 MOZ_ARG_WITH_STRING(distribution-id,
5466 [  --with-distribution-id=ID  Set distribution-specific id (default=org.mozilla)],
5467 [ val=`echo $withval`
5468     MOZ_DISTRIBUTION_ID="$val"])
5470 if test -z "$MOZ_DISTRIBUTION_ID"; then
5471    MOZ_DISTRIBUTION_ID="org.mozilla"
5474 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
5475 AC_SUBST(MOZ_DISTRIBUTION_ID)
5478 dnl ========================================================
5479 dnl complex text support off by default
5480 dnl ========================================================
5481 MOZ_ARG_DISABLE_BOOL(pango,
5482 [  --disable-pango Disable usage of Pango ],
5483     MOZ_PANGO=,
5484     MOZ_PANGO=1)
5486 dnl ========================================================
5487 dnl = Pango
5488 dnl ========================================================
5489 if test "$MOZ_ENABLE_GTK2"
5490 then
5491     AC_SUBST(MOZ_PANGO)
5493     PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
5495     PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
5496     AC_SUBST(MOZ_PANGO_CFLAGS)
5497     AC_SUBST(MOZ_PANGO_LIBS)
5498     if test "$MOZ_PANGO"
5499     then
5500         AC_DEFINE(MOZ_PANGO)
5501     else
5502         PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0 fontconfig)
5503         AC_SUBST(FT2_CFLAGS)
5504         AC_SUBST(FT2_LIBS)
5505     fi
5508 if test "$MOZ_ENABLE_QT"
5509 then
5510     if test "$MOZ_PANGO"
5511     then
5512         PKG_CHECK_MODULES(MOZ_PANGO, [pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION],
5513         [
5514             AC_SUBST(MOZ_PANGO_CFLAGS)
5515             AC_SUBST(MOZ_PANGO_LIBS)
5516             AC_DEFINE(MOZ_PANGO)
5517         ],
5518         [
5519             echo "Pango library not found, will use FT2 font engine"
5520             MOZ_PANGO=
5521         ])
5522     fi
5523     AC_SUBST(MOZ_PANGO)
5526 dnl ========================================================
5527 dnl = GnomeVFS, GIO and GConf support module
5528 dnl ========================================================
5530 if test "$MOZ_X11"
5531 then
5532     dnl build the gnomevfs extension by default only when the
5533     dnl GTK2 toolkit is in use.
5534     if test "$MOZ_ENABLE_GTK2"
5535     then
5536         MOZ_ENABLE_GNOMEVFS=1
5537         MOZ_ENABLE_GCONF=1
5538     fi
5540     dnl ========================================================
5541     dnl = GnomeVFS support module
5542     dnl ========================================================
5543     MOZ_ARG_DISABLE_BOOL(gnomevfs,
5544     [  --disable-gnomevfs      Disable GnomeVFS support ],
5545         MOZ_ENABLE_GNOMEVFS=,
5546         MOZ_ENABLE_GNOMEVFS=force)
5548     if test "$MOZ_ENABLE_GNOMEVFS"
5549     then
5550         PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
5551             MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
5552             MOZ_ENABLE_GNOMEVFS=1
5553             AC_DEFINE(MOZ_ENABLE_GNOMEVFS)
5554         ],[
5555             if test "$MOZ_ENABLE_GNOMEVFS" = "force"
5556             then
5557                 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
5558             fi
5559             MOZ_ENABLE_GNOMEVFS=
5560         ])
5561     else
5562         if test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
5563             PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
5564               MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
5565             ])
5566         fi
5567     fi
5569     AC_SUBST(MOZ_ENABLE_GNOMEVFS)
5570     AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
5571     AC_SUBST(MOZ_GNOMEVFS_LIBS)
5573     dnl ========================================================
5574     dnl = GIO support module
5575     dnl ========================================================
5576     MOZ_ARG_ENABLE_BOOL(gio,
5577     [  --enable-gio            Enable GIO support (default: disabled)],
5578         MOZ_ENABLE_GIO=force,
5579         MOZ_ENABLE_GIO=)
5581     if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK2"
5582     then
5583         PKG_CHECK_MODULES(MOZ_GIO, gio-2.0 >= $GIO_VERSION,[
5584             MOZ_GIO_LIBS=`echo $MOZ_GIO_LIBS | sed 's/-llinc\>//'`
5585             MOZ_ENABLE_GIO=1
5586             AC_DEFINE(MOZ_ENABLE_GIO)
5587         ],[
5588             if test "$MOZ_ENABLE_GIO" = "force"
5589             then
5590                 AC_MSG_ERROR([* * * Could not find gio-2.0 >= $GIO_VERSION])
5591             fi
5592             MOZ_ENABLE_GIO=
5593         ])
5594     fi
5596     AC_SUBST(MOZ_ENABLE_GIO)
5597     AC_SUBST(MOZ_GIO_CFLAGS)
5598     AC_SUBST(MOZ_GIO_LIBS)
5599    
5600     dnl ========================================================
5601     dnl = GConf support module
5602     dnl ========================================================
5603     if test "$MOZ_ENABLE_GCONF"
5604     then
5605         PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION gobject-2.0 ,[
5606             MOZ_GCONF_LIBS=`echo $MOZ_GCONF_LIBS | sed 's/-llinc\>//'`
5607             MOZ_ENABLE_GCONF=1
5608         ],[
5609             if test "$MOZ_ENABLE_GCONF" = "force"
5610             then
5611                 AC_MSG_ERROR([* * * Could not find gconf-2.0 ])
5612             fi
5613             MOZ_ENABLE_GCONF=
5614         ])
5615     fi
5617     if test "$MOZ_ENABLE_GCONF"; then
5618         AC_DEFINE(MOZ_ENABLE_GCONF)
5619     fi
5621     AC_SUBST(MOZ_ENABLE_GCONF)
5622     AC_SUBST(MOZ_GCONF_CFLAGS)
5623     AC_SUBST(MOZ_GCONF_LIBS)
5626 dnl ========================================================
5627 dnl = libnotify support
5628 dnl ========================================================
5630 if test "$MOZ_ENABLE_GTK2"
5631 then
5632     MOZ_ENABLE_LIBNOTIFY=1
5634     MOZ_ARG_DISABLE_BOOL(libnotify,
5635     [  --disable-libnotify       Disable libnotify support ],
5636     MOZ_ENABLE_LIBNOTIFY=,
5637     MOZ_ENABLE_LIBNOTIFY=1)
5639     if test "$MOZ_ENABLE_LIBNOTIFY"
5640     then
5641         AC_DEFINE(MOZ_ENABLE_LIBNOTIFY)
5642     fi
5645 if test -z "$SKIP_LIBRARY_CHECKS"
5646 then
5647     if test "$MOZ_ENABLE_GTK2"
5648     then
5649         if test "$MOZ_ENABLE_LIBNOTIFY"
5650         then
5651             PKG_CHECK_MODULES(MOZ_LIBNOTIFY, libnotify >= $LIBNOTIFY_VERSION)
5652         fi
5653     fi
5655 AC_SUBST(MOZ_ENABLE_LIBNOTIFY)
5656 AC_SUBST(MOZ_LIBNOTIFY_CFLAGS)
5657 AC_SUBST(MOZ_LIBNOTIFY_LIBS)
5659 dnl ========================================================
5660 dnl = GNOME component (mozgnome)
5661 dnl ========================================================
5663 # The GNOME component is built if one of 
5664 # gnome-vfs, gio, gconf or libnotify is available.
5665 if test "$MOZ_ENABLE_GCONF" || \
5666    test "$MOZ_ENABLE_GNOMEVFS" || \
5667    test "$MOZ_ENABLE_GIO" || \
5668    test "$MOZ_ENABLE_LIBNOTIFY"; then
5669     MOZ_ENABLE_GNOME_COMPONENT=1
5670 else
5671     MOZ_ENABLE_GNOME_COMPONENT=
5673 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5675 dnl ========================================================
5676 dnl = libgnomeui support module
5677 dnl ========================================================
5679 if test "$MOZ_ENABLE_GTK2"
5680 then
5681     MOZ_ENABLE_GNOMEUI=1
5683     MOZ_ARG_DISABLE_BOOL(gnomeui,
5684     [  --disable-gnomeui       Disable libgnomeui support (default: auto, optional at runtime) ],
5685         MOZ_ENABLE_GNOMEUI=,
5686         MOZ_ENABLE_GNOMEUI=force)
5688     if test "$MOZ_ENABLE_GNOMEUI"
5689     then
5690         PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5691         [
5692             MOZ_GNOMEUI_LIBS=`echo $MOZ_GNOMEUI_LIBS | sed 's/-llinc\>//'`
5693             MOZ_ENABLE_GNOMEUI=1
5694         ],[
5695             if test "$MOZ_ENABLE_GNOMEUI" = "force"
5696             then
5697                 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5698             fi
5699             MOZ_ENABLE_GNOMEUI=
5700         ])
5701     fi
5703     if test "$MOZ_ENABLE_GNOMEUI"; then
5704         AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5705     fi
5708 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5709 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5710 AC_SUBST(MOZ_GNOMEUI_LIBS)
5712 dnl ========================================================
5713 dnl = dbus support
5714 dnl ========================================================
5716 if test "$MOZ_ENABLE_GTK2" || test "$MOZ_ENABLE_QT"
5717 then
5718     MOZ_ENABLE_DBUS=1
5720     MOZ_ARG_DISABLE_BOOL(dbus,
5721     [  --disable-dbus       Disable dbus support ],
5722         MOZ_ENABLE_DBUS=,
5723         MOZ_ENABLE_DBUS=1)
5725     if test "$MOZ_ENABLE_DBUS"
5726     then
5727         PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
5728         PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5729         AC_DEFINE(MOZ_ENABLE_DBUS)
5730     fi
5732 AC_SUBST(MOZ_ENABLE_DBUS)
5733 AC_SUBST(MOZ_DBUS_CFLAGS)
5734 AC_SUBST(MOZ_DBUS_LIBS)
5735 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5736 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5738 dnl ========================================================
5739 dnl = Build Personal Security Manager
5740 dnl ========================================================
5741 MOZ_ARG_DISABLE_BOOL(crypto,
5742 [  --disable-crypto        Disable crypto support (Personal Security Manager)],
5743     MOZ_PSM=,
5744     MOZ_PSM=1 )
5746 dnl ========================================================
5747 dnl = JS Debugger XPCOM component (js/jsd)
5748 dnl ========================================================
5749 MOZ_ARG_DISABLE_BOOL(jsd,
5750 [  --disable-jsd           Disable JavaScript debug library],
5751     MOZ_JSDEBUGGER=,
5752     MOZ_JSDEBUGGER=1)
5755 dnl ========================================================
5756 dnl = Disable IPC support for tabs and plugins
5757 dnl ========================================================
5758 case "${target}" in
5759 *-wince*|*-android*)
5760     MOZ_IPC=
5761     ;;
5762 esac
5764 MOZ_ARG_DISABLE_BOOL(ipc,
5765 [  --disable-ipc           Disable IPC supports for tabs and plugins],
5766     MOZ_IPC=,
5767     MOZ_IPC=1)
5769 if test -n "$MOZ_IPC"; then
5770     AC_DEFINE(MOZ_IPC)
5773 AC_SUBST(MOZ_IPC)
5775 dnl ========================================================
5776 dnl = Enable IPDL's "expensive" unit tests
5777 dnl ========================================================
5778 MOZ_IPDL_TESTS=
5780 MOZ_ARG_ENABLE_BOOL(ipdl-tests,
5781 [  --enable-ipdl-tests     Enable expensive IPDL tests],
5782     MOZ_IPDL_TESTS=1,
5783     MOZ_IPDL_TESTS=)
5785 if test -z "$MOZ_IPC" -a -n "$MOZ_IPDL_TESTS"; then
5786     AC_MSG_ERROR([--enable-ipdl-tests requires --enable-ipc])
5789 if test -n "$MOZ_IPDL_TESTS"; then
5790     AC_DEFINE(MOZ_IPDL_TESTS)
5793 AC_SUBST(MOZ_IPDL_TESTS)
5795 dnl ========================================================
5796 dnl = Disable plugin support
5797 dnl ========================================================
5798 MOZ_ARG_DISABLE_BOOL(plugins,
5799 [  --disable-plugins       Disable plugins support],
5800     MOZ_PLUGINS=,
5801     MOZ_PLUGINS=1)
5803 dnl ========================================================
5804 dnl = Disable building dbm
5805 dnl ========================================================
5806 MOZ_ARG_DISABLE_BOOL(dbm,
5807 [  --disable-dbm       Disable building dbm],
5808     NSS_DISABLE_DBM=1,
5809     NSS_DISABLE_DBM=)
5811 dnl bi-directional support always on
5812 IBMBIDI=1
5813 AC_DEFINE(IBMBIDI)
5815 dnl ========================================================
5816 dnl view source support on by default
5817 dnl ========================================================
5818 if test "$MOZ_VIEW_SOURCE"; then
5819     AC_DEFINE(MOZ_VIEW_SOURCE)
5822 dnl ========================================================
5823 dnl accessibility support on by default on all platforms 
5824 dnl except OS X.
5825 dnl ========================================================
5826 MOZ_ARG_DISABLE_BOOL(accessibility,
5827 [  --disable-accessibility Disable accessibility support (off by default on OS X)],
5828     ACCESSIBILITY=,
5829     ACCESSIBILITY=1 )
5830 if test "$ACCESSIBILITY"; then
5831     AC_DEFINE(ACCESSIBILITY)
5834 if test -n "$ACCESSIBILITY" -a "$COMPILE_ENVIRONMENT" = "1"; then
5835 case "$target" in
5836 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5837     if test "$ac_cv_header_atlbase_h" = "no"; then
5838         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.])
5839     fi
5840     if test "$ac_cv_header_oleacc_idl" = "no"; then
5841         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.])
5842     fi
5843     ;;
5844 esac
5847 dnl ========================================================
5848 dnl xpcom js loader support on by default
5849 dnl ========================================================
5850 if test "$MOZ_JSLOADER"; then
5851     AC_DEFINE(MOZ_JSLOADER)
5854 dnl ========================================================
5855 dnl Disable printing
5856 dnl ========================================================
5857 MOZ_ARG_DISABLE_BOOL(printing,
5858 [  --disable-printing  Disable printing support],
5859     NS_PRINTING=,
5860     NS_PRINTING=1 )
5862 if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
5863     AC_MSG_WARN([Printing does not work with Qt at this time. Omitting printing support.])
5864     NS_PRINTING=
5867 if test "$NS_PRINTING"; then
5868     AC_DEFINE(NS_PRINTING)
5869     AC_DEFINE(NS_PRINT_PREVIEW)
5872 dnl ========================================================
5873 dnl use native unicode converters
5874 dnl ========================================================
5875 MOZ_ARG_ENABLE_BOOL(native-uconv,
5876 [  --enable-native-uconv   Enable iconv support],
5877     MOZ_USE_NATIVE_UCONV=1,
5878     MOZ_USE_NATIVE_UCONV= )
5879 if test "$MOZ_USE_NATIVE_UCONV"; then
5880     AC_DEFINE(MOZ_USE_NATIVE_UCONV)
5882 if test "$OS_ARCH" != "WINCE" -a "$OS_ARCH" != "WINNT" -a "$MOZ_USE_NATIVE_UCONV" -a "$ac_cv_func_iconv" != "yes"; then
5883     AC_MSG_ERROR([iconv() not found.  Cannot enable native uconv support.])
5887 dnl ========================================================
5888 dnl Libeditor can be build as plaintext-only,
5889 dnl or as a full html and text editing component.
5890 dnl We build both by default.
5891 dnl ========================================================
5892 MOZ_ARG_ENABLE_BOOL(plaintext-editor-only,
5893 [  --enable-plaintext-editor-only
5894                           Allow only plaintext editing],
5895     MOZ_PLAINTEXT_EDITOR_ONLY=1,
5896     MOZ_PLAINTEXT_EDITOR_ONLY= )
5897 dnl Note the #define is MOZILLA, not MOZ, for compat with the Mac build.
5898 AC_SUBST(MOZ_PLAINTEXT_EDITOR_ONLY)
5900 dnl ========================================================
5901 dnl = Disable Fast Load
5902 dnl ========================================================
5903 MOZ_ARG_DISABLE_BOOL(xpcom-fastload,
5904 [  --disable-xpcom-fastload           Disable XPCOM fastload support],
5905     MOZ_NO_FAST_LOAD=1,
5906     MOZ_NO_FAST_LOAD=)
5908 AC_SUBST(MOZ_NO_FAST_LOAD)
5910 if test -n "$MOZ_NO_FAST_LOAD"; then
5911     AC_DEFINE(MOZ_NO_FAST_LOAD)
5914 dnl ========================================================
5915 dnl = Disable Ogg Codecs
5916 dnl ========================================================
5917 MOZ_ARG_DISABLE_BOOL(ogg,
5918 [  --disable-ogg           Disable Ogg Codec support],
5919     MOZ_OGG=,
5920     MOZ_OGG=1)
5922 AC_SUBST(MOZ_OGG)
5924 if test -n "$MOZ_OGG"; then
5925     AC_DEFINE(MOZ_OGG)
5926     MOZ_SYDNEYAUDIO=1
5927     MOZ_MEDIA=1
5929     dnl Checks for __attribute__(aligned()) directive
5930     AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
5931         [ac_cv_c_attribute_aligned],
5932         [ac_cv_c_attribute_aligned=0
5933          CFLAGS_save="${CFLAGS}"
5934          CFLAGS="${CFLAGS} -Werror"
5935          for ac_cv_c_attr_align_try in 64 32 16 8; do
5936            echo "trying $ac_cv_c_attr_align_try"
5937            AC_TRY_COMPILE([],
5938                           [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
5939                           [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
5940            if test "$ac_cv_c_attribute_aligned" != 0; then
5941              break;
5942            fi
5943          done
5944            CFLAGS="${CFLAGS_save}"])
5945     if test "${ac_cv_c_attribute_aligned}" != "0"; then
5946       AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
5947                          [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
5948     fi
5951 dnl ========================================================
5952 dnl = Disable Wave decoder support
5953 dnl ========================================================
5954 MOZ_ARG_DISABLE_BOOL(wave,
5955 [  --disable-wave          Disable Wave decoder support],
5956     MOZ_WAVE=,
5957     MOZ_WAVE=1)
5959 AC_SUBST(MOZ_WAVE)
5961 if test -n "$MOZ_WAVE"; then
5962     AC_DEFINE(MOZ_WAVE)
5963     MOZ_SYDNEYAUDIO=1
5964     MOZ_MEDIA=1
5967 dnl ========================================================
5968 dnl = Handle dependent SYDNEYAUDIO and MEDIA defines
5969 dnl ========================================================
5971 AC_SUBST(MOZ_SYDNEYAUDIO)
5973 if test -n "$MOZ_SYDNEYAUDIO"; then
5974     AC_DEFINE(MOZ_SYDNEYAUDIO)
5977 AC_SUBST(MOZ_MEDIA)
5979 if test -n "$MOZ_MEDIA"; then
5980     AC_DEFINE(MOZ_MEDIA)
5983 dnl ========================================================
5984 dnl = Check alsa availability on Linux if using sydneyaudio
5985 dnl ========================================================
5987 dnl If using sydneyaudio with Linux, ensure that the alsa library is available
5988 if test -n "$MOZ_SYDNEYAUDIO"; then
5989    case "$target_os" in
5990 linux*)
5991       PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
5992          [echo "$MOZ_ALSA_PKG_ERRORS"
5993           AC_MSG_ERROR([Need alsa for Ogg or Wave decoding on Linux.  Disable with --disable-ogg --disable-wave.])])
5994       ;;
5995    esac
5997 AC_SUBST(MOZ_ALSA_LIBS)
5999 dnl ========================================================
6000 dnl Splashscreen
6001 dnl ========================================================
6002 AC_ARG_ENABLE(splashscreen,
6003               [  --enable-splashscreen   display splashscreen while loading (default=no)],
6004               [enable_splash="yes"],[enable_splash=""])
6005 if test "x$enable_splash" = "xyes"; then
6006   MOZ_SPLASHSCREEN=1
6007   AC_DEFINE(MOZ_SPLASHSCREEN)
6009 AC_SUBST(MOZ_SPLASHSCREEN)
6011 dnl ========================================================
6012 dnl Permissions System
6013 dnl ========================================================
6014 MOZ_ARG_DISABLE_BOOL(permissions,
6015 [  --disable-permissions   Disable permissions (popup and cookie blocking)],
6016     MOZ_PERMISSIONS=,
6017     MOZ_PERMISSIONS=1
6020 dnl ========================================================
6021 dnl NegotiateAuth
6022 dnl ========================================================
6023 MOZ_ARG_DISABLE_BOOL(negotiateauth,
6024 [  --disable-negotiateauth Disable GSS-API negotiation ],
6025     MOZ_AUTH_EXTENSION=,
6026     MOZ_AUTH_EXTENSION=1 )
6028 dnl ========================================================
6029 dnl XTF
6030 dnl ========================================================
6031 MOZ_ARG_DISABLE_BOOL(xtf,
6032 [  --disable-xtf           Disable XTF (pluggable xml tags) support],
6033     MOZ_XTF=,
6034     MOZ_XTF=1 )
6035 if test "$MOZ_XTF"; then
6036   AC_DEFINE(MOZ_XTF)
6039 dnl ========================================================
6040 dnl Pref extensions (autoconfig and system-pref)
6041 dnl ========================================================
6042 MOZ_ARG_DISABLE_BOOL(pref-extensions,
6043 [  --disable-pref-extensions
6044                           Disable pref extensions such as autoconfig and
6045                           system-pref],
6046   MOZ_PREF_EXTENSIONS=,
6047   MOZ_PREF_EXTENSIONS=1 )
6049 dnl ========================================================
6050 dnl = Universalchardet
6051 dnl ========================================================
6052 MOZ_ARG_DISABLE_BOOL(universalchardet,
6053 [  --disable-universalchardet
6054                           Disable universal encoding detection],
6055   MOZ_UNIVERSALCHARDET=,
6056   MOZ_UNIVERSALCHARDET=1 )
6058 dnl ========================================================
6059 dnl JavaXPCOM
6060 dnl ========================================================
6061 case "${target}" in
6062 *-wince*)
6063     MOZ_JAVAXPCOM=
6064     ;;
6065 esac
6067 MOZ_ARG_ENABLE_BOOL(javaxpcom,
6068 [  --enable-javaxpcom
6069                           Enable Java-XPCOM bridge],
6070     MOZ_JAVAXPCOM=1,
6071     MOZ_JAVAXPCOM= )
6073 if test -n "${MOZ_JAVAXPCOM}"; then
6074   case "$host_os" in
6075     cygwin*|msvc*|mks*)
6076       if test -n "$JAVA_HOME"; then
6077         JAVA_HOME=`cygpath -u \`cygpath -m -s "$JAVA_HOME"\``
6078       fi
6079       ;;
6080     *mingw*)
6081       if test -n "$JAVA_HOME"; then
6082         JAVA_HOME=`cd "$JAVA_HOME" && pwd`
6083       fi
6084       ;;
6085   esac
6087   if test -n "${JAVA_INCLUDE_PATH}"; then
6088     dnl Make sure jni.h exists in the given include path.
6089     if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
6090       AC_MSG_ERROR([jni.h was not found in given include path $JAVA_INCLUDE_PATH.])
6091     fi
6092   else
6093     case "$target_os" in
6094       darwin*)
6095         dnl Default to java system location
6096         JAVA_INCLUDE_PATH=/System/Library/Frameworks/JavaVM.framework/Headers
6097         ;;
6098       *)
6099         dnl Try $JAVA_HOME
6100         JAVA_INCLUDE_PATH="$JAVA_HOME/include"
6101         ;;
6102     esac
6103     if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
6104       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.])
6105     fi
6106   fi
6108   if test -n "${JAVA_BIN_PATH}"; then
6109     dnl Look for javac and jar in the specified path.
6110     JAVA_PATH="$JAVA_BIN_PATH"
6111   else
6112     dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
6113     JAVA_PATH="$JAVA_HOME/bin:$PATH"
6114   fi
6116   MOZ_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
6117   MOZ_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
6118   MOZ_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
6119   if test -z "$JAVA" || test "$JAVA" = ":" || test -z "$JAVAC" || test "$JAVAC" = ":" || test -z "$JAR" || test "$JAR" = ":"; then
6120     AC_MSG_ERROR([The programs java, javac and jar were not found.  Set \$JAVA_HOME to your java sdk directory, use --with-java-bin-path={java-bin-dir}, or reconfigure with --disable-javaxpcom.])
6121   fi
6124 dnl ========================================================
6125 dnl = Breakpad crash reporting (on by default on supported platforms)
6126 dnl ========================================================
6128 case $target in
6129 i?86-*-mingw*)
6130   MOZ_CRASHREPORTER=1
6131   ;;
6132 i?86-apple-darwin*|powerpc-apple-darwin*)
6133   MOZ_CRASHREPORTER=1
6134   ;;
6135 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
6136   MOZ_CRASHREPORTER=1
6137   ;;
6138 *solaris*)
6139   MOZ_CRASHREPORTER=1
6140   ;;
6141 esac
6143 MOZ_ARG_DISABLE_BOOL(crashreporter,
6144 [  --disable-crashreporter          Disable breakpad crash reporting],
6145     MOZ_CRASHREPORTER=,
6146     MOZ_CRASHREPORTER=1)
6148 if test -n "$MOZ_CRASHREPORTER"; then
6149    AC_DEFINE(MOZ_CRASHREPORTER)
6151   if (test "$OS_ARCH" = "Linux" || test "$OS_ARCH" = "SunOS") && \
6152     test -z "$SKIP_LIBRARY_CHECKS"; then
6153     PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
6154     AC_SUBST(MOZ_GTHREAD_CFLAGS)
6155     AC_SUBST(MOZ_GTHREAD_LIBS)
6157     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.])])
6158   fi
6161 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
6162 [  --with-crashreporter-enable-percent=NN  Enable sending crash reports by default on NN% of users. (default=100)],
6163 [ val=`echo $withval | sed 's/[^0-9]//g'`
6164     MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
6166 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
6167    MOZ_CRASHREPORTER_ENABLE_PERCENT=100
6169 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
6171 dnl ========================================================
6172 dnl = Enable compilation of specific extension modules
6173 dnl ========================================================
6175 MOZ_ARG_ENABLE_STRING(extensions,
6176 [  --enable-extensions     Enable extensions],
6177 [ for option in `echo $enableval | sed 's/,/ /g'`; do
6178     if test "$option" = "yes" || test "$option" = "all"; then
6179         AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
6180     elif test "$option" = "no" || test "$option" = "none"; then
6181         MOZ_EXTENSIONS=""
6182     elif test "$option" = "default"; then
6183         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
6184     elif test `echo "$option" | grep -c \^-` != 0; then
6185         option=`echo $option | sed 's/^-//'`
6186         MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
6187     else
6188         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
6189     fi
6190 done],
6191     MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
6193 if test -z "$MOZ_ENABLE_GNOMEVFS" && test -z "$MOZ_GNOMEVFS_LIBS" && test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6194     # Suppress warning on non-X11 platforms
6195     if test -n "$MOZ_X11"; then
6196         AC_MSG_WARN([Cannot build gnomevfs without required libraries. Removing gnomevfs from MOZ_EXTENSIONS.])
6197     fi
6198     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6201 dnl Do not build gnomevfs with libxul based apps
6202 if test -n "$LIBXUL_SDK_DIR" && test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6203     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6206 if test -z "$MOZ_ENABLE_GIO" && test `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6207     # Suppress warning on non-X11 platforms
6208     if test -n "$MOZ_X11"; then
6209         AC_MSG_WARN([Cannot build gio without required libraries. Removing gio from MOZ_EXTENSIONS.])
6210     fi
6211     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6214 dnl Do not build gio with libxul based apps
6215 if test -n "$LIBXUL_SDK_DIR" && test `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6216     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6219 if test -z "$MOZ_JSDEBUGGER" && test `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
6220     AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
6221     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
6224 dnl This might be temporary: build tridentprofile only on Windows
6225 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0 && test "$OS_ARCH" != "WINNT"; then
6226     AC_MSG_WARN([tridentprofile extension works only on Windows at this time. Removing tridentprofile from MOZ_EXTENSIONS.])
6227     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
6230 dnl cookie must be built before tridentprofile. put it at list's end.
6231 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0; then
6232   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
6233   MOZ_EXTENSIONS="$MOZ_EXTENSIONS tridentprofile"
6236 dnl xforms requires xtf and schema-validation
6237 if test -z "$MOZ_XTF" && test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
6238     AC_MSG_WARN([Cannot build XForms without XTF support.  Removing XForms from MOZ_EXTENSIONS.])
6239     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
6241 if test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0 && test `echo "$MOZ_EXTENSIONS" | grep -c schema-validation` -eq 0; then
6242     AC_MSG_WARN([Cannot build XForms without schema validation.  Removing XForms from MOZ_EXTENSIONS.])
6243     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
6246 if test `echo "$MOZ_EXTENSIONS" | grep -c auth` -ne 0; then
6247     AC_MSG_WARN([auth is no longer an extension, use --disable-negotiateauth to disable.])
6248     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|auth||g'`
6251 if test `echo "$MOZ_EXTENSIONS" | grep -c 'cookie\|permissions'` -ne 0; then
6252     AC_MSG_WARN([cookie and permissions are no longer extensions, use --disable-permissions to disable.])
6253     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|cookie||g; s|permissions||g'`
6256 if test `echo "$MOZ_EXTENSIONS" | grep -c pref` -ne 0; then
6257     AC_MSG_WARN([pref is no longer an extension, use --disable-pref-extensions to disable.])
6258     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|pref||g'`
6261 if test `echo "$MOZ_EXTENSIONS" | grep -c universalchardet` -ne 0; then
6262     AC_MSG_WARN([universalchardet is no longer an extension, use --disable-universalchardet to disable.])
6263     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|universalchardet||g'`
6266 if test `echo "$MOZ_EXTENSIONS" | grep -c java` -ne 0; then
6267     AC_MSG_WARN([java is no longer an extension, use --enable-javaxpcom to enable.])
6268     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|java||g'`
6271 if test `echo "$MOZ_EXTENSIONS" | grep -c spellcheck` -ne 0; then
6272     AC_MSG_WARN([spellcheck is no longer an extension.])
6273     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|spellcheck||g'`
6276 dnl Remove dupes
6277 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
6279 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
6280 dnl when trying to build a nonexistent extension.
6281 for extension in $MOZ_EXTENSIONS; do
6282     if test ! -d "${srcdir}/extensions/${extension}"; then
6283         AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
6284     fi
6285 done
6288 dnl ========================================================
6289 dnl Image decoders
6290 dnl ========================================================
6291 case "$MOZ_WIDGET_TOOLKIT" in
6292 beos|windows|os2|mac|cocoa)
6293     ;;
6295     if test -z "$MOZ_ENABLE_GTK2" && test -z "$MOZ_ENABLE_QT"; then
6296        MOZ_IMG_DECODERS_DEFAULT=`echo $MOZ_IMG_DECODERS_DEFAULT | sed -e 's|icon||'`
6297     fi
6298     ;;
6299 esac
6301 MOZ_ARG_ENABLE_STRING(image-decoders,
6302 [  --enable-image-decoders[={mod1,mod2,default,all,none}]
6303                           Enable specific image decoders],
6304 [ for option in `echo $enableval | sed 's/,/ /g'`; do
6305     if test "$option" = "yes" || test "$option" = "all"; then
6306         MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
6307     elif test "$option" = "no" || test "$option" = "none"; then
6308         MOZ_IMG_DECODERS=""
6309     elif test "$option" = "default"; then
6310         MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
6311     elif test `echo "$option" | grep -c \^-` != 0; then
6312         option=`echo $option | sed 's/^-//'`
6313         MOZ_IMG_DECODERS=`echo "$MOZ_IMG_DECODERS" | sed "s/ ${option}//"`
6314     else
6315         MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $option"
6316     fi
6317 done],
6318     MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS_DEFAULT")
6320 dnl Dupes are removed in the encoder section because it will also add decoders
6322 dnl ========================================================
6323 dnl Image encoders
6324 dnl ========================================================
6325 MOZ_ARG_ENABLE_STRING(image-encoders,
6326 [  --enable-image-encoders[={mod1,mod2,default,all,none}]
6327                           Enable specific image encoders],
6328 [ for option in `echo $enableval | sed 's/,/ /g'`; do
6329     if test "$option" = "yes" || test "$option" = "all"; then
6330         addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
6331     elif test "$option" = "no" || test "$option" = "none"; then
6332         MOZ_IMG_ENCODERS=""
6333         addencoder=""
6334     elif test "$option" = "default"; then
6335         addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
6336     elif test `echo "$option" | grep -c \^-` != 0; then
6337         option=`echo $option | sed 's/^-//'`
6338         addencoder=`echo "$MOZ_IMG_ENCODERS" | sed "s/ ${option}//"`
6339     else
6340         addencoder="$option"
6341     fi
6342     MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS $addencoder"
6343 done],
6344     MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS_DEFAULT")
6346 dnl Remove dupes
6347 MOZ_IMG_DECODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_DECODERS}`
6348 MOZ_IMG_ENCODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_ENCODERS}`
6350 dnl ========================================================
6351 dnl MathML on by default
6352 dnl ========================================================
6353 MOZ_ARG_DISABLE_BOOL(mathml,
6354 [  --disable-mathml        Disable MathML support],
6355     MOZ_MATHML=,
6356     MOZ_MATHML=1 )
6357 if test "$MOZ_MATHML"; then
6358   AC_DEFINE(MOZ_MATHML)
6361 dnl ========================================================
6362 dnl SVG
6363 dnl ========================================================
6364 MOZ_ARG_DISABLE_BOOL(svg,
6365 [  --disable-svg            Disable SVG support],
6366     MOZ_SVG=,
6367     MOZ_SVG=1 )
6368 if test -n "$MOZ_SVG"; then
6369   AC_DEFINE(MOZ_SVG)
6372 dnl ========================================================
6373 dnl SMIL
6374 dnl ========================================================
6375 MOZ_SMIL=1
6376 MOZ_ARG_DISABLE_BOOL(smil,
6377 [  --disable-smil           Disable SMIL animation support],
6378     MOZ_SMIL=,
6379     MOZ_SMIL=1 )
6380 # Automatically disable SMIL if SVG is disabled
6381 if test -z "$MOZ_SVG"; then
6382   MOZ_SMIL=
6384 if test -n "$MOZ_SMIL"; then
6385   AC_DEFINE(MOZ_SMIL)
6388 dnl ========================================================
6389 dnl Build Freetype in the tree
6390 dnl ========================================================
6391 MOZ_ARG_ENABLE_BOOL(tree-freetype,
6392 [  --enable-tree-freetype         Enable Tree FreeType],
6393     MOZ_TREE_FREETYPE=1,
6394     MOZ_TREE_FREETYPE= )
6395 if test -n "$MOZ_TREE_FREETYPE"; then
6396    AC_DEFINE(MOZ_TREE_FREETYPE)
6397    AC_SUBST(MOZ_TREE_FREETYPE)
6398    MOZ_ENABLE_CAIRO_FT=1       
6399    FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
6400    FT2_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6401    CAIRO_FT_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6402    FT2_LIBS='$(call EXPAND_LIBNAME_PATH,freetype2,$(LIBXUL_DIST)/lib)'
6403    CAIRO_FT_LIBS='$(call EXPAND_LIBNAME_PATH,freetype2,$(LIBXUL_DIST)/lib)'
6404    AC_DEFINE(HAVE_FT_BITMAP_SIZE_Y_PPEM)
6405    AC_DEFINE(HAVE_FT_GLYPHSLOT_EMBOLDEN)
6406    AC_DEFINE(HAVE_FT_LOAD_SFNT_TABLE)
6407    AC_SUBST(CAIRO_FT_CFLAGS)
6411 dnl ========================================================
6412 dnl Installer
6413 dnl ========================================================
6414 case "$target_os" in
6415     aix*|solaris*|linux*|msvc*|mks*|cygwin*|mingw*|os2*|wince*|winmo*)
6416         MOZ_INSTALLER=1
6417         ;;
6418 esac
6420 MOZ_ARG_DISABLE_BOOL(installer,
6421 [  --disable-installer     Disable building of installer],
6422     MOZ_INSTALLER=,
6423     MOZ_INSTALLER=1 )
6424 if test -n "$MOZ_INSTALLER" -a "$OS_ARCH" = "WINNT"; then
6425     # Disable installer for Windows builds that use the new toolkit if NSIS
6426     # isn't in the path.
6427     MOZ_PATH_PROGS(MAKENSIS, makensis)
6428     if test -z "$MAKENSIS" || test "$MAKENSIS" = ":"; then
6429         AC_MSG_ERROR([To build the installer makensis is required in your path. To build without the installer reconfigure using --disable-installer.])
6430     fi
6431     # The Windows build for NSIS requires the iconv command line utility to
6432     # convert the charset of the locale files.
6433     MOZ_PATH_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
6434     if test -z "$HOST_ICONV"; then
6435         AC_MSG_ERROR([To build the installer iconv is required in your path. To build without the installer reconfigure using --disable-installer.])
6436     fi
6439 AC_SUBST(MOZ_INSTALLER)
6441 AC_MSG_CHECKING([for tar archiver])
6442 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
6443 if test -z "$TAR"; then
6444     AC_MSG_ERROR([no tar archiver found in \$PATH])
6446 AC_MSG_RESULT([$TAR])
6447 AC_SUBST(TAR)
6449 AC_MSG_CHECKING([for wget])
6450 AC_CHECK_PROGS(WGET, wget, "")
6451 AC_MSG_RESULT([$WGET])
6452 AC_SUBST(WGET)
6454 dnl ========================================================
6455 dnl Updater
6456 dnl ========================================================
6458 MOZ_ARG_DISABLE_BOOL(updater,
6459 [  --disable-updater       Disable building of updater],
6460     MOZ_UPDATER=,
6461     MOZ_UPDATER=1 )
6462 AC_SUBST(MOZ_UPDATER)
6464 # app update channel is 'default' when not supplied.
6465 MOZ_ARG_ENABLE_STRING([update-channel],
6466 [  --enable-update-channel=CHANNEL
6467                            Select application update channel (default=default)],
6468     MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
6470 if test -z "$MOZ_UPDATE_CHANNEL"; then
6471     MOZ_UPDATE_CHANNEL=default
6473 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
6475 # tools/update-packaging is not checked out by default.
6476 MOZ_ARG_ENABLE_BOOL(update-packaging,
6477 [  --enable-update-packaging
6478                            Enable tools/update-packaging],
6479     MOZ_UPDATE_PACKAGING=1,
6480     MOZ_UPDATE_PACKAGING= )
6481 AC_SUBST(MOZ_UPDATE_PACKAGING)
6483 dnl ========================================================
6484 dnl ActiveX
6485 dnl ========================================================
6487 MOZ_ARG_DISABLE_BOOL(xpconnect-idispatch,
6488 [  --disable-xpconnect-idispatch
6489                           Disable building of xpconnect support for IDispatch
6490                           (win32 only)],
6491     XPC_IDISPATCH_SUPPORT=,
6492     XPC_IDISPATCH_SUPPORT=1)
6493 AC_SUBST(XPC_IDISPATCH_SUPPORT)
6495 MOZ_ARG_DISABLE_BOOL(activex,
6496 [  --disable-activex       Disable building of ActiveX control (win32 only)],
6497     MOZ_NO_ACTIVEX_SUPPORT=1,
6498     MOZ_NO_ACTIVEX_SUPPORT= )
6499 AC_SUBST(MOZ_NO_ACTIVEX_SUPPORT)
6501 MOZ_ARG_ENABLE_BOOL(activex-scripting,
6502 [  --enable-activex-scripting
6503                           Enable building of ActiveX scripting support (win32)],
6504     MOZ_ACTIVEX_SCRIPTING_SUPPORT=1,
6505     MOZ_ACTIVEX_SCRIPTING_SUPPORT=)
6506 AC_SUBST(MOZ_ACTIVEX_SCRIPTING_SUPPORT)
6508 if test -n "$MOZ_NO_ACTIVEX_SUPPORT" -a -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT";
6509 then
6510     AC_MSG_ERROR([Cannot enable ActiveX scripting support when ActiveX support is disabled.])
6513 if test "$COMPILE_ENVIRONMENT" = "1"; then
6514 if test -n "$XPC_IDISPATCH_SUPPORT" -o -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
6515 case "$target" in
6516 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
6517     if test "$ac_cv_header_atlbase_h" = "no"; then
6518         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.])
6519     fi
6520     ;;
6521 esac
6525 dnl ========================================================
6526 dnl leaky
6527 dnl ========================================================
6528 MOZ_ARG_ENABLE_BOOL(leaky,
6529 [  --enable-leaky          Build leaky memory tool],
6530     MOZ_LEAKY=1,
6531     MOZ_LEAKY=)
6534 dnl ========================================================
6535 dnl build the tests by default
6536 dnl ========================================================
6537 MOZ_ARG_DISABLE_BOOL(tests,
6538 [  --disable-tests         Do not build test libraries & programs],
6539     ENABLE_TESTS=,
6540     ENABLE_TESTS=1 )
6542 dnl ========================================================
6543 dnl parental controls (for Windows Vista)
6544 dnl ========================================================
6545 MOZ_ARG_DISABLE_BOOL(parental-controls,
6546 [  --disable-parental-controls
6547                            Do not build parental controls],
6548    MOZ_DISABLE_PARENTAL_CONTROLS=1,
6549    MOZ_DISABLE_PARENTAL_CONTROLS=)
6550 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
6551     AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
6554 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
6556 dnl ========================================================
6557 dnl =
6558 dnl = Module specific options
6559 dnl =
6560 dnl ========================================================
6561 MOZ_ARG_HEADER(Individual module options)
6563 dnl ========================================================
6564 dnl = Disable feed handling components
6565 dnl ========================================================
6566 MOZ_ARG_DISABLE_BOOL(feeds,
6567 [  --disable-feeds        Disable feed handling and processing components],
6568     MOZ_FEEDS=,
6569     MOZ_FEEDS=1 )
6570 if test -n "$MOZ_FEEDS"; then
6571     AC_DEFINE(MOZ_FEEDS)
6572 else
6573     if test "$MOZ_BUILD_APP" = "browser"; then
6574         AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
6575     fi
6578 dnl ========================================================
6579 dnl = Enable mozStorage
6580 dnl ========================================================
6581 dnl Implicitly enabled by default if building calendar or places
6582 MOZ_ARG_ENABLE_BOOL(storage,
6583 [  --enable-storage        Enable mozStorage module and related components],
6584     MOZ_STORAGE=1,
6585     MOZ_STORAGE= )
6586 if test -n "$MOZ_STORAGE"; then
6587     AC_DEFINE(MOZ_STORAGE)
6590 dnl ========================================================
6591 dnl Check for sqlite
6592 dnl ========================================================
6594 MOZ_NATIVE_SQLITE=
6595 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6596 [  --enable-system-sqlite  Use system sqlite (located with pkgconfig)],
6597 MOZ_NATIVE_SQLITE=1,
6598 MOZ_NATIVE_SQLITE= )
6600 if test -z "$MOZ_NATIVE_SQLITE"
6601 then
6602     SQLITE_CFLAGS=
6603     SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,mozsqlite3,$(DIST)/lib)'
6604 else
6605     dnl ============================
6606     dnl === SQLite Version check ===
6607     dnl ============================
6608     dnl Check to see if the system SQLite package is new enough.
6609     PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6611     dnl ==================================
6612     dnl === SQLITE_SECURE_DELETE check ===
6613     dnl ==================================
6614     dnl Check to see if the system SQLite package is compiled with
6615     dnl SQLITE_SECURE_DELETE enabled.
6616     AC_MSG_CHECKING(for SQLITE_SECURE_DELETE support in system SQLite)
6617     _SAVE_CFLAGS="$CFLAGS"
6618     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6619     _SAVE_LIBS="$LIBS"
6620     LIBS="$LIBS $SQLITE_LIBS"
6621     AC_CACHE_VAL(ac_cv_sqlite_secure_delete,[
6622         AC_TRY_RUN([
6623             #include "sqlite3.h"
6625             int main(int argc, char **argv){
6626               return !sqlite3_compileoption_used("SQLITE_SECURE_DELETE");
6627             }],
6628             ac_cv_sqlite_secure_delete=yes,
6629             ac_cv_sqlite_secure_delete=no,
6630             ac_cv_sqlite_secure_delete=no
6631         )
6632     ])
6633     AC_MSG_RESULT($ac_cv_sqlite_secure_delete)
6634     CFLAGS="$_SAVE_CFLAGS"
6635     LIBS="$_SAVE_LIBS"
6636     if test "x$ac_cv_sqlite_secure_delete" = "xno"; then
6637         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_SECURE_DELETE.])
6638     fi
6640     dnl ===============================
6641     dnl === SQLITE_THREADSAFE check ===
6642     dnl ===============================
6643     dnl Check to see if the system SQLite package is compiled with
6644     dnl SQLITE_THREADSAFE enabled.
6645     AC_MSG_CHECKING(for SQLITE_THREADSAFE support in system SQLite)
6646     _SAVE_CFLAGS="$CFLAGS"
6647     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6648     _SAVE_LIBS="$LIBS"
6649     LIBS="$LIBS $SQLITE_LIBS"
6650     AC_CACHE_VAL(ac_cv_sqlite_threadsafe,[
6651         AC_TRY_RUN([
6652             #include "sqlite3.h"
6654             int main(int argc, char **argv){
6655               return !sqlite3_compileoption_used("SQLITE_THREADSAFE=1");
6656             }],
6657             ac_cv_sqlite_threadsafe=yes,
6658             ac_cv_sqlite_threadsafe=no,
6659             ac_cv_sqlite_threadsafe=no
6660         )
6661     ])
6662     AC_MSG_RESULT($ac_cv_sqlite_threadsafe)
6663     CFLAGS="$_SAVE_CFLAGS"
6664     LIBS="$_SAVE_LIBS"
6665     if test "x$ac_cv_sqlite_threadsafe" = "xno"; then
6666         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_THREADSAFE.])
6667     fi
6669     dnl ================================
6670     dnl === SQLITE_ENABLE_FTS3 check ===
6671     dnl ================================
6672     dnl check to see if the system SQLite package is compiled with
6673     dnl SQLITE_THREADSAFE enabled.
6674     AC_MSG_CHECKING(for SQLITE_ENABLE_FTS3 support in system SQLite)
6675     _SAVE_CFLAGS="$CFLAGS"
6676     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6677     _SAVE_LIBS="$LIBS"
6678     LIBS="$LIBS $SQLITE_LIBS"
6679     AC_CACHE_VAL(ac_cv_sqlite_enable_fts3,[
6680         AC_TRY_RUN([
6681             #include "sqlite3.h"
6683             int main(int argc, char **argv){
6684               return !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3");
6685             }],
6686             ac_cv_sqlite_enable_fts3=yes,
6687             ac_cv_sqlite_enable_fts3=no,
6688             ac_cv_sqlite_enable_fts3=no
6689         )
6690     ])
6691     AC_MSG_RESULT($ac_cv_sqlite_enable_fts3)
6692     CFLAGS="$_SAVE_CFLAGS"
6693     LIBS="$_SAVE_LIBS"
6694     if test "x$ac_cv_sqlite_enable_fts3" = "xno"; then
6695         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_FTS3.])
6696     fi
6699 AC_SUBST(MOZ_NATIVE_SQLITE)
6701 dnl ========================================================
6702 dnl = Enable help viewer (off by default)
6703 dnl ========================================================
6704 if test -n "$MOZ_HELP_VIEWER"; then
6705      dnl Do this if defined in confvars.sh
6706      AC_DEFINE(MOZ_HELP_VIEWER)
6709 dnl ========================================================
6710 dnl = Enable safe browsing (anti-phishing)
6711 dnl ========================================================
6712 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6713 [  --enable-safe-browsing        Enable safe browsing (anti-phishing) implementation],
6714     MOZ_SAFE_BROWSING=1,
6715     MOZ_SAFE_BROWSING= )
6716 if test -n "$MOZ_SAFE_BROWSING"; then
6717     AC_DEFINE(MOZ_SAFE_BROWSING)
6719 AC_SUBST(MOZ_SAFE_BROWSING)
6721 dnl ========================================================
6722 dnl = Enable faststart component
6723 dnl ========================================================
6724 MOZ_ARG_ENABLE_BOOL(faststart,
6725 [  --enable-faststart            Enable the faststart component],
6726     MOZ_FASTSTART=1,
6727     MOZ_FASTSTART= )
6728 if test -n "$MOZ_FASTSTART"; then
6729     AC_DEFINE(MOZ_FASTSTART)
6731 AC_SUBST(MOZ_FASTSTART)
6733 dnl ========================================================
6734 dnl = Enable url-classifier
6735 dnl ========================================================
6736 dnl Implicitly enabled by default if building with safe-browsing
6737 if test -n "$MOZ_SAFE_BROWSING"; then
6738     MOZ_URL_CLASSIFIER=1
6740 MOZ_ARG_ENABLE_BOOL(url-classifier,
6741 [  --enable-url-classifier        Enable url classifier module],
6742     MOZ_URL_CLASSIFIER=1,
6743     MOZ_URL_CLASSIFIER= )
6744 if test -n "$MOZ_URL_CLASSIFIER"; then
6745     AC_DEFINE(MOZ_URL_CLASSIFIER)
6747 AC_SUBST(MOZ_URL_CLASSIFIER)
6749 dnl ========================================================
6750 dnl = Disable zipwriter
6751 dnl ========================================================
6752 MOZ_ARG_DISABLE_BOOL(zipwriter,
6753 [  --disable-zipwriter             Disable zipwriter component],
6754     MOZ_ZIPWRITER=,
6755     MOZ_ZIPWRITER=1 )
6756 AC_SUBST(MOZ_ZIPWRITER)
6758 dnl ========================================================
6759 dnl = Disable libconic
6760 dnl ========================================================
6761 MOZ_ENABLE_LIBCONIC=1
6762 MOZ_ARG_DISABLE_BOOL(libconic,
6763 [  --disable-libconic              Disable libconic],
6764     MOZ_ENABLE_LIBCONIC=,
6765     MOZ_ENABLE_LIBCONIC=1 )
6767 if test -n "$MOZ_ENABLE_LIBCONIC"; then
6768     PKG_CHECK_MODULES(LIBCONIC, conic,
6769                       MOZ_ENABLE_LIBCONIC=1,
6770                       MOZ_ENABLE_LIBCONIC=)
6772 if test "$MOZ_ENABLE_LIBCONIC"; then
6773     AC_DEFINE(MOZ_ENABLE_LIBCONIC)
6776 AC_SUBST(MOZ_ENABLE_LIBCONIC)
6777 AC_SUBST(LIBCONIC_CFLAGS)
6778 AC_SUBST(LIBCONIC_LIBS)
6780 dnl ========================================================
6781 dnl = Maemo checks
6782 dnl ========================================================
6784 MAEMO_SDK_TARGET_VER=-1
6786 MOZ_ARG_WITH_STRING(maemo-version,
6787 [  --with-maemo-version=MAEMO_SDK_TARGET_VER
6788                         Maemo SDK Version],
6789   MAEMO_SDK_TARGET_VER=$withval)
6791 case "$MAEMO_SDK_TARGET_VER" in
6793     MOZ_PLATFORM_MAEMO=5
6794     ;;
6797     MOZ_PLATFORM_MAEMO=6
6798     ;;
6801     dnl We aren't compiling for Maemo, move on.
6802     ;;
6804     AC_MSG_ERROR([Unknown Maemo Version.  Try setting --with-maemo-version to 5 or 6.])
6805     ;;
6806 esac
6808 if test $MOZ_PLATFORM_MAEMO; then
6809    AC_DEFINE_UNQUOTED([MOZ_PLATFORM_MAEMO], $MOZ_PLATFORM_MAEMO)
6811    if test -z "$MOZ_ENABLE_DBUS"; then
6812        AC_MSG_ERROR([DBus is required when building for Maemo])
6813    fi
6815    MOZ_GFX_OPTIMIZE_MOBILE=1
6816    MOZ_WEBGL_GLX=
6817    MOZ_MAEMO_LIBLOCATION=
6819    if test $MOZ_PLATFORM_MAEMO = 5; then
6820       dnl if we have Xcomposite we should also have Xdamage and Xfixes
6821       AC_CHECK_HEADERS([X11/extensions/Xdamage.h], [],
6822                        [AC_MSG_ERROR([Couldn't find X11/extensions/Xdamage.h which is required for composited plugins.])])
6823       AC_CHECK_LIB(Xcomposite, XCompositeRedirectWindow, [XCOMPOSITE_LIBS="-lXcomposite -lXdamage -lXfixes"],
6824                    [MISSING_X="$MISSING_X -lXcomposite"], $XLIBS)
6826       AC_SUBST(XCOMPOSITE_LIBS)
6828       PKG_CHECK_MODULES(LIBHILDONMIME,libhildonmime, _LIB_FOUND=1, _LIB_FOUND=)
6829       MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONMIME_LIBS"
6830       MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONMIME_CFLAGS"
6831       if test -z "$_LIB_FOUND"; then
6832          AC_MSG_ERROR([Hildon Mime is required when building for Maemo])
6833       fi
6836       PKG_CHECK_MODULES(LIBOSSO,libosso, _LIB_FOUND=1, _LIB_FOUND=)
6837       MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBOSSO_LIBS"
6838       MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBOSSO_CFLAGS"
6839       if test -z "$_LIB_FOUND"; then
6840          AC_MSG_ERROR([LibOSSO is required when building for Maemo])
6841       fi
6843       PKG_CHECK_MODULES(LIBHILDONFM,hildon-fm-2, _LIB_FOUND=1, _LIB_FOUND=)
6844       MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONFM_LIBS"
6845       MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONFM_CFLAGS"
6846       if test -z "$_LIB_FOUND"; then
6847          AC_MSG_ERROR([Hildon FM-2 is required when building for Maemo])
6848       fi
6850    fi
6852    if test "$MOZ_PLATFORM_MAEMO" -gt 5; then
6853      MOZ_THUMB2=1
6854    fi
6856    PKG_CHECK_MODULES(LIBLOCATION,liblocation, _LIB_FOUND=1, _LIB_FOUND=)
6857    MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBLOCATION_LIBS"
6858    MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBLOCATION_CFLAGS"
6859    if test "$_LIB_FOUND"; then
6860       MOZ_MAEMO_LIBLOCATION=1
6861       AC_DEFINE(MOZ_MAEMO_LIBLOCATION)
6862    else
6863       AC_MSG_WARN([Cannot liblocation-dev. Disabling Maemo geolocation.])
6864    fi
6865    AC_SUBST(MOZ_MAEMO_LIBLOCATION)
6867    AC_SUBST(MOZ_PLATFORM_MAEMO_LIBS)
6868    AC_SUBST(MOZ_PLATFORM_MAEMO_CFLAGS)
6871 dnl ========================================================
6872 dnl = Enable building the Thumb2 instruction set
6873 dnl ========================================================
6874 MOZ_ARG_ENABLE_BOOL(thumb2,
6875  [  --enable-thumb2              Enable Thumb2 instruction set],
6876     MOZ_THUMB2=1,
6877     MOZ_THUMB2=)
6879 if test -n "$MOZ_THUMB2"; then
6880   case "$target_cpu" in
6881     arm*)
6882       if test "$GNU_CC"; then
6883         CFLAGS="$CFLAGS -march=armv7-a -mthumb -Wa, -march=armv7-a -Wa, -mthumb"
6884         CXXFLAGS="$CXXFLAGS -march=armv7-a -mthumb -Wa, -march=armv7-a -Wa, -mthumb"
6885         ASFLAGS="$ASFLAGS -march=armv7-a -mthumb"
6886       else
6887         AC_MSG_ERROR([--enable-thumb2 is not supported for non-GNU toolchains])
6888       fi
6889     ;;
6890     *)
6891       AC_MSG_ERROR([--enable-thumb2 is not supported for non-ARM CPU architectures])
6892     ;;
6893   esac
6896 dnl ========================================================
6897 dnl = faststripe theme
6898 dnl ========================================================
6899 MOZ_ARG_ENABLE_BOOL(faststripe,
6900 [  --enable-faststripe  Use faststripe theme],
6901     MOZ_THEME_FASTSTRIPE=1,
6902     MOZ_THEME_FASTSTRIPE= )
6903 AC_SUBST(MOZ_THEME_FASTSTRIPE)
6905 dnl ========================================================
6906 dnl =
6907 dnl = Feature options that require extra sources to be pulled
6908 dnl =
6909 dnl ========================================================
6910 dnl MOZ_ARG_HEADER(Features that require extra sources)
6912 dnl ========================================================
6913 dnl =
6914 dnl = Debugging Options
6915 dnl = 
6916 dnl ========================================================
6917 MOZ_ARG_HEADER(Debugging and Optimizations)
6919 dnl ========================================================
6920 dnl = Disable building with debug info.
6921 dnl = Debugging is OFF by default
6922 dnl ========================================================
6923 if test -z "$MOZ_DEBUG_FLAGS"
6924 then
6925     case "$target" in
6926     *-irix*)
6927         if test "$GNU_CC"; then
6928             GCC_VERSION=`$CC -v 2>&1 | awk '/version/ { print $3 }'`
6929             case "$GCC_VERSION" in
6930             2.95.*)
6931                 MOZ_DEBUG_FLAGS=""
6932                 ;;
6933             *)
6934                 MOZ_DEBUG_FLAGS="-g"
6935                 ;;
6936             esac
6937         else
6938             MOZ_DEBUG_FLAGS="-g"
6939         fi
6940         ;;
6941     *)
6942         MOZ_DEBUG_FLAGS="-g"
6943         ;;
6944     esac
6947 MOZ_ARG_ENABLE_STRING(debug,
6948 [  --enable-debug[=DBG]    Enable building with developer debug info
6949                            (using compiler flags DBG)],
6950 [ if test "$enableval" != "no"; then
6951     MOZ_DEBUG=1
6952     if test -n "$enableval" -a "$enableval" != "yes"; then
6953         MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6954         _MOZ_DEBUG_FLAGS_SET=1
6955     fi
6956   else
6957     MOZ_DEBUG=
6958   fi ],
6959   MOZ_DEBUG=)
6961 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG"
6962 MOZ_ARG_WITH_STRING(debug-label,
6963 [  --with-debug-label=LABELS
6964                            Define DEBUG_<value> for each comma-separated
6965                            value given.],
6966 [ for option in `echo $withval | sed 's/,/ /g'`; do
6967     MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${option}"
6968 done])
6970  case "${target_os}" in
6971     beos*)
6972         MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${USER}"
6973         ;;
6974     msvc*|mks*|cygwin*|mingw*|os2*|wince*|winmo*)
6975         MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
6976         ;;
6977     *) 
6978         MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`$WHOAMI`"
6979         ;;
6980   esac
6981 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DTRACING"
6983 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
6985 if test -n "$MOZ_DEBUG"; then
6986     AC_MSG_CHECKING([for valid debug flags])
6987     _SAVE_CFLAGS=$CFLAGS
6988     CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
6989     AC_TRY_COMPILE([#include <stdio.h>], 
6990         [printf("Hello World\n");],
6991         _results=yes,
6992         _results=no)
6993     AC_MSG_RESULT([$_results])
6994     if test "$_results" = "no"; then
6995         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
6996     fi
6997     CFLAGS=$_SAVE_CFLAGS
7000 dnl ========================================================
7001 dnl enable mobile optimizations
7002 dnl ========================================================
7003 MOZ_ARG_ENABLE_BOOL(mobile-optimize,
7004 [  --enable-mobile-optimize   Enable mobile optimizations],
7005     MOZ_GFX_OPTIMIZE_MOBILE=1)
7007 AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
7009 if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
7010     AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
7013 dnl ========================================================
7014 dnl = Enable code optimization. ON by default.
7015 dnl ========================================================
7016 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
7017         MOZ_OPTIMIZE_FLAGS="-O"
7020 MOZ_ARG_ENABLE_STRING(optimize,
7021 [  --disable-optimize      Disable compiler optimization
7022   --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
7023 [ if test "$enableval" != "no"; then
7024     MOZ_OPTIMIZE=1
7025     if test -n "$enableval" && test "$enableval" != "yes"; then
7026         MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
7027         MOZ_OPTIMIZE=2
7028     fi
7029 else
7030     MOZ_OPTIMIZE=
7031 fi ], MOZ_OPTIMIZE=1)
7033 if test "$COMPILE_ENVIRONMENT"; then
7034 if test -n "$MOZ_OPTIMIZE"; then
7035     AC_MSG_CHECKING([for valid optimization flags])
7036     _SAVE_CFLAGS=$CFLAGS
7037     CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
7038     AC_TRY_COMPILE([#include <stdio.h>], 
7039         [printf("Hello World\n");],
7040         _results=yes,
7041         _results=no)
7042     AC_MSG_RESULT([$_results])
7043     if test "$_results" = "no"; then
7044         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
7045     fi
7046     CFLAGS=$_SAVE_CFLAGS
7048 fi # COMPILE_ENVIRONMENT
7050 AC_SUBST(MOZ_OPTIMIZE)
7051 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
7052 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
7053 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
7055 dnl ========================================================
7056 dnl = (Deprecated) generation of debugger info for specific modules
7057 dnl ========================================================
7058 MOZ_ARG_ENABLE_STRING(debugger-info-modules,
7059 [  --enable-debugger-info-modules
7060                           Enable/disable debugger info for specific modules],
7061 [ if test "$enableval" != "no"; then
7062     AC_MSG_WARN([--enable-debugger-info-modules is deprecated, use --enable-debug-symbols instead])
7063     MOZ_DEBUG_SYMBOLS=1
7064   fi ])
7066 dnl ========================================================
7067 dnl = Enable generation of debug symbols
7068 dnl ========================================================
7069 MOZ_ARG_ENABLE_STRING(debug-symbols,
7070 [  --enable-debug-symbols[=DBG]    Enable debugging symbols
7071                                    (using compiler flags DBG)],
7072 [ if test "$enableval" != "no"; then
7073       MOZ_DEBUG_SYMBOLS=1
7074       if test -n "$enableval" -a "$enableval" != "yes"; then
7075           if test -z "$_MOZ_DEBUG_FLAGS_SET"; then
7076               MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
7077           else
7078               AC_MSG_ERROR([--enable-debug-symbols flags cannot be used with --enable-debug flags])
7079           fi
7080       fi
7081   fi ])
7083 if test -n "$MOZ_DEBUG" -o -n "$MOZ_DEBUG_SYMBOLS"; then
7084     AC_DEFINE(MOZ_DEBUG_SYMBOLS)
7085     export MOZ_DEBUG_SYMBOLS
7088 dnl ========================================================
7089 dnl = Disable any treating of compile warnings as errors
7090 dnl ========================================================
7091 MOZ_ARG_DISABLE_BOOL(warnings-as-errors,
7092 [  --disable-warnings-as-errors       Disable treating of warnings as errors],
7093     MOZ_DISABLE_WARNINGS_AS_ERRORS=1,
7094     MOZ_DISABLE_WARNINGS_AS_ERRORS= )
7095 if test "$MOZ_DISABLE_WARNINGS_AS_ERRORS"; then
7096    WARNINGS_AS_ERRORS=''
7099 dnl ========================================================
7100 dnl = Disable runtime logging checks
7101 dnl ========================================================
7102 MOZ_ARG_DISABLE_BOOL(logging,
7103 [  --disable-logging       Disable logging facilities],
7104     NS_DISABLE_LOGGING=1,
7105     NS_DISABLE_LOGGING= )
7106 if test "$NS_DISABLE_LOGGING"; then
7107     AC_DEFINE(NS_DISABLE_LOGGING)
7108 else
7109     AC_DEFINE(MOZ_LOGGING)
7112 dnl ========================================================
7113 dnl = This will enable logging of addref, release, ctor, dtor.
7114 dnl ========================================================
7115 _ENABLE_LOGREFCNT=42
7116 MOZ_ARG_ENABLE_BOOL(logrefcnt,
7117 [  --enable-logrefcnt      Enable logging of refcounts (default=debug) ],
7118     _ENABLE_LOGREFCNT=1,
7119     _ENABLE_LOGREFCNT= )
7120 if test "$_ENABLE_LOGREFCNT" = "1"; then
7121     AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
7122 elif test -z "$_ENABLE_LOGREFCNT"; then
7123     AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
7126 dnl ========================================================
7127 dnl = Enable trace malloc
7128 dnl ========================================================
7129 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
7130 MOZ_ARG_ENABLE_BOOL(trace-malloc,
7131 [  --enable-trace-malloc   Enable malloc tracing],
7132     NS_TRACE_MALLOC=1,
7133     NS_TRACE_MALLOC= )
7134 if test "$NS_TRACE_MALLOC"; then
7135   # Please, Mr. Linker Man, don't take away our symbol names
7136   MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7137   USE_ELF_DYNSTR_GC=
7138   AC_DEFINE(NS_TRACE_MALLOC)
7140 AC_SUBST(NS_TRACE_MALLOC)
7142 dnl ========================================================
7143 dnl = Enable jemalloc
7144 dnl ========================================================
7145 MOZ_ARG_ENABLE_BOOL(jemalloc,
7146 [  --enable-jemalloc       Replace memory allocator with jemalloc],
7147     MOZ_MEMORY=1,
7148     MOZ_MEMORY=)
7150 if test "$NS_TRACE_MALLOC"; then
7151     MOZ_MEMORY=
7154 if test "$MOZ_MEMORY"; then
7156   dnl Don't try to run compiler tests on Windows  
7157   if test "$OS_ARCH" = "WINNT"; then
7158     if test -z "$HAVE_64BIT_OS"; then
7159       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7160     else
7161       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7162     fi
7163   else
7164     AC_CHECK_SIZEOF([int *], [4])
7165     case "${ac_cv_sizeof_int_p}" in
7166     4)
7167       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7168       ;;
7169     8)
7170       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7171       ;;
7172     *)
7173       AC_MSG_ERROR([Unexpected pointer size])
7174       ;;
7175     esac
7176   fi
7178   AC_DEFINE(MOZ_MEMORY)
7179   if test "x$MOZ_DEBUG" = "x1"; then
7180     AC_DEFINE(MOZ_MEMORY_DEBUG)
7181   fi
7182   dnl The generic feature tests that determine how to compute ncpus are long and
7183   dnl complicated.  Therefore, simply define special cpp variables for the
7184   dnl platforms we have special knowledge of.
7185   case "${target}" in
7186   *-darwin*)
7187     AC_DEFINE(MOZ_MEMORY_DARWIN)
7188     ;;
7189   *-*freebsd*)
7190     AC_DEFINE(MOZ_MEMORY_BSD)
7191     ;;
7192   *-*linux*)
7193     AC_DEFINE(MOZ_MEMORY_LINUX)
7194     ;;
7195   *-netbsd*)
7196     AC_DEFINE(MOZ_MEMORY_BSD)
7197     ;;
7198   *-solaris*)
7199     AC_DEFINE(MOZ_MEMORY_SOLARIS)
7200     ;;
7201   *-msvc*|*-mks*|*-cygwin*|*-mingw*)
7202     AC_DEFINE(MOZ_MEMORY_WINDOWS)
7203     dnl This is sort of awful. Will revisit if we add support for more versions
7204     if test "$CC_VERSION" != "14.00.50727.762" -a "$CC_VERSION" != "15.00.30729.01"; then
7205         AC_MSG_ERROR([Building jemalloc requires exactly Visual C++ 2005 SP1 or 2008 SP1 currently.])
7206     fi
7207     if test -z "$WIN32_CRT_SRC_DIR"; then
7208       if test -z "$VCINSTALLDIR" -o ! -d "$VCINSTALLDIR"; then
7209         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).])
7210       else
7211         WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src"
7212       fi
7213     fi
7214     dnl cpu check
7215     case "${target_cpu}" in
7216     i*86)
7217       _WIN32_CRT_CPU=intel
7218       ;;
7219     *)
7220       AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7221       ;;
7222     esac
7224     if test ! -d "$WIN32_CRT_SRC_DIR"; then
7225       AC_MSG_ERROR([Invalid Win32 CRT source directory: ${WIN32_CRT_SRC_DIR}])
7226     fi
7227     WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd -W`
7228     _objdir_win=`pwd -W`
7229     WIN32_CUSTOM_CRT_DIR="$_objdir_win/memory/jemalloc/crtsrc/build/$_WIN32_CRT_CPU"
7230     MOZ_MEMORY_LDFLAGS="-MANIFEST:NO -LIBPATH:\"$WIN32_CUSTOM_CRT_DIR\" -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt19 -DEFAULTLIB:mozcpp19"
7231     dnl Also pass this to NSPR/NSS
7232     DLLFLAGS="$DLLFLAGS $MOZ_MEMORY_LDFLAGS"
7233     export DLLFLAGS
7234     ;;
7235   *-*wince)
7236     AC_DEFINE(MOZ_MEMORY_WINCE)
7237     AC_DEFINE(MOZ_MEMORY_WINDOWS)
7238     if test -z "$WINCE_WINDOWS_MOBILE"; then
7239       AC_DEFINE(MOZ_MEMORY_WINCE6)
7240     fi
7241     ;;
7242   *-*winmo)
7243     AC_DEFINE(MOZ_MEMORY_WINCE)
7244     AC_DEFINE(MOZ_MEMORY_WINDOWS)
7245     ;;
7246   *-android*)
7247     AC_DEFINE(MOZ_MEMORY_LINUX)
7248     AC_DEFINE(MOZ_MEMORY_ANDROID)
7249     ;;
7250   *)
7251     AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7252     ;;
7253   esac
7255   if test "$OS_ARCH" != "Darwin"; then
7256     dnl NB: this must be kept in sync with jemalloc.h
7257     AC_DEFINE(HAVE_JEMALLOC_VALLOC)
7258     AC_DEFINE(HAVE_JEMALLOC_POSIX_MEMALIGN)
7259     AC_DEFINE(HAVE_JEMALLOC_MEMALIGN)
7260   fi
7262 AC_SUBST(MOZ_MEMORY)
7263 AC_SUBST(MOZ_MEMORY_LDFLAGS)
7264 AC_SUBST(WIN32_CRT_SRC_DIR)
7265 dnl Need to set this for make because NSS doesn't have configure
7266 AC_SUBST(DLLFLAGS)
7268 dnl ========================================================
7269 dnl = Use malloc wrapper lib
7270 dnl ========================================================
7271 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
7272 [  --enable-wrap-malloc    Wrap malloc calls (gnu linker only)],
7273     _WRAP_MALLOC=1,
7274     _WRAP_MALLOC= )
7276 if test -n "$_WRAP_MALLOC"; then
7277     if test "$GNU_CC"; then
7278     WRAP_MALLOC_CFLAGS="${LDFLAGS} -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"
7279     MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) $(WRAP_MALLOC_LIB) -o $@'
7280     fi
7283 dnl ========================================================
7284 dnl = Location of malloc wrapper lib
7285 dnl ========================================================
7286 MOZ_ARG_WITH_STRING(wrap-malloc,
7287 [  --with-wrap-malloc=DIR  Location of malloc wrapper library],
7288     WRAP_MALLOC_LIB=$withval)
7290 dnl ========================================================
7291 dnl = Use TraceVis
7292 dnl ========================================================
7293 MOZ_ARG_ENABLE_BOOL(tracevis,
7294 [  --enable-tracevis       Enable TraceVis tracing tool (default=no)],
7295     MOZ_TRACEVIS=1,
7296     MOZ_TRACEVIS= )
7297 if test -n "$MOZ_TRACEVIS"; then
7298     AC_DEFINE(MOZ_TRACEVIS)
7301 dnl ========================================================
7302 dnl = Use GCTimer
7303 dnl ========================================================
7304 MOZ_ARG_ENABLE_BOOL(gctimer,
7305 [  --enable-gctimer       Enable GC timer (default=no)],
7306     MOZ_GCTIMER=1,
7307     MOZ_GCTIMER= )
7308 if test -n "$MOZ_GCTIMER"; then
7309     AC_DEFINE(MOZ_GCTIMER)
7312 dnl ========================================================
7313 dnl = Use Valgrind
7314 dnl ========================================================
7315 MOZ_ARG_ENABLE_BOOL(valgrind,
7316 [  --enable-valgrind       Enable Valgrind integration hooks (default=no)],
7317     MOZ_VALGRIND=1,
7318     MOZ_VALGRIND= )
7319 if test -n "$MOZ_VALGRIND"; then
7320     AC_CHECK_HEADER([valgrind/valgrind.h], [],
7321         AC_MSG_ERROR(
7322             [--enable-valgrind specified but Valgrind is not installed]))
7323     AC_DEFINE(MOZ_VALGRIND)
7326 dnl ========================================================
7327 dnl jprof
7328 dnl ========================================================
7329 MOZ_ARG_ENABLE_BOOL(jprof,
7330 [  --enable-jprof          Enable jprof profiling tool (needs mozilla/tools/jprof)],
7331     MOZ_JPROF=1,
7332     MOZ_JPROF= )
7333 if test -n "$MOZ_JPROF"; then
7334     AC_DEFINE(MOZ_JPROF)
7337 dnl ========================================================
7338 dnl shark
7339 dnl ========================================================
7340 MOZ_ARG_ENABLE_BOOL(shark,
7341 [  --enable-shark          Enable shark remote profiling (needs CHUD framework)],
7342     MOZ_SHARK=1,
7343     MOZ_SHARK= )
7344 if test -n "$MOZ_SHARK"; then
7345     AC_DEFINE(MOZ_SHARK)
7348 dnl ========================================================
7349 dnl callgrind
7350 dnl ========================================================
7351 MOZ_ARG_ENABLE_BOOL(callgrind,
7352 [  --enable-callgrind      Enable callgrind profiling],
7353     MOZ_CALLGRIND=1,
7354     MOZ_CALLGRIND= )
7355 if test -n "$MOZ_CALLGRIND"; then
7356     AC_DEFINE(MOZ_CALLGRIND)
7359 dnl ========================================================
7360 dnl vtune
7361 dnl ========================================================
7362 MOZ_ARG_ENABLE_BOOL(vtune,
7363 [  --enable-vtune          Enable vtune profiling],
7364     MOZ_VTUNE=1,
7365     MOZ_VTUNE= )
7366 if test -n "$MOZ_VTUNE"; then
7367     AC_DEFINE(MOZ_VTUNE)
7370 dnl ========================================================
7371 dnl Zealous JavaScript GC
7372 dnl ========================================================
7373 MOZ_ARG_ENABLE_BOOL(gczeal,
7374 [  --enable-gczeal          Enable zealous JavaScript GCing],
7375     JS_GC_ZEAL=1,
7376     JS_GC_ZEAL= )
7377 if test -n "$JS_GC_ZEAL"; then
7378     AC_DEFINE(JS_GC_ZEAL)
7381 dnl ========================================================
7382 dnl = Enable static checking using gcc-dehydra
7383 dnl ========================================================
7385 MOZ_ARG_WITH_STRING(static-checking,
7386 [  --with-static-checking=path/to/gcc_dehydra.so
7387                             Enable static checking of code using GCC-dehydra],
7388     DEHYDRA_PATH=$withval,
7389     DEHYDRA_PATH= )
7391 if test -n "$DEHYDRA_PATH"; then
7392     if test ! -f "$DEHYDRA_PATH"; then
7393         AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
7394     fi
7395     AC_DEFINE(NS_STATIC_CHECKING)
7397 AC_SUBST(DEHYDRA_PATH)
7399 dnl ========================================================
7400 dnl = Enable stripping of libs & executables
7401 dnl ========================================================
7402 MOZ_ARG_ENABLE_BOOL(strip,
7403 [  --enable-strip          Enable stripping of libs & executables ],
7404     ENABLE_STRIP=1,
7405     ENABLE_STRIP= )
7407 dnl ========================================================
7408 dnl = Enable stripping of libs & executables when packaging
7409 dnl ========================================================
7410 MOZ_ARG_ENABLE_BOOL(install-strip,
7411 [  --enable-install-strip  Enable stripping of libs & executables when packaging ],
7412     PKG_SKIP_STRIP= ,
7413     PKG_SKIP_STRIP=1)
7415 dnl ========================================================
7416 dnl = --enable-elf-dynstr-gc
7417 dnl ========================================================
7418 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
7419 [  --enable-elf-dynstr-gc  Enable elf dynstr garbage collector (opt builds only)],
7420     USE_ELF_DYNSTR_GC=1,
7421     USE_ELF_DYNSTR_GC= )
7423 dnl ========================================================
7424 dnl = 
7425 dnl = Profiling and Instrumenting
7426 dnl = 
7427 dnl ========================================================
7428 MOZ_ARG_HEADER(Profiling and Instrumenting)
7430 dnl ========================================================
7431 dnl = Enable timeline service, which provides lightweight
7432 dnl = instrumentation of mozilla for performance measurement.
7433 dnl = Timeline is off by default.
7434 dnl ========================================================
7435 MOZ_ARG_ENABLE_BOOL(timeline,
7436 [  --enable-timeline       Enable timeline services ],
7437     MOZ_TIMELINE=1,
7438     MOZ_TIMELINE= )
7439 if test -n "$MOZ_TIMELINE"; then
7440     AC_DEFINE(MOZ_TIMELINE)
7443 dnl ========================================================
7444 dnl = Enable NS_FUNCTION_TIMER, which provides Function 
7445 dnl = timing for identifying code bottlenecks 
7446 dnl = NS_FUNCTION_TIMER is off by default.
7447 dnl ========================================================
7448 MOZ_ARG_ENABLE_BOOL(functiontimer,
7449 [  --enable-functiontimer       Enable NS_FUNCTION_TIMER ],
7450     NS_FUNCTION_TIMER=1,
7451     NS_FUNCTION_TIMER= )
7452 if test -n "$NS_FUNCTION_TIMER"; then
7453     AC_DEFINE(NS_FUNCTION_TIMER)
7456 dnl ========================================================
7457 dnl Turn on reflow counting
7458 dnl ========================================================
7459 MOZ_ARG_ENABLE_BOOL(reflow-perf,
7460 [  --enable-reflow-perf    Enable reflow performance tracing],
7461     MOZ_REFLOW_PERF=1,
7462     MOZ_REFLOW_PERF= )
7463 if test -n "$MOZ_REFLOW_PERF"; then
7464     AC_DEFINE(MOZ_REFLOW_PERF)
7467 dnl ========================================================
7468 dnl Enable code size metrics.
7469 dnl ========================================================
7470 MOZ_ARG_ENABLE_BOOL(codesighs,
7471 [  --enable-codesighs      Enable code size analysis tools],
7472     _ENABLE_CODESIGHS=1,
7473     _ENABLE_CODESIGHS= )
7474 if test -n "$_ENABLE_CODESIGHS"; then
7475     if test -d $srcdir/tools/codesighs; then 
7476         MOZ_MAPINFO=1
7477     else
7478         AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
7479     fi
7482 dnl ========================================================
7483 dnl = Support for Quantify (Windows)
7484 dnl ========================================================
7485 MOZ_ARG_ENABLE_BOOL(quantify,
7486 [  --enable-quantify      Enable Quantify support (Windows only) ],
7487     MOZ_QUANTIFY=1,
7488     MOZ_QUANTIFY= )
7490 dnl ========================================================
7491 dnl = Support for demangling undefined symbols
7492 dnl ========================================================
7493 if test -z "$SKIP_LIBRARY_CHECKS"; then
7494     AC_LANG_SAVE
7495     AC_LANG_CPLUSPLUS
7496     AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
7497     AC_LANG_RESTORE
7500 # Demangle only for debug or trace-malloc builds
7501 MOZ_DEMANGLE_SYMBOLS=
7502 if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
7503     MOZ_DEMANGLE_SYMBOLS=1
7504     AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
7506 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
7508 dnl ========================================================
7509 dnl = Support for gcc stack unwinding (from gcc 3.3)
7510 dnl ========================================================
7511 if test "$HAVE_GCC3_ABI" && test -z "$SKIP_LIBRARY_CHECKS"; then
7512     AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
7515 dnl ========================================================
7516 dnl =
7517 dnl = Misc. Options
7518 dnl = 
7519 dnl ========================================================
7520 MOZ_ARG_HEADER(Misc. Options)
7522 dnl ========================================================
7523 dnl update xterm title
7524 dnl ========================================================
7525 MOZ_ARG_ENABLE_BOOL(xterm-updates,
7526 [  --enable-xterm-updates  Update XTERM titles with current command.],
7527     MOZ_UPDATE_XTERM=1,
7528     MOZ_UPDATE_XTERM= )
7530 dnl =========================================================
7531 dnl = Chrome format
7532 dnl =========================================================
7533 MOZ_ARG_ENABLE_STRING([chrome-format],
7534 [  --enable-chrome-format=jar|flat|both|symlink|omni
7535                           Select FORMAT of chrome files (default=jar)],
7536     MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
7538 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
7539     MOZ_CHROME_FILE_FORMAT=jar
7542 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" && 
7543     test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
7544     test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
7545     test "$MOZ_CHROME_FILE_FORMAT" != "both" &&
7546     test "$MOZ_CHROME_FILE_FORMAT" != "omni"; then
7547     AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, symlink, or omni])
7550 dnl =========================================================
7551 dnl Omnijar packaging (bug 552121)
7552 dnl =========================================================
7553 dnl Omnijar packaging is compatible with flat packaging.
7554 dnl In unpackaged builds, omnijar looks for files as if
7555 dnl things were flat packaged. After packaging, all files
7556 dnl are loaded from a single jar. MOZ_CHROME_FILE_FORMAT
7557 dnl is set to flat since putting files into jars is only
7558 dnl done during packaging with omnijar.
7559 if test "$MOZ_CHROME_FILE_FORMAT" = "omni"; then
7560     MOZ_OMNIJAR=1
7561     AC_DEFINE(MOZ_OMNIJAR)
7562     MOZ_CHROME_FILE_FORMAT=flat
7563 elif test "$MOZ_CHROME_FILE_FORMAT" = "jar"; then
7564     AC_DEFINE(MOZ_CHROME_FILE_FORMAT_JAR)
7567 AC_SUBST(MOZ_OMNIJAR)
7569 dnl ========================================================
7570 dnl = Define default location for MOZILLA_FIVE_HOME
7571 dnl ========================================================
7572 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
7573 [  --with-default-mozilla-five-home
7574                           Set the default value for MOZILLA_FIVE_HOME],
7575 [ val=`echo $withval`
7576   AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
7578 dnl ========================================================
7579 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
7580 dnl ========================================================
7581 MOZ_ARG_WITH_STRING(user-appdir,
7582 [  --with-user-appdir=DIR  Set user-specific appdir (default=.mozilla)],
7583 [ val=`echo $withval`
7584 if echo "$val" | grep "\/" >/dev/null; then
7585     AC_MSG_ERROR("Homedir must be single relative path.")
7586 else 
7587     MOZ_USER_DIR="$val"
7588 fi])
7590 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
7592 dnl ========================================================
7593 dnl = Doxygen configuration
7594 dnl ========================================================
7595 dnl Use commas to specify multiple dirs to this arg
7596 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
7597 MOZ_ARG_WITH_STRING(doc-input-dirs,
7598 [  --with-doc-input-dirs=DIRS
7599                           Header/idl dirs to create docs from],
7600 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7601 AC_SUBST(MOZ_DOC_INPUT_DIRS)
7603 dnl Use commas to specify multiple dirs to this arg
7604 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
7605 MOZ_ARG_WITH_STRING(doc-include-dirs,
7606 [  --with-doc-include-dirs=DIRS  
7607                           Include dirs to preprocess doc headers],
7608 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7609 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
7611 MOZ_DOC_OUTPUT_DIR='./dist/docs'
7612 MOZ_ARG_WITH_STRING(doc-output-dir,
7613 [  --with-doc-output-dir=DIR
7614                           Dir to generate docs into],
7615 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
7616 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
7618 if test -z "$SKIP_COMPILER_CHECKS"; then
7619 dnl ========================================================
7620 dnl =
7621 dnl = Compiler Options
7622 dnl = 
7623 dnl ========================================================
7624 MOZ_ARG_HEADER(Compiler Options)
7626 dnl ========================================================
7627 dnl Check for gcc -pipe support
7628 dnl ========================================================
7629 AC_MSG_CHECKING([for gcc -pipe support])
7630 if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
7631     echo '#include <stdio.h>' > dummy-hello.c
7632     echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
7633     ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
7634     cat dummy-hello.s 2> /dev/null | ${AS_BIN} -o dummy-hello.S - 2>&5
7635     if test $? = 0; then
7636         _res_as_stdin="yes"
7637     else
7638         _res_as_stdin="no"
7639     fi
7640     if test "$_res_as_stdin" = "yes"; then
7641         _SAVE_CFLAGS=$CFLAGS
7642         CFLAGS="$CFLAGS -pipe"
7643         AC_TRY_COMPILE( [ #include <stdio.h> ],
7644             [printf("Hello World\n");],
7645             [_res_gcc_pipe="yes"],
7646             [_res_gcc_pipe="no"] )
7647         CFLAGS=$_SAVE_CFLAGS
7648     fi
7649     if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then
7650         _res="yes";
7651         CFLAGS="$CFLAGS -pipe"
7652         CXXFLAGS="$CXXFLAGS -pipe"
7653     else
7654         _res="no"
7655     fi
7656     rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
7657     AC_MSG_RESULT([$_res])
7658 else
7659     AC_MSG_RESULT([no])
7662 dnl ========================================================
7663 dnl Profile guided optimization
7664 dnl ========================================================
7665 dnl Test for profiling options
7666 dnl Under gcc 3.3, use -fprofile-arcs/-fbranch-probabilities
7667 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
7669 dnl Provide a switch to disable PGO even when called via profiledbuild.
7670 MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
7671 [  --disable-profile-guided-optimization
7672                            Don't build with PGO even if called via make profiledbuild],
7673 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
7674 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
7676 AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
7678 _SAVE_CFLAGS="$CFLAGS"
7679 CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
7681 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
7682 AC_TRY_COMPILE([], [return 0;],
7683                [ PROFILE_GEN_CFLAGS="-fprofile-generate"
7684                  result="yes" ], result="no")
7685 AC_MSG_RESULT([$result])
7687 if test $result = "yes"; then
7688   PROFILE_GEN_LDFLAGS="-fprofile-generate"
7689   PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch -freorder-blocks-and-partition"
7690   PROFILE_USE_LDFLAGS="-fprofile-use"
7691 else
7692   CFLAGS="$_SAVE_CFLAGS -fprofile-arcs"
7693   AC_MSG_CHECKING([whether C compiler supports -fprofile-arcs])
7694   AC_TRY_COMPILE([], [return 0;],
7695                  [ PROFILE_GEN_CFLAGS="-fprofile-arcs"
7696                    result="yes" ], result="no")
7697   AC_MSG_RESULT([$result])
7698   if test $result = "yes"; then
7699     PROFILE_USE_CFLAGS="-fbranch-probabilities"
7700   fi
7701   # don't really care, this is an old GCC
7702   PROFILE_GEN_LDFLAGS=
7703   PROFILE_USE_LDFLAGS=
7706 CFLAGS="$_SAVE_CFLAGS"
7708 if test -n "$INTEL_CC"; then
7709   PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
7710   PROFILE_GEN_LDFLAGS=
7711   PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
7712   PROFILE_USE_LDFLAGS=
7715 dnl Sun Studio on Solaris
7716 if test "$SOLARIS_SUNPRO_CC"; then
7717   PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
7718   PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
7719   PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
7720   PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
7723 AC_SUBST(PROFILE_GEN_CFLAGS)
7724 AC_SUBST(PROFILE_GEN_LDFLAGS)
7725 AC_SUBST(PROFILE_USE_CFLAGS)
7726 AC_SUBST(PROFILE_USE_LDFLAGS)
7728 AC_LANG_CPLUSPLUS
7730 dnl ========================================================
7731 dnl Test for -pedantic bustage
7732 dnl ========================================================
7733 MOZ_ARG_DISABLE_BOOL(pedantic,
7734 [  --disable-pedantic      Issue all warnings demanded by strict ANSI C ],
7735 _PEDANTIC= )
7736 if test "$_PEDANTIC"; then
7737     _SAVE_CXXFLAGS=$CXXFLAGS
7738     CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
7739     AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
7740     AC_TRY_COMPILE([$configure_static_assert_macros],
7741                    [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
7742                    result="no", result="yes" )
7743     AC_MSG_RESULT([$result])
7744     CXXFLAGS="$_SAVE_CXXFLAGS"
7746     case "$result" in
7747     no)
7748         _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
7749         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
7750         ;;
7751     yes)
7752         AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic.  Reconfigure using --disable-pedantic. ])
7753         ;;
7754     esac
7757 dnl ========================================================
7758 dnl Test for correct temporary object destruction order
7759 dnl ========================================================
7760 dnl We want to make sure the compiler follows the C++ spec here as 
7761 dnl xpcom and the string classes depend on it (bug 235381).
7762 AC_MSG_CHECKING([for correct temporary object destruction order])
7763 AC_TRY_RUN([ class A {
7764              public:  A(int& x) : mValue(x) {}
7765                       ~A() { mValue--; }
7766                       operator char**() { return 0; }
7767              private:  int& mValue;
7768              };
7769              void func(char **arg) {}
7770              int m=2;
7771              void test() {
7772                   func(A(m));
7773                   if (m==1) m = 0;
7774              }
7775              int main() {
7776                  test();
7777                  return(m);
7778              }
7779              ],
7780      result="yes", result="no", result="maybe")
7781 AC_MSG_RESULT([$result])
7783 if test "$result" = "no"; then
7784     AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
7787 dnl ========================================================
7788 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
7789 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
7790 dnl raw pointers in nsCOMPtr.h.  (VC++ has the same bug.)
7791 dnl ========================================================
7792 _SAVE_CXXFLAGS=$CXXFLAGS
7793 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
7794 AC_CACHE_CHECK(for correct overload resolution with const and templates,
7795     ac_nscap_nonconst_opeq_bug,
7796     [AC_TRY_COMPILE([
7797                       template <class T>
7798                       class Pointer
7799                         {
7800                         public:
7801                           T* myPtr;
7802                         };
7803                       
7804                       template <class T, class U>
7805                       int operator==(const Pointer<T>& rhs, U* lhs)
7806                         {
7807                           return rhs.myPtr == lhs;
7808                         }
7809                       
7810                       template <class T, class U>
7811                       int operator==(const Pointer<T>& rhs, const U* lhs)
7812                         {
7813                           return rhs.myPtr == lhs;
7814                         }
7815                     ],
7816                     [
7817                       Pointer<int> foo;
7818                       const int* bar;
7819                       return foo == bar;
7820                     ],
7821                     ac_nscap_nonconst_opeq_bug="no",
7822                     ac_nscap_nonconst_opeq_bug="yes")])
7823 CXXFLAGS="$_SAVE_CXXFLAGS"
7825 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
7826     AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
7828 fi # SKIP_COMPILER_CHECKS
7830 dnl ========================================================
7831 dnl C++ rtti
7832 dnl Should be smarter and check that the compiler does indeed have rtti
7833 dnl ========================================================
7835 MOZ_ARG_ENABLE_BOOL(cpp-rtti,
7836 [  --enable-cpp-rtti       Enable C++ RTTI ],
7837 [ _MOZ_USE_RTTI=1 ],
7838 [ _MOZ_USE_RTTI= ])
7840 if test "$_MOZ_USE_RTTI"; then
7841    _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
7842 else
7843    _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
7846 AC_SUBST(_MOZ_RTTI_FLAGS_ON)
7848 dnl ========================================================
7849 dnl C++ exceptions (g++/VC/irix6/Sun only - for now)
7850 dnl Should be smarter and check that the compiler does indeed have exceptions
7851 dnl ========================================================
7852 MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
7853 [  --enable-cpp-exceptions Enable C++ exceptions ],
7854 [ _MOZ_CPP_EXCEPTIONS=1 ],
7855 [ _MOZ_CPP_EXCEPTIONS= ])
7857 if test "$_MOZ_CPP_EXCEPTIONS"; then
7858     _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_ON
7859     AC_DEFINE(MOZ_CPP_EXCEPTIONS)
7860 else
7861     _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_OFF
7864 AC_SUBST(_MOZ_EXCEPTIONS_FLAGS_ON)
7866 # Irix & OSF native compilers do not like exception declarations 
7867 # when exceptions are disabled
7868 if test -n "$MIPSPRO_CXX" -o -n "$COMPAQ_CXX" -o -n "$VACPP"; then
7869     AC_DEFINE(CPP_THROW_NEW, [])
7870 else
7871     AC_DEFINE(CPP_THROW_NEW, [throw()])
7873 AC_LANG_C
7875 dnl ========================================================
7876 dnl =
7877 dnl = Build depencency options
7878 dnl =
7879 dnl ========================================================
7880 MOZ_ARG_HEADER(Build dependencies)
7882 dnl ========================================================
7883 dnl = Do not auto generate dependency info
7884 dnl ========================================================
7885 MOZ_AUTO_DEPS=1
7886 MOZ_ARG_DISABLE_BOOL(auto-deps,
7887 [  --disable-auto-deps     Do not automatically generate dependency info],
7888     MOZ_AUTO_DEPS=,
7889     MOZ_AUTO_DEPS=1)
7891 if test -n "$MOZ_AUTO_DEPS"; then
7892 dnl ========================================================
7893 dnl = Use mkdepend instead of $CC -MD for dependency generation
7894 dnl ========================================================
7895 _cpp_md_flag=
7896 MOZ_ARG_DISABLE_BOOL(md,
7897 [  --disable-md            Do not use compiler-based dependencies ],
7898   [_cpp_md_flag=],
7899   [_cpp_md_flag=1],
7900   [dnl Default is to turn on -MD if using GNU-compatible compilers
7901    if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
7902      _cpp_md_flag=1
7903    fi
7904   dnl Default is to use -xM if using Sun Studio on Solaris
7905    if test "$SOLARIS_SUNPRO_CC"; then
7906      _cpp_md_flag=1
7907    fi])
7908 if test "$_cpp_md_flag"; then
7909   COMPILER_DEPEND=1
7910   if test "$OS_ARCH" = "OpenVMS"; then
7911     _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(basename $(@F)).pp))'
7912   else
7913     _DEPEND_CFLAGS='$(filter-out %/.pp,-Wp,-MD,$(MDDEPDIR)/$(basename $(@F)).pp)'
7914   fi
7915   dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7916   if test "$SOLARIS_SUNPRO_CC"; then
7917     _DEPEND_CFLAGS=
7918   fi
7919 else
7920   COMPILER_DEPEND=
7921   dnl Don't override this for MSVC
7922   if test -z "$_WIN32_MSVC"; then
7923     _USE_CPP_INCLUDE_FLAG=
7924     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7925     _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7926   fi
7928 fi # MOZ_AUTO_DEPS
7929 MDDEPDIR='.deps'
7930 AC_SUBST(MOZ_AUTO_DEPS)
7931 AC_SUBST(COMPILER_DEPEND)
7932 AC_SUBST(MDDEPDIR)
7935 dnl ========================================================
7936 dnl =
7937 dnl = Static Build Options
7938 dnl =
7939 dnl ========================================================
7940 MOZ_ARG_HEADER(Static build options)
7942 MOZ_ARG_ENABLE_BOOL(static,
7943 [  --enable-static         Enable building of internal static libs],
7944     BUILD_STATIC_LIBS=1,
7945     BUILD_STATIC_LIBS=)
7947 MOZ_ARG_ENABLE_BOOL(libxul,
7948 [  --enable-libxul         Enable building of libxul],
7949     MOZ_ENABLE_LIBXUL=1,
7950     MOZ_ENABLE_LIBXUL=)
7952 if test -n "$MOZ_STATIC_BUILD_UNSUPPORTED" -a -n "$BUILD_STATIC_LIBS"; then
7953         AC_MSG_ERROR([--enable-static is not supported for building $MOZ_APP_NAME. You probably want --enable-libxul.])
7956 if test -n "$MOZ_ENABLE_LIBXUL" -a -n "$BUILD_STATIC_LIBS"; then
7957         AC_MSG_ERROR([--enable-libxul is not compatible with --enable-static])
7960 if test -n "$MOZ_IPC" -a -z "$MOZ_ENABLE_LIBXUL"; then
7961     AC_MSG_ERROR([--enable-ipc requires --enable-libxul])
7964 AC_SUBST(LIBXUL_LIBS)
7966 if test -n "$MOZ_ENABLE_LIBXUL"; then
7967     XPCOM_LIBS="$LIBXUL_LIBS"
7968     AC_DEFINE(MOZ_ENABLE_LIBXUL)
7969 else
7970     if test -n "$BUILD_STATIC_LIBS"; then
7971         AC_DEFINE(MOZ_STATIC_BUILD)
7972     fi
7973     XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS"
7976 dnl ========================================================
7977 dnl =
7978 dnl = Standalone module options
7979 dnl = 
7980 dnl ========================================================
7981 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7983 dnl Check for GLib and libIDL.
7984 dnl ========================================================
7985 case "$target_os" in
7986 msvc*|mks*|cygwin*|mingw*|wince*|winmo*)
7987     SKIP_IDL_CHECK="yes"
7988     ;;
7990     SKIP_IDL_CHECK="no"
7991     ;;
7992 esac
7994 if test -z "$COMPILE_ENVIRONMENT"; then
7995     SKIP_IDL_CHECK="yes"
7998 dnl = Allow users to disable libIDL checking for standalone modules
7999 MOZ_ARG_WITHOUT_BOOL(libIDL,
8000 [  --without-libIDL        Skip check for libIDL (standalone modules only)],
8001         SKIP_IDL_CHECK="yes")
8003 if test "$SKIP_IDL_CHECK" = "no"
8004 then
8005     _LIBIDL_FOUND=
8006     if test "$MACOS_SDK_DIR"; then 
8007       dnl xpidl, and therefore libIDL, is only needed on the build host.
8008       dnl Don't build it against the SDK, as that causes problems.
8009       _MACSAVE_CFLAGS="$CFLAGS"
8010       _MACSAVE_LIBS="$LIBS"
8011       _MACSAVE_LDFLAGS="$LDFLAGS"
8012       _MACSAVE_NEXT_ROOT="$NEXT_ROOT"
8013       changequote(,)
8014       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"`
8015       LIBS=`echo $LIBS|sed -e "s?-L${MACOS_SDK_DIR}/usr/lib[^ ]*??g"`
8016       LDFLAGS=`echo $LDFLAGS|sed -e "s?-Wl,-syslibroot,${MACOS_SDK_DIR}??g"`
8017       changequote([,])
8018       unset NEXT_ROOT
8019     fi
8021     if test "$MOZ_ENABLE_GTK2"; then
8022         PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0 glib-2.0 gobject-2.0, _LIBIDL_FOUND=1,_LIBIDL_FOUND=)
8023     fi
8024     dnl if no gtk/libIDL1 or gtk2/libIDL2 combination was found, fall back
8025     dnl to either libIDL1 or libIDL2.
8026     if test -z "$_LIBIDL_FOUND"; then
8027         AM_PATH_LIBIDL($LIBIDL_VERSION,_LIBIDL_FOUND=1)
8028         if test -z "$_LIBIDL_FOUND"; then
8029             PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0,_LIBIDL_FOUND=1)
8030         fi
8031     fi
8032     dnl
8033     dnl If we don't have a libIDL config program & not cross-compiling, 
8034     dnl     look for orbit-config instead.
8035     dnl
8036     if test -z "$_LIBIDL_FOUND" && test -z "$CROSS_COMPILE"; then
8037         MOZ_PATH_PROGS(ORBIT_CONFIG, $ORBIT_CONFIG orbit-config)
8038         if test -n "$ORBIT_CONFIG"; then
8039             AC_MSG_CHECKING([for ORBit libIDL usability])
8040                 _ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags`
8041             _ORBIT_LIBS=`${ORBIT_CONFIG} client --libs`
8042             _ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}`
8043             _ORBIT_LIB_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-L/); } }' -- ${_ORBIT_LIBS}`
8044             LIBIDL_CFLAGS="$_ORBIT_INC_PATH"
8045             LIBIDL_LIBS="$_ORBIT_LIB_PATH -lIDL -lglib"
8046             LIBIDL_CONFIG=
8047             _SAVE_CFLAGS="$CFLAGS"
8048             _SAVE_LIBS="$LIBS"
8049             CFLAGS="$LIBIDL_CFLAGS $CFLAGS"
8050             LIBS="$LIBIDL_LIBS $LIBS"
8051             AC_TRY_RUN([
8052 #include <stdlib.h>
8053 #include <libIDL/IDL.h>
8054 int main() {
8055   char *s;
8056   s=strdup(IDL_get_libver_string());
8057   if(s==NULL) {
8058     exit(1);
8059   }
8060   exit(0);
8062             ], [_LIBIDL_FOUND=1
8063                 result="yes"],
8064                [LIBIDL_CFLAGS=
8065                 LIBIDL_LIBS=
8066                 result="no"],
8067                [_LIBIDL_FOUND=1
8068                 result="maybe"] )
8069             AC_MSG_RESULT($result)
8070             CFLAGS="$_SAVE_CFLAGS"
8071             LIBS="$_SAVE_LIBS"
8072         fi
8073     fi
8074     if test -z "$_LIBIDL_FOUND"; then
8075         AC_MSG_ERROR([libIDL not found.
8076         libIDL $LIBIDL_VERSION or higher is required.])
8077     fi
8078     if test "$MACOS_SDK_DIR"; then
8079       CFLAGS="$_MACSAVE_CFLAGS"
8080       LIBS="$_MACSAVE_LIBS"
8081       LDFLAGS="$_MACSAVE_LDFLAGS"
8082       if test -n "$_MACSAVE_NEXT_ROOT" ; then
8083         export NEXT_ROOT="$_MACSAVE_NEXT_ROOT"
8084       fi
8085     fi
8088 if test -n "$CROSS_COMPILE"; then
8089      if test -z "$HOST_LIBIDL_CONFIG"; then
8090         HOST_LIBIDL_CONFIG="$LIBIDL_CONFIG"
8091     fi
8092     if test -n "$HOST_LIBIDL_CONFIG" && test "$HOST_LIBIDL_CONFIG" != "no"; then
8093         HOST_LIBIDL_CFLAGS=`${HOST_LIBIDL_CONFIG} --cflags`
8094         HOST_LIBIDL_LIBS=`${HOST_LIBIDL_CONFIG} --libs`
8095     else
8096         HOST_LIBIDL_CFLAGS="$LIBIDL_CFLAGS"
8097         HOST_LIBIDL_LIBS="$LIBIDL_LIBS"
8098     fi
8101 if test -z "$SKIP_PATH_CHECKS"; then
8102 if test -z "${GLIB_CFLAGS}" || test -z "${GLIB_LIBS}" ; then
8103     if test "$MOZ_ENABLE_GTK2" || test "$USE_ELF_DYNSTR_GC" ; then
8104         PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
8105     else
8106         AM_PATH_GLIB(${GLIB_VERSION})
8107     fi
8111 if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then
8112     GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
8115 AC_SUBST(LIBIDL_CFLAGS)
8116 AC_SUBST(LIBIDL_LIBS)
8117 AC_SUBST(STATIC_LIBIDL)
8118 AC_SUBST(GLIB_CFLAGS)
8119 AC_SUBST(GLIB_LIBS)
8120 AC_SUBST(GLIB_GMODULE_LIBS)
8121 AC_SUBST(HOST_LIBIDL_CONFIG)
8122 AC_SUBST(HOST_LIBIDL_CFLAGS)
8123 AC_SUBST(HOST_LIBIDL_LIBS)
8125 dnl ========================================================
8126 dnl Check for cairo
8127 dnl ========================================================
8128 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
8130 MOZ_TREE_CAIRO=1
8131 MOZ_ARG_ENABLE_BOOL(system-cairo,
8132 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
8133 MOZ_TREE_CAIRO=,
8134 MOZ_TREE_CAIRO=1 )
8136 # Check for headers defining standard int types.
8137 AC_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
8139 if test "$MOZ_TREE_CAIRO"; then
8140     AC_DEFINE(MOZ_TREE_CAIRO)
8142     # For now we assume that we will have a uint64_t available through
8143     # one of the above headers or mozstdint.h.
8144     AC_DEFINE(HAVE_UINT64_T)
8146     # Define macros for cairo-features.h
8147     if test "$MOZ_X11"; then
8148         XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
8149         XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
8150         PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
8151         PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
8152         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8153         MOZ_ENABLE_CAIRO_FT=1
8154         CAIRO_FT_CFLAGS="$FT2_CFLAGS"
8155     fi
8156     if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
8157         QT_SURFACE_FEATURE="#define CAIRO_HAS_QT_SURFACE 1"
8158     fi
8159     if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
8160         QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
8161         QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
8162         QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
8163     fi
8164     if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
8165         WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
8166         if test -z "$WINCE"; then
8167             WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
8168             if test "$MOZ_WINSDK_TARGETVER" -ge "06010000"; then
8169                 WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
8170                 WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1"
8171                 MOZ_ENABLE_D2D_SURFACE=1
8172                 MOZ_ENABLE_DWRITE_FONT=1
8173             else
8174                 WIN32_DWRITE_FONT_FEATURE=
8175                 WIN32_D2D_SURFACE_FEATURE=
8176             fi
8177         else
8178             WIN32_FONT_FEATURE=
8179             WIN32_DWRITE_FONT_FEATURE=
8180             WIN32_D2D_SURFACE_FEATURE=
8181         fi
8183         AC_TRY_COMPILE([#include <ddraw.h>], [int foo = DDLOCK_WAITNOTBUSY;], HAS_DDRAW=1, HAS_DDRAW=)
8184         if test -z "$HAS_DDRAW"; then
8185             AC_MSG_WARN([DirectDraw ddraw.h header not found or it's missing DDLOCK_WAITNOTBUSY, disabling DirectDraw surface.  If you have an older SDK (such as the CE5 SDK), try copying in ddraw.lib and ddraw.h from the WM6 SDK.])
8186             DDRAW_SURFACE_FEATURE=
8187         else
8188             DDRAW_SURFACE_FEATURE="#define CAIRO_HAS_DDRAW_SURFACE 1"
8189         fi
8191         if test -z "$OGLES_SDK_DIR"; then
8192             OGLES_SURFACE_FEATURE=
8193         else
8194             AC_TRY_COMPILE([
8195               #include <EGL/egl.h>
8196               #include <EGL/eglext.h>
8197               #include <GLES2/gl2.h>
8198               #include <GLES2/gl2ext.h>
8199             ], [ EGLDisplay _cairo_ddraw_egl_dpy = EGL_NO_DISPLAY;], HAS_OGLES=1, HAS_OGLES=)
8200             if test -z "$HAS_OGLES"; then
8201               AC_MSG_WARN([OpenGL ES2 headers not found, disabling OpenGL acceleration surfaces.])
8202               OGLES_SURFACE_FEATURE=
8203             else
8204               OGLES_SURFACE_FEATURE="#define CAIRO_DDRAW_USE_GL 1"
8205             fi
8206         fi
8208         PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
8209     fi
8210     if test "$MOZ_WIDGET_TOOLKIT" = "os2"; then
8211         OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
8212         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8213         PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
8214         MOZ_ENABLE_CAIRO_FT=1
8215         CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
8216         CAIRO_FT_LIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
8217     fi
8218     if test "$MOZ_WIDGET_TOOLKIT" = "beos"; then
8219         PKG_CHECK_MODULES(CAIRO_FT, fontconfig freetype2)
8220         BEOS_SURFACE_FEATURE="#define CAIRO_HAS_BEOS_SURFACE 1"
8221         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8222         MOZ_ENABLE_CAIRO_FT=1
8223     fi
8224     if test "$USE_FC_FREETYPE"; then
8225         FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
8226     fi
8227     AC_SUBST(MOZ_ENABLE_CAIRO_FT)
8228     AC_SUBST(MOZ_ENABLE_DWRITE_FONT)
8229     AC_SUBST(MOZ_ENABLE_D2D_SURFACE)
8230     AC_SUBST(CAIRO_FT_CFLAGS)
8231     AC_SUBST(HAS_OGLES)
8233     if test "$MOZ_DEBUG"; then
8234       SANITY_CHECKING_FEATURE="#define CAIRO_DO_SANITY_CHECKING 1"
8235     else
8236       SANITY_CHECKING_FEATURE="#undef CAIRO_DO_SANITY_CHECKING"
8237     fi
8239     PNG_FUNCTIONS_FEATURE="#define CAIRO_HAS_PNG_FUNCTIONS 1"
8241     AC_SUBST(PS_SURFACE_FEATURE)
8242     AC_SUBST(PDF_SURFACE_FEATURE)
8243     AC_SUBST(SVG_SURFACE_FEATURE)
8244     AC_SUBST(XLIB_SURFACE_FEATURE)
8245     AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
8246     AC_SUBST(QUARTZ_SURFACE_FEATURE)
8247     AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
8248     AC_SUBST(XCB_SURFACE_FEATURE)
8249     AC_SUBST(WIN32_SURFACE_FEATURE)
8250     AC_SUBST(DDRAW_SURFACE_FEATURE)
8251     AC_SUBST(OGLES_SURFACE_FEATURE)    
8252     AC_SUBST(OS2_SURFACE_FEATURE)
8253     AC_SUBST(BEOS_SURFACE_FEATURE)
8254     AC_SUBST(DIRECTFB_SURFACE_FEATURE)
8255     AC_SUBST(FT_FONT_FEATURE)
8256     AC_SUBST(FC_FONT_FEATURE)
8257     AC_SUBST(WIN32_FONT_FEATURE)
8258     AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
8259     AC_SUBST(WIN32_D2D_SURFACE_FEATURE)
8260     AC_SUBST(QUARTZ_FONT_FEATURE)
8261     AC_SUBST(PNG_FUNCTIONS_FEATURE)
8262     AC_SUBST(QT_SURFACE_FEATURE)
8264     if test "$_WIN32_MSVC"; then
8265         MOZ_CAIRO_LIBS='$(DEPTH)/gfx/cairo/cairo/src/mozcairo.lib $(DEPTH)/gfx/cairo/libpixman/src/mozlibpixman.lib'
8266     else
8267         MOZ_CAIRO_LIBS='$(DEPTH)/gfx/cairo/cairo/src/$(LIB_PREFIX)mozcairo.$(LIB_SUFFIX) $(DEPTH)/gfx/cairo/libpixman/src/$(LIB_PREFIX)mozlibpixman.$(LIB_SUFFIX)'" $CAIRO_FT_LIBS"
8269         if test "$MOZ_X11"; then
8270             MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS -lXrender -lfreetype -lfontconfig"
8271         fi
8272     fi
8274     CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
8275     mv -f $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig 2> /dev/null
8277 else
8278    PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION pixman-1 freetype2 fontconfig)
8279    MOZ_CAIRO_CFLAGS=$CAIRO_CFLAGS
8280    MOZ_CAIRO_LIBS=$CAIRO_LIBS
8281    if test "$MOZ_X11"; then
8282         PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
8283         MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
8284         MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
8285    fi
8288 AC_SUBST(MOZ_TREE_CAIRO)
8289 AC_SUBST(MOZ_CAIRO_CFLAGS)
8290 AC_SUBST(MOZ_CAIRO_LIBS)
8292 dnl qcms
8293 dnl ========================================================
8295 QCMS_LIBS='$(DEPTH)/gfx/qcms/$(LIB_PREFIX)mozqcms.$(LIB_SUFFIX)'
8296 AC_SUBST(QCMS_LIBS)
8298 dnl ========================================================
8299 dnl disable xul
8300 dnl ========================================================
8301 MOZ_ARG_DISABLE_BOOL(xul,
8302 [  --disable-xul           Disable XUL],
8303     MOZ_XUL= )
8304 if test "$MOZ_XUL"; then
8305   AC_DEFINE(MOZ_XUL)
8306 else
8307   dnl remove extensions that require XUL
8308   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
8311 AC_SUBST(MOZ_XUL)
8313 dnl ========================================================
8314 dnl disable profile locking
8315 dnl   do no use this in applications that can have more than
8316 dnl   one process accessing the profile directory.
8317 dnl ========================================================
8318 MOZ_ARG_DISABLE_BOOL(profilelocking,
8319 [  --disable-profilelocking           Disable profile locking],
8320     MOZ_PROFILELOCKING=,
8321     MOZ_PROFILELOCKING=1 )
8322 if test "$MOZ_PROFILELOCKING"; then
8323   AC_DEFINE(MOZ_PROFILELOCKING)
8326 dnl ========================================================
8327 dnl disable rdf services
8328 dnl ========================================================
8329 MOZ_ARG_DISABLE_BOOL(rdf,
8330 [  --disable-rdf           Disable RDF],
8331     MOZ_RDF= )
8332 if test "$MOZ_RDF"; then
8333   AC_DEFINE(MOZ_RDF)
8336 AC_SUBST(MOZ_RDF)
8338 dnl ========================================================
8339 dnl necko configuration options
8340 dnl ========================================================
8343 dnl option to disable various necko protocols
8345 MOZ_ARG_ENABLE_STRING(necko-protocols,
8346 [  --enable-necko-protocols[={http,ftp,default,all,none}]
8347                           Enable/disable specific protocol handlers],
8348 [ for option in `echo $enableval | sed 's/,/ /g'`; do
8349     if test "$option" = "yes" || test "$option" = "all"; then
8350         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8351     elif test "$option" = "no" || test "$option" = "none"; then
8352         NECKO_PROTOCOLS=""
8353     elif test "$option" = "default"; then
8354         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8355     elif test `echo "$option" | grep -c \^-` != 0; then
8356         option=`echo $option | sed 's/^-//'`
8357         NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
8358     else
8359         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
8360     fi
8361 done],
8362     NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
8363 dnl Remove dupes
8364 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
8365 AC_SUBST(NECKO_PROTOCOLS)
8366 for p in $NECKO_PROTOCOLS; do
8367     AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
8368 done
8371 dnl option to disable necko's disk cache
8373 MOZ_ARG_DISABLE_BOOL(necko-disk-cache,
8374 [  --disable-necko-disk-cache
8375                           Disable necko disk cache],
8376     NECKO_DISK_CACHE=,
8377     NECKO_DISK_CACHE=1)
8378 AC_SUBST(NECKO_DISK_CACHE)
8379 if test "$NECKO_DISK_CACHE"; then
8380     AC_DEFINE(NECKO_DISK_CACHE)
8384 dnl option to disable necko's wifi scanner
8386 MOZ_ARG_DISABLE_BOOL(necko-wifi,
8387 [  --disable-necko-wifi   Disable necko wifi scanner],
8388     NECKO_WIFI=,
8389     NECKO_WIFI=1
8392 if test "$OS_ARCH" = "OS2"; then
8393   dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566
8394   NECKO_WIFI=
8396 if test "$NECKO_WIFI" -a \
8397         "$OS_ARCH" != "Linux" -a \
8398         "$OS_ARCH" != "Darwin" -a \
8399         "$OS_ARCH" != "SunOS" -a \
8400         "$OS_ARCH" != "WINNT" -a \
8401         "$OS_ARCH" != "WINCE"; then
8402   AC_MSG_ERROR([Necko WiFi scanning not supported on your platform, use --disable-necko-wifi])
8405 if test -z "$SKIP_LIBRARY_CHECKS" -a "$NECKO_WIFI" -a "$OS_ARCH" = "Linux"
8406 then
8407   AC_CHECK_HEADER([iwlib.h])
8408   if test "$ac_cv_header_iwlib_h" != "yes"; then
8409     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])
8410   fi
8413 if test "$NECKO_WIFI"; then
8414   AC_DEFINE(NECKO_WIFI)
8416 AC_SUBST(NECKO_WIFI)
8419 dnl option to disable cookies
8421 MOZ_ARG_DISABLE_BOOL(cookies,
8422 [  --disable-cookies       Disable cookie support],
8423     NECKO_COOKIES=,
8424     NECKO_COOKIES=1)
8425 AC_SUBST(NECKO_COOKIES)
8426 if test "$NECKO_COOKIES"; then
8427     AC_DEFINE(NECKO_COOKIES)
8431 dnl Build jsctypes on the platforms we can, unless it's explicitly disabled.
8433 MOZ_ARG_DISABLE_BOOL(ctypes,
8434 [  --disable-ctypes        Disable js-ctypes],
8435     BUILD_CTYPES=,
8436     BUILD_CTYPES=1)
8437 AC_SUBST(BUILD_CTYPES)
8438 if test "$BUILD_CTYPES"; then
8439   if test "$OS_ARCH" = "WINCE" -a `echo $OS_TEST | grep -ic arm` = 1; then
8440     # Disable ctypes for arm/wince.
8441     BUILD_CTYPES=
8442   else
8443     AC_DEFINE(BUILD_CTYPES)
8444   fi
8447 dnl NECKO_ configuration options are not global
8448 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_"
8450 dnl Only build Mork if it's required
8451 AC_SUBST(MOZ_MORK)
8452 if test "$MOZ_MORK"; then
8453   AC_DEFINE(MOZ_MORK)
8456 dnl Build the lightweight Mork reader if required
8457 AC_SUBST(MOZ_MORKREADER)
8458 if test "$MOZ_MORKREADER"; then
8459   AC_DEFINE(MOZ_MORKREADER)
8462 dnl Build Places if required
8463 if test "$MOZ_PLACES"; then
8464   AC_DEFINE(MOZ_PLACES)
8467 dnl ========================================================
8468 if test "$MOZ_DEBUG" || test "$NS_TRACE_MALLOC"; then
8469     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
8472 dnl ========================================================
8473 dnl =
8474 dnl = Maintainer debug option (no --enable equivalent)
8475 dnl =
8476 dnl ========================================================
8478 AC_SUBST(AR)
8479 AC_SUBST(AR_FLAGS)
8480 AC_SUBST(AR_LIST)
8481 AC_SUBST(AR_EXTRACT)
8482 AC_SUBST(AR_DELETE)
8483 AC_SUBST(AS)
8484 AC_SUBST(ASFLAGS)
8485 AC_SUBST(AS_DASH_C_FLAG)
8486 AC_SUBST(LD)
8487 AC_SUBST(RC)
8488 AC_SUBST(RCFLAGS)
8489 AC_SUBST(WINDRES)
8490 AC_SUBST(IMPLIB)
8491 AC_SUBST(FILTER)
8492 AC_SUBST(BIN_FLAGS)
8493 AC_SUBST(NS_USE_NATIVE)
8494 AC_SUBST(MOZ_WIDGET_TOOLKIT)
8495 AC_SUBST(MOZ_UPDATE_XTERM)
8496 AC_SUBST(MINIMO)
8497 AC_SUBST(MOZ_PLATFORM_MAEMO)
8498 AC_SUBST(MOZ_AUTH_EXTENSION)
8499 AC_SUBST(MOZ_MATHML)
8500 AC_SUBST(MOZ_PERMISSIONS)
8501 AC_SUBST(MOZ_XTF)
8502 AC_SUBST(MOZ_NO_INSPECTOR_APIS)
8503 AC_SUBST(MOZ_PREF_EXTENSIONS)
8504 AC_SUBST(MOZ_SVG)
8505 AC_SUBST(MOZ_SMIL)
8506 AC_SUBST(MOZ_XSLT_STANDALONE)
8507 AC_SUBST(MOZ_JS_LIBS)
8508 AC_SUBST(MOZ_PSM)
8509 AC_SUBST(MOZ_DEBUG)
8510 AC_SUBST(MOZ_DEBUG_SYMBOLS)
8511 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
8512 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
8513 AC_SUBST(MOZ_DEBUG_FLAGS)
8514 AC_SUBST(MOZ_DEBUG_LDFLAGS)
8515 AC_SUBST(WARNINGS_AS_ERRORS)
8516 AC_SUBST(MOZ_EXTENSIONS)
8517 AC_SUBST(MOZ_IMG_DECODERS)
8518 AC_SUBST(MOZ_IMG_ENCODERS)
8519 AC_SUBST(MOZ_JSDEBUGGER)
8520 AC_SUBST(MOZ_PLUGINS)
8521 AC_SUBST(MOZ_LOG_REFCNT)
8522 AC_SUBST(MOZ_LEAKY)
8523 AC_SUBST(MOZ_JPROF)
8524 AC_SUBST(MOZ_SHARK)
8525 AC_SUBST(MOZ_CALLGRIND)
8526 AC_SUBST(MOZ_VTUNE)
8527 AC_SUBST(MOZ_JSLOADER)
8528 AC_SUBST(MOZ_USE_NATIVE_UCONV)
8529 AC_SUBST(MOZ_QUANTIFY)
8530 AC_SUBST(LIBICONV)
8531 AC_SUBST(MOZ_PLACES)
8532 AC_SUBST(MOZ_PLACES_BOOKMARKS)
8533 AC_SUBST(MOZ_STORAGE)
8534 AC_SUBST(MOZ_TOOLKIT_SEARCH)
8535 AC_SUBST(MOZ_FEEDS)
8536 AC_SUBST(NS_PRINTING)
8537 AC_SUBST(MOZ_WEBGL)
8538 AC_SUBST(MOZ_HELP_VIEWER)
8540 AC_SUBST(MOZ_JAVAXPCOM)
8541 AC_SUBST(JAVA_INCLUDE_PATH)
8542 AC_SUBST(JAVA)
8543 AC_SUBST(JAVAC)
8544 AC_SUBST(JAR)
8546 AC_SUBST(MOZ_PROFILELOCKING)
8548 AC_SUBST(HAVE_XIE)
8549 AC_SUBST(MOZ_XIE_LIBS)
8550 AC_SUBST(MOZ_ENABLE_POSTSCRIPT)
8552 AC_SUBST(BUILD_STATIC_LIBS)
8553 AC_SUBST(MOZ_ENABLE_LIBXUL)
8554 AC_SUBST(ENABLE_TESTS)
8555 AC_SUBST(IBMBIDI)
8556 AC_SUBST(MOZ_UNIVERSALCHARDET)
8557 AC_SUBST(ACCESSIBILITY)
8558 AC_SUBST(MOZ_VIEW_SOURCE)
8559 AC_SUBST(MOZ_SPELLCHECK)
8560 AC_SUBST(MOZ_USER_DIR)
8561 AC_SUBST(MOZ_CRASHREPORTER)
8563 AC_SUBST(ENABLE_STRIP)
8564 AC_SUBST(PKG_SKIP_STRIP)
8565 AC_SUBST(USE_ELF_DYNSTR_GC)
8566 AC_SUBST(INCREMENTAL_LINKER)
8567 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
8568 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
8570 AC_SUBST(MOZ_FIX_LINK_PATHS)
8571 AC_SUBST(XPCOM_LIBS)
8572 AC_SUBST(XPCOM_FROZEN_LDOPTS)
8573 AC_SUBST(XPCOM_GLUE_LDOPTS)
8574 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
8576 AC_SUBST(USE_DEPENDENT_LIBS)
8578 AC_SUBST(MOZ_BUILD_ROOT)
8579 AC_SUBST(MOZ_OS2_TOOLS)
8580 AC_SUBST(MOZ_OS2_USE_DECLSPEC)
8582 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
8583 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
8584 AC_SUBST(MOZ_TIMELINE)
8585 AC_SUBST(OGLES_SDK_DIR)
8587 AC_SUBST(MOZ_APP_NAME)
8588 AC_SUBST(MOZ_APP_DISPLAYNAME)
8589 AC_SUBST(MOZ_APP_VERSION)
8590 AC_SUBST(MOZ_APP_UA_EXTRA)
8591 AC_SUBST(FIREFOX_VERSION)
8593 AC_SUBST(MOZ_PKG_SPECIAL)
8595 AC_SUBST(MOZILLA_OFFICIAL)
8597 dnl win32 options
8598 AC_SUBST(MOZ_MAPINFO)
8599 AC_SUBST(MOZ_BROWSE_INFO)
8600 AC_SUBST(MOZ_TOOLS_DIR)
8601 AC_SUBST(CYGWIN_WRAPPER)
8602 AC_SUBST(AS_PERL)
8603 AC_SUBST(WIN32_REDIST_DIR)
8604 AC_SUBST(PYTHON)
8606 AC_SUBST(WINCE)
8607 AC_SUBST(WINCE_SDK_DIR)
8608 AC_SUBST(WINCE_WINDOWS_MOBILE)
8610 dnl Echo the CFLAGS to remove extra whitespace.
8611 CFLAGS=`echo \
8612         $_WARNINGS_CFLAGS \
8613         $CFLAGS`
8615 CXXFLAGS=`echo \
8616         $_MOZ_RTTI_FLAGS \
8617         $_MOZ_EXCEPTIONS_FLAGS \
8618         $_WARNINGS_CXXFLAGS \
8619         $CXXFLAGS`
8621 COMPILE_CFLAGS=`echo \
8622     $_DEFINES_CFLAGS \
8623         $_DEPEND_CFLAGS \
8624     $COMPILE_CFLAGS`
8626 COMPILE_CXXFLAGS=`echo \
8627     $_DEFINES_CXXFLAGS \
8628         $_DEPEND_CFLAGS \
8629     $COMPILE_CXXFLAGS`
8631 AC_SUBST(SYSTEM_MAKEDEPEND)
8632 AC_SUBST(SYSTEM_LIBXUL)
8633 AC_SUBST(SYSTEM_JPEG)
8634 AC_SUBST(SYSTEM_PNG)
8635 AC_SUBST(SYSTEM_ZLIB)
8636 AC_SUBST(SYSTEM_BZ2)
8638 AC_SUBST(JPEG_CFLAGS)
8639 AC_SUBST(JPEG_LIBS)
8640 AC_SUBST(ZLIB_CFLAGS)
8641 AC_SUBST(ZLIB_LIBS)
8642 AC_SUBST(BZ2_CFLAGS)
8643 AC_SUBST(BZ2_LIBS)
8644 AC_SUBST(PNG_CFLAGS)
8645 AC_SUBST(PNG_LIBS)
8647 AC_SUBST(MOZ_JPEG_CFLAGS)
8648 AC_SUBST(MOZ_JPEG_LIBS)
8649 AC_SUBST(MOZ_ZLIB_CFLAGS)
8650 AC_SUBST(MOZ_ZLIB_LIBS)
8651 AC_SUBST(MOZ_BZ2_CFLAGS)
8652 AC_SUBST(MOZ_BZ2_LIBS)
8653 AC_SUBST(MOZ_PNG_CFLAGS)
8654 AC_SUBST(MOZ_PNG_LIBS)
8656 AC_SUBST(NSPR_CFLAGS)
8657 AC_SUBST(NSPR_LIBS)
8658 AC_SUBST(MOZ_NATIVE_NSPR)
8660 AC_SUBST(NSS_CFLAGS)
8661 AC_SUBST(NSS_LIBS)
8662 AC_SUBST(NSS_DEP_LIBS)
8663 AC_SUBST(MOZ_NATIVE_NSS)
8664 AC_SUBST(NSS_DISABLE_DBM)
8666 AC_SUBST(CFLAGS)
8667 AC_SUBST(CXXFLAGS)
8668 AC_SUBST(CPPFLAGS)
8669 AC_SUBST(COMPILE_CFLAGS)
8670 AC_SUBST(COMPILE_CXXFLAGS)
8671 AC_SUBST(LDFLAGS)
8672 AC_SUBST(LIBS)
8673 AC_SUBST(CROSS_COMPILE)
8674 AC_SUBST(WCHAR_CFLAGS)
8676 AC_SUBST(HOST_CC)
8677 AC_SUBST(HOST_CXX)
8678 AC_SUBST(HOST_CFLAGS)
8679 AC_SUBST(HOST_CXXFLAGS)
8680 AC_SUBST(HOST_OPTIMIZE_FLAGS)
8681 AC_SUBST(HOST_AR)
8682 AC_SUBST(HOST_AR_FLAGS)
8683 AC_SUBST(HOST_LD)
8684 AC_SUBST(HOST_RANLIB)
8685 AC_SUBST(HOST_NSPR_MDCPUCFG)
8686 AC_SUBST(HOST_BIN_SUFFIX)
8687 AC_SUBST(HOST_OS_ARCH)
8689 AC_SUBST(TARGET_CPU)
8690 AC_SUBST(TARGET_VENDOR)
8691 AC_SUBST(TARGET_OS)
8692 AC_SUBST(TARGET_NSPR_MDCPUCFG)
8693 AC_SUBST(TARGET_MD_ARCH)
8694 AC_SUBST(TARGET_XPCOM_ABI)
8695 AC_SUBST(OS_TARGET)
8696 AC_SUBST(OS_ARCH)
8697 AC_SUBST(OS_RELEASE)
8698 AC_SUBST(OS_TEST)
8700 AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
8701 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8703 AC_SUBST(WRAP_MALLOC_CFLAGS)
8704 AC_SUBST(WRAP_MALLOC_LIB)
8705 AC_SUBST(MKSHLIB)
8706 AC_SUBST(MKCSHLIB)
8707 AC_SUBST(MKSHLIB_FORCE_ALL)
8708 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8709 AC_SUBST(DSO_CFLAGS)
8710 AC_SUBST(DSO_PIC_CFLAGS)
8711 AC_SUBST(DSO_LDOPTS)
8712 AC_SUBST(LIB_PREFIX)
8713 AC_SUBST(DLL_PREFIX)
8714 AC_SUBST(DLL_SUFFIX)
8715 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8716 AC_SUBST(LIB_SUFFIX)
8717 AC_SUBST(OBJ_SUFFIX)
8718 AC_SUBST(BIN_SUFFIX)
8719 AC_SUBST(ASM_SUFFIX)
8720 AC_SUBST(IMPORT_LIB_SUFFIX)
8721 AC_SUBST(USE_N32)
8722 AC_SUBST(CC_VERSION)
8723 AC_SUBST(CXX_VERSION)
8724 AC_SUBST(MSMANIFEST_TOOL)
8725 AC_SUBST(NS_ENABLE_TSF)
8726 AC_SUBST(MOZ_NSS_PATCH)
8728 if test "$USING_HCC"; then
8729    CC='${topsrcdir}/build/hcc'
8730    CC="$CC '$_OLDCC'"
8731    CXX='${topsrcdir}/build/hcpp'
8732    CXX="$CXX '$_OLDCXX'"
8733    AC_SUBST(CC)
8734    AC_SUBST(CXX)
8737 dnl Check for missing components
8738 if test "$COMPILE_ENVIRONMENT"; then
8739 if test "$MOZ_X11"; then
8740     dnl ====================================================
8741     dnl = Check if X headers exist
8742     dnl ====================================================
8743     _SAVE_CFLAGS=$CFLAGS
8744     CFLAGS="$CFLAGS $XCFLAGS"
8745     AC_TRY_COMPILE([
8746         #include <stdio.h>
8747         #include <stdlib.h>
8748         #include <X11/Xlib.h>
8749         #include <X11/Intrinsic.h>
8750     ],
8751     [
8752         Display *dpy = 0;
8753         if ((dpy = XOpenDisplay(NULL)) == NULL) {
8754             fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8755             exit(1);
8756         }
8757     ], [], 
8758     [ AC_MSG_ERROR([Could not compile basic X program.]) ])
8759     CFLAGS="$_SAVE_CFLAGS"
8761     if test ! -z "$MISSING_X"; then
8762         AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8763     fi
8765 fi # MOZ_X11
8767 dnl Check for headers, etc. needed by WebGL.
8768 if test -n "$MOZ_WEBGL_GLX"; then
8769     AC_CHECK_HEADER(GL/glx.h)
8770     if test "$ac_cv_header_GL_glx_h" != "yes"; then
8771         AC_MSG_ERROR([Can't find header GL/glx.h for WebGL (install mesa-common-dev (Ubuntu), mesa-libGL-devel (Fedora), or Mesa (SuSE))])
8772     fi
8773 fi # MOZ_WEBGL_GLX
8774 fi # COMPILE_ENVIRONMENT
8776 if test "$USE_FC_FREETYPE"; then
8777     if test "$COMPILE_ENVIRONMENT"; then
8778         _SAVE_CPPFLAGS="$CPPFLAGS"
8779         CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
8780         AC_CHECK_HEADERS(fontconfig/fcfreetype.h, , 
8781             [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)])
8782         CPPFLAGS="$_SAVE_CPPFLAGS"
8783     else
8784         AC_DEFINE(HAVE_FONTCONFIG_FCFREETYPE_H)
8785     fi
8788 dnl Set various defines and substitutions
8789 dnl ========================================================
8791 if test "$OS_ARCH" = "BeOS"; then
8792   AC_DEFINE(XP_BEOS)
8793 elif test "$OS_ARCH" = "Darwin"; then
8794   AC_DEFINE(XP_UNIX)
8795   AC_DEFINE(UNIX_ASYNC_DNS)
8796 elif test "$OS_ARCH" = "OpenVMS"; then
8797   AC_DEFINE(XP_UNIX)
8798 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
8799   AC_DEFINE(XP_UNIX)
8800   AC_DEFINE(UNIX_ASYNC_DNS)
8803 if test "$MOZ_DEBUG"; then
8804     AC_DEFINE(MOZ_REFLOW_PERF)
8805     AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8808 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
8809     AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8810     ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8811     ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8812     ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8813     ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8814     AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8815     AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8816     AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8819 dnl ========================================================
8820 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
8821 dnl ========================================================
8822 case "$host_os" in
8823 mingw*)
8824     WIN_TOP_SRC=`cd $srcdir; pwd -W`
8825     ;;
8826 cygwin*|msvc*|mks*)
8827     HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
8828     HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
8829     CC="\$(CYGWIN_WRAPPER) $CC"
8830     CXX="\$(CYGWIN_WRAPPER) $CXX"
8831     CPP="\$(CYGWIN_WRAPPER) $CPP"
8832     LD="\$(CYGWIN_WRAPPER) $LD"
8833     AS="\$(CYGWIN_WRAPPER) $AS"
8834     RC="\$(CYGWIN_WRAPPER) $RC"
8835     MIDL="\$(CYGWIN_WRAPPER) $MIDL"
8836     CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
8837     WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
8838     ;;
8839 esac
8841 AC_SUBST(CYGDRIVE_MOUNT)
8842 AC_SUBST(WIN_TOP_SRC)
8844 AC_SUBST(MOZILLA_VERSION)
8846 AC_SUBST(ac_configure_args)
8848 dnl Spit out some output
8849 dnl ========================================================
8851 dnl The following defines are used by xpcom
8852 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8853 CPP_THROW_NEW
8854 HAVE_CPP_2BYTE_WCHAR_T
8855 HAVE_CPP_ACCESS_CHANGING_USING
8856 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8857 HAVE_CPP_BOOL
8858 HAVE_CPP_CHAR16_T
8859 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8860 HAVE_CPP_EXPLICIT
8861 HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
8862 HAVE_CPP_NAMESPACE_STD
8863 HAVE_CPP_NEW_CASTS
8864 HAVE_CPP_PARTIAL_SPECIALIZATION
8865 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8866 HAVE_CPP_TYPENAME
8867 HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL
8868 HAVE_STATVFS
8869 NEED_CPP_UNUSED_IMPLEMENTATIONS
8870 NEW_H
8871 HAVE_GETPAGESIZE
8872 HAVE_ICONV
8873 HAVE_ICONV_WITH_CONST_INPUT
8874 HAVE_MBRTOWC
8875 HAVE_SYS_MOUNT_H
8876 HAVE_SYS_VFS_H
8877 HAVE_WCRTOMB
8880 AC_CONFIG_HEADER(
8881 netwerk/necko-config.h
8882 xpcom/xpcom-config.h
8883 xpcom/xpcom-private.h
8886 # Save the defines header file before autoconf removes it.
8887 # (Do not add AC_DEFINE calls after this line.)
8888   _CONFIG_TMP=confdefs-tmp.h
8889   _CONFIG_DEFS_H=mozilla-config.h
8891   cat > $_CONFIG_TMP <<\EOF
8892 /* List of defines generated by configure. Included with preprocessor flag,
8893  * -include, to avoid long list of -D defines on the compile command-line.
8894  * Do not edit.
8895  */
8897 #ifndef _MOZILLA_CONFIG_H_
8898 #define _MOZILLA_CONFIG_H_
8901 _EGREP_PATTERN='^#define ('
8902 if test -n "$_NON_GLOBAL_ACDEFINES"; then
8903     for f in $_NON_GLOBAL_ACDEFINES; do
8904         _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
8905     done
8907 _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
8909   sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
8911   cat >> $_CONFIG_TMP <<\EOF
8913 #endif /* _MOZILLA_CONFIG_H_ */
8917   # Only write mozilla-config.h when something changes (or it doesn't exist)
8918   if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
8919     rm $_CONFIG_TMP
8920   else
8921     AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
8922     mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
8924     echo ==== $_CONFIG_DEFS_H =================================
8925     cat $_CONFIG_DEFS_H
8926   fi
8928 dnl Probably shouldn't call this manually but we always want the output of DEFS
8929 rm -f confdefs.h.save
8930 mv confdefs.h confdefs.h.save
8931 egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
8932 AC_OUTPUT_MAKE_DEFS()
8933 MOZ_DEFINES=$DEFS
8934 AC_SUBST(MOZ_DEFINES)
8935 rm -f confdefs.h
8936 mv confdefs.h.save confdefs.h
8938 dnl Load the list of Makefiles to generate.
8939 dnl   To add new Makefiles, edit allmakefiles.sh.
8940 dnl   allmakefiles.sh sets the variable, MAKEFILES.
8941 . ${srcdir}/allmakefiles.sh
8942 dnl 
8943 dnl Run a perl script to quickly create the makefiles.
8944 dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
8945 dnl   for the files it cannot handle correctly. This way, config.status
8946 dnl   will handle these files.
8947 dnl If it fails, nothing is set and config.status will run as usual.
8949 dnl This does not change the $MAKEFILES variable.
8951 dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
8953 if test -z "${AS_PERL}"; then
8954 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
8955 else
8956 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
8958 . ./conftest.sh
8959 rm conftest.sh
8961 echo $MAKEFILES > unallmakefiles
8963 mv -f config/autoconf.mk config/autoconf.mk.orig 2> /dev/null
8965 AC_OUTPUT($MAKEFILES)
8967 dnl Prevent the regeneration of cairo-features.h forcing rebuilds of gfx stuff
8968 if test "$CAIRO_FEATURES_H"; then
8969   if cmp -s $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig; then
8970     echo "$CAIRO_FEATURES_H is unchanged"
8971     mv -f "$CAIRO_FEATURES_H".orig "$CAIRO_FEATURES_H" 2> /dev/null
8972   else
8973     rm -f "$CAIRO_FEATURES_H".orig 2> /dev/null
8974   fi
8977 dnl ========================================================
8978 dnl = Setup a nice relatively clean build environment for
8979 dnl = sub-configures.
8980 dnl ========================================================
8981 CC="$_SUBDIR_CC" 
8982 CXX="$_SUBDIR_CXX" 
8983 CFLAGS="$_SUBDIR_CFLAGS" 
8984 CPPFLAGS="$_SUBDIR_CPPFLAGS"
8985 CXXFLAGS="$_SUBDIR_CXXFLAGS"
8986 LDFLAGS="$_SUBDIR_LDFLAGS"
8987 HOST_CC="$_SUBDIR_HOST_CC" 
8988 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
8989 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
8992 unset MAKEFILES
8993 unset CONFIG_FILES
8995 # No need to run subconfigures when building with LIBXUL_SDK_DIR
8996 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
8998 if test -z "$MOZ_NATIVE_NSPR"; then
8999     ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
9000     if test -z "$MOZ_DEBUG"; then
9001         ac_configure_args="$ac_configure_args --disable-debug"
9002     fi
9003     if test "$MOZ_OPTIMIZE" = "1"; then
9004         ac_configure_args="$ac_configure_args --enable-optimize"
9005     fi
9006     if test "$OS_ARCH" = "WINNT" && test "$NS_TRACE_MALLOC"; then
9007        ac_configure_args="$ac_configure_args --enable-debug --disable-optimize"
9008     fi
9009     if test -n "$HAVE_64BIT_OS"; then
9010         ac_configure_args="$ac_configure_args --enable-64bit"
9011     fi
9012     if test -n "$USE_ARM_KUSER"; then
9013         ac_configure_args="$ac_configure_args --with-arm-kuser"
9014     fi
9015     if test -n "$MOZ_THUMB2"; then
9016         ac_configure_args="$ac_configure_args --enable-thumb2"
9017     fi
9018     AC_OUTPUT_SUBDIRS(nsprpub)
9019     ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9022 if test -z "$MOZ_NATIVE_NSPR"; then
9023     # Hack to deal with the fact that we use NSPR_CFLAGS everywhere
9024     AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
9025     if test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE"; then
9026        NSPR_LIBS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --libdir=$LIBXUL_DIST/lib --libs`
9027        $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $NSPR_LIBS'" config/autoconf.mk
9028        NSPR_CFLAGS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --includedir=$LIBXUL_DIST/include/nspr --cflags`
9029        $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $NSPR_CFLAGS'" config/autoconf.mk
9030     fi
9031     rm -f config/autoconf.mk.bak
9034 # Run the SpiderMonkey 'configure' script.
9035 dist=$MOZ_BUILD_ROOT/dist
9036 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9037 ac_configure_args="$ac_configure_args --enable-threadsafe"
9038 if test "$BUILD_CTYPES"; then
9039     # Build js-ctypes on the platforms we can.
9040     ac_configure_args="$ac_configure_args --enable-ctypes"
9042 if test -z "$MOZ_NATIVE_NSPR"; then
9043     ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
9044     ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
9046 ac_configure_args="$ac_configure_args --with-dist-dir=../../dist"
9047 ac_configure_args="$ac_configure_args --prefix=$dist"
9048 ac_configure_args="$ac_configure_args --with-sync-build-files=$_topsrcdir"
9049 if test "$MOZ_MEMORY"; then
9050    ac_configure_args="$ac_configure_args --enable-jemalloc"
9051    if test -n "$MOZ_MEMORY_LDFLAGS"; then
9052      export MOZ_MEMORY_LDFLAGS
9053    fi
9055 AC_OUTPUT_SUBDIRS(js/src)
9056 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9058 fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR
9060 dnl Prevent the regeneration of autoconf.mk forcing rebuilds of the world
9061 dnl Needs to be at the end to respect possible changes from NSPR configure
9062 if cmp -s config/autoconf.mk config/autoconf.mk.orig; then
9063   echo "config/autoconf.mk is unchanged"
9064   mv -f config/autoconf.mk.orig config/autoconf.mk 2> /dev/null
9065 else
9066   rm -f config/autoconf.mk.orig 2> /dev/null