Bug 482592. Use the right container in ContentInserted. r+sr=roc
[mozilla-central.git] / configure.in
blob95a63b8e96c37ec063a31afcb708883538168cd4
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
46 dnl Alternatively, the contents of this file may be used under the terms of
47 dnl either the GNU General Public License Version 2 or later (the "GPL"), or
48 dnl the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
49 dnl in which case the provisions of the GPL or the LGPL are applicable instead
50 dnl of those above. If you wish to allow use of your version of this file only
51 dnl under the terms of either the GPL or the LGPL, and not to allow others to
52 dnl use your version of this file under the terms of the MPL, indicate your
53 dnl decision by deleting the provisions above and replace them with the notice
54 dnl and other provisions required by the GPL or the LGPL. If you do not delete
55 dnl the provisions above, a recipient may use your version of this file under
56 dnl the terms of any one of the MPL, the GPL or the LGPL.
57 dnl
58 dnl ***** END LICENSE BLOCK *****
60 dnl Process this file with autoconf to produce a configure script.
61 dnl ========================================================
63 AC_PREREQ(2.13)
64 AC_INIT(config/config.mk)
65 AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
66 AC_CANONICAL_SYSTEM
67 TARGET_CPU="${target_cpu}"
68 TARGET_VENDOR="${target_vendor}"
69 TARGET_OS="${target_os}"
72 MOZ_DEB_TIMESTAMP=`date +"%a, %d  %b %Y %T %z"   2>&1` 
73 AC_SUBST(MOZ_DEB_TIMESTAMP)
76 dnl ========================================================
77 dnl =
78 dnl = Don't change the following two lines.  Doing so breaks:
79 dnl =
80 dnl = CFLAGS="-foo" ./configure
81 dnl =
82 dnl ========================================================
83 CFLAGS="${CFLAGS=}"
84 CPPFLAGS="${CPPFLAGS=}"
85 CXXFLAGS="${CXXFLAGS=}"
86 LDFLAGS="${LDFLAGS=}"
87 HOST_CFLAGS="${HOST_CFLAGS=}"
88 HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
89 HOST_LDFLAGS="${HOST_LDFLAGS=}"
91 dnl ========================================================
92 dnl = Preserve certain environment flags passed to configure
93 dnl = We want sub projects to receive the same flags
94 dnl = untainted by this configure script
95 dnl ========================================================
96 _SUBDIR_CC="$CC"
97 _SUBDIR_CXX="$CXX"
98 _SUBDIR_CFLAGS="$CFLAGS"
99 _SUBDIR_CPPFLAGS="$CPPFLAGS"
100 _SUBDIR_CXXFLAGS="$CXXFLAGS"
101 _SUBDIR_LDFLAGS="$LDFLAGS"
102 _SUBDIR_HOST_CC="$HOST_CC"
103 _SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
104 _SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
105 _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
106 _SUBDIR_CONFIG_ARGS="$ac_configure_args"
108 dnl Set the version number of the libs included with mozilla
109 dnl ========================================================
110 MOZJPEG=62
111 MOZPNG=10217
112 MOZZLIB=0x1230
113 NSPR_VERSION=4
114 NSS_VERSION=3
116 dnl Set the minimum version of toolkit libs used by mozilla
117 dnl ========================================================
118 GLIB_VERSION=1.2.0
119 LIBIDL_VERSION=0.6.3
120 PERL_VERSION=5.006
121 CAIRO_VERSION=1.6.0
122 PANGO_VERSION=1.14.0
123 GTK2_VERSION=2.10.0
124 MAKE_VERSION=3.78
125 WINDRES_VERSION=2.14.90
126 W32API_VERSION=3.8
127 GNOMEVFS_VERSION=2.0
128 GNOMEUI_VERSION=2.2.0
129 GCONF_VERSION=1.2.1
130 LIBGNOME_VERSION=2.0
131 STARTUP_NOTIFICATION_VERSION=0.8
132 DBUS_VERSION=0.60
133 LCMS_VERSION=1.17
134 SQLITE_VERSION=3.6.10
135 LIBNOTIFY_VERSION=0.4
137 MSMANIFEST_TOOL=
139 dnl Set various checks
140 dnl ========================================================
141 MISSING_X=
142 AC_PROG_AWK
144 dnl Initialize the Pthread test variables early so they can be
145 dnl  overridden by each platform.
146 dnl ========================================================
147 USE_PTHREADS=
148 _PTHREAD_LDFLAGS=""
150 dnl Do not allow a separate objdir build if a srcdir build exists.
151 dnl ==============================================================
152 _topsrcdir=`cd \`dirname $0\`; pwd`
153 _objdir=`pwd`
155 if test "$_topsrcdir" != "$_objdir"
156 then
157   # Check for a couple representative files in the source tree
158   _conflict_files=
159   for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
160     if test -f $file; then
161       _conflict_files="$_conflict_files $file"
162     fi
163   done
164   if test "$_conflict_files"; then
165     echo "***"
166     echo "*   Your source tree contains these files:"
167     for file in $_conflict_files; do
168       echo "*         $file"
169     done
170     cat 1>&2 <<-EOF
171         *   This indicates that you previously built in the source tree.
172         *   A source tree build can confuse the separate objdir build.
173         *
174         *   To clean up the source tree:
175         *     1. cd $_topsrcdir
176         *     2. gmake distclean
177         ***
178         EOF
179     exit 1
180     break
181   fi
183 MOZ_BUILD_ROOT=`pwd`
185 dnl Default to MSVC for win32
186 dnl ==============================================================
187 if test -z "$CROSS_COMPILE"; then
188 case "$target" in
189 *-cygwin*|*-mingw*|*-msvc*|*-mks*)
190     MAKE_VERSION=3.79
191     if test -z "$CC"; then CC=cl; fi
192     if test -z "$CXX"; then CXX=cl; fi
193     if test -z "$CPP"; then CPP="cl -E -nologo"; fi
194     if test -z "$CXXCPP"; then CXXCPP="cl -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
195     if test -z "$LD"; then LD=link; fi
196     if test -z "$AS"; then AS=ml; fi
197     if test -z "$MIDL"; then MIDL=midl; fi
198     ;;
199 esac
202 COMPILE_ENVIRONMENT=1
203 MOZ_ARG_ENABLE_BOOL(compile-environment,
204 [  --disable-compile-environment
205                            Disable compiler/library checks.],
206     COMPILE_ENVIRONMENT=1,
207     COMPILE_ENVIRONMENT= )
209 MOZ_ARG_WITH_STRING(l10n-base,
210 [  --with-l10n-base=DIR     path to l10n repositories],
211     L10NBASEDIR=$withval)
212 if test ! -z "$L10NBASEDIR"; then
213     if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then
214         AC_MSG_ERROR([--with-l10n-base must specify a path])
215     elif test -d "$L10NBASEDIR"; then
216         L10NBASEDIR=`cd "$L10NBASEDIR" && pwd`
217     else
218         AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
219     fi
221 AC_SUBST(L10NBASEDIR)
223 dnl ========================================================
224 dnl Checks for compilers.
225 dnl ========================================================
226 dnl Set CROSS_COMPILE in the environment when running configure
227 dnl to use the cross-compile setup for now
228 dnl ========================================================
230 if test "$COMPILE_ENVIRONMENT"; then
232 dnl Do some special WinCE toolchain stuff
233 case "$target" in
234 *wince)
236     MOZ_ARG_WITH_STRING(wince-sdk,
237     [  --with-wince-sdk=WINCE_SDK_DIR
238                         The path to the Windows CE SDK],
239     WINCE_SDK_DIR=$withval)
241     dnl Default to Windows Mobile components enabled
242     WINCE_WINDOWS_MOBILE=1
244     MOZ_ARG_DISABLE_BOOL(windows-mobile-components,
245     [  --disable-windows-mobile-components
246          Disable Windows Mobile specific components from CE build],
247     WINCE_WINDOWS_MOBILE=,
248     WINCE_WINDOWS_MOBILE=1)
250     if test "$WINCE_WINDOWS_MOBILE"; then
251         AC_DEFINE(WINCE_WINDOWS_MOBILE)
252     fi
254     AC_DEFINE(WINCE)
255     
256     export WINCE=1
258     echo -----------------------------------------------------------------------------
259     echo Building Windows CE Shunt Library and Tool Chain
260     echo Using SDK in:
261     echo $WINCE_SDK_DIR
263     ac_exeext=.exe
265     _pwdw=`pwd -W`
266     _pwd=`pwd`
267     make WINCE_SDK_DIR="$WINCE_SDK_DIR" TOPSRCDIR="$srcdir" OBJDIR="$_pwdw" -C $srcdir/build/wince/tools
269     CC="$_pwd/dist/sdk/bin/arm-wince-gcc"
270     CXX="$_pwd/dist/sdk/bin/arm-wince-gcc"
271     CPP="$_pwd/dist/sdk/bin/arm-wince-gcc -E -nologo"
272     CXXCPP="$_pwd/dist/sdk/bin/arm-wince-gcc -TP -E -nologo"
273     LD="$_pwd/dist/sdk/bin/arm-wince-link"
274     AR="$_pwd/dist/sdk/bin/arm-wince-lib"
275     AS="$_pwd/dist/sdk/bin/arm-wince-as"
276     RC="$_pwd/dist/sdk/bin/arm-wince-res"
279     echo -----------------------------------------------------------------------------
281     ;;
282 esac
284 if test -n "$CROSS_COMPILE" && test "$target" != "$host"; then
285     echo "cross compiling from $host to $target"
286     cross_compiling=yes
288     _SAVE_CC="$CC"
289     _SAVE_CFLAGS="$CFLAGS"
290     _SAVE_LDFLAGS="$LDFLAGS"
292     AC_MSG_CHECKING([for host c compiler])
293     AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
294     if test -z "$HOST_CC"; then
295         AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
296     fi
297     AC_MSG_RESULT([$HOST_CC])
298     AC_MSG_CHECKING([for host c++ compiler])
299     AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
300     if test -z "$HOST_CXX"; then
301         AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
302     fi
303     AC_MSG_RESULT([$HOST_CXX])
305     if test -z "$HOST_CFLAGS"; then
306         HOST_CFLAGS="$CFLAGS"
307     fi
308     if test -z "$HOST_CXXFLAGS"; then
309         HOST_CXXFLAGS="$CXXFLAGS"
310     fi
311     if test -z "$HOST_LDFLAGS"; then
312         HOST_LDFLAGS="$LDFLAGS"
313     fi
314     AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
315     AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
316     CC="$HOST_CC"
317     CFLAGS="$HOST_CFLAGS"
318     LDFLAGS="$HOST_LDFLAGS"
320     AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
321     AC_TRY_COMPILE([], [return(0);], 
322         [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
323         AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
325     CC="$HOST_CXX"
326     CFLAGS="$HOST_CXXFLAGS"
328     AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
329     AC_TRY_COMPILE([], [return(0);], 
330         [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
331         AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
332     
333     CC=$_SAVE_CC
334     CFLAGS=$_SAVE_CFLAGS
335     LDFLAGS=$_SAVE_LDFLAGS
337     case "$build:$target" in
338       powerpc-apple-darwin8*:i?86-apple-darwin*)
339         dnl The Darwin cross compiler doesn't necessarily point itself at a
340         dnl root that has libraries for the proper architecture, it defaults
341         dnl to the system root.  The libraries in the system root on current
342         dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
343         dnl checks will fail.  Fake a working SDK in that case.
344         _SAVE_CFLAGS=$CFLAGS
345         _SAVE_CXXFLAGS=$CXXLAGS
346         CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CFLAGS"
347         CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CXXFLAGS"
348         ;;
349     esac
351     AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
352     unset ac_cv_prog_CC
353     AC_PROG_CC
354     AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
355     unset ac_cv_prog_CXX
356     AC_PROG_CXX
358     case "$build:$target" in
359       powerpc-apple-darwin8*:i?86-apple-darwin*)
360         dnl Revert the changes made above.  From this point on, the target
361         dnl compiler will never be used without applying the SDK to CFLAGS
362         dnl (see --with-macos-sdk below).
363         CFLAGS=$_SAVE_CFLAGS
364         CXXFLAGS=$_SAVE_CXXFLAGS
365         ;;
366     esac
368     AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
369     AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
370     MOZ_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
371     AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
372     AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
373     AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
374     AC_DEFINE(CROSS_COMPILE)
375 else
376     AC_PROG_CC
377     AC_PROG_CXX
378     AC_PROG_RANLIB
379     MOZ_PATH_PROGS(AS, $AS as, $CC)
380     AC_CHECK_PROGS(AR, ar, :)
381     AC_CHECK_PROGS(LD, ld, :)
382     AC_CHECK_PROGS(STRIP, strip, :)
383     AC_CHECK_PROGS(WINDRES, windres, :)
384     if test -z "$HOST_CC"; then
385         HOST_CC="$CC"
386     fi
387     if test -z "$HOST_CFLAGS"; then
388         HOST_CFLAGS="$CFLAGS"
389     fi
390     if test -z "$HOST_CXX"; then
391         HOST_CXX="$CXX"
392     fi
393     if test -z "$HOST_CXXFLAGS"; then
394         HOST_CXXFLAGS="$CXXFLAGS"
395     fi
396     if test -z "$HOST_LDFLAGS"; then
397         HOST_LDFLAGS="$LDFLAGS"
398     fi
399     if test -z "$HOST_RANLIB"; then
400         HOST_RANLIB="$RANLIB"
401     fi
402     if test -z "$HOST_AR"; then
403        HOST_AR="$AR"
404     fi
407 GNU_AS=
408 GNU_LD=
409 GNU_CC=
410 GNU_CXX=
411 CC_VERSION='N/A'
412 CXX_VERSION='N/A'
413 if test "$GCC" = "yes"; then
414     GNU_CC=1
415     CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
417 if test "$GXX" = "yes"; then
418     GNU_CXX=1
419     CXX_VERSION=`$CXX -v 2>&1 | grep 'gcc version'`
421 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
422     GNU_AS=1
424 if test "`echo | $LD -v 2>&1 | grep -c GNU`" != "0"; then
425     GNU_LD=1
427 if test "$GNU_CC"; then
428     if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
429         GCC_USE_GNU_LD=1
430     fi
433 INTEL_CC=
434 INTEL_CXX=
435 if test "$GCC" = yes; then
436    if test "`$CC -help 2>&1 | grep -c 'Intel(R) C Compiler'`" != "0"; then
437      INTEL_CC=1
438    fi
441 if test "$GXX" = yes; then
442    if test "`$CXX -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
443      INTEL_CXX=1
444    fi
447 dnl Special win32 checks
448 dnl ========================================================
449 case "$target" in
450 *-wince)
451     WINVER=500
452     ;;
454     if test -n "$GNU_CC"; then  
455         WINVER=501
456     else    
457         WINVER=500
458     fi
459     ;;
460 esac
462 MOZ_ARG_WITH_STRING(windows-version,
463 [  --with-windows-version=WINVER
464                           Minimum Windows version (WINVER) to support
465                               400: Windows 95
466                               500: Windows 2000
467                               501: Windows XP],
468   WINVER=$withval)
470 case "$WINVER" in
471 400|500|501)
472     ;;
475     AC_MSG_ERROR([Invalid value --with-windows-version, must be 400, 500 or 501]);
476     ;;
478 esac
480 case "$target" in
481 *-cygwin*|*-mingw*|*-msvc*|*-mks*|*-wince)
482     if test "$GCC" != "yes"; then
483         # Check to see if we are really running in a msvc environemnt
484         _WIN32_MSVC=1
485         AC_CHECK_PROGS(MIDL, midl)
487         # Make sure compilers are valid
488         CFLAGS="$CFLAGS -TC -nologo"
489         CXXFLAGS="$CXXFLAGS -TP -nologo"
490         AC_LANG_SAVE
491         AC_LANG_C
492         AC_TRY_COMPILE([#include <stdio.h>],
493             [ printf("Hello World\n"); ],,
494             AC_MSG_ERROR([\$(CC) test failed.  You must have MS VC++ in your path to build.]) )
496         AC_LANG_CPLUSPLUS
497         AC_TRY_COMPILE([#include <new.h>],
498             [ unsigned *test = new unsigned(42); ],,
499             AC_MSG_ERROR([\$(CXX) test failed.  You must have MS VC++ in your path to build.]) )
500         AC_LANG_RESTORE
501         
502         changequote(,)
503         _MSVC_VER_FILTER='s|.* ([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
504         changequote([,])
505         
506         # Determine compiler version
507         CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
508         _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
509         _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
510         _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
511         _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
512         _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
514         CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
515         _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
517         if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
518             AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
519         fi
520         if test "$_CC_MAJOR_VERSION" = "12"; then
521             _CC_SUITE=6
522         elif test "$_CC_MAJOR_VERSION" = "13"; then
523             _CC_SUITE=7
524         elif test "$_CC_MAJOR_VERSION" = "14"; then
525             _CC_SUITE=8
526             CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
527             dnl -DYNAMICBASE is only supported on VC8SP1 or newer,
528             dnl so be very specific here!
529             dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762
530             if test $_CC_RELEASE -gt 50727; then
531                _USE_DYNAMICBASE=1
532             elif test $_CC_BUILD -ge 762; then
533                _USE_DYNAMICBASE=1
534             fi
535             AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
536             AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
537         elif test "$_CC_MAJOR_VERSION" = "15"; then
538             _CC_SUITE=9
539             CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
540             LDFLAGS="$LDFLAGS -MANIFESTUAC:NO"
541             _USE_DYNAMICBASE=1
542             AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
543             AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
544         else
545             AC_MSG_ERROR([This version of the MSVC compiler, $CC_VERSION , is unsupported.])
546         fi
548         _MOZ_RTTI_FLAGS_ON='-GR'
549         _MOZ_RTTI_FLAGS_OFF='-GR-'
550         _MOZ_EXCEPTIONS_FLAGS_ON='-EHsc'
551         _MOZ_EXCEPTIONS_FLAGS_OFF=''
553         if test -n "$WIN32_REDIST_DIR"; then
554             WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
555         fi
556         
557         # bug #249782
558         # ensure that mt.exe is Microsoft (R) Manifest Tool and not magnetic tape manipulation utility (or something else)
559         if test "$_CC_SUITE" -ge "8"; then
560                 changequote(,)
561                 _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
562                 changequote([,])
564                 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
565                 if test -n "$MSMT_TOOL"; then
566                         MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
567                         if test -z "$MSMANIFEST_TOOL_VERSION"; then
568                                 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
569                         fi
570                         MSMANIFEST_TOOL=1
571                         unset MSMT_TOOL
572                 else
573                         AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
574                 fi
575         fi
577         # Check linker version
578         _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
579         _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
580         if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
581             AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION,  does not match the compiler suite version, $_CC_SUITE.])
582         fi
583         INCREMENTAL_LINKER=1
585         # Check midl version
586         _MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
587         _MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
588         _MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
589         _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
590         # Add flags if necessary
591         AC_MSG_CHECKING([for midl flags])
592         case "$target" in
593         i*86-*)
594             if test \( "$_MIDL_MAJOR_VERSION" = "7" -a "$_MIDL_MINOR_VERSION" = "00" -a "$_MIDL_REV_VERSION" = "0499" \); then
595                 # MIDL version 7.00.0499 defaults /env win64 on x64 platforms.
596                 # MIDL version 7.00.0500 or later has no problem.
597                 MIDL_FLAGS="${MIDL_FLAGS} -env win32"
598                 AC_MSG_RESULT([need -env win32])
599             else
600                 AC_MSG_RESULT([none needed])
601             fi
602             ;;
603         *)
604             AC_MSG_RESULT([none needed])
605             ;;
606         esac
608         # Identify which version of the SDK we're building with
609         # Windows Server 2008 and newer SDKs have WinSDKVer.h, get the version
610         # from there
611         AC_CHECK_HEADERS([winsdkver.h])
612         if test "$ac_cv_header_winsdkver_h" = "yes"; then
613             # Get the highest _WIN32_WINNT and NTDDI versions supported
614             # Take the higher of the two
615             # This is done because the Windows 7 beta SDK reports its
616             # NTDDI_MAXVER to be 0x06000100 instead of 0x06010000, as it should
617             AC_CACHE_CHECK(for highest Windows version supported by this SDK,
618                            ac_cv_winsdk_maxver,
619                            [cat > conftest.h <<EOF
620 #include <winsdkver.h>
621 #include <sdkddkver.h>
623 #if (NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER) > NTDDI_MAXVER)
624 #define WINSDK_MAXVER NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER)
625 #else
626 #define WINSDK_MAXVER NTDDI_MAXVER
627 #endif
629 WINSDK_MAXVER
631                             ac_cv_winsdk_maxver=`$CPP conftest.h 2>/dev/null | tail -n1`
632                             rm -f conftest.h
633                            ])
634             MOZ_WINSDK_MAXVER=${ac_cv_winsdk_maxver}
635         else
636             # The Vista SDK is the only one to have sdkddkver.h but not
637             # WinSDKVer.h
638             AC_CHECK_HEADERS([sdkddkver.h])
639             if test "$ac_cv_header_sdkddkver_h" = "yes"; then
640                 MOZ_WINSDK_MAXVER=0x06000000
641             else
642                 # Assume the Server 2003 Platform SDK
643                 MOZ_WINSDK_MAXVER=0x05020000
644             fi
645         fi
647         unset _MSVC_VER_FILTER
649     else
650         # Check w32api version
651         _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
652         _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
653         AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
654         AC_TRY_COMPILE([#include <w32api.h>],
655             #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
656                 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
657                  __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
658                 #error "test failed."
659             #endif
660             , [ res=yes ], [ res=no ])
661         AC_MSG_RESULT([$res])
662         if test "$res" != "yes"; then
663             AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
664         fi
665         # Check windres version
666         AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
667         _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
668         AC_MSG_RESULT([$_WINDRES_VERSION])
669         _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
670         _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
671         _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
672         WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
673         WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
674         WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
675         if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
676                 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
677                 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
678                 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
679                 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
680                 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
681         then
682             AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
683         fi
685         # Server 2003 is the highest version supported
686         MOZ_WINSDK_MAXVER=0x05020000
687     fi # !GNU_CC
689     AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
690     AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
691     # Require OS features provided by IE 5.0
692     AC_DEFINE_UNQUOTED(_WIN32_IE,0x0500)
693     ;;
694 esac
696 dnl Test breaks icc on OS/2 && MSVC
697 if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
698     AC_PROG_CC_C_O
699     if grep "NO_MINUS_C_MINUS_O 1" ./confdefs.h >/dev/null; then
700         USING_HCC=1
701         _OLDCC=$CC
702         _OLDCXX=$CXX
703         CC="${srcdir}/build/hcc '$CC'"
704         CXX="${srcdir}/build/hcpp '$CXX'"
705     fi
708 AC_PROG_CPP
709 AC_PROG_CXXCPP
711 if test -n "$_WIN32_MSVC"; then
712     SKIP_PATH_CHECKS=1
713     SKIP_COMPILER_CHECKS=1
714     SKIP_LIBRARY_CHECKS=1
716     # Since we're skipping compiler and library checks, hard-code
717     # some facts here.
718     case "$target" in
719     *-wince)
720         ;;
721     *)
722         AC_DEFINE(HAVE_IO_H)
723         AC_DEFINE(HAVE_SETBUF)
724         AC_DEFINE(HAVE_ISATTY)
725         ;;
726     esac
729 fi # COMPILE_ENVIRONMENT
731 AC_SUBST(MIDL_FLAGS)
732 AC_SUBST(_MSC_VER)
734 AC_SUBST(GNU_AS)
735 AC_SUBST(GNU_LD)
736 AC_SUBST(GNU_CC)
737 AC_SUBST(GNU_CXX)
738 AC_SUBST(INTEL_CC)
739 AC_SUBST(INTEL_CXX)
741 dnl ========================================================
742 dnl Checks for programs.
743 dnl ========================================================
744 AC_PROG_INSTALL
745 AC_PROG_LN_S
746 MOZ_PATH_PROGS(PERL, $PERL perl5 perl )
747 if test -z "$PERL" || test "$PERL" = ":"; then
748     AC_MSG_ERROR([perl not found in \$PATH])
751 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
752 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
753 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
754 _perl_res=$?
755 AC_MSG_RESULT([$_perl_version])
757 if test "$_perl_res" != 0; then
758     AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
762 AC_MSG_CHECKING([for full perl installation])
763 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
764 _perl_res=$?
765 if test "$_perl_res" != 0; then
766     AC_MSG_RESULT([no])
767     AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}.  A full perl installation is required.])
768 else
769     AC_MSG_RESULT([yes])    
772 MOZ_PATH_PROGS(PYTHON, $PYTHON python)
773 if test -z "$PYTHON"; then
774     AC_MSG_ERROR([python was not found in \$PATH])
777 MOZ_PATH_PROGS(NSINSTALL_BIN, nsinstall )
778 if test -z "$COMPILE_ENVIRONMENT"; then
779 if test -z "$NSINSTALL_BIN" || test "$NSINSTALL_BIN" = ":"; then
780     NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
783 AC_SUBST(NSINSTALL_BIN)
785 MOZ_PATH_PROG(DOXYGEN, doxygen, :)
786 MOZ_PATH_PROG(WHOAMI, whoami, :)
787 MOZ_PATH_PROG(AUTOCONF, autoconf, :)
788 MOZ_PATH_PROG(UNZIP, unzip, :)
789 MOZ_PATH_PROGS(ZIP, zip)
790 if test -z "$ZIP" || test "$ZIP" = ":"; then
791     AC_MSG_ERROR([zip not found in \$PATH])
793 MOZ_PATH_PROG(SYSTEM_MAKEDEPEND, makedepend)
794 MOZ_PATH_PROG(XARGS, xargs)
795 if test -z "$XARGS" || test "$XARGS" = ":"; then
796     AC_MSG_ERROR([xargs not found in \$PATH .])
799 if test "$COMPILE_ENVIRONMENT"; then
801 dnl ========================================================
802 dnl = Mac OS X toolchain support
803 dnl ========================================================
805 case "$target_os" in
806 darwin*)
807     dnl Current known valid versions for GCC_VERSION are 2.95.2 3.1 3.3 4.0.
808     dnl 4.0 identifies itself as 4.0.x, so strip the decidecimal for
809     dnl the environment and includedir purposes (when using an SDK, below),
810     dnl but remember the full version number for the libdir (SDK).
811     changequote(,)
812     GCC_VERSION_FULL=`echo $CXX_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
813     GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
814     changequote([,])
815     if test "$GCC_VERSION_FULL" = "4.0.0" ; then
816         dnl Bug 280479, but this keeps popping up in bug 292530 too because
817         dnl 4.0.0/4061 is the default compiler in Tiger.
818         changequote(,)
819         GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
820         changequote([,])
821         if test "$GCC_BUILD" = "4061" ; then
822             AC_MSG_ERROR([You are attempting to use Apple gcc 4.0 build 4061.
823 This compiler was supplied with Xcode 2.0, and contains bugs that prevent it
824 from building Mozilla. Upgrade to Xcode 2.1 or later.])
825         fi
826     fi
828     dnl xcodebuild needs GCC_VERSION defined in the environment, since it
829     dnl doesn't respect the CC/CXX setting.  With GCC_VERSION set, it will use
830     dnl /usr/bin/g(cc|++)-$GCC_VERSION.
831     MOZ_PATH_PROGS(PBBUILD, pbbuild xcodebuild pbxbuild)
833     case "$PBBUILD" in
834       *xcodebuild*)
835         changequote(,)
836         XCODEBUILD_VERSION=`$PBBUILD -version 2>/dev/null | xargs | sed -e 's/.*DevToolsCore-\([0-9]*\).*/\1/'`
837         changequote([,])
838         if test -n "$XCODEBUILD_VERSION" && test "$XCODEBUILD_VERSION" -ge 620 ; then
839           HAS_XCODE_2_1=1;
840         fi
841       ;;
842     esac
844     dnl sdp was formerly in /Developer/Tools.  As of Mac OS X 10.4 (Darwin 8),
845     dnl it has moved into /usr/bin.
846     MOZ_PATH_PROG(SDP, sdp, :, [$PATH:/usr/bin:/Developer/Tools])
847     ;;
848 esac
850 AC_SUBST(GCC_VERSION)
851 AC_SUBST(XCODEBUILD_VERSION)
852 AC_SUBST(HAS_XCODE_2_1)
854 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
855 dnl that a universal binary is being produced.
856 AC_SUBST(UNIVERSAL_BINARY)
858 dnl ========================================================
859 dnl Check for MacOS deployment target version
860 dnl ========================================================
862 MOZ_ARG_ENABLE_STRING(macos-target,
863                       [  --enable-macos-target=VER (default=10.4)
864                           Set the minimum MacOS version needed at runtime],
865                       [_MACOSX_DEPLOYMENT_TARGET=$enableval])
867 case "$target" in
868 *-darwin*)
869     if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
870         dnl Use the specified value
871         export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
872         AC_DEFINE_UNQUOTED(__ENVIRONMENT_MAC_OS_X_VERION_MIN_REQUIRED__,$_MACOSX_DEPLOYMENT_TARGET)
873     elif test -z "$MACOSX_DEPLOYMENT_TARGET" ; then
874         dnl No value specified on the command line or in the environment,
875         dnl use the lesser of the application's minimum or the architecture's
876         dnl minimum.
877         export MACOSX_DEPLOYMENT_TARGET=10.4
878     fi
879     ;;
880 esac
882 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
884 dnl ========================================================
885 dnl = Mac OS X SDK support
886 dnl ========================================================
887 MACOS_SDK_DIR=
888 NEXT_ROOT=
889 MOZ_ARG_WITH_STRING(macos-sdk,
890 [  --with-macos-sdk=dir   Location of platform SDK to use (Mac OS X only)],
891     MACOS_SDK_DIR=$withval)
893 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
894 dnl NEXT_ROOT will be set and exported only if it's needed.
895 AC_SUBST(MACOS_SDK_DIR)
896 AC_SUBST(NEXT_ROOT)
898 if test "$MACOS_SDK_DIR"; then
899   dnl Sync this section with the ones in NSPR and NSS.
900   dnl Changes to the cross environment here need to be accounted for in
901   dnl the libIDL checks (below) and xpidl build.
903   if test ! -d "$MACOS_SDK_DIR"; then
904     AC_MSG_ERROR([SDK not found.  When using --with-macos-sdk, you must
905 specify a valid SDK.  SDKs are installed when the optional cross-development
906 tools are selected during the Xcode/Developer Tools installation.])
907   fi
909   GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
910   if test "$GCC_VERSION_MAJOR" -lt "4" ; then
911     SDK_C_INCLUDE="-isystem ${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION} -isystem ${MACOS_SDK_DIR}/usr/include -F${MACOS_SDK_DIR}/System/Library/Frameworks"
912     if test -d "${MACOS_SDK_DIR}/Library/Frameworks" ; then
913       SDK_C_INCLUDE="$SDK_C_INCLUDE -F${MACOS_SDK_DIR}/Library/Frameworks"
914     fi
915     SDK_CXX_INCLUDE="-I${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION}/c++ -I${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION}/c++/ppc-darwin -I${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION}/c++/backward"
917     CFLAGS="$CFLAGS -nostdinc ${SDK_C_INCLUDE}"
918     CXXFLAGS="$CXXFLAGS -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
920     dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
921     CPP="$CPP -nostdinc ${SDK_C_INCLUDE}"
922     CXXCPP="$CXXCPP -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
924     dnl ld support for -syslibroot is compiler-agnostic, but only available
925     dnl on Tiger.  Although it's possible to switch on the build host's
926     dnl OS release to use ld -syslibroot when available, ld -syslibroot will
927     dnl cause warnings as long as NEXT_ROOT is set.  NEXT_ROOT should be
928     dnl set because both the compiler and linker use it.
929     LIBS="-L${MACOS_SDK_DIR}/usr/lib/gcc/darwin -L${MACOS_SDK_DIR}/usr/lib/gcc/darwin/${GCC_VERSION_FULL} -L${MACOS_SDK_DIR}/usr/lib $LIBS"
930     export NEXT_ROOT=$MACOS_SDK_DIR
932     if test -n "$CROSS_COMPILE" ; then
933       dnl NEXT_ROOT will be in the environment, but it shouldn't be set for
934       dnl the build host.  HOST_CXX is presently unused.
935       HOST_CC="NEXT_ROOT= $HOST_CC"
936       HOST_CXX="NEXT_ROOT= $HOST_CXX"
937     fi
938   else
939     dnl gcc >= 4.0 uses different paths than above, but knows how to find
940     dnl them itself.
941     CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
942     CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
944     dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
945     CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
946     CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
948     if test "$GCC_VERSION_FULL" = "4.0.0" ; then
949       dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
950       dnl that supports -syslibroot.  Don't set NEXT_ROOT because it will
951       dnl be ignored and cause warnings when -syslibroot is specified.
952       dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
953       dnl the -isysroot it receives, so this is only needed with 4.0.0.
954       LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
955     fi
956   fi
958   AC_LANG_SAVE
959   AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
960   AC_LANG_CPLUSPLUS
961   AC_TRY_COMPILE([#include <new>
962                  int main() { return 0; }],
963    result=yes,
964    result=no)
965   AC_LANG_RESTORE
966   AC_MSG_RESULT($result)
968   if test "$result" = "no" ; then
969     AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
970   fi
973 fi # COMPILE_ENVIRONMENT
975 dnl Be sure the make we use is GNU make.
976 dnl on win32, gmake.exe is the generally the wrong version
977 case "$host_os" in
978 cygwin*|mingw*|mks*|msvc*)
979     MOZ_PATH_PROGS(MAKE, $MAKE make gmake, :)
980     ;;
982     MOZ_PATH_PROGS(MAKE, $MAKE gmake make, :)
983     ;;
984 esac
985 _make_try=`$MAKE --version 2>/dev/null | grep GNU`
986 if test ! "$_make_try"
987 then
988         echo
989         echo "*** $MAKE is not GNU Make.  You will not be able to build Mozilla without GNU Make."
990         echo
991         exit 1
993 dnl Now exit if version if < MAKE_VERSION
994 rm -f dummy.mk
995 echo 'all: ; @echo $(MAKE_VERSION)' > dummy.mk
996 _make_vers=`$MAKE --no-print-directory -f dummy.mk all 2>/dev/null`
997 rm -f dummy.mk
998 _MAKE_MAJOR_VERSION=`echo $_make_vers | $AWK -F\. '{ print $1 }'`
999 _MAKE_MINOR_VERSION=`echo $_make_vers | $AWK -F\. '{ print $2 }'`
1000 MAKE_MAJOR_VERSION=`echo $MAKE_VERSION | $AWK -F\. '{ print $1 }'`
1001 MAKE_MINOR_VERSION=`echo $MAKE_VERSION | $AWK -F\. '{ print $2 }'`
1002 if test "$_MAKE_MAJOR_VERSION" -lt "$MAKE_MAJOR_VERSION" || \
1003    test "$_MAKE_MAJOR_VERSION" = "$MAKE_MAJOR_VERSION" -a \
1004         "$_MAKE_MINOR_VERSION" -lt "$MAKE_MINOR_VERSION"; then
1005    AC_MSG_ERROR([GNU Make $MAKE_VERSION or higher is required to build Mozilla.])
1007 AC_SUBST(MAKE)
1009 if test "$COMPILE_ENVIRONMENT"; then
1011 AC_PATH_XTRA
1013 dnl Check in X11 include directory too.
1014 if test "$no_x" != "yes"; then
1015     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1018 XCFLAGS="$X_CFLAGS"
1020 fi # COMPILE_ENVIRONMENT
1022 dnl ========================================================
1023 dnl set the defaults first
1024 dnl ========================================================
1025 AS_BIN=$AS
1026 AR_FLAGS='cr $@'
1027 AR_LIST='$(AR) t'
1028 AR_EXTRACT='$(AR) x'
1029 AR_DELETE='$(AR) d'
1030 AS='$(CC)'
1031 AS_DASH_C_FLAG='-c'
1032 DLL_PREFIX=lib
1033 LIB_PREFIX=lib
1034 DLL_SUFFIX=.so
1035 OBJ_SUFFIX=o
1036 LIB_SUFFIX=a
1037 ASM_SUFFIX=s
1038 IMPORT_LIB_SUFFIX=
1039 TARGET_MD_ARCH=unix
1040 DIRENT_INO=d_ino
1041 CYGWIN_WRAPPER=
1042 WIN_TOP_SRC=
1043 MOZ_USER_DIR=".mozilla"
1044 HOST_AR='$(AR)'
1045 HOST_AR_FLAGS='$(AR_FLAGS)'
1047 MOZ_JPEG_CFLAGS=
1048 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/jpeg)'
1049 MOZ_ZLIB_CFLAGS=
1050 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,$(DEPTH)/modules/zlib/src)'
1051 MOZ_BZ2_CFLAGS=
1052 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
1053 MOZ_PNG_CFLAGS=
1054 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/modules/libimg/png)'
1056 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs'
1057 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxpcom -lxpcom_core'
1058 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
1059 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxpcom'
1060 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) -lxul'
1061 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
1062 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
1064 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
1065 MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom_compat'
1067 USE_DEPENDENT_LIBS=1
1069 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
1070 MOZ_GFX_TOOLKIT='$(MOZ_WIDGET_TOOLKIT)'
1072 MOZ_ENABLE_POSTSCRIPT=1 
1074 if test -n "$CROSS_COMPILE"; then
1075     OS_TARGET="${target_os}"
1076     OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
1077     OS_RELEASE=
1078     case "${target_os}" in
1079         linux*)       OS_ARCH=Linux OS_TARGET=Linux ;;
1080         kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
1081         solaris*)     OS_ARCH=SunOS OS_RELEASE=5 ;;
1082         mingw*)       OS_ARCH=WINNT ;;
1083         wince*)       OS_ARCH=WINCE ;;
1084         darwin*)      OS_ARCH=Darwin OS_TARGET=Darwin ;;
1085     esac
1086 else
1087     OS_TARGET=`uname -s`
1088     OS_ARCH=`uname -s | sed -e 's|/|_|g'`
1089     OS_RELEASE=`uname -r`
1092 # Before this used `uname -m` when not cross compiling
1093 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1094 OS_TEST="${target_cpu}"
1096 _COMPILER_PREFIX=
1098 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1100 #######################################################################
1101 # Master "Core Components" macros for getting the OS target           #
1102 #######################################################################
1105 # Note: OS_TARGET should be specified on the command line for gmake.
1106 # When OS_TARGET=WIN95 is specified, then a Windows 95 target is built.
1107 # The difference between the Win95 target and the WinNT target is that
1108 # the WinNT target uses Windows NT specific features not available
1109 # in Windows 95. The Win95 target will run on Windows NT, but (supposedly)
1110 # at lesser performance (the Win95 target uses threads; the WinNT target
1111 # uses fibers).
1113 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1114 # cross-compilation.
1118 # The following hack allows one to build on a WIN95 machine (as if
1119 # s/he were cross-compiling on a WINNT host for a WIN95 target).
1120 # It also accomodates for MKS's uname.exe.  If you never intend
1121 # to do development on a WIN95 machine, you don't need this hack.
1123 case "$OS_ARCH" in
1124 WIN95)
1125     OS_ARCH=WINNT
1126     OS_TARGET=WIN95
1127     ;;
1128 Windows_95)
1129     OS_ARCH=Windows_NT
1130     OS_TARGET=WIN95
1131     ;;
1132 Windows_98)
1133     OS_ARCH=Windows_NT
1134     OS_TARGET=WIN95
1135     ;;
1136 CYGWIN_9*|CYGWIN_ME*)
1137     OS_ARCH='CYGWIN_NT-4.0'
1138     OS_TARGET=WIN95
1139     ;;
1140 esac
1143 # Define and override various archtecture-specific variables, including
1144 # HOST_OS_ARCH
1145 # OS_ARCH
1146 # OS_TEST
1147 # OS_TARGET
1148 # OS_RELEASE
1149 # OS_MINOR_RELEASE
1152 case "$HOST_OS_ARCH" in
1153 cygwin*|mingw*|mks*|msvc*)
1154     HOST_OS_ARCH=WINNT
1155     ;;
1156 linux*)
1157     HOST_OS_ARCH=Linux
1158     ;;
1159 solaris*)
1160     HOST_OS_ARCH=SunOS
1161     SOLARIS_SUNPRO_CC=
1162     SOLARIS_SUNPRO_CXX=
1163     if test -z "$GNU_CC"; then
1164         if test "`$_SUBDIR_CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then
1165             SOLARIS_SUNPRO_CC=1
1166        fi
1167     fi
1169     if test -z "$GNU_CXX"; then
1170        if test "`$_SUBDIR_CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then
1171            SOLARIS_SUNPRO_CXX=1
1172        fi
1173     fi
1174     AC_SUBST(SOLARIS_SUNPRO_CC)
1175     AC_SUBST(SOLARIS_SUNPRO_CXX)
1176     ;;
1177 BSD_386)
1178     HOST_OS_ARCH=BSD
1179     ;;
1180 dgux)
1181     HOST_OS_ARCH=DGUX
1182     ;;
1183 IRIX64)
1184     HOST_OS_ARCH=IRIX
1185     ;;
1186 UNIX_SV)
1187     if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1188         HOST_OS_ARCH=NCR
1189     else
1190         HOST_OS_ARCH=UNIXWARE
1191     fi
1192     ;;
1193 ncr)
1194     HOST_OS_ARCH=NCR
1195     ;;
1196 UNIX_SYSTEM_V)
1197     HOST_OS_ARCH=NEC
1198     ;;
1199 OSF1)
1200     ;;
1201 *OpenVMS*)
1202     HOST_OS_ARCH=OpenVMS
1203     ;;
1204 OS_2)
1205     HOST_OS_ARCH=OS2
1206     ;;
1207 QNX)
1208     ;;
1209 SCO_SV)
1210     HOST_OS_ARCH=SCOOS
1211     ;;
1212 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1213     HOST_OS_ARCH=SINIX
1214     ;;
1215 UnixWare)
1216     HOST_OS_ARCH=UNIXWARE
1217     ;;
1218 esac
1220 case "$OS_ARCH" in
1221 WINNT)
1222     OS_TEST=`uname -p`
1223     ;;
1224 Windows_NT)
1226 # If uname -s returns "Windows_NT", we assume that we are using
1227 # the uname.exe in MKS toolkit.
1229 # The -r option of MKS uname only returns the major version number.
1230 # So we need to use its -v option to get the minor version number.
1231 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1233     OS_ARCH=WINNT
1234     OS_TARGET=WINNT
1235     OS_MINOR_RELEASE=`uname -v`
1236     if test "$OS_MINOR_RELEASE" = "00"; then
1237         OS_MINOR_RELEASE=0
1238     fi
1239     OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1240     ;;
1241 CYGWIN32_NT|CYGWIN_NT*|MINGW*_NT*)
1243 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
1244 # the uname.exe in the Cygwin tools.
1245 # Prior to the Beta 20 release, Cygwin was called GNU-Win32.
1246 # If uname -s returns "CYGWIN32/NT", we assume that we are using
1247 # the uname.exe in the GNU-Win32 tools.
1248 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1249 # the uname.exe in the MSYS tools.
1251     OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1252     OS_ARCH=WINNT
1253     OS_TARGET=WINNT
1254     ;;
1255 AIX)
1256     OS_RELEASE=`uname -v`.`uname -r`
1257     OS_TEST=${target_cpu}
1258     ;;
1259 BSD_386)
1260     OS_ARCH=BSD
1261     ;;
1262 dgux)
1263     OS_ARCH=DGUX
1264     ;;
1265 IRIX64)
1266     OS_ARCH=IRIX
1267     ;;
1268 UNIX_SV)
1269     if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1270         OS_ARCH=NCR
1271     else
1272         OS_ARCH=UNIXWARE
1273         OS_RELEASE=`uname -v`
1274     fi
1275     ;;
1276 ncr)
1277     OS_ARCH=NCR
1278     ;;
1279 UNIX_SYSTEM_V)
1280     OS_ARCH=NEC
1281     ;;
1282 OSF1)
1283     case `uname -v` in
1284     148)
1285         OS_RELEASE=V3.2C
1286         ;;
1287     564)
1288         OS_RELEASE=V4.0B
1289         ;;
1290     878)
1291         OS_RELEASE=V4.0D
1292         ;;
1293     esac
1294     ;;
1295 *OpenVMS*)
1296     OS_ARCH=OpenVMS
1297     OS_RELEASE=`uname -v`
1298     OS_TEST=`uname -p`
1299     ;;
1300 OS_2)
1301     OS_ARCH=OS2
1302     OS_TARGET=OS2
1303     OS_RELEASE=`uname -v`
1304     ;;
1305 QNX)
1306     if test "$OS_TARGET" != "NTO"; then
1307         changequote(,)
1308         OS_RELEASE=`uname -v | sed 's/^\([0-9]\)\([0-9]*\)$/\1.\2/'`
1309         changequote([,])
1310     fi
1311     OS_TEST=x86
1312     ;;
1313 SCO_SV)
1314     OS_ARCH=SCOOS
1315     OS_RELEASE=5.0
1316     ;;
1317 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1318     OS_ARCH=SINIX
1319     OS_TEST=`uname -p`
1320     ;;
1321 UnixWare)
1322     OS_ARCH=UNIXWARE
1323     OS_RELEASE=`uname -v`
1324     ;;
1325 WINCE)
1326     OS_ARCH=WINCE
1327     OS_TARGET=WINCE
1328     ;;
1329 Darwin)
1330     case "${target_cpu}" in
1331     powerpc*)
1332         OS_TEST=ppc
1333         ;;
1334     i*86*)
1335         OS_TEST=i386 
1336         ;;
1337     x86_64)
1338         OS_TEST=x86_64
1339         ;;
1340     *)
1341         if test -z "$CROSS_COMPILE" ; then
1342             OS_TEST=`uname -p`
1343         fi
1344         ;;
1345     esac
1346     ;;
1347 esac
1349 if test "$OS_ARCH" = "NCR"; then
1350     changequote(,)
1351     OS_RELEASE=`awk '{print $3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$/\2.\3/'`
1352     changequote([,])
1355 # Only set CPU_ARCH if we recognize the value of OS_TEST
1357 case "$OS_TEST" in
1358 *86 | i86pc)
1359     CPU_ARCH=x86
1360     ;;
1362 powerpc* | ppc | rs6000)
1363     CPU_ARCH=ppc
1364     ;;
1366 Alpha | alpha | ALPHA)
1367     CPU_ARCH=Alpha
1368     ;;
1370 hppa* | parisc)
1371     CPU_ARCH=hppa
1372     ;;
1374 sun4u | sparc*)
1375     CPU_ARCH=sparc
1376     ;;
1378 x86_64 | ia64)
1379     CPU_ARCH="$OS_TEST"
1380     ;;
1381 esac
1383 if test -z "$OS_TARGET"; then
1384     OS_TARGET=$OS_ARCH
1386 if test "$OS_TARGET" = "WIN95"; then
1387     OS_RELEASE="4.0"
1389 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1391 dnl ========================================================
1392 dnl GNU specific defaults
1393 dnl ========================================================
1394 if test "$GNU_CC"; then
1395     # FIXME: Let us build with strict aliasing. bug 414641.
1396     CFLAGS="$CFLAGS -fno-strict-aliasing"
1397     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1398     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1399     DSO_LDOPTS='-shared'
1400     if test "$GCC_USE_GNU_LD"; then
1401         # Don't allow undefined symbols in libraries
1402         DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1403     fi
1404     WARNINGS_AS_ERRORS='-Werror'
1405     DSO_CFLAGS=''
1406     DSO_PIC_CFLAGS='-fPIC'
1407     ASFLAGS="$ASFLAGS -fPIC"
1408     _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
1409     _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
1410     _MOZ_EXCEPTIONS_FLAGS_ON='-fhandle-exceptions'
1411     _MOZ_EXCEPTIONS_FLAGS_OFF='-fno-handle-exceptions'
1413     # Turn on GNU specific features
1414     # -Wall - turn on all warnings
1415     # -pedantic - make compiler warn about non-ANSI stuff, and
1416     #             be a little bit stricter
1417     # Warnings slamm took out for now (these were giving more noise than help):
1418     # -Wbad-function-cast - warns when casting a function to a new return type
1419     # -Wshadow - removed because it generates more noise than help --pete
1420     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
1421     if test -z "$INTEL_CC"; then
1422        # Don't use -Wcast-align with ICC
1423        case "$CPU_ARCH" in
1424            # And don't use it on hppa, ia64, sparc, since it's noisy there
1425            hppa | ia64 | sparc)
1426            ;;
1427            *)
1428         _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1429            ;;
1430        esac
1431     fi
1433     dnl Turn pedantic on but disable the warnings for long long
1434     _PEDANTIC=1
1436     if test -z "$INTEL_CC"; then
1437       _IGNORE_LONG_LONG_WARNINGS=1
1438       _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
1439     else
1440       _IGNORE_LONG_LONG_WARNINGS=
1441     fi
1444     _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1445     _USE_CPP_INCLUDE_FLAG=1
1446 elif test "$SOLARIS_SUNPRO_CC"; then
1447     MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1448     MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1450     DSO_LDOPTS='-shared'
1451     if test "$GNU_LD"; then
1452         # Don't allow undefined symbols in libraries
1453         DSO_LDOPTS="$DSO_LDOPTS -z defs"
1454     fi
1456     DSO_CFLAGS=''
1457     if test "$CPU_ARCH" = "sparc"; then
1458         # for Sun Studio on Solaris/SPARC
1459         DSO_PIC_CFLAGS='-xcode=pic32'
1460     else
1461         DSO_PIC_CFLAGS='-KPIC'
1462     fi
1463     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1464 else
1465     MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1466     MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1468     DSO_LDOPTS='-shared'
1469     if test "$GNU_LD"; then
1470         # Don't allow undefined symbols in libraries
1471         DSO_LDOPTS="$DSO_LDOPTS -z defs"
1472     fi
1474     DSO_CFLAGS=''
1475     DSO_PIC_CFLAGS='-KPIC'
1476     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1479 if test "$GNU_CXX"; then
1480     # FIXME: Let us build with strict aliasing. bug 414641.
1481     CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
1482     # Turn on GNU specific features
1483     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
1484     if test -z "$INTEL_CC"; then
1485        # Don't use -Wcast-align with ICC
1486        case "$CPU_ARCH" in
1487            # And don't use it on hppa, ia64, sparc, since it's noisy there
1488            hppa | ia64 | sparc)
1489            ;;
1490            *)
1491         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1492            ;;
1493        esac
1494     fi
1496     _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1497     _USE_CPP_INCLUDE_FLAG=1
1499     AC_CACHE_CHECK(whether the compiler supports -Wno-invalid-offsetof,
1500                    ac_has_wno_invalid_offsetof,
1501         [
1502             AC_LANG_SAVE
1503             AC_LANG_CPLUSPLUS
1504             _SAVE_CXXFLAGS="$CXXFLAGS"
1505             CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1506             AC_TRY_COMPILE([],
1507                            [return(0);],
1508                            ac_has_wno_invalid_offsetof="yes",
1509                            ac_has_wno_invalid_offsetof="no")
1510             CXXFLAGS="$_SAVE_CXXFLAGS"
1511             AC_LANG_RESTORE
1512         ])
1513     if test "$ac_has_wno_invalid_offsetof" = "yes"; then
1514         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1515     fi
1516 else
1517     _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1520 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1521 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1522 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1523 dnl normal behavior.
1524 dnl ========================================================
1525 MKSHLIB_FORCE_ALL=
1526 MKSHLIB_UNFORCE_ALL=
1528 if test "$COMPILE_ENVIRONMENT"; then
1529 if test "$GNU_CC"; then
1530   AC_MSG_CHECKING(whether ld has archive extraction flags)
1531   AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1532    [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1533     ac_cv_mkshlib_force_and_unforce="no"
1534     exec 3<&0 <<LOOP_INPUT
1535         force="-Wl,--whole-archive";   unforce="-Wl,--no-whole-archive"
1536         force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1537         force="-Wl,-all";              unforce="-Wl,-none"
1538 LOOP_INPUT
1539     while read line
1540     do
1541       eval $line
1542       LDFLAGS=$force
1543       LIBS=$unforce
1544       AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1545     done
1546     exec 0<&3 3<&-
1547     LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1548    ])
1549   if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1550     AC_MSG_RESULT(no)
1551   else
1552     AC_MSG_RESULT(yes)
1553     eval $ac_cv_mkshlib_force_and_unforce
1554     MKSHLIB_FORCE_ALL=$force
1555     MKSHLIB_UNFORCE_ALL=$unforce
1556   fi
1557 fi # GNU_CC
1558 fi # COMPILE_ENVIRONMENT
1560 dnl =================================================================
1561 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1562 dnl which is bad when cross compiling.
1563 dnl =================================================================
1564 if test "$COMPILE_ENVIRONMENT"; then
1565 configure_static_assert_macros='
1566 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1567 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1568 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1571 dnl test that the macros actually work:
1572 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1573 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1574  [AC_LANG_SAVE
1575   AC_LANG_C
1576   ac_cv_static_assertion_macros_work="yes"
1577   AC_TRY_COMPILE([$configure_static_assert_macros],
1578                  [CONFIGURE_STATIC_ASSERT(1)],
1579                  ,
1580                  ac_cv_static_assertion_macros_work="no")
1581   AC_TRY_COMPILE([$configure_static_assert_macros],
1582                  [CONFIGURE_STATIC_ASSERT(0)],
1583                  ac_cv_static_assertion_macros_work="no",
1584                  )
1585   AC_LANG_CPLUSPLUS
1586   AC_TRY_COMPILE([$configure_static_assert_macros],
1587                  [CONFIGURE_STATIC_ASSERT(1)],
1588                  ,
1589                  ac_cv_static_assertion_macros_work="no")
1590   AC_TRY_COMPILE([$configure_static_assert_macros],
1591                  [CONFIGURE_STATIC_ASSERT(0)],
1592                  ac_cv_static_assertion_macros_work="no",
1593                  )
1594   AC_LANG_RESTORE
1595  ])
1596 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1597 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1598     AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1600 fi # COMPILE_ENVIRONMENT
1602 dnl ========================================================
1603 dnl Checking for 64-bit OS
1604 dnl ========================================================
1605 if test "$COMPILE_ENVIRONMENT"; then
1606 AC_LANG_SAVE
1607 AC_LANG_C
1608 AC_MSG_CHECKING(for 64-bit OS)
1609 AC_TRY_COMPILE([$configure_static_assert_macros],
1610                [CONFIGURE_STATIC_ASSERT(sizeof(long) == 8)],
1611                result="yes", result="no")
1612 AC_MSG_RESULT("$result")
1613 if test "$result" = "yes"; then
1614     AC_DEFINE(HAVE_64BIT_OS)
1615     HAVE_64BIT_OS=1
1617 AC_SUBST(HAVE_64BIT_OS)
1618 AC_LANG_RESTORE
1619 fi # COMPILE_ENVIRONMENT
1621 dnl ========================================================
1622 dnl Enable high-memory support on OS/2 by default.
1623 dnl ========================================================
1624 MOZ_OS2_HIGH_MEMORY=1
1625 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1626 [  --disable-os2-high-mem  Disable high-memory support on OS/2],
1627     MOZ_OS2_HIGH_MEMORY=,
1628     MOZ_OS2_HIGH_MEMORY=1 )
1629 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1631 dnl ========================================================
1632 dnl System overrides of the defaults for host
1633 dnl ========================================================
1634 case "$host" in
1635 *-beos*)
1636     HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
1637     HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
1638     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1639     ;;
1641 *cygwin*|*mingw*|*mks*|*msvc*|*wince)
1642     if test -n "$_WIN32_MSVC"; then
1643         HOST_AR=lib
1644         HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1645         HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1646         HOST_RANLIB='echo ranlib'
1647     else
1648         HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
1649     fi
1650     HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
1651     HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1652     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1653     HOST_BIN_SUFFIX=.exe
1654     case "$host" in
1655     *mingw*)
1656     dnl MinGW/MSYS does not need CYGWIN_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
1674     ;;
1676 *-darwin*)
1677     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1678     HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1679     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1680     MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
1681     LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL -lobjc'
1682     ;;
1684 *-linux*|*-kfreebsd*-gnu)
1685     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1686     HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1687     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1688     ;;
1690 *os2*)
1691     HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1692     HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1693     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1694     HOST_BIN_SUFFIX=.exe
1695     MOZ_FIX_LINK_PATHS=
1696     ;;
1698 *-osf*)
1699     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1700     HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
1701     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1702     ;;
1705     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1706     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1707     ;;
1708 esac
1710 dnl Get mozilla version from central milestone file
1711 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1713 dnl Get version of various core apps from the version files.
1714 FIREFOX_VERSION=`cat $topsrcdir/browser/config/version.txt`
1716 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1717 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1719 dnl ========================================================
1720 dnl System overrides of the defaults for target
1721 dnl ========================================================
1723 case "$target" in
1724 *-aix*)
1725     AC_DEFINE(AIX)
1726     if test ! "$GNU_CC"; then
1727         if test ! "$HAVE_64BIT_OS"; then
1728             # Compiling with Visual Age C++ object model compat is the
1729             # default. To compile with object model ibm, add 
1730             # AIX_OBJMODEL=ibm to .mozconfig.
1731             if test "$AIX_OBJMODEL" = "ibm"; then
1732                 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1733             else
1734                 AIX_OBJMODEL=compat
1735             fi
1736         else
1737             AIX_OBJMODEL=compat
1738         fi
1739         AC_SUBST(AIX_OBJMODEL)
1740         DSO_LDOPTS='-qmkshrobj=1'
1741         DSO_CFLAGS='-qflag=w:w'
1742         DSO_PIC_CFLAGS=
1743         LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1744         AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
1745         MOZ_FIX_LINK_PATHS=
1746         MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1747         MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1748         if test "$COMPILE_ENVIRONMENT"; then
1749             AC_LANG_SAVE
1750             AC_LANG_CPLUSPLUS
1751             AC_MSG_CHECKING([for VisualAge C++ compiler version >= 6.0.0.3])
1752             AC_TRY_COMPILE([],
1753                 [#if (__IBMCPP__ < 600)
1754                  #error "Bad compiler"
1755                  #endif],
1756                 _BAD_COMPILER=,_BAD_COMPILER=1)
1757             if test -n "$_BAD_COMPILER"; then
1758                 AC_MSG_RESULT([no])    
1759                 AC_MSG_ERROR([VisualAge C++ version 6.0.0.3 or higher is required to build.])
1760             else
1761                 AC_MSG_RESULT([yes])    
1762             fi
1763             AC_LANG_RESTORE
1764             TARGET_COMPILER_ABI="ibmc"
1765             CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1766             CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1767         fi
1768     fi
1769     case "${target_os}" in
1770     aix4.1*)
1771         DLL_SUFFIX='_shr.a'
1772         ;;
1773     esac
1774     if test "$COMPILE_ENVIRONMENT"; then
1775         AC_CHECK_HEADERS(sys/inttypes.h)
1776     fi
1777     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1778     ;;
1780 *-beos*)
1781     no_x=yes
1782     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1783     _PLATFORM_DEFAULT_TOOLKIT="cairo-beos"
1784     DSO_LDOPTS='-nostart'
1785     TK_LIBS='-lbe -lroot'
1786     LIBS="$LIBS -lbe"
1787     if test "$COMPILE_ENVIRONMENT"; then
1788         AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
1789         AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
1790     fi
1791     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
1792     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
1793     _MOZ_USE_RTTI=1
1794     USE_DEPENDENT_LIBS=
1795     MOZ_USER_DIR="Mozilla"
1796     ;;
1798 *-bsdi*)
1799     dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
1800     _PEDANTIC=
1801     _IGNORE_LONG_LONG_WARNINGS=
1802     case $OS_RELEASE in
1803         4.*|5.*)
1804             STRIP="$STRIP -d"
1805             ;;
1806         *)
1807             DSO_CFLAGS=''
1808             DSO_LDOPTS='-r'
1809             _WARNINGS_CFLAGS="-Wall"
1810             _WARNINGS_CXXFLAGS="-Wall"
1811             # The test above doesn't work properly, at least on 3.1.
1812             MKSHLIB_FORCE_ALL=''
1813             MKSHLIB_UNFORCE_ALL=''
1814         ;;
1815     esac
1816     ;;
1818 *-darwin*) 
1819     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1820     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1821     MOZ_OPTIMIZE_FLAGS="-O2"
1822     _PEDANTIC=
1823     CFLAGS="$CFLAGS -fpascal-strings -fno-common"
1824     CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
1825     DLL_SUFFIX=".dylib"
1826     DSO_LDOPTS=''
1827     STRIP="$STRIP -x -S"
1828     _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1829     MOZ_ENABLE_POSTSCRIPT=
1830     TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1831     LDFLAGS="$LDFLAGS -framework Cocoa"
1832     # The ExceptionHandling framework is needed for Objective-C exception
1833     # logging code in nsObjCExceptions.h. Currently we only use that in debug
1834     # builds.
1835     MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"
1836     # set MACOSX to generate lib/mac/MoreFiles/Makefile
1837     MACOSX=1
1839     dnl DTrace and -dead_strip don't interact well. See bug 403132.
1840     dnl ===================================================================
1841     if test "x$enable_dtrace" = "xyes"; then
1842         echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
1843     else
1844         dnl check for the presence of the -dead_strip linker flag
1845         AC_MSG_CHECKING([for -dead_strip option to ld])
1846         _SAVE_LDFLAGS=$LDFLAGS
1847         LDFLAGS="$LDFLAGS -Wl,-dead_strip"
1848         AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
1849         if test -n "$_HAVE_DEAD_STRIP" ; then
1850             AC_MSG_RESULT([yes])
1851             MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
1852         else
1853             AC_MSG_RESULT([no])
1854         fi
1855         
1856         LDFLAGS=$_SAVE_LDFLAGS
1857     fi
1858     ;;
1860 *-freebsd*)
1861     if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` != "elf"; then
1862         DLL_SUFFIX=".so.1.0"
1863         DSO_LDOPTS="-shared"
1864     fi
1865     if test ! "$GNU_CC"; then
1866         DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
1867     fi
1868 # Can't have force w/o an unforce.
1869 #    # Hack for FreeBSD 2.2
1870 #    if test -z "$MKSHLIB_FORCE_ALL"; then
1871 #       MKSHLIB_FORCE_ALL='-Wl,-Bforcearchive'
1872 #       MKSHLIB_UNFORCE_ALL=''
1873 #    fi
1874     ;; 
1876 *-hpux*)
1877     DLL_SUFFIX=".sl"
1878     if test ! "$GNU_CC"; then
1879         DSO_LDOPTS='-b -Wl,+s'
1880         DSO_CFLAGS=""
1881         DSO_PIC_CFLAGS="+Z"
1882         MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
1883         MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
1884         CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1885     else
1886         DSO_LDOPTS='-b -E +s'
1887         MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1888         MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1889     fi
1890     MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
1891     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1892     ;;
1894 *-irix5*)
1895     AC_DEFINE(IRIX)
1896     DSO_LDOPTS='-elf -shared'
1898     if test "$GNU_CC"; then
1899        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1900        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1901        MKSHLIB_FORCE_ALL='-Wl,-all'
1902        MKSHLIB_UNFORCE_ALL='-Wl,-none'
1903        CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1904     else
1905        MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1906        MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1907        MKSHLIB_FORCE_ALL='-all'
1908        MKSHLIB_UNFORCE_ALL='-none'
1909     fi
1910     ;;
1912 *-irix6*)
1913     AC_DEFINE(IRIX)
1914     dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must* 
1915     dnl compile and link using -n32
1916     USE_N32=1
1917     TARGET_COMPILER_ABI=n32
1918     DSO_LDOPTS='-elf -shared'
1919     MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1920     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1921     _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
1922     _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
1923     if test "$GNU_CC"; then
1924        MKSHLIB_FORCE_ALL='-Wl,-all'
1925        MKSHLIB_UNFORCE_ALL='-Wl,-none'
1926        _WARNINGS_CFLAGS="-Wall"
1927        _WARNINGS_CXXFLAGS="-Wall"
1928        CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1929     else
1930        MKSHLIB_FORCE_ALL='-all'
1931        MKSHLIB_UNFORCE_ALL='-none'
1932            AR_LIST="$AR t"
1933            AR_EXTRACT="$AR x"
1934            AR_DELETE="$AR d"
1935            AR='$(CXX) -ar'
1936            AR_FLAGS='-o $@'
1937        CFLAGS="$CFLAGS -woff 3262 -G 4"
1938        CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
1939        if test -n "$USE_N32"; then
1940            ASFLAGS="$ASFLAGS -n32"
1941            CFLAGS="$CFLAGS -n32"
1942            CXXFLAGS="$CXXFLAGS -n32"
1943            LDFLAGS="$LDFLAGS -n32"
1944        fi
1945        AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1946        AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
1947        MOZ_FIX_LINK_PATHS=
1948     fi
1949     if test -z "$GNU_CXX"; then
1950       MIPSPRO_CXX=1
1951     fi
1952     ;;
1954 *-*linux*)
1955     # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
1956     # Similarly for GNU_CXX and INTEL_CXX.
1957     if test "$INTEL_CC" || test "$INTEL_CXX"; then
1958         # -Os has been broken on Intel's C/C++ compilers for quite a
1959         # while; Intel recommends against using it.
1960         MOZ_OPTIMIZE_FLAGS="-O2"
1961         MOZ_DEBUG_FLAGS="-g -fno-inline"
1962     elif test "$GNU_CC" || test "$GNU_CXX"; then
1963         GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
1964         case $GCC_VERSION in
1965         4.1.*|4.2.*)
1966             # -Os is broken on gcc 4.1.x and 4.2.x, we need to tweak it to get good results.
1967             MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
1968         esac
1969         MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions $MOZ_OPTIMIZE_SIZE_TWEAK"
1970         MOZ_DEBUG_FLAGS="-g -fno-inline"  # most people on linux use gcc/gdb,
1971                                           # and that combo is not yet good at
1972                                           # debugging inlined functions (even
1973                                           # when using DWARF2 as the debugging
1974                                           # format)
1975     fi
1977     TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1979     MOZ_MEMORY=1
1981     case "${target_cpu}" in
1982     alpha*)
1983         CFLAGS="$CFLAGS -mieee"
1984         CXXFLAGS="$CXXFLAGS -mieee"
1985     ;;
1986     i*86)
1987         USE_ELF_DYNSTR_GC=1
1988         MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1
1989     ;;
1990     mips*)
1991         MOZ_DEBUG_FLAGS="-g" # We want inlining
1992     ;;
1993     esac
1994     ;;
1996 *-wince*)
1998     MOZ_TOOLS_DIR=`echo $MOZ_TOOLS`
1999     AR_LIST="$AR -list"
2000     AR_EXTRACT="$AR -extract"
2001     AR_DELETE="$AR d"
2002     AR_FLAGS='-OUT:"$@"'
2004     if test "$AS_BIN"; then
2005         AS="$AS_BIN"
2006     fi
2007     DSO_CFLAGS=
2008     DSO_PIC_CFLAGS=
2009     DLL_SUFFIX=.dll
2010     BIN_SUFFIX='.exe'
2011     if test -z "$RC"; then 
2012         RC=rc.exe  
2013     fi
2014     # certain versions of cygwin's makedepend barf on the 
2015     # #include <string> vs -I./dist/include/string issue so don't use it
2016     SYSTEM_MAKEDEPEND=
2018     HOST_CC=cl
2019     HOST_CXX=cl
2020     HOST_LD=link
2021     HOST_AR='lib -OUT:$@'
2022     HOST_RANLIB='echo ranlib'
2023     HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
2024         
2025         
2026     WARNINGS_AS_ERRORS='-WX'
2027     MOZ_OPTIMIZE_FLAGS='-Ox'
2028     AR_FLAGS='-NOLOGO -OUT:"$@"'
2029     ASM_SUFFIX=asm
2030     CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2031     CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2032     DLL_PREFIX=
2033     DOXYGEN=:
2034     DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
2035     DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
2036     GARBAGE=
2037     IMPORT_LIB_SUFFIX=lib
2038     LIBS="$LIBS"
2039     LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2040     LIB_PREFIX=
2041     LIB_SUFFIX=lib 
2042     MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
2043     MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
2044     MKSHLIB_FORCE_ALL=
2045     MKSHLIB_UNFORCE_ALL=
2046     MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2047     MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2048     MOZ_DEBUG_FLAGS='-Zi'
2049     MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2050     MOZ_FIX_LINK_PATHS=
2051     MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
2052     MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
2053     OBJ_SUFFIX=obj
2054     RANLIB='echo not_ranlib'
2055     STRIP='echo not_strip'
2056     TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
2057     UNZIP=unzip
2058     XARGS=xargs
2059     XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
2060     ZIP=zip
2061     LIBIDL_CFLAGS="-I$MOZ_TOOLS_DIR/include ${GLIB_CFLAGS}"
2062     LIBIDL_LIBS="$MOZ_TOOLS_DIR/lib/libidl-0.6_s.lib $MOZ_TOOLS_DIR/lib/glib-1.2_s.lib"
2063     STATIC_LIBIDL=1
2064     MOZ_TREE_FREETYPE=1
2066     AC_DEFINE(HAVE_SNPRINTF)
2067     AC_DEFINE(_WINDOWS)
2068     AC_DEFINE(_WIN32)
2069     AC_DEFINE(WIN32)
2070     AC_DEFINE(XP_WIN)
2071     AC_DEFINE(XP_WIN32)
2072     AC_DEFINE(HW_THREADS)
2073     AC_DEFINE(STDC_HEADERS)
2074     AC_DEFINE(NEW_H, <new>)
2075     AC_DEFINE(WIN32_LEAN_AND_MEAN)
2077     TARGET_MD_ARCH=win32
2078     _PLATFORM_DEFAULT_TOOLKIT='windows'
2079     BIN_SUFFIX='.exe'
2080     USE_SHORT_LIBNAME=1
2081     MOZ_ENABLE_POSTSCRIPT=
2082     MOZ_USER_DIR="Mozilla"
2084     MOZ_GFX_OPTIMIZE_MOBILE=1
2086     # Sanity check for WINCE_WINDOWS_MOBILE
2087     # XXX disabled until we can fix the mobile tinderbox
2088     ##if test "$WINCE_WINDOWS_MOBILE"; then
2089     ##   AC_CHECK_HEADER(tpcshell.h, [],
2090     ##        AC_MSG_ERROR([Can't find tpcshell.h in your SDK; are you sure you don't need --disable-windows-mobile-components?]))
2091     ##fi
2095 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2096     DSO_CFLAGS=
2097     DSO_PIC_CFLAGS=
2098     DLL_SUFFIX=.dll
2099     RC=rc.exe
2100     # certain versions of cygwin's makedepend barf on the 
2101     # #include <string> vs -I./dist/include/string issue so don't use it
2102     SYSTEM_MAKEDEPEND=
2103     if test -n "$GNU_CC"; then
2104         CC="$CC -mno-cygwin"
2105         CXX="$CXX -mno-cygwin"
2106         CPP="$CPP -mno-cygwin"
2107         CFLAGS="$CFLAGS -mms-bitfields"
2108         CXXFLAGS="$CXXFLAGS -mms-bitfields"
2109         DSO_LDOPTS='-shared'
2110         MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
2111         MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2112         RC='$(WINDRES)'
2113         # Use temp file for windres (bug 213281)
2114         RCFLAGS='-O coff --use-temp-file'
2115         # mingw doesn't require kernel32, user32, and advapi32 explicitly
2116         LIBS="$LIBS -lgdi32 -lwinmm -lwsock32"
2117         MOZ_JS_LIBS='-L$(LIBXUL_DIST)/lib -ljs$(MOZ_BITS)$(VERSION_NUMBER)'
2118         MOZ_FIX_LINK_PATHS=
2119         DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core'
2120         XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom'
2121         DLL_PREFIX=
2122         IMPORT_LIB_SUFFIX=dll.a
2123     else
2124         TARGET_COMPILER_ABI=msvc
2125         HOST_CC='$(CC)'
2126         HOST_CXX='$(CXX)'
2127         HOST_LD='$(LD)'
2128         AR='lib -NOLOGO -OUT:"$@"'
2129         AR_FLAGS=
2130         RANLIB='echo not_ranlib'
2131         STRIP='echo not_strip'
2132         XARGS=xargs
2133         ZIP=zip
2134         UNZIP=unzip
2135         DOXYGEN=:
2136         GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
2137         OBJ_SUFFIX=obj
2138         LIB_SUFFIX=lib
2139         DLL_PREFIX=
2140         LIB_PREFIX=
2141         IMPORT_LIB_SUFFIX=lib
2142         MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2143         MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2144         MKSHLIB_FORCE_ALL=
2145         MKSHLIB_UNFORCE_ALL=
2146         DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2147         CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2148         CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2149         LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
2150         MOZ_DEBUG_FLAGS='-Zi'
2151         MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2152         WARNINGS_AS_ERRORS='-WX'
2153         MOZ_OPTIMIZE_FLAGS='-O1'
2154         MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
2155         MOZ_FIX_LINK_PATHS=
2156         DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
2157         XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
2158         LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2159         MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2160         MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
2161         if test $_MSC_VER -ge 1400; then
2162             LDFLAGS="$LDFLAGS -NXCOMPAT -SAFESEH"
2163             dnl For profile-guided optimization
2164             PROFILE_GEN_CFLAGS="-GL"
2165             PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2166             dnl XXX: PGO builds can fail with warnings treated as errors,
2167             dnl specifically "no profile data available" appears to be
2168             dnl treated as an error sometimes. This might be a consequence
2169             dnl of using WARNINGS_AS_ERRORS in some modules, combined
2170             dnl with the linker doing most of the work in the whole-program
2171             dnl optimization/PGO case. I think it's probably a compiler bug,
2172             dnl but we work around it here.
2173             PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2174             dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2175             dnl Probably also a compiler bug, but what can you do?
2176             PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2177             if test -n "$_USE_DYNAMICBASE"; then
2178                LDFLAGS="$LDFLAGS -DYNAMICBASE"
2179             fi
2180         fi
2181     fi
2182     MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,jpeg$(MOZ_BITS)$(VERSION_NUMBER),$(DEPTH)/jpeg)'
2183     MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,png,$(DEPTH)/modules/libimg/png)'
2184     AC_DEFINE(HAVE_SNPRINTF)
2185     AC_DEFINE(_WINDOWS)
2186     AC_DEFINE(_WIN32)
2187     AC_DEFINE(WIN32)
2188     AC_DEFINE(XP_WIN)
2189     AC_DEFINE(XP_WIN32)
2190     AC_DEFINE(HW_THREADS)
2191     AC_DEFINE(STDC_HEADERS)
2192     AC_DEFINE(NEW_H, <new>)
2193     AC_DEFINE(WIN32_LEAN_AND_MEAN)
2194     TARGET_MD_ARCH=win32
2195     _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2196     BIN_SUFFIX='.exe'
2197     USE_SHORT_LIBNAME=1
2198     MOZ_ENABLE_POSTSCRIPT=
2199     MOZ_USER_DIR="Mozilla"
2201     dnl Hardcode to win95 for now - cls
2202     TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2204     dnl set NO_X11 defines here as the general check is skipped on win32
2205     no_x=yes
2206     AC_DEFINE(NO_X11)
2208     dnl MinGW/MSYS doesn't provide or need cygpath
2209     case "$host" in
2210     *-mingw*)
2211         CYGPATH_W=echo
2212         CYGPATH_S=cat
2213         MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2214         ;;
2215     *-cygwin*|*-msvc*|*-mks*)
2216         CYGPATH_W="cygpath -a -w"
2217         CYGPATH_S="sed -e s|\\\\|/|g"
2218         MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
2219         ;;
2220     esac
2221     case "$host" in
2222     *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2224     if test -z "$MOZ_TOOLS"; then
2225         AC_MSG_ERROR([MOZ_TOOLS is not set])
2226     fi
2228     MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2229     if test "$?" != "0" || test -z "$MOZ_TOOLS_DIR"; then
2230         AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2231     fi
2232     MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
2233     if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
2234         AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2235     fi
2236     MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
2238     if test -n "$GLIB_PREFIX"; then
2239         _GLIB_PREFIX_DIR=`cd $GLIB_PREFIX && pwd -W`
2240         if test "$?" = "0"; then
2241             if test `echo ${PATH}: | grep -ic "$_GLIB_PREFIX_DIR/bin:"` = 0; then
2242                 AC_MSG_ERROR([GLIB_PREFIX must be in your \$PATH.])
2243             fi
2244             _GLIB_PREFIX_DIR=`$CYGPATH_W $_GLIB_PREFIX_DIR | $CYGPATH_S`
2245         else
2246             AC_MSG_ERROR([GLIB_PREFIX is set but "${GLIB_PREFIX}" is not a directory.])
2247         fi
2248     else
2249         _GLIB_PREFIX_DIR=$MOZ_TOOLS_DIR
2250     fi
2251     if test ! -f "${_GLIB_PREFIX_DIR}/include/glib.h"; then
2252         AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/include/glib.h .])
2253     fi
2254     GLIB_CFLAGS="-I${_GLIB_PREFIX_DIR}/include"
2255     if test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"; then
2256         GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"
2257     elif test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"; then
2258         GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"
2259     else
2260         AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/lib/glib-1.2.lib or $_GLIB_PREFIX_DIR/lib/glib-1.2_s.lib])
2261     fi
2263     if test -n "$LIBIDL_PREFIX"; then
2264         _LIBIDL_PREFIX_DIR=`cd $LIBIDL_PREFIX && pwd -W`
2265         if test "$?" = "0"; then
2266             if test `echo ${PATH}: | grep -ic "$_LIBIDL_PREFIX_DIR/bin:"` = 0; then
2267                 AC_MSG_ERROR([LIBIDL_PREFIX must be in your \$PATH.])
2268             fi
2269             _LIBIDL_PREFIX_DIR=`$CYGPATH_W $_LIBIDL_PREFIX_DIR | $CYGPATH_S`
2270         else
2271             AC_MSG_ERROR([LIBIDL_PREFIX is set but "${LIBIDL_PREFIX}" is not a directory.])
2272         fi
2273     else
2274         _LIBIDL_PREFIX_DIR=$MOZ_TOOLS_DIR
2275     fi        
2276     if test ! -f "${_LIBIDL_PREFIX_DIR}/include/libIDL/IDL.h"; then
2277         AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/include/libIDL/IDL.h .])
2278     fi
2279     LIBIDL_CFLAGS="-I${_LIBIDL_PREFIX_DIR}/include ${GLIB_CFLAGS}"
2280     if test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"; then
2281         LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"
2282         STATIC_LIBIDL=1
2283     elif test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"; then
2284         LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"
2285     else
2286         AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/lib/libidl-0.6.lib or $_LIBIDL_PREFIX_DIR/lib/libidl-0.6_s.lib])
2287     fi
2288     LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2289     ;;
2291     *) # else cross-compiling
2292         if test -n "$GLIB_PREFIX"; then
2293             GLIB_CFLAGS="-I${GLIB_PREFIX}/include"
2294             if test -f "${GLIB_PREFIX}/lib/glib-1.2_s.lib"; then
2295                 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2_s.lib"
2296             elif test -f "${GLIB_PREFIX}/lib/glib-1.2.lib"; then
2297                 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2.lib"
2298             else
2299                 AC_MSG_ERROR([Cannot find $GLIB_PREFIX/lib/glib-1.2.lib or $GLIB_PREFIX/lib/glib-1.2_s.lib])
2300             fi
2301         fi
2302         if test -n "$LIBIDL_PREFIX"; then
2303             LIBIDL_CFLAGS="-I${LIBIDL_PREFIX}/include ${GLIB_CFLAGS}"
2304             if test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"; then
2305                 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"
2306                 STATIC_LIBIDL=1
2307             elif test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"; then
2308                 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"
2309             else
2310                 AC_MSG_ERROR([Cannot find $LIBIDL_PREFIX/lib/libIDL-0.6.lib or $LIBIDL_PREFIX/lib/libIDL-0.6_s.lib])
2311             fi
2312         fi
2313         LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2314         ;;
2315     esac 
2318     case "$host_os" in
2319     cygwin*|msvc*|mks*)
2320         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])
2321         ;;
2323     *)
2324         AC_CHECK_HEADERS(mmintrin.h oleacc.idl)
2326         AC_LANG_SAVE
2327         AC_LANG_CPLUSPLUS
2328         AC_CHECK_HEADERS(atlbase.h wpcapi.h)
2329         AC_LANG_RESTORE
2330         ;;
2331     esac
2333     case "$target" in
2334     i*86-*)
2335         AC_DEFINE(_X86_)
2336         ;;
2337     alpha-*)
2338         AC_DEFINE(_ALPHA_)
2339         ;;
2340     mips-*)
2341         AC_DEFINE(_MIPS_)
2342         ;;
2343     *)
2344         AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2345         ;;
2346     esac
2347     ;;
2349 *-netbsd*)
2350     DSO_CFLAGS=''
2351     CFLAGS="$CFLAGS -Dunix"
2352     CXXFLAGS="$CXXFLAGS -Dunix"
2353     if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2354         DLL_SUFFIX=".so"
2355         DSO_PIC_CFLAGS='-fPIC -DPIC'
2356         DSO_LDOPTS='-shared'
2357         BIN_FLAGS='-Wl,--export-dynamic'
2358     else
2359         DSO_PIC_CFLAGS='-fPIC -DPIC'
2360         DLL_SUFFIX=".so.1.0"
2361         DSO_LDOPTS='-shared'
2362     fi
2363     # This will fail on a.out systems prior to 1.5.1_ALPHA.
2364     MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2365     MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2366     if test "$LIBRUNPATH"; then
2367         DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2368     fi
2369     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2370     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2371     ;;
2373 *-nto*) 
2374         AC_DEFINE(NTO)  
2375         AC_DEFINE(_QNX_SOURCE)
2376         AC_DEFINE(_i386)
2377         OS_TARGET=NTO
2378         WARNINGS_AS_ERRORS=''
2379         MOZ_OPTIMIZE_FLAGS="-O"
2380         MOZ_DEBUG_FLAGS="-gstabs"
2381         USE_PTHREADS=1
2382         _PEDANTIC=
2383         LIBS="$LIBS -lsocket -lstdc++"
2384         _DEFINES_CFLAGS='-Wp,-include -Wp,$(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
2385         _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -Wp,-include -Wp,$(DEPTH)/mozilla-config.h -D_POSIX_C_SOURCE=199506'
2386         if test "$with_x" != "yes"
2387         then
2388                 _PLATFORM_DEFAULT_TOOLKIT="photon"
2389             TK_CFLAGS='-I/usr/include/photon'
2390                 TK_LIBS='-lph'
2391         fi
2392         case "${target_cpu}" in
2393         ppc*)
2394         AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)        
2395         ;;
2396         esac
2397         case "${host_cpu}" in
2398         i*86)
2399         USE_ELF_DYNSTR_GC=1
2400         ;;
2401         esac
2402         ;;
2404 *-openbsd*)
2405     DLL_SUFFIX=".so.1.0"
2406     DSO_CFLAGS=''
2407     DSO_PIC_CFLAGS='-fPIC'
2408     DSO_LDOPTS='-shared -fPIC'
2409     if test "$LIBRUNPATH"; then
2410         DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2411     fi
2412     ;;
2414 *-openvms*) 
2415     AC_DEFINE(NO_PW_GECOS)
2416     AC_DEFINE(NO_UDSOCK)
2417     AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
2418     USE_PTHREADS=1
2419     MKSHLIB_FORCE_ALL='-all'
2420     MKSHLIB_UNFORCE_ALL='-none'
2421     AS='as'
2422     AS_DASH_C_FLAG='-Wc/names=as_is'
2423     AR_FLAGS='c $@'
2424     DSO_LDOPTS='-shared -auto_symvec'
2425     DSO_PIC_CFLAGS=
2426     MOZ_DEBUG_LDFLAGS='-g'
2427     COMPAQ_CXX=1
2428     CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
2429     CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
2430     ;;
2433 *-os2*)
2434     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2435     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2436     AC_DEFINE(OS2)
2437     AC_DEFINE(XP_OS2)
2438     AC_DEFINE(OS2EMX_PLAIN_CHAR)
2439     AC_DEFINE(TCPV40HDRS)
2440     USE_SHORT_LIBNAME=1
2441     DLL_PREFIX=
2442     LIB_PREFIX=
2443     LIB_SUFFIX=lib
2444     BIN_SUFFIX=".exe"
2445     DLL_SUFFIX=".dll"
2446     IMPORT_LIB_SUFFIX=lib
2447     DSO_PIC_CFLAGS=
2448     AR=emxomfar
2449     AR_FLAGS='r $@'
2450     CFLAGS="$CFLAGS -Zomf"
2451     CXXFLAGS="$CXXFLAGS -Zomf"
2452     DSO_LDOPTS='-Zdll'
2453     BIN_FLAGS='-Zlinker /ST:0x100000'
2454     IMPLIB='emximp -o'
2455     FILTER='emxexp -o'
2456     LDFLAGS='-Zmap'
2457     WARNINGS_AS_ERRORS='-Werror'
2458     MOZ_DEBUG_FLAGS="-g -fno-inline"
2459     MOZ_OPTIMIZE_FLAGS="-O2"
2460     MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2461     MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcomct.lib'
2462     DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
2463     LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2464     TARGET_MD_ARCH=os2
2465     _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2466     MOZ_ENABLE_POSTSCRIPT=
2467     RC=rc.exe
2468     RCFLAGS='-n'
2469     MOZ_USER_DIR="Mozilla"
2471     if test "$MOZTOOLS"; then
2472         MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2473     else
2474         AC_MSG_ERROR([MOZTOOLS is not set])
2475     fi
2476     if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2477         DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2478         LDFLAGS="$LDFLAGS -Zhigh-mem"
2479         MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2480         AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2481     fi
2483     # GCC for OS/2 currently predefines these, but we don't want them
2484     _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2485     _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2487     AC_CACHE_CHECK(for __declspec(dllexport),
2488         ac_os2_declspec,
2489         [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2490                         [return 0;],
2491                         ac_os2_declspec="yes",
2492                         ac_os2_declspec="no")])
2493     if test "$ac_os2_declspec" = "yes"; then
2494         FILTER='true'
2495         MOZ_OS2_USE_DECLSPEC='1'
2496     fi
2497     ;;
2499 alpha*-*-osf*)
2500     if test "$GNU_CC"; then
2501       MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2502       MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2504     else
2505         MOZ_DEBUG_FLAGS='-g'
2506         ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
2507         CFLAGS="$CFLAGS -ieee"
2508         CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee  -ptr $(DIST)/cxx_repository'
2509         DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
2510         DSO_CFLAGS=
2511         DSO_PIC_CFLAGS=
2512         MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2513         MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2514         MKSHLIB_FORCE_ALL='-all'
2515         MKSHLIB_UNFORCE_ALL='-none'
2516         dnl Might fix the libxpcom.so breakage on this platform as well....
2517         AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2518         AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2519     fi
2520     if test -z "$GNU_CXX"; then
2521       COMPAQ_CXX=1
2522     fi
2523     AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2524     ;;
2526 *-qnx*) 
2527     DIRENT_INO=d_stat.st_ino
2528     dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
2529     AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2530     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2531     dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
2532     AC_DEFINE(STDC_HEADERS)
2533     if test "$no_x" = "yes"; then
2534             _PLATFORM_DEFAULT_TOOLKIT='photon'
2535             TK_CFLAGS='-I/usr/nto/include/photon'
2536             TK_LIBS='-lphoton -lphrender'
2537     fi
2538     ;;
2540 *-sco*) 
2541     AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2542     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2543     CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
2544     if test ! "$GNU_CC"; then
2545        DSO_LDOPTS='-G'
2546     fi
2547     ;;
2549 dnl the qsort routine under solaris is faulty
2550 *-solaris*) 
2551     AC_DEFINE(SOLARIS)
2552     TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2553     SYSTEM_MAKEDEPEND=
2554     # $ORIGIN/.. is for shared libraries under components/ to locate shared
2555     # libraries one level up (e.g. libnspr4.so)
2556     LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..'"
2557     MOZ_MEMORY=1
2558     if test "$SOLARIS_SUNPRO_CC"; then
2559        LIBS="-lCrun -lCstd $LIBS"
2560        NS_USE_NATIVE=1
2561        MOZ_FIX_LINK_PATHS=
2562        AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2563        CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all"
2564        CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife -norunpath"
2565        LDFLAGS="-xildoff -z lazyload -z combreloc $LDFLAGS"
2566        if test -z "$CROSS_COMPILE" && test -f /usr/lib/ld/map.noexstk; then
2567            _SAVE_LDFLAGS=$LDFLAGS
2568            LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS" 
2569            AC_TRY_LINK([#include <stdio.h>],
2570                        [printf("Hello World\n");],
2571                        ,
2572                        [LDFLAGS=$_SAVE_LDFLAGS])
2573        fi
2574        WARNINGS_AS_ERRORS='-Werror'
2575        MOZ_OPTIMIZE_FLAGS="-xO4"
2576        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2577        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) -G -z muldefs -h $@ -o $@'
2578        MKSHLIB_FORCE_ALL='-z allextract'
2579        MKSHLIB_UNFORCE_ALL='-z defaultextract'
2580        DSO_LDOPTS='-G -z muldefs'
2581        AR_LIST="$AR t"
2582        AR_EXTRACT="$AR x"
2583        AR_DELETE="$AR d"
2584        AR='$(CXX) -xar'
2585        AR_FLAGS='-o $@'
2586        AS='/usr/ccs/bin/as'
2587        ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2588        AS_DASH_C_FLAG=''
2589        TARGET_COMPILER_ABI="sunc"
2590        CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2591        CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2592        AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
2593        AC_LANG_SAVE
2594        AC_LANG_CPLUSPLUS
2595        AC_TRY_COMPILE([],
2596            [#if (__SUNPRO_CC < 0x590)
2597            #error "Denied"
2598            #endif],
2599            _BAD_COMPILER=,_BAD_COMPILER=1)
2600         if test -n "$_BAD_COMPILER"; then
2601             _res="no"
2602             AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
2603         else
2604             _res="yes"
2605         fi
2606         AC_MSG_RESULT([$_res])
2607         AC_LANG_RESTORE
2608     else
2609        ASFLAGS="$ASFLAGS -fPIC"
2610        DSO_LDOPTS='-G'
2611        _WARNINGS_CFLAGS=''
2612        _WARNINGS_CXXFLAGS=''
2613        if test "$OS_RELEASE" = "5.3"; then
2614           AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2615        fi
2616     fi
2617     if test "$OS_RELEASE" = "5.5.1"; then
2618        AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2619     fi
2620     ;;
2622 *-sunos*) 
2623     DSO_LDOPTS='-Bdynamic'
2624     MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2625     MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2626     AC_DEFINE(SUNOS4)
2627     AC_DEFINE(SPRINTF_RETURNS_STRING)
2628     case "$(target_os)" in
2629     sunos4.1*)
2630         DLL_SUFFIX='.so.1.0'
2631         ;;
2632     esac
2633     ;;
2635 *-sysv4.2uw7*) 
2636         NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2637     ;;
2639 *-os2*)
2640     HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2641     ;;
2643 esac
2645 dnl Only one oddball right now (QNX), but this gives us flexibility
2646 dnl if any other platforms need to override this in the future.
2647 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2649 dnl ========================================================
2650 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2651 dnl by now will not have any way to link most binaries (tests
2652 dnl as well as viewer, apprunner, etc.), because some symbols
2653 dnl will be left out of the "composite" .so's by ld as unneeded.
2654 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2655 dnl they can link in the static libs that provide the missing
2656 dnl symbols.
2657 dnl ========================================================
2658 NO_LD_ARCHIVE_FLAGS=
2659 if test -z "$MKSHLIB_FORCE_ALL" || test -z "$MKSHLIB_UNFORCE_ALL"; then
2660     NO_LD_ARCHIVE_FLAGS=1
2662 case "$target" in
2663 *-os2*)
2664     NO_LD_ARCHIVE_FLAGS=
2665     ;;
2666 *-aix4.3*|*-aix5*)
2667     NO_LD_ARCHIVE_FLAGS=
2668     ;;
2669 *-openvms*)
2670     NO_LD_ARCHIVE_FLAGS=
2671     ;;
2672 *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince)
2673     if test -z "$GNU_CC"; then
2674         NO_LD_ARCHIVE_FLAGS=
2675     fi
2676     ;;
2677 esac
2678 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2681 dnl Indicate that platform requires special thread safe 
2682 dnl locking when starting up the OJI JVM 
2683 dnl (see mozilla/modules/oji/src/nsJVMManager.cpp)
2684 dnl ========================================================
2685 case "$target" in
2686     *-hpux*)      
2687         AC_DEFINE(MOZ_OJI_REQUIRE_THREAD_SAFE_ON_STARTUP)
2688         ;;
2689 esac
2691 dnl ========================================================
2692 dnl = Flags to strip unused symbols from .so components
2693 dnl ========================================================
2694 case "$target" in
2695     *-linux*|*-kfreebsd*-gnu)
2696         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2697         ;;
2698     *-solaris*)
2699         if test -z "$GNU_CC"; then
2700          MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2701         else
2702          if test -z "$GCC_USE_GNU_LD"; then
2703           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2704          else
2705           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2706          fi
2707         fi
2708         ;;
2709     *-nto*) 
2710         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2711         ;;
2712     *-darwin*)
2713         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2714         ;;
2715     *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince)
2716         if test -n "$GNU_CC"; then
2717            MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2718         fi
2719         ;;
2720 esac
2722 if test -z "$COMPILE_ENVIRONMENT"; then
2723     SKIP_COMPILER_CHECKS=1
2724     SKIP_LIBRARY_CHECKS=1
2727 if test -z "$SKIP_COMPILER_CHECKS"; then
2728 dnl Checks for typedefs, structures, and compiler characteristics.
2729 dnl ========================================================
2730 AC_LANG_C
2731 AC_HEADER_STDC
2732 AC_C_CONST
2733 AC_TYPE_MODE_T
2734 AC_TYPE_OFF_T
2735 AC_TYPE_PID_T
2736 AC_TYPE_SIZE_T
2737 AC_STRUCT_ST_BLKSIZE
2738 AC_MSG_CHECKING(for siginfo_t)
2739 AC_CACHE_VAL(ac_cv_siginfo_t,
2740  [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2741                   #include <signal.h>],
2742                  [siginfo_t* info;],
2743                  [ac_cv_siginfo_t=true],
2744                  [ac_cv_siginfo_t=false])])
2745 if test "$ac_cv_siginfo_t" = true ; then
2746   AC_DEFINE(HAVE_SIGINFO_T)
2747   AC_MSG_RESULT(yes)
2748 else
2749   AC_MSG_RESULT(no)
2752 dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
2753 dnl ========================================================
2754 AC_MSG_CHECKING(for int16_t)
2755 AC_CACHE_VAL(ac_cv_int16_t,
2756  [AC_TRY_COMPILE([#include <stdio.h>
2757                   #include <sys/types.h>],
2758                  [int16_t foo = 0;],
2759                  [ac_cv_int16_t=true],
2760                  [ac_cv_int16_t=false])])
2761 if test "$ac_cv_int16_t" = true ; then
2762   AC_DEFINE(HAVE_INT16_T)
2763   AC_MSG_RESULT(yes)
2764 else
2765   AC_MSG_RESULT(no)
2767 AC_MSG_CHECKING(for int32_t)
2768 AC_CACHE_VAL(ac_cv_int32_t,
2769  [AC_TRY_COMPILE([#include <stdio.h>
2770                   #include <sys/types.h>],
2771                  [int32_t foo = 0;],
2772                  [ac_cv_int32_t=true],
2773                  [ac_cv_int32_t=false])])
2774 if test "$ac_cv_int32_t" = true ; then
2775   AC_DEFINE(HAVE_INT32_T)
2776   AC_MSG_RESULT(yes)
2777 else
2778   AC_MSG_RESULT(no)
2780 AC_MSG_CHECKING(for int64_t)
2781 AC_CACHE_VAL(ac_cv_int64_t,
2782  [AC_TRY_COMPILE([#include <stdio.h>
2783                   #include <sys/types.h>],
2784                  [int64_t foo = 0;],
2785                  [ac_cv_int64_t=true],
2786                  [ac_cv_int64_t=false])])
2787 if test "$ac_cv_int64_t" = true ; then
2788   AC_DEFINE(HAVE_INT64_T)
2789   AC_MSG_RESULT(yes)
2790 else
2791   AC_MSG_RESULT(no)
2793 AC_MSG_CHECKING(for int64)
2794 AC_CACHE_VAL(ac_cv_int64,
2795  [AC_TRY_COMPILE([#include <stdio.h>
2796                   #include <sys/types.h>],
2797                  [int64 foo = 0;],
2798                  [ac_cv_int64=true],
2799                  [ac_cv_int64=false])])
2800 if test "$ac_cv_int64" = true ; then
2801   AC_DEFINE(HAVE_INT64)
2802   AC_MSG_RESULT(yes)
2803 else
2804   AC_MSG_RESULT(no)
2806 AC_MSG_CHECKING(for uint)
2807 AC_CACHE_VAL(ac_cv_uint,
2808  [AC_TRY_COMPILE([#include <stdio.h>
2809                   #include <sys/types.h>],
2810                  [uint foo = 0;],
2811                  [ac_cv_uint=true],
2812                  [ac_cv_uint=false])])
2813 if test "$ac_cv_uint" = true ; then
2814   AC_DEFINE(HAVE_UINT)
2815   AC_MSG_RESULT(yes)
2816 else
2817   AC_MSG_RESULT(no)
2819 AC_MSG_CHECKING(for uint_t)
2820 AC_CACHE_VAL(ac_cv_uint_t,
2821  [AC_TRY_COMPILE([#include <stdio.h>
2822                   #include <sys/types.h>],
2823                  [uint_t foo = 0;],
2824                  [ac_cv_uint_t=true],
2825                  [ac_cv_uint_t=false])])
2826 if test "$ac_cv_uint_t" = true ; then
2827   AC_DEFINE(HAVE_UINT_T)
2828   AC_MSG_RESULT(yes)
2829 else
2830   AC_MSG_RESULT(no)
2832 AC_MSG_CHECKING(for uint16_t)
2833 AC_CACHE_VAL(ac_cv_uint16_t,
2834  [AC_TRY_COMPILE([#include <stdio.h>
2835                   #include <sys/types.h>],
2836                  [uint16_t foo = 0;],
2837                  [ac_cv_uint16_t=true],
2838                  [ac_cv_uint16_t=false])])
2839 if test "$ac_cv_uint16_t" = true ; then
2840   AC_DEFINE(HAVE_UINT16_T)
2841   AC_MSG_RESULT(yes)
2842 else
2843   AC_MSG_RESULT(no)
2846 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
2847 dnl are defined when compiling C++ but not C.  Since the result of this
2848 dnl test is used only in C++, do it in C++.
2849 AC_LANG_CPLUSPLUS
2851 AC_MSG_CHECKING(for uname.domainname)
2852 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
2853     [AC_TRY_COMPILE([#include <sys/utsname.h>],
2854         [ struct utsname *res; char *domain; 
2855             (void)uname(res);  if (res != 0) { domain = res->domainname; } ],
2856         [ac_cv_have_uname_domainname_field=true],
2857         [ac_cv_have_uname_domainname_field=false])])
2859 if test "$ac_cv_have_uname_domainname_field" = "true"; then
2860     AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
2861     AC_MSG_RESULT(yes)
2862 else
2863     AC_MSG_RESULT(no)
2866 AC_MSG_CHECKING(for uname.__domainname)
2867 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
2868     [AC_TRY_COMPILE([#include <sys/utsname.h>],
2869         [ struct utsname *res; char *domain; 
2870             (void)uname(res);  if (res != 0) { domain = res->__domainname; } ],
2871         [ac_cv_have_uname_us_domainname_field=true],
2872         [ac_cv_have_uname_us_domainname_field=false])])
2874 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
2875     AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
2876     AC_MSG_RESULT(yes)
2877 else
2878     AC_MSG_RESULT(no)
2881 AC_LANG_C
2883 dnl Check for usable wchar_t (2 bytes, unsigned)
2884 dnl (we really don't need the unsignedness check anymore)
2885 dnl ========================================================
2887 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
2888     ac_cv_have_usable_wchar_v2,
2889     [AC_TRY_COMPILE([#include <stddef.h>
2890                      $configure_static_assert_macros],
2891                     [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2892                      CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2893                     ac_cv_have_usable_wchar_v2="yes",
2894                     ac_cv_have_usable_wchar_v2="no")])
2895 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
2896     AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2897     HAVE_CPP_2BYTE_WCHAR_T=1
2898 else
2899 dnl This is really gcc-only
2900 dnl Do this test using CXX only since some versions of gcc
2901 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
2902 dnl only have short-wchar support for c++.
2903 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
2905     AC_LANG_SAVE
2906     AC_LANG_CPLUSPLUS
2907     _SAVE_CXXFLAGS=$CXXFLAGS
2908     CXXFLAGS="$CXXFLAGS -fshort-wchar"
2910     AC_CACHE_CHECK(for compiler -fshort-wchar option, 
2911         ac_cv_have_usable_wchar_option_v2,
2912         [AC_TRY_LINK([#include <stddef.h>
2913                       $configure_static_assert_macros],
2914                      [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2915                       CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2916                      ac_cv_have_usable_wchar_option_v2="yes",
2917                      ac_cv_have_usable_wchar_option_v2="no")])
2919     if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
2920         AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2921         HAVE_CPP_2BYTE_WCHAR_T=1
2922         WCHAR_CFLAGS="-fshort-wchar"
2923     else    
2924         CXXFLAGS=$_SAVE_CXXFLAGS
2925     fi
2926     AC_LANG_RESTORE
2929 dnl Check for .hidden assembler directive and visibility attribute.
2930 dnl Borrowed from glibc configure.in
2931 dnl ===============================================================
2932 if test "$GNU_CC"; then
2933   AC_CACHE_CHECK(for visibility(hidden) attribute,
2934                  ac_cv_visibility_hidden,
2935                  [cat > conftest.c <<EOF
2936                   int foo __attribute__ ((visibility ("hidden"))) = 1;
2938                   ac_cv_visibility_hidden=no
2939                   if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2940                     if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2941                       ac_cv_visibility_hidden=yes
2942                     fi
2943                   fi
2944                   rm -f conftest.[cs]
2945                  ])
2946   if test "$ac_cv_visibility_hidden" = "yes"; then
2947     AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2949     AC_CACHE_CHECK(for visibility(default) attribute,
2950                    ac_cv_visibility_default,
2951                    [cat > conftest.c <<EOF
2952                     int foo __attribute__ ((visibility ("default"))) = 1;
2954                     ac_cv_visibility_default=no
2955                     if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2956                       if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2957                         ac_cv_visibility_default=yes
2958                       fi
2959                     fi
2960                     rm -f conftest.[cs]
2961                    ])
2962     if test "$ac_cv_visibility_default" = "yes"; then
2963       AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2965       AC_CACHE_CHECK(for visibility pragma support,
2966                      ac_cv_visibility_pragma,
2967                      [cat > conftest.c <<EOF
2968 #pragma GCC visibility push(hidden)
2969                       int foo_hidden = 1;
2970 #pragma GCC visibility push(default)
2971                       int foo_default = 1;
2973                       ac_cv_visibility_pragma=no
2974                       if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2975                         if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
2976                           if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
2977                             ac_cv_visibility_pragma=yes
2978                           fi
2979                         fi
2980                       fi
2981                       rm -f conftest.[cs]
2982                     ])
2983       if test "$ac_cv_visibility_pragma" = "yes"; then
2984         AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
2985                        ac_cv_have_visibility_class_bug,
2986                        [cat > conftest.c <<EOF
2987 #pragma GCC visibility push(hidden)
2988 struct __attribute__ ((visibility ("default"))) TestStruct {
2989   static void Init();
2991 __attribute__ ((visibility ("default"))) void TestFunc() {
2992   TestStruct::Init();
2995                        ac_cv_have_visibility_class_bug=no
2996                        if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2997                          ac_cv_have_visibility_class_bug=yes
2998                        else
2999                          if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
3000                            ac_cv_have_visibility_class_bug=yes
3001                          fi
3002                        fi
3003                        rm -rf conftest.{c,S}
3004                        ])
3006         AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
3007                        ac_cv_have_visibility_builtin_bug,
3008                        [cat > conftest.c <<EOF
3009 #pragma GCC visibility push(hidden)
3010 #pragma GCC visibility push(default)
3011 #include <string.h>
3012 #pragma GCC visibility pop
3014 __attribute__ ((visibility ("default"))) void Func() {
3015   char c[[100]];
3016   memset(c, 0, sizeof(c));
3019                        ac_cv_have_visibility_builtin_bug=no
3020                        if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
3021                          ac_cv_have_visibility_builtin_bug=yes
3022                        else
3023                          if test `grep -c "@PLT" conftest.S` = 0; then
3024                            ac_cv_visibility_builtin_bug=yes
3025                          fi
3026                        fi
3027                        rm -f conftest.{c,S}
3028                        ])
3029         if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
3030                 "$ac_cv_have_visibility_class_bug" = "no"; then
3031           VISIBILITY_FLAGS='-I$(DIST)/include/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
3032           WRAP_SYSTEM_INCLUDES=1
3033         else
3034           VISIBILITY_FLAGS='-fvisibility=hidden'
3035         fi # have visibility pragma bug
3036       fi   # have visibility pragma
3037     fi     # have visibility(default) attribute
3038   fi       # have visibility(hidden) attribute
3039 fi         # GNU_CC
3041 # visibility hidden flag for Sun Studio on Solaris
3042 if test "$SOLARIS_SUNPRO_CC"; then
3043 VISIBILITY_FLAGS='-xldscope=hidden'
3044 fi         # Sun Studio on Solaris
3046 AC_SUBST(WRAP_SYSTEM_INCLUDES)
3047 AC_SUBST(VISIBILITY_FLAGS)
3049 dnl Checks for header files.
3050 dnl ========================================================
3051 AC_HEADER_DIRENT
3052 case "$target_os" in
3053 freebsd*)
3054 # for stuff like -lXshm
3055     CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
3056     ;;
3057 esac
3058 AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
3059 AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
3060 AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
3061 AC_CHECK_HEADERS(malloc.h)
3062 AC_CHECK_HEADERS(X11/XKBlib.h)
3063 AC_CHECK_HEADERS(io.h)
3065 dnl These are all the places some variant of statfs can be hiding.
3066 AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
3068 dnl Try for MMX support
3069 dnl NB - later gcc versions require -mmmx for this header to be successfully
3070 dnl included (or another option which implies it, such as -march=pentium-mmx)
3071 AC_CHECK_HEADERS(mmintrin.h)
3073 dnl Check whether the compiler supports the new-style C++ standard
3074 dnl library headers (i.e. <new>) or needs the old "new.h"
3075 AC_LANG_CPLUSPLUS
3076 NEW_H=new.h
3077 AC_CHECK_HEADER(new, [NEW_H=new])
3078 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
3079 AC_LANG_C
3081 AC_ARG_ENABLE(dtrace,
3082               [  --enable-dtrace         build with dtrace support if available (default=no)],
3083               [enable_dtrace="yes"],)
3084 if test "x$enable_dtrace" = "xyes"; then
3085   AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
3086   if test -n "$HAVE_DTRACE"; then
3087       AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
3088   else
3089       AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
3090   fi
3092 AC_SUBST(HAVE_DTRACE)
3094 case $target in
3095 *-aix4.3*|*-aix5*)
3096         ;;
3098         AC_CHECK_HEADERS(sys/cdefs.h)
3099         ;;
3100 esac
3102 dnl Checks for libraries.
3103 dnl ========================================================
3104 case $target in
3105 *-hpux11.*)
3106         ;;
3108         AC_CHECK_LIB(c_r, gethostbyname_r)
3109         ;;
3110 esac
3112 dnl We don't want to link with libdl even if it's present on OS X, since
3113 dnl it's not used and not part of the default installation.
3114 dnl The same goes for BeOS.
3115 dnl We don't want to link against libm or libpthread on Darwin since
3116 dnl they both are just symlinks to libSystem and explicitly linking
3117 dnl against libSystem causes issues when debugging (see bug 299601).
3118 case $target in
3119 *-darwin*)
3120     ;;
3121 *-beos*)
3122     ;;
3124     AC_CHECK_LIB(m, atan)
3125     AC_CHECK_LIB(dl, dlopen,
3126     AC_CHECK_HEADER(dlfcn.h, 
3127         LIBS="-ldl $LIBS"
3128         AC_DEFINE(HAVE_LIBDL)))
3129     ;;
3130 esac
3132 _SAVE_CFLAGS="$CFLAGS"
3133 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3134 AC_CHECK_FUNCS(dladdr)
3135 CFLAGS="$_SAVE_CFLAGS"
3137 if test ! "$GNU_CXX"; then
3139     case $target in
3140     *-aix*)
3141         AC_CHECK_LIB(C_r, demangle)
3142         ;;
3143      *)
3144         AC_CHECK_LIB(C, demangle)
3145         ;;
3146      esac
3148 AC_CHECK_LIB(socket, socket)
3150 XLDFLAGS="$X_LIBS"
3151 XLIBS="$X_EXTRA_LIBS"
3153 dnl ========================================================
3154 dnl Checks for X libraries.
3155 dnl Ordering is important.
3156 dnl Xt is dependent upon SM as of X11R6
3157 dnl ========================================================
3158 if test "$no_x" = "yes"; then
3159     AC_DEFINE(NO_X11)
3160 else
3161     AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3162         XLIBS="-lX11 $XLIBS"
3163         _SAVE_LDFLAGS="$LDFLAGS"
3164         LDFLAGS="$XLDFLAGS $LDFLAGS"
3165         AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3166                 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3167         AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3168                 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3169     echo "green"
3170      
3171         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3172         unset ac_cv_lib_Xt_XtFree
3173             AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3174             AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS) 
3175         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3176                     [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3177         ])
3179     # AIX needs the motif library linked before libXt to prevent
3180     # crashes in plugins linked against Motif - Bug #98892
3181     case "${target_os}" in
3182     aix*)
3183         XT_LIBS="-lXm $XT_LIBS"
3184         ;;
3185     esac
3187     dnl ========================================================
3188     dnl = Check for XShm
3189     dnl ========================================================
3190     AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3191         $XLIBS $XEXT_LIBS)
3192     AC_CHECK_HEADER(X11/extensions/XShm.h)
3193     if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" &&
3194         test -n "$_HAVE_XSHM_XEXT"; then
3195         AC_DEFINE(HAVE_XSHM)
3196     fi
3198     dnl ========================================================
3199     dnl = Check for XIE
3200     dnl ========================================================
3201     AC_CHECK_LIB(XIE, XieFloGeometry, [MOZ_XIE_LIBS="-lXIE"],,
3202         $XLIBS $XEXT_LIBS)
3203     AC_CHECK_HEADER(X11/extensions/XIElib.h)
3205     if test "$MOZ_XIE_LIBS"; then
3206         dnl ====================================================
3207         dnl = If XIE is present and is desired, turn it on
3208         dnl ====================================================
3209         case $target in
3210             *-hpux*)
3211                 ;;
3212             *)
3213                 HAVE_XIE=1
3214                 ;;
3215         esac
3216     fi
3218         LDFLAGS="$_SAVE_LDFLAGS"
3220     dnl ========================================================
3221     dnl = Check for freetype2 and its functionality
3222     dnl ========================================================
3223     AC_CHECK_FT2(6.1.0, [_HAVE_FREETYPE2=1], [_HAVE_FREETYPE2=])
3225     if test "$_HAVE_FREETYPE2"; then
3226         _SAVE_LIBS="$LIBS"
3227         _SAVE_CFLAGS="$CFLAGS"
3228         LIBS="$LIBS $FT2_LIBS"
3229         CFLAGS="$CFLAGS $FT2_CFLAGS"
3231         AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
3232             ac_cv_member_FT_Bitmap_Size_y_ppem,
3233             [AC_TRY_COMPILE([#include <ft2build.h>
3234                              #include FT_FREETYPE_H],
3235                             [FT_Bitmap_Size s;
3236                              if (sizeof s.y_ppem) return 0;
3237                              return 1],
3238                             ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
3239                             ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
3240         if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
3241             HAVE_FT_BITMAP_SIZE_Y_PPEM=1
3242         else
3243             HAVE_FT_BITMAP_SIZE_Y_PPEM=0
3244         fi
3245         AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
3246                            $HAVE_FT_BITMAP_SIZE_Y_PPEM,
3247                            [FT_Bitmap_Size structure includes y_ppem field])
3249         AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
3251         LIBS="$_SAVE_LIBS"
3252         CFLAGS="$_SAVE_CFLAGS"
3253     fi
3255 fi # $no_x
3257 AC_SUBST(XCFLAGS)
3258 AC_SUBST(XLDFLAGS)
3259 AC_SUBST(XLIBS)
3260 AC_SUBST(XEXT_LIBS)
3261 AC_SUBST(XT_LIBS)
3263 AC_MSG_CHECKING(for ARM SIMD support)
3264 AC_TRY_COMPILE([],
3265                [asm("uqadd8 r1, r1, r2");],
3266                result="yes", result="no")
3267 AC_MSG_RESULT("$result")
3268 if test "$result" = "yes"; then
3269     AC_DEFINE(HAVE_ARM_SIMD)
3270     HAVE_ARM_SIMD=1
3272 AC_SUBST(HAVE_ARM_SIMD)
3274 dnl ========================================================
3275 dnl = pthread support
3276 dnl = Start by checking whether the system support pthreads
3277 dnl ========================================================
3278 case "$target_os" in
3279 darwin*)
3280     USE_PTHREADS=1
3281     ;;
3283     MOZ_CHECK_PTHREADS(pthreads,
3284         USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3285         MOZ_CHECK_PTHREADS(pthread,
3286             USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3287             MOZ_CHECK_PTHREADS(c_r,
3288                 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3289                 MOZ_CHECK_PTHREADS(c,
3290                     USE_PTHREADS=1
3291                 )
3292             )
3293         )
3294     )
3295     ;;
3296 esac
3298 dnl ========================================================
3299 dnl Check the command line for --with-pthreads 
3300 dnl ========================================================
3301 MOZ_ARG_WITH_BOOL(pthreads,
3302 [  --with-pthreads         Force use of system pthread library with NSPR ],
3303 [ if test "$USE_PTHREADS"x = x; then
3304     AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3305 fi],
3306     USE_PTHREADS=
3307     _PTHREAD_LDFLAGS=
3310 dnl ========================================================
3311 dnl Do the platform specific pthread hackery
3312 dnl ========================================================
3313 if test "$USE_PTHREADS"x != x
3314 then
3315         dnl
3316         dnl See if -pthread is supported.
3317         dnl
3318         rm -f conftest*
3319         ac_cv_have_dash_pthread=no
3320         AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3321         echo 'int main() { return 0; }' | cat > conftest.c
3322         ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3323         if test $? -eq 0; then
3324                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3325                         ac_cv_have_dash_pthread=yes
3326                 case "$target_os" in
3327                 freebsd*)
3328 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3329                 ;;
3330                 *)
3331                             CFLAGS="$CFLAGS -pthread"
3332                             CXXFLAGS="$CXXFLAGS -pthread"
3333                 ;;
3334                 esac
3335                 fi
3336         fi
3337         rm -f conftest*
3338     AC_MSG_RESULT($ac_cv_have_dash_pthread)
3340         dnl
3341         dnl See if -pthreads is supported.
3342         dnl
3343     ac_cv_have_dash_pthreads=no
3344     if test "$ac_cv_have_dash_pthread" = "no"; then
3345             AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3346         echo 'int main() { return 0; }' | cat > conftest.c
3347             ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3348         if test $? -eq 0; then
3349                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3350                             ac_cv_have_dash_pthreads=yes
3351                             CFLAGS="$CFLAGS -pthreads"
3352                             CXXFLAGS="$CXXFLAGS -pthreads"
3353                     fi
3354             fi
3355             rm -f conftest*
3356         AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3357     fi
3359         case "$target" in
3360             *-*-freebsd*)
3361                         AC_DEFINE(_REENTRANT)
3362                         AC_DEFINE(_THREAD_SAFE)
3363                         dnl -pthread links in -lc_r, so don't specify it explicitly.
3364                         if test "$ac_cv_have_dash_pthread" = "yes"; then
3365                                 _PTHREAD_LDFLAGS="-pthread"
3366                         else
3367                                 _PTHREAD_LDFLAGS="-lc_r"
3368                         fi
3369                         ;;
3371             *-*-openbsd*|*-*-bsdi*)
3372                         AC_DEFINE(_REENTRANT)
3373                         AC_DEFINE(_THREAD_SAFE)
3374                         dnl -pthread links in -lc_r, so don't specify it explicitly.
3375                         if test "$ac_cv_have_dash_pthread" = "yes"; then
3376                 _PTHREAD_LDFLAGS="-pthread"
3377                         fi
3378                         ;;
3380             *-*-linux*|*-*-kfreebsd*-gnu)
3381                         AC_DEFINE(_REENTRANT) 
3382                         ;;
3384             *-*-nto*) 
3385                         AC_DEFINE(_REENTRANT) 
3386                         ;;
3388             *-aix4.3*|*-aix5*)
3389                         AC_DEFINE(_REENTRANT) 
3390                         ;;
3392             *-hpux11.*)
3393                         AC_DEFINE(_REENTRANT) 
3394                         ;;
3396             alpha*-*-osf*)
3397                         AC_DEFINE(_REENTRANT)
3398                         ;;
3400             *-*-solaris*) 
3401                         AC_DEFINE(_REENTRANT)
3402                         if test "$SOLARIS_SUNPRO_CC"; then
3403                                 CFLAGS="$CFLAGS -mt" 
3404                                 CXXFLAGS="$CXXFLAGS -mt" 
3405                         fi
3406                         ;;
3407         esac
3408     LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3411 dnl ========================================================
3412 dnl See if mmap sees writes
3413 dnl For cross compiling, just define it as no, which is a safe default
3414 dnl ========================================================
3415 AC_MSG_CHECKING(whether mmap() sees write()s)
3417 changequote(,)
3418 mmap_test_prog='
3419     #include <stdlib.h>
3420     #include <unistd.h>
3421     #include <sys/mman.h>
3422     #include <sys/types.h>
3423     #include <sys/stat.h>
3424     #include <fcntl.h>
3426     char fname[] = "conftest.file";
3427     char zbuff[1024]; /* Fractional page is probably worst case */
3429     int main() {
3430         char *map;
3431         int fd;
3432         int i;
3433         unlink(fname);
3434         fd = open(fname, O_RDWR | O_CREAT, 0660);
3435         if(fd<0) return 1;
3436         unlink(fname);
3437         write(fd, zbuff, sizeof(zbuff));
3438         lseek(fd, 0, SEEK_SET);
3439         map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
3440         if(map==(char*)-1) return 2;
3441         for(i=0; fname[i]; i++) {
3442             int rc = write(fd, &fname[i], 1);
3443             if(map[i]!=fname[i]) return 4;
3444         }
3445         return 0;
3446     }
3448 changequote([,])
3450 AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
3452 AC_MSG_RESULT("$result")
3454 if test "$result" = "no"; then
3455     AC_DEFINE(MMAP_MISSES_WRITES)
3459 dnl Checks for library functions.
3460 dnl ========================================================
3461 AC_PROG_GCC_TRADITIONAL
3462 AC_FUNC_MEMCMP
3463 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 truncate64 statvfs64 setbuf isatty)
3464 AC_CHECK_FUNCS(flockfile getpagesize)
3465 AC_CHECK_FUNCS(localtime_r strtok_r)
3467 dnl check for wcrtomb/mbrtowc
3468 dnl =======================================================================
3469 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3470 AC_LANG_SAVE
3471 AC_LANG_CPLUSPLUS
3472 AC_CACHE_CHECK(for wcrtomb,
3473     ac_cv_have_wcrtomb,
3474     [AC_TRY_LINK([#include <wchar.h>],
3475                  [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3476                  ac_cv_have_wcrtomb="yes",
3477                  ac_cv_have_wcrtomb="no")])
3478 if test "$ac_cv_have_wcrtomb" = "yes"; then
3479     AC_DEFINE(HAVE_WCRTOMB)
3481 AC_CACHE_CHECK(for mbrtowc,
3482     ac_cv_have_mbrtowc,
3483     [AC_TRY_LINK([#include <wchar.h>],
3484                  [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3485                  ac_cv_have_mbrtowc="yes",
3486                  ac_cv_have_mbrtowc="no")])
3487 if test "$ac_cv_have_mbrtowc" = "yes"; then
3488     AC_DEFINE(HAVE_MBRTOWC)
3490 AC_LANG_RESTORE
3493 AC_CACHE_CHECK(
3494     [for res_ninit()],
3495     ac_cv_func_res_ninit,
3496     [AC_TRY_LINK([
3497         #ifdef linux
3498         #define _BSD_SOURCE 1
3499         #endif
3500         #include <resolv.h>
3501         ],
3502         [int foo = res_ninit(&_res);],
3503         [ac_cv_func_res_ninit=yes],
3504         [ac_cv_func_res_ninit=no])
3505     ])
3507 if test "$ac_cv_func_res_ninit" = "yes"; then
3508     AC_DEFINE(HAVE_RES_NINIT)
3509 dnl must add the link line we do something as foolish as this... dougt
3510 dnl else
3511 dnl    AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3512 dnl        AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3515 AC_LANG_CPLUSPLUS
3516 AC_CACHE_CHECK(
3517     [for gnu_get_libc_version()],
3518     ac_cv_func_gnu_get_libc_version,
3519     [AC_TRY_LINK([
3520         #ifdef HAVE_GNU_LIBC_VERSION_H
3521         #include <gnu/libc-version.h>
3522         #endif
3523         ],
3524         [const char *glibc_version = gnu_get_libc_version();],
3525         [ac_cv_func_gnu_get_libc_version=yes],
3526         [ac_cv_func_gnu_get_libc_version=no] 
3527         )]
3528     )
3530 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3531     AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3534 case $target_os in
3535     os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|beos*)
3536         ;;
3537     *)
3538     
3539 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3540     AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3541         AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3542 _SAVE_LIBS=$LIBS
3543 LIBS="$LIBS $_ICONV_LIBS"
3544 AC_CACHE_CHECK(
3545     [for iconv()],
3546     ac_cv_func_iconv,
3547     [AC_TRY_LINK([
3548         #include <stdlib.h>
3549         #include <iconv.h>
3550         ],
3551         [
3552             iconv_t h = iconv_open("", "");
3553             iconv(h, NULL, NULL, NULL, NULL);
3554             iconv_close(h);
3555         ],
3556         [ac_cv_func_iconv=yes],
3557         [ac_cv_func_iconv=no] 
3558         )]
3559     )
3560 if test "$ac_cv_func_iconv" = "yes"; then
3561     AC_DEFINE(HAVE_ICONV)
3562     DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3563     LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3564     LIBICONV="$_ICONV_LIBS"
3565     AC_CACHE_CHECK(
3566         [for iconv() with const input],
3567         ac_cv_func_const_iconv,
3568         [AC_TRY_COMPILE([
3569             #include <stdlib.h>
3570             #include <iconv.h>
3571             ],
3572             [
3573                 const char *input = "testing";
3574                 iconv_t h = iconv_open("", "");
3575                 iconv(h, &input, NULL, NULL, NULL);
3576                 iconv_close(h);
3577             ],
3578             [ac_cv_func_const_iconv=yes],
3579             [ac_cv_func_const_iconv=no] 
3580             )]
3581         )
3582     if test "$ac_cv_func_const_iconv" = "yes"; then
3583         AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3584     fi
3586 LIBS=$_SAVE_LIBS
3588     ;;
3589 esac
3591 AM_LANGINFO_CODESET
3593 AC_LANG_C
3595 dnl **********************
3596 dnl *** va_copy checks ***
3597 dnl **********************
3598 dnl we currently check for all three va_copy possibilities, so we get
3599 dnl all results in config.log for bug reports.
3600 AC_MSG_CHECKING(for an implementation of va_copy())
3601 AC_CACHE_VAL(ac_cv_va_copy,[
3602     AC_TRY_RUN([
3603         #include <stdarg.h>
3604         void f (int i, ...) {
3605             va_list args1, args2;
3606             va_start (args1, i);
3607             va_copy (args2, args1);
3608             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3609                 exit (1);
3610             va_end (args1); va_end (args2);
3611         }
3612         int main() { f (0, 42); return 0; }],
3613         ac_cv_va_copy=yes,
3614         ac_cv_va_copy=no,
3615         ac_cv_va_copy=no
3616     )
3618 AC_MSG_RESULT($ac_cv_va_copy)
3619 AC_MSG_CHECKING(for an implementation of __va_copy())
3620 AC_CACHE_VAL(ac_cv___va_copy,[
3621     AC_TRY_RUN([
3622         #include <stdarg.h>
3623         void f (int i, ...) {
3624             va_list args1, args2;
3625             va_start (args1, i);
3626             __va_copy (args2, args1);
3627             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3628                 exit (1);
3629             va_end (args1); va_end (args2);
3630         }
3631         int main() { f (0, 42); return 0; }],
3632         ac_cv___va_copy=yes,
3633         ac_cv___va_copy=no,
3634         ac_cv___va_copy=no
3635     )
3637 AC_MSG_RESULT($ac_cv___va_copy)
3638 AC_MSG_CHECKING(whether va_lists can be copied by value)
3639 AC_CACHE_VAL(ac_cv_va_val_copy,[
3640     AC_TRY_RUN([
3641         #include <stdarg.h>
3642         void f (int i, ...) {
3643             va_list args1, args2;
3644             va_start (args1, i);
3645             args2 = args1;
3646             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3647                 exit (1);
3648             va_end (args1); va_end (args2);
3649         }
3650         int main() { f (0, 42); return 0; }],
3651         ac_cv_va_val_copy=yes,
3652         ac_cv_va_val_copy=no,
3653         ac_cv_va_val_copy=yes
3654     )
3656 if test "x$ac_cv_va_copy" = "xyes"; then
3657     AC_DEFINE(VA_COPY, va_copy)
3658     AC_DEFINE(HAVE_VA_COPY)
3659 elif test "x$ac_cv___va_copy" = "xyes"; then
3660     AC_DEFINE(VA_COPY, __va_copy)
3661     AC_DEFINE(HAVE_VA_COPY)
3664 if test "x$ac_cv_va_val_copy" = "xno"; then
3665    AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3667 AC_MSG_RESULT($ac_cv_va_val_copy)
3669 dnl Check for dll-challenged libc's.
3670 dnl This check is apparently only needed for Linux.
3671 case "$target" in
3672         *-linux*)
3673             dnl ===================================================================
3674             _curdir=`pwd`
3675             export _curdir
3676             rm -rf conftest* _conftest
3677             mkdir _conftest
3678             cat >> conftest.C <<\EOF
3679 #include <stdio.h>
3680 #include <link.h>
3681 #include <dlfcn.h>
3682 #ifdef _dl_loaded
3683 void __dump_link_map(void) {
3684   struct link_map *map = _dl_loaded;
3685   while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
3687 int main() {
3688   dlopen("./conftest1.so",RTLD_LAZY);
3689   dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
3690   dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
3691   dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
3692   __dump_link_map();
3694 #else
3695 /* _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).*/
3696 int main() { printf("./conftest1.so\n"); }
3697 #endif
3700             $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
3702             cat >> conftest1.C <<\EOF
3703 #include <stdio.h>
3704 void foo(void) {printf("foo in dll called\n");}
3706             ${CXX-g++} -fPIC -c -g conftest1.C
3707             ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
3708             ${CXX-g++} -g conftest.C -o conftest -ldl
3709             cp -f conftest1.so conftest _conftest
3710             cd _conftest
3711             if test `./conftest | grep conftest1.so | wc -l` -gt 1
3712             then
3713                 echo
3714                 echo "*** Your libc has a bug that can result in loading the same dynamic"
3715                 echo "*** library multiple times.  This bug is known to be fixed in glibc-2.0.7-32"
3716                 echo "*** or later.  However, if you choose not to upgrade, the only effect"
3717                 echo "*** will be excessive memory usage at runtime."
3718                 echo
3719             fi
3720             cd ${_curdir}
3721             rm -rf conftest* _conftest
3722             dnl ===================================================================
3723             ;;
3724 esac
3726 dnl ===================================================================
3727 dnl ========================================================
3728 dnl By default, turn rtti and exceptions off on g++/egcs
3729 dnl ========================================================
3730 if test "$GNU_CXX"; then
3732   AC_MSG_CHECKING(for C++ exceptions flag)
3734   dnl They changed -f[no-]handle-exceptions to -f[no-]exceptions in g++ 2.8
3735   AC_CACHE_VAL(ac_cv_cxx_exceptions_flags,
3736   [echo "int main() { return 0; }" | cat > conftest.C
3738   ${CXX-g++} ${CXXFLAGS} -c -fno-handle-exceptions conftest.C > conftest.out 2>&1
3740   if egrep "warning.*renamed" conftest.out >/dev/null; then
3741     ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-exceptions
3742   else
3743     ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-handle-exceptions
3744   fi
3746   rm -f conftest*])
3748   AC_MSG_RESULT($ac_cv_cxx_exceptions_flags)
3749   _MOZ_EXCEPTIONS_FLAGS_OFF=$ac_cv_cxx_exceptions_flags
3750   _MOZ_EXCEPTIONS_FLAGS_ON=`echo $ac_cv_cxx_exceptions_flags | sed 's|no-||'`
3753 dnl ========================================================
3754 dnl Put your C++ language/feature checks below
3755 dnl ========================================================
3756 AC_LANG_CPLUSPLUS
3758 HAVE_GCC3_ABI=
3759 if test "$GNU_CC"; then
3760   AC_CACHE_CHECK(for gcc 3.0 ABI,
3761       ac_cv_gcc_three_abi,
3762       [AC_TRY_COMPILE([],
3763                       [
3764 #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
3765   return 0;
3766 #else
3767 #error Not gcc3.
3768 #endif
3769                       ],
3770                       ac_cv_gcc_three_abi="yes",
3771                       ac_cv_gcc_three_abi="no")])
3772   if test "$ac_cv_gcc_three_abi" = "yes"; then
3773       TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc3}"
3774       HAVE_GCC3_ABI=1
3775   else
3776       TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc2}"
3777   fi
3779 AC_SUBST(HAVE_GCC3_ABI)
3782 AC_CACHE_CHECK(for C++ \"explicit\" keyword,
3783                ac_cv_cpp_explicit,
3784                [AC_TRY_COMPILE(class X {
3785                                public: explicit X(int i) : i_(i) {}
3786                                private: int i_;
3787                                };,
3788                                X x(3);,
3789                                ac_cv_cpp_explicit=yes,
3790                                ac_cv_cpp_explicit=no)])
3791 if test "$ac_cv_cpp_explicit" = yes ; then
3792    AC_DEFINE(HAVE_CPP_EXPLICIT)
3795 AC_CACHE_CHECK(for C++ \"typename\" keyword,
3796                ac_cv_cpp_typename,
3797                [AC_TRY_COMPILE(class param {
3798                                public:
3799                                    typedef unsigned long num_type;
3800                                };
3802                                template <class T> class tplt {
3803                                public:
3804                                    typedef typename T::num_type t_num_type;
3805                                    t_num_type foo(typename T::num_type num) {
3806                                        return num;
3807                                    }
3808                                };,
3809                                tplt<param> A;
3810                                A.foo(0);,
3811                                ac_cv_cpp_typename=yes,
3812                                ac_cv_cpp_typename=no)])
3813 if test "$ac_cv_cpp_typename" = yes ; then
3814    AC_DEFINE(HAVE_CPP_TYPENAME)
3817 dnl Check for support of modern template specialization syntax
3818 dnl Test code and requirement from scc@netscape.com.
3819 dnl Autoconf cut-and-paste job by waterson@netscape.com
3820 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
3821                ac_cv_cpp_modern_specialize_template_syntax,
3822                [AC_TRY_COMPILE(template <class T> struct X { int a; };
3823                                class Y {};
3824                                template <> struct X<Y> { double a; };,
3825                                X<int> int_x;
3826                                X<Y> y_x;,
3827                                ac_cv_cpp_modern_specialize_template_syntax=yes,
3828                                ac_cv_cpp_modern_specialize_template_syntax=no)])
3829 if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
3830   AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
3834 dnl Some compilers support only full specialization, and some don't.
3835 AC_CACHE_CHECK(whether partial template specialization works,
3836                ac_cv_cpp_partial_specialization,
3837                [AC_TRY_COMPILE(template <class T> class Foo {};
3838                                template <class T> class Foo<T*> {};,
3839                                return 0;,
3840                                ac_cv_cpp_partial_specialization=yes,
3841                                ac_cv_cpp_partial_specialization=no)])
3842 if test "$ac_cv_cpp_partial_specialization" = yes ; then
3843   AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
3846 dnl Some compilers have limited support for operators with templates;
3847 dnl specifically, it is necessary to define derived operators when a base
3848 dnl class's operator declaration should suffice.
3849 AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
3850                ac_cv_need_derived_template_operators,
3851                [AC_TRY_COMPILE([template <class T> class Base { };
3852                                 template <class T>
3853                                 Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
3854                                 template <class T> class Derived : public Base<T> { };],
3855                                [Derived<char> a, b;
3856                                 Base<char> c = a + b;
3857                                 return 0;],
3858                                ac_cv_need_derived_template_operators=no,
3859                                ac_cv_need_derived_template_operators=yes)])
3860 if test "$ac_cv_need_derived_template_operators" = yes ; then
3861   AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
3865 dnl Some compilers have trouble detecting that a template class
3866 dnl that derives from another template is actually an instance
3867 dnl of the base class. This test checks for that.
3868 AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
3869                ac_cv_need_cpp_template_cast_to_base,
3870                [AC_TRY_COMPILE([template <class T> class Base { };
3871                                 template <class T> class Derived : public Base<T> { };
3872                                 template <class T> int foo(const Base<T>&) { return 0; }],
3873                                [Derived<char> bar; return foo(bar);],
3874                                ac_cv_need_cpp_template_cast_to_base=no,
3875                                ac_cv_need_cpp_template_cast_to_base=yes)])
3876 if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
3877   AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
3880 dnl Some compilers have trouble resolving the ambiguity between two
3881 dnl functions whose arguments differ only by cv-qualifications.
3882 AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
3883                ac_cv_can_resolve_const_ambiguity,
3884                [AC_TRY_COMPILE([
3885                                 template <class T> class ptrClass {
3886                                   public: T* ptr;
3887                                 };
3889                                 template <class T> T* a(ptrClass<T> *arg) {
3890                                   return arg->ptr;
3891                                 }
3893                                 template <class T>
3894                                 const T* a(const ptrClass<T> *arg) {
3895                                   return arg->ptr;
3896                                 }
3897                                ],
3898                                [ ptrClass<int> i;
3899                                  a(&i); ],
3900                                ac_cv_can_resolve_const_ambiguity=yes,
3901                                ac_cv_can_resolve_const_ambiguity=no)])
3902 if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
3903   AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
3907 dnl We don't do exceptions on unix.  The only reason this used to be here
3908 dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses 
3909 dnl exceptions.  But, we turn exceptions off by default and this test breaks.
3910 dnl So im commenting this out until someone writes some artificial 
3911 dnl intelligence to detect not only if the compiler has exceptions, but if 
3912 dnl they are enabled as well.
3913 dnl 
3914 dnl AC_CACHE_CHECK(for C++ \"exceptions\",
3915 dnl                ac_cv_cpp_exceptions,
3916 dnl                [AC_TRY_COMPILE(class X { public: X() {} };
3917 dnl                                static void F() { throw X(); },
3918 dnl                                try { F(); } catch(X & e) { },
3919 dnl                                ac_cv_cpp_exceptions=yes,
3920 dnl                                ac_cv_cpp_exceptions=no)])
3921 dnl if test $ac_cv_cpp_exceptions = yes ; then
3922 dnl    AC_DEFINE(HAVE_CPP_EXCEPTIONS)
3923 dnl fi
3925 dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
3926 dnl supports it well enough to allow us to use it to change access, but not
3927 dnl to resolve ambiguity. The next two tests determine how well the |using|
3928 dnl keyword is supported.
3930 dnl Check to see if we can change access with |using|.  Test both a
3931 dnl legal and an illegal example.
3932 AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
3933                ac_cv_cpp_access_changing_using2,
3934                [AC_TRY_COMPILE(
3935                    class A { protected: int foo() { return 0; } };
3936                    class B : public A { public: using A::foo; };,
3937                    B b; return b.foo();,
3938                    [AC_TRY_COMPILE(
3939                        class A { public: int foo() { return 1; } };
3940                        class B : public A { private: using A::foo; };,
3941                        B b; return b.foo();,
3942                        ac_cv_cpp_access_changing_using2=no,
3943                        ac_cv_cpp_access_changing_using2=yes)],
3944                    ac_cv_cpp_access_changing_using2=no)])
3945 if test "$ac_cv_cpp_access_changing_using2" = yes ; then
3946    AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
3949 dnl Check to see if we can resolve ambiguity with |using|.
3950 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3951                ac_cv_cpp_ambiguity_resolving_using,
3952                [AC_TRY_COMPILE(class X { 
3953                                  public: int go(const X&) {return 3;}
3954                                          int jo(const X&) {return 3;}
3955                                };
3956                                class Y : public X {
3957                                  public:  int go(int) {return 2;}
3958                                           int jo(int) {return 2;}
3959                                           using X::jo;
3960                                  private: using X::go;
3961                                };,
3962                                X x; Y y; y.jo(x);,
3963                                ac_cv_cpp_ambiguity_resolving_using=yes,
3964                                ac_cv_cpp_ambiguity_resolving_using=no)])
3965 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3966    AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3969 dnl Check to see if the |std| namespace is supported. If so, we'll want
3970 dnl to qualify any standard library calls with "std::" to ensure that
3971 dnl those functions can be resolved.
3972 AC_CACHE_CHECK(for \"std::\" namespace,
3973                ac_cv_cpp_namespace_std,
3974                [AC_TRY_COMPILE([#include <algorithm>],
3975                                [return std::min(0, 1);],
3976                                ac_cv_cpp_namespace_std=yes,
3977                                ac_cv_cpp_namespace_std=no)])
3978 if test "$ac_cv_cpp_namespace_std" = yes ; then
3979    AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
3982 dnl Older compilers are overly ambitious with respect to using the standard
3983 dnl template library's |operator!=()| when |operator==()| is defined. In
3984 dnl which case, defining |operator!=()| in addition to |operator==()| causes
3985 dnl ambiguity at compile-time. This test checks for that case.
3986 AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
3987                ac_cv_cpp_unambiguous_std_notequal,
3988                [AC_TRY_COMPILE([#include <algorithm>
3989                                 struct T1 {};
3990                                 int operator==(const T1&, const T1&) { return 0; }
3991                                 int operator!=(const T1&, const T1&) { return 0; }],
3992                                [T1 a,b; return a != b;],
3993                                ac_cv_cpp_unambiguous_std_notequal=unambiguous,
3994                                ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
3995 if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
3996   AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
4000 AC_CACHE_CHECK(for C++ reinterpret_cast,
4001                ac_cv_cpp_reinterpret_cast,
4002                [AC_TRY_COMPILE(struct X { int i; };
4003                                struct Y { int i; };,
4004                                X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
4005                                ac_cv_cpp_reinterpret_cast=yes,
4006                                ac_cv_cpp_reinterpret_cast=no)])
4007 if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
4008    AC_DEFINE(HAVE_CPP_NEW_CASTS)
4011 dnl See if a dynamic_cast to void* gives the most derived object.
4012 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
4013                ac_cv_cpp_dynamic_cast_void_ptr,
4014                [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
4015                             class Y { int j; public: virtual ~Y() { } };
4016                             class Z : public X, public Y { int k; };
4018                             int main() {
4019                                  Z mdo;
4020                                  X *subx = (X*)&mdo;
4021                                  Y *suby = (Y*)&mdo;
4022                                  return !((((void*)&mdo != (void*)subx) &&
4023                                            ((void*)&mdo == dynamic_cast<void*>(subx))) ||
4024                                           (((void*)&mdo != (void*)suby) &&
4025                                            ((void*)&mdo == dynamic_cast<void*>(suby))));
4026                             }],
4027                            ac_cv_cpp_dynamic_cast_void_ptr=yes,
4028                            ac_cv_cpp_dynamic_cast_void_ptr=no,
4029                            ac_cv_cpp_dynamic_cast_void_ptr=no)])
4030 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
4031    AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
4035 dnl note that this one is reversed - if the test fails, then
4036 dnl we require implementations of unused virtual methods. Which
4037 dnl really blows because it means we'll have useless vtable
4038 dnl bloat.
4039 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
4040                ac_cv_cpp_unused_required,
4041                [AC_TRY_LINK(class X {private: virtual void never_called();};,
4042                                X x;,
4043                                ac_cv_cpp_unused_required=no,
4044                                ac_cv_cpp_unused_required=yes)])
4045 if test "$ac_cv_cpp_unused_required" = yes ; then
4046    AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
4050 dnl Some compilers have trouble comparing a constant reference to a templatized
4051 dnl class to zero, and require an explicit operator==() to be defined that takes
4052 dnl an int. This test separates the strong from the weak.
4054 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
4055                ac_cv_trouble_comparing_to_zero,
4056                [AC_TRY_COMPILE([#include <algorithm>
4057                                 template <class T> class Foo {};
4058                                 class T2;
4059                                 template <class T> int operator==(const T2*, const T&) { return 0; }
4060                                 template <class T> int operator!=(const T2*, const T&) { return 0; }],
4061                                [Foo<int> f; return (0 != f);],
4062                                ac_cv_trouble_comparing_to_zero=no,
4063                                ac_cv_trouble_comparing_to_zero=yes)])
4064 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
4065   AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
4070 dnl End of C++ language/feature checks
4071 AC_LANG_C
4073 dnl ========================================================
4074 dnl =  Internationalization checks
4075 dnl ========================================================
4077 dnl Internationalization and Locale support is different
4078 dnl on various UNIX platforms.  Checks for specific i18n
4079 dnl features go here.
4081 dnl check for LC_MESSAGES
4082 AC_CACHE_CHECK(for LC_MESSAGES,
4083                 ac_cv_i18n_lc_messages,
4084                 [AC_TRY_COMPILE([#include <locale.h>],
4085                                 [int category = LC_MESSAGES;],
4086                                 ac_cv_i18n_lc_messages=yes,
4087                                 ac_cv_i18n_lc_messages=no)])
4088 if test "$ac_cv_i18n_lc_messages" = yes; then
4089    AC_DEFINE(HAVE_I18N_LC_MESSAGES)
4090 fi      
4092 fi # SKIP_COMPILER_CHECKS
4094 TARGET_XPCOM_ABI=
4095 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
4096     TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
4099 dnl Mozilla specific options
4100 dnl ========================================================
4101 dnl The macros used for command line options
4102 dnl are defined in build/autoconf/altoptions.m4.
4105 dnl ========================================================
4106 dnl =
4107 dnl = Check for external package dependencies
4108 dnl =
4109 dnl ========================================================
4110 MOZ_ARG_HEADER(External Packages)
4112 MOZ_ENABLE_LIBXUL=
4114 MOZ_ARG_WITH_STRING(libxul-sdk,
4115 [  --with-libxul-sdk=PFX   Use the libXUL SDK at <PFX>],
4116   LIBXUL_SDK_DIR=$withval)
4118 if test "$LIBXUL_SDK_DIR" = "yes"; then
4119     AC_MSG_ERROR([--with-libxul-sdk must specify a path])
4120 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
4121     LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
4123     if test ! -f "$LIBXUL_SDK/sdk/include/xpcom-config.h"; then
4124         AC_MSG_ERROR([$LIBXUL_SDK/sdk/include/xpcom-config.h doesn't exist])
4125     fi
4127     MOZ_ENABLE_LIBXUL=1
4129 AC_SUBST(LIBXUL_SDK)
4131 if test -n "$LIBXUL_SDK"; then
4132     LIBXUL_DIST="$LIBXUL_SDK"
4133 else
4134     LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
4136 AC_SUBST(LIBXUL_DIST)
4138 SYSTEM_LIBXUL=
4140 MOZ_ARG_WITH_BOOL(system-libxul,
4141 [  --with-system-libxul   Use system installed libxul SDK],
4142     SYSTEM_LIBXUL=1)
4144 if test -n "$SYSTEM_LIBXUL" && test -z "$MOZ_ENABLE_LIBXUL"; then
4145     AC_MSG_ERROR([--with-system-libxul needs --with-libxul-sdk])
4148 dnl ========================================================
4149 dnl = If NSPR was not detected in the system, 
4150 dnl = use the one in the source tree (mozilla/nsprpub)
4151 dnl ========================================================
4152 MOZ_ARG_WITH_BOOL(system-nspr,
4153 [  --with-system-nspr      Use system installed NSPR],
4154     _USE_SYSTEM_NSPR=1 )
4156 if test -n "$_USE_SYSTEM_NSPR"; then
4157     AM_PATH_NSPR(4.7.0, [MOZ_NATIVE_NSPR=1], [MOZ_NATIVE_NSPR=])
4160 if test -n "$MOZ_NATIVE_NSPR"; then
4161     _SAVE_CFLAGS=$CFLAGS
4162     CFLAGS="$CFLAGS $NSPR_CFLAGS"
4163     AC_TRY_COMPILE([#include "prlog.h"],
4164                 [#ifndef PR_STATIC_ASSERT
4165                  #error PR_STATIC_ASSERT not defined
4166                  #endif],
4167                 [MOZ_NATIVE_NSPR=1],
4168                 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT]))
4169     CFLAGS=$_SAVE_CFLAGS
4170 else
4171     NSPR_CFLAGS='`$(DEPTH)/nsprpub/config/nspr-config --prefix='${LIBXUL_DIST}' --includedir='${LIBXUL_DIST}'/include/nspr --cflags`'
4172     if test "$OS_ARCH" = "WINCE"; then
4173         NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4174         NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4175     elif test "$OS_ARCH" = "WINNT"; then
4176         NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4177         if test -n "$GNU_CC"; then
4178             NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
4179         else
4180             NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4181         fi
4182     else
4183         NSPR_LIBS='`$(DEPTH)/nsprpub/config/nspr-config --prefix='${LIBXUL_DIST}' --libdir='${LIBXUL_DIST}'/lib --libs`'
4184     fi
4187 dnl ========================================================
4188 dnl = If NSS was not detected in the system, 
4189 dnl = use the one in the source tree (mozilla/security/nss)
4190 dnl ========================================================
4192 MOZ_ARG_WITH_BOOL(system-nss,
4193 [  --with-system-nss      Use system installed NSS],
4194     _USE_SYSTEM_NSS=1 )
4196 if test -n "$_USE_SYSTEM_NSS"; then
4197     AM_PATH_NSS(3.12.0, [MOZ_NATIVE_NSS=1], [MOZ_NATIVE_NSS=])
4200 if test -n "$MOZ_NATIVE_NSS"; then
4201    NSS_LIBS="$NSS_LIBS -lcrmf"
4202 else
4203    NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4204    NSS_DEP_LIBS="\
4205         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4206         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4207         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4208         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4209         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX) \
4210         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)softokn$NSS_VERSION\$(DLL_SUFFIX)"
4212    if test -z "$GNU_CC" && test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "WINCE" -o "$OS_ARCH" = "OS2"; then
4213        NSS_LIBS="\
4214         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4215         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4216         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4217         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4218         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4219         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)softokn$NSS_VERSION.\$(IMPORT_LIB_SUFFIX)"
4220    else
4221        NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION -lsoftokn$NSS_VERSION"
4222    fi
4225 if test -z "$SKIP_LIBRARY_CHECKS"; then
4226 dnl system JPEG support
4227 dnl ========================================================
4228 MOZ_ARG_WITH_STRING(system-jpeg,
4229 [  --with-system-jpeg[=PFX]
4230                           Use system libjpeg [installed at prefix PFX]],
4231     JPEG_DIR=$withval)
4233 _SAVE_CFLAGS=$CFLAGS
4234 _SAVE_LDFLAGS=$LDFLAGS
4235 _SAVE_LIBS=$LIBS
4236 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4237     CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4238     LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4240 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4241     SYSTEM_JPEG=
4242 else
4243     AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS)
4246 if test "$SYSTEM_JPEG" = 1; then
4247     LIBS="$JPEG_LIBS $LIBS"
4248     AC_TRY_COMPILE([ #include <stdio.h>
4249                      #include <sys/types.h>
4250                      #include <jpeglib.h> ],
4251                    [ #if JPEG_LIB_VERSION < $MOZJPEG
4252                      #error "Insufficient JPEG library version ($MOZJPEG required)."
4253                      #endif ],
4254                    SYSTEM_JPEG=1,
4255                    [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=]) 
4256 fi 
4257 CFLAGS=$_SAVE_CFLAGS
4258 LDFLAGS=$_SAVE_LDFLAGS
4259 LIBS=$_SAVE_LIBS
4261 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$SYSTEM_JPEG" = 1; then
4262     JPEG_CFLAGS="-I${JPEG_DIR}/include"
4263     JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
4266 dnl system ZLIB support
4267 dnl ========================================================
4268 MOZ_ARG_WITH_STRING(system-zlib,
4269 [  --with-system-zlib[=PFX]
4270                           Use system libz [installed at prefix PFX]],
4271     ZLIB_DIR=$withval)
4273 _SAVE_CFLAGS=$CFLAGS
4274 _SAVE_LDFLAGS=$LDFLAGS
4275 _SAVE_LIBS=$LIBS
4276 if test -n "${ZLIB_DIR}" -a "${ZLIB_DIR}" != "yes"; then
4277     CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
4278     LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
4280 if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
4281     SYSTEM_ZLIB=
4282 else
4283     AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"], 
4284         [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
4286 if test "$SYSTEM_ZLIB" = 1; then
4287     LIBS="$ZLIB_LIBS $LIBS"
4288     AC_TRY_COMPILE([ #include <stdio.h>
4289                      #include <string.h>
4290                      #include <zlib.h> ],
4291                    [ #if ZLIB_VERNUM < $MOZZLIB 
4292                      #error "Insufficient zlib version ($MOZZLIB required)."
4293                      #endif ],
4294                    SYSTEM_ZLIB=1,
4295                    [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=]) 
4297 CFLAGS=$_SAVE_CFLAGS
4298 LDFLAGS=$_SAVE_LDFLAGS
4299 LIBS=$_SAVE_LIBS
4301 if test "${ZLIB_DIR}" -a -d "${ZLIB_DIR}" -a "$SYSTEM_ZLIB" = 1; then
4302     ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
4303     ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
4306 dnl system BZIP2 Support
4307 dnl ========================================================
4308 MOZ_ARG_WITH_STRING(system-bz2,
4309 [  --with-system-bz2[=PFX]
4310                           Use system libbz2 [installed at prefix PFX]],
4311     BZ2_DIR=$withval)
4313 _SAVE_CFLAGS=$CFLAGS
4314 _SAVE_LDFLAGS=$LDFLAGS
4315 _SAVE_LIBS=$LIBS
4316 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4317     CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4318     LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4320 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4321     SYSTEM_BZ2=
4322 else
4323     AC_CHECK_LIB(bz2, BZ2_bzread, [SYSTEM_BZ2=1 BZ2_LIBS="-lbz2"],
4324         [SYSTEM_BZ2= BZ2_CFLAGS= BZ2_LIBS=], $BZ2_LIBS)
4326 CFLAGS=$_SAVE_CFLAGS
4327 LDFLAGS=$_SAVE_LDFLAGS
4328 LIBS=$_SAVE_LIBS
4330 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$SYSTEM_BZ2" = 1; then
4331     BZ2_CFLAGS="-I${BZ2_DIR}/include"
4332     BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
4335 dnl system PNG Support
4336 dnl ========================================================
4337 MOZ_ARG_WITH_STRING(system-png, 
4338 [  --with-system-png[=PFX]
4339                           Use system libpng [installed at prefix PFX]],
4340     PNG_DIR=$withval)
4342 _SAVE_CFLAGS=$CFLAGS
4343 _SAVE_LDFLAGS=$LDFLAGS
4344 _SAVE_LIBS=$LIBS
4345 CFLAGS="$ZLIB_CFLAGS $CFLAGS"
4346 LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
4347 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4348     CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4349     LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4351 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4352     SYSTEM_PNG=
4353 else
4354     _SAVE_PNG_LIBS=$PNG_LIBS
4355     AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"],
4356                  AC_MSG_ERROR([--with-system-png requested but no working libpng found]), 
4357                  $PNG_LIBS)
4358     AC_CHECK_LIB(png, png_get_acTL, ,
4359                  AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]),
4360                  $_SAVE_PNG_LIBS)
4362 if test "$SYSTEM_PNG" = 1; then
4363     LIBS="$PNG_LIBS $LIBS"
4364     AC_TRY_COMPILE([ #include <stdio.h>
4365                      #include <sys/types.h>
4366                      #include <png.h> ],
4367                    [ #if PNG_LIBPNG_VER < $MOZPNG
4368                      #error "Insufficient libpng version ($MOZPNG required)."
4369                      #endif
4370                      #ifndef PNG_UINT_31_MAX
4371                      #error "Insufficient libpng version."
4372                      #endif ],
4373                    SYSTEM_PNG=1,
4374                    AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4376 CFLAGS=$_SAVE_CFLAGS
4377 LDFLAGS=$_SAVE_LDFLAGS
4378 LIBS=$_SAVE_LIBS
4380 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
4381     PNG_CFLAGS="-I${PNG_DIR}/include"
4382     PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
4385 fi # SKIP_LIBRARY_CHECKS
4387 dnl system HunSpell Support
4388 dnl ========================================================
4389 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4390 [  --enable-system-hunspell  Use system hunspell (located with pkgconfig)],
4391     SYSTEM_HUNSPELL=1 )
4393 if test -n "$SYSTEM_HUNSPELL"; then
4394     PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4397 AC_SUBST(SYSTEM_HUNSPELL)
4399 dnl ========================================================
4400 dnl Java SDK support
4401 dnl ========================================================
4402 JAVA_INCLUDE_PATH=
4403 MOZ_ARG_WITH_STRING(java-include-path,
4404 [  --with-java-include-path=dir   Location of Java SDK headers],
4405     JAVA_INCLUDE_PATH=$withval)
4407 JAVA_BIN_PATH=
4408 MOZ_ARG_WITH_STRING(java-bin-path,
4409 [  --with-java-bin-path=dir   Location of Java binaries (java, javac, jar)],
4410     JAVA_BIN_PATH=$withval)
4412 dnl ========================================================
4413 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4414 dnl their usage and use them in spidermonkey.
4415 dnl ========================================================
4416 MOZ_ARG_WITH_BOOL(arm-kuser,
4417 [  --with-arm-kuser         Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4418     USE_ARM_KUSER=1,
4419     USE_ARM_KUSER=)
4420 if test -n "$USE_ARM_KUSER"; then
4421    AC_DEFINE(USE_ARM_KUSER)
4424 dnl ========================================================
4425 dnl =
4426 dnl = Application
4427 dnl =
4428 dnl ========================================================
4430 MOZ_ARG_HEADER(Application)
4432 BUILD_STATIC_LIBS=
4433 ENABLE_TESTS=1
4434 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4435 MOZ_BRANDING_DIRECTORY=
4436 MOZ_DBGRINFO_MODULES=
4437 MOZ_ENABLE_CANVAS=1
4438 MOZ_FEEDS=1
4439 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg bmp xbm icon"
4440 MOZ_IMG_ENCODERS_DEFAULT="png jpeg"
4441 MOZ_JAVAXPCOM=
4442 MOZ_JSDEBUGGER=1
4443 MOZ_JSLOADER=1
4444 MOZ_MATHML=1
4445 MOZ_MORK=1
4446 MOZ_MORKREADER=
4447 MOZ_AUTH_EXTENSION=1
4448 MOZ_NO_ACTIVEX_SUPPORT=1
4449 MOZ_NO_INSPECTOR_APIS=
4450 MOZ_NO_XPCOM_OBSOLETE=
4451 MOZ_NO_FAST_LOAD=
4452 MOZ_OGG=1
4453 MOZ_SYDNEYAUDIO=
4454 MOZ_WAVE=1
4455 MOZ_MEDIA=
4456 MOZ_OJI=1
4457 MOZ_PERMISSIONS=1
4458 MOZ_PLACES=
4459 MOZ_PLAINTEXT_EDITOR_ONLY=
4460 MOZ_PLUGINS=1
4461 MOZ_PREF_EXTENSIONS=1
4462 MOZ_PROFILELOCKING=1
4463 MOZ_PSM=1
4464 MOZ_PYTHON_EXTENSIONS="xpcom dom"
4465 MOZ_PYTHON=
4466 MOZ_PYTHON_DEBUG_SUFFIX=
4467 MOZ_PYTHON_DLL_SUFFIX=
4468 MOZ_PYTHON_INCLUDES=
4469 MOZ_PYTHON_LIBS=
4470 MOZ_PYTHON_PREFIX=
4471 MOZ_PYTHON_VER=
4472 MOZ_PYTHON_VER_DOTTED=
4473 MOZ_RDF=1
4474 MOZ_REFLOW_PERF=
4475 MOZ_SAFE_BROWSING=
4476 MOZ_HELP_VIEWER=
4477 MOZ_SPELLCHECK=1
4478 MOZ_STATIC_MAIL_BUILD=
4479 MOZ_STORAGE=1
4480 MOZ_SVG=1
4481 MOZ_TIMELINE=
4482 MOZ_UI_LOCALE=en-US
4483 MOZ_UNIVERSALCHARDET=1
4484 MOZ_URL_CLASSIFIER=
4485 MOZ_USE_NATIVE_UCONV=
4486 MOZ_VIEW_SOURCE=1
4487 MOZ_XPFE_COMPONENTS=1
4488 MOZ_XPINSTALL=1
4489 MOZ_XSLT_STANDALONE=
4490 MOZ_XTF=1
4491 MOZ_XUL=1
4492 MOZ_ZIPWRITER=1
4493 NS_PRINTING=1
4494 NECKO_COOKIES=1
4495 NECKO_DISK_CACHE=1
4496 NECKO_PROTOCOLS_DEFAULT="about data file ftp gopher http res viewsource"
4497 NECKO_SMALL_BUFFERS=
4498 XPC_IDISPATCH_SUPPORT=
4501 case "$target_os" in
4502 darwin*)
4503     ACCESSIBILITY=
4504     ;;
4506     ACCESSIBILITY=1
4507     ;;
4508 esac
4510 case "$target_os" in
4511     msvc*|mks*|cygwin*|mingw*)
4512         if test -z "$GNU_CC"; then 
4513             XPC_IDISPATCH_SUPPORT=1
4514             MOZ_NO_ACTIVEX_SUPPORT=
4515             MOZ_ACTIVEX_SCRIPTING_SUPPORT=1
4516         fi
4517         ;;
4518 esac
4520 MOZ_ARG_ENABLE_STRING(application,
4521 [  --enable-application=APP
4522                           Options include:
4523                             browser (Firefox)
4524                             xulrunner
4525                             content/xslt (Standalone Transformiix XSLT)
4526                             netwerk (Standalone Necko)
4527                             tools/update-packaging (AUS-related packaging tools)
4528                             standalone (use this for standalone
4529                               xpcom/xpconnect or to manually drive a build)],
4530 [ MOZ_BUILD_APP=$enableval ] )
4532 MOZ_EMBEDDING_PROFILE=default
4533 MOZ_ARG_WITH_STRING(embedding-profile,
4534 [  --with-embedding-profile=default|basic|minimal
4535                        see http://wiki.mozilla.org/Gecko:Small_Device_Support],
4536 [ MOZ_EMBEDDING_PROFILE=$withval ])
4538 case "$MOZ_EMBEDDING_PROFILE" in
4539 default)
4540   MOZ_EMBEDDING_LEVEL_DEFAULT=1
4541   MOZ_EMBEDDING_LEVEL_BASIC=1
4542   MOZ_EMBEDDING_LEVEL_MINIMAL=1
4543   AC_DEFINE(MOZ_EMBEDDING_LEVEL_DEFAULT)
4544   AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4545   AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4546   ;;
4548 basic)
4549   MOZ_EMBEDDING_LEVEL_DEFAULT=
4550   MOZ_EMBEDDING_LEVEL_BASIC=1
4551   MOZ_EMBEDDING_LEVEL_MINIMAL=1
4552   AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4553   AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4554   ENABLE_TESTS=
4555   MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4556   MOZ_ENABLE_CANVAS=
4557   MOZ_ENABLE_POSTSCRIPT=
4558   MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4559   MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4560   MOZ_IMG_ENCODERS_DEFAULT=
4561   MOZ_IMG_ENCODERS=
4562   MOZ_INSTALLER=
4563   MOZ_JSDEBUGGER=
4564   MOZ_MATHML=
4565   MOZ_AUTH_EXTENSION=
4566   MOZ_NO_ACTIVEX_SUPPORT=1
4567   MOZ_NO_INSPECTOR_APIS=1
4568   MOZ_NO_XPCOM_OBSOLETE=1
4569   MOZ_NO_FAST_LOAD=1
4570   MOZ_OJI=
4571   MOZ_PLAINTEXT_EDITOR_ONLY=1
4572 #  MOZ_PLUGINS=
4573   MOZ_PREF_EXTENSIONS=
4574   MOZ_PROFILELOCKING=
4575   MOZ_SPELLCHECK=
4576   MOZ_SVG=
4577   MOZ_UNIVERSALCHARDET=
4578   MOZ_UPDATER=
4579   MOZ_USE_NATIVE_UCONV=
4580   MOZ_VIEW_SOURCE=
4581   MOZ_XPFE_COMPONENTS=
4582   MOZ_XPINSTALL=
4583   MOZ_XTF=
4584   MOZ_ZIPWRITER=
4585   NECKO_DISK_CACHE=
4586   NECKO_PROTOCOLS_DEFAULT="about data http file res"
4587   NECKO_SMALL_BUFFERS=1
4588   NS_DISABLE_LOGGING=1
4589   NS_PRINTING=
4590   ;;
4592 minimal)
4593   MOZ_EMBEDDING_LEVEL_DEFAULT=
4594   MOZ_EMBEDDING_LEVEL_BASIC=
4595   MOZ_EMBEDDING_LEVEL_MINIMAL=1
4596   AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4597   ENABLE_TESTS=
4598   MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4599   MOZ_ENABLE_CANVAS=
4600   MOZ_ENABLE_POSTSCRIPT=
4601   MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4602   MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4603   MOZ_IMG_ENCODERS_DEFAULT=
4604   MOZ_IMG_ENCODERS=
4605   MOZ_INSTALLER=
4606   MOZ_JSDEBUGGER=
4607   MOZ_MATHML=
4608   MOZ_AUTH_EXTENSION=
4609   MOZ_NO_ACTIVEX_SUPPORT=1
4610   MOZ_NO_INSPECTOR_APIS=1
4611   MOZ_NO_XPCOM_OBSOLETE=1
4612   MOZ_NO_FAST_LOAD=1
4613   MOZ_OJI=
4614   MOZ_PLAINTEXT_EDITOR_ONLY=1
4615   MOZ_PLUGINS=
4616   MOZ_PREF_EXTENSIONS=
4617   MOZ_PROFILELOCKING=
4618   MOZ_SPELLCHECK=
4619   MOZ_STORAGE=1
4620   MOZ_PLACES=
4621   MOZ_SVG=
4622   MOZ_UNIVERSALCHARDET=
4623   MOZ_UPDATER=
4624   MOZ_USE_NATIVE_UCONV=1
4625   MOZ_VIEW_SOURCE=
4626   MOZ_XPFE_COMPONENTS=
4627   MOZ_XPINSTALL=
4628   MOZ_XTF=
4629   MOZ_XUL=
4630   MOZ_ZIPWRITER=
4631   MOZ_RDF=
4632   NECKO_DISK_CACHE=
4633   NECKO_PROTOCOLS_DEFAULT="about data http file res"
4634   NECKO_SMALL_BUFFERS=1
4635   NS_DISABLE_LOGGING=1
4636   NS_PRINTING=
4637   ;;
4640   AC_MSG_ERROR([Unrecognized value: --with-embedding-profile=$MOZ_EMBEDDING_PROFILE])
4641   ;;
4642 esac
4644 AC_SUBST(MOZ_EMBEDDING_LEVEL_DEFAULT)
4645 AC_SUBST(MOZ_EMBEDDING_LEVEL_BASIC)
4646 AC_SUBST(MOZ_EMBEDDING_LEVEL_MINIMAL)
4648 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
4649 [  --with-xulrunner-stub-name=appname   Create the xulrunner stub with the given name],
4650   XULRUNNER_STUB_NAME=$withval)
4652 if test -z "$XULRUNNER_STUB_NAME"; then
4653   case "$target_os" in
4654   darwin*)
4655     XULRUNNER_STUB_NAME=xulrunner
4656     ;;
4657   *)
4658     XULRUNNER_STUB_NAME=xulrunner-stub
4659   esac
4661 AC_SUBST(XULRUNNER_STUB_NAME)
4663 if test -z "$MOZ_BUILD_APP"; then
4664   AC_MSG_ERROR([--enable-application=APP was not specified and is required.])
4665 else
4666   # We have a valid application only if it has a build.mk file in its top
4667   # directory.
4668   if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
4669     AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4670   fi
4673 # Allow the application to influence configure with a confvars.sh script.
4675 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4676 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4677   AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4678   . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4679 else
4680   AC_MSG_RESULT([no])
4683 # Now is a good time to test for logic errors, define mismatches, etc.
4684 case "$MOZ_BUILD_APP" in
4685 xulrunner)
4686   if test "$LIBXUL_SDK"; then
4687     AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4688   fi
4689   ;;
4690 esac
4692 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4693 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4694 # MOZ_BUILD_APP.
4695 case "$MOZ_BUILD_APP" in
4696 browser)
4697   AC_DEFINE(MOZ_PHOENIX)
4698   ;;
4700 xulrunner)
4701   AC_DEFINE(MOZ_XULRUNNER)
4702   ;;
4704 content/xslt)
4705   AC_DEFINE(TX_EXE)
4706   ;;
4708 standalone) 
4709   MOZ_APP_NAME=mozilla
4710   MOZ_APP_DISPLAYNAME=Mozilla
4711   MOZ_APP_VERSION=$MOZILLA_VERSION
4712   ;;
4714 esac
4716 AC_SUBST(MOZ_BUILD_APP)
4717 AC_SUBST(MOZ_PHOENIX)
4718 AC_SUBST(MOZ_XULRUNNER)
4720 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4722 dnl ========================================================
4723 dnl = 
4724 dnl = Toolkit Options
4725 dnl = 
4726 dnl ========================================================
4727 MOZ_ARG_HEADER(Toolkit Options)
4729     dnl ========================================================
4730     dnl = Select the default toolkit
4731     dnl ========================================================
4732         MOZ_ARG_ENABLE_STRING(default-toolkit,
4733         [  --enable-default-toolkit=TK
4734                           Select default toolkit
4735                           Platform specific defaults:
4736                             BeOS - cairo-beos
4737                             Mac OS X - cairo-cocoa
4738                             Neutrino/QNX - photon
4739                             OS/2 - cairo-os2
4740                             Win32 - cairo-windows
4741                             WinCE - windows
4742                             Gtk2 with DirectFB - cairo-gtk2-dfb
4743                             * - cairo-gtk2
4744                             * - cairo-qt],
4745     [ _DEFAULT_TOOLKIT=$enableval ],
4746     [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4748     if test "$_DEFAULT_TOOLKIT" = "photon" \
4749         -o "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4750         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4751         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-dfb" \
4752         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
4753         -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
4754         -o "$_DEFAULT_TOOLKIT" = "cairo-beos" \
4755         -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
4756         -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa"
4757     then
4758         dnl nglayout only supports building with one toolkit,
4759         dnl so ignore everything after the first comma (",").
4760         MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4761     else
4762         AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
4763     fi
4765 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_TOOLKIT,"$MOZ_WIDGET_TOOLKIT")
4767 dnl ========================================================
4768 dnl = Enable the toolkit as needed                         =
4769 dnl ========================================================
4771 case "$MOZ_WIDGET_TOOLKIT" in
4772 photon)
4773         MOZ_ENABLE_PHOTON=1
4774         AC_DEFINE(MOZ_WIDGET_PHOTON)
4775     ;;
4777 cairo-windows)
4778     MOZ_WIDGET_TOOLKIT=windows
4779     MOZ_GFX_TOOLKIT=cairo
4780     ;;
4782 cairo-gtk2|cairo-gtk2-x11)
4783     MOZ_WIDGET_TOOLKIT=gtk2
4784     MOZ_GFX_TOOLKIT=cairo
4785     MOZ_ENABLE_GTK2=1
4786     MOZ_ENABLE_XREMOTE=1
4788     AC_DEFINE(MOZ_X11)
4789     MOZ_X11=1
4791     TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4792     TK_LIBS='$(MOZ_GTK2_LIBS)'
4793     AC_DEFINE(MOZ_WIDGET_GTK2)
4794     ;;
4796 cairo-gtk2-dfb)
4797     MOZ_WIDGET_TOOLKIT=gtk2
4798     MOZ_GFX_TOOLKIT=cairo
4799     MOZ_ENABLE_GTK2=1
4801     AC_DEFINE(MOZ_DFB)
4802     MOZ_DFB=1
4804     TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4805     TK_LIBS='$(MOZ_GTK2_LIBS)'
4806     AC_DEFINE(MOZ_WIDGET_GTK2)
4807     if test "$no_x" != "yes"; then
4808         AC_MSG_WARN([Disabling X when DirectFB is specified.])
4809         no_x=yes
4810     fi
4811     ;;
4813 cairo-qt)
4814     MOZ_WIDGET_TOOLKIT=qt
4815     MOZ_GFX_TOOLKIT=cairo
4816     MOZ_ENABLE_QT=1
4817     MOZ_ENABLE_XREMOTE=1
4818     USE_ELF_DYNSTR_GC=
4819     NS_PRINTING=
4821     AC_DEFINE(MOZ_X11)
4822     MOZ_X11=1
4824     TK_CFLAGS='$(MOZ_QT_CFLAGS)'
4825     TK_LIBS='$(MOZ_QT_LIBS)'
4826     AC_DEFINE(MOZ_WIDGET_QT)
4827     ;;
4829 cairo-beos)
4830     MOZ_WIDGET_TOOLKIT=beos
4831     MOZ_GFX_TOOLKIT=cairo
4832     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4833     TK_LIBS='$(MOZ_CAIRO_LIBS)'
4834     ;;
4836 cairo-os2)
4837     MOZ_WIDGET_TOOLKIT=os2
4838     MOZ_GFX_TOOLKIT=cairo
4839     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4840     TK_LIBS='$(MOZ_CAIRO_LIBS)'
4841     ;;
4843 cairo-cocoa)
4844     MOZ_WIDGET_TOOLKIT=cocoa
4845     AC_DEFINE(MOZ_WIDGET_COCOA)
4846     MOZ_ENABLE_COCOA=1
4847     MOZ_GFX_TOOLKIT=cairo
4848     MOZ_USER_DIR="Mozilla"
4849     AC_DEFINE(XP_MACOSX)
4850     AC_DEFINE(TARGET_CARBON)
4851     AC_DEFINE(TARGET_API_MAC_CARBON)
4852     TK_LIBS='-framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook'
4853     TK_CFLAGS="-I${MACOS_SDK_DIR}/Developer/Headers/FlatCarbon"
4854     CFLAGS="$CFLAGS $TK_CFLAGS"
4855     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4856     ;;
4857 esac
4859 if test "$MOZ_ENABLE_XREMOTE"; then
4860     AC_DEFINE(MOZ_ENABLE_XREMOTE)
4863 if test "$COMPILE_ENVIRONMENT"; then
4864   if test "$MOZ_ENABLE_GTK2"; then
4865     if test "$MOZ_X11"; then
4866       GDK_PACKAGES=gdk-x11-2.0
4867     elif test "$MOZ_DFB"; then
4868       PKG_CHECK_MODULES(MOZ_DFB, directfb >= 1.1.0)
4869       GDK_PACKAGES=directfb
4870     fi
4872     PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4873   fi
4875 fi # COMPILE_ENVIRONMENT
4877 AC_SUBST(MOZ_DEFAULT_TOOLKIT)
4879 dnl ========================================================
4880 dnl = startup-notification support module
4881 dnl ========================================================
4883 if test "$MOZ_ENABLE_GTK2"
4884 then
4885     MOZ_ENABLE_STARTUP_NOTIFICATION=
4887     MOZ_ARG_ENABLE_BOOL(startup-notification,
4888     [  --enable-startup-notification       Enable startup-notification support (default: disabled) ],
4889         MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4890         MOZ_ENABLE_STARTUP_NOTIFICATION=)
4891     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4892     then
4893         PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4894                           libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4895         [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4896             if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4897             then
4898                 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4899             fi
4900             MOZ_ENABLE_STARTUP_NOTIFICATION=
4901         ])
4902     fi
4904     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4905         AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4906     fi
4908     TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4910 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4911 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4912 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4914 dnl ========================================================
4915 dnl = QT support
4916 dnl ========================================================
4917 if test "$MOZ_ENABLE_QT"
4918 then
4919     PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtUiTools QtCore)
4920     AC_SUBST(MOZ_QT_CFLAGS)
4921     AC_SUBST(MOZ_QT_LIBS)
4923     MOZ_ARG_WITH_STRING(qtdir,
4924     [  --with-qtdir=\$dir       Specify Qt directory ],
4925     [ QTDIR=$withval])
4927     if test -z "$QTDIR"; then
4928       QTDIR="/usr"
4929     fi
4930     QTINCDIR="/include/qt"
4931     if test ! -d "$QTDIR$QTINCDIR"; then
4932        QTINCDIR="/include/X11/qt"
4933     fi
4934     if test ! -d "$QTDIR$QTINCDIR"; then
4935        QTINCDIR="/include"
4936     fi
4938     if test -x "$QTDIR/bin/moc-qt4"; then
4939       HOST_MOC="$QTDIR/bin/moc-qt4"
4940     else
4941       if test -x "$QTDIR/bin/moc"; then
4942         HOST_MOC="$QTDIR/bin/moc"
4943       else
4944         AC_CHECK_PROGS(HOST_MOC, moc, "")
4945       fi
4946     fi
4947     if test -z "$HOST_MOC"; then
4948       AC_MSG_ERROR([no acceptable moc preprocessor found])
4949     fi
4950     MOC=$HOST_MOC
4953 AC_SUBST(GTK_CONFIG)
4954 AC_SUBST(TK_CFLAGS)
4955 AC_SUBST(TK_LIBS)
4957 AC_SUBST(MOZ_ENABLE_GTK2)
4958 AC_SUBST(MOZ_ENABLE_PHOTON)
4959 AC_SUBST(MOZ_ENABLE_COCOA)
4960 AC_SUBST(MOZ_ENABLE_QT)
4961 AC_SUBST(MOZ_ENABLE_XREMOTE)
4962 AC_SUBST(MOZ_GTK2_CFLAGS)
4963 AC_SUBST(MOZ_GTK2_LIBS)
4964 AC_SUBST(MOZ_QT_CFLAGS)
4965 AC_SUBST(MOZ_QT_LIBS)
4967 AC_SUBST(MOC)
4969 AC_SUBST(MOZ_DFB)
4970 AC_SUBST(MOZ_X11)
4972 dnl ========================================================
4973 dnl =
4974 dnl = Components & Features
4975 dnl = 
4976 dnl ========================================================
4977 MOZ_ARG_HEADER(Components and Features)
4979 dnl ========================================================
4980 dnl = Localization
4981 dnl ========================================================
4982 MOZ_ARG_ENABLE_STRING(ui-locale,
4983 [  --enable-ui-locale=ab-CD
4984                           Select the user interface locale (default: en-US)],
4985     MOZ_UI_LOCALE=$enableval )
4986 AC_SUBST(MOZ_UI_LOCALE)
4988 dnl ========================================================
4989 dnl = Trademarked Branding 
4990 dnl ========================================================
4991 MOZ_ARG_ENABLE_BOOL(official-branding,
4992 [  --enable-official-branding Enable Official mozilla.org Branding
4993                           Do not distribute builds with
4994                           --enable-official-branding unless you have
4995                           permission to use trademarks per
4996                           http://www.mozilla.org/foundation/trademarks/ .],
4997 [case "$MOZ_BUILD_APP" in
4998 browser)
4999     MOZ_BRANDING_DIRECTORY=other-licenses/branding/firefox
5000     MOZ_APP_DISPLAYNAME=Firefox
5001     ;;
5004     AC_MSG_ERROR([Official branding is only available for Firefox.])
5005 esac
5008 MOZ_ARG_WITH_STRING(branding,
5009 [  --with-branding=dir    Use branding from the specified directory.],
5010     MOZ_BRANDING_DIRECTORY=$withval)
5012 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
5013 if test -z "$REAL_BRANDING_DIRECTORY"; then
5014   REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
5017 if test -f "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"; then
5018   . "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"
5021 AC_SUBST(MOZ_BRANDING_DIRECTORY)
5023 dnl ========================================================
5024 dnl = Distribution ID
5025 dnl ========================================================
5026 MOZ_ARG_WITH_STRING(distribution-id,
5027 [  --with-distribution-id=ID  Set distribution-specific id (default=org.mozilla)],
5028 [ val=`echo $withval`
5029     MOZ_DISTRIBUTION_ID="$val"])
5031 if test -z "$MOZ_DISTRIBUTION_ID"; then
5032    MOZ_DISTRIBUTION_ID="org.mozilla"
5035 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
5036 AC_SUBST(MOZ_DISTRIBUTION_ID)
5039 dnl ========================================================
5040 dnl complex text support off by default
5041 dnl ========================================================
5042 MOZ_PANGO=1
5043 MOZ_ARG_DISABLE_BOOL(pango,
5044 [  --disable-pango Disable usage of Pango ],
5045     MOZ_PANGO=,
5046     MOZ_PANGO=1)
5049 dnl ========================================================
5050 dnl = Pango
5051 dnl ========================================================
5052 if test "$MOZ_ENABLE_GTK2"
5053 then
5054     AC_SUBST(MOZ_PANGO)
5056     PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
5058     if test "$MOZ_PANGO"
5059     then
5060         PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
5061         AC_SUBST(MOZ_PANGO_CFLAGS)
5062         AC_SUBST(MOZ_PANGO_LIBS)
5063         AC_DEFINE(MOZ_PANGO)
5064     else
5065         PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
5066         AC_SUBST(MOZ_PANGO_CFLAGS)
5067         AC_SUBST(MOZ_PANGO_LIBS)
5069         PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0 fontconfig)
5070         AC_SUBST(FT2_CFLAGS)
5071         AC_SUBST(FT2_LIBS)
5072     fi
5075 dnl ========================================================
5076 dnl = PostScript print module
5077 dnl ========================================================
5078 MOZ_ARG_DISABLE_BOOL(postscript,
5079 [  --disable-postscript    Disable PostScript printing support ],
5080     MOZ_ENABLE_POSTSCRIPT=,
5081     MOZ_ENABLE_POSTSCRIPT=1 )
5083 dnl ========================================================
5084 dnl = GnomeVFS support module
5085 dnl ========================================================
5087 if test "$MOZ_X11"
5088 then
5089     dnl build the gnomevfs extension by default only when the
5090     dnl GTK2 toolkit is in use.
5091     if test "$MOZ_ENABLE_GTK2"
5092     then
5093         MOZ_ENABLE_GNOMEVFS=1
5094         MOZ_ENABLE_GCONF=1
5095     fi
5097     MOZ_ARG_DISABLE_BOOL(gnomevfs,
5098     [  --disable-gnomevfs      Disable GnomeVFS support ],
5099         MOZ_ENABLE_GNOMEVFS=,
5100         MOZ_ENABLE_GNOMEVFS=force)
5102     if test "$MOZ_ENABLE_GNOMEVFS"
5103     then
5104         PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
5105             MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
5106             MOZ_ENABLE_GNOMEVFS=1
5107         ],[
5108             if test "$MOZ_ENABLE_GNOMEVFS" = "force"
5109             then
5110                 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
5111             fi
5112             MOZ_ENABLE_GNOMEVFS=
5113         ])
5114     fi
5116     AC_SUBST(MOZ_ENABLE_GNOMEVFS)
5117     AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
5118     AC_SUBST(MOZ_GNOMEVFS_LIBS)
5120     if test "$MOZ_ENABLE_GCONF"
5121     then
5122         PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION,[
5123             MOZ_GCONF_LIBS=`echo $MOZ_GCONF_LIBS | sed 's/-llinc\>//'`
5124             MOZ_ENABLE_GCONF=1
5125         ],[
5126             MOZ_ENABLE_GCONF=
5127         ])
5128     fi
5130     if test "$MOZ_ENABLE_GCONF"; then
5131         AC_DEFINE(MOZ_ENABLE_GCONF)
5132     fi
5134     AC_SUBST(MOZ_ENABLE_GCONF)
5135     AC_SUBST(MOZ_GCONF_CFLAGS)
5136     AC_SUBST(MOZ_GCONF_LIBS)
5138     # The GNOME component is built if gtk2, gconf and gnome-vfs
5139     # are all available.
5141     if test "$MOZ_ENABLE_GTK2" -a "$MOZ_ENABLE_GCONF" -a \
5142             "$MOZ_ENABLE_GNOMEVFS"; then
5143       MOZ_ENABLE_GNOME_COMPONENT=1
5144     else
5145       MOZ_ENABLE_GNOME_COMPONENT=
5146     fi
5148     AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5151 dnl ========================================================
5152 dnl = libgnomeui support module
5153 dnl ========================================================
5155 if test "$MOZ_ENABLE_GTK2"
5156 then
5157     MOZ_ENABLE_GNOMEUI=1
5159     MOZ_ARG_DISABLE_BOOL(gnomeui,
5160     [  --disable-gnomeui       Disable libgnomeui support (default: auto, optional at runtime) ],
5161         MOZ_ENABLE_GNOMEUI=,
5162         MOZ_ENABLE_GNOMEUI=force)
5164     if test "$MOZ_ENABLE_GNOMEUI"
5165     then
5166         PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5167         [
5168             MOZ_GNOMEUI_LIBS=`echo $MOZ_GNOMEUI_LIBS | sed 's/-llinc\>//'`
5169             MOZ_ENABLE_GNOMEUI=1
5170         ],[
5171             if test "$MOZ_ENABLE_GNOMEUI" = "force"
5172             then
5173                 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5174             fi
5175             MOZ_ENABLE_GNOMEUI=
5176         ])
5177     fi
5179     if test "$MOZ_ENABLE_GNOMEUI"; then
5180         AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5181     fi
5183 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5184 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5185 AC_SUBST(MOZ_GNOMEUI_LIBS)
5187 dnl ========================================================
5188 dnl = dbus support
5189 dnl ========================================================
5191 if test "$MOZ_ENABLE_GTK2" || test "$MOZ_ENABLE_QT"
5192 then
5193     MOZ_ENABLE_DBUS=1
5195     MOZ_ARG_DISABLE_BOOL(dbus,
5196     [  --disable-dbus       Disable dbus support ],
5197         MOZ_ENABLE_DBUS=,
5198         MOZ_ENABLE_DBUS=1)
5200     if test "$MOZ_ENABLE_DBUS"
5201     then
5202         PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5203         AC_DEFINE(MOZ_ENABLE_DBUS)
5204     fi
5206 AC_SUBST(MOZ_ENABLE_DBUS)
5207 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5208 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5210 dnl ========================================================
5211 dnl = libnotify support
5212 dnl ========================================================
5214 MOZ_ARG_ENABLE_BOOL(libnotify,
5215 [  --enable-libnotify       Enable libnotify support ],
5216     MOZ_ENABLE_LIBNOTIFY=1,
5217     MOZ_ENABLE_LIBNOTIFY=)
5219 if test "$MOZ_ENABLE_GTK2"
5220 then
5221     if test "$MOZ_ENABLE_LIBNOTIFY"
5222     then
5223         AC_DEFINE(MOZ_ENABLE_LIBNOTIFY)
5224     fi
5227 if test -z "$SKIP_LIBRARY_CHECKS"
5228 then
5229     if test "$MOZ_ENABLE_GTK2"
5230     then
5231         if test "$MOZ_ENABLE_LIBNOTIFY"
5232         then
5233             PKG_CHECK_MODULES(MOZ_LIBNOTIFY, libnotify >= $LIBNOTIFY_VERSION)
5234         fi
5235     fi
5237 AC_SUBST(MOZ_ENABLE_LIBNOTIFY)
5238 AC_SUBST(MOZ_LIBNOTIFY_CFLAGS)
5239 AC_SUBST(MOZ_LIBNOTIFY_LIBS)
5241 dnl ========================================================
5242 dnl = Build Personal Security Manager
5243 dnl ========================================================
5244 MOZ_ARG_DISABLE_BOOL(crypto,
5245 [  --disable-crypto        Disable crypto support (Personal Security Manager)],
5246     MOZ_PSM=,
5247     MOZ_PSM=1 )
5249 dnl ========================================================
5250 dnl = JS Debugger XPCOM component (js/jsd)
5251 dnl ========================================================
5252 MOZ_ARG_DISABLE_BOOL(jsd,
5253 [  --disable-jsd           Disable JavaScript debug library],
5254     MOZ_JSDEBUGGER=,
5255     MOZ_JSDEBUGGER=1)
5258 dnl ========================================================
5259 dnl = Disable plugin support
5260 dnl ========================================================
5261 MOZ_ARG_DISABLE_BOOL(plugins,
5262 [  --disable-plugins       Disable plugins support],
5263     MOZ_PLUGINS=,
5264     MOZ_PLUGINS=1)
5266 dnl ========================================================
5267 dnl = Disable building dbm
5268 dnl ========================================================
5269 MOZ_ARG_DISABLE_BOOL(dbm,
5270 [  --disable-dbm       Disable building dbm],
5271     NSS_DISABLE_DBM=1,
5272     NSS_DISABLE_DBM=)
5274 dnl ========================================================
5275 dnl = Open JVM Interface (OJI) support
5276 dnl ========================================================
5277 MOZ_ARG_DISABLE_BOOL(oji,
5278 [  --disable-oji           Disable Open JVM Integration support],
5279     MOZ_OJI=,
5280     MOZ_OJI=1)
5281 if test -n "$MOZ_OJI"; then
5282     AC_DEFINE(OJI)
5285 dnl bi-directional support always on
5286 IBMBIDI=1
5287 AC_DEFINE(IBMBIDI)
5289 dnl ========================================================
5290 dnl view source support on by default
5291 dnl ========================================================
5292 MOZ_ARG_DISABLE_BOOL(view-source,
5293 [  --disable-view-source     Disable view source support],
5294     MOZ_VIEW_SOURCE=,
5295     MOZ_VIEW_SOURCE=1 )
5296 if test "$MOZ_VIEW_SOURCE"; then
5297     AC_DEFINE(MOZ_VIEW_SOURCE)
5301 dnl ========================================================
5302 dnl accessibility support on by default on all platforms 
5303 dnl except OS X.
5304 dnl ========================================================
5305 MOZ_ARG_DISABLE_BOOL(accessibility,
5306 [  --disable-accessibility Disable accessibility support (off by default on OS X)],
5307     ACCESSIBILITY=,
5308     ACCESSIBILITY=1 )
5309 if test "$ACCESSIBILITY"; then
5310     AC_DEFINE(ACCESSIBILITY)
5313 if test -n "$ACCESSIBILITY" -a "$COMPILE_ENVIRONMENT" = "1"; then
5314 case "$target" in
5315 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5316     if test "$ac_cv_header_atlbase_h" = "no"; then
5317         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.])
5318     fi
5319     if test "$ac_cv_header_oleacc_idl" = "no"; then
5320         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.])
5321     fi
5322     ;;
5323 esac
5326 dnl ========================================================
5327 dnl xpfe/components on by default
5328 dnl ========================================================
5329 MOZ_ARG_DISABLE_BOOL(xpfe-components,
5330 [  --disable-xpfe-components
5331                           Disable xpfe components],
5332     MOZ_XPFE_COMPONENTS=,
5333     MOZ_XPFE_COMPONENTS=1 )
5335 dnl ========================================================
5336 dnl xpinstall support on by default
5337 dnl ========================================================
5338 MOZ_ARG_DISABLE_BOOL(xpinstall,
5339 [  --disable-xpinstall     Disable xpinstall support],
5340     MOZ_XPINSTALL=,
5341     MOZ_XPINSTALL=1 )
5342 if test "$MOZ_XPINSTALL"; then
5343     AC_DEFINE(MOZ_XPINSTALL)
5346 dnl ========================================================
5347 dnl xpcom js loader support on by default
5348 dnl ========================================================
5349 MOZ_ARG_DISABLE_BOOL(jsloader,
5350 [  --disable-jsloader      Disable xpcom js loader support],
5351     MOZ_JSLOADER=,
5352     MOZ_JSLOADER=1 )
5353 if test "$MOZ_JSLOADER"; then
5354     AC_DEFINE(MOZ_JSLOADER)
5357 dnl ========================================================
5358 dnl Disable printing
5359 dnl ========================================================
5360 MOZ_ARG_DISABLE_BOOL(printing,
5361 [  --disable-printing  Disable printing support],
5362     NS_PRINTING=,
5363     NS_PRINTING=1 )
5365 if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
5366     AC_MSG_WARN([Printing does not work with Qt at this time. Omitting printing support.])
5367     NS_PRINTING=
5370 if test "$NS_PRINTING"; then
5371     AC_DEFINE(NS_PRINTING)
5372     AC_DEFINE(NS_PRINT_PREVIEW)
5375 dnl ========================================================
5376 dnl use native unicode converters
5377 dnl ========================================================
5378 MOZ_ARG_ENABLE_BOOL(native-uconv,
5379 [  --enable-native-uconv   Enable iconv support],
5380     MOZ_USE_NATIVE_UCONV=1,
5381     MOZ_USE_NATIVE_UCONV= )
5382 if test "$MOZ_USE_NATIVE_UCONV"; then
5383     AC_DEFINE(MOZ_USE_NATIVE_UCONV)
5385 if test "$OS_ARCH" != "WINCE" -a "$OS_ARCH" != "WINNT" -a "$MOZ_USE_NATIVE_UCONV" -a "$ac_cv_func_iconv" != "yes"; then
5386     AC_MSG_ERROR([iconv() not found.  Cannot enable native uconv support.])
5390 dnl ========================================================
5391 dnl Libeditor can be build as plaintext-only,
5392 dnl or as a full html and text editing component.
5393 dnl We build both by default.
5394 dnl ========================================================
5395 MOZ_ARG_ENABLE_BOOL(plaintext-editor-only,
5396 [  --enable-plaintext-editor-only
5397                           Allow only plaintext editing],
5398     MOZ_PLAINTEXT_EDITOR_ONLY=1,
5399     MOZ_PLAINTEXT_EDITOR_ONLY= )
5400 dnl Note the #define is MOZILLA, not MOZ, for compat with the Mac build.
5401 AC_SUBST(MOZ_PLAINTEXT_EDITOR_ONLY)
5403 dnl ========================================================
5404 dnl = Drop XPCOM Obsolete library
5405 dnl ========================================================
5406 MOZ_ARG_DISABLE_BOOL(xpcom-obsolete,
5407 [  --disable-xpcom-obsolete           Disable XPCOM Obsolete Library],
5408     MOZ_NO_XPCOM_OBSOLETE=1,
5409     MOZ_NO_XPCOM_OBSOLETE=)
5411 if test -n "$MOZ_NO_XPCOM_OBSOLETE"; then
5412     AC_DEFINE(MOZ_NO_XPCOM_OBSOLETE)
5415 dnl ========================================================
5416 dnl = Disable Fast Load
5417 dnl ========================================================
5418 MOZ_ARG_DISABLE_BOOL(xpcom-fastload,
5419 [  --disable-xpcom-fastload           Disable XPCOM fastload support],
5420     MOZ_NO_FAST_LOAD=1,
5421     MOZ_NO_FAST_LOAD=)
5423 AC_SUBST(MOZ_NO_FAST_LOAD)
5425 if test -n "$MOZ_NO_FAST_LOAD"; then
5426     AC_DEFINE(MOZ_NO_FAST_LOAD)
5429 dnl ========================================================
5430 dnl = Disable Ogg Codecs
5431 dnl ========================================================
5432 MOZ_ARG_DISABLE_BOOL(ogg,
5433 [  --disable-ogg           Disable Ogg Codec support],
5434     MOZ_OGG=,
5435     MOZ_OGG=1)
5437 AC_SUBST(MOZ_OGG)
5439 if test -n "$MOZ_OGG"; then
5440     AC_DEFINE(MOZ_OGG)
5441     MOZ_SYDNEYAUDIO=1
5442     MOZ_MEDIA=1
5445 dnl ========================================================
5446 dnl = Disable Wave decoder support
5447 dnl ========================================================
5448 MOZ_ARG_DISABLE_BOOL(wave,
5449 [  --disable-wave          Disable Wave decoder support],
5450     MOZ_WAVE=,
5451     MOZ_WAVE=1)
5453 AC_SUBST(MOZ_WAVE)
5455 if test -n "$MOZ_WAVE"; then
5456     AC_DEFINE(MOZ_WAVE)
5457     MOZ_SYDNEYAUDIO=1
5458     MOZ_MEDIA=1
5461 dnl ========================================================
5462 dnl = Handle dependent SYDNEYAUDIO and MEDIA defines
5463 dnl ========================================================
5465 AC_SUBST(MOZ_SYDNEYAUDIO)
5467 if test -n "$MOZ_SYDNEYAUDIO"; then
5468     AC_DEFINE(MOZ_SYDNEYAUDIO)
5471 AC_SUBST(MOZ_MEDIA)
5473 if test -n "$MOZ_MEDIA"; then
5474     AC_DEFINE(MOZ_MEDIA)
5477 dnl ========================================================
5478 dnl = Check alsa availability on Linux if using sydneyaudio
5479 dnl ========================================================
5481 dnl If using sydneyaudio with Linux, ensure that the alsa library is available
5482 if test "$COMPILE_ENVIRONMENT"; then
5483 if test -n "$MOZ_SYDNEYAUDIO"; then
5484    case "$target_os" in
5485 linux*)
5486       AC_CHECK_LIB(asound, snd_pcm_open,,AC_MSG_ERROR([Ogg support on Linux requires the alsa library]))
5487       ;;
5488    esac
5492 dnl ========================================================
5493 dnl Permissions System
5494 dnl ========================================================
5495 MOZ_ARG_DISABLE_BOOL(permissions,
5496 [  --disable-permissions   Disable permissions (popup and cookie blocking)],
5497     MOZ_PERMISSIONS=,
5498     MOZ_PERMISSIONS=1
5501 dnl ========================================================
5502 dnl NegotiateAuth
5503 dnl ========================================================
5504 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5505 [  --disable-negotiateauth Disable GSS-API negotiation ],
5506     MOZ_AUTH_EXTENSION=,
5507     MOZ_AUTH_EXTENSION=1 )
5509 dnl ========================================================
5510 dnl XTF
5511 dnl ========================================================
5512 MOZ_ARG_DISABLE_BOOL(xtf,
5513 [  --disable-xtf           Disable XTF (pluggable xml tags) support],
5514     MOZ_XTF=,
5515     MOZ_XTF=1 )
5516 if test "$MOZ_XTF"; then
5517   AC_DEFINE(MOZ_XTF)
5520 dnl ========================================================
5521 dnl Inspector APIs
5522 dnl ========================================================
5523 MOZ_ARG_DISABLE_BOOL(inspector-apis,
5524 [  --disable-inspector-apis Disable the DOM inspection APIs ],
5525     MOZ_NO_INSPECTOR_APIS=1,
5526     MOZ_NO_INSPECTOR_APIS= )
5528 dnl ========================================================
5529 dnl Pref extensions (autoconfig and system-pref)
5530 dnl ========================================================
5531 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5532 [  --disable-pref-extensions
5533                           Disable pref extensions such as autoconfig and
5534                           system-pref],
5535   MOZ_PREF_EXTENSIONS=,
5536   MOZ_PREF_EXTENSIONS=1 )
5538 dnl ========================================================
5539 dnl = Universalchardet
5540 dnl ========================================================
5541 MOZ_ARG_DISABLE_BOOL(universalchardet,
5542 [  --disable-universalchardet
5543                           Disable universal encoding detection],
5544   MOZ_UNIVERSALCHARDET=,
5545   MOZ_UNIVERSALCHARDET=1 )
5547 dnl ========================================================
5548 dnl JavaXPCOM
5549 dnl ========================================================
5550 MOZ_ARG_ENABLE_BOOL(javaxpcom,
5551 [  --enable-javaxpcom
5552                           Enable Java-XPCOM bridge],
5553     MOZ_JAVAXPCOM=1,
5554     MOZ_JAVAXPCOM= )
5556 if test -n "${MOZ_JAVAXPCOM}"; then
5557   case "$host_os" in
5558     cygwin*|msvc*|mks*)
5559       if test -n "$JAVA_HOME"; then
5560         JAVA_HOME=`cygpath -u \`cygpath -m -s "$JAVA_HOME"\``
5561       fi
5562       ;;
5563     *mingw*)
5564       if test -n "$JAVA_HOME"; then
5565         JAVA_HOME=`cd "$JAVA_HOME" && pwd`
5566       fi
5567       ;;
5568   esac
5570   if test -n "${JAVA_INCLUDE_PATH}"; then
5571     dnl Make sure jni.h exists in the given include path.
5572     if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5573       AC_MSG_ERROR([jni.h was not found in given include path $JAVA_INCLUDE_PATH.])
5574     fi
5575   else
5576     case "$target_os" in
5577       darwin*)
5578         dnl Default to java system location
5579         JAVA_INCLUDE_PATH=/System/Library/Frameworks/JavaVM.framework/Headers
5580         ;;
5581       *)
5582         dnl Try $JAVA_HOME
5583         JAVA_INCLUDE_PATH="$JAVA_HOME/include"
5584         ;;
5585     esac
5586     if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5587       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.])
5588     fi
5589   fi
5591   if test -n "${JAVA_BIN_PATH}"; then
5592     dnl Look for javac and jar in the specified path.
5593     JAVA_PATH="$JAVA_BIN_PATH"
5594   else
5595     dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5596     JAVA_PATH="$JAVA_HOME/bin:$PATH"
5597   fi
5599   MOZ_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5600   MOZ_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5601   MOZ_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5602   if test -z "$JAVA" || test "$JAVA" = ":" || test -z "$JAVAC" || test "$JAVAC" = ":" || test -z "$JAR" || test "$JAR" = ":"; then
5603     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.])
5604   fi
5607 dnl ========================================================
5608 dnl = Breakpad crash reporting (on by default on supported platforms)
5609 dnl ========================================================
5611 if (test "$OS_ARCH" = "WINNT" -a -z "$GNU_CC" \
5612     || test "$OS_ARCH" = "Darwin" \
5613     || test "$OS_ARCH" = "Linux" -a "$CPU_ARCH" = "x86" \
5614     || test "$OS_ARCH" = "SunOS") \
5615    && test -z "$HAVE_64BIT_OS"; then
5616    MOZ_CRASHREPORTER=1
5619 MOZ_ARG_DISABLE_BOOL(crashreporter,
5620 [  --disable-crashreporter          Disable breakpad crash reporting],
5621     MOZ_CRASHREPORTER=,
5622     MOZ_CRASHREPORTER=1)
5624 if test -n "$MOZ_CRASHREPORTER"; then
5625    AC_DEFINE(MOZ_CRASHREPORTER)
5627   if (test "$OS_ARCH" = "Linux" || test "$OS_ARCH" = "SunOS") && \
5628     test -z "$SKIP_LIBRARY_CHECKS"; then
5629     PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
5630     AC_SUBST(MOZ_GTHREAD_CFLAGS)
5631     AC_SUBST(MOZ_GTHREAD_LIBS)
5633     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.])])
5634   fi
5637 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
5638 [  --with-crashreporter-enable-percent=NN  Enable sending crash reports by default on NN% of users. (default=100)],
5639 [ val=`echo $withval | sed 's/[^0-9]//g'`
5640     MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
5642 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
5643    MOZ_CRASHREPORTER_ENABLE_PERCENT=100
5645 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
5647 dnl ========================================================
5648 dnl = Enable compilation of specific extension modules
5649 dnl ========================================================
5651 MOZ_ARG_ENABLE_STRING(extensions,
5652 [  --enable-extensions     Enable extensions],
5653 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5654     if test "$option" = "yes" || test "$option" = "all"; then
5655         AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
5656     elif test "$option" = "no" || test "$option" = "none"; then
5657         MOZ_EXTENSIONS=""
5658     elif test "$option" = "default"; then
5659         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
5660     elif test `echo "$option" | grep -c \^-` != 0; then
5661         option=`echo $option | sed 's/^-//'`
5662         MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
5663     else
5664         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
5665     fi
5666 done],
5667     MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
5669 if test -z "$MOZ_ENABLE_GNOMEVFS" && test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
5670     # Suppress warning on non-X11 platforms
5671     if test -n "$MOZ_X11"; then
5672         AC_MSG_WARN([Cannot build gnomevfs without required libraries. Removing gnomevfs from MOZ_EXTENSIONS.])
5673     fi
5674     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
5677 if test -z "$MOZ_JSDEBUGGER" && test `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
5678     AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
5679     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
5682 dnl This might be temporary: build tridentprofile only on Windows
5683 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0 && test "$OS_ARCH" != "WINNT"; then
5684     AC_MSG_WARN([tridentprofile extension works only on Windows at this time. Removing tridentprofile from MOZ_EXTENSIONS.])
5685     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5688 dnl cookie must be built before tridentprofile. put it at list's end.
5689 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0; then
5690   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5691   MOZ_EXTENSIONS="$MOZ_EXTENSIONS tridentprofile"
5694 dnl xforms requires xtf and schema-validation
5695 if test -z "$MOZ_XTF" && test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
5696     AC_MSG_WARN([Cannot build XForms without XTF support.  Removing XForms from MOZ_EXTENSIONS.])
5697     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5699 if test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0 && test `echo "$MOZ_EXTENSIONS" | grep -c schema-validation` -eq 0; then
5700     AC_MSG_WARN([Cannot build XForms without schema validation.  Removing XForms from MOZ_EXTENSIONS.])
5701     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5704 if test `echo "$MOZ_EXTENSIONS" | grep -c auth` -ne 0; then
5705     AC_MSG_WARN([auth is no longer an extension, use --disable-negotiateauth to disable.])
5706     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|auth||g'`
5709 if test `echo "$MOZ_EXTENSIONS" | grep -c 'cookie\|permissions'` -ne 0; then
5710     AC_MSG_WARN([cookie and permissions are no longer extensions, use --disable-permissions to disable.])
5711     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|cookie||g; s|permissions||g'`
5714 if test `echo "$MOZ_EXTENSIONS" | grep -c pref` -ne 0; then
5715     AC_MSG_WARN([pref is no longer an extension, use --disable-pref-extensions to disable.])
5716     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|pref||g'`
5719 if test `echo "$MOZ_EXTENSIONS" | grep -c universalchardet` -ne 0; then
5720     AC_MSG_WARN([universalchardet is no longer an extension, use --disable-universalchardet to disable.])
5721     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|universalchardet||g'`
5724 if test `echo "$MOZ_EXTENSIONS" | grep -c java` -ne 0; then
5725     AC_MSG_WARN([java is no longer an extension, use --enable-javaxpcom to enable.])
5726     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|java||g'`
5729 if test `echo "$MOZ_EXTENSIONS" | grep -c spellcheck` -ne 0; then
5730     AC_MSG_WARN([spellcheck is no longer an extension.])
5731     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|spellcheck||g'`
5734 if test -n "$MOZ_NO_XPCOM_OBSOLETE" && test `echo "$MOZ_EXTENSIONS" | grep -c sroaming` -ne 0; then
5735     AC_MSG_WARN([Cannot currently build sroaming without xpcom obsolete -- bug 249343. Removing sroaming from MOZ_EXTENSIONS.])
5736     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|sroaming||'`
5739 dnl Remove dupes
5740 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
5742 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
5743 dnl when trying to build a non-existent extension.
5744 for extension in $MOZ_EXTENSIONS; do
5745     if test ! -d "${srcdir}/extensions/${extension}"; then
5746         AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
5747     fi
5748 done
5751 dnl ========================================================
5752 dnl Image decoders
5753 dnl ========================================================
5754 case "$MOZ_WIDGET_TOOLKIT" in
5755 beos|windows|os2|mac|cocoa)
5756     ;;
5758     if test -z "$MOZ_ENABLE_GTK2" && test -z "$MOZ_ENABLE_QT"; then
5759        MOZ_IMG_DECODERS_DEFAULT=`echo $MOZ_IMG_DECODERS_DEFAULT | sed -e 's|icon||'`
5760     fi
5761     ;;
5762 esac
5764 MOZ_ARG_ENABLE_STRING(image-decoders,
5765 [  --enable-image-decoders[={mod1,mod2,default,all,none}]
5766                           Enable specific image decoders],
5767 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5768     if test "$option" = "yes" || test "$option" = "all"; then
5769         MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5770     elif test "$option" = "no" || test "$option" = "none"; then
5771         MOZ_IMG_DECODERS=""
5772     elif test "$option" = "default"; then
5773         MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5774     elif test `echo "$option" | grep -c \^-` != 0; then
5775         option=`echo $option | sed 's/^-//'`
5776         MOZ_IMG_DECODERS=`echo "$MOZ_IMG_DECODERS" | sed "s/ ${option}//"`
5777     else
5778         MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $option"
5779     fi
5780 done],
5781     MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS_DEFAULT")
5783 dnl Dupes are removed in the encoder section because it will also add decoders
5785 dnl ========================================================
5786 dnl Image encoders
5787 dnl ========================================================
5788 MOZ_ARG_ENABLE_STRING(image-encoders,
5789 [  --enable-image-encoders[={mod1,mod2,default,all,none}]
5790                           Enable specific image encoders],
5791 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5792     if test "$option" = "yes" || test "$option" = "all"; then
5793         addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5794     elif test "$option" = "no" || test "$option" = "none"; then
5795         MOZ_IMG_ENCODERS=""
5796         addencoder=""
5797     elif test "$option" = "default"; then
5798         addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5799     elif test `echo "$option" | grep -c \^-` != 0; then
5800         option=`echo $option | sed 's/^-//'`
5801         addencoder=`echo "$MOZ_IMG_ENCODERS" | sed "s/ ${option}//"`
5802     else
5803         addencoder="$option"
5804     fi
5805     MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS $addencoder"
5806 done],
5807     MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS_DEFAULT")
5809 dnl Remove dupes
5810 MOZ_IMG_DECODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_DECODERS}`
5811 MOZ_IMG_ENCODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_ENCODERS}`
5813 dnl ========================================================
5814 dnl MathML on by default
5815 dnl ========================================================
5816 MOZ_ARG_DISABLE_BOOL(mathml,
5817 [  --disable-mathml        Disable MathML support],
5818     MOZ_MATHML=,
5819     MOZ_MATHML=1 )
5820 if test "$MOZ_MATHML"; then
5821   AC_DEFINE(MOZ_MATHML)
5824 dnl ========================================================
5825 dnl Canvas
5826 dnl ========================================================
5827 MOZ_ARG_DISABLE_BOOL(canvas,
5828 [  --disable-canvas          Disable html:canvas feature],
5829     MOZ_ENABLE_CANVAS=,
5830     MOZ_ENABLE_CANVAS=1 )
5831 if test -n "$MOZ_ENABLE_CANVAS"; then
5832     AC_DEFINE(MOZ_ENABLE_CANVAS)
5834 AC_SUBST(MOZ_ENABLE_CANVAS)
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    FC_FONT_FEATURE="#define CAIRO_DISABLE_FONTCONFIG 1"
5876    FT2_CFLAGS="-I${topsrcdir}/modules/freetype2/include"
5877    CAIRO_FT_CFLAGS="-I${topsrcdir}/modules/freetype2/include"
5878    FT2_LIBS="${LIBXUL_DIST}/lib/freetype2.lib"
5879    CAIRO_FT_LIBS = "${LIBXUL_DIST}/lib/freetype2.lib"
5880    AC_DEFINE(HAVE_FT_BITMAP_SIZE_Y_PPEM)
5881    AC_DEFINE(HAVE_FT_GLYPHSLOT_EMBOLDEN)
5882    AC_DEFINE(HAVE_FT_LOAD_SFNT_TABLE)
5883    AC_SUBST(CAIRO_FT_CFLAGS)
5887 dnl ========================================================
5888 dnl Installer
5889 dnl ========================================================
5890 case "$target_os" in
5891     aix*|solaris*|linux*|msvc*|mks*|cygwin*|mingw*|os2*|wince*)
5892         MOZ_INSTALLER=1
5893         ;;
5894 esac
5896 MOZ_ARG_DISABLE_BOOL(installer,
5897 [  --disable-installer     Disable building of installer],
5898     MOZ_INSTALLER=,
5899     MOZ_INSTALLER=1 )
5900 if test -n "$MOZ_INSTALLER" -a "$OS_ARCH" = "WINNT"; then
5901     # Disable installer for Windows builds that use the new toolkit if NSIS
5902     # isn't in the path.
5903     MOZ_PATH_PROGS(MAKENSIS, makensis)
5904     if test -z "$MAKENSIS" || test "$MAKENSIS" = ":"; then
5905         AC_MSG_ERROR([To build the installer makensis is required in your path. To build without the installer reconfigure using --disable-installer.])
5906     fi
5907     # The Windows build for NSIS requires the iconv command line utility to
5908     # convert the charset of the locale files.
5909     MOZ_PATH_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5910     if test -z "$HOST_ICONV"; then
5911         AC_MSG_ERROR([To build the installer iconv is required in your path. To build without the installer reconfigure using --disable-installer.])
5912     fi
5915 # Automatically disable installer if xpinstall isn't built
5916 if test -z "$MOZ_XPINSTALL"; then
5917     MOZ_INSTALLER=
5919 AC_SUBST(MOZ_INSTALLER)
5921 AC_MSG_CHECKING([for tar archiver])
5922 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
5923 if test -z "$TAR"; then
5924     AC_MSG_ERROR([no tar archiver found in \$PATH])
5926 AC_MSG_RESULT([$TAR])
5927 AC_SUBST(TAR)
5929 AC_MSG_CHECKING([for wget])
5930 AC_CHECK_PROGS(WGET, wget, "")
5931 AC_MSG_RESULT([$WGET])
5932 AC_SUBST(WGET)
5934 dnl ========================================================
5935 dnl Updater
5936 dnl ========================================================
5938 MOZ_ARG_DISABLE_BOOL(updater,
5939 [  --disable-updater       Disable building of updater],
5940     MOZ_UPDATER=,
5941     MOZ_UPDATER=1 )
5942 AC_SUBST(MOZ_UPDATER)
5944 # app update channel is 'default' when not supplied.
5945 MOZ_ARG_ENABLE_STRING([update-channel],
5946 [  --enable-update-channel=CHANNEL
5947                            Select application update channel (default=default)],
5948     MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
5950 if test -z "$MOZ_UPDATE_CHANNEL"; then
5951     MOZ_UPDATE_CHANNEL=default
5953 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
5955 # tools/update-packaging is not checked out by default.
5956 MOZ_ARG_ENABLE_BOOL(update-packaging,
5957 [  --enable-update-packaging
5958                            Enable tools/update-packaging],
5959     MOZ_UPDATE_PACKAGING=1,
5960     MOZ_UPDATE_PACKAGING= )
5961 AC_SUBST(MOZ_UPDATE_PACKAGING)
5963 dnl ========================================================
5964 dnl ActiveX
5965 dnl ========================================================
5967 MOZ_ARG_DISABLE_BOOL(xpconnect-idispatch,
5968 [  --disable-xpconnect-idispatch
5969                           Disable building of xpconnect support for IDispatch
5970                           (win32 only)],
5971     XPC_IDISPATCH_SUPPORT=,
5972     XPC_IDISPATCH_SUPPORT=1)
5973 AC_SUBST(XPC_IDISPATCH_SUPPORT)
5975 MOZ_ARG_DISABLE_BOOL(activex,
5976 [  --disable-activex       Disable building of ActiveX control (win32 only)],
5977     MOZ_NO_ACTIVEX_SUPPORT=1,
5978     MOZ_NO_ACTIVEX_SUPPORT= )
5979 AC_SUBST(MOZ_NO_ACTIVEX_SUPPORT)
5981 MOZ_ARG_DISABLE_BOOL(activex-scripting,
5982 [  --disable-activex-scripting
5983                           Disable building of ActiveX scripting support (win32)],
5984     MOZ_ACTIVEX_SCRIPTING_SUPPORT=,
5985     MOZ_ACTIVEX_SCRIPTING_SUPPORT=1)
5986 AC_SUBST(MOZ_ACTIVEX_SCRIPTING_SUPPORT)
5988 if test -n "$MOZ_NO_ACTIVEX_SUPPORT" -a -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT";
5989 then
5990     AC_MSG_ERROR([Cannot enable ActiveX scripting support when ActiveX support is disabled.])
5993 if test "$COMPILE_ENVIRONMENT" = "1"; then
5994 if test -n "$XPC_IDISPATCH_SUPPORT" -o -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
5995 case "$target" in
5996 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5997     if test "$ac_cv_header_atlbase_h" = "no"; then
5998         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.])
5999     fi
6000     ;;
6001 esac
6005 dnl ========================================================
6006 dnl leaky
6007 dnl ========================================================
6008 MOZ_ARG_ENABLE_BOOL(leaky,
6009 [  --enable-leaky          Build leaky memory tool],
6010     MOZ_LEAKY=1,
6011     MOZ_LEAKY=)
6014 dnl ========================================================
6015 dnl xpctools
6016 dnl ========================================================
6017 MOZ_ARG_ENABLE_BOOL(xpctools,
6018 [  --enable-xpctools       Build JS profiling tool],
6019     MOZ_XPCTOOLS=1,
6020     MOZ_XPCTOOLS= )
6023 dnl ========================================================
6024 dnl build the tests by default
6025 dnl ========================================================
6026 MOZ_ARG_DISABLE_BOOL(tests,
6027 [  --disable-tests         Do not build test libraries & programs],
6028     ENABLE_TESTS=,
6029     ENABLE_TESTS=1 )
6031 dnl ========================================================
6032 dnl parental controls (for Windows Vista)
6033 dnl ========================================================
6034 MOZ_ARG_DISABLE_BOOL(parental-controls,
6035 [  --disable-parental-controls
6036                            Do not build parental controls],
6037    MOZ_DISABLE_PARENTAL_CONTROLS=1,
6038    MOZ_DISABLE_PARENTAL_CONTROLS=)
6039 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
6040     AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
6043 dnl ========================================================
6044 dnl Vista SDK specific api
6045 dnl ========================================================
6046 MOZ_ARG_DISABLE_BOOL(vista-sdk-requirements,
6047 [  --disable-vista-sdk-requirements
6048                            Do not build Vista SDK specific code],
6049    MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=1,
6050    MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=)
6051 if test -n "$COMPILE_ENVIRONMENT"; then
6052 if test -n "$MOZ_DISABLE_VISTA_SDK_REQUIREMENTS"; then
6053     AC_MSG_WARN([Resulting builds will not be compatible with Windows Vista. (bug 428970)])
6054     AC_DEFINE(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
6055     if test -z "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
6056         AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
6057     fi
6058     MOZ_DISABLE_PARENTAL_CONTROLS=1
6059 else
6060 case "$target" in
6061 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
6062     if test "$ac_cv_header_wpcapi_h" = "no"; then
6063         AC_MSG_ERROR([System header wpcapi.h is not available. See updated http://developer.mozilla.org/en/docs/wpcapi.h for details on fixing this problem.])
6064     fi
6065     ;;
6066 esac
6069 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
6070 AC_SUBST(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
6072 dnl ========================================================
6073 dnl =
6074 dnl = Module specific options
6075 dnl =
6076 dnl ========================================================
6077 MOZ_ARG_HEADER(Individual module options)
6079 dnl ========================================================
6080 dnl = Enable Lea malloc in xpcom. OFF by default.
6081 dnl ========================================================
6082 MOZ_ARG_ENABLE_BOOL(xpcom-lea,
6083 [  --enable-xpcom-lea      Use Lea malloc in xpcom ],
6084     XPCOM_USE_LEA=1,
6085     XPCOM_USE_LEA= )
6086 if test -n "$XPCOM_USE_LEA"; then
6087     AC_DEFINE(XPCOM_USE_LEA)
6090 dnl ========================================================
6091 dnl = Enable places (new history/bookmarks)
6092 dnl ========================================================
6093 MOZ_ARG_ENABLE_BOOL(places,
6094 [  --enable-places        Enable 'places' bookmark/history implementation],
6095     MOZ_PLACES=1,
6096     MOZ_PLACES= )
6097 if test -n "$MOZ_PLACES"; then
6098     AC_DEFINE(MOZ_PLACES)
6099     if test -z "$MOZ_MAIL_NEWS"; then
6100       MOZ_MORK=
6101     fi
6102     MOZ_MORKREADER=1
6103 else
6104   if test "$MOZ_BUILD_APP" = "browser"; then
6105     AC_MSG_ERROR([Cannot build Firefox with --disable-places.])
6106   fi
6109 dnl ========================================================
6110 dnl = Disable feed handling components
6111 dnl ========================================================
6112 MOZ_ARG_DISABLE_BOOL(feeds,
6113 [  --disable-feeds        Disable feed handling and processing components],
6114     MOZ_FEEDS=,
6115     MOZ_FEEDS=1 )
6116 if test -n "$MOZ_FEEDS"; then
6117     AC_DEFINE(MOZ_FEEDS)
6118 else
6119     if test "$MOZ_BUILD_APP" = "browser"; then
6120         AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
6121     fi
6124 dnl ========================================================
6125 dnl = Enable mozStorage
6126 dnl ========================================================
6127 dnl Implicitly enabled by default if building calendar or places
6128 MOZ_ARG_ENABLE_BOOL(storage,
6129 [  --enable-storage        Enable mozStorage module and related components],
6130     MOZ_STORAGE=1,
6131     MOZ_STORAGE= )
6132 if test -n "$MOZ_STORAGE"; then
6133     AC_DEFINE(MOZ_STORAGE)
6136 dnl ========================================================
6137 dnl Check for sqlite
6138 dnl ========================================================
6140 MOZ_NATIVE_SQLITE=
6141 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6142 [  --enable-system-sqlite  Use system sqlite (located with pkgconfig)],
6143 MOZ_NATIVE_SQLITE=1,
6144 MOZ_NATIVE_SQLITE= )
6146 if test -z "$MOZ_NATIVE_SQLITE"
6147 then
6148     SQLITE_CFLAGS=
6149     SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,sqlite3,$(DIST)/lib)'
6150 else
6151     PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6154 AC_SUBST(MOZ_NATIVE_SQLITE)
6156 dnl ========================================================
6157 dnl = Enable help viewer (off by default)
6158 dnl ========================================================
6159 MOZ_ARG_ENABLE_BOOL(help-viewer,
6160 [  --enable-help-viewer        Enable help viewer],
6161     MOZ_HELP_VIEWER=1,
6162     MOZ_HELP_VIEWER= )
6163 if test -n "$MOZ_HELP_VIEWER"; then
6164      AC_DEFINE(MOZ_HELP_VIEWER)
6166 AC_SUBST(MOZ_HELP_VIEWER)
6167 if test "$MOZ_BUILD_APP" = "browser" -a -n "$MOZ_HELP_VIEWER"; then
6168     AC_MSG_ERROR([Cannot build Firefox with --enable-help-viewer.])
6171 dnl ========================================================
6172 dnl = Enable safe browsing (anti-phishing)
6173 dnl ========================================================
6174 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6175 [  --enable-safe-browsing        Enable safe browsing (anti-phishing) implementation],
6176     MOZ_SAFE_BROWSING=1,
6177     MOZ_SAFE_BROWSING= )
6178 if test -n "$MOZ_SAFE_BROWSING"; then
6179     AC_DEFINE(MOZ_SAFE_BROWSING)
6181 AC_SUBST(MOZ_SAFE_BROWSING)
6183 dnl ========================================================
6184 dnl = Enable url-classifier
6185 dnl ========================================================
6186 dnl Implicitly enabled by default if building with safe-browsing
6187 if test -n "$MOZ_SAFE_BROWSING"; then
6188     MOZ_URL_CLASSIFIER=1
6190 MOZ_ARG_ENABLE_BOOL(url-classifier,
6191 [  --enable-url-classifier        Enable url classifier module],
6192     MOZ_URL_CLASSIFIER=1,
6193     MOZ_URL_CLASSIFIER= )
6194 if test -n "$MOZ_URL_CLASSIFIER"; then
6195     AC_DEFINE(MOZ_URL_CLASSIFIER)
6197 AC_SUBST(MOZ_URL_CLASSIFIER)
6199 dnl ========================================================
6200 dnl = Disable zipwriter
6201 dnl ========================================================
6202 MOZ_ARG_DISABLE_BOOL(zipwriter,
6203 [  --disable-zipwriter             Disable zipwriter component],
6204     MOZ_ZIPWRITER=,
6205     MOZ_ZIPWRITER=1 )
6206 AC_SUBST(MOZ_ZIPWRITER)
6208 dnl ========================================================
6209 dnl = Enable Ultrasparc specific optimizations for JS
6210 dnl ========================================================
6211 MOZ_ARG_ENABLE_BOOL(js-ultrasparc,
6212 [  --enable-js-ultrasparc  Use UltraSPARC optimizations in JS],
6213     JS_ULTRASPARC_OPTS=1,
6214     JS_ULTRASPARC_OPTS= )
6216 dnl only enable option for ultrasparcs
6217 if test `echo "$target_os" | grep -c \^solaris 2>/dev/null` = 0 -o \
6218     "$OS_TEST" != "sun4u"; then
6219     JS_ULTRASPARC_OPTS=
6221 AC_SUBST(JS_ULTRASPARC_OPTS)
6223 dnl ========================================================
6224 dnl = Hildon and OSSO checks
6225 dnl ========================================================
6226 PKG_CHECK_MODULES(LIBHILDONMIME,libhildonmime,
6227                   MOZ_PLATFORM_HILDON=1,
6228                   MOZ_PLATFORM_HILDON=)
6229 if test $MOZ_PLATFORM_HILDON; then
6230    AC_DEFINE(MOZ_PLATFORM_HILDON)
6231    X11_COMPOSITED_PLUGINS="yes"
6233 AC_SUBST(LIBHILDONMIME_CFLAGS)
6234 AC_SUBST(LIBHILDONMIME_LIBS)
6236 if test "$X11_COMPOSITED_PLUGINS" = "yes"; then
6237     dnl if we have Xcomposite we should also have Xdamage and Xfixes
6238     AC_CHECK_HEADERS([X11/extensions/Xdamage.h], [],
6239                      [AC_MSG_ERROR([Couldn't find X11/extentsions/Xdamage.h which is required for composited plugins.])])
6240     AC_CHECK_LIB(Xcomposite, XCompositeRedirectWindow, [XCOMPOSITE_LIBS="-lXcomposite -lXdamage -lXfixes"],
6241                  [MISSING_X="$MISSING_X -lXcomposite"], $XLIBS)
6243 AC_SUBST(XCOMPOSITE_LIBS)
6245 PKG_CHECK_MODULES(LIBOSSO,libosso,
6246                   NS_OSSO=1,
6247                   NS_OSSO=)
6249 if test $NS_OSSO; then
6250     if test -z "$MOZ_ENABLE_DBUS"; then
6251         AC_MSG_ERROR([DBus is required when building for OSSO])
6252     fi
6253     AC_DEFINE(NS_OSSO)
6254     MOZ_GFX_OPTIMIZE_MOBILE=1
6256 AC_SUBST(LIBOSSO_CFLAGS)
6257 AC_SUBST(LIBOSSO_LIBS)
6259 PKG_CHECK_MODULES(MOZ_LOCATION, [liblocation gpsbt],
6260                   NS_MAEMO_LOCATION=1,
6261                   NS_MAEMO_LOCATION=)
6263 if test $NS_MAEMO_LOCATION; then
6264   AC_DEFINE(NS_MAEMO_LOCATION)
6267 AC_SUBST(MOZ_LOCATION_CFLAGS)
6268 AC_SUBST(MOZ_LOCATION_LIBS)
6270 dnl ========================================================
6271 dnl =
6272 dnl = Feature options that require extra sources to be pulled
6273 dnl =
6274 dnl ========================================================
6275 dnl MOZ_ARG_HEADER(Features that require extra sources)
6277 dnl ========================================================
6278 dnl =
6279 dnl = Debugging Options
6280 dnl = 
6281 dnl ========================================================
6282 MOZ_ARG_HEADER(Debugging and Optimizations)
6284 dnl ========================================================
6285 dnl = Disable building with debug info.
6286 dnl = Debugging is OFF by default
6287 dnl ========================================================
6288 if test -z "$MOZ_DEBUG_FLAGS"
6289 then
6290     case "$target" in
6291     *-irix*)
6292         if test "$GNU_CC"; then
6293             GCC_VERSION=`$CC -v 2>&1 | awk '/version/ { print $3 }'`
6294             case "$GCC_VERSION" in
6295             2.95.*)
6296                 MOZ_DEBUG_FLAGS=""
6297                 ;;
6298             *)
6299                 MOZ_DEBUG_FLAGS="-g"
6300                 ;;
6301             esac
6302         else
6303             MOZ_DEBUG_FLAGS="-g"
6304         fi
6305         ;;
6306     *)
6307         MOZ_DEBUG_FLAGS="-g"
6308         ;;
6309     esac
6312 MOZ_ARG_ENABLE_STRING(debug,
6313 [  --enable-debug[=DBG]    Enable building with developer debug info
6314                           (Using compiler flags DBG)],
6315 [ if test "$enableval" != "no"; then
6316     MOZ_DEBUG=1
6317     if test -n "$enableval" && test "$enableval" != "yes"; then
6318         MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6319     fi
6320   else
6321     MOZ_DEBUG=
6322   fi ],
6323   MOZ_DEBUG=)
6325 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG"
6326  case "${target_os}" in
6327     beos*)
6328         MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${USER}"
6329         ;;
6330     msvc*|mks*|cygwin*|mingw*|os2*|wince*)
6331         MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
6332         ;;
6333     *) 
6334         MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`$WHOAMI`"
6335         ;;
6336   esac
6337 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DTRACING"
6339 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
6341 if test -n "$MOZ_DEBUG"; then
6342     AC_MSG_CHECKING([for valid debug flags])
6343     _SAVE_CFLAGS=$CFLAGS
6344     CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
6345     AC_TRY_COMPILE([#include <stdio.h>], 
6346         [printf("Hello World\n");],
6347         _results=yes,
6348         _results=no)
6349     AC_MSG_RESULT([$_results])
6350     if test "$_results" = "no"; then
6351         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
6352     fi
6353     CFLAGS=$_SAVE_CFLAGS
6356 dnl ========================================================
6357 dnl enable mobile optimizations
6358 dnl ========================================================
6359 MOZ_ARG_ENABLE_BOOL(mobile-optimize,
6360 [  --enable-mobile-optimize   Enable mobile optimizations],
6361     MOZ_GFX_OPTIMIZE_MOBILE=1)
6363 AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
6365 if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
6366     AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
6369 dnl ========================================================
6370 dnl = Enable code optimization. ON by default.
6371 dnl ========================================================
6372 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6373         MOZ_OPTIMIZE_FLAGS="-O"
6376 MOZ_ARG_ENABLE_STRING(optimize,
6377 [  --disable-optimize      Disable compiler optimization
6378   --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6379 [ if test "$enableval" != "no"; then
6380     MOZ_OPTIMIZE=1
6381     if test -n "$enableval" && test "$enableval" != "yes"; then
6382         MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6383         MOZ_OPTIMIZE=2
6384     fi
6385 else
6386     MOZ_OPTIMIZE=
6387 fi ], MOZ_OPTIMIZE=1)
6389 if test "$COMPILE_ENVIRONMENT"; then
6390 if test -n "$MOZ_OPTIMIZE"; then
6391     AC_MSG_CHECKING([for valid optimization flags])
6392     _SAVE_CFLAGS=$CFLAGS
6393     CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6394     AC_TRY_COMPILE([#include <stdio.h>], 
6395         [printf("Hello World\n");],
6396         _results=yes,
6397         _results=no)
6398     AC_MSG_RESULT([$_results])
6399     if test "$_results" = "no"; then
6400         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6401     fi
6402     CFLAGS=$_SAVE_CFLAGS
6404 fi # COMPILE_ENVIRONMENT
6406 AC_SUBST(MOZ_OPTIMIZE)
6407 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6408 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6409 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6411 dnl ========================================================
6412 dnl = Enable/disable debug for specific modules only
6413 dnl =   module names beginning with ^ will be disabled 
6414 dnl ========================================================
6415 MOZ_ARG_ENABLE_STRING(debug-modules,
6416 [  --enable-debug-modules  Enable/disable debug info for specific modules],
6417 [ MOZ_DEBUG_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6419 dnl ========================================================
6420 dnl = Enable/disable generation of debugger info for specific modules only
6421 dnl =    the special module name ALL_MODULES can be used to denote all modules
6422 dnl =    module names beginning with ^ will be disabled
6423 dnl ========================================================
6424 MOZ_ARG_ENABLE_STRING(debugger-info-modules,
6425 [  --enable-debugger-info-modules
6426                           Enable/disable debugger info for specific modules],
6427 [ for i in `echo $enableval | sed 's/,/ /g'`; do
6428       dnl note that the list of module names is reversed as it is copied
6429       dnl this is important, as it will allow config.mk to interpret stuff like
6430       dnl "^ALL_MODULES xpcom" properly
6431       if test "$i" = "no"; then
6432         i="^ALL_MODULES"
6433       fi
6434       if test "$i" = "yes"; then
6435         i="ALL_MODULES"
6436       fi
6437       MOZ_DBGRINFO_MODULES="$i $MOZ_DBGRINFO_MODULES";
6438     done ])
6440 dnl ========================================================
6441 dnl Enable garbage collector
6442 dnl ========================================================
6443 MOZ_ARG_ENABLE_BOOL(boehm,
6444 [  --enable-boehm          Enable the Boehm Garbage Collector],
6445     GC_LEAK_DETECTOR=1,
6446     GC_LEAK_DETECTOR= )
6447 if test -n "$GC_LEAK_DETECTOR"; then
6448     AC_DEFINE(GC_LEAK_DETECTOR)
6451 dnl ========================================================
6452 dnl Disable runtime logging checks
6453 dnl ========================================================
6454 MOZ_ARG_DISABLE_BOOL(logging,
6455 [  --disable-logging       Disable logging facilities],
6456     NS_DISABLE_LOGGING=1,
6457     NS_DISABLE_LOGGING= )
6458 if test "$NS_DISABLE_LOGGING"; then
6459     AC_DEFINE(NS_DISABLE_LOGGING)
6460 else
6461     AC_DEFINE(MOZ_LOGGING)
6464 dnl ========================================================
6465 dnl = dnl This will enable logging of addref, release, ctor, dtor.
6466 dnl ========================================================
6467 _ENABLE_LOGREFCNT=42
6468 MOZ_ARG_ENABLE_BOOL(logrefcnt,
6469 [  --enable-logrefcnt      Enable logging of refcounts (default=debug) ],
6470     _ENABLE_LOGREFCNT=1,
6471     _ENABLE_LOGREFCNT= )
6472 if test "$_ENABLE_LOGREFCNT" = "1"; then
6473     AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
6474 elif test -z "$_ENABLE_LOGREFCNT"; then
6475     AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
6478 dnl ========================================================
6479 dnl = Enable trace malloc
6480 dnl ========================================================
6481 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
6482 MOZ_ARG_ENABLE_BOOL(trace-malloc,
6483 [  --enable-trace-malloc   Enable malloc tracing],
6484     NS_TRACE_MALLOC=1,
6485     NS_TRACE_MALLOC= )
6486 if test "$NS_TRACE_MALLOC"; then
6487   # Please, Mr. Linker Man, don't take away our symbol names
6488   MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6489   USE_ELF_DYNSTR_GC=
6490   AC_DEFINE(NS_TRACE_MALLOC)
6492 AC_SUBST(NS_TRACE_MALLOC)
6494 dnl ========================================================
6495 dnl = Enable jemalloc
6496 dnl ========================================================
6497 MOZ_ARG_ENABLE_BOOL(jemalloc,
6498 [  --enable-jemalloc       Replace memory allocator with jemalloc],
6499     MOZ_MEMORY=1,
6500     MOZ_MEMORY=)
6502 if test "$NS_TRACE_MALLOC"; then
6503     MOZ_MEMORY=
6506 if test "$MOZ_MEMORY"; then
6508   dnl Don't try to run compiler tests on Windows  
6509   if test "$OS_ARCH" = "WINNT"; then
6510     if test -z "$HAVE_64BIT_OS"; then
6511       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6512     else
6513       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6514     fi
6515   else
6516     AC_CHECK_SIZEOF([int *], [4])
6517     case "${ac_cv_sizeof_int_p}" in
6518     4)
6519       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6520       ;;
6521     8)
6522       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6523       ;;
6524     *)
6525       AC_MSG_ERROR([Unexpected pointer size])
6526       ;;
6527     esac
6528   fi
6530   AC_DEFINE(MOZ_MEMORY)
6531   if test "x$MOZ_DEBUG" = "x1"; then
6532     AC_DEFINE(MOZ_MEMORY_DEBUG)
6533   fi
6534   dnl The generic feature tests that determine how to compute ncpus are long and
6535   dnl complicated.  Therefore, simply define special cpp variables for the
6536   dnl platforms we have special knowledge of.
6537   case "${target_os}" in
6538   darwin*)
6539     AC_DEFINE(MOZ_MEMORY_DARWIN)
6540     ;;
6541   *freebsd*)
6542     AC_DEFINE(MOZ_MEMORY_BSD)
6543     ;;
6544   *linux*)
6545     AC_DEFINE(MOZ_MEMORY_LINUX)
6546     ;;
6547   netbsd*)
6548     AC_DEFINE(MOZ_MEMORY_BSD)
6549     ;;
6550   solaris*)
6551     AC_DEFINE(MOZ_MEMORY_SOLARIS)
6552     ;;
6553   msvc*|mks*|cygwin*|mingw*)
6554     AC_DEFINE(MOZ_MEMORY_WINDOWS)
6555     dnl XXX: should test for vc8sp1 here, otherwise patching the crt src
6556     dnl will fail miserably
6557     if test "$_CC_SUITE" -lt "8"; then
6558         AC_MSG_ERROR([Building jemalloc requires Visual C++ 2005 or better])
6559     fi
6560     if test -z "$WIN32_CRT_SRC_DIR" -a -z "$WIN32_CUSTOM_CRT_DIR"; then
6561       if test -z "$VCINSTALLDIR" -o ! -d "$VCINSTALLDIR"; then
6562         AC_MSG_ERROR([When building jemalloc, either set WIN32_CRT_SRC_DIR to the path to the Visual C++ CRT source (usually VCINSTALLDIR\crt\src), or set WIN32_CUSTOM_CRT_DIR to the path to a folder containing a pre-built CRT DLL.])
6563       else
6564         WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src"
6565       fi
6566     fi
6567     if test -z "$WIN32_CRT_SRC_DIR"; then
6568       # pre-built dll
6569       WIN32_CUSTOM_CRT_DIR=`cd "$WIN32_CUSTOM_CRT_DIR" && pwd`
6570       _WIN_UNIX_CRT_PATH="$WIN32_CUSTOM_CRT_DIR"
6571     else
6572       # CRT source directory
6573       WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd`
6574       _CRT_BASE_DIR=`basename "$WIN32_CRT_SRC_DIR"`
6575       _WIN_UNIX_CRT_PATH="$_objdir/memory/jemalloc/$_CRT_BASE_DIR/build/intel"
6576     fi
6577     dnl need win32 paths in LIB, hence this python abuse.  extra brackets
6578     dnl are to avoid m4
6579     _WIN_CRT_PATH=[`$PYTHON -c 'import sys, os.path; print os.path.normpath(sys.argv[1])' "$_WIN_UNIX_CRT_PATH"`]
6580     MOZ_LIB="$_WIN_CRT_PATH;$LIB"
6581     dnl Needs to be in PATH too, since our tools will wind up linked against it.
6582     dnl This needs to be unix style.
6583     MOZ_PATH="$PATH:$_WIN_UNIX_CRT_PATH"
6584     dnl Statically link the C++ stdlib.  We only use this for Breakpad anyway.
6585     AC_DEFINE(_STATIC_CPPLIB)
6586     dnl Don't generate a manifest, since we're linking to a custom CRT.
6587     LDFLAGS="$LDFLAGS -MANIFEST:NO"
6588     dnl Also pass this to NSPR/NSS
6589     DLLFLAGS="$DLLFLAGS -MANIFEST:NO"
6590     export DLLFLAGS
6591     ;;
6592   *)
6593     AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
6594     ;;
6595   esac
6597 AC_SUBST(MOZ_MEMORY)
6598 AC_SUBST(WIN32_CRT_SRC_DIR)
6599 AC_SUBST(WIN32_CUSTOM_CRT_DIR)
6600 AC_SUBST(MOZ_LIB)
6601 AC_SUBST(MOZ_PATH)
6602 dnl Need to set this for make because NSS doesn't have configure
6603 AC_SUBST(DLLFLAGS)
6605 dnl ========================================================
6606 dnl = Use malloc wrapper lib
6607 dnl ========================================================
6608 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
6609 [  --enable-wrap-malloc    Wrap malloc calls (gnu linker only)],
6610     _WRAP_MALLOC=1,
6611     _WRAP_MALLOC= )
6613 if test -n "$_WRAP_MALLOC"; then
6614     if test "$GNU_CC"; then
6615     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"
6616     MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) -o $@'
6617     fi
6620 dnl ========================================================
6621 dnl = Location of malloc wrapper lib
6622 dnl ========================================================
6623 MOZ_ARG_WITH_STRING(wrap-malloc,
6624 [  --with-wrap-malloc=DIR  Location of malloc wrapper library],
6625     WRAP_MALLOC_LIB=$withval)
6627 dnl ========================================================
6628 dnl = Use Valgrind
6629 dnl ========================================================
6630 MOZ_ARG_ENABLE_BOOL(valgrind,
6631 [  --enable-valgrind       Enable Valgrind integration hooks (default=no)],
6632     MOZ_VALGRIND=1,
6633     MOZ_VALGRIND= )
6634 if test -n "$MOZ_VALGRIND"; then
6635     AC_CHECK_HEADER([valgrind/valgrind.h], [],
6636         AC_MSG_ERROR(
6637             [--enable-valgrind specified but Valgrind is not installed]))
6638     AC_DEFINE(MOZ_VALGRIND)
6641 dnl ========================================================
6642 dnl = Use Electric Fence
6643 dnl ========================================================
6644 MOZ_ARG_ENABLE_BOOL(efence,
6645 [  --enable-efence         Link with Electric Fence],
6646     _ENABLE_EFENCE=1,
6647     _ENABLE_EFENCE= )
6648 if test -n "$_ENABLE_EFENCE"; then
6649     AC_CHECK_LIB(efence,malloc)
6652 dnl ========================================================
6653 dnl jprof
6654 dnl ========================================================
6655 MOZ_ARG_ENABLE_BOOL(jprof,
6656 [  --enable-jprof          Enable jprof profiling tool (needs mozilla/tools/jprof)],
6657     MOZ_JPROF=1,
6658     MOZ_JPROF= )
6659 if test -n "$MOZ_JPROF"; then
6660     AC_DEFINE(MOZ_JPROF)
6663 dnl ========================================================
6664 dnl shark
6665 dnl ========================================================
6666 MOZ_ARG_ENABLE_BOOL(shark,
6667 [  --enable-shark          Enable shark remote profiling (needs CHUD framework)],
6668     MOZ_SHARK=1,
6669     MOZ_SHARK= )
6670 if test -n "$MOZ_SHARK"; then
6671     AC_DEFINE(MOZ_SHARK)
6674 dnl ========================================================
6675 dnl callgrind
6676 dnl ========================================================
6677 MOZ_ARG_ENABLE_BOOL(callgrind,
6678 [  --enable-callgrind      Enable callgrind profiling],
6679     MOZ_CALLGRIND=1,
6680     MOZ_CALLGRIND= )
6681 if test -n "$MOZ_CALLGRIND"; then
6682     AC_DEFINE(MOZ_CALLGRIND)
6685 dnl ========================================================
6686 dnl vtune
6687 dnl ========================================================
6688 MOZ_ARG_ENABLE_BOOL(vtune,
6689 [  --enable-vtune          Enable vtune profiling],
6690     MOZ_VTUNE=1,
6691     MOZ_VTUNE= )
6692 if test -n "$MOZ_VTUNE"; then
6693     AC_DEFINE(MOZ_VTUNE)
6696 dnl ========================================================
6697 dnl Zealous JavaScript GC
6698 dnl ========================================================
6699 MOZ_ARG_ENABLE_BOOL(gczeal,
6700 [  --enable-gczeal          Enable zealous JavaScript GCing],
6701     JS_GC_ZEAL=1,
6702     JS_GC_ZEAL= )
6703 if test -n "$JS_GC_ZEAL"; then
6704     AC_DEFINE(JS_GC_ZEAL)
6707 dnl ========================================================
6708 dnl = Enable static checking using gcc-dehydra
6709 dnl ========================================================
6711 MOZ_ARG_WITH_STRING(static-checking,
6712 [  --with-static-checking=path/to/gcc_dehydra.so
6713                             Enable static checking of code using GCC-dehydra],
6714     DEHYDRA_PATH=$withval,
6715     DEHYDRA_PATH= )
6717 if test -n "$DEHYDRA_PATH"; then
6718     if test ! -f "$DEHYDRA_PATH"; then
6719         AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
6720     fi
6721     AC_DEFINE(NS_STATIC_CHECKING)
6723 AC_SUBST(DEHYDRA_PATH)
6725 dnl ========================================================
6726 dnl = Enable stripping of libs & executables
6727 dnl ========================================================
6728 MOZ_ARG_ENABLE_BOOL(strip,
6729 [  --enable-strip          Enable stripping of libs & executables ],
6730     ENABLE_STRIP=1,
6731     ENABLE_STRIP= )
6733 dnl ========================================================
6734 dnl = Enable stripping of libs & executables when packaging
6735 dnl ========================================================
6736 MOZ_ARG_ENABLE_BOOL(install-strip,
6737 [  --enable-install-strip  Enable stripping of libs & executables when packaging ],
6738     PKG_SKIP_STRIP= ,
6739     PKG_SKIP_STRIP=1)
6741 dnl ========================================================
6742 dnl = --enable-elf-dynstr-gc
6743 dnl ========================================================
6744 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
6745 [  --enable-elf-dynstr-gc  Enable elf dynstr garbage collector (opt builds only)],
6746     USE_ELF_DYNSTR_GC=1,
6747     USE_ELF_DYNSTR_GC= )
6749 dnl ========================================================
6750 dnl = --enable-old-abi-compat-wrappers
6751 dnl ========================================================
6752 dnl on x86 linux, the current builds of some popular plugins (notably
6753 dnl flashplayer and real) expect a few builtin symbols from libgcc
6754 dnl which were available in some older versions of gcc.  However,
6755 dnl they're _NOT_ available in newer versions of gcc (eg 3.1), so if
6756 dnl we want those plugin to work with a gcc-3.1 built binary, we need
6757 dnl to provide these symbols.  MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS defaults
6758 dnl to true on x86 linux, and false everywhere else.
6761 MOZ_ARG_ENABLE_BOOL(old-abi-compat-wrappers,
6762 [  --enable-old-abi-compat-wrappers
6763                           Support old GCC ABI symbols to ease the pain 
6764                           of the linux compiler change],
6765     MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1,
6766     MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS= )
6767 if test "$COMPILE_ENVIRONMENT"; then
6768 if test "$MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS"; then
6769     AC_LANG_SAVE
6770     AC_LANG_CPLUSPLUS
6771     AC_CHECK_FUNCS(__builtin_vec_new __builtin_vec_delete __builtin_new __builtin_delete __pure_virtual)
6772     AC_LANG_RESTORE
6773     AC_DEFINE(MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS)
6775 fi # COMPILE_ENVIRONMENT
6777 dnl ========================================================
6778 dnl = 
6779 dnl = Profiling and Instrumenting
6780 dnl = 
6781 dnl ========================================================
6782 MOZ_ARG_HEADER(Profiling and Instrumenting)
6784 dnl ========================================================
6785 dnl = Enable timeline service, which provides lightweight
6786 dnl = instrumentation of mozilla for performance measurement.
6787 dnl = Timeline is off by default.
6788 dnl ========================================================
6789 MOZ_ARG_ENABLE_BOOL(timeline,
6790 [  --enable-timeline       Enable timeline services ],
6791     MOZ_TIMELINE=1,
6792     MOZ_TIMELINE= )
6793 if test -n "$MOZ_TIMELINE"; then
6794     AC_DEFINE(MOZ_TIMELINE)
6797 dnl ========================================================
6798 dnl Turn on reflow counting
6799 dnl ========================================================
6800 MOZ_ARG_ENABLE_BOOL(reflow-perf,
6801 [  --enable-reflow-perf    Enable reflow performance tracing],
6802     MOZ_REFLOW_PERF=1,
6803     MOZ_REFLOW_PERF= )
6804 if test -n "$MOZ_REFLOW_PREF"; then
6805     AC_DEFINE(MOZ_REFLOW_PREF)
6807 AC_SUBST(MOZ_REFLOW_PERF)
6809 dnl ========================================================
6810 dnl Enable performance metrics.
6811 dnl ========================================================
6812 MOZ_ARG_ENABLE_BOOL(perf-metrics,
6813 [  --enable-perf-metrics   Enable performance metrics],
6814     MOZ_PERF_METRICS=1,
6815     MOZ_PERF_METRICS= )
6816 if test -n "$MOZ_PERF_METRICS"; then
6817     AC_DEFINE(MOZ_PERF_METRICS)
6820 dnl ========================================================
6821 dnl Enable code size metrics.
6822 dnl ========================================================
6823 MOZ_ARG_ENABLE_BOOL(codesighs,
6824 [  --enable-codesighs      Enable code size analysis tools],
6825     _ENABLE_CODESIGHS=1,
6826     _ENABLE_CODESIGHS= )
6827 if test -n "$_ENABLE_CODESIGHS"; then
6828     if test -d $srcdir/tools/codesighs; then 
6829         MOZ_MAPINFO=1
6830     else
6831         AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
6832     fi
6835 dnl ========================================================
6836 dnl = Add support for Eazel profiler
6837 dnl ========================================================
6838 MOZ_ARG_ENABLE_BOOL(eazel-profiler-support,
6839 [  --enable-eazel-profiler-support
6840                           Enable Corel/Eazel profiler support],
6841     ENABLE_EAZEL_PROFILER=1,
6842     ENABLE_EAZEL_PROFILER= )
6843 if test -n "$ENABLE_EAZEL_PROFILER"; then
6844     AC_DEFINE(ENABLE_EAZEL_PROFILER)
6845     USE_ELF_DYNSTR_GC=
6846     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6847     EAZEL_PROFILER_CFLAGS="-g -O -gdwarf-2 -finstrument-functions -D__NO_STRING_INLINES  -D__NO_MATH_INLINES"
6848     EAZEL_PROFILER_LIBS="-lprofiler -lpthread"
6851 MOZ_ARG_ENABLE_STRING(profile-modules,
6852 [  --enable-profile-modules
6853                           Enable/disable profiling for specific modules],
6854 [ MOZ_PROFILE_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6856 MOZ_ARG_ENABLE_BOOL(insure,
6857 [  --enable-insure         Enable insure++ instrumentation (linux only)],
6858     _ENABLE_INSURE=1,
6859     _ENABLE_INSURE= )
6860 if test -n "$_ENABLE_INSURE"; then
6861     MOZ_INSURE="insure"
6862     MOZ_INSURIFYING=1
6863     MOZ_INSURE_DIRS="."
6864     MOZ_INSURE_EXCLUDE_DIRS="config"
6867 MOZ_ARG_WITH_STRING(insure-dirs,
6868 [  --with-insure-dirs=DIRS
6869                           Dirs to instrument with insure ],
6870     MOZ_INSURE_DIRS=$withval )
6872 MOZ_ARG_WITH_STRING(insure-exclude-dirs,
6873 [  --with-insure-exclude-dirs=DIRS
6874                           Dirs to not instrument with insure ],
6875     MOZ_INSURE_EXCLUDE_DIRS="config $withval" )
6877 dnl ========================================================
6878 dnl = Support for Quantify (Windows)
6879 dnl ========================================================
6880 MOZ_ARG_ENABLE_BOOL(quantify,
6881 [  --enable-quantify      Enable Quantify support (Windows only) ],
6882     MOZ_QUANTIFY=1,
6883     MOZ_QUANTIFY= )
6885 dnl ========================================================
6886 dnl = Support for demangling undefined symbols
6887 dnl ========================================================
6888 if test -z "$SKIP_LIBRARY_CHECKS"; then
6889     AC_LANG_SAVE
6890     AC_LANG_CPLUSPLUS
6891     AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
6892     AC_LANG_RESTORE
6895 # Demangle only for debug or trace-malloc builds
6896 MOZ_DEMANGLE_SYMBOLS=
6897 if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
6898     MOZ_DEMANGLE_SYMBOLS=1
6899     AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
6901 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
6903 dnl ========================================================
6904 dnl = Support for gcc stack unwinding (from gcc 3.3)
6905 dnl ========================================================
6906 if test "$HAVE_GCC3_ABI" && test -z "$SKIP_LIBRARY_CHECKS"; then
6907     AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
6910 dnl ========================================================
6911 dnl =
6912 dnl = Misc. Options
6913 dnl = 
6914 dnl ========================================================
6915 MOZ_ARG_HEADER(Misc. Options)
6917 dnl ========================================================
6918 dnl update xterm title
6919 dnl ========================================================
6920 MOZ_ARG_ENABLE_BOOL(xterm-updates,
6921 [  --enable-xterm-updates  Update XTERM titles with current command.],
6922     MOZ_UPDATE_XTERM=1,
6923     MOZ_UPDATE_XTERM= )
6925 dnl =========================================================
6926 dnl = Chrome format
6927 dnl =========================================================
6928 MOZ_ARG_ENABLE_STRING([chrome-format],
6929 [  --enable-chrome-format=jar|flat|both|symlink
6930                           Select FORMAT of chrome files (default=jar)],
6931     MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
6933 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
6934     MOZ_CHROME_FILE_FORMAT=jar
6937 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" && 
6938     test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
6939     test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
6940     test "$MOZ_CHROME_FILE_FORMAT" != "both"; then
6941     AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, or symlink])
6944 dnl ========================================================
6945 dnl = Define default location for MOZILLA_FIVE_HOME
6946 dnl ========================================================
6947 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
6948 [  --with-default-mozilla-five-home
6949                           Set the default value for MOZILLA_FIVE_HOME],
6950 [ val=`echo $withval`
6951   AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
6953 dnl ========================================================
6954 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
6955 dnl ========================================================
6956 MOZ_ARG_WITH_STRING(user-appdir,
6957 [  --with-user-appdir=DIR  Set user-specific appdir (default=.mozilla)],
6958 [ val=`echo $withval`
6959 if echo "$val" | grep "\/" >/dev/null; then
6960     AC_MSG_ERROR("Homedir must be single relative path.")
6961 else 
6962     MOZ_USER_DIR="$val"
6963 fi])
6965 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
6967 dnl ========================================================
6968 dnl = Doxygen configuration
6969 dnl ========================================================
6970 dnl Use commas to specify multiple dirs to this arg
6971 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
6972 MOZ_ARG_WITH_STRING(doc-input-dirs,
6973 [  --with-doc-input-dirs=DIRS
6974                           Header/idl dirs to create docs from],
6975 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6976 AC_SUBST(MOZ_DOC_INPUT_DIRS)
6978 dnl Use commas to specify multiple dirs to this arg
6979 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
6980 MOZ_ARG_WITH_STRING(doc-include-dirs,
6981 [  --with-doc-include-dirs=DIRS  
6982                           Include dirs to preprocess doc headers],
6983 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6984 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
6986 MOZ_DOC_OUTPUT_DIR='./dist/docs'
6987 MOZ_ARG_WITH_STRING(doc-output-dir,
6988 [  --with-doc-output-dir=DIR
6989                           Dir to generate docs into],
6990 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
6991 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
6993 if test -z "$SKIP_COMPILER_CHECKS"; then
6994 dnl ========================================================
6995 dnl =
6996 dnl = Compiler Options
6997 dnl = 
6998 dnl ========================================================
6999 MOZ_ARG_HEADER(Compiler Options)
7001 dnl ========================================================
7002 dnl Check for gcc -pipe support
7003 dnl ========================================================
7004 AC_MSG_CHECKING([for gcc -pipe support])
7005 if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
7006     echo '#include <stdio.h>' > dummy-hello.c
7007     echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
7008     ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
7009     cat dummy-hello.s | ${AS_BIN} -o dummy-hello.S - 2>&5
7010     if test $? = 0; then
7011         _res_as_stdin="yes"
7012     else
7013         _res_as_stdin="no"
7014     fi
7015     if test "$_res_as_stdin" = "yes"; then
7016         _SAVE_CFLAGS=$CFLAGS
7017         CFLAGS="$CFLAGS -pipe"
7018         AC_TRY_COMPILE( [ #include <stdio.h> ],
7019             [printf("Hello World\n");],
7020             [_res_gcc_pipe="yes"],
7021             [_res_gcc_pipe="no"] )
7022         CFLAGS=$_SAVE_CFLAGS
7023     fi
7024     if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then
7025         _res="yes";
7026         CFLAGS="$CFLAGS -pipe"
7027         CXXFLAGS="$CXXFLAGS -pipe"
7028     else
7029         _res="no"
7030     fi
7031     rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
7032     AC_MSG_RESULT([$_res])
7033 else
7034     AC_MSG_RESULT([no])
7037 dnl pass -Wno-long-long to the compiler
7038 MOZ_ARG_ENABLE_BOOL(long-long-warning,
7039 [  --enable-long-long-warning 
7040                           Warn about use of non-ANSI long long type],
7041     _IGNORE_LONG_LONG_WARNINGS=,
7042     _IGNORE_LONG_LONG_WARNINGS=1)
7044 if test "$_IGNORE_LONG_LONG_WARNINGS"; then
7045      _SAVE_CFLAGS="$CFLAGS"
7046      CFLAGS="$CFLAGS ${_COMPILER_PREFIX}-Wno-long-long"
7047      AC_MSG_CHECKING([whether compiler supports -Wno-long-long])
7048      AC_TRY_COMPILE([], [return(0);], 
7049         [ _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
7050           _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
7051           result="yes" ], result="no")
7052      AC_MSG_RESULT([$result])
7053      CFLAGS="$_SAVE_CFLAGS"
7056 dnl ========================================================
7057 dnl Profile guided optimization
7058 dnl ========================================================
7059 dnl Test for profiling options
7060 dnl Under gcc 3.3, use -fprofile-arcs/-fbranch-probabilities
7061 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
7063 dnl Provide a switch to disable PGO even when called via profiledbuild.
7064 MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
7065 [  --disable-profile-guided-optimization
7066                            Don't build with PGO even if called via make profiledbuild],
7067 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
7068 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
7070 AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
7072 _SAVE_CFLAGS="$CFLAGS"
7073 CFLAGS="$CFLAGS -fprofile-generate"
7075 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
7076 AC_TRY_COMPILE([], [return 0;],
7077                [ PROFILE_GEN_CFLAGS="-fprofile-generate"
7078                  result="yes" ], result="no")
7079 AC_MSG_RESULT([$result])
7081 if test $result = "yes"; then
7082   PROFILE_GEN_LDFLAGS="-fprofile-generate"
7083   PROFILE_USE_CFLAGS="-fprofile-use"
7084   PROFILE_USE_LDFLAGS="-fprofile-use"
7085 else
7086   CFLAGS="$_SAVE_CFLAGS -fprofile-arcs"
7087   AC_MSG_CHECKING([whether C compiler supports -fprofile-arcs])
7088   AC_TRY_COMPILE([], [return 0;],
7089                  [ PROFILE_GEN_CFLAGS="-fprofile-arcs"
7090                    result="yes" ], result="no")
7091   AC_MSG_RESULT([$result])
7092   if test $result = "yes"; then
7093     PROFILE_USE_CFLAGS="-fbranch-probabilities"
7094   fi
7095   # don't really care, this is an old GCC
7096   PROFILE_GEN_LDFLAGS=
7097   PROFILE_USE_LDFLAGS=
7100 CFLAGS="$_SAVE_CFLAGS"
7102 if test -n "$INTEL_CC"; then
7103   PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
7104   PROFILE_GEN_LDFLAGS=
7105   PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
7106   PROFILE_USE_LDFLAGS=
7109 dnl Sun Studio on Solaris
7110 if test "$SOLARIS_SUNPRO_CC"; then
7111   PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
7112   PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
7113   if test "$CPU_ARCH" != "sparc"; then
7114     PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
7115     PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
7116   else
7117     PROFILE_USE_CFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
7118     PROFILE_USE_LDFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
7119   fi
7122 AC_SUBST(PROFILE_GEN_CFLAGS)
7123 AC_SUBST(PROFILE_GEN_LDFLAGS)
7124 AC_SUBST(PROFILE_USE_CFLAGS)
7125 AC_SUBST(PROFILE_USE_LDFLAGS)
7127 AC_LANG_CPLUSPLUS
7129 dnl ========================================================
7130 dnl Test for -pedantic bustage
7131 dnl ========================================================
7132 MOZ_ARG_DISABLE_BOOL(pedantic,
7133 [  --disable-pedantic      Issue all warnings demanded by strict ANSI C ],
7134 _PEDANTIC= )
7135 if test "$_PEDANTIC"; then
7136     _SAVE_CXXFLAGS=$CXXFLAGS
7137     CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
7138     AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
7139     AC_TRY_COMPILE([$configure_static_assert_macros],
7140                    [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
7141                    result="no", result="yes" )
7142     AC_MSG_RESULT([$result])
7143     CXXFLAGS="$_SAVE_CXXFLAGS"
7145     case "$result" in
7146     no)
7147         _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic"
7148         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
7149         ;;
7150     yes)
7151         AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic.  Reconfigure using --disable-pedantic. ])
7152         ;;
7153     esac
7156 dnl ========================================================
7157 dnl Test for correct temporary object destruction order
7158 dnl ========================================================
7159 dnl We want to make sure the compiler follows the C++ spec here as 
7160 dnl xpcom and the string classes depend on it (bug 235381).
7161 AC_MSG_CHECKING([for correct temporary object destruction order])
7162 AC_TRY_RUN([ class A {
7163              public:  A(int& x) : mValue(x) {}
7164                       ~A() { mValue--; }
7165                       operator char**() { return 0; }
7166              private:  int& mValue;
7167              };
7168              void func(char **arg) {}
7169              int m=2;
7170              void test() {
7171                   func(A(m));
7172                   if (m==1) m = 0;
7173              }
7174              int main() {
7175                  test();
7176                  return(m);
7177              }
7178              ],
7179      result="yes", result="no", result="maybe")
7180 AC_MSG_RESULT([$result])
7182 if test "$result" = "no"; then
7183     AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
7186 dnl ========================================================
7187 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
7188 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
7189 dnl raw pointers in nsCOMPtr.h.  (VC++ has the same bug.)
7190 dnl ========================================================
7191 _SAVE_CXXFLAGS=$CXXFLAGS
7192 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
7193 AC_CACHE_CHECK(for correct overload resolution with const and templates,
7194     ac_nscap_nonconst_opeq_bug,
7195     [AC_TRY_COMPILE([
7196                       template <class T>
7197                       class Pointer
7198                         {
7199                         public:
7200                           T* myPtr;
7201                         };
7202                       
7203                       template <class T, class U>
7204                       int operator==(const Pointer<T>& rhs, U* lhs)
7205                         {
7206                           return rhs.myPtr == lhs;
7207                         }
7208                       
7209                       template <class T, class U>
7210                       int operator==(const Pointer<T>& rhs, const U* lhs)
7211                         {
7212                           return rhs.myPtr == lhs;
7213                         }
7214                     ],
7215                     [
7216                       Pointer<int> foo;
7217                       const int* bar;
7218                       return foo == bar;
7219                     ],
7220                     ac_nscap_nonconst_opeq_bug="no",
7221                     ac_nscap_nonconst_opeq_bug="yes")])
7222 CXXFLAGS="$_SAVE_CXXFLAGS"
7224 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
7225     AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
7227 fi # SKIP_COMPILER_CHECKS
7229 dnl ========================================================
7230 dnl C++ rtti
7231 dnl Should be smarter and check that the compiler does indeed have rtti
7232 dnl ========================================================
7233 MOZ_ARG_ENABLE_BOOL(cpp-rtti,
7234 [  --enable-cpp-rtti       Enable C++ RTTI ],
7235 [ _MOZ_USE_RTTI=1 ],
7236 [ _MOZ_USE_RTTI= ])
7238 if test "$_MOZ_USE_RTTI"; then
7239    _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
7240 else
7241    _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
7244 AC_SUBST(_MOZ_RTTI_FLAGS_ON)
7246 dnl ========================================================
7247 dnl C++ exceptions (g++/egcs only - for now)
7248 dnl Should be smarter and check that the compiler does indeed have exceptions
7249 dnl ========================================================
7250 MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
7251 [  --enable-cpp-exceptions Enable C++ exceptions ],
7252 [ _MOZ_CPP_EXCEPTIONS=1 ],
7253 [ _MOZ_CPP_EXCEPTIONS= ])
7255 if test "$_MOZ_CPP_EXCEPTIONS"; then
7256     _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_ON
7257 else
7258     _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_OFF
7261 # Irix & OSF native compilers do not like exception declarations 
7262 # when exceptions are disabled
7263 if test -n "$MIPSPRO_CXX" -o -n "$COMPAQ_CXX" -o -n "$VACPP"; then
7264     AC_DEFINE(CPP_THROW_NEW, [])
7265 else
7266     AC_DEFINE(CPP_THROW_NEW, [throw()])
7268 AC_LANG_C
7270 dnl ========================================================
7271 dnl =
7272 dnl = Build depencency options
7273 dnl =
7274 dnl ========================================================
7275 MOZ_ARG_HEADER(Build dependencies)
7277 dnl ========================================================
7278 dnl = Do not auto generate dependency info
7279 dnl ========================================================
7280 MOZ_AUTO_DEPS=1
7281 MOZ_ARG_DISABLE_BOOL(auto-deps,
7282 [  --disable-auto-deps     Do not automatically generate dependency info],
7283     MOZ_AUTO_DEPS=,
7284     MOZ_AUTO_DEPS=1)
7286 if test -n "$MOZ_AUTO_DEPS"; then
7287 dnl ========================================================
7288 dnl = Use mkdepend instead of $CC -MD for dependency generation
7289 dnl ========================================================
7290 _cpp_md_flag=
7291 MOZ_ARG_DISABLE_BOOL(md,
7292 [  --disable-md            Do not use compiler-based dependencies ],
7293   [_cpp_md_flag=],
7294   [_cpp_md_flag=1],
7295   [dnl Default is to turn on -MD if using GNU-compatible compilers
7296    if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
7297      _cpp_md_flag=1
7298    fi
7299   dnl Default is to use -xM if using Sun Studio on Solaris
7300    if test "$SOLARIS_SUNPRO_CC"; then
7301      _cpp_md_flag=1
7302    fi])
7303 if test "$_cpp_md_flag"; then
7304   COMPILER_DEPEND=1
7305   if test "$OS_ARCH" = "OpenVMS"; then
7306     _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(basename $(@F)).pp))'
7307   else
7308     _DEPEND_CFLAGS='$(filter-out %/.pp,-Wp,-MD,$(MDDEPDIR)/$(basename $(@F)).pp)'
7309   fi
7310   dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7311   if test "$SOLARIS_SUNPRO_CC"; then
7312     _DEPEND_CFLAGS=
7313   fi
7314 else
7315   COMPILER_DEPEND=
7316   _USE_CPP_INCLUDE_FLAG=
7317   _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7318   _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7320 fi # MOZ_AUTO_DEPS
7321 MDDEPDIR='.deps'
7322 AC_SUBST(MOZ_AUTO_DEPS)
7323 AC_SUBST(COMPILER_DEPEND)
7324 AC_SUBST(MDDEPDIR)
7327 dnl ========================================================
7328 dnl =
7329 dnl = Static Build Options
7330 dnl =
7331 dnl ========================================================
7332 MOZ_ARG_HEADER(Static build options)
7334 MOZ_ARG_ENABLE_BOOL(static,
7335 [  --enable-static         Enable building of internal static libs],
7336     BUILD_STATIC_LIBS=1,
7337     BUILD_STATIC_LIBS=)
7339 dnl Disable libxul in debug builds, but not for xulrunner.
7340 if test -n "$MOZ_DEBUG" -a "$MOZ_BUILD_APP" != "xulrunner"; then
7341    MOZ_ENABLE_LIBXUL=
7344 MOZ_ARG_ENABLE_BOOL(libxul,
7345 [  --enable-libxul         Enable building of libxul],
7346     MOZ_ENABLE_LIBXUL=1,
7347     MOZ_ENABLE_LIBXUL=)
7349 if test -n "$MOZ_STATIC_BUILD_UNSUPPORTED" -a -n "$BUILD_STATIC_LIBS"; then
7350         AC_MSG_ERROR([--enable-static is not supported for building $MOZ_APP_NAME. You probably want --enable-libxul.])
7353 if test -n "$MOZ_ENABLE_LIBXUL" -a -n "$BUILD_STATIC_LIBS"; then
7354         AC_MSG_ERROR([--enable-libxul is not compatible with --enable-static])
7357 AC_SUBST(LIBXUL_LIBS)
7359 if test -n "$MOZ_ENABLE_LIBXUL"; then
7360     XPCOM_LIBS="$LIBXUL_LIBS"
7361     AC_DEFINE(MOZ_ENABLE_LIBXUL)
7362 else
7363     if test -n "$BUILD_STATIC_LIBS"; then
7364         AC_DEFINE(MOZ_STATIC_BUILD)
7365     fi
7366     XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS"
7369 dnl ========================================================
7370 dnl =
7371 dnl = Standalone module options
7372 dnl = 
7373 dnl ========================================================
7374 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7376 dnl Check for GLib and libIDL.
7377 dnl ========================================================
7378 case "$target_os" in
7379 msvc*|mks*|cygwin*|mingw*|wince*)
7380     SKIP_IDL_CHECK="yes"
7381     ;;
7383     SKIP_IDL_CHECK="no"
7384     ;;
7385 esac
7387 if test -z "$COMPILE_ENVIRONMENT"; then
7388     SKIP_IDL_CHECK="yes"
7391 dnl = Allow users to disable libIDL checking for standalone modules
7392 MOZ_ARG_WITHOUT_BOOL(libIDL,
7393 [  --without-libIDL        Skip check for libIDL (standalone modules only)],
7394         SKIP_IDL_CHECK="yes")
7396 if test "$SKIP_IDL_CHECK" = "no"
7397 then
7398     _LIBIDL_FOUND=
7399     if test "$MACOS_SDK_DIR"; then 
7400       dnl xpidl, and therefore libIDL, is only needed on the build host.
7401       dnl Don't build it against the SDK, as that causes problems.
7402       _MACSAVE_CFLAGS="$CFLAGS"
7403       _MACSAVE_LIBS="$LIBS"
7404       _MACSAVE_LDFLAGS="$LDFLAGS"
7405       _MACSAVE_NEXT_ROOT="$NEXT_ROOT"
7406       changequote(,)
7407       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"`
7408       LIBS=`echo $LIBS|sed -e "s?-L${MACOS_SDK_DIR}/usr/lib[^ ]*??g"`
7409       LDFLAGS=`echo $LDFLAGS|sed -e "s?-Wl,-syslibroot,${MACOS_SDK_DIR}??g"`
7410       changequote([,])
7411       unset NEXT_ROOT
7412     fi
7414     if test "$MOZ_ENABLE_GTK2"; then
7415         PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0 glib-2.0 gobject-2.0, _LIBIDL_FOUND=1,_LIBIDL_FOUND=)
7416     fi
7417     dnl if no gtk/libIDL1 or gtk2/libIDL2 combination was found, fall back
7418     dnl to either libIDL1 or libIDL2.
7419     if test -z "$_LIBIDL_FOUND"; then
7420         AM_PATH_LIBIDL($LIBIDL_VERSION,_LIBIDL_FOUND=1)
7421         if test -z "$_LIBIDL_FOUND"; then
7422             PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0,_LIBIDL_FOUND=1)
7423         fi
7424     fi
7425     dnl
7426     dnl If we don't have a libIDL config program & not cross-compiling, 
7427     dnl     look for orbit-config instead.
7428     dnl
7429     if test -z "$_LIBIDL_FOUND" && test -z "$CROSS_COMPILE"; then
7430         MOZ_PATH_PROGS(ORBIT_CONFIG, $ORBIT_CONFIG orbit-config)
7431         if test -n "$ORBIT_CONFIG"; then
7432             AC_MSG_CHECKING([for ORBit libIDL usability])
7433                 _ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags`
7434             _ORBIT_LIBS=`${ORBIT_CONFIG} client --libs`
7435             _ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}`
7436             _ORBIT_LIB_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-L/); } }' -- ${_ORBIT_LIBS}`
7437             LIBIDL_CFLAGS="$_ORBIT_INC_PATH"
7438             LIBIDL_LIBS="$_ORBIT_LIB_PATH -lIDL -lglib"
7439             LIBIDL_CONFIG=
7440             _SAVE_CFLAGS="$CFLAGS"
7441             _SAVE_LIBS="$LIBS"
7442             CFLAGS="$LIBIDL_CFLAGS $CFLAGS"
7443             LIBS="$LIBIDL_LIBS $LIBS"
7444             AC_TRY_RUN([
7445 #include <stdlib.h>
7446 #include <libIDL/IDL.h>
7447 int main() {
7448   char *s;
7449   s=strdup(IDL_get_libver_string());
7450   if(s==NULL) {
7451     exit(1);
7452   }
7453   exit(0);
7455             ], [_LIBIDL_FOUND=1
7456                 result="yes"],
7457                [LIBIDL_CFLAGS=
7458                 LIBIDL_LIBS=
7459                 result="no"],
7460                [_LIBIDL_FOUND=1
7461                 result="maybe"] )
7462             AC_MSG_RESULT($result)
7463             CFLAGS="$_SAVE_CFLAGS"
7464             LIBS="$_SAVE_LIBS"
7465         fi
7466     fi
7467     if test -z "$_LIBIDL_FOUND"; then
7468         AC_MSG_ERROR([libIDL not found.
7469         libIDL $LIBIDL_VERSION or higher is required.])
7470     fi
7471     if test "$MACOS_SDK_DIR"; then
7472       CFLAGS="$_MACSAVE_CFLAGS"
7473       LIBS="$_MACSAVE_LIBS"
7474       LDFLAGS="$_MACSAVE_LDFLAGS"
7475       if test -n "$_MACSAVE_NEXT_ROOT" ; then
7476         export NEXT_ROOT="$_MACSAVE_NEXT_ROOT"
7477       fi
7478     fi
7481 if test -n "$CROSS_COMPILE"; then
7482      if test -z "$HOST_LIBIDL_CONFIG"; then
7483         HOST_LIBIDL_CONFIG="$LIBIDL_CONFIG"
7484     fi
7485     if test -n "$HOST_LIBIDL_CONFIG" && test "$HOST_LIBIDL_CONFIG" != "no"; then
7486         HOST_LIBIDL_CFLAGS=`${HOST_LIBIDL_CONFIG} --cflags`
7487         HOST_LIBIDL_LIBS=`${HOST_LIBIDL_CONFIG} --libs`
7488     else
7489         HOST_LIBIDL_CFLAGS="$LIBIDL_CFLAGS"
7490         HOST_LIBIDL_LIBS="$LIBIDL_LIBS"
7491     fi
7494 if test -z "$SKIP_PATH_CHECKS"; then
7495 if test -z "${GLIB_CFLAGS}" || test -z "${GLIB_LIBS}" ; then
7496     if test "$MOZ_ENABLE_GTK2" || test "$USE_ELF_DYNSTR_GC" ; then
7497         PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
7498     else
7499         AM_PATH_GLIB(${GLIB_VERSION})
7500     fi
7504 if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then
7505     GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
7508 AC_SUBST(LIBIDL_CFLAGS)
7509 AC_SUBST(LIBIDL_LIBS)
7510 AC_SUBST(STATIC_LIBIDL)
7511 AC_SUBST(GLIB_CFLAGS)
7512 AC_SUBST(GLIB_LIBS)
7513 AC_SUBST(GLIB_GMODULE_LIBS)
7514 AC_SUBST(HOST_LIBIDL_CONFIG)
7515 AC_SUBST(HOST_LIBIDL_CFLAGS)
7516 AC_SUBST(HOST_LIBIDL_LIBS)
7518 dnl ========================================================
7519 dnl Check for cairo
7520 dnl ========================================================
7521 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
7523 MOZ_TREE_CAIRO=1
7524 MOZ_ARG_ENABLE_BOOL(system-cairo,
7525 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
7526 MOZ_TREE_CAIRO=,
7527 MOZ_TREE_CAIRO=1 )
7529 # Check for headers defining standard int types.
7530 AC_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
7532 if test "$MOZ_TREE_CAIRO"; then
7533     AC_DEFINE(MOZ_TREE_CAIRO)
7535     # For now we assume that we will have a uint64_t available through
7536     # one of the above headers or mozstdint.h.
7537     AC_DEFINE(HAVE_UINT64_T)
7539     # Define macros for cairo-features.h
7540     if test "$MOZ_X11"; then
7541         XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
7542         XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
7543         PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
7544         PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7545         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7546         MOZ_ENABLE_CAIRO_FT=1
7547         CAIRO_FT_CFLAGS="$FT2_CFLAGS"
7548     fi
7549     if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
7550         QPAINTER_SURFACE_FEATURE="#define CAIRO_HAS_QPAINTER_SURFACE 1"
7551     fi
7552     if test "$MOZ_WIDGET_TOOLKIT" = "mac" -o "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
7553         QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
7554         QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
7555         QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
7556     fi
7557     if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
7558         WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
7559         if test -z "$WINCE"; then
7560            WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
7561         else
7562            WIN32_FONT_FEATURE=
7563         fi  
7564         PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7565     fi
7566     if test "$MOZ_WIDGET_TOOLKIT" = "os2"; then
7567         OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
7568         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7569         PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7570         MOZ_ENABLE_CAIRO_FT=1
7571         CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
7572         CAIRO_FT_LIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
7573     fi
7574     if test "$MOZ_WIDGET_TOOLKIT" = "beos"; then
7575         PKG_CHECK_MODULES(CAIRO_FT, fontconfig freetype2)
7576         BEOS_SURFACE_FEATURE="#define CAIRO_HAS_BEOS_SURFACE 1"
7577         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7578         MOZ_ENABLE_CAIRO_FT=1
7579     fi
7580     AC_SUBST(MOZ_ENABLE_CAIRO_FT)
7581     AC_SUBST(CAIRO_FT_CFLAGS)
7583     if test "$MOZ_DEBUG"; then
7584       SANITY_CHECKING_FEATURE="#define CAIRO_DO_SANITY_CHECKING 1"
7585     else
7586       SANITY_CHECKING_FEATURE="#undef CAIRO_DO_SANITY_CHECKING"
7587     fi
7589     PNG_FUNCTIONS_FEATURE="#define CAIRO_HAS_PNG_FUNCTIONS 1"
7591     AC_SUBST(PS_SURFACE_FEATURE)
7592     AC_SUBST(PDF_SURFACE_FEATURE)
7593     AC_SUBST(SVG_SURFACE_FEATURE)
7594     AC_SUBST(XLIB_SURFACE_FEATURE)
7595     AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
7596     AC_SUBST(QUARTZ_SURFACE_FEATURE)
7597     AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
7598     AC_SUBST(XCB_SURFACE_FEATURE)
7599     AC_SUBST(WIN32_SURFACE_FEATURE)
7600     AC_SUBST(OS2_SURFACE_FEATURE)
7601     AC_SUBST(BEOS_SURFACE_FEATURE)
7602     AC_SUBST(DIRECTFB_SURFACE_FEATURE)
7603     AC_SUBST(FT_FONT_FEATURE)
7604     AC_SUBST(FC_FONT_FEATURE)
7605     AC_SUBST(WIN32_FONT_FEATURE)
7606     AC_SUBST(QUARTZ_FONT_FEATURE)
7607     AC_SUBST(PNG_FUNCTIONS_FEATURE)
7608     AC_SUBST(QPAINTER_SURFACE_FEATURE)
7610     if test "$_WIN32_MSVC"; then
7611         MOZ_CAIRO_LIBS='$(DEPTH)/gfx/cairo/cairo/src/mozcairo.lib $(DEPTH)/gfx/cairo/libpixman/src/mozlibpixman.lib'
7612     else
7613         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"
7615         if test "$MOZ_X11"; then
7616             MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS -lXrender -lfreetype -lfontconfig"
7617         fi
7618     fi
7620     CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
7621     mv -f $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig 2> /dev/null
7623 else
7624    PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION freetype2 fontconfig)
7625    MOZ_CAIRO_CFLAGS=$CAIRO_CFLAGS
7626    MOZ_CAIRO_LIBS=$CAIRO_LIBS
7627    if test "$MOZ_X11"; then
7628         PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
7629         MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
7630         MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
7631    fi
7634 AC_SUBST(MOZ_TREE_CAIRO)
7635 AC_SUBST(MOZ_CAIRO_CFLAGS)
7636 AC_SUBST(MOZ_CAIRO_LIBS)
7638 dnl ========================================================
7639 dnl Check for lcms
7640 dnl ========================================================
7642 LCMS_CFLAGS=
7643 if test "$_WIN32_MSVC"; then
7644     if test -z "$BUILD_STATIC_LIBS" -a -z "$MOZ_ENABLE_LIBXUL"; then
7645         LCMS_CFLAGS=-DLCMS_DLL
7646     fi
7647     LCMS_LIBS='$(LIBXUL_DIST)/lib/mozlcms.lib'
7648 else
7649     LCMS_LIBS='-L$(LIBXUL_DIST)/bin -lmozlcms'
7652 AC_SUBST(LCMS_CFLAGS)
7653 AC_SUBST(LCMS_LIBS)
7655 dnl ========================================================
7656 dnl disable xul
7657 dnl ========================================================
7658 MOZ_ARG_DISABLE_BOOL(xul,
7659 [  --disable-xul           Disable XUL],
7660     MOZ_XUL= )
7661 if test "$MOZ_XUL"; then
7662   AC_DEFINE(MOZ_XUL)
7663 else
7664   dnl remove extensions that require XUL
7665   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
7668 AC_SUBST(MOZ_XUL)
7670 dnl ========================================================
7671 dnl Two ways to enable Python support:
7672 dnl   --enable-extensions=python # select all available.
7673 dnl    (MOZ_PYTHON_EXTENSIONS contains the list of extensions)
7674 dnl or:
7675 dnl   --enable-extensions=python/xpcom,... # select individual ones
7677 dnl If either is used, we locate the Python to use.
7678 dnl ========================================================
7680 dnl If 'python' appears anywhere in the extensions list, go lookin'...
7681 if test `echo "$MOZ_EXTENSIONS" | grep -c python` -ne 0; then
7682     dnl Allow PYTHON to point to the Python interpreter to use
7683     dnl (note that it must be the python executable - which we
7684     dnl run to locate the relevant paths etc)
7685     dnl If not set, we use whatever Python we can find.
7686     MOZ_PYTHON=$PYTHON
7687     dnl Ask Python what its version number is
7688     changequote(,)
7689     MOZ_PYTHON_VER=`$PYTHON -c "import sys;print '%d%d' % sys.version_info[0:2]"`
7690     MOZ_PYTHON_VER_DOTTED=`$PYTHON -c "import sys;print '%d.%d' % sys.version_info[0:2]"`
7691     changequote([,])
7692     dnl Ask for the Python "prefix" (ie, home/source dir)
7693     MOZ_PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
7694     dnl Setup the include and library directories.
7695     if test "$OS_ARCH" = "WINNT"; then
7696         MOZ_PYTHON_PREFIX=`$CYGPATH_W $MOZ_PYTHON_PREFIX | $CYGPATH_S`
7697         dnl Source trees have "include" and "PC" for .h, and "PCbuild" for .lib
7698         dnl Binary trees have "include" for .h, and "libs" for .lib
7699         dnl We add 'em both - along with quotes, to handle spaces.
7700         MOZ_PYTHON_DLL_SUFFIX=.pyd
7701         MOZ_PYTHON_INCLUDES="\"-I$MOZ_PYTHON_PREFIX/include\" \"-I$MOZ_PYTHON_PREFIX/PC\""
7702         MOZ_PYTHON_LIBS="\"/libpath:$MOZ_PYTHON_PREFIX/PCBuild\" \"/libpath:$MOZ_PYTHON_PREFIX/libs\""
7703     else
7704         dnl Non-Windows include and libs
7705         MOZ_PYTHON_DLL_SUFFIX=$DLL_SUFFIX
7706         MOZ_PYTHON_INCLUDES="-I$MOZ_PYTHON_PREFIX/include/python$MOZ_PYTHON_VER_DOTTED"
7707         dnl Check for dynamic Python lib
7708         dnl - A static Python is no good - multiple dynamic libraries (xpcom
7709         dnl - core, xpcom loader, pydom etc) all need to share Python.
7710         dnl - Python 2.3's std --enable-shared configure option will
7711         dnl   create a libpython2.3.so.1.0. We should first try this
7712         dnl   dotted versioned .so file because this is the one that
7713         dnl   the PyXPCOM build mechanics tries to link to.
7714         dnl   XXX Should find a better way than hardcoding "1.0".
7715         dnl - Python developement tree dir layouts are NOT allowed here
7716         dnl   because the PyXPCOM build just dies on it later anyway.
7717         dnl - Fixes to the above by Python/*nix knowledgable people welcome!
7718         if test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7719             MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7720         elif test -f "$MOZ_PYTHON_PREFIX/lib64/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7721             MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib64 -lpython$MOZ_PYTHON_VER_DOTTED"
7722         elif test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7723             MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7724         elif test -f "$MOZ_PYTHON_PREFIX/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7725             dnl Don't Python development tree directory layout.
7726             MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX -lpython$MOZ_PYTHON_VER_DOTTED"
7727             AC_MSG_ERROR([The Python at $MOZ_PYTHON_PREFIX looks like a dev tree. The PyXPCOM build cannot handle this yet. You must 'make install' Python and use the installed tree.])
7728         elif test "$OS_ARCH" = "Darwin"; then
7729             dnl We do Darwin last, so if a custom non-framework build of
7730             dnl python is used on OSX, then it will be picked up first by
7731             dnl the logic above.
7732             MOZ_PYTHON_LIBS="-framework Python"
7733         else
7734             AC_MSG_ERROR([Could not find build shared libraries for Python at $MOZ_PYTHON_PREFIX.  This is required for PyXPCOM.])
7735         fi
7736         if test "$OS_ARCH" = "Linux"; then
7737             MOZ_PYTHON_LIBS="$MOZ_PYTHON_LIBS -lutil"
7738         fi
7739     fi
7740     dnl Handle "_d" on Windows
7741     if test "$OS_ARCH" = "WINNT" && test -n "$MOZ_DEBUG"; then
7742         MOZ_PYTHON_DEBUG_SUFFIX="_d"
7743     else
7744         MOZ_PYTHON_DEBUG_SUFFIX=
7745     fi
7746     AC_MSG_RESULT(Building Python extensions using python-$MOZ_PYTHON_VER_DOTTED from $MOZ_PYTHON_PREFIX)
7749 dnl If the user asks for the 'python' extension, then we add
7750 dnl MOZ_PYTHON_EXTENSIONS to MOZ_EXTENSIONS - but with the leading 'python/'
7751 dnl Note the careful regex - it must match 'python' followed by anything
7752 dnl other than a '/', including the end-of-string.
7753 if test `echo "$MOZ_EXTENSIONS" | grep -c 'python\([[^/]]\|$\)'` -ne 0; then
7754     for pyext in $MOZ_PYTHON_EXTENSIONS; do
7755         MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS python/$pyext`
7756     done
7758 dnl Later we may allow MOZ_PYTHON_EXTENSIONS to be specified on the
7759 dnl command-line, but not yet
7760 AC_SUBST(MOZ_PYTHON_EXTENSIONS)
7761 AC_SUBST(MOZ_PYTHON)
7762 AC_SUBST(MOZ_PYTHON_PREFIX)
7763 AC_SUBST(MOZ_PYTHON_INCLUDES)
7764 AC_SUBST(MOZ_PYTHON_LIBS)
7765 AC_SUBST(MOZ_PYTHON_VER)
7766 AC_SUBST(MOZ_PYTHON_VER_DOTTED)
7767 AC_SUBST(MOZ_PYTHON_DEBUG_SUFFIX)
7768 AC_SUBST(MOZ_PYTHON_DLL_SUFFIX)
7770 dnl ========================================================
7771 dnl disable profile locking
7772 dnl   do no use this in applications that can have more than
7773 dnl   one process accessing the profile directory.
7774 dnl ========================================================
7775 MOZ_ARG_DISABLE_BOOL(profilelocking,
7776 [  --disable-profilelocking           Disable profile locking],
7777     MOZ_PROFILELOCKING=,
7778     MOZ_PROFILELOCKING=1 )
7779 if test "$MOZ_PROFILELOCKING"; then
7780   AC_DEFINE(MOZ_PROFILELOCKING)
7783 dnl ========================================================
7784 dnl disable rdf services
7785 dnl ========================================================
7786 MOZ_ARG_DISABLE_BOOL(rdf,
7787 [  --disable-rdf           Disable RDF],
7788     MOZ_RDF= )
7789 if test "$MOZ_RDF"; then
7790   AC_DEFINE(MOZ_RDF)
7793 AC_SUBST(MOZ_RDF)
7795 dnl ========================================================
7796 dnl necko configuration options
7797 dnl ========================================================
7800 dnl option to disable various necko protocols
7802 MOZ_ARG_ENABLE_STRING(necko-protocols,
7803 [  --enable-necko-protocols[={http,ftp,default,all,none}]
7804                           Enable/disable specific protocol handlers],
7805 [ for option in `echo $enableval | sed 's/,/ /g'`; do
7806     if test "$option" = "yes" || test "$option" = "all"; then
7807         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7808     elif test "$option" = "no" || test "$option" = "none"; then
7809         NECKO_PROTOCOLS=""
7810     elif test "$option" = "default"; then
7811         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7812     elif test `echo "$option" | grep -c \^-` != 0; then
7813         option=`echo $option | sed 's/^-//'`
7814         NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
7815     else
7816         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
7817     fi
7818 done],
7819     NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
7820 dnl Remove dupes
7821 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
7822 AC_SUBST(NECKO_PROTOCOLS)
7823 for p in $NECKO_PROTOCOLS; do
7824     AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
7825 done
7828 dnl option to disable necko's disk cache
7830 MOZ_ARG_DISABLE_BOOL(necko-disk-cache,
7831 [  --disable-necko-disk-cache
7832                           Disable necko disk cache],
7833     NECKO_DISK_CACHE=,
7834     NECKO_DISK_CACHE=1)
7835 AC_SUBST(NECKO_DISK_CACHE)
7836 if test "$NECKO_DISK_CACHE"; then
7837     AC_DEFINE(NECKO_DISK_CACHE)
7841 dnl option to minimize size of necko's i/o buffers
7843 MOZ_ARG_ENABLE_BOOL(necko-small-buffers,
7844 [  --enable-necko-small-buffers
7845                           Minimize size of necko's i/o buffers],
7846     NECKO_SMALL_BUFFERS=1,
7847     NECKO_SMALL_BUFFERS=)
7848 AC_SUBST(NECKO_SMALL_BUFFERS)
7849 if test "$NECKO_SMALL_BUFFERS"; then
7850     AC_DEFINE(NECKO_SMALL_BUFFERS)
7851 fi 
7854 dnl option to disable cookies
7856 MOZ_ARG_DISABLE_BOOL(cookies,
7857 [  --disable-cookies       Disable cookie support],
7858     NECKO_COOKIES=,
7859     NECKO_COOKIES=1)
7860 AC_SUBST(NECKO_COOKIES)
7861 if test "$NECKO_COOKIES"; then
7862     AC_DEFINE(NECKO_COOKIES)
7865 dnl NECKO_ configuration options are not global
7866 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_"
7868 dnl Only build Mork if it's required
7869 AC_SUBST(MOZ_MORK)
7870 if test "$MOZ_MORK"; then
7871   AC_DEFINE(MOZ_MORK)
7874 dnl Build the lightweight Mork reader if required
7875 AC_SUBST(MOZ_MORKREADER)
7876 if test "$MOZ_MORKREADER"; then
7877   AC_DEFINE(MOZ_MORKREADER)
7880 dnl ========================================================
7881 if test "$MOZ_DEBUG" || test "$NS_TRACE_MALLOC"; then
7882     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7885 dnl ========================================================
7886 dnl =
7887 dnl = Maintainer debug option (no --enable equivalent)
7888 dnl =
7889 dnl ========================================================
7891 AC_SUBST(AR)
7892 AC_SUBST(AR_FLAGS)
7893 AC_SUBST(AR_LIST)
7894 AC_SUBST(AR_EXTRACT)
7895 AC_SUBST(AR_DELETE)
7896 AC_SUBST(AS)
7897 AC_SUBST(ASFLAGS)
7898 AC_SUBST(AS_DASH_C_FLAG)
7899 AC_SUBST(LD)
7900 AC_SUBST(RC)
7901 AC_SUBST(RCFLAGS)
7902 AC_SUBST(WINDRES)
7903 AC_SUBST(USE_SHORT_LIBNAME)
7904 AC_SUBST(IMPLIB)
7905 AC_SUBST(FILTER)
7906 AC_SUBST(BIN_FLAGS)
7907 AC_SUBST(NS_USE_NATIVE)
7908 AC_SUBST(MOZ_WIDGET_TOOLKIT)
7909 AC_SUBST(MOZ_GFX_TOOLKIT)
7910 AC_SUBST(MOZ_UPDATE_XTERM)
7911 AC_SUBST(MINIMO)
7912 AC_SUBST(MOZ_PLATFORM_HILDON)
7913 AC_SUBST(NS_OSSO)
7914 AC_SUBST(NS_MAEMO_LOCATION)
7915 AC_SUBST(MOZ_AUTH_EXTENSION)
7916 AC_SUBST(MOZ_MATHML)
7917 AC_SUBST(MOZ_PERMISSIONS)
7918 AC_SUBST(MOZ_XTF)
7919 AC_SUBST(MOZ_NO_INSPECTOR_APIS)
7920 AC_SUBST(MOZ_PREF_EXTENSIONS)
7921 AC_SUBST(MOZ_SVG)
7922 AC_SUBST(MOZ_SMIL)
7923 AC_SUBST(MOZ_XSLT_STANDALONE)
7924 AC_SUBST(MOZ_JS_LIBS)
7925 AC_SUBST(MOZ_PSM)
7926 AC_SUBST(MOZ_DEBUG)
7927 AC_SUBST(MOZ_DEBUG_MODULES)
7928 AC_SUBST(MOZ_PROFILE_MODULES)
7929 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
7930 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
7931 AC_SUBST(MOZ_DEBUG_FLAGS)
7932 AC_SUBST(MOZ_DEBUG_LDFLAGS)
7933 AC_SUBST(WARNINGS_AS_ERRORS)
7934 AC_SUBST(MOZ_DBGRINFO_MODULES)
7935 AC_SUBST(MOZ_EXTENSIONS)
7936 AC_SUBST(MOZ_IMG_DECODERS)
7937 AC_SUBST(MOZ_IMG_ENCODERS)
7938 AC_SUBST(MOZ_JSDEBUGGER)
7939 AC_SUBST(MOZ_OJI)
7940 AC_SUBST(MOZ_NO_XPCOM_OBSOLETE)
7941 AC_SUBST(MOZ_PLUGINS)
7942 AC_SUBST(ENABLE_EAZEL_PROFILER)
7943 AC_SUBST(EAZEL_PROFILER_CFLAGS)
7944 AC_SUBST(EAZEL_PROFILER_LIBS)
7945 AC_SUBST(MOZ_PERF_METRICS)
7946 AC_SUBST(GC_LEAK_DETECTOR)
7947 AC_SUBST(MOZ_LOG_REFCNT)
7948 AC_SUBST(MOZ_LEAKY)
7949 AC_SUBST(MOZ_JPROF)
7950 AC_SUBST(MOZ_SHARK)
7951 AC_SUBST(MOZ_CALLGRIND)
7952 AC_SUBST(MOZ_VTUNE)
7953 AC_SUBST(MOZ_XPCTOOLS)
7954 AC_SUBST(MOZ_JSLOADER)
7955 AC_SUBST(MOZ_USE_NATIVE_UCONV)
7956 AC_SUBST(MOZ_INSURE)
7957 AC_SUBST(MOZ_INSURE_DIRS)
7958 AC_SUBST(MOZ_INSURE_EXCLUDE_DIRS)
7959 AC_SUBST(MOZ_QUANTIFY)
7960 AC_SUBST(MOZ_INSURIFYING)
7961 AC_SUBST(LIBICONV)
7962 AC_SUBST(MOZ_PLACES)
7963 AC_SUBST(MOZ_PLACES_BOOKMARKS)
7964 AC_SUBST(MOZ_STORAGE)
7965 AC_SUBST(MOZ_FEEDS)
7966 AC_SUBST(NS_PRINTING)
7968 AC_SUBST(MOZ_JAVAXPCOM)
7969 AC_SUBST(JAVA_INCLUDE_PATH)
7970 AC_SUBST(JAVA)
7971 AC_SUBST(JAVAC)
7972 AC_SUBST(JAR)
7974 AC_SUBST(MOZ_PROFILELOCKING)
7976 AC_SUBST(HAVE_XIE)
7977 AC_SUBST(MOZ_XIE_LIBS)
7978 AC_SUBST(MOZ_ENABLE_POSTSCRIPT)
7980 AC_SUBST(XPCOM_USE_LEA)
7981 AC_SUBST(BUILD_STATIC_LIBS)
7982 AC_SUBST(MOZ_ENABLE_LIBXUL)
7983 AC_SUBST(ENABLE_TESTS)
7984 AC_SUBST(IBMBIDI)
7985 AC_SUBST(MOZ_UNIVERSALCHARDET)
7986 AC_SUBST(ACCESSIBILITY)
7987 AC_SUBST(MOZ_XPINSTALL)
7988 AC_SUBST(MOZ_VIEW_SOURCE)
7989 AC_SUBST(MOZ_SPELLCHECK)
7990 AC_SUBST(MOZ_XPFE_COMPONENTS)
7991 AC_SUBST(MOZ_USER_DIR)
7992 AC_SUBST(MOZ_CRASHREPORTER)
7994 AC_SUBST(ENABLE_STRIP)
7995 AC_SUBST(PKG_SKIP_STRIP)
7996 AC_SUBST(USE_ELF_DYNSTR_GC)
7997 AC_SUBST(INCREMENTAL_LINKER)
7998 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
7999 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
8000 AC_SUBST(MOZ_XPCOM_OBSOLETE_LIBS)
8002 AC_SUBST(MOZ_FIX_LINK_PATHS)
8003 AC_SUBST(XPCOM_LIBS)
8004 AC_SUBST(XPCOM_FROZEN_LDOPTS)
8005 AC_SUBST(XPCOM_GLUE_LDOPTS)
8006 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
8008 AC_SUBST(USE_DEPENDENT_LIBS)
8010 AC_SUBST(MOZ_BUILD_ROOT)
8011 AC_SUBST(MOZ_OS2_TOOLS)
8012 AC_SUBST(MOZ_OS2_USE_DECLSPEC)
8014 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
8015 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
8016 AC_SUBST(MOZ_TIMELINE)
8017 AC_SUBST(WINCE)
8018 AC_SUBST(WINCE_SDK_DIR)
8020 AC_SUBST(MOZ_APP_NAME)
8021 AC_SUBST(MOZ_APP_DISPLAYNAME)
8022 AC_SUBST(MOZ_APP_VERSION)
8023 AC_SUBST(FIREFOX_VERSION)
8025 AC_SUBST(MOZ_PKG_SPECIAL)
8027 AC_SUBST(MOZILLA_OFFICIAL)
8028 AC_SUBST(BUILD_OFFICIAL)
8029 AC_SUBST(MOZ_MILESTONE_RELEASE)
8031 dnl win32 options
8032 AC_SUBST(MOZ_PROFILE)
8033 AC_SUBST(MOZ_DEBUG_SYMBOLS)
8034 AC_SUBST(MOZ_MAPINFO)
8035 AC_SUBST(MOZ_BROWSE_INFO)
8036 AC_SUBST(MOZ_TOOLS_DIR)
8037 AC_SUBST(CYGWIN_WRAPPER)
8038 AC_SUBST(AS_PERL)
8039 AC_SUBST(WIN32_REDIST_DIR)
8040 AC_SUBST(PYTHON)
8042 AC_SUBST(WINCE)
8043 AC_SUBST(WINCE_WINDOWS_MOBILE)
8045 dnl Echo the CFLAGS to remove extra whitespace.
8046 CFLAGS=`echo \
8047         $_WARNINGS_CFLAGS \
8048         $CFLAGS`
8050 CXXFLAGS=`echo \
8051         $_MOZ_RTTI_FLAGS \
8052         $_MOZ_EXCEPTIONS_FLAGS \
8053         $_WARNINGS_CXXFLAGS \
8054         $CXXFLAGS`
8056 COMPILE_CFLAGS=`echo \
8057     $_DEFINES_CFLAGS \
8058         $_DEPEND_CFLAGS \
8059     $COMPILE_CFLAGS`
8061 COMPILE_CXXFLAGS=`echo \
8062     $_DEFINES_CXXFLAGS \
8063         $_DEPEND_CFLAGS \
8064     $COMPILE_CXXFLAGS`
8066 AC_SUBST(SYSTEM_MAKEDEPEND)
8067 AC_SUBST(SYSTEM_LIBXUL)
8068 AC_SUBST(SYSTEM_JPEG)
8069 AC_SUBST(SYSTEM_PNG)
8070 AC_SUBST(SYSTEM_ZLIB)
8071 AC_SUBST(SYSTEM_BZ2)
8073 AC_SUBST(JPEG_CFLAGS)
8074 AC_SUBST(JPEG_LIBS)
8075 AC_SUBST(ZLIB_CFLAGS)
8076 AC_SUBST(ZLIB_LIBS)
8077 AC_SUBST(BZ2_CFLAGS)
8078 AC_SUBST(BZ2_LIBS)
8079 AC_SUBST(PNG_CFLAGS)
8080 AC_SUBST(PNG_LIBS)
8082 AC_SUBST(MOZ_JPEG_CFLAGS)
8083 AC_SUBST(MOZ_JPEG_LIBS)
8084 AC_SUBST(MOZ_ZLIB_CFLAGS)
8085 AC_SUBST(MOZ_ZLIB_LIBS)
8086 AC_SUBST(MOZ_BZ2_CFLAGS)
8087 AC_SUBST(MOZ_BZ2_LIBS)
8088 AC_SUBST(MOZ_PNG_CFLAGS)
8089 AC_SUBST(MOZ_PNG_LIBS)
8091 AC_SUBST(NSPR_CFLAGS)
8092 AC_SUBST(NSPR_LIBS)
8093 AC_SUBST(MOZ_NATIVE_NSPR)
8095 AC_SUBST(NSS_CFLAGS)
8096 AC_SUBST(NSS_LIBS)
8097 AC_SUBST(NSS_DEP_LIBS)
8098 AC_SUBST(MOZ_NATIVE_NSS)
8099 AC_SUBST(NSS_DISABLE_DBM)
8101 AC_SUBST(CFLAGS)
8102 AC_SUBST(CXXFLAGS)
8103 AC_SUBST(CPPFLAGS)
8104 AC_SUBST(COMPILE_CFLAGS)
8105 AC_SUBST(COMPILE_CXXFLAGS)
8106 AC_SUBST(LDFLAGS)
8107 AC_SUBST(LIBS)
8108 AC_SUBST(CROSS_COMPILE)
8109 AC_SUBST(WCHAR_CFLAGS)
8111 AC_SUBST(HOST_CC)
8112 AC_SUBST(HOST_CXX)
8113 AC_SUBST(HOST_CFLAGS)
8114 AC_SUBST(HOST_CXXFLAGS)
8115 AC_SUBST(HOST_OPTIMIZE_FLAGS)
8116 AC_SUBST(HOST_AR)
8117 AC_SUBST(HOST_AR_FLAGS)
8118 AC_SUBST(HOST_LD)
8119 AC_SUBST(HOST_RANLIB)
8120 AC_SUBST(HOST_NSPR_MDCPUCFG)
8121 AC_SUBST(HOST_BIN_SUFFIX)
8122 AC_SUBST(HOST_OS_ARCH)
8124 AC_SUBST(TARGET_CPU)
8125 AC_SUBST(TARGET_VENDOR)
8126 AC_SUBST(TARGET_OS)
8127 AC_SUBST(TARGET_NSPR_MDCPUCFG)
8128 AC_SUBST(TARGET_MD_ARCH)
8129 AC_SUBST(TARGET_XPCOM_ABI)
8130 AC_SUBST(OS_TARGET)
8131 AC_SUBST(OS_ARCH)
8132 AC_SUBST(OS_RELEASE)
8133 AC_SUBST(OS_TEST)
8135 AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
8136 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8138 AC_SUBST(WRAP_MALLOC_CFLAGS)
8139 AC_SUBST(WRAP_MALLOC_LIB)
8140 AC_SUBST(MKSHLIB)
8141 AC_SUBST(MKCSHLIB)
8142 AC_SUBST(MKSHLIB_FORCE_ALL)
8143 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8144 AC_SUBST(DSO_CFLAGS)
8145 AC_SUBST(DSO_PIC_CFLAGS)
8146 AC_SUBST(DSO_LDOPTS)
8147 AC_SUBST(LIB_PREFIX)
8148 AC_SUBST(DLL_PREFIX)
8149 AC_SUBST(DLL_SUFFIX)
8150 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8151 AC_SUBST(LIB_SUFFIX)
8152 AC_SUBST(OBJ_SUFFIX)
8153 AC_SUBST(BIN_SUFFIX)
8154 AC_SUBST(ASM_SUFFIX)
8155 AC_SUBST(IMPORT_LIB_SUFFIX)
8156 AC_SUBST(USE_N32)
8157 AC_SUBST(CC_VERSION)
8158 AC_SUBST(CXX_VERSION)
8159 AC_SUBST(MSMANIFEST_TOOL)
8161 if test "$USING_HCC"; then
8162    CC='${topsrcdir}/build/hcc'
8163    CC="$CC '$_OLDCC'"
8164    CXX='${topsrcdir}/build/hcpp'
8165    CXX="$CXX '$_OLDCXX'"
8166    AC_SUBST(CC)
8167    AC_SUBST(CXX)
8170 dnl Check for missing components
8171 if test "$COMPILE_ENVIRONMENT"; then
8172 if test "$MOZ_X11"; then
8173     dnl ====================================================
8174     dnl = Check if X headers exist
8175     dnl ====================================================
8176     _SAVE_CFLAGS=$CFLAGS
8177     CFLAGS="$CFLAGS $XCFLAGS"
8178     AC_TRY_COMPILE([
8179         #include <stdio.h>
8180         #include <stdlib.h>
8181         #include <X11/Xlib.h>
8182         #include <X11/Intrinsic.h>
8183     ],
8184     [
8185         Display *dpy = 0;
8186         if ((dpy = XOpenDisplay(NULL)) == NULL) {
8187             fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8188             exit(1);
8189         }
8190     ], [], 
8191     [ AC_MSG_ERROR([Could not compile basic X program.]) ])
8192     CFLAGS="$_SAVE_CFLAGS"
8194     if test ! -z "$MISSING_X"; then
8195         AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8196     fi
8198 fi # MOZ_X11
8199 fi # COMPILE_ENVIRONMENT
8201 dnl Set various defines and substitutions
8202 dnl ========================================================
8204 if test "$OS_ARCH" = "BeOS"; then
8205   AC_DEFINE(XP_BEOS)
8206   MOZ_MOVEMAIL=1
8207 elif test "$OS_ARCH" = "Darwin"; then
8208   AC_DEFINE(XP_UNIX)
8209   AC_DEFINE(UNIX_ASYNC_DNS)
8210   MOZ_MOVEMAIL=1
8211 elif test "$OS_ARCH" = "OpenVMS"; then
8212   AC_DEFINE(XP_UNIX)
8213 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
8214   AC_DEFINE(XP_UNIX)
8215   AC_DEFINE(UNIX_ASYNC_DNS)
8216   MOZ_MOVEMAIL=1
8218 AC_SUBST(MOZ_MOVEMAIL)
8220 if test "$MOZ_DEBUG"; then
8221     AC_DEFINE(MOZ_REFLOW_PERF)
8222     AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8225 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
8226     AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8227     ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8228     ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8229     ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8230     ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8231     AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8232     AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8233     AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8236 # Used for LD_LIBRARY_PATH of run_viewer target
8237 LIBS_PATH=
8238 for lib_arg in $NSPR_LIBS $TK_LIBS; do
8239   case $lib_arg in
8240     -L* ) LIBS_PATH="${LIBS_PATH:+$LIBS_PATH:}"`expr $lib_arg : "-L\(.*\)"` ;;
8241       * ) ;;
8242   esac
8243 done
8244 AC_SUBST(LIBS_PATH)
8246 dnl ========================================================
8247 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
8248 dnl ========================================================
8249 case "$host_os" in
8250 mingw*)
8251     WIN_TOP_SRC=`cd $srcdir; pwd -W`
8252     ;;
8253 cygwin*|msvc*|mks*)
8254     HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
8255     HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
8256     CC="\$(CYGWIN_WRAPPER) $CC"
8257     CXX="\$(CYGWIN_WRAPPER) $CXX"
8258     CPP="\$(CYGWIN_WRAPPER) $CPP"
8259     LD="\$(CYGWIN_WRAPPER) $LD"
8260     AS="\$(CYGWIN_WRAPPER) $AS"
8261     RC="\$(CYGWIN_WRAPPER) $RC"
8262     MIDL="\$(CYGWIN_WRAPPER) $MIDL"
8263     CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
8264     WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
8265     ;;
8266 esac
8268 AC_SUBST(CYGDRIVE_MOUNT)
8269 AC_SUBST(WIN_TOP_SRC)
8271 AC_SUBST(MOZILLA_VERSION)
8273 AC_SUBST(ac_configure_args)
8275 dnl Spit out some output
8276 dnl ========================================================
8278 dnl The following defines are used by xpcom
8279 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8280 CPP_THROW_NEW
8281 HAVE_CPP_2BYTE_WCHAR_T
8282 HAVE_CPP_ACCESS_CHANGING_USING
8283 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8284 HAVE_CPP_BOOL
8285 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8286 HAVE_CPP_EXPLICIT
8287 HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
8288 HAVE_CPP_NAMESPACE_STD
8289 HAVE_CPP_NEW_CASTS
8290 HAVE_CPP_PARTIAL_SPECIALIZATION
8291 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8292 HAVE_CPP_TYPENAME
8293 HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL
8294 HAVE_STATVFS
8295 NEED_CPP_UNUSED_IMPLEMENTATIONS
8296 NEW_H
8297 HAVE_GETPAGESIZE
8298 HAVE_ICONV
8299 HAVE_ICONV_WITH_CONST_INPUT
8300 HAVE_MBRTOWC
8301 HAVE_SYS_MOUNT_H
8302 HAVE_SYS_VFS_H
8303 HAVE_WCRTOMB
8306 AC_CONFIG_HEADER(
8307 netwerk/necko-config.h
8308 xpcom/xpcom-config.h
8309 xpcom/xpcom-private.h
8312 # Save the defines header file before autoconf removes it.
8313 # (Do not add AC_DEFINE calls after this line.)
8314   _CONFIG_TMP=confdefs-tmp.h
8315   _CONFIG_DEFS_H=mozilla-config.h
8317   cat > $_CONFIG_TMP <<\EOF
8318 /* List of defines generated by configure. Included with preprocessor flag,
8319  * -include, to avoid long list of -D defines on the compile command-line.
8320  * Do not edit.
8321  */
8323 #ifndef _MOZILLA_CONFIG_H_
8324 #define _MOZILLA_CONFIG_H_
8327 _EGREP_PATTERN='^#define ('
8328 if test -n "$_NON_GLOBAL_ACDEFINES"; then
8329     for f in $_NON_GLOBAL_ACDEFINES; do
8330         _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
8331     done
8333 _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
8335   sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
8337   cat >> $_CONFIG_TMP <<\EOF
8339 #endif /* _MOZILLA_CONFIG_H_ */
8343   # Only write mozilla-config.h when something changes (or it doesn't exist)
8344   if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
8345     rm $_CONFIG_TMP
8346   else
8347     AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
8348     mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
8350     echo ==== $_CONFIG_DEFS_H =================================
8351     cat $_CONFIG_DEFS_H
8352   fi
8354 dnl Probably shouldn't call this manually but we always want the output of DEFS
8355 rm -f confdefs.h.save
8356 mv confdefs.h confdefs.h.save
8357 egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
8358 AC_OUTPUT_MAKE_DEFS()
8359 MOZ_DEFINES=$DEFS
8360 AC_SUBST(MOZ_DEFINES)
8361 rm -f confdefs.h
8362 mv confdefs.h.save confdefs.h
8364 dnl Load the list of Makefiles to generate.
8365 dnl   To add new Makefiles, edit allmakefiles.sh.
8366 dnl   allmakefiles.sh sets the variable, MAKEFILES.
8367 . ${srcdir}/allmakefiles.sh
8368 dnl 
8369 dnl Run a perl script to quickly create the makefiles.
8370 dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
8371 dnl   for the files it cannot handle correctly. This way, config.status
8372 dnl   will handle these files.
8373 dnl If it fails, nothing is set and config.status will run as usual.
8375 dnl This does not change the $MAKEFILES variable.
8377 dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
8379 if test -z "${AS_PERL}"; then
8380 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
8381 else
8382 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
8384 . ./conftest.sh
8385 rm conftest.sh
8387 echo $MAKEFILES > unallmakefiles
8389 mv -f config/autoconf.mk config/autoconf.mk.orig 2> /dev/null
8391 AC_OUTPUT($MAKEFILES)
8393 dnl Prevent the regeneration of cairo-features.h forcing rebuilds of gfx stuff
8394 if test "$CAIRO_FEATURES_H"; then
8395   if cmp -s $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig; then
8396     echo "$CAIRO_FEATURES_H is unchanged"
8397     mv -f "$CAIRO_FEATURES_H".orig "$CAIRO_FEATURES_H" 2> /dev/null
8398   else
8399     rm -f "$CAIRO_FEATURES_H".orig 2> /dev/null
8400   fi
8403 dnl ========================================================
8404 dnl = Setup a nice relatively clean build environment for
8405 dnl = sub-configures.
8406 dnl ========================================================
8407 CC="$_SUBDIR_CC" 
8408 CXX="$_SUBDIR_CXX" 
8409 CFLAGS="$_SUBDIR_CFLAGS" 
8410 CPPFLAGS="$_SUBDIR_CPPFLAGS"
8411 CXXFLAGS="$_SUBDIR_CXXFLAGS"
8412 LDFLAGS="$_SUBDIR_LDFLAGS"
8413 HOST_CC="$_SUBDIR_HOST_CC" 
8414 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
8415 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
8418 unset MAKEFILES
8419 unset CONFIG_FILES
8421 # No need to run subconfigures when building with LIBXUL_SDK_DIR
8422 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
8424 if test -z "$MOZ_NATIVE_NSPR"; then
8425     ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
8426     if test -z "$MOZ_DEBUG"; then
8427         ac_configure_args="$ac_configure_args --disable-debug"
8428     fi
8429     if test "$MOZ_OPTIMIZE" = "1"; then
8430         ac_configure_args="$ac_configure_args --enable-optimize"
8431     fi
8432     if test "$OS_ARCH" = "WINNT" && test "$NS_TRACE_MALLOC"; then
8433        ac_configure_args="$ac_configure_args --enable-debug --disable-optimize"
8434     fi
8435     if test -n "$HAVE_64BIT_OS"; then
8436         ac_configure_args="$ac_configure_args --enable-64bit"
8437     fi
8438     if test -n "$USE_ARM_KUSER"; then
8439         ac_configure_args="$ac_configure_args --with-arm-kuser"
8440     fi
8441     AC_OUTPUT_SUBDIRS(nsprpub)
8442     ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8445 if test -z "$MOZ_NATIVE_NSPR"; then
8446     # Hack to deal with the fact that we use NSPR_CFLAGS everywhere
8447     AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
8448     if test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE"; then
8449        NSPR_LIBS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --libdir=$LIBXUL_DIST/lib --libs`
8450        $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $NSPR_LIBS'" config/autoconf.mk
8451        NSPR_CFLAGS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --includedir=$LIBXUL_DIST/include/nspr --cflags`
8452        $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $NSPR_CFLAGS'" config/autoconf.mk
8453     fi
8454     rm -f config/autoconf.mk.bak
8457 # Run the SpiderMonkey 'configure' script.
8458 dist=$MOZ_BUILD_ROOT/dist
8459 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8460 ac_configure_args="$ac_configure_args --enable-threadsafe"
8461 if test -z "$MOZ_NATIVE_NSPR"; then
8462     ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
8463     ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
8465 ac_configure_args="$ac_configure_args --with-dist-dir=../../dist"
8466 ac_configure_args="$ac_configure_args --includedir=$dist/include"
8467 ac_configure_args="$ac_configure_args --bindir=$dist/bin"
8468 ac_configure_args="$ac_configure_args --libdir=$dist/lib"
8469 ac_configure_args="$ac_configure_args --with-sync-build-files=$_topsrcdir"
8470 if test "$MOZ_MEMORY"; then
8471    ac_configure_args="$ac_configure_args --enable-jemalloc"  
8473 AC_OUTPUT_SUBDIRS(js/src)
8474 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8476 fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR
8478 dnl Prevent the regeneration of autoconf.mk forcing rebuilds of the world
8479 dnl Needs to be at the end to respect possible changes from NSPR configure
8480 if cmp -s config/autoconf.mk config/autoconf.mk.orig; then
8481   echo "config/autoconf.mk is unchanged"
8482   mv -f config/autoconf.mk.orig config/autoconf.mk 2> /dev/null
8483 else
8484   rm -f config/autoconf.mk.orig 2> /dev/null