Bug 473045 - Win7 jump list platform support. r=robarnold, sr=roc.
[mozilla-central.git] / configure.in
blob8029ff074e2681ff8f3cea362875fb88dc984c73
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=10217
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.6.0
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 LIBGNOME_VERSION=2.0
133 GIO_VERSION=2.0
134 STARTUP_NOTIFICATION_VERSION=0.8
135 DBUS_VERSION=0.60
136 SQLITE_VERSION=3.6.18
137 LIBNOTIFY_VERSION=0.4
139 MSMANIFEST_TOOL=
141 dnl Set various checks
142 dnl ========================================================
143 MISSING_X=
144 AC_PROG_AWK
146 dnl Initialize the Pthread test variables early so they can be
147 dnl  overridden by each platform.
148 dnl ========================================================
149 USE_PTHREADS=
150 _PTHREAD_LDFLAGS=""
152 dnl Do not allow a separate objdir build if a srcdir build exists.
153 dnl ==============================================================
154 _topsrcdir=`cd \`dirname $0\`; pwd`
155 _objdir=`pwd`
157 if test "$_topsrcdir" != "$_objdir"
158 then
159   # Check for a couple representative files in the source tree
160   _conflict_files=
161   for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
162     if test -f $file; then
163       _conflict_files="$_conflict_files $file"
164     fi
165   done
166   if test "$_conflict_files"; then
167     echo "***"
168     echo "*   Your source tree contains these files:"
169     for file in $_conflict_files; do
170       echo "*         $file"
171     done
172     cat 1>&2 <<-EOF
173         *   This indicates that you previously built in the source tree.
174         *   A source tree build can confuse the separate objdir build.
175         *
176         *   To clean up the source tree:
177         *     1. cd $_topsrcdir
178         *     2. gmake distclean
179         ***
180         EOF
181     exit 1
182     break
183   fi
185 MOZ_BUILD_ROOT=`pwd`
187 dnl Default to MSVC for win32 and gcc-4.2 for darwin
188 dnl ==============================================================
189 if test -z "$CROSS_COMPILE"; then
190 case "$target" in
191 *-cygwin*|*-mingw*|*-msvc*|*-mks*)
192     if test -z "$CC"; then CC=cl; fi
193     if test -z "$CXX"; then CXX=cl; fi
194     if test -z "$CPP"; then CPP="cl -E -nologo"; fi
195     if test -z "$CXXCPP"; then CXXCPP="cl -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
196     if test -z "$LD"; then LD=link; fi
197     if test -z "$AS"; then
198         case "${target_cpu}" in
199         i*86)
200             AS=ml;
201             ;;
202         x86_64)
203             AS=ml64;
204             ;;
205         esac
206     fi
207     if test -z "$MIDL"; then MIDL=midl; fi
208     ;;
209 *-darwin*)
210     if test -z "$CC"; then CC=gcc-4.2; fi
211     if test -z "$CXX"; then CXX=g++-4.2; fi
212     ;;
213 esac
216 COMPILE_ENVIRONMENT=1
217 MOZ_ARG_ENABLE_BOOL(compile-environment,
218 [  --disable-compile-environment
219                            Disable compiler/library checks.],
220     COMPILE_ENVIRONMENT=1,
221     COMPILE_ENVIRONMENT= )
222 AC_SUBST(COMPILE_ENVIRONMENT)
224 MOZ_ARG_WITH_STRING(l10n-base,
225 [  --with-l10n-base=DIR     path to l10n repositories],
226     L10NBASEDIR=$withval)
227 if test ! -z "$L10NBASEDIR"; then
228     if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then
229         AC_MSG_ERROR([--with-l10n-base must specify a path])
230     elif test -d "$L10NBASEDIR"; then
231         L10NBASEDIR=`cd "$L10NBASEDIR" && pwd`
232     else
233         AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
234     fi
236 AC_SUBST(L10NBASEDIR)
238 dnl Check for Perl first -- needed for win32 SDK checks
239 MOZ_PATH_PROGS(PERL, $PERL perl5 perl )
240 if test -z "$PERL" || test "$PERL" = ":"; then
241     AC_MSG_ERROR([perl not found in \$PATH])
244 dnl ========================================================
245 dnl Checks for compilers.
246 dnl ========================================================
247 dnl Set CROSS_COMPILE in the environment when running configure
248 dnl to use the cross-compile setup for now
249 dnl ========================================================
251 if test "$COMPILE_ENVIRONMENT"; then
253 dnl Do some special WinCE toolchain stuff
254 case "$target" in
255 *wince)
257     MOZ_ARG_WITH_STRING(wince-sdk,
258     [  --with-wince-sdk=WINCE_SDK_DIR
259                         The path to the Windows CE SDK],
260     WINCE_SDK_DIR=$withval)
262     MOZ_ARG_WITH_STRING(ogles-sdk,
263     [  --with-ogles-sdk=OGLES_SDK_DIR
264                         The path to the OGLES SDK],
265     OGLES_SDK_DIR=$withval)
267     dnl Default to Windows Mobile components enabled
268     WINCE_WINDOWS_MOBILE=1
270     MOZ_ARG_DISABLE_BOOL(windows-mobile-components,
271     [  --disable-windows-mobile-components
272          Disable Windows Mobile specific components from CE build],
273     WINCE_WINDOWS_MOBILE=,
274     WINCE_WINDOWS_MOBILE=1)
276     if test "$WINCE_WINDOWS_MOBILE"; then
277         AC_DEFINE(WINCE_WINDOWS_MOBILE)
278     fi
280     AC_DEFINE(WINCE)
281     
282     export WINCE=1
284     echo -----------------------------------------------------------------------------
285     echo Building Windows CE Shunt Library and Tool Chain
286     echo Using SDK in:
287     echo $WINCE_SDK_DIR
289     ac_exeext=.exe
291     _pwdw=`pwd -W`
292     _pwd=`pwd`
293     make OGLES_SDK_DIR="$OGLES_SDK_DIR" WINCE_SDK_DIR="$WINCE_SDK_DIR" TOPSRCDIR="$_topsrcdir" OBJDIR="$_pwdw" -C $srcdir/build/wince/tools
295     CC="$_pwd/dist/sdk/bin/arm-wince-gcc"
296     CXX="$_pwd/dist/sdk/bin/arm-wince-gcc"
297     CPP="$_pwd/dist/sdk/bin/arm-wince-gcc -E -nologo"
298     CXXCPP="$_pwd/dist/sdk/bin/arm-wince-gcc -TP -E -nologo"
299     LD="$_pwd/dist/sdk/bin/arm-wince-link"
300     AR="$_pwd/dist/sdk/bin/arm-wince-lib"
301     AS="$_pwd/dist/sdk/bin/arm-wince-as"
302     RC="$_pwd/dist/sdk/bin/arm-wince-res"
305     echo -----------------------------------------------------------------------------
307     ;;
308 esac
310 if test -n "$CROSS_COMPILE" && test "$target" != "$host"; then
311     echo "cross compiling from $host to $target"
312     cross_compiling=yes
314     _SAVE_CC="$CC"
315     _SAVE_CFLAGS="$CFLAGS"
316     _SAVE_LDFLAGS="$LDFLAGS"
318     AC_MSG_CHECKING([for host c compiler])
319     AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
320     if test -z "$HOST_CC"; then
321         AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
322     fi
323     AC_MSG_RESULT([$HOST_CC])
324     AC_MSG_CHECKING([for host c++ compiler])
325     AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
326     if test -z "$HOST_CXX"; then
327         AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
328     fi
329     AC_MSG_RESULT([$HOST_CXX])
331     if test -z "$HOST_CFLAGS"; then
332         HOST_CFLAGS="$CFLAGS"
333     fi
334     if test -z "$HOST_CXXFLAGS"; then
335         HOST_CXXFLAGS="$CXXFLAGS"
336     fi
337     if test -z "$HOST_LDFLAGS"; then
338         HOST_LDFLAGS="$LDFLAGS"
339     fi
340     AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
341     AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
342     CC="$HOST_CC"
343     CFLAGS="$HOST_CFLAGS"
344     LDFLAGS="$HOST_LDFLAGS"
346     AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
347     AC_TRY_COMPILE([], [return(0);], 
348         [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
349         AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
351     CC="$HOST_CXX"
352     CFLAGS="$HOST_CXXFLAGS"
354     AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
355     AC_TRY_COMPILE([], [return(0);], 
356         [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
357         AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
358     
359     CC=$_SAVE_CC
360     CFLAGS=$_SAVE_CFLAGS
361     LDFLAGS=$_SAVE_LDFLAGS
363     case "$build:$target" in
364       powerpc-apple-darwin8*:i?86-apple-darwin*)
365         dnl The Darwin cross compiler doesn't necessarily point itself at a
366         dnl root that has libraries for the proper architecture, it defaults
367         dnl to the system root.  The libraries in the system root on current
368         dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
369         dnl checks will fail.  Fake a working SDK in that case.
370         _SAVE_CFLAGS=$CFLAGS
371         _SAVE_CXXFLAGS=$CXXLAGS
372         CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk $CFLAGS"
373         CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk $CXXFLAGS"
374         ;;
375     esac
377     AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
378     unset ac_cv_prog_CC
379     AC_PROG_CC
380     AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
381     unset ac_cv_prog_CXX
382     AC_PROG_CXX
384     case "$build:$target" in
385       powerpc-apple-darwin8*:i?86-apple-darwin*)
386         dnl Revert the changes made above.  From this point on, the target
387         dnl compiler will never be used without applying the SDK to CFLAGS
388         dnl (see --with-macos-sdk below).
389         CFLAGS=$_SAVE_CFLAGS
390         CXXFLAGS=$_SAVE_CXXFLAGS
391         ;;
392     esac
394     AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
395     AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
396     MOZ_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
397     AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
398     AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
399     AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
400     AC_DEFINE(CROSS_COMPILE)
401 else
402     AC_PROG_CC
403     AC_PROG_CXX
404     AC_PROG_RANLIB
405     MOZ_PATH_PROGS(AS, $AS as, $CC)
406     AC_CHECK_PROGS(AR, ar, :)
407     AC_CHECK_PROGS(LD, ld, :)
408     AC_CHECK_PROGS(STRIP, strip, :)
409     AC_CHECK_PROGS(WINDRES, windres, :)
410     if test -z "$HOST_CC"; then
411         HOST_CC="$CC"
412     fi
413     if test -z "$HOST_CFLAGS"; then
414         HOST_CFLAGS="$CFLAGS"
415     fi
416     if test -z "$HOST_CXX"; then
417         HOST_CXX="$CXX"
418     fi
419     if test -z "$HOST_CXXFLAGS"; then
420         HOST_CXXFLAGS="$CXXFLAGS"
421     fi
422     if test -z "$HOST_LDFLAGS"; then
423         HOST_LDFLAGS="$LDFLAGS"
424     fi
425     if test -z "$HOST_RANLIB"; then
426         HOST_RANLIB="$RANLIB"
427     fi
428     if test -z "$HOST_AR"; then
429        HOST_AR="$AR"
430     fi
433 GNU_AS=
434 GNU_LD=
435 GNU_CC=
436 GNU_CXX=
437 CC_VERSION='N/A'
438 CXX_VERSION='N/A'
439 if test "$GCC" = "yes"; then
440     GNU_CC=1
441     CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
443 if test "$GXX" = "yes"; then
444     GNU_CXX=1
445     CXX_VERSION=`$CXX -v 2>&1 | grep 'gcc version'`
447 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
448     GNU_AS=1
450 if test "`echo | $LD -v 2>&1 | grep -c GNU`" != "0"; then
451     GNU_LD=1
453 if test "$GNU_CC"; then
454     if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
455         GCC_USE_GNU_LD=1
456     fi
459 INTEL_CC=
460 INTEL_CXX=
461 if test "$GCC" = yes; then
462    if test "`$CC -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
463      INTEL_CC=1
464    fi
467 if test "$GXX" = yes; then
468    if test "`$CXX -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
469      INTEL_CXX=1
470    fi
473 dnl Special win32 checks
474 dnl ========================================================
475 case "$target" in
476 *-wince)
477     WINVER=500
478     ;;
480     if test -n "$GNU_CC"; then  
481         WINVER=501
482     else    
483         WINVER=500
484     fi
485     ;;
486 esac
488 dnl Target the Windows 7 SDK by default
489 WINSDK_TARGETVER=601
491 MOZ_ARG_WITH_STRING(windows-version,
492 [  --with-windows-version=WINSDK_TARGETVER
493                           Highest Windows version to target using this SDK
494                               502: Windows Server 2003
495                               600: Windows Vista
496                               601: Windows 7],
497   WINSDK_TARGETVER=$withval)
499 case "$WINSDK_TARGETVER" in
500 502|600|601)
501     MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000
502     ;;
505     AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER), must be 502, 600 or 601]);
506     ;;
508 esac
510 dnl Vista SDK specific api (deprecated)
511 MOZ_ARG_DISABLE_BOOL(vista-sdk-requirements,
512 [  --disable-vista-sdk-requirements
513                            Do not build Vista SDK specific code],
514    MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=1,
515    MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=)
516 if test -n "$COMPILE_ENVIRONMENT"; then
517 if test -n "$MOZ_DISABLE_VISTA_SDK_REQUIREMENTS"; then
518     AC_MSG_WARN([--disable-vista-sdk-requirements is deprecated, use --with-windows-version=502 instead])
519     MOZ_WINSDK_TARGETVER=05020000
522 if test "$MOZ_WINSDK_TARGETVER" -lt "06000000"; then
523     MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=1
524     AC_DEFINE(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
525     # We can't build parental controls either
526     MOZ_DISABLE_PARENTAL_CONTROLS=1
530 AC_SUBST(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
532 case "$target" in
533 *-cygwin*|*-mingw*|*-msvc*|*-mks*|*-wince)
534     if test "$GCC" != "yes"; then
535         # Check to see if we are really running in a msvc environemnt
536         _WIN32_MSVC=1
537         AC_CHECK_PROGS(MIDL, midl)
539         # Make sure compilers are valid
540         CFLAGS="$CFLAGS -TC -nologo"
541         CXXFLAGS="$CXXFLAGS -TP -nologo"
542         AC_LANG_SAVE
543         AC_LANG_C
544         AC_TRY_COMPILE([#include <stdio.h>],
545             [ printf("Hello World\n"); ],,
546             AC_MSG_ERROR([\$(CC) test failed.  You must have MS VC++ in your path to build.]) )
548         AC_LANG_CPLUSPLUS
549         AC_TRY_COMPILE([#include <new.h>],
550             [ unsigned *test = new unsigned(42); ],,
551             AC_MSG_ERROR([\$(CXX) test failed.  You must have MS VC++ in your path to build.]) )
552         AC_LANG_RESTORE
553         
554         changequote(,)
555         _MSVC_VER_FILTER='s|.* ([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
556         changequote([,])
557         
558         # Determine compiler version
559         CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
560         _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
561         _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
562         _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
563         _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
564         _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
566         CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
567         _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
569         if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
570             AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
571         fi
572         if test "$_CC_MAJOR_VERSION" = "13"; then
573             _CC_SUITE=7
574         elif test "$_CC_MAJOR_VERSION" = "14"; then
575             _CC_SUITE=8
576             CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
577             dnl -DYNAMICBASE is only supported on VC8SP1 or newer,
578             dnl so be very specific here!
579             dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762
580             if test $_CC_RELEASE -gt 50727; then
581                _USE_DYNAMICBASE=1
582             elif test $_CC_BUILD -ge 762; then
583                _USE_DYNAMICBASE=1
584             fi
585             AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
586             AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
587         elif test "$_CC_MAJOR_VERSION" = "15"; then
588             _CC_SUITE=9
589             CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
590             LDFLAGS="$LDFLAGS -MANIFESTUAC:NO"
591             _USE_DYNAMICBASE=1
592             AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
593             AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
594         else
595             AC_MSG_ERROR([This version of the MSVC compiler, $CC_VERSION , is unsupported.])
596         fi
598         _MOZ_RTTI_FLAGS_ON='-GR'
599         _MOZ_RTTI_FLAGS_OFF='-GR-'
600         _MOZ_EXCEPTIONS_FLAGS_ON='-EHsc'
601         _MOZ_EXCEPTIONS_FLAGS_OFF=''
603         if test -n "$WIN32_REDIST_DIR"; then
604             WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
605         fi
606         
607         # bug #249782
608         # ensure that mt.exe is Microsoft (R) Manifest Tool and not magnetic tape manipulation utility (or something else)
609         if test "$_CC_SUITE" -ge "8"; then
610                 changequote(,)
611                 _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
612                 changequote([,])
614                 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
615                 if test -n "$MSMT_TOOL"; then
616                         MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
617                         if test -z "$MSMANIFEST_TOOL_VERSION"; then
618                                 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
619                         fi
620                         MSMANIFEST_TOOL=1
621                         unset MSMT_TOOL
622                 else
623                         AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
624                 fi
625         fi
627         # Check linker version
628         _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
629         _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
630         if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
631             AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION,  does not match the compiler suite version, $_CC_SUITE.])
632         fi
633         INCREMENTAL_LINKER=1
635         # Check midl version
636         _MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
637         _MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
638         _MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
639         _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
640         # Add flags if necessary
641         AC_MSG_CHECKING([for midl flags])
642         case "$target" in
643         i*86-*)
644             if test \( "$_MIDL_MAJOR_VERSION" = "7" -a "$_MIDL_MINOR_VERSION" = "00" -a "$_MIDL_REV_VERSION" = "0499" \); then
645                 # MIDL version 7.00.0499 defaults /env win64 on x64 platforms.
646                 # MIDL version 7.00.0500 or later has no problem.
647                 MIDL_FLAGS="${MIDL_FLAGS} -env win32"
648                 AC_MSG_RESULT([need -env win32])
649             else
650                 AC_MSG_RESULT([none needed])
651             fi
652             ;;
653         x86_64-*)
654             MIDL_FLAGS="${MIDL_FLAGS} -env x64"
655             ;;
656         *)
657             AC_MSG_RESULT([none needed])
658             ;;
659         esac
661         # Identify which version of the SDK we're building with
662         # Windows Server 2008 and newer SDKs have WinSDKVer.h, get the version
663         # from there
664         AC_CHECK_HEADERS([winsdkver.h])
665         if test "$ac_cv_header_winsdkver_h" = "yes"; then
666             # Get the highest _WIN32_WINNT and NTDDI versions supported
667             # Take the higher of the two
668             # This is done because the Windows 7 beta SDK reports its
669             # NTDDI_MAXVER to be 0x06000100 instead of 0x06010000, as it should
670             AC_CACHE_CHECK(for highest Windows version supported by this SDK,
671                            ac_cv_winsdk_maxver,
672                            [cat > conftest.h <<EOF
673 #include <winsdkver.h>
674 #include <sdkddkver.h>
676 #if (NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER) > NTDDI_MAXVER)
677 #define WINSDK_MAXVER NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER)
678 #else
679 #define WINSDK_MAXVER NTDDI_MAXVER
680 #endif
682 WINSDK_MAXVER
684                             ac_cv_winsdk_maxver=`$CPP conftest.h 2>/dev/null | tail -n1`
685                             rm -f conftest.h
686                            ])
687             MOZ_WINSDK_MAXVER=${ac_cv_winsdk_maxver}
688         else
689             # The Vista SDK is the only one to have sdkddkver.h but not
690             # WinSDKVer.h
691             AC_CHECK_HEADERS([sdkddkver.h])
692             if test "$ac_cv_header_sdkddkver_h" = "yes"; then
693                 MOZ_WINSDK_MAXVER=0x06000000
694             else
695                 # Assume the Server 2003 Platform SDK
696                 MOZ_WINSDK_MAXVER=0x05020000
697             fi
698         fi
700         unset _MSVC_VER_FILTER
702     else
703         # Check w32api version
704         _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
705         _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
706         AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
707         AC_TRY_COMPILE([#include <w32api.h>],
708             #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
709                 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
710                  __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
711                 #error "test failed."
712             #endif
713             , [ res=yes ], [ res=no ])
714         AC_MSG_RESULT([$res])
715         if test "$res" != "yes"; then
716             AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
717         fi
718         # Check windres version
719         AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
720         _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
721         AC_MSG_RESULT([$_WINDRES_VERSION])
722         _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
723         _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
724         _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
725         WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
726         WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
727         WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
728         if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
729                 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
730                 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
731                 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
732                 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
733                 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
734         then
735             AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
736         fi
738         # Server 2003 is the highest version supported
739         MOZ_WINSDK_MAXVER=0x05020000
740     fi # !GNU_CC
742     AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
743     AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
744     # Require OS features provided by IE 5.0
745     AC_DEFINE_UNQUOTED(_WIN32_IE,0x0500)
747     # If the maximum version supported by this SDK is lower than the target
748     # version, error out
749     AC_MSG_CHECKING([for Windows SDK being recent enough])
750     if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then
751         AC_MSG_RESULT("yes")
752     else
753         AC_MSG_RESULT("no")
754         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.])
755     fi
757     AC_DEFINE_UNQUOTED(MOZ_WINSDK_TARGETVER,0x$MOZ_WINSDK_TARGETVER)
758     # Definitions matching sdkddkver.h
759     AC_DEFINE_UNQUOTED(MOZ_NTDDI_WS03, 0x05020000)
760     AC_DEFINE_UNQUOTED(MOZ_NTDDI_LONGHORN, 0x06000000)
761     AC_DEFINE_UNQUOTED(MOZ_NTDDI_WIN7, 0x06010000)
762     ;;
763 esac
765 dnl Test breaks icc on OS/2 && MSVC
766 if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
767     AC_PROG_CC_C_O
768     if grep "NO_MINUS_C_MINUS_O 1" ./confdefs.h >/dev/null; then
769         USING_HCC=1
770         _OLDCC=$CC
771         _OLDCXX=$CXX
772         CC="${srcdir}/build/hcc '$CC'"
773         CXX="${srcdir}/build/hcpp '$CXX'"
774     fi
777 AC_PROG_CPP
778 AC_PROG_CXXCPP
780 if test -n "$_WIN32_MSVC"; then
781     SKIP_PATH_CHECKS=1
782     SKIP_COMPILER_CHECKS=1
783     SKIP_LIBRARY_CHECKS=1
785     # Since we're skipping compiler and library checks, hard-code
786     # some facts here.
787     case "$target" in
788     *-wince)
789         ;;
790     *)
791         AC_DEFINE(HAVE_IO_H)
792         AC_DEFINE(HAVE_SETBUF)
793         AC_DEFINE(HAVE_ISATTY)
794         ;;
795     esac
798 fi # COMPILE_ENVIRONMENT
800 AC_SUBST(MIDL_FLAGS)
801 AC_SUBST(_MSC_VER)
803 AC_SUBST(GNU_AS)
804 AC_SUBST(GNU_LD)
805 AC_SUBST(GNU_CC)
806 AC_SUBST(GNU_CXX)
807 AC_SUBST(INTEL_CC)
808 AC_SUBST(INTEL_CXX)
810 dnl ========================================================
811 dnl Checks for programs.
812 dnl ========================================================
813 AC_PROG_INSTALL
814 AC_PROG_LN_S
816 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
817 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
818 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
819 _perl_res=$?
820 AC_MSG_RESULT([$_perl_version])
822 if test "$_perl_res" != 0; then
823     AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
827 AC_MSG_CHECKING([for full perl installation])
828 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
829 _perl_res=$?
830 if test "$_perl_res" != 0; then
831     AC_MSG_RESULT([no])
832     AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}.  A full perl installation is required.])
833 else
834     AC_MSG_RESULT([yes])    
837 MOZ_PATH_PROGS(PYTHON, $PYTHON python2.5 python2.4 python)
838 if test -z "$PYTHON"; then
839     AC_MSG_ERROR([python was not found in \$PATH])
842 if test -z "$COMPILE_ENVIRONMENT"; then
843     NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
845 AC_SUBST(NSINSTALL_BIN)
847 MOZ_PATH_PROG(DOXYGEN, doxygen, :)
848 MOZ_PATH_PROG(WHOAMI, whoami, :)
849 MOZ_PATH_PROG(AUTOCONF, autoconf, :)
850 MOZ_PATH_PROG(UNZIP, unzip, :)
851 MOZ_PATH_PROGS(ZIP, zip)
852 if test -z "$ZIP" || test "$ZIP" = ":"; then
853     AC_MSG_ERROR([zip not found in \$PATH])
855 MOZ_PATH_PROG(SYSTEM_MAKEDEPEND, makedepend)
856 MOZ_PATH_PROG(XARGS, xargs)
857 if test -z "$XARGS" || test "$XARGS" = ":"; then
858     AC_MSG_ERROR([xargs not found in \$PATH .])
861 if test "$COMPILE_ENVIRONMENT"; then
863 dnl ========================================================
864 dnl = Mac OS X toolchain support
865 dnl ========================================================
867 case "$target_os" in
868 darwin*)
869     dnl Current known valid versions for GCC_VERSION are 2.95.2 3.1 3.3 4.0.
870     dnl 4.0 identifies itself as 4.0.x, so strip the decidecimal for
871     dnl the environment and includedir purposes (when using an SDK, below),
872     dnl but remember the full version number for the libdir (SDK).
873     changequote(,)
874     GCC_VERSION_FULL=`echo $CXX_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
875     GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
876     changequote([,])
877     if test "$GCC_VERSION_FULL" = "4.0.0" ; then
878         dnl Bug 280479, but this keeps popping up in bug 292530 too because
879         dnl 4.0.0/4061 is the default compiler in Tiger.
880         changequote(,)
881         GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
882         changequote([,])
883         if test "$GCC_BUILD" = "4061" ; then
884             AC_MSG_ERROR([You are attempting to use Apple gcc 4.0 build 4061.
885 This compiler was supplied with Xcode 2.0, and contains bugs that prevent it
886 from building Mozilla. Upgrade to Xcode 2.1 or later.])
887         fi
888     fi
890     dnl xcodebuild needs GCC_VERSION defined in the environment, since it
891     dnl doesn't respect the CC/CXX setting.  With GCC_VERSION set, it will use
892     dnl /usr/bin/g(cc|++)-$GCC_VERSION.
893     MOZ_PATH_PROGS(PBBUILD, pbbuild xcodebuild pbxbuild)
895     case "$PBBUILD" in
896       *xcodebuild*)
897         changequote(,)
898         XCODEBUILD_VERSION=`$PBBUILD -version 2>/dev/null | xargs | sed -e 's/.*DevToolsCore-\([0-9]*\).*/\1/'`
899         changequote([,])
900         if test -n "$XCODEBUILD_VERSION" && test "$XCODEBUILD_VERSION" -ge 620 ; then
901           HAS_XCODE_2_1=1;
902         fi
903       ;;
904     esac
906     dnl sdp was formerly in /Developer/Tools.  As of Mac OS X 10.4 (Darwin 8),
907     dnl it has moved into /usr/bin.
908     MOZ_PATH_PROG(SDP, sdp, :, [$PATH:/usr/bin:/Developer/Tools])
909     ;;
910 esac
912 AC_SUBST(GCC_VERSION)
913 AC_SUBST(XCODEBUILD_VERSION)
914 AC_SUBST(HAS_XCODE_2_1)
916 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
917 dnl that a universal binary is being produced.
918 AC_SUBST(UNIVERSAL_BINARY)
920 dnl ========================================================
921 dnl Check for MacOS deployment target version
922 dnl ========================================================
924 MOZ_ARG_ENABLE_STRING(macos-target,
925                       [  --enable-macos-target=VER (default=10.5)
926                           Set the minimum MacOS version needed at runtime],
927                       [_MACOSX_DEPLOYMENT_TARGET=$enableval])
929 case "$target" in
930 *-darwin*)
931     if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
932         dnl Use the specified value
933         export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
934         AC_DEFINE_UNQUOTED(__ENVIRONMENT_MAC_OS_X_VERION_MIN_REQUIRED__,$_MACOSX_DEPLOYMENT_TARGET)
935     elif test -z "$MACOSX_DEPLOYMENT_TARGET" ; then
936         dnl No value specified on the command line or in the environment,
937         dnl use architecture minimum.
938         export MACOSX_DEPLOYMENT_TARGET=10.5
939     fi
940     ;;
941 esac
943 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
945 dnl ========================================================
946 dnl = Mac OS X SDK support
947 dnl ========================================================
948 MACOS_SDK_DIR=
949 NEXT_ROOT=
950 MOZ_ARG_WITH_STRING(macos-sdk,
951 [  --with-macos-sdk=dir   Location of platform SDK to use (Mac OS X only)],
952     MACOS_SDK_DIR=$withval)
954 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
955 dnl NEXT_ROOT will be set and exported only if it's needed.
956 AC_SUBST(MACOS_SDK_DIR)
957 AC_SUBST(NEXT_ROOT)
959 if test "$MACOS_SDK_DIR"; then
960   dnl Sync this section with the ones in NSPR and NSS.
961   dnl Changes to the cross environment here need to be accounted for in
962   dnl the libIDL checks (below) and xpidl build.
964   if test ! -d "$MACOS_SDK_DIR"; then
965     AC_MSG_ERROR([SDK not found.  When using --with-macos-sdk, you must
966 specify a valid SDK.  SDKs are installed when the optional cross-development
967 tools are selected during the Xcode/Developer Tools installation.])
968   fi
970   GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
971   if test "$GCC_VERSION_MAJOR" -lt "4" ; then
972     AC_MSG_ERROR([You need to upgrade the compiler version to 4.x])
973   else
974     CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
975     CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
977     dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
978     CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
979     CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
981     if test "$GCC_VERSION_FULL" = "4.0.0" ; then
982       dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
983       dnl that supports -syslibroot.  Don't set NEXT_ROOT because it will
984       dnl be ignored and cause warnings when -syslibroot is specified.
985       dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
986       dnl the -isysroot it receives, so this is only needed with 4.0.0.
987       LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
988     fi
989   fi
991   AC_LANG_SAVE
992   AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
993   AC_LANG_CPLUSPLUS
994   AC_TRY_COMPILE([#include <new>
995                  int main() { return 0; }],
996    result=yes,
997    result=no)
998   AC_LANG_RESTORE
999   AC_MSG_RESULT($result)
1001   if test "$result" = "no" ; then
1002     AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
1003   fi
1006 fi # COMPILE_ENVIRONMENT
1008 dnl Be sure the make we use is GNU make.
1009 dnl on win32, gmake.exe is the generally the wrong version
1010 if test -n "$MAKE"; then
1011   if test `echo $MAKE | grep -c make.py` != 1; then
1012      NOT_PYMAKE=$MAKE
1013   fi
1016 case "$host_os" in
1017 cygwin*|mingw*|mks*|msvc*)
1018     MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :)
1019     ;;
1021     MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :)
1022     ;;
1023 esac
1024 if test "$GMAKE" = ":"; then
1025    AC_MSG_ERROR([GNU make not found])
1027 AC_SUBST(GMAKE)
1029 if test "$COMPILE_ENVIRONMENT"; then
1031 AC_PATH_XTRA
1033 XCFLAGS="$X_CFLAGS"
1035 fi # COMPILE_ENVIRONMENT
1037 dnl ========================================================
1038 dnl set the defaults first
1039 dnl ========================================================
1040 AS_BIN=$AS
1041 AR_FLAGS='cr $@'
1042 AR_LIST='$(AR) t'
1043 AR_EXTRACT='$(AR) x'
1044 AR_DELETE='$(AR) d'
1045 AS='$(CC)'
1046 AS_DASH_C_FLAG='-c'
1047 DLL_PREFIX=lib
1048 LIB_PREFIX=lib
1049 DLL_SUFFIX=.so
1050 OBJ_SUFFIX=o
1051 LIB_SUFFIX=a
1052 ASM_SUFFIX=s
1053 IMPORT_LIB_SUFFIX=
1054 TARGET_MD_ARCH=unix
1055 DIRENT_INO=d_ino
1056 CYGWIN_WRAPPER=
1057 WIN_TOP_SRC=
1058 MOZ_USER_DIR=".mozilla"
1059 HOST_AR='$(AR)'
1060 HOST_AR_FLAGS='$(AR_FLAGS)'
1062 MOZ_JPEG_CFLAGS=
1063 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/jpeg)'
1064 MOZ_ZLIB_CFLAGS=
1065 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,$(DEPTH)/modules/zlib/src)'
1066 MOZ_BZ2_CFLAGS=
1067 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
1068 MOZ_PNG_CFLAGS=
1069 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/modules/libimg/png)'
1071 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs'
1072 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxpcom -lxpcom_core'
1073 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
1074 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxpcom'
1075 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) -lxul'
1076 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
1077 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
1079 MOZ_FS_LAYOUT=unix
1081 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
1083 USE_DEPENDENT_LIBS=1
1085 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
1087 MOZ_ENABLE_POSTSCRIPT=1 
1089 if test -n "$CROSS_COMPILE"; then
1090     OS_TARGET="${target_os}"
1091     OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
1092     OS_RELEASE=
1093     case "${target_os}" in
1094         linux*)       OS_ARCH=Linux OS_TARGET=Linux ;;
1095         kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
1096         solaris*)     OS_ARCH=SunOS OS_RELEASE=5 ;;
1097         mingw*)       OS_ARCH=WINNT ;;
1098         wince*)       OS_ARCH=WINCE ;;
1099         darwin*)      OS_ARCH=Darwin OS_TARGET=Darwin ;;
1100     esac
1101 else
1102     OS_TARGET=`uname -s`
1103     OS_ARCH=`uname -s | sed -e 's|/|_|g'`
1104     OS_RELEASE=`uname -r`
1107 # Before this used `uname -m` when not cross compiling
1108 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1109 OS_TEST="${target_cpu}"
1111 _COMPILER_PREFIX=
1113 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1115 #######################################################################
1116 # Master "Core Components" macros for getting the OS target           #
1117 #######################################################################
1120 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1121 # cross-compilation.
1125 # Define and override various archtecture-specific variables, including
1126 # HOST_OS_ARCH
1127 # OS_ARCH
1128 # OS_TEST
1129 # OS_TARGET
1130 # OS_RELEASE
1131 # OS_MINOR_RELEASE
1134 case "$HOST_OS_ARCH" in
1135 cygwin*|mingw*|mks*|msvc*)
1136     HOST_OS_ARCH=WINNT
1137     ;;
1138 linux*)
1139     HOST_OS_ARCH=Linux
1140     ;;
1141 solaris*)
1142     HOST_OS_ARCH=SunOS
1143     SOLARIS_SUNPRO_CC=
1144     SOLARIS_SUNPRO_CXX=
1145     if test -z "$GNU_CC"; then
1146         if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then
1147             SOLARIS_SUNPRO_CC=1
1148        fi
1149     fi
1151     if test -z "$GNU_CXX"; then
1152        if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then
1153            SOLARIS_SUNPRO_CXX=1
1154        fi
1155     fi
1156     AC_SUBST(SOLARIS_SUNPRO_CC)
1157     AC_SUBST(SOLARIS_SUNPRO_CXX)
1158     ;;
1159 BSD_386)
1160     HOST_OS_ARCH=BSD
1161     ;;
1162 dgux)
1163     HOST_OS_ARCH=DGUX
1164     ;;
1165 IRIX64)
1166     HOST_OS_ARCH=IRIX
1167     ;;
1168 UNIX_SV)
1169     if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1170         HOST_OS_ARCH=NCR
1171     else
1172         HOST_OS_ARCH=UNIXWARE
1173     fi
1174     ;;
1175 ncr)
1176     HOST_OS_ARCH=NCR
1177     ;;
1178 UNIX_SYSTEM_V)
1179     HOST_OS_ARCH=NEC
1180     ;;
1181 OSF1)
1182     ;;
1183 *OpenVMS*)
1184     HOST_OS_ARCH=OpenVMS
1185     ;;
1186 OS_2)
1187     HOST_OS_ARCH=OS2
1188     ;;
1189 QNX)
1190     ;;
1191 SCO_SV)
1192     HOST_OS_ARCH=SCOOS
1193     ;;
1194 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1195     HOST_OS_ARCH=SINIX
1196     ;;
1197 UnixWare)
1198     HOST_OS_ARCH=UNIXWARE
1199     ;;
1200 esac
1202 case "$OS_ARCH" in
1203 WINNT)
1204     OS_TEST=`uname -p`
1205     ;;
1206 Windows_NT)
1208 # If uname -s returns "Windows_NT", we assume that we are using
1209 # the uname.exe in MKS toolkit.
1211 # The -r option of MKS uname only returns the major version number.
1212 # So we need to use its -v option to get the minor version number.
1213 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1215     OS_ARCH=WINNT
1216     OS_TARGET=WINNT
1217     OS_MINOR_RELEASE=`uname -v`
1218     if test "$OS_MINOR_RELEASE" = "00"; then
1219         OS_MINOR_RELEASE=0
1220     fi
1221     OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1222     ;;
1223 CYGWIN32_NT|CYGWIN_NT*|MINGW*_NT*)
1225 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
1226 # the uname.exe in the Cygwin tools.
1227 # Prior to the Beta 20 release, Cygwin was called GNU-Win32.
1228 # If uname -s returns "CYGWIN32/NT", we assume that we are using
1229 # the uname.exe in the GNU-Win32 tools.
1230 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1231 # the uname.exe in the MSYS tools.
1233     OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1234     OS_ARCH=WINNT
1235     OS_TARGET=WINNT
1236     ;;
1237 AIX)
1238     OS_RELEASE=`uname -v`.`uname -r`
1239     OS_TEST=${target_cpu}
1240     ;;
1241 BSD_386)
1242     OS_ARCH=BSD
1243     ;;
1244 dgux)
1245     OS_ARCH=DGUX
1246     ;;
1247 IRIX64)
1248     OS_ARCH=IRIX
1249     ;;
1250 UNIX_SV)
1251     if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1252         OS_ARCH=NCR
1253     else
1254         OS_ARCH=UNIXWARE
1255         OS_RELEASE=`uname -v`
1256     fi
1257     ;;
1258 ncr)
1259     OS_ARCH=NCR
1260     ;;
1261 UNIX_SYSTEM_V)
1262     OS_ARCH=NEC
1263     ;;
1264 OSF1)
1265     case `uname -v` in
1266     148)
1267         OS_RELEASE=V3.2C
1268         ;;
1269     564)
1270         OS_RELEASE=V4.0B
1271         ;;
1272     878)
1273         OS_RELEASE=V4.0D
1274         ;;
1275     esac
1276     ;;
1277 *OpenVMS*)
1278     OS_ARCH=OpenVMS
1279     OS_RELEASE=`uname -v`
1280     OS_TEST=`uname -p`
1281     ;;
1282 OS_2)
1283     OS_ARCH=OS2
1284     OS_TARGET=OS2
1285     OS_RELEASE=`uname -v`
1286     ;;
1287 QNX)
1288     if test "$OS_TARGET" != "NTO"; then
1289         changequote(,)
1290         OS_RELEASE=`uname -v | sed 's/^\([0-9]\)\([0-9]*\)$/\1.\2/'`
1291         changequote([,])
1292     fi
1293     OS_TEST=x86
1294     ;;
1295 SCO_SV)
1296     OS_ARCH=SCOOS
1297     OS_RELEASE=5.0
1298     ;;
1299 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1300     OS_ARCH=SINIX
1301     OS_TEST=`uname -p`
1302     ;;
1303 UnixWare)
1304     OS_ARCH=UNIXWARE
1305     OS_RELEASE=`uname -v`
1306     ;;
1307 WINCE)
1308     OS_ARCH=WINCE
1309     OS_TARGET=WINCE
1310     ;;
1311 Darwin)
1312     case "${target_cpu}" in
1313     powerpc*)
1314         OS_TEST=ppc
1315         ;;
1316     i*86*)
1317         OS_TEST=i386 
1318         ;;
1319     x86_64)
1320         OS_TEST=x86_64
1321         ;;
1322     *)
1323         if test -z "$CROSS_COMPILE" ; then
1324             OS_TEST=`uname -p`
1325         fi
1326         ;;
1327     esac
1328     ;;
1329 esac
1331 if test "$OS_ARCH" = "NCR"; then
1332     changequote(,)
1333     OS_RELEASE=`awk '{print $3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$/\2.\3/'`
1334     changequote([,])
1337 # Only set CPU_ARCH if we recognize the value of OS_TEST
1339 case "$OS_TEST" in
1340 *86 | i86pc)
1341     CPU_ARCH=x86
1342     ;;
1344 powerpc64 | ppc64)
1345     CPU_ARCH=ppc64
1346     ;;
1348 powerpc | ppc | rs6000)
1349     CPU_ARCH=ppc
1350     ;;
1352 Alpha | alpha | ALPHA)
1353     CPU_ARCH=Alpha
1354     ;;
1356 s390)
1357     CPU_ARCH=s390
1358     ;;
1360 s390x)
1361     CPU_ARCH=s390x
1362     ;;
1364 hppa* | parisc)
1365     CPU_ARCH=hppa
1366     ;;
1368 sun4u | sparc*)
1369     CPU_ARCH=sparc
1370     ;;
1372 x86_64 | ia64)
1373     CPU_ARCH="$OS_TEST"
1374     ;;
1376 arm)
1377     if test "$OS_TARGET" = "WINCE"; then
1378         CPU_ARCH="$OS_TEST"
1379     fi
1380     ;;
1381 esac
1383 if test -z "$OS_TARGET"; then
1384     OS_TARGET=$OS_ARCH
1386 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1388 dnl ========================================================
1389 dnl GNU specific defaults
1390 dnl ========================================================
1391 if test "$GNU_CC"; then
1392     # FIXME: Let us build with strict aliasing. bug 414641.
1393     CFLAGS="$CFLAGS -fno-strict-aliasing"
1394     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1395     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1396     DSO_LDOPTS='-shared'
1397     if test "$GCC_USE_GNU_LD"; then
1398         # Don't allow undefined symbols in libraries
1399         DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1400     fi
1401     WARNINGS_AS_ERRORS='-Werror'
1402     DSO_CFLAGS=''
1403     DSO_PIC_CFLAGS='-fPIC'
1404     ASFLAGS="$ASFLAGS -fPIC"
1405     _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
1406     _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
1407     _MOZ_EXCEPTIONS_FLAGS_ON='-fhandle-exceptions'
1408     _MOZ_EXCEPTIONS_FLAGS_OFF='-fno-handle-exceptions'
1410     # Turn on GNU specific features
1411     # -Wall - turn on all warnings
1412     # -pedantic - make compiler warn about non-ANSI stuff, and
1413     #             be a little bit stricter
1414     # Warnings slamm took out for now (these were giving more noise than help):
1415     # -Wbad-function-cast - warns when casting a function to a new return type
1416     # -Wshadow - removed because it generates more noise than help --pete
1417     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
1418     if test -z "$INTEL_CC"; then
1419        # Don't use -Wcast-align with ICC
1420        case "$CPU_ARCH" in
1421            # And don't use it on hppa, ia64, sparc, since it's noisy there
1422            hppa | ia64 | sparc)
1423            ;;
1424            *)
1425         _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1426            ;;
1427        esac
1428     fi
1430     dnl Turn pedantic on but disable the warnings for long long
1431     _PEDANTIC=1
1433     if test -z "$INTEL_CC"; then
1434       _IGNORE_LONG_LONG_WARNINGS=1
1435       _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
1436     else
1437       _IGNORE_LONG_LONG_WARNINGS=
1438     fi
1441     _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1442     _USE_CPP_INCLUDE_FLAG=1
1443 elif test "$SOLARIS_SUNPRO_CC"; then
1444     MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1445     MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1447     DSO_LDOPTS='-shared'
1448     if test "$GNU_LD"; then
1449         # Don't allow undefined symbols in libraries
1450         DSO_LDOPTS="$DSO_LDOPTS -z defs"
1451     fi
1453     DSO_CFLAGS=''
1454     if test "$CPU_ARCH" = "sparc"; then
1455         # for Sun Studio on Solaris/SPARC
1456         DSO_PIC_CFLAGS='-xcode=pic32'
1457     else
1458         DSO_PIC_CFLAGS='-KPIC'
1459     fi
1460     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1461 else
1462     MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1463     MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1465     DSO_LDOPTS='-shared'
1466     if test "$GNU_LD"; then
1467         # Don't allow undefined symbols in libraries
1468         DSO_LDOPTS="$DSO_LDOPTS -z defs"
1469     fi
1471     DSO_CFLAGS=''
1472     DSO_PIC_CFLAGS='-KPIC'
1473     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1476 if test "$GNU_CXX"; then
1477     # FIXME: Let us build with strict aliasing. bug 414641.
1478     CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
1479     # Turn on GNU specific features
1480     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
1481     if test -z "$INTEL_CC"; then
1482        # Don't use -Wcast-align with ICC
1483        case "$CPU_ARCH" in
1484            # And don't use it on hppa, ia64, sparc, since it's noisy there
1485            hppa | ia64 | sparc)
1486            ;;
1487            *)
1488         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1489            ;;
1490        esac
1491     fi
1493     _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1494     _USE_CPP_INCLUDE_FLAG=1
1496     AC_CACHE_CHECK(whether the compiler supports -Wno-invalid-offsetof,
1497                    ac_has_wno_invalid_offsetof,
1498         [
1499             AC_LANG_SAVE
1500             AC_LANG_CPLUSPLUS
1501             _SAVE_CXXFLAGS="$CXXFLAGS"
1502             CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1503             AC_TRY_COMPILE([],
1504                            [return(0);],
1505                            ac_has_wno_invalid_offsetof="yes",
1506                            ac_has_wno_invalid_offsetof="no")
1507             CXXFLAGS="$_SAVE_CXXFLAGS"
1508             AC_LANG_RESTORE
1509         ])
1510     if test "$ac_has_wno_invalid_offsetof" = "yes"; then
1511         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1512     fi
1513 else
1514     _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1517 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1518 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1519 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1520 dnl normal behavior.
1521 dnl ========================================================
1522 MKSHLIB_FORCE_ALL=
1523 MKSHLIB_UNFORCE_ALL=
1525 if test "$COMPILE_ENVIRONMENT"; then
1526 if test "$GNU_CC"; then
1527   AC_MSG_CHECKING(whether ld has archive extraction flags)
1528   AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1529    [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1530     ac_cv_mkshlib_force_and_unforce="no"
1531     exec 3<&0 <<LOOP_INPUT
1532         force="-Wl,--whole-archive";   unforce="-Wl,--no-whole-archive"
1533         force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1534         force="-Wl,-all";              unforce="-Wl,-none"
1535 LOOP_INPUT
1536     while read line
1537     do
1538       eval $line
1539       LDFLAGS=$force
1540       LIBS=$unforce
1541       AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1542     done
1543     exec 0<&3 3<&-
1544     LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1545    ])
1546   if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1547     AC_MSG_RESULT(no)
1548   else
1549     AC_MSG_RESULT(yes)
1550     eval $ac_cv_mkshlib_force_and_unforce
1551     MKSHLIB_FORCE_ALL=$force
1552     MKSHLIB_UNFORCE_ALL=$unforce
1553   fi
1554 fi # GNU_CC
1555 fi # COMPILE_ENVIRONMENT
1557 dnl =================================================================
1558 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1559 dnl which is bad when cross compiling.
1560 dnl =================================================================
1561 if test "$COMPILE_ENVIRONMENT"; then
1562 configure_static_assert_macros='
1563 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1564 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1565 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1568 dnl test that the macros actually work:
1569 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1570 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1571  [AC_LANG_SAVE
1572   AC_LANG_C
1573   ac_cv_static_assertion_macros_work="yes"
1574   AC_TRY_COMPILE([$configure_static_assert_macros],
1575                  [CONFIGURE_STATIC_ASSERT(1)],
1576                  ,
1577                  ac_cv_static_assertion_macros_work="no")
1578   AC_TRY_COMPILE([$configure_static_assert_macros],
1579                  [CONFIGURE_STATIC_ASSERT(0)],
1580                  ac_cv_static_assertion_macros_work="no",
1581                  )
1582   AC_LANG_CPLUSPLUS
1583   AC_TRY_COMPILE([$configure_static_assert_macros],
1584                  [CONFIGURE_STATIC_ASSERT(1)],
1585                  ,
1586                  ac_cv_static_assertion_macros_work="no")
1587   AC_TRY_COMPILE([$configure_static_assert_macros],
1588                  [CONFIGURE_STATIC_ASSERT(0)],
1589                  ac_cv_static_assertion_macros_work="no",
1590                  )
1591   AC_LANG_RESTORE
1592  ])
1593 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1594 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1595     AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1597 fi # COMPILE_ENVIRONMENT
1599 dnl ========================================================
1600 dnl Checking for 64-bit OS
1601 dnl ========================================================
1602 if test "$COMPILE_ENVIRONMENT"; then
1603 AC_LANG_SAVE
1604 AC_LANG_C
1605 AC_MSG_CHECKING(for 64-bit OS)
1606 AC_TRY_COMPILE([$configure_static_assert_macros],
1607                [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)],
1608                result="yes", result="no")
1609 AC_MSG_RESULT("$result")
1610 if test "$result" = "yes"; then
1611     AC_DEFINE(HAVE_64BIT_OS)
1612     HAVE_64BIT_OS=1
1614 AC_SUBST(HAVE_64BIT_OS)
1615 AC_LANG_RESTORE
1616 fi # COMPILE_ENVIRONMENT
1618 dnl ========================================================
1619 dnl Enable high-memory support on OS/2 by default.
1620 dnl ========================================================
1621 MOZ_OS2_HIGH_MEMORY=1
1622 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1623 [  --disable-os2-high-mem  Disable high-memory support on OS/2],
1624     MOZ_OS2_HIGH_MEMORY=,
1625     MOZ_OS2_HIGH_MEMORY=1 )
1626 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1628 dnl ========================================================
1629 dnl System overrides of the defaults for host
1630 dnl ========================================================
1631 case "$host" in
1632 *-beos*)
1633     HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
1634     HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
1635     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1636     ;;
1638 *cygwin*|*mingw*|*mks*|*msvc*|*wince)
1639     # we need Python 2.5 on Windows
1640     PYTHON_VERSION=2.5
1641     if test -n "$_WIN32_MSVC"; then
1642         HOST_AR=lib
1643         HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1644         HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1645         HOST_RANLIB='echo ranlib'
1646     else
1647         HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
1648     fi
1649     HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
1650     HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1651     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1652     HOST_BIN_SUFFIX=.exe
1653     case "$host" in
1654     *mingw*)
1655     dnl MinGW/MSYS does not need CYGWIN_WRAPPER
1656         PERL="/bin/sh ${_topsrcdir}/build/msys-perl-wrapper"
1657         ;;
1658     *)
1659         CYGWIN_WRAPPER="${srcdir}/build/cygwin-wrapper"
1660         if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
1661             _pwd=`pwd`
1662             CYGWIN_WRAPPER="${_pwd}/${srcdir}/build/cygwin-wrapper"
1663         fi
1664         if test "`${PERL} -v | grep -c cygwin  2>/dev/null`" = 0; then
1665             AS_PERL=1
1666             PERL="${CYGWIN_WRAPPER} $PERL"
1667         fi
1669         if test "`${PYTHON} -c 'import sys; print sys.platform;'`" != "cygwin"; then
1670             PYTHON="${CYGWIN_WRAPPER} $PYTHON"
1671         fi
1672         ;;
1673     esac
1675     case "${host_cpu}" in
1676     x86_64)
1677         HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
1678         ;;
1679     esac
1680     ;;
1682 *-darwin*)
1683     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1684     HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1685     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1686     MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
1687     ;;
1689 *-linux*|*-kfreebsd*-gnu)
1690     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1691     HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1692     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1693     ;;
1695 *os2*)
1696     HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1697     HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1698     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1699     HOST_BIN_SUFFIX=.exe
1700     MOZ_FIX_LINK_PATHS=
1701     ;;
1703 *-osf*)
1704     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1705     HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
1706     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1707     ;;
1710     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1711     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1712     ;;
1713 esac
1715 dnl We require version 2.4 or newer of Python to build,
1716 dnl and 2.5 or newer on Windows.
1717 AC_MSG_CHECKING([for minimum required Python version >= $PYTHON_VERSION])
1718 changequote(,)
1719 $PYTHON -c "import sys; sys.exit(sys.version[:3] < sys.argv[1])" $PYTHON_VERSION
1720 _python_res=$?
1721 changequote([,])
1722 if test "$_python_res" != 0; then
1723     AC_MSG_ERROR([Python $PYTHON_VERSION or higher is required.])
1725 AC_MSG_RESULT([yes])
1727 dnl Get mozilla version from central milestone file
1728 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1730 dnl Get version of various core apps from the version files.
1731 FIREFOX_VERSION=`cat $topsrcdir/browser/config/version.txt`
1733 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1734 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1736 dnl ========================================================
1737 dnl System overrides of the defaults for target
1738 dnl ========================================================
1740 case "$target" in
1741 *-aix*)
1742     AC_DEFINE(AIX)
1743     if test ! "$GNU_CC"; then
1744         if test ! "$HAVE_64BIT_OS"; then
1745             # Compiling with Visual Age C++ object model compat is the
1746             # default. To compile with object model ibm, add 
1747             # AIX_OBJMODEL=ibm to .mozconfig.
1748             if test "$AIX_OBJMODEL" = "ibm"; then
1749                 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1750             else
1751                 AIX_OBJMODEL=compat
1752             fi
1753         else
1754             AIX_OBJMODEL=compat
1755         fi
1756         AC_SUBST(AIX_OBJMODEL)
1757         DSO_LDOPTS='-qmkshrobj=1'
1758         DSO_CFLAGS='-qflag=w:w'
1759         DSO_PIC_CFLAGS=
1760         LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1761         AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
1762         MOZ_FIX_LINK_PATHS=
1763         MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1764         MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1765         if test "$COMPILE_ENVIRONMENT"; then
1766             AC_LANG_SAVE
1767             AC_LANG_CPLUSPLUS
1768             AC_MSG_CHECKING([for VisualAge C++ compiler version >= 6.0.0.3])
1769             AC_TRY_COMPILE([],
1770                 [#if (__IBMCPP__ < 600)
1771                  #error "Bad compiler"
1772                  #endif],
1773                 _BAD_COMPILER=,_BAD_COMPILER=1)
1774             if test -n "$_BAD_COMPILER"; then
1775                 AC_MSG_RESULT([no])    
1776                 AC_MSG_ERROR([VisualAge C++ version 6.0.0.3 or higher is required to build.])
1777             else
1778                 AC_MSG_RESULT([yes])    
1779             fi
1780             AC_LANG_RESTORE
1781             TARGET_COMPILER_ABI="ibmc"
1782             CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1783             CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1784         fi
1785     fi
1786     case "${target_os}" in
1787     aix4.1*)
1788         DLL_SUFFIX='_shr.a'
1789         ;;
1790     esac
1791     if test "$COMPILE_ENVIRONMENT"; then
1792         AC_CHECK_HEADERS(sys/inttypes.h)
1793     fi
1794     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1795     ;;
1797 *-beos*)
1798     no_x=yes
1799     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1800     _PLATFORM_DEFAULT_TOOLKIT="cairo-beos"
1801     DSO_LDOPTS='-nostart'
1802     TK_LIBS='-lbe -lroot'
1803     LIBS="$LIBS -lbe"
1804     if test "$COMPILE_ENVIRONMENT"; then
1805         AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
1806         AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
1807     fi
1808     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
1809     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
1810     _MOZ_USE_RTTI=1
1811     USE_DEPENDENT_LIBS=
1812     MOZ_USER_DIR="Mozilla"
1813     ;;
1815 *-bsdi*)
1816     dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
1817     _PEDANTIC=
1818     _IGNORE_LONG_LONG_WARNINGS=
1819     case $OS_RELEASE in
1820         4.*|5.*)
1821             STRIP="$STRIP -d"
1822             ;;
1823         *)
1824             DSO_CFLAGS=''
1825             DSO_LDOPTS='-r'
1826             _WARNINGS_CFLAGS="-Wall"
1827             _WARNINGS_CXXFLAGS="-Wall"
1828             # The test above doesn't work properly, at least on 3.1.
1829             MKSHLIB_FORCE_ALL=''
1830             MKSHLIB_UNFORCE_ALL=''
1831         ;;
1832     esac
1833     ;;
1835 *-darwin*) 
1836     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1837     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1838     MOZ_OPTIMIZE_FLAGS="-O3"
1839     _PEDANTIC=
1840     CFLAGS="$CFLAGS -fpascal-strings -fno-common"
1841     CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
1842     DLL_SUFFIX=".dylib"
1843     DSO_LDOPTS=''
1844     STRIP="$STRIP -x -S"
1845     _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1846     MOZ_ENABLE_POSTSCRIPT=
1847     TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1848     # The ExceptionHandling framework is needed for Objective-C exception
1849     # logging code in nsObjCExceptions.h. Currently we only use that in debug
1850     # builds.
1851     MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"
1853     dnl DTrace and -dead_strip don't interact well. See bug 403132.
1854     dnl ===================================================================
1855     if test "x$enable_dtrace" = "xyes"; then
1856         echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
1857     else
1858         dnl check for the presence of the -dead_strip linker flag
1859         AC_MSG_CHECKING([for -dead_strip option to ld])
1860         _SAVE_LDFLAGS=$LDFLAGS
1861         LDFLAGS="$LDFLAGS -Wl,-dead_strip"
1862         AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
1863         if test -n "$_HAVE_DEAD_STRIP" ; then
1864             AC_MSG_RESULT([yes])
1865             MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
1866         else
1867             AC_MSG_RESULT([no])
1868         fi
1869         
1870         LDFLAGS=$_SAVE_LDFLAGS
1871     fi
1872     ;;
1874 *-freebsd*)
1875     if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` != "elf"; then
1876         DLL_SUFFIX=".so.1.0"
1877         DSO_LDOPTS="-shared"
1878     fi
1879     if test ! "$GNU_CC"; then
1880         DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
1881     fi
1882 # Can't have force w/o an unforce.
1883 #    # Hack for FreeBSD 2.2
1884 #    if test -z "$MKSHLIB_FORCE_ALL"; then
1885 #       MKSHLIB_FORCE_ALL='-Wl,-Bforcearchive'
1886 #       MKSHLIB_UNFORCE_ALL=''
1887 #    fi
1888     ;; 
1890 *-hpux*)
1891     DLL_SUFFIX=".sl"
1892     if test ! "$GNU_CC"; then
1893         DSO_LDOPTS='-b -Wl,+s'
1894         DSO_CFLAGS=""
1895         DSO_PIC_CFLAGS="+Z"
1896         MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
1897         MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
1898         CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1899     else
1900         DSO_LDOPTS='-b -E +s'
1901         MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1902         MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1903     fi
1904     MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
1905     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1906     ;;
1908 *-irix5*)
1909     AC_DEFINE(IRIX)
1910     DSO_LDOPTS='-elf -shared'
1912     if test "$GNU_CC"; then
1913        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1914        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1915        MKSHLIB_FORCE_ALL='-Wl,-all'
1916        MKSHLIB_UNFORCE_ALL='-Wl,-none'
1917        CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1918     else
1919        MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1920        MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1921        MKSHLIB_FORCE_ALL='-all'
1922        MKSHLIB_UNFORCE_ALL='-none'
1923     fi
1924     ;;
1926 *-irix6*)
1927     AC_DEFINE(IRIX)
1928     dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must* 
1929     dnl compile and link using -n32
1930     USE_N32=1
1931     TARGET_COMPILER_ABI=n32
1932     DSO_LDOPTS='-elf -shared'
1933     MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1934     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1935     _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
1936     _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
1937     if test "$GNU_CC"; then
1938        MKSHLIB_FORCE_ALL='-Wl,-all'
1939        MKSHLIB_UNFORCE_ALL='-Wl,-none'
1940        _WARNINGS_CFLAGS="-Wall"
1941        _WARNINGS_CXXFLAGS="-Wall"
1942        CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1943     else
1944        MKSHLIB_FORCE_ALL='-all'
1945        MKSHLIB_UNFORCE_ALL='-none'
1946            AR_LIST="$AR t"
1947            AR_EXTRACT="$AR x"
1948            AR_DELETE="$AR d"
1949            AR='$(CXX) -ar'
1950            AR_FLAGS='-o $@'
1951        CFLAGS="$CFLAGS -woff 3262 -G 4"
1952        CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
1953        if test -n "$USE_N32"; then
1954            ASFLAGS="$ASFLAGS -n32"
1955            CFLAGS="$CFLAGS -n32"
1956            CXXFLAGS="$CXXFLAGS -n32"
1957            LDFLAGS="$LDFLAGS -n32"
1958        fi
1959        AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1960        AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
1961        MOZ_FIX_LINK_PATHS=
1962     fi
1963     if test -z "$GNU_CXX"; then
1964       MIPSPRO_CXX=1
1965     fi
1966     ;;
1968 *-*linux*)
1969     # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
1970     # Similarly for GNU_CXX and INTEL_CXX.
1971     if test "$INTEL_CC" || test "$INTEL_CXX"; then
1972         # -Os has been broken on Intel's C/C++ compilers for quite a
1973         # while; Intel recommends against using it.
1974         MOZ_OPTIMIZE_FLAGS="-O2"
1975         MOZ_DEBUG_FLAGS="-g -fno-inline"
1976     elif test "$GNU_CC" || test "$GNU_CXX"; then
1977         GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
1978         case $GCC_VERSION in
1979         4.1.*|4.2.*)
1980             # -Os is broken on gcc 4.1.x and 4.2.x, we need to tweak it to get good results.
1981             MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
1982         esac
1983         MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions $MOZ_OPTIMIZE_SIZE_TWEAK"
1984         MOZ_DEBUG_FLAGS="-g -fno-inline"  # most people on linux use gcc/gdb,
1985                                           # and that combo is not yet good at
1986                                           # debugging inlined functions (even
1987                                           # when using DWARF2 as the debugging
1988                                           # format)
1989     fi
1991     TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1993     MOZ_MEMORY=1
1995     case "${target_cpu}" in
1996     alpha*)
1997         CFLAGS="$CFLAGS -mieee"
1998         CXXFLAGS="$CXXFLAGS -mieee"
1999     ;;
2000     i*86)
2001         USE_ELF_DYNSTR_GC=1
2002     ;;
2003     mips*)
2004         MOZ_DEBUG_FLAGS="-g" # We want inlining
2005     ;;
2006     esac
2007     ;;
2009 *-wince*)
2010     TARGET_COMPILER_ABI=msvc
2011     MOZ_TOOLS_DIR=`echo $MOZ_TOOLS`
2012     AR_LIST="$AR -list"
2013     AR_EXTRACT="$AR -extract"
2014     AR_DELETE="$AR d"
2015     AR_FLAGS='-OUT:"$@"'
2017     if test "$AS_BIN"; then
2018         AS="$AS_BIN"
2019     fi
2020     DSO_CFLAGS=
2021     DSO_PIC_CFLAGS=
2022     DLL_SUFFIX=.dll
2023     BIN_SUFFIX='.exe'
2024     if test -z "$RC"; then 
2025         RC=rc.exe  
2026     fi
2027     # certain versions of cygwin's makedepend barf on the 
2028     # #include <string> vs -I./dist/include/string issue so don't use it
2029     SYSTEM_MAKEDEPEND=
2031     HOST_CC=cl
2032     HOST_CXX=cl
2033     HOST_LD=link
2034     HOST_AR='lib -OUT:$@'
2035     HOST_RANLIB='echo ranlib'
2036     HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
2037         
2038         
2039     WARNINGS_AS_ERRORS='-WX'
2040     MOZ_OPTIMIZE_FLAGS='-Ox'
2041     AR_FLAGS='-NOLOGO -OUT:"$@"'
2042     ASM_SUFFIX=asm
2043     CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2044     CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2045     DLL_PREFIX=
2046     DOXYGEN=:
2047     DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
2048     DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
2049     GARBAGE=
2050     IMPORT_LIB_SUFFIX=lib
2051     LIBS="$LIBS"
2052     LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2053     LIB_PREFIX=
2054     LIB_SUFFIX=lib 
2055     MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
2056     MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
2057     MKSHLIB_FORCE_ALL=
2058     MKSHLIB_UNFORCE_ALL=
2059     MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2060     MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2061     MOZ_DEBUG_FLAGS='-Zi'
2062     MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2063     MOZ_FIX_LINK_PATHS=
2064     MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2065     OBJ_SUFFIX=obj
2066     RANLIB='echo not_ranlib'
2067     STRIP='echo not_strip'
2068     TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
2069     UNZIP=unzip
2070     XARGS=xargs
2071     XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
2072     ZIP=zip
2073     LIBIDL_CFLAGS="-I$MOZ_TOOLS_DIR/include ${GLIB_CFLAGS}"
2074     LIBIDL_LIBS="$MOZ_TOOLS_DIR/lib/libidl-0.6_s.lib $MOZ_TOOLS_DIR/lib/glib-1.2_s.lib"
2075     STATIC_LIBIDL=1
2076     MOZ_TREE_FREETYPE=1
2078     AC_DEFINE(HAVE_SNPRINTF)
2079     AC_DEFINE(_WINDOWS)
2080     AC_DEFINE(WIN32)
2081     AC_DEFINE(XP_WIN)
2082     AC_DEFINE(XP_WIN32)
2083     AC_DEFINE(HW_THREADS)
2084     AC_DEFINE(STDC_HEADERS)
2085     AC_DEFINE(NEW_H, <new>)
2086     AC_DEFINE(WIN32_LEAN_AND_MEAN)
2087     AC_DEFINE(HAVE_LOCALTIME_R)
2089     TARGET_MD_ARCH=win32
2090     _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2091     BIN_SUFFIX='.exe'
2092     MOZ_ENABLE_POSTSCRIPT=
2093     MOZ_USER_DIR="Mozilla"
2095     MOZ_GFX_OPTIMIZE_MOBILE=1
2097     # Sanity check for WINCE_WINDOWS_MOBILE
2098     # XXX disabled until we can fix the mobile tinderbox
2099     ##if test "$WINCE_WINDOWS_MOBILE"; then
2100     ##   AC_CHECK_HEADER(tpcshell.h, [],
2101     ##        AC_MSG_ERROR([Can't find tpcshell.h in your SDK; are you sure you don't need --disable-windows-mobile-components?]))
2102     ##fi
2106 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2107     DSO_CFLAGS=
2108     DSO_PIC_CFLAGS=
2109     DLL_SUFFIX=.dll
2110     RC=rc.exe
2111     # certain versions of cygwin's makedepend barf on the 
2112     # #include <string> vs -I./dist/include/string issue so don't use it
2113     SYSTEM_MAKEDEPEND=
2114     if test -n "$GNU_CC"; then
2115         CC="$CC -mno-cygwin"
2116         CXX="$CXX -mno-cygwin"
2117         CPP="$CPP -mno-cygwin"
2118         CFLAGS="$CFLAGS -mms-bitfields"
2119         CXXFLAGS="$CXXFLAGS -mms-bitfields"
2120         DSO_LDOPTS='-shared'
2121         MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
2122         MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2123         RC='$(WINDRES)'
2124         # Use temp file for windres (bug 213281)
2125         RCFLAGS='-O coff --use-temp-file'
2126         # mingw doesn't require kernel32, user32, and advapi32 explicitly
2127         LIBS="$LIBS -lgdi32 -lwinmm -lwsock32"
2128         MOZ_JS_LIBS='-L$(LIBXUL_DIST)/lib -lmozjs'
2129         MOZ_FIX_LINK_PATHS=
2130         DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core'
2131         XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom'
2132         DLL_PREFIX=
2133         IMPORT_LIB_SUFFIX=dll.a
2134     else
2135         TARGET_COMPILER_ABI=msvc
2136         HOST_CC='$(CC)'
2137         HOST_CXX='$(CXX)'
2138         HOST_LD='$(LD)'
2139         if test "$AS_BIN"; then
2140             AS="$(basename "$AS_BIN")"
2141         fi
2142         AR='lib -NOLOGO -OUT:"$@"'
2143         AR_FLAGS=
2144         RANLIB='echo not_ranlib'
2145         STRIP='echo not_strip'
2146         XARGS=xargs
2147         ZIP=zip
2148         UNZIP=unzip
2149         DOXYGEN=:
2150         GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
2151         ASM_SUFFIX=asm
2152         OBJ_SUFFIX=obj
2153         LIB_SUFFIX=lib
2154         DLL_PREFIX=
2155         LIB_PREFIX=
2156         IMPORT_LIB_SUFFIX=lib
2157         MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2158         MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2159         MKSHLIB_FORCE_ALL=
2160         MKSHLIB_UNFORCE_ALL=
2161         DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2162         _USE_CPP_INCLUDE_FLAG=1
2163         _DEFINES_CFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2164         _DEFINES_CXXFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2165         CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2166         CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2167         LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
2168         MOZ_DEBUG_FLAGS='-Zi'
2169         MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2170         WARNINGS_AS_ERRORS='-WX'
2171         MOZ_OPTIMIZE_FLAGS='-O1'
2172         MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2173         MOZ_FIX_LINK_PATHS=
2174         DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
2175         XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
2176         LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2177         MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2178         if test $_MSC_VER -ge 1400; then
2179             LDFLAGS="$LDFLAGS -NXCOMPAT"
2180             dnl For profile-guided optimization
2181             PROFILE_GEN_CFLAGS="-GL"
2182             PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2183             dnl XXX: PGO builds can fail with warnings treated as errors,
2184             dnl specifically "no profile data available" appears to be
2185             dnl treated as an error sometimes. This might be a consequence
2186             dnl of using WARNINGS_AS_ERRORS in some modules, combined
2187             dnl with the linker doing most of the work in the whole-program
2188             dnl optimization/PGO case. I think it's probably a compiler bug,
2189             dnl but we work around it here.
2190             PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2191             dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2192             dnl Probably also a compiler bug, but what can you do?
2193             PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2194             if test -n "$_USE_DYNAMICBASE"; then
2195                LDFLAGS="$LDFLAGS -DYNAMICBASE"
2196             fi
2197         fi
2198     fi
2199     MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,jpeg$(MOZ_BITS)$(VERSION_NUMBER),$(DEPTH)/jpeg)'
2200     MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,png,$(DEPTH)/modules/libimg/png)'
2201     AC_DEFINE(HAVE_SNPRINTF)
2202     AC_DEFINE(_WINDOWS)
2203     AC_DEFINE(WIN32)
2204     AC_DEFINE(XP_WIN)
2205     AC_DEFINE(XP_WIN32)
2206     AC_DEFINE(HW_THREADS)
2207     AC_DEFINE(STDC_HEADERS)
2208     AC_DEFINE(NEW_H, <new>)
2209     AC_DEFINE(WIN32_LEAN_AND_MEAN)
2210     TARGET_MD_ARCH=win32
2211     _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2212     BIN_SUFFIX='.exe'
2213     MOZ_ENABLE_POSTSCRIPT=
2214     MOZ_USER_DIR="Mozilla"
2216     dnl Hardcode to win95 for now - cls
2217     TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2219     dnl set NO_X11 defines here as the general check is skipped on win32
2220     no_x=yes
2221     AC_DEFINE(NO_X11)
2223     dnl MinGW/MSYS doesn't provide or need cygpath
2224     case "$host" in
2225     *-mingw*)
2226         CYGPATH_W=echo
2227         CYGPATH_S=cat
2228         MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2229         ;;
2230     *-cygwin*|*-msvc*|*-mks*)
2231         CYGPATH_W="cygpath -a -w"
2232         CYGPATH_S="sed -e s|\\\\|/|g"
2233         MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
2234         ;;
2235     esac
2236     case "$host" in
2237     *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2239     if test -z "$MOZ_TOOLS"; then
2240         AC_MSG_ERROR([MOZ_TOOLS is not set])
2241     fi
2243     MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2244     if test "$?" != "0" || test -z "$MOZ_TOOLS_DIR"; then
2245         AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2246     fi
2247     MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
2248     if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
2249         AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2250     fi
2251     MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
2253     if test -n "$GLIB_PREFIX"; then
2254         _GLIB_PREFIX_DIR=`cd $GLIB_PREFIX && pwd -W`
2255         if test "$?" = "0"; then
2256             if test `echo ${PATH}: | grep -ic "$_GLIB_PREFIX_DIR/bin:"` = 0; then
2257                 AC_MSG_ERROR([GLIB_PREFIX must be in your \$PATH.])
2258             fi
2259             _GLIB_PREFIX_DIR=`$CYGPATH_W $_GLIB_PREFIX_DIR | $CYGPATH_S`
2260         else
2261             AC_MSG_ERROR([GLIB_PREFIX is set but "${GLIB_PREFIX}" is not a directory.])
2262         fi
2263     else
2264         _GLIB_PREFIX_DIR=$MOZ_TOOLS_DIR
2265     fi
2266     if test ! -f "${_GLIB_PREFIX_DIR}/include/glib.h"; then
2267         AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/include/glib.h .])
2268     fi
2269     GLIB_CFLAGS="-I${_GLIB_PREFIX_DIR}/include"
2270     if test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"; then
2271         GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"
2272     elif test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"; then
2273         GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"
2274     else
2275         AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/lib/glib-1.2.lib or $_GLIB_PREFIX_DIR/lib/glib-1.2_s.lib])
2276     fi
2278     if test -n "$LIBIDL_PREFIX"; then
2279         _LIBIDL_PREFIX_DIR=`cd $LIBIDL_PREFIX && pwd -W`
2280         if test "$?" = "0"; then
2281             if test `echo ${PATH}: | grep -ic "$_LIBIDL_PREFIX_DIR/bin:"` = 0; then
2282                 AC_MSG_ERROR([LIBIDL_PREFIX must be in your \$PATH.])
2283             fi
2284             _LIBIDL_PREFIX_DIR=`$CYGPATH_W $_LIBIDL_PREFIX_DIR | $CYGPATH_S`
2285         else
2286             AC_MSG_ERROR([LIBIDL_PREFIX is set but "${LIBIDL_PREFIX}" is not a directory.])
2287         fi
2288     else
2289         _LIBIDL_PREFIX_DIR=$MOZ_TOOLS_DIR
2290     fi        
2291     if test ! -f "${_LIBIDL_PREFIX_DIR}/include/libIDL/IDL.h"; then
2292         AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/include/libIDL/IDL.h .])
2293     fi
2294     LIBIDL_CFLAGS="-I${_LIBIDL_PREFIX_DIR}/include ${GLIB_CFLAGS}"
2295     if test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"; then
2296         LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"
2297         STATIC_LIBIDL=1
2298     elif test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"; then
2299         LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"
2300     else
2301         AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/lib/libidl-0.6.lib or $_LIBIDL_PREFIX_DIR/lib/libidl-0.6_s.lib])
2302     fi
2303     LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2304     ;;
2306     *) # else cross-compiling
2307         if test -n "$GLIB_PREFIX"; then
2308             GLIB_CFLAGS="-I${GLIB_PREFIX}/include"
2309             if test -f "${GLIB_PREFIX}/lib/glib-1.2_s.lib"; then
2310                 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2_s.lib"
2311             elif test -f "${GLIB_PREFIX}/lib/glib-1.2.lib"; then
2312                 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2.lib"
2313             else
2314                 AC_MSG_ERROR([Cannot find $GLIB_PREFIX/lib/glib-1.2.lib or $GLIB_PREFIX/lib/glib-1.2_s.lib])
2315             fi
2316         fi
2317         if test -n "$LIBIDL_PREFIX"; then
2318             LIBIDL_CFLAGS="-I${LIBIDL_PREFIX}/include ${GLIB_CFLAGS}"
2319             if test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"; then
2320                 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"
2321                 STATIC_LIBIDL=1
2322             elif test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"; then
2323                 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"
2324             else
2325                 AC_MSG_ERROR([Cannot find $LIBIDL_PREFIX/lib/libIDL-0.6.lib or $LIBIDL_PREFIX/lib/libIDL-0.6_s.lib])
2326             fi
2327         fi
2328         LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2329         ;;
2330     esac 
2333     case "$host_os" in
2334     cygwin*|msvc*|mks*)
2335         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])
2336         ;;
2338     *)
2339         AC_CHECK_HEADERS(oleacc.idl)
2341         AC_LANG_SAVE
2342         AC_LANG_CPLUSPLUS
2343         AC_CHECK_HEADERS(atlbase.h)
2344         AC_LANG_RESTORE
2345         ;;
2346     esac
2348     case "$target" in
2349     i*86-*)
2350         if test "$HAVE_64BIT_OS"; then
2351             AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
2352         fi
2354         if test $_MSC_VER -ge 1400; then
2355             LDFLAGS="$LDFLAGS -SAFESEH"
2356         fi
2357         AC_CHECK_HEADERS(mmintrin.h)
2358         AC_DEFINE(_X86_)
2359         ;;
2360     alpha-*)
2361         AC_DEFINE(_ALPHA_)
2362         ;;
2363     mips-*)
2364         AC_DEFINE(_MIPS_)
2365         ;;
2366     x86_64-*)
2367         AC_DEFINE(_AMD64_)
2368         ;;
2369     *)
2370         AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2371         ;;
2372     esac
2374     if test "$HAVE_64BIT_OS"; then
2375         AC_DEFINE(_WIN64)
2376     fi
2377     ;;
2379 *-netbsd*)
2380     DSO_CFLAGS=''
2381     CFLAGS="$CFLAGS -Dunix"
2382     CXXFLAGS="$CXXFLAGS -Dunix"
2383     if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2384         DLL_SUFFIX=".so"
2385         DSO_PIC_CFLAGS='-fPIC -DPIC'
2386         DSO_LDOPTS='-shared'
2387         BIN_FLAGS='-Wl,--export-dynamic'
2388     else
2389         DSO_PIC_CFLAGS='-fPIC -DPIC'
2390         DLL_SUFFIX=".so.1.0"
2391         DSO_LDOPTS='-shared'
2392     fi
2393     # This will fail on a.out systems prior to 1.5.1_ALPHA.
2394     MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2395     MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2396     if test "$LIBRUNPATH"; then
2397         DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2398     fi
2399     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2400     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2401     ;;
2403 *-nto*) 
2404         AC_DEFINE(NTO)  
2405         AC_DEFINE(_QNX_SOURCE)
2406         AC_DEFINE(_i386)
2407         OS_TARGET=NTO
2408         WARNINGS_AS_ERRORS=''
2409         MOZ_OPTIMIZE_FLAGS="-O"
2410         MOZ_DEBUG_FLAGS="-gstabs"
2411         USE_PTHREADS=1
2412         _PEDANTIC=
2413         LIBS="$LIBS -lsocket -lstdc++"
2414         _DEFINES_CFLAGS='-Wp,-include -Wp,$(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
2415         _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -Wp,-include -Wp,$(DEPTH)/mozilla-config.h -D_POSIX_C_SOURCE=199506'
2416         if test "$with_x" != "yes"
2417         then
2418                 _PLATFORM_DEFAULT_TOOLKIT="photon"
2419             TK_CFLAGS='-I/usr/include/photon'
2420                 TK_LIBS='-lph'
2421         fi
2422         case "${target_cpu}" in
2423         ppc*)
2424         AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)        
2425         ;;
2426         esac
2427         case "${host_cpu}" in
2428         i*86)
2429         USE_ELF_DYNSTR_GC=1
2430         ;;
2431         esac
2432         ;;
2434 *-openbsd*)
2435     DLL_SUFFIX=".so.1.0"
2436     DSO_CFLAGS=''
2437     DSO_PIC_CFLAGS='-fPIC'
2438     DSO_LDOPTS='-shared -fPIC'
2439     if test "$LIBRUNPATH"; then
2440         DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2441     fi
2442     ;;
2444 *-openvms*) 
2445     AC_DEFINE(NO_PW_GECOS)
2446     AC_DEFINE(NO_UDSOCK)
2447     AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
2448     USE_PTHREADS=1
2449     MKSHLIB_FORCE_ALL='-all'
2450     MKSHLIB_UNFORCE_ALL='-none'
2451     AS='as'
2452     AS_DASH_C_FLAG='-Wc/names=as_is'
2453     AR_FLAGS='c $@'
2454     DSO_LDOPTS='-shared -auto_symvec'
2455     DSO_PIC_CFLAGS=
2456     MOZ_DEBUG_LDFLAGS='-g'
2457     COMPAQ_CXX=1
2458     CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
2459     CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
2460     ;;
2463 *-os2*)
2464     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2465     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2466     AC_DEFINE(OS2)
2467     AC_DEFINE(XP_OS2)
2468     AC_DEFINE(OS2EMX_PLAIN_CHAR)
2469     AC_DEFINE(TCPV40HDRS)
2470     DLL_PREFIX=
2471     LIB_PREFIX=
2472     LIB_SUFFIX=lib
2473     BIN_SUFFIX=".exe"
2474     DLL_SUFFIX=".dll"
2475     IMPORT_LIB_SUFFIX=lib
2476     DSO_PIC_CFLAGS=
2477     AR=emxomfar
2478     AR_FLAGS='r $@'
2479     CFLAGS="$CFLAGS -Zomf"
2480     CXXFLAGS="$CXXFLAGS -Zomf"
2481     DSO_LDOPTS='-Zdll'
2482     BIN_FLAGS='-Zlinker /ST:0x100000'
2483     IMPLIB='emximp -o'
2484     FILTER='emxexp -o'
2485     LDFLAGS='-Zmap'
2486     WARNINGS_AS_ERRORS='-Werror'
2487     MOZ_DEBUG_FLAGS="-g -fno-inline"
2488     MOZ_OPTIMIZE_FLAGS="-O2"
2489     MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2490     DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
2491     LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2492     TARGET_MD_ARCH=os2
2493     _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2494     MOZ_ENABLE_POSTSCRIPT=
2495     RC=rc.exe
2496     RCFLAGS='-n'
2497     MOZ_USER_DIR="Mozilla"
2499     if test "$MOZTOOLS"; then
2500         MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2501     else
2502         AC_MSG_ERROR([MOZTOOLS is not set])
2503     fi
2504     if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2505         DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2506         LDFLAGS="$LDFLAGS -Zhigh-mem"
2507         MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2508         AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2509     fi
2511     # GCC for OS/2 currently predefines these, but we don't want them
2512     _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2513     _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2515     AC_CACHE_CHECK(for __declspec(dllexport),
2516         ac_os2_declspec,
2517         [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2518                         [return 0;],
2519                         ac_os2_declspec="yes",
2520                         ac_os2_declspec="no")])
2521     if test "$ac_os2_declspec" = "yes"; then
2522         FILTER='true'
2523         MOZ_OS2_USE_DECLSPEC='1'
2524     fi
2525     ;;
2527 alpha*-*-osf*)
2528     if test "$GNU_CC"; then
2529       MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2530       MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2532     else
2533         MOZ_DEBUG_FLAGS='-g'
2534         ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
2535         CFLAGS="$CFLAGS -ieee"
2536         CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee  -ptr $(DIST)/cxx_repository'
2537         DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
2538         DSO_CFLAGS=
2539         DSO_PIC_CFLAGS=
2540         MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2541         MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2542         MKSHLIB_FORCE_ALL='-all'
2543         MKSHLIB_UNFORCE_ALL='-none'
2544         dnl Might fix the libxpcom.so breakage on this platform as well....
2545         AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2546         AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2547     fi
2548     if test -z "$GNU_CXX"; then
2549       COMPAQ_CXX=1
2550     fi
2551     AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2552     ;;
2554 *-qnx*) 
2555     DIRENT_INO=d_stat.st_ino
2556     dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
2557     AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2558     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2559     dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
2560     AC_DEFINE(STDC_HEADERS)
2561     if test "$no_x" = "yes"; then
2562             _PLATFORM_DEFAULT_TOOLKIT='photon'
2563             TK_CFLAGS='-I/usr/nto/include/photon'
2564             TK_LIBS='-lphoton -lphrender'
2565     fi
2566     ;;
2568 *-sco*) 
2569     AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2570     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2571     CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
2572     if test ! "$GNU_CC"; then
2573        DSO_LDOPTS='-G'
2574     fi
2575     ;;
2577 dnl the qsort routine under solaris is faulty
2578 *-solaris*) 
2579     AC_DEFINE(SOLARIS)
2580     TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2581     SYSTEM_MAKEDEPEND=
2582     # $ORIGIN/.. is for shared libraries under components/ to locate shared
2583     # libraries one level up (e.g. libnspr4.so)
2584     LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..'"
2585     MOZ_MEMORY=1
2586     if test "$SOLARIS_SUNPRO_CC"; then
2587        LIBS="-lCrun -lCstd $LIBS"
2588        NS_USE_NATIVE=1
2589        MOZ_FIX_LINK_PATHS=
2590        AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2591        CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all"
2592        CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife -norunpath"
2593        LDFLAGS="-xildoff -z lazyload -z combreloc $LDFLAGS"
2594        if test -z "$CROSS_COMPILE" && test -f /usr/lib/ld/map.noexstk; then
2595            _SAVE_LDFLAGS=$LDFLAGS
2596            LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS" 
2597            AC_TRY_LINK([#include <stdio.h>],
2598                        [printf("Hello World\n");],
2599                        ,
2600                        [LDFLAGS=$_SAVE_LDFLAGS])
2601        fi
2602        WARNINGS_AS_ERRORS='-Werror'
2603        MOZ_OPTIMIZE_FLAGS="-xO4"
2604        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2605        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) -G -z muldefs -h $@ -o $@'
2606        MKSHLIB_FORCE_ALL='-z allextract'
2607        MKSHLIB_UNFORCE_ALL='-z defaultextract'
2608        DSO_LDOPTS='-G -z muldefs'
2609        AR_LIST="$AR t"
2610        AR_EXTRACT="$AR x"
2611        AR_DELETE="$AR d"
2612        AR='$(CXX) -xar'
2613        AR_FLAGS='-o $@'
2614        AS='/usr/ccs/bin/as'
2615        ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2616        AS_DASH_C_FLAG=''
2617        TARGET_COMPILER_ABI="sunc"
2618        CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2619        CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2620        AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
2621        AC_LANG_SAVE
2622        AC_LANG_CPLUSPLUS
2623        AC_TRY_COMPILE([],
2624            [#if (__SUNPRO_CC < 0x590)
2625            #error "Denied"
2626            #endif],
2627            _BAD_COMPILER=,_BAD_COMPILER=1)
2628         if test -n "$_BAD_COMPILER"; then
2629             _res="no"
2630             AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
2631         else
2632             _res="yes"
2633         fi
2634         AC_MSG_RESULT([$_res])
2635         AC_LANG_RESTORE
2636     else
2637        ASFLAGS="$ASFLAGS -fPIC"
2638        DSO_LDOPTS='-G'
2639        _WARNINGS_CFLAGS=''
2640        _WARNINGS_CXXFLAGS=''
2641        if test "$OS_RELEASE" = "5.3"; then
2642           AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2643        fi
2644     fi
2645     if test "$OS_RELEASE" = "5.5.1"; then
2646        AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2647     fi
2648     ;;
2650 *-sunos*) 
2651     DSO_LDOPTS='-Bdynamic'
2652     MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2653     MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2654     AC_DEFINE(SUNOS4)
2655     AC_DEFINE(SPRINTF_RETURNS_STRING)
2656     case "$(target_os)" in
2657     sunos4.1*)
2658         DLL_SUFFIX='.so.1.0'
2659         ;;
2660     esac
2661     ;;
2663 *-sysv4.2uw7*) 
2664         NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2665     ;;
2667 *-os2*)
2668     HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2669     ;;
2671 esac
2673 dnl Only one oddball right now (QNX), but this gives us flexibility
2674 dnl if any other platforms need to override this in the future.
2675 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2677 dnl ========================================================
2678 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2679 dnl by now will not have any way to link most binaries (tests
2680 dnl as well as viewer, apprunner, etc.), because some symbols
2681 dnl will be left out of the "composite" .so's by ld as unneeded.
2682 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2683 dnl they can link in the static libs that provide the missing
2684 dnl symbols.
2685 dnl ========================================================
2686 NO_LD_ARCHIVE_FLAGS=
2687 if test -z "$MKSHLIB_FORCE_ALL" || test -z "$MKSHLIB_UNFORCE_ALL"; then
2688     NO_LD_ARCHIVE_FLAGS=1
2690 case "$target" in
2691 *-os2*)
2692     NO_LD_ARCHIVE_FLAGS=
2693     ;;
2694 *-aix4.3*|*-aix5*)
2695     NO_LD_ARCHIVE_FLAGS=
2696     ;;
2697 *-openvms*)
2698     NO_LD_ARCHIVE_FLAGS=
2699     ;;
2700 *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince)
2701     if test -z "$GNU_CC"; then
2702         NO_LD_ARCHIVE_FLAGS=
2703     fi
2704     ;;
2705 esac
2706 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2708 dnl ========================================================
2709 dnl = Flags to strip unused symbols from .so components
2710 dnl ========================================================
2711 case "$target" in
2712     *-linux*|*-kfreebsd*-gnu)
2713         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2714         ;;
2715     *-solaris*)
2716         if test -z "$GNU_CC"; then
2717          MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2718         else
2719          if test -z "$GCC_USE_GNU_LD"; then
2720           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2721          else
2722           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2723          fi
2724         fi
2725         ;;
2726     *-nto*) 
2727         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2728         ;;
2729     *-darwin*)
2730         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2731         ;;
2732     *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince)
2733         if test -n "$GNU_CC"; then
2734            MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2735         fi
2736         ;;
2737 esac
2739 if test -z "$COMPILE_ENVIRONMENT"; then
2740     SKIP_COMPILER_CHECKS=1
2741     SKIP_LIBRARY_CHECKS=1
2744 if test -z "$SKIP_COMPILER_CHECKS"; then
2745 dnl Checks for typedefs, structures, and compiler characteristics.
2746 dnl ========================================================
2747 AC_LANG_C
2748 AC_HEADER_STDC
2749 AC_C_CONST
2750 AC_TYPE_MODE_T
2751 AC_TYPE_OFF_T
2752 AC_TYPE_PID_T
2753 AC_TYPE_SIZE_T
2754 AC_STRUCT_ST_BLKSIZE
2755 AC_MSG_CHECKING(for siginfo_t)
2756 AC_CACHE_VAL(ac_cv_siginfo_t,
2757  [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2758                   #include <signal.h>],
2759                  [siginfo_t* info;],
2760                  [ac_cv_siginfo_t=true],
2761                  [ac_cv_siginfo_t=false])])
2762 if test "$ac_cv_siginfo_t" = true ; then
2763   AC_DEFINE(HAVE_SIGINFO_T)
2764   AC_MSG_RESULT(yes)
2765 else
2766   AC_MSG_RESULT(no)
2769 dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
2770 dnl ========================================================
2771 AC_MSG_CHECKING(for int16_t)
2772 AC_CACHE_VAL(ac_cv_int16_t,
2773  [AC_TRY_COMPILE([#include <stdio.h>
2774                   #include <sys/types.h>],
2775                  [int16_t foo = 0;],
2776                  [ac_cv_int16_t=true],
2777                  [ac_cv_int16_t=false])])
2778 if test "$ac_cv_int16_t" = true ; then
2779   AC_DEFINE(HAVE_INT16_T)
2780   AC_MSG_RESULT(yes)
2781 else
2782   AC_MSG_RESULT(no)
2784 AC_MSG_CHECKING(for int32_t)
2785 AC_CACHE_VAL(ac_cv_int32_t,
2786  [AC_TRY_COMPILE([#include <stdio.h>
2787                   #include <sys/types.h>],
2788                  [int32_t foo = 0;],
2789                  [ac_cv_int32_t=true],
2790                  [ac_cv_int32_t=false])])
2791 if test "$ac_cv_int32_t" = true ; then
2792   AC_DEFINE(HAVE_INT32_T)
2793   AC_MSG_RESULT(yes)
2794 else
2795   AC_MSG_RESULT(no)
2797 AC_MSG_CHECKING(for int64_t)
2798 AC_CACHE_VAL(ac_cv_int64_t,
2799  [AC_TRY_COMPILE([#include <stdio.h>
2800                   #include <sys/types.h>],
2801                  [int64_t foo = 0;],
2802                  [ac_cv_int64_t=true],
2803                  [ac_cv_int64_t=false])])
2804 if test "$ac_cv_int64_t" = true ; then
2805   AC_DEFINE(HAVE_INT64_T)
2806   AC_MSG_RESULT(yes)
2807 else
2808   AC_MSG_RESULT(no)
2810 AC_MSG_CHECKING(for int64)
2811 AC_CACHE_VAL(ac_cv_int64,
2812  [AC_TRY_COMPILE([#include <stdio.h>
2813                   #include <sys/types.h>],
2814                  [int64 foo = 0;],
2815                  [ac_cv_int64=true],
2816                  [ac_cv_int64=false])])
2817 if test "$ac_cv_int64" = true ; then
2818   AC_DEFINE(HAVE_INT64)
2819   AC_MSG_RESULT(yes)
2820 else
2821   AC_MSG_RESULT(no)
2823 AC_MSG_CHECKING(for uint)
2824 AC_CACHE_VAL(ac_cv_uint,
2825  [AC_TRY_COMPILE([#include <stdio.h>
2826                   #include <sys/types.h>],
2827                  [uint foo = 0;],
2828                  [ac_cv_uint=true],
2829                  [ac_cv_uint=false])])
2830 if test "$ac_cv_uint" = true ; then
2831   AC_DEFINE(HAVE_UINT)
2832   AC_MSG_RESULT(yes)
2833 else
2834   AC_MSG_RESULT(no)
2836 AC_MSG_CHECKING(for uint_t)
2837 AC_CACHE_VAL(ac_cv_uint_t,
2838  [AC_TRY_COMPILE([#include <stdio.h>
2839                   #include <sys/types.h>],
2840                  [uint_t foo = 0;],
2841                  [ac_cv_uint_t=true],
2842                  [ac_cv_uint_t=false])])
2843 if test "$ac_cv_uint_t" = true ; then
2844   AC_DEFINE(HAVE_UINT_T)
2845   AC_MSG_RESULT(yes)
2846 else
2847   AC_MSG_RESULT(no)
2849 AC_MSG_CHECKING(for uint16_t)
2850 AC_CACHE_VAL(ac_cv_uint16_t,
2851  [AC_TRY_COMPILE([#include <stdio.h>
2852                   #include <sys/types.h>],
2853                  [uint16_t foo = 0;],
2854                  [ac_cv_uint16_t=true],
2855                  [ac_cv_uint16_t=false])])
2856 if test "$ac_cv_uint16_t" = true ; then
2857   AC_DEFINE(HAVE_UINT16_T)
2858   AC_MSG_RESULT(yes)
2859 else
2860   AC_MSG_RESULT(no)
2863 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
2864 dnl are defined when compiling C++ but not C.  Since the result of this
2865 dnl test is used only in C++, do it in C++.
2866 AC_LANG_CPLUSPLUS
2868 AC_MSG_CHECKING(for uname.domainname)
2869 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
2870     [AC_TRY_COMPILE([#include <sys/utsname.h>],
2871         [ struct utsname *res; char *domain; 
2872             (void)uname(res);  if (res != 0) { domain = res->domainname; } ],
2873         [ac_cv_have_uname_domainname_field=true],
2874         [ac_cv_have_uname_domainname_field=false])])
2876 if test "$ac_cv_have_uname_domainname_field" = "true"; then
2877     AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
2878     AC_MSG_RESULT(yes)
2879 else
2880     AC_MSG_RESULT(no)
2883 AC_MSG_CHECKING(for uname.__domainname)
2884 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
2885     [AC_TRY_COMPILE([#include <sys/utsname.h>],
2886         [ struct utsname *res; char *domain; 
2887             (void)uname(res);  if (res != 0) { domain = res->__domainname; } ],
2888         [ac_cv_have_uname_us_domainname_field=true],
2889         [ac_cv_have_uname_us_domainname_field=false])])
2891 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
2892     AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
2893     AC_MSG_RESULT(yes)
2894 else
2895     AC_MSG_RESULT(no)
2898 AC_LANG_CPLUSPLUS
2900 dnl Check for usable char16_t (2 bytes, unsigned)
2901 dnl (we might not need the unsignedness check anymore)
2902 AC_CACHE_CHECK(for usable char16_t (2 bytes, unsigned),
2903     ac_cv_have_usable_char16_t,
2904     [AC_TRY_COMPILE([$configure_static_assert_macros],
2905                     [CONFIGURE_STATIC_ASSERT(sizeof(char16_t) == 2);
2906                      CONFIGURE_STATIC_ASSERT(char16_t(-1) > char16_t(0));
2907                      CONFIGURE_STATIC_ASSERT(sizeof((u"hello")[0]) == 2);
2908                      CONFIGURE_STATIC_ASSERT(sizeof(u'a') == 2);
2909                      CONFIGURE_STATIC_ASSERT(u'\xFFFF' > u'\x0')],
2910                     ac_cv_have_usable_char16_t="yes",
2911                     ac_cv_have_usable_char16_t="no")])
2912 if test "$ac_cv_have_usable_char16_t" = "yes"; then
2913     AC_DEFINE(HAVE_CPP_CHAR16_T)
2914     HAVE_CPP_CHAR16_T=1
2917 dnl Check for usable wchar_t (2 bytes, unsigned)
2918 dnl (we really don't need the unsignedness check anymore)
2919 dnl ========================================================
2921 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
2922     ac_cv_have_usable_wchar_v2,
2923     [AC_TRY_COMPILE([#include <stddef.h>
2924                      $configure_static_assert_macros],
2925                     [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2926                      CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2927                     ac_cv_have_usable_wchar_v2="yes",
2928                     ac_cv_have_usable_wchar_v2="no")])
2929 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
2930     AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2931     HAVE_CPP_2BYTE_WCHAR_T=1
2932 elif test "$ac_cv_have_usable_char16_t" != "yes"; then
2933 dnl This is really gcc-only
2934 dnl Do this test using CXX only since some versions of gcc
2935 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
2936 dnl only have short-wchar support for c++.
2937 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
2939     _SAVE_CXXFLAGS=$CXXFLAGS
2940     CXXFLAGS="$CXXFLAGS -fshort-wchar"
2942     AC_CACHE_CHECK(for compiler -fshort-wchar option, 
2943         ac_cv_have_usable_wchar_option_v2,
2944         [AC_TRY_LINK([#include <stddef.h>
2945                       $configure_static_assert_macros],
2946                      [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2947                       CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2948                      ac_cv_have_usable_wchar_option_v2="yes",
2949                      ac_cv_have_usable_wchar_option_v2="no")])
2951     if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
2952         AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2953         HAVE_CPP_2BYTE_WCHAR_T=1
2954         WCHAR_CFLAGS="-fshort-wchar"
2955     else    
2956         CXXFLAGS=$_SAVE_CXXFLAGS
2957     fi
2960 AC_LANG_C
2962 dnl Check for .hidden assembler directive and visibility attribute.
2963 dnl Borrowed from glibc configure.in
2964 dnl ===============================================================
2965 if test "$GNU_CC"; then
2966   AC_CACHE_CHECK(for visibility(hidden) attribute,
2967                  ac_cv_visibility_hidden,
2968                  [cat > conftest.c <<EOF
2969                   int foo __attribute__ ((visibility ("hidden"))) = 1;
2971                   ac_cv_visibility_hidden=no
2972                   if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2973                     if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2974                       ac_cv_visibility_hidden=yes
2975                     fi
2976                   fi
2977                   rm -f conftest.[cs]
2978                  ])
2979   if test "$ac_cv_visibility_hidden" = "yes"; then
2980     AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2982     AC_CACHE_CHECK(for visibility(default) attribute,
2983                    ac_cv_visibility_default,
2984                    [cat > conftest.c <<EOF
2985                     int foo __attribute__ ((visibility ("default"))) = 1;
2987                     ac_cv_visibility_default=no
2988                     if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2989                       if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2990                         ac_cv_visibility_default=yes
2991                       fi
2992                     fi
2993                     rm -f conftest.[cs]
2994                    ])
2995     if test "$ac_cv_visibility_default" = "yes"; then
2996       AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2998       AC_CACHE_CHECK(for visibility pragma support,
2999                      ac_cv_visibility_pragma,
3000                      [cat > conftest.c <<EOF
3001 #pragma GCC visibility push(hidden)
3002                       int foo_hidden = 1;
3003 #pragma GCC visibility push(default)
3004                       int foo_default = 1;
3006                       ac_cv_visibility_pragma=no
3007                       if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3008                         if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
3009                           if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
3010                             ac_cv_visibility_pragma=yes
3011                           fi
3012                         fi
3013                       fi
3014                       rm -f conftest.[cs]
3015                     ])
3016       if test "$ac_cv_visibility_pragma" = "yes"; then
3017         AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
3018                        ac_cv_have_visibility_class_bug,
3019                        [cat > conftest.c <<EOF
3020 #pragma GCC visibility push(hidden)
3021 struct __attribute__ ((visibility ("default"))) TestStruct {
3022   static void Init();
3024 __attribute__ ((visibility ("default"))) void TestFunc() {
3025   TestStruct::Init();
3028                        ac_cv_have_visibility_class_bug=no
3029                        if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
3030                          ac_cv_have_visibility_class_bug=yes
3031                        else
3032                          if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
3033                            ac_cv_have_visibility_class_bug=yes
3034                          fi
3035                        fi
3036                        rm -rf conftest.{c,S}
3037                        ])
3039         AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
3040                        ac_cv_have_visibility_builtin_bug,
3041                        [cat > conftest.c <<EOF
3042 #pragma GCC visibility push(hidden)
3043 #pragma GCC visibility push(default)
3044 #include <string.h>
3045 #pragma GCC visibility pop
3047 __attribute__ ((visibility ("default"))) void Func() {
3048   char c[[100]];
3049   memset(c, 0, sizeof(c));
3052                        ac_cv_have_visibility_builtin_bug=no
3053                        if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
3054                          ac_cv_have_visibility_builtin_bug=yes
3055                        else
3056                          if test `grep -c "@PLT" conftest.S` = 0; then
3057                            ac_cv_visibility_builtin_bug=yes
3058                          fi
3059                        fi
3060                        rm -f conftest.{c,S}
3061                        ])
3062         if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
3063                 "$ac_cv_have_visibility_class_bug" = "no"; then
3064           VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
3065           WRAP_SYSTEM_INCLUDES=1
3066         else
3067           VISIBILITY_FLAGS='-fvisibility=hidden'
3068         fi # have visibility pragma bug
3069       fi   # have visibility pragma
3070     fi     # have visibility(default) attribute
3071   fi       # have visibility(hidden) attribute
3072 fi         # GNU_CC
3074 # visibility hidden flag for Sun Studio on Solaris
3075 if test "$SOLARIS_SUNPRO_CC"; then
3076 VISIBILITY_FLAGS='-xldscope=hidden'
3077 fi         # Sun Studio on Solaris
3079 AC_SUBST(WRAP_SYSTEM_INCLUDES)
3080 AC_SUBST(VISIBILITY_FLAGS)
3082 dnl Checks for header files.
3083 dnl ========================================================
3084 AC_HEADER_DIRENT
3085 case "$target_os" in
3086 freebsd*)
3087 # for stuff like -lXshm
3088     CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
3089     ;;
3090 esac
3091 AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
3092 AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
3093 AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
3094 AC_CHECK_HEADERS(malloc.h)
3095 AC_CHECK_HEADERS(X11/XKBlib.h)
3096 AC_CHECK_HEADERS(io.h)
3098 dnl These are all the places some variant of statfs can be hiding.
3099 AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
3101 dnl Quota support
3102 AC_CHECK_HEADERS(sys/quota.h)
3104 dnl Try for MMX support
3105 dnl NB - later gcc versions require -mmmx for this header to be successfully
3106 dnl included (or another option which implies it, such as -march=pentium-mmx)
3107 AC_CHECK_HEADERS(mmintrin.h)
3109 dnl Check whether the compiler supports the new-style C++ standard
3110 dnl library headers (i.e. <new>) or needs the old "new.h"
3111 AC_LANG_CPLUSPLUS
3112 NEW_H=new.h
3113 AC_CHECK_HEADER(new, [NEW_H=new])
3114 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
3115 AC_LANG_C
3117 AC_ARG_ENABLE(dtrace,
3118               [  --enable-dtrace         build with dtrace support if available (default=no)],
3119               [enable_dtrace="yes"],)
3120 if test "x$enable_dtrace" = "xyes"; then
3121   AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
3122   if test -n "$HAVE_DTRACE"; then
3123       AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
3124   else
3125       AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
3126   fi
3128 AC_SUBST(HAVE_DTRACE)
3130 case $target in
3131 *-aix4.3*|*-aix5*)
3132         ;;
3134         AC_CHECK_HEADERS(sys/cdefs.h)
3135         ;;
3136 esac
3138 dnl Checks for libraries.
3139 dnl ========================================================
3140 case $target in
3141 *-hpux11.*)
3142         ;;
3144         AC_CHECK_LIB(c_r, gethostbyname_r)
3145         ;;
3146 esac
3148 dnl We don't want to link with libdl even if it's present on OS X, since
3149 dnl it's not used and not part of the default installation.
3150 dnl The same goes for BeOS. OS/2 has dlfcn in libc.
3151 dnl We don't want to link against libm or libpthread on Darwin since
3152 dnl they both are just symlinks to libSystem and explicitly linking
3153 dnl against libSystem causes issues when debugging (see bug 299601).
3154 case $target in
3155 *-darwin*)
3156     ;;
3157 *-beos*)
3158     ;;
3159 *-os2*)
3160     ;;
3162     AC_CHECK_LIB(m, atan)
3163     AC_CHECK_LIB(dl, dlopen,
3164     AC_CHECK_HEADER(dlfcn.h, 
3165         LIBS="-ldl $LIBS"
3166         AC_DEFINE(HAVE_LIBDL)))
3167     ;;
3168 esac
3170 _SAVE_CFLAGS="$CFLAGS"
3171 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3172 AC_CHECK_FUNCS(dladdr)
3173 CFLAGS="$_SAVE_CFLAGS"
3175 if test ! "$GNU_CXX"; then
3177     case $target in
3178     *-aix*)
3179         AC_CHECK_LIB(C_r, demangle)
3180         ;;
3181      *)
3182         AC_CHECK_LIB(C, demangle)
3183         ;;
3184      esac
3187 dnl OS/2 has socket in libc.
3188 case $target in
3189 *-os2*)
3190     ;;
3192     AC_CHECK_LIB(socket, socket)
3193 esac
3195 dnl ========================================================
3196 dnl Check whether we can compile code for Core Text and
3197 dnl Cocoa printing
3198 dnl (Mac OS X 10.5 or later)
3199 dnl ========================================================
3200 case "$target" in
3201 *-darwin*)
3202   AC_MSG_CHECKING([for Core Text])
3203   AC_TRY_COMPILE([#include <ApplicationServices/ApplicationServices.h>],
3204                  [CTLineRef lineRef;],
3205                   ac_cv_have_leopard="yes",
3206                   ac_cv_have_leopard="no")
3207   AC_MSG_RESULT([$ac_cv_have_leopard])
3209   MOZ_CORETEXT=1
3211   MOZ_ARG_DISABLE_BOOL(coretext,
3212 [  --disable-coretext      Use ATSUI instead of Core Text for text rendering],
3213     MOZ_CORETEXT=,
3214     MOZ_CORETEXT=1)
3216   if test -n "$MOZ_CORETEXT"; then
3217     if test "$ac_cv_have_leopard" = "no"; then
3218       AC_MSG_ERROR([--enable-coretext requires MacOS SDK 10.5 or newer])
3219      fi
3220      AC_DEFINE(MOZ_CORETEXT)
3221   fi
3223   MOZ_COCOA_PRINTING=1
3225   MOZ_ARG_DISABLE_BOOL(cocoa-printing,
3226 [  --disable-cocoa-printing
3227                           Use a Carbon print dialog instead of a Cocoa one],
3228     MOZ_COCOA_PRINTING=,
3229     MOZ_COCOA_PRINTING=1)
3231   if test -n "$MOZ_COCOA_PRINTING"; then
3232     if test "$ac_cv_have_leopard" = "no"; then
3233         AC_MSG_ERROR([--enable-cocoa-printing requires MacOS SDK 10.5 or newer])
3234     fi
3235     AC_DEFINE(MOZ_COCOA_PRINTING)
3236   fi
3237   ;;
3238 esac
3240 AC_SUBST(MOZ_COCOA_PRINTING)
3242 XLDFLAGS="$X_LIBS"
3243 XLIBS="$X_EXTRA_LIBS"
3245 dnl ========================================================
3246 dnl Checks for X libraries.
3247 dnl Ordering is important.
3248 dnl Xt is dependent upon SM as of X11R6
3249 dnl ========================================================
3250 if test "$no_x" = "yes"; then
3251     AC_DEFINE(NO_X11)
3252 else
3253     AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3254         XLIBS="-lX11 $XLIBS"
3255         _SAVE_LDFLAGS="$LDFLAGS"
3256         LDFLAGS="$XLDFLAGS $LDFLAGS"
3257         AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3258                 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3259         AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3260                 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3261      
3262         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3263         unset ac_cv_lib_Xt_XtFree
3264             AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3265             AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS) 
3266         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3267                     [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3268         ])
3270     # AIX needs the motif library linked before libXt to prevent
3271     # crashes in plugins linked against Motif - Bug #98892
3272     case "${target_os}" in
3273     aix*)
3274         XT_LIBS="-lXm $XT_LIBS"
3275         ;;
3276     esac
3278     dnl ========================================================
3279     dnl = Check for XShm
3280     dnl ========================================================
3281     AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3282         $XLIBS $XEXT_LIBS)
3283     AC_CHECK_HEADER(X11/extensions/XShm.h)
3284     if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" &&
3285         test -n "$_HAVE_XSHM_XEXT"; then
3286         AC_DEFINE(HAVE_XSHM)
3287     fi
3289     dnl ========================================================
3290     dnl = Check for XIE
3291     dnl ========================================================
3292     AC_CHECK_LIB(XIE, XieFloGeometry, [MOZ_XIE_LIBS="-lXIE"],,
3293         $XLIBS $XEXT_LIBS)
3294     AC_CHECK_HEADER(X11/extensions/XIElib.h)
3296     if test "$MOZ_XIE_LIBS"; then
3297         dnl ====================================================
3298         dnl = If XIE is present and is desired, turn it on
3299         dnl ====================================================
3300         case $target in
3301             *-hpux*)
3302                 ;;
3303             *)
3304                 HAVE_XIE=1
3305                 ;;
3306         esac
3307     fi
3309         LDFLAGS="$_SAVE_LDFLAGS"
3311     dnl ========================================================
3312     dnl = Check for freetype2 and its functionality
3313     dnl ========================================================
3314     AC_CHECK_FT2(6.1.0, [_HAVE_FREETYPE2=1], [_HAVE_FREETYPE2=])
3316     if test "$_HAVE_FREETYPE2"; then
3317         _SAVE_LIBS="$LIBS"
3318         _SAVE_CFLAGS="$CFLAGS"
3319         LIBS="$LIBS $FT2_LIBS"
3320         CFLAGS="$CFLAGS $FT2_CFLAGS"
3322         AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
3323             ac_cv_member_FT_Bitmap_Size_y_ppem,
3324             [AC_TRY_COMPILE([#include <ft2build.h>
3325                              #include FT_FREETYPE_H],
3326                             [FT_Bitmap_Size s;
3327                              if (sizeof s.y_ppem) return 0;
3328                              return 1],
3329                             ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
3330                             ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
3331         if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
3332             HAVE_FT_BITMAP_SIZE_Y_PPEM=1
3333         else
3334             HAVE_FT_BITMAP_SIZE_Y_PPEM=0
3335         fi
3336         AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
3337                            $HAVE_FT_BITMAP_SIZE_Y_PPEM,
3338                            [FT_Bitmap_Size structure includes y_ppem field])
3340         AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
3342         LIBS="$_SAVE_LIBS"
3343         CFLAGS="$_SAVE_CFLAGS"
3344     fi
3346 fi # $no_x
3348 AC_SUBST(XCFLAGS)
3349 AC_SUBST(XLDFLAGS)
3350 AC_SUBST(XLIBS)
3351 AC_SUBST(XEXT_LIBS)
3352 AC_SUBST(XT_LIBS)
3354 AC_MSG_CHECKING(for ARM SIMD support in compiler)
3355 AC_TRY_COMPILE([],
3356                [asm("uqadd8 r1, r1, r2");],
3357                result="yes", result="no")
3358 AC_MSG_RESULT("$result")
3359 if test "$result" = "yes"; then
3360     AC_DEFINE(HAVE_ARM_SIMD)
3361     HAVE_ARM_SIMD=1
3363 AC_SUBST(HAVE_ARM_SIMD)
3365 AC_MSG_CHECKING(for ARM NEON support in compiler)
3366 _SAVE_CFLAGS="$CFLAGS"
3367 if test "$GNU_CC"; then
3368   # gcc needs -mfpu=neon to recognize NEON instructions
3369   CFLAGS="$CFLAGS -mfpu=neon"
3371 AC_TRY_COMPILE([],
3372                [asm("vadd.i8 d0, d0, d0");],
3373                result="yes", result="no")
3374 AC_MSG_RESULT("$result")
3375 if test "$result" = "yes"; then
3376     AC_DEFINE(HAVE_ARM_NEON)
3377     HAVE_ARM_NEON=1
3379 CFLAGS="$_SAVE_CFLAGS"
3380 AC_SUBST(HAVE_ARM_NEON)
3382 dnl ========================================================
3383 dnl = pthread support
3384 dnl = Start by checking whether the system support pthreads
3385 dnl ========================================================
3386 case "$target_os" in
3387 darwin*)
3388     USE_PTHREADS=1
3389     ;;
3391     MOZ_CHECK_PTHREADS(pthreads,
3392         USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3393         MOZ_CHECK_PTHREADS(pthread,
3394             USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3395             MOZ_CHECK_PTHREADS(c_r,
3396                 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3397                 MOZ_CHECK_PTHREADS(c,
3398                     USE_PTHREADS=1
3399                 )
3400             )
3401         )
3402     )
3403     ;;
3404 esac
3406 dnl ========================================================
3407 dnl Check the command line for --with-pthreads 
3408 dnl ========================================================
3409 MOZ_ARG_WITH_BOOL(pthreads,
3410 [  --with-pthreads         Force use of system pthread library with NSPR ],
3411 [ if test "$USE_PTHREADS"x = x; then
3412     AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3413 fi],
3414     USE_PTHREADS=
3415     _PTHREAD_LDFLAGS=
3418 dnl ========================================================
3419 dnl Do the platform specific pthread hackery
3420 dnl ========================================================
3421 if test "$USE_PTHREADS"x != x
3422 then
3423         dnl
3424         dnl See if -pthread is supported.
3425         dnl
3426         rm -f conftest*
3427         ac_cv_have_dash_pthread=no
3428         AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3429         echo 'int main() { return 0; }' | cat > conftest.c
3430         ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3431         if test $? -eq 0; then
3432                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3433                         ac_cv_have_dash_pthread=yes
3434                 case "$target_os" in
3435                 freebsd*)
3436 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3437                 ;;
3438                 *)
3439                             CFLAGS="$CFLAGS -pthread"
3440                             CXXFLAGS="$CXXFLAGS -pthread"
3441                 ;;
3442                 esac
3443                 fi
3444         fi
3445         rm -f conftest*
3446     AC_MSG_RESULT($ac_cv_have_dash_pthread)
3448         dnl
3449         dnl See if -pthreads is supported.
3450         dnl
3451     ac_cv_have_dash_pthreads=no
3452     if test "$ac_cv_have_dash_pthread" = "no"; then
3453             AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3454         echo 'int main() { return 0; }' | cat > conftest.c
3455             ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3456         if test $? -eq 0; then
3457                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3458                             ac_cv_have_dash_pthreads=yes
3459                             CFLAGS="$CFLAGS -pthreads"
3460                             CXXFLAGS="$CXXFLAGS -pthreads"
3461                     fi
3462             fi
3463             rm -f conftest*
3464         AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3465     fi
3467         case "$target" in
3468             *-*-freebsd*)
3469                         AC_DEFINE(_REENTRANT)
3470                         AC_DEFINE(_THREAD_SAFE)
3471                         dnl -pthread links in -lc_r, so don't specify it explicitly.
3472                         if test "$ac_cv_have_dash_pthread" = "yes"; then
3473                                 _PTHREAD_LDFLAGS="-pthread"
3474                         else
3475                                 _PTHREAD_LDFLAGS="-lc_r"
3476                         fi
3477                         ;;
3479             *-*-openbsd*|*-*-bsdi*)
3480                         AC_DEFINE(_REENTRANT)
3481                         AC_DEFINE(_THREAD_SAFE)
3482                         dnl -pthread links in -lc_r, so don't specify it explicitly.
3483                         if test "$ac_cv_have_dash_pthread" = "yes"; then
3484                 _PTHREAD_LDFLAGS="-pthread"
3485                         fi
3486                         ;;
3488             *-*-linux*|*-*-kfreebsd*-gnu)
3489                         AC_DEFINE(_REENTRANT) 
3490                         ;;
3492             *-*-nto*) 
3493                         AC_DEFINE(_REENTRANT) 
3494                         ;;
3496             *-aix4.3*|*-aix5*)
3497                         AC_DEFINE(_REENTRANT) 
3498                         ;;
3500             *-hpux11.*)
3501                         AC_DEFINE(_REENTRANT) 
3502                         ;;
3504             alpha*-*-osf*)
3505                         AC_DEFINE(_REENTRANT)
3506                         ;;
3508             *-*-solaris*) 
3509                         AC_DEFINE(_REENTRANT)
3510                         if test "$SOLARIS_SUNPRO_CC"; then
3511                                 CFLAGS="$CFLAGS -mt" 
3512                                 CXXFLAGS="$CXXFLAGS -mt" 
3513                         fi
3514                         ;;
3515         esac
3516     LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3519 dnl ========================================================
3520 dnl See if mmap sees writes
3521 dnl For cross compiling, just define it as no, which is a safe default
3522 dnl ========================================================
3523 AC_MSG_CHECKING(whether mmap() sees write()s)
3525 changequote(,)
3526 mmap_test_prog='
3527     #include <stdlib.h>
3528     #include <unistd.h>
3529     #include <sys/mman.h>
3530     #include <sys/types.h>
3531     #include <sys/stat.h>
3532     #include <fcntl.h>
3534     char fname[] = "conftest.file";
3535     char zbuff[1024]; /* Fractional page is probably worst case */
3537     int main() {
3538         char *map;
3539         int fd;
3540         int i;
3541         unlink(fname);
3542         fd = open(fname, O_RDWR | O_CREAT, 0660);
3543         if(fd<0) return 1;
3544         unlink(fname);
3545         write(fd, zbuff, sizeof(zbuff));
3546         lseek(fd, 0, SEEK_SET);
3547         map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
3548         if(map==(char*)-1) return 2;
3549         for(i=0; fname[i]; i++) {
3550             int rc = write(fd, &fname[i], 1);
3551             if(map[i]!=fname[i]) return 4;
3552         }
3553         return 0;
3554     }
3556 changequote([,])
3558 AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
3560 AC_MSG_RESULT("$result")
3562 if test "$result" = "no"; then
3563     AC_DEFINE(MMAP_MISSES_WRITES)
3567 dnl Checks for library functions.
3568 dnl ========================================================
3569 AC_PROG_GCC_TRADITIONAL
3570 AC_FUNC_MEMCMP
3571 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 truncate64 statvfs64 setbuf isatty)
3572 AC_CHECK_FUNCS(flockfile getpagesize)
3573 AC_CHECK_FUNCS(localtime_r strtok_r)
3575 dnl check for wcrtomb/mbrtowc
3576 dnl =======================================================================
3577 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3578 AC_LANG_SAVE
3579 AC_LANG_CPLUSPLUS
3580 AC_CACHE_CHECK(for wcrtomb,
3581     ac_cv_have_wcrtomb,
3582     [AC_TRY_LINK([#include <wchar.h>],
3583                  [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3584                  ac_cv_have_wcrtomb="yes",
3585                  ac_cv_have_wcrtomb="no")])
3586 if test "$ac_cv_have_wcrtomb" = "yes"; then
3587     AC_DEFINE(HAVE_WCRTOMB)
3589 AC_CACHE_CHECK(for mbrtowc,
3590     ac_cv_have_mbrtowc,
3591     [AC_TRY_LINK([#include <wchar.h>],
3592                  [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3593                  ac_cv_have_mbrtowc="yes",
3594                  ac_cv_have_mbrtowc="no")])
3595 if test "$ac_cv_have_mbrtowc" = "yes"; then
3596     AC_DEFINE(HAVE_MBRTOWC)
3598 AC_LANG_RESTORE
3601 AC_CACHE_CHECK(
3602     [for res_ninit()],
3603     ac_cv_func_res_ninit,
3604     [AC_TRY_LINK([
3605         #ifdef linux
3606         #define _BSD_SOURCE 1
3607         #endif
3608         #include <resolv.h>
3609         ],
3610         [int foo = res_ninit(&_res);],
3611         [ac_cv_func_res_ninit=yes],
3612         [ac_cv_func_res_ninit=no])
3613     ])
3615 if test "$ac_cv_func_res_ninit" = "yes"; then
3616     AC_DEFINE(HAVE_RES_NINIT)
3617 dnl must add the link line we do something as foolish as this... dougt
3618 dnl else
3619 dnl    AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3620 dnl        AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3623 AC_LANG_CPLUSPLUS
3624 AC_CACHE_CHECK(
3625     [for gnu_get_libc_version()],
3626     ac_cv_func_gnu_get_libc_version,
3627     [AC_TRY_LINK([
3628         #ifdef HAVE_GNU_LIBC_VERSION_H
3629         #include <gnu/libc-version.h>
3630         #endif
3631         ],
3632         [const char *glibc_version = gnu_get_libc_version();],
3633         [ac_cv_func_gnu_get_libc_version=yes],
3634         [ac_cv_func_gnu_get_libc_version=no] 
3635         )]
3636     )
3638 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3639     AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3642 case $target_os in
3643     os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|beos*)
3644         ;;
3645     *)
3646     
3647 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3648     AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3649         AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3650 _SAVE_LIBS=$LIBS
3651 LIBS="$LIBS $_ICONV_LIBS"
3652 AC_CACHE_CHECK(
3653     [for iconv()],
3654     ac_cv_func_iconv,
3655     [AC_TRY_LINK([
3656         #include <stdlib.h>
3657         #include <iconv.h>
3658         ],
3659         [
3660             iconv_t h = iconv_open("", "");
3661             iconv(h, NULL, NULL, NULL, NULL);
3662             iconv_close(h);
3663         ],
3664         [ac_cv_func_iconv=yes],
3665         [ac_cv_func_iconv=no] 
3666         )]
3667     )
3668 if test "$ac_cv_func_iconv" = "yes"; then
3669     AC_DEFINE(HAVE_ICONV)
3670     DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3671     LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3672     LIBICONV="$_ICONV_LIBS"
3673     AC_CACHE_CHECK(
3674         [for iconv() with const input],
3675         ac_cv_func_const_iconv,
3676         [AC_TRY_COMPILE([
3677             #include <stdlib.h>
3678             #include <iconv.h>
3679             ],
3680             [
3681                 const char *input = "testing";
3682                 iconv_t h = iconv_open("", "");
3683                 iconv(h, &input, NULL, NULL, NULL);
3684                 iconv_close(h);
3685             ],
3686             [ac_cv_func_const_iconv=yes],
3687             [ac_cv_func_const_iconv=no] 
3688             )]
3689         )
3690     if test "$ac_cv_func_const_iconv" = "yes"; then
3691         AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3692     fi
3694 LIBS=$_SAVE_LIBS
3696     ;;
3697 esac
3699 AM_LANGINFO_CODESET
3701 AC_LANG_C
3703 dnl **********************
3704 dnl *** va_copy checks ***
3705 dnl **********************
3706 dnl we currently check for all three va_copy possibilities, so we get
3707 dnl all results in config.log for bug reports.
3708 AC_MSG_CHECKING(for an implementation of va_copy())
3709 AC_CACHE_VAL(ac_cv_va_copy,[
3710     AC_TRY_RUN([
3711         #include <stdarg.h>
3712         void f (int i, ...) {
3713             va_list args1, args2;
3714             va_start (args1, i);
3715             va_copy (args2, args1);
3716             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3717                 exit (1);
3718             va_end (args1); va_end (args2);
3719         }
3720         int main() { f (0, 42); return 0; }],
3721         ac_cv_va_copy=yes,
3722         ac_cv_va_copy=no,
3723         ac_cv_va_copy=no
3724     )
3726 AC_MSG_RESULT($ac_cv_va_copy)
3727 AC_MSG_CHECKING(for an implementation of __va_copy())
3728 AC_CACHE_VAL(ac_cv___va_copy,[
3729     AC_TRY_RUN([
3730         #include <stdarg.h>
3731         void f (int i, ...) {
3732             va_list args1, args2;
3733             va_start (args1, i);
3734             __va_copy (args2, args1);
3735             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3736                 exit (1);
3737             va_end (args1); va_end (args2);
3738         }
3739         int main() { f (0, 42); return 0; }],
3740         ac_cv___va_copy=yes,
3741         ac_cv___va_copy=no,
3742         ac_cv___va_copy=no
3743     )
3745 AC_MSG_RESULT($ac_cv___va_copy)
3746 AC_MSG_CHECKING(whether va_lists can be copied by value)
3747 AC_CACHE_VAL(ac_cv_va_val_copy,[
3748     AC_TRY_RUN([
3749         #include <stdarg.h>
3750         void f (int i, ...) {
3751             va_list args1, args2;
3752             va_start (args1, i);
3753             args2 = args1;
3754             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3755                 exit (1);
3756             va_end (args1); va_end (args2);
3757         }
3758         int main() { f (0, 42); return 0; }],
3759         ac_cv_va_val_copy=yes,
3760         ac_cv_va_val_copy=no,
3761         ac_cv_va_val_copy=yes
3762     )
3764 if test "x$ac_cv_va_copy" = "xyes"; then
3765     AC_DEFINE(VA_COPY, va_copy)
3766     AC_DEFINE(HAVE_VA_COPY)
3767 elif test "x$ac_cv___va_copy" = "xyes"; then
3768     AC_DEFINE(VA_COPY, __va_copy)
3769     AC_DEFINE(HAVE_VA_COPY)
3772 if test "x$ac_cv_va_val_copy" = "xno"; then
3773    AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3775 AC_MSG_RESULT($ac_cv_va_val_copy)
3777 dnl Check for dll-challenged libc's.
3778 dnl This check is apparently only needed for Linux.
3779 case "$target" in
3780         *-linux*)
3781             dnl ===================================================================
3782             _curdir=`pwd`
3783             export _curdir
3784             rm -rf conftest* _conftest
3785             mkdir _conftest
3786             cat >> conftest.C <<\EOF
3787 #include <stdio.h>
3788 #include <link.h>
3789 #include <dlfcn.h>
3790 #ifdef _dl_loaded
3791 void __dump_link_map(void) {
3792   struct link_map *map = _dl_loaded;
3793   while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
3795 int main() {
3796   dlopen("./conftest1.so",RTLD_LAZY);
3797   dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
3798   dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
3799   dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
3800   __dump_link_map();
3802 #else
3803 /* _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).*/
3804 int main() { printf("./conftest1.so\n"); }
3805 #endif
3808             $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
3810             cat >> conftest1.C <<\EOF
3811 #include <stdio.h>
3812 void foo(void) {printf("foo in dll called\n");}
3814             ${CXX-g++} -fPIC -c -g conftest1.C
3815             ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
3816             ${CXX-g++} -g conftest.C -o conftest -ldl
3817             cp -f conftest1.so conftest _conftest
3818             cd _conftest
3819             if test `./conftest | grep conftest1.so | wc -l` -gt 1
3820             then
3821                 echo
3822                 echo "*** Your libc has a bug that can result in loading the same dynamic"
3823                 echo "*** library multiple times.  This bug is known to be fixed in glibc-2.0.7-32"
3824                 echo "*** or later.  However, if you choose not to upgrade, the only effect"
3825                 echo "*** will be excessive memory usage at runtime."
3826                 echo
3827             fi
3828             cd ${_curdir}
3829             rm -rf conftest* _conftest
3830             dnl ===================================================================
3831             ;;
3832 esac
3834 dnl ===================================================================
3835 dnl ========================================================
3836 dnl By default, turn rtti and exceptions off on g++/egcs
3837 dnl ========================================================
3838 if test "$GNU_CXX"; then
3840   AC_MSG_CHECKING(for C++ exceptions flag)
3842   dnl They changed -f[no-]handle-exceptions to -f[no-]exceptions in g++ 2.8
3843   AC_CACHE_VAL(ac_cv_cxx_exceptions_flags,
3844   [echo "int main() { return 0; }" | cat > conftest.C
3846   ${CXX-g++} ${CXXFLAGS} -c -fno-handle-exceptions conftest.C > conftest.out 2>&1
3848   if egrep "warning.*renamed" conftest.out >/dev/null; then
3849     ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-exceptions
3850   else
3851     ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-handle-exceptions
3852   fi
3854   rm -f conftest*])
3856   AC_MSG_RESULT($ac_cv_cxx_exceptions_flags)
3857   _MOZ_EXCEPTIONS_FLAGS_OFF=$ac_cv_cxx_exceptions_flags
3858   _MOZ_EXCEPTIONS_FLAGS_ON=`echo $ac_cv_cxx_exceptions_flags | sed 's|no-||'`
3861 dnl ========================================================
3862 dnl Put your C++ language/feature checks below
3863 dnl ========================================================
3864 AC_LANG_CPLUSPLUS
3866 HAVE_GCC3_ABI=
3867 if test "$GNU_CC"; then
3868   AC_CACHE_CHECK(for gcc 3.0 ABI,
3869       ac_cv_gcc_three_abi,
3870       [AC_TRY_COMPILE([],
3871                       [
3872 #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
3873   return 0;
3874 #else
3875 #error Not gcc3.
3876 #endif
3877                       ],
3878                       ac_cv_gcc_three_abi="yes",
3879                       ac_cv_gcc_three_abi="no")])
3880   if test "$ac_cv_gcc_three_abi" = "yes"; then
3881       TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc3}"
3882       HAVE_GCC3_ABI=1
3883   else
3884       TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc2}"
3885   fi
3887 AC_SUBST(HAVE_GCC3_ABI)
3890 AC_CACHE_CHECK(for C++ \"explicit\" keyword,
3891                ac_cv_cpp_explicit,
3892                [AC_TRY_COMPILE(class X {
3893                                public: explicit X(int i) : i_(i) {}
3894                                private: int i_;
3895                                };,
3896                                X x(3);,
3897                                ac_cv_cpp_explicit=yes,
3898                                ac_cv_cpp_explicit=no)])
3899 if test "$ac_cv_cpp_explicit" = yes ; then
3900    AC_DEFINE(HAVE_CPP_EXPLICIT)
3903 AC_CACHE_CHECK(for C++ \"typename\" keyword,
3904                ac_cv_cpp_typename,
3905                [AC_TRY_COMPILE(class param {
3906                                public:
3907                                    typedef unsigned long num_type;
3908                                };
3910                                template <class T> class tplt {
3911                                public:
3912                                    typedef typename T::num_type t_num_type;
3913                                    t_num_type foo(typename T::num_type num) {
3914                                        return num;
3915                                    }
3916                                };,
3917                                tplt<param> A;
3918                                A.foo(0);,
3919                                ac_cv_cpp_typename=yes,
3920                                ac_cv_cpp_typename=no)])
3921 if test "$ac_cv_cpp_typename" = yes ; then
3922    AC_DEFINE(HAVE_CPP_TYPENAME)
3925 dnl Check for support of modern template specialization syntax
3926 dnl Test code and requirement from scc@netscape.com.
3927 dnl Autoconf cut-and-paste job by waterson@netscape.com
3928 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
3929                ac_cv_cpp_modern_specialize_template_syntax,
3930                [AC_TRY_COMPILE(template <class T> struct X { int a; };
3931                                class Y {};
3932                                template <> struct X<Y> { double a; };,
3933                                X<int> int_x;
3934                                X<Y> y_x;,
3935                                ac_cv_cpp_modern_specialize_template_syntax=yes,
3936                                ac_cv_cpp_modern_specialize_template_syntax=no)])
3937 if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
3938   AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
3942 dnl Some compilers support only full specialization, and some don't.
3943 AC_CACHE_CHECK(whether partial template specialization works,
3944                ac_cv_cpp_partial_specialization,
3945                [AC_TRY_COMPILE(template <class T> class Foo {};
3946                                template <class T> class Foo<T*> {};,
3947                                return 0;,
3948                                ac_cv_cpp_partial_specialization=yes,
3949                                ac_cv_cpp_partial_specialization=no)])
3950 if test "$ac_cv_cpp_partial_specialization" = yes ; then
3951   AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
3954 dnl Some compilers have limited support for operators with templates;
3955 dnl specifically, it is necessary to define derived operators when a base
3956 dnl class's operator declaration should suffice.
3957 AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
3958                ac_cv_need_derived_template_operators,
3959                [AC_TRY_COMPILE([template <class T> class Base { };
3960                                 template <class T>
3961                                 Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
3962                                 template <class T> class Derived : public Base<T> { };],
3963                                [Derived<char> a, b;
3964                                 Base<char> c = a + b;
3965                                 return 0;],
3966                                ac_cv_need_derived_template_operators=no,
3967                                ac_cv_need_derived_template_operators=yes)])
3968 if test "$ac_cv_need_derived_template_operators" = yes ; then
3969   AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
3973 dnl Some compilers have trouble detecting that a template class
3974 dnl that derives from another template is actually an instance
3975 dnl of the base class. This test checks for that.
3976 AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
3977                ac_cv_need_cpp_template_cast_to_base,
3978                [AC_TRY_COMPILE([template <class T> class Base { };
3979                                 template <class T> class Derived : public Base<T> { };
3980                                 template <class T> int foo(const Base<T>&) { return 0; }],
3981                                [Derived<char> bar; return foo(bar);],
3982                                ac_cv_need_cpp_template_cast_to_base=no,
3983                                ac_cv_need_cpp_template_cast_to_base=yes)])
3984 if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
3985   AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
3988 dnl Some compilers have trouble resolving the ambiguity between two
3989 dnl functions whose arguments differ only by cv-qualifications.
3990 AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
3991                ac_cv_can_resolve_const_ambiguity,
3992                [AC_TRY_COMPILE([
3993                                 template <class T> class ptrClass {
3994                                   public: T* ptr;
3995                                 };
3997                                 template <class T> T* a(ptrClass<T> *arg) {
3998                                   return arg->ptr;
3999                                 }
4001                                 template <class T>
4002                                 const T* a(const ptrClass<T> *arg) {
4003                                   return arg->ptr;
4004                                 }
4005                                ],
4006                                [ ptrClass<int> i;
4007                                  a(&i); ],
4008                                ac_cv_can_resolve_const_ambiguity=yes,
4009                                ac_cv_can_resolve_const_ambiguity=no)])
4010 if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
4011   AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
4015 dnl We don't do exceptions on unix.  The only reason this used to be here
4016 dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses 
4017 dnl exceptions.  But, we turn exceptions off by default and this test breaks.
4018 dnl So im commenting this out until someone writes some artificial 
4019 dnl intelligence to detect not only if the compiler has exceptions, but if 
4020 dnl they are enabled as well.
4021 dnl 
4022 dnl AC_CACHE_CHECK(for C++ \"exceptions\",
4023 dnl                ac_cv_cpp_exceptions,
4024 dnl                [AC_TRY_COMPILE(class X { public: X() {} };
4025 dnl                                static void F() { throw X(); },
4026 dnl                                try { F(); } catch(X & e) { },
4027 dnl                                ac_cv_cpp_exceptions=yes,
4028 dnl                                ac_cv_cpp_exceptions=no)])
4029 dnl if test $ac_cv_cpp_exceptions = yes ; then
4030 dnl    AC_DEFINE(HAVE_CPP_EXCEPTIONS)
4031 dnl fi
4033 dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
4034 dnl supports it well enough to allow us to use it to change access, but not
4035 dnl to resolve ambiguity. The next two tests determine how well the |using|
4036 dnl keyword is supported.
4038 dnl Check to see if we can change access with |using|.  Test both a
4039 dnl legal and an illegal example.
4040 AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
4041                ac_cv_cpp_access_changing_using2,
4042                [AC_TRY_COMPILE(
4043                    class A { protected: int foo() { return 0; } };
4044                    class B : public A { public: using A::foo; };,
4045                    B b; return b.foo();,
4046                    [AC_TRY_COMPILE(
4047                        class A { public: int foo() { return 1; } };
4048                        class B : public A { private: using A::foo; };,
4049                        B b; return b.foo();,
4050                        ac_cv_cpp_access_changing_using2=no,
4051                        ac_cv_cpp_access_changing_using2=yes)],
4052                    ac_cv_cpp_access_changing_using2=no)])
4053 if test "$ac_cv_cpp_access_changing_using2" = yes ; then
4054    AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
4057 dnl Check to see if we can resolve ambiguity with |using|.
4058 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
4059                ac_cv_cpp_ambiguity_resolving_using,
4060                [AC_TRY_COMPILE(class X { 
4061                                  public: int go(const X&) {return 3;}
4062                                          int jo(const X&) {return 3;}
4063                                };
4064                                class Y : public X {
4065                                  public:  int go(int) {return 2;}
4066                                           int jo(int) {return 2;}
4067                                           using X::jo;
4068                                  private: using X::go;
4069                                };,
4070                                X x; Y y; y.jo(x);,
4071                                ac_cv_cpp_ambiguity_resolving_using=yes,
4072                                ac_cv_cpp_ambiguity_resolving_using=no)])
4073 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
4074    AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
4077 dnl Check to see if the |std| namespace is supported. If so, we'll want
4078 dnl to qualify any standard library calls with "std::" to ensure that
4079 dnl those functions can be resolved.
4080 AC_CACHE_CHECK(for \"std::\" namespace,
4081                ac_cv_cpp_namespace_std,
4082                [AC_TRY_COMPILE([#include <algorithm>],
4083                                [return std::min(0, 1);],
4084                                ac_cv_cpp_namespace_std=yes,
4085                                ac_cv_cpp_namespace_std=no)])
4086 if test "$ac_cv_cpp_namespace_std" = yes ; then
4087    AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
4090 dnl Older compilers are overly ambitious with respect to using the standard
4091 dnl template library's |operator!=()| when |operator==()| is defined. In
4092 dnl which case, defining |operator!=()| in addition to |operator==()| causes
4093 dnl ambiguity at compile-time. This test checks for that case.
4094 AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
4095                ac_cv_cpp_unambiguous_std_notequal,
4096                [AC_TRY_COMPILE([#include <algorithm>
4097                                 struct T1 {};
4098                                 int operator==(const T1&, const T1&) { return 0; }
4099                                 int operator!=(const T1&, const T1&) { return 0; }],
4100                                [T1 a,b; return a != b;],
4101                                ac_cv_cpp_unambiguous_std_notequal=unambiguous,
4102                                ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
4103 if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
4104   AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
4108 AC_CACHE_CHECK(for C++ reinterpret_cast,
4109                ac_cv_cpp_reinterpret_cast,
4110                [AC_TRY_COMPILE(struct X { int i; };
4111                                struct Y { int i; };,
4112                                X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
4113                                ac_cv_cpp_reinterpret_cast=yes,
4114                                ac_cv_cpp_reinterpret_cast=no)])
4115 if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
4116    AC_DEFINE(HAVE_CPP_NEW_CASTS)
4119 dnl See if a dynamic_cast to void* gives the most derived object.
4120 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
4121                ac_cv_cpp_dynamic_cast_void_ptr,
4122                [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
4123                             class Y { int j; public: virtual ~Y() { } };
4124                             class Z : public X, public Y { int k; };
4126                             int main() {
4127                                  Z mdo;
4128                                  X *subx = (X*)&mdo;
4129                                  Y *suby = (Y*)&mdo;
4130                                  return !((((void*)&mdo != (void*)subx) &&
4131                                            ((void*)&mdo == dynamic_cast<void*>(subx))) ||
4132                                           (((void*)&mdo != (void*)suby) &&
4133                                            ((void*)&mdo == dynamic_cast<void*>(suby))));
4134                             }],
4135                            ac_cv_cpp_dynamic_cast_void_ptr=yes,
4136                            ac_cv_cpp_dynamic_cast_void_ptr=no,
4137                            ac_cv_cpp_dynamic_cast_void_ptr=no)])
4138 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
4139    AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
4143 dnl note that this one is reversed - if the test fails, then
4144 dnl we require implementations of unused virtual methods. Which
4145 dnl really blows because it means we'll have useless vtable
4146 dnl bloat.
4147 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
4148                ac_cv_cpp_unused_required,
4149                [AC_TRY_LINK(class X {private: virtual void never_called();};,
4150                                X x;,
4151                                ac_cv_cpp_unused_required=no,
4152                                ac_cv_cpp_unused_required=yes)])
4153 if test "$ac_cv_cpp_unused_required" = yes ; then
4154    AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
4158 dnl Some compilers have trouble comparing a constant reference to a templatized
4159 dnl class to zero, and require an explicit operator==() to be defined that takes
4160 dnl an int. This test separates the strong from the weak.
4162 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
4163                ac_cv_trouble_comparing_to_zero,
4164                [AC_TRY_COMPILE([#include <algorithm>
4165                                 template <class T> class Foo {};
4166                                 class T2;
4167                                 template <class T> int operator==(const T2*, const T&) { return 0; }
4168                                 template <class T> int operator!=(const T2*, const T&) { return 0; }],
4169                                [Foo<int> f; return (0 != f);],
4170                                ac_cv_trouble_comparing_to_zero=no,
4171                                ac_cv_trouble_comparing_to_zero=yes)])
4172 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
4173   AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
4178 dnl End of C++ language/feature checks
4179 AC_LANG_C
4181 dnl ========================================================
4182 dnl =  Internationalization checks
4183 dnl ========================================================
4185 dnl Internationalization and Locale support is different
4186 dnl on various UNIX platforms.  Checks for specific i18n
4187 dnl features go here.
4189 dnl check for LC_MESSAGES
4190 AC_CACHE_CHECK(for LC_MESSAGES,
4191                 ac_cv_i18n_lc_messages,
4192                 [AC_TRY_COMPILE([#include <locale.h>],
4193                                 [int category = LC_MESSAGES;],
4194                                 ac_cv_i18n_lc_messages=yes,
4195                                 ac_cv_i18n_lc_messages=no)])
4196 if test "$ac_cv_i18n_lc_messages" = yes; then
4197    AC_DEFINE(HAVE_I18N_LC_MESSAGES)
4198 fi      
4200 fi # SKIP_COMPILER_CHECKS
4202 TARGET_XPCOM_ABI=
4203 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
4204     TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
4207 dnl Mozilla specific options
4208 dnl ========================================================
4209 dnl The macros used for command line options
4210 dnl are defined in build/autoconf/altoptions.m4.
4213 dnl ========================================================
4214 dnl =
4215 dnl = Check for external package dependencies
4216 dnl =
4217 dnl ========================================================
4218 MOZ_ARG_HEADER(External Packages)
4220 MOZ_ENABLE_LIBXUL=
4222 MOZ_ARG_WITH_STRING(libxul-sdk,
4223 [  --with-libxul-sdk=PFX   Use the libXUL SDK at <PFX>],
4224   LIBXUL_SDK_DIR=$withval)
4226 if test "$LIBXUL_SDK_DIR" = "yes"; then
4227     AC_MSG_ERROR([--with-libxul-sdk must specify a path])
4228 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
4229     LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
4231     if test ! -f "$LIBXUL_SDK/include/xpcom-config.h"; then
4232         AC_MSG_ERROR([$LIBXUL_SDK/include/xpcom-config.h doesn't exist])
4233     fi
4235     MOZ_ENABLE_LIBXUL=1
4237 AC_SUBST(LIBXUL_SDK)
4239 if test -n "$LIBXUL_SDK"; then
4240     LIBXUL_DIST="$LIBXUL_SDK"
4241 else
4242     LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
4244 AC_SUBST(LIBXUL_DIST)
4246 SYSTEM_LIBXUL=
4248 MOZ_ARG_WITH_BOOL(system-libxul,
4249 [  --with-system-libxul   Use system installed libxul SDK],
4250     SYSTEM_LIBXUL=1)
4252 if test -n "$SYSTEM_LIBXUL" && test -z "$MOZ_ENABLE_LIBXUL"; then
4253     AC_MSG_ERROR([--with-system-libxul needs --with-libxul-sdk])
4256 dnl ========================================================
4257 dnl = If NSPR was not detected in the system, 
4258 dnl = use the one in the source tree (mozilla/nsprpub)
4259 dnl ========================================================
4260 MOZ_ARG_WITH_BOOL(system-nspr,
4261 [  --with-system-nspr      Use system installed NSPR],
4262     _USE_SYSTEM_NSPR=1 )
4264 if test -n "$_USE_SYSTEM_NSPR"; then
4265     AM_PATH_NSPR(4.8.0, [MOZ_NATIVE_NSPR=1], [MOZ_NATIVE_NSPR=])
4268 if test -n "$MOZ_NATIVE_NSPR"; then
4269     _SAVE_CFLAGS=$CFLAGS
4270     CFLAGS="$CFLAGS $NSPR_CFLAGS"
4271     AC_TRY_COMPILE([#include "prlog.h"],
4272                 [#ifndef PR_STATIC_ASSERT
4273                  #error PR_STATIC_ASSERT not defined
4274                  #endif],
4275                 [MOZ_NATIVE_NSPR=1],
4276                 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT]))
4277     CFLAGS=$_SAVE_CFLAGS
4278 else
4279     if test "$OS_ARCH" = "WINCE"; then
4280         NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4281         NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4282     elif test "$OS_ARCH" = "WINNT"; then
4283         NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4284         if test -n "$GNU_CC"; then
4285             NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
4286         else
4287             NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4288         fi
4289     else
4290         NSPR_CFLAGS='`$(LIBXUL_DIST)/bin/nspr-config --prefix='${LIBXUL_DIST}' --includedir='${LIBXUL_DIST}'/include/nspr --cflags`'
4291         NSPR_LIBS='`$(LIBXUL_DIST)/bin/nspr-config --prefix='${LIBXUL_DIST}' --libdir='${LIBXUL_DIST}'/lib --libs`'
4292     fi
4295 dnl ========================================================
4296 dnl = If NSS was not detected in the system, 
4297 dnl = use the one in the source tree (mozilla/security/nss)
4298 dnl ========================================================
4300 MOZ_ARG_WITH_BOOL(system-nss,
4301 [  --with-system-nss      Use system installed NSS],
4302     _USE_SYSTEM_NSS=1 )
4304 if test -n "$_USE_SYSTEM_NSS"; then
4305     AM_PATH_NSS(3.12.0, [MOZ_NATIVE_NSS=1], [MOZ_NATIVE_NSS=])
4308 if test -n "$MOZ_NATIVE_NSS"; then
4309    NSS_LIBS="$NSS_LIBS -lcrmf"
4310 else
4311    NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4312    NSS_DEP_LIBS="\
4313         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4314         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4315         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4316         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4317         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX)"
4319    if test -z "$GNU_CC" && test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "WINCE" -o "$OS_ARCH" = "OS2"; then
4320        NSS_LIBS="\
4321         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4322         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4323         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4324         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4325         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(IMPORT_LIB_SUFFIX)"
4326    else
4327        NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION"
4328    fi
4331 if test -z "$SKIP_LIBRARY_CHECKS"; then
4332 dnl system JPEG support
4333 dnl ========================================================
4334 MOZ_ARG_WITH_STRING(system-jpeg,
4335 [  --with-system-jpeg[=PFX]
4336                           Use system libjpeg [installed at prefix PFX]],
4337     JPEG_DIR=$withval)
4339 _SAVE_CFLAGS=$CFLAGS
4340 _SAVE_LDFLAGS=$LDFLAGS
4341 _SAVE_LIBS=$LIBS
4342 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4343     CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4344     LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4346 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4347     SYSTEM_JPEG=
4348 else
4349     AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS)
4352 if test "$SYSTEM_JPEG" = 1; then
4353     LIBS="$JPEG_LIBS $LIBS"
4354     AC_TRY_COMPILE([ #include <stdio.h>
4355                      #include <sys/types.h>
4356                      #include <jpeglib.h> ],
4357                    [ #if JPEG_LIB_VERSION < $MOZJPEG
4358                      #error "Insufficient JPEG library version ($MOZJPEG required)."
4359                      #endif ],
4360                    SYSTEM_JPEG=1,
4361                    [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=]) 
4362 fi 
4363 CFLAGS=$_SAVE_CFLAGS
4364 LDFLAGS=$_SAVE_LDFLAGS
4365 LIBS=$_SAVE_LIBS
4367 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$SYSTEM_JPEG" = 1; then
4368     JPEG_CFLAGS="-I${JPEG_DIR}/include"
4369     JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
4372 dnl system ZLIB support
4373 dnl ========================================================
4374 MOZ_ARG_WITH_STRING(system-zlib,
4375 [  --with-system-zlib[=PFX]
4376                           Use system libz [installed at prefix PFX]],
4377     ZLIB_DIR=$withval)
4379 _SAVE_CFLAGS=$CFLAGS
4380 _SAVE_LDFLAGS=$LDFLAGS
4381 _SAVE_LIBS=$LIBS
4382 if test -n "${ZLIB_DIR}" -a "${ZLIB_DIR}" != "yes"; then
4383     CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
4384     LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
4386 if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
4387     SYSTEM_ZLIB=
4388 else
4389     AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"], 
4390         [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
4392 if test "$SYSTEM_ZLIB" = 1; then
4393     LIBS="$ZLIB_LIBS $LIBS"
4394     AC_TRY_COMPILE([ #include <stdio.h>
4395                      #include <string.h>
4396                      #include <zlib.h> ],
4397                    [ #if ZLIB_VERNUM < $MOZZLIB 
4398                      #error "Insufficient zlib version ($MOZZLIB required)."
4399                      #endif ],
4400                    SYSTEM_ZLIB=1,
4401                    [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=]) 
4403 CFLAGS=$_SAVE_CFLAGS
4404 LDFLAGS=$_SAVE_LDFLAGS
4405 LIBS=$_SAVE_LIBS
4407 if test "${ZLIB_DIR}" -a -d "${ZLIB_DIR}" -a "$SYSTEM_ZLIB" = 1; then
4408     ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
4409     ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
4412 dnl system BZIP2 Support
4413 dnl ========================================================
4414 MOZ_ARG_WITH_STRING(system-bz2,
4415 [  --with-system-bz2[=PFX]
4416                           Use system libbz2 [installed at prefix PFX]],
4417     BZ2_DIR=$withval)
4419 _SAVE_CFLAGS=$CFLAGS
4420 _SAVE_LDFLAGS=$LDFLAGS
4421 _SAVE_LIBS=$LIBS
4422 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4423     CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4424     LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4426 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4427     SYSTEM_BZ2=
4428 else
4429     AC_CHECK_LIB(bz2, BZ2_bzread, [SYSTEM_BZ2=1 BZ2_LIBS="-lbz2"],
4430         [SYSTEM_BZ2= BZ2_CFLAGS= BZ2_LIBS=], $BZ2_LIBS)
4432 CFLAGS=$_SAVE_CFLAGS
4433 LDFLAGS=$_SAVE_LDFLAGS
4434 LIBS=$_SAVE_LIBS
4436 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$SYSTEM_BZ2" = 1; then
4437     BZ2_CFLAGS="-I${BZ2_DIR}/include"
4438     BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
4441 dnl system PNG Support
4442 dnl ========================================================
4443 MOZ_ARG_WITH_STRING(system-png, 
4444 [  --with-system-png[=PFX]
4445                           Use system libpng [installed at prefix PFX]],
4446     PNG_DIR=$withval)
4448 _SAVE_CFLAGS=$CFLAGS
4449 _SAVE_LDFLAGS=$LDFLAGS
4450 _SAVE_LIBS=$LIBS
4451 CFLAGS="$ZLIB_CFLAGS $CFLAGS"
4452 LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
4453 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4454     CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4455     LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4457 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4458     SYSTEM_PNG=
4459 else
4460     _SAVE_PNG_LIBS=$PNG_LIBS
4461     AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"],
4462                  AC_MSG_ERROR([--with-system-png requested but no working libpng found]), 
4463                  $PNG_LIBS)
4464     AC_CHECK_LIB(png, png_get_acTL, ,
4465                  AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]),
4466                  $_SAVE_PNG_LIBS)
4468 if test "$SYSTEM_PNG" = 1; then
4469     LIBS="$PNG_LIBS $LIBS"
4470     AC_TRY_COMPILE([ #include <stdio.h>
4471                      #include <sys/types.h>
4472                      #include <png.h> ],
4473                    [ #if PNG_LIBPNG_VER < $MOZPNG
4474                      #error "Insufficient libpng version ($MOZPNG required)."
4475                      #endif
4476                      #ifndef PNG_UINT_31_MAX
4477                      #error "Insufficient libpng version."
4478                      #endif ],
4479                    SYSTEM_PNG=1,
4480                    AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4482 CFLAGS=$_SAVE_CFLAGS
4483 LDFLAGS=$_SAVE_LDFLAGS
4484 LIBS=$_SAVE_LIBS
4486 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
4487     PNG_CFLAGS="-I${PNG_DIR}/include"
4488     PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
4491 fi # SKIP_LIBRARY_CHECKS
4493 dnl system HunSpell Support
4494 dnl ========================================================
4495 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4496 [  --enable-system-hunspell  Use system hunspell (located with pkgconfig)],
4497     SYSTEM_HUNSPELL=1 )
4499 if test -n "$SYSTEM_HUNSPELL"; then
4500     PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4503 AC_SUBST(SYSTEM_HUNSPELL)
4505 dnl ========================================================
4506 dnl Java SDK support
4507 dnl ========================================================
4508 JAVA_INCLUDE_PATH=
4509 MOZ_ARG_WITH_STRING(java-include-path,
4510 [  --with-java-include-path=dir   Location of Java SDK headers],
4511     JAVA_INCLUDE_PATH=$withval)
4513 JAVA_BIN_PATH=
4514 MOZ_ARG_WITH_STRING(java-bin-path,
4515 [  --with-java-bin-path=dir   Location of Java binaries (java, javac, jar)],
4516     JAVA_BIN_PATH=$withval)
4518 dnl ========================================================
4519 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4520 dnl their usage and use them in spidermonkey.
4521 dnl ========================================================
4522 MOZ_ARG_WITH_BOOL(arm-kuser,
4523 [  --with-arm-kuser         Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4524     USE_ARM_KUSER=1,
4525     USE_ARM_KUSER=)
4526 if test -n "$USE_ARM_KUSER"; then
4527    AC_DEFINE(USE_ARM_KUSER)
4530 dnl ========================================================
4531 dnl =
4532 dnl = Application
4533 dnl =
4534 dnl ========================================================
4536 MOZ_ARG_HEADER(Application)
4538 BUILD_STATIC_LIBS=
4539 ENABLE_TESTS=1
4540 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4541 MOZ_BRANDING_DIRECTORY=
4542 MOZ_OFFICIAL_BRANDING=
4543 MOZ_DBGRINFO_MODULES=
4544 MOZ_FEEDS=1
4545 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg bmp icon"
4546 MOZ_IMG_ENCODERS_DEFAULT="png jpeg"
4547 MOZ_JAVAXPCOM=
4548 MOZ_JSDEBUGGER=1
4549 MOZ_JSLOADER=1
4550 MOZ_MATHML=1
4551 MOZ_MORK=1
4552 MOZ_MORKREADER=
4553 MOZ_AUTH_EXTENSION=1
4554 MOZ_NO_ACTIVEX_SUPPORT=1
4555 MOZ_NO_INSPECTOR_APIS=
4556 MOZ_NO_FAST_LOAD=
4557 MOZ_OGG=1
4558 MOZ_SYDNEYAUDIO=
4559 MOZ_WAVE=1
4560 MOZ_MEDIA=
4561 MOZ_PERMISSIONS=1
4562 MOZ_PLACES=
4563 MOZ_PLAINTEXT_EDITOR_ONLY=
4564 MOZ_PLUGINS=1
4565 MOZ_PREF_EXTENSIONS=1
4566 MOZ_PROFILELOCKING=1
4567 MOZ_PSM=1
4568 MOZ_RDF=1
4569 MOZ_REFLOW_PERF=
4570 MOZ_SAFE_BROWSING=
4571 MOZ_FASTSTART=
4572 MOZ_HELP_VIEWER=
4573 MOZ_SPELLCHECK=1
4574 MOZ_SPLASHSCREEN=
4575 MOZ_STATIC_MAIL_BUILD=
4576 MOZ_STORAGE=1
4577 MOZ_SVG=1
4578 MOZ_TIMELINE=
4579 MOZ_UI_LOCALE=en-US
4580 MOZ_UNIVERSALCHARDET=1
4581 MOZ_URL_CLASSIFIER=
4582 MOZ_USE_NATIVE_UCONV=
4583 MOZ_VIEW_SOURCE=1
4584 MOZ_XPFE_COMPONENTS=1
4585 MOZ_XPINSTALL=1
4586 MOZ_XSLT_STANDALONE=
4587 MOZ_XTF=1
4588 MOZ_XUL=1
4589 MOZ_ZIPWRITER=1
4590 NS_PRINTING=1
4591 NECKO_WIFI=1
4592 NECKO_COOKIES=1
4593 NECKO_DISK_CACHE=1
4594 NECKO_PROTOCOLS_DEFAULT="about data file ftp gopher http res viewsource"
4595 NECKO_SMALL_BUFFERS=
4596 XPC_IDISPATCH_SUPPORT=
4599 case "$target_os" in
4600 darwin*)
4601     ACCESSIBILITY=
4602     ;;
4604     ACCESSIBILITY=1
4605     ;;
4606 esac
4608 case "$target_os" in
4609     msvc*|mks*|cygwin*|mingw*)
4610         NS_ENABLE_TSF=1
4611         if test -z "$GNU_CC"; then 
4612             if test "$MOZ_WINSDK_TARGETVER" -lt "06000000"; then
4613                 NS_ENABLE_TSF=
4614             fi
4615             XPC_IDISPATCH_SUPPORT=1
4616             MOZ_NO_ACTIVEX_SUPPORT=
4617         fi
4618         if test -n "$NS_ENABLE_TSF"; then
4619             AC_DEFINE(NS_ENABLE_TSF)
4620         fi
4621         ;;
4622 esac
4624 MOZ_ARG_ENABLE_STRING(application,
4625 [  --enable-application=APP
4626                           Options include:
4627                             browser (Firefox)
4628                             xulrunner
4629                             content/xslt (Standalone Transformiix XSLT)
4630                             netwerk (Standalone Necko)
4631                             tools/update-packaging (AUS-related packaging tools)
4632                             standalone (use this for standalone
4633                               xpcom/xpconnect or to manually drive a build)],
4634 [ MOZ_BUILD_APP=$enableval ] )
4636 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
4637 [  --with-xulrunner-stub-name=appname   Create the xulrunner stub with the given name],
4638   XULRUNNER_STUB_NAME=$withval)
4640 if test -z "$XULRUNNER_STUB_NAME"; then
4641   case "$target_os" in
4642   darwin*)
4643     XULRUNNER_STUB_NAME=xulrunner
4644     ;;
4645   *)
4646     XULRUNNER_STUB_NAME=xulrunner-stub
4647   esac
4649 AC_SUBST(XULRUNNER_STUB_NAME)
4651 if test -z "$MOZ_BUILD_APP"; then
4652   AC_MSG_ERROR([--enable-application=APP was not specified and is required.])
4653 else
4654   # We have a valid application only if it has a build.mk file in its top
4655   # directory.
4656   if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
4657     AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4658   fi
4661 # Allow the application to influence configure with a confvars.sh script.
4663 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4664 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4665   AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4666   . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4667 else
4668   AC_MSG_RESULT([no])
4671 # Now is a good time to test for logic errors, define mismatches, etc.
4672 case "$MOZ_BUILD_APP" in
4673 xulrunner)
4674   if test "$LIBXUL_SDK"; then
4675     AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4676   fi
4677   ;;
4678 esac
4680 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4681 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4682 # MOZ_BUILD_APP.
4683 case "$MOZ_BUILD_APP" in
4684 browser)
4685   AC_DEFINE(MOZ_PHOENIX)
4686   ;;
4688 xulrunner)
4689   AC_DEFINE(MOZ_XULRUNNER)
4690   ;;
4692 content/xslt)
4693   AC_DEFINE(TX_EXE)
4694   ;;
4696 standalone) 
4697   MOZ_APP_NAME=mozilla
4698   MOZ_APP_DISPLAYNAME=Mozilla
4699   MOZ_APP_VERSION=$MOZILLA_VERSION
4700   ;;
4702 esac
4704 AC_SUBST(MOZ_BUILD_APP)
4705 AC_SUBST(MOZ_PHOENIX)
4706 AC_SUBST(MOZ_XULRUNNER)
4708 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4710 dnl ========================================================
4711 dnl = 
4712 dnl = Toolkit Options
4713 dnl = 
4714 dnl ========================================================
4715 MOZ_ARG_HEADER(Toolkit Options)
4717     dnl ========================================================
4718     dnl = Select the default toolkit
4719     dnl ========================================================
4720         MOZ_ARG_ENABLE_STRING(default-toolkit,
4721         [  --enable-default-toolkit=TK
4722                           Select default toolkit
4723                           Platform specific defaults:
4724                             BeOS - cairo-beos
4725                             Mac OS X - cairo-cocoa
4726                             Neutrino/QNX - photon
4727                             OS/2 - cairo-os2
4728                             Win32/WinCE - cairo-windows
4729                             Gtk2 with DirectFB - cairo-gtk2-dfb
4730                             * - cairo-gtk2
4731                             * - cairo-qt],
4732     [ _DEFAULT_TOOLKIT=$enableval ],
4733     [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4735     if test "$_DEFAULT_TOOLKIT" = "photon" \
4736         -o "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4737         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4738         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-dfb" \
4739         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
4740         -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
4741         -o "$_DEFAULT_TOOLKIT" = "cairo-beos" \
4742         -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
4743         -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa"
4744     then
4745         dnl nglayout only supports building with one toolkit,
4746         dnl so ignore everything after the first comma (",").
4747         MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4748     else
4749         AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
4750     fi
4752 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_TOOLKIT,"$MOZ_WIDGET_TOOLKIT")
4754 dnl ========================================================
4755 dnl = Enable the toolkit as needed                         =
4756 dnl ========================================================
4758 case "$MOZ_WIDGET_TOOLKIT" in
4759 photon)
4760         MOZ_ENABLE_PHOTON=1
4761         AC_DEFINE(MOZ_WIDGET_PHOTON)
4762     ;;
4764 cairo-windows)
4765     MOZ_WIDGET_TOOLKIT=windows
4766     ;;
4768 cairo-gtk2|cairo-gtk2-x11)
4769     MOZ_WIDGET_TOOLKIT=gtk2
4770     MOZ_ENABLE_GTK2=1
4771     MOZ_ENABLE_XREMOTE=1
4773     AC_DEFINE(MOZ_X11)
4774     MOZ_X11=1
4776     TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4777     TK_LIBS='$(MOZ_GTK2_LIBS)'
4778     AC_DEFINE(MOZ_WIDGET_GTK2)
4779     ;;
4781 cairo-gtk2-dfb)
4782     MOZ_WIDGET_TOOLKIT=gtk2
4783     MOZ_ENABLE_GTK2=1
4785     AC_DEFINE(MOZ_DFB)
4786     MOZ_DFB=1
4788     TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4789     TK_LIBS='$(MOZ_GTK2_LIBS)'
4790     AC_DEFINE(MOZ_WIDGET_GTK2)
4791     if test "$no_x" != "yes"; then
4792         AC_MSG_WARN([Disabling X when DirectFB is specified.])
4793         no_x=yes
4794     fi
4795     ;;
4797 cairo-qt)
4798     MOZ_WIDGET_TOOLKIT=qt
4799     MOZ_ENABLE_QT=1
4800     MOZ_ENABLE_XREMOTE=1
4801     USE_ELF_DYNSTR_GC=
4802     NS_PRINTING=
4804     AC_DEFINE(MOZ_X11)
4805     MOZ_X11=1
4807     TK_CFLAGS='$(MOZ_QT_CFLAGS)'
4808     TK_LIBS='$(MOZ_QT_LIBS)'
4809     AC_DEFINE(MOZ_WIDGET_QT)
4810     ;;
4812 cairo-beos)
4813     MOZ_WIDGET_TOOLKIT=beos
4814     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4815     TK_LIBS='$(MOZ_CAIRO_LIBS)'
4816     ;;
4818 cairo-os2)
4819     MOZ_WIDGET_TOOLKIT=os2
4820     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4821     TK_LIBS='$(MOZ_CAIRO_LIBS)'
4822     ;;
4824 cairo-cocoa)
4825     MOZ_WIDGET_TOOLKIT=cocoa
4826     AC_DEFINE(MOZ_WIDGET_COCOA)
4827     MOZ_USER_DIR="Mozilla"
4828     AC_DEFINE(XP_MACOSX)
4829     TK_LIBS='-framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook'
4830     TK_CFLAGS="-DNO_X11"
4831     LDFLAGS="$LDFLAGS -framework Cocoa"
4832     CFLAGS="$CFLAGS $TK_CFLAGS"
4833     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4834     LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL -lobjc'
4835     MOZ_FS_LAYOUT=bundle
4836     ;;
4837 esac
4839 if test "$MOZ_ENABLE_XREMOTE"; then
4840     AC_DEFINE(MOZ_ENABLE_XREMOTE)
4843 if test "$COMPILE_ENVIRONMENT"; then
4844   if test "$MOZ_ENABLE_GTK2"; then
4845     if test "$MOZ_X11"; then
4846       GDK_PACKAGES=gdk-x11-2.0
4847     elif test "$MOZ_DFB"; then
4848       PKG_CHECK_MODULES(MOZ_DFB, directfb >= 1.1.0)
4849       GDK_PACKAGES=directfb
4850     fi
4852     PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4853   fi
4855 fi # COMPILE_ENVIRONMENT
4857 AC_SUBST(MOZ_DEFAULT_TOOLKIT)
4858 AC_SUBST(MOZ_FS_LAYOUT)
4860 dnl ========================================================
4861 dnl = startup-notification support module
4862 dnl ========================================================
4864 if test "$MOZ_ENABLE_GTK2"
4865 then
4866     MOZ_ENABLE_STARTUP_NOTIFICATION=
4868     MOZ_ARG_ENABLE_BOOL(startup-notification,
4869     [  --enable-startup-notification       Enable startup-notification support (default: disabled) ],
4870         MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4871         MOZ_ENABLE_STARTUP_NOTIFICATION=)
4872     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4873     then
4874         PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4875                           libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4876         [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4877             if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4878             then
4879                 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4880             fi
4881             MOZ_ENABLE_STARTUP_NOTIFICATION=
4882         ])
4883     fi
4885     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4886         AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4887     fi
4889     TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4891 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4892 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4893 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4895 dnl ========================================================
4896 dnl = QT support
4897 dnl ========================================================
4898 if test "$MOZ_ENABLE_QT"
4899 then
4900     PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtUiTools QtCore)
4901     AC_SUBST(MOZ_QT_CFLAGS)
4902     AC_SUBST(MOZ_QT_LIBS)
4904     MOZ_ARG_WITH_STRING(qtdir,
4905     [  --with-qtdir=\$dir       Specify Qt directory ],
4906     [ QTDIR=$withval])
4908     if test -z "$QTDIR"; then
4909       QTDIR="/usr"
4910     fi
4911     QTINCDIR="/include/qt"
4912     if test ! -d "$QTDIR$QTINCDIR"; then
4913        QTINCDIR="/include/X11/qt"
4914     fi
4915     if test ! -d "$QTDIR$QTINCDIR"; then
4916        QTINCDIR="/include"
4917     fi
4919     if test -x "$QTDIR/bin/moc-qt4"; then
4920       HOST_MOC="$QTDIR/bin/moc-qt4"
4921     else
4922       if test -x "$QTDIR/bin/moc"; then
4923         HOST_MOC="$QTDIR/bin/moc"
4924       else
4925         AC_CHECK_PROGS(HOST_MOC, moc, "")
4926       fi
4927     fi
4928     if test -z "$HOST_MOC"; then
4929       AC_MSG_ERROR([no acceptable moc preprocessor found])
4930     fi
4931     MOC=$HOST_MOC
4934 AC_SUBST(GTK_CONFIG)
4935 AC_SUBST(TK_CFLAGS)
4936 AC_SUBST(TK_LIBS)
4938 AC_SUBST(MOZ_ENABLE_GTK2)
4939 AC_SUBST(MOZ_ENABLE_PHOTON)
4940 AC_SUBST(MOZ_ENABLE_QT)
4941 AC_SUBST(MOZ_ENABLE_XREMOTE)
4942 AC_SUBST(MOZ_GTK2_CFLAGS)
4943 AC_SUBST(MOZ_GTK2_LIBS)
4944 AC_SUBST(MOZ_QT_CFLAGS)
4945 AC_SUBST(MOZ_QT_LIBS)
4947 AC_SUBST(MOC)
4949 AC_SUBST(MOZ_DFB)
4950 AC_SUBST(MOZ_X11)
4952 dnl ========================================================
4953 dnl =
4954 dnl = Components & Features
4955 dnl = 
4956 dnl ========================================================
4957 MOZ_ARG_HEADER(Components and Features)
4959 dnl ========================================================
4960 dnl = Localization
4961 dnl ========================================================
4962 MOZ_ARG_ENABLE_STRING(ui-locale,
4963 [  --enable-ui-locale=ab-CD
4964                           Select the user interface locale (default: en-US)],
4965     MOZ_UI_LOCALE=$enableval )
4966 AC_SUBST(MOZ_UI_LOCALE)
4968 dnl ========================================================
4969 dnl = Trademarked Branding 
4970 dnl ========================================================
4971 MOZ_ARG_ENABLE_BOOL(official-branding,
4972 [  --enable-official-branding Enable Official mozilla.org Branding
4973                           Do not distribute builds with
4974                           --enable-official-branding unless you have
4975                           permission to use trademarks per
4976                           http://www.mozilla.org/foundation/trademarks/ .],
4978   if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
4979     AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
4980   else
4981     MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
4982     MOZ_OFFICIAL_BRANDING=1
4983   fi
4984 ], MOZ_OFFICIAL_BRANDING=)
4986 AC_SUBST(MOZ_OFFICIAL_BRANDING)
4987 if test -n "$MOZ_OFFICIAL_BRANDING"; then
4988   AC_DEFINE(MOZ_OFFICIAL_BRANDING)
4991 MOZ_ARG_WITH_STRING(branding,
4992 [  --with-branding=dir    Use branding from the specified directory.],
4993     MOZ_BRANDING_DIRECTORY=$withval)
4995 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4996 if test -z "$REAL_BRANDING_DIRECTORY"; then
4997   REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
5000 if test -f "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"; then
5001   . "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"
5004 AC_SUBST(MOZ_BRANDING_DIRECTORY)
5006 dnl ========================================================
5007 dnl = Distribution ID
5008 dnl ========================================================
5009 MOZ_ARG_WITH_STRING(distribution-id,
5010 [  --with-distribution-id=ID  Set distribution-specific id (default=org.mozilla)],
5011 [ val=`echo $withval`
5012     MOZ_DISTRIBUTION_ID="$val"])
5014 if test -z "$MOZ_DISTRIBUTION_ID"; then
5015    MOZ_DISTRIBUTION_ID="org.mozilla"
5018 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
5019 AC_SUBST(MOZ_DISTRIBUTION_ID)
5022 dnl ========================================================
5023 dnl complex text support off by default
5024 dnl ========================================================
5025 MOZ_PANGO=1
5026 MOZ_ARG_DISABLE_BOOL(pango,
5027 [  --disable-pango Disable usage of Pango ],
5028     MOZ_PANGO=,
5029     MOZ_PANGO=1)
5032 dnl ========================================================
5033 dnl = Pango
5034 dnl ========================================================
5035 if test "$MOZ_ENABLE_GTK2"
5036 then
5037     AC_SUBST(MOZ_PANGO)
5039     PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
5041     if test "$MOZ_PANGO"
5042     then
5043         PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
5044         AC_SUBST(MOZ_PANGO_CFLAGS)
5045         AC_SUBST(MOZ_PANGO_LIBS)
5046         AC_DEFINE(MOZ_PANGO)
5047     else
5048         PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
5049         AC_SUBST(MOZ_PANGO_CFLAGS)
5050         AC_SUBST(MOZ_PANGO_LIBS)
5052         PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0 fontconfig)
5053         AC_SUBST(FT2_CFLAGS)
5054         AC_SUBST(FT2_LIBS)
5055     fi
5058 dnl ========================================================
5059 dnl = GnomeVFS support module
5060 dnl ========================================================
5062 if test "$MOZ_X11"
5063 then
5064     dnl build the gnomevfs extension by default only when the
5065     dnl GTK2 toolkit is in use.
5066     if test "$MOZ_ENABLE_GTK2"
5067     then
5068         MOZ_ENABLE_GNOMEVFS=1
5069         MOZ_ENABLE_GCONF=1
5070     fi
5072     MOZ_ARG_DISABLE_BOOL(gnomevfs,
5073     [  --disable-gnomevfs      Disable GnomeVFS support ],
5074         MOZ_ENABLE_GNOMEVFS=,
5075         MOZ_ENABLE_GNOMEVFS=force)
5077     if test "$MOZ_ENABLE_GNOMEVFS"
5078     then
5079         PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
5080             MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
5081             MOZ_ENABLE_GNOMEVFS=1
5082             AC_DEFINE(MOZ_ENABLE_GNOMEVFS)
5083         ],[
5084             if test "$MOZ_ENABLE_GNOMEVFS" = "force"
5085             then
5086                 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
5087             fi
5088             MOZ_ENABLE_GNOMEVFS=
5089         ])
5090     fi
5092     AC_SUBST(MOZ_ENABLE_GNOMEVFS)
5093     AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
5094     AC_SUBST(MOZ_GNOMEVFS_LIBS)
5096     if test "$MOZ_ENABLE_GCONF"
5097     then
5098         PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION,[
5099             MOZ_GCONF_LIBS=`echo $MOZ_GCONF_LIBS | sed 's/-llinc\>//'`
5100             MOZ_ENABLE_GCONF=1
5101         ],[
5102             MOZ_ENABLE_GCONF=
5103         ])
5104     fi
5106     if test "$MOZ_ENABLE_GCONF"; then
5107         AC_DEFINE(MOZ_ENABLE_GCONF)
5108     fi
5110     AC_SUBST(MOZ_ENABLE_GCONF)
5111     AC_SUBST(MOZ_GCONF_CFLAGS)
5112     AC_SUBST(MOZ_GCONF_LIBS)
5114     dnl ========================================================
5115     dnl = GIO support module
5116     dnl ========================================================
5117     MOZ_ARG_ENABLE_BOOL(gio,
5118     [  --enable-gio            Enable GIO support (default: disabled)],
5119         MOZ_ENABLE_GIO=force,
5120         MOZ_ENABLE_GIO=)
5122     if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK2"
5123     then
5124         PKG_CHECK_MODULES(MOZ_GIO, gio-2.0 >= $GIO_VERSION,[
5125             MOZ_GIO_LIBS=`echo $MOZ_GIO_LIBS | sed 's/-llinc\>//'`
5126             MOZ_ENABLE_GIO=1
5127             AC_DEFINE(MOZ_ENABLE_GIO)
5128         ],[
5129             if test "$MOZ_ENABLE_GIO" = "force"
5130             then
5131                 AC_MSG_ERROR([* * * Could not find gio-2.0 >= $GIO_VERSION])
5132             fi
5133             MOZ_ENABLE_GIO=
5134         ])
5135     fi
5137     AC_SUBST(MOZ_ENABLE_GIO)
5138     AC_SUBST(MOZ_GIO_CFLAGS)
5139     AC_SUBST(MOZ_GIO_LIBS)
5142 dnl ========================================================
5143 dnl = libgnomeui support module
5144 dnl ========================================================
5146 if test "$MOZ_ENABLE_GTK2"
5147 then
5148     MOZ_ENABLE_GNOMEUI=1
5150     MOZ_ARG_DISABLE_BOOL(gnomeui,
5151     [  --disable-gnomeui       Disable libgnomeui support (default: auto, optional at runtime) ],
5152         MOZ_ENABLE_GNOMEUI=,
5153         MOZ_ENABLE_GNOMEUI=force)
5155     if test "$MOZ_ENABLE_GNOMEUI"
5156     then
5157         PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5158         [
5159             MOZ_GNOMEUI_LIBS=`echo $MOZ_GNOMEUI_LIBS | sed 's/-llinc\>//'`
5160             MOZ_ENABLE_GNOMEUI=1
5161         ],[
5162             if test "$MOZ_ENABLE_GNOMEUI" = "force"
5163             then
5164                 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5165             fi
5166             MOZ_ENABLE_GNOMEUI=
5167         ])
5168     fi
5170     if test "$MOZ_ENABLE_GNOMEUI"; then
5171         AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5172     fi
5174     # The GNOME component is built if gtk2, gconf and gnome-vfs
5175     # are all available.
5177     if test "$MOZ_ENABLE_GTK2" -a "$MOZ_ENABLE_GCONF" && \
5178             (test "$MOZ_ENABLE_GNOMEVFS" || test "$MOZ_ENABLE_GIO"); then
5179       MOZ_ENABLE_GNOME_COMPONENT=1
5180     else
5181       MOZ_ENABLE_GNOME_COMPONENT=
5182     fi
5184     AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5186 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5187 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5188 AC_SUBST(MOZ_GNOMEUI_LIBS)
5190 dnl ========================================================
5191 dnl = dbus support
5192 dnl ========================================================
5194 if test "$MOZ_ENABLE_GTK2" || test "$MOZ_ENABLE_QT"
5195 then
5196     MOZ_ENABLE_DBUS=1
5198     MOZ_ARG_DISABLE_BOOL(dbus,
5199     [  --disable-dbus       Disable dbus support ],
5200         MOZ_ENABLE_DBUS=,
5201         MOZ_ENABLE_DBUS=1)
5203     if test "$MOZ_ENABLE_DBUS"
5204     then
5205         PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5206         AC_DEFINE(MOZ_ENABLE_DBUS)
5207     fi
5209 AC_SUBST(MOZ_ENABLE_DBUS)
5210 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5211 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5213 dnl ========================================================
5214 dnl = libnotify support
5215 dnl ========================================================
5217 if test "$MOZ_ENABLE_GTK2"
5218 then
5219     MOZ_ENABLE_LIBNOTIFY=1
5221     MOZ_ARG_DISABLE_BOOL(libnotify,
5222     [  --disable-libnotify       Disable libnotify support ],
5223     MOZ_ENABLE_LIBNOTIFY=,
5224     MOZ_ENABLE_LIBNOTIFY=1)
5226     if test "$MOZ_ENABLE_LIBNOTIFY"
5227     then
5228         AC_DEFINE(MOZ_ENABLE_LIBNOTIFY)
5229     fi
5232 if test -z "$SKIP_LIBRARY_CHECKS"
5233 then
5234     if test "$MOZ_ENABLE_GTK2"
5235     then
5236         if test "$MOZ_ENABLE_LIBNOTIFY"
5237         then
5238             PKG_CHECK_MODULES(MOZ_LIBNOTIFY, libnotify >= $LIBNOTIFY_VERSION)
5239         fi
5240     fi
5242 AC_SUBST(MOZ_ENABLE_LIBNOTIFY)
5243 AC_SUBST(MOZ_LIBNOTIFY_CFLAGS)
5244 AC_SUBST(MOZ_LIBNOTIFY_LIBS)
5246 dnl ========================================================
5247 dnl = Build Personal Security Manager
5248 dnl ========================================================
5249 MOZ_ARG_DISABLE_BOOL(crypto,
5250 [  --disable-crypto        Disable crypto support (Personal Security Manager)],
5251     MOZ_PSM=,
5252     MOZ_PSM=1 )
5254 dnl ========================================================
5255 dnl = JS Debugger XPCOM component (js/jsd)
5256 dnl ========================================================
5257 MOZ_ARG_DISABLE_BOOL(jsd,
5258 [  --disable-jsd           Disable JavaScript debug library],
5259     MOZ_JSDEBUGGER=,
5260     MOZ_JSDEBUGGER=1)
5263 dnl ========================================================
5264 dnl = Disable plugin support
5265 dnl ========================================================
5266 MOZ_ARG_DISABLE_BOOL(plugins,
5267 [  --disable-plugins       Disable plugins support],
5268     MOZ_PLUGINS=,
5269     MOZ_PLUGINS=1)
5271 dnl ========================================================
5272 dnl = Disable building dbm
5273 dnl ========================================================
5274 MOZ_ARG_DISABLE_BOOL(dbm,
5275 [  --disable-dbm       Disable building dbm],
5276     NSS_DISABLE_DBM=1,
5277     NSS_DISABLE_DBM=)
5279 dnl bi-directional support always on
5280 IBMBIDI=1
5281 AC_DEFINE(IBMBIDI)
5283 dnl ========================================================
5284 dnl view source support on by default
5285 dnl ========================================================
5286 if test "$MOZ_VIEW_SOURCE"; then
5287     AC_DEFINE(MOZ_VIEW_SOURCE)
5290 dnl ========================================================
5291 dnl accessibility support on by default on all platforms 
5292 dnl except OS X.
5293 dnl ========================================================
5294 MOZ_ARG_DISABLE_BOOL(accessibility,
5295 [  --disable-accessibility Disable accessibility support (off by default on OS X)],
5296     ACCESSIBILITY=,
5297     ACCESSIBILITY=1 )
5298 if test "$ACCESSIBILITY"; then
5299     AC_DEFINE(ACCESSIBILITY)
5302 if test -n "$ACCESSIBILITY" -a "$COMPILE_ENVIRONMENT" = "1"; then
5303 case "$target" in
5304 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5305     if test "$ac_cv_header_atlbase_h" = "no"; then
5306         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.])
5307     fi
5308     if test "$ac_cv_header_oleacc_idl" = "no"; then
5309         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.])
5310     fi
5311     ;;
5312 esac
5315 dnl ========================================================
5316 dnl xpfe/components on by default
5317 dnl ========================================================
5318 MOZ_ARG_DISABLE_BOOL(xpfe-components,
5319 [  --disable-xpfe-components
5320                           Disable xpfe components],
5321     MOZ_XPFE_COMPONENTS=,
5322     MOZ_XPFE_COMPONENTS=1 )
5324 dnl ========================================================
5325 dnl xpinstall support on by default
5326 dnl ========================================================
5327 MOZ_ARG_DISABLE_BOOL(xpinstall,
5328 [  --disable-xpinstall     Disable xpinstall support],
5329     MOZ_XPINSTALL=,
5330     MOZ_XPINSTALL=1 )
5331 if test "$MOZ_XPINSTALL"; then
5332     AC_DEFINE(MOZ_XPINSTALL)
5335 dnl ========================================================
5336 dnl xpcom js loader support on by default
5337 dnl ========================================================
5338 if test "$MOZ_JSLOADER"; then
5339     AC_DEFINE(MOZ_JSLOADER)
5342 dnl ========================================================
5343 dnl Disable printing
5344 dnl ========================================================
5345 MOZ_ARG_DISABLE_BOOL(printing,
5346 [  --disable-printing  Disable printing support],
5347     NS_PRINTING=,
5348     NS_PRINTING=1 )
5350 if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
5351     AC_MSG_WARN([Printing does not work with Qt at this time. Omitting printing support.])
5352     NS_PRINTING=
5355 if test "$NS_PRINTING"; then
5356     AC_DEFINE(NS_PRINTING)
5357     AC_DEFINE(NS_PRINT_PREVIEW)
5360 dnl ========================================================
5361 dnl use native unicode converters
5362 dnl ========================================================
5363 MOZ_ARG_ENABLE_BOOL(native-uconv,
5364 [  --enable-native-uconv   Enable iconv support],
5365     MOZ_USE_NATIVE_UCONV=1,
5366     MOZ_USE_NATIVE_UCONV= )
5367 if test "$MOZ_USE_NATIVE_UCONV"; then
5368     AC_DEFINE(MOZ_USE_NATIVE_UCONV)
5370 if test "$OS_ARCH" != "WINCE" -a "$OS_ARCH" != "WINNT" -a "$MOZ_USE_NATIVE_UCONV" -a "$ac_cv_func_iconv" != "yes"; then
5371     AC_MSG_ERROR([iconv() not found.  Cannot enable native uconv support.])
5375 dnl ========================================================
5376 dnl Libeditor can be build as plaintext-only,
5377 dnl or as a full html and text editing component.
5378 dnl We build both by default.
5379 dnl ========================================================
5380 MOZ_ARG_ENABLE_BOOL(plaintext-editor-only,
5381 [  --enable-plaintext-editor-only
5382                           Allow only plaintext editing],
5383     MOZ_PLAINTEXT_EDITOR_ONLY=1,
5384     MOZ_PLAINTEXT_EDITOR_ONLY= )
5385 dnl Note the #define is MOZILLA, not MOZ, for compat with the Mac build.
5386 AC_SUBST(MOZ_PLAINTEXT_EDITOR_ONLY)
5388 dnl ========================================================
5389 dnl = Disable Fast Load
5390 dnl ========================================================
5391 MOZ_ARG_DISABLE_BOOL(xpcom-fastload,
5392 [  --disable-xpcom-fastload           Disable XPCOM fastload support],
5393     MOZ_NO_FAST_LOAD=1,
5394     MOZ_NO_FAST_LOAD=)
5396 AC_SUBST(MOZ_NO_FAST_LOAD)
5398 if test -n "$MOZ_NO_FAST_LOAD"; then
5399     AC_DEFINE(MOZ_NO_FAST_LOAD)
5402 dnl ========================================================
5403 dnl = Disable Ogg Codecs
5404 dnl ========================================================
5405 MOZ_ARG_DISABLE_BOOL(ogg,
5406 [  --disable-ogg           Disable Ogg Codec support],
5407     MOZ_OGG=,
5408     MOZ_OGG=1)
5410 AC_SUBST(MOZ_OGG)
5412 if test -n "$MOZ_OGG"; then
5413     AC_DEFINE(MOZ_OGG)
5414     MOZ_SYDNEYAUDIO=1
5415     MOZ_MEDIA=1
5417     dnl Checks for __attribute__(aligned()) directive
5418     AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
5419         [ac_cv_c_attribute_aligned],
5420         [ac_cv_c_attribute_aligned=0
5421          CFLAGS_save="${CFLAGS}"
5422          CFLAGS="${CFLAGS} -Werror"
5423          for ac_cv_c_attr_align_try in 64 32 16 8; do
5424            echo "trying $ac_cv_c_attr_align_try"
5425            AC_TRY_COMPILE([],
5426                           [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
5427                           [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
5428            if test "$ac_cv_c_attribute_aligned" != 0; then
5429              break;
5430            fi
5431          done
5432            CFLAGS="${CFLAGS_save}"])
5433     if test "${ac_cv_c_attribute_aligned}" != "0"; then
5434       AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
5435                          [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
5436     fi
5439 dnl ========================================================
5440 dnl = Disable Wave decoder support
5441 dnl ========================================================
5442 MOZ_ARG_DISABLE_BOOL(wave,
5443 [  --disable-wave          Disable Wave decoder support],
5444     MOZ_WAVE=,
5445     MOZ_WAVE=1)
5447 AC_SUBST(MOZ_WAVE)
5449 if test -n "$MOZ_WAVE"; then
5450     AC_DEFINE(MOZ_WAVE)
5451     MOZ_SYDNEYAUDIO=1
5452     MOZ_MEDIA=1
5455 dnl ========================================================
5456 dnl = Handle dependent SYDNEYAUDIO and MEDIA defines
5457 dnl ========================================================
5459 AC_SUBST(MOZ_SYDNEYAUDIO)
5461 if test -n "$MOZ_SYDNEYAUDIO"; then
5462     AC_DEFINE(MOZ_SYDNEYAUDIO)
5465 AC_SUBST(MOZ_MEDIA)
5467 if test -n "$MOZ_MEDIA"; then
5468     AC_DEFINE(MOZ_MEDIA)
5471 dnl ========================================================
5472 dnl = Check alsa availability on Linux if using sydneyaudio
5473 dnl ========================================================
5475 dnl If using sydneyaudio with Linux, ensure that the alsa library is available
5476 if test -n "$MOZ_SYDNEYAUDIO"; then
5477    case "$target_os" in
5478 linux*)
5479       PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
5480          [echo "$MOZ_ALSA_PKG_ERRORS"
5481           AC_MSG_ERROR([Need alsa for Ogg or Wave decoding on Linux.  Disable with --disable-ogg --disable-wave.])])
5482       ;;
5483    esac
5485 AC_SUBST(MOZ_ALSA_LIBS)
5487 dnl ========================================================
5488 dnl Splashscreen
5489 dnl ========================================================
5490 AC_ARG_ENABLE(splashscreen,
5491               [  --enable-splashscreen   display splashscreen while loading (default=no)],
5492               [enable_splash="yes"],[enable_splash=""])
5493 if test "x$enable_splash" = "xyes"; then
5494   MOZ_SPLASHSCREEN=1
5495   AC_DEFINE(MOZ_SPLASHSCREEN)
5497 AC_SUBST(MOZ_SPLASHSCREEN)
5499 dnl ========================================================
5500 dnl Permissions System
5501 dnl ========================================================
5502 MOZ_ARG_DISABLE_BOOL(permissions,
5503 [  --disable-permissions   Disable permissions (popup and cookie blocking)],
5504     MOZ_PERMISSIONS=,
5505     MOZ_PERMISSIONS=1
5508 dnl ========================================================
5509 dnl NegotiateAuth
5510 dnl ========================================================
5511 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5512 [  --disable-negotiateauth Disable GSS-API negotiation ],
5513     MOZ_AUTH_EXTENSION=,
5514     MOZ_AUTH_EXTENSION=1 )
5516 dnl ========================================================
5517 dnl XTF
5518 dnl ========================================================
5519 MOZ_ARG_DISABLE_BOOL(xtf,
5520 [  --disable-xtf           Disable XTF (pluggable xml tags) support],
5521     MOZ_XTF=,
5522     MOZ_XTF=1 )
5523 if test "$MOZ_XTF"; then
5524   AC_DEFINE(MOZ_XTF)
5527 dnl ========================================================
5528 dnl Pref extensions (autoconfig and system-pref)
5529 dnl ========================================================
5530 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5531 [  --disable-pref-extensions
5532                           Disable pref extensions such as autoconfig and
5533                           system-pref],
5534   MOZ_PREF_EXTENSIONS=,
5535   MOZ_PREF_EXTENSIONS=1 )
5537 dnl ========================================================
5538 dnl = Universalchardet
5539 dnl ========================================================
5540 MOZ_ARG_DISABLE_BOOL(universalchardet,
5541 [  --disable-universalchardet
5542                           Disable universal encoding detection],
5543   MOZ_UNIVERSALCHARDET=,
5544   MOZ_UNIVERSALCHARDET=1 )
5546 dnl ========================================================
5547 dnl JavaXPCOM
5548 dnl ========================================================
5549 MOZ_ARG_ENABLE_BOOL(javaxpcom,
5550 [  --enable-javaxpcom
5551                           Enable Java-XPCOM bridge],
5552     MOZ_JAVAXPCOM=1,
5553     MOZ_JAVAXPCOM= )
5555 if test -n "${MOZ_JAVAXPCOM}"; then
5556   case "$host_os" in
5557     cygwin*|msvc*|mks*)
5558       if test -n "$JAVA_HOME"; then
5559         JAVA_HOME=`cygpath -u \`cygpath -m -s "$JAVA_HOME"\``
5560       fi
5561       ;;
5562     *mingw*)
5563       if test -n "$JAVA_HOME"; then
5564         JAVA_HOME=`cd "$JAVA_HOME" && pwd`
5565       fi
5566       ;;
5567   esac
5569   if test -n "${JAVA_INCLUDE_PATH}"; then
5570     dnl Make sure jni.h exists in the given include path.
5571     if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5572       AC_MSG_ERROR([jni.h was not found in given include path $JAVA_INCLUDE_PATH.])
5573     fi
5574   else
5575     case "$target_os" in
5576       darwin*)
5577         dnl Default to java system location
5578         JAVA_INCLUDE_PATH=/System/Library/Frameworks/JavaVM.framework/Headers
5579         ;;
5580       *)
5581         dnl Try $JAVA_HOME
5582         JAVA_INCLUDE_PATH="$JAVA_HOME/include"
5583         ;;
5584     esac
5585     if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5586       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.])
5587     fi
5588   fi
5590   if test -n "${JAVA_BIN_PATH}"; then
5591     dnl Look for javac and jar in the specified path.
5592     JAVA_PATH="$JAVA_BIN_PATH"
5593   else
5594     dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5595     JAVA_PATH="$JAVA_HOME/bin:$PATH"
5596   fi
5598   MOZ_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5599   MOZ_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5600   MOZ_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5601   if test -z "$JAVA" || test "$JAVA" = ":" || test -z "$JAVAC" || test "$JAVAC" = ":" || test -z "$JAR" || test "$JAR" = ":"; then
5602     AC_MSG_ERROR([The programs java, javac and jar were not found.  Set \$JAVA_HOME to your java sdk directory, use --with-java-bin-path={java-bin-dir}, or reconfigure with --disable-javaxpcom.])
5603   fi
5606 dnl ========================================================
5607 dnl = Breakpad crash reporting (on by default on supported platforms)
5608 dnl ========================================================
5610 if (test "$OS_ARCH" = "WINNT" -a -z "$GNU_CC" \
5611     || test "$OS_ARCH" = "Darwin" \
5612     || test "$OS_ARCH" = "Linux" -a "$CPU_ARCH" = "x86" \
5613     || test "$OS_ARCH" = "SunOS") \
5614    && test -z "$HAVE_64BIT_OS"; then
5615    MOZ_CRASHREPORTER=1
5618 MOZ_ARG_DISABLE_BOOL(crashreporter,
5619 [  --disable-crashreporter          Disable breakpad crash reporting],
5620     MOZ_CRASHREPORTER=,
5621     MOZ_CRASHREPORTER=1)
5623 if test -n "$MOZ_CRASHREPORTER"; then
5624    AC_DEFINE(MOZ_CRASHREPORTER)
5626   if (test "$OS_ARCH" = "Linux" || test "$OS_ARCH" = "SunOS") && \
5627     test -z "$SKIP_LIBRARY_CHECKS"; then
5628     PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
5629     AC_SUBST(MOZ_GTHREAD_CFLAGS)
5630     AC_SUBST(MOZ_GTHREAD_LIBS)
5632     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.])])
5633   fi
5636 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
5637 [  --with-crashreporter-enable-percent=NN  Enable sending crash reports by default on NN% of users. (default=100)],
5638 [ val=`echo $withval | sed 's/[^0-9]//g'`
5639     MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
5641 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
5642    MOZ_CRASHREPORTER_ENABLE_PERCENT=100
5644 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
5646 dnl ========================================================
5647 dnl = Enable compilation of specific extension modules
5648 dnl ========================================================
5650 MOZ_ARG_ENABLE_STRING(extensions,
5651 [  --enable-extensions     Enable extensions],
5652 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5653     if test "$option" = "yes" || test "$option" = "all"; then
5654         AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
5655     elif test "$option" = "no" || test "$option" = "none"; then
5656         MOZ_EXTENSIONS=""
5657     elif test "$option" = "default"; then
5658         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
5659     elif test `echo "$option" | grep -c \^-` != 0; then
5660         option=`echo $option | sed 's/^-//'`
5661         MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
5662     else
5663         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
5664     fi
5665 done],
5666     MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
5668 if test -z "$MOZ_ENABLE_GNOMEVFS" && test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
5669     # Suppress warning on non-X11 platforms
5670     if test -n "$MOZ_X11"; then
5671         AC_MSG_WARN([Cannot build gnomevfs without required libraries. Removing gnomevfs from MOZ_EXTENSIONS.])
5672     fi
5673     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
5676 dnl Do not build gnomevfs with libxul based apps
5677 if test -n "$LIBXUL_SDK_DIR" && test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
5678     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
5681 if test -z "$MOZ_ENABLE_GIO" && test `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
5682     # Suppress warning on non-X11 platforms
5683     if test -n "$MOZ_X11"; then
5684         AC_MSG_WARN([Cannot build gio without required libraries. Removing gio from MOZ_EXTENSIONS.])
5685     fi
5686     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
5689 dnl Do not build gio with libxul based apps
5690 if test -n "$LIBXUL_SDK_DIR" && test `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
5691     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
5694 if test -z "$MOZ_JSDEBUGGER" && test `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
5695     AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
5696     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
5699 dnl This might be temporary: build tridentprofile only on Windows
5700 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0 && test "$OS_ARCH" != "WINNT"; then
5701     AC_MSG_WARN([tridentprofile extension works only on Windows at this time. Removing tridentprofile from MOZ_EXTENSIONS.])
5702     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5705 dnl cookie must be built before tridentprofile. put it at list's end.
5706 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0; then
5707   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5708   MOZ_EXTENSIONS="$MOZ_EXTENSIONS tridentprofile"
5711 dnl xforms requires xtf and schema-validation
5712 if test -z "$MOZ_XTF" && test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
5713     AC_MSG_WARN([Cannot build XForms without XTF support.  Removing XForms from MOZ_EXTENSIONS.])
5714     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5716 if test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0 && test `echo "$MOZ_EXTENSIONS" | grep -c schema-validation` -eq 0; then
5717     AC_MSG_WARN([Cannot build XForms without schema validation.  Removing XForms from MOZ_EXTENSIONS.])
5718     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5721 if test `echo "$MOZ_EXTENSIONS" | grep -c auth` -ne 0; then
5722     AC_MSG_WARN([auth is no longer an extension, use --disable-negotiateauth to disable.])
5723     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|auth||g'`
5726 if test `echo "$MOZ_EXTENSIONS" | grep -c 'cookie\|permissions'` -ne 0; then
5727     AC_MSG_WARN([cookie and permissions are no longer extensions, use --disable-permissions to disable.])
5728     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|cookie||g; s|permissions||g'`
5731 if test `echo "$MOZ_EXTENSIONS" | grep -c pref` -ne 0; then
5732     AC_MSG_WARN([pref is no longer an extension, use --disable-pref-extensions to disable.])
5733     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|pref||g'`
5736 if test `echo "$MOZ_EXTENSIONS" | grep -c universalchardet` -ne 0; then
5737     AC_MSG_WARN([universalchardet is no longer an extension, use --disable-universalchardet to disable.])
5738     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|universalchardet||g'`
5741 if test `echo "$MOZ_EXTENSIONS" | grep -c java` -ne 0; then
5742     AC_MSG_WARN([java is no longer an extension, use --enable-javaxpcom to enable.])
5743     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|java||g'`
5746 if test `echo "$MOZ_EXTENSIONS" | grep -c spellcheck` -ne 0; then
5747     AC_MSG_WARN([spellcheck is no longer an extension.])
5748     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|spellcheck||g'`
5751 dnl Remove dupes
5752 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
5754 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
5755 dnl when trying to build a non-existent extension.
5756 for extension in $MOZ_EXTENSIONS; do
5757     if test ! -d "${srcdir}/extensions/${extension}"; then
5758         AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
5759     fi
5760 done
5763 dnl ========================================================
5764 dnl Image decoders
5765 dnl ========================================================
5766 case "$MOZ_WIDGET_TOOLKIT" in
5767 beos|windows|os2|mac|cocoa)
5768     ;;
5770     if test -z "$MOZ_ENABLE_GTK2" && test -z "$MOZ_ENABLE_QT"; then
5771        MOZ_IMG_DECODERS_DEFAULT=`echo $MOZ_IMG_DECODERS_DEFAULT | sed -e 's|icon||'`
5772     fi
5773     ;;
5774 esac
5776 MOZ_ARG_ENABLE_STRING(image-decoders,
5777 [  --enable-image-decoders[={mod1,mod2,default,all,none}]
5778                           Enable specific image decoders],
5779 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5780     if test "$option" = "yes" || test "$option" = "all"; then
5781         MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5782     elif test "$option" = "no" || test "$option" = "none"; then
5783         MOZ_IMG_DECODERS=""
5784     elif test "$option" = "default"; then
5785         MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5786     elif test `echo "$option" | grep -c \^-` != 0; then
5787         option=`echo $option | sed 's/^-//'`
5788         MOZ_IMG_DECODERS=`echo "$MOZ_IMG_DECODERS" | sed "s/ ${option}//"`
5789     else
5790         MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $option"
5791     fi
5792 done],
5793     MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS_DEFAULT")
5795 dnl Dupes are removed in the encoder section because it will also add decoders
5797 dnl ========================================================
5798 dnl Image encoders
5799 dnl ========================================================
5800 MOZ_ARG_ENABLE_STRING(image-encoders,
5801 [  --enable-image-encoders[={mod1,mod2,default,all,none}]
5802                           Enable specific image encoders],
5803 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5804     if test "$option" = "yes" || test "$option" = "all"; then
5805         addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5806     elif test "$option" = "no" || test "$option" = "none"; then
5807         MOZ_IMG_ENCODERS=""
5808         addencoder=""
5809     elif test "$option" = "default"; then
5810         addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5811     elif test `echo "$option" | grep -c \^-` != 0; then
5812         option=`echo $option | sed 's/^-//'`
5813         addencoder=`echo "$MOZ_IMG_ENCODERS" | sed "s/ ${option}//"`
5814     else
5815         addencoder="$option"
5816     fi
5817     MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS $addencoder"
5818 done],
5819     MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS_DEFAULT")
5821 dnl Remove dupes
5822 MOZ_IMG_DECODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_DECODERS}`
5823 MOZ_IMG_ENCODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_ENCODERS}`
5825 dnl ========================================================
5826 dnl MathML on by default
5827 dnl ========================================================
5828 MOZ_ARG_DISABLE_BOOL(mathml,
5829 [  --disable-mathml        Disable MathML support],
5830     MOZ_MATHML=,
5831     MOZ_MATHML=1 )
5832 if test "$MOZ_MATHML"; then
5833   AC_DEFINE(MOZ_MATHML)
5836 dnl ========================================================
5837 dnl SVG
5838 dnl ========================================================
5839 MOZ_ARG_DISABLE_BOOL(svg,
5840 [  --disable-svg            Disable SVG support],
5841     MOZ_SVG=,
5842     MOZ_SVG=1 )
5843 if test -n "$MOZ_SVG"; then
5844   AC_DEFINE(MOZ_SVG)
5847 dnl ========================================================
5848 dnl SMIL
5849 dnl ========================================================
5850 MOZ_SMIL=1
5851 MOZ_ARG_DISABLE_BOOL(smil,
5852 [  --disable-smil           Disable SMIL animation support],
5853     MOZ_SMIL=,
5854     MOZ_SMIL=1 )
5855 # Automatically disable SMIL if SVG is disabled
5856 if test -z "$MOZ_SVG"; then
5857   MOZ_SMIL=
5859 if test -n "$MOZ_SMIL"; then
5860   AC_DEFINE(MOZ_SMIL)
5863 dnl ========================================================
5864 dnl Build Freetype in the tree
5865 dnl ========================================================
5866 MOZ_ARG_ENABLE_BOOL(tree-freetype,
5867 [  --enable-tree-freetype         Enable Tree FreeType],
5868     MOZ_TREE_FREETYPE=1,
5869     MOZ_TREE_FREETYPE= )
5870 if test -n "$MOZ_TREE_FREETYPE"; then
5871    AC_DEFINE(MOZ_TREE_FREETYPE)
5872    AC_SUBST(MOZ_TREE_FREETYPE)
5873    MOZ_ENABLE_CAIRO_FT=1       
5874    FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
5875    FT2_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
5876    CAIRO_FT_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
5877    FT2_LIBS='$(LIBXUL_DIST)/lib/freetype2.lib'
5878    CAIRO_FT_LIBS='$(LIBXUL_DIST)/lib/freetype2.lib'
5879    AC_DEFINE(HAVE_FT_BITMAP_SIZE_Y_PPEM)
5880    AC_DEFINE(HAVE_FT_GLYPHSLOT_EMBOLDEN)
5881    AC_DEFINE(HAVE_FT_LOAD_SFNT_TABLE)
5882    AC_SUBST(CAIRO_FT_CFLAGS)
5886 dnl ========================================================
5887 dnl Installer
5888 dnl ========================================================
5889 case "$target_os" in
5890     aix*|solaris*|linux*|msvc*|mks*|cygwin*|mingw*|os2*|wince*)
5891         MOZ_INSTALLER=1
5892         ;;
5893 esac
5895 MOZ_ARG_DISABLE_BOOL(installer,
5896 [  --disable-installer     Disable building of installer],
5897     MOZ_INSTALLER=,
5898     MOZ_INSTALLER=1 )
5899 if test -n "$MOZ_INSTALLER" -a "$OS_ARCH" = "WINNT"; then
5900     # Disable installer for Windows builds that use the new toolkit if NSIS
5901     # isn't in the path.
5902     MOZ_PATH_PROGS(MAKENSIS, makensis)
5903     if test -z "$MAKENSIS" || test "$MAKENSIS" = ":"; then
5904         AC_MSG_ERROR([To build the installer makensis is required in your path. To build without the installer reconfigure using --disable-installer.])
5905     fi
5906     # The Windows build for NSIS requires the iconv command line utility to
5907     # convert the charset of the locale files.
5908     MOZ_PATH_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5909     if test -z "$HOST_ICONV"; then
5910         AC_MSG_ERROR([To build the installer iconv is required in your path. To build without the installer reconfigure using --disable-installer.])
5911     fi
5914 # Automatically disable installer if xpinstall isn't built
5915 if test -z "$MOZ_XPINSTALL"; then
5916     MOZ_INSTALLER=
5918 AC_SUBST(MOZ_INSTALLER)
5920 AC_MSG_CHECKING([for tar archiver])
5921 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
5922 if test -z "$TAR"; then
5923     AC_MSG_ERROR([no tar archiver found in \$PATH])
5925 AC_MSG_RESULT([$TAR])
5926 AC_SUBST(TAR)
5928 AC_MSG_CHECKING([for wget])
5929 AC_CHECK_PROGS(WGET, wget, "")
5930 AC_MSG_RESULT([$WGET])
5931 AC_SUBST(WGET)
5933 dnl ========================================================
5934 dnl Updater
5935 dnl ========================================================
5937 MOZ_ARG_DISABLE_BOOL(updater,
5938 [  --disable-updater       Disable building of updater],
5939     MOZ_UPDATER=,
5940     MOZ_UPDATER=1 )
5941 AC_SUBST(MOZ_UPDATER)
5943 # app update channel is 'default' when not supplied.
5944 MOZ_ARG_ENABLE_STRING([update-channel],
5945 [  --enable-update-channel=CHANNEL
5946                            Select application update channel (default=default)],
5947     MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
5949 if test -z "$MOZ_UPDATE_CHANNEL"; then
5950     MOZ_UPDATE_CHANNEL=default
5952 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
5954 # tools/update-packaging is not checked out by default.
5955 MOZ_ARG_ENABLE_BOOL(update-packaging,
5956 [  --enable-update-packaging
5957                            Enable tools/update-packaging],
5958     MOZ_UPDATE_PACKAGING=1,
5959     MOZ_UPDATE_PACKAGING= )
5960 AC_SUBST(MOZ_UPDATE_PACKAGING)
5962 dnl ========================================================
5963 dnl ActiveX
5964 dnl ========================================================
5966 MOZ_ARG_DISABLE_BOOL(xpconnect-idispatch,
5967 [  --disable-xpconnect-idispatch
5968                           Disable building of xpconnect support for IDispatch
5969                           (win32 only)],
5970     XPC_IDISPATCH_SUPPORT=,
5971     XPC_IDISPATCH_SUPPORT=1)
5972 AC_SUBST(XPC_IDISPATCH_SUPPORT)
5974 MOZ_ARG_DISABLE_BOOL(activex,
5975 [  --disable-activex       Disable building of ActiveX control (win32 only)],
5976     MOZ_NO_ACTIVEX_SUPPORT=1,
5977     MOZ_NO_ACTIVEX_SUPPORT= )
5978 AC_SUBST(MOZ_NO_ACTIVEX_SUPPORT)
5980 MOZ_ARG_ENABLE_BOOL(activex-scripting,
5981 [  --enable-activex-scripting
5982                           Enable building of ActiveX scripting support (win32)],
5983     MOZ_ACTIVEX_SCRIPTING_SUPPORT=1,
5984     MOZ_ACTIVEX_SCRIPTING_SUPPORT=)
5985 AC_SUBST(MOZ_ACTIVEX_SCRIPTING_SUPPORT)
5987 if test -n "$MOZ_NO_ACTIVEX_SUPPORT" -a -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT";
5988 then
5989     AC_MSG_ERROR([Cannot enable ActiveX scripting support when ActiveX support is disabled.])
5992 if test "$COMPILE_ENVIRONMENT" = "1"; then
5993 if test -n "$XPC_IDISPATCH_SUPPORT" -o -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
5994 case "$target" in
5995 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5996     if test "$ac_cv_header_atlbase_h" = "no"; then
5997         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.])
5998     fi
5999     ;;
6000 esac
6004 dnl ========================================================
6005 dnl leaky
6006 dnl ========================================================
6007 MOZ_ARG_ENABLE_BOOL(leaky,
6008 [  --enable-leaky          Build leaky memory tool],
6009     MOZ_LEAKY=1,
6010     MOZ_LEAKY=)
6013 dnl ========================================================
6014 dnl xpctools
6015 dnl ========================================================
6016 MOZ_ARG_ENABLE_BOOL(xpctools,
6017 [  --enable-xpctools       Build JS profiling tool],
6018     MOZ_XPCTOOLS=1,
6019     MOZ_XPCTOOLS= )
6022 dnl ========================================================
6023 dnl build the tests by default
6024 dnl ========================================================
6025 MOZ_ARG_DISABLE_BOOL(tests,
6026 [  --disable-tests         Do not build test libraries & programs],
6027     ENABLE_TESTS=,
6028     ENABLE_TESTS=1 )
6030 dnl ========================================================
6031 dnl parental controls (for Windows Vista)
6032 dnl ========================================================
6033 MOZ_ARG_DISABLE_BOOL(parental-controls,
6034 [  --disable-parental-controls
6035                            Do not build parental controls],
6036    MOZ_DISABLE_PARENTAL_CONTROLS=1,
6037    MOZ_DISABLE_PARENTAL_CONTROLS=)
6038 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
6039     AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
6042 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
6044 dnl ========================================================
6045 dnl =
6046 dnl = Module specific options
6047 dnl =
6048 dnl ========================================================
6049 MOZ_ARG_HEADER(Individual module options)
6051 dnl ========================================================
6052 dnl = Enable places (new history/bookmarks)
6053 dnl ========================================================
6054 MOZ_ARG_ENABLE_BOOL(places,
6055 [  --enable-places        Enable 'places' bookmark/history implementation],
6056     MOZ_PLACES=1,
6057     MOZ_PLACES= )
6058 if test -n "$MOZ_PLACES"; then
6059     AC_DEFINE(MOZ_PLACES)
6060     if test -z "$MOZ_MAIL_NEWS"; then
6061       MOZ_MORK=
6062     fi
6063     MOZ_MORKREADER=1
6064 else
6065   if test "$MOZ_BUILD_APP" = "browser"; then
6066     AC_MSG_ERROR([Cannot build Firefox with --disable-places.])
6067   fi
6070 dnl ========================================================
6071 dnl = Disable feed handling components
6072 dnl ========================================================
6073 MOZ_ARG_DISABLE_BOOL(feeds,
6074 [  --disable-feeds        Disable feed handling and processing components],
6075     MOZ_FEEDS=,
6076     MOZ_FEEDS=1 )
6077 if test -n "$MOZ_FEEDS"; then
6078     AC_DEFINE(MOZ_FEEDS)
6079 else
6080     if test "$MOZ_BUILD_APP" = "browser"; then
6081         AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
6082     fi
6085 dnl ========================================================
6086 dnl = Enable mozStorage
6087 dnl ========================================================
6088 dnl Implicitly enabled by default if building calendar or places
6089 MOZ_ARG_ENABLE_BOOL(storage,
6090 [  --enable-storage        Enable mozStorage module and related components],
6091     MOZ_STORAGE=1,
6092     MOZ_STORAGE= )
6093 if test -n "$MOZ_STORAGE"; then
6094     AC_DEFINE(MOZ_STORAGE)
6097 dnl ========================================================
6098 dnl Check for sqlite
6099 dnl ========================================================
6101 MOZ_NATIVE_SQLITE=
6102 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6103 [  --enable-system-sqlite  Use system sqlite (located with pkgconfig)],
6104 MOZ_NATIVE_SQLITE=1,
6105 MOZ_NATIVE_SQLITE= )
6107 if test -z "$MOZ_NATIVE_SQLITE"
6108 then
6109     SQLITE_CFLAGS=
6110     SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,sqlite3,$(DIST)/lib)'
6111 else
6112     PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6115 AC_SUBST(MOZ_NATIVE_SQLITE)
6117 dnl ========================================================
6118 dnl = Enable help viewer (off by default)
6119 dnl ========================================================
6120 MOZ_ARG_ENABLE_BOOL(help-viewer,
6121 [  --enable-help-viewer        Enable help viewer],
6122     MOZ_HELP_VIEWER=1,
6123     MOZ_HELP_VIEWER= )
6124 if test -n "$MOZ_HELP_VIEWER"; then
6125      AC_DEFINE(MOZ_HELP_VIEWER)
6127 AC_SUBST(MOZ_HELP_VIEWER)
6128 if test "$MOZ_BUILD_APP" = "browser" -a -n "$MOZ_HELP_VIEWER"; then
6129     AC_MSG_ERROR([Cannot build Firefox with --enable-help-viewer.])
6132 dnl ========================================================
6133 dnl = Enable safe browsing (anti-phishing)
6134 dnl ========================================================
6135 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6136 [  --enable-safe-browsing        Enable safe browsing (anti-phishing) implementation],
6137     MOZ_SAFE_BROWSING=1,
6138     MOZ_SAFE_BROWSING= )
6139 if test -n "$MOZ_SAFE_BROWSING"; then
6140     AC_DEFINE(MOZ_SAFE_BROWSING)
6142 AC_SUBST(MOZ_SAFE_BROWSING)
6144 dnl ========================================================
6145 dnl = Enable faststart component
6146 dnl ========================================================
6147 MOZ_ARG_ENABLE_BOOL(faststart,
6148 [  --enable-faststart            Enable the faststart component],
6149     MOZ_FASTSTART=1,
6150     MOZ_FASTSTART= )
6151 if test -n "$MOZ_FASTSTART"; then
6152     AC_DEFINE(MOZ_FASTSTART)
6154 AC_SUBST(MOZ_FASTSTART)
6156 dnl ========================================================
6157 dnl = Enable url-classifier
6158 dnl ========================================================
6159 dnl Implicitly enabled by default if building with safe-browsing
6160 if test -n "$MOZ_SAFE_BROWSING"; then
6161     MOZ_URL_CLASSIFIER=1
6163 MOZ_ARG_ENABLE_BOOL(url-classifier,
6164 [  --enable-url-classifier        Enable url classifier module],
6165     MOZ_URL_CLASSIFIER=1,
6166     MOZ_URL_CLASSIFIER= )
6167 if test -n "$MOZ_URL_CLASSIFIER"; then
6168     AC_DEFINE(MOZ_URL_CLASSIFIER)
6170 AC_SUBST(MOZ_URL_CLASSIFIER)
6172 dnl ========================================================
6173 dnl = Disable zipwriter
6174 dnl ========================================================
6175 MOZ_ARG_DISABLE_BOOL(zipwriter,
6176 [  --disable-zipwriter             Disable zipwriter component],
6177     MOZ_ZIPWRITER=,
6178     MOZ_ZIPWRITER=1 )
6179 AC_SUBST(MOZ_ZIPWRITER)
6181 dnl ========================================================
6182 dnl = Hildon and OSSO checks
6183 dnl ========================================================
6184 PKG_CHECK_MODULES(LIBHILDONMIME,libhildonmime,
6185                   MOZ_PLATFORM_HILDON=1,
6186                   MOZ_PLATFORM_HILDON=)
6187 if test $MOZ_PLATFORM_HILDON; then
6188    AC_DEFINE(MOZ_PLATFORM_HILDON)
6189    X11_COMPOSITED_PLUGINS="yes"
6191 AC_SUBST(LIBHILDONMIME_CFLAGS)
6192 AC_SUBST(LIBHILDONMIME_LIBS)
6194 if test "$X11_COMPOSITED_PLUGINS" = "yes"; then
6195     dnl if we have Xcomposite we should also have Xdamage and Xfixes
6196     AC_CHECK_HEADERS([X11/extensions/Xdamage.h], [],
6197                      [AC_MSG_ERROR([Couldn't find X11/extentsions/Xdamage.h which is required for composited plugins.])])
6198     AC_CHECK_LIB(Xcomposite, XCompositeRedirectWindow, [XCOMPOSITE_LIBS="-lXcomposite -lXdamage -lXfixes"],
6199                  [MISSING_X="$MISSING_X -lXcomposite"], $XLIBS)
6201 AC_SUBST(XCOMPOSITE_LIBS)
6203 PKG_CHECK_MODULES(LIBOSSO,libosso,
6204                   NS_OSSO=1,
6205                   NS_OSSO=)
6207 if test $NS_OSSO; then
6208     if test -z "$MOZ_ENABLE_DBUS"; then
6209         AC_MSG_ERROR([DBus is required when building for OSSO])
6210     fi
6211     AC_DEFINE(NS_OSSO)
6212     MOZ_GFX_OPTIMIZE_MOBILE=1
6214 AC_SUBST(LIBOSSO_CFLAGS)
6215 AC_SUBST(LIBOSSO_LIBS)
6217 dnl ========================================================
6218 dnl = faststripe theme
6219 dnl ========================================================
6220 MOZ_ARG_ENABLE_BOOL(faststripe,
6221 [  --enable-faststripe  Use faststripe theme],
6222     MOZ_THEME_FASTSTRIPE=1,
6223     MOZ_THEME_FASTSTRIPE= )
6224 AC_SUBST(MOZ_THEME_FASTSTRIPE)
6226 dnl ========================================================
6227 dnl =
6228 dnl = Feature options that require extra sources to be pulled
6229 dnl =
6230 dnl ========================================================
6231 dnl MOZ_ARG_HEADER(Features that require extra sources)
6233 dnl ========================================================
6234 dnl =
6235 dnl = Debugging Options
6236 dnl = 
6237 dnl ========================================================
6238 MOZ_ARG_HEADER(Debugging and Optimizations)
6240 dnl ========================================================
6241 dnl = Disable building with debug info.
6242 dnl = Debugging is OFF by default
6243 dnl ========================================================
6244 if test -z "$MOZ_DEBUG_FLAGS"
6245 then
6246     case "$target" in
6247     *-irix*)
6248         if test "$GNU_CC"; then
6249             GCC_VERSION=`$CC -v 2>&1 | awk '/version/ { print $3 }'`
6250             case "$GCC_VERSION" in
6251             2.95.*)
6252                 MOZ_DEBUG_FLAGS=""
6253                 ;;
6254             *)
6255                 MOZ_DEBUG_FLAGS="-g"
6256                 ;;
6257             esac
6258         else
6259             MOZ_DEBUG_FLAGS="-g"
6260         fi
6261         ;;
6262     *)
6263         MOZ_DEBUG_FLAGS="-g"
6264         ;;
6265     esac
6268 MOZ_ARG_ENABLE_STRING(debug,
6269 [  --enable-debug[=DBG]    Enable building with developer debug info
6270                           (Using compiler flags DBG)],
6271 [ if test "$enableval" != "no"; then
6272     MOZ_DEBUG=1
6273     if test -n "$enableval" && test "$enableval" != "yes"; then
6274         MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6275     fi
6276   else
6277     MOZ_DEBUG=
6278   fi ],
6279   MOZ_DEBUG=)
6281 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG"
6282  case "${target_os}" in
6283     beos*)
6284         MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${USER}"
6285         ;;
6286     msvc*|mks*|cygwin*|mingw*|os2*|wince*)
6287         MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
6288         ;;
6289     *) 
6290         MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`$WHOAMI`"
6291         ;;
6292   esac
6293 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DTRACING"
6295 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
6297 if test -n "$MOZ_DEBUG"; then
6298     AC_MSG_CHECKING([for valid debug flags])
6299     _SAVE_CFLAGS=$CFLAGS
6300     CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
6301     AC_TRY_COMPILE([#include <stdio.h>], 
6302         [printf("Hello World\n");],
6303         _results=yes,
6304         _results=no)
6305     AC_MSG_RESULT([$_results])
6306     if test "$_results" = "no"; then
6307         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
6308     fi
6309     CFLAGS=$_SAVE_CFLAGS
6312 dnl ========================================================
6313 dnl enable mobile optimizations
6314 dnl ========================================================
6315 MOZ_ARG_ENABLE_BOOL(mobile-optimize,
6316 [  --enable-mobile-optimize   Enable mobile optimizations],
6317     MOZ_GFX_OPTIMIZE_MOBILE=1)
6319 AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
6321 if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
6322     AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
6325 dnl ========================================================
6326 dnl = Enable code optimization. ON by default.
6327 dnl ========================================================
6328 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6329         MOZ_OPTIMIZE_FLAGS="-O"
6332 MOZ_ARG_ENABLE_STRING(optimize,
6333 [  --disable-optimize      Disable compiler optimization
6334   --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6335 [ if test "$enableval" != "no"; then
6336     MOZ_OPTIMIZE=1
6337     if test -n "$enableval" && test "$enableval" != "yes"; then
6338         MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6339         MOZ_OPTIMIZE=2
6340     fi
6341 else
6342     MOZ_OPTIMIZE=
6343 fi ], MOZ_OPTIMIZE=1)
6345 if test "$COMPILE_ENVIRONMENT"; then
6346 if test -n "$MOZ_OPTIMIZE"; then
6347     AC_MSG_CHECKING([for valid optimization flags])
6348     _SAVE_CFLAGS=$CFLAGS
6349     CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6350     AC_TRY_COMPILE([#include <stdio.h>], 
6351         [printf("Hello World\n");],
6352         _results=yes,
6353         _results=no)
6354     AC_MSG_RESULT([$_results])
6355     if test "$_results" = "no"; then
6356         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6357     fi
6358     CFLAGS=$_SAVE_CFLAGS
6360 fi # COMPILE_ENVIRONMENT
6362 AC_SUBST(MOZ_OPTIMIZE)
6363 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6364 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6365 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6367 dnl ========================================================
6368 dnl = Enable/disable debug for specific modules only
6369 dnl =   module names beginning with ^ will be disabled 
6370 dnl ========================================================
6371 MOZ_ARG_ENABLE_STRING(debug-modules,
6372 [  --enable-debug-modules  Enable/disable debug info for specific modules],
6373 [ MOZ_DEBUG_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6375 dnl ========================================================
6376 dnl = Enable/disable generation of debugger info for specific modules only
6377 dnl =    the special module name ALL_MODULES can be used to denote all modules
6378 dnl =    module names beginning with ^ will be disabled
6379 dnl ========================================================
6380 MOZ_ARG_ENABLE_STRING(debugger-info-modules,
6381 [  --enable-debugger-info-modules
6382                           Enable/disable debugger info for specific modules],
6383 [ for i in `echo $enableval | sed 's/,/ /g'`; do
6384       dnl note that the list of module names is reversed as it is copied
6385       dnl this is important, as it will allow config.mk to interpret stuff like
6386       dnl "^ALL_MODULES xpcom" properly
6387       if test "$i" = "no"; then
6388         i="^ALL_MODULES"
6389       fi
6390       if test "$i" = "yes"; then
6391         i="ALL_MODULES"
6392       fi
6393       MOZ_DBGRINFO_MODULES="$i $MOZ_DBGRINFO_MODULES";
6394     done ])
6396 dnl ========================================================
6397 dnl Disable runtime logging checks
6398 dnl ========================================================
6399 MOZ_ARG_DISABLE_BOOL(logging,
6400 [  --disable-logging       Disable logging facilities],
6401     NS_DISABLE_LOGGING=1,
6402     NS_DISABLE_LOGGING= )
6403 if test "$NS_DISABLE_LOGGING"; then
6404     AC_DEFINE(NS_DISABLE_LOGGING)
6405 else
6406     AC_DEFINE(MOZ_LOGGING)
6409 dnl ========================================================
6410 dnl = dnl This will enable logging of addref, release, ctor, dtor.
6411 dnl ========================================================
6412 _ENABLE_LOGREFCNT=42
6413 MOZ_ARG_ENABLE_BOOL(logrefcnt,
6414 [  --enable-logrefcnt      Enable logging of refcounts (default=debug) ],
6415     _ENABLE_LOGREFCNT=1,
6416     _ENABLE_LOGREFCNT= )
6417 if test "$_ENABLE_LOGREFCNT" = "1"; then
6418     AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
6419 elif test -z "$_ENABLE_LOGREFCNT"; then
6420     AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
6423 dnl ========================================================
6424 dnl = Enable trace malloc
6425 dnl ========================================================
6426 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
6427 MOZ_ARG_ENABLE_BOOL(trace-malloc,
6428 [  --enable-trace-malloc   Enable malloc tracing],
6429     NS_TRACE_MALLOC=1,
6430     NS_TRACE_MALLOC= )
6431 if test "$NS_TRACE_MALLOC"; then
6432   # Please, Mr. Linker Man, don't take away our symbol names
6433   MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6434   USE_ELF_DYNSTR_GC=
6435   AC_DEFINE(NS_TRACE_MALLOC)
6437 AC_SUBST(NS_TRACE_MALLOC)
6439 dnl ========================================================
6440 dnl = Enable jemalloc
6441 dnl ========================================================
6442 MOZ_ARG_ENABLE_BOOL(jemalloc,
6443 [  --enable-jemalloc       Replace memory allocator with jemalloc],
6444     MOZ_MEMORY=1,
6445     MOZ_MEMORY=)
6447 if test "$NS_TRACE_MALLOC"; then
6448     MOZ_MEMORY=
6451 if test "$MOZ_MEMORY"; then
6453   dnl Don't try to run compiler tests on Windows  
6454   if test "$OS_ARCH" = "WINNT"; then
6455     if test -z "$HAVE_64BIT_OS"; then
6456       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6457     else
6458       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6459     fi
6460   else
6461     AC_CHECK_SIZEOF([int *], [4])
6462     case "${ac_cv_sizeof_int_p}" in
6463     4)
6464       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6465       ;;
6466     8)
6467       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6468       ;;
6469     *)
6470       AC_MSG_ERROR([Unexpected pointer size])
6471       ;;
6472     esac
6473   fi
6475   AC_DEFINE(MOZ_MEMORY)
6476   if test "x$MOZ_DEBUG" = "x1"; then
6477     AC_DEFINE(MOZ_MEMORY_DEBUG)
6478   fi
6479   dnl The generic feature tests that determine how to compute ncpus are long and
6480   dnl complicated.  Therefore, simply define special cpp variables for the
6481   dnl platforms we have special knowledge of.
6482   case "${target_os}" in
6483   darwin*)
6484     AC_DEFINE(MOZ_MEMORY_DARWIN)
6485     ;;
6486   *freebsd*)
6487     AC_DEFINE(MOZ_MEMORY_BSD)
6488     ;;
6489   *linux*)
6490     AC_DEFINE(MOZ_MEMORY_LINUX)
6491     ;;
6492   netbsd*)
6493     AC_DEFINE(MOZ_MEMORY_BSD)
6494     ;;
6495   solaris*)
6496     AC_DEFINE(MOZ_MEMORY_SOLARIS)
6497     ;;
6498   msvc*|mks*|cygwin*|mingw*)
6499     AC_DEFINE(MOZ_MEMORY_WINDOWS)
6500     dnl This is sort of awful. Will revisit if we add support for more versions
6501     if test "$CC_VERSION" != "14.00.50727.762" -a "$CC_VERSION" != "15.00.30729.01"; then
6502         AC_MSG_ERROR([Building jemalloc requires exactly Visual C++ 2005 SP1 or 2008 SP1 currently.])
6503     fi
6504     if test -z "$WIN32_CRT_SRC_DIR"; then
6505       if test -z "$VCINSTALLDIR" -o ! -d "$VCINSTALLDIR"; then
6506         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).])
6507       else
6508         WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src"
6509       fi
6510     fi
6511     dnl cpu check
6512     case "${target_cpu}" in
6513     i*86)
6514       _WIN32_CRT_CPU=intel
6515       ;;
6516     *)
6517       AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
6518       ;;
6519     esac
6521     if test ! -d "$WIN32_CRT_SRC_DIR"; then
6522       AC_MSG_ERROR([Invalid Win32 CRT source directory: ${WIN32_CRT_SRC_DIR}])
6523     fi
6524     WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd -W`
6525     _objdir_win=`pwd -W`
6526     WIN32_CUSTOM_CRT_DIR="$_objdir_win/memory/jemalloc/crtsrc/build/$_WIN32_CRT_CPU"
6527     MOZ_MEMORY_LDFLAGS="-MANIFEST:NO -LIBPATH:\"$WIN32_CUSTOM_CRT_DIR\" -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt19 -DEFAULTLIB:mozcpp19"
6528     dnl Also pass this to NSPR/NSS
6529     DLLFLAGS="$DLLFLAGS $MOZ_MEMORY_LDFLAGS"
6530     export DLLFLAGS
6531     ;;
6532   *wince)
6533     AC_DEFINE(MOZ_MEMORY_WINCE)
6534     AC_DEFINE(MOZ_MEMORY_WINDOWS)
6535     if test -z "$WINCE_WINDOWS_MOBILE"; then
6536       AC_DEFINE(MOZ_MEMORY_WINCE6)
6537     fi
6538     ;;
6539   *)
6540     AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
6541     ;;
6542   esac
6544 AC_SUBST(MOZ_MEMORY)
6545 AC_SUBST(MOZ_MEMORY_LDFLAGS)
6546 AC_SUBST(WIN32_CRT_SRC_DIR)
6547 dnl Need to set this for make because NSS doesn't have configure
6548 AC_SUBST(DLLFLAGS)
6550 dnl ========================================================
6551 dnl = Use malloc wrapper lib
6552 dnl ========================================================
6553 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
6554 [  --enable-wrap-malloc    Wrap malloc calls (gnu linker only)],
6555     _WRAP_MALLOC=1,
6556     _WRAP_MALLOC= )
6558 if test -n "$_WRAP_MALLOC"; then
6559     if test "$GNU_CC"; then
6560     WRAP_MALLOC_CFLAGS="${LDFLAGS} -Wl,--wrap -Wl,malloc -Wl,--wrap -Wl,free -Wl,--wrap -Wl,realloc -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"
6561     MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) -o $@'
6562     fi
6565 dnl ========================================================
6566 dnl = Location of malloc wrapper lib
6567 dnl ========================================================
6568 MOZ_ARG_WITH_STRING(wrap-malloc,
6569 [  --with-wrap-malloc=DIR  Location of malloc wrapper library],
6570     WRAP_MALLOC_LIB=$withval)
6572 dnl ========================================================
6573 dnl = Use TraceVis
6574 dnl ========================================================
6575 MOZ_ARG_ENABLE_BOOL(tracevis,
6576 [  --enable-tracevis       Enable TraceVis tracing tool (default=no)],
6577     MOZ_TRACEVIS=1,
6578     MOZ_TRACEVIS= )
6579 if test -n "$MOZ_TRACEVIS"; then
6580     AC_DEFINE(MOZ_TRACEVIS)
6583 dnl ========================================================
6584 dnl = Use Valgrind
6585 dnl ========================================================
6586 MOZ_ARG_ENABLE_BOOL(valgrind,
6587 [  --enable-valgrind       Enable Valgrind integration hooks (default=no)],
6588     MOZ_VALGRIND=1,
6589     MOZ_VALGRIND= )
6590 if test -n "$MOZ_VALGRIND"; then
6591     AC_CHECK_HEADER([valgrind/valgrind.h], [],
6592         AC_MSG_ERROR(
6593             [--enable-valgrind specified but Valgrind is not installed]))
6594     AC_DEFINE(MOZ_VALGRIND)
6597 dnl ========================================================
6598 dnl jprof
6599 dnl ========================================================
6600 MOZ_ARG_ENABLE_BOOL(jprof,
6601 [  --enable-jprof          Enable jprof profiling tool (needs mozilla/tools/jprof)],
6602     MOZ_JPROF=1,
6603     MOZ_JPROF= )
6604 if test -n "$MOZ_JPROF"; then
6605     AC_DEFINE(MOZ_JPROF)
6608 dnl ========================================================
6609 dnl shark
6610 dnl ========================================================
6611 MOZ_ARG_ENABLE_BOOL(shark,
6612 [  --enable-shark          Enable shark remote profiling (needs CHUD framework)],
6613     MOZ_SHARK=1,
6614     MOZ_SHARK= )
6615 if test -n "$MOZ_SHARK"; then
6616     AC_DEFINE(MOZ_SHARK)
6619 dnl ========================================================
6620 dnl callgrind
6621 dnl ========================================================
6622 MOZ_ARG_ENABLE_BOOL(callgrind,
6623 [  --enable-callgrind      Enable callgrind profiling],
6624     MOZ_CALLGRIND=1,
6625     MOZ_CALLGRIND= )
6626 if test -n "$MOZ_CALLGRIND"; then
6627     AC_DEFINE(MOZ_CALLGRIND)
6630 dnl ========================================================
6631 dnl vtune
6632 dnl ========================================================
6633 MOZ_ARG_ENABLE_BOOL(vtune,
6634 [  --enable-vtune          Enable vtune profiling],
6635     MOZ_VTUNE=1,
6636     MOZ_VTUNE= )
6637 if test -n "$MOZ_VTUNE"; then
6638     AC_DEFINE(MOZ_VTUNE)
6641 dnl ========================================================
6642 dnl Zealous JavaScript GC
6643 dnl ========================================================
6644 MOZ_ARG_ENABLE_BOOL(gczeal,
6645 [  --enable-gczeal          Enable zealous JavaScript GCing],
6646     JS_GC_ZEAL=1,
6647     JS_GC_ZEAL= )
6648 if test -n "$JS_GC_ZEAL"; then
6649     AC_DEFINE(JS_GC_ZEAL)
6652 dnl ========================================================
6653 dnl = Enable static checking using gcc-dehydra
6654 dnl ========================================================
6656 MOZ_ARG_WITH_STRING(static-checking,
6657 [  --with-static-checking=path/to/gcc_dehydra.so
6658                             Enable static checking of code using GCC-dehydra],
6659     DEHYDRA_PATH=$withval,
6660     DEHYDRA_PATH= )
6662 if test -n "$DEHYDRA_PATH"; then
6663     if test ! -f "$DEHYDRA_PATH"; then
6664         AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
6665     fi
6666     AC_DEFINE(NS_STATIC_CHECKING)
6668 AC_SUBST(DEHYDRA_PATH)
6670 dnl ========================================================
6671 dnl = Enable stripping of libs & executables
6672 dnl ========================================================
6673 MOZ_ARG_ENABLE_BOOL(strip,
6674 [  --enable-strip          Enable stripping of libs & executables ],
6675     ENABLE_STRIP=1,
6676     ENABLE_STRIP= )
6678 dnl ========================================================
6679 dnl = Enable stripping of libs & executables when packaging
6680 dnl ========================================================
6681 MOZ_ARG_ENABLE_BOOL(install-strip,
6682 [  --enable-install-strip  Enable stripping of libs & executables when packaging ],
6683     PKG_SKIP_STRIP= ,
6684     PKG_SKIP_STRIP=1)
6686 dnl ========================================================
6687 dnl = --enable-elf-dynstr-gc
6688 dnl ========================================================
6689 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
6690 [  --enable-elf-dynstr-gc  Enable elf dynstr garbage collector (opt builds only)],
6691     USE_ELF_DYNSTR_GC=1,
6692     USE_ELF_DYNSTR_GC= )
6694 dnl ========================================================
6695 dnl = 
6696 dnl = Profiling and Instrumenting
6697 dnl = 
6698 dnl ========================================================
6699 MOZ_ARG_HEADER(Profiling and Instrumenting)
6701 dnl ========================================================
6702 dnl = Enable timeline service, which provides lightweight
6703 dnl = instrumentation of mozilla for performance measurement.
6704 dnl = Timeline is off by default.
6705 dnl ========================================================
6706 MOZ_ARG_ENABLE_BOOL(timeline,
6707 [  --enable-timeline       Enable timeline services ],
6708     MOZ_TIMELINE=1,
6709     MOZ_TIMELINE= )
6710 if test -n "$MOZ_TIMELINE"; then
6711     AC_DEFINE(MOZ_TIMELINE)
6714 dnl ========================================================
6715 dnl Turn on reflow counting
6716 dnl ========================================================
6717 MOZ_ARG_ENABLE_BOOL(reflow-perf,
6718 [  --enable-reflow-perf    Enable reflow performance tracing],
6719     MOZ_REFLOW_PERF=1,
6720     MOZ_REFLOW_PERF= )
6721 if test -n "$MOZ_REFLOW_PERF"; then
6722     AC_DEFINE(MOZ_REFLOW_PERF)
6725 dnl ========================================================
6726 dnl Enable code size metrics.
6727 dnl ========================================================
6728 MOZ_ARG_ENABLE_BOOL(codesighs,
6729 [  --enable-codesighs      Enable code size analysis tools],
6730     _ENABLE_CODESIGHS=1,
6731     _ENABLE_CODESIGHS= )
6732 if test -n "$_ENABLE_CODESIGHS"; then
6733     if test -d $srcdir/tools/codesighs; then 
6734         MOZ_MAPINFO=1
6735     else
6736         AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
6737     fi
6740 MOZ_ARG_ENABLE_BOOL(insure,
6741 [  --enable-insure         Enable insure++ instrumentation (linux only)],
6742     _ENABLE_INSURE=1,
6743     _ENABLE_INSURE= )
6744 if test -n "$_ENABLE_INSURE"; then
6745     MOZ_INSURE="insure"
6746     MOZ_INSURIFYING=1
6747     MOZ_INSURE_DIRS="."
6748     MOZ_INSURE_EXCLUDE_DIRS="config"
6751 MOZ_ARG_WITH_STRING(insure-dirs,
6752 [  --with-insure-dirs=DIRS
6753                           Dirs to instrument with insure ],
6754     MOZ_INSURE_DIRS=$withval )
6756 MOZ_ARG_WITH_STRING(insure-exclude-dirs,
6757 [  --with-insure-exclude-dirs=DIRS
6758                           Dirs to not instrument with insure ],
6759     MOZ_INSURE_EXCLUDE_DIRS="config $withval" )
6761 dnl ========================================================
6762 dnl = Support for Quantify (Windows)
6763 dnl ========================================================
6764 MOZ_ARG_ENABLE_BOOL(quantify,
6765 [  --enable-quantify      Enable Quantify support (Windows only) ],
6766     MOZ_QUANTIFY=1,
6767     MOZ_QUANTIFY= )
6769 dnl ========================================================
6770 dnl = Support for demangling undefined symbols
6771 dnl ========================================================
6772 if test -z "$SKIP_LIBRARY_CHECKS"; then
6773     AC_LANG_SAVE
6774     AC_LANG_CPLUSPLUS
6775     AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
6776     AC_LANG_RESTORE
6779 # Demangle only for debug or trace-malloc builds
6780 MOZ_DEMANGLE_SYMBOLS=
6781 if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
6782     MOZ_DEMANGLE_SYMBOLS=1
6783     AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
6785 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
6787 dnl ========================================================
6788 dnl = Support for gcc stack unwinding (from gcc 3.3)
6789 dnl ========================================================
6790 if test "$HAVE_GCC3_ABI" && test -z "$SKIP_LIBRARY_CHECKS"; then
6791     AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
6794 dnl ========================================================
6795 dnl =
6796 dnl = Misc. Options
6797 dnl = 
6798 dnl ========================================================
6799 MOZ_ARG_HEADER(Misc. Options)
6801 dnl ========================================================
6802 dnl update xterm title
6803 dnl ========================================================
6804 MOZ_ARG_ENABLE_BOOL(xterm-updates,
6805 [  --enable-xterm-updates  Update XTERM titles with current command.],
6806     MOZ_UPDATE_XTERM=1,
6807     MOZ_UPDATE_XTERM= )
6809 dnl =========================================================
6810 dnl = Chrome format
6811 dnl =========================================================
6812 MOZ_ARG_ENABLE_STRING([chrome-format],
6813 [  --enable-chrome-format=jar|flat|both|symlink
6814                           Select FORMAT of chrome files (default=jar)],
6815     MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
6817 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
6818     MOZ_CHROME_FILE_FORMAT=jar
6821 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" && 
6822     test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
6823     test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
6824     test "$MOZ_CHROME_FILE_FORMAT" != "both"; then
6825     AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, or symlink])
6828 if test "$MOZ_CHROME_FILE_FORMAT" = "jar"; then
6829    AC_DEFINE(MOZ_CHROME_FILE_FORMAT_JAR)
6831 dnl ========================================================
6832 dnl = Define default location for MOZILLA_FIVE_HOME
6833 dnl ========================================================
6834 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
6835 [  --with-default-mozilla-five-home
6836                           Set the default value for MOZILLA_FIVE_HOME],
6837 [ val=`echo $withval`
6838   AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
6840 dnl ========================================================
6841 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
6842 dnl ========================================================
6843 MOZ_ARG_WITH_STRING(user-appdir,
6844 [  --with-user-appdir=DIR  Set user-specific appdir (default=.mozilla)],
6845 [ val=`echo $withval`
6846 if echo "$val" | grep "\/" >/dev/null; then
6847     AC_MSG_ERROR("Homedir must be single relative path.")
6848 else 
6849     MOZ_USER_DIR="$val"
6850 fi])
6852 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
6854 dnl ========================================================
6855 dnl = Doxygen configuration
6856 dnl ========================================================
6857 dnl Use commas to specify multiple dirs to this arg
6858 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
6859 MOZ_ARG_WITH_STRING(doc-input-dirs,
6860 [  --with-doc-input-dirs=DIRS
6861                           Header/idl dirs to create docs from],
6862 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6863 AC_SUBST(MOZ_DOC_INPUT_DIRS)
6865 dnl Use commas to specify multiple dirs to this arg
6866 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
6867 MOZ_ARG_WITH_STRING(doc-include-dirs,
6868 [  --with-doc-include-dirs=DIRS  
6869                           Include dirs to preprocess doc headers],
6870 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6871 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
6873 MOZ_DOC_OUTPUT_DIR='./dist/docs'
6874 MOZ_ARG_WITH_STRING(doc-output-dir,
6875 [  --with-doc-output-dir=DIR
6876                           Dir to generate docs into],
6877 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
6878 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
6880 if test -z "$SKIP_COMPILER_CHECKS"; then
6881 dnl ========================================================
6882 dnl =
6883 dnl = Compiler Options
6884 dnl = 
6885 dnl ========================================================
6886 MOZ_ARG_HEADER(Compiler Options)
6888 dnl ========================================================
6889 dnl Check for gcc -pipe support
6890 dnl ========================================================
6891 AC_MSG_CHECKING([for gcc -pipe support])
6892 if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
6893     echo '#include <stdio.h>' > dummy-hello.c
6894     echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
6895     ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
6896     cat dummy-hello.s 2> /dev/null | ${AS_BIN} -o dummy-hello.S - 2>&5
6897     if test $? = 0; then
6898         _res_as_stdin="yes"
6899     else
6900         _res_as_stdin="no"
6901     fi
6902     if test "$_res_as_stdin" = "yes"; then
6903         _SAVE_CFLAGS=$CFLAGS
6904         CFLAGS="$CFLAGS -pipe"
6905         AC_TRY_COMPILE( [ #include <stdio.h> ],
6906             [printf("Hello World\n");],
6907             [_res_gcc_pipe="yes"],
6908             [_res_gcc_pipe="no"] )
6909         CFLAGS=$_SAVE_CFLAGS
6910     fi
6911     if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then
6912         _res="yes";
6913         CFLAGS="$CFLAGS -pipe"
6914         CXXFLAGS="$CXXFLAGS -pipe"
6915     else
6916         _res="no"
6917     fi
6918     rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
6919     AC_MSG_RESULT([$_res])
6920 else
6921     AC_MSG_RESULT([no])
6924 dnl pass -Wno-long-long to the compiler
6925 MOZ_ARG_ENABLE_BOOL(long-long-warning,
6926 [  --enable-long-long-warning 
6927                           Warn about use of non-ANSI long long type],
6928     _IGNORE_LONG_LONG_WARNINGS=,
6929     _IGNORE_LONG_LONG_WARNINGS=1)
6931 if test "$_IGNORE_LONG_LONG_WARNINGS"; then
6932      _SAVE_CFLAGS="$CFLAGS"
6933      CFLAGS="$CFLAGS ${_COMPILER_PREFIX}-Wno-long-long"
6934      AC_MSG_CHECKING([whether compiler supports -Wno-long-long])
6935      AC_TRY_COMPILE([], [return(0);], 
6936         [ _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6937           _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6938           result="yes" ], result="no")
6939      AC_MSG_RESULT([$result])
6940      CFLAGS="$_SAVE_CFLAGS"
6943 dnl ========================================================
6944 dnl Profile guided optimization
6945 dnl ========================================================
6946 dnl Test for profiling options
6947 dnl Under gcc 3.3, use -fprofile-arcs/-fbranch-probabilities
6948 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
6950 dnl Provide a switch to disable PGO even when called via profiledbuild.
6951 MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
6952 [  --disable-profile-guided-optimization
6953                            Don't build with PGO even if called via make profiledbuild],
6954 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
6955 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
6957 AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
6959 _SAVE_CFLAGS="$CFLAGS"
6960 CFLAGS="$CFLAGS -fprofile-generate"
6962 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
6963 AC_TRY_COMPILE([], [return 0;],
6964                [ PROFILE_GEN_CFLAGS="-fprofile-generate"
6965                  result="yes" ], result="no")
6966 AC_MSG_RESULT([$result])
6968 if test $result = "yes"; then
6969   PROFILE_GEN_LDFLAGS="-fprofile-generate"
6970   PROFILE_USE_CFLAGS="-fprofile-use"
6971   PROFILE_USE_LDFLAGS="-fprofile-use"
6972 else
6973   CFLAGS="$_SAVE_CFLAGS -fprofile-arcs"
6974   AC_MSG_CHECKING([whether C compiler supports -fprofile-arcs])
6975   AC_TRY_COMPILE([], [return 0;],
6976                  [ PROFILE_GEN_CFLAGS="-fprofile-arcs"
6977                    result="yes" ], result="no")
6978   AC_MSG_RESULT([$result])
6979   if test $result = "yes"; then
6980     PROFILE_USE_CFLAGS="-fbranch-probabilities"
6981   fi
6982   # don't really care, this is an old GCC
6983   PROFILE_GEN_LDFLAGS=
6984   PROFILE_USE_LDFLAGS=
6987 CFLAGS="$_SAVE_CFLAGS"
6989 if test -n "$INTEL_CC"; then
6990   PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
6991   PROFILE_GEN_LDFLAGS=
6992   PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
6993   PROFILE_USE_LDFLAGS=
6996 dnl Sun Studio on Solaris
6997 if test "$SOLARIS_SUNPRO_CC"; then
6998   PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
6999   PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
7000   if test "$CPU_ARCH" != "sparc"; then
7001     PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
7002     PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
7003   else
7004     PROFILE_USE_CFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
7005     PROFILE_USE_LDFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
7006   fi
7009 AC_SUBST(PROFILE_GEN_CFLAGS)
7010 AC_SUBST(PROFILE_GEN_LDFLAGS)
7011 AC_SUBST(PROFILE_USE_CFLAGS)
7012 AC_SUBST(PROFILE_USE_LDFLAGS)
7014 AC_LANG_CPLUSPLUS
7016 dnl ========================================================
7017 dnl Test for -pedantic bustage
7018 dnl ========================================================
7019 MOZ_ARG_DISABLE_BOOL(pedantic,
7020 [  --disable-pedantic      Issue all warnings demanded by strict ANSI C ],
7021 _PEDANTIC= )
7022 if test "$_PEDANTIC"; then
7023     _SAVE_CXXFLAGS=$CXXFLAGS
7024     CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
7025     AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
7026     AC_TRY_COMPILE([$configure_static_assert_macros],
7027                    [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
7028                    result="no", result="yes" )
7029     AC_MSG_RESULT([$result])
7030     CXXFLAGS="$_SAVE_CXXFLAGS"
7032     case "$result" in
7033     no)
7034         _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic"
7035         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
7036         ;;
7037     yes)
7038         AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic.  Reconfigure using --disable-pedantic. ])
7039         ;;
7040     esac
7043 dnl ========================================================
7044 dnl Test for correct temporary object destruction order
7045 dnl ========================================================
7046 dnl We want to make sure the compiler follows the C++ spec here as 
7047 dnl xpcom and the string classes depend on it (bug 235381).
7048 AC_MSG_CHECKING([for correct temporary object destruction order])
7049 AC_TRY_RUN([ class A {
7050              public:  A(int& x) : mValue(x) {}
7051                       ~A() { mValue--; }
7052                       operator char**() { return 0; }
7053              private:  int& mValue;
7054              };
7055              void func(char **arg) {}
7056              int m=2;
7057              void test() {
7058                   func(A(m));
7059                   if (m==1) m = 0;
7060              }
7061              int main() {
7062                  test();
7063                  return(m);
7064              }
7065              ],
7066      result="yes", result="no", result="maybe")
7067 AC_MSG_RESULT([$result])
7069 if test "$result" = "no"; then
7070     AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
7073 dnl ========================================================
7074 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
7075 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
7076 dnl raw pointers in nsCOMPtr.h.  (VC++ has the same bug.)
7077 dnl ========================================================
7078 _SAVE_CXXFLAGS=$CXXFLAGS
7079 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
7080 AC_CACHE_CHECK(for correct overload resolution with const and templates,
7081     ac_nscap_nonconst_opeq_bug,
7082     [AC_TRY_COMPILE([
7083                       template <class T>
7084                       class Pointer
7085                         {
7086                         public:
7087                           T* myPtr;
7088                         };
7089                       
7090                       template <class T, class U>
7091                       int operator==(const Pointer<T>& rhs, U* lhs)
7092                         {
7093                           return rhs.myPtr == lhs;
7094                         }
7095                       
7096                       template <class T, class U>
7097                       int operator==(const Pointer<T>& rhs, const U* lhs)
7098                         {
7099                           return rhs.myPtr == lhs;
7100                         }
7101                     ],
7102                     [
7103                       Pointer<int> foo;
7104                       const int* bar;
7105                       return foo == bar;
7106                     ],
7107                     ac_nscap_nonconst_opeq_bug="no",
7108                     ac_nscap_nonconst_opeq_bug="yes")])
7109 CXXFLAGS="$_SAVE_CXXFLAGS"
7111 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
7112     AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
7114 fi # SKIP_COMPILER_CHECKS
7116 dnl ========================================================
7117 dnl C++ rtti
7118 dnl Should be smarter and check that the compiler does indeed have rtti
7119 dnl ========================================================
7120 MOZ_ARG_ENABLE_BOOL(cpp-rtti,
7121 [  --enable-cpp-rtti       Enable C++ RTTI ],
7122 [ _MOZ_USE_RTTI=1 ],
7123 [ _MOZ_USE_RTTI= ])
7125 if test "$_MOZ_USE_RTTI"; then
7126    _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
7127 else
7128    _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
7131 AC_SUBST(_MOZ_RTTI_FLAGS_ON)
7133 dnl ========================================================
7134 dnl C++ exceptions (g++/egcs only - for now)
7135 dnl Should be smarter and check that the compiler does indeed have exceptions
7136 dnl ========================================================
7137 MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
7138 [  --enable-cpp-exceptions Enable C++ exceptions ],
7139 [ _MOZ_CPP_EXCEPTIONS=1 ],
7140 [ _MOZ_CPP_EXCEPTIONS= ])
7142 if test "$_MOZ_CPP_EXCEPTIONS"; then
7143     _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_ON
7144 else
7145     _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_OFF
7148 AC_SUBST(_MOZ_EXCEPTIONS_FLAGS_ON)
7150 # Irix & OSF native compilers do not like exception declarations 
7151 # when exceptions are disabled
7152 if test -n "$MIPSPRO_CXX" -o -n "$COMPAQ_CXX" -o -n "$VACPP"; then
7153     AC_DEFINE(CPP_THROW_NEW, [])
7154 else
7155     AC_DEFINE(CPP_THROW_NEW, [throw()])
7157 AC_LANG_C
7159 dnl ========================================================
7160 dnl =
7161 dnl = Build depencency options
7162 dnl =
7163 dnl ========================================================
7164 MOZ_ARG_HEADER(Build dependencies)
7166 dnl ========================================================
7167 dnl = Do not auto generate dependency info
7168 dnl ========================================================
7169 MOZ_AUTO_DEPS=1
7170 MOZ_ARG_DISABLE_BOOL(auto-deps,
7171 [  --disable-auto-deps     Do not automatically generate dependency info],
7172     MOZ_AUTO_DEPS=,
7173     MOZ_AUTO_DEPS=1)
7175 if test -n "$MOZ_AUTO_DEPS"; then
7176 dnl ========================================================
7177 dnl = Use mkdepend instead of $CC -MD for dependency generation
7178 dnl ========================================================
7179 _cpp_md_flag=
7180 MOZ_ARG_DISABLE_BOOL(md,
7181 [  --disable-md            Do not use compiler-based dependencies ],
7182   [_cpp_md_flag=],
7183   [_cpp_md_flag=1],
7184   [dnl Default is to turn on -MD if using GNU-compatible compilers
7185    if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
7186      _cpp_md_flag=1
7187    fi
7188   dnl Default is to use -xM if using Sun Studio on Solaris
7189    if test "$SOLARIS_SUNPRO_CC"; then
7190      _cpp_md_flag=1
7191    fi])
7192 if test "$_cpp_md_flag"; then
7193   COMPILER_DEPEND=1
7194   if test "$OS_ARCH" = "OpenVMS"; then
7195     _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(basename $(@F)).pp))'
7196   else
7197     _DEPEND_CFLAGS='$(filter-out %/.pp,-Wp,-MD,$(MDDEPDIR)/$(basename $(@F)).pp)'
7198   fi
7199   dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7200   if test "$SOLARIS_SUNPRO_CC"; then
7201     _DEPEND_CFLAGS=
7202   fi
7203 else
7204   COMPILER_DEPEND=
7205   dnl Don't override this for MSVC
7206   if test -z "$_WIN32_MSVC"; then
7207     _USE_CPP_INCLUDE_FLAG=
7208     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7209     _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7210   fi
7212 fi # MOZ_AUTO_DEPS
7213 MDDEPDIR='.deps'
7214 AC_SUBST(MOZ_AUTO_DEPS)
7215 AC_SUBST(COMPILER_DEPEND)
7216 AC_SUBST(MDDEPDIR)
7219 dnl ========================================================
7220 dnl =
7221 dnl = Static Build Options
7222 dnl =
7223 dnl ========================================================
7224 MOZ_ARG_HEADER(Static build options)
7226 MOZ_ARG_ENABLE_BOOL(static,
7227 [  --enable-static         Enable building of internal static libs],
7228     BUILD_STATIC_LIBS=1,
7229     BUILD_STATIC_LIBS=)
7231 dnl Disable libxul in debug builds, but not for xulrunner.
7232 if test -n "$MOZ_DEBUG" -a "$MOZ_BUILD_APP" != "xulrunner"; then
7233    MOZ_ENABLE_LIBXUL=
7236 MOZ_ARG_ENABLE_BOOL(libxul,
7237 [  --enable-libxul         Enable building of libxul],
7238     MOZ_ENABLE_LIBXUL=1,
7239     MOZ_ENABLE_LIBXUL=)
7241 if test -n "$MOZ_STATIC_BUILD_UNSUPPORTED" -a -n "$BUILD_STATIC_LIBS"; then
7242         AC_MSG_ERROR([--enable-static is not supported for building $MOZ_APP_NAME. You probably want --enable-libxul.])
7245 if test -n "$MOZ_ENABLE_LIBXUL" -a -n "$BUILD_STATIC_LIBS"; then
7246         AC_MSG_ERROR([--enable-libxul is not compatible with --enable-static])
7249 AC_SUBST(LIBXUL_LIBS)
7251 if test -n "$MOZ_ENABLE_LIBXUL"; then
7252     XPCOM_LIBS="$LIBXUL_LIBS"
7253     AC_DEFINE(MOZ_ENABLE_LIBXUL)
7254 else
7255     if test -n "$BUILD_STATIC_LIBS"; then
7256         AC_DEFINE(MOZ_STATIC_BUILD)
7257     fi
7258     XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS"
7261 dnl ========================================================
7262 dnl =
7263 dnl = Standalone module options
7264 dnl = 
7265 dnl ========================================================
7266 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7268 dnl Check for GLib and libIDL.
7269 dnl ========================================================
7270 case "$target_os" in
7271 msvc*|mks*|cygwin*|mingw*|wince*)
7272     SKIP_IDL_CHECK="yes"
7273     ;;
7275     SKIP_IDL_CHECK="no"
7276     ;;
7277 esac
7279 if test -z "$COMPILE_ENVIRONMENT"; then
7280     SKIP_IDL_CHECK="yes"
7283 dnl = Allow users to disable libIDL checking for standalone modules
7284 MOZ_ARG_WITHOUT_BOOL(libIDL,
7285 [  --without-libIDL        Skip check for libIDL (standalone modules only)],
7286         SKIP_IDL_CHECK="yes")
7288 if test "$SKIP_IDL_CHECK" = "no"
7289 then
7290     _LIBIDL_FOUND=
7291     if test "$MACOS_SDK_DIR"; then 
7292       dnl xpidl, and therefore libIDL, is only needed on the build host.
7293       dnl Don't build it against the SDK, as that causes problems.
7294       _MACSAVE_CFLAGS="$CFLAGS"
7295       _MACSAVE_LIBS="$LIBS"
7296       _MACSAVE_LDFLAGS="$LDFLAGS"
7297       _MACSAVE_NEXT_ROOT="$NEXT_ROOT"
7298       changequote(,)
7299       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"`
7300       LIBS=`echo $LIBS|sed -e "s?-L${MACOS_SDK_DIR}/usr/lib[^ ]*??g"`
7301       LDFLAGS=`echo $LDFLAGS|sed -e "s?-Wl,-syslibroot,${MACOS_SDK_DIR}??g"`
7302       changequote([,])
7303       unset NEXT_ROOT
7304     fi
7306     if test "$MOZ_ENABLE_GTK2"; then
7307         PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0 glib-2.0 gobject-2.0, _LIBIDL_FOUND=1,_LIBIDL_FOUND=)
7308     fi
7309     dnl if no gtk/libIDL1 or gtk2/libIDL2 combination was found, fall back
7310     dnl to either libIDL1 or libIDL2.
7311     if test -z "$_LIBIDL_FOUND"; then
7312         AM_PATH_LIBIDL($LIBIDL_VERSION,_LIBIDL_FOUND=1)
7313         if test -z "$_LIBIDL_FOUND"; then
7314             PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0,_LIBIDL_FOUND=1)
7315         fi
7316     fi
7317     dnl
7318     dnl If we don't have a libIDL config program & not cross-compiling, 
7319     dnl     look for orbit-config instead.
7320     dnl
7321     if test -z "$_LIBIDL_FOUND" && test -z "$CROSS_COMPILE"; then
7322         MOZ_PATH_PROGS(ORBIT_CONFIG, $ORBIT_CONFIG orbit-config)
7323         if test -n "$ORBIT_CONFIG"; then
7324             AC_MSG_CHECKING([for ORBit libIDL usability])
7325                 _ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags`
7326             _ORBIT_LIBS=`${ORBIT_CONFIG} client --libs`
7327             _ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}`
7328             _ORBIT_LIB_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-L/); } }' -- ${_ORBIT_LIBS}`
7329             LIBIDL_CFLAGS="$_ORBIT_INC_PATH"
7330             LIBIDL_LIBS="$_ORBIT_LIB_PATH -lIDL -lglib"
7331             LIBIDL_CONFIG=
7332             _SAVE_CFLAGS="$CFLAGS"
7333             _SAVE_LIBS="$LIBS"
7334             CFLAGS="$LIBIDL_CFLAGS $CFLAGS"
7335             LIBS="$LIBIDL_LIBS $LIBS"
7336             AC_TRY_RUN([
7337 #include <stdlib.h>
7338 #include <libIDL/IDL.h>
7339 int main() {
7340   char *s;
7341   s=strdup(IDL_get_libver_string());
7342   if(s==NULL) {
7343     exit(1);
7344   }
7345   exit(0);
7347             ], [_LIBIDL_FOUND=1
7348                 result="yes"],
7349                [LIBIDL_CFLAGS=
7350                 LIBIDL_LIBS=
7351                 result="no"],
7352                [_LIBIDL_FOUND=1
7353                 result="maybe"] )
7354             AC_MSG_RESULT($result)
7355             CFLAGS="$_SAVE_CFLAGS"
7356             LIBS="$_SAVE_LIBS"
7357         fi
7358     fi
7359     if test -z "$_LIBIDL_FOUND"; then
7360         AC_MSG_ERROR([libIDL not found.
7361         libIDL $LIBIDL_VERSION or higher is required.])
7362     fi
7363     if test "$MACOS_SDK_DIR"; then
7364       CFLAGS="$_MACSAVE_CFLAGS"
7365       LIBS="$_MACSAVE_LIBS"
7366       LDFLAGS="$_MACSAVE_LDFLAGS"
7367       if test -n "$_MACSAVE_NEXT_ROOT" ; then
7368         export NEXT_ROOT="$_MACSAVE_NEXT_ROOT"
7369       fi
7370     fi
7373 if test -n "$CROSS_COMPILE"; then
7374      if test -z "$HOST_LIBIDL_CONFIG"; then
7375         HOST_LIBIDL_CONFIG="$LIBIDL_CONFIG"
7376     fi
7377     if test -n "$HOST_LIBIDL_CONFIG" && test "$HOST_LIBIDL_CONFIG" != "no"; then
7378         HOST_LIBIDL_CFLAGS=`${HOST_LIBIDL_CONFIG} --cflags`
7379         HOST_LIBIDL_LIBS=`${HOST_LIBIDL_CONFIG} --libs`
7380     else
7381         HOST_LIBIDL_CFLAGS="$LIBIDL_CFLAGS"
7382         HOST_LIBIDL_LIBS="$LIBIDL_LIBS"
7383     fi
7386 if test -z "$SKIP_PATH_CHECKS"; then
7387 if test -z "${GLIB_CFLAGS}" || test -z "${GLIB_LIBS}" ; then
7388     if test "$MOZ_ENABLE_GTK2" || test "$USE_ELF_DYNSTR_GC" ; then
7389         PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
7390     else
7391         AM_PATH_GLIB(${GLIB_VERSION})
7392     fi
7396 if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then
7397     GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
7400 AC_SUBST(LIBIDL_CFLAGS)
7401 AC_SUBST(LIBIDL_LIBS)
7402 AC_SUBST(STATIC_LIBIDL)
7403 AC_SUBST(GLIB_CFLAGS)
7404 AC_SUBST(GLIB_LIBS)
7405 AC_SUBST(GLIB_GMODULE_LIBS)
7406 AC_SUBST(HOST_LIBIDL_CONFIG)
7407 AC_SUBST(HOST_LIBIDL_CFLAGS)
7408 AC_SUBST(HOST_LIBIDL_LIBS)
7410 dnl ========================================================
7411 dnl Check for cairo
7412 dnl ========================================================
7413 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
7415 MOZ_TREE_CAIRO=1
7416 MOZ_ARG_ENABLE_BOOL(system-cairo,
7417 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
7418 MOZ_TREE_CAIRO=,
7419 MOZ_TREE_CAIRO=1 )
7421 # Check for headers defining standard int types.
7422 AC_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
7424 if test "$MOZ_TREE_CAIRO"; then
7425     AC_DEFINE(MOZ_TREE_CAIRO)
7427     # For now we assume that we will have a uint64_t available through
7428     # one of the above headers or mozstdint.h.
7429     AC_DEFINE(HAVE_UINT64_T)
7431     # Define macros for cairo-features.h
7432     if test "$MOZ_X11"; then
7433         XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
7434         XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
7435         PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
7436         PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7437         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7438         FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
7439         MOZ_ENABLE_CAIRO_FT=1
7440         CAIRO_FT_CFLAGS="$FT2_CFLAGS"
7441     fi
7442     if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
7443         QT_SURFACE_FEATURE="#define CAIRO_HAS_QT_SURFACE 1"
7444     fi
7445     if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
7446         QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
7447         QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
7448         QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
7449     fi
7450     if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
7451         WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
7452         if test -z "$WINCE"; then
7453             WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
7454         else
7455             WIN32_FONT_FEATURE=
7456         fi
7458         AC_TRY_COMPILE([#include <ddraw.h>], [int foo = DDLOCK_WAITNOTBUSY;], HAS_DDRAW=1, HAS_DDRAW=)
7459         if test -z "$HAS_DDRAW"; then
7460             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.])
7461             DDRAW_SURFACE_FEATURE=
7462         else
7463             DDRAW_SURFACE_FEATURE="#define CAIRO_HAS_DDRAW_SURFACE 1"
7464         fi
7466         if test -z "$OGLES_SDK_DIR"; then
7467             OGLES_SURFACE_FEATURE=
7468         else
7469             AC_TRY_COMPILE([
7470               #include <EGL/egl.h>
7471               #include <EGL/eglext.h>
7472               #include <GLES2/gl2.h>
7473               #include <GLES2/gl2ext.h>
7474             ], [ EGLDisplay _cairo_ddraw_egl_dpy = EGL_NO_DISPLAY;], HAS_OGLES=1, HAS_OGLES=)
7475             if test -z "$HAS_OGLES"; then
7476               AC_MSG_WARN([OpenGL ES2 headers not found, disabling OpenGL acceleration surfaces.])
7477               OGLES_SURFACE_FEATURE=
7478             else
7479               OGLES_SURFACE_FEATURE="#define CAIRO_DDRAW_USE_GL 1"
7480             fi
7481         fi
7483         PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7484     fi
7485     if test "$MOZ_WIDGET_TOOLKIT" = "os2"; then
7486         OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
7487         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7488         FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
7489         PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7490         MOZ_ENABLE_CAIRO_FT=1
7491         CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
7492         CAIRO_FT_LIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
7493     fi
7494     if test "$MOZ_WIDGET_TOOLKIT" = "beos"; then
7495         PKG_CHECK_MODULES(CAIRO_FT, fontconfig freetype2)
7496         BEOS_SURFACE_FEATURE="#define CAIRO_HAS_BEOS_SURFACE 1"
7497         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7498         FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
7499         MOZ_ENABLE_CAIRO_FT=1
7500     fi
7501     AC_SUBST(MOZ_ENABLE_CAIRO_FT)
7502     AC_SUBST(CAIRO_FT_CFLAGS)
7503     AC_SUBST(HAS_OGLES)
7505     if test "$MOZ_DEBUG"; then
7506       SANITY_CHECKING_FEATURE="#define CAIRO_DO_SANITY_CHECKING 1"
7507     else
7508       SANITY_CHECKING_FEATURE="#undef CAIRO_DO_SANITY_CHECKING"
7509     fi
7511     PNG_FUNCTIONS_FEATURE="#define CAIRO_HAS_PNG_FUNCTIONS 1"
7513     AC_SUBST(PS_SURFACE_FEATURE)
7514     AC_SUBST(PDF_SURFACE_FEATURE)
7515     AC_SUBST(SVG_SURFACE_FEATURE)
7516     AC_SUBST(XLIB_SURFACE_FEATURE)
7517     AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
7518     AC_SUBST(QUARTZ_SURFACE_FEATURE)
7519     AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
7520     AC_SUBST(XCB_SURFACE_FEATURE)
7521     AC_SUBST(WIN32_SURFACE_FEATURE)
7522     AC_SUBST(DDRAW_SURFACE_FEATURE)
7523     AC_SUBST(OGLES_SURFACE_FEATURE)    
7524     AC_SUBST(OS2_SURFACE_FEATURE)
7525     AC_SUBST(BEOS_SURFACE_FEATURE)
7526     AC_SUBST(DIRECTFB_SURFACE_FEATURE)
7527     AC_SUBST(FT_FONT_FEATURE)
7528     AC_SUBST(FC_FONT_FEATURE)
7529     AC_SUBST(WIN32_FONT_FEATURE)
7530     AC_SUBST(QUARTZ_FONT_FEATURE)
7531     AC_SUBST(PNG_FUNCTIONS_FEATURE)
7532     AC_SUBST(QT_SURFACE_FEATURE)
7534     if test "$_WIN32_MSVC"; then
7535         MOZ_CAIRO_LIBS='$(DEPTH)/gfx/cairo/cairo/src/mozcairo.lib $(DEPTH)/gfx/cairo/libpixman/src/mozlibpixman.lib'
7536     else
7537         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"
7539         if test "$MOZ_X11"; then
7540             MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS -lXrender -lfreetype -lfontconfig"
7541         fi
7542     fi
7544     CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
7545     mv -f $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig 2> /dev/null
7547 else
7548    PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION freetype2 fontconfig)
7549    MOZ_CAIRO_CFLAGS=$CAIRO_CFLAGS
7550    MOZ_CAIRO_LIBS=$CAIRO_LIBS
7551    if test "$MOZ_X11"; then
7552         PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
7553         MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
7554         MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
7555    fi
7558 AC_SUBST(MOZ_TREE_CAIRO)
7559 AC_SUBST(MOZ_CAIRO_CFLAGS)
7560 AC_SUBST(MOZ_CAIRO_LIBS)
7562 dnl qcms
7563 dnl ========================================================
7565 QCMS_LIBS='$(DEPTH)/gfx/qcms/$(LIB_PREFIX)mozqcms.$(LIB_SUFFIX)'
7566 AC_SUBST(QCMS_LIBS)
7568 dnl ========================================================
7569 dnl disable xul
7570 dnl ========================================================
7571 MOZ_ARG_DISABLE_BOOL(xul,
7572 [  --disable-xul           Disable XUL],
7573     MOZ_XUL= )
7574 if test "$MOZ_XUL"; then
7575   AC_DEFINE(MOZ_XUL)
7576 else
7577   dnl remove extensions that require XUL
7578   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
7581 AC_SUBST(MOZ_XUL)
7583 dnl ========================================================
7584 dnl disable profile locking
7585 dnl   do no use this in applications that can have more than
7586 dnl   one process accessing the profile directory.
7587 dnl ========================================================
7588 MOZ_ARG_DISABLE_BOOL(profilelocking,
7589 [  --disable-profilelocking           Disable profile locking],
7590     MOZ_PROFILELOCKING=,
7591     MOZ_PROFILELOCKING=1 )
7592 if test "$MOZ_PROFILELOCKING"; then
7593   AC_DEFINE(MOZ_PROFILELOCKING)
7596 dnl ========================================================
7597 dnl disable rdf services
7598 dnl ========================================================
7599 MOZ_ARG_DISABLE_BOOL(rdf,
7600 [  --disable-rdf           Disable RDF],
7601     MOZ_RDF= )
7602 if test "$MOZ_RDF"; then
7603   AC_DEFINE(MOZ_RDF)
7606 AC_SUBST(MOZ_RDF)
7608 dnl ========================================================
7609 dnl necko configuration options
7610 dnl ========================================================
7613 dnl option to disable various necko protocols
7615 MOZ_ARG_ENABLE_STRING(necko-protocols,
7616 [  --enable-necko-protocols[={http,ftp,default,all,none}]
7617                           Enable/disable specific protocol handlers],
7618 [ for option in `echo $enableval | sed 's/,/ /g'`; do
7619     if test "$option" = "yes" || test "$option" = "all"; then
7620         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7621     elif test "$option" = "no" || test "$option" = "none"; then
7622         NECKO_PROTOCOLS=""
7623     elif test "$option" = "default"; then
7624         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7625     elif test `echo "$option" | grep -c \^-` != 0; then
7626         option=`echo $option | sed 's/^-//'`
7627         NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
7628     else
7629         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
7630     fi
7631 done],
7632     NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
7633 dnl Remove dupes
7634 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
7635 AC_SUBST(NECKO_PROTOCOLS)
7636 for p in $NECKO_PROTOCOLS; do
7637     AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
7638 done
7641 dnl option to disable necko's disk cache
7643 MOZ_ARG_DISABLE_BOOL(necko-disk-cache,
7644 [  --disable-necko-disk-cache
7645                           Disable necko disk cache],
7646     NECKO_DISK_CACHE=,
7647     NECKO_DISK_CACHE=1)
7648 AC_SUBST(NECKO_DISK_CACHE)
7649 if test "$NECKO_DISK_CACHE"; then
7650     AC_DEFINE(NECKO_DISK_CACHE)
7654 dnl option to disable necko's wifi scanner
7656 MOZ_ARG_DISABLE_BOOL(necko-wifi,
7657 [  --disable-necko-wifi   Disable necko wifi scanner],
7658     NECKO_WIFI=,
7659     NECKO_WIFI=1
7662 if test "$OS_ARCH" = "OS2"; then
7663   dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566
7664   NECKO_WIFI=
7666 if test "$NECKO_WIFI" -a \
7667         "$OS_ARCH" != "Linux" -a \
7668         "$OS_ARCH" != "Darwin" -a \
7669         "$OS_ARCH" != "WINNT" -a \
7670         "$OS_ARCH" != "WINCE"; then
7671   AC_MSG_ERROR([Necko WiFi scanning not supported on your platform, use --disable-necko-wifi])
7674 if test -z "$SKIP_LIBRARY_CHECKS" -a "$NECKO_WIFI" -a "$OS_ARCH" = "Linux"
7675 then
7676   AC_CHECK_HEADER([iwlib.h])
7677   if test "$ac_cv_header_iwlib_h" != "yes"; then
7678     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])
7679   fi
7682 if test "$NECKO_WIFI"; then
7683   AC_DEFINE(NECKO_WIFI)
7685 AC_SUBST(NECKO_WIFI)
7688 dnl option to minimize size of necko's i/o buffers
7690 MOZ_ARG_ENABLE_BOOL(necko-small-buffers,
7691 [  --enable-necko-small-buffers
7692                           Minimize size of necko's i/o buffers],
7693     NECKO_SMALL_BUFFERS=1,
7694     NECKO_SMALL_BUFFERS=)
7695 AC_SUBST(NECKO_SMALL_BUFFERS)
7696 if test "$NECKO_SMALL_BUFFERS"; then
7697     AC_DEFINE(NECKO_SMALL_BUFFERS)
7698 fi 
7701 dnl option to disable cookies
7703 MOZ_ARG_DISABLE_BOOL(cookies,
7704 [  --disable-cookies       Disable cookie support],
7705     NECKO_COOKIES=,
7706     NECKO_COOKIES=1)
7707 AC_SUBST(NECKO_COOKIES)
7708 if test "$NECKO_COOKIES"; then
7709     AC_DEFINE(NECKO_COOKIES)
7713 dnl Build jsctypes on the platforms we can.
7715 AC_SUBST(BUILD_CTYPES)
7716 case "$OS_TEST" in
7717 arm*)
7718   ;;
7720   BUILD_CTYPES=1
7721   AC_DEFINE(BUILD_CTYPES)
7722   ;;
7723 esac
7725 dnl NECKO_ configuration options are not global
7726 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_"
7728 dnl Only build Mork if it's required
7729 AC_SUBST(MOZ_MORK)
7730 if test "$MOZ_MORK"; then
7731   AC_DEFINE(MOZ_MORK)
7734 dnl Build the lightweight Mork reader if required
7735 AC_SUBST(MOZ_MORKREADER)
7736 if test "$MOZ_MORKREADER"; then
7737   AC_DEFINE(MOZ_MORKREADER)
7740 dnl ========================================================
7741 if test "$MOZ_DEBUG" || test "$NS_TRACE_MALLOC"; then
7742     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7745 dnl ========================================================
7746 dnl =
7747 dnl = Maintainer debug option (no --enable equivalent)
7748 dnl =
7749 dnl ========================================================
7751 AC_SUBST(AR)
7752 AC_SUBST(AR_FLAGS)
7753 AC_SUBST(AR_LIST)
7754 AC_SUBST(AR_EXTRACT)
7755 AC_SUBST(AR_DELETE)
7756 AC_SUBST(AS)
7757 AC_SUBST(ASFLAGS)
7758 AC_SUBST(AS_DASH_C_FLAG)
7759 AC_SUBST(LD)
7760 AC_SUBST(RC)
7761 AC_SUBST(RCFLAGS)
7762 AC_SUBST(WINDRES)
7763 AC_SUBST(IMPLIB)
7764 AC_SUBST(FILTER)
7765 AC_SUBST(BIN_FLAGS)
7766 AC_SUBST(NS_USE_NATIVE)
7767 AC_SUBST(MOZ_WIDGET_TOOLKIT)
7768 AC_SUBST(MOZ_UPDATE_XTERM)
7769 AC_SUBST(MINIMO)
7770 AC_SUBST(MOZ_PLATFORM_HILDON)
7771 AC_SUBST(NS_OSSO)
7772 AC_SUBST(NS_MAEMO_LOCATION)
7773 AC_SUBST(MOZ_AUTH_EXTENSION)
7774 AC_SUBST(MOZ_MATHML)
7775 AC_SUBST(MOZ_PERMISSIONS)
7776 AC_SUBST(MOZ_XTF)
7777 AC_SUBST(MOZ_NO_INSPECTOR_APIS)
7778 AC_SUBST(MOZ_PREF_EXTENSIONS)
7779 AC_SUBST(MOZ_SVG)
7780 AC_SUBST(MOZ_SMIL)
7781 AC_SUBST(MOZ_XSLT_STANDALONE)
7782 AC_SUBST(MOZ_JS_LIBS)
7783 AC_SUBST(MOZ_PSM)
7784 AC_SUBST(MOZ_DEBUG)
7785 AC_SUBST(MOZ_DEBUG_MODULES)
7786 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
7787 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
7788 AC_SUBST(MOZ_DEBUG_FLAGS)
7789 AC_SUBST(MOZ_DEBUG_LDFLAGS)
7790 AC_SUBST(WARNINGS_AS_ERRORS)
7791 AC_SUBST(MOZ_DBGRINFO_MODULES)
7792 AC_SUBST(MOZ_EXTENSIONS)
7793 AC_SUBST(MOZ_IMG_DECODERS)
7794 AC_SUBST(MOZ_IMG_ENCODERS)
7795 AC_SUBST(MOZ_JSDEBUGGER)
7796 AC_SUBST(MOZ_PLUGINS)
7797 AC_SUBST(MOZ_LOG_REFCNT)
7798 AC_SUBST(MOZ_LEAKY)
7799 AC_SUBST(MOZ_JPROF)
7800 AC_SUBST(MOZ_SHARK)
7801 AC_SUBST(MOZ_CALLGRIND)
7802 AC_SUBST(MOZ_VTUNE)
7803 AC_SUBST(MOZ_XPCTOOLS)
7804 AC_SUBST(MOZ_JSLOADER)
7805 AC_SUBST(MOZ_USE_NATIVE_UCONV)
7806 AC_SUBST(MOZ_INSURE)
7807 AC_SUBST(MOZ_INSURE_DIRS)
7808 AC_SUBST(MOZ_INSURE_EXCLUDE_DIRS)
7809 AC_SUBST(MOZ_QUANTIFY)
7810 AC_SUBST(MOZ_INSURIFYING)
7811 AC_SUBST(LIBICONV)
7812 AC_SUBST(MOZ_PLACES)
7813 AC_SUBST(MOZ_PLACES_BOOKMARKS)
7814 AC_SUBST(MOZ_STORAGE)
7815 AC_SUBST(MOZ_FEEDS)
7816 AC_SUBST(NS_PRINTING)
7818 AC_SUBST(MOZ_JAVAXPCOM)
7819 AC_SUBST(JAVA_INCLUDE_PATH)
7820 AC_SUBST(JAVA)
7821 AC_SUBST(JAVAC)
7822 AC_SUBST(JAR)
7824 AC_SUBST(MOZ_PROFILELOCKING)
7826 AC_SUBST(HAVE_XIE)
7827 AC_SUBST(MOZ_XIE_LIBS)
7828 AC_SUBST(MOZ_ENABLE_POSTSCRIPT)
7830 AC_SUBST(BUILD_STATIC_LIBS)
7831 AC_SUBST(MOZ_ENABLE_LIBXUL)
7832 AC_SUBST(ENABLE_TESTS)
7833 AC_SUBST(IBMBIDI)
7834 AC_SUBST(MOZ_UNIVERSALCHARDET)
7835 AC_SUBST(ACCESSIBILITY)
7836 AC_SUBST(MOZ_XPINSTALL)
7837 AC_SUBST(MOZ_VIEW_SOURCE)
7838 AC_SUBST(MOZ_SPELLCHECK)
7839 AC_SUBST(MOZ_XPFE_COMPONENTS)
7840 AC_SUBST(MOZ_USER_DIR)
7841 AC_SUBST(MOZ_CRASHREPORTER)
7843 AC_SUBST(ENABLE_STRIP)
7844 AC_SUBST(PKG_SKIP_STRIP)
7845 AC_SUBST(USE_ELF_DYNSTR_GC)
7846 AC_SUBST(INCREMENTAL_LINKER)
7847 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
7848 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
7850 AC_SUBST(MOZ_FIX_LINK_PATHS)
7851 AC_SUBST(XPCOM_LIBS)
7852 AC_SUBST(XPCOM_FROZEN_LDOPTS)
7853 AC_SUBST(XPCOM_GLUE_LDOPTS)
7854 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
7856 AC_SUBST(USE_DEPENDENT_LIBS)
7858 AC_SUBST(MOZ_BUILD_ROOT)
7859 AC_SUBST(MOZ_OS2_TOOLS)
7860 AC_SUBST(MOZ_OS2_USE_DECLSPEC)
7862 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
7863 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
7864 AC_SUBST(MOZ_TIMELINE)
7865 AC_SUBST(OGLES_SDK_DIR)
7867 AC_SUBST(MOZ_APP_NAME)
7868 AC_SUBST(MOZ_APP_DISPLAYNAME)
7869 AC_SUBST(MOZ_APP_VERSION)
7870 AC_SUBST(FIREFOX_VERSION)
7872 AC_SUBST(MOZ_PKG_SPECIAL)
7874 AC_SUBST(MOZILLA_OFFICIAL)
7876 dnl win32 options
7877 AC_SUBST(MOZ_DEBUG_SYMBOLS)
7878 AC_SUBST(MOZ_MAPINFO)
7879 AC_SUBST(MOZ_BROWSE_INFO)
7880 AC_SUBST(MOZ_TOOLS_DIR)
7881 AC_SUBST(CYGWIN_WRAPPER)
7882 AC_SUBST(AS_PERL)
7883 AC_SUBST(WIN32_REDIST_DIR)
7884 AC_SUBST(PYTHON)
7886 AC_SUBST(WINCE)
7887 AC_SUBST(WINCE_SDK_DIR)
7888 AC_SUBST(WINCE_WINDOWS_MOBILE)
7890 dnl Echo the CFLAGS to remove extra whitespace.
7891 CFLAGS=`echo \
7892         $_WARNINGS_CFLAGS \
7893         $CFLAGS`
7895 CXXFLAGS=`echo \
7896         $_MOZ_RTTI_FLAGS \
7897         $_MOZ_EXCEPTIONS_FLAGS \
7898         $_WARNINGS_CXXFLAGS \
7899         $CXXFLAGS`
7901 COMPILE_CFLAGS=`echo \
7902     $_DEFINES_CFLAGS \
7903         $_DEPEND_CFLAGS \
7904     $COMPILE_CFLAGS`
7906 COMPILE_CXXFLAGS=`echo \
7907     $_DEFINES_CXXFLAGS \
7908         $_DEPEND_CFLAGS \
7909     $COMPILE_CXXFLAGS`
7911 AC_SUBST(SYSTEM_MAKEDEPEND)
7912 AC_SUBST(SYSTEM_LIBXUL)
7913 AC_SUBST(SYSTEM_JPEG)
7914 AC_SUBST(SYSTEM_PNG)
7915 AC_SUBST(SYSTEM_ZLIB)
7916 AC_SUBST(SYSTEM_BZ2)
7918 AC_SUBST(JPEG_CFLAGS)
7919 AC_SUBST(JPEG_LIBS)
7920 AC_SUBST(ZLIB_CFLAGS)
7921 AC_SUBST(ZLIB_LIBS)
7922 AC_SUBST(BZ2_CFLAGS)
7923 AC_SUBST(BZ2_LIBS)
7924 AC_SUBST(PNG_CFLAGS)
7925 AC_SUBST(PNG_LIBS)
7927 AC_SUBST(MOZ_JPEG_CFLAGS)
7928 AC_SUBST(MOZ_JPEG_LIBS)
7929 AC_SUBST(MOZ_ZLIB_CFLAGS)
7930 AC_SUBST(MOZ_ZLIB_LIBS)
7931 AC_SUBST(MOZ_BZ2_CFLAGS)
7932 AC_SUBST(MOZ_BZ2_LIBS)
7933 AC_SUBST(MOZ_PNG_CFLAGS)
7934 AC_SUBST(MOZ_PNG_LIBS)
7936 AC_SUBST(NSPR_CFLAGS)
7937 AC_SUBST(NSPR_LIBS)
7938 AC_SUBST(MOZ_NATIVE_NSPR)
7940 AC_SUBST(NSS_CFLAGS)
7941 AC_SUBST(NSS_LIBS)
7942 AC_SUBST(NSS_DEP_LIBS)
7943 AC_SUBST(MOZ_NATIVE_NSS)
7944 AC_SUBST(NSS_DISABLE_DBM)
7946 AC_SUBST(CFLAGS)
7947 AC_SUBST(CXXFLAGS)
7948 AC_SUBST(CPPFLAGS)
7949 AC_SUBST(COMPILE_CFLAGS)
7950 AC_SUBST(COMPILE_CXXFLAGS)
7951 AC_SUBST(LDFLAGS)
7952 AC_SUBST(LIBS)
7953 AC_SUBST(CROSS_COMPILE)
7954 AC_SUBST(WCHAR_CFLAGS)
7956 AC_SUBST(HOST_CC)
7957 AC_SUBST(HOST_CXX)
7958 AC_SUBST(HOST_CFLAGS)
7959 AC_SUBST(HOST_CXXFLAGS)
7960 AC_SUBST(HOST_OPTIMIZE_FLAGS)
7961 AC_SUBST(HOST_AR)
7962 AC_SUBST(HOST_AR_FLAGS)
7963 AC_SUBST(HOST_LD)
7964 AC_SUBST(HOST_RANLIB)
7965 AC_SUBST(HOST_NSPR_MDCPUCFG)
7966 AC_SUBST(HOST_BIN_SUFFIX)
7967 AC_SUBST(HOST_OS_ARCH)
7969 AC_SUBST(TARGET_CPU)
7970 AC_SUBST(TARGET_VENDOR)
7971 AC_SUBST(TARGET_OS)
7972 AC_SUBST(TARGET_NSPR_MDCPUCFG)
7973 AC_SUBST(TARGET_MD_ARCH)
7974 AC_SUBST(TARGET_XPCOM_ABI)
7975 AC_SUBST(OS_TARGET)
7976 AC_SUBST(OS_ARCH)
7977 AC_SUBST(OS_RELEASE)
7978 AC_SUBST(OS_TEST)
7980 AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
7981 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
7983 AC_SUBST(WRAP_MALLOC_CFLAGS)
7984 AC_SUBST(WRAP_MALLOC_LIB)
7985 AC_SUBST(MKSHLIB)
7986 AC_SUBST(MKCSHLIB)
7987 AC_SUBST(MKSHLIB_FORCE_ALL)
7988 AC_SUBST(MKSHLIB_UNFORCE_ALL)
7989 AC_SUBST(DSO_CFLAGS)
7990 AC_SUBST(DSO_PIC_CFLAGS)
7991 AC_SUBST(DSO_LDOPTS)
7992 AC_SUBST(LIB_PREFIX)
7993 AC_SUBST(DLL_PREFIX)
7994 AC_SUBST(DLL_SUFFIX)
7995 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
7996 AC_SUBST(LIB_SUFFIX)
7997 AC_SUBST(OBJ_SUFFIX)
7998 AC_SUBST(BIN_SUFFIX)
7999 AC_SUBST(ASM_SUFFIX)
8000 AC_SUBST(IMPORT_LIB_SUFFIX)
8001 AC_SUBST(USE_N32)
8002 AC_SUBST(CC_VERSION)
8003 AC_SUBST(CXX_VERSION)
8004 AC_SUBST(MSMANIFEST_TOOL)
8005 AC_SUBST(NS_ENABLE_TSF)
8006 AC_SUBST(MOZ_NSS_PATCH)
8008 if test "$USING_HCC"; then
8009    CC='${topsrcdir}/build/hcc'
8010    CC="$CC '$_OLDCC'"
8011    CXX='${topsrcdir}/build/hcpp'
8012    CXX="$CXX '$_OLDCXX'"
8013    AC_SUBST(CC)
8014    AC_SUBST(CXX)
8017 dnl Check for missing components
8018 if test "$COMPILE_ENVIRONMENT"; then
8019 if test "$MOZ_X11"; then
8020     dnl ====================================================
8021     dnl = Check if X headers exist
8022     dnl ====================================================
8023     _SAVE_CFLAGS=$CFLAGS
8024     CFLAGS="$CFLAGS $XCFLAGS"
8025     AC_TRY_COMPILE([
8026         #include <stdio.h>
8027         #include <stdlib.h>
8028         #include <X11/Xlib.h>
8029         #include <X11/Intrinsic.h>
8030     ],
8031     [
8032         Display *dpy = 0;
8033         if ((dpy = XOpenDisplay(NULL)) == NULL) {
8034             fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8035             exit(1);
8036         }
8037     ], [], 
8038     [ AC_MSG_ERROR([Could not compile basic X program.]) ])
8039     CFLAGS="$_SAVE_CFLAGS"
8041     if test ! -z "$MISSING_X"; then
8042         AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8043     fi
8045 fi # MOZ_X11
8046 fi # COMPILE_ENVIRONMENT
8048 dnl Set various defines and substitutions
8049 dnl ========================================================
8051 if test "$OS_ARCH" = "BeOS"; then
8052   AC_DEFINE(XP_BEOS)
8053   MOZ_MOVEMAIL=1
8054 elif test "$OS_ARCH" = "Darwin"; then
8055   AC_DEFINE(XP_UNIX)
8056   AC_DEFINE(UNIX_ASYNC_DNS)
8057   MOZ_MOVEMAIL=1
8058 elif test "$OS_ARCH" = "OpenVMS"; then
8059   AC_DEFINE(XP_UNIX)
8060 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
8061   AC_DEFINE(XP_UNIX)
8062   AC_DEFINE(UNIX_ASYNC_DNS)
8063   MOZ_MOVEMAIL=1
8065 AC_SUBST(MOZ_MOVEMAIL)
8067 if test "$MOZ_DEBUG"; then
8068     AC_DEFINE(MOZ_REFLOW_PERF)
8069     AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8072 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
8073     AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8074     ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8075     ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8076     ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8077     ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8078     AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8079     AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8080     AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8083 dnl ========================================================
8084 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
8085 dnl ========================================================
8086 case "$host_os" in
8087 mingw*)
8088     WIN_TOP_SRC=`cd $srcdir; pwd -W`
8089     ;;
8090 cygwin*|msvc*|mks*)
8091     HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
8092     HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
8093     CC="\$(CYGWIN_WRAPPER) $CC"
8094     CXX="\$(CYGWIN_WRAPPER) $CXX"
8095     CPP="\$(CYGWIN_WRAPPER) $CPP"
8096     LD="\$(CYGWIN_WRAPPER) $LD"
8097     AS="\$(CYGWIN_WRAPPER) $AS"
8098     RC="\$(CYGWIN_WRAPPER) $RC"
8099     MIDL="\$(CYGWIN_WRAPPER) $MIDL"
8100     CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
8101     WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
8102     ;;
8103 esac
8105 AC_SUBST(CYGDRIVE_MOUNT)
8106 AC_SUBST(WIN_TOP_SRC)
8108 AC_SUBST(MOZILLA_VERSION)
8110 AC_SUBST(ac_configure_args)
8112 dnl Spit out some output
8113 dnl ========================================================
8115 dnl The following defines are used by xpcom
8116 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8117 CPP_THROW_NEW
8118 HAVE_CPP_2BYTE_WCHAR_T
8119 HAVE_CPP_ACCESS_CHANGING_USING
8120 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8121 HAVE_CPP_BOOL
8122 HAVE_CPP_CHAR16_T
8123 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8124 HAVE_CPP_EXPLICIT
8125 HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
8126 HAVE_CPP_NAMESPACE_STD
8127 HAVE_CPP_NEW_CASTS
8128 HAVE_CPP_PARTIAL_SPECIALIZATION
8129 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8130 HAVE_CPP_TYPENAME
8131 HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL
8132 HAVE_STATVFS
8133 NEED_CPP_UNUSED_IMPLEMENTATIONS
8134 NEW_H
8135 HAVE_GETPAGESIZE
8136 HAVE_ICONV
8137 HAVE_ICONV_WITH_CONST_INPUT
8138 HAVE_MBRTOWC
8139 HAVE_SYS_MOUNT_H
8140 HAVE_SYS_VFS_H
8141 HAVE_WCRTOMB
8144 AC_CONFIG_HEADER(
8145 netwerk/necko-config.h
8146 xpcom/xpcom-config.h
8147 xpcom/xpcom-private.h
8150 # Save the defines header file before autoconf removes it.
8151 # (Do not add AC_DEFINE calls after this line.)
8152   _CONFIG_TMP=confdefs-tmp.h
8153   _CONFIG_DEFS_H=mozilla-config.h
8155   cat > $_CONFIG_TMP <<\EOF
8156 /* List of defines generated by configure. Included with preprocessor flag,
8157  * -include, to avoid long list of -D defines on the compile command-line.
8158  * Do not edit.
8159  */
8161 #ifndef _MOZILLA_CONFIG_H_
8162 #define _MOZILLA_CONFIG_H_
8165 _EGREP_PATTERN='^#define ('
8166 if test -n "$_NON_GLOBAL_ACDEFINES"; then
8167     for f in $_NON_GLOBAL_ACDEFINES; do
8168         _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
8169     done
8171 _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
8173   sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
8175   cat >> $_CONFIG_TMP <<\EOF
8177 #endif /* _MOZILLA_CONFIG_H_ */
8181   # Only write mozilla-config.h when something changes (or it doesn't exist)
8182   if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
8183     rm $_CONFIG_TMP
8184   else
8185     AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
8186     mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
8188     echo ==== $_CONFIG_DEFS_H =================================
8189     cat $_CONFIG_DEFS_H
8190   fi
8192 dnl Probably shouldn't call this manually but we always want the output of DEFS
8193 rm -f confdefs.h.save
8194 mv confdefs.h confdefs.h.save
8195 egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
8196 AC_OUTPUT_MAKE_DEFS()
8197 MOZ_DEFINES=$DEFS
8198 AC_SUBST(MOZ_DEFINES)
8199 rm -f confdefs.h
8200 mv confdefs.h.save confdefs.h
8202 dnl Load the list of Makefiles to generate.
8203 dnl   To add new Makefiles, edit allmakefiles.sh.
8204 dnl   allmakefiles.sh sets the variable, MAKEFILES.
8205 . ${srcdir}/allmakefiles.sh
8206 dnl 
8207 dnl Run a perl script to quickly create the makefiles.
8208 dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
8209 dnl   for the files it cannot handle correctly. This way, config.status
8210 dnl   will handle these files.
8211 dnl If it fails, nothing is set and config.status will run as usual.
8213 dnl This does not change the $MAKEFILES variable.
8215 dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
8217 if test -z "${AS_PERL}"; then
8218 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
8219 else
8220 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
8222 . ./conftest.sh
8223 rm conftest.sh
8225 echo $MAKEFILES > unallmakefiles
8227 mv -f config/autoconf.mk config/autoconf.mk.orig 2> /dev/null
8229 AC_OUTPUT($MAKEFILES)
8231 dnl Prevent the regeneration of cairo-features.h forcing rebuilds of gfx stuff
8232 if test "$CAIRO_FEATURES_H"; then
8233   if cmp -s $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig; then
8234     echo "$CAIRO_FEATURES_H is unchanged"
8235     mv -f "$CAIRO_FEATURES_H".orig "$CAIRO_FEATURES_H" 2> /dev/null
8236   else
8237     rm -f "$CAIRO_FEATURES_H".orig 2> /dev/null
8238   fi
8241 dnl ========================================================
8242 dnl = Setup a nice relatively clean build environment for
8243 dnl = sub-configures.
8244 dnl ========================================================
8245 CC="$_SUBDIR_CC" 
8246 CXX="$_SUBDIR_CXX" 
8247 CFLAGS="$_SUBDIR_CFLAGS" 
8248 CPPFLAGS="$_SUBDIR_CPPFLAGS"
8249 CXXFLAGS="$_SUBDIR_CXXFLAGS"
8250 LDFLAGS="$_SUBDIR_LDFLAGS"
8251 HOST_CC="$_SUBDIR_HOST_CC" 
8252 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
8253 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
8256 unset MAKEFILES
8257 unset CONFIG_FILES
8259 # No need to run subconfigures when building with LIBXUL_SDK_DIR
8260 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
8262 if test -z "$MOZ_NATIVE_NSPR"; then
8263     ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
8264     if test -z "$MOZ_DEBUG"; then
8265         ac_configure_args="$ac_configure_args --disable-debug"
8266     fi
8267     if test "$MOZ_OPTIMIZE" = "1"; then
8268         ac_configure_args="$ac_configure_args --enable-optimize"
8269     fi
8270     if test "$OS_ARCH" = "WINNT" && test "$NS_TRACE_MALLOC"; then
8271        ac_configure_args="$ac_configure_args --enable-debug --disable-optimize"
8272     fi
8273     if test -n "$HAVE_64BIT_OS"; then
8274         ac_configure_args="$ac_configure_args --enable-64bit"
8275     fi
8276     if test -n "$USE_ARM_KUSER"; then
8277         ac_configure_args="$ac_configure_args --with-arm-kuser"
8278     fi
8279     AC_OUTPUT_SUBDIRS(nsprpub)
8280     ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8283 if test -z "$MOZ_NATIVE_NSPR"; then
8284     # Hack to deal with the fact that we use NSPR_CFLAGS everywhere
8285     AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
8286     if test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE"; then
8287        NSPR_LIBS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --libdir=$LIBXUL_DIST/lib --libs`
8288        $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $NSPR_LIBS'" config/autoconf.mk
8289        NSPR_CFLAGS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --includedir=$LIBXUL_DIST/include/nspr --cflags`
8290        $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $NSPR_CFLAGS'" config/autoconf.mk
8291     fi
8292     rm -f config/autoconf.mk.bak
8295 # Run the SpiderMonkey 'configure' script.
8296 dist=$MOZ_BUILD_ROOT/dist
8297 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8298 ac_configure_args="$ac_configure_args --enable-threadsafe"
8299 if test -z "$MOZ_NATIVE_NSPR"; then
8300     ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
8301     ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
8303 ac_configure_args="$ac_configure_args --with-dist-dir=../../dist"
8304 ac_configure_args="$ac_configure_args --includedir=$dist/include"
8305 ac_configure_args="$ac_configure_args --bindir=$dist/bin"
8306 ac_configure_args="$ac_configure_args --libdir=$dist/lib"
8307 ac_configure_args="$ac_configure_args --with-sync-build-files=$_topsrcdir"
8308 if test "$MOZ_MEMORY"; then
8309    ac_configure_args="$ac_configure_args --enable-jemalloc"
8310    if test -n "$MOZ_MEMORY_LDFLAGS"; then
8311      export MOZ_MEMORY_LDFLAGS
8312    fi
8314 AC_OUTPUT_SUBDIRS(js/src)
8315 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8317 # Build jsctypes on the platforms we can.
8318 if test "$BUILD_CTYPES"; then
8319   # Run the libffi 'configure' script on platforms that it supports.
8320   if test -z "$_MSC_VER"; then
8321     ac_configure_args="--disable-shared --enable-static --disable-raw-api"
8322     if test "$MOZ_DEBUG"; then
8323       ac_configure_args="$ac_configure_args --enable-debug"
8324     fi
8325     if test -n "$DSO_PIC_CFLAGS"; then
8326       ac_configure_args="$ac_configure_args --with-pic"
8327     fi
8328     if test -n "$CROSS_COMPILE"; then
8329       ac_configure_args="$ac_configure_args --build=$build --host=$target"
8330     fi
8331     AC_OUTPUT_SUBDIRS(js/ctypes/libffi)
8332     ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8333   fi
8336 fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR
8338 dnl Prevent the regeneration of autoconf.mk forcing rebuilds of the world
8339 dnl Needs to be at the end to respect possible changes from NSPR configure
8340 if cmp -s config/autoconf.mk config/autoconf.mk.orig; then
8341   echo "config/autoconf.mk is unchanged"
8342   mv -f config/autoconf.mk.orig config/autoconf.mk 2> /dev/null
8343 else
8344   rm -f config/autoconf.mk.orig 2> /dev/null