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