Bug 575870 - Enable the firefox button on xp themed, classic, and aero basic. r=dao...
[mozilla-central.git] / configure.in
blobe59aaf1548c660def3ce78f79b5feafab84725e8
1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*-
2 dnl vi: set tabstop=4 shiftwidth=4 expandtab:
3 dnl ***** BEGIN LICENSE BLOCK *****
4 dnl Version: MPL 1.1/GPL 2.0/LGPL 2.1
5 dnl
6 dnl The contents of this file are subject to the Mozilla Public License Version
7 dnl 1.1 (the "License"); you may not use this file except in compliance with
8 dnl the License. You may obtain a copy of the License at
9 dnl http://www.mozilla.org/MPL/
10 dnl
11 dnl Software distributed under the License is distributed on an "AS IS" basis,
12 dnl WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13 dnl for the specific language governing rights and limitations under the
14 dnl License.
15 dnl
16 dnl The Original Code is this file as it was released upon August 6, 1998.
17 dnl
18 dnl The Initial Developer of the Original Code is
19 dnl Christopher Seawood.
20 dnl Portions created by the Initial Developer are Copyright (C) 1998-2001
21 dnl the Initial Developer. All Rights Reserved.
22 dnl
23 dnl Contributor(s):
24 dnl   Jamie Zawinski <jwz@jwz.org>
25 dnl   gettimeofday args check
26 dnl   Christopher Blizzard <blizzard@appliedtheory.com>
27 dnl   gnomefe update & enable-pthreads
28 dnl   Ramiro Estrugo <ramiro@netscape.com>
29 dnl   X11 makedepend support
30 dnl   Insure support.
31 dnl   Henry Sobotka <sobotka@axess.com>
32 dnl   OS/2 support
33 dnl   Dan Mosedale <dmose@mozilla.org>
34 dnl   LDAP support
35 dnl   Seth Spitzer <sspitzer@netscape.com>
36 dnl   xpctools support
37 dnl   Benjamin Smedberg <benjamin@smedbergs.us>
38 dnl   Howard Chu <hyc@symas.com>
39 dnl   MSYS support
40 dnl   Mark Mentovai <mark@moxienet.com>:
41 dnl   Mac OS X 10.4 support
42 dnl   Giorgio Maone <g.maone@informaction.com>
43 dnl   MSVC l10n compatible version check
44 dnl   Ben Turner <mozilla@songbirdnest.com>
45 dnl   Windows x64 support
46 dnl   Makoto Kato <m_kato@ga2.so-net.ne.jp>
47 dnl
48 dnl Alternatively, the contents of this file may be used under the terms of
49 dnl either the GNU General Public License Version 2 or later (the "GPL"), or
50 dnl the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
51 dnl in which case the provisions of the GPL or the LGPL are applicable instead
52 dnl of those above. If you wish to allow use of your version of this file only
53 dnl under the terms of either the GPL or the LGPL, and not to allow others to
54 dnl use your version of this file under the terms of the MPL, indicate your
55 dnl decision by deleting the provisions above and replace them with the notice
56 dnl and other provisions required by the GPL or the LGPL. If you do not delete
57 dnl the provisions above, a recipient may use your version of this file under
58 dnl the terms of any one of the MPL, the GPL or the LGPL.
59 dnl
60 dnl ***** END LICENSE BLOCK *****
62 dnl Process this file with autoconf to produce a configure script.
63 dnl ========================================================
65 AC_PREREQ(2.13)
66 AC_INIT(config/config.mk)
67 AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
68 AC_CANONICAL_SYSTEM
69 TARGET_CPU="${target_cpu}"
70 TARGET_VENDOR="${target_vendor}"
71 TARGET_OS="${target_os}"
73 MOZ_DEB_TIMESTAMP=`date +"%a, %d  %b %Y %T %z"   2>&1` 
74 AC_SUBST(MOZ_DEB_TIMESTAMP)
76 dnl ========================================================
77 dnl =
78 dnl = Don't change the following two lines.  Doing so breaks:
79 dnl =
80 dnl = CFLAGS="-foo" ./configure
81 dnl =
82 dnl ========================================================
83 CFLAGS="${CFLAGS=}"
84 CPPFLAGS="${CPPFLAGS=}"
85 CXXFLAGS="${CXXFLAGS=}"
86 LDFLAGS="${LDFLAGS=}"
87 HOST_CFLAGS="${HOST_CFLAGS=}"
88 HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
89 HOST_LDFLAGS="${HOST_LDFLAGS=}"
91 dnl ========================================================
92 dnl = Preserve certain environment flags passed to configure
93 dnl = We want sub projects to receive the same flags
94 dnl = untainted by this configure script
95 dnl ========================================================
96 _SUBDIR_CC="$CC"
97 _SUBDIR_CXX="$CXX"
98 _SUBDIR_CFLAGS="$CFLAGS"
99 _SUBDIR_CPPFLAGS="$CPPFLAGS"
100 _SUBDIR_CXXFLAGS="$CXXFLAGS"
101 _SUBDIR_LDFLAGS="$LDFLAGS"
102 _SUBDIR_HOST_CC="$HOST_CC"
103 _SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
104 _SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
105 _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
106 _SUBDIR_CONFIG_ARGS="$ac_configure_args"
108 dnl Set the version number of the libs included with mozilla
109 dnl ========================================================
110 MOZJPEG=62
111 MOZPNG=10401
112 MOZZLIB=0x1230
113 NSPR_VERSION=4
114 NSS_VERSION=3
116 dnl Set the minimum version of toolkit libs used by mozilla
117 dnl ========================================================
118 GLIB_VERSION=1.2.0
119 LIBIDL_VERSION=0.6.3
120 PERL_VERSION=5.006
121 PYTHON_VERSION=2.5
122 CAIRO_VERSION=1.8.8
123 PANGO_VERSION=1.14.0
124 GTK2_VERSION=2.10.0
125 WINDRES_VERSION=2.14.90
126 W32API_VERSION=3.8
127 GNOMEVFS_VERSION=2.0
128 GNOMEUI_VERSION=2.2.0
129 GCONF_VERSION=1.2.1
130 GIO_VERSION=2.0
131 STARTUP_NOTIFICATION_VERSION=0.8
132 DBUS_VERSION=0.60
133 SQLITE_VERSION=3.6.23.1
134 LIBNOTIFY_VERSION=0.4
136 MSMANIFEST_TOOL=
138 dnl Set various checks
139 dnl ========================================================
140 MISSING_X=
141 AC_PROG_AWK
143 dnl Initialize the Pthread test variables early so they can be
144 dnl  overridden by each platform.
145 dnl ========================================================
146 USE_PTHREADS=
147 _PTHREAD_LDFLAGS=""
149 dnl Do not allow a separate objdir build if a srcdir build exists.
150 dnl ==============================================================
151 _topsrcdir=`cd \`dirname $0\`; pwd`
152 _objdir=`pwd`
154 if test "$_topsrcdir" != "$_objdir"
155 then
156   # Check for a couple representative files in the source tree
157   _conflict_files=
158   for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
159     if test -f $file; then
160       _conflict_files="$_conflict_files $file"
161     fi
162   done
163   if test "$_conflict_files"; then
164     echo "***"
165     echo "*   Your source tree contains these files:"
166     for file in $_conflict_files; do
167       echo "*         $file"
168     done
169     cat 1>&2 <<-EOF
170         *   This indicates that you previously built in the source tree.
171         *   A source tree build can confuse the separate objdir build.
172         *
173         *   To clean up the source tree:
174         *     1. cd $_topsrcdir
175         *     2. gmake distclean
176         ***
177         EOF
178     exit 1
179     break
180   fi
182 MOZ_BUILD_ROOT=`pwd`
184 dnl Default to MSVC for win32 and gcc-4.2 for darwin
185 dnl ==============================================================
186 if test -z "$CROSS_COMPILE"; then
187 case "$target" in
188 *-cygwin*|*-mingw*|*-msvc*|*-mks*)
189     if test -z "$CC"; then CC=cl; fi
190     if test -z "$CXX"; then CXX=cl; fi
191     if test -z "$CPP"; then CPP="cl -E -nologo"; fi
192     if test -z "$CXXCPP"; then CXXCPP="cl -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
193     if test -z "$LD"; then LD=link; fi
194     if test -z "$AS"; then
195         case "${target_cpu}" in
196         i*86)
197             AS=ml;
198             ;;
199         x86_64)
200             AS=ml64;
201             ;;
202         esac
203     fi
204     if test -z "$MIDL"; then MIDL=midl; fi
205     ;;
206 *-darwin*)
207     if test -z "$CC"; then CC=gcc-4.2; fi
208     if test -z "$CXX"; then CXX=g++-4.2; fi
209     ;;
210 esac
213 COMPILE_ENVIRONMENT=1
214 MOZ_ARG_DISABLE_BOOL(compile-environment,
215 [  --disable-compile-environment
216                           Disable compiler/library checks.],
217     COMPILE_ENVIRONMENT= )
218 AC_SUBST(COMPILE_ENVIRONMENT)
220 MOZ_ARG_WITH_STRING(l10n-base,
221 [  --with-l10n-base=DIR    path to l10n repositories],
222     L10NBASEDIR=$withval)
223 if test ! -z "$L10NBASEDIR"; then
224     if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then
225         AC_MSG_ERROR([--with-l10n-base must specify a path])
226     elif test -d "$L10NBASEDIR"; then
227         L10NBASEDIR=`cd "$L10NBASEDIR" && pwd`
228     else
229         AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
230     fi
232 AC_SUBST(L10NBASEDIR)
234 dnl Check for Perl first -- needed for win32 SDK checks
235 MOZ_PATH_PROGS(PERL, $PERL perl5 perl )
236 if test -z "$PERL" -o "$PERL" = ":"; then
237     AC_MSG_ERROR([perl not found in \$PATH])
240 dnl ========================================================
241 dnl = Android uses a very custom (hacky) toolchain; we need to do this
242 dnl = here, so that the compiler checks can succeed
243 dnl ========================================================
245 MOZ_ARG_WITH_STRING(android-ndk,
246 [  --with-android-ndk=DIR
247                           location where the Android NDK can be found],
248     android_ndk=$withval)
250 MOZ_ARG_WITH_STRING(android-toolchain,
251 [  --with-android-toolchain=DIR
252                           location of the android toolchain, default NDK/build/prebuilt/HOST/arm-eabi-4.4.0],
253     android_toolchain=$withval)
256 MOZ_ARG_WITH_STRING(android-version,
257 [  --with-android-version=VER
258                           android platform version, default 5],
259     android_version=$withval,
260     android_version=5)
262 MOZ_ARG_WITH_STRING(android-sdk,
263 [  --with-android-sdk=DIR
264                           location where the Android SDK can be found (base directory, e.g. .../android/platforms/android-6)],
265     android_sdk=$withval)
267 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-"$android_version"/arch-"$target_cpu"
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}"
332     ANDROID_VERSION="${android_version}"
334     AC_DEFINE(ANDROID)
335     AC_DEFINE_UNQUOTED(ANDROID_VERSION, $android_version)
336     AC_SUBST(ANDROID_VERSION)
337     CROSS_COMPILE=1
338     MOZ_CHROME_FILE_FORMAT=omni
341 AC_SUBST(ANDROID_NDK)
342 AC_SUBST(ANDROID_TOOLCHAIN)
343 AC_SUBST(ANDROID_PLATFORM)
344 AC_SUBST(ANDROID_SDK)
345 AC_SUBST(ANDROID_TOOLS)
347 dnl ========================================================
348 dnl Checks for compilers.
349 dnl ========================================================
350 dnl Set CROSS_COMPILE in the environment when running configure
351 dnl to use the cross-compile setup for now
352 dnl ========================================================
354 dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269)
355 AR_FLAGS='cr $@'
357 if test "$COMPILE_ENVIRONMENT"; then
359 dnl Do some special WinCE toolchain stuff
360 case "$target" in
361 *wince|*winmo)
363     MOZ_ARG_WITH_STRING(wince-sdk,
364     [  --with-wince-sdk=WINCE_SDK_DIR
365                           The path to the Windows CE SDK],
366     WINCE_SDK_DIR=$withval)
368     MOZ_ARG_WITH_STRING(ogles-sdk,
369     [  --with-ogles-sdk=OGLES_SDK_DIR
370                           The path to the OGLES SDK],
371     OGLES_SDK_DIR=$withval)
373     AC_DEFINE(WINCE)
374     
375     export WINCE=1
377     echo -----------------------------------------------------------------------------
378     echo Building Windows CE Shunt Library and Tool Chain
379     echo Using SDK in:
380     echo $WINCE_SDK_DIR
382     ac_exeext=.exe
384     _pwd=`pwd -W`
385     _topsrcdirwin=`cd \`dirname $0\`; pwd -W`
386     make OGLES_SDK_DIR="$OGLES_SDK_DIR" WINCE_SDK_DIR="$WINCE_SDK_DIR" \
387     TOPSRCDIR="$_topsrcdirwin" OBJDIR="$_pwd" target="$target" \
388     -C $srcdir/build/wince/tools
390     CC="$_pwd/dist/sdk/bin/$target-gcc.exe"
391     CXX="$_pwd/dist/sdk/bin/$target-gcc.exe"
392     CPP="$_pwd/dist/sdk/bin/$target-gcc.exe -E -nologo"
393     CXXCPP="$_pwd/dist/sdk/bin/$target-gcc.exe -TP -E -nologo"
394     LD="$_pwd/dist/sdk/bin/$target-link.exe"
395     AR="$_pwd/dist/sdk/bin/$target-lib.exe"
396     AS="$_pwd/dist/sdk/bin/$target-as.exe"
397     RC="$_pwd/dist/sdk/bin/$target-res.exe"
400     echo -----------------------------------------------------------------------------
402     ;;
403 esac
405 if test -n "$CROSS_COMPILE" -a "$target" != "$host"; then
406     echo "cross compiling from $host to $target"
407     cross_compiling=yes
409     _SAVE_CC="$CC"
410     _SAVE_CFLAGS="$CFLAGS"
411     _SAVE_LDFLAGS="$LDFLAGS"
413     AC_MSG_CHECKING([for host c compiler])
414     AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
415     if test -z "$HOST_CC"; then
416         AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
417     fi
418     AC_MSG_RESULT([$HOST_CC])
419     AC_MSG_CHECKING([for host c++ compiler])
420     AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
421     if test -z "$HOST_CXX"; then
422         AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
423     fi
424     AC_MSG_RESULT([$HOST_CXX])
426     if test -z "$HOST_CFLAGS"; then
427         HOST_CFLAGS="$CFLAGS"
428     fi
429     if test -z "$HOST_CXXFLAGS"; then
430         HOST_CXXFLAGS="$CXXFLAGS"
431     fi
432     if test -z "$HOST_LDFLAGS"; then
433         HOST_LDFLAGS="$LDFLAGS"
434     fi
435     if test -z "$HOST_AR_FLAGS"; then
436         HOST_AR_FLAGS="$AR_FLAGS"
437     fi
438     AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
439     AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
440     CC="$HOST_CC"
441     CFLAGS="$HOST_CFLAGS"
442     LDFLAGS="$HOST_LDFLAGS"
444     AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
445     AC_TRY_COMPILE([], [return(0);], 
446         [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
447         AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
449     CC="$HOST_CXX"
450     CFLAGS="$HOST_CXXFLAGS"
452     AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
453     AC_TRY_COMPILE([], [return(0);], 
454         [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
455         AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
456     
457     CC=$_SAVE_CC
458     CFLAGS=$_SAVE_CFLAGS
459     LDFLAGS=$_SAVE_LDFLAGS
461     case "$build:$target" in
462       powerpc-apple-darwin8*:i?86-apple-darwin*)
463         dnl The Darwin cross compiler doesn't necessarily point itself at a
464         dnl root that has libraries for the proper architecture, it defaults
465         dnl to the system root.  The libraries in the system root on current
466         dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
467         dnl checks will fail.  Fake a working SDK in that case.
468         _SAVE_CFLAGS=$CFLAGS
469         _SAVE_CXXFLAGS=$CXXLAGS
470         CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk $CFLAGS"
471         CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk $CXXFLAGS"
472         ;;
473     esac
475     AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
476     unset ac_cv_prog_CC
477     AC_PROG_CC
478     AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
479     unset ac_cv_prog_CXX
480     AC_PROG_CXX
482     case "$build:$target" in
483       powerpc-apple-darwin8*:i?86-apple-darwin*)
484         dnl Revert the changes made above.  From this point on, the target
485         dnl compiler will never be used without applying the SDK to CFLAGS
486         dnl (see --with-macos-sdk below).
487         CFLAGS=$_SAVE_CFLAGS
488         CXXFLAGS=$_SAVE_CXXFLAGS
489         ;;
490     esac
492     AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
493     AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
494     MOZ_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
495     AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
496     AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
497     AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
498     AC_DEFINE(CROSS_COMPILE)
499 else
500     AC_PROG_CC
501     AC_PROG_CXX
502     AC_PROG_RANLIB
503     MOZ_PATH_PROGS(AS, $AS as, $CC)
504     AC_CHECK_PROGS(AR, ar, :)
505     AC_CHECK_PROGS(LD, ld, :)
506     AC_CHECK_PROGS(STRIP, strip, :)
507     AC_CHECK_PROGS(WINDRES, windres, :)
508     if test -z "$HOST_CC"; then
509         HOST_CC='$(CC)'
510     fi
511     if test -z "$HOST_CFLAGS"; then
512         HOST_CFLAGS='$(CFLAGS)'
513     fi
514     if test -z "$HOST_CXX"; then
515         HOST_CXX='$(CXX)'
516     fi
517     if test -z "$HOST_CXXFLAGS"; then
518         HOST_CXXFLAGS='$(CXXFLAGS)'
519     fi
520     if test -z "$HOST_LDFLAGS"; then
521         HOST_LDFLAGS='$(LDFLAGS)'
522     fi
523     if test -z "$HOST_RANLIB"; then
524         HOST_RANLIB='$(RANLIB)'
525     fi
526     if test -z "$HOST_AR"; then
527         HOST_AR='$(AR)'
528     fi
529     if test -z "$HOST_AR_FLAGS"; then
530         HOST_AR_FLAGS='$(AR_FLAGS)'
531     fi
534 GNU_AS=
535 GNU_LD=
536 GNU_CC=
537 GNU_CXX=
538 CC_VERSION='N/A'
539 CXX_VERSION='N/A'
540 if test "$GCC" = "yes"; then
541     GNU_CC=1
542     CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
544 if test "$GXX" = "yes"; then
545     GNU_CXX=1
546     CXX_VERSION=`$CXX -v 2>&1 | grep 'gcc version'`
548 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
549     GNU_AS=1
551 if test "`echo | $LD -v 2>&1 | grep -c GNU`" != "0"; then
552     GNU_LD=1
554 if test "$GNU_CC"; then
555     if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
556         GCC_USE_GNU_LD=1
557     fi
560 INTEL_CC=
561 INTEL_CXX=
562 if test "$GCC" = yes; then
563    if test "`$CC -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
564      INTEL_CC=1
565    fi
568 if test "$GXX" = yes; then
569    if test "`$CXX -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
570      INTEL_CXX=1
571    fi
574 dnl Special win32 checks
575 dnl ========================================================
576 case "$target" in
577 *-wince|*-winmo)
578     WINVER=500
579     WINSDK_TARGETVER=502
580     ;;
582     WINVER=502
583     dnl Target the Windows 7 SDK by default
584     WINSDK_TARGETVER=601
585     ;;
586 esac
588 MOZ_ARG_WITH_STRING(windows-version,
589 [  --with-windows-version=WINSDK_TARGETVER
590                           Highest Windows version to target using this SDK
591                               502: Windows Server 2003
592                               600: Windows Vista
593                               601: Windows 7],
594   WINSDK_TARGETVER=$withval)
596 case "$WINSDK_TARGETVER" in
597 502|600|601)
598     MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000
599     ;;
602     AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER), must be 502, 600 or 601]);
603     ;;
605 esac
607 if test -n "$COMPILE_ENVIRONMENT"; then
608 if test "$MOZ_WINSDK_TARGETVER" -lt "06000000"; then
609     # We can't build parental controls either
610     MOZ_DISABLE_PARENTAL_CONTROLS=1
614 case "$target" in
615 *-cygwin*|*-mingw*|*-msvc*|*-mks*|*-wince|*-winmo)
616     if test "$GCC" != "yes"; then
617         # Check to see if we are really running in a msvc environemnt
618         _WIN32_MSVC=1
619         AC_CHECK_PROGS(MIDL, midl)
621         # Make sure compilers are valid
622         CFLAGS="$CFLAGS -TC -nologo"
623         CXXFLAGS="$CXXFLAGS -TP -nologo"
624         AC_LANG_SAVE
625         AC_LANG_C
626         AC_TRY_COMPILE([#include <stdio.h>],
627             [ printf("Hello World\n"); ],,
628             AC_MSG_ERROR([\$(CC) test failed.  You must have MS VC++ in your path to build.]) )
630         AC_LANG_CPLUSPLUS
631         AC_TRY_COMPILE([#include <new.h>],
632             [ unsigned *test = new unsigned(42); ],,
633             AC_MSG_ERROR([\$(CXX) test failed.  You must have MS VC++ in your path to build.]) )
634         AC_LANG_RESTORE
635         
636         changequote(,)
637         _MSVC_VER_FILTER='s|.* ([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
638         changequote([,])
639         
640         # Determine compiler version
641         CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
642         _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
643         _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
644         _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
645         _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
646         _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
648         CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
649         _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
651         if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
652             AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
653         fi
654         if test "$_CC_MAJOR_VERSION" = "13"; then
655             _CC_SUITE=7
656         elif test "$_CC_MAJOR_VERSION" = "14"; then
657             _CC_SUITE=8
658             CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
659             dnl -DYNAMICBASE is only supported on VC8SP1 or newer,
660             dnl so be very specific here!
661             dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762
662             if test $_CC_RELEASE -gt 50727; then
663                _USE_DYNAMICBASE=1
664             elif test $_CC_BUILD -ge 762; then
665                _USE_DYNAMICBASE=1
666             fi
667             AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
668             AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
669         elif test "$_CC_MAJOR_VERSION" = "15"; then
670             _CC_SUITE=9
671             CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
672             _USE_DYNAMICBASE=1
673             AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
674             AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
675         elif test "$_CC_MAJOR_VERSION" = "16"; then
676             _CC_SUITE=10
677             CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
678             _USE_DYNAMICBASE=1
679             AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
680             AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
681         else
682             AC_MSG_ERROR([This version of the MSVC compiler, $CC_VERSION , is unsupported.])
683         fi
685         _MOZ_RTTI_FLAGS_ON='-GR'
686         _MOZ_RTTI_FLAGS_OFF='-GR-'
687         _MOZ_EXCEPTIONS_FLAGS_ON='-EHsc'
688         _MOZ_EXCEPTIONS_FLAGS_OFF=''
690         if test -n "$WIN32_REDIST_DIR"; then
691             WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
692         fi
693         
694         # bug #249782
695         # ensure that mt.exe is Microsoft (R) Manifest Tool and not magnetic tape manipulation utility (or something else)
696         if test "$_CC_SUITE" -ge "8"; then
697                 changequote(,)
698                 _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
699                 changequote([,])
701                 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
702                 if test -n "$MSMT_TOOL"; then
703                         MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
704                         if test -z "$MSMANIFEST_TOOL_VERSION"; then
705                                 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
706                         fi
707                         MSMANIFEST_TOOL=1
708                         unset MSMT_TOOL
709                 else
710                         AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
711                 fi
712         fi
714         # Check linker version
715         _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
716         _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
717         if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
718             AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION,  does not match the compiler suite version, $_CC_SUITE.])
719         fi
720         INCREMENTAL_LINKER=1
722         # Check midl version
723         _MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
724         _MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
725         _MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
726         _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
727         # Add flags if necessary
728         AC_MSG_CHECKING([for midl flags])
729         case "$target" in
730         i*86-*)
731             if test \( "$_MIDL_MAJOR_VERSION" = "7" -a "$_MIDL_MINOR_VERSION" = "00" -a "$_MIDL_REV_VERSION" = "0499" \); then
732                 # MIDL version 7.00.0499 defaults /env win64 on x64 platforms.
733                 # MIDL version 7.00.0500 or later has no problem.
734                 MIDL_FLAGS="${MIDL_FLAGS} -env win32"
735                 AC_MSG_RESULT([need -env win32])
736             else
737                 AC_MSG_RESULT([none needed])
738             fi
739             ;;
740         x86_64-*)
741             MIDL_FLAGS="${MIDL_FLAGS} -env x64"
742             ;;
743         *)
744             AC_MSG_RESULT([none needed])
745             ;;
746         esac
748         # Identify which version of the SDK we're building with
749         # Windows Server 2008 and newer SDKs have WinSDKVer.h, get the version
750         # from there
751         AC_CHECK_HEADERS([winsdkver.h])
752         if test "$ac_cv_header_winsdkver_h" = "yes"; then
753             # Get the highest _WIN32_WINNT and NTDDI versions supported
754             # Take the higher of the two
755             # This is done because the Windows 7 beta SDK reports its
756             # NTDDI_MAXVER to be 0x06000100 instead of 0x06010000, as it should
757             AC_CACHE_CHECK(for highest Windows version supported by this SDK,
758                            ac_cv_winsdk_maxver,
759                            [cat > conftest.h <<EOF
760 #include <winsdkver.h>
761 #include <sdkddkver.h>
763 #if (NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER) > NTDDI_MAXVER)
764 #define WINSDK_MAXVER NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER)
765 #else
766 #define WINSDK_MAXVER NTDDI_MAXVER
767 #endif
769 WINSDK_MAXVER
771                             ac_cv_winsdk_maxver=`$CPP conftest.h 2>/dev/null | tail -n1`
772                             rm -f conftest.h
773                            ])
774             MOZ_WINSDK_MAXVER=${ac_cv_winsdk_maxver}
775         else
776             # The Vista SDK is the only one to have sdkddkver.h but not
777             # WinSDKVer.h
778             AC_CHECK_HEADERS([sdkddkver.h])
779             if test "$ac_cv_header_sdkddkver_h" = "yes"; then
780                 MOZ_WINSDK_MAXVER=0x06000000
781             else
782                 # Assume the Server 2003 Platform SDK
783                 MOZ_WINSDK_MAXVER=0x05020000
784             fi
785         fi
787         unset _MSVC_VER_FILTER
789         AC_CACHE_CHECK(for std::_Throw, ac_cv_have_std__Throw,
790             [
791                 AC_LANG_SAVE
792                 AC_LANG_CPLUSPLUS
793                 _SAVE_CXXFLAGS="$CXXFLAGS"
794                 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
795                 AC_TRY_COMPILE([#include <exception>],
796                             [std::_Throw(std::exception()); return 0;],
797                             ac_cv_have_std__Throw="yes",
798                             ac_cv_have_std__Throw="no")
799                 CXXFLAGS="$_SAVE_CXXFLAGS"
800                 AC_LANG_RESTORE
801             ])
803         if test "$ac_cv_have_std__Throw" == "yes"; then
804             AC_CACHE_CHECK(for |class __declspec(dllimport) exception| bug,
805                            ac_cv_have_dllimport_exception_bug,
806                 [
807                     AC_LANG_SAVE
808                     AC_LANG_CPLUSPLUS
809                     _SAVE_CXXFLAGS="$CXXFLAGS"
810                     CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
811                     AC_TRY_LINK([#include <vector>],
812                                 [std::vector<int> v; return v.at(1);],
813                                 ac_cv_have_dllimport_exception_bug="no",
814                                 ac_cv_have_dllimport_exception_bug="yes")
815                     CXXFLAGS="$_SAVE_CXXFLAGS"
816                     AC_LANG_RESTORE
817                 ])
818             if test "$ac_cv_have_dllimport_exception_bug" = "no"; then
819                 WRAP_STL_INCLUDES=1
820                 MOZ_MSVC_STL_WRAP__Throw=1
821                 AC_DEFINE(MOZ_MSVC_STL_WRAP__Throw)
822             fi
823         else
824             AC_CACHE_CHECK(for overridable _RAISE,
825                            ac_cv_have__RAISE,
826                 [
827                     AC_LANG_SAVE
828                     AC_LANG_CPLUSPLUS
829                     _SAVE_CXXFLAGS="$CXXFLAGS"
830                     CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
831                     AC_TRY_COMPILE([#include <xstddef>
832                                     #undef _RAISE
833                                     #define _RAISE(x) externallyDefinedFunction((x).what())
834                                     #include <vector>
835                                    ],
836                                    [std::vector<int> v; return v.at(1);],
837                                    ac_cv_have__RAISE="no",
838                                    ac_cv_have__RAISE="yes")
839                     CXXFLAGS="$_SAVE_CXXFLAGS"
840                     AC_LANG_RESTORE
841                 ])
842             if test "$ac_cv_have__RAISE" = "yes"; then
843                 WRAP_STL_INCLUDES=1
844                 MOZ_MSVC_STL_WRAP__RAISE=1
845                 AC_DEFINE(MOZ_MSVC_STL_WRAP__RAISE)
846             else
847                 AC_MSG_ERROR([Gecko exception wrapping doesn't understand your your MSVC/SDK.  Please file a bug describing this error and your build configuration.])
848             fi
849         fi
851         if test "$WRAP_STL_INCLUDES" = "1"; then
852             STL_FLAGS='-D_HAS_EXCEPTIONS=0 -I$(DIST)/stl_wrappers'
853         fi
854     else
855         # Check w32api version
856         _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
857         _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
858         AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
859         AC_TRY_COMPILE([#include <w32api.h>],
860             #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
861                 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
862                  __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
863                 #error "test failed."
864             #endif
865             , [ res=yes ], [ res=no ])
866         AC_MSG_RESULT([$res])
867         if test "$res" != "yes"; then
868             AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
869         fi
870         # Check windres version
871         AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
872         _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
873         AC_MSG_RESULT([$_WINDRES_VERSION])
874         _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
875         _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
876         _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
877         WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
878         WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
879         WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
880         if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
881                 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
882                 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
883                 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
884                 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
885                 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
886         then
887             AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
888         fi
890         # Server 2003 is the highest version supported
891         MOZ_WINSDK_MAXVER=0x05020000
892     fi # !GNU_CC
894     AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
895     AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
896     # Require OS features provided by IE 5.0
897     AC_DEFINE_UNQUOTED(_WIN32_IE,0x0500)
899     # If the maximum version supported by this SDK is lower than the target
900     # version, error out
901     AC_MSG_CHECKING([for Windows SDK being recent enough])
902     if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then
903         AC_MSG_RESULT("yes")
904     else
905         AC_MSG_RESULT("no")
906         AC_MSG_ERROR([You are targeting Windows version 0x$MOZ_WINSDK_TARGETVER, but your SDK only supports up to version $MOZ_WINSDK_MAXVER. Install and use an updated SDK, or target a lower version using --with-windows-version. Alternatively, try running the Windows SDK Configuration Tool and selecting a newer SDK. See https://developer.mozilla.org/En/Windows_SDK_versions for more details on fixing this.])
907     fi
909     AC_DEFINE_UNQUOTED(MOZ_WINSDK_TARGETVER,0x$MOZ_WINSDK_TARGETVER)
910     # Definitions matching sdkddkver.h
911     AC_DEFINE_UNQUOTED(MOZ_NTDDI_WS03, 0x05020000)
912     AC_DEFINE_UNQUOTED(MOZ_NTDDI_LONGHORN, 0x06000000)
913     AC_DEFINE_UNQUOTED(MOZ_NTDDI_WIN7, 0x06010000)
914     ;;
915 esac
917 dnl Test breaks icc on OS/2 && MSVC
918 if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
919     AC_PROG_CC_C_O
920     if grep "NO_MINUS_C_MINUS_O 1" ./confdefs.h >/dev/null; then
921         USING_HCC=1
922         _OLDCC=$CC
923         _OLDCXX=$CXX
924         CC="${srcdir}/build/hcc '$CC'"
925         CXX="${srcdir}/build/hcpp '$CXX'"
926     fi
929 AC_PROG_CPP
930 AC_PROG_CXXCPP
932 if test -n "$_WIN32_MSVC"; then
933     SKIP_PATH_CHECKS=1
934     SKIP_COMPILER_CHECKS=1
935     SKIP_LIBRARY_CHECKS=1
937     # Since we're skipping compiler and library checks, hard-code
938     # some facts here.
939     case "$target" in
940     *-wince|*-winmo)
941         ;;
942     *)
943         AC_DEFINE(HAVE_IO_H)
944         AC_DEFINE(HAVE_SETBUF)
945         AC_DEFINE(HAVE_ISATTY)
946         ;;
947     esac
950 fi # COMPILE_ENVIRONMENT
952 AC_SUBST(MIDL_FLAGS)
953 AC_SUBST(_MSC_VER)
955 AC_SUBST(GNU_AS)
956 AC_SUBST(GNU_LD)
957 AC_SUBST(GNU_CC)
958 AC_SUBST(GNU_CXX)
959 AC_SUBST(INTEL_CC)
960 AC_SUBST(INTEL_CXX)
962 AC_SUBST(STL_FLAGS)
963 AC_SUBST(WRAP_STL_INCLUDES)
964 AC_SUBST(MOZ_MSVC_STL_WRAP__Throw)
965 AC_SUBST(MOZ_MSVC_STL_WRAP__RAISE)
967 dnl ========================================================
968 dnl Checks for programs.
969 dnl ========================================================
970 AC_PROG_INSTALL
971 AC_PROG_LN_S
973 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
974 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
975 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
976 _perl_res=$?
977 AC_MSG_RESULT([$_perl_version])
979 if test "$_perl_res" != 0; then
980     AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
984 AC_MSG_CHECKING([for full perl installation])
985 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
986 _perl_res=$?
987 if test "$_perl_res" != 0; then
988     AC_MSG_RESULT([no])
989     AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}.  A full perl installation is required.])
990 else
991     AC_MSG_RESULT([yes])    
994 MOZ_PATH_PROGS(PYTHON, $PYTHON python2.6 python2.5 python2.4 python)
995 if test -z "$PYTHON"; then
996     AC_MSG_ERROR([python was not found in \$PATH])
999 if test -z "$COMPILE_ENVIRONMENT"; then
1000     NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
1002 AC_SUBST(NSINSTALL_BIN)
1004 MOZ_PATH_PROG(DOXYGEN, doxygen, :)
1005 MOZ_PATH_PROG(AUTOCONF, autoconf, :)
1006 MOZ_PATH_PROG(UNZIP, unzip, :)
1007 MOZ_PATH_PROGS(ZIP, zip)
1008 if test -z "$ZIP" -o "$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" -o "$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" -a "$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     else
1092         dnl No value specified on the command line or in the environment,
1093         dnl use architecture minimum.
1094         case "${target_cpu}" in
1095           ppc*)
1096             export MACOSX_DEPLOYMENT_TARGET=10.5
1097             ;;
1098           i*86)
1099             export MACOSX_DEPLOYMENT_TARGET=10.5
1100             ;;
1101           x86_64)
1102             export MACOSX_DEPLOYMENT_TARGET=10.6
1103             ;;
1104         esac
1105     fi
1106     ;;
1107 esac
1109 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
1111 dnl ========================================================
1112 dnl = Mac OS X SDK support
1113 dnl ========================================================
1114 MACOS_SDK_DIR=
1115 NEXT_ROOT=
1116 MOZ_ARG_WITH_STRING(macos-sdk,
1117 [  --with-macos-sdk=dir    Location of platform SDK to use (Mac OS X only)],
1118     MACOS_SDK_DIR=$withval)
1120 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
1121 dnl NEXT_ROOT will be set and exported only if it's needed.
1122 AC_SUBST(MACOS_SDK_DIR)
1123 AC_SUBST(NEXT_ROOT)
1125 if test "$MACOS_SDK_DIR"; then
1126   dnl Sync this section with the ones in NSPR and NSS.
1127   dnl Changes to the cross environment here need to be accounted for in
1128   dnl the libIDL checks (below) and xpidl build.
1130   if test ! -d "$MACOS_SDK_DIR"; then
1131     AC_MSG_ERROR([SDK not found.  When using --with-macos-sdk, you must
1132 specify a valid SDK.  SDKs are installed when the optional cross-development
1133 tools are selected during the Xcode/Developer Tools installation.])
1134   fi
1136   GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
1137   if test "$GCC_VERSION_MAJOR" -lt "4" ; then
1138     AC_MSG_ERROR([You need to upgrade the compiler version to 4.x])
1139   else
1140     CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
1141     CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
1143     dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
1144     CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
1145     CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
1147     if test "$GCC_VERSION_FULL" = "4.0.0" ; then
1148       dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
1149       dnl that supports -syslibroot.  Don't set NEXT_ROOT because it will
1150       dnl be ignored and cause warnings when -syslibroot is specified.
1151       dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
1152       dnl the -isysroot it receives, so this is only needed with 4.0.0.
1153       LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
1154     fi
1155   fi
1157   AC_LANG_SAVE
1158   AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
1159   AC_LANG_CPLUSPLUS
1160   AC_TRY_COMPILE([#include <new>
1161                  int main() { return 0; }],
1162    result=yes,
1163    result=no)
1164   AC_LANG_RESTORE
1165   AC_MSG_RESULT($result)
1167   if test "$result" = "no" ; then
1168     AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
1169   fi
1172 fi # COMPILE_ENVIRONMENT
1174 if test -n "$MAKE"; then
1175   if test `echo $MAKE | grep -c make.py` != 1; then
1176      NOT_PYMAKE=$MAKE
1177   fi
1180 case "$host_os" in
1181 cygwin*|mingw*|mks*|msvc*)
1182     MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :)
1183     ;;
1185     MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :)
1186     ;;
1187 esac
1188 if test "$GMAKE" = ":"; then
1189    AC_MSG_ERROR([GNU make not found])
1191 AC_SUBST(GMAKE)
1193 if test "$COMPILE_ENVIRONMENT"; then
1195 AC_PATH_XTRA
1197 XCFLAGS="$X_CFLAGS"
1199 fi # COMPILE_ENVIRONMENT
1201 dnl ========================================================
1202 dnl set the defaults first
1203 dnl ========================================================
1204 AS_BIN=$AS
1205 AR_LIST='$(AR) t'
1206 AR_EXTRACT='$(AR) x'
1207 AR_DELETE='$(AR) d'
1208 AS='$(CC)'
1209 AS_DASH_C_FLAG='-c'
1210 DLL_PREFIX=lib
1211 LIB_PREFIX=lib
1212 DLL_SUFFIX=.so
1213 OBJ_SUFFIX=o
1214 LIB_SUFFIX=a
1215 ASM_SUFFIX=s
1216 IMPORT_LIB_SUFFIX=
1217 TARGET_MD_ARCH=unix
1218 DIRENT_INO=d_ino
1219 CYGWIN_WRAPPER=
1220 WIN_TOP_SRC=
1221 MOZ_USER_DIR=".mozilla"
1223 MOZ_JPEG_CFLAGS=
1224 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/jpeg)'
1225 MOZ_ZLIB_CFLAGS=
1226 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,$(DEPTH)/modules/zlib/src)'
1227 MOZ_BZ2_CFLAGS=
1228 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
1229 MOZ_PNG_CFLAGS=
1230 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/modules/libimg/png)'
1232 MOZ_JS_STATIC_LIBS='-L$(LIBXUL_DIST)/bin -ljs_static'
1233 MOZ_JS_SHARED_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs'
1234 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxpcom -lxpcom_core -lmozalloc'
1235 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
1236 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxpcom -lmozalloc'
1237 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) -lxul'
1238 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
1239 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
1241 MOZ_FS_LAYOUT=unix
1243 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
1245 USE_DEPENDENT_LIBS=1
1247 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
1249 if test -n "$CROSS_COMPILE"; then
1250     OS_TARGET="${target_os}"
1251     OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
1252     OS_RELEASE=
1253     case "${target_os}" in
1254         linux*)       OS_ARCH=Linux OS_TARGET=Linux ;;
1255         kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
1256         gnu*)         OS_ARCH=GNU ;;
1257         solaris*)     OS_ARCH=SunOS OS_RELEASE=5 ;;
1258         mingw*)       OS_ARCH=WINNT ;;
1259         wince*)       OS_ARCH=WINCE ;;
1260         winmo*)       OS_ARCH=WINCE ;;
1261         darwin*)      OS_ARCH=Darwin OS_TARGET=Darwin ;;
1262     esac
1263     case "${target}" in
1264         arm-android-eabi) OS_ARCH=Linux OS_TARGET=Android ;;
1265     esac
1266 else
1267     OS_TARGET=`uname -s`
1268     OS_ARCH=`uname -s | sed -e 's|/|_|g'`
1269     OS_RELEASE=`uname -r`
1272 # Before this used `uname -m` when not cross compiling
1273 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1274 OS_TEST="${target_cpu}"
1276 _COMPILER_PREFIX=
1278 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1280 #######################################################################
1281 # Master "Core Components" macros for getting the OS target           #
1282 #######################################################################
1285 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1286 # cross-compilation.
1290 # Define and override various archtecture-specific variables, including
1291 # HOST_OS_ARCH
1292 # OS_ARCH
1293 # OS_TEST
1294 # OS_TARGET
1295 # OS_RELEASE
1296 # OS_MINOR_RELEASE
1299 case "$HOST_OS_ARCH" in
1300 cygwin*|mingw*|mks*|msvc*)
1301     HOST_OS_ARCH=WINNT
1302     ;;
1303 darwin*)
1304     HOST_OS_ARCH=Darwin
1305     ;;
1306 linux*)
1307     HOST_OS_ARCH=Linux
1308     ;;
1309 solaris*)
1310     HOST_OS_ARCH=SunOS
1311     SOLARIS_SUNPRO_CC=
1312     SOLARIS_SUNPRO_CXX=
1313     if test -z "$GNU_CC"; then
1314         if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then
1315             SOLARIS_SUNPRO_CC=1
1316        fi
1317     fi
1319     if test -z "$GNU_CXX"; then
1320        if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then
1321            SOLARIS_SUNPRO_CXX=1
1322        fi
1323     fi
1324     AC_SUBST(SOLARIS_SUNPRO_CC)
1325     AC_SUBST(SOLARIS_SUNPRO_CXX)
1326     ;;
1327 BSD_386)
1328     HOST_OS_ARCH=BSD
1329     ;;
1330 dgux)
1331     HOST_OS_ARCH=DGUX
1332     ;;
1333 IRIX64)
1334     HOST_OS_ARCH=IRIX
1335     ;;
1336 UNIX_SV)
1337     if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1338         HOST_OS_ARCH=NCR
1339     else
1340         HOST_OS_ARCH=UNIXWARE
1341     fi
1342     ;;
1343 ncr)
1344     HOST_OS_ARCH=NCR
1345     ;;
1346 UNIX_SYSTEM_V)
1347     HOST_OS_ARCH=NEC
1348     ;;
1349 OSF1)
1350     ;;
1351 *OpenVMS*)
1352     HOST_OS_ARCH=OpenVMS
1353     ;;
1354 OS_2)
1355     HOST_OS_ARCH=OS2
1356     ;;
1357 QNX)
1358     ;;
1359 SCO_SV)
1360     HOST_OS_ARCH=SCOOS
1361     ;;
1362 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1363     HOST_OS_ARCH=SINIX
1364     ;;
1365 UnixWare)
1366     HOST_OS_ARCH=UNIXWARE
1367     ;;
1368 esac
1370 case "$OS_ARCH" in
1371 WINNT)
1372     if test -z "$CROSS_COMPILE" ; then
1373         OS_TEST=`uname -p`
1374     fi
1375     ;;
1376 Windows_NT)
1378 # If uname -s returns "Windows_NT", we assume that we are using
1379 # the uname.exe in MKS toolkit.
1381 # The -r option of MKS uname only returns the major version number.
1382 # So we need to use its -v option to get the minor version number.
1383 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1385     OS_ARCH=WINNT
1386     OS_TARGET=WINNT
1387     OS_MINOR_RELEASE=`uname -v`
1388     if test "$OS_MINOR_RELEASE" = "00"; then
1389         OS_MINOR_RELEASE=0
1390     fi
1391     OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1392     ;;
1393 CYGWIN32_NT|CYGWIN_NT*|MINGW*_NT*)
1395 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
1396 # the uname.exe in the Cygwin tools.
1397 # Prior to the Beta 20 release, Cygwin was called GNU-Win32.
1398 # If uname -s returns "CYGWIN32/NT", we assume that we are using
1399 # the uname.exe in the GNU-Win32 tools.
1400 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1401 # the uname.exe in the MSYS tools.
1403     OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1404     OS_ARCH=WINNT
1405     OS_TARGET=WINNT
1406     ;;
1407 AIX)
1408     OS_RELEASE=`uname -v`.`uname -r`
1409     OS_TEST=${target_cpu}
1410     ;;
1411 BSD_386)
1412     OS_ARCH=BSD
1413     ;;
1414 dgux)
1415     OS_ARCH=DGUX
1416     ;;
1417 IRIX64)
1418     OS_ARCH=IRIX
1419     ;;
1420 UNIX_SV)
1421     if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1422         OS_ARCH=NCR
1423     else
1424         OS_ARCH=UNIXWARE
1425         OS_RELEASE=`uname -v`
1426     fi
1427     ;;
1428 ncr)
1429     OS_ARCH=NCR
1430     ;;
1431 UNIX_SYSTEM_V)
1432     OS_ARCH=NEC
1433     ;;
1434 OSF1)
1435     case `uname -v` in
1436     148)
1437         OS_RELEASE=V3.2C
1438         ;;
1439     564)
1440         OS_RELEASE=V4.0B
1441         ;;
1442     878)
1443         OS_RELEASE=V4.0D
1444         ;;
1445     esac
1446     ;;
1447 *OpenVMS*)
1448     OS_ARCH=OpenVMS
1449     OS_RELEASE=`uname -v`
1450     OS_TEST=`uname -p`
1451     ;;
1452 OS_2)
1453     OS_ARCH=OS2
1454     OS_TARGET=OS2
1455     OS_RELEASE=`uname -v`
1456     ;;
1457 QNX)
1458     if test "$OS_TARGET" != "NTO"; then
1459         changequote(,)
1460         OS_RELEASE=`uname -v | sed 's/^\([0-9]\)\([0-9]*\)$/\1.\2/'`
1461         changequote([,])
1462     fi
1463     OS_TEST=x86
1464     ;;
1465 SCO_SV)
1466     OS_ARCH=SCOOS
1467     OS_RELEASE=5.0
1468     ;;
1469 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1470     OS_ARCH=SINIX
1471     OS_TEST=`uname -p`
1472     ;;
1473 UnixWare)
1474     OS_ARCH=UNIXWARE
1475     OS_RELEASE=`uname -v`
1476     ;;
1477 WINCE)
1478     OS_ARCH=WINCE
1479     case "${target_os}" in
1480     *winmo)
1481         OS_TARGET=WINMO
1482         WINCE_WINDOWS_MOBILE=1
1483         AC_DEFINE(WINCE_WINDOWS_MOBILE)
1484         ;;
1485     *)
1486         OS_TARGET=WINCE
1487         ;;
1488     esac
1489     ;;
1490 Darwin)
1491     case "${target_cpu}" in
1492     powerpc*)
1493         OS_TEST=ppc
1494         ;;
1495     i*86*)
1496         OS_TEST=i386 
1497         ;;
1498     x86_64)
1499         OS_TEST=x86_64
1500         ;;
1501     *)
1502         if test -z "$CROSS_COMPILE" ; then
1503             OS_TEST=`uname -p`
1504         fi
1505         ;;
1506     esac
1507     ;;
1508 esac
1510 if test "$OS_ARCH" = "NCR"; then
1511     changequote(,)
1512     OS_RELEASE=`awk '{print $3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$/\2.\3/'`
1513     changequote([,])
1516 # Only set CPU_ARCH if we recognize the value of OS_TEST
1518 case "$OS_TEST" in
1519 *86 | i86pc)
1520     CPU_ARCH=x86
1521     ;;
1523 powerpc64 | ppc64)
1524     CPU_ARCH=ppc64
1525     ;;
1527 powerpc | ppc | rs6000)
1528     CPU_ARCH=ppc
1529     ;;
1531 Alpha | alpha | ALPHA)
1532     CPU_ARCH=Alpha
1533     ;;
1535 s390)
1536     CPU_ARCH=s390
1537     ;;
1539 s390x)
1540     CPU_ARCH=s390x
1541     ;;
1543 hppa* | parisc)
1544     CPU_ARCH=hppa
1545     ;;
1547 sun4u | sparc*)
1548     CPU_ARCH=sparc
1549     ;;
1551 x86_64 | ia64)
1552     CPU_ARCH="$OS_TEST"
1553     ;;
1555 arm*)
1556     CPU_ARCH=arm
1557     ;;
1558 esac
1560 if test -z "$OS_TARGET"; then
1561     OS_TARGET=$OS_ARCH
1563 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1565 dnl ========================================================
1566 dnl GNU specific defaults
1567 dnl ========================================================
1568 if test "$GNU_CC"; then
1569     # FIXME: Let us build with strict aliasing. bug 414641.
1570     CFLAGS="$CFLAGS -fno-strict-aliasing"
1571     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1572     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1573     DSO_LDOPTS='-shared'
1574     if test "$GCC_USE_GNU_LD"; then
1575         # Don't allow undefined symbols in libraries
1576         DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1577     fi
1578     WARNINGS_AS_ERRORS='-Werror'
1579     DSO_CFLAGS=''
1580     DSO_PIC_CFLAGS='-fPIC'
1581     ASFLAGS="$ASFLAGS -fPIC"
1582     _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
1583     _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
1584     _MOZ_EXCEPTIONS_FLAGS_ON='-fexceptions'
1585     _MOZ_EXCEPTIONS_FLAGS_OFF='-fno-exceptions'
1587     # Turn on GNU specific features
1588     # -Wall - turn on all warnings
1589     # -pedantic - make compiler warn about non-ANSI stuff, and
1590     #             be a little bit stricter
1591     # Warnings slamm took out for now (these were giving more noise than help):
1592     # -Wbad-function-cast - warns when casting a function to a new return type
1593     # -Wshadow - removed because it generates more noise than help --pete
1594     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
1595     if test -z "$INTEL_CC"; then
1596        # Don't use -Wcast-align with ICC
1597        case "$CPU_ARCH" in
1598            # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1599            hppa | ia64 | sparc | arm)
1600            ;;
1601            *)
1602         _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1603            ;;
1604        esac
1605     fi
1607     dnl Turn pedantic on but disable the warnings for long long
1608     _PEDANTIC=1
1610     if test -z "$INTEL_CC"; then
1611       _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
1612     fi
1614     _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1615     _USE_CPP_INCLUDE_FLAG=1
1616 elif test "$SOLARIS_SUNPRO_CC"; then
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     TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
2046     # The ExceptionHandling framework is needed for Objective-C exception
2047     # logging code in nsObjCExceptions.h. Currently we only use that in debug
2048     # builds.
2049     MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"
2051     dnl DTrace and -dead_strip don't interact well. See bug 403132.
2052     dnl ===================================================================
2053     if test "x$enable_dtrace" = "xyes"; then
2054         echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
2055     else
2056         dnl check for the presence of the -dead_strip linker flag
2057         AC_MSG_CHECKING([for -dead_strip option to ld])
2058         _SAVE_LDFLAGS=$LDFLAGS
2059         LDFLAGS="$LDFLAGS -Wl,-dead_strip"
2060         AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
2061         if test -n "$_HAVE_DEAD_STRIP" ; then
2062             AC_MSG_RESULT([yes])
2063             MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
2064         else
2065             AC_MSG_RESULT([no])
2066         fi
2067         
2068         LDFLAGS=$_SAVE_LDFLAGS
2069     fi
2070     MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
2071     ;;
2073 *-freebsd*)
2074     if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` != "elf"; then
2075         DLL_SUFFIX=".so.1.0"
2076         DSO_LDOPTS="-shared"
2077     fi
2078     if test ! "$GNU_CC"; then
2079         DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
2080     fi
2081     ;; 
2083 ia64*-hpux*)
2084     DLL_SUFFIX=".so"
2085     if test ! "$GNU_CC"; then
2086        DSO_LDOPTS='-b'
2087        DSO_CFLAGS=""
2088        DSO_PIC_CFLAGS=
2089        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@'
2090        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@'
2091        CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2092     else
2093        DSO_LDOPTS='-b -E'
2094        MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2095        MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2096     fi
2097     MOZ_FIX_LINK_PATHS=
2098     SYSTEM_MAKEDEPEND=
2099     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2100     AC_DEFINE(_LARGEFILE64_SOURCE)
2101     ;;
2103 *-hpux*)
2104     DLL_SUFFIX=".sl"
2105     if test ! "$GNU_CC"; then
2106         DSO_LDOPTS='-b -Wl,+s'
2107         DSO_CFLAGS=""
2108         DSO_PIC_CFLAGS="+Z"
2109         MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
2110         MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
2111         CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2112     else
2113         DSO_LDOPTS='-b -E +s'
2114         MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2115         MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2116     fi
2117     MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
2118     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2119     ;;
2121 *-irix5*)
2122     AC_DEFINE(IRIX)
2123     DSO_LDOPTS='-elf -shared'
2125     if test "$GNU_CC"; then
2126        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2127        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2128        MKSHLIB_FORCE_ALL='-Wl,-all'
2129        MKSHLIB_UNFORCE_ALL='-Wl,-none'
2130        CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
2131     else
2132        MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2133        MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2134        MKSHLIB_FORCE_ALL='-all'
2135        MKSHLIB_UNFORCE_ALL='-none'
2136     fi
2137     ;;
2139 *-irix6*)
2140     AC_DEFINE(IRIX)
2141     dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must* 
2142     dnl compile and link using -n32
2143     USE_N32=1
2144     TARGET_COMPILER_ABI=n32
2145     DSO_LDOPTS='-elf -shared'
2146     MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2147     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2148     _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
2149     _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
2150     if test "$GNU_CC"; then
2151        MKSHLIB_FORCE_ALL='-Wl,-all'
2152        MKSHLIB_UNFORCE_ALL='-Wl,-none'
2153        _WARNINGS_CFLAGS="-Wall"
2154        _WARNINGS_CXXFLAGS="-Wall"
2155        CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
2156     else
2157        MKSHLIB_FORCE_ALL='-all'
2158        MKSHLIB_UNFORCE_ALL='-none'
2159            AR_LIST="$AR t"
2160            AR_EXTRACT="$AR x"
2161            AR_DELETE="$AR d"
2162            AR='$(CXX) -ar'
2163            AR_FLAGS='-o $@'
2164        CFLAGS="$CFLAGS -woff 3262 -G 4"
2165        CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
2166        if test -n "$USE_N32"; then
2167            ASFLAGS="$ASFLAGS -n32"
2168            CFLAGS="$CFLAGS -n32"
2169            CXXFLAGS="$CXXFLAGS -n32"
2170            LDFLAGS="$LDFLAGS -n32"
2171        fi
2172        AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2173        AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
2174        MOZ_FIX_LINK_PATHS=
2175     fi
2176     if test -z "$GNU_CXX"; then
2177       MIPSPRO_CXX=1
2178     fi
2179     ;;
2181 *-*linux*)
2182     # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
2183     # Similarly for GNU_CXX and INTEL_CXX.
2184     if test "$INTEL_CC" -o "$INTEL_CXX"; then
2185         # -Os has been broken on Intel's C/C++ compilers for quite a
2186         # while; Intel recommends against using it.
2187         MOZ_OPTIMIZE_FLAGS="-O2"
2188         MOZ_DEBUG_FLAGS="-g"
2189     elif test "$GNU_CC" -o "$GNU_CXX"; then
2190         GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
2191         case $GCC_VERSION in
2192         4.1.*|4.2.*|4.5.*)
2193             # -Os is broken on gcc 4.1.x 4.2.x, 4.5.x we need to tweak it to get good results.
2194             MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
2195         esac
2196         MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fomit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK"
2197         MOZ_DEBUG_FLAGS="-g"
2198     fi
2200     TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2202     MOZ_MEMORY=1
2204     case "${target_cpu}" in
2205     alpha*)
2206         CFLAGS="$CFLAGS -mieee"
2207         CXXFLAGS="$CXXFLAGS -mieee"
2208     ;;
2209     i*86)
2210         USE_ELF_DYNSTR_GC=1
2211     ;;
2212     mips*)
2213         MOZ_DEBUG_FLAGS="-g" # We want inlining
2214     ;;
2215     esac
2216     ;;
2218 *-wince*|*-winmo*)
2219     TARGET_COMPILER_ABI=msvc
2220     _PLATFORM_DEFAULT_TOOLKIT=cairo-windows
2221     MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2222     MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2223     AR_LIST="$AR -list"
2224     AR_EXTRACT="$AR -extract"
2225     AR_DELETE="$AR d"
2226     AR_FLAGS='-OUT:"$@"'
2227     MOZ_MEMORY=1
2228     NSS_DISABLE_DBM=1
2229     MOZ_OGG=
2230     ac_configure_args="$ac_configure_args --enable-win32-target=WINCE"
2232     if test "$AS_BIN"; then
2233         AS="$AS_BIN"
2234     fi
2235     DSO_CFLAGS=
2236     DSO_PIC_CFLAGS=
2237     DLL_SUFFIX=.dll
2238     BIN_SUFFIX='.exe'
2239     if test -z "$RC"; then 
2240         RC=rc.exe  
2241     fi
2242     # certain versions of cygwin's makedepend barf on the 
2243     # #include <string> vs -I./dist/include/string issue so don't use it
2244     SYSTEM_MAKEDEPEND=
2246     HOST_CC=cl
2247     HOST_CXX=cl
2248     HOST_LD=link
2249     HOST_AR='lib -OUT:$@'
2250     HOST_RANLIB='echo ranlib'
2251     HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
2252         
2253         
2254     WARNINGS_AS_ERRORS='-WX'
2255     MOZ_OPTIMIZE_FLAGS='-Ox'
2256     AR_FLAGS='-NOLOGO -OUT:"$@"'
2257     ASM_SUFFIX=asm
2258     CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2259     CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2260     DLL_PREFIX=
2261     DOXYGEN=:
2262     DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
2263     DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2264     GARBAGE=
2265     IMPORT_LIB_SUFFIX=lib
2266     dnl Need to force-link against mozalloc because it's used in the shunt
2267     LIBS="$LIBS \$(LIBXUL_DIST)/lib/mozalloc.lib"
2268     LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2269     LIB_PREFIX=
2270     LIB_SUFFIX=lib 
2271     MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
2272     MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
2273     MKSHLIB_FORCE_ALL=
2274     MKSHLIB_UNFORCE_ALL=
2275     MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2276     MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2277     MOZ_DEBUG_FLAGS='-Zi'
2278     MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2279     MOZ_FIX_LINK_PATHS=
2280     MOZ_JS_STATIC_LIBS='$(LIBXUL_DIST)/lib/js_static.lib'
2281     MOZ_JS_SHARED_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2282     OBJ_SUFFIX=obj
2283     RANLIB='echo not_ranlib'
2284     STRIP='echo not_strip'
2285     TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
2286     UNZIP=unzip
2287     XARGS=xargs
2288     XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2289     ZIP=zip
2290     MOZ_TREE_FREETYPE=1
2292     AC_DEFINE(HAVE_SNPRINTF)
2293     AC_DEFINE(_WINDOWS)
2294     AC_DEFINE(WIN32)
2295     AC_DEFINE(XP_WIN)
2296     AC_DEFINE(XP_WIN32)
2297     AC_DEFINE(HW_THREADS)
2298     AC_DEFINE(STDC_HEADERS)
2299     AC_DEFINE(NEW_H, <new>)
2300     AC_DEFINE(WIN32_LEAN_AND_MEAN)
2301     AC_DEFINE(HAVE_LOCALTIME_R)
2303     TARGET_MD_ARCH=win32
2304     _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2305     BIN_SUFFIX='.exe'
2306     MOZ_USER_DIR="Mozilla"
2308     MOZ_GFX_OPTIMIZE_MOBILE=1
2310     # Sanity check for WINCE_WINDOWS_MOBILE
2311     # XXX disabled until we can fix the mobile tinderbox
2312     ##if test "$WINCE_WINDOWS_MOBILE"; then
2313     ##   AC_CHECK_HEADER(tpcshell.h, [],
2314     ##        AC_MSG_ERROR([Can't find tpcshell.h in your SDK; are you sure you don't need --disable-windows-mobile-components?]))
2315     ##fi
2319 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2320     DSO_CFLAGS=
2321     DSO_PIC_CFLAGS=
2322     DLL_SUFFIX=.dll
2323     RC=rc.exe
2324     # certain versions of cygwin's makedepend barf on the 
2325     # #include <string> vs -I./dist/include/string issue so don't use it
2326     SYSTEM_MAKEDEPEND=
2327     if test -n "$GNU_CC"; then
2328         CC="$CC -mno-cygwin"
2329         CXX="$CXX -mno-cygwin"
2330         CPP="$CPP -mno-cygwin"
2331         CFLAGS="$CFLAGS -mms-bitfields"
2332         CXXFLAGS="$CXXFLAGS -mms-bitfields"
2333         DSO_LDOPTS='-shared'
2334         MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
2335         MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2336         RC='$(WINDRES)'
2337         # Use temp file for windres (bug 213281)
2338         RCFLAGS='-O coff --use-temp-file'
2339         # mingw doesn't require kernel32, user32, and advapi32 explicitly
2340         LIBS="$LIBS -luuid -lgdi32 -lwinmm -lwsock32"
2341         MOZ_JS_STATIC_LIBS='-L$(LIBXUL_DIST)/bin -ljs_static'
2342         MOZ_JS_SHARED_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs'
2343         MOZ_FIX_LINK_PATHS=
2344         DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core -lmozalloc'
2345         XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom -lmozalloc'
2346         DLL_PREFIX=
2347         IMPORT_LIB_SUFFIX=dll.a
2348         GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
2349     else
2350         TARGET_COMPILER_ABI=msvc
2351         HOST_CC='$(CC)'
2352         HOST_CXX='$(CXX)'
2353         HOST_LD='$(LD)'
2354         if test "$AS_BIN"; then
2355             AS="$(basename "$AS_BIN")"
2356         fi
2357         AR='lib -NOLOGO -OUT:"$@"'
2358         AR_FLAGS=
2359         RANLIB='echo not_ranlib'
2360         STRIP='echo not_strip'
2361         XARGS=xargs
2362         ZIP=zip
2363         UNZIP=unzip
2364         DOXYGEN=:
2365         GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
2366         ASM_SUFFIX=asm
2367         OBJ_SUFFIX=obj
2368         LIB_SUFFIX=lib
2369         DLL_PREFIX=
2370         LIB_PREFIX=
2371         IMPORT_LIB_SUFFIX=lib
2372         MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2373         MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2374         MKSHLIB_FORCE_ALL=
2375         MKSHLIB_UNFORCE_ALL=
2376         DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2377         _USE_CPP_INCLUDE_FLAG=1
2378         _DEFINES_CFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2379         _DEFINES_CXXFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2380         CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2381         CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2382         CXXFLAGS="$CXXFLAGS -wd4800" # disable warning "forcing value to bool"
2383         LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
2384         MOZ_DEBUG_FLAGS='-Zi'
2385         MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2386         WARNINGS_AS_ERRORS='-WX'
2387         MOZ_OPTIMIZE_FLAGS='-O1'
2388         MOZ_JS_STATIC_LIBS='$(LIBXUL_DIST)/lib/js_static.lib'
2389         MOZ_JS_SHARED_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2390         MOZ_FIX_LINK_PATHS=
2391         DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2392         XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2393         LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2394         MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2395         if test $_MSC_VER -ge 1400; then
2396             LDFLAGS="$LDFLAGS -NXCOMPAT"
2397             dnl For profile-guided optimization
2398             PROFILE_GEN_CFLAGS="-GL"
2399             PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2400             dnl XXX: PGO builds can fail with warnings treated as errors,
2401             dnl specifically "no profile data available" appears to be
2402             dnl treated as an error sometimes. This might be a consequence
2403             dnl of using WARNINGS_AS_ERRORS in some modules, combined
2404             dnl with the linker doing most of the work in the whole-program
2405             dnl optimization/PGO case. I think it's probably a compiler bug,
2406             dnl but we work around it here.
2407             PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2408             dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2409             dnl Probably also a compiler bug, but what can you do?
2410             PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2411             if test -n "$_USE_DYNAMICBASE"; then
2412                LDFLAGS="$LDFLAGS -DYNAMICBASE"
2413             fi
2414         fi
2415     fi
2416     MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,jpeg32$(VERSION_NUMBER),$(DEPTH)/jpeg)'
2417     MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,png,$(DEPTH)/modules/libimg/png)'
2418     AC_DEFINE(HAVE_SNPRINTF)
2419     AC_DEFINE(_WINDOWS)
2420     AC_DEFINE(WIN32)
2421     AC_DEFINE(XP_WIN)
2422     AC_DEFINE(XP_WIN32)
2423     AC_DEFINE(HW_THREADS)
2424     AC_DEFINE(STDC_HEADERS)
2425     AC_DEFINE(NEW_H, <new>)
2426     AC_DEFINE(WIN32_LEAN_AND_MEAN)
2427     TARGET_MD_ARCH=win32
2428     _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2429     BIN_SUFFIX='.exe'
2430     MOZ_USER_DIR="Mozilla"
2432     dnl Hardcode to win95 for now - cls
2433     TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2435     dnl set NO_X11 defines here as the general check is skipped on win32
2436     no_x=yes
2437     AC_DEFINE(NO_X11)
2439     dnl MinGW/MSYS doesn't provide or need cygpath
2440     case "$host" in
2441     *-mingw*)
2442         CYGPATH_W=echo
2443         CYGPATH_S=cat
2444         MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2445         ;;
2446     *-cygwin*|*-msvc*|*-mks*)
2447         CYGPATH_W="cygpath -a -w"
2448         CYGPATH_S="sed -e s|\\\\|/|g"
2449         MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
2450         ;;
2451     esac
2452     case "$host" in
2453     *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2455     if test -z "$MOZ_TOOLS"; then
2456         AC_MSG_ERROR([MOZ_TOOLS is not set])
2457     fi
2459     MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2460     if test "$?" != "0" -o -z "$MOZ_TOOLS_DIR"; then
2461         AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2462     fi
2463     MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
2464     if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
2465         AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2466     fi
2467     MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
2468     ;;
2469     esac 
2472     case "$host_os" in
2473     cygwin*|msvc*|mks*)
2474         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])
2475         ;;
2477     *)
2478         AC_CHECK_HEADERS(oleacc.idl)
2480         AC_LANG_SAVE
2481         AC_LANG_CPLUSPLUS
2482         AC_CHECK_HEADERS(atlbase.h)
2483         AC_LANG_RESTORE
2484         ;;
2485     esac
2487     case "$target" in
2488     i*86-*)
2489         if test "$HAVE_64BIT_OS"; then
2490             AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
2491         fi
2493         if test $_MSC_VER -ge 1400; then
2494             LDFLAGS="$LDFLAGS -SAFESEH"
2495         fi
2496         AC_CHECK_HEADERS(mmintrin.h)
2497         AC_DEFINE(_X86_)
2498         ;;
2499     alpha-*)
2500         AC_DEFINE(_ALPHA_)
2501         ;;
2502     mips-*)
2503         AC_DEFINE(_MIPS_)
2504         ;;
2505     x86_64-*)
2506         AC_DEFINE(_AMD64_)
2507         ;;
2508     *)
2509         AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2510         ;;
2511     esac
2513     if test "$HAVE_64BIT_OS"; then
2514         AC_DEFINE(_WIN64)
2515     fi
2516     ;;
2518 *-netbsd*)
2519     DSO_CFLAGS=''
2520     CFLAGS="$CFLAGS -Dunix"
2521     CXXFLAGS="$CXXFLAGS -Dunix"
2522     if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2523         DLL_SUFFIX=".so"
2524         DSO_PIC_CFLAGS='-fPIC -DPIC'
2525         DSO_LDOPTS='-shared'
2526         BIN_FLAGS='-Wl,--export-dynamic'
2527     else
2528         DSO_PIC_CFLAGS='-fPIC -DPIC'
2529         DLL_SUFFIX=".so.1.0"
2530         DSO_LDOPTS='-shared'
2531     fi
2532     # This will fail on a.out systems prior to 1.5.1_ALPHA.
2533     MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2534     MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2535     if test "$LIBRUNPATH"; then
2536         DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2537     fi
2538     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2539     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2540     ;;
2542 *-nto*) 
2543         AC_DEFINE(NTO)  
2544         AC_DEFINE(_QNX_SOURCE)
2545         AC_DEFINE(_i386)
2546         OS_TARGET=NTO
2547         WARNINGS_AS_ERRORS=''
2548         MOZ_OPTIMIZE_FLAGS="-O"
2549         MOZ_DEBUG_FLAGS="-gstabs"
2550         USE_PTHREADS=1
2551         _PEDANTIC=
2552         LIBS="$LIBS -lsocket -lstdc++"
2553         _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
2554         _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h -D_POSIX_C_SOURCE=199506'
2555         if test "$with_x" != "yes"
2556         then
2557                 _PLATFORM_DEFAULT_TOOLKIT="photon"
2558             TK_CFLAGS='-I/usr/include/photon'
2559                 TK_LIBS='-lph'
2560         fi
2561         case "${target_cpu}" in
2562         ppc*)
2563         AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)        
2564         ;;
2565         esac
2566         case "${host_cpu}" in
2567         i*86)
2568         USE_ELF_DYNSTR_GC=1
2569         ;;
2570         esac
2571         ;;
2573 *-openbsd*)
2574     DLL_SUFFIX=".so.1.0"
2575     DSO_CFLAGS=''
2576     DSO_PIC_CFLAGS='-fPIC'
2577     DSO_LDOPTS='-shared -fPIC'
2578     if test "$LIBRUNPATH"; then
2579         DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2580     fi
2581     ;;
2583 *-openvms*) 
2584     AC_DEFINE(NO_PW_GECOS)
2585     AC_DEFINE(NO_UDSOCK)
2586     AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
2587     USE_PTHREADS=1
2588     MKSHLIB_FORCE_ALL='-all'
2589     MKSHLIB_UNFORCE_ALL='-none'
2590     AS='as'
2591     AS_DASH_C_FLAG='-Wc/names=as_is'
2592     AR_FLAGS='c $@'
2593     DSO_LDOPTS='-shared -auto_symvec'
2594     DSO_PIC_CFLAGS=
2595     MOZ_DEBUG_LDFLAGS='-g'
2596     COMPAQ_CXX=1
2597     CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
2598     CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
2599     ;;
2602 *-os2*)
2603     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2604     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2605     AC_DEFINE(OS2)
2606     AC_DEFINE(XP_OS2)
2607     AC_DEFINE(OS2EMX_PLAIN_CHAR)
2608     AC_DEFINE(TCPV40HDRS)
2609     DLL_PREFIX=
2610     LIB_PREFIX=
2611     LIB_SUFFIX=lib
2612     BIN_SUFFIX=".exe"
2613     DLL_SUFFIX=".dll"
2614     IMPORT_LIB_SUFFIX=lib
2615     DSO_PIC_CFLAGS=
2616     AR=emxomfar
2617     AR_FLAGS='r $@'
2618     CFLAGS="$CFLAGS -Zomf"
2619     CXXFLAGS="$CXXFLAGS -Zomf"
2620     DSO_LDOPTS='-Zdll'
2621     BIN_FLAGS='-Zlinker /ST:0x100000'
2622     IMPLIB='emximp -o'
2623     FILTER='emxexp -o'
2624     LDFLAGS='-Zmap'
2625     WARNINGS_AS_ERRORS='-Werror'
2626     MOZ_DEBUG_FLAGS="-g -fno-inline"
2627     MOZ_OPTIMIZE_FLAGS="-O2"
2628     MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2629     DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2630     LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2631     TARGET_MD_ARCH=os2
2632     _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2633     RC=rc.exe
2634     RCFLAGS='-n'
2635     MOZ_USER_DIR="Mozilla"
2637     if test "$MOZTOOLS"; then
2638         MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2639     else
2640         AC_MSG_ERROR([MOZTOOLS is not set])
2641     fi
2642     if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2643         DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2644         LDFLAGS="$LDFLAGS -Zhigh-mem"
2645         MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2646         AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2647     fi
2649     # GCC for OS/2 currently predefines these, but we don't want them
2650     _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2651     _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2653     AC_CACHE_CHECK(for __declspec(dllexport),
2654         ac_os2_declspec,
2655         [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2656                         [return 0;],
2657                         ac_os2_declspec="yes",
2658                         ac_os2_declspec="no")])
2659     if test "$ac_os2_declspec" = "yes"; then
2660         FILTER='true'
2661         MOZ_OS2_USE_DECLSPEC='1'
2662     fi
2663     ;;
2665 alpha*-*-osf*)
2666     if test "$GNU_CC"; then
2667       MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2668       MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2670     else
2671         MOZ_DEBUG_FLAGS='-g'
2672         ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
2673         CFLAGS="$CFLAGS -ieee"
2674         CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee  -ptr $(DIST)/cxx_repository'
2675         DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
2676         DSO_CFLAGS=
2677         DSO_PIC_CFLAGS=
2678         MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2679         MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2680         MKSHLIB_FORCE_ALL='-all'
2681         MKSHLIB_UNFORCE_ALL='-none'
2682         dnl Might fix the libxpcom.so breakage on this platform as well....
2683         AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2684         AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2685     fi
2686     if test -z "$GNU_CXX"; then
2687       COMPAQ_CXX=1
2688     fi
2689     AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2690     ;;
2692 *-qnx*) 
2693     DIRENT_INO=d_stat.st_ino
2694     dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
2695     AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2696     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2697     dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
2698     AC_DEFINE(STDC_HEADERS)
2699     if test "$no_x" = "yes"; then
2700             _PLATFORM_DEFAULT_TOOLKIT='photon'
2701             TK_CFLAGS='-I/usr/nto/include/photon'
2702             TK_LIBS='-lphoton -lphrender'
2703     fi
2704     ;;
2706 *-sco*) 
2707     AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2708     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2709     CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
2710     if test ! "$GNU_CC"; then
2711        DSO_LDOPTS='-G'
2712     fi
2713     ;;
2715 *-solaris*) 
2716     AC_DEFINE(SOLARIS)
2717     TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2718     SYSTEM_MAKEDEPEND=
2719     MOZ_FIX_LINK_PATHS=
2720     # $ORIGIN/.. is for shared libraries under components/ to locate shared
2721     # libraries one level up (e.g. libnspr4.so)
2722     if test "$SOLARIS_SUNPRO_CC"; then
2723        LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..' -z lazyload -z combreloc -z muldefs"
2724        LIBS="-lCrun -lCstd -lc $LIBS"
2725        NS_USE_NATIVE=1
2726        AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2727        CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__"
2728        CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions -norunpath -D__FUNCTION__=__func__ -template=no%extdef"
2729        _MOZ_EXCEPTIONS_FLAGS_ON='-features=except'
2730        _MOZ_EXCEPTIONS_FLAGS_OFF='-features=no%except'
2731        LDFLAGS="-xildoff $LDFLAGS"
2732        if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then
2733            _SAVE_LDFLAGS=$LDFLAGS
2734            LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS" 
2735            AC_TRY_LINK([#include <stdio.h>],
2736                        [printf("Hello World\n");],
2737                        ,
2738                        [LDFLAGS=$_SAVE_LDFLAGS])
2739        fi
2740        WARNINGS_AS_ERRORS='-Werror'
2741        MOZ_OPTIMIZE_FLAGS="-xO4"
2742        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2743        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2744        MKSHLIB_FORCE_ALL='-z allextract'
2745        MKSHLIB_UNFORCE_ALL='-z defaultextract'
2746        DSO_LDOPTS='-G'
2747        AR_LIST="$AR t"
2748        AR_EXTRACT="$AR x"
2749        AR_DELETE="$AR d"
2750        AR='$(CXX) -xar'
2751        AR_FLAGS='-o $@'
2752        AS='/usr/ccs/bin/as'
2753        ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2754        AS_DASH_C_FLAG=''
2755        TARGET_COMPILER_ABI="sunc"
2756        CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2757        CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2758        AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
2759        AC_LANG_SAVE
2760        AC_LANG_CPLUSPLUS
2761        AC_TRY_COMPILE([],
2762            [#if (__SUNPRO_CC < 0x590)
2763            #error "Denied"
2764            #endif],
2765            _BAD_COMPILER=,_BAD_COMPILER=1)
2766        if test -n "$_BAD_COMPILER"; then
2767            _res="no"
2768            AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
2769        else
2770            _res="yes"
2771        fi
2772        AC_TRY_COMPILE([],
2773            [#if (__SUNPRO_CC >= 0x5100)
2774            #error "Sun C++ 5.10 or above"
2775            #endif],
2776            _ABOVE_SS12U1=,_ABOVE_SS12U1=1)
2777        if test "$_ABOVE_SS12U1"; then
2778            # disable xannotate
2779            CXXFLAGS="$CXXFLAGS -xannotate=no"
2780        fi
2781        AC_MSG_RESULT([$_res])
2782        AC_LANG_RESTORE
2783     else
2784        LDFLAGS="$LDFLAGS -Wl,-z,ignore -Wl,-R,'\$\$ORIGIN:\$\$ORIGIN/..' -Wl,-z,lazyload -Wl,-z,combreloc -Wl,-z,muldefs"
2785        LIBS="-lc $LIBS"
2786        MKSHLIB_FORCE_ALL='-Wl,-z -Wl,allextract'
2787        MKSHLIB_UNFORCE_ALL='-Wl,-z -Wl,defaultextract'
2788        ASFLAGS="$ASFLAGS -fPIC"
2789        DSO_LDOPTS='-shared'
2790        _WARNINGS_CFLAGS=''
2791        _WARNINGS_CXXFLAGS=''
2792        if test "$OS_RELEASE" = "5.3"; then
2793            AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2794        fi
2795     fi
2796     if test "$OS_RELEASE" = "5.5.1"; then
2797         AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2798     fi
2799     ;;
2801 *-sunos*) 
2802     DSO_LDOPTS='-Bdynamic'
2803     MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2804     MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2805     AC_DEFINE(SUNOS4)
2806     AC_DEFINE(SPRINTF_RETURNS_STRING)
2807     case "$(target_os)" in
2808     sunos4.1*)
2809         DLL_SUFFIX='.so.1.0'
2810         ;;
2811     esac
2812     ;;
2814 *-sysv4.2uw7*) 
2815         NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2816     ;;
2818 *-os2*)
2819     HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2820     ;;
2822 *-android*)
2823     AC_DEFINE(NO_PW_GECOS)
2824     no_x=yes
2825     _PLATFORM_DEFAULT_TOOLKIT=cairo-android
2826     TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2828     MOZ_GFX_OPTIMIZE_MOBILE=1
2829     MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions -fomit-frame-pointer"
2830     ;;
2832 esac
2834 dnl Only one oddball right now (QNX), but this gives us flexibility
2835 dnl if any other platforms need to override this in the future.
2836 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2838 dnl ========================================================
2839 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2840 dnl by now will not have any way to link most binaries (tests
2841 dnl as well as viewer, apprunner, etc.), because some symbols
2842 dnl will be left out of the "composite" .so's by ld as unneeded.
2843 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2844 dnl they can link in the static libs that provide the missing
2845 dnl symbols.
2846 dnl ========================================================
2847 NO_LD_ARCHIVE_FLAGS=
2848 if test -z "$MKSHLIB_FORCE_ALL" -o -z "$MKSHLIB_UNFORCE_ALL"; then
2849     NO_LD_ARCHIVE_FLAGS=1
2851 case "$target" in
2852 *-os2*)
2853     NO_LD_ARCHIVE_FLAGS=
2854     ;;
2855 *-aix4.3*|*-aix5*)
2856     NO_LD_ARCHIVE_FLAGS=
2857     ;;
2858 *-openvms*)
2859     NO_LD_ARCHIVE_FLAGS=
2860     ;;
2861 *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince|*-winmo)
2862     if test -z "$GNU_CC"; then
2863         NO_LD_ARCHIVE_FLAGS=
2864     fi
2865     ;;
2866 esac
2867 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2869 dnl ========================================================
2870 dnl = Flags to strip unused symbols from .so components
2871 dnl ========================================================
2872 case "$target" in
2873     *-linux*|*-kfreebsd*-gnu|*-gnu*)
2874         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2875         ;;
2876     *-solaris*)
2877         if test -z "$GNU_CC"; then
2878          MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2879         else
2880          if test -z "$GCC_USE_GNU_LD"; then
2881           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2882          else
2883           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2884          fi
2885         fi
2886         ;;
2887     *-nto*) 
2888         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2889         ;;
2890     *-darwin*)
2891         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2892         ;;
2893     *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince|*-winmo)
2894         if test -n "$GNU_CC"; then
2895            MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2896         fi
2897         ;;
2898 esac
2900 if test -z "$COMPILE_ENVIRONMENT"; then
2901     SKIP_COMPILER_CHECKS=1
2902     SKIP_LIBRARY_CHECKS=1
2905 if test -z "$SKIP_COMPILER_CHECKS"; then
2906 dnl Checks for typedefs, structures, and compiler characteristics.
2907 dnl ========================================================
2908 AC_HEADER_STDC
2909 AC_C_CONST
2910 AC_TYPE_MODE_T
2911 AC_TYPE_OFF_T
2912 AC_TYPE_PID_T
2913 AC_TYPE_SIZE_T
2914 AC_LANG_CPLUSPLUS
2915 AC_MSG_CHECKING(for __stdcall)
2916 AC_CACHE_VAL(ac_cv___stdcall,
2917  [AC_TRY_COMPILE([template <typename Method> struct foo;
2918                   template <> struct foo<void (*)()> {};
2919                   template <> struct foo<void (__stdcall*)()> {};],
2920                  [],
2921                  [ac_cv___stdcall=true],
2922                  [ac_cv___stdcall=false])])
2923 if test "$ac_cv___stdcall" = true ; then
2924   AC_DEFINE(HAVE_STDCALL)
2925   AC_MSG_RESULT(yes)
2926 else
2927   AC_MSG_RESULT(no)
2929 AC_LANG_C
2930 AC_MSG_CHECKING(for ssize_t)
2931 AC_CACHE_VAL(ac_cv_type_ssize_t,
2932  [AC_TRY_COMPILE([#include <stdio.h>
2933                   #include <sys/types.h>],
2934                  [ssize_t foo = 0;],
2935                  [ac_cv_type_ssize_t=true],
2936                  [ac_cv_type_ssize_t=false])])
2937 if test "$ac_cv_type_ssize_t" = true ; then
2938   AC_DEFINE(HAVE_SSIZE_T)
2939   AC_MSG_RESULT(yes)
2940 else
2941   AC_MSG_RESULT(no)
2943 AC_STRUCT_ST_BLKSIZE
2944 AC_MSG_CHECKING(for siginfo_t)
2945 AC_CACHE_VAL(ac_cv_siginfo_t,
2946  [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2947                   #include <signal.h>],
2948                  [siginfo_t* info;],
2949                  [ac_cv_siginfo_t=true],
2950                  [ac_cv_siginfo_t=false])])
2951 if test "$ac_cv_siginfo_t" = true ; then
2952   AC_DEFINE(HAVE_SIGINFO_T)
2953   AC_MSG_RESULT(yes)
2954 else
2955   AC_MSG_RESULT(no)
2958 dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
2959 dnl ========================================================
2960 AC_MSG_CHECKING(for int16_t)
2961 AC_CACHE_VAL(ac_cv_int16_t,
2962  [AC_TRY_COMPILE([#include <stdio.h>
2963                   #include <sys/types.h>],
2964                  [int16_t foo = 0;],
2965                  [ac_cv_int16_t=true],
2966                  [ac_cv_int16_t=false])])
2967 if test "$ac_cv_int16_t" = true ; then
2968   AC_DEFINE(HAVE_INT16_T)
2969   AC_MSG_RESULT(yes)
2970 else
2971   AC_MSG_RESULT(no)
2973 AC_MSG_CHECKING(for int32_t)
2974 AC_CACHE_VAL(ac_cv_int32_t,
2975  [AC_TRY_COMPILE([#include <stdio.h>
2976                   #include <sys/types.h>],
2977                  [int32_t foo = 0;],
2978                  [ac_cv_int32_t=true],
2979                  [ac_cv_int32_t=false])])
2980 if test "$ac_cv_int32_t" = true ; then
2981   AC_DEFINE(HAVE_INT32_T)
2982   AC_MSG_RESULT(yes)
2983 else
2984   AC_MSG_RESULT(no)
2986 AC_MSG_CHECKING(for int64_t)
2987 AC_CACHE_VAL(ac_cv_int64_t,
2988  [AC_TRY_COMPILE([#include <stdio.h>
2989                   #include <sys/types.h>],
2990                  [int64_t foo = 0;],
2991                  [ac_cv_int64_t=true],
2992                  [ac_cv_int64_t=false])])
2993 if test "$ac_cv_int64_t" = true ; then
2994   AC_DEFINE(HAVE_INT64_T)
2995   AC_MSG_RESULT(yes)
2996 else
2997   AC_MSG_RESULT(no)
2999 AC_MSG_CHECKING(for int64)
3000 AC_CACHE_VAL(ac_cv_int64,
3001  [AC_TRY_COMPILE([#include <stdio.h>
3002                   #include <sys/types.h>],
3003                  [int64 foo = 0;],
3004                  [ac_cv_int64=true],
3005                  [ac_cv_int64=false])])
3006 if test "$ac_cv_int64" = true ; then
3007   AC_DEFINE(HAVE_INT64)
3008   AC_MSG_RESULT(yes)
3009 else
3010   AC_MSG_RESULT(no)
3012 AC_MSG_CHECKING(for uint)
3013 AC_CACHE_VAL(ac_cv_uint,
3014  [AC_TRY_COMPILE([#include <stdio.h>
3015                   #include <sys/types.h>],
3016                  [uint foo = 0;],
3017                  [ac_cv_uint=true],
3018                  [ac_cv_uint=false])])
3019 if test "$ac_cv_uint" = true ; then
3020   AC_DEFINE(HAVE_UINT)
3021   AC_MSG_RESULT(yes)
3022 else
3023   AC_MSG_RESULT(no)
3025 AC_MSG_CHECKING(for uint_t)
3026 AC_CACHE_VAL(ac_cv_uint_t,
3027  [AC_TRY_COMPILE([#include <stdio.h>
3028                   #include <sys/types.h>],
3029                  [uint_t foo = 0;],
3030                  [ac_cv_uint_t=true],
3031                  [ac_cv_uint_t=false])])
3032 if test "$ac_cv_uint_t" = true ; then
3033   AC_DEFINE(HAVE_UINT_T)
3034   AC_MSG_RESULT(yes)
3035 else
3036   AC_MSG_RESULT(no)
3038 AC_MSG_CHECKING(for uint16_t)
3039 AC_CACHE_VAL(ac_cv_uint16_t,
3040  [AC_TRY_COMPILE([#include <stdio.h>
3041                   #include <sys/types.h>],
3042                  [uint16_t foo = 0;],
3043                  [ac_cv_uint16_t=true],
3044                  [ac_cv_uint16_t=false])])
3045 if test "$ac_cv_uint16_t" = true ; then
3046   AC_DEFINE(HAVE_UINT16_T)
3047   AC_MSG_RESULT(yes)
3048 else
3049   AC_MSG_RESULT(no)
3052 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
3053 dnl are defined when compiling C++ but not C.  Since the result of this
3054 dnl test is used only in C++, do it in C++.
3055 AC_LANG_CPLUSPLUS
3057 AC_MSG_CHECKING(for uname.domainname)
3058 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
3059     [AC_TRY_COMPILE([#include <sys/utsname.h>],
3060         [ struct utsname *res; char *domain; 
3061             (void)uname(res);  if (res != 0) { domain = res->domainname; } ],
3062         [ac_cv_have_uname_domainname_field=true],
3063         [ac_cv_have_uname_domainname_field=false])])
3065 if test "$ac_cv_have_uname_domainname_field" = "true"; then
3066     AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
3067     AC_MSG_RESULT(yes)
3068 else
3069     AC_MSG_RESULT(no)
3072 AC_MSG_CHECKING(for uname.__domainname)
3073 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
3074     [AC_TRY_COMPILE([#include <sys/utsname.h>],
3075         [ struct utsname *res; char *domain; 
3076             (void)uname(res);  if (res != 0) { domain = res->__domainname; } ],
3077         [ac_cv_have_uname_us_domainname_field=true],
3078         [ac_cv_have_uname_us_domainname_field=false])])
3080 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
3081     AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
3082     AC_MSG_RESULT(yes)
3083 else
3084     AC_MSG_RESULT(no)
3087 AC_LANG_CPLUSPLUS
3089 dnl Check for usable char16_t (2 bytes, unsigned)
3090 dnl (we might not need the unsignedness check anymore)
3091 AC_CACHE_CHECK(for usable char16_t (2 bytes, unsigned),
3092     ac_cv_have_usable_char16_t,
3093     [AC_TRY_COMPILE([$configure_static_assert_macros],
3094                     [CONFIGURE_STATIC_ASSERT(sizeof(char16_t) == 2);
3095                      CONFIGURE_STATIC_ASSERT(char16_t(-1) > char16_t(0));
3096                      CONFIGURE_STATIC_ASSERT(sizeof((u"hello")[0]) == 2);
3097                      CONFIGURE_STATIC_ASSERT(sizeof(u'a') == 2);
3098                      CONFIGURE_STATIC_ASSERT(u'\xFFFF' > u'\x0')],
3099                     ac_cv_have_usable_char16_t="yes",
3100                     ac_cv_have_usable_char16_t="no")])
3101 if test "$ac_cv_have_usable_char16_t" = "yes"; then
3102     AC_DEFINE(HAVE_CPP_CHAR16_T)
3103     HAVE_CPP_CHAR16_T=1
3106 dnl Check for usable wchar_t (2 bytes, unsigned)
3107 dnl (we really don't need the unsignedness check anymore)
3108 dnl ========================================================
3110 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
3111     ac_cv_have_usable_wchar_v2,
3112     [AC_TRY_COMPILE([#include <stddef.h>
3113                      $configure_static_assert_macros],
3114                     [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
3115                      CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
3116                     ac_cv_have_usable_wchar_v2="yes",
3117                     ac_cv_have_usable_wchar_v2="no")])
3118 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
3119     AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
3120     HAVE_CPP_2BYTE_WCHAR_T=1
3121 elif test "$ac_cv_have_usable_char16_t" != "yes"; then
3122 dnl This is really gcc-only
3123 dnl Do this test using CXX only since some versions of gcc
3124 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
3125 dnl only have short-wchar support for c++.
3126 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
3128     _SAVE_CXXFLAGS=$CXXFLAGS
3129     CXXFLAGS="$CXXFLAGS -fshort-wchar"
3131     AC_CACHE_CHECK(for compiler -fshort-wchar option, 
3132         ac_cv_have_usable_wchar_option_v2,
3133         [AC_TRY_LINK([#include <stddef.h>
3134                       $configure_static_assert_macros],
3135                      [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
3136                       CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
3137                      ac_cv_have_usable_wchar_option_v2="yes",
3138                      ac_cv_have_usable_wchar_option_v2="no")])
3140     if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
3141         AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
3142         HAVE_CPP_2BYTE_WCHAR_T=1
3143         WCHAR_CFLAGS="-fshort-wchar"
3144     else    
3145         CXXFLAGS=$_SAVE_CXXFLAGS
3146     fi
3149 AC_LANG_C
3151 dnl Check for .hidden assembler directive and visibility attribute.
3152 dnl Borrowed from glibc configure.in
3153 dnl ===============================================================
3154 if test "$GNU_CC"; then
3155   AC_CACHE_CHECK(for visibility(hidden) attribute,
3156                  ac_cv_visibility_hidden,
3157                  [cat > conftest.c <<EOF
3158                   int foo __attribute__ ((visibility ("hidden"))) = 1;
3160                   ac_cv_visibility_hidden=no
3161                   if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3162                     if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
3163                       ac_cv_visibility_hidden=yes
3164                     fi
3165                   fi
3166                   rm -f conftest.[cs]
3167                  ])
3168   if test "$ac_cv_visibility_hidden" = "yes"; then
3169     AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
3171     AC_CACHE_CHECK(for visibility(default) attribute,
3172                    ac_cv_visibility_default,
3173                    [cat > conftest.c <<EOF
3174                     int foo __attribute__ ((visibility ("default"))) = 1;
3176                     ac_cv_visibility_default=no
3177                     if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3178                       if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
3179                         ac_cv_visibility_default=yes
3180                       fi
3181                     fi
3182                     rm -f conftest.[cs]
3183                    ])
3184     if test "$ac_cv_visibility_default" = "yes"; then
3185       AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
3187       AC_CACHE_CHECK(for visibility pragma support,
3188                      ac_cv_visibility_pragma,
3189                      [cat > conftest.c <<EOF
3190 #pragma GCC visibility push(hidden)
3191                       int foo_hidden = 1;
3192 #pragma GCC visibility push(default)
3193                       int foo_default = 1;
3195                       ac_cv_visibility_pragma=no
3196                       if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3197                         if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
3198                           if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
3199                             ac_cv_visibility_pragma=yes
3200                           fi
3201                         fi
3202                       fi
3203                       rm -f conftest.[cs]
3204                     ])
3205       if test "$ac_cv_visibility_pragma" = "yes"; then
3206         AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
3207                        ac_cv_have_visibility_class_bug,
3208                        [cat > conftest.c <<EOF
3209 #pragma GCC visibility push(hidden)
3210 struct __attribute__ ((visibility ("default"))) TestStruct {
3211   static void Init();
3213 __attribute__ ((visibility ("default"))) void TestFunc() {
3214   TestStruct::Init();
3217                        ac_cv_have_visibility_class_bug=no
3218                        if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
3219                          ac_cv_have_visibility_class_bug=yes
3220                        else
3221                          if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
3222                            ac_cv_have_visibility_class_bug=yes
3223                          fi
3224                        fi
3225                        rm -rf conftest.{c,S}
3226                        ])
3228         AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
3229                        ac_cv_have_visibility_builtin_bug,
3230                        [cat > conftest.c <<EOF
3231 #pragma GCC visibility push(hidden)
3232 #pragma GCC visibility push(default)
3233 #include <string.h>
3234 #pragma GCC visibility pop
3236 __attribute__ ((visibility ("default"))) void Func() {
3237   char c[[100]];
3238   memset(c, 0, sizeof(c));
3241                        ac_cv_have_visibility_builtin_bug=no
3242                        if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
3243                          ac_cv_have_visibility_builtin_bug=yes
3244                        else
3245                          if test `grep -c "@PLT" conftest.S` = 0; then
3246                            ac_cv_visibility_builtin_bug=yes
3247                          fi
3248                        fi
3249                        rm -f conftest.{c,S}
3250                        ])
3251         if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
3252                 "$ac_cv_have_visibility_class_bug" = "no"; then
3253           VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
3254           WRAP_SYSTEM_INCLUDES=1
3255           STL_FLAGS='-I$(DIST)/stl_wrappers'
3256           WRAP_STL_INCLUDES=1
3257         else
3258           VISIBILITY_FLAGS='-fvisibility=hidden'
3259         fi # have visibility pragma bug
3260       fi   # have visibility pragma
3261     fi     # have visibility(default) attribute
3262   fi       # have visibility(hidden) attribute
3263 fi         # GNU_CC
3265 # visibility hidden flag for Sun Studio on Solaris
3266 if test "$SOLARIS_SUNPRO_CC"; then
3267 VISIBILITY_FLAGS='-xldscope=hidden'
3268 fi         # Sun Studio on Solaris
3270 AC_SUBST(WRAP_SYSTEM_INCLUDES)
3271 AC_SUBST(VISIBILITY_FLAGS)
3273 dnl Check for __force_align_arg_pointer__ for SSE2 on gcc
3274 dnl ========================================================
3275 if test "$GNU_CC"; then
3276   CFLAGS_save="${CFLAGS}"
3277   CFLAGS="${CFLAGS} -Werror"
3278   AC_CACHE_CHECK(for __force_align_arg_pointer__ attribute,
3279                  ac_cv_force_align_arg_pointer,
3280                  [AC_TRY_COMPILE([__attribute__ ((__force_align_arg_pointer__)) void test() {}],
3281                                  [],
3282                                  ac_cv_force_align_arg_pointer="yes",
3283                                  ac_cv_force_align_arg_pointer="no")])
3284   CFLAGS="${CFLAGS_save}"
3285   if test "$ac_cv_force_align_arg_pointer" = "yes"; then
3286     HAVE_GCC_ALIGN_ARG_POINTER=1
3287   else
3288     HAVE_GCC_ALIGN_ARG_POINTER=
3289   fi
3291 AC_SUBST(HAVE_GCC_ALIGN_ARG_POINTER)
3293 dnl Checks for header files.
3294 dnl ========================================================
3295 AC_HEADER_DIRENT
3296 case "$target_os" in
3297 freebsd*)
3298 # for stuff like -lXshm
3299     CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
3300     ;;
3301 esac
3302 AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
3303 AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
3304 AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
3305 AC_CHECK_HEADERS(malloc.h)
3306 AC_CHECK_HEADERS(X11/XKBlib.h)
3307 AC_CHECK_HEADERS(io.h)
3309 dnl These are all the places some variant of statfs can be hiding.
3310 AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
3312 dnl Quota support
3313 AC_CHECK_HEADERS(sys/quota.h)
3314 AC_CHECK_HEADERS(linux/quota.h)
3316 dnl Try for MMX support
3317 dnl NB - later gcc versions require -mmmx for this header to be successfully
3318 dnl included (or another option which implies it, such as -march=pentium-mmx)
3319 AC_CHECK_HEADERS(mmintrin.h)
3321 dnl Check whether the compiler supports the new-style C++ standard
3322 dnl library headers (i.e. <new>) or needs the old "new.h"
3323 AC_LANG_CPLUSPLUS
3324 NEW_H=new.h
3325 AC_CHECK_HEADER(new, [NEW_H=new])
3326 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
3327 AC_LANG_C
3329 AC_ARG_ENABLE(dtrace,
3330               [  --enable-dtrace         build with dtrace support if available (default=no)],
3331               [enable_dtrace="yes"],)
3332 if test "x$enable_dtrace" = "xyes"; then
3333   AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
3334   if test -n "$HAVE_DTRACE"; then
3335       AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
3336   else
3337       AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
3338   fi
3340 AC_SUBST(HAVE_DTRACE)
3342 case $target in
3343 *-aix4.3*|*-aix5*)
3344         ;;
3346         AC_CHECK_HEADERS(sys/cdefs.h)
3347         ;;
3348 esac
3350 dnl Checks for libraries.
3351 dnl ========================================================
3352 case $target in
3353 *-hpux11.*)
3354         ;;
3356         AC_CHECK_LIB(c_r, gethostbyname_r)
3357         ;;
3358 esac
3360 dnl We don't want to link with libdl even if it's present on OS X, since
3361 dnl it's not used and not part of the default installation.
3362 dnl The same goes for BeOS. OS/2 has dlfcn in libc.
3363 dnl We don't want to link against libm or libpthread on Darwin since
3364 dnl they both are just symlinks to libSystem and explicitly linking
3365 dnl against libSystem causes issues when debugging (see bug 299601).
3366 case $target in
3367 *-darwin*)
3368     ;;
3369 *-beos*)
3370     ;;
3371 *-os2*)
3372     ;;
3374     AC_CHECK_LIB(m, atan)
3375     AC_CHECK_LIB(dl, dlopen,
3376     AC_CHECK_HEADER(dlfcn.h, 
3377         LIBS="-ldl $LIBS"
3378         AC_DEFINE(HAVE_LIBDL)))
3379     ;;
3380 esac
3382 _SAVE_CFLAGS="$CFLAGS"
3383 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3384 AC_CHECK_FUNCS(dladdr)
3385 CFLAGS="$_SAVE_CFLAGS"
3387 if test ! "$GNU_CXX"; then
3389     case $target in
3390     *-aix*)
3391         AC_CHECK_LIB(C_r, demangle)
3392         ;;
3393      *)
3394         AC_CHECK_LIB(C, demangle)
3395         ;;
3396      esac
3399 dnl OS/2 has socket in libc.
3400 case $target in
3401 *-os2*)
3402     ;;
3404     AC_CHECK_LIB(socket, socket)
3405 esac
3407 dnl ========================================================
3408 dnl Check whether we can compile code for Core Text
3409 dnl (available on Mac OS X 10.5 or later)
3410 dnl ========================================================
3411 case "$target" in
3412 *-darwin*)
3413   AC_MSG_CHECKING([for Core Text])
3414   AC_TRY_COMPILE([#include <ApplicationServices/ApplicationServices.h>],
3415                  [CTLineRef lineRef;],
3416                   ac_cv_have_core_text="yes",
3417                   ac_cv_have_core_text="no")
3418   AC_MSG_RESULT([$ac_cv_have_core_text])
3420   if test "$ac_cv_have_core_text" = "no"; then
3421     AC_MSG_ERROR([Core Text is required (available on Mac OS X 10.5 or later).])
3422   fi
3423   ;;
3424 esac
3426 XLDFLAGS="$X_LIBS"
3427 XLIBS="$X_EXTRA_LIBS"
3429 dnl ========================================================
3430 dnl Checks for X libraries.
3431 dnl Ordering is important.
3432 dnl Xt is dependent upon SM as of X11R6
3433 dnl ========================================================
3434 if test "$no_x" = "yes"; then
3435     AC_DEFINE(NO_X11)
3436 else
3437     AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3438         XLIBS="-lX11 $XLIBS"
3439         _SAVE_LDFLAGS="$LDFLAGS"
3440         LDFLAGS="$XLDFLAGS $LDFLAGS"
3441         AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3442                 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3443         AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3444                 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3445      
3446         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3447         unset ac_cv_lib_Xt_XtFree
3448             AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3449             AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS) 
3450         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3451                     [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3452         ])
3454     # AIX needs the motif library linked before libXt to prevent
3455     # crashes in plugins linked against Motif - Bug #98892
3456     case "${target_os}" in
3457     aix*)
3458         XT_LIBS="-lXm $XT_LIBS"
3459         ;;
3460     esac
3462     dnl ========================================================
3463     dnl = Check for XShm
3464     dnl ========================================================
3465     AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3466         $XLIBS $XEXT_LIBS)
3467     AC_CHECK_HEADER(X11/extensions/XShm.h)
3468     if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" &&
3469         test -n "$_HAVE_XSHM_XEXT"; then
3470         AC_DEFINE(HAVE_XSHM)
3471     fi
3473     dnl ========================================================
3474     dnl = Check for Xss
3475     dnl ========================================================
3476     AC_CHECK_HEADER(X11/extensions/scrnsaver.h,
3477         AC_CHECK_LIB(Xss, XScreenSaverQueryInfo,
3478             [XSS_LIBS="-lXss $XEXT_LIBS $XLIBS"
3479              AC_DEFINE(HAVE_LIBXSS)],, $XEXT_LIBS $XLIBS))
3481     dnl ========================================================
3482     dnl = Check for XIE
3483     dnl ========================================================
3484     AC_CHECK_LIB(XIE, XieFloGeometry, [MOZ_XIE_LIBS="-lXIE"],,
3485         $XLIBS $XEXT_LIBS)
3486     AC_CHECK_HEADER(X11/extensions/XIElib.h)
3488     if test "$MOZ_XIE_LIBS"; then
3489         dnl ====================================================
3490         dnl = If XIE is present and is desired, turn it on
3491         dnl ====================================================
3492         case $target in
3493             *-hpux*)
3494                 ;;
3495             *)
3496                 HAVE_XIE=1
3497                 ;;
3498         esac
3499     fi
3501         LDFLAGS="$_SAVE_LDFLAGS"
3503     dnl ========================================================
3504     dnl = Check for freetype2 and its functionality
3505     dnl ========================================================
3506     AC_CHECK_FT2(6.1.0, [_HAVE_FREETYPE2=1], [_HAVE_FREETYPE2=])
3508     if test "$_HAVE_FREETYPE2"; then
3509         _SAVE_LIBS="$LIBS"
3510         _SAVE_CFLAGS="$CFLAGS"
3511         LIBS="$LIBS $FT2_LIBS"
3512         CFLAGS="$CFLAGS $FT2_CFLAGS"
3514         AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
3515             ac_cv_member_FT_Bitmap_Size_y_ppem,
3516             [AC_TRY_COMPILE([#include <ft2build.h>
3517                              #include FT_FREETYPE_H],
3518                             [FT_Bitmap_Size s;
3519                              if (sizeof s.y_ppem) return 0;
3520                              return 1],
3521                             ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
3522                             ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
3523         if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
3524             HAVE_FT_BITMAP_SIZE_Y_PPEM=1
3525         else
3526             HAVE_FT_BITMAP_SIZE_Y_PPEM=0
3527         fi
3528         AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
3529                            $HAVE_FT_BITMAP_SIZE_Y_PPEM,
3530                            [FT_Bitmap_Size structure includes y_ppem field])
3532         AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
3534         LIBS="$_SAVE_LIBS"
3535         CFLAGS="$_SAVE_CFLAGS"
3536     fi
3538 fi # $no_x
3540 AC_SUBST(XCFLAGS)
3541 AC_SUBST(XLDFLAGS)
3542 AC_SUBST(XLIBS)
3543 AC_SUBST(XEXT_LIBS)
3544 AC_SUBST(XT_LIBS)
3545 AC_SUBST(XSS_LIBS)
3547 AC_MSG_CHECKING(for ARM SIMD support in compiler)
3548 AC_TRY_COMPILE([],
3549                [asm("uqadd8 r1, r1, r2");],
3550                result="yes", result="no")
3551 AC_MSG_RESULT("$result")
3552 if test "$result" = "yes"; then
3553     AC_DEFINE(HAVE_ARM_SIMD)
3554     HAVE_ARM_SIMD=1
3556 AC_SUBST(HAVE_ARM_SIMD)
3558 AC_MSG_CHECKING(for ARM NEON support in compiler)
3559 _SAVE_CFLAGS="$CFLAGS"
3560 if test "$GNU_CC"; then
3561   # gcc needs -mfpu=neon to recognize NEON instructions
3562   CFLAGS="$CFLAGS -mfpu=neon -mfloat-abi=softfp"
3564 AC_TRY_COMPILE([],
3565                [asm("vadd.i8 d0, d0, d0");],
3566                result="yes", result="no")
3567 AC_MSG_RESULT("$result")
3568 if test "$result" = "yes"; then
3569     AC_DEFINE(HAVE_ARM_NEON)
3570     HAVE_ARM_NEON=1
3572 CFLAGS="$_SAVE_CFLAGS"
3573 AC_SUBST(HAVE_ARM_NEON)
3575 dnl ========================================================
3576 dnl = pthread support
3577 dnl = Start by checking whether the system support pthreads
3578 dnl ========================================================
3579 case "$target_os" in
3580 darwin*)
3581     USE_PTHREADS=1
3582     ;;
3584     MOZ_CHECK_PTHREADS(pthreads,
3585         USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3586         MOZ_CHECK_PTHREADS(pthread,
3587             USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3588             MOZ_CHECK_PTHREADS(c_r,
3589                 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3590                 MOZ_CHECK_PTHREADS(c,
3591                     USE_PTHREADS=1
3592                 )
3593             )
3594         )
3595     )
3596     ;;
3597 esac
3599 dnl ========================================================
3600 dnl Check the command line for --with-pthreads 
3601 dnl ========================================================
3602 MOZ_ARG_WITH_BOOL(pthreads,
3603 [  --with-pthreads         Force use of system pthread library with NSPR ],
3604 [ if test "$USE_PTHREADS"x = x; then
3605     AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3606 fi],
3607     USE_PTHREADS=
3608     _PTHREAD_LDFLAGS=
3611 dnl ========================================================
3612 dnl Do the platform specific pthread hackery
3613 dnl ========================================================
3614 if test "$USE_PTHREADS"x != x
3615 then
3616         dnl
3617         dnl See if -pthread is supported.
3618         dnl
3619         rm -f conftest*
3620         ac_cv_have_dash_pthread=no
3621         AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3622         echo 'int main() { return 0; }' | cat > conftest.c
3623         ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3624         if test $? -eq 0; then
3625                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3626                         ac_cv_have_dash_pthread=yes
3627                 case "$target_os" in
3628                 freebsd*)
3629 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3630                 ;;
3631                 *)
3632                             CFLAGS="$CFLAGS -pthread"
3633                             CXXFLAGS="$CXXFLAGS -pthread"
3634                 ;;
3635                 esac
3636                 fi
3637         fi
3638         rm -f conftest*
3639     AC_MSG_RESULT($ac_cv_have_dash_pthread)
3641         dnl
3642         dnl See if -pthreads is supported.
3643         dnl
3644     ac_cv_have_dash_pthreads=no
3645     if test "$ac_cv_have_dash_pthread" = "no"; then
3646             AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3647         echo 'int main() { return 0; }' | cat > conftest.c
3648             ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3649         if test $? -eq 0; then
3650                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3651                             ac_cv_have_dash_pthreads=yes
3652                             CFLAGS="$CFLAGS -pthreads"
3653                             CXXFLAGS="$CXXFLAGS -pthreads"
3654                     fi
3655             fi
3656             rm -f conftest*
3657         AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3658     fi
3660         case "$target" in
3661             *-*-freebsd*)
3662                         AC_DEFINE(_REENTRANT)
3663                         AC_DEFINE(_THREAD_SAFE)
3664                         dnl -pthread links in -lc_r, so don't specify it explicitly.
3665                         if test "$ac_cv_have_dash_pthread" = "yes"; then
3666                                 _PTHREAD_LDFLAGS="-pthread"
3667                         else
3668                                 _PTHREAD_LDFLAGS="-lc_r"
3669                         fi
3670                         ;;
3672             *-*-openbsd*|*-*-bsdi*)
3673                         AC_DEFINE(_REENTRANT)
3674                         AC_DEFINE(_THREAD_SAFE)
3675                         dnl -pthread links in -lc_r, so don't specify it explicitly.
3676                         if test "$ac_cv_have_dash_pthread" = "yes"; then
3677                 _PTHREAD_LDFLAGS="-pthread"
3678                         fi
3679                         ;;
3681             *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
3682                         AC_DEFINE(_REENTRANT) 
3683                         ;;
3685             *-*-nto*) 
3686                         AC_DEFINE(_REENTRANT) 
3687                         ;;
3689             *-aix4.3*|*-aix5*)
3690                         AC_DEFINE(_REENTRANT) 
3691                         ;;
3693             *-hpux11.*)
3694                         AC_DEFINE(_REENTRANT) 
3695                         ;;
3697             alpha*-*-osf*)
3698                         AC_DEFINE(_REENTRANT)
3699                         ;;
3701             *-*-solaris*) 
3702                         AC_DEFINE(_REENTRANT)
3703                         if test "$SOLARIS_SUNPRO_CC"; then
3704                                 CFLAGS="$CFLAGS -mt" 
3705                                 CXXFLAGS="$CXXFLAGS -mt" 
3706                         fi
3707                         ;;
3708         esac
3709     LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3712 dnl ========================================================
3713 dnl See if mmap sees writes
3714 dnl For cross compiling, just define it as no, which is a safe default
3715 dnl ========================================================
3716 AC_MSG_CHECKING(whether mmap() sees write()s)
3718 changequote(,)
3719 mmap_test_prog='
3720     #include <stdlib.h>
3721     #include <unistd.h>
3722     #include <sys/mman.h>
3723     #include <sys/types.h>
3724     #include <sys/stat.h>
3725     #include <fcntl.h>
3727     char fname[] = "conftest.file";
3728     char zbuff[1024]; /* Fractional page is probably worst case */
3730     int main() {
3731         char *map;
3732         int fd;
3733         int i;
3734         unlink(fname);
3735         fd = open(fname, O_RDWR | O_CREAT, 0660);
3736         if(fd<0) return 1;
3737         unlink(fname);
3738         write(fd, zbuff, sizeof(zbuff));
3739         lseek(fd, 0, SEEK_SET);
3740         map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
3741         if(map==(char*)-1) return 2;
3742         for(i=0; fname[i]; i++) {
3743             int rc = write(fd, &fname[i], 1);
3744             if(map[i]!=fname[i]) return 4;
3745         }
3746         return 0;
3747     }
3749 changequote([,])
3751 AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
3753 AC_MSG_RESULT("$result")
3755 if test "$result" = "no"; then
3756     AC_DEFINE(MMAP_MISSES_WRITES)
3760 dnl Checks for library functions.
3761 dnl ========================================================
3762 AC_PROG_GCC_TRADITIONAL
3763 AC_FUNC_MEMCMP
3764 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 truncate64 statvfs64 setbuf isatty)
3765 AC_CHECK_FUNCS(flockfile getpagesize)
3766 AC_CHECK_FUNCS(localtime_r strtok_r)
3768 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock, and -lrt
3769 _SAVE_LDFLAGS=$LDFLAGS
3770 LDFLAGS="$LDFLAGS -lrt"
3771 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC) and -lrt,
3772                ac_cv_have_clock_monotonic,
3773                [AC_TRY_LINK([#include <time.h>],
3774                             [ struct timespec ts;
3775                               clock_gettime(CLOCK_MONOTONIC, &ts); ],
3776                             ac_cv_have_clock_monotonic=yes,
3777                             ac_cv_have_clock_monotonic=no)])
3778 LDFLAGS=$_SAVE_LDFLAGS
3779 if test "$ac_cv_have_clock_monotonic" = "yes"; then
3780     HAVE_CLOCK_MONOTONIC=1
3781     REALTIME_LIBS=-lrt
3782     AC_DEFINE(HAVE_CLOCK_MONOTONIC)
3783     AC_SUBST(HAVE_CLOCK_MONOTONIC)
3784     AC_SUBST(REALTIME_LIBS)
3787 dnl check for wcrtomb/mbrtowc
3788 dnl =======================================================================
3789 if test -z "$MACOS_DEPLOYMENT_TARGET" -o "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3790 AC_LANG_SAVE
3791 AC_LANG_CPLUSPLUS
3792 AC_CACHE_CHECK(for wcrtomb,
3793     ac_cv_have_wcrtomb,
3794     [AC_TRY_LINK([#include <wchar.h>],
3795                  [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3796                  ac_cv_have_wcrtomb="yes",
3797                  ac_cv_have_wcrtomb="no")])
3798 if test "$ac_cv_have_wcrtomb" = "yes"; then
3799     AC_DEFINE(HAVE_WCRTOMB)
3801 AC_CACHE_CHECK(for mbrtowc,
3802     ac_cv_have_mbrtowc,
3803     [AC_TRY_LINK([#include <wchar.h>],
3804                  [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3805                  ac_cv_have_mbrtowc="yes",
3806                  ac_cv_have_mbrtowc="no")])
3807 if test "$ac_cv_have_mbrtowc" = "yes"; then
3808     AC_DEFINE(HAVE_MBRTOWC)
3810 AC_LANG_RESTORE
3813 AC_CACHE_CHECK(
3814     [for res_ninit()],
3815     ac_cv_func_res_ninit,
3816     [AC_TRY_LINK([
3817         #ifdef linux
3818         #define _BSD_SOURCE 1
3819         #endif
3820         #include <resolv.h>
3821         ],
3822         [int foo = res_ninit(&_res);],
3823         [ac_cv_func_res_ninit=yes],
3824         [ac_cv_func_res_ninit=no])
3825     ])
3827 if test "$ac_cv_func_res_ninit" = "yes"; then
3828     AC_DEFINE(HAVE_RES_NINIT)
3829 dnl must add the link line we do something as foolish as this... dougt
3830 dnl else
3831 dnl    AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3832 dnl        AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3835 AC_LANG_CPLUSPLUS
3836 AC_CACHE_CHECK(
3837     [for gnu_get_libc_version()],
3838     ac_cv_func_gnu_get_libc_version,
3839     [AC_TRY_LINK([
3840         #ifdef HAVE_GNU_LIBC_VERSION_H
3841         #include <gnu/libc-version.h>
3842         #endif
3843         ],
3844         [const char *glibc_version = gnu_get_libc_version();],
3845         [ac_cv_func_gnu_get_libc_version=yes],
3846         [ac_cv_func_gnu_get_libc_version=no] 
3847         )]
3848     )
3850 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3851     AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3854 case $target_os in
3855     os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|winmo*|beos*)
3856         ;;
3857     *)
3858     
3859 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3860     AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3861         AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3862 _SAVE_LIBS=$LIBS
3863 LIBS="$LIBS $_ICONV_LIBS"
3864 AC_CACHE_CHECK(
3865     [for iconv()],
3866     ac_cv_func_iconv,
3867     [AC_TRY_LINK([
3868         #include <stdlib.h>
3869         #include <iconv.h>
3870         ],
3871         [
3872             iconv_t h = iconv_open("", "");
3873             iconv(h, NULL, NULL, NULL, NULL);
3874             iconv_close(h);
3875         ],
3876         [ac_cv_func_iconv=yes],
3877         [ac_cv_func_iconv=no] 
3878         )]
3879     )
3880 if test "$ac_cv_func_iconv" = "yes"; then
3881     AC_DEFINE(HAVE_ICONV)
3882     DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3883     LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3884     LIBICONV="$_ICONV_LIBS"
3885     AC_CACHE_CHECK(
3886         [for iconv() with const input],
3887         ac_cv_func_const_iconv,
3888         [AC_TRY_COMPILE([
3889             #include <stdlib.h>
3890             #include <iconv.h>
3891             ],
3892             [
3893                 const char *input = "testing";
3894                 iconv_t h = iconv_open("", "");
3895                 iconv(h, &input, NULL, NULL, NULL);
3896                 iconv_close(h);
3897             ],
3898             [ac_cv_func_const_iconv=yes],
3899             [ac_cv_func_const_iconv=no] 
3900             )]
3901         )
3902     if test "$ac_cv_func_const_iconv" = "yes"; then
3903         AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3904     fi
3906 LIBS=$_SAVE_LIBS
3908     ;;
3909 esac
3911 AM_LANGINFO_CODESET
3913 AC_LANG_C
3915 dnl **********************
3916 dnl *** va_copy checks ***
3917 dnl **********************
3918 dnl we currently check for all three va_copy possibilities, so we get
3919 dnl all results in config.log for bug reports.
3920 AC_MSG_CHECKING(for an implementation of va_copy())
3921 AC_CACHE_VAL(ac_cv_va_copy,[
3922     AC_TRY_RUN([
3923         #include <stdarg.h>
3924         void f (int i, ...) {
3925             va_list args1, args2;
3926             va_start (args1, i);
3927             va_copy (args2, args1);
3928             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3929                 exit (1);
3930             va_end (args1); va_end (args2);
3931         }
3932         int main() { f (0, 42); return 0; }],
3933         ac_cv_va_copy=yes,
3934         ac_cv_va_copy=no,
3935         ac_cv_va_copy=no
3936     )
3938 AC_MSG_RESULT($ac_cv_va_copy)
3939 AC_MSG_CHECKING(for an implementation of __va_copy())
3940 AC_CACHE_VAL(ac_cv___va_copy,[
3941     AC_TRY_RUN([
3942         #include <stdarg.h>
3943         void f (int i, ...) {
3944             va_list args1, args2;
3945             va_start (args1, i);
3946             __va_copy (args2, args1);
3947             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3948                 exit (1);
3949             va_end (args1); va_end (args2);
3950         }
3951         int main() { f (0, 42); return 0; }],
3952         ac_cv___va_copy=yes,
3953         ac_cv___va_copy=no,
3954         ac_cv___va_copy=no
3955     )
3957 AC_MSG_RESULT($ac_cv___va_copy)
3958 AC_MSG_CHECKING(whether va_lists can be copied by value)
3959 AC_CACHE_VAL(ac_cv_va_val_copy,[
3960     AC_TRY_RUN([
3961         #include <stdarg.h>
3962         void f (int i, ...) {
3963             va_list args1, args2;
3964             va_start (args1, i);
3965             args2 = args1;
3966             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3967                 exit (1);
3968             va_end (args1); va_end (args2);
3969         }
3970         int main() { f (0, 42); return 0; }],
3971         ac_cv_va_val_copy=yes,
3972         ac_cv_va_val_copy=no,
3973         ac_cv_va_val_copy=yes
3974     )
3976 if test "x$ac_cv_va_copy" = "xyes"; then
3977     AC_DEFINE(VA_COPY, va_copy)
3978     AC_DEFINE(HAVE_VA_COPY)
3979 elif test "x$ac_cv___va_copy" = "xyes"; then
3980     AC_DEFINE(VA_COPY, __va_copy)
3981     AC_DEFINE(HAVE_VA_COPY)
3984 if test "x$ac_cv_va_val_copy" = "xno"; then
3985    AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3987 AC_MSG_RESULT($ac_cv_va_val_copy)
3989 dnl Check for dll-challenged libc's.
3990 dnl This check is apparently only needed for Linux.
3991 case "$target" in
3992         *-linux*)
3993             dnl ===================================================================
3994             _curdir=`pwd`
3995             export _curdir
3996             rm -rf conftest* _conftest
3997             mkdir _conftest
3998             cat >> conftest.C <<\EOF
3999 #include <stdio.h>
4000 #include <link.h>
4001 #include <dlfcn.h>
4002 #ifdef _dl_loaded
4003 void __dump_link_map(void) {
4004   struct link_map *map = _dl_loaded;
4005   while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
4007 int main() {
4008   dlopen("./conftest1.so",RTLD_LAZY);
4009   dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
4010   dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
4011   dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
4012   __dump_link_map();
4014 #else
4015 /* _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).*/
4016 int main() { printf("./conftest1.so\n"); }
4017 #endif
4020             $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
4022             cat >> conftest1.C <<\EOF
4023 #include <stdio.h>
4024 void foo(void) {printf("foo in dll called\n");}
4026             ${CXX-g++} -fPIC -c -g conftest1.C
4027             ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
4028             ${CXX-g++} -g conftest.C -o conftest -ldl
4029             cp -f conftest1.so conftest _conftest
4030             cd _conftest
4031             if test `./conftest | grep conftest1.so | wc -l` -gt 1
4032             then
4033                 echo
4034                 echo "*** Your libc has a bug that can result in loading the same dynamic"
4035                 echo "*** library multiple times.  This bug is known to be fixed in glibc-2.0.7-32"
4036                 echo "*** or later.  However, if you choose not to upgrade, the only effect"
4037                 echo "*** will be excessive memory usage at runtime."
4038                 echo
4039             fi
4040             cd ${_curdir}
4041             rm -rf conftest* _conftest
4042             dnl ===================================================================
4043             ;;
4044 esac
4046 dnl ===================================================================
4047 dnl ========================================================
4048 dnl Put your C++ language/feature checks below
4049 dnl ========================================================
4050 AC_LANG_CPLUSPLUS
4052 ARM_ABI_PREFIX=
4053 HAVE_GCC3_ABI=
4054 if test "$GNU_CC"; then
4055   if test "$CPU_ARCH" = "arm" ; then
4056     AC_CACHE_CHECK(for ARM EABI,
4057         ac_cv_gcc_arm_eabi,
4058         [AC_TRY_COMPILE([],
4059                         [
4060 #if defined(__ARM_EABI__)
4061   return 0;
4062 #else
4063 #error Not ARM EABI.
4064 #endif
4065                         ],
4066                         ac_cv_gcc_arm_eabi="yes",
4067                         ac_cv_gcc_arm_eabi="no")])
4068     if test "$ac_cv_gcc_arm_eabi" = "yes"; then
4069         HAVE_ARM_EABI=1
4070         ARM_ABI_PREFIX=eabi-
4071     else
4072         ARM_ABI_PREFIX=oabi-
4073     fi
4074   fi
4076   AC_CACHE_CHECK(for gcc 3.0 ABI,
4077       ac_cv_gcc_three_abi,
4078       [AC_TRY_COMPILE([],
4079                       [
4080 #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
4081   return 0;
4082 #else
4083 #error Not gcc3.
4084 #endif
4085                       ],
4086                       ac_cv_gcc_three_abi="yes",
4087                       ac_cv_gcc_three_abi="no")])
4088   if test "$ac_cv_gcc_three_abi" = "yes"; then
4089       TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
4090       HAVE_GCC3_ABI=1
4091   else
4092       TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc2}"
4093   fi
4095 AC_SUBST(HAVE_GCC3_ABI)
4098 AC_CACHE_CHECK(for C++ \"explicit\" keyword,
4099                ac_cv_cpp_explicit,
4100                [AC_TRY_COMPILE(class X {
4101                                public: explicit X(int i) : i_(i) {}
4102                                private: int i_;
4103                                };,
4104                                X x(3);,
4105                                ac_cv_cpp_explicit=yes,
4106                                ac_cv_cpp_explicit=no)])
4107 if test "$ac_cv_cpp_explicit" = yes ; then
4108    AC_DEFINE(HAVE_CPP_EXPLICIT)
4111 AC_CACHE_CHECK(for C++ \"typename\" keyword,
4112                ac_cv_cpp_typename,
4113                [AC_TRY_COMPILE(class param {
4114                                public:
4115                                    typedef unsigned long num_type;
4116                                };
4118                                template <class T> class tplt {
4119                                public:
4120                                    typedef typename T::num_type t_num_type;
4121                                    t_num_type foo(typename T::num_type num) {
4122                                        return num;
4123                                    }
4124                                };,
4125                                tplt<param> A;
4126                                A.foo(0);,
4127                                ac_cv_cpp_typename=yes,
4128                                ac_cv_cpp_typename=no)])
4129 if test "$ac_cv_cpp_typename" = yes ; then
4130    AC_DEFINE(HAVE_CPP_TYPENAME)
4133 dnl Check for support of modern template specialization syntax
4134 dnl Test code and requirement from scc@netscape.com.
4135 dnl Autoconf cut-and-paste job by waterson@netscape.com
4136 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
4137                ac_cv_cpp_modern_specialize_template_syntax,
4138                [AC_TRY_COMPILE(template <class T> struct X { int a; };
4139                                class Y {};
4140                                template <> struct X<Y> { double a; };,
4141                                X<int> int_x;
4142                                X<Y> y_x;,
4143                                ac_cv_cpp_modern_specialize_template_syntax=yes,
4144                                ac_cv_cpp_modern_specialize_template_syntax=no)])
4145 if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
4146   AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
4150 dnl Some compilers support only full specialization, and some don't.
4151 AC_CACHE_CHECK(whether partial template specialization works,
4152                ac_cv_cpp_partial_specialization,
4153                [AC_TRY_COMPILE(template <class T> class Foo {};
4154                                template <class T> class Foo<T*> {};,
4155                                return 0;,
4156                                ac_cv_cpp_partial_specialization=yes,
4157                                ac_cv_cpp_partial_specialization=no)])
4158 if test "$ac_cv_cpp_partial_specialization" = yes ; then
4159   AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
4162 dnl Some compilers have limited support for operators with templates;
4163 dnl specifically, it is necessary to define derived operators when a base
4164 dnl class's operator declaration should suffice.
4165 AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
4166                ac_cv_need_derived_template_operators,
4167                [AC_TRY_COMPILE([template <class T> class Base { };
4168                                 template <class T>
4169                                 Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
4170                                 template <class T> class Derived : public Base<T> { };],
4171                                [Derived<char> a, b;
4172                                 Base<char> c = a + b;
4173                                 return 0;],
4174                                ac_cv_need_derived_template_operators=no,
4175                                ac_cv_need_derived_template_operators=yes)])
4176 if test "$ac_cv_need_derived_template_operators" = yes ; then
4177   AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
4181 dnl Some compilers have trouble detecting that a template class
4182 dnl that derives from another template is actually an instance
4183 dnl of the base class. This test checks for that.
4184 AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
4185                ac_cv_need_cpp_template_cast_to_base,
4186                [AC_TRY_COMPILE([template <class T> class Base { };
4187                                 template <class T> class Derived : public Base<T> { };
4188                                 template <class T> int foo(const Base<T>&) { return 0; }],
4189                                [Derived<char> bar; return foo(bar);],
4190                                ac_cv_need_cpp_template_cast_to_base=no,
4191                                ac_cv_need_cpp_template_cast_to_base=yes)])
4192 if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
4193   AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
4196 dnl Some compilers have trouble resolving the ambiguity between two
4197 dnl functions whose arguments differ only by cv-qualifications.
4198 AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
4199                ac_cv_can_resolve_const_ambiguity,
4200                [AC_TRY_COMPILE([
4201                                 template <class T> class ptrClass {
4202                                   public: T* ptr;
4203                                 };
4205                                 template <class T> T* a(ptrClass<T> *arg) {
4206                                   return arg->ptr;
4207                                 }
4209                                 template <class T>
4210                                 const T* a(const ptrClass<T> *arg) {
4211                                   return arg->ptr;
4212                                 }
4213                                ],
4214                                [ ptrClass<int> i;
4215                                  a(&i); ],
4216                                ac_cv_can_resolve_const_ambiguity=yes,
4217                                ac_cv_can_resolve_const_ambiguity=no)])
4218 if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
4219   AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
4223 dnl We don't do exceptions on unix.  The only reason this used to be here
4224 dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses 
4225 dnl exceptions.  But, we turn exceptions off by default and this test breaks.
4226 dnl So im commenting this out until someone writes some artificial 
4227 dnl intelligence to detect not only if the compiler has exceptions, but if 
4228 dnl they are enabled as well.
4229 dnl 
4230 dnl AC_CACHE_CHECK(for C++ \"exceptions\",
4231 dnl                ac_cv_cpp_exceptions,
4232 dnl                [AC_TRY_COMPILE(class X { public: X() {} };
4233 dnl                                static void F() { throw X(); },
4234 dnl                                try { F(); } catch(X & e) { },
4235 dnl                                ac_cv_cpp_exceptions=yes,
4236 dnl                                ac_cv_cpp_exceptions=no)])
4237 dnl if test $ac_cv_cpp_exceptions = yes ; then
4238 dnl    AC_DEFINE(HAVE_CPP_EXCEPTIONS)
4239 dnl fi
4241 dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
4242 dnl supports it well enough to allow us to use it to change access, but not
4243 dnl to resolve ambiguity. The next two tests determine how well the |using|
4244 dnl keyword is supported.
4246 dnl Check to see if we can change access with |using|.  Test both a
4247 dnl legal and an illegal example.
4248 AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
4249                ac_cv_cpp_access_changing_using2,
4250                [AC_TRY_COMPILE(
4251                    class A { protected: int foo() { return 0; } };
4252                    class B : public A { public: using A::foo; };,
4253                    B b; return b.foo();,
4254                    [AC_TRY_COMPILE(
4255                        class A { public: int foo() { return 1; } };
4256                        class B : public A { private: using A::foo; };,
4257                        B b; return b.foo();,
4258                        ac_cv_cpp_access_changing_using2=no,
4259                        ac_cv_cpp_access_changing_using2=yes)],
4260                    ac_cv_cpp_access_changing_using2=no)])
4261 if test "$ac_cv_cpp_access_changing_using2" = yes ; then
4262    AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
4265 dnl Check to see if we can resolve ambiguity with |using|.
4266 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
4267                ac_cv_cpp_ambiguity_resolving_using,
4268                [AC_TRY_COMPILE(class X { 
4269                                  public: int go(const X&) {return 3;}
4270                                          int jo(const X&) {return 3;}
4271                                };
4272                                class Y : public X {
4273                                  public:  int go(int) {return 2;}
4274                                           int jo(int) {return 2;}
4275                                           using X::jo;
4276                                  private: using X::go;
4277                                };,
4278                                X x; Y y; y.jo(x);,
4279                                ac_cv_cpp_ambiguity_resolving_using=yes,
4280                                ac_cv_cpp_ambiguity_resolving_using=no)])
4281 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
4282    AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
4285 dnl Check to see if the |std| namespace is supported. If so, we'll want
4286 dnl to qualify any standard library calls with "std::" to ensure that
4287 dnl those functions can be resolved.
4288 AC_CACHE_CHECK(for \"std::\" namespace,
4289                ac_cv_cpp_namespace_std,
4290                [AC_TRY_COMPILE([#include <algorithm>],
4291                                [return std::min(0, 1);],
4292                                ac_cv_cpp_namespace_std=yes,
4293                                ac_cv_cpp_namespace_std=no)])
4294 if test "$ac_cv_cpp_namespace_std" = yes ; then
4295    AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
4298 dnl Older compilers are overly ambitious with respect to using the standard
4299 dnl template library's |operator!=()| when |operator==()| is defined. In
4300 dnl which case, defining |operator!=()| in addition to |operator==()| causes
4301 dnl ambiguity at compile-time. This test checks for that case.
4302 AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
4303                ac_cv_cpp_unambiguous_std_notequal,
4304                [AC_TRY_COMPILE([#include <algorithm>
4305                                 struct T1 {};
4306                                 int operator==(const T1&, const T1&) { return 0; }
4307                                 int operator!=(const T1&, const T1&) { return 0; }],
4308                                [T1 a,b; return a != b;],
4309                                ac_cv_cpp_unambiguous_std_notequal=unambiguous,
4310                                ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
4311 if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
4312   AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
4316 AC_CACHE_CHECK(for C++ reinterpret_cast,
4317                ac_cv_cpp_reinterpret_cast,
4318                [AC_TRY_COMPILE(struct X { int i; };
4319                                struct Y { int i; };,
4320                                X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
4321                                ac_cv_cpp_reinterpret_cast=yes,
4322                                ac_cv_cpp_reinterpret_cast=no)])
4323 if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
4324    AC_DEFINE(HAVE_CPP_NEW_CASTS)
4327 dnl See if a dynamic_cast to void* gives the most derived object.
4328 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
4329                ac_cv_cpp_dynamic_cast_void_ptr,
4330                [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
4331                             class Y { int j; public: virtual ~Y() { } };
4332                             class Z : public X, public Y { int k; };
4334                             int main() {
4335                                  Z mdo;
4336                                  X *subx = (X*)&mdo;
4337                                  Y *suby = (Y*)&mdo;
4338                                  return !((((void*)&mdo != (void*)subx) &&
4339                                            ((void*)&mdo == dynamic_cast<void*>(subx))) ||
4340                                           (((void*)&mdo != (void*)suby) &&
4341                                            ((void*)&mdo == dynamic_cast<void*>(suby))));
4342                             }],
4343                            ac_cv_cpp_dynamic_cast_void_ptr=yes,
4344                            ac_cv_cpp_dynamic_cast_void_ptr=no,
4345                            ac_cv_cpp_dynamic_cast_void_ptr=no)])
4346 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
4347    AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
4351 dnl note that this one is reversed - if the test fails, then
4352 dnl we require implementations of unused virtual methods. Which
4353 dnl really blows because it means we'll have useless vtable
4354 dnl bloat.
4355 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
4356                ac_cv_cpp_unused_required,
4357                [AC_TRY_LINK(class X {private: virtual void never_called();};,
4358                                X x;,
4359                                ac_cv_cpp_unused_required=no,
4360                                ac_cv_cpp_unused_required=yes)])
4361 if test "$ac_cv_cpp_unused_required" = yes ; then
4362    AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
4366 dnl Some compilers have trouble comparing a constant reference to a templatized
4367 dnl class to zero, and require an explicit operator==() to be defined that takes
4368 dnl an int. This test separates the strong from the weak.
4370 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
4371                ac_cv_trouble_comparing_to_zero,
4372                [AC_TRY_COMPILE([#include <algorithm>
4373                                 template <class T> class Foo {};
4374                                 class T2;
4375                                 template <class T> int operator==(const T2*, const T&) { return 0; }
4376                                 template <class T> int operator!=(const T2*, const T&) { return 0; }],
4377                                [Foo<int> f; return (0 != f);],
4378                                ac_cv_trouble_comparing_to_zero=no,
4379                                ac_cv_trouble_comparing_to_zero=yes)])
4380 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
4381   AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
4384 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
4385 _SAVE_LDFLAGS=$LDFLAGS
4386 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS"
4387 AC_CACHE_CHECK(for __thread keyword for TLS variables,
4388                ac_cv_thread_keyword,
4389                [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
4390                             [return tlsIsMainThread;],
4391                             ac_cv_thread_keyword=yes,
4392                             ac_cv_thread_keyword=no)])
4393 LDFLAGS=$_SAVE_LDFLAGS
4394 if test "$ac_cv_thread_keyword" = yes; then
4395   # mips builds fail with TLS variables because of a binutils bug.
4396   # See bug 528687
4397   case "${target}" in
4398     mips*-*)
4399       :
4400       ;;
4401     *-android*)
4402       :
4403       ;;
4404     *)
4405       AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
4406       ;;
4407   esac
4410 dnl Check for the existence of various allocation headers/functions
4412 MALLOC_H=
4413 AC_CHECK_HEADER(malloc.h,        [MALLOC_H=malloc.h])
4414 if test "$MALLOC_H" = ""; then
4415   AC_CHECK_HEADER(malloc/malloc.h, [MALLOC_H=malloc/malloc.h])
4416   if test "$MALLOC_H" = ""; then
4417     AC_CHECK_HEADER(sys/malloc.h,    [MALLOC_H=sys/malloc.h])
4418   fi
4420 if test "$MALLOC_H" != ""; then
4421    AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
4424 MOZ_ALLOCATING_FUNCS="strndup posix_memalign memalign valloc"
4425 AC_CHECK_FUNCS(strndup posix_memalign memalign valloc)
4427 dnl See if compiler supports some gcc-style attributes
4429 AC_CACHE_CHECK(for __attribute__((always_inline)),
4430                ac_cv_attribute_always_inline,
4431                [AC_TRY_COMPILE([],
4432                                [inline void f(void) __attribute__((always_inline));],
4433                                ac_cv_attribute_always_inline=yes,
4434                                ac_cv_attribute_always_inline=no)])
4436 AC_CACHE_CHECK(for __attribute__((malloc)),
4437                ac_cv_attribute_malloc,
4438                [AC_TRY_COMPILE([],
4439                                [void* f(int) __attribute__((malloc));],
4440                                ac_cv_attribute_malloc=yes,
4441                                ac_cv_attribute_malloc=no)])
4443 AC_CACHE_CHECK(for __attribute__((warn_unused_result)),
4444                ac_cv_attribute_warn_unused,
4445                [AC_TRY_COMPILE([],
4446                                [int f(void) __attribute__((warn_unused_result));],
4447                                ac_cv_attribute_warn_unused=yes,
4448                                ac_cv_attribute_warn_unused=no)])
4450 AC_CACHE_CHECK(for __attribute__((noreturn)),
4451                ac_cv_attribute_noreturn,
4452                [AC_TRY_COMPILE([],
4453                                [void f(void) __attribute__((noreturn));],
4454                                ac_cv_attribute_noreturn=yes,
4455                                ac_cv_attribute_noreturn=no)])
4457 dnl End of C++ language/feature checks
4458 AC_LANG_C
4460 dnl ========================================================
4461 dnl =  Internationalization checks
4462 dnl ========================================================
4464 dnl Internationalization and Locale support is different
4465 dnl on various UNIX platforms.  Checks for specific i18n
4466 dnl features go here.
4468 dnl check for LC_MESSAGES
4469 AC_CACHE_CHECK(for LC_MESSAGES,
4470                 ac_cv_i18n_lc_messages,
4471                 [AC_TRY_COMPILE([#include <locale.h>],
4472                                 [int category = LC_MESSAGES;],
4473                                 ac_cv_i18n_lc_messages=yes,
4474                                 ac_cv_i18n_lc_messages=no)])
4475 if test "$ac_cv_i18n_lc_messages" = yes; then
4476    AC_DEFINE(HAVE_I18N_LC_MESSAGES)
4479 AC_HAVE_FUNCS(localeconv)
4481 fi # SKIP_COMPILER_CHECKS
4483 TARGET_XPCOM_ABI=
4484 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
4485     TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
4488 dnl Mozilla specific options
4489 dnl ========================================================
4490 dnl The macros used for command line options
4491 dnl are defined in build/autoconf/altoptions.m4.
4493 dnl If the compiler supports these attributes, define them as
4494 dnl convenience macros.
4495 if test "$ac_cv_attribute_always_inline" = yes ; then
4496   AC_DEFINE(NS_ALWAYS_INLINE, [__attribute__((always_inline))])
4497 else
4498   AC_DEFINE(NS_ALWAYS_INLINE,)
4501 if test "$ac_cv_attribute_malloc" = yes ; then
4502   AC_DEFINE(NS_ATTR_MALLOC, [__attribute__((malloc))])
4503 else
4504   AC_DEFINE(NS_ATTR_MALLOC,)
4507 if test "$ac_cv_attribute_warn_unused" = yes ; then
4508   AC_DEFINE(NS_WARN_UNUSED_RESULT, [__attribute__((warn_unused_result))])
4509 else
4510   AC_DEFINE(NS_WARN_UNUSED_RESULT,)
4513 if test "$ac_cv_attribute_noreturn" = yes ; then
4514   AC_DEFINE(NS_NORETURN, [__attribute__((noreturn))])
4515 else
4516   AC_DEFINE(NS_NORETURN,)
4519 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
4520 dnl features that Windows actually does support.
4522 if test -n "$SKIP_COMPILER_CHECKS"; then
4523    dnl Windows has malloc.h
4524    AC_DEFINE(MALLOC_H, [<malloc.h>])
4525    AC_DEFINE(HAVE_FORCEINLINE)
4526    AC_DEFINE(HAVE_LOCALECONV)
4527 fi # SKIP_COMPILER_CHECKS
4529 dnl ========================================================
4530 dnl =
4531 dnl = Check for external package dependencies
4532 dnl =
4533 dnl ========================================================
4534 MOZ_ARG_HEADER(External Packages)
4536 MOZ_ENABLE_LIBXUL=1
4538 MOZ_ARG_WITH_STRING(libxul-sdk,
4539 [  --with-libxul-sdk=PFX   Use the libXUL SDK at <PFX>],
4540   LIBXUL_SDK_DIR=$withval)
4542 if test "$LIBXUL_SDK_DIR" = "yes"; then
4543     AC_MSG_ERROR([--with-libxul-sdk must specify a path])
4544 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
4545     LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
4547     if test ! -f "$LIBXUL_SDK/include/xpcom-config.h"; then
4548         AC_MSG_ERROR([$LIBXUL_SDK/include/xpcom-config.h doesn't exist])
4549     fi
4551     MOZ_ENABLE_LIBXUL=1
4553 AC_SUBST(LIBXUL_SDK)
4555 if test -n "$LIBXUL_SDK"; then
4556     LIBXUL_DIST="$LIBXUL_SDK"
4557 else
4558     LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
4560 AC_SUBST(LIBXUL_DIST)
4562 SYSTEM_LIBXUL=
4564 MOZ_ARG_WITH_BOOL(system-libxul,
4565 [  --with-system-libxul    Use system installed libxul SDK],
4566     SYSTEM_LIBXUL=1)
4568 if test -n "$SYSTEM_LIBXUL" -a -z "$MOZ_ENABLE_LIBXUL"; then
4569     AC_MSG_ERROR([--with-system-libxul needs --with-libxul-sdk])
4572 dnl ========================================================
4573 dnl = If NSPR was not detected in the system, 
4574 dnl = use the one in the source tree (mozilla/nsprpub)
4575 dnl ========================================================
4576 MOZ_ARG_WITH_BOOL(system-nspr,
4577 [  --with-system-nspr      Use system installed NSPR],
4578     _USE_SYSTEM_NSPR=1 )
4580 if test -n "$_USE_SYSTEM_NSPR"; then
4581     AM_PATH_NSPR(4.8.6, [MOZ_NATIVE_NSPR=1], [MOZ_NATIVE_NSPR=])
4584 if test -n "$MOZ_NATIVE_NSPR"; then
4585     _SAVE_CFLAGS=$CFLAGS
4586     CFLAGS="$CFLAGS $NSPR_CFLAGS"
4587     AC_TRY_COMPILE([#include "prtypes.h"],
4588                 [#ifndef PR_STATIC_ASSERT
4589                  #error PR_STATIC_ASSERT not defined or requires including prlog.h
4590                  #endif],
4591                 [MOZ_NATIVE_NSPR=1],
4592                 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT or including prtypes.h does not provide it]))
4593     CFLAGS=$_SAVE_CFLAGS
4594 else
4595     if test "$OS_ARCH" = "WINCE"; then
4596         NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4597         NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4598     elif test "$OS_ARCH" = "WINNT"; then
4599         NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4600         if test -n "$GNU_CC"; then
4601             NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
4602         else
4603             NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4604         fi
4605     else
4606         NSPR_CFLAGS='`$(LIBXUL_DIST)/bin/nspr-config --prefix='${LIBXUL_DIST}' --includedir='${LIBXUL_DIST}'/include/nspr --cflags`'
4607         NSPR_LIBS='`$(LIBXUL_DIST)/bin/nspr-config --prefix='${LIBXUL_DIST}' --libdir='${LIBXUL_DIST}'/lib --libs`'
4608     fi
4611 dnl system libevent Support
4612 dnl ========================================================
4613 MOZ_ARG_WITH_STRING(system-libevent,
4614 [  --with-system-libevent=[PFX]
4615                           Use system libevent [installed at prefix PFX]],
4616     LIBEVENT_DIR=$withval)
4618 _SAVE_CFLAGS=$CFLAGS
4619 _SAVE_LDFLAGS=$LDFLAGS
4620 _SAVE_LIBS=$LIBS
4621 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
4622     MOZ_NATIVE_LIBEVENT=
4623 else
4624     if test "${LIBEVENT_DIR}" = "yes"; then
4625         LIBEVENT_DIR=/usr
4626     fi
4627     CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
4628     LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
4629     AC_CHECK_HEADER(event.h,
4630                     [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
4631                          AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
4632                      fi],
4633                     AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
4634     AC_CHECK_LIB(event, event_init,
4635                  [MOZ_NATIVE_LIBEVENT=1
4636                   MOZ_LIBEVENT_INCLUDES="${LIBEVENT_DIR}/include"
4637                   MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
4638                  [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_INCLUDES= MOZ_LIBEVENT_LIBS=])
4640 CFLAGS=$_SAVE_CFLAGS
4641 LDFLAGS=$_SAVE_LDFLAGS
4642 LIBS=$_SAVE_LIBS
4644 AC_SUBST(MOZ_NATIVE_LIBEVENT)
4645 AC_SUBST(MOZ_LIBEVENT_INCLUDES)
4646 AC_SUBST(MOZ_LIBEVENT_LIBS)
4648 dnl ========================================================
4649 dnl = If NSS was not detected in the system, 
4650 dnl = use the one in the source tree (mozilla/security/nss)
4651 dnl ========================================================
4653 MOZ_ARG_WITH_BOOL(system-nss,
4654 [  --with-system-nss       Use system installed NSS],
4655     _USE_SYSTEM_NSS=1 )
4657 if test -n "$_USE_SYSTEM_NSS"; then
4658     AM_PATH_NSS(3.12.6, [MOZ_NATIVE_NSS=1], [MOZ_NATIVE_NSS=])
4661 if test -n "$MOZ_NATIVE_NSS"; then
4662    NSS_LIBS="$NSS_LIBS -lcrmf"
4663 else
4664    NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4665    NSS_DEP_LIBS="\
4666         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4667         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4668         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4669         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4670         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX)"
4672    if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "WINCE" -o "$OS_ARCH" = "OS2"; then
4673        NSS_LIBS="\
4674         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4675         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(LIB_SUFFIX) \
4676         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(LIB_SUFFIX) \
4677         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(LIB_SUFFIX) \
4678         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(LIB_SUFFIX)"
4679    else
4680        NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION"
4681    fi
4684 if test -z "$SKIP_LIBRARY_CHECKS"; then
4685 dnl system JPEG support
4686 dnl ========================================================
4687 MOZ_ARG_WITH_STRING(system-jpeg,
4688 [  --with-system-jpeg[=PFX]
4689                           Use system libjpeg [installed at prefix PFX]],
4690     JPEG_DIR=$withval)
4692 _SAVE_CFLAGS=$CFLAGS
4693 _SAVE_LDFLAGS=$LDFLAGS
4694 _SAVE_LIBS=$LIBS
4695 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4696     CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4697     LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4699 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4700     SYSTEM_JPEG=
4701 else
4702     AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS)
4705 if test "$SYSTEM_JPEG" = 1; then
4706     LIBS="$JPEG_LIBS $LIBS"
4707     AC_TRY_COMPILE([ #include <stdio.h>
4708                      #include <sys/types.h>
4709                      #include <jpeglib.h> ],
4710                    [ #if JPEG_LIB_VERSION < $MOZJPEG
4711                      #error "Insufficient JPEG library version ($MOZJPEG required)."
4712                      #endif ],
4713                    SYSTEM_JPEG=1,
4714                    [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=]) 
4715 fi 
4716 CFLAGS=$_SAVE_CFLAGS
4717 LDFLAGS=$_SAVE_LDFLAGS
4718 LIBS=$_SAVE_LIBS
4720 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$SYSTEM_JPEG" = 1; then
4721     JPEG_CFLAGS="-I${JPEG_DIR}/include"
4722     JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
4725 dnl system ZLIB support
4726 dnl ========================================================
4727 MOZ_ARG_WITH_STRING(system-zlib,
4728 [  --with-system-zlib[=PFX]
4729                           Use system libz [installed at prefix PFX]],
4730     ZLIB_DIR=$withval)
4732 _SAVE_CFLAGS=$CFLAGS
4733 _SAVE_LDFLAGS=$LDFLAGS
4734 _SAVE_LIBS=$LIBS
4735 if test -n "${ZLIB_DIR}" -a "${ZLIB_DIR}" != "yes"; then
4736     CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
4737     LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
4739 if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
4740     SYSTEM_ZLIB=
4741 else
4742     AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"], 
4743         [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
4745 if test "$SYSTEM_ZLIB" = 1; then
4746     LIBS="$ZLIB_LIBS $LIBS"
4747     AC_TRY_COMPILE([ #include <stdio.h>
4748                      #include <string.h>
4749                      #include <zlib.h> ],
4750                    [ #if ZLIB_VERNUM < $MOZZLIB 
4751                      #error "Insufficient zlib version ($MOZZLIB required)."
4752                      #endif ],
4753                    SYSTEM_ZLIB=1,
4754                    [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=]) 
4756 CFLAGS=$_SAVE_CFLAGS
4757 LDFLAGS=$_SAVE_LDFLAGS
4758 LIBS=$_SAVE_LIBS
4760 if test "${ZLIB_DIR}" -a -d "${ZLIB_DIR}" -a "$SYSTEM_ZLIB" = 1; then
4761     ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
4762     ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
4765 dnl system BZIP2 Support
4766 dnl ========================================================
4767 MOZ_ARG_WITH_STRING(system-bz2,
4768 [  --with-system-bz2[=PFX]
4769                           Use system libbz2 [installed at prefix PFX]],
4770     BZ2_DIR=$withval)
4772 _SAVE_CFLAGS=$CFLAGS
4773 _SAVE_LDFLAGS=$LDFLAGS
4774 _SAVE_LIBS=$LIBS
4775 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4776     CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4777     LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4779 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4780     SYSTEM_BZ2=
4781 else
4782     AC_CHECK_LIB(bz2, BZ2_bzread, [SYSTEM_BZ2=1 BZ2_LIBS="-lbz2"],
4783         [SYSTEM_BZ2= BZ2_CFLAGS= BZ2_LIBS=])
4785 CFLAGS=$_SAVE_CFLAGS
4786 LDFLAGS=$_SAVE_LDFLAGS
4787 LIBS=$_SAVE_LIBS
4789 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$SYSTEM_BZ2" = 1; then
4790     BZ2_CFLAGS="-I${BZ2_DIR}/include"
4791     BZ2_LIBS="-L${BZ2_DIR}/lib ${BZ2_LIBS}"
4794 dnl system PNG Support
4795 dnl ========================================================
4796 MOZ_ARG_WITH_STRING(system-png, 
4797 [  --with-system-png[=PFX]
4798                           Use system libpng [installed at prefix PFX]],
4799     PNG_DIR=$withval)
4801 _SAVE_CFLAGS=$CFLAGS
4802 _SAVE_LDFLAGS=$LDFLAGS
4803 _SAVE_LIBS=$LIBS
4804 CFLAGS="$ZLIB_CFLAGS $CFLAGS"
4805 LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
4806 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4807     CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4808     LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4810 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4811     SYSTEM_PNG=
4812 else
4813     _SAVE_PNG_LIBS=$PNG_LIBS
4814     AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"],
4815                  AC_MSG_ERROR([--with-system-png requested but no working libpng found]), 
4816                  $PNG_LIBS)
4817     AC_CHECK_LIB(png, png_get_acTL, ,
4818                  AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]),
4819                  $_SAVE_PNG_LIBS)
4821 if test "$SYSTEM_PNG" = 1; then
4822     LIBS="$PNG_LIBS $LIBS"
4823     AC_TRY_COMPILE([ #include <stdio.h>
4824                      #include <sys/types.h>
4825                      #include <png.h> ],
4826                    [ #if PNG_LIBPNG_VER < $MOZPNG
4827                      #error "Insufficient libpng version ($MOZPNG required)."
4828                      #endif
4829                      #ifndef PNG_UINT_31_MAX
4830                      #error "Insufficient libpng version."
4831                      #endif ],
4832                    SYSTEM_PNG=1,
4833                    AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4835 CFLAGS=$_SAVE_CFLAGS
4836 LDFLAGS=$_SAVE_LDFLAGS
4837 LIBS=$_SAVE_LIBS
4839 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
4840     PNG_CFLAGS="-I${PNG_DIR}/include"
4841     PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
4844 fi # SKIP_LIBRARY_CHECKS
4846 dnl system HunSpell Support
4847 dnl ========================================================
4848 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4849 [  --enable-system-hunspell
4850                           Use system hunspell (located with pkgconfig)],
4851     SYSTEM_HUNSPELL=1 )
4853 if test -n "$SYSTEM_HUNSPELL"; then
4854     PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4857 AC_SUBST(SYSTEM_HUNSPELL)
4859 dnl ========================================================
4860 dnl Java SDK support
4861 dnl ========================================================
4862 JAVA_INCLUDE_PATH=
4863 MOZ_ARG_WITH_STRING(java-include-path,
4864 [  --with-java-include-path=dir
4865                           Location of Java SDK headers],
4866     JAVA_INCLUDE_PATH=$withval)
4868 JAVA_BIN_PATH=
4869 MOZ_ARG_WITH_STRING(java-bin-path,
4870 [  --with-java-bin-path=dir
4871                           Location of Java binaries (java, javac, jar)],
4872     JAVA_BIN_PATH=$withval)
4874 dnl ========================================================
4875 dnl =
4876 dnl = Application
4877 dnl =
4878 dnl ========================================================
4880 MOZ_ARG_HEADER(Application)
4882 BUILD_STATIC_LIBS=
4883 ENABLE_TESTS=1
4884 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4885 MOZ_BRANDING_DIRECTORY=
4886 MOZ_OFFICIAL_BRANDING=
4887 MOZ_FEEDS=1
4888 MOZ_IMG_ENCODERS_DEFAULT="png jpeg"
4889 MOZ_INSTALLER=1
4890 MOZ_IPC=1
4891 MOZ_JAVAXPCOM=
4892 MOZ_JSDEBUGGER=1
4893 MOZ_JSLOADER=1
4894 MOZ_MATHML=1
4895 MOZ_MORK=
4896 MOZ_MORKREADER=1
4897 MOZ_AUTH_EXTENSION=1
4898 MOZ_NO_ACTIVEX_SUPPORT=1
4899 MOZ_NO_FAST_LOAD=
4900 MOZ_OGG=1
4901 MOZ_RAW=1
4902 MOZ_SYDNEYAUDIO=
4903 MOZ_VORBIS=
4904 MOZ_WAVE=1
4905 MOZ_MEDIA=
4906 MOZ_WEBM=1
4907 VPX_AS=
4908 VPX_ASFLAGS=
4909 VPX_X86_ASM=
4910 MOZ_PANGO=1
4911 MOZ_PERMISSIONS=1
4912 MOZ_PLACES=1
4913 MOZ_PLAINTEXT_EDITOR_ONLY=
4914 MOZ_PLUGINS=1
4915 MOZ_PREF_EXTENSIONS=1
4916 MOZ_PROFILELOCKING=1
4917 MOZ_PSM=1
4918 MOZ_RDF=1
4919 MOZ_REFLOW_PERF=
4920 MOZ_SAFE_BROWSING=
4921 MOZ_FASTSTART=
4922 MOZ_HELP_VIEWER=
4923 MOZ_SPELLCHECK=1
4924 MOZ_SPLASHSCREEN=
4925 MOZ_STORAGE=1
4926 MOZ_SVG=1
4927 MOZ_THUMB2=
4928 MOZ_TIMELINE=
4929 MOZ_TOOLKIT_SEARCH=1
4930 MOZ_UI_LOCALE=en-US
4931 MOZ_UNIVERSALCHARDET=1
4932 MOZ_URL_CLASSIFIER=
4933 MOZ_USE_NATIVE_UCONV=
4934 MOZ_VIEW_SOURCE=1
4935 MOZ_XSLT_STANDALONE=
4936 MOZ_XTF=1
4937 MOZ_XUL=1
4938 MOZ_ZIPWRITER=1
4939 NS_PRINTING=1
4940 NSS_DISABLE_DBM=
4941 NECKO_WIFI=1
4942 NECKO_COOKIES=1
4943 NECKO_DISK_CACHE=1
4944 NECKO_PROTOCOLS_DEFAULT="about data file ftp http res viewsource"
4945 USE_ARM_KUSER=
4946 BUILD_CTYPES=1
4947 XPC_IDISPATCH_SUPPORT=
4950 case "$target_os" in
4951 darwin*|*wince*|*winmo*)
4952     ACCESSIBILITY=
4953     ;;
4955     ACCESSIBILITY=1
4956     ;;
4957 esac
4959 case "$target_os" in
4960     msvc*|mks*|cygwin*|mingw*)
4961         NS_ENABLE_TSF=1
4962         if test -z "$GNU_CC"; then 
4963             if test "$MOZ_WINSDK_TARGETVER" -lt "06000000"; then
4964                 NS_ENABLE_TSF=
4965             fi
4966         fi
4967         if test -n "$NS_ENABLE_TSF"; then
4968             AC_DEFINE(NS_ENABLE_TSF)
4969         fi
4970         ;;
4971 esac
4973 case "${target}" in
4974     arm-android-eabi)
4975         NSS_DISABLE_DBM=1
4976         USE_ARM_KUSER=1
4977         MOZ_INSTALLER=
4978         MOZ_CRASHREPORTER=
4979         NS_PRINTING=
4980         NECKO_WIFI=
4981         MOZ_THUMB2=1
4982         MOZ_THEME_FASTSTRIPE=1
4983         MOZ_TREE_FREETYPE=1
4984         MOZ_MEMORY=1
4985         ;;
4986 esac
4988 MOZ_ARG_ENABLE_STRING(application,
4989 [  --enable-application=APP
4990                           Options include:
4991                             browser (Firefox)
4992                             xulrunner
4993                             content/xslt (Standalone Transformiix XSLT)
4994                             netwerk (Standalone Necko)
4995                             tools/update-packaging (AUS-related packaging tools)
4996                             standalone (use this for standalone
4997                               xpcom/xpconnect or to manually drive a build)],
4998 [ MOZ_BUILD_APP=$enableval ] )
5000 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
5001 [  --with-xulrunner-stub-name=appname   Create the xulrunner stub with the given name],
5002   XULRUNNER_STUB_NAME=$withval)
5004 if test -z "$XULRUNNER_STUB_NAME"; then
5005   case "$target_os" in
5006   darwin*)
5007     XULRUNNER_STUB_NAME=xulrunner
5008     ;;
5009   *)
5010     XULRUNNER_STUB_NAME=xulrunner-stub
5011   esac
5013 AC_SUBST(XULRUNNER_STUB_NAME)
5015 if test -z "$MOZ_BUILD_APP"; then
5016   AC_MSG_ERROR([--enable-application=APP was not specified and is required.])
5017 else
5018   # We have a valid application only if it has a build.mk file in its top
5019   # directory.
5020   if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
5021     AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
5022   fi
5025 # Allow the application to influence configure with a confvars.sh script.
5027 AC_MSG_CHECKING([if app-specific confvars.sh exists])
5028 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
5029   AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
5030   . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
5031 else
5032   AC_MSG_RESULT([no])
5035 # Now is a good time to test for logic errors, define mismatches, etc.
5036 case "$MOZ_BUILD_APP" in
5037 xulrunner)
5038   if test "$LIBXUL_SDK"; then
5039     AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
5040   fi
5041   ;;
5042 esac
5044 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
5045 # that haven't made a confvars.sh yet. Don't add new stuff here, use
5046 # MOZ_BUILD_APP.
5047 case "$MOZ_BUILD_APP" in
5048 browser)
5049   AC_DEFINE(MOZ_PHOENIX)
5050   ;;
5052 xulrunner)
5053   AC_DEFINE(MOZ_XULRUNNER)
5054   ;;
5056 content/xslt)
5057   AC_DEFINE(TX_EXE)
5058   ;;
5060 standalone) 
5061   MOZ_APP_NAME=mozilla
5062   MOZ_APP_DISPLAYNAME=Mozilla
5063   MOZ_APP_VERSION=$MOZILLA_VERSION
5064   ;;
5066 esac
5068 AC_SUBST(MOZ_BUILD_APP)
5069 AC_SUBST(MOZ_PHOENIX)
5070 AC_SUBST(MOZ_XULRUNNER)
5072 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
5074 dnl ========================================================
5075 dnl = 
5076 dnl = Toolkit Options
5077 dnl = 
5078 dnl ========================================================
5079 MOZ_ARG_HEADER(Toolkit Options)
5081     dnl ========================================================
5082     dnl = Select the default toolkit
5083     dnl ========================================================
5084         MOZ_ARG_ENABLE_STRING(default-toolkit,
5085         [  --enable-default-toolkit=TK
5086                           Select default toolkit
5087                           Platform specific defaults:
5088                             BeOS - cairo-beos
5089                             Mac OS X - cairo-cocoa
5090                             Neutrino/QNX - photon
5091                             OS/2 - cairo-os2
5092                             Win32/WinCE - cairo-windows
5093                             Gtk2 with DirectFB - cairo-gtk2-dfb
5094                             * - cairo-gtk2
5095                             * - cairo-qt],
5096     [ _DEFAULT_TOOLKIT=$enableval ],
5097     [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
5099     if test "$_DEFAULT_TOOLKIT" = "photon" \
5100         -o "$_DEFAULT_TOOLKIT" = "cairo-windows" \
5101         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
5102         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-dfb" \
5103         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
5104         -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
5105         -o "$_DEFAULT_TOOLKIT" = "cairo-beos" \
5106         -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
5107         -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa" \
5108         -o "$_DEFAULT_TOOLKIT" = "cairo-android"
5109     then
5110         dnl nglayout only supports building with one toolkit,
5111         dnl so ignore everything after the first comma (",").
5112         MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
5113     else
5114         AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
5115     fi
5117 dnl ========================================================
5118 dnl = Enable the toolkit as needed                         =
5119 dnl ========================================================
5121 case "$MOZ_WIDGET_TOOLKIT" in
5122 photon)
5123         MOZ_ENABLE_PHOTON=1
5124         AC_DEFINE(MOZ_WIDGET_PHOTON)
5125     ;;
5127 cairo-windows)
5128     MOZ_WIDGET_TOOLKIT=windows
5129     MOZ_WEBGL=1
5130     case "${target}" in
5131     *-wince*)
5132         NS_PRINTING=
5133         ;;
5134     esac
5135     ;;
5137 cairo-gtk2|cairo-gtk2-x11)
5138     MOZ_WIDGET_TOOLKIT=gtk2
5139     MOZ_ENABLE_GTK2=1
5140     MOZ_ENABLE_XREMOTE=1
5141     MOZ_WEBGL=1
5142     MOZ_WEBGL_GLX=1
5144     AC_DEFINE(MOZ_X11)
5145     MOZ_X11=1
5146     USE_FC_FREETYPE=1
5148     TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
5149     TK_LIBS='$(MOZ_GTK2_LIBS)'
5150     AC_DEFINE(MOZ_WIDGET_GTK2)
5151     ;;
5153 cairo-gtk2-dfb)
5154     MOZ_WIDGET_TOOLKIT=gtk2
5155     MOZ_ENABLE_GTK2=1
5156     MOZ_WEBGL=
5158     AC_DEFINE(MOZ_DFB)
5159     MOZ_DFB=1
5161     TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
5162     TK_LIBS='$(MOZ_GTK2_LIBS)'
5163     AC_DEFINE(MOZ_WIDGET_GTK2)
5164     if test "$no_x" != "yes"; then
5165         AC_MSG_WARN([Disabling X when DirectFB is specified.])
5166         no_x=yes
5167     fi
5168     ;;
5170 cairo-qt)
5171     MOZ_WIDGET_TOOLKIT=qt
5172     MOZ_ENABLE_QT=1
5173     MOZ_ENABLE_XREMOTE=1
5174     MOZ_WEBGL=1
5175     MOZ_WEBGL_GLX=1
5176     USE_ELF_DYNSTR_GC=
5177     NS_PRINTING=
5179     AC_DEFINE(MOZ_X11)
5180     MOZ_X11=1
5181     USE_FC_FREETYPE=1
5183     TK_CFLAGS='$(MOZ_QT_CFLAGS)'
5184     TK_LIBS='$(MOZ_QT_LIBS)'
5185     AC_DEFINE(MOZ_WIDGET_QT)
5186     ;;
5188 cairo-beos)
5189     MOZ_WIDGET_TOOLKIT=beos
5190     USE_FC_FREETYPE=1
5191     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
5192     TK_LIBS='$(MOZ_CAIRO_LIBS)'
5193     ;;
5195 cairo-os2)
5196     MOZ_WIDGET_TOOLKIT=os2
5197     USE_FC_FREETYPE=1
5198     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
5199     TK_LIBS='$(MOZ_CAIRO_LIBS)'
5200     ;;
5202 cairo-cocoa)
5203     MOZ_WIDGET_TOOLKIT=cocoa
5204     AC_DEFINE(MOZ_WIDGET_COCOA)
5205     MOZ_USER_DIR="Mozilla"
5206     AC_DEFINE(XP_MACOSX)
5207     TK_LIBS='-framework QuartzCore -framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook -framework OpenGL'
5208     TK_CFLAGS="-DNO_X11"
5209     LDFLAGS="$LDFLAGS -framework Cocoa -lobjc"
5210     CFLAGS="$CFLAGS $TK_CFLAGS"
5211     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
5212     LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL'
5213     MOZ_FS_LAYOUT=bundle
5214     MOZ_WEBGL=1
5215     ;;
5217 cairo-android)
5218     AC_DEFINE(MOZ_WIDGET_ANDROID)
5219     MOZ_WIDGET_TOOLKIT=android
5220     MOZ_WEBGL=
5221     ;;
5223 esac
5225 if test "$MOZ_ENABLE_XREMOTE"; then
5226     AC_DEFINE(MOZ_ENABLE_XREMOTE)
5229 if test "$COMPILE_ENVIRONMENT"; then
5230   if test "$MOZ_ENABLE_GTK2"; then
5231     if test "$MOZ_X11"; then
5232       GDK_PACKAGES=gdk-x11-2.0
5233     elif test "$MOZ_DFB"; then
5234       PKG_CHECK_MODULES(MOZ_DFB, directfb >= 1.1.0)
5235       GDK_PACKAGES=directfb
5236     fi
5238     PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
5239   fi
5241 fi # COMPILE_ENVIRONMENT
5243 AC_SUBST(MOZ_FS_LAYOUT)
5245 dnl ========================================================
5246 dnl Use ARM userspace kernel helpers; tell NSPR to enable
5247 dnl their usage and use them in spidermonkey.
5248 dnl ========================================================
5249 MOZ_ARG_WITH_BOOL(arm-kuser,
5250 [  --with-arm-kuser         Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
5251     USE_ARM_KUSER=1,)
5252 if test -n "$USE_ARM_KUSER"; then
5253    AC_DEFINE(USE_ARM_KUSER)
5256 dnl ========================================================
5257 dnl = startup-notification support module
5258 dnl ========================================================
5260 if test "$MOZ_ENABLE_GTK2"
5261 then
5262     MOZ_ENABLE_STARTUP_NOTIFICATION=
5264     MOZ_ARG_ENABLE_BOOL(startup-notification,
5265     [  --enable-startup-notification
5266                           Enable startup-notification support (default: disabled) ],
5267         MOZ_ENABLE_STARTUP_NOTIFICATION=force,
5268         MOZ_ENABLE_STARTUP_NOTIFICATION=)
5269     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
5270     then
5271         PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
5272                           libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
5273         [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
5274             if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
5275             then
5276                 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
5277             fi
5278             MOZ_ENABLE_STARTUP_NOTIFICATION=
5279         ])
5280     fi
5282     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
5283         AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
5284     fi
5286     TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
5288 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
5289 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
5290 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
5292 dnl ========================================================
5293 dnl = QT support
5294 dnl ========================================================
5295 if test "$MOZ_ENABLE_QT"
5296 then
5297     MOZ_ARG_WITH_STRING(qtdir,
5298     [  --with-qtdir=\$dir       Specify Qt directory ],
5299     [ QTDIR=$withval])
5301     if test -z "$QTDIR"; then
5302         PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtCore QtOpenGL)
5303         AC_CHECK_PROGS(HOST_MOC, $MOC moc, "")
5304     else
5305         MOZ_QT_LIBS="-L$QTDIR/lib/ -lQtGui -lQtNetwork -lQtCore -lQtDBus -lQtXml -lQtOpenGL"
5307         MOZ_QT_CFLAGS="-DQT_SHARED"
5308         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include"
5309         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/Qt"
5310         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui"
5311         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtCore"
5312         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtNetwork"
5313         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtDBus"
5314         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtXml"
5315         HOST_MOC="$QTDIR/bin/moc"
5316     fi
5317     if test -z "$HOST_MOC"; then
5318         AC_MSG_ERROR([No acceptable moc preprocessor found. Qt SDK is not installed or --with-qt is
5319 incorrect])
5320     fi
5321     MOC=$HOST_MOC
5324 AC_SUBST(GTK_CONFIG)
5325 AC_SUBST(TK_CFLAGS)
5326 AC_SUBST(TK_LIBS)
5328 AC_SUBST(MOZ_ENABLE_GTK2)
5329 AC_SUBST(MOZ_ENABLE_PHOTON)
5330 AC_SUBST(MOZ_ENABLE_QT)
5331 AC_SUBST(MOZ_ENABLE_XREMOTE)
5332 AC_SUBST(MOZ_GTK2_CFLAGS)
5333 AC_SUBST(MOZ_GTK2_LIBS)
5334 AC_SUBST(MOZ_QT_CFLAGS)
5335 AC_SUBST(MOZ_QT_LIBS)
5336 AC_SUBST(MOZ_ENABLE_MEEGOTOUCH)
5338 AC_SUBST(MOC)
5340 AC_SUBST(MOZ_DFB)
5341 AC_SUBST(MOZ_X11)
5343 dnl ========================================================
5344 dnl =
5345 dnl = Components & Features
5346 dnl = 
5347 dnl ========================================================
5348 MOZ_ARG_HEADER(Components and Features)
5350 dnl ========================================================
5351 dnl = Localization
5352 dnl ========================================================
5353 MOZ_ARG_ENABLE_STRING(ui-locale,
5354 [  --enable-ui-locale=ab-CD
5355                           Select the user interface locale (default: en-US)],
5356     MOZ_UI_LOCALE=$enableval )
5357 AC_SUBST(MOZ_UI_LOCALE)
5359 dnl ========================================================
5360 dnl = Trademarked Branding 
5361 dnl ========================================================
5362 MOZ_ARG_ENABLE_BOOL(official-branding,
5363 [  --enable-official-branding
5364                           Enable Official mozilla.org Branding
5365                           Do not distribute builds with
5366                           --enable-official-branding unless you have
5367                           permission to use trademarks per
5368                           http://www.mozilla.org/foundation/trademarks/ .],
5370   if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
5371     AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
5372   else
5373     MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
5374     MOZ_OFFICIAL_BRANDING=1
5375   fi
5376 ], MOZ_OFFICIAL_BRANDING=)
5378 AC_SUBST(MOZ_OFFICIAL_BRANDING)
5379 if test -n "$MOZ_OFFICIAL_BRANDING"; then
5380   AC_DEFINE(MOZ_OFFICIAL_BRANDING)
5383 MOZ_ARG_WITH_STRING(branding,
5384 [  --with-branding=dir     Use branding from the specified directory.],
5385     MOZ_BRANDING_DIRECTORY=$withval)
5387 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
5388 if test -z "$REAL_BRANDING_DIRECTORY"; then
5389   REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
5392 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
5393   . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
5396 AC_SUBST(MOZ_BRANDING_DIRECTORY)
5398 dnl ========================================================
5399 dnl = Distribution ID
5400 dnl ========================================================
5401 MOZ_ARG_WITH_STRING(distribution-id,
5402 [  --with-distribution-id=ID
5403                           Set distribution-specific id (default=org.mozilla)],
5404 [ val=`echo $withval`
5405     MOZ_DISTRIBUTION_ID="$val"])
5407 if test -z "$MOZ_DISTRIBUTION_ID"; then
5408    MOZ_DISTRIBUTION_ID="org.mozilla"
5411 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
5412 AC_SUBST(MOZ_DISTRIBUTION_ID)
5415 dnl ========================================================
5416 dnl complex text support off by default
5417 dnl ========================================================
5418 MOZ_ARG_DISABLE_BOOL(pango,
5419 [  --disable-pango         Disable usage of Pango ],
5420     MOZ_PANGO=,
5421     MOZ_PANGO=1)
5423 dnl ========================================================
5424 dnl = Pango
5425 dnl ========================================================
5426 if test "$MOZ_ENABLE_GTK2"
5427 then
5428     AC_SUBST(MOZ_PANGO)
5430     PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
5432     PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
5433     AC_SUBST(MOZ_PANGO_CFLAGS)
5434     AC_SUBST(MOZ_PANGO_LIBS)
5435     if test "$MOZ_PANGO"
5436     then
5437         AC_DEFINE(MOZ_PANGO)
5438     else
5439         PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0 fontconfig)
5440         AC_SUBST(FT2_CFLAGS)
5441         AC_SUBST(FT2_LIBS)
5442     fi
5445 if test "$MOZ_ENABLE_QT"
5446 then
5447     if test "$MOZ_PANGO"
5448     then
5449         PKG_CHECK_MODULES(MOZ_PANGO, [pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION],
5450         [
5451             AC_SUBST(MOZ_PANGO_CFLAGS)
5452             AC_SUBST(MOZ_PANGO_LIBS)
5453             AC_DEFINE(MOZ_PANGO)
5454         ],
5455         [
5456             echo "Pango library not found, will use FT2 font engine"
5457             MOZ_PANGO=
5458         ])
5459     fi
5460     AC_SUBST(MOZ_PANGO)
5463 dnl ========================================================
5464 dnl = GnomeVFS, GIO and GConf support module
5465 dnl ========================================================
5467 if test "$MOZ_X11"
5468 then
5469     dnl build the gnomevfs extension by default only when the
5470     dnl GTK2 toolkit is in use.
5471     if test "$MOZ_ENABLE_GTK2"
5472     then
5473         MOZ_ENABLE_GNOMEVFS=1
5474         MOZ_ENABLE_GCONF=1
5475     fi
5477     dnl ========================================================
5478     dnl = GnomeVFS support module
5479     dnl ========================================================
5480     MOZ_ARG_DISABLE_BOOL(gnomevfs,
5481     [  --disable-gnomevfs      Disable GnomeVFS support ],
5482         MOZ_ENABLE_GNOMEVFS=,
5483         MOZ_ENABLE_GNOMEVFS=force)
5485     if test "$MOZ_ENABLE_GNOMEVFS"
5486     then
5487         PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
5488             MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
5489             MOZ_ENABLE_GNOMEVFS=1
5490             AC_DEFINE(MOZ_ENABLE_GNOMEVFS)
5491         ],[
5492             if test "$MOZ_ENABLE_GNOMEVFS" = "force"
5493             then
5494                 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
5495             fi
5496             MOZ_ENABLE_GNOMEVFS=
5497         ])
5498     else
5499         if test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
5500             PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
5501               MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
5502             ])
5503         fi
5504     fi
5506     AC_SUBST(MOZ_ENABLE_GNOMEVFS)
5507     AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
5508     AC_SUBST(MOZ_GNOMEVFS_LIBS)
5510     dnl ========================================================
5511     dnl = GIO support module
5512     dnl ========================================================
5513     MOZ_ARG_ENABLE_BOOL(gio,
5514     [  --enable-gio            Enable GIO support (default: disabled)],
5515         MOZ_ENABLE_GIO=force,
5516         MOZ_ENABLE_GIO=)
5518     if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK2"
5519     then
5520         PKG_CHECK_MODULES(MOZ_GIO, gio-2.0 >= $GIO_VERSION,[
5521             MOZ_GIO_LIBS=`echo $MOZ_GIO_LIBS | sed 's/-llinc\>//'`
5522             MOZ_ENABLE_GIO=1
5523             AC_DEFINE(MOZ_ENABLE_GIO)
5524         ],[
5525             if test "$MOZ_ENABLE_GIO" = "force"
5526             then
5527                 AC_MSG_ERROR([* * * Could not find gio-2.0 >= $GIO_VERSION])
5528             fi
5529             MOZ_ENABLE_GIO=
5530         ])
5531     fi
5533     AC_SUBST(MOZ_ENABLE_GIO)
5534     AC_SUBST(MOZ_GIO_CFLAGS)
5535     AC_SUBST(MOZ_GIO_LIBS)
5536    
5537     dnl ========================================================
5538     dnl = GConf support module
5539     dnl ========================================================
5540     if test "$MOZ_ENABLE_GCONF"
5541     then
5542         PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION gobject-2.0 ,[
5543             MOZ_GCONF_LIBS=`echo $MOZ_GCONF_LIBS | sed 's/-llinc\>//'`
5544             MOZ_ENABLE_GCONF=1
5545         ],[
5546             if test "$MOZ_ENABLE_GCONF" = "force"
5547             then
5548                 AC_MSG_ERROR([* * * Could not find gconf-2.0 ])
5549             fi
5550             MOZ_ENABLE_GCONF=
5551         ])
5552     fi
5554     if test "$MOZ_ENABLE_GCONF"; then
5555         AC_DEFINE(MOZ_ENABLE_GCONF)
5556     fi
5558     AC_SUBST(MOZ_ENABLE_GCONF)
5559     AC_SUBST(MOZ_GCONF_CFLAGS)
5560     AC_SUBST(MOZ_GCONF_LIBS)
5563 dnl ========================================================
5564 dnl = libproxy support
5565 dnl ========================================================
5567 if test "$MOZ_ENABLE_GTK2"
5568 then
5569     MOZ_ENABLE_LIBPROXY=
5571     MOZ_ARG_ENABLE_BOOL(libproxy,
5572     [  --enable-libproxy         Enable libproxy support ],
5573     MOZ_ENABLE_LIBPROXY=1,
5574     MOZ_ENABLE_LIBPROXY=)
5576     if test "$MOZ_ENABLE_LIBPROXY"
5577     then
5578         PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
5579         AC_DEFINE(MOZ_ENABLE_LIBPROXY)
5580     fi
5582 AC_SUBST(MOZ_ENABLE_LIBPROXY)
5583 AC_SUBST(MOZ_LIBPROXY_CFLAGS)
5584 AC_SUBST(MOZ_LIBPROXY_LIBS)
5586 dnl ========================================================
5587 dnl = libnotify support
5588 dnl ========================================================
5590 if test "$MOZ_ENABLE_GTK2"
5591 then
5592     MOZ_ENABLE_LIBNOTIFY=1
5594     MOZ_ARG_DISABLE_BOOL(libnotify,
5595     [  --disable-libnotify     Disable libnotify support ],
5596     MOZ_ENABLE_LIBNOTIFY=,
5597     MOZ_ENABLE_LIBNOTIFY=1)
5599     if test "$MOZ_ENABLE_LIBNOTIFY"
5600     then
5601         AC_DEFINE(MOZ_ENABLE_LIBNOTIFY)
5602     fi
5605 if test -z "$SKIP_LIBRARY_CHECKS"
5606 then
5607     if test "$MOZ_ENABLE_GTK2"
5608     then
5609         if test "$MOZ_ENABLE_LIBNOTIFY"
5610         then
5611             PKG_CHECK_MODULES(MOZ_LIBNOTIFY, libnotify >= $LIBNOTIFY_VERSION)
5612         fi
5613     fi
5615 AC_SUBST(MOZ_ENABLE_LIBNOTIFY)
5616 AC_SUBST(MOZ_LIBNOTIFY_CFLAGS)
5617 AC_SUBST(MOZ_LIBNOTIFY_LIBS)
5619 dnl ========================================================
5620 dnl = GNOME component (mozgnome)
5621 dnl ========================================================
5623 # The GNOME component is built if one of 
5624 # gnome-vfs, gio, gconf or libnotify is available.
5625 if test "$MOZ_ENABLE_GCONF" -o \
5626    "$MOZ_ENABLE_GNOMEVFS" -o \
5627    "$MOZ_ENABLE_GIO" -o \
5628    "$MOZ_ENABLE_LIBNOTIFY"; then
5629     MOZ_ENABLE_GNOME_COMPONENT=1
5630 else
5631     MOZ_ENABLE_GNOME_COMPONENT=
5633 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5635 dnl ========================================================
5636 dnl = libgnomeui support module
5637 dnl ========================================================
5639 if test "$MOZ_ENABLE_GTK2"
5640 then
5641     MOZ_ENABLE_GNOMEUI=1
5643     MOZ_ARG_DISABLE_BOOL(gnomeui,
5644     [  --disable-gnomeui       Disable libgnomeui support (default: auto, optional at runtime) ],
5645         MOZ_ENABLE_GNOMEUI=,
5646         MOZ_ENABLE_GNOMEUI=force)
5648     if test "$MOZ_ENABLE_GNOMEUI"
5649     then
5650         PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5651         [
5652             MOZ_GNOMEUI_LIBS=`echo $MOZ_GNOMEUI_LIBS | sed 's/-llinc\>//'`
5653             MOZ_ENABLE_GNOMEUI=1
5654         ],[
5655             if test "$MOZ_ENABLE_GNOMEUI" = "force"
5656             then
5657                 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5658             fi
5659             MOZ_ENABLE_GNOMEUI=
5660         ])
5661     fi
5663     if test "$MOZ_ENABLE_GNOMEUI"; then
5664         AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5665     fi
5668 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5669 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5670 AC_SUBST(MOZ_GNOMEUI_LIBS)
5672 dnl ========================================================
5673 dnl = dbus support
5674 dnl ========================================================
5676 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
5677 then
5678     MOZ_ENABLE_DBUS=1
5680     MOZ_ARG_DISABLE_BOOL(dbus,
5681     [  --disable-dbus          Disable dbus support ],
5682         MOZ_ENABLE_DBUS=,
5683         MOZ_ENABLE_DBUS=1)
5685     if test "$MOZ_ENABLE_DBUS"
5686     then
5687         PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
5688         PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5689         AC_DEFINE(MOZ_ENABLE_DBUS)
5690     fi
5692 AC_SUBST(MOZ_ENABLE_DBUS)
5693 AC_SUBST(MOZ_DBUS_CFLAGS)
5694 AC_SUBST(MOZ_DBUS_LIBS)
5695 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5696 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5698 dnl ========================================================
5699 dnl = Build Personal Security Manager
5700 dnl ========================================================
5701 MOZ_ARG_DISABLE_BOOL(crypto,
5702 [  --disable-crypto        Disable crypto support (Personal Security Manager)],
5703     MOZ_PSM=,
5704     MOZ_PSM=1 )
5706 dnl ========================================================
5707 dnl = JS Debugger XPCOM component (js/jsd)
5708 dnl ========================================================
5709 MOZ_ARG_DISABLE_BOOL(jsd,
5710 [  --disable-jsd           Disable JavaScript debug library],
5711     MOZ_JSDEBUGGER=,
5712     MOZ_JSDEBUGGER=1)
5715 dnl ========================================================
5716 dnl = Disable IPC support for tabs and plugins
5717 dnl ========================================================
5718 MOZ_ARG_DISABLE_BOOL(ipc,
5719 [  --disable-ipc           Disable IPC supports for tabs and plugins],
5720     MOZ_IPC=,
5721     MOZ_IPC=1)
5723 if test -n "$MOZ_IPC"; then
5724     AC_DEFINE(MOZ_IPC)
5727 AC_SUBST(MOZ_IPC)
5729 dnl ========================================================
5730 dnl = Enable IPDL's "expensive" unit tests
5731 dnl ========================================================
5732 MOZ_IPDL_TESTS=
5734 MOZ_ARG_ENABLE_BOOL(ipdl-tests,
5735 [  --enable-ipdl-tests     Enable expensive IPDL tests],
5736     MOZ_IPDL_TESTS=1,
5737     MOZ_IPDL_TESTS=)
5739 if test -z "$MOZ_IPC" -a -n "$MOZ_IPDL_TESTS"; then
5740     AC_MSG_ERROR([--enable-ipdl-tests requires --enable-ipc])
5743 if test -n "$MOZ_IPDL_TESTS"; then
5744     AC_DEFINE(MOZ_IPDL_TESTS)
5747 AC_SUBST(MOZ_IPDL_TESTS)
5749 dnl ========================================================
5750 dnl = Disable plugin support
5751 dnl ========================================================
5752 MOZ_ARG_DISABLE_BOOL(plugins,
5753 [  --disable-plugins       Disable plugins support],
5754     MOZ_PLUGINS=,
5755     MOZ_PLUGINS=1)
5757 dnl ========================================================
5758 dnl = Disable building dbm
5759 dnl ========================================================
5760 MOZ_ARG_DISABLE_BOOL(dbm,
5761 [  --disable-dbm           Disable building dbm],
5762     NSS_DISABLE_DBM=1,
5763     NSS_DISABLE_DBM=)
5765 dnl bi-directional support always on
5766 IBMBIDI=1
5767 AC_DEFINE(IBMBIDI)
5769 dnl ========================================================
5770 dnl view source support on by default
5771 dnl ========================================================
5772 if test "$MOZ_VIEW_SOURCE"; then
5773     AC_DEFINE(MOZ_VIEW_SOURCE)
5776 dnl ========================================================
5777 dnl accessibility support on by default on all platforms 
5778 dnl except OS X.
5779 dnl ========================================================
5780 MOZ_ARG_DISABLE_BOOL(accessibility,
5781 [  --disable-accessibility Disable accessibility support (off by default on OS X)],
5782     ACCESSIBILITY=,
5783     ACCESSIBILITY=1 )
5784 if test "$ACCESSIBILITY"; then
5785     AC_DEFINE(ACCESSIBILITY)
5788 if test -n "$ACCESSIBILITY" -a "$COMPILE_ENVIRONMENT" = "1"; then
5789 case "$target" in
5790 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5791     if test "$ac_cv_header_atlbase_h" = "no"; then
5792         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.])
5793     fi
5794     if test "$ac_cv_header_oleacc_idl" = "no"; then
5795         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.])
5796     fi
5797     ;;
5798 esac
5801 dnl ========================================================
5802 dnl xpcom js loader support on by default
5803 dnl ========================================================
5804 if test "$MOZ_JSLOADER"; then
5805     AC_DEFINE(MOZ_JSLOADER)
5808 dnl ========================================================
5809 dnl Disable printing
5810 dnl ========================================================
5811 MOZ_ARG_DISABLE_BOOL(printing,
5812 [  --disable-printing      Disable printing support],
5813     NS_PRINTING=,
5814     NS_PRINTING=1)
5816 if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
5817     AC_MSG_WARN([Printing does not work with Qt at this time. Omitting printing support.])
5818     NS_PRINTING=
5821 if test "$NS_PRINTING"; then
5822     AC_DEFINE(NS_PRINTING)
5823     AC_DEFINE(NS_PRINT_PREVIEW)
5825 dnl ========================================================
5826 dnl use native unicode converters
5827 dnl ========================================================
5828 MOZ_ARG_ENABLE_BOOL(native-uconv,
5829 [  --enable-native-uconv   Enable iconv support],
5830     MOZ_USE_NATIVE_UCONV=1,
5831     MOZ_USE_NATIVE_UCONV= )
5832 if test "$MOZ_USE_NATIVE_UCONV"; then
5833     AC_DEFINE(MOZ_USE_NATIVE_UCONV)
5835 if test "$OS_ARCH" != "WINCE" -a "$OS_ARCH" != "WINNT" -a "$MOZ_USE_NATIVE_UCONV" -a "$ac_cv_func_iconv" != "yes"; then
5836     AC_MSG_ERROR([iconv() not found.  Cannot enable native uconv support.])
5840 dnl ========================================================
5841 dnl Libeditor can be build as plaintext-only,
5842 dnl or as a full html and text editing component.
5843 dnl We build both by default.
5844 dnl ========================================================
5845 MOZ_ARG_ENABLE_BOOL(plaintext-editor-only,
5846 [  --enable-plaintext-editor-only
5847                           Allow only plaintext editing],
5848     MOZ_PLAINTEXT_EDITOR_ONLY=1,
5849     MOZ_PLAINTEXT_EDITOR_ONLY= )
5850 dnl Note the #define is MOZILLA, not MOZ, for compat with the Mac build.
5851 AC_SUBST(MOZ_PLAINTEXT_EDITOR_ONLY)
5853 dnl ========================================================
5854 dnl = Disable Fast Load
5855 dnl ========================================================
5856 MOZ_ARG_DISABLE_BOOL(xpcom-fastload,
5857 [  --disable-xpcom-fastload
5858                           Disable XPCOM fastload support],
5859     MOZ_NO_FAST_LOAD=1,
5860     MOZ_NO_FAST_LOAD=)
5862 AC_SUBST(MOZ_NO_FAST_LOAD)
5864 if test -n "$MOZ_NO_FAST_LOAD"; then
5865     AC_DEFINE(MOZ_NO_FAST_LOAD)
5868 AC_SUBST(MOZ_RAW)
5869 AC_DEFINE(MOZ_RAW)
5871 dnl ========================================================
5872 dnl = Disable Ogg Codecs
5873 dnl ========================================================
5874 MOZ_ARG_DISABLE_BOOL(ogg,
5875 [  --disable-ogg           Disable support for OGG media (Theora video and Vorbis audio)],
5876     MOZ_OGG=,
5877     MOZ_OGG=1)
5879 if test -n "$MOZ_OGG"; then
5880     AC_DEFINE(MOZ_OGG)
5881     MOZ_SYDNEYAUDIO=1
5882     MOZ_MEDIA=1
5883     MOZ_VORBIS=1
5885     dnl Checks for __attribute__(aligned()) directive
5886     AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
5887         [ac_cv_c_attribute_aligned],
5888         [ac_cv_c_attribute_aligned=0
5889          CFLAGS_save="${CFLAGS}"
5890          CFLAGS="${CFLAGS} -Werror"
5891          for ac_cv_c_attr_align_try in 64 32 16 8; do
5892            echo "trying $ac_cv_c_attr_align_try"
5893            AC_TRY_COMPILE([],
5894                           [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
5895                           [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
5896            if test "$ac_cv_c_attribute_aligned" != 0; then
5897              break;
5898            fi
5899          done
5900            CFLAGS="${CFLAGS_save}"])
5901     if test "${ac_cv_c_attribute_aligned}" != "0"; then
5902       AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
5903                          [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
5904     fi
5907 dnl ========================================================
5908 dnl = Disable VP8 decoder support
5909 dnl ========================================================
5910 MOZ_ARG_DISABLE_BOOL(webm,
5911 [  --disable-webm          Disable support for WebM media (VP8 video and Vorbis audio)],
5912     MOZ_WEBM=,
5913     MOZ_WEBM=1)
5915 if test -n "$MOZ_WEBM"; then
5916     AC_DEFINE(MOZ_WEBM)
5917     MOZ_SYDNEYAUDIO=1
5918     MOZ_MEDIA=1
5919     MOZ_VORBIS=1
5921     dnl Detect if we can use an assembler to compile optimized assembly for libvpx.
5922     dnl For Win32 (MSVC) we must use MASM.
5923     if test "$OS_ARCH" = "WINNT" -a "$CPU_ARCH" = "x86" -a -z "$GNU_CC"; then
5924         AC_MSG_CHECKING([for MASM assembler])
5925         AC_CHECK_PROGS(VPX_AS, ml, "")
5926         if test -n "$VPX_AS"; then
5927           VPX_X86_ASM=1
5928           VPX_AS='sh $(topsrcdir)/media/libvpx/yasm2masm-as.sh'
5929         else
5930             AC_MSG_ERROR([Need MASM (ml.exe) in order to assemble libvpx optimized assembly. Either disable webm (reconfigure with --disable-webm) or install MASM. MASM is included in the Windows 7 SDK, or you can download MASM directly from http://www.microsoft.com/downloads/details.aspx?familyid=7a1c9da0-0510-44a2-b042-7ef370530c64&displaylang=en])
5931         fi
5932     else 
5934       dnl For Darwin x86, Darwin x86_64, Linux x86, and WINNT x86_64
5935       dnl we can use YASM.
5936       AC_MSG_CHECKING([for YASM assembler])
5937       AC_CHECK_PROGS(VPX_AS, $YASM yasm, "")
5938       dnl We have YASM, see if we have assembly on this platform.  
5939       case "$OS_ARCH:$OS_TEST" in
5940       Linux:x86|Linux:i?86)
5941         VPX_ASFLAGS="-f elf32 -rnasm -pnasm"
5942         VPX_X86_ASM=1
5943       ;;
5944       Linux:x86_64)
5945         VPX_ASFLAGS="-f elf64 -rnasm -pnasm -DPIC"
5946         VPX_X86_ASM=1
5947       ;;
5948       SunOS:i?86)
5949         VPX_ASFLAGS="-f elf32 -rnasm -pnasm"
5950         VPX_X86_ASM=1
5951       ;;
5952       SunOS:x86_64)
5953         VPX_ASFLAGS="-f elf64 -rnasm -pnasm -DPIC"
5954         VPX_X86_ASM=1
5955       ;;
5956       Darwin:i?86)
5957         VPX_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC"
5958         VPX_X86_ASM=1
5959       ;;
5960       Darwin:x86_64)
5961         VPX_ASFLAGS="-f macho64 -rnasm -pnasm -DPIC"
5962         VPX_X86_ASM=1
5963       ;;
5964       WINNT:x86_64)
5965         if test -z "$GNU_CC"; then
5966           VPX_ASFLAGS="-f x64 -rnasm -pnasm"
5967           VPX_X86_ASM=1
5968         fi
5969       ;;
5970       esac
5971       if test "$COMPILE_ENVIRONMENT" -a -n "$VPX_X86_ASM" -a -z "$VPX_AS"; then
5972         AC_MSG_ERROR([yasm is a required build tool for this architecture when webm is enabled. You may either install yasm or --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
5973       fi
5974     fi # end !WINNT_x86_MSVC
5976     if test -n "$VPX_X86_ASM"; then
5977       AC_DEFINE(VPX_X86_ASM)
5978     else
5979       AC_MSG_WARN([No assembler or assembly support for libvpx, using unoptimized C routines.])
5980     fi
5983 dnl ========================================================
5984 dnl = Disable Wave decoder support
5985 dnl ========================================================
5986 MOZ_ARG_DISABLE_BOOL(wave,
5987 [  --disable-wave          Disable Wave decoder support],
5988     MOZ_WAVE=,
5989     MOZ_WAVE=1)
5991 if test -n "$MOZ_WAVE"; then
5992     AC_DEFINE(MOZ_WAVE)
5993     MOZ_SYDNEYAUDIO=1
5994     MOZ_MEDIA=1
5997 dnl ========================================================
5998 dnl = Handle dependent SYDNEYAUDIO and MEDIA defines
5999 dnl ========================================================
6001 if test -n "$MOZ_SYDNEYAUDIO"; then
6002     AC_DEFINE(MOZ_SYDNEYAUDIO)
6005 if test -n "$MOZ_MEDIA"; then
6006     AC_DEFINE(MOZ_MEDIA)
6009 if test -n "$MOZ_VORBIS"; then
6010     AC_DEFINE(MOZ_VORBIS)
6013 dnl ========================================================
6014 dnl = Check alsa availability on Linux if using sydneyaudio
6015 dnl ========================================================
6017 dnl If using sydneyaudio with Linux, ensure that the alsa library is available
6018 if test -n "$MOZ_SYDNEYAUDIO"; then
6019    case "$target_os" in
6020 linux*)
6021       PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
6022          [echo "$MOZ_ALSA_PKG_ERRORS"
6023           AC_MSG_ERROR([Need alsa for Ogg, Wave or WebM decoding on Linux.  Disable with --disable-ogg --disable-wave --disable-webm.  (On Ubuntu, you might try installing the package libasound2-dev.)])])
6024       ;;
6025    esac
6028 dnl ========================================================
6029 dnl Splashscreen
6030 dnl ========================================================
6031 AC_ARG_ENABLE(splashscreen,
6032               [  --enable-splashscreen   display splashscreen while loading (default=no)],
6033               [enable_splash="yes"],[enable_splash=""])
6034 if test "x$enable_splash" = "xyes"; then
6035   MOZ_SPLASHSCREEN=1
6036   AC_DEFINE(MOZ_SPLASHSCREEN)
6038 AC_SUBST(MOZ_SPLASHSCREEN)
6040 dnl ========================================================
6041 dnl Permissions System
6042 dnl ========================================================
6043 MOZ_ARG_DISABLE_BOOL(permissions,
6044 [  --disable-permissions   Disable permissions (popup and cookie blocking)],
6045     MOZ_PERMISSIONS=,
6046     MOZ_PERMISSIONS=1
6049 dnl ========================================================
6050 dnl NegotiateAuth
6051 dnl ========================================================
6052 MOZ_ARG_DISABLE_BOOL(negotiateauth,
6053 [  --disable-negotiateauth Disable GSS-API negotiation ],
6054     MOZ_AUTH_EXTENSION=,
6055     MOZ_AUTH_EXTENSION=1 )
6057 dnl ========================================================
6058 dnl XTF
6059 dnl ========================================================
6060 MOZ_ARG_DISABLE_BOOL(xtf,
6061 [  --disable-xtf           Disable XTF (pluggable xml tags) support],
6062     MOZ_XTF=,
6063     MOZ_XTF=1 )
6064 if test "$MOZ_XTF"; then
6065   AC_DEFINE(MOZ_XTF)
6068 dnl ========================================================
6069 dnl Pref extensions (autoconfig and system-pref)
6070 dnl ========================================================
6071 MOZ_ARG_DISABLE_BOOL(pref-extensions,
6072 [  --disable-pref-extensions
6073                           Disable pref extensions such as autoconfig and
6074                           system-pref],
6075   MOZ_PREF_EXTENSIONS=,
6076   MOZ_PREF_EXTENSIONS=1 )
6078 dnl ========================================================
6079 dnl = Universalchardet
6080 dnl ========================================================
6081 MOZ_ARG_DISABLE_BOOL(universalchardet,
6082 [  --disable-universalchardet
6083                           Disable universal encoding detection],
6084   MOZ_UNIVERSALCHARDET=,
6085   MOZ_UNIVERSALCHARDET=1 )
6087 dnl ========================================================
6088 dnl JavaXPCOM
6089 dnl ========================================================
6090 case "${target}" in
6091 *-wince*)
6092     MOZ_JAVAXPCOM=
6093     ;;
6094 esac
6096 MOZ_ARG_ENABLE_BOOL(javaxpcom,
6097 [  --enable-javaxpcom
6098                           Enable Java-XPCOM bridge],
6099     MOZ_JAVAXPCOM=1,
6100     MOZ_JAVAXPCOM=)
6102 case "$host_os" in
6103   cygwin*|msvc*|mks*)
6104     if test -n "$JAVA_HOME"; then
6105       JAVA_HOME=`cygpath -u \`cygpath -m -s "$JAVA_HOME"\``
6106     fi
6107     ;;
6108   *mingw*)
6109     if test -n "$JAVA_HOME"; then
6110       JAVA_HOME=`cd "$JAVA_HOME" && pwd`
6111     fi
6112     ;;
6113 esac
6115 if test -n "${JAVA_BIN_PATH}"; then
6116   dnl Look for javac and jar in the specified path.
6117   JAVA_PATH="$JAVA_BIN_PATH"
6118 else
6119   dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
6120   JAVA_PATH="$JAVA_HOME/bin:$PATH"
6123 MOZ_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
6124 MOZ_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
6125 MOZ_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
6127 if test -n "${JAVA_BIN_PATH}" -o "$OS_TARGET" = Android; then
6128   if test -z "$JAVA" -o "$JAVA" = ":" -o -z "$JAVAC" -o "$JAVAC" = ":" -o -z "$JAR" -o "$JAR" = ":"; then
6129     AC_MSG_ERROR([The programs java, javac and jar were not found.  Set \$JAVA_HOME to your java sdk directory or use --with-java-bin-path={java-bin-dir}])
6130   fi
6133 if test -n "${MOZ_JAVAXPCOM}"; then
6134   if test -n "${JAVA_INCLUDE_PATH}"; then
6135     dnl Make sure jni.h exists in the given include path.
6136     if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
6137       AC_MSG_ERROR([jni.h was not found in given include path $JAVA_INCLUDE_PATH.])
6138     fi
6139   else
6140     case "$target_os" in
6141       darwin*)
6142         dnl Default to java system location
6143         JAVA_INCLUDE_PATH=/System/Library/Frameworks/JavaVM.framework/Headers
6144         ;;
6145       *)
6146         dnl Try $JAVA_HOME
6147         JAVA_INCLUDE_PATH="$JAVA_HOME/include"
6148         ;;
6149     esac
6150     if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
6151       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.])
6152     fi
6153   fi
6156 dnl ========================================================
6157 dnl = Breakpad crash reporting (on by default on supported platforms)
6158 dnl ========================================================
6160 case $target in
6161 i?86-*-mingw*)
6162   MOZ_CRASHREPORTER=1
6163   ;;
6164 i?86-apple-darwin*|powerpc-apple-darwin*|x86_64-apple-darwin*)
6165   MOZ_CRASHREPORTER=1
6166   ;;
6167 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
6168   MOZ_CRASHREPORTER=1
6169   ;;
6170 *solaris*)
6171   MOZ_CRASHREPORTER=1
6172   ;;
6173 esac
6175 MOZ_ARG_DISABLE_BOOL(crashreporter,
6176 [  --disable-crashreporter Disable breakpad crash reporting],
6177     MOZ_CRASHREPORTER=,
6178     MOZ_CRASHREPORTER=1)
6180 if test -n "$MOZ_CRASHREPORTER"; then
6181    AC_DEFINE(MOZ_CRASHREPORTER)
6183   if (test "$OS_ARCH" = "Linux" -o "$OS_ARCH" = "SunOS") && \
6184     test -z "$SKIP_LIBRARY_CHECKS"; then
6185     PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
6186     AC_SUBST(MOZ_GTHREAD_CFLAGS)
6187     AC_SUBST(MOZ_GTHREAD_LIBS)
6189     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.])])
6190   fi
6193 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
6194 [  --with-crashreporter-enable-percent=NN
6195                           Enable sending crash reports by default on NN% of users. (default=100)],
6196 [ val=`echo $withval | sed 's/[^0-9]//g'`
6197     MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
6199 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
6200    MOZ_CRASHREPORTER_ENABLE_PERCENT=100
6202 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
6204 dnl ========================================================
6205 dnl = Enable compilation of specific extension modules
6206 dnl ========================================================
6208 MOZ_ARG_ENABLE_STRING(extensions,
6209 [  --enable-extensions     Enable extensions],
6210 [ for option in `echo $enableval | sed 's/,/ /g'`; do
6211     if test "$option" = "yes" -o "$option" = "all"; then
6212         AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
6213     elif test "$option" = "no" -o "$option" = "none"; then
6214         MOZ_EXTENSIONS=""
6215     elif test "$option" = "default"; then
6216         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
6217     elif test `echo "$option" | grep -c \^-` != 0; then
6218         option=`echo $option | sed 's/^-//'`
6219         MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
6220     else
6221         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
6222     fi
6223 done],
6224     MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
6226 if test -z "$MOZ_ENABLE_GNOMEVFS" -a -z "$MOZ_GNOMEVFS_LIBS" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6227     # Suppress warning on non-X11 platforms
6228     if test -n "$MOZ_X11"; then
6229         AC_MSG_WARN([Cannot build gnomevfs without required libraries. Removing gnomevfs from MOZ_EXTENSIONS.])
6230     fi
6231     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6234 dnl Do not build gnomevfs with libxul based apps
6235 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6236     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6239 if test -z "$MOZ_ENABLE_GIO" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6240     # Suppress warning on non-X11 platforms
6241     if test -n "$MOZ_X11"; then
6242         AC_MSG_WARN([Cannot build gio without required libraries. Removing gio from MOZ_EXTENSIONS.])
6243     fi
6244     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6247 dnl Do not build gio with libxul based apps
6248 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6249     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6252 if test -z "$MOZ_JSDEBUGGER" -a `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
6253     AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
6254     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
6257 dnl This might be temporary: build tridentprofile only on Windows
6258 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0 && test "$OS_ARCH" != "WINNT"; then
6259     AC_MSG_WARN([tridentprofile extension works only on Windows at this time. Removing tridentprofile from MOZ_EXTENSIONS.])
6260     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
6263 dnl cookie must be built before tridentprofile. put it at list's end.
6264 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0; then
6265   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
6266   MOZ_EXTENSIONS="$MOZ_EXTENSIONS tridentprofile"
6269 dnl xforms requires xtf and schema-validation
6270 if test -z "$MOZ_XTF" -a `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
6271     AC_MSG_WARN([Cannot build XForms without XTF support.  Removing XForms from MOZ_EXTENSIONS.])
6272     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
6274 if test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0 && test `echo "$MOZ_EXTENSIONS" | grep -c schema-validation` -eq 0; then
6275     AC_MSG_WARN([Cannot build XForms without schema validation.  Removing XForms from MOZ_EXTENSIONS.])
6276     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
6279 if test `echo "$MOZ_EXTENSIONS" | grep -c auth` -ne 0; then
6280     AC_MSG_WARN([auth is no longer an extension, use --disable-negotiateauth to disable.])
6281     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|auth||g'`
6284 if test `echo "$MOZ_EXTENSIONS" | grep -c 'cookie\|permissions'` -ne 0; then
6285     AC_MSG_WARN([cookie and permissions are no longer extensions, use --disable-permissions to disable.])
6286     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|cookie||g; s|permissions||g'`
6289 if test `echo "$MOZ_EXTENSIONS" | grep -c pref` -ne 0; then
6290     AC_MSG_WARN([pref is no longer an extension, use --disable-pref-extensions to disable.])
6291     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|pref||g'`
6294 if test `echo "$MOZ_EXTENSIONS" | grep -c universalchardet` -ne 0; then
6295     AC_MSG_WARN([universalchardet is no longer an extension, use --disable-universalchardet to disable.])
6296     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|universalchardet||g'`
6299 if test `echo "$MOZ_EXTENSIONS" | grep -c java` -ne 0; then
6300     AC_MSG_WARN([java is no longer an extension, use --enable-javaxpcom to enable.])
6301     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|java||g'`
6304 if test `echo "$MOZ_EXTENSIONS" | grep -c spellcheck` -ne 0; then
6305     AC_MSG_WARN([spellcheck is no longer an extension.])
6306     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|spellcheck||g'`
6309 dnl Remove dupes
6310 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
6312 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
6313 dnl when trying to build a nonexistent extension.
6314 for extension in $MOZ_EXTENSIONS; do
6315     if test ! -d "${srcdir}/extensions/${extension}"; then
6316         AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
6317     fi
6318 done
6320 dnl ========================================================
6321 dnl Image encoders
6322 dnl ========================================================
6323 MOZ_ARG_ENABLE_STRING(image-encoders,
6324 [  --enable-image-encoders[={mod1,mod2,default,all,none}]
6325                           Enable specific image encoders],
6326 [ for option in `echo $enableval | sed 's/,/ /g'`; do
6327     if test "$option" = "yes" -o "$option" = "all"; then
6328         addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
6329     elif test "$option" = "no" -o "$option" = "none"; then
6330         MOZ_IMG_ENCODERS=""
6331         addencoder=""
6332     elif test "$option" = "default"; then
6333         addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
6334     elif test `echo "$option" | grep -c \^-` != 0; then
6335         option=`echo $option | sed 's/^-//'`
6336         addencoder=`echo "$MOZ_IMG_ENCODERS" | sed "s/ ${option}//"`
6337     else
6338         addencoder="$option"
6339     fi
6340     MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS $addencoder"
6341 done],
6342     MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS_DEFAULT")
6344 dnl Remove dupes
6345 MOZ_IMG_ENCODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_ENCODERS}`
6347 dnl ========================================================
6348 dnl MathML on by default
6349 dnl ========================================================
6350 MOZ_ARG_DISABLE_BOOL(mathml,
6351 [  --disable-mathml        Disable MathML support],
6352     MOZ_MATHML=,
6353     MOZ_MATHML=1 )
6354 if test "$MOZ_MATHML"; then
6355   AC_DEFINE(MOZ_MATHML)
6358 dnl ========================================================
6359 dnl SVG
6360 dnl ========================================================
6361 MOZ_ARG_DISABLE_BOOL(svg,
6362 [  --disable-svg           Disable SVG support],
6363     MOZ_SVG=,
6364     MOZ_SVG=1 )
6365 if test -n "$MOZ_SVG"; then
6366   AC_DEFINE(MOZ_SVG)
6369 dnl ========================================================
6370 dnl SMIL
6371 dnl ========================================================
6372 MOZ_SMIL=1
6373 MOZ_ARG_DISABLE_BOOL(smil,
6374 [  --disable-smil          Disable SMIL animation support],
6375     MOZ_SMIL=,
6376     MOZ_SMIL=1 )
6377 # Automatically disable SMIL if SVG is disabled
6378 if test -z "$MOZ_SVG"; then
6379   MOZ_SMIL=
6381 if test -n "$MOZ_SMIL"; then
6382   AC_DEFINE(MOZ_SMIL)
6385 dnl ========================================================
6386 dnl Build Freetype in the tree
6387 dnl ========================================================
6388 MOZ_ARG_ENABLE_BOOL(tree-freetype,
6389 [  --enable-tree-freetype  Enable Tree FreeType],
6390     MOZ_TREE_FREETYPE=1,
6391     MOZ_TREE_FREETYPE= )
6392 if test -n "$MOZ_TREE_FREETYPE"; then
6393    AC_DEFINE(MOZ_TREE_FREETYPE)
6394    AC_SUBST(MOZ_TREE_FREETYPE)
6395    MOZ_ENABLE_CAIRO_FT=1       
6396    FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
6397    FT2_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6398    CAIRO_FT_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6399    FT2_LIBS='$(call EXPAND_LIBNAME_PATH,freetype2,$(LIBXUL_DIST)/lib)'
6400    CAIRO_FT_LIBS='$(call EXPAND_LIBNAME_PATH,freetype2,$(LIBXUL_DIST)/lib)'
6401    AC_DEFINE(HAVE_FT_BITMAP_SIZE_Y_PPEM)
6402    AC_DEFINE(HAVE_FT_GLYPHSLOT_EMBOLDEN)
6403    AC_DEFINE(HAVE_FT_LOAD_SFNT_TABLE)
6404    AC_SUBST(CAIRO_FT_CFLAGS)
6408 dnl ========================================================
6409 dnl Installer
6410 dnl ========================================================
6411 case "$target_os" in
6412     aix*|solaris*|linux*|msvc*|mks*|cygwin*|mingw*|os2*|wince*|winmo*)
6413         MOZ_INSTALLER=1
6414         ;;
6415 esac
6417 MOZ_ARG_DISABLE_BOOL(installer,
6418 [  --disable-installer     Disable building of installer],
6419     MOZ_INSTALLER=,
6420     MOZ_INSTALLER=1)
6421 if test -n "$MOZ_INSTALLER" -a "$OS_ARCH" = "WINNT"; then
6422     # Disable installer for Windows builds that use the new toolkit if the
6423     # required major version and minimum minor version of Unicode NSIS isn't in
6424     # the path.
6425     REQ_NSIS_MAJOR_VER=2
6426     MIN_NSIS_MINOR_VER=33
6427     MOZ_PATH_PROGS(MAKENSISU, $MAKENSISU makensisu-2.46 makensisu makensis)
6428     if test -z "$MAKENSISU" -o "$MAKENSISU" = ":"; then
6429         AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or Unicode NSIS with a major version of $REQ_NSIS_MAJOR_VER and a minimum minor version of $MIN_NSIS_MINOR_VER in your path. To build without the installer reconfigure using --disable-installer.])
6430     fi
6431     changequote(,)
6432     MAKENSISU_VER=`"$MAKENSISU" -version 2>/dev/null | sed -e '/-Unicode/!s/.*//g' -e 's/^v\([0-9]\+\.[0-9]\+\)\-Unicode$/\1/g'`
6433     changequote([,])
6434     if test ! "$MAKENSISU_VER" == ""; then
6435         MAKENSISU_MAJOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $1 }'`
6436         MAKENSISU_MINOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $2 }'`
6437     fi
6438     AC_MSG_CHECKING([for Unicode NSIS with major version == $REQ_NSIS_MAJOR_VER and minor version >= $MIN_NSIS_MINOR_VER])
6439     if test "$MAKENSISU_VER" == "" -o \
6440        ! "$MAKENSISU_MAJOR_VER" == "$REQ_NSIS_MAJOR_VER" -o \
6441        ! "$MAKENSISU_MINOR_VER" -ge $MIN_NSIS_MINOR_VER; then
6442         AC_MSG_RESULT([no])
6443         AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or Unicode NSIS with a major version of $REQ_NSIS_MAJOR_VER and a minimum minor version of $MIN_NSIS_MINOR_VER in your path. To build without the installer reconfigure using --disable-installer.])
6444     fi
6445     AC_MSG_RESULT([yes])
6446     MAKENSISU="${CYGWIN_WRAPPER} $MAKENSISU"
6449 AC_SUBST(MOZ_INSTALLER)
6451 AC_MSG_CHECKING([for tar archiver])
6452 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
6453 if test -z "$TAR"; then
6454     AC_MSG_ERROR([no tar archiver found in \$PATH])
6456 AC_MSG_RESULT([$TAR])
6457 AC_SUBST(TAR)
6459 AC_MSG_CHECKING([for wget])
6460 AC_CHECK_PROGS(WGET, wget, "")
6461 AC_MSG_RESULT([$WGET])
6462 AC_SUBST(WGET)
6464 dnl ========================================================
6465 dnl Updater
6466 dnl ========================================================
6468 MOZ_ARG_DISABLE_BOOL(updater,
6469 [  --disable-updater       Disable building of updater],
6470     MOZ_UPDATER=,
6471     MOZ_UPDATER=1 )
6473 if test -n "$MOZ_UPDATER"; then
6474     AC_DEFINE(MOZ_UPDATER)
6477 # app update channel is 'default' when not supplied.
6478 MOZ_ARG_ENABLE_STRING([update-channel],
6479 [  --enable-update-channel=CHANNEL
6480                           Select application update channel (default=default)],
6481     MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
6483 if test -z "$MOZ_UPDATE_CHANNEL"; then
6484     MOZ_UPDATE_CHANNEL=default
6486 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
6487 AC_SUBST(MOZ_UPDATE_CHANNEL)
6489 # tools/update-packaging is not checked out by default.
6490 MOZ_ARG_ENABLE_BOOL(update-packaging,
6491 [  --enable-update-packaging
6492                           Enable tools/update-packaging],
6493     MOZ_UPDATE_PACKAGING=1,
6494     MOZ_UPDATE_PACKAGING= )
6495 AC_SUBST(MOZ_UPDATE_PACKAGING)
6497 dnl ========================================================
6498 dnl ActiveX
6499 dnl ========================================================
6501 MOZ_ARG_DISABLE_BOOL(xpconnect-idispatch,
6502 [  --disable-xpconnect-idispatch
6503                           Disable building of xpconnect support for IDispatch
6504                           (win32 only)],
6505     XPC_IDISPATCH_SUPPORT=,
6506     XPC_IDISPATCH_SUPPORT=1)
6507 AC_SUBST(XPC_IDISPATCH_SUPPORT)
6509 MOZ_ARG_DISABLE_BOOL(activex,
6510 [  --disable-activex       Disable building of ActiveX control (win32 only)],
6511     MOZ_NO_ACTIVEX_SUPPORT=1,
6512     MOZ_NO_ACTIVEX_SUPPORT= )
6513 AC_SUBST(MOZ_NO_ACTIVEX_SUPPORT)
6515 MOZ_ARG_ENABLE_BOOL(activex-scripting,
6516 [  --enable-activex-scripting
6517                           Enable building of ActiveX scripting support (win32)],
6518     MOZ_ACTIVEX_SCRIPTING_SUPPORT=1,
6519     MOZ_ACTIVEX_SCRIPTING_SUPPORT=)
6520 AC_SUBST(MOZ_ACTIVEX_SCRIPTING_SUPPORT)
6522 if test -n "$MOZ_NO_ACTIVEX_SUPPORT" -a -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT";
6523 then
6524     AC_MSG_ERROR([Cannot enable ActiveX scripting support when ActiveX support is disabled.])
6527 if test "$COMPILE_ENVIRONMENT" = "1"; then
6528 if test -n "$XPC_IDISPATCH_SUPPORT" -o -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
6529 case "$target" in
6530 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
6531     if test "$ac_cv_header_atlbase_h" = "no"; then
6532         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.])
6533     fi
6534     ;;
6535 esac
6539 dnl ========================================================
6540 dnl leaky
6541 dnl ========================================================
6542 MOZ_ARG_ENABLE_BOOL(leaky,
6543 [  --enable-leaky          Build leaky memory tool],
6544     MOZ_LEAKY=1,
6545     MOZ_LEAKY=)
6548 dnl ========================================================
6549 dnl build the tests by default
6550 dnl ========================================================
6551 MOZ_ARG_DISABLE_BOOL(tests,
6552 [  --disable-tests         Do not build test libraries & programs],
6553     ENABLE_TESTS=,
6554     ENABLE_TESTS=1 )
6556 dnl ========================================================
6557 dnl parental controls (for Windows Vista)
6558 dnl ========================================================
6559 MOZ_ARG_DISABLE_BOOL(parental-controls,
6560 [  --disable-parental-controls
6561                           Do not build parental controls],
6562    MOZ_DISABLE_PARENTAL_CONTROLS=1,
6563    MOZ_DISABLE_PARENTAL_CONTROLS=)
6564 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
6565     AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
6568 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
6570 dnl ========================================================
6571 dnl =
6572 dnl = Module specific options
6573 dnl =
6574 dnl ========================================================
6575 MOZ_ARG_HEADER(Individual module options)
6577 dnl ========================================================
6578 dnl = Disable feed handling components
6579 dnl ========================================================
6580 MOZ_ARG_DISABLE_BOOL(feeds,
6581 [  --disable-feeds         Disable feed handling and processing components],
6582     MOZ_FEEDS=,
6583     MOZ_FEEDS=1 )
6584 if test -n "$MOZ_FEEDS"; then
6585     AC_DEFINE(MOZ_FEEDS)
6586 else
6587     if test "$MOZ_BUILD_APP" = "browser"; then
6588         AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
6589     fi
6592 dnl ========================================================
6593 dnl = Enable mozStorage
6594 dnl ========================================================
6595 dnl Implicitly enabled by default if building calendar or places
6596 MOZ_ARG_ENABLE_BOOL(storage,
6597 [  --enable-storage        Enable mozStorage module and related components],
6598     MOZ_STORAGE=1,
6599     MOZ_STORAGE= )
6600 if test -n "$MOZ_STORAGE"; then
6601     AC_DEFINE(MOZ_STORAGE)
6604 dnl ========================================================
6605 dnl Check for sqlite
6606 dnl ========================================================
6608 MOZ_NATIVE_SQLITE=
6609 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6610 [  --enable-system-sqlite  Use system sqlite (located with pkgconfig)],
6611 MOZ_NATIVE_SQLITE=1,
6612 MOZ_NATIVE_SQLITE= )
6614 if test -z "$MOZ_NATIVE_SQLITE"
6615 then
6616     SQLITE_CFLAGS=
6617     SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,mozsqlite3,$(DIST)/lib)'
6618 else
6619     dnl ============================
6620     dnl === SQLite Version check ===
6621     dnl ============================
6622     dnl Check to see if the system SQLite package is new enough.
6623     PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6625     dnl ==================================
6626     dnl === SQLITE_SECURE_DELETE check ===
6627     dnl ==================================
6628     dnl Check to see if the system SQLite package is compiled with
6629     dnl SQLITE_SECURE_DELETE enabled.
6630     AC_MSG_CHECKING(for SQLITE_SECURE_DELETE support in system SQLite)
6631     _SAVE_CFLAGS="$CFLAGS"
6632     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6633     _SAVE_LIBS="$LIBS"
6634     LIBS="$LIBS $SQLITE_LIBS"
6635     AC_CACHE_VAL(ac_cv_sqlite_secure_delete,[
6636         AC_TRY_RUN([
6637             #include "sqlite3.h"
6639             int main(int argc, char **argv){
6640               return !sqlite3_compileoption_used("SQLITE_SECURE_DELETE");
6641             }],
6642             ac_cv_sqlite_secure_delete=yes,
6643             ac_cv_sqlite_secure_delete=no,
6644             ac_cv_sqlite_secure_delete=no
6645         )
6646     ])
6647     AC_MSG_RESULT($ac_cv_sqlite_secure_delete)
6648     CFLAGS="$_SAVE_CFLAGS"
6649     LIBS="$_SAVE_LIBS"
6650     if test "x$ac_cv_sqlite_secure_delete" = "xno"; then
6651         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_SECURE_DELETE.])
6652     fi
6654     dnl ===============================
6655     dnl === SQLITE_THREADSAFE check ===
6656     dnl ===============================
6657     dnl Check to see if the system SQLite package is compiled with
6658     dnl SQLITE_THREADSAFE enabled.
6659     AC_MSG_CHECKING(for SQLITE_THREADSAFE support in system SQLite)
6660     _SAVE_CFLAGS="$CFLAGS"
6661     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6662     _SAVE_LIBS="$LIBS"
6663     LIBS="$LIBS $SQLITE_LIBS"
6664     AC_CACHE_VAL(ac_cv_sqlite_threadsafe,[
6665         AC_TRY_RUN([
6666             #include "sqlite3.h"
6668             int main(int argc, char **argv){
6669               return !sqlite3_compileoption_used("SQLITE_THREADSAFE=1");
6670             }],
6671             ac_cv_sqlite_threadsafe=yes,
6672             ac_cv_sqlite_threadsafe=no,
6673             ac_cv_sqlite_threadsafe=no
6674         )
6675     ])
6676     AC_MSG_RESULT($ac_cv_sqlite_threadsafe)
6677     CFLAGS="$_SAVE_CFLAGS"
6678     LIBS="$_SAVE_LIBS"
6679     if test "x$ac_cv_sqlite_threadsafe" = "xno"; then
6680         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_THREADSAFE.])
6681     fi
6683     dnl ================================
6684     dnl === SQLITE_ENABLE_FTS3 check ===
6685     dnl ================================
6686     dnl check to see if the system SQLite package is compiled with
6687     dnl SQLITE_ENABLE_FTS3 enabled.
6688     AC_MSG_CHECKING(for SQLITE_ENABLE_FTS3 support in system SQLite)
6689     _SAVE_CFLAGS="$CFLAGS"
6690     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6691     _SAVE_LIBS="$LIBS"
6692     LIBS="$LIBS $SQLITE_LIBS"
6693     AC_CACHE_VAL(ac_cv_sqlite_enable_fts3,[
6694         AC_TRY_RUN([
6695             #include "sqlite3.h"
6697             int main(int argc, char **argv){
6698               return !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3");
6699             }],
6700             ac_cv_sqlite_enable_fts3=yes,
6701             ac_cv_sqlite_enable_fts3=no,
6702             ac_cv_sqlite_enable_fts3=no
6703         )
6704     ])
6705     AC_MSG_RESULT($ac_cv_sqlite_enable_fts3)
6706     CFLAGS="$_SAVE_CFLAGS"
6707     LIBS="$_SAVE_LIBS"
6708     if test "x$ac_cv_sqlite_enable_fts3" = "xno"; then
6709         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_FTS3.])
6710     fi
6712     dnl =========================================
6713     dnl === SQLITE_ENABLE_UNLOCK_NOTIFY check ===
6714     dnl =========================================
6715     dnl check to see if the system SQLite package is compiled with
6716     dnl SQLITE_ENABLE_UNLOCK_NOTIFY enabled.
6717     AC_MSG_CHECKING(for SQLITE_ENABLE_UNLOCK_NOTIFY support in system SQLite)
6718     _SAVE_CFLAGS="$CFLAGS"
6719     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6720     _SAVE_LIBS="$LIBS"
6721     LIBS="$LIBS $SQLITE_LIBS"
6722     AC_CACHE_VAL(ac_cv_sqlite_enable_unlock_notify,[
6723         AC_TRY_RUN([
6724             #include "sqlite3.h"
6726             int main(int argc, char **argv){
6727               return !sqlite3_compileoption_used("SQLITE_ENABLE_UNLOCK_NOTIFY");
6728             }],
6729             ac_cv_sqlite_enable_unlock_notify=yes,
6730             ac_cv_sqlite_enable_unlock_notify=no,
6731             ac_cv_sqlite_enable_unlock_notify=no
6732         )
6733     ])
6734     AC_MSG_RESULT($ac_cv_sqlite_enable_unlock_notify)
6735     CFLAGS="$_SAVE_CFLAGS"
6736     LIBS="$_SAVE_LIBS"
6737     if test "x$ac_cv_sqlite_enable_unlock_notify" = "xno"; then
6738         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_UNLOCK_NOTIFY.])
6739     fi
6742 AC_SUBST(MOZ_NATIVE_SQLITE)
6744 dnl ========================================================
6745 dnl = Enable help viewer (off by default)
6746 dnl ========================================================
6747 if test -n "$MOZ_HELP_VIEWER"; then
6748      dnl Do this if defined in confvars.sh
6749      AC_DEFINE(MOZ_HELP_VIEWER)
6752 dnl ========================================================
6753 dnl = Enable safe browsing (anti-phishing)
6754 dnl ========================================================
6755 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6756 [  --enable-safe-browsing  Enable safe browsing (anti-phishing) implementation],
6757     MOZ_SAFE_BROWSING=1,
6758     MOZ_SAFE_BROWSING= )
6759 if test -n "$MOZ_SAFE_BROWSING"; then
6760     AC_DEFINE(MOZ_SAFE_BROWSING)
6762 AC_SUBST(MOZ_SAFE_BROWSING)
6764 dnl ========================================================
6765 dnl = Enable faststart component
6766 dnl ========================================================
6767 MOZ_ARG_ENABLE_BOOL(faststart,
6768 [  --enable-faststart      Enable the faststart component],
6769     MOZ_FASTSTART=1,
6770     MOZ_FASTSTART= )
6771 if test -n "$MOZ_FASTSTART"; then
6772     AC_DEFINE(MOZ_FASTSTART)
6774 AC_SUBST(MOZ_FASTSTART)
6776 dnl ========================================================
6777 dnl = Enable url-classifier
6778 dnl ========================================================
6779 dnl Implicitly enabled by default if building with safe-browsing
6780 if test -n "$MOZ_SAFE_BROWSING"; then
6781     MOZ_URL_CLASSIFIER=1
6783 MOZ_ARG_ENABLE_BOOL(url-classifier,
6784 [  --enable-url-classifier Enable url classifier module],
6785     MOZ_URL_CLASSIFIER=1,
6786     MOZ_URL_CLASSIFIER= )
6787 if test -n "$MOZ_URL_CLASSIFIER"; then
6788     AC_DEFINE(MOZ_URL_CLASSIFIER)
6790 AC_SUBST(MOZ_URL_CLASSIFIER)
6792 dnl ========================================================
6793 dnl = Disable zipwriter
6794 dnl ========================================================
6795 MOZ_ARG_DISABLE_BOOL(zipwriter,
6796 [  --disable-zipwriter     Disable zipwriter component],
6797     MOZ_ZIPWRITER=,
6798     MOZ_ZIPWRITER=1 )
6799 AC_SUBST(MOZ_ZIPWRITER)
6801 dnl ========================================================
6802 dnl = Disable libconic
6803 dnl ========================================================
6804 MOZ_ENABLE_LIBCONIC=1
6805 MOZ_ARG_DISABLE_BOOL(libconic,
6806 [  --disable-libconic      Disable libconic],
6807     MOZ_ENABLE_LIBCONIC=,
6808     MOZ_ENABLE_LIBCONIC=1 )
6810 if test -n "$MOZ_ENABLE_LIBCONIC"; then
6811     PKG_CHECK_MODULES(LIBCONIC, conic,
6812                       MOZ_ENABLE_LIBCONIC=1,
6813                       MOZ_ENABLE_LIBCONIC=)
6815 if test "$MOZ_ENABLE_LIBCONIC"; then
6816     AC_DEFINE(MOZ_ENABLE_LIBCONIC)
6819 AC_SUBST(MOZ_ENABLE_LIBCONIC)
6820 AC_SUBST(LIBCONIC_CFLAGS)
6821 AC_SUBST(LIBCONIC_LIBS)
6823 dnl ========================================================
6824 dnl = Maemo checks
6825 dnl ========================================================
6827 MAEMO_SDK_TARGET_VER=-1
6829 MOZ_ARG_WITH_STRING(maemo-version,
6830 [  --with-maemo-version=MAEMO_SDK_TARGET_VER
6831                           Maemo SDK Version],
6832   MAEMO_SDK_TARGET_VER=$withval)
6834 case "$MAEMO_SDK_TARGET_VER" in
6836     MOZ_PLATFORM_MAEMO=5
6837     ;;
6840     MOZ_PLATFORM_MAEMO=6
6841     ;;
6844     dnl We aren't compiling for Maemo, move on.
6845     ;;
6847     AC_MSG_ERROR([Unknown Maemo Version.  Try setting --with-maemo-version to 5 or 6.])
6848     ;;
6849 esac
6851 if test $MOZ_PLATFORM_MAEMO; then
6852    AC_DEFINE_UNQUOTED([MOZ_PLATFORM_MAEMO], $MOZ_PLATFORM_MAEMO)
6854    if test -z "$MOZ_ENABLE_DBUS"; then
6855        AC_MSG_ERROR([DBus is required when building for Maemo])
6856    fi
6858    MOZ_GFX_OPTIMIZE_MOBILE=1
6859    MOZ_WEBGL_GLX=
6860    MOZ_MAEMO_LIBLOCATION=
6862    if test $MOZ_PLATFORM_MAEMO = 5; then
6863       dnl if we have Xcomposite we should also have Xdamage and Xfixes
6864       AC_CHECK_HEADERS([X11/extensions/Xdamage.h], [],
6865                        [AC_MSG_ERROR([Couldn't find X11/extensions/Xdamage.h which is required for composited plugins.])])
6866       AC_CHECK_LIB(Xcomposite, XCompositeRedirectWindow, [XCOMPOSITE_LIBS="-lXcomposite -lXdamage -lXfixes"],
6867                    [MISSING_X="$MISSING_X -lXcomposite"], $XLIBS)
6869       AC_SUBST(XCOMPOSITE_LIBS)
6871       PKG_CHECK_MODULES(LIBHILDONMIME,libhildonmime, _LIB_FOUND=1, _LIB_FOUND=)
6872       MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONMIME_LIBS"
6873       MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONMIME_CFLAGS"
6874       if test -z "$_LIB_FOUND"; then
6875          AC_MSG_ERROR([Hildon Mime is required when building for Maemo])
6876       fi
6879       PKG_CHECK_MODULES(LIBOSSO,libosso, _LIB_FOUND=1, _LIB_FOUND=)
6880       MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBOSSO_LIBS"
6881       MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBOSSO_CFLAGS"
6882       if test -z "$_LIB_FOUND"; then
6883          AC_MSG_ERROR([LibOSSO is required when building for Maemo])
6884       fi
6886       PKG_CHECK_MODULES(LIBHILDONFM,hildon-fm-2, _LIB_FOUND=1, _LIB_FOUND=)
6887       MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONFM_LIBS"
6888       MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONFM_CFLAGS"
6889       if test -z "$_LIB_FOUND"; then
6890          AC_MSG_ERROR([Hildon FM-2 is required when building for Maemo])
6891       fi
6893    fi
6894    if test $MOZ_PLATFORM_MAEMO = 6; then
6895       PKG_CHECK_MODULES(LIBCONTENTACTION, contentaction-0.1, _LIB_FOUND=1, _LIB_FOUND=)
6896       MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBCONTENTACTION_LIBS"
6897       MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBCONTENTACTION_CFLAGS"
6898       if test -z "$_LIB_FOUND"; then
6899          AC_MSG_ERROR([libcontentaction is required when build for Maemo])
6900       fi
6901      
6902      MOZ_THUMB2=1
6903      PKG_CHECK_MODULES(MOZ_MEEGOTOUCH, meegotouchcore)
6904      MOZ_ENABLE_MEEGOTOUCH=1
6905      AC_DEFINE(MOZ_ENABLE_MEEGOTOUCH)
6906      MOZ_QT_CFLAGS="$MOZ_MEEGOTOUCH_CFLAGS $MOZ_QT_CFLAGS"
6907      MOZ_QT_LIBS="$MOZ_MEEGOTOUCH_LIBS $MOZ_QT_LIBS"
6908    fi
6910    PKG_CHECK_MODULES(LIBLOCATION,liblocation, _LIB_FOUND=1, _LIB_FOUND=)
6911    MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBLOCATION_LIBS"
6912    MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBLOCATION_CFLAGS"
6913    if test "$_LIB_FOUND"; then
6914       MOZ_MAEMO_LIBLOCATION=1
6915       AC_DEFINE(MOZ_MAEMO_LIBLOCATION)
6916    else
6917       AC_MSG_WARN([Cannot liblocation-dev. Disabling Maemo geolocation.])
6918    fi
6919    AC_SUBST(MOZ_MAEMO_LIBLOCATION)
6921    AC_SUBST(MOZ_PLATFORM_MAEMO_LIBS)
6922    AC_SUBST(MOZ_PLATFORM_MAEMO_CFLAGS)
6925 dnl ========================================================
6926 dnl = Enable building the Thumb2 instruction set
6927 dnl ========================================================
6928 MOZ_ARG_ENABLE_BOOL(thumb2,
6929  [  --enable-thumb2         Enable Thumb2 instruction set],
6930     MOZ_THUMB2=1,
6931     MOZ_THUMB2=)
6933 if test -n "$MOZ_THUMB2"; then
6934   case "$target_cpu" in
6935     arm*)
6936       if test "$GNU_CC"; then
6937         CFLAGS="$CFLAGS -march=armv7-a -mthumb -Wa, -march=armv7-a -Wa, -mthumb"
6938         CXXFLAGS="$CXXFLAGS -march=armv7-a -mthumb -Wa, -march=armv7-a -Wa, -mthumb"
6939         ASFLAGS="$ASFLAGS -march=armv7-a -mthumb"
6940       else
6941         AC_MSG_ERROR([--enable-thumb2 is not supported for non-GNU toolchains])
6942       fi
6943     ;;
6944     *)
6945       AC_MSG_ERROR([--enable-thumb2 is not supported for non-ARM CPU architectures])
6946     ;;
6947   esac
6950 dnl ========================================================
6951 dnl = faststripe theme
6952 dnl ========================================================
6953 MOZ_ARG_ENABLE_BOOL(faststripe,
6954 [  --enable-faststripe     Use faststripe theme],
6955     MOZ_THEME_FASTSTRIPE=1,
6956     MOZ_THEME_FASTSTRIPE= )
6957 AC_SUBST(MOZ_THEME_FASTSTRIPE)
6959 dnl ========================================================
6960 dnl =
6961 dnl = Feature options that require extra sources to be pulled
6962 dnl =
6963 dnl ========================================================
6964 dnl MOZ_ARG_HEADER(Features that require extra sources)
6966 dnl ========================================================
6967 dnl =
6968 dnl = Debugging Options
6969 dnl = 
6970 dnl ========================================================
6971 MOZ_ARG_HEADER(Debugging and Optimizations)
6973 dnl ========================================================
6974 dnl = Disable building with debug info.
6975 dnl = Debugging is OFF by default
6976 dnl ========================================================
6977 if test -z "$MOZ_DEBUG_FLAGS"; then
6978   MOZ_DEBUG_FLAGS="-g"
6981 MOZ_ARG_ENABLE_STRING(debug,
6982 [  --enable-debug[=DBG]    Enable building with developer debug info
6983                            (using compiler flags DBG)],
6984 [ if test "$enableval" != "no"; then
6985     MOZ_DEBUG=1
6986     if test -n "$enableval" -a "$enableval" != "yes"; then
6987         MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6988         _MOZ_DEBUG_FLAGS_SET=1
6989     fi
6990   else
6991     MOZ_DEBUG=
6992   fi ],
6993   MOZ_DEBUG=)
6995 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG -DTRACING"
6996 MOZ_ARG_WITH_STRING(debug-label,
6997 [  --with-debug-label=LABELS
6998                           Define DEBUG_<value> for each comma-separated
6999                           value given.],
7000 [ for option in `echo $withval | sed 's/,/ /g'`; do
7001     MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${option}"
7002 done])
7004 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
7006 if test -n "$MOZ_DEBUG"; then
7007     AC_MSG_CHECKING([for valid debug flags])
7008     _SAVE_CFLAGS=$CFLAGS
7009     CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
7010     AC_TRY_COMPILE([#include <stdio.h>], 
7011         [printf("Hello World\n");],
7012         _results=yes,
7013         _results=no)
7014     AC_MSG_RESULT([$_results])
7015     if test "$_results" = "no"; then
7016         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
7017     fi
7018     CFLAGS=$_SAVE_CFLAGS
7021 dnl ========================================================
7022 dnl enable mobile optimizations
7023 dnl ========================================================
7024 MOZ_ARG_ENABLE_BOOL(mobile-optimize,
7025 [  --enable-mobile-optimize
7026                           Enable mobile optimizations],
7027     MOZ_GFX_OPTIMIZE_MOBILE=1)
7029 AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
7031 if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
7032     AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
7035 dnl ========================================================
7036 dnl = Enable code optimization. ON by default.
7037 dnl ========================================================
7038 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
7039         MOZ_OPTIMIZE_FLAGS="-O"
7042 MOZ_ARG_ENABLE_STRING(optimize,
7043 [  --disable-optimize      Disable compiler optimization
7044   --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
7045 [ if test "$enableval" != "no"; then
7046     MOZ_OPTIMIZE=1
7047     if test -n "$enableval" -a "$enableval" != "yes"; then
7048         MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
7049         MOZ_OPTIMIZE=2
7050     fi
7051 else
7052     MOZ_OPTIMIZE=
7053 fi ], MOZ_OPTIMIZE=1)
7055 if test "$COMPILE_ENVIRONMENT"; then
7056 if test -n "$MOZ_OPTIMIZE"; then
7057     AC_MSG_CHECKING([for valid optimization flags])
7058     _SAVE_CFLAGS=$CFLAGS
7059     CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
7060     AC_TRY_COMPILE([#include <stdio.h>], 
7061         [printf("Hello World\n");],
7062         _results=yes,
7063         _results=no)
7064     AC_MSG_RESULT([$_results])
7065     if test "$_results" = "no"; then
7066         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
7067     fi
7068     CFLAGS=$_SAVE_CFLAGS
7070 fi # COMPILE_ENVIRONMENT
7072 AC_SUBST(MOZ_OPTIMIZE)
7073 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
7074 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
7075 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
7077 dnl ========================================================
7078 dnl = (Deprecated) generation of debugger info for specific modules
7079 dnl ========================================================
7080 MOZ_ARG_ENABLE_STRING(debugger-info-modules,
7081 [  --enable-debugger-info-modules
7082                           Enable/disable debugger info for specific modules],
7083 [ if test "$enableval" != "no"; then
7084     AC_MSG_WARN([--enable-debugger-info-modules is deprecated, use --enable-debug-symbols instead])
7085     MOZ_DEBUG_SYMBOLS=1
7086   fi ])
7088 dnl ========================================================
7089 dnl = Enable generation of debug symbols
7090 dnl ========================================================
7091 MOZ_ARG_ENABLE_STRING(debug-symbols,
7092 [  --enable-debug-symbols[=DBG]
7093                           Enable debugging symbols (using compiler flags DBG)],
7094 [ if test "$enableval" != "no"; then
7095       MOZ_DEBUG_SYMBOLS=1
7096       if test -n "$enableval" -a "$enableval" != "yes"; then
7097           if test -z "$_MOZ_DEBUG_FLAGS_SET"; then
7098               MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
7099           else
7100               AC_MSG_ERROR([--enable-debug-symbols flags cannot be used with --enable-debug flags])
7101           fi
7102       fi
7103   fi ])
7105 if test -n "$MOZ_DEBUG" -o -n "$MOZ_DEBUG_SYMBOLS"; then
7106     AC_DEFINE(MOZ_DEBUG_SYMBOLS)
7107     export MOZ_DEBUG_SYMBOLS
7110 dnl ========================================================
7111 dnl = Disable any treating of compile warnings as errors
7112 dnl ========================================================
7113 MOZ_ARG_DISABLE_BOOL(warnings-as-errors,
7114 [  --disable-warnings-as-errors
7115                           Disable treating of warnings as errors],
7116     MOZ_DISABLE_WARNINGS_AS_ERRORS=1,
7117     MOZ_DISABLE_WARNINGS_AS_ERRORS= )
7118 if test "$MOZ_DISABLE_WARNINGS_AS_ERRORS"; then
7119    WARNINGS_AS_ERRORS=''
7122 dnl ========================================================
7123 dnl = Disable runtime logging checks
7124 dnl ========================================================
7125 MOZ_ARG_DISABLE_BOOL(logging,
7126 [  --disable-logging       Disable logging facilities],
7127     NS_DISABLE_LOGGING=1,
7128     NS_DISABLE_LOGGING= )
7129 if test "$NS_DISABLE_LOGGING"; then
7130     AC_DEFINE(NS_DISABLE_LOGGING)
7131 else
7132     AC_DEFINE(MOZ_LOGGING)
7135 dnl ========================================================
7136 dnl = This will enable logging of addref, release, ctor, dtor.
7137 dnl ========================================================
7138 _ENABLE_LOGREFCNT=42
7139 MOZ_ARG_ENABLE_BOOL(logrefcnt,
7140 [  --enable-logrefcnt      Enable logging of refcounts (default=debug) ],
7141     _ENABLE_LOGREFCNT=1,
7142     _ENABLE_LOGREFCNT= )
7143 if test "$_ENABLE_LOGREFCNT" = "1"; then
7144     AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
7145 elif test -z "$_ENABLE_LOGREFCNT"; then
7146     AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
7149 dnl ========================================================
7150 dnl = Enable trace malloc
7151 dnl ========================================================
7152 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
7153 MOZ_ARG_ENABLE_BOOL(trace-malloc,
7154 [  --enable-trace-malloc   Enable malloc tracing],
7155     NS_TRACE_MALLOC=1,
7156     NS_TRACE_MALLOC= )
7157 if test "$NS_TRACE_MALLOC"; then
7158   # Please, Mr. Linker Man, don't take away our symbol names
7159   MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7160   USE_ELF_DYNSTR_GC=
7161   AC_DEFINE(NS_TRACE_MALLOC)
7163 AC_SUBST(NS_TRACE_MALLOC)
7165 dnl ========================================================
7166 dnl = Enable jemalloc
7167 dnl ========================================================
7168 MOZ_ARG_ENABLE_BOOL(jemalloc,
7169 [  --enable-jemalloc       Replace memory allocator with jemalloc],
7170     MOZ_MEMORY=1,
7171     MOZ_MEMORY=)
7173 if test "$NS_TRACE_MALLOC"; then
7174     MOZ_MEMORY=
7177 if test "$MOZ_MEMORY"; then
7179   dnl Don't try to run compiler tests on Windows  
7180   if test "$OS_ARCH" = "WINNT"; then
7181     if test -z "$HAVE_64BIT_OS"; then
7182       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7183     else
7184       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7185     fi
7186   else
7187     AC_CHECK_SIZEOF([int *], [4])
7188     case "${ac_cv_sizeof_int_p}" in
7189     4)
7190       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7191       ;;
7192     8)
7193       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7194       ;;
7195     *)
7196       AC_MSG_ERROR([Unexpected pointer size])
7197       ;;
7198     esac
7199   fi
7201   AC_DEFINE(MOZ_MEMORY)
7202   if test "x$MOZ_DEBUG" = "x1"; then
7203     AC_DEFINE(MOZ_MEMORY_DEBUG)
7204   fi
7205   dnl The generic feature tests that determine how to compute ncpus are long and
7206   dnl complicated.  Therefore, simply define special cpp variables for the
7207   dnl platforms we have special knowledge of.
7208   case "${target}" in
7209   *-darwin*)
7210     AC_DEFINE(MOZ_MEMORY_DARWIN)
7211     ;;
7212   *-*freebsd*)
7213     AC_DEFINE(MOZ_MEMORY_BSD)
7214     ;;
7215   *-*linux*)
7216     AC_DEFINE(MOZ_MEMORY_LINUX)
7217     ;;
7218   *-netbsd*)
7219     AC_DEFINE(MOZ_MEMORY_BSD)
7220     ;;
7221   *-solaris*)
7222     AC_DEFINE(MOZ_MEMORY_SOLARIS)
7223     ;;
7224   *-msvc*|*-mks*|*-cygwin*|*-mingw*)
7225     AC_DEFINE(MOZ_MEMORY_WINDOWS)
7226     dnl This is sort of awful. Will revisit if we add support for more versions
7227     if test "$CC_VERSION" != "14.00.50727.762" -a "$CC_VERSION" != "15.00.30729.01"; then
7228         AC_MSG_ERROR([Building jemalloc requires exactly Visual C++ 2005 SP1 or 2008 SP1 currently.])
7229     fi
7230     if test -z "$WIN32_CRT_SRC_DIR"; then
7231       if test -z "$VCINSTALLDIR" -o ! -d "$VCINSTALLDIR"; then
7232         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).])
7233       else
7234         WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src"
7235       fi
7236     fi
7237     dnl cpu check
7238     case "${target_cpu}" in
7239     i*86)
7240       MOZ_CRT_CPU_ARCH=intel
7241       ;;
7242     x86_64)
7243       MOZ_CRT_CPU_ARCH=amd64
7244       ;;
7245     *)
7246       AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7247       ;;
7248     esac
7250     AC_SUBST(MOZ_CRT_CPU_ARCH)
7252     if test ! -d "$WIN32_CRT_SRC_DIR"; then
7253       AC_MSG_ERROR([Invalid Win32 CRT source directory: ${WIN32_CRT_SRC_DIR}])
7254     fi
7255     WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd -W`
7256     _objdir_win=`pwd -W`
7257     WIN32_CUSTOM_CRT_DIR="$_objdir_win/memory/jemalloc/crtsrc/build/$MOZ_CRT_CPU_ARCH"
7258     MOZ_MEMORY_LDFLAGS="-MANIFEST:NO -LIBPATH:\"$WIN32_CUSTOM_CRT_DIR\" -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt19 -DEFAULTLIB:mozcpp19"
7259     dnl Also pass this to NSPR/NSS
7260     DLLFLAGS="$DLLFLAGS $MOZ_MEMORY_LDFLAGS"
7261     export DLLFLAGS
7262     ;;
7263   *-*wince)
7264     AC_DEFINE(MOZ_MEMORY_WINCE)
7265     AC_DEFINE(MOZ_MEMORY_WINDOWS)
7266     if test -z "$WINCE_WINDOWS_MOBILE"; then
7267       AC_DEFINE(MOZ_MEMORY_WINCE6)
7268     fi
7269     ;;
7270   *-*winmo)
7271     AC_DEFINE(MOZ_MEMORY_WINCE)
7272     AC_DEFINE(MOZ_MEMORY_WINDOWS)
7273     ;;
7274   *-android*)
7275     AC_DEFINE(MOZ_MEMORY_LINUX)
7276     AC_DEFINE(MOZ_MEMORY_ANDROID)
7277     _WRAP_MALLOC=1
7278     export WRAP_MALLOC_LIB="-L$_objdir/dist/lib -lmozalloc"
7279     ;;
7280   *)
7281     AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7282     ;;
7283   esac
7285   if test "$OS_ARCH" != "Darwin"; then
7286     dnl NB: this must be kept in sync with jemalloc.h
7287     AC_DEFINE(HAVE_JEMALLOC_VALLOC)
7288     AC_DEFINE(HAVE_JEMALLOC_POSIX_MEMALIGN)
7289     AC_DEFINE(HAVE_JEMALLOC_MEMALIGN)
7290   fi
7292 AC_SUBST(MOZ_MEMORY)
7293 AC_SUBST(MOZ_MEMORY_LDFLAGS)
7294 AC_SUBST(WIN32_CRT_SRC_DIR)
7295 dnl Need to set this for make because NSS doesn't have configure
7296 AC_SUBST(DLLFLAGS)
7298 dnl ========================================================
7299 dnl = Use malloc wrapper lib
7300 dnl ========================================================
7301 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
7302 [  --enable-wrap-malloc    Wrap malloc calls (gnu linker only)],
7303     _WRAP_MALLOC=1,
7304     _WRAP_MALLOC= )
7306 if test -n "$_WRAP_MALLOC"; then
7307     if test "$GNU_CC"; then
7308     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 -Wl,--wrap -Wl,posix_memalign"
7309     MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) $(WRAP_MALLOC_LIB) -o $@'
7310     fi
7313 dnl ========================================================
7314 dnl = Location of malloc wrapper lib
7315 dnl ========================================================
7316 MOZ_ARG_WITH_STRING(wrap-malloc,
7317 [  --with-wrap-malloc=DIR  Location of malloc wrapper library],
7318     WRAP_MALLOC_LIB=$withval)
7320 dnl ========================================================
7321 dnl = Use JS Call tracing
7322 dnl ========================================================
7323 MOZ_ARG_ENABLE_BOOL(trace-jscalls,
7324 [  --enable-trace-jscalls  Enable JS call enter/exit callback (default=no)],
7325     MOZ_TRACE_JSCALLS=1,
7326     MOZ_TRACE_JSCALLS= )
7327 if test -n "$MOZ_TRACE_JSCALLS"; then
7328     AC_DEFINE(MOZ_TRACE_JSCALLS)
7331 dnl ========================================================
7332 dnl = Use TraceVis
7333 dnl ========================================================
7334 MOZ_ARG_ENABLE_BOOL(tracevis,
7335 [  --enable-tracevis       Enable TraceVis tracing tool (default=no)],
7336     MOZ_TRACEVIS=1,
7337     MOZ_TRACEVIS= )
7338 if test -n "$MOZ_TRACEVIS"; then
7339     AC_DEFINE(MOZ_TRACEVIS)
7342 dnl ========================================================
7343 dnl = Use GCTimer
7344 dnl ========================================================
7345 MOZ_ARG_ENABLE_BOOL(gctimer,
7346 [  --enable-gctimer        Enable GC timer (default=no)],
7347     MOZ_GCTIMER=1,
7348     MOZ_GCTIMER= )
7349 if test -n "$MOZ_GCTIMER"; then
7350     AC_DEFINE(MOZ_GCTIMER)
7353 dnl ========================================================
7354 dnl = Use Valgrind
7355 dnl ========================================================
7356 MOZ_ARG_ENABLE_BOOL(valgrind,
7357 [  --enable-valgrind       Enable Valgrind integration hooks (default=no)],
7358     MOZ_VALGRIND=1,
7359     MOZ_VALGRIND= )
7360 if test -n "$MOZ_VALGRIND"; then
7361     AC_CHECK_HEADER([valgrind/valgrind.h], [],
7362         AC_MSG_ERROR(
7363             [--enable-valgrind specified but Valgrind is not installed]))
7364     AC_DEFINE(MOZ_VALGRIND)
7367 dnl ========================================================
7368 dnl jprof
7369 dnl ========================================================
7370 MOZ_ARG_ENABLE_BOOL(jprof,
7371 [  --enable-jprof          Enable jprof profiling tool (needs mozilla/tools/jprof)],
7372     MOZ_JPROF=1,
7373     MOZ_JPROF= )
7374 if test -n "$MOZ_JPROF"; then
7375     AC_DEFINE(MOZ_JPROF)
7378 dnl ========================================================
7379 dnl shark
7380 dnl ========================================================
7381 MOZ_ARG_ENABLE_BOOL(shark,
7382 [  --enable-shark          Enable shark remote profiling (needs CHUD framework)],
7383     MOZ_SHARK=1,
7384     MOZ_SHARK= )
7385 if test -n "$MOZ_SHARK"; then
7386     AC_DEFINE(MOZ_SHARK)
7389 dnl ========================================================
7390 dnl callgrind
7391 dnl ========================================================
7392 MOZ_ARG_ENABLE_BOOL(callgrind,
7393 [  --enable-callgrind      Enable callgrind profiling],
7394     MOZ_CALLGRIND=1,
7395     MOZ_CALLGRIND= )
7396 if test -n "$MOZ_CALLGRIND"; then
7397     AC_DEFINE(MOZ_CALLGRIND)
7400 dnl ========================================================
7401 dnl vtune
7402 dnl ========================================================
7403 MOZ_ARG_ENABLE_BOOL(vtune,
7404 [  --enable-vtune          Enable vtune profiling],
7405     MOZ_VTUNE=1,
7406     MOZ_VTUNE= )
7407 if test -n "$MOZ_VTUNE"; then
7408     AC_DEFINE(MOZ_VTUNE)
7411 dnl ========================================================
7412 dnl Zealous JavaScript GC
7413 dnl ========================================================
7414 MOZ_ARG_ENABLE_BOOL(gczeal,
7415 [  --enable-gczeal         Enable zealous JavaScript GCing],
7416     JS_GC_ZEAL=1,
7417     JS_GC_ZEAL= )
7418 if test -n "$JS_GC_ZEAL"; then
7419     AC_DEFINE(JS_GC_ZEAL)
7422 dnl ======================================================
7423 dnl = Enable compiling with ccache
7424 dnl ======================================================
7425 MOZ_ARG_WITH_STRING(ccache,
7426 [  --with-ccache[=path/to/ccache]
7427                           Enable compiling with ccache],
7428     CCACHE=$withval, CCACHE="no")
7430 if test "$CCACHE" != "no"; then
7431     if test -z "$CCACHE" -o "$CCACHE" = "yes"; then
7432         CCACHE=
7433     else
7434         if test ! -e "$CCACHE"; then
7435             AC_MSG_ERROR([$CCACHE not found])
7436         fi
7437     fi
7438     MOZ_PATH_PROGS(CCACHE, $CCACHE ccache)
7439     if test -z "$CCACHE" -o "$CCACHE" = ":"; then
7440         AC_MSG_ERROR([ccache not found])
7441     elif test -x "$CCACHE"; then
7442         CC="$CCACHE $CC"
7443         CXX="$CCACHE $CXX"
7444     else
7445         AC_MSG_ERROR([$CCACHE is not executable])
7446     fi
7449 dnl ========================================================
7450 dnl = Enable static checking using gcc-dehydra
7451 dnl ========================================================
7453 MOZ_ARG_WITH_STRING(static-checking,
7454 [  --with-static-checking=path/to/gcc_dehydra.so
7455                           Enable static checking of code using GCC-dehydra],
7456     DEHYDRA_PATH=$withval,
7457     DEHYDRA_PATH= )
7459 if test -n "$DEHYDRA_PATH"; then
7460     if test ! -f "$DEHYDRA_PATH"; then
7461         AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
7462     fi
7463     AC_DEFINE(NS_STATIC_CHECKING)
7465 AC_SUBST(DEHYDRA_PATH)
7467 dnl ========================================================
7468 dnl = Enable stripping of libs & executables
7469 dnl ========================================================
7470 MOZ_ARG_ENABLE_BOOL(strip,
7471 [  --enable-strip          Enable stripping of libs & executables ],
7472     ENABLE_STRIP=1,
7473     ENABLE_STRIP= )
7475 dnl ========================================================
7476 dnl = Enable stripping of libs & executables when packaging
7477 dnl ========================================================
7478 MOZ_ARG_ENABLE_BOOL(install-strip,
7479 [  --enable-install-strip  Enable stripping of libs & executables when packaging ],
7480     PKG_SKIP_STRIP= ,
7481     PKG_SKIP_STRIP=1)
7483 dnl ========================================================
7484 dnl = --enable-elf-dynstr-gc
7485 dnl ========================================================
7486 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
7487 [  --enable-elf-dynstr-gc  Enable elf dynstr garbage collector (opt builds only)],
7488     USE_ELF_DYNSTR_GC=1,
7489     USE_ELF_DYNSTR_GC= )
7491 dnl ========================================================
7492 dnl = 
7493 dnl = Profiling and Instrumenting
7494 dnl = 
7495 dnl ========================================================
7496 MOZ_ARG_HEADER(Profiling and Instrumenting)
7498 dnl ========================================================
7499 dnl = Enable timeline service, which provides lightweight
7500 dnl = instrumentation of mozilla for performance measurement.
7501 dnl = Timeline is off by default.
7502 dnl ========================================================
7503 MOZ_ARG_ENABLE_BOOL(timeline,
7504 [  --enable-timeline       Enable timeline services ],
7505     MOZ_TIMELINE=1,
7506     MOZ_TIMELINE= )
7507 if test -n "$MOZ_TIMELINE"; then
7508     AC_DEFINE(MOZ_TIMELINE)
7511 dnl ========================================================
7512 dnl = Enable NS_FUNCTION_TIMER, which provides Function 
7513 dnl = timing for identifying code bottlenecks 
7514 dnl = NS_FUNCTION_TIMER is off by default.
7515 dnl ========================================================
7516 MOZ_ARG_ENABLE_BOOL(functiontimer,
7517 [  --enable-functiontimer  Enable NS_FUNCTION_TIMER ],
7518     NS_FUNCTION_TIMER=1,
7519     NS_FUNCTION_TIMER= )
7520 if test -n "$NS_FUNCTION_TIMER"; then
7521     AC_DEFINE(NS_FUNCTION_TIMER)
7524 dnl ========================================================
7525 dnl Turn on reflow counting
7526 dnl ========================================================
7527 MOZ_ARG_ENABLE_BOOL(reflow-perf,
7528 [  --enable-reflow-perf    Enable reflow performance tracing],
7529     MOZ_REFLOW_PERF=1,
7530     MOZ_REFLOW_PERF= )
7531 if test -n "$MOZ_REFLOW_PERF"; then
7532     AC_DEFINE(MOZ_REFLOW_PERF)
7535 dnl ========================================================
7536 dnl Enable code size metrics.
7537 dnl ========================================================
7538 MOZ_ARG_ENABLE_BOOL(codesighs,
7539 [  --enable-codesighs      Enable code size analysis tools],
7540     _ENABLE_CODESIGHS=1,
7541     _ENABLE_CODESIGHS= )
7542 if test -n "$_ENABLE_CODESIGHS"; then
7543     if test -d $srcdir/tools/codesighs; then 
7544         MOZ_MAPINFO=1
7545     else
7546         AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
7547     fi
7550 dnl ========================================================
7551 dnl = Support for Quantify (Windows)
7552 dnl ========================================================
7553 MOZ_ARG_ENABLE_BOOL(quantify,
7554 [  --enable-quantify       Enable Quantify support (Windows only) ],
7555     MOZ_QUANTIFY=1,
7556     MOZ_QUANTIFY= )
7558 dnl ========================================================
7559 dnl = Support for demangling undefined symbols
7560 dnl ========================================================
7561 if test -z "$SKIP_LIBRARY_CHECKS"; then
7562     AC_LANG_SAVE
7563     AC_LANG_CPLUSPLUS
7564     AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
7565     AC_LANG_RESTORE
7568 # Demangle only for debug or trace-malloc builds
7569 MOZ_DEMANGLE_SYMBOLS=
7570 if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
7571     MOZ_DEMANGLE_SYMBOLS=1
7572     AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
7574 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
7576 dnl ========================================================
7577 dnl = Support for gcc stack unwinding (from gcc 3.3)
7578 dnl ========================================================
7579 if test "$HAVE_GCC3_ABI" -a -z "$SKIP_LIBRARY_CHECKS"; then
7580     AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
7583 dnl ========================================================
7584 dnl =
7585 dnl = Misc. Options
7586 dnl = 
7587 dnl ========================================================
7588 MOZ_ARG_HEADER(Misc. Options)
7590 dnl ========================================================
7591 dnl update xterm title
7592 dnl ========================================================
7593 MOZ_ARG_ENABLE_BOOL(xterm-updates,
7594 [  --enable-xterm-updates  Update XTERM titles with current command.],
7595     MOZ_UPDATE_XTERM=1,
7596     MOZ_UPDATE_XTERM= )
7598 dnl =========================================================
7599 dnl = Chrome format
7600 dnl =========================================================
7601 MOZ_ARG_ENABLE_STRING([chrome-format],
7602 [  --enable-chrome-format=jar|flat|both|symlink|omni
7603                           Select FORMAT of chrome files (default=jar)],
7604     MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
7606 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
7607     MOZ_CHROME_FILE_FORMAT=jar
7610 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" && 
7611     test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
7612     test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
7613     test "$MOZ_CHROME_FILE_FORMAT" != "both" &&
7614     test "$MOZ_CHROME_FILE_FORMAT" != "omni"; then
7615     AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, symlink, or omni])
7618 dnl =========================================================
7619 dnl Omnijar packaging (bug 552121)
7620 dnl =========================================================
7621 dnl Omnijar packaging is compatible with flat packaging.
7622 dnl In unpackaged builds, omnijar looks for files as if
7623 dnl things were flat packaged. After packaging, all files
7624 dnl are loaded from a single jar. MOZ_CHROME_FILE_FORMAT
7625 dnl is set to flat since putting files into jars is only
7626 dnl done during packaging with omnijar.
7627 if test "$MOZ_CHROME_FILE_FORMAT" = "omni"; then
7628     MOZ_OMNIJAR=1
7629     AC_DEFINE(MOZ_OMNIJAR)
7630     MOZ_CHROME_FILE_FORMAT=flat
7631 elif test "$MOZ_CHROME_FILE_FORMAT" = "jar"; then
7632     AC_DEFINE(MOZ_CHROME_FILE_FORMAT_JAR)
7635 AC_SUBST(MOZ_OMNIJAR)
7637 dnl ========================================================
7638 dnl = Define default location for MOZILLA_FIVE_HOME
7639 dnl ========================================================
7640 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
7641 [  --with-default-mozilla-five-home
7642                           Set the default value for MOZILLA_FIVE_HOME],
7643 [ val=`echo $withval`
7644   AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
7646 dnl ========================================================
7647 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
7648 dnl ========================================================
7649 MOZ_ARG_WITH_STRING(user-appdir,
7650 [  --with-user-appdir=DIR  Set user-specific appdir (default=.mozilla)],
7651 [ val=`echo $withval`
7652 if echo "$val" | grep "\/" >/dev/null; then
7653     AC_MSG_ERROR("Homedir must be single relative path.")
7654 else 
7655     MOZ_USER_DIR="$val"
7656 fi])
7658 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
7660 dnl ========================================================
7661 dnl = Doxygen configuration
7662 dnl ========================================================
7663 dnl Use commas to specify multiple dirs to this arg
7664 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
7665 MOZ_ARG_WITH_STRING(doc-input-dirs,
7666 [  --with-doc-input-dirs=DIRS
7667                           Header/idl dirs to create docs from],
7668 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7669 AC_SUBST(MOZ_DOC_INPUT_DIRS)
7671 dnl Use commas to specify multiple dirs to this arg
7672 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
7673 MOZ_ARG_WITH_STRING(doc-include-dirs,
7674 [  --with-doc-include-dirs=DIRS  
7675                           Include dirs to preprocess doc headers],
7676 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7677 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
7679 MOZ_DOC_OUTPUT_DIR='./dist/docs'
7680 MOZ_ARG_WITH_STRING(doc-output-dir,
7681 [  --with-doc-output-dir=DIR
7682                           Dir to generate docs into],
7683 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
7684 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
7686 if test -z "$SKIP_COMPILER_CHECKS"; then
7687 dnl ========================================================
7688 dnl =
7689 dnl = Compiler Options
7690 dnl = 
7691 dnl ========================================================
7692 MOZ_ARG_HEADER(Compiler Options)
7694 dnl ========================================================
7695 dnl Check for gcc -pipe support
7696 dnl ========================================================
7697 AC_MSG_CHECKING([for gcc -pipe support])
7698 if test -n "$GNU_CC" -a -n "$GNU_CXX" -a -n "$GNU_AS"; then
7699     echo '#include <stdio.h>' > dummy-hello.c
7700     echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
7701     ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
7702     cat dummy-hello.s 2> /dev/null | ${AS_BIN} -o dummy-hello.S - 2>&5
7703     if test $? = 0; then
7704         _res_as_stdin="yes"
7705     else
7706         _res_as_stdin="no"
7707     fi
7708     if test "$_res_as_stdin" = "yes"; then
7709         _SAVE_CFLAGS=$CFLAGS
7710         CFLAGS="$CFLAGS -pipe"
7711         AC_TRY_COMPILE( [ #include <stdio.h> ],
7712             [printf("Hello World\n");],
7713             [_res_gcc_pipe="yes"],
7714             [_res_gcc_pipe="no"] )
7715         CFLAGS=$_SAVE_CFLAGS
7716     fi
7717     if test "$_res_as_stdin" = "yes" -a "$_res_gcc_pipe" = "yes"; then
7718         _res="yes";
7719         CFLAGS="$CFLAGS -pipe"
7720         CXXFLAGS="$CXXFLAGS -pipe"
7721     else
7722         _res="no"
7723     fi
7724     rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
7725     AC_MSG_RESULT([$_res])
7726 else
7727     AC_MSG_RESULT([no])
7730 dnl ========================================================
7731 dnl Profile guided optimization
7732 dnl ========================================================
7733 dnl Test for profiling options
7734 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
7736 dnl Provide a switch to disable PGO even when called via profiledbuild.
7737 MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
7738 [  --disable-profile-guided-optimization
7739                           Don't build with PGO even if called via make profiledbuild],
7740 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
7741 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
7743 AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
7745 _SAVE_CFLAGS="$CFLAGS"
7746 CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
7748 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
7749 AC_TRY_COMPILE([], [return 0;],
7750                [ PROFILE_GEN_CFLAGS="-fprofile-generate"
7751                  result="yes" ], result="no")
7752 AC_MSG_RESULT([$result])
7754 if test $result = "yes"; then
7755   PROFILE_GEN_LDFLAGS="-fprofile-generate"
7756   PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch -freorder-blocks-and-partition"
7757   PROFILE_USE_LDFLAGS="-fprofile-use"
7760 CFLAGS="$_SAVE_CFLAGS"
7762 if test -n "$INTEL_CC"; then
7763   PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
7764   PROFILE_GEN_LDFLAGS=
7765   PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
7766   PROFILE_USE_LDFLAGS=
7769 dnl Sun Studio on Solaris
7770 if test "$SOLARIS_SUNPRO_CC"; then
7771   PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
7772   PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
7773   PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
7774   PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
7777 AC_SUBST(PROFILE_GEN_CFLAGS)
7778 AC_SUBST(PROFILE_GEN_LDFLAGS)
7779 AC_SUBST(PROFILE_USE_CFLAGS)
7780 AC_SUBST(PROFILE_USE_LDFLAGS)
7782 AC_LANG_CPLUSPLUS
7784 dnl ========================================================
7785 dnl Test for -pedantic bustage
7786 dnl ========================================================
7787 MOZ_ARG_DISABLE_BOOL(pedantic,
7788 [  --disable-pedantic      Issue all warnings demanded by strict ANSI C ],
7789 _PEDANTIC= )
7790 if test "$_PEDANTIC"; then
7791     _SAVE_CXXFLAGS=$CXXFLAGS
7792     CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
7793     AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
7794     AC_TRY_COMPILE([$configure_static_assert_macros],
7795                    [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
7796                    result="no", result="yes" )
7797     AC_MSG_RESULT([$result])
7798     CXXFLAGS="$_SAVE_CXXFLAGS"
7800     case "$result" in
7801     no)
7802         _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
7803         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
7804         ;;
7805     yes)
7806         AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic.  Reconfigure using --disable-pedantic. ])
7807         ;;
7808     esac
7811 dnl ========================================================
7812 dnl Test for correct temporary object destruction order
7813 dnl ========================================================
7814 dnl We want to make sure the compiler follows the C++ spec here as 
7815 dnl xpcom and the string classes depend on it (bug 235381).
7816 AC_MSG_CHECKING([for correct temporary object destruction order])
7817 AC_TRY_RUN([ class A {
7818              public:  A(int& x) : mValue(x) {}
7819                       ~A() { mValue--; }
7820                       operator char**() { return 0; }
7821              private:  int& mValue;
7822              };
7823              void func(char **arg) {}
7824              int m=2;
7825              void test() {
7826                   func(A(m));
7827                   if (m==1) m = 0;
7828              }
7829              int main() {
7830                  test();
7831                  return(m);
7832              }
7833              ],
7834      result="yes", result="no", result="maybe")
7835 AC_MSG_RESULT([$result])
7837 if test "$result" = "no"; then
7838     AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
7841 dnl ========================================================
7842 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
7843 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
7844 dnl raw pointers in nsCOMPtr.h.  (VC++ has the same bug.)
7845 dnl ========================================================
7846 _SAVE_CXXFLAGS=$CXXFLAGS
7847 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
7848 AC_CACHE_CHECK(for correct overload resolution with const and templates,
7849     ac_nscap_nonconst_opeq_bug,
7850     [AC_TRY_COMPILE([
7851                       template <class T>
7852                       class Pointer
7853                         {
7854                         public:
7855                           T* myPtr;
7856                         };
7857                       
7858                       template <class T, class U>
7859                       int operator==(const Pointer<T>& rhs, U* lhs)
7860                         {
7861                           return rhs.myPtr == lhs;
7862                         }
7863                       
7864                       template <class T, class U>
7865                       int operator==(const Pointer<T>& rhs, const U* lhs)
7866                         {
7867                           return rhs.myPtr == lhs;
7868                         }
7869                     ],
7870                     [
7871                       Pointer<int> foo;
7872                       const int* bar;
7873                       return foo == bar;
7874                     ],
7875                     ac_nscap_nonconst_opeq_bug="no",
7876                     ac_nscap_nonconst_opeq_bug="yes")])
7877 CXXFLAGS="$_SAVE_CXXFLAGS"
7879 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
7880     AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
7882 fi # SKIP_COMPILER_CHECKS
7884 dnl ========================================================
7885 dnl C++ rtti
7886 dnl Should be smarter and check that the compiler does indeed have rtti
7887 dnl ========================================================
7889 MOZ_ARG_ENABLE_BOOL(cpp-rtti,
7890 [  --enable-cpp-rtti       Enable C++ RTTI ],
7891 [ _MOZ_USE_RTTI=1 ],
7892 [ _MOZ_USE_RTTI= ])
7894 if test "$_MOZ_USE_RTTI"; then
7895    _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
7896 else
7897    _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
7900 AC_SUBST(_MOZ_RTTI_FLAGS_ON)
7902 dnl ========================================================
7903 dnl C++ exceptions (g++/VC/irix6/Sun only - for now)
7904 dnl Should be smarter and check that the compiler does indeed have exceptions
7905 dnl ========================================================
7906 MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
7907 [  --enable-cpp-exceptions Enable C++ exceptions ],
7908 [ _MOZ_CPP_EXCEPTIONS=1 ],
7909 [ _MOZ_CPP_EXCEPTIONS= ])
7911 if test "$_MOZ_CPP_EXCEPTIONS"; then
7912     _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_ON
7913     AC_DEFINE(MOZ_CPP_EXCEPTIONS)
7914 else
7915     _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_OFF
7918 AC_SUBST(_MOZ_EXCEPTIONS_FLAGS_ON)
7920 # Irix & OSF native compilers do not like exception declarations 
7921 # when exceptions are disabled
7922 if test -n "$MIPSPRO_CXX" -o -n "$COMPAQ_CXX" -o -n "$VACPP"; then
7923     AC_DEFINE(CPP_THROW_NEW, [])
7924 else
7925     AC_DEFINE(CPP_THROW_NEW, [throw()])
7927 AC_LANG_C
7929 dnl ========================================================
7930 dnl =
7931 dnl = Build depencency options
7932 dnl =
7933 dnl ========================================================
7934 MOZ_ARG_HEADER(Build dependencies)
7936 dnl ========================================================
7937 dnl = Do not auto generate dependency info
7938 dnl ========================================================
7939 MOZ_AUTO_DEPS=1
7940 MOZ_ARG_DISABLE_BOOL(auto-deps,
7941 [  --disable-auto-deps     Do not automatically generate dependency info],
7942     MOZ_AUTO_DEPS=,
7943     MOZ_AUTO_DEPS=1)
7945 if test -n "$MOZ_AUTO_DEPS"; then
7946 dnl ========================================================
7947 dnl = Use mkdepend instead of $CC -MD for dependency generation
7948 dnl ========================================================
7949 _cpp_md_flag=
7950 MOZ_ARG_DISABLE_BOOL(md,
7951 [  --disable-md            Do not use compiler-based dependencies ],
7952   [_cpp_md_flag=],
7953   [_cpp_md_flag=1],
7954   [dnl Default is to turn on -MD if using GNU-compatible compilers
7955    if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
7956      _cpp_md_flag=1
7957    fi
7958   dnl Default is to use -xM if using Sun Studio on Solaris
7959    if test "$SOLARIS_SUNPRO_CC"; then
7960      _cpp_md_flag=1
7961    fi])
7962 if test "$_cpp_md_flag"; then
7963   COMPILER_DEPEND=1
7964   if test "$OS_ARCH" = "OpenVMS"; then
7965     _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(basename $(@F)).pp))'
7966   else
7967     _DEPEND_CFLAGS='$(filter-out %/.pp,-MD -MF $(MDDEPDIR)/$(basename $(@F)).pp)'
7968   fi
7969   dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7970   if test "$SOLARIS_SUNPRO_CC"; then
7971     _DEPEND_CFLAGS=
7972   fi
7973 else
7974   COMPILER_DEPEND=
7975   dnl Don't override this for MSVC
7976   if test -z "$_WIN32_MSVC"; then
7977     _USE_CPP_INCLUDE_FLAG=
7978     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7979     _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7980   else
7981     _topsrcdirwin=`cd \`dirname $0\`; pwd -W`
7982     dnl cl.py provides dependency generation for MSVC
7983     CC_WRAPPER="$PYTHON -O $_topsrcdirwin/build/cl.py"
7984     CXX_WRAPPER="$PYTHON -O $_topsrcdirwin/build/cl.py"
7985     COMPILER_DEPEND=1
7986   fi
7988 fi # MOZ_AUTO_DEPS
7989 MDDEPDIR='.deps'
7990 AC_SUBST(MOZ_AUTO_DEPS)
7991 AC_SUBST(COMPILER_DEPEND)
7992 AC_SUBST(MDDEPDIR)
7993 AC_SUBST(CC_WRAPPER)
7994 AC_SUBST(CXX_WRAPPER)
7997 dnl ========================================================
7998 dnl =
7999 dnl = Static Build Options
8000 dnl =
8001 dnl ========================================================
8002 MOZ_ARG_HEADER(Static build options)
8004 MOZ_ARG_ENABLE_BOOL(static,
8005 [  --enable-static         Enable building of internal static libs],
8006     BUILD_STATIC_LIBS=1,
8007     BUILD_STATIC_LIBS=)
8009 MOZ_ARG_ENABLE_BOOL(libxul,
8010 [  --enable-libxul         Enable building of libxul],
8011     MOZ_ENABLE_LIBXUL=1,
8012     MOZ_ENABLE_LIBXUL=)
8014 MOZ_ARG_ENABLE_BOOL(shared-js,
8015 [  --enable-shared-js
8016                           Create a shared JavaScript library.],
8017     ENABLE_SHARED_JS=1,
8018     ENABLE_SHARED_JS=)
8020 if test -z "$MOZ_ENABLE_LIBXUL"; then
8021   dnl --disable-libxul implies shared js
8022   ENABLE_SHARED_JS=1
8025 if test -n "$ENABLE_SHARED_JS"; then
8026   JS_SHARED_LIBRARY=1
8027   MOZ_JS_LIBS=$MOZ_JS_SHARED_LIBS
8028 else
8029   MOZ_JS_LIBS=$MOZ_JS_STATIC_LIBS
8030   AC_DEFINE(MOZ_STATIC_JS)
8032 AC_SUBST(JS_SHARED_LIBRARY)
8034 if test -n "$MOZ_STATIC_BUILD_UNSUPPORTED" -a -n "$BUILD_STATIC_LIBS"; then
8035         AC_MSG_ERROR([--enable-static is not supported for building $MOZ_APP_NAME. You probably want --enable-libxul.])
8038 if test -n "$MOZ_ENABLE_LIBXUL" -a -n "$BUILD_STATIC_LIBS"; then
8039         AC_MSG_ERROR([--enable-libxul is not compatible with --enable-static])
8042 if test -n "$MOZ_IPC" -a -z "$MOZ_ENABLE_LIBXUL"; then
8043     AC_MSG_ERROR([--enable-ipc requires --enable-libxul])
8046 if test -z "$MOZ_ENABLE_LIBXUL" -a -n "$MOZ_OMNIJAR"; then
8047     AC_MSG_ERROR([Omnijar packaging is incompatible with --disable-libxul. Please either --enable-libxul or --enable-chrome-format=jar|flat|symlink]);
8050 AC_SUBST(LIBXUL_LIBS)
8052 if test -n "$MOZ_ENABLE_LIBXUL"; then
8053     XPCOM_LIBS="$LIBXUL_LIBS"
8054     AC_DEFINE(MOZ_ENABLE_LIBXUL)
8055 else
8056     if test -n "$BUILD_STATIC_LIBS"; then
8057         AC_DEFINE(MOZ_STATIC_BUILD)
8058     fi
8059     XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS"
8062 dnl ========================================================
8063 dnl =
8064 dnl = Standalone module options
8065 dnl = 
8066 dnl ========================================================
8067 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
8069 dnl Check for GLib and libIDL.
8070 dnl ========================================================
8071 SKIP_IDL_CHECK="no"
8073 if test -z "$COMPILE_ENVIRONMENT"; then
8074     SKIP_IDL_CHECK="yes"
8077 dnl = Allow users to disable libIDL checking for standalone modules
8078 MOZ_ARG_WITHOUT_BOOL(libIDL,
8079 [  --without-libIDL        Skip check for libIDL (standalone modules only)],
8080         SKIP_IDL_CHECK="yes")
8082 if test -z "$CROSS_COMPILE"; then
8083     if test -z "$HOST_LIBIDL_CONFIG"; then
8084         HOST_LIBIDL_CONFIG="$LIBIDL_CONFIG"
8085     fi
8086     if test -z "$HOST_LIBIDL_PREFIX"; then
8087         HOST_LIBIDL_PREFIX="$LIBIDL_PREFIX"
8088     fi
8091 if test "$SKIP_IDL_CHECK" = "no"
8092 then
8093     _LIBIDL_FOUND=
8094     case "$host" in
8095     *-mingw*|*-cygwin*|*-msvc*|*-mks*)
8096         if test -n "$GLIB_PREFIX"; then
8097             _GLIB_PREFIX_DIR=`cd $GLIB_PREFIX && pwd -W`
8098             if test "$?" = "0"; then
8099                 if test `echo ${PATH}: | grep -ic "$_GLIB_PREFIX_DIR/bin:"` = 0; then
8100                     AC_MSG_ERROR([GLIB_PREFIX must be in your \$PATH.])
8101                 fi
8102                 _GLIB_PREFIX_DIR=`$CYGPATH_W $_GLIB_PREFIX_DIR | $CYGPATH_S`
8103             else
8104                  AC_MSG_ERROR([GLIB_PREFIX is set but "${GLIB_PREFIX}" is not a directory.])
8105             fi
8106         else
8107             _GLIB_PREFIX_DIR=$MOZ_TOOLS_DIR
8108         fi
8109         if test ! -f "${_GLIB_PREFIX_DIR}/include/glib.h"; then
8110             AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/include/glib.h .])
8111         fi
8112         GLIB_CFLAGS="-I${_GLIB_PREFIX_DIR}/include"
8113         if test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"; then
8114             GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"
8115         elif test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"; then
8116             GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"
8117         else
8118             AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/lib/glib-1.2.lib or $_GLIB_PREFIX_DIR/lib/glib-1.2_s.lib])
8119         fi
8121         if test -n "$HOST_LIBIDL_PREFIX"; then
8122             _LIBIDL_PREFIX_DIR=`cd $HOST_LIBIDL_PREFIX && pwd -W`
8123             if test "$?" = "0"; then
8124                 if test `echo ${PATH}: | grep -ic "$_LIBIDL_PREFIX_DIR/bin:"` = 0; then
8125                     AC_MSG_ERROR([LIBIDL_PREFIX must be in your \$PATH.])
8126                 fi
8127                 _LIBIDL_PREFIX_DIR=`$CYGPATH_W $_LIBIDL_PREFIX_DIR | $CYGPATH_S`
8128             else
8129                 AC_MSG_ERROR([LIBIDL_PREFIX is set but "${LIBIDL_PREFIX}" is not a directory.])
8130             fi
8131         else
8132             _LIBIDL_PREFIX_DIR=$MOZ_TOOLS_DIR
8133         fi        
8134         if test ! -f "${_LIBIDL_PREFIX_DIR}/include/libIDL/IDL.h"; then
8135             AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/include/libIDL/IDL.h .])
8136         fi
8137         HOST_LIBIDL_CFLAGS="-I${_LIBIDL_PREFIX_DIR}/include ${GLIB_CFLAGS}"
8138         if test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"; then
8139             HOST_LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"
8140             STATIC_LIBIDL=1
8141         elif test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"; then
8142             HOST_LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"
8143         else
8144             AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/lib/libidl-0.6.lib or $_LIBIDL_PREFIX_DIR/lib/libidl-0.6_s.lib])
8145         fi
8146         HOST_LIBIDL_LIBS="${HOST_LIBIDL_LIBS} ${GLIB_LIBS}"
8147         _LIBIDL_FOUND=1
8148         ;;
8149     esac
8151     if test -z "$_LIBIDL_FOUND"; then
8152         if test "$MACOS_SDK_DIR"; then 
8153             dnl xpidl, and therefore libIDL, is only needed on the build host.
8154             dnl Don't build it against the SDK, as that causes problems.
8155             _MACSAVE_CFLAGS="$CFLAGS"
8156             _MACSAVE_LIBS="$LIBS"
8157             _MACSAVE_LDFLAGS="$LDFLAGS"
8158             _MACSAVE_NEXT_ROOT="$NEXT_ROOT"
8159           changequote(,)
8160           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"`
8161           LIBS=`echo $LIBS|sed -e "s?-L${MACOS_SDK_DIR}/usr/lib[^ ]*??g"`
8162           LDFLAGS=`echo $LDFLAGS|sed -e "s?-Wl,-syslibroot,${MACOS_SDK_DIR}??g"`
8163           changequote([,])
8164           unset NEXT_ROOT
8165         fi
8167         PKG_CHECK_MODULES(HOST_LIBIDL, libIDL-2.0 >= 0.8.0 glib-2.0 gobject-2.0, _LIBIDL_FOUND=1,_LIBIDL_FOUND=)
8168     fi
8170     dnl if no gtk/libIDL1 or gtk2/libIDL2 combination was found, fall back
8171     dnl to either libIDL1 or libIDL2.
8172     if test -z "$_LIBIDL_FOUND"; then
8173         AM_PATH_LIBIDL($LIBIDL_VERSION,_LIBIDL_FOUND=1)
8174         if test -z "$_LIBIDL_FOUND"; then
8175             PKG_CHECK_MODULES(HOST_LIBIDL, libIDL-2.0 >= 0.8.0,_LIBIDL_FOUND=1)
8176         fi
8177     fi
8178     dnl
8179     dnl If we don't have a libIDL config program & not cross-compiling, 
8180     dnl     look for orbit-config instead.
8181     dnl
8182     if test -z "$_LIBIDL_FOUND" -a -z "$CROSS_COMPILE"; then
8183         MOZ_PATH_PROGS(ORBIT_CONFIG, $ORBIT_CONFIG orbit-config)
8184         if test -n "$ORBIT_CONFIG"; then
8185             AC_MSG_CHECKING([for ORBit libIDL usability])
8186                 _ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags`
8187             _ORBIT_LIBS=`${ORBIT_CONFIG} client --libs`
8188             _ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}`
8189             _ORBIT_LIB_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-L/); } }' -- ${_ORBIT_LIBS}`
8190             HOST_LIBIDL_CFLAGS="$_ORBIT_INC_PATH"
8191             HOST_LIBIDL_LIBS="$_ORBIT_LIB_PATH -lIDL -lglib"
8192             HOST_LIBIDL_CONFIG=
8193             _SAVE_CFLAGS="$CFLAGS"
8194             _SAVE_LIBS="$LIBS"
8195             CFLAGS="$HOST_LIBIDL_CFLAGS $CFLAGS"
8196             LIBS="$HOST_LIBIDL_LIBS $LIBS"
8197             AC_TRY_RUN([
8198 #include <stdlib.h>
8199 #include <libIDL/IDL.h>
8200 int main() {
8201   char *s;
8202   s=strdup(IDL_get_libver_string());
8203   if(s==NULL) {
8204     exit(1);
8205   }
8206   exit(0);
8208             ], [_LIBIDL_FOUND=1
8209                 result="yes"],
8210                [HOST_LIBIDL_CFLAGS=
8211                 HOST_LIBIDL_LIBS=
8212                 result="no"],
8213                [_LIBIDL_FOUND=1
8214                 result="maybe"] )
8215             AC_MSG_RESULT($result)
8216             CFLAGS="$_SAVE_CFLAGS"
8217             LIBS="$_SAVE_LIBS"
8218         fi
8219     fi
8220     if test -z "$_LIBIDL_FOUND"; then
8221         AC_MSG_ERROR([libIDL not found.
8222         libIDL $LIBIDL_VERSION or higher is required.])
8223     fi
8224     if test "$MACOS_SDK_DIR"; then
8225       CFLAGS="$_MACSAVE_CFLAGS"
8226       LIBS="$_MACSAVE_LIBS"
8227       LDFLAGS="$_MACSAVE_LDFLAGS"
8228       if test -n "$_MACSAVE_NEXT_ROOT" ; then
8229         export NEXT_ROOT="$_MACSAVE_NEXT_ROOT"
8230       fi
8231     fi
8234 if test -n "$CROSS_COMPILE"; then
8235     case "$target" in
8236     *-mingw*|*-cygwin*|*-msvc*|*-mks*)
8237         if test -n "$GLIB_PREFIX"; then
8238             GLIB_CFLAGS="-I${GLIB_PREFIX}/include"
8239             if test -f "${GLIB_PREFIX}/lib/glib-1.2_s.lib"; then
8240                 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2_s.lib"
8241             elif test -f "${GLIB_PREFIX}/lib/glib-1.2.lib"; then
8242                 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2.lib"
8243             else
8244                 AC_MSG_ERROR([Cannot find $GLIB_PREFIX/lib/glib-1.2.lib or $GLIB_PREFIX/lib/glib-1.2_s.lib])
8245             fi
8246         fi
8248         if test -n "$LIBIDL_PREFIX"; then
8249             LIBIDL_CFLAGS="-I${LIBIDL_PREFIX}/include ${GLIB_CFLAGS}"
8250             if test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"; then
8251                 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"
8252                 STATIC_LIBIDL=1
8253             elif test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"; then
8254                 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"
8255             else
8256                 AC_MSG_ERROR([Cannot find $LIBIDL_PREFIX/lib/libIDL-0.6.lib or $LIBIDL_PREFIX/lib/libIDL-0.6_s.lib])
8257             fi
8258         fi
8259         LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
8260         ;;
8261     *)
8262         if test -n "LIBIDL_CONFIG" -a "LIBIDL_CONFIG" != "no"; then
8263             LIBIDL_CFLAGS=`${LIBIDL_CONFIG} --cflags`
8264             LIBIDL_LIBS=`${LIBIDL_CONFIG} --libs`
8265         fi
8266         ;;
8267     esac
8268 else
8269     LIBIDL_CFLAGS="$HOST_LIBIDL_CFLAGS"
8270     LIBIDL_LIBS="$HOST_LIBIDL_LIBS"
8273 if test -z "$SKIP_PATH_CHECKS"; then
8274 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
8275     if test "$MOZ_ENABLE_GTK2" -o "$USE_ELF_DYNSTR_GC" ; then
8276         PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
8277     else
8278         AM_PATH_GLIB(${GLIB_VERSION})
8279     fi
8283 if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then
8284     GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
8287 AC_SUBST(LIBIDL_CFLAGS)
8288 AC_SUBST(LIBIDL_LIBS)
8289 AC_SUBST(STATIC_LIBIDL)
8290 AC_SUBST(GLIB_CFLAGS)
8291 AC_SUBST(GLIB_LIBS)
8292 AC_SUBST(GLIB_GMODULE_LIBS)
8293 AC_SUBST(HOST_LIBIDL_CONFIG)
8294 AC_SUBST(HOST_LIBIDL_CFLAGS)
8295 AC_SUBST(HOST_LIBIDL_LIBS)
8297 dnl ========================================================
8298 dnl Check for cairo
8299 dnl ========================================================
8300 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
8302 MOZ_TREE_CAIRO=1
8303 MOZ_ARG_ENABLE_BOOL(system-cairo,
8304 [  --enable-system-cairo   Use system cairo (located with pkgconfig)],
8305 MOZ_TREE_CAIRO=,
8306 MOZ_TREE_CAIRO=1 )
8308 # Check for headers defining standard int types.
8309 AC_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
8311 if test "$MOZ_TREE_CAIRO"; then
8312     AC_DEFINE(MOZ_TREE_CAIRO)
8314     # For now we assume that we will have a uint64_t available through
8315     # one of the above headers or mozstdint.h.
8316     AC_DEFINE(HAVE_UINT64_T)
8318     # Define macros for cairo-features.h
8319     if test "$MOZ_X11"; then
8320         XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
8321         XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
8322         PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
8323         PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
8324         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8325         MOZ_ENABLE_CAIRO_FT=1
8326         CAIRO_FT_CFLAGS="$FT2_CFLAGS"
8327     fi
8328     if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
8329         QT_SURFACE_FEATURE="#define CAIRO_HAS_QT_SURFACE 1"
8330     fi
8331     if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
8332         QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
8333         QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
8334         QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
8335     fi
8336     if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
8337         WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
8338         if test -z "$WINCE"; then
8339             WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
8340             if test "$MOZ_WINSDK_TARGETVER" -ge "06010000"; then
8341                 WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
8342                 WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1"
8343                 MOZ_ENABLE_D2D_SURFACE=1
8344                 MOZ_ENABLE_DWRITE_FONT=1
8345             else
8346                 WIN32_DWRITE_FONT_FEATURE=
8347                 WIN32_D2D_SURFACE_FEATURE=
8348             fi
8349         else
8350             WIN32_FONT_FEATURE=
8351             WIN32_DWRITE_FONT_FEATURE=
8352             WIN32_D2D_SURFACE_FEATURE=
8353         fi
8355         AC_CHECK_HEADER(d3d9.h, MOZ_ENABLE_D3D9_LAYER=1)
8357         AC_TRY_COMPILE([#include <ddraw.h>], [int foo = DDLOCK_WAITNOTBUSY;], HAS_DDRAW=1, HAS_DDRAW=)
8358         if test -z "$HAS_DDRAW"; then
8359             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.])
8360             DDRAW_SURFACE_FEATURE=
8361         else
8362             DDRAW_SURFACE_FEATURE="#define CAIRO_HAS_DDRAW_SURFACE 1"
8363         fi
8365         if test -z "$OGLES_SDK_DIR"; then
8366             OGLES_SURFACE_FEATURE=
8367         else
8368             AC_TRY_COMPILE([
8369               #include <EGL/egl.h>
8370               #include <EGL/eglext.h>
8371               #include <GLES2/gl2.h>
8372               #include <GLES2/gl2ext.h>
8373             ], [ EGLDisplay _cairo_ddraw_egl_dpy = EGL_NO_DISPLAY;], HAS_OGLES=1, HAS_OGLES=)
8374             if test -z "$HAS_OGLES"; then
8375               AC_MSG_WARN([OpenGL ES2 headers not found, disabling OpenGL acceleration surfaces.])
8376               OGLES_SURFACE_FEATURE=
8377             else
8378               OGLES_SURFACE_FEATURE="#define CAIRO_DDRAW_USE_GL 1"
8379             fi
8380         fi
8382         PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
8383     fi
8384     if test "$MOZ_WIDGET_TOOLKIT" = "os2"; then
8385         OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
8386         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8387         PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
8388         MOZ_ENABLE_CAIRO_FT=1
8389         CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
8390         CAIRO_FT_LIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
8391     fi
8392     if test "$MOZ_WIDGET_TOOLKIT" = "beos"; then
8393         PKG_CHECK_MODULES(CAIRO_FT, fontconfig freetype2)
8394         BEOS_SURFACE_FEATURE="#define CAIRO_HAS_BEOS_SURFACE 1"
8395         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8396         MOZ_ENABLE_CAIRO_FT=1
8397     fi
8398     if test "$USE_FC_FREETYPE"; then
8399         FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
8400     fi
8401     AC_SUBST(MOZ_ENABLE_CAIRO_FT)
8402     AC_SUBST(MOZ_ENABLE_DWRITE_FONT)
8403     AC_SUBST(MOZ_ENABLE_D2D_SURFACE)
8404     AC_SUBST(MOZ_ENABLE_D3D9_LAYER)
8405     AC_SUBST(CAIRO_FT_CFLAGS)
8406     AC_SUBST(HAS_OGLES)
8408     if test "$MOZ_DEBUG"; then
8409       SANITY_CHECKING_FEATURE="#define CAIRO_DO_SANITY_CHECKING 1"
8410     else
8411       SANITY_CHECKING_FEATURE="#undef CAIRO_DO_SANITY_CHECKING"
8412     fi
8414     PNG_FUNCTIONS_FEATURE="#define CAIRO_HAS_PNG_FUNCTIONS 1"
8416     AC_SUBST(PS_SURFACE_FEATURE)
8417     AC_SUBST(PDF_SURFACE_FEATURE)
8418     AC_SUBST(SVG_SURFACE_FEATURE)
8419     AC_SUBST(XLIB_SURFACE_FEATURE)
8420     AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
8421     AC_SUBST(QUARTZ_SURFACE_FEATURE)
8422     AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
8423     AC_SUBST(XCB_SURFACE_FEATURE)
8424     AC_SUBST(WIN32_SURFACE_FEATURE)
8425     AC_SUBST(DDRAW_SURFACE_FEATURE)
8426     AC_SUBST(OGLES_SURFACE_FEATURE)    
8427     AC_SUBST(OS2_SURFACE_FEATURE)
8428     AC_SUBST(BEOS_SURFACE_FEATURE)
8429     AC_SUBST(DIRECTFB_SURFACE_FEATURE)
8430     AC_SUBST(FT_FONT_FEATURE)
8431     AC_SUBST(FC_FONT_FEATURE)
8432     AC_SUBST(WIN32_FONT_FEATURE)
8433     AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
8434     AC_SUBST(WIN32_D2D_SURFACE_FEATURE)
8435     AC_SUBST(QUARTZ_FONT_FEATURE)
8436     AC_SUBST(PNG_FUNCTIONS_FEATURE)
8437     AC_SUBST(QT_SURFACE_FEATURE)
8439     MOZ_CAIRO_LIBS='$(call EXPAND_LIBNAME_PATH,mozcairo,$(DEPTH)/gfx/cairo/cairo/src) $(call EXPAND_LIBNAME_PATH,mozlibpixman,$(DEPTH)/gfx/cairo/libpixman/src)'" $CAIRO_FT_LIBS"
8440     if test "$MOZ_X11"; then
8441         MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS -lXrender -lfreetype -lfontconfig"
8442     fi
8444     CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
8445     mv -f $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig 2> /dev/null
8447 else
8448    PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION pixman-1 freetype2 fontconfig)
8449    MOZ_CAIRO_CFLAGS=$CAIRO_CFLAGS
8450    MOZ_CAIRO_LIBS=$CAIRO_LIBS
8451    if test "$MOZ_X11"; then
8452         PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
8453         MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
8454         MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
8455    fi
8458 AC_SUBST(MOZ_TREE_CAIRO)
8459 AC_SUBST(MOZ_CAIRO_CFLAGS)
8460 AC_SUBST(MOZ_CAIRO_LIBS)
8462 dnl ========================================================
8463 dnl qcms
8464 dnl ========================================================
8466 QCMS_LIBS='$(call EXPAND_LIBNAME_PATH,mozqcms,$(DEPTH)/gfx/qcms)'
8467 AC_SUBST(QCMS_LIBS)
8469 dnl ========================================================
8470 dnl HarfBuzz
8471 dnl ========================================================
8472 MOZ_HARFBUZZ_LIBS='$(DEPTH)/gfx/harfbuzz/src/$(LIB_PREFIX)mozharfbuzz.$(LIB_SUFFIX)'
8473 AC_SUBST(MOZ_HARFBUZZ_LIBS)
8475 dnl ========================================================
8476 dnl disable xul
8477 dnl ========================================================
8478 MOZ_ARG_DISABLE_BOOL(xul,
8479 [  --disable-xul           Disable XUL],
8480     MOZ_XUL= )
8481 if test "$MOZ_XUL"; then
8482   AC_DEFINE(MOZ_XUL)
8483 else
8484   dnl remove extensions that require XUL
8485   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
8488 AC_SUBST(MOZ_XUL)
8490 dnl ========================================================
8491 dnl disable profile locking
8492 dnl   do no use this in applications that can have more than
8493 dnl   one process accessing the profile directory.
8494 dnl ========================================================
8495 MOZ_ARG_DISABLE_BOOL(profilelocking,
8496 [  --disable-profilelocking
8497                           Disable profile locking],
8498     MOZ_PROFILELOCKING=,
8499     MOZ_PROFILELOCKING=1 )
8500 if test "$MOZ_PROFILELOCKING"; then
8501   AC_DEFINE(MOZ_PROFILELOCKING)
8504 dnl ========================================================
8505 dnl disable rdf services
8506 dnl ========================================================
8507 MOZ_ARG_DISABLE_BOOL(rdf,
8508 [  --disable-rdf           Disable RDF],
8509     MOZ_RDF= )
8510 if test "$MOZ_RDF"; then
8511   AC_DEFINE(MOZ_RDF)
8514 AC_SUBST(MOZ_RDF)
8516 dnl ========================================================
8517 dnl necko configuration options
8518 dnl ========================================================
8521 dnl option to disable various necko protocols
8523 MOZ_ARG_ENABLE_STRING(necko-protocols,
8524 [  --enable-necko-protocols[={http,ftp,default,all,none}]
8525                           Enable/disable specific protocol handlers],
8526 [ for option in `echo $enableval | sed 's/,/ /g'`; do
8527     if test "$option" = "yes" -o "$option" = "all"; then
8528         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8529     elif test "$option" = "no" -o "$option" = "none"; then
8530         NECKO_PROTOCOLS=""
8531     elif test "$option" = "default"; then
8532         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8533     elif test `echo "$option" | grep -c \^-` != 0; then
8534         option=`echo $option | sed 's/^-//'`
8535         NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
8536     else
8537         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
8538     fi
8539 done],
8540     NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
8541 dnl Remove dupes
8542 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
8543 AC_SUBST(NECKO_PROTOCOLS)
8544 for p in $NECKO_PROTOCOLS; do
8545     AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
8546 done
8549 dnl option to disable necko's disk cache
8551 MOZ_ARG_DISABLE_BOOL(necko-disk-cache,
8552 [  --disable-necko-disk-cache
8553                           Disable necko disk cache],
8554     NECKO_DISK_CACHE=,
8555     NECKO_DISK_CACHE=1)
8556 AC_SUBST(NECKO_DISK_CACHE)
8557 if test "$NECKO_DISK_CACHE"; then
8558     AC_DEFINE(NECKO_DISK_CACHE)
8562 dnl option to disable necko's wifi scanner
8564 MOZ_ARG_DISABLE_BOOL(necko-wifi,
8565 [  --disable-necko-wifi    Disable necko wifi scanner],
8566     NECKO_WIFI=,
8567     NECKO_WIFI=1)
8569 if test "$OS_ARCH" = "OS2"; then
8570   dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566
8571   NECKO_WIFI=
8573 if test "$NECKO_WIFI" -a \
8574         "$OS_ARCH" != "Linux" -a \
8575         "$OS_ARCH" != "Darwin" -a \
8576         "$OS_ARCH" != "SunOS" -a \
8577         "$OS_ARCH" != "WINNT" -a \
8578         "$OS_ARCH" != "WINCE"; then
8579   AC_MSG_ERROR([Necko WiFi scanning not supported on your platform, use --disable-necko-wifi])
8582 if test -z "$SKIP_LIBRARY_CHECKS" -a "$NECKO_WIFI" -a "$OS_ARCH" = "Linux"
8583 then
8584   AC_CHECK_HEADER([iwlib.h])
8585   if test "$ac_cv_header_iwlib_h" != "yes"; then
8586     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])
8587   fi
8590 if test "$NECKO_WIFI"; then
8591   AC_DEFINE(NECKO_WIFI)
8593 AC_SUBST(NECKO_WIFI)
8596 dnl option to disable cookies
8598 MOZ_ARG_DISABLE_BOOL(cookies,
8599 [  --disable-cookies       Disable cookie support],
8600     NECKO_COOKIES=,
8601     NECKO_COOKIES=1)
8602 AC_SUBST(NECKO_COOKIES)
8603 if test "$NECKO_COOKIES"; then
8604     AC_DEFINE(NECKO_COOKIES)
8608 dnl Build jsctypes on the platforms we can, unless it's explicitly disabled.
8610 MOZ_ARG_DISABLE_BOOL(ctypes,
8611 [  --disable-ctypes        Disable js-ctypes],
8612     BUILD_CTYPES=,
8613     BUILD_CTYPES=1)
8614 AC_SUBST(BUILD_CTYPES)
8615 if test "$BUILD_CTYPES"; then
8616   if test "$OS_ARCH" = "WINCE" -a `echo $OS_TEST | grep -ic arm` = 1; then
8617     # Disable ctypes for arm/wince.
8618     BUILD_CTYPES=
8619   else
8620     AC_DEFINE(BUILD_CTYPES)
8621   fi
8624 dnl NECKO_ configuration options are not global
8625 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_"
8627 dnl Only build Mork if it's required
8628 AC_SUBST(MOZ_MORK)
8629 if test "$MOZ_MORK"; then
8630   AC_DEFINE(MOZ_MORK)
8633 dnl Build the lightweight Mork reader if required
8634 AC_SUBST(MOZ_MORKREADER)
8635 if test "$MOZ_MORKREADER"; then
8636   AC_DEFINE(MOZ_MORKREADER)
8639 dnl Build Places if required
8640 if test "$MOZ_PLACES"; then
8641   AC_DEFINE(MOZ_PLACES)
8644 dnl Build Sync Services if required
8645 AC_SUBST(MOZ_SERVICES_SYNC)
8646 if test -n "$MOZ_SERVICES_SYNC"; then
8647   AC_DEFINE(MOZ_SERVICES_SYNC)
8650 dnl ========================================================
8651 if test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
8652     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
8655 dnl ========================================================
8656 dnl =
8657 dnl = Maintainer debug option (no --enable equivalent)
8658 dnl =
8659 dnl ========================================================
8661 AC_SUBST(AR)
8662 AC_SUBST(AR_FLAGS)
8663 AC_SUBST(AR_LIST)
8664 AC_SUBST(AR_EXTRACT)
8665 AC_SUBST(AR_DELETE)
8666 AC_SUBST(AS)
8667 AC_SUBST(ASFLAGS)
8668 AC_SUBST(AS_DASH_C_FLAG)
8669 AC_SUBST(LD)
8670 AC_SUBST(RC)
8671 AC_SUBST(RCFLAGS)
8672 AC_SUBST(WINDRES)
8673 AC_SUBST(IMPLIB)
8674 AC_SUBST(FILTER)
8675 AC_SUBST(BIN_FLAGS)
8676 AC_SUBST(NS_USE_NATIVE)
8677 AC_SUBST(MOZ_WIDGET_TOOLKIT)
8678 AC_SUBST(MOZ_UPDATE_XTERM)
8679 AC_SUBST(MINIMO)
8680 AC_SUBST(MOZ_PLATFORM_MAEMO)
8681 AC_SUBST(MOZ_AUTH_EXTENSION)
8682 AC_SUBST(MOZ_MATHML)
8683 AC_SUBST(MOZ_PERMISSIONS)
8684 AC_SUBST(MOZ_XTF)
8685 AC_SUBST(MOZ_PREF_EXTENSIONS)
8686 AC_SUBST(MOZ_SVG)
8687 AC_SUBST(MOZ_SMIL)
8688 AC_SUBST(MOZ_XSLT_STANDALONE)
8689 AC_SUBST(MOZ_JS_LIBS)
8690 AC_SUBST(MOZ_PSM)
8691 AC_SUBST(MOZ_DEBUG)
8692 AC_SUBST(MOZ_DEBUG_SYMBOLS)
8693 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
8694 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
8695 AC_SUBST(MOZ_DEBUG_FLAGS)
8696 AC_SUBST(MOZ_DEBUG_LDFLAGS)
8697 AC_SUBST(WARNINGS_AS_ERRORS)
8698 AC_SUBST(MOZ_EXTENSIONS)
8699 AC_SUBST(MOZ_IMG_ENCODERS)
8700 AC_SUBST(MOZ_JSDEBUGGER)
8701 AC_SUBST(MOZ_PLUGINS)
8702 AC_SUBST(MOZ_LOG_REFCNT)
8703 AC_SUBST(MOZ_LEAKY)
8704 AC_SUBST(MOZ_JPROF)
8705 AC_SUBST(MOZ_SHARK)
8706 AC_SUBST(MOZ_CALLGRIND)
8707 AC_SUBST(MOZ_VTUNE)
8708 AC_SUBST(MOZ_JSLOADER)
8709 AC_SUBST(MOZ_USE_NATIVE_UCONV)
8710 AC_SUBST(MOZ_QUANTIFY)
8711 AC_SUBST(LIBICONV)
8712 AC_SUBST(MOZ_PLACES)
8713 AC_SUBST(MOZ_PLACES_BOOKMARKS)
8714 AC_SUBST(MOZ_STORAGE)
8715 AC_SUBST(MOZ_TOOLKIT_SEARCH)
8716 AC_SUBST(MOZ_FEEDS)
8717 AC_SUBST(NS_PRINTING)
8718 AC_SUBST(MOZ_WEBGL)
8719 AC_SUBST(MOZ_HELP_VIEWER)
8721 AC_SUBST(MOZ_JAVAXPCOM)
8722 AC_SUBST(JAVA_INCLUDE_PATH)
8723 AC_SUBST(JAVA)
8724 AC_SUBST(JAVAC)
8725 AC_SUBST(JAR)
8727 AC_SUBST(MOZ_PROFILELOCKING)
8729 AC_SUBST(HAVE_XIE)
8730 AC_SUBST(MOZ_XIE_LIBS)
8732 AC_SUBST(BUILD_STATIC_LIBS)
8733 AC_SUBST(MOZ_ENABLE_LIBXUL)
8734 AC_SUBST(ENABLE_TESTS)
8735 AC_SUBST(IBMBIDI)
8736 AC_SUBST(MOZ_UNIVERSALCHARDET)
8737 AC_SUBST(ACCESSIBILITY)
8738 AC_SUBST(MOZ_VIEW_SOURCE)
8739 AC_SUBST(MOZ_SPELLCHECK)
8740 AC_SUBST(MOZ_USER_DIR)
8741 AC_SUBST(MOZ_CRASHREPORTER)
8742 AC_SUBST(MOZ_UPDATER)
8744 AC_SUBST(ENABLE_STRIP)
8745 AC_SUBST(PKG_SKIP_STRIP)
8746 AC_SUBST(USE_ELF_DYNSTR_GC)
8747 AC_SUBST(INCREMENTAL_LINKER)
8748 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
8749 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
8751 AC_SUBST(MOZ_FIX_LINK_PATHS)
8752 AC_SUBST(XPCOM_LIBS)
8753 AC_SUBST(XPCOM_FROZEN_LDOPTS)
8754 AC_SUBST(XPCOM_GLUE_LDOPTS)
8755 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
8757 AC_SUBST(USE_DEPENDENT_LIBS)
8759 AC_SUBST(MOZ_BUILD_ROOT)
8760 AC_SUBST(MOZ_OS2_TOOLS)
8761 AC_SUBST(MOZ_OS2_USE_DECLSPEC)
8763 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
8764 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
8765 AC_SUBST(MOZ_TIMELINE)
8766 AC_SUBST(OGLES_SDK_DIR)
8768 AC_SUBST(MOZ_APP_NAME)
8769 AC_SUBST(MOZ_APP_DISPLAYNAME)
8770 AC_SUBST(MOZ_APP_VERSION)
8771 AC_SUBST(MOZ_APP_UA_EXTRA)
8772 AC_SUBST(FIREFOX_VERSION)
8774 AC_SUBST(MOZ_PKG_SPECIAL)
8776 AC_SUBST(MOZILLA_OFFICIAL)
8778 dnl win32 options
8779 AC_SUBST(MOZ_MAPINFO)
8780 AC_SUBST(MOZ_BROWSE_INFO)
8781 AC_SUBST(MOZ_TOOLS_DIR)
8782 AC_SUBST(CYGWIN_WRAPPER)
8783 AC_SUBST(AS_PERL)
8784 AC_SUBST(WIN32_REDIST_DIR)
8785 AC_SUBST(PYTHON)
8786 AC_SUBST(MAKENSISU)
8788 AC_SUBST(WINCE)
8789 AC_SUBST(WINCE_SDK_DIR)
8790 AC_SUBST(WINCE_WINDOWS_MOBILE)
8792 dnl Echo the CFLAGS to remove extra whitespace.
8793 CFLAGS=`echo \
8794         $_WARNINGS_CFLAGS \
8795         $CFLAGS`
8797 CXXFLAGS=`echo \
8798         $_MOZ_RTTI_FLAGS \
8799         $_MOZ_EXCEPTIONS_FLAGS \
8800         $_WARNINGS_CXXFLAGS \
8801         $CXXFLAGS`
8803 COMPILE_CFLAGS=`echo \
8804     $_DEFINES_CFLAGS \
8805         $_DEPEND_CFLAGS \
8806     $COMPILE_CFLAGS`
8808 COMPILE_CXXFLAGS=`echo \
8809     $_DEFINES_CXXFLAGS \
8810         $_DEPEND_CFLAGS \
8811     $COMPILE_CXXFLAGS`
8813 AC_SUBST(SYSTEM_MAKEDEPEND)
8814 AC_SUBST(SYSTEM_LIBXUL)
8815 AC_SUBST(SYSTEM_JPEG)
8816 AC_SUBST(SYSTEM_PNG)
8817 AC_SUBST(SYSTEM_ZLIB)
8818 AC_SUBST(SYSTEM_BZ2)
8820 AC_SUBST(JPEG_CFLAGS)
8821 AC_SUBST(JPEG_LIBS)
8822 AC_SUBST(ZLIB_CFLAGS)
8823 AC_SUBST(ZLIB_LIBS)
8824 AC_SUBST(BZ2_CFLAGS)
8825 AC_SUBST(BZ2_LIBS)
8826 AC_SUBST(PNG_CFLAGS)
8827 AC_SUBST(PNG_LIBS)
8829 AC_SUBST(MOZ_JPEG_CFLAGS)
8830 AC_SUBST(MOZ_JPEG_LIBS)
8831 AC_SUBST(MOZ_ZLIB_CFLAGS)
8832 AC_SUBST(MOZ_ZLIB_LIBS)
8833 AC_SUBST(MOZ_BZ2_CFLAGS)
8834 AC_SUBST(MOZ_BZ2_LIBS)
8835 AC_SUBST(MOZ_PNG_CFLAGS)
8836 AC_SUBST(MOZ_PNG_LIBS)
8838 AC_SUBST(NSPR_CFLAGS)
8839 AC_SUBST(NSPR_LIBS)
8840 AC_SUBST(MOZ_NATIVE_NSPR)
8842 AC_SUBST(NSS_CFLAGS)
8843 AC_SUBST(NSS_LIBS)
8844 AC_SUBST(NSS_DEP_LIBS)
8845 AC_SUBST(MOZ_NATIVE_NSS)
8846 AC_SUBST(NSS_DISABLE_DBM)
8848 AC_SUBST(CFLAGS)
8849 AC_SUBST(CXXFLAGS)
8850 AC_SUBST(CPPFLAGS)
8851 AC_SUBST(COMPILE_CFLAGS)
8852 AC_SUBST(COMPILE_CXXFLAGS)
8853 AC_SUBST(LDFLAGS)
8854 AC_SUBST(LIBS)
8855 AC_SUBST(CROSS_COMPILE)
8856 AC_SUBST(WCHAR_CFLAGS)
8858 AC_SUBST(HOST_CC)
8859 AC_SUBST(HOST_CXX)
8860 AC_SUBST(HOST_CFLAGS)
8861 AC_SUBST(HOST_CXXFLAGS)
8862 AC_SUBST(HOST_OPTIMIZE_FLAGS)
8863 AC_SUBST(HOST_AR)
8864 AC_SUBST(HOST_AR_FLAGS)
8865 AC_SUBST(HOST_LD)
8866 AC_SUBST(HOST_RANLIB)
8867 AC_SUBST(HOST_NSPR_MDCPUCFG)
8868 AC_SUBST(HOST_BIN_SUFFIX)
8869 AC_SUBST(HOST_OS_ARCH)
8871 AC_SUBST(TARGET_CPU)
8872 AC_SUBST(TARGET_VENDOR)
8873 AC_SUBST(TARGET_OS)
8874 AC_SUBST(TARGET_NSPR_MDCPUCFG)
8875 AC_SUBST(TARGET_MD_ARCH)
8876 AC_SUBST(TARGET_XPCOM_ABI)
8877 AC_SUBST(OS_TARGET)
8878 AC_SUBST(OS_ARCH)
8879 AC_SUBST(OS_RELEASE)
8880 AC_SUBST(OS_TEST)
8882 AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
8883 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8885 AC_SUBST(WRAP_MALLOC_CFLAGS)
8886 AC_SUBST(WRAP_MALLOC_LIB)
8887 AC_SUBST(MKSHLIB)
8888 AC_SUBST(MKCSHLIB)
8889 AC_SUBST(MKSHLIB_FORCE_ALL)
8890 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8891 AC_SUBST(DSO_CFLAGS)
8892 AC_SUBST(DSO_PIC_CFLAGS)
8893 AC_SUBST(DSO_LDOPTS)
8894 AC_SUBST(LIB_PREFIX)
8895 AC_SUBST(DLL_PREFIX)
8896 AC_SUBST(DLL_SUFFIX)
8897 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8898 AC_SUBST(LIB_SUFFIX)
8899 AC_SUBST(OBJ_SUFFIX)
8900 AC_SUBST(BIN_SUFFIX)
8901 AC_SUBST(ASM_SUFFIX)
8902 AC_SUBST(IMPORT_LIB_SUFFIX)
8903 AC_SUBST(USE_N32)
8904 AC_SUBST(CC_VERSION)
8905 AC_SUBST(CXX_VERSION)
8906 AC_SUBST(MSMANIFEST_TOOL)
8907 AC_SUBST(NS_ENABLE_TSF)
8908 AC_SUBST(MOZ_NSS_PATCH)
8910 AC_SUBST(MOZ_MEDIA)
8911 AC_SUBST(MOZ_SYDNEYAUDIO)
8912 AC_SUBST(MOZ_WAVE)
8913 AC_SUBST(MOZ_VORBIS)
8914 AC_SUBST(MOZ_WEBM)
8915 AC_SUBST(MOZ_OGG)
8916 AC_SUBST(MOZ_ALSA_LIBS)
8917 AC_SUBST(VPX_AS)
8918 AC_SUBST(VPX_ASFLAGS)
8919 AC_SUBST(VPX_X86_ASM)
8921 if test "$USING_HCC"; then
8922    CC='${topsrcdir}/build/hcc'
8923    CC="$CC '$_OLDCC'"
8924    CXX='${topsrcdir}/build/hcpp'
8925    CXX="$CXX '$_OLDCXX'"
8926    AC_SUBST(CC)
8927    AC_SUBST(CXX)
8930 dnl Check for missing components
8931 if test "$COMPILE_ENVIRONMENT"; then
8932 if test "$MOZ_X11"; then
8933     dnl ====================================================
8934     dnl = Check if X headers exist
8935     dnl ====================================================
8936     _SAVE_CFLAGS=$CFLAGS
8937     CFLAGS="$CFLAGS $XCFLAGS"
8938     AC_TRY_COMPILE([
8939         #include <stdio.h>
8940         #include <stdlib.h>
8941         #include <X11/Xlib.h>
8942         #include <X11/Intrinsic.h>
8943     ],
8944     [
8945         Display *dpy = 0;
8946         if ((dpy = XOpenDisplay(NULL)) == NULL) {
8947             fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8948             exit(1);
8949         }
8950     ], [], 
8951     [ AC_MSG_ERROR([Could not compile basic X program.]) ])
8952     CFLAGS="$_SAVE_CFLAGS"
8954     if test ! -z "$MISSING_X"; then
8955         AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8956     fi
8958 fi # MOZ_X11
8960 dnl Check for headers, etc. needed by WebGL.
8961 if test -n "$MOZ_WEBGL_GLX"; then
8962     AC_CHECK_HEADER(GL/glx.h)
8963     if test "$ac_cv_header_GL_glx_h" != "yes"; then
8964         AC_MSG_ERROR([Can't find header GL/glx.h for WebGL (install mesa-common-dev (Ubuntu), mesa-libGL-devel (Fedora), or Mesa (SuSE))])
8965     fi
8966 fi # MOZ_WEBGL_GLX
8967 fi # COMPILE_ENVIRONMENT
8969 if test "$USE_FC_FREETYPE"; then
8970     if test "$COMPILE_ENVIRONMENT"; then
8971         _SAVE_CPPFLAGS="$CPPFLAGS"
8972         CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
8973         AC_CHECK_HEADERS(fontconfig/fcfreetype.h, , 
8974             [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)])
8975         CPPFLAGS="$_SAVE_CPPFLAGS"
8976     else
8977         AC_DEFINE(HAVE_FONTCONFIG_FCFREETYPE_H)
8978     fi
8981 dnl Set various defines and substitutions
8982 dnl ========================================================
8984 if test "$OS_ARCH" = "BeOS"; then
8985   AC_DEFINE(XP_BEOS)
8986 elif test "$OS_ARCH" = "Darwin"; then
8987   AC_DEFINE(XP_UNIX)
8988   AC_DEFINE(UNIX_ASYNC_DNS)
8989 elif test "$OS_ARCH" = "OpenVMS"; then
8990   AC_DEFINE(XP_UNIX)
8991 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
8992   AC_DEFINE(XP_UNIX)
8993   AC_DEFINE(UNIX_ASYNC_DNS)
8996 if test "$MOZ_DEBUG"; then
8997     AC_DEFINE(MOZ_REFLOW_PERF)
8998     AC_DEFINE(MOZ_REFLOW_PERF_DSP)
9001 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
9002     AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
9003     ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
9004     ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
9005     ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
9006     ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
9007     AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
9008     AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
9009     AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
9012 dnl ========================================================
9013 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
9014 dnl ========================================================
9015 case "$host_os" in
9016 mingw*)
9017     WIN_TOP_SRC=`cd $srcdir; pwd -W`
9018     ;;
9019 cygwin*|msvc*|mks*)
9020     HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
9021     HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
9022     CC="\$(CYGWIN_WRAPPER) $CC"
9023     CXX="\$(CYGWIN_WRAPPER) $CXX"
9024     CPP="\$(CYGWIN_WRAPPER) $CPP"
9025     LD="\$(CYGWIN_WRAPPER) $LD"
9026     AS="\$(CYGWIN_WRAPPER) $AS"
9027     RC="\$(CYGWIN_WRAPPER) $RC"
9028     MIDL="\$(CYGWIN_WRAPPER) $MIDL"
9029     CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
9030     WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
9031     ;;
9032 esac
9034 AC_SUBST(CYGDRIVE_MOUNT)
9035 AC_SUBST(WIN_TOP_SRC)
9037 AC_SUBST(MOZILLA_VERSION)
9039 AC_SUBST(ac_configure_args)
9041 dnl Spit out some output
9042 dnl ========================================================
9044 dnl The following defines are used by xpcom
9045 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
9046 CPP_THROW_NEW
9047 HAVE_CPP_2BYTE_WCHAR_T
9048 HAVE_CPP_ACCESS_CHANGING_USING
9049 HAVE_CPP_AMBIGUITY_RESOLVING_USING
9050 HAVE_CPP_BOOL
9051 HAVE_CPP_CHAR16_T
9052 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
9053 HAVE_CPP_EXPLICIT
9054 HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
9055 HAVE_CPP_NAMESPACE_STD
9056 HAVE_CPP_NEW_CASTS
9057 HAVE_CPP_PARTIAL_SPECIALIZATION
9058 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
9059 HAVE_CPP_TYPENAME
9060 HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL
9061 HAVE_STATVFS
9062 NEED_CPP_UNUSED_IMPLEMENTATIONS
9063 NEW_H
9064 HAVE_GETPAGESIZE
9065 HAVE_ICONV
9066 HAVE_ICONV_WITH_CONST_INPUT
9067 HAVE_MBRTOWC
9068 HAVE_SYS_MOUNT_H
9069 HAVE_SYS_VFS_H
9070 HAVE_WCRTOMB
9073 AC_CONFIG_HEADER(
9074 netwerk/necko-config.h
9075 xpcom/xpcom-config.h
9076 xpcom/xpcom-private.h
9079 # Save the defines header file before autoconf removes it.
9080 # (Do not add AC_DEFINE calls after this line.)
9081   _CONFIG_TMP=confdefs-tmp.h
9082   _CONFIG_DEFS_H=mozilla-config.h
9084   cat > $_CONFIG_TMP <<\EOF
9085 /* List of defines generated by configure. Included with preprocessor flag,
9086  * -include, to avoid long list of -D defines on the compile command-line.
9087  * Do not edit.
9088  */
9090 #ifndef _MOZILLA_CONFIG_H_
9091 #define _MOZILLA_CONFIG_H_
9094 _EGREP_PATTERN='^#define ('
9095 if test -n "$_NON_GLOBAL_ACDEFINES"; then
9096     for f in $_NON_GLOBAL_ACDEFINES; do
9097         _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
9098     done
9100 _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
9102   sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
9104   cat >> $_CONFIG_TMP <<\EOF
9106 #endif /* _MOZILLA_CONFIG_H_ */
9110   # Only write mozilla-config.h when something changes (or it doesn't exist)
9111   if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
9112     rm $_CONFIG_TMP
9113   else
9114     AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
9115     mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
9117     echo ==== $_CONFIG_DEFS_H =================================
9118     cat $_CONFIG_DEFS_H
9119   fi
9121 dnl Probably shouldn't call this manually but we always want the output of DEFS
9122 rm -f confdefs.h.save
9123 mv confdefs.h confdefs.h.save
9124 egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
9125 AC_OUTPUT_MAKE_DEFS()
9126 MOZ_DEFINES=$DEFS
9127 AC_SUBST(MOZ_DEFINES)
9128 rm -f confdefs.h
9129 mv confdefs.h.save confdefs.h
9131 dnl Load the list of Makefiles to generate.
9132 dnl   To add new Makefiles, edit allmakefiles.sh.
9133 dnl   allmakefiles.sh sets the variable, MAKEFILES.
9134 . ${srcdir}/allmakefiles.sh
9135 dnl 
9136 dnl Run a perl script to quickly create the makefiles.
9137 dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
9138 dnl   for the files it cannot handle correctly. This way, config.status
9139 dnl   will handle these files.
9140 dnl If it fails, nothing is set and config.status will run as usual.
9142 dnl This does not change the $MAKEFILES variable.
9144 dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
9146 if test -z "${AS_PERL}"; then
9147 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
9148 else
9149 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
9151 . ./conftest.sh
9152 rm conftest.sh
9154 echo $MAKEFILES > unallmakefiles
9156 mv -f config/autoconf.mk config/autoconf.mk.orig 2> /dev/null
9158 AC_OUTPUT($MAKEFILES)
9160 dnl Prevent the regeneration of cairo-features.h forcing rebuilds of gfx stuff
9161 if test "$CAIRO_FEATURES_H"; then
9162   if cmp -s $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig; then
9163     echo "$CAIRO_FEATURES_H is unchanged"
9164     mv -f "$CAIRO_FEATURES_H".orig "$CAIRO_FEATURES_H" 2> /dev/null
9165   else
9166     rm -f "$CAIRO_FEATURES_H".orig 2> /dev/null
9167   fi
9170 dnl ========================================================
9171 dnl = Setup a nice relatively clean build environment for
9172 dnl = sub-configures.
9173 dnl ========================================================
9174 CC="$_SUBDIR_CC" 
9175 CXX="$_SUBDIR_CXX" 
9176 CFLAGS="$_SUBDIR_CFLAGS" 
9177 CPPFLAGS="$_SUBDIR_CPPFLAGS"
9178 CXXFLAGS="$_SUBDIR_CXXFLAGS"
9179 LDFLAGS="$_SUBDIR_LDFLAGS"
9180 HOST_CC="$_SUBDIR_HOST_CC" 
9181 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9182 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9185 unset MAKEFILES
9186 unset CONFIG_FILES
9188 # No need to run subconfigures when building with LIBXUL_SDK_DIR
9189 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
9191 if test -n "$MOZ_THUMB2"; then
9192   _SUBDIR_CONFIG_ARGS="$_SUBDIR_CONFIG_ARGS --enable-thumb2"
9194 if test -n "$_WRAP_MALLOC"; then
9195   _SUBDIR_CONFIG_ARGS="$_SUBDIR_CONFIG_ARGS --enable-wrap-malloc"
9198 if test -z "$MOZ_NATIVE_NSPR"; then
9199     ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
9200     if test -z "$MOZ_DEBUG"; then
9201         ac_configure_args="$ac_configure_args --disable-debug"
9202     fi
9203     if test "$MOZ_OPTIMIZE" = "1"; then
9204         ac_configure_args="$ac_configure_args --enable-optimize"
9205     fi
9206     if test "$OS_ARCH" = "WINNT" -a "$NS_TRACE_MALLOC"; then
9207        ac_configure_args="$ac_configure_args --enable-debug --disable-optimize"
9208     fi
9209     if test -n "$HAVE_64BIT_OS"; then
9210         ac_configure_args="$ac_configure_args --enable-64bit"
9211     fi
9212     if test -n "$USE_ARM_KUSER"; then
9213         ac_configure_args="$ac_configure_args --with-arm-kuser"
9214     fi
9215     AC_OUTPUT_SUBDIRS(nsprpub)
9216     ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9219 if test -z "$MOZ_NATIVE_NSPR"; then
9220     # Hack to deal with the fact that we use NSPR_CFLAGS everywhere
9221     AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
9222     if test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
9223        NSPR_LIBS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --libdir=$LIBXUL_DIST/lib --libs`
9224        $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $NSPR_LIBS'" config/autoconf.mk
9225        NSPR_CFLAGS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --includedir=$LIBXUL_DIST/include/nspr --cflags`
9226        $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $NSPR_CFLAGS'" config/autoconf.mk
9227     fi
9228     rm -f config/autoconf.mk.bak
9231 # Run the SpiderMonkey 'configure' script.
9232 dist=$MOZ_BUILD_ROOT/dist
9233 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9234 ac_configure_args="$ac_configure_args --enable-threadsafe"
9235 if test "$BUILD_CTYPES"; then
9236     # Build js-ctypes on the platforms we can.
9237     ac_configure_args="$ac_configure_args --enable-ctypes"
9239 if test -z "$JS_SHARED_LIBRARY" ; then
9240     ac_configure_args="$ac_configure_args --disable-shared-js"
9242 if test -z "$MOZ_NATIVE_NSPR"; then
9243     ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
9244     ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
9246 ac_configure_args="$ac_configure_args --with-dist-dir=../../dist"
9247 ac_configure_args="$ac_configure_args --prefix=$dist"
9248 ac_configure_args="$ac_configure_args --with-sync-build-files=$_topsrcdir"
9249 if test "$MOZ_MEMORY"; then
9250    ac_configure_args="$ac_configure_args --enable-jemalloc"
9251    if test -n "$MOZ_MEMORY_LDFLAGS"; then
9252      export MOZ_MEMORY_LDFLAGS
9253    fi
9255 AC_OUTPUT_SUBDIRS(js/src)
9256 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9258 fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR
9260 dnl Prevent the regeneration of autoconf.mk forcing rebuilds of the world
9261 dnl Needs to be at the end to respect possible changes from NSPR configure
9262 if cmp -s config/autoconf.mk config/autoconf.mk.orig; then
9263   echo "config/autoconf.mk is unchanged"
9264   mv -f config/autoconf.mk.orig config/autoconf.mk 2> /dev/null
9265 else
9266   rm -f config/autoconf.mk.orig 2> /dev/null