Bug 450717 dep file for pixman-mmx.c isn't generated with GCC, r=ted.mielczarek
[wine-gecko.git] / configure.in
blobd7a539e44521498052b7f7f6aa74a79112b4acad
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 LIBART_VERSION=2.3.4
122 CAIRO_VERSION=1.6.0
123 GLITZ_VERSION=0.4.0
124 PANGO_VERSION=1.10.0
125 GTK2_VERSION=2.10.0
126 MAKE_VERSION=3.78
127 WINDRES_VERSION=2.14.90
128 W32API_VERSION=3.8
129 GNOMEVFS_VERSION=2.0
130 GNOMEUI_VERSION=2.2.0
131 GCONF_VERSION=1.2.1
132 LIBGNOME_VERSION=2.0
133 STARTUP_NOTIFICATION_VERSION=0.8
134 DBUS_VERSION=0.60
135 LCMS_VERSION=1.17
136 SQLITE_VERSION=3.5.4
138 MSMANIFEST_TOOL=
140 dnl Set various checks
141 dnl ========================================================
142 MISSING_X=
143 AC_PROG_AWK
145 dnl Initialize the Pthread test variables early so they can be
146 dnl  overridden by each platform.
147 dnl ========================================================
148 USE_PTHREADS=
149 _PTHREAD_LDFLAGS=""
151 dnl Do not allow a separate objdir build if a srcdir build exists.
152 dnl ==============================================================
153 _topsrcdir=`cd \`dirname $0\`; pwd`
154 _objdir=`pwd`
156 if test "$_topsrcdir" != "$_objdir"
157 then
158   # Check for a couple representative files in the source tree
159   _conflict_files=
160   for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
161     if test -f $file; then
162       _conflict_files="$_conflict_files $file"
163     fi
164   done
165   if test "$_conflict_files"; then
166     echo "***"
167     echo "*   Your source tree contains these files:"
168     for file in $_conflict_files; do
169       echo "*         $file"
170     done
171     cat 1>&2 <<-EOF
172         *   This indicates that you previously built in the source tree.
173         *   A source tree build can confuse the separate objdir build.
174         *
175         *   To clean up the source tree:
176         *     1. cd $_topsrcdir
177         *     2. gmake distclean
178         ***
179         EOF
180     exit 1
181     break
182   fi
184 MOZ_BUILD_ROOT=`pwd`
186 dnl Default to MSVC for win32
187 dnl ==============================================================
188 if test -z "$CROSS_COMPILE"; then
189 case "$target" in
190 *-cygwin*|*-mingw*|*-msvc*|*-mks*)
191     MAKE_VERSION=3.79
192     if test -z "$CC"; then CC=cl; fi
193     if test -z "$CXX"; then CXX=cl; fi
194     if test -z "$CPP"; then CPP="cl -E -nologo"; fi
195     if test -z "$CXXCPP"; then CXXCPP="cl -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
196     if test -z "$LD"; then LD=link; fi
197     if test -z "$AS"; then AS=ml; fi
198     if test -z "$MIDL"; then MIDL=midl; fi
199     ;;
200 esac
203 COMPILE_ENVIRONMENT=1
204 MOZ_ARG_ENABLE_BOOL(compile-environment,
205 [  --disable-compile-environment
206                            Disable compiler/library checks.],
207     COMPILE_ENVIRONMENT=1,
208     COMPILE_ENVIRONMENT= )
210 MOZ_ARG_WITH_STRING(l10n-base,
211 [  --with-l10n-base=DIR     path to l10n repositories],
212     L10NBASEDIR=$withval)
213 if test ! -z "$L10NBASEDIR"; then
214     if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then
215         AC_MSG_ERROR([--with-l10n-base must specify a path])
216     elif test -d "$L10NBASEDIR"; then
217         L10NBASEDIR=`cd "$L10NBASEDIR" && pwd`
218     else
219         AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
220     fi
222 AC_SUBST(L10NBASEDIR)
224 dnl ========================================================
225 dnl Checks for compilers.
226 dnl ========================================================
227 dnl Set CROSS_COMPILE in the environment when running configure
228 dnl to use the cross-compile setup for now
229 dnl ========================================================
231 if test "$COMPILE_ENVIRONMENT"; then
233 dnl Do some special WinCE toolchain stuff
234 case "$target" in
235 *wince)
236     echo -----------------------------------------------------------------------------
237     echo Building Windows CE Shunt Library and Tool Chain
238     echo -----------------------------------------------------------------------------
240     ac_exeext=.exe
242     echo -n "#define TOPSRCDIR \"" > $srcdir/build/wince/tools/topsrcdir.h
243     echo `cd "$_topsrcdir" && pwd -W | tr '\n' '\"'` >> $srcdir/build/wince/tools/topsrcdir.h
244     make -C $srcdir/build/wince/tools
245     echo -----------------------------------------------------------------------------
246     ;;
247 esac
249 if test -n "$CROSS_COMPILE" && test "$target" != "$host"; then
250     echo "cross compiling from $host to $target"
251     cross_compiling=yes
253     _SAVE_CC="$CC"
254     _SAVE_CFLAGS="$CFLAGS"
255     _SAVE_LDFLAGS="$LDFLAGS"
257     AC_MSG_CHECKING([for host c compiler])
258     AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
259     if test -z "$HOST_CC"; then
260         AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
261     fi
262     AC_MSG_RESULT([$HOST_CC])
263     AC_MSG_CHECKING([for host c++ compiler])
264     AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
265     if test -z "$HOST_CXX"; then
266         AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
267     fi
268     AC_MSG_RESULT([$HOST_CXX])
270     if test -z "$HOST_CFLAGS"; then
271         HOST_CFLAGS="$CFLAGS"
272     fi
273     if test -z "$HOST_CXXFLAGS"; then
274         HOST_CXXFLAGS="$CXXFLAGS"
275     fi
276     if test -z "$HOST_LDFLAGS"; then
277         HOST_LDFLAGS="$LDFLAGS"
278     fi
279     AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
280     AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
281     CC="$HOST_CC"
282     CFLAGS="$HOST_CFLAGS"
283     LDFLAGS="$HOST_LDFLAGS"
285     AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
286     AC_TRY_COMPILE([], [return(0);], 
287         [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
288         AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
290     CC="$HOST_CXX"
291     CFLAGS="$HOST_CXXFLAGS"
293     AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
294     AC_TRY_COMPILE([], [return(0);], 
295         [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
296         AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
297     
298     CC=$_SAVE_CC
299     CFLAGS=$_SAVE_CFLAGS
300     LDFLAGS=$_SAVE_LDFLAGS
302     case "$build:$target" in
303       powerpc-apple-darwin8*:i?86-apple-darwin*)
304         dnl The Darwin cross compiler doesn't necessarily point itself at a
305         dnl root that has libraries for the proper architecture, it defaults
306         dnl to the system root.  The libraries in the system root on current
307         dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
308         dnl checks will fail.  Fake a working SDK in that case.
309         _SAVE_CFLAGS=$CFLAGS
310         _SAVE_CXXFLAGS=$CXXLAGS
311         CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CFLAGS"
312         CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CXXFLAGS"
313         ;;
314     esac
316     AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
317     unset ac_cv_prog_CC
318     AC_PROG_CC
319     AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
320     unset ac_cv_prog_CXX
321     AC_PROG_CXX
323     case "$build:$target" in
324       powerpc-apple-darwin8*:i?86-apple-darwin*)
325         dnl Revert the changes made above.  From this point on, the target
326         dnl compiler will never be used without applying the SDK to CFLAGS
327         dnl (see --with-macos-sdk below).
328         CFLAGS=$_SAVE_CFLAGS
329         CXXFLAGS=$_SAVE_CXXFLAGS
330         ;;
331     esac
333     AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
334     AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
335     AC_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
336     AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
337     AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
338     AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
339     AC_DEFINE(CROSS_COMPILE)
340 else
341     AC_PROG_CC
342     AC_PROG_CXX
343     AC_PROG_RANLIB
344     AC_PATH_PROGS(AS, $AS as, $CC)
345     AC_CHECK_PROGS(AR, ar, :)
346     AC_CHECK_PROGS(LD, ld, :)
347     AC_CHECK_PROGS(STRIP, strip, :)
348     AC_CHECK_PROGS(WINDRES, windres, :)
349     if test -z "$HOST_CC"; then
350         HOST_CC="$CC"
351     fi
352     if test -z "$HOST_CFLAGS"; then
353         HOST_CFLAGS="$CFLAGS"
354     fi
355     if test -z "$HOST_CXX"; then
356         HOST_CXX="$CXX"
357     fi
358     if test -z "$HOST_CXXFLAGS"; then
359         HOST_CXXFLAGS="$CXXFLAGS"
360     fi
361     if test -z "$HOST_LDFLAGS"; then
362         HOST_LDFLAGS="$LDFLAGS"
363     fi
364     if test -z "$HOST_RANLIB"; then
365         HOST_RANLIB="$RANLIB"
366     fi
367     if test -z "$HOST_AR"; then
368        HOST_AR="$AR"
369     fi
372 GNU_AS=
373 GNU_LD=
374 GNU_CC=
375 GNU_CXX=
376 CC_VERSION='N/A'
377 CXX_VERSION='N/A'
378 if test "$GCC" = "yes"; then
379     GNU_CC=1
380     CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
382 if test "$GXX" = "yes"; then
383     GNU_CXX=1
384     CXX_VERSION=`$CXX -v 2>&1 | grep 'gcc version'`
386 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
387     GNU_AS=1
389 if test "`echo | $LD -v 2>&1 | grep -c GNU`" != "0"; then
390     GNU_LD=1
392 if test "$GNU_CC"; then
393     if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
394         GCC_USE_GNU_LD=1
395     fi
398 INTEL_CC=
399 INTEL_CXX=
400 if test "$GCC" = yes; then
401    if test "`$CC -help 2>&1 | grep -c 'Intel(R) C Compiler'`" != "0"; then
402      INTEL_CC=1
403    fi
406 if test "$GXX" = yes; then
407    if test "`$CXX -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
408      INTEL_CXX=1
409    fi
412 dnl Special win32 checks
413 dnl ========================================================
414 case "$target" in
415 *-wince)
416     WINVER=500
417     ;;
419     if test -n "$GNU_CC"; then  
420         WINVER=501
421     else    
422         WINVER=500
423     fi
424     ;;
425 esac
427 MOZ_ARG_WITH_STRING(windows-version,
428 [  --with-windows-version=WINVER
429                           Minimum Windows version (WINVER) to support
430                               400: Windows 95
431                               500: Windows 2000
432                               501: Windows XP],
433   WINVER=$withval)
435 case "$WINVER" in
436 400|500|501)
437     ;;
440     AC_MSG_ERROR([Invalid value --with-windows-version, must be 400, 500 or 501]);
441     ;;
443 esac
445 case "$target" in
446 *-cygwin*|*-mingw*|*-msvc*|*-mks*|*-wince)
447     if test "$GCC" != "yes"; then
448         # Check to see if we are really running in a msvc environemnt
449         _WIN32_MSVC=1
450         AC_CHECK_PROGS(MIDL, midl)
452         # Make sure compilers are valid
453         CFLAGS="$CFLAGS -TC -nologo"
454         CXXFLAGS="$CXXFLAGS -TP -nologo"
455         AC_LANG_SAVE
456         AC_LANG_C
457         AC_TRY_COMPILE([#include <stdio.h>],
458             [ printf("Hello World\n"); ],,
459             AC_MSG_ERROR([\$(CC) test failed.  You must have MS VC++ in your path to build.]) )
461         AC_LANG_CPLUSPLUS
462         AC_TRY_COMPILE([#include <new.h>],
463             [ unsigned *test = new unsigned(42); ],,
464             AC_MSG_ERROR([\$(CXX) test failed.  You must have MS VC++ in your path to build.]) )
465         AC_LANG_RESTORE
466         
467         changequote(,)
468         _MSVC_VER_FILTER='s|.* ([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
469         changequote([,])
470         
471         # Determine compiler version
472         CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
473         _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
474         _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
475         _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
476         _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
477         _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
479         CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
480         _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
482         if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
483             AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
484         fi
485         if test "$_CC_MAJOR_VERSION" = "12"; then
486             _CC_SUITE=6
487         elif test "$_CC_MAJOR_VERSION" = "13"; then
488             _CC_SUITE=7
489         elif test "$_CC_MAJOR_VERSION" = "14"; then
490             _CC_SUITE=8
491             CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
492             dnl -DYNAMICBASE is only supported on VC8SP1 or newer,
493             dnl so be very specific here!
494             dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762
495             if test $_CC_RELEASE -gt 50727; then
496                _USE_DYNAMICBASE=1
497             elif test $_CC_BUILD -ge 762; then
498                _USE_DYNAMICBASE=1
499             fi
500             AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
501             AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
502         elif test "$_CC_MAJOR_VERSION" = "15"; then
503             _CC_SUITE=9
504             CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
505             LDFLAGS="$LDFLAGS -MANIFESTUAC:NO"
506             _USE_DYNAMICBASE=1
507             AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
508             AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
509         else
510             AC_MSG_ERROR([This version of the MSVC compiler, $CC_VERSION , is unsupported.])
511         fi
513         _MOZ_RTTI_FLAGS_ON='-GR'
514         _MOZ_RTTI_FLAGS_OFF='-GR-'
515         _MOZ_EXCEPTIONS_FLAGS_ON='-EHsc'
516         _MOZ_EXCEPTIONS_FLAGS_OFF=''
518         if test -n "$WIN32_REDIST_DIR"; then
519             WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
520         fi
521         
522         # bug #249782
523         # ensure that mt.exe is Microsoft (R) Manifest Tool and not magnetic tape manipulation utility (or something else)
524         if test "$_CC_SUITE" -ge "8"; then
525                 changequote(,)
526                 _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
527                 changequote([,])
529                 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
530                 if test -n "$MSMT_TOOL"; then
531                         MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
532                         if test -z "$MSMANIFEST_TOOL_VERSION"; then
533                                 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
534                         fi
535                         MSMANIFEST_TOOL=1
536                         unset MSMT_TOOL
537                 else
538                         AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
539                 fi
540         fi
542         # Check linker version
543         _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
544         _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
545         if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
546             AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION,  does not match the compiler suite version, $_CC_SUITE.])
547         fi
548         INCREMENTAL_LINKER=1
550         # Check midl version
551         _MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
552         _MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
553         _MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
554         _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
555          # Add flags if necessary
556          AC_MSG_CHECKING([for midl flags])
557          if test \( "$_MIDL_MAJOR_VERSION" -gt "6" \) -o \( "$_MIDL_MAJOR_VERSION" = "6" -a "$_MIDL_MINOR_VERSION" -gt "0" \) -o \( "$_MIDL_MAJOR_VERSION" = "6" -a "$_MIDL_MINOR_VERSION" = "00" -a "$_MIDL_REV_VERSION" -gt "359" \); then
558              # Starting with MIDL version 6.0.359, the MIDL compiler
559              # generates /Oicf /robust stubs by default, which is not
560              # compatible with versions of Windows older than Win2k.
561              # This switches us back to the old behaviour. When we drop
562              # support for Windows older than Win2k, we should remove
563              # this.
564              MIDL_FLAGS="${MIDL_FLAGS} -no_robust"
565              AC_MSG_RESULT([need -no_robust])
566          else
567              MIDL_FLAGS="${MIDL_FLAGS}"
568              AC_MSG_RESULT([none needed])
569         fi
570         
571         unset _MSVC_VER_FILTER
572         
573     else
574         # Check w32api version
575         _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
576         _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
577         AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
578         AC_TRY_COMPILE([#include <w32api.h>],
579             #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
580                 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
581                  __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
582                 #error "test failed."
583             #endif
584             , [ res=yes ], [ res=no ])
585         AC_MSG_RESULT([$res])
586         if test "$res" != "yes"; then
587             AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
588         fi
589         # Check windres version
590         AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
591         _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
592         AC_MSG_RESULT([$_WINDRES_VERSION])
593         _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
594         _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
595         _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
596         WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
597         WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
598         WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
599         if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
600                 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
601                 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
602                 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
603                 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
604                 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
605         then
606             AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
607         fi
608     fi # !GNU_CC
610     AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
611     AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
612     # Require OS features provided by IE 5.0
613     AC_DEFINE_UNQUOTED(_WIN32_IE,0x0500)
614     ;;
615 esac
617 dnl Test breaks icc on OS/2 && MSVC
618 if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
619     AC_PROG_CC_C_O
620     if grep "NO_MINUS_C_MINUS_O 1" ./confdefs.h >/dev/null; then
621         USING_HCC=1
622         _OLDCC=$CC
623         _OLDCXX=$CXX
624         CC="${srcdir}/build/hcc '$CC'"
625         CXX="${srcdir}/build/hcpp '$CXX'"
626     fi
629 AC_PROG_CPP
630 AC_PROG_CXXCPP
632 if test -n "$_WIN32_MSVC"; then
633     SKIP_PATH_CHECKS=1
634     SKIP_COMPILER_CHECKS=1
635     SKIP_LIBRARY_CHECKS=1
638 fi # COMPILE_ENVIRONMENT
640 AC_SUBST(MIDL_FLAGS)
641 AC_SUBST(_MSC_VER)
643 AC_SUBST(GNU_AS)
644 AC_SUBST(GNU_LD)
645 AC_SUBST(GNU_CC)
646 AC_SUBST(GNU_CXX)
647 AC_SUBST(INTEL_CC)
648 AC_SUBST(INTEL_CXX)
650 dnl ========================================================
651 dnl Checks for programs.
652 dnl ========================================================
653 AC_PROG_INSTALL
654 AC_PROG_LN_S
655 AC_PATH_PROGS(PERL, $PERL perl5 perl )
656 if test -z "$PERL" || test "$PERL" = ":"; then
657     AC_MSG_ERROR([perl not found in \$PATH])
660 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
661 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
662 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
663 _perl_res=$?
664 AC_MSG_RESULT([$_perl_version])
666 if test "$_perl_res" != 0; then
667     AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
671 AC_MSG_CHECKING([for full perl installation])
672 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
673 _perl_res=$?
674 if test "$_perl_res" != 0; then
675     AC_MSG_RESULT([no])
676     AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}.  A full perl installation is required.])
677 else
678     AC_MSG_RESULT([yes])    
681 AC_PATH_PROGS(PYTHON, $PYTHON python)
682 if test -z "$PYTHON"; then
683     AC_MSG_ERROR([python was not found in \$PATH])
685 echo PYTHON="$PYTHON"
687 AC_PATH_PROGS(NSINSTALL_BIN, nsinstall )
688 if test -z "$COMPILE_ENVIRONMENT"; then
689 if test -z "$NSINSTALL_BIN" || test "$NSINSTALL_BIN" = ":"; then
690     NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
693 AC_SUBST(NSINSTALL_BIN)
695 AC_PATH_PROG(DOXYGEN, doxygen, :)
696 AC_PATH_PROG(WHOAMI, whoami, :)
697 AC_PATH_PROG(AUTOCONF, autoconf, :)
698 AC_PATH_PROG(UNZIP, unzip, :)
699 AC_PATH_PROGS(ZIP, zip)
700 if test -z "$ZIP" || test "$ZIP" = ":"; then
701     AC_MSG_ERROR([zip not found in \$PATH])
703 AC_PATH_PROG(SYSTEM_MAKEDEPEND, makedepend)
704 AC_PATH_PROG(XARGS, xargs)
705 if test -z "$XARGS" || test "$XARGS" = ":"; then
706     AC_MSG_ERROR([xargs not found in \$PATH .])
709 if test "$COMPILE_ENVIRONMENT"; then
711 dnl ========================================================
712 dnl = Mac OS X toolchain support
713 dnl ========================================================
715 case "$target_os" in
716 darwin*)
717     dnl Current known valid versions for GCC_VERSION are 2.95.2 3.1 3.3 4.0.
718     dnl 4.0 identifies itself as 4.0.x, so strip the decidecimal for
719     dnl the environment and includedir purposes (when using an SDK, below),
720     dnl but remember the full version number for the libdir (SDK).
721     changequote(,)
722     GCC_VERSION_FULL=`echo $CXX_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
723     GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
724     changequote([,])
725     if test "$GCC_VERSION_FULL" = "4.0.0" ; then
726         dnl Bug 280479, but this keeps popping up in bug 292530 too because
727         dnl 4.0.0/4061 is the default compiler in Tiger.
728         changequote(,)
729         GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
730         changequote([,])
731         if test "$GCC_BUILD" = "4061" ; then
732             AC_MSG_ERROR([You are attempting to use Apple gcc 4.0 build 4061.
733 This compiler was supplied with Xcode 2.0, and contains bugs that prevent it
734 from building Mozilla. Upgrade to Xcode 2.1 or later.])
735         fi
736     fi
738     dnl xcodebuild needs GCC_VERSION defined in the environment, since it
739     dnl doesn't respect the CC/CXX setting.  With GCC_VERSION set, it will use
740     dnl /usr/bin/g(cc|++)-$GCC_VERSION.
741     AC_PATH_PROGS(PBBUILD, pbbuild xcodebuild pbxbuild)
743     case "$PBBUILD" in
744       *xcodebuild*)
745         changequote(,)
746         XCODEBUILD_VERSION=`$PBBUILD -version 2>/dev/null | xargs | sed -e 's/.*DevToolsCore-\([0-9]*\).*/\1/'`
747         changequote([,])
748         if test -n "$XCODEBUILD_VERSION" && test "$XCODEBUILD_VERSION" -ge 620 ; then
749           HAS_XCODE_2_1=1;
750         fi
751       ;;
752     esac
754     dnl sdp was formerly in /Developer/Tools.  As of Mac OS X 10.4 (Darwin 8),
755     dnl it has moved into /usr/bin.
756     AC_PATH_PROG(SDP, sdp, :, [$PATH:/usr/bin:/Developer/Tools])
757     ;;
758 esac
760 AC_SUBST(GCC_VERSION)
761 AC_SUBST(XCODEBUILD_VERSION)
762 AC_SUBST(HAS_XCODE_2_1)
764 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
765 dnl that a universal binary is being produced.
766 AC_SUBST(UNIVERSAL_BINARY)
768 dnl ========================================================
769 dnl Check for MacOS deployment target version
770 dnl ========================================================
772 MOZ_ARG_ENABLE_STRING(macos-target,
773                       [  --enable-macos-target=VER (default=10.4)
774                           Set the minimum MacOS version needed at runtime],
775                       [_MACOSX_DEPLOYMENT_TARGET=$enableval])
777 case "$target" in
778 *-darwin*)
779     if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
780         dnl Use the specified value
781         export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
782         AC_DEFINE_UNQUOTED(__ENVIRONMENT_MAC_OS_X_VERION_MIN_REQUIRED__,$_MACOSX_DEPLOYMENT_TARGET)
783     elif test -z "$MACOSX_DEPLOYMENT_TARGET" ; then
784         dnl No value specified on the command line or in the environment,
785         dnl use the lesser of the application's minimum or the architecture's
786         dnl minimum.
787         export MACOSX_DEPLOYMENT_TARGET=10.4
788     fi
789     ;;
790 esac
792 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
794 dnl ========================================================
795 dnl = Mac OS X SDK support
796 dnl ========================================================
797 MACOS_SDK_DIR=
798 NEXT_ROOT=
799 MOZ_ARG_WITH_STRING(macos-sdk,
800 [  --with-macos-sdk=dir   Location of platform SDK to use (Mac OS X only)],
801     MACOS_SDK_DIR=$withval)
803 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
804 dnl NEXT_ROOT will be set and exported only if it's needed.
805 AC_SUBST(MACOS_SDK_DIR)
806 AC_SUBST(NEXT_ROOT)
808 if test "$MACOS_SDK_DIR"; then
809   dnl Sync this section with the ones in NSPR and NSS.
810   dnl Changes to the cross environment here need to be accounted for in
811   dnl the libIDL checks (below) and xpidl build.
813   if test ! -d "$MACOS_SDK_DIR"; then
814     AC_MSG_ERROR([SDK not found.  When using --with-macos-sdk, you must
815 specify a valid SDK.  SDKs are installed when the optional cross-development
816 tools are selected during the Xcode/Developer Tools installation.])
817   fi
819   GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
820   if test "$GCC_VERSION_MAJOR" -lt "4" ; then
821     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"
822     if test -d "${MACOS_SDK_DIR}/Library/Frameworks" ; then
823       SDK_C_INCLUDE="$SDK_C_INCLUDE -F${MACOS_SDK_DIR}/Library/Frameworks"
824     fi
825     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"
827     CFLAGS="$CFLAGS -nostdinc ${SDK_C_INCLUDE}"
828     CXXFLAGS="$CXXFLAGS -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
830     dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
831     CPP="$CPP -nostdinc ${SDK_C_INCLUDE}"
832     CXXCPP="$CXXCPP -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
834     dnl ld support for -syslibroot is compiler-agnostic, but only available
835     dnl on Tiger.  Although it's possible to switch on the build host's
836     dnl OS release to use ld -syslibroot when available, ld -syslibroot will
837     dnl cause warnings as long as NEXT_ROOT is set.  NEXT_ROOT should be
838     dnl set because both the compiler and linker use it.
839     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"
840     export NEXT_ROOT=$MACOS_SDK_DIR
842     if test -n "$CROSS_COMPILE" ; then
843       dnl NEXT_ROOT will be in the environment, but it shouldn't be set for
844       dnl the build host.  HOST_CXX is presently unused.
845       HOST_CC="NEXT_ROOT= $HOST_CC"
846       HOST_CXX="NEXT_ROOT= $HOST_CXX"
847     fi
848   else
849     dnl gcc >= 4.0 uses different paths than above, but knows how to find
850     dnl them itself.
851     CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
852     CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
854     dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
855     CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
856     CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
858     if test "$GCC_VERSION_FULL" = "4.0.0" ; then
859       dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
860       dnl that supports -syslibroot.  Don't set NEXT_ROOT because it will
861       dnl be ignored and cause warnings when -syslibroot is specified.
862       dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
863       dnl the -isysroot it receives, so this is only needed with 4.0.0.
864       LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
865     fi
866   fi
868   AC_LANG_SAVE
869   AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
870   AC_LANG_CPLUSPLUS
871   AC_TRY_COMPILE([#include <new>
872                  int main() { return 0; }],
873    result=yes,
874    result=no)
875   AC_LANG_RESTORE
876   AC_MSG_RESULT($result)
878   if test "$result" = "no" ; then
879     AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
880   fi
883 fi # COMPILE_ENVIRONMENT
885 dnl Be sure the make we use is GNU make.
886 dnl on win32, gmake.exe is the generally the wrong version
887 case "$host_os" in
888 cygwin*|mingw*|mks*|msvc*)
889     AC_PATH_PROGS(MAKE, $MAKE make gmake, :)
890     ;;
892     AC_PATH_PROGS(MAKE, $MAKE gmake make, :)
893     ;;
894 esac
895 _make_try=`$MAKE --version 2>/dev/null | grep GNU`
896 if test ! "$_make_try"
897 then
898         echo
899         echo "*** $MAKE is not GNU Make.  You will not be able to build Mozilla without GNU Make."
900         echo
901         exit 1
903 dnl Now exit if version if < MAKE_VERSION
904 rm -f dummy.mk
905 echo 'all: ; @echo $(MAKE_VERSION)' > dummy.mk
906 _make_vers=`$MAKE --no-print-directory -f dummy.mk all 2>/dev/null`
907 rm -f dummy.mk
908 _MAKE_MAJOR_VERSION=`echo $_make_vers | $AWK -F\. '{ print $1 }'`
909 _MAKE_MINOR_VERSION=`echo $_make_vers | $AWK -F\. '{ print $2 }'`
910 MAKE_MAJOR_VERSION=`echo $MAKE_VERSION | $AWK -F\. '{ print $1 }'`
911 MAKE_MINOR_VERSION=`echo $MAKE_VERSION | $AWK -F\. '{ print $2 }'`
912 if test "$_MAKE_MAJOR_VERSION" -lt "$MAKE_MAJOR_VERSION" || \
913    test "$_MAKE_MAJOR_VERSION" = "$MAKE_MAJOR_VERSION" -a \
914         "$_MAKE_MINOR_VERSION" -lt "$MAKE_MINOR_VERSION"; then
915    AC_MSG_ERROR([GNU Make $MAKE_VERSION or higher is required to build Mozilla.])
917 AC_SUBST(MAKE)
919 if test "$COMPILE_ENVIRONMENT"; then
921 AC_PATH_XTRA
923 dnl Check in X11 include directory too.
924 if test "$no_x" != "yes"; then
925     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
928 XCFLAGS="$X_CFLAGS"
930 fi # COMPILE_ENVIRONMENT
932 dnl ========================================================
933 dnl set the defaults first
934 dnl ========================================================
935 AS_BIN=$AS
936 AR_FLAGS='cr $@'
937 AR_LIST='$(AR) t'
938 AR_EXTRACT='$(AR) x'
939 AR_DELETE='$(AR) d'
940 AS='$(CC)'
941 AS_DASH_C_FLAG='-c'
942 DLL_PREFIX=lib
943 LIB_PREFIX=lib
944 DLL_SUFFIX=.so
945 OBJ_SUFFIX=o
946 LIB_SUFFIX=a
947 ASM_SUFFIX=s
948 IMPORT_LIB_SUFFIX=
949 TARGET_MD_ARCH=unix
950 DIRENT_INO=d_ino
951 CYGWIN_WRAPPER=
952 WIN_TOP_SRC=
953 MOZ_USER_DIR=".mozilla"
954 HOST_AR='$(AR)'
955 HOST_AR_FLAGS='$(AR_FLAGS)'
957 MOZ_JPEG_CFLAGS=
958 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/jpeg)'
959 MOZ_ZLIB_CFLAGS=
960 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,$(DEPTH)/modules/zlib/src)'
961 MOZ_BZ2_CFLAGS=
962 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
963 MOZ_PNG_CFLAGS=
964 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/modules/libimg/png)'
966 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs'
967 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxpcom -lxpcom_core'
968 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(PREFIX)/lib'
969 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxpcom'
970 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) -lxul'
971 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
972 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
974 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
975 MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom_compat'
977 USE_DEPENDENT_LIBS=1
979 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
980 MOZ_GFX_TOOLKIT='$(MOZ_WIDGET_TOOLKIT)'
982 MOZ_ENABLE_POSTSCRIPT=1 
984 if test -n "$CROSS_COMPILE"; then
985     OS_TARGET="${target_os}"
986     OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
987     OS_RELEASE=
988     case "${target_os}" in
989         linux*)       OS_ARCH=Linux OS_TARGET=Linux ;;
990         kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
991         solaris*)     OS_ARCH=SunOS OS_RELEASE=5 ;;
992         mingw*)       OS_ARCH=WINNT ;;
993         wince*)       OS_ARCH=WINCE ;;
994         darwin*)      OS_ARCH=Darwin OS_TARGET=Darwin ;;
995     esac
996 else
997     OS_TARGET=`uname -s`
998     OS_ARCH=`uname -s | sed -e 's|/|_|g'`
999     OS_RELEASE=`uname -r`
1002 # Before this used `uname -m` when not cross compiling
1003 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1004 OS_TEST="${target_cpu}"
1006 _COMPILER_PREFIX=
1008 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1010 #######################################################################
1011 # Master "Core Components" macros for getting the OS target           #
1012 #######################################################################
1015 # Note: OS_TARGET should be specified on the command line for gmake.
1016 # When OS_TARGET=WIN95 is specified, then a Windows 95 target is built.
1017 # The difference between the Win95 target and the WinNT target is that
1018 # the WinNT target uses Windows NT specific features not available
1019 # in Windows 95. The Win95 target will run on Windows NT, but (supposedly)
1020 # at lesser performance (the Win95 target uses threads; the WinNT target
1021 # uses fibers).
1023 # When OS_TARGET=WIN16 is specified, then a Windows 3.11 (16bit) target
1024 # is built. See: win16_3.11.mk for lots more about the Win16 target.
1026 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1027 # cross-compilation.
1031 # The following hack allows one to build on a WIN95 machine (as if
1032 # s/he were cross-compiling on a WINNT host for a WIN95 target).
1033 # It also accomodates for MKS's uname.exe.  If you never intend
1034 # to do development on a WIN95 machine, you don't need this hack.
1036 case "$OS_ARCH" in
1037 WIN95)
1038     OS_ARCH=WINNT
1039     OS_TARGET=WIN95
1040     ;;
1041 Windows_95)
1042     OS_ARCH=Windows_NT
1043     OS_TARGET=WIN95
1044     ;;
1045 Windows_98)
1046     OS_ARCH=Windows_NT
1047     OS_TARGET=WIN95
1048     ;;
1049 CYGWIN_9*|CYGWIN_ME*)
1050     OS_ARCH='CYGWIN_NT-4.0'
1051     OS_TARGET=WIN95
1052     ;;
1053 esac
1056 # Define and override various archtecture-specific variables, including
1057 # HOST_OS_ARCH
1058 # OS_ARCH
1059 # OS_TEST
1060 # OS_TARGET
1061 # OS_RELEASE
1062 # OS_MINOR_RELEASE
1065 case "$HOST_OS_ARCH" in
1066 cygwin*|mingw*|mks*|msvc*)
1067     HOST_OS_ARCH=WINNT
1068     ;;
1069 linux*)
1070     HOST_OS_ARCH=Linux
1071     ;;
1072 solaris*)
1073     HOST_OS_ARCH=SunOS
1074     ;;
1075 BSD_386)
1076     HOST_OS_ARCH=BSD
1077     ;;
1078 dgux)
1079     HOST_OS_ARCH=DGUX
1080     ;;
1081 IRIX64)
1082     HOST_OS_ARCH=IRIX
1083     ;;
1084 UNIX_SV)
1085     if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1086         HOST_OS_ARCH=NCR
1087     else
1088         HOST_OS_ARCH=UNIXWARE
1089     fi
1090     ;;
1091 ncr)
1092     HOST_OS_ARCH=NCR
1093     ;;
1094 UNIX_SYSTEM_V)
1095     HOST_OS_ARCH=NEC
1096     ;;
1097 OSF1)
1098     ;;
1099 *OpenVMS*)
1100     HOST_OS_ARCH=OpenVMS
1101     ;;
1102 OS_2)
1103     HOST_OS_ARCH=OS2
1104     ;;
1105 QNX)
1106     ;;
1107 SCO_SV)
1108     HOST_OS_ARCH=SCOOS
1109     ;;
1110 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1111     HOST_OS_ARCH=SINIX
1112     ;;
1113 UnixWare)
1114     HOST_OS_ARCH=UNIXWARE
1115     ;;
1116 esac
1118 case "$OS_ARCH" in
1119 WINNT)
1120     OS_TEST=`uname -p`
1121     ;;
1122 Windows_NT)
1124 # If uname -s returns "Windows_NT", we assume that we are using
1125 # the uname.exe in MKS toolkit.
1127 # The -r option of MKS uname only returns the major version number.
1128 # So we need to use its -v option to get the minor version number.
1129 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1131     OS_ARCH=WINNT
1132     OS_TARGET=WINNT
1133     OS_MINOR_RELEASE=`uname -v`
1134     if test "$OS_MINOR_RELEASE" = "00"; then
1135         OS_MINOR_RELEASE=0
1136     fi
1137     OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1138     ;;
1139 CYGWIN32_NT|CYGWIN_NT*|MINGW*_NT*)
1141 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
1142 # the uname.exe in the Cygwin tools.
1143 # Prior to the Beta 20 release, Cygwin was called GNU-Win32.
1144 # If uname -s returns "CYGWIN32/NT", we assume that we are using
1145 # the uname.exe in the GNU-Win32 tools.
1146 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1147 # the uname.exe in the MSYS tools.
1149     OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1150     OS_ARCH=WINNT
1151     OS_TARGET=WINNT
1152     ;;
1153 AIX)
1154     OS_RELEASE=`uname -v`.`uname -r`
1155     OS_TEST=`uname -p`
1156     ;;
1157 BSD_386)
1158     OS_ARCH=BSD
1159     ;;
1160 dgux)
1161     OS_ARCH=DGUX
1162     ;;
1163 IRIX64)
1164     OS_ARCH=IRIX
1165     ;;
1166 UNIX_SV)
1167     if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1168         OS_ARCH=NCR
1169     else
1170         OS_ARCH=UNIXWARE
1171         OS_RELEASE=`uname -v`
1172     fi
1173     ;;
1174 ncr)
1175     OS_ARCH=NCR
1176     ;;
1177 UNIX_SYSTEM_V)
1178     OS_ARCH=NEC
1179     ;;
1180 OSF1)
1181     case `uname -v` in
1182     148)
1183         OS_RELEASE=V3.2C
1184         ;;
1185     564)
1186         OS_RELEASE=V4.0B
1187         ;;
1188     878)
1189         OS_RELEASE=V4.0D
1190         ;;
1191     esac
1192     ;;
1193 *OpenVMS*)
1194     OS_ARCH=OpenVMS
1195     OS_RELEASE=`uname -v`
1196     OS_TEST=`uname -p`
1197     ;;
1198 OS_2)
1199     OS_ARCH=OS2
1200     OS_TARGET=OS2
1201     OS_RELEASE=`uname -v`
1202     ;;
1203 QNX)
1204     if test "$OS_TARGET" != "NTO"; then
1205         changequote(,)
1206         OS_RELEASE=`uname -v | sed 's/^\([0-9]\)\([0-9]*\)$/\1.\2/'`
1207         changequote([,])
1208     fi
1209     OS_TEST=x86
1210     ;;
1211 SCO_SV)
1212     OS_ARCH=SCOOS
1213     OS_RELEASE=5.0
1214     ;;
1215 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1216     OS_ARCH=SINIX
1217     OS_TEST=`uname -p`
1218     ;;
1219 UnixWare)
1220     OS_ARCH=UNIXWARE
1221     OS_RELEASE=`uname -v`
1222     ;;
1223 WINCE)
1224     OS_ARCH=WINCE
1225     OS_TARGET=WINCE
1226     ;;
1227 Darwin)
1228     case "${target_cpu}" in
1229     powerpc*)
1230         OS_TEST=ppc
1231         ;;
1232     i*86*)
1233         OS_TEST=i386 
1234         ;;
1235     *)
1236         if test -z "$CROSS_COMPILE" ; then
1237             OS_TEST=`uname -p`
1238         fi
1239         ;;
1240     esac
1241     ;;
1242 esac
1244 if test "$OS_ARCH" = "NCR"; then
1245     changequote(,)
1246     OS_RELEASE=`awk '{print $3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$/\2.\3/'`
1247     changequote([,])
1250 # Only set CPU_ARCH if we recognize the value of OS_TEST
1252 case "$OS_TEST" in
1253 *86 | i86pc)
1254     CPU_ARCH=x86
1255     ;;
1257 powerpc* | ppc)
1258     CPU_ARCH=ppc
1259     ;;
1261 Alpha | alpha | ALPHA)
1262     CPU_ARCH=Alpha
1263     ;;
1265 hppa* | parisc)
1266     CPU_ARCH=hppa
1267     ;;
1269 sun4u | sparc*)
1270     CPU_ARCH=sparc
1271     ;;
1273 x86_64 | ia64)
1274     CPU_ARCH="$OS_TEST"
1275     ;;
1276 esac
1278 if test -z "$OS_TARGET"; then
1279     OS_TARGET=$OS_ARCH
1281 if test "$OS_TARGET" = "WIN95"; then
1282     OS_RELEASE="4.0"
1284 if test "$OS_TARGET" = "WIN16"; then
1285     OS_RELEASE=
1287 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1289 dnl ========================================================
1290 dnl GNU specific defaults
1291 dnl ========================================================
1292 if test "$GNU_CC"; then
1293     # FIXME: Let us build with strict aliasing. bug 414641.
1294     CFLAGS="$CFLAGS -fno-strict-aliasing"
1295     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1296     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1297     DSO_LDOPTS='-shared'
1298     if test "$GCC_USE_GNU_LD"; then
1299         # Don't allow undefined symbols in libraries
1300         DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1301     fi
1302     WARNINGS_AS_ERRORS='-Werror'
1303     DSO_CFLAGS=''
1304     DSO_PIC_CFLAGS='-fPIC'
1305     _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
1306     _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
1307     _MOZ_EXCEPTIONS_FLAGS_ON='-fhandle-exceptions'
1308     _MOZ_EXCEPTIONS_FLAGS_OFF='-fno-handle-exceptions'
1310     # Turn on GNU specific features
1311     # -Wall - turn on all warnings
1312     # -pedantic - make compiler warn about non-ANSI stuff, and
1313     #             be a little bit stricter
1314     # Warnings slamm took out for now (these were giving more noise than help):
1315     # -Wbad-function-cast - warns when casting a function to a new return type
1316     # -Wshadow - removed because it generates more noise than help --pete
1317     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
1318     if test -z "$INTEL_CC"; then
1319        # Don't use -Wcast-align with ICC
1320        case "$CPU_ARCH" in
1321            # And don't use it on hppa, ia64, sparc, since it's noisy there
1322            hppa | ia64 | sparc)
1323            ;;
1324            *)
1325         _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1326            ;;
1327        esac
1328     fi
1330     dnl Turn pedantic on but disable the warnings for long long
1331     _PEDANTIC=1
1333     if test -z "$INTEL_CC"; then
1334       _IGNORE_LONG_LONG_WARNINGS=1
1335       _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
1336     else
1337       _IGNORE_LONG_LONG_WARNINGS=
1338     fi
1341     _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1342     _USE_CPP_INCLUDE_FLAG=1
1343 else
1344     MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1345     MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1347     DSO_LDOPTS='-shared'
1348     if test "$GNU_LD"; then
1349         # Don't allow undefined symbols in libraries
1350         DSO_LDOPTS="$DSO_LDOPTS -z defs"
1351     fi
1353     DSO_CFLAGS=''
1354     DSO_PIC_CFLAGS='-KPIC'
1355     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1358 if test "$GNU_CXX"; then
1359     # FIXME: Let us build with strict aliasing. bug 414641.
1360     CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
1361     # Turn on GNU specific features
1362     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
1363     if test -z "$INTEL_CC"; then
1364        # Don't use -Wcast-align with ICC
1365        case "$CPU_ARCH" in
1366            # And don't use it on hppa, ia64, sparc, since it's noisy there
1367            hppa | ia64 | sparc)
1368            ;;
1369            *)
1370         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1371            ;;
1372        esac
1373     fi
1375     _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1376     _USE_CPP_INCLUDE_FLAG=1
1378     AC_CACHE_CHECK(whether the compiler supports -Wno-invalid-offsetof,
1379                    ac_has_wno_invalid_offsetof,
1380         [
1381             AC_LANG_SAVE
1382             AC_LANG_CPLUSPLUS
1383             _SAVE_CXXFLAGS="$CXXFLAGS"
1384             CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1385             AC_TRY_COMPILE([],
1386                            [return(0);],
1387                            ac_has_wno_invalid_offsetof="yes",
1388                            ac_has_wno_invalid_offsetof="no")
1389             CXXFLAGS="$_SAVE_CXXFLAGS"
1390             AC_LANG_RESTORE
1391         ])
1392     if test "$ac_has_wno_invalid_offsetof" = "yes"; then
1393         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1394     fi
1395 else
1396     _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1399 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1400 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1401 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1402 dnl normal behavior.
1403 dnl ========================================================
1404 MKSHLIB_FORCE_ALL=
1405 MKSHLIB_UNFORCE_ALL=
1407 if test "$COMPILE_ENVIRONMENT"; then
1408 if test "$GNU_CC"; then
1409   AC_MSG_CHECKING(whether ld has archive extraction flags)
1410   AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1411    [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1412     ac_cv_mkshlib_force_and_unforce="no"
1413     exec 3<&0 <<LOOP_INPUT
1414         force="-Wl,--whole-archive";   unforce="-Wl,--no-whole-archive"
1415         force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1416         force="-Wl,-all";              unforce="-Wl,-none"
1417 LOOP_INPUT
1418     while read line
1419     do
1420       eval $line
1421       LDFLAGS=$force
1422       LIBS=$unforce
1423       AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1424     done
1425     exec 0<&3 3<&-
1426     LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1427    ])
1428   if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1429     AC_MSG_RESULT(no)
1430   else
1431     AC_MSG_RESULT(yes)
1432     eval $ac_cv_mkshlib_force_and_unforce
1433     MKSHLIB_FORCE_ALL=$force
1434     MKSHLIB_UNFORCE_ALL=$unforce
1435   fi
1436 fi # GNU_CC
1437 fi # COMPILE_ENVIRONMENT
1439 dnl =================================================================
1440 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1441 dnl which is bad when cross compiling.
1442 dnl =================================================================
1443 if test "$COMPILE_ENVIRONMENT"; then
1444 configure_static_assert_macros='
1445 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1446 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1447 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1450 dnl test that the macros actually work:
1451 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1452 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1453  [AC_LANG_SAVE
1454   AC_LANG_C
1455   ac_cv_static_assertion_macros_work="yes"
1456   AC_TRY_COMPILE([$configure_static_assert_macros],
1457                  [CONFIGURE_STATIC_ASSERT(1)],
1458                  ,
1459                  ac_cv_static_assertion_macros_work="no")
1460   AC_TRY_COMPILE([$configure_static_assert_macros],
1461                  [CONFIGURE_STATIC_ASSERT(0)],
1462                  ac_cv_static_assertion_macros_work="no",
1463                  )
1464   AC_LANG_CPLUSPLUS
1465   AC_TRY_COMPILE([$configure_static_assert_macros],
1466                  [CONFIGURE_STATIC_ASSERT(1)],
1467                  ,
1468                  ac_cv_static_assertion_macros_work="no")
1469   AC_TRY_COMPILE([$configure_static_assert_macros],
1470                  [CONFIGURE_STATIC_ASSERT(0)],
1471                  ac_cv_static_assertion_macros_work="no",
1472                  )
1473   AC_LANG_RESTORE
1474  ])
1475 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1476 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1477     AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1479 fi # COMPILE_ENVIRONMENT
1481 dnl ========================================================
1482 dnl Checking for 64-bit OS
1483 dnl ========================================================
1484 if test "$COMPILE_ENVIRONMENT"; then
1485 AC_LANG_SAVE
1486 AC_LANG_C
1487 AC_MSG_CHECKING(for 64-bit OS)
1488 AC_TRY_COMPILE([$configure_static_assert_macros],
1489                [CONFIGURE_STATIC_ASSERT(sizeof(long) == 8)],
1490                result="yes", result="no")
1491 AC_MSG_RESULT("$result")
1492 if test "$result" = "yes"; then
1493     AC_DEFINE(HAVE_64BIT_OS)
1494     HAVE_64BIT_OS=1
1496 AC_SUBST(HAVE_64BIT_OS)
1497 AC_LANG_RESTORE
1498 fi # COMPILE_ENVIRONMENT
1500 dnl ========================================================
1501 dnl Enable high-memory support on OS/2 by default.
1502 dnl ========================================================
1503 MOZ_OS2_HIGH_MEMORY=1
1504 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1505 [  --disable-os2-high-mem  Disable high-memory support on OS/2],
1506     MOZ_OS2_HIGH_MEMORY=,
1507     MOZ_OS2_HIGH_MEMORY=1 )
1508 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1510 dnl ========================================================
1511 dnl System overrides of the defaults for host
1512 dnl ========================================================
1513 case "$host" in
1514 *-beos*)
1515     HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
1516     HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
1517     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1518     ;;
1520 *cygwin*|*mingw*|*mks*|*msvc*|*wince)
1521     if test -n "$_WIN32_MSVC"; then
1522         HOST_AR=lib
1523         HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1524         HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1525         HOST_RANLIB='echo ranlib'
1526     else
1527         HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
1528     fi
1529     HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
1530     HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1531     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1532     HOST_BIN_SUFFIX=.exe
1533     case "$host" in
1534     *mingw*)
1535     dnl MinGW/MSYS does not need CYGWIN_WRAPPER
1536         ;;
1537     *)
1538         CYGWIN_WRAPPER="${srcdir}/build/cygwin-wrapper"
1539         if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
1540             _pwd=`pwd`
1541             CYGWIN_WRAPPER="${_pwd}/${srcdir}/build/cygwin-wrapper"
1542         fi
1543         if test "`${PERL} -v | grep -c cygwin  2>/dev/null`" = 0; then
1544             AS_PERL=1
1545             PERL="${CYGWIN_WRAPPER} $PERL"
1546         fi
1548         if test "`${PYTHON} -c 'import sys; print sys.platform;'`" != "cygwin"; then
1549             PYTHON="${CYGWIN_WRAPPER} $PYTHON"
1550         fi
1551         ;;
1552     esac
1553     ;;
1555 *-darwin*)
1556     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1557     HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1558     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1559     MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
1560     LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL -lobjc'
1561     ;;
1563 *-linux*|*-kfreebsd*-gnu)
1564     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1565     HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1566     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1567     ;;
1569 *os2*)
1570     HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1571     HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1572     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1573     HOST_BIN_SUFFIX=.exe
1574     MOZ_FIX_LINK_PATHS=
1575     ;;
1577 *-osf*)
1578     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1579     HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
1580     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1581     ;;
1584     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1585     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1586     ;;
1587 esac
1589 dnl Get mozilla version from central milestone file
1590 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1592 dnl Get version of various core apps from the version files.
1593 FIREFOX_VERSION=`cat $topsrcdir/browser/config/version.txt`
1595 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1596 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1598 dnl ========================================================
1599 dnl System overrides of the defaults for target
1600 dnl ========================================================
1602 case "$target" in
1603 *-aix*)
1604     AC_DEFINE(AIX)
1605     if test ! "$GNU_CC"; then
1606         if test ! "$HAVE_64BIT_OS"; then
1607             # Compiling with Visual Age C++ object model compat is the
1608             # default. To compile with object model ibm, add 
1609             # AIX_OBJMODEL=ibm to .mozconfig.
1610             if test "$AIX_OBJMODEL" = "ibm"; then
1611                 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1612             else
1613                 AIX_OBJMODEL=compat
1614             fi
1615         else
1616             AIX_OBJMODEL=compat
1617         fi
1618         AC_SUBST(AIX_OBJMODEL)
1619         DSO_LDOPTS='-qmkshrobj=1'
1620         DSO_CFLAGS='-qflag=w:w'
1621         DSO_PIC_CFLAGS=
1622         LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1623         AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
1624         MOZ_FIX_LINK_PATHS=
1625         MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1626         MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1627         if test "$COMPILE_ENVIRONMENT"; then
1628             AC_LANG_SAVE
1629             AC_LANG_CPLUSPLUS
1630             AC_MSG_CHECKING([for VisualAge C++ compiler version >= 5.0.2.0])
1631             AC_TRY_COMPILE([],
1632                 [#if (__IBMCPP__ < 502)
1633                  #error "Bad compiler"
1634                  #endif],
1635                 _BAD_COMPILER=,_BAD_COMPILER=1)
1636             if test -n "$_BAD_COMPILER"; then
1637                 AC_MSG_RESULT([no])    
1638                 AC_MSG_ERROR([VisualAge C++ version 5.0.2.0 or higher is required to build.])
1639             else
1640                 AC_MSG_RESULT([yes])    
1641             fi
1642             AC_LANG_RESTORE
1643             TARGET_COMPILER_ABI="ibmc"
1644             CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1645             CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1646         fi
1647     fi
1648     case "${target_os}" in
1649     aix4.1*)
1650         DLL_SUFFIX='_shr.a'
1651         ;;
1652     esac
1653     if test "$COMPILE_ENVIRONMENT"; then
1654         AC_CHECK_HEADERS(sys/inttypes.h)
1655     fi
1656     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1657     ;;
1659 *-beos*)
1660     no_x=yes
1661     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1662     _PLATFORM_DEFAULT_TOOLKIT="cairo-beos"
1663     DSO_LDOPTS='-nostart'
1664     TK_LIBS='-lbe -lroot'
1665     LIBS="$LIBS -lbe"
1666     if test "$COMPILE_ENVIRONMENT"; then
1667         AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
1668         AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
1669     fi
1670     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
1671     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
1672     _MOZ_USE_RTTI=1
1673     USE_DEPENDENT_LIBS=
1674     MOZ_USER_DIR="Mozilla"
1675     ;;
1677 *-bsdi*)
1678     dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
1679     _PEDANTIC=
1680     _IGNORE_LONG_LONG_WARNINGS=
1681     case $OS_RELEASE in
1682         4.*|5.*)
1683             STRIP="$STRIP -d"
1684             ;;
1685         *)
1686             DSO_CFLAGS=''
1687             DSO_LDOPTS='-r'
1688             _WARNINGS_CFLAGS="-Wall"
1689             _WARNINGS_CXXFLAGS="-Wall"
1690             # The test above doesn't work properly, at least on 3.1.
1691             MKSHLIB_FORCE_ALL=''
1692             MKSHLIB_UNFORCE_ALL=''
1693         ;;
1694     esac
1695     ;;
1697 *-darwin*) 
1698     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1699     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1700     MOZ_OPTIMIZE_FLAGS="-O2"
1701     _PEDANTIC=
1702     CFLAGS="$CFLAGS -fpascal-strings -fno-common"
1703     CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
1704     DLL_SUFFIX=".dylib"
1705     DSO_LDOPTS=''
1706     STRIP="$STRIP -x -S"
1707     _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1708     MOZ_ENABLE_POSTSCRIPT=
1709     TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1710     LDFLAGS="$LDFLAGS -framework Cocoa"
1711     # The ExceptionHandling framework is needed for Objective-C exception
1712     # logging code in nsObjCExceptions.h. Currently we only use that in debug
1713     # builds.
1714     MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"
1715     # set MACOSX to generate lib/mac/MoreFiles/Makefile
1716     MACOSX=1
1718     dnl DTrace and -dead_strip don't interact well. See bug 403132.
1719     dnl ===================================================================
1720     if test "x$enable_dtrace" = "xyes"; then
1721         echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
1722     else
1723         dnl check for the presence of the -dead_strip linker flag
1724         AC_MSG_CHECKING([for -dead_strip option to ld])
1725         _SAVE_LDFLAGS=$LDFLAGS
1726         LDFLAGS="$LDFLAGS -Wl,-dead_strip"
1727         AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
1728         if test -n "$_HAVE_DEAD_STRIP" ; then
1729             AC_MSG_RESULT([yes])
1730             MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
1731         else
1732             AC_MSG_RESULT([no])
1733         fi
1734         
1735         LDFLAGS=$_SAVE_LDFLAGS
1736     fi
1737     ;;
1739 *-freebsd*)
1740     if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` != "elf"; then
1741         DLL_SUFFIX=".so.1.0"
1742         DSO_LDOPTS="-shared"
1743     fi
1744     if test ! "$GNU_CC"; then
1745         DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
1746     fi
1747 # Can't have force w/o an unforce.
1748 #    # Hack for FreeBSD 2.2
1749 #    if test -z "$MKSHLIB_FORCE_ALL"; then
1750 #       MKSHLIB_FORCE_ALL='-Wl,-Bforcearchive'
1751 #       MKSHLIB_UNFORCE_ALL=''
1752 #    fi
1753     ;; 
1755 *-hpux*)
1756     DLL_SUFFIX=".sl"
1757     if test ! "$GNU_CC"; then
1758         DSO_LDOPTS='-b -Wl,+s'
1759         DSO_CFLAGS=""
1760         DSO_PIC_CFLAGS="+Z"
1761         MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
1762         MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
1763         CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1764     else
1765         DSO_LDOPTS='-b -E +s'
1766         MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1767         MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1768     fi
1769     MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
1770     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1771     ;;
1773 *-irix5*)
1774     AC_DEFINE(IRIX)
1775     DSO_LDOPTS='-elf -shared'
1777     if test "$GNU_CC"; then
1778        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1779        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1780        MKSHLIB_FORCE_ALL='-Wl,-all'
1781        MKSHLIB_UNFORCE_ALL='-Wl,-none'
1782        CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1783     else
1784        MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1785        MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1786        MKSHLIB_FORCE_ALL='-all'
1787        MKSHLIB_UNFORCE_ALL='-none'
1788     fi
1789     ;;
1791 *-irix6*)
1792     AC_DEFINE(IRIX)
1793     dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must* 
1794     dnl compile and link using -n32
1795     USE_N32=1
1796     TARGET_COMPILER_ABI=n32
1797     DSO_LDOPTS='-elf -shared'
1798     MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1799     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1800     _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
1801     _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
1802     if test "$GNU_CC"; then
1803        MKSHLIB_FORCE_ALL='-Wl,-all'
1804        MKSHLIB_UNFORCE_ALL='-Wl,-none'
1805        _WARNINGS_CFLAGS="-Wall"
1806        _WARNINGS_CXXFLAGS="-Wall"
1807        CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1808     else
1809        MKSHLIB_FORCE_ALL='-all'
1810        MKSHLIB_UNFORCE_ALL='-none'
1811            AR_LIST="$AR t"
1812            AR_EXTRACT="$AR x"
1813            AR_DELETE="$AR d"
1814            AR='$(CXX) -ar'
1815            AR_FLAGS='-o $@'
1816        CFLAGS="$CFLAGS -woff 3262 -G 4"
1817        CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
1818        if test -n "$USE_N32"; then
1819            ASFLAGS="$ASFLAGS -n32"
1820            CFLAGS="$CFLAGS -n32"
1821            CXXFLAGS="$CXXFLAGS -n32"
1822            LDFLAGS="$LDFLAGS -n32"
1823        fi
1824        AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1825        AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
1826        MOZ_FIX_LINK_PATHS=
1827     fi
1828     if test -z "$GNU_CXX"; then
1829       MIPSPRO_CXX=1
1830     fi
1831     ;;
1833 *-*linux*)
1834     if test "$GNU_CC"; then
1835         GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
1836         case $GCC_VERSION in
1837         4.1.*|4.2.*)
1838             # -Os is broken on gcc 4.1.x and 4.2.x, we need to tweak it to get good results.
1839             MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
1840         esac
1841     fi
1843     TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1844     MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions $MOZ_OPTIMIZE_SIZE_TWEAK"
1845     MOZ_DEBUG_FLAGS="-g -fno-inline"  # most people on linux use gcc/gdb,
1846                                       # and that combo is not yet good at
1847                                       # debugging inlined functions (even
1848                                       # when using DWARF2 as the debugging
1849                                       # format)    
1851     MOZ_MEMORY=1
1853     case "${target_cpu}" in
1854     alpha*)
1855         CFLAGS="$CFLAGS -mieee"
1856         CXXFLAGS="$CXXFLAGS -mieee"
1857     ;;
1858     i*86)
1859         USE_ELF_DYNSTR_GC=1
1860         MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1
1861     ;;
1862     mips*)
1863         CFLAGS="$CFLAGS -Wa,-xgot"
1864         CXXFLAGS="$CXXFLAGS -Wa,-xgot"
1865     ;;
1866     esac
1867     ;;
1869 *-wince*)
1871     MOZ_TOOLS_DIR=`echo $MOZ_TOOLS`
1872     AR_LIST="$AR -list"
1873     AR_EXTRACT="$AR -extract"
1874     AR_DELETE="$AR d"
1875     AR_FLAGS='-OUT:"$@"'
1877     if test -z "$AS_BIN"; then
1878         AS="$AS_BIN"
1879     fi
1880     DSO_CFLAGS=
1881     DSO_PIC_CFLAGS=
1882     DLL_SUFFIX=.dll
1883     BIN_SUFFIX='.exe'
1884     if test -z "$RC"; then 
1885         RC=rc.exe  
1886     fi
1887     # certain versions of cygwin's makedepend barf on the 
1888     # #include <string> vs -I./dist/include/string issue so don't use it
1889     SYSTEM_MAKEDEPEND=
1891     HOST_CC=cl
1892     HOST_CXX=cl
1893     HOST_LD=link
1894     HOST_AR='lib -OUT:$@'
1895     HOST_RANLIB='echo ranlib'
1896     HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
1897         
1898         
1899     WARNINGS_AS_ERRORS='-WX'
1900         MOZ_OPTIMIZE_FLAGS='-O1'
1901     AR_FLAGS='-NOLOGO -OUT:"$@"'
1902     ASM_SUFFIX=asm
1903     CFLAGS="$CFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1904     CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1905     DLL_PREFIX=
1906     DOXYGEN=:
1907     DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
1908     DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
1909     GARBAGE=
1910     IMPORT_LIB_SUFFIX=lib
1911     LIBS="$LIBS"
1912     LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
1913     LIB_PREFIX=
1914     LIB_SUFFIX=lib 
1915     MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1916     MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1917     MKSHLIB_FORCE_ALL=
1918     MKSHLIB_UNFORCE_ALL=
1919     MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1920     MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1921     MOZ_DEBUG_FLAGS='-Zi'
1922     MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
1923     MOZ_FIX_LINK_PATHS=
1924     MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
1925     MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
1926     OBJ_SUFFIX=obj
1927     RANLIB='echo not_ranlib'
1928     STRIP='echo not_strip'
1929     TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
1930     UNZIP=unzip
1931     XARGS=xargs
1932     XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
1933     ZIP=zip
1934     LIBIDL_CFLAGS="-I$MOZ_TOOLS_DIR/include ${GLIB_CFLAGS}"
1935     LIBIDL_LIBS="$MOZ_TOOLS_DIR/lib/libidl-0.6_s.lib $MOZ_TOOLS_DIR/lib/glib-1.2_s.lib"
1936     STATIC_LIBIDL=1
1938     AC_DEFINE(HAVE_SNPRINTF)
1939     AC_DEFINE(_WINDOWS)
1940     AC_DEFINE(_WIN32)
1941     AC_DEFINE(WIN32)
1942     AC_DEFINE(XP_WIN)
1943     AC_DEFINE(XP_WIN32)
1944     AC_DEFINE(HW_THREADS)
1945     AC_DEFINE(STDC_HEADERS)
1946     AC_DEFINE(NEW_H, <new>)
1947     AC_DEFINE(WIN32_LEAN_AND_MEAN)
1949     TARGET_MD_ARCH=win32
1950     _PLATFORM_DEFAULT_TOOLKIT='windows'
1951     BIN_SUFFIX='.exe'
1952     USE_SHORT_LIBNAME=1
1953     MOZ_ENABLE_POSTSCRIPT=
1954     MOZ_USER_DIR="Mozilla"
1958 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
1959     DSO_CFLAGS=
1960     DSO_PIC_CFLAGS=
1961     DLL_SUFFIX=.dll
1962     RC=rc.exe
1963     # certain versions of cygwin's makedepend barf on the 
1964     # #include <string> vs -I./dist/include/string issue so don't use it
1965     SYSTEM_MAKEDEPEND=
1966     if test -n "$GNU_CC"; then
1967         CC="$CC -mno-cygwin"
1968         CXX="$CXX -mno-cygwin"
1969         CPP="$CPP -mno-cygwin"
1970         CFLAGS="$CFLAGS -mms-bitfields"
1971         CXXFLAGS="$CXXFLAGS -mms-bitfields"
1972         DSO_LDOPTS='-shared'
1973         MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1974         MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1975         RC='$(WINDRES)'
1976         # Use temp file for windres (bug 213281)
1977         RCFLAGS='-O coff --use-temp-file'
1978         # mingw doesn't require kernel32, user32, and advapi32 explicitly
1979         LIBS="$LIBS -lgdi32 -lwinmm -lwsock32"
1980         MOZ_JS_LIBS='-L$(LIBXUL_DIST)/lib -ljs$(MOZ_BITS)$(VERSION_NUMBER)'
1981         MOZ_FIX_LINK_PATHS=
1982         DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core'
1983         XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom'
1984         DLL_PREFIX=
1985         IMPORT_LIB_SUFFIX=dll.a
1986     else
1987         TARGET_COMPILER_ABI=msvc
1988         HOST_CC='$(CC)'
1989         HOST_CXX='$(CXX)'
1990         HOST_LD='$(LD)'
1991         AR='lib -NOLOGO -OUT:"$@"'
1992         AR_FLAGS=
1993         RANLIB='echo not_ranlib'
1994         STRIP='echo not_strip'
1995         XARGS=xargs
1996         ZIP=zip
1997         UNZIP=unzip
1998         DOXYGEN=:
1999         GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
2000         OBJ_SUFFIX=obj
2001         LIB_SUFFIX=lib
2002         DLL_PREFIX=
2003         LIB_PREFIX=
2004         IMPORT_LIB_SUFFIX=lib
2005         MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(PDBFILE) $(DSO_LDOPTS)'
2006         MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(PDBFILE) $(DSO_LDOPTS)'
2007         MKSHLIB_FORCE_ALL=
2008         MKSHLIB_UNFORCE_ALL=
2009         DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2010         CFLAGS="$CFLAGS -W3 -Gy -Fd\$(PDBFILE)"
2011         CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(PDBFILE)"
2012         LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
2013         MOZ_DEBUG_FLAGS='-Zi'
2014         MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2015         WARNINGS_AS_ERRORS='-WX'
2016         MOZ_OPTIMIZE_FLAGS='-O1'
2017         MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
2018         MOZ_FIX_LINK_PATHS=
2019         DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
2020         XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
2021         LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2022         MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2023         MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
2024         if test $_MSC_VER -ge 1400; then
2025             LDFLAGS="$LDFLAGS -NXCOMPAT -SAFESEH"
2026             dnl For profile-guided optimization
2027             PROFILE_GEN_CFLAGS="-GL"
2028             PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2029             dnl XXX: PGO builds can fail with warnings treated as errors,
2030             dnl specifically "no profile data available" appears to be
2031             dnl treated as an error sometimes. This might be a consequence
2032             dnl of using WARNINGS_AS_ERRORS in some modules, combined
2033             dnl with the linker doing most of the work in the whole-program
2034             dnl optimization/PGO case. I think it's probably a compiler bug,
2035             dnl but we work around it here.
2036             PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2037             dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2038             dnl Probably also a compiler bug, but what can you do?
2039             PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2040             if test -n "$_USE_DYNAMICBASE"; then
2041                LDFLAGS="$LDFLAGS -DYNAMICBASE"
2042             fi
2043         fi
2044     fi
2045     MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,jpeg$(MOZ_BITS)$(VERSION_NUMBER),$(DEPTH)/jpeg)'
2046     MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,png,$(DEPTH)/modules/libimg/png)'
2047     AC_DEFINE(HAVE_SNPRINTF)
2048     AC_DEFINE(_WINDOWS)
2049     AC_DEFINE(_WIN32)
2050     AC_DEFINE(WIN32)
2051     AC_DEFINE(XP_WIN)
2052     AC_DEFINE(XP_WIN32)
2053     AC_DEFINE(HW_THREADS)
2054     AC_DEFINE(STDC_HEADERS)
2055     AC_DEFINE(NEW_H, <new>)
2056     AC_DEFINE(WIN32_LEAN_AND_MEAN)
2057     TARGET_MD_ARCH=win32
2058     _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2059     BIN_SUFFIX='.exe'
2060     USE_SHORT_LIBNAME=1
2061     MOZ_ENABLE_POSTSCRIPT=
2062     MOZ_USER_DIR="Mozilla"
2064     dnl Hardcode to win95 for now - cls
2065     TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2067     dnl set NO_X11 defines here as the general check is skipped on win32
2068     no_x=yes
2069     AC_DEFINE(NO_X11)
2071     dnl MinGW/MSYS doesn't provide or need cygpath
2072     case "$host" in
2073     *-mingw*)
2074         CYGPATH_W=echo
2075         CYGPATH_S=cat
2076         MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2077         ;;
2078     *-cygwin*|*-msvc*|*-mks*)
2079         CYGPATH_W="cygpath -a -w"
2080         CYGPATH_S="sed -e s|\\\\|/|g"
2081         MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
2082         ;;
2083     esac
2084     case "$host" in
2085     *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2087     if test -z "$MOZ_TOOLS"; then
2088         AC_MSG_ERROR([MOZ_TOOLS is not set])
2089     fi
2091     MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd`
2092     if test "$?" != "0" || test -z "$MOZ_TOOLS_DIR"; then
2093         AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2094     fi
2095     if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_DIR/bin:"` = 0; then
2096         AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2097     fi
2098     MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
2100     if test -n "$GLIB_PREFIX"; then
2101         _GLIB_PREFIX_DIR=`cd $GLIB_PREFIX && pwd`
2102         if test "$?" = "0"; then
2103             if test `echo ${PATH}: | grep -ic "$_GLIB_PREFIX_DIR/bin:"` = 0; then
2104                 AC_MSG_ERROR([GLIB_PREFIX must be in your \$PATH.])
2105             fi
2106             _GLIB_PREFIX_DIR=`$CYGPATH_W $_GLIB_PREFIX_DIR | $CYGPATH_S`
2107         else
2108             AC_MSG_ERROR([GLIB_PREFIX is set but "${GLIB_PREFIX}" is not a directory.])
2109         fi
2110     else
2111         _GLIB_PREFIX_DIR=$MOZ_TOOLS_DIR
2112     fi
2113     if test ! -f "${_GLIB_PREFIX_DIR}/include/glib.h"; then
2114         AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/include/glib.h .])
2115     fi
2116     GLIB_CFLAGS="-I${_GLIB_PREFIX_DIR}/include"
2117     if test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"; then
2118         GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"
2119     elif test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"; then
2120         GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"
2121     else
2122         AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/lib/glib-1.2.lib or $_GLIB_PREFIX_DIR/lib/glib-1.2_s.lib])
2123     fi
2125     if test -n "$LIBIDL_PREFIX"; then
2126         _LIBIDL_PREFIX_DIR=`cd $LIBIDL_PREFIX && pwd`
2127         if test "$?" = "0"; then
2128             if test `echo ${PATH}: | grep -ic "$_LIBIDL_PREFIX_DIR/bin:"` = 0; then
2129                 AC_MSG_ERROR([LIBIDL_PREFIX must be in your \$PATH.])
2130             fi
2131             _LIBIDL_PREFIX_DIR=`$CYGPATH_W $_LIBIDL_PREFIX_DIR | $CYGPATH_S`
2132         else
2133             AC_MSG_ERROR([LIBIDL_PREFIX is set but "${LIBIDL_PREFIX}" is not a directory.])
2134         fi
2135     else
2136         _LIBIDL_PREFIX_DIR=$MOZ_TOOLS_DIR
2137     fi        
2138     if test ! -f "${_LIBIDL_PREFIX_DIR}/include/libIDL/IDL.h"; then
2139         AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/include/libIDL/IDL.h .])
2140     fi
2141     LIBIDL_CFLAGS="-I${_LIBIDL_PREFIX_DIR}/include ${GLIB_CFLAGS}"
2142     if test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"; then
2143         LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"
2144         STATIC_LIBIDL=1
2145     elif test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"; then
2146         LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"
2147     else
2148         AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/lib/libidl-0.6.lib or $_LIBIDL_PREFIX_DIR/lib/libidl-0.6_s.lib])
2149     fi
2150     LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2151     ;;
2153     *) # else cross-compiling
2154         if test -n "$GLIB_PREFIX"; then
2155             GLIB_CFLAGS="-I${GLIB_PREFIX}/include"
2156             if test -f "${GLIB_PREFIX}/lib/glib-1.2_s.lib"; then
2157                 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2_s.lib"
2158             elif test -f "${GLIB_PREFIX}/lib/glib-1.2.lib"; then
2159                 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2.lib"
2160             else
2161                 AC_MSG_ERROR([Cannot find $GLIB_PREFIX/lib/glib-1.2.lib or $GLIB_PREFIX/lib/glib-1.2_s.lib])
2162             fi
2163         fi
2164         if test -n "$LIBIDL_PREFIX"; then
2165             LIBIDL_CFLAGS="-I${LIBIDL_PREFIX}/include ${GLIB_CFLAGS}"
2166             if test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"; then
2167                 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"
2168                 STATIC_LIBIDL=1
2169             elif test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"; then
2170                 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"
2171             else
2172                 AC_MSG_ERROR([Cannot find $LIBIDL_PREFIX/lib/libIDL-0.6.lib or $LIBIDL_PREFIX/lib/libIDL-0.6_s.lib])
2173             fi
2174         fi
2175         LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2176         ;;
2177     esac 
2180     case "$host_os" in
2181     cygwin*|msvc*|mks*)
2182         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])
2183         ;;
2185     *)
2186         AC_CHECK_HEADERS(mmintrin.h oleacc.idl)
2188         AC_LANG_SAVE
2189         AC_LANG_CPLUSPLUS
2190         AC_CHECK_HEADERS(atlbase.h wpcapi.h)
2191         AC_LANG_RESTORE
2192         ;;
2193     esac
2195     case "$target" in
2196     i*86-*)
2197         AC_DEFINE(_X86_)
2198         ;;
2199     alpha-*)
2200         AC_DEFINE(_ALPHA_)
2201         ;;
2202     mips-*)
2203         AC_DEFINE(_MIPS_)
2204         ;;
2205     *)
2206         AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2207         ;;
2208     esac
2209     ;;
2211 *-netbsd*)
2212     DSO_CFLAGS=''
2213     CFLAGS="$CFLAGS -Dunix"
2214     CXXFLAGS="$CXXFLAGS -Dunix"
2215     if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2216         DLL_SUFFIX=".so"
2217         DSO_PIC_CFLAGS='-fPIC -DPIC'
2218         DSO_LDOPTS='-shared'
2219         BIN_FLAGS='-Wl,--export-dynamic'
2220     else
2221         DSO_PIC_CFLAGS='-fPIC -DPIC'
2222         DLL_SUFFIX=".so.1.0"
2223         DSO_LDOPTS='-shared'
2224     fi
2225     # This will fail on a.out systems prior to 1.5.1_ALPHA.
2226     MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2227     MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2228     if test "$LIBRUNPATH"; then
2229         DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2230     fi
2231     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2232     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2233     ;;
2235 *-nto*) 
2236         AC_DEFINE(NTO)  
2237         AC_DEFINE(_QNX_SOURCE)
2238         AC_DEFINE(_i386)
2239         OS_TARGET=NTO
2240         WARNINGS_AS_ERRORS=''
2241         MOZ_OPTIMIZE_FLAGS="-O"
2242         MOZ_DEBUG_FLAGS="-gstabs"
2243         USE_PTHREADS=1
2244         _PEDANTIC=
2245         LIBS="$LIBS -lsocket -lstdc++"
2246         _DEFINES_CFLAGS='-Wp,-include -Wp,$(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
2247         _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -Wp,-include -Wp,$(DEPTH)/mozilla-config.h -D_POSIX_C_SOURCE=199506'
2248         if test "$with_x" != "yes"
2249         then
2250                 _PLATFORM_DEFAULT_TOOLKIT="photon"
2251             TK_CFLAGS='-I/usr/include/photon'
2252                 TK_LIBS='-lph'
2253         fi
2254         case "${target_cpu}" in
2255         ppc*)
2256         AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)        
2257         ;;
2258         esac
2259         case "${host_cpu}" in
2260         i*86)
2261         USE_ELF_DYNSTR_GC=1
2262         ;;
2263         esac
2264         ;;
2266 *-openbsd*)
2267     DLL_SUFFIX=".so.1.0"
2268     DSO_CFLAGS=''
2269     DSO_PIC_CFLAGS='-fPIC'
2270     DSO_LDOPTS='-shared -fPIC'
2271     if test "$LIBRUNPATH"; then
2272         DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2273     fi
2274     ;;
2276 *-openvms*) 
2277     AC_DEFINE(NO_PW_GECOS)
2278     AC_DEFINE(NO_UDSOCK)
2279     AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
2280     USE_PTHREADS=1
2281     MKSHLIB_FORCE_ALL='-all'
2282     MKSHLIB_UNFORCE_ALL='-none'
2283     AS='as'
2284     AS_DASH_C_FLAG='-Wc/names=as_is'
2285     AR_FLAGS='c $@'
2286     DSO_LDOPTS='-shared -auto_symvec'
2287     DSO_PIC_CFLAGS=
2288     MOZ_DEBUG_LDFLAGS='-g'
2289     COMPAQ_CXX=1
2290     CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
2291     CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
2292     ;;
2295 *-os2*)
2296     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2297     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2298     AC_DEFINE(XP_OS2)
2299     USE_SHORT_LIBNAME=1
2300     DLL_PREFIX=
2301     LIB_PREFIX=
2302     LIB_SUFFIX=lib
2303     BIN_SUFFIX=".exe"
2304     DLL_SUFFIX=".dll"
2305     IMPORT_LIB_SUFFIX=lib
2306     DSO_PIC_CFLAGS=
2307     TARGET_MD_ARCH=os2
2308     _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2309     MOZ_ENABLE_POSTSCRIPT=
2310     RC=rc.exe
2311     RCFLAGS='-n'
2312     MOZ_USER_DIR="Mozilla"
2314     if test "$MOZTOOLS"; then
2315         MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2316     else
2317         AC_MSG_ERROR([MOZTOOLS is not set])
2318     fi
2320     # EMX/GCC build
2321     if test -n "$GNU_CC"; then
2322         AC_DEFINE(OS2)
2323         AC_DEFINE(XP_OS2_EMX)
2324         AC_DEFINE(OS2EMX_PLAIN_CHAR)
2325         AC_DEFINE(TCPV40HDRS)
2326         AR=emxomfar
2327         AR_FLAGS='r $@'
2328         CFLAGS="$CFLAGS -Zomf"
2329         CXXFLAGS="$CXXFLAGS -Zomf"
2330         DSO_LDOPTS='-Zdll'
2331         BIN_FLAGS='-Zlinker /ST:0x100000'
2332         IMPLIB='emximp -o'
2333         FILTER='emxexp -o'
2334         LDFLAGS='-Zmap'
2335         WARNINGS_AS_ERRORS='-Werror'
2336         MOZ_DEBUG_FLAGS="-g -fno-inline"
2337         MOZ_OPTIMIZE_FLAGS="-O2"
2338         MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2339         MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcomct.lib'
2340         DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
2341         LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2342         if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2343           DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2344           LDFLAGS="$LDFLAGS -Zhigh-mem"
2345           MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2346           AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2347         fi
2349         # GCC for OS/2 currently predefines these, but we don't want them
2350         _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2351         _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2353         AC_CACHE_CHECK(for __declspec(dllexport),
2354            ac_os2_declspec,
2355            [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2356                            [return 0;],
2357                            ac_os2_declspec="yes",
2358                            ac_os2_declspec="no")])
2359         if test "$ac_os2_declspec" = "yes"; then
2360            FILTER='true'
2361            MOZ_OS2_USE_DECLSPEC='1'
2362         fi
2363         
2364     # Visual Age C++ build
2365     elif test "$VACPP" = "yes"; then
2366         MOZ_BUILD_ROOT=`pwd -D`
2367         OBJ_SUFFIX=obj
2368         AR=-ilib
2369         AR_FLAGS='/NOL /NOI /O:$(subst /,\\,$@)'
2370         AR_LIST='/L'
2371         AR_EXTRACT='-*'
2372         AR_DELETE='-'
2373         AS=alp
2374         ASFLAGS='-Mb'
2375         AS_DASH_C_FLAG=''
2376         ASM_SUFFIX=asm
2377         LD='-ilink'
2378         CFLAGS="/Q /qlibansi /Gm+ /Su4 /Mp /Tl9"
2379         CXXFLAGS="/Q /qlibansi /Gm+ /Su4 /Mp /Tl9 /Gx+"
2380         MOZ_DEBUG_FLAGS="/Ti+"
2381         WARNINGS_AS_ERRORS='-WX'
2382         MOZ_OPTIMIZE_FLAGS="/O+ /Gl+ /G5 /qarch=pentium"
2383         LDFLAGS="/NOL /M"
2384         MOZ_DEBUG_LDFLAGS="/DE"
2385         MOZ_OPTIMIZE_LDFLAGS="/OPTFUNC /EXEPACK:2 /PACKCODE /PACKDATA"
2386         DSO_LDOPTS=''
2387         DSO_PIC_CFLAGS=
2388         IMPLIB='implib /NOL /NOI'
2389         FILTER='cppfilt -q -B -P'
2390         AC_DEFINE(NO_ANSI_KEYWORDS)
2391         AC_DEFINE(OS2,4)
2392         AC_DEFINE(_X86_)
2393         AC_DEFINE(XP_OS2_VACPP)
2394         AC_DEFINE(TCPV40HDRS)
2395         AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2396         AC_DEFINE(STDC_HEADERS)
2397         MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2398         MKSHLIB='$(LD) $(DSO_LDOPTS)'
2399         MKCSHLIB='$(LD) $(DSO_LDOPTS)'
2400         MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2401         MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcomct.lib'
2402         DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
2403         LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2404     fi
2405     ;;
2407 alpha*-*-osf*)
2408     if test "$GNU_CC"; then
2409       MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2410       MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2412     else
2413         MOZ_DEBUG_FLAGS='-g'
2414         ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
2415         CFLAGS="$CFLAGS -ieee"
2416         CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee  -ptr $(DIST)/cxx_repository'
2417         DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
2418         DSO_CFLAGS=
2419         DSO_PIC_CFLAGS=
2420         MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2421         MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2422         MKSHLIB_FORCE_ALL='-all'
2423         MKSHLIB_UNFORCE_ALL='-none'
2424         dnl Might fix the libxpcom.so breakage on this platform as well....
2425         AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2426         AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2427     fi
2428     if test -z "$GNU_CXX"; then
2429       COMPAQ_CXX=1
2430     fi
2431     AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2432     ;;
2434 *-qnx*) 
2435     DIRENT_INO=d_stat.st_ino
2436     dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
2437     AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2438     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2439     dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
2440     AC_DEFINE(STDC_HEADERS)
2441     if test "$no_x" = "yes"; then
2442             _PLATFORM_DEFAULT_TOOLKIT='photon'
2443             TK_CFLAGS='-I/usr/nto/include/photon'
2444             TK_LIBS='-lphoton -lphrender'
2445     fi
2446     ;;
2448 *-sco*) 
2449     AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2450     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2451     CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
2452     if test ! "$GNU_CC"; then
2453        DSO_LDOPTS='-G'
2454     fi
2455     ;;
2457 dnl the qsort routine under solaris is faulty
2458 *-solaris*) 
2459     AC_DEFINE(SOLARIS)
2460     TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2461     SYSTEM_MAKEDEPEND=
2462     # $ORIGIN/.. is for shared libraries under components/ to locate shared
2463     # libraries one level up (e.g. libnspr4.so)
2464     LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..'"
2465     LIBS="-lCrun -lCstd $LIBS"
2466     MOZ_MEMORY=1
2467     if test -z "$GNU_CC"; then
2468        NS_USE_NATIVE=1
2469        MOZ_FIX_LINK_PATHS=
2470        AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2472        if test "$CPU_ARCH" != "sparc"; then
2473           CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all"
2474           CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife -norunpath"
2475        else
2476           # Do not use -xbuiltin on SPARC to get around a bug of compiler
2477           CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%none"
2478           CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%none -features=tmplife -norunpath"
2479        fi
2481        LDFLAGS="-xildoff -z lazyload -z combreloc $LDFLAGS"
2482        if test -z "$CROSS_COMPILE" && test -f /usr/lib/ld/map.noexstk; then
2483            _SAVE_LDFLAGS=$LDFLAGS
2484            LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS" 
2485            AC_TRY_LINK([#include <stdio.h>],
2486                        [printf("Hello World\n");],
2487                        ,
2488                        [LDFLAGS=$_SAVE_LDFLAGS])
2489        fi
2490        WARNINGS_AS_ERRORS='-Werror'
2491        MOZ_OPTIMIZE_FLAGS="-xO4"
2492        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2493        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) -G -z muldefs -h $@ -o $@'
2494        MKSHLIB_FORCE_ALL='-z allextract'
2495        MKSHLIB_UNFORCE_ALL='-z defaultextract'
2496        DSO_LDOPTS='-G -z muldefs'
2497        AR_LIST="$AR t"
2498        AR_EXTRACT="$AR x"
2499        AR_DELETE="$AR d"
2500        AR='$(CXX) -xar'
2501        AR_FLAGS='-o $@'
2502        AS='/usr/ccs/bin/as'
2503        ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2504        AS_DASH_C_FLAG=''
2505        TARGET_COMPILER_ABI="sunc"
2506         CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2507         CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2508        AC_MSG_CHECKING([for Forte compiler version >= WS6U2])
2509        AC_LANG_SAVE
2510        AC_LANG_CPLUSPLUS
2511        AC_TRY_COMPILE([],
2512            [#if (__SUNPRO_CC < 0x530)
2513            #error "Denied"
2514            #endif],
2515            _BAD_COMPILER=,_BAD_COMPILER=1)
2516         if test -n "$_BAD_COMPILER"; then
2517             _res="no"
2518             AC_MSG_ERROR([Forte version WS6U2 or higher is required to build. Your compiler version is $CC_VERSION .])
2519         else
2520             _res="yes"
2521         fi
2522         AC_MSG_RESULT([$_res])
2523         AC_LANG_RESTORE
2524     else
2525        ASFLAGS="$ASFLAGS -fPIC"
2526        DSO_LDOPTS='-G'
2527        _WARNINGS_CFLAGS=''
2528        _WARNINGS_CXXFLAGS=''
2529        if test "$OS_RELEASE" = "5.3"; then
2530           AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2531        fi
2532     fi
2533     if test "$OS_RELEASE" = "5.5.1"; then
2534        AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2535     fi
2536     ;;
2538 *-sunos*) 
2539     DSO_LDOPTS='-Bdynamic'
2540     MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2541     MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2542     AC_DEFINE(SUNOS4)
2543     AC_DEFINE(SPRINTF_RETURNS_STRING)
2544     case "$(target_os)" in
2545     sunos4.1*)
2546         DLL_SUFFIX='.so.1.0'
2547         ;;
2548     esac
2549     ;;
2551 *-sysv4.2uw7*) 
2552         NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2553     ;;
2555 *-os2*)
2556     HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2557     ;;
2559 esac
2561 dnl Only one oddball right now (QNX), but this gives us flexibility
2562 dnl if any other platforms need to override this in the future.
2563 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2565 dnl ========================================================
2566 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2567 dnl by now will not have any way to link most binaries (tests
2568 dnl as well as viewer, apprunner, etc.), because some symbols
2569 dnl will be left out of the "composite" .so's by ld as unneeded.
2570 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2571 dnl they can link in the static libs that provide the missing
2572 dnl symbols.
2573 dnl ========================================================
2574 NO_LD_ARCHIVE_FLAGS=
2575 if test -z "$MKSHLIB_FORCE_ALL" || test -z "$MKSHLIB_UNFORCE_ALL"; then
2576     NO_LD_ARCHIVE_FLAGS=1
2578 case "$target" in
2579 *-os2*)
2580     NO_LD_ARCHIVE_FLAGS=
2581     ;;
2582 *-aix4.3*|*-aix5*)
2583     NO_LD_ARCHIVE_FLAGS=
2584     ;;
2585 *-openvms*)
2586     NO_LD_ARCHIVE_FLAGS=
2587     ;;
2588 *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince)
2589     if test -z "$GNU_CC"; then
2590         NO_LD_ARCHIVE_FLAGS=
2591     fi
2592     ;;
2593 esac
2594 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2597 dnl Indicate that platform requires special thread safe 
2598 dnl locking when starting up the OJI JVM 
2599 dnl (see mozilla/modules/oji/src/nsJVMManager.cpp)
2600 dnl ========================================================
2601 case "$target" in
2602     *-hpux*)      
2603         AC_DEFINE(MOZ_OJI_REQUIRE_THREAD_SAFE_ON_STARTUP)
2604         ;;
2605 esac
2607 dnl ========================================================
2608 dnl = Flags to strip unused symbols from .so components
2609 dnl ========================================================
2610 case "$target" in
2611     *-linux*|*-kfreebsd*-gnu)
2612         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2613         ;;
2614     *-solaris*)
2615         if test -z "$GNU_CC"; then
2616          MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2617         else
2618          if test -z "$GCC_USE_GNU_LD"; then
2619           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2620          else
2621           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2622          fi
2623         fi
2624         ;;
2625     *-nto*) 
2626         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2627         ;;
2628     *-darwin*)
2629         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2630         ;;
2631     *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince)
2632         if test -n "$GNU_CC"; then
2633            MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2634         fi
2635         ;;
2636 esac
2638 if test -z "$COMPILE_ENVIRONMENT"; then
2639     SKIP_COMPILER_CHECKS=1
2640     SKIP_LIBRARY_CHECKS=1
2643 if test -z "$SKIP_COMPILER_CHECKS"; then
2644 dnl Checks for typedefs, structures, and compiler characteristics.
2645 dnl ========================================================
2646 AC_LANG_C
2647 AC_HEADER_STDC
2648 AC_C_CONST
2649 AC_TYPE_MODE_T
2650 AC_TYPE_OFF_T
2651 AC_TYPE_PID_T
2652 AC_TYPE_SIZE_T
2653 AC_STRUCT_ST_BLKSIZE
2654 AC_MSG_CHECKING(for siginfo_t)
2655 AC_CACHE_VAL(ac_cv_siginfo_t,
2656  [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2657                   #include <signal.h>],
2658                  [siginfo_t* info;],
2659                  [ac_cv_siginfo_t=true],
2660                  [ac_cv_siginfo_t=false])])
2661 if test "$ac_cv_siginfo_t" = true ; then
2662   AC_DEFINE(HAVE_SIGINFO_T)
2663   AC_MSG_RESULT(yes)
2664 else
2665   AC_MSG_RESULT(no)
2668 dnl Visual Age for os/2 also defines size_t and off_t in certain 
2669 dnl  header files.  These defines make Visual Age use the mozilla
2670 dnl  defines types.
2671 if test "$VACPP" = "yes"; then
2672    AC_DEFINE(__size_t)
2673    AC_DEFINE(__off_t)
2676 dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
2677 dnl ========================================================
2678 AC_MSG_CHECKING(for int16_t)
2679 AC_CACHE_VAL(ac_cv_int16_t,
2680  [AC_TRY_COMPILE([#include <stdio.h>
2681                   #include <sys/types.h>],
2682                  [int16_t foo = 0;],
2683                  [ac_cv_int16_t=true],
2684                  [ac_cv_int16_t=false])])
2685 if test "$ac_cv_int16_t" = true ; then
2686   AC_DEFINE(HAVE_INT16_T)
2687   AC_MSG_RESULT(yes)
2688 else
2689   AC_MSG_RESULT(no)
2691 AC_MSG_CHECKING(for int32_t)
2692 AC_CACHE_VAL(ac_cv_int32_t,
2693  [AC_TRY_COMPILE([#include <stdio.h>
2694                   #include <sys/types.h>],
2695                  [int32_t foo = 0;],
2696                  [ac_cv_int32_t=true],
2697                  [ac_cv_int32_t=false])])
2698 if test "$ac_cv_int32_t" = true ; then
2699   AC_DEFINE(HAVE_INT32_T)
2700   AC_MSG_RESULT(yes)
2701 else
2702   AC_MSG_RESULT(no)
2704 AC_MSG_CHECKING(for int64_t)
2705 AC_CACHE_VAL(ac_cv_int64_t,
2706  [AC_TRY_COMPILE([#include <stdio.h>
2707                   #include <sys/types.h>],
2708                  [int64_t foo = 0;],
2709                  [ac_cv_int64_t=true],
2710                  [ac_cv_int64_t=false])])
2711 if test "$ac_cv_int64_t" = true ; then
2712   AC_DEFINE(HAVE_INT64_T)
2713   AC_MSG_RESULT(yes)
2714 else
2715   AC_MSG_RESULT(no)
2717 AC_MSG_CHECKING(for int64)
2718 AC_CACHE_VAL(ac_cv_int64,
2719  [AC_TRY_COMPILE([#include <stdio.h>
2720                   #include <sys/types.h>],
2721                  [int64 foo = 0;],
2722                  [ac_cv_int64=true],
2723                  [ac_cv_int64=false])])
2724 if test "$ac_cv_int64" = true ; then
2725   AC_DEFINE(HAVE_INT64)
2726   AC_MSG_RESULT(yes)
2727 else
2728   AC_MSG_RESULT(no)
2730 AC_MSG_CHECKING(for uint)
2731 AC_CACHE_VAL(ac_cv_uint,
2732  [AC_TRY_COMPILE([#include <stdio.h>
2733                   #include <sys/types.h>],
2734                  [uint foo = 0;],
2735                  [ac_cv_uint=true],
2736                  [ac_cv_uint=false])])
2737 if test "$ac_cv_uint" = true ; then
2738   AC_DEFINE(HAVE_UINT)
2739   AC_MSG_RESULT(yes)
2740 else
2741   AC_MSG_RESULT(no)
2743 AC_MSG_CHECKING(for uint_t)
2744 AC_CACHE_VAL(ac_cv_uint_t,
2745  [AC_TRY_COMPILE([#include <stdio.h>
2746                   #include <sys/types.h>],
2747                  [uint_t foo = 0;],
2748                  [ac_cv_uint_t=true],
2749                  [ac_cv_uint_t=false])])
2750 if test "$ac_cv_uint_t" = true ; then
2751   AC_DEFINE(HAVE_UINT_T)
2752   AC_MSG_RESULT(yes)
2753 else
2754   AC_MSG_RESULT(no)
2756 AC_MSG_CHECKING(for uint16_t)
2757 AC_CACHE_VAL(ac_cv_uint16_t,
2758  [AC_TRY_COMPILE([#include <stdio.h>
2759                   #include <sys/types.h>],
2760                  [uint16_t foo = 0;],
2761                  [ac_cv_uint16_t=true],
2762                  [ac_cv_uint16_t=false])])
2763 if test "$ac_cv_uint16_t" = true ; then
2764   AC_DEFINE(HAVE_UINT16_T)
2765   AC_MSG_RESULT(yes)
2766 else
2767   AC_MSG_RESULT(no)
2770 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
2771 dnl are defined when compiling C++ but not C.  Since the result of this
2772 dnl test is used only in C++, do it in C++.
2773 AC_LANG_CPLUSPLUS
2775 AC_MSG_CHECKING(for uname.domainname)
2776 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
2777     [AC_TRY_COMPILE([#include <sys/utsname.h>],
2778         [ struct utsname *res; char *domain; 
2779             (void)uname(res);  if (res != 0) { domain = res->domainname; } ],
2780         [ac_cv_have_uname_domainname_field=true],
2781         [ac_cv_have_uname_domainname_field=false])])
2783 if test "$ac_cv_have_uname_domainname_field" = "true"; then
2784     AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
2785     AC_MSG_RESULT(yes)
2786 else
2787     AC_MSG_RESULT(no)
2790 AC_MSG_CHECKING(for uname.__domainname)
2791 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
2792     [AC_TRY_COMPILE([#include <sys/utsname.h>],
2793         [ struct utsname *res; char *domain; 
2794             (void)uname(res);  if (res != 0) { domain = res->__domainname; } ],
2795         [ac_cv_have_uname_us_domainname_field=true],
2796         [ac_cv_have_uname_us_domainname_field=false])])
2798 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
2799     AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
2800     AC_MSG_RESULT(yes)
2801 else
2802     AC_MSG_RESULT(no)
2805 AC_LANG_C
2807 dnl Check for usable wchar_t (2 bytes, unsigned)
2808 dnl (we really don't need the unsignedness check anymore)
2809 dnl ========================================================
2811 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
2812     ac_cv_have_usable_wchar_v2,
2813     [AC_TRY_COMPILE([#include <stddef.h>
2814                      $configure_static_assert_macros],
2815                     [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2816                      CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2817                     ac_cv_have_usable_wchar_v2="yes",
2818                     ac_cv_have_usable_wchar_v2="no")])
2819 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
2820     AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2821     HAVE_CPP_2BYTE_WCHAR_T=1
2822 else
2823 dnl This is really gcc-only
2824 dnl Do this test using CXX only since some versions of gcc
2825 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
2826 dnl only have short-wchar support for c++.
2827 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
2829     AC_LANG_SAVE
2830     AC_LANG_CPLUSPLUS
2831     _SAVE_CXXFLAGS=$CXXFLAGS
2832     CXXFLAGS="$CXXFLAGS -fshort-wchar"
2834     AC_CACHE_CHECK(for compiler -fshort-wchar option, 
2835         ac_cv_have_usable_wchar_option_v2,
2836         [AC_TRY_LINK([#include <stddef.h>
2837                       $configure_static_assert_macros],
2838                      [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2839                       CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2840                      ac_cv_have_usable_wchar_option_v2="yes",
2841                      ac_cv_have_usable_wchar_option_v2="no")])
2843     if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
2844         AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2845         HAVE_CPP_2BYTE_WCHAR_T=1
2846     else    
2847         CXXFLAGS=$_SAVE_CXXFLAGS
2848     fi
2849     AC_LANG_RESTORE
2852 dnl Check for .hidden assembler directive and visibility attribute.
2853 dnl Borrowed from glibc configure.in
2854 dnl ===============================================================
2855 if test "$GNU_CC"; then
2856   AC_CACHE_CHECK(for visibility(hidden) attribute,
2857                  ac_cv_visibility_hidden,
2858                  [cat > conftest.c <<EOF
2859                   int foo __attribute__ ((visibility ("hidden"))) = 1;
2861                   ac_cv_visibility_hidden=no
2862                   if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2863                     if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2864                       ac_cv_visibility_hidden=yes
2865                     fi
2866                   fi
2867                   rm -f conftest.[cs]
2868                  ])
2869   if test "$ac_cv_visibility_hidden" = "yes"; then
2870     AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2872     AC_CACHE_CHECK(for visibility(default) attribute,
2873                    ac_cv_visibility_default,
2874                    [cat > conftest.c <<EOF
2875                     int foo __attribute__ ((visibility ("default"))) = 1;
2877                     ac_cv_visibility_default=no
2878                     if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2879                       if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2880                         ac_cv_visibility_default=yes
2881                       fi
2882                     fi
2883                     rm -f conftest.[cs]
2884                    ])
2885     if test "$ac_cv_visibility_default" = "yes"; then
2886       AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2888       AC_CACHE_CHECK(for visibility pragma support,
2889                      ac_cv_visibility_pragma,
2890                      [cat > conftest.c <<EOF
2891 #pragma GCC visibility push(hidden)
2892                       int foo_hidden = 1;
2893 #pragma GCC visibility push(default)
2894                       int foo_default = 1;
2896                       ac_cv_visibility_pragma=no
2897                       if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2898                         if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
2899                           if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
2900                             ac_cv_visibility_pragma=yes
2901                           fi
2902                         fi
2903                       fi
2904                       rm -f conftest.[cs]
2905                     ])
2906       if test "$ac_cv_visibility_pragma" = "yes"; then
2907         AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
2908                        ac_cv_have_visibility_class_bug,
2909                        [cat > conftest.c <<EOF
2910 #pragma GCC visibility push(hidden)
2911 struct __attribute__ ((visibility ("default"))) TestStruct {
2912   static void Init();
2914 __attribute__ ((visibility ("default"))) void TestFunc() {
2915   TestStruct::Init();
2918                        ac_cv_have_visibility_class_bug=no
2919                        if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2920                          ac_cv_have_visibility_class_bug=yes
2921                        else
2922                          if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
2923                            ac_cv_have_visibility_class_bug=yes
2924                          fi
2925                        fi
2926                        rm -rf conftest.{c,S}
2927                        ])
2929         AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
2930                        ac_cv_have_visibility_builtin_bug,
2931                        [cat > conftest.c <<EOF
2932 #pragma GCC visibility push(hidden)
2933 #pragma GCC visibility push(default)
2934 #include <string.h>
2935 #pragma GCC visibility pop
2937 __attribute__ ((visibility ("default"))) void Func() {
2938   char c[[100]];
2939   memset(c, 0, sizeof(c));
2942                        ac_cv_have_visibility_builtin_bug=no
2943                        if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2944                          ac_cv_have_visibility_builtin_bug=yes
2945                        else
2946                          if test `grep -c "@PLT" conftest.S` = 0; then
2947                            ac_cv_visibility_builtin_bug=yes
2948                          fi
2949                        fi
2950                        rm -f conftest.{c,S}
2951                        ])
2952         if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
2953                 "$ac_cv_have_visibility_class_bug" = "no"; then
2954           VISIBILITY_FLAGS='-I$(DIST)/include/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
2955           WRAP_SYSTEM_INCLUDES=1
2956         else
2957           VISIBILITY_FLAGS='-fvisibility=hidden'
2958         fi # have visibility pragma bug
2959       fi   # have visibility pragma
2960     fi     # have visibility(default) attribute
2961   fi       # have visibility(hidden) attribute
2962 fi         # GNU_CC
2964 # visibility hidden flag for Sun Studio on Solaris
2965 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
2966 VISIBILITY_FLAGS='-xldscope=hidden'
2967 fi         # Sun Studio on Solaris
2969 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2970 AC_SUBST(VISIBILITY_FLAGS)
2972 dnl Checks for header files.
2973 dnl ========================================================
2974 AC_HEADER_DIRENT
2975 case "$target_os" in
2976 freebsd*)
2977 # for stuff like -lXshm
2978     CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2979     ;;
2980 esac
2981 AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
2982 AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
2983 AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
2984 AC_CHECK_HEADERS(malloc.h)
2985 AC_CHECK_HEADERS(X11/XKBlib.h)
2987 dnl These are all the places some variant of statfs can be hiding.
2988 AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2990 dnl Try for MMX support
2991 dnl NB - later gcc versions require -mmmx for this header to be successfully
2992 dnl included (or another option which implies it, such as -march=pentium-mmx)
2993 AC_CHECK_HEADERS(mmintrin.h)
2995 AC_MSG_CHECKING(for ARM SIMD support)
2996 AC_TRY_COMPILE([],
2997                [asm("uqadd8 r1, r1, r2");],
2998                result="yes", result="no")
2999 AC_MSG_RESULT("$result")
3000 if test "$result" = "yes"; then
3001     AC_DEFINE(HAVE_ARM_SIMD)
3002     HAVE_ARM_SIMD=1
3004 AC_SUBST(HAVE_ARM_SIMD)
3006 dnl Check whether the compiler supports the new-style C++ standard
3007 dnl library headers (i.e. <new>) or needs the old "new.h"
3008 AC_LANG_CPLUSPLUS
3009 NEW_H=new.h
3010 AC_CHECK_HEADER(new, [NEW_H=new])
3011 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
3012 AC_LANG_C
3014 AC_ARG_ENABLE(dtrace,
3015               [  --enable-dtrace         build with dtrace support if available (default=no)],
3016               [enable_dtrace="yes"],)
3017 if test "x$enable_dtrace" = "xyes"; then
3018   AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
3019   if test -n "$HAVE_DTRACE"; then
3020       AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
3021   else
3022       AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
3023   fi
3025 AC_SUBST(HAVE_DTRACE)
3027 case $target in
3028 *-aix4.3*|*-aix5*)
3029         ;;
3031         AC_CHECK_HEADERS(sys/cdefs.h)
3032         ;;
3033 esac
3035 dnl Checks for libraries.
3036 dnl ========================================================
3037 case $target in
3038 *-hpux11.*)
3039         ;;
3041         AC_CHECK_LIB(c_r, gethostbyname_r)
3042         ;;
3043 esac
3045 dnl We don't want to link with libdl even if it's present on OS X, since
3046 dnl it's not used and not part of the default installation.
3047 dnl The same goes for BeOS.
3048 dnl We don't want to link against libm or libpthread on Darwin since
3049 dnl they both are just symlinks to libSystem and explicitly linking
3050 dnl against libSystem causes issues when debugging (see bug 299601).
3051 case $target in
3052 *-darwin*)
3053     ;;
3054 *-beos*)
3055     ;;
3057     AC_CHECK_LIB(m, atan)
3058     AC_CHECK_LIB(dl, dlopen,
3059     AC_CHECK_HEADER(dlfcn.h, 
3060         LIBS="-ldl $LIBS"
3061         AC_DEFINE(HAVE_LIBDL)))
3062     ;;
3063 esac
3065 _SAVE_CFLAGS="$CFLAGS"
3066 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3067 AC_CHECK_FUNCS(dladdr)
3068 CFLAGS="$_SAVE_CFLAGS"
3070 if test ! "$GNU_CXX"; then
3072     case $target in
3073     *-aix*)
3074         AC_CHECK_LIB(C_r, demangle)
3075         ;;
3076      *)
3077         AC_CHECK_LIB(C, demangle)
3078         ;;
3079      esac
3081 AC_CHECK_LIB(socket, socket)
3083 XLDFLAGS="$X_LIBS"
3084 XLIBS="$X_EXTRA_LIBS"
3086 dnl ========================================================
3087 dnl Checks for X libraries.
3088 dnl Ordering is important.
3089 dnl Xt is dependent upon SM as of X11R6
3090 dnl ========================================================
3091 if test "$no_x" = "yes"; then
3092     AC_DEFINE(NO_X11)
3093 else
3094     AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3095         XLIBS="-lX11 $XLIBS"
3096         _SAVE_LDFLAGS="$LDFLAGS"
3097         LDFLAGS="$XLDFLAGS $LDFLAGS"
3098         AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3099                 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3100         AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3101                 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3102    
3103      
3104         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3105         unset ac_cv_lib_Xt_XtFree
3106             AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3107             AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS) 
3108         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3109                     [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3110         ])
3112     # AIX needs the motif library linked before libXt to prevent
3113     # crashes in plugins linked against Motif - Bug #98892
3114     case "${target_os}" in
3115     aix*)
3116         XT_LIBS="-lXm $XT_LIBS"
3117         ;;
3118     esac
3120     dnl ========================================================
3121     dnl = Check for XShm
3122     dnl ========================================================
3123     AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3124         $XLIBS $XEXT_LIBS)
3125     AC_CHECK_HEADER(X11/extensions/XShm.h)
3126     if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" &&
3127         test -n "$_HAVE_XSHM_XEXT"; then
3128         AC_DEFINE(HAVE_XSHM)
3129     fi
3131     dnl ========================================================
3132     dnl = Check for XIE
3133     dnl ========================================================
3134     AC_CHECK_LIB(XIE, XieFloGeometry, [MOZ_XIE_LIBS="-lXIE"],,
3135         $XLIBS $XEXT_LIBS)
3136     AC_CHECK_HEADER(X11/extensions/XIElib.h)
3138     if test "$MOZ_XIE_LIBS"; then
3139         dnl ====================================================
3140         dnl = If XIE is present and is desired, turn it on
3141         dnl ====================================================
3142         case $target in
3143             *-hpux*)
3144                 ;;
3145             *)
3146                 HAVE_XIE=1
3147                 ;;
3148         esac
3149     fi
3151         LDFLAGS="$_SAVE_LDFLAGS"
3153     dnl ========================================================
3154     dnl = Check for freetype2 and its functionality
3155     dnl ========================================================
3156     AC_CHECK_FT2(6.1.0, [_HAVE_FREETYPE2=1], [_HAVE_FREETYPE2=])
3158     if test "$_HAVE_FREETYPE2"; then
3159         _SAVE_LIBS="$LIBS"
3160         _SAVE_CFLAGS="$CFLAGS"
3161         LIBS="$LIBS $FT2_LIBS"
3162         CFLAGS="$CFLAGS $FT2_CFLAGS"
3164         AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
3165             ac_cv_member_FT_Bitmap_Size_y_ppem,
3166             [AC_TRY_COMPILE([#include <ft2build.h>
3167                              #include FT_FREETYPE_H],
3168                             [FT_Bitmap_Size s;
3169                              if (sizeof s.y_ppem) return 0;
3170                              return 1],
3171                             ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
3172                             ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
3173         if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
3174             HAVE_FT_BITMAP_SIZE_Y_PPEM=1
3175         else
3176             HAVE_FT_BITMAP_SIZE_Y_PPEM=0
3177         fi
3178         AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
3179                            $HAVE_FT_BITMAP_SIZE_Y_PPEM,
3180                            [FT_Bitmap_Size structure includes y_ppem field])
3182         AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
3184         LIBS="$_SAVE_LIBS"
3185         CFLAGS="$_SAVE_CFLAGS"
3186     fi
3188 fi # $no_x
3190 AC_SUBST(XCFLAGS)
3191 AC_SUBST(XLDFLAGS)
3192 AC_SUBST(XLIBS)
3193 AC_SUBST(XT_LIBS)
3195 dnl ========================================================
3196 dnl = pthread support
3197 dnl = Start by checking whether the system support pthreads
3198 dnl ========================================================
3199 case "$target_os" in
3200 darwin*)
3201     USE_PTHREADS=1
3202     ;;
3204     MOZ_CHECK_PTHREADS(pthreads,
3205         USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3206         MOZ_CHECK_PTHREADS(pthread,
3207             USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3208             MOZ_CHECK_PTHREADS(c_r,
3209                 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3210                 MOZ_CHECK_PTHREADS(c,
3211                     USE_PTHREADS=1
3212                 )
3213             )
3214         )
3215     )
3216     ;;
3217 esac
3219 dnl ========================================================
3220 dnl Check the command line for --with-pthreads 
3221 dnl ========================================================
3222 MOZ_ARG_WITH_BOOL(pthreads,
3223 [  --with-pthreads         Force use of system pthread library with NSPR ],
3224 [ if test "$USE_PTHREADS"x = x; then
3225     AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3226 fi],
3227     USE_PTHREADS=
3228     _PTHREAD_LDFLAGS=
3231 dnl ========================================================
3232 dnl Do the platform specific pthread hackery
3233 dnl ========================================================
3234 if test "$USE_PTHREADS"x != x
3235 then
3236         dnl
3237         dnl See if -pthread is supported.
3238         dnl
3239         rm -f conftest*
3240         ac_cv_have_dash_pthread=no
3241         AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3242         echo 'int main() { return 0; }' | cat > conftest.c
3243         ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3244         if test $? -eq 0; then
3245                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3246                         ac_cv_have_dash_pthread=yes
3247                 case "$target_os" in
3248                 freebsd*)
3249 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3250                 ;;
3251                 *)
3252                             CFLAGS="$CFLAGS -pthread"
3253                             CXXFLAGS="$CXXFLAGS -pthread"
3254                 ;;
3255                 esac
3256                 fi
3257         fi
3258         rm -f conftest*
3259     AC_MSG_RESULT($ac_cv_have_dash_pthread)
3261         dnl
3262         dnl See if -pthreads is supported.
3263         dnl
3264     ac_cv_have_dash_pthreads=no
3265     if test "$ac_cv_have_dash_pthread" = "no"; then
3266             AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3267         echo 'int main() { return 0; }' | cat > conftest.c
3268             ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3269         if test $? -eq 0; then
3270                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3271                             ac_cv_have_dash_pthreads=yes
3272                             CFLAGS="$CFLAGS -pthreads"
3273                             CXXFLAGS="$CXXFLAGS -pthreads"
3274                     fi
3275             fi
3276             rm -f conftest*
3277         AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3278     fi
3280         case "$target" in
3281             *-*-freebsd*)
3282                         AC_DEFINE(_REENTRANT)
3283                         AC_DEFINE(_THREAD_SAFE)
3284                         dnl -pthread links in -lc_r, so don't specify it explicitly.
3285                         if test "$ac_cv_have_dash_pthread" = "yes"; then
3286                                 _PTHREAD_LDFLAGS="-pthread"
3287                         else
3288                                 _PTHREAD_LDFLAGS="-lc_r"
3289                         fi
3290                         ;;
3292             *-*-openbsd*|*-*-bsdi*)
3293                         AC_DEFINE(_REENTRANT)
3294                         AC_DEFINE(_THREAD_SAFE)
3295                         dnl -pthread links in -lc_r, so don't specify it explicitly.
3296                         if test "$ac_cv_have_dash_pthread" = "yes"; then
3297                 _PTHREAD_LDFLAGS="-pthread"
3298                         fi
3299                         ;;
3301             *-*-linux*|*-*-kfreebsd*-gnu)
3302                         AC_DEFINE(_REENTRANT) 
3303                         ;;
3305             *-*-nto*) 
3306                         AC_DEFINE(_REENTRANT) 
3307                         ;;
3309             *-aix4.3*|*-aix5*)
3310                         AC_DEFINE(_REENTRANT) 
3311                         ;;
3313             *-hpux11.*)
3314                         AC_DEFINE(_REENTRANT) 
3315                         ;;
3317             alpha*-*-osf*)
3318                         AC_DEFINE(_REENTRANT)
3319                         ;;
3321             *-*-solaris*) 
3322                         AC_DEFINE(_REENTRANT) 
3323                         if test ! "$GNU_CC"; then
3324                                 CFLAGS="$CFLAGS -mt" 
3325                                 CXXFLAGS="$CXXFLAGS -mt" 
3326                         fi
3327                         ;;
3328         esac
3329     LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3332 dnl ========================================================
3333 dnl See if mmap sees writes
3334 dnl For cross compiling, just define it as no, which is a safe default
3335 dnl ========================================================
3336 AC_MSG_CHECKING(whether mmap() sees write()s)
3338 changequote(,)
3339 mmap_test_prog='
3340     #include <stdlib.h>
3341     #include <unistd.h>
3342     #include <sys/mman.h>
3343     #include <sys/types.h>
3344     #include <sys/stat.h>
3345     #include <fcntl.h>
3347     char fname[] = "conftest.file";
3348     char zbuff[1024]; /* Fractional page is probably worst case */
3350     int main() {
3351         char *map;
3352         int fd;
3353         int i;
3354         unlink(fname);
3355         fd = open(fname, O_RDWR | O_CREAT, 0660);
3356         if(fd<0) return 1;
3357         unlink(fname);
3358         write(fd, zbuff, sizeof(zbuff));
3359         lseek(fd, 0, SEEK_SET);
3360         map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
3361         if(map==(char*)-1) return 2;
3362         for(i=0; fname[i]; i++) {
3363             int rc = write(fd, &fname[i], 1);
3364             if(map[i]!=fname[i]) return 4;
3365         }
3366         return 0;
3367     }
3369 changequote([,])
3371 AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
3373 AC_MSG_RESULT("$result")
3375 if test "$result" = "no"; then
3376     AC_DEFINE(MMAP_MISSES_WRITES)
3380 dnl Checks for library functions.
3381 dnl ========================================================
3382 AC_PROG_GCC_TRADITIONAL
3383 AC_FUNC_MEMCMP
3384 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 truncate64 statvfs64)
3385 AC_CHECK_FUNCS(flockfile getpagesize)
3387 dnl localtime_r and strtok_r are only present on MacOS version 10.2 and higher
3388 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100200"; then
3389   AC_CHECK_FUNCS(localtime_r strtok_r)
3392 dnl check for wcrtomb/mbrtowc
3393 dnl =======================================================================
3394 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3395 AC_LANG_SAVE
3396 AC_LANG_CPLUSPLUS
3397 AC_CACHE_CHECK(for wcrtomb,
3398     ac_cv_have_wcrtomb,
3399     [AC_TRY_LINK([#include <wchar.h>],
3400                  [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3401                  ac_cv_have_wcrtomb="yes",
3402                  ac_cv_have_wcrtomb="no")])
3403 if test "$ac_cv_have_wcrtomb" = "yes"; then
3404     AC_DEFINE(HAVE_WCRTOMB)
3406 AC_CACHE_CHECK(for mbrtowc,
3407     ac_cv_have_mbrtowc,
3408     [AC_TRY_LINK([#include <wchar.h>],
3409                  [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3410                  ac_cv_have_mbrtowc="yes",
3411                  ac_cv_have_mbrtowc="no")])
3412 if test "$ac_cv_have_mbrtowc" = "yes"; then
3413     AC_DEFINE(HAVE_MBRTOWC)
3415 AC_LANG_RESTORE
3418 AC_CACHE_CHECK(
3419     [for res_ninit()],
3420     ac_cv_func_res_ninit,
3421     [AC_TRY_LINK([
3422         #ifdef linux
3423         #define _BSD_SOURCE 1
3424         #endif
3425         #include <resolv.h>
3426         ],
3427         [int foo = res_ninit(&_res);],
3428         [ac_cv_func_res_ninit=yes],
3429         [ac_cv_func_res_ninit=no])
3430     ])
3432 if test "$ac_cv_func_res_ninit" = "yes"; then
3433     AC_DEFINE(HAVE_RES_NINIT)
3434 dnl must add the link line we do something as foolish as this... dougt
3435 dnl else
3436 dnl    AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3437 dnl        AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3440 AC_LANG_CPLUSPLUS
3441 AC_CACHE_CHECK(
3442     [for gnu_get_libc_version()],
3443     ac_cv_func_gnu_get_libc_version,
3444     [AC_TRY_LINK([
3445         #ifdef HAVE_GNU_LIBC_VERSION_H
3446         #include <gnu/libc-version.h>
3447         #endif
3448         ],
3449         [const char *glibc_version = gnu_get_libc_version();],
3450         [ac_cv_func_gnu_get_libc_version=yes],
3451         [ac_cv_func_gnu_get_libc_version=no] 
3452         )]
3453     )
3455 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3456     AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3459 case $target_os in
3460     os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|beos*)
3461         ;;
3462     *)
3463     
3464 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3465     AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3466         AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3467 _SAVE_LIBS=$LIBS
3468 LIBS="$LIBS $_ICONV_LIBS"
3469 AC_CACHE_CHECK(
3470     [for iconv()],
3471     ac_cv_func_iconv,
3472     [AC_TRY_LINK([
3473         #include <stdlib.h>
3474         #include <iconv.h>
3475         ],
3476         [
3477             iconv_t h = iconv_open("", "");
3478             iconv(h, NULL, NULL, NULL, NULL);
3479             iconv_close(h);
3480         ],
3481         [ac_cv_func_iconv=yes],
3482         [ac_cv_func_iconv=no] 
3483         )]
3484     )
3485 if test "$ac_cv_func_iconv" = "yes"; then
3486     AC_DEFINE(HAVE_ICONV)
3487     DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3488     LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3489     LIBICONV="$_ICONV_LIBS"
3490     AC_CACHE_CHECK(
3491         [for iconv() with const input],
3492         ac_cv_func_const_iconv,
3493         [AC_TRY_COMPILE([
3494             #include <stdlib.h>
3495             #include <iconv.h>
3496             ],
3497             [
3498                 const char *input = "testing";
3499                 iconv_t h = iconv_open("", "");
3500                 iconv(h, &input, NULL, NULL, NULL);
3501                 iconv_close(h);
3502             ],
3503             [ac_cv_func_const_iconv=yes],
3504             [ac_cv_func_const_iconv=no] 
3505             )]
3506         )
3507     if test "$ac_cv_func_const_iconv" = "yes"; then
3508         AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3509     fi
3511 LIBS=$_SAVE_LIBS
3513     ;;
3514 esac
3516 AM_LANGINFO_CODESET
3518 AC_LANG_C
3520 dnl **********************
3521 dnl *** va_copy checks ***
3522 dnl **********************
3523 dnl we currently check for all three va_copy possibilities, so we get
3524 dnl all results in config.log for bug reports.
3525 AC_MSG_CHECKING(for an implementation of va_copy())
3526 AC_CACHE_VAL(ac_cv_va_copy,[
3527     AC_TRY_RUN([
3528         #include <stdarg.h>
3529         void f (int i, ...) {
3530             va_list args1, args2;
3531             va_start (args1, i);
3532             va_copy (args2, args1);
3533             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3534                 exit (1);
3535             va_end (args1); va_end (args2);
3536         }
3537         int main() { f (0, 42); return 0; }],
3538         ac_cv_va_copy=yes,
3539         ac_cv_va_copy=no,
3540         ac_cv_va_copy=no
3541     )
3543 AC_MSG_RESULT($ac_cv_va_copy)
3544 AC_MSG_CHECKING(for an implementation of __va_copy())
3545 AC_CACHE_VAL(ac_cv___va_copy,[
3546     AC_TRY_RUN([
3547         #include <stdarg.h>
3548         void f (int i, ...) {
3549             va_list args1, args2;
3550             va_start (args1, i);
3551             __va_copy (args2, args1);
3552             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3553                 exit (1);
3554             va_end (args1); va_end (args2);
3555         }
3556         int main() { f (0, 42); return 0; }],
3557         ac_cv___va_copy=yes,
3558         ac_cv___va_copy=no,
3559         ac_cv___va_copy=no
3560     )
3562 AC_MSG_RESULT($ac_cv___va_copy)
3563 AC_MSG_CHECKING(whether va_lists can be copied by value)
3564 AC_CACHE_VAL(ac_cv_va_val_copy,[
3565     AC_TRY_RUN([
3566         #include <stdarg.h>
3567         void f (int i, ...) {
3568             va_list args1, args2;
3569             va_start (args1, i);
3570             args2 = args1;
3571             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3572                 exit (1);
3573             va_end (args1); va_end (args2);
3574         }
3575         int main() { f (0, 42); return 0; }],
3576         ac_cv_va_val_copy=yes,
3577         ac_cv_va_val_copy=no,
3578         ac_cv_va_val_copy=yes
3579     )
3581 if test "x$ac_cv_va_copy" = "xyes"; then
3582     AC_DEFINE(VA_COPY, va_copy)
3583     AC_DEFINE(HAVE_VA_COPY)
3584 elif test "x$ac_cv___va_copy" = "xyes"; then
3585     AC_DEFINE(VA_COPY, __va_copy)
3586     AC_DEFINE(HAVE_VA_COPY)
3589 if test "x$ac_cv_va_val_copy" = "xno"; then
3590    AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3592 AC_MSG_RESULT($ac_cv_va_val_copy)
3594 dnl Check for dll-challenged libc's.
3595 dnl This check is apparently only needed for Linux.
3596 case "$target" in
3597         *-linux*)
3598             dnl ===================================================================
3599             _curdir=`pwd`
3600             export _curdir
3601             rm -rf conftest* _conftest
3602             mkdir _conftest
3603             cat >> conftest.C <<\EOF
3604 #include <stdio.h>
3605 #include <link.h>
3606 #include <dlfcn.h>
3607 #ifdef _dl_loaded
3608 void __dump_link_map(void) {
3609   struct link_map *map = _dl_loaded;
3610   while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
3612 int main() {
3613   dlopen("./conftest1.so",RTLD_LAZY);
3614   dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
3615   dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
3616   dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
3617   __dump_link_map();
3619 #else
3620 /* _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).*/
3621 int main() { printf("./conftest1.so\n"); }
3622 #endif
3625             $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
3627             cat >> conftest1.C <<\EOF
3628 #include <stdio.h>
3629 void foo(void) {printf("foo in dll called\n");}
3631             ${CXX-g++} -fPIC -c -g conftest1.C
3632             ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
3633             ${CXX-g++} -g conftest.C -o conftest -ldl
3634             cp -f conftest1.so conftest _conftest
3635             cd _conftest
3636             if test `./conftest | grep conftest1.so | wc -l` -gt 1
3637             then
3638                 echo
3639                 echo "*** Your libc has a bug that can result in loading the same dynamic"
3640                 echo "*** library multiple times.  This bug is known to be fixed in glibc-2.0.7-32"
3641                 echo "*** or later.  However, if you choose not to upgrade, the only effect"
3642                 echo "*** will be excessive memory usage at runtime."
3643                 echo
3644             fi
3645             cd ${_curdir}
3646             rm -rf conftest* _conftest
3647             dnl ===================================================================
3648             ;;
3649 esac
3651 dnl ===================================================================
3652 dnl ========================================================
3653 dnl By default, turn rtti and exceptions off on g++/egcs
3654 dnl ========================================================
3655 if test "$GNU_CXX"; then
3657   AC_MSG_CHECKING(for C++ exceptions flag)
3659   dnl They changed -f[no-]handle-exceptions to -f[no-]exceptions in g++ 2.8
3660   AC_CACHE_VAL(ac_cv_cxx_exceptions_flags,
3661   [echo "int main() { return 0; }" | cat > conftest.C
3663   ${CXX-g++} ${CXXFLAGS} -c -fno-handle-exceptions conftest.C > conftest.out 2>&1
3665   if egrep "warning.*renamed" conftest.out >/dev/null; then
3666     ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-exceptions
3667   else
3668     ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-handle-exceptions
3669   fi
3671   rm -f conftest*])
3673   AC_MSG_RESULT($ac_cv_cxx_exceptions_flags)
3674   _MOZ_EXCEPTIONS_FLAGS_OFF=$ac_cv_cxx_exceptions_flags
3675   _MOZ_EXCEPTIONS_FLAGS_ON=`echo $ac_cv_cxx_exceptions_flags | sed 's|no-||'`
3678 dnl ========================================================
3679 dnl Put your C++ language/feature checks below
3680 dnl ========================================================
3681 AC_LANG_CPLUSPLUS
3683 HAVE_GCC3_ABI=
3684 if test "$GNU_CC"; then
3685   AC_CACHE_CHECK(for gcc 3.0 ABI,
3686       ac_cv_gcc_three_abi,
3687       [AC_TRY_COMPILE([],
3688                       [
3689 #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
3690   return 0;
3691 #else
3692 #error Not gcc3.
3693 #endif
3694                       ],
3695                       ac_cv_gcc_three_abi="yes",
3696                       ac_cv_gcc_three_abi="no")])
3697   if test "$ac_cv_gcc_three_abi" = "yes"; then
3698       TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc3}"
3699       HAVE_GCC3_ABI=1
3700   else
3701       TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc2}"
3702   fi
3704 AC_SUBST(HAVE_GCC3_ABI)
3707 AC_CACHE_CHECK(for C++ \"explicit\" keyword,
3708                ac_cv_cpp_explicit,
3709                [AC_TRY_COMPILE(class X {
3710                                public: explicit X(int i) : i_(i) {}
3711                                private: int i_;
3712                                };,
3713                                X x(3);,
3714                                ac_cv_cpp_explicit=yes,
3715                                ac_cv_cpp_explicit=no)])
3716 if test "$ac_cv_cpp_explicit" = yes ; then
3717    AC_DEFINE(HAVE_CPP_EXPLICIT)
3720 AC_CACHE_CHECK(for C++ \"typename\" keyword,
3721                ac_cv_cpp_typename,
3722                [AC_TRY_COMPILE(class param {
3723                                public:
3724                                    typedef unsigned long num_type;
3725                                };
3727                                template <class T> class tplt {
3728                                public:
3729                                    typedef typename T::num_type t_num_type;
3730                                    t_num_type foo(typename T::num_type num) {
3731                                        return num;
3732                                    }
3733                                };,
3734                                tplt<param> A;
3735                                A.foo(0);,
3736                                ac_cv_cpp_typename=yes,
3737                                ac_cv_cpp_typename=no)])
3738 if test "$ac_cv_cpp_typename" = yes ; then
3739    AC_DEFINE(HAVE_CPP_TYPENAME)
3742 dnl Check for support of modern template specialization syntax
3743 dnl Test code and requirement from scc@netscape.com.
3744 dnl Autoconf cut-and-paste job by waterson@netscape.com
3745 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
3746                ac_cv_cpp_modern_specialize_template_syntax,
3747                [AC_TRY_COMPILE(template <class T> struct X { int a; };
3748                                class Y {};
3749                                template <> struct X<Y> { double a; };,
3750                                X<int> int_x;
3751                                X<Y> y_x;,
3752                                ac_cv_cpp_modern_specialize_template_syntax=yes,
3753                                ac_cv_cpp_modern_specialize_template_syntax=no)])
3754 if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
3755   AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
3759 dnl Some compilers support only full specialization, and some don't.
3760 AC_CACHE_CHECK(whether partial template specialization works,
3761                ac_cv_cpp_partial_specialization,
3762                [AC_TRY_COMPILE(template <class T> class Foo {};
3763                                template <class T> class Foo<T*> {};,
3764                                return 0;,
3765                                ac_cv_cpp_partial_specialization=yes,
3766                                ac_cv_cpp_partial_specialization=no)])
3767 if test "$ac_cv_cpp_partial_specialization" = yes ; then
3768   AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
3771 dnl Some compilers have limited support for operators with templates;
3772 dnl specifically, it is necessary to define derived operators when a base
3773 dnl class's operator declaration should suffice.
3774 AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
3775                ac_cv_need_derived_template_operators,
3776                [AC_TRY_COMPILE([template <class T> class Base { };
3777                                 template <class T>
3778                                 Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
3779                                 template <class T> class Derived : public Base<T> { };],
3780                                [Derived<char> a, b;
3781                                 Base<char> c = a + b;
3782                                 return 0;],
3783                                ac_cv_need_derived_template_operators=no,
3784                                ac_cv_need_derived_template_operators=yes)])
3785 if test "$ac_cv_need_derived_template_operators" = yes ; then
3786   AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
3790 dnl Some compilers have trouble detecting that a template class
3791 dnl that derives from another template is actually an instance
3792 dnl of the base class. This test checks for that.
3793 AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
3794                ac_cv_need_cpp_template_cast_to_base,
3795                [AC_TRY_COMPILE([template <class T> class Base { };
3796                                 template <class T> class Derived : public Base<T> { };
3797                                 template <class T> int foo(const Base<T>&) { return 0; }],
3798                                [Derived<char> bar; return foo(bar);],
3799                                ac_cv_need_cpp_template_cast_to_base=no,
3800                                ac_cv_need_cpp_template_cast_to_base=yes)])
3801 if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
3802   AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
3805 dnl Some compilers have trouble resolving the ambiguity between two
3806 dnl functions whose arguments differ only by cv-qualifications.
3807 AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
3808                ac_cv_can_resolve_const_ambiguity,
3809                [AC_TRY_COMPILE([
3810                                 template <class T> class ptrClass {
3811                                   public: T* ptr;
3812                                 };
3814                                 template <class T> T* a(ptrClass<T> *arg) {
3815                                   return arg->ptr;
3816                                 }
3818                                 template <class T>
3819                                 const T* a(const ptrClass<T> *arg) {
3820                                   return arg->ptr;
3821                                 }
3822                                ],
3823                                [ ptrClass<int> i;
3824                                  a(&i); ],
3825                                ac_cv_can_resolve_const_ambiguity=yes,
3826                                ac_cv_can_resolve_const_ambiguity=no)])
3827 if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
3828   AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
3832 dnl We don't do exceptions on unix.  The only reason this used to be here
3833 dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses 
3834 dnl exceptions.  But, we turn exceptions off by default and this test breaks.
3835 dnl So im commenting this out until someone writes some artificial 
3836 dnl intelligence to detect not only if the compiler has exceptions, but if 
3837 dnl they are enabled as well.
3838 dnl 
3839 dnl AC_CACHE_CHECK(for C++ \"exceptions\",
3840 dnl                ac_cv_cpp_exceptions,
3841 dnl                [AC_TRY_COMPILE(class X { public: X() {} };
3842 dnl                                static void F() { throw X(); },
3843 dnl                                try { F(); } catch(X & e) { },
3844 dnl                                ac_cv_cpp_exceptions=yes,
3845 dnl                                ac_cv_cpp_exceptions=no)])
3846 dnl if test $ac_cv_cpp_exceptions = yes ; then
3847 dnl    AC_DEFINE(HAVE_CPP_EXCEPTIONS)
3848 dnl fi
3850 dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
3851 dnl supports it well enough to allow us to use it to change access, but not
3852 dnl to resolve ambiguity. The next two tests determine how well the |using|
3853 dnl keyword is supported.
3855 dnl Check to see if we can change access with |using|.  Test both a
3856 dnl legal and an illegal example.
3857 AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
3858                ac_cv_cpp_access_changing_using2,
3859                [AC_TRY_COMPILE(
3860                    class A { protected: int foo() { return 0; } };
3861                    class B : public A { public: using A::foo; };,
3862                    B b; return b.foo();,
3863                    [AC_TRY_COMPILE(
3864                        class A { public: int foo() { return 1; } };
3865                        class B : public A { private: using A::foo; };,
3866                        B b; return b.foo();,
3867                        ac_cv_cpp_access_changing_using2=no,
3868                        ac_cv_cpp_access_changing_using2=yes)],
3869                    ac_cv_cpp_access_changing_using2=no)])
3870 if test "$ac_cv_cpp_access_changing_using2" = yes ; then
3871    AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
3874 dnl Check to see if we can resolve ambiguity with |using|.
3875 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3876                ac_cv_cpp_ambiguity_resolving_using,
3877                [AC_TRY_COMPILE(class X { 
3878                                  public: int go(const X&) {return 3;}
3879                                          int jo(const X&) {return 3;}
3880                                };
3881                                class Y : public X {
3882                                  public:  int go(int) {return 2;}
3883                                           int jo(int) {return 2;}
3884                                           using X::jo;
3885                                  private: using X::go;
3886                                };,
3887                                X x; Y y; y.jo(x);,
3888                                ac_cv_cpp_ambiguity_resolving_using=yes,
3889                                ac_cv_cpp_ambiguity_resolving_using=no)])
3890 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3891    AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3894 dnl Check to see if the |std| namespace is supported. If so, we'll want
3895 dnl to qualify any standard library calls with "std::" to ensure that
3896 dnl those functions can be resolved.
3897 AC_CACHE_CHECK(for \"std::\" namespace,
3898                ac_cv_cpp_namespace_std,
3899                [AC_TRY_COMPILE([#include <algorithm>],
3900                                [return std::min(0, 1);],
3901                                ac_cv_cpp_namespace_std=yes,
3902                                ac_cv_cpp_namespace_std=no)])
3903 if test "$ac_cv_cpp_namespace_std" = yes ; then
3904    AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
3907 dnl Older compilers are overly ambitious with respect to using the standard
3908 dnl template library's |operator!=()| when |operator==()| is defined. In
3909 dnl which case, defining |operator!=()| in addition to |operator==()| causes
3910 dnl ambiguity at compile-time. This test checks for that case.
3911 AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
3912                ac_cv_cpp_unambiguous_std_notequal,
3913                [AC_TRY_COMPILE([#include <algorithm>
3914                                 struct T1 {};
3915                                 int operator==(const T1&, const T1&) { return 0; }
3916                                 int operator!=(const T1&, const T1&) { return 0; }],
3917                                [T1 a,b; return a != b;],
3918                                ac_cv_cpp_unambiguous_std_notequal=unambiguous,
3919                                ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
3920 if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
3921   AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
3925 AC_CACHE_CHECK(for C++ reinterpret_cast,
3926                ac_cv_cpp_reinterpret_cast,
3927                [AC_TRY_COMPILE(struct X { int i; };
3928                                struct Y { int i; };,
3929                                X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
3930                                ac_cv_cpp_reinterpret_cast=yes,
3931                                ac_cv_cpp_reinterpret_cast=no)])
3932 if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
3933    AC_DEFINE(HAVE_CPP_NEW_CASTS)
3936 dnl See if a dynamic_cast to void* gives the most derived object.
3937 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
3938                ac_cv_cpp_dynamic_cast_void_ptr,
3939                [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
3940                             class Y { int j; public: virtual ~Y() { } };
3941                             class Z : public X, public Y { int k; };
3943                             int main() {
3944                                  Z mdo;
3945                                  X *subx = (X*)&mdo;
3946                                  Y *suby = (Y*)&mdo;
3947                                  return !((((void*)&mdo != (void*)subx) &&
3948                                            ((void*)&mdo == dynamic_cast<void*>(subx))) ||
3949                                           (((void*)&mdo != (void*)suby) &&
3950                                            ((void*)&mdo == dynamic_cast<void*>(suby))));
3951                             }],
3952                            ac_cv_cpp_dynamic_cast_void_ptr=yes,
3953                            ac_cv_cpp_dynamic_cast_void_ptr=no,
3954                            ac_cv_cpp_dynamic_cast_void_ptr=no)])
3955 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
3956    AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
3960 dnl note that this one is reversed - if the test fails, then
3961 dnl we require implementations of unused virtual methods. Which
3962 dnl really blows because it means we'll have useless vtable
3963 dnl bloat.
3964 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
3965                ac_cv_cpp_unused_required,
3966                [AC_TRY_LINK(class X {private: virtual void never_called();};,
3967                                X x;,
3968                                ac_cv_cpp_unused_required=no,
3969                                ac_cv_cpp_unused_required=yes)])
3970 if test "$ac_cv_cpp_unused_required" = yes ; then
3971    AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
3975 dnl Some compilers have trouble comparing a constant reference to a templatized
3976 dnl class to zero, and require an explicit operator==() to be defined that takes
3977 dnl an int. This test separates the strong from the weak.
3979 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
3980                ac_cv_trouble_comparing_to_zero,
3981                [AC_TRY_COMPILE([#include <algorithm>
3982                                 template <class T> class Foo {};
3983                                 class T2;
3984                                 template <class T> int operator==(const T2*, const T&) { return 0; }
3985                                 template <class T> int operator!=(const T2*, const T&) { return 0; }],
3986                                [Foo<int> f; return (0 != f);],
3987                                ac_cv_trouble_comparing_to_zero=no,
3988                                ac_cv_trouble_comparing_to_zero=yes)])
3989 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
3990   AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
3995 dnl End of C++ language/feature checks
3996 AC_LANG_C
3998 dnl ========================================================
3999 dnl =  Internationalization checks
4000 dnl ========================================================
4002 dnl Internationalization and Locale support is different
4003 dnl on various UNIX platforms.  Checks for specific i18n
4004 dnl features go here.
4006 dnl check for LC_MESSAGES
4007 AC_CACHE_CHECK(for LC_MESSAGES,
4008                 ac_cv_i18n_lc_messages,
4009                 [AC_TRY_COMPILE([#include <locale.h>],
4010                                 [int category = LC_MESSAGES;],
4011                                 ac_cv_i18n_lc_messages=yes,
4012                                 ac_cv_i18n_lc_messages=no)])
4013 if test "$ac_cv_i18n_lc_messages" = yes; then
4014    AC_DEFINE(HAVE_I18N_LC_MESSAGES)
4015 fi      
4017 fi # SKIP_COMPILER_CHECKS
4019 TARGET_XPCOM_ABI=
4020 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
4021     TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
4024 dnl Mozilla specific options
4025 dnl ========================================================
4026 dnl The macros used for command line options
4027 dnl are defined in build/autoconf/altoptions.m4.
4030 dnl ========================================================
4031 dnl =
4032 dnl = Check for external package dependencies
4033 dnl =
4034 dnl ========================================================
4035 MOZ_ARG_HEADER(External Packages)
4037 MOZ_ENABLE_LIBXUL=
4039 MOZ_ARG_WITH_STRING(libxul-sdk,
4040 [  --with-libxul-sdk=PFX   Use the libXUL SDK at <PFX>],
4041   LIBXUL_SDK_DIR=$withval)
4043 if test "$LIBXUL_SDK_DIR" = "yes"; then
4044     AC_MSG_ERROR([--with-libxul-sdk must specify a path])
4045 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
4046     LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
4048     if test ! -f "$LIBXUL_SDK/sdk/include/xpcom-config.h"; then
4049         AC_MSG_ERROR([$LIBXUL_SDK/sdk/include/xpcom-config.h doesn't exist])
4050     fi
4052     MOZ_ENABLE_LIBXUL=1
4054 AC_SUBST(LIBXUL_SDK)
4056 if test -n "$LIBXUL_SDK"; then
4057     LIBXUL_DIST="$LIBXUL_SDK"
4058 else
4059     LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
4061 AC_SUBST(LIBXUL_DIST)
4063 dnl ========================================================
4064 dnl = If NSPR was not detected in the system, 
4065 dnl = use the one in the source tree (mozilla/nsprpub)
4066 dnl ========================================================
4067 MOZ_ARG_WITH_BOOL(system-nspr,
4068 [  --with-system-nspr      Use system installed NSPR],
4069     _USE_SYSTEM_NSPR=1 )
4071 if test -n "$_USE_SYSTEM_NSPR"; then
4072     AM_PATH_NSPR(4.7.0, [MOZ_NATIVE_NSPR=1], [MOZ_NATIVE_NSPR=])
4075 if test -n "$MOZ_NATIVE_NSPR"; then
4076     _SAVE_CFLAGS=$CFLAGS
4077     CFLAGS="$CFLAGS $NSPR_CFLAGS"
4078     AC_TRY_COMPILE([#include "prlog.h"],
4079                 [#ifndef PR_STATIC_ASSERT
4080                  #error PR_STATIC_ASSERT not defined
4081                  #endif],
4082                 [MOZ_NATIVE_NSPR=1],
4083                 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT]))
4084     CFLAGS=$_SAVE_CFLAGS
4085 else
4086     NSPR_CFLAGS='`$(DEPTH)/nsprpub/config/nspr-config --prefix='${LIBXUL_DIST}' --includedir='${LIBXUL_DIST}'/include/nspr --cflags`'
4087     # explicitly set libs for Visual Age C++ for OS/2
4088     if test "$OS_ARCH" = "OS2" -a "$VACPP" = "yes"; then
4089         NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib ${_PTHREAD_LDFLAGS}"
4090     elif test "$OS_ARCH" = "WINCE"; then
4091         NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4092         NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4093     elif test "$OS_ARCH" = "WINNT"; then
4094         NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4095         if test -n "$GNU_CC"; then
4096             NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
4097         else
4098             NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4099         fi
4100     else
4101         NSPR_LIBS='`$(DEPTH)/nsprpub/config/nspr-config --prefix='${LIBXUL_DIST}' --libdir='${LIBXUL_DIST}'/lib --libs`'
4102     fi
4105 dnl ========================================================
4106 dnl = If NSS was not detected in the system, 
4107 dnl = use the one in the source tree (mozilla/security/nss)
4108 dnl ========================================================
4110 MOZ_ARG_WITH_BOOL(system-nss,
4111 [  --with-system-nss      Use system installed NSS],
4112     _USE_SYSTEM_NSS=1 )
4114 if test -n "$_USE_SYSTEM_NSS"; then
4115     AM_PATH_NSS(3.12.0, [MOZ_NATIVE_NSS=1], [MOZ_NATIVE_NSS=])
4118 if test -n "$MOZ_NATIVE_NSS"; then
4119    NSS_LIBS="$NSS_LIBS -lcrmf"
4120 else
4121    NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4122    NSS_DEP_LIBS="\
4123         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4124         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4125         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4126         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4127         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX) \
4128         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)softokn$NSS_VERSION\$(DLL_SUFFIX)"
4130    if test -z "$GNU_CC" && test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "WINCE" -o "$OS_ARCH" = "OS2"; then
4131        NSS_LIBS="\
4132         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4133         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4134         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4135         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4136         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4137         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)softokn$NSS_VERSION.\$(IMPORT_LIB_SUFFIX)"
4138    else
4139        NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION -lsoftokn$NSS_VERSION"
4140    fi
4143 if test -z "$SKIP_LIBRARY_CHECKS"; then
4144 dnl system JPEG support
4145 dnl ========================================================
4146 MOZ_ARG_WITH_STRING(system-jpeg,
4147 [  --with-system-jpeg[=PFX]
4148                           Use system libjpeg [installed at prefix PFX]],
4149     JPEG_DIR=$withval)
4151 _SAVE_CFLAGS=$CFLAGS
4152 _SAVE_LDFLAGS=$LDFLAGS
4153 _SAVE_LIBS=$LIBS
4154 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4155     CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4156     LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4158 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4159     SYSTEM_JPEG=
4160 else
4161     AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS)
4164 if test "$SYSTEM_JPEG" = 1; then
4165     LIBS="$JPEG_LIBS $LIBS"
4166     AC_TRY_COMPILE([ #include <stdio.h>
4167                      #include <sys/types.h>
4168                      #include <jpeglib.h> ],
4169                    [ #if JPEG_LIB_VERSION < $MOZJPEG
4170                      #error "Insufficient JPEG library version ($MOZJPEG required)."
4171                      #endif ],
4172                    SYSTEM_JPEG=1,
4173                    [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=]) 
4174 fi 
4175 CFLAGS=$_SAVE_CFLAGS
4176 LDFLAGS=$_SAVE_LDFLAGS
4177 LIBS=$_SAVE_LIBS
4179 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$SYSTEM_JPEG" = 1; then
4180     JPEG_CFLAGS="-I${JPEG_DIR}/include"
4181     JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
4184 dnl system ZLIB support
4185 dnl ========================================================
4186 MOZ_ARG_WITH_STRING(system-zlib,
4187 [  --with-system-zlib[=PFX]
4188                           Use system libz [installed at prefix PFX]],
4189     ZLIB_DIR=$withval)
4191 _SAVE_CFLAGS=$CFLAGS
4192 _SAVE_LDFLAGS=$LDFLAGS
4193 _SAVE_LIBS=$LIBS
4194 if test -n "${ZLIB_DIR}" -a "${ZLIB_DIR}" != "yes"; then
4195     CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
4196     LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
4198 if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
4199     SYSTEM_ZLIB=
4200 else
4201     AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"], 
4202         [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
4204 if test "$SYSTEM_ZLIB" = 1; then
4205     LIBS="$ZLIB_LIBS $LIBS"
4206     AC_TRY_COMPILE([ #include <stdio.h>
4207                      #include <string.h>
4208                      #include <zlib.h> ],
4209                    [ #if ZLIB_VERNUM < $MOZZLIB 
4210                      #error "Insufficient zlib version ($MOZZLIB required)."
4211                      #endif ],
4212                    SYSTEM_ZLIB=1,
4213                    [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=]) 
4215 CFLAGS=$_SAVE_CFLAGS
4216 LDFLAGS=$_SAVE_LDFLAGS
4217 LIBS=$_SAVE_LIBS
4219 if test "${ZLIB_DIR}" -a -d "${ZLIB_DIR}" -a "$SYSTEM_ZLIB" = 1; then
4220     ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
4221     ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
4224 dnl system BZIP2 Support
4225 dnl ========================================================
4226 MOZ_ARG_WITH_STRING(system-bz2,
4227 [  --with-system-bz2[=PFX]
4228                           Use system libbz2 [installed at prefix PFX]],
4229     BZ2_DIR=$withval)
4231 _SAVE_CFLAGS=$CFLAGS
4232 _SAVE_LDFLAGS=$LDFLAGS
4233 _SAVE_LIBS=$LIBS
4234 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4235     CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4236     LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4238 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4239     SYSTEM_BZ2=
4240 else
4241     AC_CHECK_LIB(bz2, BZ2_bzread, [SYSTEM_BZ2=1 BZ2_LIBS="-lbz2"],
4242         [SYSTEM_BZ2= BZ2_CFLAGS= BZ2_LIBS=], $BZ2_LIBS)
4244 CFLAGS=$_SAVE_CFLAGS
4245 LDFLAGS=$_SAVE_LDFLAGS
4246 LIBS=$_SAVE_LIBS
4248 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$SYSTEM_BZ2" = 1; then
4249     BZ2_CFLAGS="-I${BZ2_DIR}/include"
4250     BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
4253 dnl system PNG Support
4254 dnl ========================================================
4255 MOZ_ARG_WITH_STRING(system-png, 
4256 [  --with-system-png[=PFX]
4257                           Use system libpng [installed at prefix PFX]],
4258     PNG_DIR=$withval)
4260 _SAVE_CFLAGS=$CFLAGS
4261 _SAVE_LDFLAGS=$LDFLAGS
4262 _SAVE_LIBS=$LIBS
4263 CFLAGS="$ZLIB_CFLAGS $CFLAGS"
4264 LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
4265 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4266     CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4267     LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4269 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4270     SYSTEM_PNG=
4271 else
4272     _SAVE_PNG_LIBS=$PNG_LIBS
4273     AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"],
4274                  AC_MSG_ERROR([--with-system-png requested but no working libpng found]), 
4275                  $PNG_LIBS)
4276     AC_CHECK_LIB(png, png_get_acTL, ,
4277                  AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]),
4278                  $_SAVE_PNG_LIBS)
4280 if test "$SYSTEM_PNG" = 1; then
4281     LIBS="$PNG_LIBS $LIBS"
4282     AC_TRY_COMPILE([ #include <stdio.h>
4283                      #include <sys/types.h>
4284                      #include <png.h> ],
4285                    [ #if PNG_LIBPNG_VER < $MOZPNG
4286                      #error "Insufficient libpng version ($MOZPNG required)."
4287                      #endif
4288                      #ifndef PNG_UINT_31_MAX
4289                      #error "Insufficient libpng version."
4290                      #endif ],
4291                    SYSTEM_PNG=1,
4292                    AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4294 CFLAGS=$_SAVE_CFLAGS
4295 LDFLAGS=$_SAVE_LDFLAGS
4296 LIBS=$_SAVE_LIBS
4298 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
4299     PNG_CFLAGS="-I${PNG_DIR}/include"
4300     PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
4303 fi # SKIP_LIBRARY_CHECKS
4305 dnl system HunSpell Support
4306 dnl ========================================================
4307 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4308 [  --enable-system-hunspell  Use system hunspell (located with pkgconfig)],
4309     SYSTEM_HUNSPELL=1 )
4311 if test -n "$SYSTEM_HUNSPELL"; then
4312     PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4315 AC_SUBST(SYSTEM_HUNSPELL)
4317 dnl check whether to enable glitz
4318 dnl ========================================================
4319 MOZ_ARG_ENABLE_BOOL(glitz,
4320 [  --enable-glitz          Enable Glitz for use with Cairo],
4321     MOZ_ENABLE_GLITZ=1,
4322     MOZ_ENABLE_GLITZ= )
4323 if test "$MOZ_ENABLE_GLITZ"; then
4324     AC_DEFINE(MOZ_ENABLE_GLITZ)
4327 dnl ========================================================
4328 dnl Java SDK support
4329 dnl ========================================================
4330 JAVA_INCLUDE_PATH=
4331 MOZ_ARG_WITH_STRING(java-include-path,
4332 [  --with-java-include-path=dir   Location of Java SDK headers],
4333     JAVA_INCLUDE_PATH=$withval)
4335 JAVA_BIN_PATH=
4336 MOZ_ARG_WITH_STRING(java-bin-path,
4337 [  --with-java-bin-path=dir   Location of Java binaries (java, javac, jar)],
4338     JAVA_BIN_PATH=$withval)
4340 dnl ========================================================
4341 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4342 dnl their usage and use them in spidermonkey.
4343 dnl ========================================================
4344 MOZ_ARG_WITH_BOOL(arm-kuser,
4345 [  --with-arm-kuser         Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4346     USE_ARM_KUSER=1,
4347     USE_ARM_KUSER=)
4348 if test -n "$USE_ARM_KUSER"; then
4349    AC_DEFINE(USE_ARM_KUSER)
4352 dnl ========================================================
4353 dnl =
4354 dnl = Application
4355 dnl =
4356 dnl ========================================================
4358 MOZ_ARG_HEADER(Application)
4360 BUILD_STATIC_LIBS=
4361 ENABLE_TESTS=1
4362 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4363 MOZ_BRANDING_DIRECTORY=
4364 MOZ_DBGRINFO_MODULES=
4365 MOZ_ENABLE_CANVAS=1
4366 MOZ_EXTENSIONS_ALL=" wallet p3p venkman inspector irc typeaheadfind gnomevfs sroaming datetime finger cview layout-debug tasks sql xforms schema-validation reporter"
4367 MOZ_FEEDS=1
4368 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg bmp xbm icon"
4369 MOZ_IMG_ENCODERS_DEFAULT="png jpeg"
4370 MOZ_IPCD=
4371 MOZ_JAVAXPCOM=
4372 MOZ_JSDEBUGGER=1
4373 MOZ_JSLOADER=1
4374 MOZ_LIBART_CFLAGS=
4375 MOZ_LIBART_LIBS=
4376 MOZ_MATHML=1
4377 MOZ_MORK=1
4378 MOZ_MORKREADER=
4379 MOZ_AUTH_EXTENSION=1
4380 MOZ_NO_ACTIVEX_SUPPORT=1
4381 MOZ_NO_INSPECTOR_APIS=
4382 MOZ_NO_XPCOM_OBSOLETE=
4383 MOZ_NO_FAST_LOAD=
4384 MOZ_OGG=1
4385 MOZ_MEDIA=
4386 MOZ_OJI=1
4387 MOZ_PERMISSIONS=1
4388 MOZ_PLACES=
4389 MOZ_PLAINTEXT_EDITOR_ONLY=
4390 MOZ_PLUGINS=1
4391 MOZ_PREF_EXTENSIONS=1
4392 MOZ_PROFILELOCKING=1
4393 MOZ_PROFILESHARING=1
4394 MOZ_PSM=1
4395 MOZ_PYTHON_EXTENSIONS="xpcom dom"
4396 MOZ_PYTHON=
4397 MOZ_PYTHON_DEBUG_SUFFIX=
4398 MOZ_PYTHON_DLL_SUFFIX=
4399 MOZ_PYTHON_INCLUDES=
4400 MOZ_PYTHON_LIBS=
4401 MOZ_PYTHON_PREFIX=
4402 MOZ_PYTHON_VER=
4403 MOZ_PYTHON_VER_DOTTED=
4404 MOZ_RDF=1
4405 MOZ_REFLOW_PERF=
4406 MOZ_SAFE_BROWSING=
4407 MOZ_HELP_VIEWER=
4408 MOZ_SPELLCHECK=1
4409 MOZ_STATIC_MAIL_BUILD=
4410 MOZ_STORAGE=1
4411 MOZ_SVG=1
4412 MOZ_TIMELINE=
4413 MOZ_UI_LOCALE=en-US
4414 MOZ_UNIVERSALCHARDET=1
4415 MOZ_URL_CLASSIFIER=
4416 MOZ_USE_NATIVE_UCONV=
4417 MOZ_VIEW_SOURCE=1
4418 MOZ_XPFE_COMPONENTS=1
4419 MOZ_XPINSTALL=1
4420 MOZ_XSLT_STANDALONE=
4421 MOZ_XTF=1
4422 MOZ_XUL=1
4423 MOZ_XUL_APP=1
4424 MOZ_ZIPWRITER=1
4425 NS_PRINTING=1
4426 NECKO_COOKIES=1
4427 NECKO_DISK_CACHE=1
4428 NECKO_PROTOCOLS_DEFAULT="about data file ftp gopher http res viewsource"
4429 NECKO_SMALL_BUFFERS=
4430 JS_STATIC_BUILD=
4431 XPC_IDISPATCH_SUPPORT=
4434 case "$target_os" in
4435 darwin*)
4436     ACCESSIBILITY=
4437     ;;
4439     ACCESSIBILITY=1
4440     ;;
4441 esac
4443 case "$target_os" in
4444     msvc*|mks*|cygwin*|mingw*)
4445         if test -z "$GNU_CC"; then 
4446             XPC_IDISPATCH_SUPPORT=1
4447             MOZ_NO_ACTIVEX_SUPPORT=
4448             MOZ_ACTIVEX_SCRIPTING_SUPPORT=1
4449         fi
4450         ;;
4451 esac
4453 MOZ_ARG_ENABLE_STRING(application,
4454 [  --enable-application=APP
4455                           Options include:
4456                             browser (Firefox)
4457                             xulrunner
4458                             content/xslt (Standalone Transformiix XSLT)
4459                             netwerk (Standalone Necko)
4460                             tools/update-packaging (AUS-related packaging tools)
4461                             standalone (use this for standalone
4462                               xpcom/xpconnect or to manually drive a build)],
4463 [ MOZ_BUILD_APP=$enableval ] )
4465 MOZ_EMBEDDING_PROFILE=default
4466 MOZ_ARG_WITH_STRING(embedding-profile,
4467 [  --with-embedding-profile=default|basic|minimal
4468                        see http://wiki.mozilla.org/Gecko:Small_Device_Support],
4469 [ MOZ_EMBEDDING_PROFILE=$withval ])
4471 case "$MOZ_EMBEDDING_PROFILE" in
4472 default)
4473   MOZ_EMBEDDING_LEVEL_DEFAULT=1
4474   MOZ_EMBEDDING_LEVEL_BASIC=1
4475   MOZ_EMBEDDING_LEVEL_MINIMAL=1
4476   AC_DEFINE(MOZ_EMBEDDING_LEVEL_DEFAULT)
4477   AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4478   AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4479   ;;
4481 basic)
4482   MOZ_EMBEDDING_LEVEL_DEFAULT=
4483   MOZ_EMBEDDING_LEVEL_BASIC=1
4484   MOZ_EMBEDDING_LEVEL_MINIMAL=1
4485   AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4486   AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4487   ENABLE_TESTS=
4488   MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4489   MOZ_ENABLE_CANVAS=
4490   MOZ_ENABLE_POSTSCRIPT=
4491   MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4492   MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4493   MOZ_IMG_ENCODERS_DEFAULT=
4494   MOZ_IMG_ENCODERS=
4495   MOZ_INSTALLER=
4496   MOZ_JSDEBUGGER=
4497   MOZ_MATHML=
4498   MOZ_AUTH_EXTENSION=
4499   MOZ_NO_ACTIVEX_SUPPORT=1
4500   MOZ_NO_INSPECTOR_APIS=1
4501   MOZ_NO_XPCOM_OBSOLETE=1
4502   MOZ_NO_FAST_LOAD=1
4503   MOZ_OJI=
4504   MOZ_PLAINTEXT_EDITOR_ONLY=1
4505 #  MOZ_PLUGINS=
4506   MOZ_PREF_EXTENSIONS=
4507   MOZ_PROFILELOCKING=
4508   MOZ_PROFILESHARING=
4509   MOZ_SPELLCHECK=
4510   MOZ_SVG=
4511   MOZ_UNIVERSALCHARDET=
4512   MOZ_UPDATER=
4513   MOZ_USE_NATIVE_UCONV=
4514   MOZ_VIEW_SOURCE=
4515   MOZ_XPFE_COMPONENTS=
4516   MOZ_XPINSTALL=
4517   MOZ_XTF=
4518   MOZ_ZIPWRITER=
4519   NECKO_DISK_CACHE=
4520   NECKO_PROTOCOLS_DEFAULT="about data http file res"
4521   NECKO_SMALL_BUFFERS=1
4522   NS_DISABLE_LOGGING=1
4523   NS_PRINTING=
4524   JS_STATIC_BUILD=1
4525   ;;
4527 minimal)
4528   MOZ_EMBEDDING_LEVEL_DEFAULT=
4529   MOZ_EMBEDDING_LEVEL_BASIC=
4530   MOZ_EMBEDDING_LEVEL_MINIMAL=1
4531   AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4532   ENABLE_TESTS=
4533   MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4534   MOZ_ENABLE_CANVAS=
4535   MOZ_ENABLE_POSTSCRIPT=
4536   MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4537   MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4538   MOZ_IMG_ENCODERS_DEFAULT=
4539   MOZ_IMG_ENCODERS=
4540   MOZ_INSTALLER=
4541   MOZ_JSDEBUGGER=
4542   MOZ_MATHML=
4543   MOZ_AUTH_EXTENSION=
4544   MOZ_NO_ACTIVEX_SUPPORT=1
4545   MOZ_NO_INSPECTOR_APIS=1
4546   MOZ_NO_XPCOM_OBSOLETE=1
4547   MOZ_NO_FAST_LOAD=1
4548   MOZ_OJI=
4549   MOZ_PLAINTEXT_EDITOR_ONLY=1
4550   MOZ_PLUGINS=
4551   MOZ_PREF_EXTENSIONS=
4552   MOZ_PROFILELOCKING=
4553   MOZ_PROFILESHARING=
4554   MOZ_SPELLCHECK=
4555   MOZ_STORAGE=1
4556   MOZ_PLACES=
4557   MOZ_SVG=
4558   MOZ_UNIVERSALCHARDET=
4559   MOZ_UPDATER=
4560   MOZ_USE_NATIVE_UCONV=1
4561   MOZ_VIEW_SOURCE=
4562   MOZ_XPFE_COMPONENTS=
4563   MOZ_XPINSTALL=
4564   MOZ_XTF=
4565   MOZ_XUL=
4566   MOZ_ZIPWRITER=
4567   MOZ_RDF=
4568   NECKO_DISK_CACHE=
4569   NECKO_PROTOCOLS_DEFAULT="about data http file res"
4570   NECKO_SMALL_BUFFERS=1
4571   NS_DISABLE_LOGGING=1
4572   NS_PRINTING=
4573   JS_STATIC_BUILD=1
4574   ;;
4577   AC_MSG_ERROR([Unrecognized value: --with-embedding-profile=$MOZ_EMBEDDING_PROFILE])
4578   ;;
4579 esac
4581 AC_SUBST(MOZ_EMBEDDING_LEVEL_DEFAULT)
4582 AC_SUBST(MOZ_EMBEDDING_LEVEL_BASIC)
4583 AC_SUBST(MOZ_EMBEDDING_LEVEL_MINIMAL)
4585 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
4586 [  --with-xulrunner-stub-name=appname   Create the xulrunner stub with the given name],
4587   XULRUNNER_STUB_NAME=$withval)
4589 if test -z "$XULRUNNER_STUB_NAME"; then
4590   case "$target_os" in
4591   darwin*)
4592     XULRUNNER_STUB_NAME=xulrunner
4593     ;;
4594   *)
4595     XULRUNNER_STUB_NAME=xulrunner-stub
4596   esac
4598 AC_SUBST(XULRUNNER_STUB_NAME)
4600 if test -z "$MOZ_BUILD_APP"; then
4601   AC_MSG_ERROR([--enable-application=APP was not specified and is required.])
4602 else
4603   # We have a valid application only if it has a build.mk file in its top
4604   # directory.
4605   if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
4606     AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4607   fi
4610 # Allow the application to influence configure with a confvars.sh script.
4612 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4613 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4614   AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4615   . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4616 else
4617   AC_MSG_RESULT([no])
4620 # Now is a good time to test for logic errors, define mismatches, etc.
4621 case "$MOZ_BUILD_APP" in
4622 xulrunner)
4623   if test "$LIBXUL_SDK"; then
4624     AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4625   fi
4626   ;;
4628   # Fix this case for folks who forget. Warn them.
4629   if test -n "$LIBXUL_SDK" -a -z "$MOZ_XUL_APP"; then
4630     AC_MSG_WARN([Setting MOZ_XUL_APP since LIBXUL_SDK was set. Add to confvars.sh!])
4631     MOZ_XUL_APP=1
4632   fi
4633   ;;
4634 esac
4636 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4637 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4638 # MOZ_BUILD_APP.
4639 case "$MOZ_BUILD_APP" in
4640 browser)
4641   AC_DEFINE(MOZ_PHOENIX)
4642   ;;
4644 xulrunner)
4645   AC_DEFINE(MOZ_XULRUNNER)
4646   ;;
4648 content/xslt)
4649   AC_DEFINE(TX_EXE)
4650   ;;
4652 standalone) 
4653   MOZ_APP_NAME=mozilla
4654   MOZ_APP_DISPLAYNAME=Mozilla
4655   MOZ_APP_VERSION=$MOZILLA_VERSION
4656   ;;
4658 esac
4660 if test -z "$MOZ_XUL_APP"; then
4661         AC_MSG_ERROR([builds with unsetting MOZ_XUL_APP in confvars.sh are not supported.])
4664 AC_SUBST(MOZ_BUILD_APP)
4665 AC_SUBST(MOZ_XUL_APP)
4666 AC_SUBST(MOZ_PHOENIX)
4667 AC_SUBST(MOZ_XULRUNNER)
4669 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4671 if test "$MOZ_XUL_APP"; then
4672   MOZ_PROFILESHARING=
4673   AC_DEFINE(MOZ_XUL_APP)
4676 dnl ========================================================
4677 dnl = 
4678 dnl = Toolkit Options
4679 dnl = 
4680 dnl ========================================================
4681 MOZ_ARG_HEADER(Toolkit Options)
4683     dnl ========================================================
4684     dnl = Select the default toolkit
4685     dnl ========================================================
4686         MOZ_ARG_ENABLE_STRING(default-toolkit,
4687         [  --enable-default-toolkit=TK
4688                           Select default toolkit
4689                           Platform specific defaults:
4690                             BeOS - cairo-beos
4691                             Mac OS X - cairo-cocoa
4692                             Neutrino/QNX - photon
4693                             OS/2 - cairo-os2
4694                             Win32 - cairo-windows
4695                             WinCE - windows
4696                             Gtk2 with DirectFB - cairo-gtk2-dfb
4697                             * - cairo-gtk2
4698                             * - cairo-qt],
4699     [ _DEFAULT_TOOLKIT=$enableval ],
4700     [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4702     if test "$_DEFAULT_TOOLKIT" = "photon" \
4703         -o "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4704         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4705         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-dfb" \
4706         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
4707         -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
4708         -o "$_DEFAULT_TOOLKIT" = "cairo-beos" \
4709         -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
4710         -o "$_DEFAULT_TOOLKIT" = "cairo-mac" \
4711         -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa"
4712     then
4713         dnl nglayout only supports building with one toolkit,
4714         dnl so ignore everything after the first comma (",").
4715         MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4716     else
4717         AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
4718     fi
4720 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_TOOLKIT,"$MOZ_WIDGET_TOOLKIT")
4722 dnl ========================================================
4723 dnl = Enable the toolkit as needed                         =
4724 dnl ========================================================
4726 case "$MOZ_WIDGET_TOOLKIT" in
4727 photon)
4728         MOZ_ENABLE_PHOTON=1
4729         AC_DEFINE(MOZ_WIDGET_PHOTON)
4730     ;;
4732 cairo-windows)
4733     MOZ_WIDGET_TOOLKIT=windows
4734     MOZ_GFX_TOOLKIT=cairo
4735     ;;
4737 cairo-gtk2|cairo-gtk2-x11)
4738     MOZ_WIDGET_TOOLKIT=gtk2
4739     MOZ_GFX_TOOLKIT=cairo
4740     MOZ_ENABLE_GTK2=1
4741     MOZ_ENABLE_XREMOTE=1
4743     AC_DEFINE(MOZ_X11)
4744     MOZ_X11=1
4746     TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4747     TK_LIBS='$(MOZ_GTK2_LIBS)'
4748     AC_DEFINE(MOZ_WIDGET_GTK2)
4749     ;;
4751 cairo-gtk2-dfb)
4752     MOZ_WIDGET_TOOLKIT=gtk2
4753     MOZ_GFX_TOOLKIT=cairo
4754     MOZ_ENABLE_GTK2=1
4756     AC_DEFINE(MOZ_DFB)
4757     MOZ_DFB=1
4759     TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4760     TK_LIBS='$(MOZ_GTK2_LIBS)'
4761     AC_DEFINE(MOZ_WIDGET_GTK2)
4762     if test "$no_x" != "yes"; then
4763         AC_MSG_WARN([Disabling X when DirectFB is specified.])
4764         no_x=yes
4765     fi
4766     ;;
4768 cairo-qt)
4769     MOZ_WIDGET_TOOLKIT=qt
4770     MOZ_GFX_TOOLKIT=cairo
4771     MOZ_ENABLE_QT=1
4772     MOZ_ENABLE_XREMOTE=1
4774     AC_DEFINE(MOZ_X11)
4775     MOZ_X11=1
4777     TK_CFLAGS='$(MOZ_QT_CFLAGS)'
4778     TK_LIBS='$(MOZ_QT_LIBS)'
4779     AC_DEFINE(MOZ_WIDGET_QT)
4780     ;;
4782 cairo-beos)
4783     MOZ_WIDGET_TOOLKIT=beos
4784     MOZ_GFX_TOOLKIT=cairo
4785     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4786     TK_LIBS='$(MOZ_CAIRO_LIBS)'
4787     ;;
4789 cairo-os2)
4790     MOZ_WIDGET_TOOLKIT=os2
4791     MOZ_GFX_TOOLKIT=cairo
4792     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4793     TK_LIBS='$(MOZ_CAIRO_LIBS)'
4794     ;;
4796 cairo-mac|cairo-cocoa)
4797     if test "$MOZ_WIDGET_TOOLKIT" = "cairo-cocoa"; then
4798         MOZ_WIDGET_TOOLKIT=cocoa
4799         AC_DEFINE(MOZ_WIDGET_COCOA)
4800         MOZ_ENABLE_COCOA=1
4801     else
4802         MOZ_WIDGET_TOOLKIT=mac
4803     fi
4804     MOZ_GFX_TOOLKIT=cairo
4805     MOZ_USER_DIR="Mozilla"
4806     AC_DEFINE(XP_MACOSX)
4807     AC_DEFINE(TARGET_CARBON)
4808     AC_DEFINE(TARGET_API_MAC_CARBON)
4809     TK_LIBS='-framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook'
4810     TK_CFLAGS="-I${MACOS_SDK_DIR}/Developer/Headers/FlatCarbon"
4811     CFLAGS="$CFLAGS $TK_CFLAGS"
4812     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4813     ;;
4814 esac
4816 if test "$MOZ_ENABLE_XREMOTE"; then
4817     AC_DEFINE(MOZ_ENABLE_XREMOTE)
4820 if test "$COMPILE_ENVIRONMENT"; then
4821   if test "$MOZ_ENABLE_GTK2"; then
4822     if test "$MOZ_X11"; then
4823       GDK_PACKAGES=gdk-x11-2.0
4824     elif test "$MOZ_DFB"; then
4825       PKG_CHECK_MODULES(MOZ_DFB, directfb >= 1.1.0)
4826       GDK_PACKAGES=directfb
4827     fi
4829     PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4830   fi
4832 fi # COMPILE_ENVIRONMENT
4834 AC_SUBST(MOZ_DEFAULT_TOOLKIT)
4836 dnl ========================================================
4837 dnl = startup-notification support module
4838 dnl ========================================================
4840 if test "$MOZ_ENABLE_GTK2"
4841 then
4842     MOZ_ENABLE_STARTUP_NOTIFICATION=
4844     MOZ_ARG_ENABLE_BOOL(startup-notification,
4845     [  --enable-startup-notification       Enable startup-notification support (default: disabled) ],
4846         MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4847         MOZ_ENABLE_STARTUP_NOTIFICATION=)
4848     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4849     then
4850         PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4851                           libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4852         [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4853             if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4854             then
4855                 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4856             fi
4857             MOZ_ENABLE_STARTUP_NOTIFICATION=
4858         ])
4859     fi
4861     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4862         AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4863     fi
4865     TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4867 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4868 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4869 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4871 dnl ========================================================
4872 dnl = QT support
4873 dnl ========================================================
4874 if test "$MOZ_ENABLE_QT"
4875 then
4876     PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtUiTools QtCore)
4877     AC_SUBST(MOZ_QT_CFLAGS)
4878     AC_SUBST(MOZ_QT_LIBS)
4880     MOZ_ARG_WITH_STRING(qtdir,
4881     [  --with-qtdir=\$dir       Specify Qt directory ],
4882     [ QTDIR=$withval])
4884     if test -z "$QTDIR"; then
4885       QTDIR="/usr"
4886     fi
4887     QTINCDIR="/include/qt"
4888     if test ! -d "$QTDIR$QTINCDIR"; then
4889        QTINCDIR="/include/X11/qt"
4890     fi
4891     if test ! -d "$QTDIR$QTINCDIR"; then
4892        QTINCDIR="/include"
4893     fi
4895     if test -x "$QTDIR/bin/moc-qt4"; then
4896       HOST_MOC="$QTDIR/bin/moc-qt4"
4897     else
4898       if test -x "$QTDIR/bin/moc"; then
4899         HOST_MOC="$QTDIR/bin/moc"
4900       else
4901         AC_CHECK_PROGS(HOST_MOC, moc, "")
4902       fi
4903     fi
4904     if test -z "$HOST_MOC"; then
4905       AC_MSG_ERROR([no acceptable moc preprocessor found])
4906     fi
4907     MOC=$HOST_MOC
4910 AC_SUBST(GTK_CONFIG)
4911 AC_SUBST(TK_CFLAGS)
4912 AC_SUBST(TK_LIBS)
4914 AC_SUBST(MOZ_ENABLE_GTK2)
4915 AC_SUBST(MOZ_ENABLE_PHOTON)
4916 AC_SUBST(MOZ_ENABLE_COCOA)
4917 AC_SUBST(MOZ_ENABLE_GLITZ)
4918 AC_SUBST(MOZ_ENABLE_QT)
4919 AC_SUBST(MOZ_ENABLE_XREMOTE)
4920 AC_SUBST(MOZ_GTK2_CFLAGS)
4921 AC_SUBST(MOZ_GTK2_LIBS)
4922 AC_SUBST(MOZ_QT_CFLAGS)
4923 AC_SUBST(MOZ_QT_LIBS)
4925 AC_SUBST(MOC)
4927 AC_SUBST(MOZ_DFB)
4928 AC_SUBST(MOZ_X11)
4930 dnl ========================================================
4931 dnl =
4932 dnl = Components & Features
4933 dnl = 
4934 dnl ========================================================
4935 MOZ_ARG_HEADER(Components and Features)
4937 dnl ========================================================
4938 dnl = Localization
4939 dnl ========================================================
4940 MOZ_ARG_ENABLE_STRING(ui-locale,
4941 [  --enable-ui-locale=ab-CD
4942                           Select the user interface locale (default: en-US)],
4943     MOZ_UI_LOCALE=$enableval )
4944 AC_SUBST(MOZ_UI_LOCALE)
4946 dnl ========================================================
4947 dnl = Trademarked Branding 
4948 dnl ========================================================
4949 MOZ_ARG_ENABLE_BOOL(official-branding,
4950 [  --enable-official-branding Enable Official mozilla.org Branding
4951                           Do not distribute builds with
4952                           --enable-official-branding unless you have
4953                           permission to use trademarks per
4954                           http://www.mozilla.org/foundation/trademarks/ .],
4955 [case "$MOZ_BUILD_APP" in
4956 browser)
4957     MOZ_BRANDING_DIRECTORY=other-licenses/branding/firefox
4958     MOZ_APP_DISPLAYNAME=Firefox
4959     ;;
4962     AC_MSG_ERROR([Official branding is only available for Firefox.])
4963 esac
4966 MOZ_ARG_WITH_STRING(branding,
4967 [  --with-branding=dir    Use branding from the specified directory.],
4968     MOZ_BRANDING_DIRECTORY=$withval)
4970 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4971 if test -z "$REAL_BRANDING_DIRECTORY"; then
4972   REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
4975 if test -f "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"; then
4976   . "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"
4979 AC_SUBST(MOZ_BRANDING_DIRECTORY)
4981 dnl ========================================================
4982 dnl = Distribution ID
4983 dnl ========================================================
4984 MOZ_ARG_WITH_STRING(distribution-id,
4985 [  --with-distribution-id=ID  Set distribution-specific id (default=org.mozilla)],
4986 [ val=`echo $withval`
4987     MOZ_DISTRIBUTION_ID="$val"])
4989 if test -z "$MOZ_DISTRIBUTION_ID"; then
4990    MOZ_DISTRIBUTION_ID="org.mozilla"
4993 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
4994 AC_SUBST(MOZ_DISTRIBUTION_ID)
4997 dnl ========================================================
4998 dnl complex text support off by default
4999 dnl ========================================================
5000 MOZ_PANGO=1
5001 MOZ_ARG_DISABLE_BOOL(pango,
5002 [  --disable-pango Disable usage of Pango ],
5003     MOZ_PANGO=,
5004     MOZ_PANGO=1)
5007 dnl ========================================================
5008 dnl = Pango
5009 dnl ========================================================
5010 if test "$MOZ_ENABLE_GTK2"
5011 then
5012     AC_SUBST(MOZ_PANGO)
5014     PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
5016     if test "$MOZ_PANGO"
5017     then
5018         PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
5019         AC_SUBST(MOZ_PANGO_CFLAGS)
5020         AC_SUBST(MOZ_PANGO_LIBS)
5021         AC_DEFINE(MOZ_PANGO)
5022     else
5023         PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
5024         AC_SUBST(MOZ_PANGO_CFLAGS)
5025         AC_SUBST(MOZ_PANGO_LIBS)
5027         PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0 fontconfig)
5028         AC_SUBST(FT2_CFLAGS)
5029         AC_SUBST(FT2_LIBS)
5030     fi
5033 dnl ========================================================
5034 dnl = PostScript print module
5035 dnl ========================================================
5036 MOZ_ARG_DISABLE_BOOL(postscript,
5037 [  --disable-postscript    Disable PostScript printing support ],
5038     MOZ_ENABLE_POSTSCRIPT=,
5039     MOZ_ENABLE_POSTSCRIPT=1 )
5041 dnl ========================================================
5042 dnl = GnomeVFS support module
5043 dnl ========================================================
5045 if test "$MOZ_X11"
5046 then
5047     dnl build the gnomevfs extension by default only when the
5048     dnl GTK2 toolkit is in use.
5049     if test "$MOZ_ENABLE_GTK2"
5050     then
5051         MOZ_ENABLE_GNOMEVFS=1
5052         MOZ_ENABLE_GCONF=1
5053         MOZ_ENABLE_LIBGNOME=1
5054     fi
5056     MOZ_ARG_DISABLE_BOOL(gnomevfs,
5057     [  --disable-gnomevfs      Disable GnomeVFS support ],
5058         MOZ_ENABLE_GNOMEVFS=,
5059         MOZ_ENABLE_GNOMEVFS=force)
5061     if test "$MOZ_ENABLE_GNOMEVFS"
5062     then
5063         PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
5064             MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
5065             MOZ_ENABLE_GNOMEVFS=1
5066         ],[
5067             if test "$MOZ_ENABLE_GNOMEVFS" = "force"
5068             then
5069                 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
5070             fi
5071             MOZ_ENABLE_GNOMEVFS=
5072         ])
5073     fi
5075     AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
5076     AC_SUBST(MOZ_GNOMEVFS_LIBS)
5078     if test "$MOZ_ENABLE_GCONF"
5079     then
5080         PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION,[
5081             MOZ_GCONF_LIBS=`echo $MOZ_GCONF_LIBS | sed 's/-llinc\>//'`
5082             MOZ_ENABLE_GCONF=1
5083         ],[
5084             MOZ_ENABLE_GCONF=
5085         ])
5086     fi
5088     if test "$MOZ_ENABLE_GCONF"; then
5089         AC_DEFINE(MOZ_ENABLE_GCONF)
5090     fi
5092     AC_SUBST(MOZ_ENABLE_GCONF)
5093     AC_SUBST(MOZ_GCONF_CFLAGS)
5094     AC_SUBST(MOZ_GCONF_LIBS)
5096     if test "$MOZ_ENABLE_LIBGNOME"
5097     then
5098         PKG_CHECK_MODULES(MOZ_LIBGNOME, libgnome-2.0 >= $LIBGNOME_VERSION,[
5099             MOZ_LIBGNOME_LIBS=`echo $MOZ_LIBGNOME_LIBS | sed 's/-llinc\>//'`
5100             MOZ_ENABLE_LIBGNOME=1
5101         ],[
5102             MOZ_ENABLE_LIBGNOME=
5103         ])
5104     fi
5106     AC_SUBST(MOZ_LIBGNOME_CFLAGS)
5107     AC_SUBST(MOZ_LIBGNOME_LIBS)
5109     # The GNOME component is built if gtk2, gconf, gnome-vfs, and libgnome
5110     # are all available.
5112     if test "$MOZ_ENABLE_GTK2" -a "$MOZ_ENABLE_GCONF" -a \
5113             "$MOZ_ENABLE_GNOMEVFS" -a "$MOZ_ENABLE_LIBGNOME"; then
5114       MOZ_ENABLE_GNOME_COMPONENT=1
5115     else
5116       MOZ_ENABLE_GNOME_COMPONENT=
5117     fi
5119     AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5122 dnl ========================================================
5123 dnl = libgnomeui support module
5124 dnl ========================================================
5126 if test "$MOZ_ENABLE_GTK2"
5127 then
5128     MOZ_ENABLE_GNOMEUI=1
5130     MOZ_ARG_DISABLE_BOOL(gnomeui,
5131     [  --disable-gnomeui       Disable libgnomeui support (default: auto, optional at runtime) ],
5132         MOZ_ENABLE_GNOMEUI=,
5133         MOZ_ENABLE_GNOMEUI=force)
5135     if test "$MOZ_ENABLE_GNOMEUI"
5136     then
5137         PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5138         [
5139             MOZ_GNOMEUI_LIBS=`echo $MOZ_GNOMEUI_LIBS | sed 's/-llinc\>//'`
5140             MOZ_ENABLE_GNOMEUI=1
5141         ],[
5142             if test "$MOZ_ENABLE_GNOMEUI" = "force"
5143             then
5144                 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5145             fi
5146             MOZ_ENABLE_GNOMEUI=
5147         ])
5148     fi
5150     if test "$MOZ_ENABLE_GNOMEUI"; then
5151         AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5152     fi
5154 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5155 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5156 AC_SUBST(MOZ_GNOMEUI_LIBS)
5158 dnl ========================================================
5159 dnl = dbus support
5160 dnl ========================================================
5162 if test "$MOZ_ENABLE_GTK2" || "$MOZ_ENABLE_QT"
5163 then
5164     MOZ_ENABLE_DBUS=1
5166     MOZ_ARG_DISABLE_BOOL(dbus,
5167     [  --disable-dbus       Disable dbus support ],
5168         MOZ_ENABLE_DBUS=,
5169         MOZ_ENABLE_DBUS=1)
5171     if test "$MOZ_ENABLE_DBUS"
5172     then
5173         PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5174         AC_DEFINE(MOZ_ENABLE_DBUS)
5175     fi
5177 AC_SUBST(MOZ_ENABLE_DBUS)
5178 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5179 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5181 dnl ========================================================
5182 dnl = Build Personal Security Manager
5183 dnl ========================================================
5184 MOZ_ARG_DISABLE_BOOL(crypto,
5185 [  --disable-crypto        Disable crypto support (Personal Security Manager)],
5186     MOZ_PSM=,
5187     MOZ_PSM=1 )
5189 dnl ========================================================
5190 dnl = JS Debugger XPCOM component (js/jsd)
5191 dnl ========================================================
5192 MOZ_ARG_DISABLE_BOOL(jsd,
5193 [  --disable-jsd           Disable JavaScript debug library],
5194     MOZ_JSDEBUGGER=,
5195     MOZ_JSDEBUGGER=1)
5198 dnl ========================================================
5199 dnl = Disable plugin support
5200 dnl ========================================================
5201 MOZ_ARG_DISABLE_BOOL(plugins,
5202 [  --disable-plugins       Disable plugins support],
5203     MOZ_PLUGINS=,
5204     MOZ_PLUGINS=1)
5206 dnl ========================================================
5207 dnl = Open JVM Interface (OJI) support
5208 dnl ========================================================
5209 MOZ_ARG_DISABLE_BOOL(oji,
5210 [  --disable-oji           Disable Open JVM Integration support],
5211     MOZ_OJI=,
5212     MOZ_OJI=1)
5213 if test -n "$MOZ_OJI"; then
5214     AC_DEFINE(OJI)
5217 dnl bi-directional support always on
5218 IBMBIDI=1
5219 AC_DEFINE(IBMBIDI)
5221 dnl ========================================================
5222 dnl view source support on by default
5223 dnl ========================================================
5224 MOZ_ARG_DISABLE_BOOL(view-source,
5225 [  --disable-view-source     Disable view source support],
5226     MOZ_VIEW_SOURCE=,
5227     MOZ_VIEW_SOURCE=1 )
5228 if test "$MOZ_VIEW_SOURCE"; then
5229     AC_DEFINE(MOZ_VIEW_SOURCE)
5233 dnl ========================================================
5234 dnl accessibility support on by default on all platforms 
5235 dnl except OS X.
5236 dnl ========================================================
5237 MOZ_ARG_DISABLE_BOOL(accessibility,
5238 [  --disable-accessibility Disable accessibility support (off by default on OS X)],
5239     ACCESSIBILITY=,
5240     ACCESSIBILITY=1 )
5241 if test "$ACCESSIBILITY"; then
5242     AC_DEFINE(ACCESSIBILITY)
5245 if test -n "$ACCESSIBILITY"; then
5246 case "$target" in
5247 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5248     if test "$ac_cv_header_atlbase_h" = "no"; then
5249         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.])
5250     fi
5251     if test "$ac_cv_header_oleacc_idl" = "no"; then
5252         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.])
5253     fi
5254     ;;
5255 esac
5258 dnl ========================================================
5259 dnl xpfe/components on by default
5260 dnl ========================================================
5261 MOZ_ARG_DISABLE_BOOL(xpfe-components,
5262 [  --disable-xpfe-components
5263                           Disable xpfe components],
5264     MOZ_XPFE_COMPONENTS=,
5265     MOZ_XPFE_COMPONENTS=1 )
5267 dnl ========================================================
5268 dnl xpinstall support on by default
5269 dnl ========================================================
5270 MOZ_ARG_DISABLE_BOOL(xpinstall,
5271 [  --disable-xpinstall     Disable xpinstall support],
5272     MOZ_XPINSTALL=,
5273     MOZ_XPINSTALL=1 )
5274 if test "$MOZ_XPINSTALL"; then
5275     AC_DEFINE(MOZ_XPINSTALL)
5278 dnl ========================================================
5279 dnl xpcom js loader support on by default
5280 dnl ========================================================
5281 MOZ_ARG_DISABLE_BOOL(jsloader,
5282 [  --disable-jsloader      Disable xpcom js loader support],
5283     MOZ_JSLOADER=,
5284     MOZ_JSLOADER=1 )
5285 if test "$MOZ_JSLOADER"; then
5286     AC_DEFINE(MOZ_JSLOADER)
5289 dnl ========================================================
5290 dnl Disable printing
5291 dnl ========================================================
5292 MOZ_ARG_DISABLE_BOOL(printing,
5293 [  --disable-printing  Disable printing support],
5294     NS_PRINTING=,
5295     NS_PRINTING=1 )
5297 if test "$NS_PRINTING"; then
5298     AC_DEFINE(NS_PRINTING)
5299     AC_DEFINE(NS_PRINT_PREVIEW)
5302 dnl ========================================================
5303 dnl use native unicode converters
5304 dnl ========================================================
5305 MOZ_ARG_ENABLE_BOOL(native-uconv,
5306 [  --enable-native-uconv   Enable iconv support],
5307     MOZ_USE_NATIVE_UCONV=1,
5308     MOZ_USE_NATIVE_UCONV= )
5309 if test "$MOZ_USE_NATIVE_UCONV"; then
5310     AC_DEFINE(MOZ_USE_NATIVE_UCONV)
5312 if test "$OS_ARCH" != "WINCE" -a "$OS_ARCH" != "WINNT" -a "$MOZ_USE_NATIVE_UCONV" -a "$ac_cv_func_iconv" != "yes"; then
5313     AC_MSG_ERROR([iconv() not found.  Cannot enable native uconv support.])
5317 dnl ========================================================
5318 dnl Libeditor can be build as plaintext-only,
5319 dnl or as a full html and text editing component.
5320 dnl We build both by default.
5321 dnl ========================================================
5322 MOZ_ARG_ENABLE_BOOL(plaintext-editor-only,
5323 [  --enable-plaintext-editor-only
5324                           Allow only plaintext editing],
5325     MOZ_PLAINTEXT_EDITOR_ONLY=1,
5326     MOZ_PLAINTEXT_EDITOR_ONLY= )
5327 dnl Note the #define is MOZILLA, not MOZ, for compat with the Mac build.
5328 AC_SUBST(MOZ_PLAINTEXT_EDITOR_ONLY)
5330 dnl ========================================================
5331 dnl = Drop XPCOM Obsolete library
5332 dnl ========================================================
5333 MOZ_ARG_DISABLE_BOOL(xpcom-obsolete,
5334 [  --disable-xpcom-obsolete           Disable XPCOM Obsolete Library],
5335     MOZ_NO_XPCOM_OBSOLETE=1,
5336     MOZ_NO_XPCOM_OBSOLETE=)
5338 if test -n "$MOZ_NO_XPCOM_OBSOLETE"; then
5339     AC_DEFINE(MOZ_NO_XPCOM_OBSOLETE)
5342 dnl ========================================================
5343 dnl = Disable Fast Load
5344 dnl ========================================================
5345 MOZ_ARG_DISABLE_BOOL(xpcom-fastload,
5346 [  --disable-xpcom-fastload           Disable XPCOM fastload support],
5347     MOZ_NO_FAST_LOAD=1,
5348     MOZ_NO_FAST_LOAD=)
5350 AC_SUBST(MOZ_NO_FAST_LOAD)
5352 if test -n "$MOZ_NO_FAST_LOAD"; then
5353     AC_DEFINE(MOZ_NO_FAST_LOAD)
5356 dnl ========================================================
5357 dnl = Enable Ogg Codecs
5358 dnl ========================================================
5359 MOZ_ARG_DISABLE_BOOL(ogg,
5360 [  --disable-ogg           Disable Ogg Codec support],
5361     MOZ_OGG=,
5362     MOZ_OGG=1)
5364 AC_SUBST(MOZ_OGG)
5366 if test -n "$MOZ_OGG"; then
5367     AC_DEFINE(MOZ_OGG)
5368     MOZ_MEDIA=1
5371 AC_SUBST(MOZ_MEDIA)
5373 if test -n "$MOZ_MEDIA"; then
5374     AC_DEFINE(MOZ_MEDIA)
5377 dnl If using Ogg with Linux, ensure that the alsa library is available
5378 if test -n "$MOZ_OGG"; then
5379    case "$target_os" in
5380 linux*)
5381       AC_CHECK_LIB(asound, snd_pcm_open,,AC_MSG_ERROR([Ogg support on Linux requires the alsa library]))
5382       ;;
5383    esac
5386 dnl ========================================================
5387 dnl Permissions System
5388 dnl ========================================================
5389 MOZ_ARG_DISABLE_BOOL(permissions,
5390 [  --disable-permissions   Disable permissions (popup and cookie blocking)],
5391     MOZ_PERMISSIONS=,
5392     MOZ_PERMISSIONS=1
5395 dnl ========================================================
5396 dnl NegotiateAuth
5397 dnl ========================================================
5398 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5399 [  --disable-negotiateauth Disable GSS-API negotiation ],
5400     MOZ_AUTH_EXTENSION=,
5401     MOZ_AUTH_EXTENSION=1 )
5403 dnl ========================================================
5404 dnl XTF
5405 dnl ========================================================
5406 MOZ_ARG_DISABLE_BOOL(xtf,
5407 [  --disable-xtf           Disable XTF (pluggable xml tags) support],
5408     MOZ_XTF=,
5409     MOZ_XTF=1 )
5410 if test "$MOZ_XTF"; then
5411   AC_DEFINE(MOZ_XTF)
5414 dnl ========================================================
5415 dnl Inspector APIs
5416 dnl ========================================================
5417 MOZ_ARG_DISABLE_BOOL(inspector-apis,
5418 [  --disable-inspector-apis Disable the DOM inspection APIs ],
5419     MOZ_NO_INSPECTOR_APIS=1,
5420     MOZ_NO_INSPECTOR_APIS= )
5422 dnl ========================================================
5423 dnl Pref extensions (autoconfig and system-pref)
5424 dnl ========================================================
5425 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5426 [  --disable-pref-extensions
5427                           Disable pref extensions such as autoconfig and
5428                           system-pref],
5429   MOZ_PREF_EXTENSIONS=,
5430   MOZ_PREF_EXTENSIONS=1 )
5432 dnl ========================================================
5433 dnl = Universalchardet
5434 dnl ========================================================
5435 MOZ_ARG_DISABLE_BOOL(universalchardet,
5436 [  --disable-universalchardet
5437                           Disable universal encoding detection],
5438   MOZ_UNIVERSALCHARDET=,
5439   MOZ_UNIVERSALCHARDET=1 )
5441 dnl ========================================================
5442 dnl JavaXPCOM
5443 dnl ========================================================
5444 MOZ_ARG_ENABLE_BOOL(javaxpcom,
5445 [  --enable-javaxpcom
5446                           Enable Java-XPCOM bridge],
5447     MOZ_JAVAXPCOM=1,
5448     MOZ_JAVAXPCOM= )
5450 if test -n "${MOZ_JAVAXPCOM}"; then
5451   case "$host_os" in
5452     cygwin*|msvc*|mks*)
5453       if test -n "$JAVA_HOME"; then
5454         JAVA_HOME=`cygpath -u \`cygpath -m -s "$JAVA_HOME"\``
5455       fi
5456       ;;
5457     *mingw*)
5458       if test -n "$JAVA_HOME"; then
5459         JAVA_HOME=`cd "$JAVA_HOME" && pwd`
5460       fi
5461       ;;
5462   esac
5464   if test -n "${JAVA_INCLUDE_PATH}"; then
5465     dnl Make sure jni.h exists in the given include path.
5466     if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5467       AC_MSG_ERROR([jni.h was not found in given include path $JAVA_INCLUDE_PATH.])
5468     fi
5469   else
5470     case "$target_os" in
5471       darwin*)
5472         dnl Default to java system location
5473         JAVA_INCLUDE_PATH=/System/Library/Frameworks/JavaVM.framework/Headers
5474         ;;
5475       *)
5476         dnl Try $JAVA_HOME
5477         JAVA_INCLUDE_PATH="$JAVA_HOME/include"
5478         ;;
5479     esac
5480     if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5481       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.])
5482     fi
5483   fi
5485   if test -n "${JAVA_BIN_PATH}"; then
5486     dnl Look for javac and jar in the specified path.
5487     JAVA_PATH="$JAVA_BIN_PATH"
5488   else
5489     dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5490     JAVA_PATH="$JAVA_HOME/bin:$PATH"
5491   fi
5493   AC_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5494   AC_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5495   AC_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5496   if test -z "$JAVA" || test "$JAVA" = ":" || test -z "$JAVAC" || test "$JAVAC" = ":" || test -z "$JAR" || test "$JAR" = ":"; then
5497     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.])
5498   fi
5501 dnl ========================================================
5502 dnl = Breakpad crash reporting (on by default on supported platforms)
5503 dnl ========================================================
5505 if (test "$OS_ARCH" = "WINNT" -a -z "$GNU_CC" \
5506     || test "$OS_ARCH" = "Darwin" \
5507     || test "$OS_ARCH" = "Linux" -a "$CPU_ARCH" = "x86" \
5508     || test "$OS_ARCH" = "SunOS") \
5509    && test -z "$HAVE_64BIT_OS"; then
5510    MOZ_CRASHREPORTER=1
5513 MOZ_ARG_DISABLE_BOOL(crashreporter,
5514 [  --disable-crashreporter          Disable breakpad crash reporting],
5515     MOZ_CRASHREPORTER=,
5516     MOZ_CRASHREPORTER=1)
5518 if test -n "$MOZ_CRASHREPORTER"; then
5519    AC_DEFINE(MOZ_CRASHREPORTER)
5521   if (test "$OS_ARCH" = "Linux" || test "$OS_ARCH" = "SunOS") && \
5522     test -z "$SKIP_LIBRARY_CHECKS"; then
5523     PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
5524     AC_SUBST(MOZ_GTHREAD_CFLAGS)
5525     AC_SUBST(MOZ_GTHREAD_LIBS)
5527     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.])])
5528   fi
5531 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
5532 [  --with-crashreporter-enable-percent=NN  Enable sending crash reports by default on NN% of users. (default=100)],
5533 [ val=`echo $withval | sed 's/[^0-9]//g'`
5534     MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
5536 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
5537    MOZ_CRASHREPORTER_ENABLE_PERCENT=100
5539 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
5541 dnl ========================================================
5542 dnl = Enable compilation of specific extension modules
5543 dnl ========================================================
5545 MOZ_ARG_ENABLE_STRING(extensions,
5546 [  --enable-extensions     Enable extensions],
5547 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5548     if test "$option" = "yes" || test "$option" = "all"; then
5549         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_ALL"
5550     elif test "$option" = "no" || test "$option" = "none"; then
5551         MOZ_EXTENSIONS=""
5552     elif test "$option" = "default"; then
5553         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
5554     elif test `echo "$option" | grep -c \^-` != 0; then
5555         option=`echo $option | sed 's/^-//'`
5556         MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
5557     else
5558         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
5559     fi
5560 done],
5561     MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
5563 if test -z "$MOZ_ENABLE_GNOMEVFS" && test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
5564     # Suppress warning on non-X11 platforms
5565     if test -n "$MOZ_X11"; then
5566         AC_MSG_WARN([Cannot build gnomevfs without required libraries. Removing gnomevfs from MOZ_EXTENSIONS.])
5567     fi
5568     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
5571 if test -z "$MOZ_JSDEBUGGER" && test `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
5572     AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
5573     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
5576 dnl This might be temporary: build tridentprofile only on Windows
5577 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0 && test "$OS_ARCH" != "WINNT"; then
5578     AC_MSG_WARN([tridentprofile extension works only on Windows at this time. Removing tridentprofile from MOZ_EXTENSIONS.])
5579     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5582 dnl cookie must be built before tridentprofile. put it at list's end.
5583 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0; then
5584   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5585   MOZ_EXTENSIONS="$MOZ_EXTENSIONS tridentprofile"
5588 dnl xforms requires xtf and schema-validation
5589 if test -z "$MOZ_XTF" && test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
5590     AC_MSG_WARN([Cannot build XForms without XTF support.  Removing XForms from MOZ_EXTENSIONS.])
5591     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5593 if test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0 && test `echo "$MOZ_EXTENSIONS" | grep -c schema-validation` -eq 0; then
5594     AC_MSG_WARN([Cannot build XForms without schema validation.  Removing XForms from MOZ_EXTENSIONS.])
5595     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5598 if test `echo "$MOZ_EXTENSIONS" | grep -c auth` -ne 0; then
5599     AC_MSG_WARN([auth is no longer an extension, use --disable-negotiateauth to disable.])
5600     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|auth||g'`
5603 if test `echo "$MOZ_EXTENSIONS" | grep -c 'cookie\|permissions'` -ne 0; then
5604     AC_MSG_WARN([cookie and permissions are no longer extensions, use --disable-permissions to disable.])
5605     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|cookie||g; s|permissions||g'`
5608 if test `echo "$MOZ_EXTENSIONS" | grep -c pref` -ne 0; then
5609     AC_MSG_WARN([pref is no longer an extension, use --disable-pref-extensions to disable.])
5610     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|pref||g'`
5613 if test `echo "$MOZ_EXTENSIONS" | grep -c universalchardet` -ne 0; then
5614     AC_MSG_WARN([universalchardet is no longer an extension, use --disable-universalchardet to disable.])
5615     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|universalchardet||g'`
5618 if test `echo "$MOZ_EXTENSIONS" | grep -c java` -ne 0; then
5619     AC_MSG_WARN([java is no longer an extension, use --enable-javaxpcom to enable.])
5620     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|java||g'`
5623 if test `echo "$MOZ_EXTENSIONS" | grep -c spellcheck` -ne 0; then
5624     AC_MSG_WARN([spellcheck is no longer an extension.])
5625     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|spellcheck||g'`
5628 if test -n "$MOZ_NO_XPCOM_OBSOLETE" && test `echo "$MOZ_EXTENSIONS" | grep -c sroaming` -ne 0; then
5629     AC_MSG_WARN([Cannot currently build sroaming without xpcom obsolete -- bug 249343. Removing sroaming from MOZ_EXTENSIONS.])
5630     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|sroaming||'`
5633 dnl Remove dupes
5634 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
5636 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
5637 dnl when trying to build a non-existent extension.
5638 for extension in $MOZ_EXTENSIONS; do
5639     if test ! -d "${srcdir}/extensions/${extension}"; then
5640         AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
5641     fi
5642 done
5645 dnl ========================================================
5646 dnl Image decoders
5647 dnl ========================================================
5648 case "$MOZ_WIDGET_TOOLKIT" in
5649 beos|windows|os2|mac|cocoa)
5650     ;;
5652     if test -z "$MOZ_ENABLE_GTK2" && test -z "$MOZ_ENABLE_QT"; then
5653        MOZ_IMG_DECODERS_DEFAULT=`echo $MOZ_IMG_DECODERS_DEFAULT | sed -e 's|icon||'`
5654     fi
5655     ;;
5656 esac
5658 MOZ_ARG_ENABLE_STRING(image-decoders,
5659 [  --enable-image-decoders[={mod1,mod2,default,all,none}]
5660                           Enable specific image decoders],
5661 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5662     if test "$option" = "yes" || test "$option" = "all"; then
5663         MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5664     elif test "$option" = "no" || test "$option" = "none"; then
5665         MOZ_IMG_DECODERS=""
5666     elif test "$option" = "default"; then
5667         MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5668     elif test `echo "$option" | grep -c \^-` != 0; then
5669         option=`echo $option | sed 's/^-//'`
5670         MOZ_IMG_DECODERS=`echo "$MOZ_IMG_DECODERS" | sed "s/ ${option}//"`
5671     else
5672         MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $option"
5673     fi
5674 done],
5675     MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS_DEFAULT")
5677 dnl Dupes are removed in the encoder section because it will also add decoders
5679 dnl ========================================================
5680 dnl Image encoders
5681 dnl ========================================================
5682 MOZ_ARG_ENABLE_STRING(image-encoders,
5683 [  --enable-image-encoders[={mod1,mod2,default,all,none}]
5684                           Enable specific image encoders],
5685 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5686     if test "$option" = "yes" || test "$option" = "all"; then
5687         addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5688     elif test "$option" = "no" || test "$option" = "none"; then
5689         MOZ_IMG_ENCODERS=""
5690         addencoder=""
5691     elif test "$option" = "default"; then
5692         addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5693     elif test `echo "$option" | grep -c \^-` != 0; then
5694         option=`echo $option | sed 's/^-//'`
5695         addencoder=`echo "$MOZ_IMG_ENCODERS" | sed "s/ ${option}//"`
5696     else
5697         addencoder="$option"
5698     fi
5699     MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS $addencoder"
5700 done],
5701     MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS_DEFAULT")
5703 dnl Remove dupes
5704 MOZ_IMG_DECODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_DECODERS}`
5705 MOZ_IMG_ENCODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_ENCODERS}`
5707 dnl ========================================================
5708 dnl MathML on by default
5709 dnl ========================================================
5710 MOZ_ARG_DISABLE_BOOL(mathml,
5711 [  --disable-mathml        Disable MathML support],
5712     MOZ_MATHML=,
5713     MOZ_MATHML=1 )
5714 if test "$MOZ_MATHML"; then
5715   AC_DEFINE(MOZ_MATHML)
5718 dnl ========================================================
5719 dnl Canvas
5720 dnl ========================================================
5721 MOZ_ARG_DISABLE_BOOL(canvas,
5722 [  --disable-canvas          Disable html:canvas feature],
5723     MOZ_ENABLE_CANVAS=,
5724     MOZ_ENABLE_CANVAS=1 )
5725 if test -n "$MOZ_ENABLE_CANVAS"; then
5726     AC_DEFINE(MOZ_ENABLE_CANVAS)
5728 AC_SUBST(MOZ_ENABLE_CANVAS)
5730 dnl ========================================================
5731 dnl SVG
5732 dnl ========================================================
5733 MOZ_ARG_DISABLE_BOOL(svg,
5734 [  --disable-svg            Disable SVG support],
5735     MOZ_SVG=,
5736     MOZ_SVG=1 )
5737 if test -n "$MOZ_SVG"; then
5738   AC_DEFINE(MOZ_SVG)
5741 dnl ========================================================
5742 dnl Installer
5743 dnl ========================================================
5744 case "$target_os" in
5745     aix*|solaris*|linux*|msvc*|mks*|cygwin*|mingw*|os2*|wince*)
5746         MOZ_INSTALLER=1
5747         ;;
5748 esac
5750 MOZ_ARG_DISABLE_BOOL(installer,
5751 [  --disable-installer     Disable building of installer],
5752     MOZ_INSTALLER=,
5753     MOZ_INSTALLER=1 )
5754 if test -n "$MOZ_INSTALLER" -a -n "$MOZ_XUL_APP" -a "$OS_ARCH" = "WINNT"; then
5755     # Disable installer for Windows builds that use the new toolkit if NSIS
5756     # isn't in the path.
5757     AC_PATH_PROGS(MAKENSIS, makensis)
5758     if test -z "$MAKENSIS" || test "$MAKENSIS" = ":"; then
5759         AC_MSG_ERROR([To build the installer makensis is required in your path. To build without the installer reconfigure using --disable-installer.])
5760     fi
5761     # The Windows build for NSIS requires the iconv command line utility to
5762     # convert the charset of the locale files.
5763     AC_PATH_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5764     if test -z "$HOST_ICONV"; then
5765         AC_MSG_ERROR([To build the installer iconv is required in your path. To build without the installer reconfigure using --disable-installer.])
5766     fi
5769 # Automatically disable installer if xpinstall isn't built
5770 if test -z "$MOZ_XPINSTALL"; then
5771     MOZ_INSTALLER=
5773 AC_SUBST(MOZ_INSTALLER)
5775 AC_MSG_CHECKING([for tar archiver])
5776 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
5777 if test -z "$TAR"; then
5778     AC_MSG_ERROR([no tar archiver found in \$PATH])
5780 AC_MSG_RESULT([$TAR])
5781 AC_SUBST(TAR)
5783 AC_MSG_CHECKING([for wget])
5784 AC_CHECK_PROGS(WGET, wget, "")
5785 AC_MSG_RESULT([$WGET])
5786 AC_SUBST(WGET)
5788 dnl ========================================================
5789 dnl Updater
5790 dnl ========================================================
5792 MOZ_ARG_DISABLE_BOOL(updater,
5793 [  --disable-updater       Disable building of updater],
5794     MOZ_UPDATER=,
5795     MOZ_UPDATER=1 )
5796 # The Windows build requires the iconv command line utility
5797 # in order to build the updater.
5798 case "$target_os" in
5799     msvc*|mks*|cygwin*|mingw*|wince*)
5800         if test -n "$MOZ_UPDATER"; then
5801             AC_MSG_CHECKING([for iconv])
5802             AC_CHECK_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5803             if test -z "$HOST_ICONV"; then
5804                 AC_MSG_ERROR([iconv not found in \$PATH])
5805             fi
5806         fi
5807         ;;
5808 esac
5809 AC_SUBST(MOZ_UPDATER)
5811 # app update channel is 'default' when not supplied.
5812 MOZ_ARG_ENABLE_STRING([update-channel],
5813 [  --enable-update-channel=CHANNEL
5814                            Select application update channel (default=default)],
5815     MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
5817 if test -z "$MOZ_UPDATE_CHANNEL"; then
5818     MOZ_UPDATE_CHANNEL=default
5820 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
5822 # tools/update-packaging is not checked out by default.
5823 MOZ_ARG_ENABLE_BOOL(update-packaging,
5824 [  --enable-update-packaging
5825                            Enable tools/update-packaging],
5826     MOZ_UPDATE_PACKAGING=1,
5827     MOZ_UPDATE_PACKAGING= )
5828 AC_SUBST(MOZ_UPDATE_PACKAGING)
5830 dnl ========================================================
5831 dnl ActiveX
5832 dnl ========================================================
5834 MOZ_ARG_DISABLE_BOOL(xpconnect-idispatch,
5835 [  --disable-xpconnect-idispatch
5836                           Disable building of xpconnect support for IDispatch
5837                           (win32 only)],
5838     XPC_IDISPATCH_SUPPORT=,
5839     XPC_IDISPATCH_SUPPORT=1)
5840 AC_SUBST(XPC_IDISPATCH_SUPPORT)
5842 MOZ_ARG_DISABLE_BOOL(activex,
5843 [  --disable-activex       Disable building of ActiveX control (win32 only)],
5844     MOZ_NO_ACTIVEX_SUPPORT=1,
5845     MOZ_NO_ACTIVEX_SUPPORT= )
5846 AC_SUBST(MOZ_NO_ACTIVEX_SUPPORT)
5848 MOZ_ARG_DISABLE_BOOL(activex-scripting,
5849 [  --disable-activex-scripting
5850                           Disable building of ActiveX scripting support (win32)],
5851     MOZ_ACTIVEX_SCRIPTING_SUPPORT=,
5852     MOZ_ACTIVEX_SCRIPTING_SUPPORT=1)
5853 AC_SUBST(MOZ_ACTIVEX_SCRIPTING_SUPPORT)
5855 if test -n "$MOZ_NO_ACTIVEX_SUPPORT" -a -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT";
5856 then
5857     AC_MSG_ERROR([Cannot enable ActiveX scripting support when ActiveX support is disabled.])
5860 if test -n "$XPC_IDISPATCH_SUPPORT" -o -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
5861 case "$target" in
5862 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5863     if test "$ac_cv_header_atlbase_h" = "no"; then
5864         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.])
5865     fi
5866     ;;
5867 esac
5870 dnl ========================================================
5871 dnl leaky
5872 dnl ========================================================
5873 MOZ_ARG_ENABLE_BOOL(leaky,
5874 [  --enable-leaky          Build leaky memory tool],
5875     MOZ_LEAKY=1,
5876     MOZ_LEAKY=)
5879 dnl ========================================================
5880 dnl xpctools
5881 dnl ========================================================
5882 MOZ_ARG_ENABLE_BOOL(xpctools,
5883 [  --enable-xpctools       Build JS profiling tool],
5884     MOZ_XPCTOOLS=1,
5885     MOZ_XPCTOOLS= )
5888 dnl ========================================================
5889 dnl build the tests by default
5890 dnl ========================================================
5891 MOZ_ARG_DISABLE_BOOL(tests,
5892 [  --disable-tests         Do not build test libraries & programs],
5893     ENABLE_TESTS=,
5894     ENABLE_TESTS=1 )
5896 dnl ========================================================
5897 dnl parental controls (for Windows Vista)
5898 dnl ========================================================
5899 MOZ_ARG_DISABLE_BOOL(parental-controls,
5900 [  --disable-parental-controls
5901                            Do not build parental controls],
5902    MOZ_DISABLE_PARENTAL_CONTROLS=1,
5903    MOZ_DISABLE_PARENTAL_CONTROLS=)
5904 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5905     AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5908 dnl ========================================================
5909 dnl Vista SDK specific api
5910 dnl ========================================================
5911 MOZ_ARG_DISABLE_BOOL(vista-sdk-requirements,
5912 [  --disable-vista-sdk-requirements
5913                            Do not build Vista SDK specific code],
5914    MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=1,
5915    MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=)
5916 if test -n "$MOZ_DISABLE_VISTA_SDK_REQUIREMENTS"; then
5917     AC_MSG_WARN([Resulting builds will not be compatible with Windows Vista. (bug 428970)])
5918     AC_DEFINE(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
5919     if test -z "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5920         AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5921     fi
5922     MOZ_DISABLE_PARENTAL_CONTROLS=1
5923 else
5924 case "$target" in
5925 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5926     if test "$ac_cv_header_wpcapi_h" = "no"; then
5927         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.])
5928     fi
5929     ;;
5930 esac
5932 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
5933 AC_SUBST(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
5935 dnl ========================================================
5936 dnl =
5937 dnl = Module specific options
5938 dnl =
5939 dnl ========================================================
5940 MOZ_ARG_HEADER(Individual module options)
5942 dnl ========================================================
5943 dnl = Enable Lea malloc in xpcom. OFF by default.
5944 dnl ========================================================
5945 MOZ_ARG_ENABLE_BOOL(xpcom-lea,
5946 [  --enable-xpcom-lea      Use Lea malloc in xpcom ],
5947     XPCOM_USE_LEA=1,
5948     XPCOM_USE_LEA= )
5949 if test -n "$XPCOM_USE_LEA"; then
5950     AC_DEFINE(XPCOM_USE_LEA)
5953 dnl ========================================================
5954 dnl = Enable places (new history/bookmarks)
5955 dnl ========================================================
5956 MOZ_ARG_ENABLE_BOOL(places,
5957 [  --enable-places        Enable 'places' bookmark/history implementation],
5958     MOZ_PLACES=1,
5959     MOZ_PLACES= )
5960 if test -n "$MOZ_PLACES"; then
5961     AC_DEFINE(MOZ_PLACES)
5962     if test -z "$MOZ_MAIL_NEWS"; then
5963       MOZ_MORK=
5964     fi
5965     MOZ_MORKREADER=1
5966 else
5967   if test "$MOZ_BUILD_APP" = "browser"; then
5968     AC_MSG_ERROR([Cannot build Firefox with --disable-places.])
5969   fi
5972 dnl ========================================================
5973 dnl = Disable feed handling components
5974 dnl ========================================================
5975 MOZ_ARG_DISABLE_BOOL(feeds,
5976 [  --disable-feeds        Disable feed handling and processing components],
5977     MOZ_FEEDS=,
5978     MOZ_FEEDS=1 )
5979 if test -n "$MOZ_FEEDS"; then
5980     AC_DEFINE(MOZ_FEEDS)
5981 else
5982     if test "$MOZ_BUILD_APP" = "browser"; then
5983         AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
5984     fi
5987 dnl ========================================================
5988 dnl = Enable mozStorage
5989 dnl ========================================================
5990 dnl Implicitly enabled by default if building calendar or places
5991 MOZ_ARG_ENABLE_BOOL(storage,
5992 [  --enable-storage        Enable mozStorage module and related components],
5993     MOZ_STORAGE=1,
5994     MOZ_STORAGE= )
5995 if test -n "$MOZ_STORAGE"; then
5996     AC_DEFINE(MOZ_STORAGE)
5999 dnl ========================================================
6000 dnl Check for sqlite
6001 dnl ========================================================
6003 MOZ_NATIVE_SQLITE=
6004 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6005 [  --enable-system-sqlite  Use system sqlite (located with pkgconfig)],
6006 MOZ_NATIVE_SQLITE=1,
6007 MOZ_NATIVE_SQLITE= )
6009 if test -z "$MOZ_NATIVE_SQLITE"
6010 then
6011     SQLITE_CFLAGS=
6012     SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,sqlite3,$(DIST)/lib)'
6013 else
6014     PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6017 AC_SUBST(MOZ_NATIVE_SQLITE)
6019 dnl ========================================================
6020 dnl = Enable help viewer (off by default)
6021 dnl ========================================================
6022 MOZ_ARG_ENABLE_BOOL(help-viewer,
6023 [  --enable-help-viewer        Enable help viewer],
6024     MOZ_HELP_VIEWER=1,
6025     MOZ_HELP_VIEWER= )
6026 if test -n "$MOZ_HELP_VIEWER"; then
6027      AC_DEFINE(MOZ_HELP_VIEWER)
6029 AC_SUBST(MOZ_HELP_VIEWER)
6030 if test "$MOZ_BUILD_APP" = "browser" -a -n "$MOZ_HELP_VIEWER"; then
6031     AC_MSG_ERROR([Cannot build Firefox with --enable-help-viewer.])
6034 dnl ========================================================
6035 dnl = Enable safe browsing (anti-phishing)
6036 dnl ========================================================
6037 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6038 [  --enable-safe-browsing        Enable safe browsing (anti-phishing) implementation],
6039     MOZ_SAFE_BROWSING=1,
6040     MOZ_SAFE_BROWSING= )
6041 if test -n "$MOZ_SAFE_BROWSING"; then
6042     AC_DEFINE(MOZ_SAFE_BROWSING)
6044 AC_SUBST(MOZ_SAFE_BROWSING)
6046 dnl ========================================================
6047 dnl = Enable url-classifier
6048 dnl ========================================================
6049 dnl Implicitly enabled by default if building with safe-browsing
6050 if test -n "$MOZ_SAFE_BROWSING"; then
6051     MOZ_URL_CLASSIFIER=1
6053 MOZ_ARG_ENABLE_BOOL(url-classifier,
6054 [  --enable-url-classifier        Enable url classifier module],
6055     MOZ_URL_CLASSIFIER=1,
6056     MOZ_URL_CLASSIFIER= )
6057 if test -n "$MOZ_URL_CLASSIFIER"; then
6058     AC_DEFINE(MOZ_URL_CLASSIFIER)
6060 AC_SUBST(MOZ_URL_CLASSIFIER)
6062 dnl ========================================================
6063 dnl = Disable zipwriter
6064 dnl ========================================================
6065 MOZ_ARG_DISABLE_BOOL(zipwriter,
6066 [  --disable-zipwriter             Disable zipwriter component],
6067     MOZ_ZIPWRITER=,
6068     MOZ_ZIPWRITER=1 )
6069 AC_SUBST(MOZ_ZIPWRITER)
6071 dnl ========================================================
6072 dnl = Enable Ultrasparc specific optimizations for JS
6073 dnl ========================================================
6074 MOZ_ARG_ENABLE_BOOL(js-ultrasparc,
6075 [  --enable-js-ultrasparc  Use UltraSPARC optimizations in JS],
6076     JS_ULTRASPARC_OPTS=1,
6077     JS_ULTRASPARC_OPTS= )
6079 dnl only enable option for ultrasparcs
6080 if test `echo "$target_os" | grep -c \^solaris 2>/dev/null` = 0 -o \
6081     "$OS_TEST" != "sun4u"; then
6082     JS_ULTRASPARC_OPTS=
6084 AC_SUBST(JS_ULTRASPARC_OPTS)
6086 dnl ========================================================
6087 dnl = Hildon and OSSO checks
6088 dnl ========================================================
6089 PKG_CHECK_MODULES(LIBHILDONMIME,libhildonmime,
6090                   MOZ_PLATFORM_HILDON=1,
6091                   MOZ_PLATFORM_HILDON=)
6092 if test $MOZ_PLATFORM_HILDON; then
6093    AC_DEFINE(MOZ_PLATFORM_HILDON)
6095 AC_SUBST(LIBHILDONMIME_CFLAGS)
6096 AC_SUBST(LIBHILDONMIME_LIBS)
6098 PKG_CHECK_MODULES(LIBOSSO,libosso,
6099                   NS_OSSO=1,
6100                   NS_OSSO=)
6102 if test $NS_OSSO; then
6103     if test -z "$MOZ_ENABLE_DBUS"; then
6104         AC_MSG_ERROR([DBus is required when building for OSSO])
6105     fi
6106     AC_DEFINE(NS_OSSO)     
6108 AC_SUBST(LIBOSSO_CFLAGS)
6109 AC_SUBST(LIBOSSO_LIBS)
6111 PKG_CHECK_MODULES(MOZ_LOCATION, [liblocation gpsbt],
6112                   NS_MAEMO_LOCATION=1,
6113                   NS_MAEMO_LOCATION=)
6115 if test $NS_MAEMO_LOCATION; then
6116   AC_DEFINE(NS_MAEMO_LOCATION)
6119 AC_SUBST(MOZ_LOCATION_CFLAGS)
6120 AC_SUBST(MOZ_LOCATION_LIBS)
6122 dnl ========================================================
6123 dnl =
6124 dnl = Feature options that require extra sources to be pulled
6125 dnl =
6126 dnl ========================================================
6127 dnl MOZ_ARG_HEADER(Features that require extra sources)
6129 dnl ========================================================
6130 dnl =
6131 dnl = Debugging Options
6132 dnl = 
6133 dnl ========================================================
6134 MOZ_ARG_HEADER(Debugging and Optimizations)
6136 dnl ========================================================
6137 dnl = Disable building with debug info.
6138 dnl = Debugging is OFF by default
6139 dnl ========================================================
6140 if test -z "$MOZ_DEBUG_FLAGS"
6141 then
6142     case "$target" in
6143     *-irix*)
6144         if test "$GNU_CC"; then
6145             GCC_VERSION=`$CC -v 2>&1 | awk '/version/ { print $3 }'`
6146             case "$GCC_VERSION" in
6147             2.95.*)
6148                 MOZ_DEBUG_FLAGS=""
6149                 ;;
6150             *)
6151                 MOZ_DEBUG_FLAGS="-g"
6152                 ;;
6153             esac
6154         else
6155             MOZ_DEBUG_FLAGS="-g"
6156         fi
6157         ;;
6158     *)
6159         MOZ_DEBUG_FLAGS="-g"
6160         ;;
6161     esac
6164 MOZ_ARG_ENABLE_STRING(debug,
6165 [  --enable-debug[=DBG]    Enable building with developer debug info
6166                           (Using compiler flags DBG)],
6167 [ if test "$enableval" != "no"; then
6168     MOZ_DEBUG=1
6169     if test -n "$enableval" && test "$enableval" != "yes"; then
6170         MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6171     fi
6172   else
6173     MOZ_DEBUG=
6174   fi ],
6175   MOZ_DEBUG=)
6177 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG"
6178  case "${target_os}" in
6179     beos*)
6180         MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${USER}"
6181         ;;
6182     msvc*|mks*|cygwin*|mingw*|os2*|wince*)
6183         MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
6184         ;;
6185     *) 
6186         MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`$WHOAMI`"
6187         ;;
6188   esac
6189 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DTRACING"
6191 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
6193 if test -n "$MOZ_DEBUG"; then
6194     AC_MSG_CHECKING([for valid debug flags])
6195     _SAVE_CFLAGS=$CFLAGS
6196     CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
6197     AC_TRY_COMPILE([#include <stdio.h>], 
6198         [printf("Hello World\n");],
6199         _results=yes,
6200         _results=no)
6201     AC_MSG_RESULT([$_results])
6202     if test "$_results" = "no"; then
6203         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
6204     fi
6205     CFLAGS=$_SAVE_CFLAGS
6208 dnl ========================================================
6209 dnl = Enable code optimization. ON by default.
6210 dnl ========================================================
6211 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6212         MOZ_OPTIMIZE_FLAGS="-O"
6215 MOZ_ARG_ENABLE_STRING(optimize,
6216 [  --disable-optimize      Disable compiler optimization
6217   --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6218 [ if test "$enableval" != "no"; then
6219     MOZ_OPTIMIZE=1
6220     if test -n "$enableval" && test "$enableval" != "yes"; then
6221         MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6222         MOZ_OPTIMIZE=2
6223     fi
6224 else
6225     MOZ_OPTIMIZE=
6226 fi ], MOZ_OPTIMIZE=1)
6228 if test "$COMPILE_ENVIRONMENT"; then
6229 if test -n "$MOZ_OPTIMIZE"; then
6230     AC_MSG_CHECKING([for valid optimization flags])
6231     _SAVE_CFLAGS=$CFLAGS
6232     CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6233     AC_TRY_COMPILE([#include <stdio.h>], 
6234         [printf("Hello World\n");],
6235         _results=yes,
6236         _results=no)
6237     AC_MSG_RESULT([$_results])
6238     if test "$_results" = "no"; then
6239         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6240     fi
6241     CFLAGS=$_SAVE_CFLAGS
6243 fi # COMPILE_ENVIRONMENT
6245 AC_SUBST(MOZ_OPTIMIZE)
6246 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6247 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6248 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6250 dnl ========================================================
6251 dnl = Enable/disable debug for specific modules only
6252 dnl =   module names beginning with ^ will be disabled 
6253 dnl ========================================================
6254 MOZ_ARG_ENABLE_STRING(debug-modules,
6255 [  --enable-debug-modules  Enable/disable debug info for specific modules],
6256 [ MOZ_DEBUG_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6258 dnl ========================================================
6259 dnl = Enable/disable generation of debugger info for specific modules only
6260 dnl =    the special module name ALL_MODULES can be used to denote all modules
6261 dnl =    module names beginning with ^ will be disabled
6262 dnl ========================================================
6263 MOZ_ARG_ENABLE_STRING(debugger-info-modules,
6264 [  --enable-debugger-info-modules
6265                           Enable/disable debugger info for specific modules],
6266 [ for i in `echo $enableval | sed 's/,/ /g'`; do
6267       dnl note that the list of module names is reversed as it is copied
6268       dnl this is important, as it will allow config.mk to interpret stuff like
6269       dnl "^ALL_MODULES xpcom" properly
6270       if test "$i" = "no"; then
6271         i="^ALL_MODULES"
6272       fi
6273       if test "$i" = "yes"; then
6274         i="ALL_MODULES"
6275       fi
6276       MOZ_DBGRINFO_MODULES="$i $MOZ_DBGRINFO_MODULES";
6277     done ])
6279 dnl ========================================================
6280 dnl Enable garbage collector
6281 dnl ========================================================
6282 MOZ_ARG_ENABLE_BOOL(boehm,
6283 [  --enable-boehm          Enable the Boehm Garbage Collector],
6284     GC_LEAK_DETECTOR=1,
6285     GC_LEAK_DETECTOR= )
6286 if test -n "$GC_LEAK_DETECTOR"; then
6287     AC_DEFINE(GC_LEAK_DETECTOR)
6290 dnl ========================================================
6291 dnl Disable runtime logging checks
6292 dnl ========================================================
6293 MOZ_ARG_DISABLE_BOOL(logging,
6294 [  --disable-logging       Disable logging facilities],
6295     NS_DISABLE_LOGGING=1,
6296     NS_DISABLE_LOGGING= )
6297 if test "$NS_DISABLE_LOGGING"; then
6298     AC_DEFINE(NS_DISABLE_LOGGING)
6299 else
6300     AC_DEFINE(MOZ_LOGGING)
6303 dnl ========================================================
6304 dnl = dnl This will enable logging of addref, release, ctor, dtor.
6305 dnl ========================================================
6306 _ENABLE_LOGREFCNT=42
6307 MOZ_ARG_ENABLE_BOOL(logrefcnt,
6308 [  --enable-logrefcnt      Enable logging of refcounts (default=debug) ],
6309     _ENABLE_LOGREFCNT=1,
6310     _ENABLE_LOGREFCNT= )
6311 if test "$_ENABLE_LOGREFCNT" = "1"; then
6312     AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
6313 elif test -z "$_ENABLE_LOGREFCNT"; then
6314     AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
6317 dnl ========================================================
6318 dnl = Enable trace malloc
6319 dnl ========================================================
6320 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
6321 MOZ_ARG_ENABLE_BOOL(trace-malloc,
6322 [  --enable-trace-malloc   Enable malloc tracing],
6323     NS_TRACE_MALLOC=1,
6324     NS_TRACE_MALLOC= )
6325 if test "$NS_TRACE_MALLOC"; then
6326   # Please, Mr. Linker Man, don't take away our symbol names
6327   MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6328   USE_ELF_DYNSTR_GC=
6329   AC_DEFINE(NS_TRACE_MALLOC)
6331 AC_SUBST(NS_TRACE_MALLOC)
6333 dnl ========================================================
6334 dnl = Enable jemalloc
6335 dnl ========================================================
6336 MOZ_ARG_ENABLE_BOOL(jemalloc,
6337 [  --enable-jemalloc       Replace memory allocator with jemalloc],
6338     MOZ_MEMORY=1,
6339     MOZ_MEMORY=)
6341 if test "$NS_TRACE_MALLOC"; then
6342     MOZ_MEMORY=
6345 if test "$MOZ_MEMORY"; then
6347   dnl Don't try to run compiler tests on Windows  
6348   if test "$OS_ARCH" = "WINNT"; then
6349     if test -z "$HAVE_64BIT_OS"; then
6350       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6351     else
6352       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6353     fi
6354   else
6355     AC_CHECK_SIZEOF([int *], [4])
6356     case "${ac_cv_sizeof_int_p}" in
6357     4)
6358       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6359       ;;
6360     8)
6361       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6362       ;;
6363     *)
6364       AC_MSG_ERROR([Unexpected pointer size])
6365       ;;
6366     esac
6367   fi
6369   AC_DEFINE(MOZ_MEMORY)
6370   if test "x$MOZ_DEBUG" = "x1"; then
6371     AC_DEFINE(MOZ_MEMORY_DEBUG)
6372   fi
6373   dnl The generic feature tests that determine how to compute ncpus are long and
6374   dnl complicated.  Therefore, simply define special cpp variables for the
6375   dnl platforms we have special knowledge of.
6376   case "${target_os}" in
6377   darwin*)
6378     AC_DEFINE(MOZ_MEMORY_DARWIN)
6379     ;;
6380   *-freebsd*)
6381     AC_DEFINE(MOZ_MEMORY_BSD)
6382     ;;
6383   *linux*)
6384     AC_DEFINE(MOZ_MEMORY_LINUX)
6385     ;;
6386   netbsd*)
6387     AC_DEFINE(MOZ_MEMORY_BSD)
6388     ;;
6389   solaris*)
6390     AC_DEFINE(MOZ_MEMORY_SOLARIS)
6391     ;;
6392   msvc*|mks*|cygwin*|mingw*)
6393     AC_DEFINE(MOZ_MEMORY_WINDOWS)
6394     dnl XXX: should test for vc8sp1 here, otherwise patching the crt src
6395     dnl will fail miserably
6396     if test "$_CC_SUITE" -lt "8"; then
6397         AC_MSG_ERROR([Building jemalloc requires Visual C++ 2005 or better])
6398     fi
6399     if test -z "$WIN32_CRT_SRC_DIR" -a -z "$WIN32_CUSTOM_CRT_DIR"; then
6400       if test -z "$VCINSTALLDIR" -o ! -d "$VCINSTALLDIR"; then
6401         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.])
6402       else
6403         WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src"
6404       fi
6405     fi
6406     if test -z "$WIN32_CRT_SRC_DIR"; then
6407       # pre-built dll
6408       WIN32_CUSTOM_CRT_DIR=`cd "$WIN32_CUSTOM_CRT_DIR" && pwd`
6409       _WIN_UNIX_CRT_PATH="$WIN32_CUSTOM_CRT_DIR"
6410     else
6411       # CRT source directory
6412       WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd`
6413       _CRT_BASE_DIR=`basename "$WIN32_CRT_SRC_DIR"`
6414       _WIN_UNIX_CRT_PATH="$_objdir/memory/jemalloc/$_CRT_BASE_DIR/build/intel"
6415     fi
6416     dnl need win32 paths in LIB, hence this python abuse.  extra brackets
6417     dnl are to avoid m4
6418     _WIN_CRT_PATH=[`$PYTHON -c 'import sys, os.path; print os.path.normpath(sys.argv[1])' "$_WIN_UNIX_CRT_PATH"`]
6419     MOZ_LIB="$_WIN_CRT_PATH;$LIB"
6420     dnl Needs to be in PATH too, since our tools will wind up linked against it.
6421     dnl This needs to be unix style.
6422     MOZ_PATH="$PATH:$_WIN_UNIX_CRT_PATH"
6423     dnl Statically link the C++ stdlib.  We only use this for Breakpad anyway.
6424     AC_DEFINE(_STATIC_CPPLIB)
6425     dnl Don't generate a manifest, since we're linking to a custom CRT.
6426     LDFLAGS="$LDFLAGS -MANIFEST:NO"
6427     dnl Also pass this to NSPR/NSS
6428     DLLFLAGS="$DLLFLAGS -MANIFEST:NO"
6429     export DLLFLAGS
6430     ;;
6431   *)
6432     AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
6433     ;;
6434   esac
6436   AC_ARG_WITH([valgrind],
6437     [  --with-valgrind         Enable valgrind integration hooks],
6438     [enable_valgrind="yes"], [enable_valgrind="no"])
6439   AC_CHECK_HEADER([valgrind/valgrind.h], [], [enable_valgrind="no"])
6440   if test "x$enable_valgrind" = "xyes" ; then
6441     AC_DEFINE(MOZ_VALGRIND)
6442   fi
6444 AC_SUBST(MOZ_MEMORY)
6445 AC_SUBST(WIN32_CRT_SRC_DIR)
6446 AC_SUBST(WIN32_CUSTOM_CRT_DIR)
6447 AC_SUBST(MOZ_LIB)
6448 AC_SUBST(MOZ_PATH)
6449 dnl Need to set this for make because NSS doesn't have configure
6450 AC_SUBST(DLLFLAGS)
6452 dnl ========================================================
6453 dnl = Use malloc wrapper lib
6454 dnl ========================================================
6455 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
6456 [  --enable-wrap-malloc    Wrap malloc calls (gnu linker only)],
6457     _WRAP_MALLOC=1,
6458     _WRAP_MALLOC= )
6460 if test -n "$_WRAP_MALLOC"; then
6461     if test "$GNU_CC"; then
6462     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"
6463     MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) -o $@'
6464     fi
6467 dnl ========================================================
6468 dnl = Location of malloc wrapper lib
6469 dnl ========================================================
6470 MOZ_ARG_WITH_STRING(wrap-malloc,
6471 [  --with-wrap-malloc=DIR  Location of malloc wrapper library],
6472     WRAP_MALLOC_LIB=$withval)
6474 dnl ========================================================
6475 dnl = Use Electric Fence
6476 dnl ========================================================
6477 MOZ_ARG_ENABLE_BOOL(efence,
6478 [  --enable-efence         Link with Electric Fence],
6479     _ENABLE_EFENCE=1,
6480     _ENABLE_EFENCE= )
6481 if test -n "$_ENABLE_EFENCE"; then
6482     AC_CHECK_LIB(efence,malloc)
6485 dnl ========================================================
6486 dnl jprof
6487 dnl ========================================================
6488 MOZ_ARG_ENABLE_BOOL(jprof,
6489 [  --enable-jprof          Enable jprof profiling tool (needs mozilla/tools/jprof)],
6490     MOZ_JPROF=1,
6491     MOZ_JPROF= )
6492 if test -n "$MOZ_JPROF"; then
6493     AC_DEFINE(MOZ_JPROF)
6496 dnl ========================================================
6497 dnl shark
6498 dnl ========================================================
6499 MOZ_ARG_ENABLE_BOOL(shark,
6500 [  --enable-shark          Enable shark remote profiling (needs CHUD framework)],
6501     MOZ_SHARK=1,
6502     MOZ_SHARK= )
6503 if test -n "$MOZ_SHARK"; then
6504     AC_DEFINE(MOZ_SHARK)
6507 dnl ========================================================
6508 dnl callgrind
6509 dnl ========================================================
6510 MOZ_ARG_ENABLE_BOOL(callgrind,
6511 [  --enable-callgrind      Enable callgrind profiling],
6512     MOZ_CALLGRIND=1,
6513     MOZ_CALLGRIND= )
6514 if test -n "$MOZ_CALLGRIND"; then
6515     AC_DEFINE(MOZ_CALLGRIND)
6518 dnl ========================================================
6519 dnl vtune
6520 dnl ========================================================
6521 MOZ_ARG_ENABLE_BOOL(vtune,
6522 [  --enable-vtune          Enable vtune profiling],
6523     MOZ_VTUNE=1,
6524     MOZ_VTUNE= )
6525 if test -n "$MOZ_VTUNE"; then
6526     AC_DEFINE(MOZ_VTUNE)
6529 dnl ========================================================
6530 dnl = Enable static checking using gcc-dehydra
6531 dnl ========================================================
6533 MOZ_ARG_WITH_STRING(static-checking,
6534 [  --with-static-checking=path/to/gcc_dehydra.so
6535                             Enable static checking of code using GCC-dehydra],
6536     DEHYDRA_PATH=$withval,
6537     DEHYDRA_PATH= )
6539 if test -n "$DEHYDRA_PATH"; then
6540     if ! test -f "$DEHYDRA_PATH"; then
6541         AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
6542     fi
6543     AC_DEFINE(NS_STATIC_CHECKING)
6545 AC_SUBST(DEHYDRA_PATH)
6547 dnl ========================================================
6548 dnl = Enable stripping of libs & executables
6549 dnl ========================================================
6550 MOZ_ARG_ENABLE_BOOL(strip,
6551 [  --enable-strip          Enable stripping of libs & executables ],
6552     ENABLE_STRIP=1,
6553     ENABLE_STRIP= )
6555 dnl ========================================================
6556 dnl = Enable stripping of libs & executables when packaging
6557 dnl ========================================================
6558 MOZ_ARG_ENABLE_BOOL(install-strip,
6559 [  --enable-install-strip  Enable stripping of libs & executables when packaging ],
6560     PKG_SKIP_STRIP= ,
6561     PKG_SKIP_STRIP=1)
6563 dnl ========================================================
6564 dnl = --enable-elf-dynstr-gc
6565 dnl ========================================================
6566 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
6567 [  --enable-elf-dynstr-gc  Enable elf dynstr garbage collector (opt builds only)],
6568     USE_ELF_DYNSTR_GC=1,
6569     USE_ELF_DYNSTR_GC= )
6571 dnl ========================================================
6572 dnl = --enable-old-abi-compat-wrappers
6573 dnl ========================================================
6574 dnl on x86 linux, the current builds of some popular plugins (notably
6575 dnl flashplayer and real) expect a few builtin symbols from libgcc
6576 dnl which were available in some older versions of gcc.  However,
6577 dnl they're _NOT_ available in newer versions of gcc (eg 3.1), so if
6578 dnl we want those plugin to work with a gcc-3.1 built binary, we need
6579 dnl to provide these symbols.  MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS defaults
6580 dnl to true on x86 linux, and false everywhere else.
6583 MOZ_ARG_ENABLE_BOOL(old-abi-compat-wrappers,
6584 [  --enable-old-abi-compat-wrappers
6585                           Support old GCC ABI symbols to ease the pain 
6586                           of the linux compiler change],
6587     MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1,
6588     MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS= )
6589 if test "$COMPILE_ENVIRONMENT"; then
6590 if test "$MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS"; then
6591     AC_LANG_SAVE
6592     AC_LANG_CPLUSPLUS
6593     AC_CHECK_FUNCS(__builtin_vec_new __builtin_vec_delete __builtin_new __builtin_delete __pure_virtual)
6594     AC_LANG_RESTORE
6595     AC_DEFINE(MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS)
6597 fi # COMPILE_ENVIRONMENT
6599 dnl ========================================================
6600 dnl = --enable-prebinding
6601 dnl ========================================================
6602 MOZ_ARG_ENABLE_BOOL(prebinding,
6603 [  --enable-prebinding     Enable prebinding (Mac OS X only)],
6604     USE_PREBINDING=1,
6605     USE_PREBINDING= )
6607 dnl ========================================================
6608 dnl = 
6609 dnl = Profiling and Instrumenting
6610 dnl = 
6611 dnl ========================================================
6612 MOZ_ARG_HEADER(Profiling and Instrumenting)
6614 dnl ========================================================
6615 dnl = Enable timeline service, which provides lightweight
6616 dnl = instrumentation of mozilla for performance measurement.
6617 dnl = Timeline is off by default.
6618 dnl ========================================================
6619 MOZ_ARG_ENABLE_BOOL(timeline,
6620 [  --enable-timeline       Enable timeline services ],
6621     MOZ_TIMELINE=1,
6622     MOZ_TIMELINE= )
6623 if test -n "$MOZ_TIMELINE"; then
6624     AC_DEFINE(MOZ_TIMELINE)
6627 dnl ========================================================
6628 dnl Turn on reflow counting
6629 dnl ========================================================
6630 MOZ_ARG_ENABLE_BOOL(reflow-perf,
6631 [  --enable-reflow-perf    Enable reflow performance tracing],
6632     MOZ_REFLOW_PERF=1,
6633     MOZ_REFLOW_PERF= )
6634 if test -n "$MOZ_REFLOW_PREF"; then
6635     AC_DEFINE(MOZ_REFLOW_PREF)
6637 AC_SUBST(MOZ_REFLOW_PERF)
6639 dnl ========================================================
6640 dnl Enable performance metrics.
6641 dnl ========================================================
6642 MOZ_ARG_ENABLE_BOOL(perf-metrics,
6643 [  --enable-perf-metrics   Enable performance metrics],
6644     MOZ_PERF_METRICS=1,
6645     MOZ_PERF_METRICS= )
6646 if test -n "$MOZ_PERF_METRICS"; then
6647     AC_DEFINE(MOZ_PERF_METRICS)
6650 dnl ========================================================
6651 dnl Enable code size metrics.
6652 dnl ========================================================
6653 MOZ_ARG_ENABLE_BOOL(codesighs,
6654 [  --enable-codesighs      Enable code size analysis tools],
6655     _ENABLE_CODESIGHS=1,
6656     _ENABLE_CODESIGHS= )
6657 if test -n "$_ENABLE_CODESIGHS"; then
6658     if test -d $srcdir/tools/codesighs; then 
6659         MOZ_MAPINFO=1
6660     else
6661         AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
6662     fi
6665 dnl ========================================================
6666 dnl = Add support for Eazel profiler
6667 dnl ========================================================
6668 MOZ_ARG_ENABLE_BOOL(eazel-profiler-support,
6669 [  --enable-eazel-profiler-support
6670                           Enable Corel/Eazel profiler support],
6671     ENABLE_EAZEL_PROFILER=1,
6672     ENABLE_EAZEL_PROFILER= )
6673 if test -n "$ENABLE_EAZEL_PROFILER"; then
6674     AC_DEFINE(ENABLE_EAZEL_PROFILER)
6675     USE_ELF_DYNSTR_GC=
6676     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6677     EAZEL_PROFILER_CFLAGS="-g -O -gdwarf-2 -finstrument-functions -D__NO_STRING_INLINES  -D__NO_MATH_INLINES"
6678     EAZEL_PROFILER_LIBS="-lprofiler -lpthread"
6681 MOZ_ARG_ENABLE_STRING(profile-modules,
6682 [  --enable-profile-modules
6683                           Enable/disable profiling for specific modules],
6684 [ MOZ_PROFILE_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6686 MOZ_ARG_ENABLE_BOOL(insure,
6687 [  --enable-insure         Enable insure++ instrumentation (linux only)],
6688     _ENABLE_INSURE=1,
6689     _ENABLE_INSURE= )
6690 if test -n "$_ENABLE_INSURE"; then
6691     MOZ_INSURE="insure"
6692     MOZ_INSURIFYING=1
6693     MOZ_INSURE_DIRS="."
6694     MOZ_INSURE_EXCLUDE_DIRS="config"
6697 MOZ_ARG_WITH_STRING(insure-dirs,
6698 [  --with-insure-dirs=DIRS
6699                           Dirs to instrument with insure ],
6700     MOZ_INSURE_DIRS=$withval )
6702 MOZ_ARG_WITH_STRING(insure-exclude-dirs,
6703 [  --with-insure-exclude-dirs=DIRS
6704                           Dirs to not instrument with insure ],
6705     MOZ_INSURE_EXCLUDE_DIRS="config $withval" )
6707 dnl ========================================================
6708 dnl = Support for Quantify (Windows)
6709 dnl ========================================================
6710 MOZ_ARG_ENABLE_BOOL(quantify,
6711 [  --enable-quantify      Enable Quantify support (Windows only) ],
6712     MOZ_QUANTIFY=1,
6713     MOZ_QUANTIFY= )
6715 dnl ========================================================
6716 dnl = Support for demangling undefined symbols
6717 dnl ========================================================
6718 if test -z "$SKIP_LIBRARY_CHECKS"; then
6719     AC_LANG_SAVE
6720     AC_LANG_CPLUSPLUS
6721     AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
6722     AC_LANG_RESTORE
6725 # Demangle only for debug or trace-malloc builds
6726 MOZ_DEMANGLE_SYMBOLS=
6727 if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
6728     MOZ_DEMANGLE_SYMBOLS=1
6729     AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
6731 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
6733 dnl ========================================================
6734 dnl = Support for gcc stack unwinding (from gcc 3.3)
6735 dnl ========================================================
6736 if test "$HAVE_GCC3_ABI" && test -z "$SKIP_LIBRARY_CHECKS"; then
6737     AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
6740 dnl ========================================================
6741 dnl =
6742 dnl = Misc. Options
6743 dnl = 
6744 dnl ========================================================
6745 MOZ_ARG_HEADER(Misc. Options)
6747 dnl ========================================================
6748 dnl update xterm title
6749 dnl ========================================================
6750 MOZ_ARG_ENABLE_BOOL(xterm-updates,
6751 [  --enable-xterm-updates  Update XTERM titles with current command.],
6752     MOZ_UPDATE_XTERM=1,
6753     MOZ_UPDATE_XTERM= )
6755 dnl =========================================================
6756 dnl = Chrome format
6757 dnl =========================================================
6758 MOZ_ARG_ENABLE_STRING([chrome-format],
6759 [  --enable-chrome-format=jar|flat|both|symlink
6760                           Select FORMAT of chrome files (default=jar)],
6761     MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
6763 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
6764     MOZ_CHROME_FILE_FORMAT=jar
6767 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" && 
6768     test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
6769     test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
6770     test "$MOZ_CHROME_FILE_FORMAT" != "both"; then
6771     AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, or symlink])
6774 dnl ========================================================
6775 dnl = Define default location for MOZILLA_FIVE_HOME
6776 dnl ========================================================
6777 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
6778 [  --with-default-mozilla-five-home
6779                           Set the default value for MOZILLA_FIVE_HOME],
6780 [ val=`echo $withval`
6781   AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
6783 dnl ========================================================
6784 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
6785 dnl ========================================================
6786 MOZ_ARG_WITH_STRING(user-appdir,
6787 [  --with-user-appdir=DIR  Set user-specific appdir (default=.mozilla)],
6788 [ val=`echo $withval`
6789 if echo "$val" | grep "\/" >/dev/null; then
6790     AC_MSG_ERROR("Homedir must be single relative path.")
6791 else 
6792     MOZ_USER_DIR="$val"
6793 fi])
6795 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
6797 dnl ========================================================
6798 dnl = Doxygen configuration
6799 dnl ========================================================
6800 dnl Use commas to specify multiple dirs to this arg
6801 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
6802 MOZ_ARG_WITH_STRING(doc-input-dirs,
6803 [  --with-doc-input-dirs=DIRS
6804                           Header/idl dirs to create docs from],
6805 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6806 AC_SUBST(MOZ_DOC_INPUT_DIRS)
6808 dnl Use commas to specify multiple dirs to this arg
6809 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
6810 MOZ_ARG_WITH_STRING(doc-include-dirs,
6811 [  --with-doc-include-dirs=DIRS  
6812                           Include dirs to preprocess doc headers],
6813 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6814 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
6816 MOZ_DOC_OUTPUT_DIR='./dist/docs'
6817 MOZ_ARG_WITH_STRING(doc-output-dir,
6818 [  --with-doc-output-dir=DIR
6819                           Dir to generate docs into],
6820 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
6821 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
6823 if test -z "$SKIP_COMPILER_CHECKS"; then
6824 dnl ========================================================
6825 dnl =
6826 dnl = Compiler Options
6827 dnl = 
6828 dnl ========================================================
6829 MOZ_ARG_HEADER(Compiler Options)
6831 dnl ========================================================
6832 dnl Check for gcc -pipe support
6833 dnl ========================================================
6834 AC_MSG_CHECKING([for gcc -pipe support])
6835 if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
6836     echo '#include <stdio.h>' > dummy-hello.c
6837     echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
6838     ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
6839     cat dummy-hello.s | ${AS_BIN} -o dummy-hello.S - 2>&5
6840     if test $? = 0; then
6841         _res_as_stdin="yes"
6842     else
6843         _res_as_stdin="no"
6844     fi
6845     if test "$_res_as_stdin" = "yes"; then
6846         _SAVE_CFLAGS=$CFLAGS
6847         CFLAGS="$CFLAGS -pipe"
6848         AC_TRY_COMPILE( [ #include <stdio.h> ],
6849             [printf("Hello World\n");],
6850             [_res_gcc_pipe="yes"],
6851             [_res_gcc_pipe="no"] )
6852         CFLAGS=$_SAVE_CFLAGS
6853     fi
6854     if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then
6855         _res="yes";
6856         CFLAGS="$CFLAGS -pipe"
6857         CXXFLAGS="$CXXFLAGS -pipe"
6858     else
6859         _res="no"
6860     fi
6861     rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
6862     AC_MSG_RESULT([$_res])
6863 else
6864     AC_MSG_RESULT([no])
6867 dnl pass -Wno-long-long to the compiler
6868 MOZ_ARG_ENABLE_BOOL(long-long-warning,
6869 [  --enable-long-long-warning 
6870                           Warn about use of non-ANSI long long type],
6871     _IGNORE_LONG_LONG_WARNINGS=,
6872     _IGNORE_LONG_LONG_WARNINGS=1)
6874 if test "$_IGNORE_LONG_LONG_WARNINGS"; then
6875      _SAVE_CFLAGS="$CFLAGS"
6876      CFLAGS="$CFLAGS ${_COMPILER_PREFIX}-Wno-long-long"
6877      AC_MSG_CHECKING([whether compiler supports -Wno-long-long])
6878      AC_TRY_COMPILE([], [return(0);], 
6879         [ _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6880           _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6881           result="yes" ], result="no")
6882      AC_MSG_RESULT([$result])
6883      CFLAGS="$_SAVE_CFLAGS"
6886 dnl ========================================================
6887 dnl Profile guided optimization
6888 dnl ========================================================
6889 dnl Test for profiling options
6890 dnl Under gcc 3.3, use -fprofile-arcs/-fbranch-probabilities
6891 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
6893 dnl Provide a switch to disable PGO even when called via profiledbuild.
6894 MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
6895 [  --disable-profile-guided-optimization
6896                            Don't build with PGO even if called via make profiledbuild],
6897 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
6898 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
6900 AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
6902 _SAVE_CFLAGS="$CFLAGS"
6903 CFLAGS="$CFLAGS -fprofile-generate"
6905 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
6906 AC_TRY_COMPILE([], [return 0;],
6907                [ PROFILE_GEN_CFLAGS="-fprofile-generate"
6908                  result="yes" ], result="no")
6909 AC_MSG_RESULT([$result])
6911 if test $result = "yes"; then
6912   PROFILE_GEN_LDFLAGS="-fprofile-generate"
6913   PROFILE_USE_CFLAGS="-fprofile-use"
6914   PROFILE_USE_LDFLAGS="-fprofile-use"
6915 else
6916   CFLAGS="$_SAVE_CFLAGS -fprofile-arcs"
6917   AC_MSG_CHECKING([whether C compiler supports -fprofile-arcs])
6918   AC_TRY_COMPILE([], [return 0;],
6919                  [ PROFILE_GEN_CFLAGS="-fprofile-arcs"
6920                    result="yes" ], result="no")
6921   AC_MSG_RESULT([$result])
6922   if test $result = "yes"; then
6923     PROFILE_USE_CFLAGS="-fbranch-probabilities"
6924   fi
6925   # don't really care, this is an old GCC
6926   PROFILE_GEN_LDFLAGS=
6927   PROFILE_USE_LDFLAGS=
6930 CFLAGS="$_SAVE_CFLAGS"
6932 if test -n "$INTEL_CC"; then
6933   PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
6934   PROFILE_GEN_LDFLAGS=
6935   PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
6936   PROFILE_USE_LDFLAGS=
6939 dnl Sun Studio on Solaris
6940 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
6941   PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
6942   PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
6943   if test "$CPU_ARCH" != "sparc"; then
6944     PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
6945     PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
6946   else
6947     PROFILE_USE_CFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
6948     PROFILE_USE_LDFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
6949   fi
6952 AC_SUBST(PROFILE_GEN_CFLAGS)
6953 AC_SUBST(PROFILE_GEN_LDFLAGS)
6954 AC_SUBST(PROFILE_USE_CFLAGS)
6955 AC_SUBST(PROFILE_USE_LDFLAGS)
6957 AC_LANG_CPLUSPLUS
6959 dnl ========================================================
6960 dnl Test for -pedantic bustage
6961 dnl ========================================================
6962 MOZ_ARG_DISABLE_BOOL(pedantic,
6963 [  --disable-pedantic      Issue all warnings demanded by strict ANSI C ],
6964 _PEDANTIC= )
6965 if test "$_PEDANTIC"; then
6966     _SAVE_CXXFLAGS=$CXXFLAGS
6967     CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
6968     AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
6969     AC_TRY_COMPILE([$configure_static_assert_macros],
6970                    [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
6971                    result="no", result="yes" )
6972     AC_MSG_RESULT([$result])
6973     CXXFLAGS="$_SAVE_CXXFLAGS"
6975     case "$result" in
6976     no)
6977         _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic"
6978         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
6979         ;;
6980     yes)
6981         AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic.  Reconfigure using --disable-pedantic. ])
6982         ;;
6983     esac
6986 dnl ========================================================
6987 dnl Test for correct temporary object destruction order
6988 dnl ========================================================
6989 dnl We want to make sure the compiler follows the C++ spec here as 
6990 dnl xpcom and the string classes depend on it (bug 235381).
6991 AC_MSG_CHECKING([for correct temporary object destruction order])
6992 AC_TRY_RUN([ class A {
6993              public:  A(int& x) : mValue(x) {}
6994                       ~A() { mValue--; }
6995                       operator char**() { return 0; }
6996              private:  int& mValue;
6997              };
6998              void func(char **arg) {}
6999              int m=2;
7000              void test() {
7001                   func(A(m));
7002                   if (m==1) m = 0;
7003              }
7004              int main() {
7005                  test();
7006                  return(m);
7007              }
7008              ],
7009      result="yes", result="no", result="maybe")
7010 AC_MSG_RESULT([$result])
7012 if test "$result" = "no"; then
7013     AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
7016 dnl ========================================================
7017 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
7018 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
7019 dnl raw pointers in nsCOMPtr.h.  (VC++ has the same bug.)
7020 dnl ========================================================
7021 _SAVE_CXXFLAGS=$CXXFLAGS
7022 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
7023 AC_CACHE_CHECK(for correct overload resolution with const and templates,
7024     ac_nscap_nonconst_opeq_bug,
7025     [AC_TRY_COMPILE([
7026                       template <class T>
7027                       class Pointer
7028                         {
7029                         public:
7030                           T* myPtr;
7031                         };
7032                       
7033                       template <class T, class U>
7034                       int operator==(const Pointer<T>& rhs, U* lhs)
7035                         {
7036                           return rhs.myPtr == lhs;
7037                         }
7038                       
7039                       template <class T, class U>
7040                       int operator==(const Pointer<T>& rhs, const U* lhs)
7041                         {
7042                           return rhs.myPtr == lhs;
7043                         }
7044                     ],
7045                     [
7046                       Pointer<int> foo;
7047                       const int* bar;
7048                       return foo == bar;
7049                     ],
7050                     ac_nscap_nonconst_opeq_bug="no",
7051                     ac_nscap_nonconst_opeq_bug="yes")])
7052 CXXFLAGS="$_SAVE_CXXFLAGS"
7054 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
7055     AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
7057 fi # SKIP_COMPILER_CHECKS
7059 dnl ========================================================
7060 dnl C++ rtti
7061 dnl Should be smarter and check that the compiler does indeed have rtti
7062 dnl ========================================================
7063 MOZ_ARG_ENABLE_BOOL(cpp-rtti,
7064 [  --enable-cpp-rtti       Enable C++ RTTI ],
7065 [ _MOZ_USE_RTTI=1 ],
7066 [ _MOZ_USE_RTTI= ])
7068 if test "$_MOZ_USE_RTTI"; then
7069    _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
7070 else
7071    _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
7074 AC_SUBST(_MOZ_RTTI_FLAGS_ON)
7076 dnl ========================================================
7077 dnl C++ exceptions (g++/egcs only - for now)
7078 dnl Should be smarter and check that the compiler does indeed have exceptions
7079 dnl ========================================================
7080 MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
7081 [  --enable-cpp-exceptions Enable C++ exceptions ],
7082 [ _MOZ_CPP_EXCEPTIONS=1 ],
7083 [ _MOZ_CPP_EXCEPTIONS= ])
7085 if test "$_MOZ_CPP_EXCEPTIONS"; then
7086     _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_ON
7087 else
7088     _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_OFF
7091 # Irix & OSF native compilers do not like exception declarations 
7092 # when exceptions are disabled
7093 if test -n "$MIPSPRO_CXX" -o -n "$COMPAQ_CXX" -o -n "$VACPP"; then
7094     AC_DEFINE(CPP_THROW_NEW, [])
7095 else
7096     AC_DEFINE(CPP_THROW_NEW, [throw()])
7098 AC_LANG_C
7100 dnl ========================================================
7101 dnl =
7102 dnl = Build depencency options
7103 dnl =
7104 dnl ========================================================
7105 MOZ_ARG_HEADER(Build dependencies)
7107 dnl ========================================================
7108 dnl = Do not auto generate dependency info
7109 dnl ========================================================
7110 MOZ_AUTO_DEPS=1
7111 MOZ_ARG_DISABLE_BOOL(auto-deps,
7112 [  --disable-auto-deps     Do not automatically generate dependency info],
7113     MOZ_AUTO_DEPS=,
7114     MOZ_AUTO_DEPS=1)
7116 if test -n "$MOZ_AUTO_DEPS"; then
7117 dnl ========================================================
7118 dnl = Use mkdepend instead of $CC -MD for dependency generation
7119 dnl ========================================================
7120 _cpp_md_flag=
7121 MOZ_ARG_DISABLE_BOOL(md,
7122 [  --disable-md            Do not use compiler-based dependencies ],
7123   [_cpp_md_flag=],
7124   [_cpp_md_flag=1],
7125   [dnl Default is to turn on -MD if using GNU-compatible compilers
7126    if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
7127      _cpp_md_flag=1
7128    fi
7129   dnl Default is to use -xM if using Sun Studio on Solaris
7130    if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
7131      _cpp_md_flag=1
7132    fi])
7133 if test "$_cpp_md_flag"; then
7134   COMPILER_DEPEND=1
7135   if test "$OS_ARCH" = "OpenVMS"; then
7136     _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(basename $(@F)).pp))'
7137   else
7138     _DEPEND_CFLAGS='$(filter-out %/.pp,-Wp,-MD,$(MDDEPDIR)/$(basename $(@F)).pp)'
7139   fi
7140   dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7141   if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
7142     _DEPEND_CFLAGS=
7143   fi
7144 else
7145   COMPILER_DEPEND=
7146   _USE_CPP_INCLUDE_FLAG=
7147   _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7148   _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7150 fi # MOZ_AUTO_DEPS
7151 MDDEPDIR='.deps'
7152 AC_SUBST(MOZ_AUTO_DEPS)
7153 AC_SUBST(COMPILER_DEPEND)
7154 AC_SUBST(MDDEPDIR)
7157 dnl ========================================================
7158 dnl =
7159 dnl = Static Build Options
7160 dnl =
7161 dnl ========================================================
7162 MOZ_ARG_HEADER(Static build options)
7164 MOZ_ARG_ENABLE_BOOL(static,
7165 [  --enable-static         Enable building of internal static libs],
7166     BUILD_STATIC_LIBS=1,
7167     BUILD_STATIC_LIBS=)
7169 dnl Disable libxul in debug builds, but not for xulrunner.
7170 if test -n "$MOZ_DEBUG" -a "$MOZ_BUILD_APP" != "xulrunner"; then
7171    MOZ_ENABLE_LIBXUL=
7174 MOZ_ARG_ENABLE_BOOL(libxul,
7175 [  --enable-libxul         Enable building of libxul],
7176     MOZ_ENABLE_LIBXUL=1,
7177     MOZ_ENABLE_LIBXUL=)
7179 if test -n "$MOZ_STATIC_BUILD_UNSUPPORTED" -a -n "$BUILD_STATIC_LIBS"; then
7180         AC_MSG_ERROR([--enable-static is not supported for building $MOZ_APP_NAME. You probably want --enable-libxul.])
7183 if test -n "$MOZ_ENABLE_LIBXUL" -a -n "$BUILD_STATIC_LIBS"; then
7184         AC_MSG_ERROR([--enable-libxul is not compatible with --enable-static])
7187 if test -n "$MOZ_ENABLE_LIBXUL" -a -z "$MOZ_XUL_APP"; then
7188         AC_MSG_ERROR([--enable-libxul is only compatible with toolkit XUL applications.])
7191 if test -n "$MOZ_ENABLE_LIBXUL"; then
7192     XPCOM_LIBS="$LIBXUL_LIBS"
7193     AC_DEFINE(MOZ_ENABLE_LIBXUL)
7194 else
7195     if test -n "$BUILD_STATIC_LIBS"; then
7196         AC_DEFINE(MOZ_STATIC_BUILD)
7197     fi
7198     XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS"
7201 dnl ========================================================
7202 dnl = Force JS to be a static lib
7203 dnl ========================================================
7204 MOZ_ARG_ENABLE_BOOL(js-static-build,
7205 [  --enable-js-static-build  Force js to be a static lib],
7206     JS_STATIC_BUILD=1,
7207     JS_STATIC_BUILD= )
7209 AC_SUBST(JS_STATIC_BUILD)
7210         
7211 if test -n "$JS_STATIC_BUILD"; then
7212     AC_DEFINE(EXPORT_JS_API)
7214 if test -z "$BUILD_STATIC_LIBS"; then
7215     AC_MSG_ERROR([--enable-js-static-build is only compatible with --enable-static])
7220 dnl ========================================================
7221 dnl =
7222 dnl = Standalone module options
7223 dnl = 
7224 dnl ========================================================
7225 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7227 dnl Check for GLib and libIDL.
7228 dnl ========================================================
7229 case "$target_os" in
7230 msvc*|mks*|cygwin*|mingw*|wince*)
7231     SKIP_IDL_CHECK="yes"
7232     ;;
7234     SKIP_IDL_CHECK="no"
7235     ;;
7236 esac
7238 if test -z "$COMPILE_ENVIRONMENT"; then
7239     SKIP_IDL_CHECK="yes"
7242 dnl = Allow users to disable libIDL checking for standalone modules
7243 MOZ_ARG_WITHOUT_BOOL(libIDL,
7244 [  --without-libIDL        Skip check for libIDL (standalone modules only)],
7245         SKIP_IDL_CHECK="yes")
7247 if test "$SKIP_IDL_CHECK" = "no"
7248 then
7249     _LIBIDL_FOUND=
7250     if test "$MACOS_SDK_DIR"; then 
7251       dnl xpidl, and therefore libIDL, is only needed on the build host.
7252       dnl Don't build it against the SDK, as that causes problems.
7253       _MACSAVE_CFLAGS="$CFLAGS"
7254       _MACSAVE_LIBS="$LIBS"
7255       _MACSAVE_LDFLAGS="$LDFLAGS"
7256       _MACSAVE_NEXT_ROOT="$NEXT_ROOT"
7257       changequote(,)
7258       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"`
7259       LIBS=`echo $LIBS|sed -e "s?-L${MACOS_SDK_DIR}/usr/lib[^ ]*??g"`
7260       LDFLAGS=`echo $LDFLAGS|sed -e "s?-Wl,-syslibroot,${MACOS_SDK_DIR}??g"`
7261       changequote([,])
7262       unset NEXT_ROOT
7263     fi
7265     if test "$MOZ_ENABLE_GTK2"; then
7266         PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0 glib-2.0 gobject-2.0, _LIBIDL_FOUND=1,_LIBIDL_FOUND=)
7267     fi
7268     dnl if no gtk/libIDL1 or gtk2/libIDL2 combination was found, fall back
7269     dnl to either libIDL1 or libIDL2.
7270     if test -z "$_LIBIDL_FOUND"; then
7271         AM_PATH_LIBIDL($LIBIDL_VERSION,_LIBIDL_FOUND=1)
7272         if test -z "$_LIBIDL_FOUND"; then
7273             PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0,_LIBIDL_FOUND=1)
7274         fi
7275     fi
7276     dnl
7277     dnl If we don't have a libIDL config program & not cross-compiling, 
7278     dnl     look for orbit-config instead.
7279     dnl
7280     if test -z "$_LIBIDL_FOUND" && test -z "$CROSS_COMPILE"; then
7281         AC_PATH_PROGS(ORBIT_CONFIG, $ORBIT_CONFIG orbit-config)
7282         if test -n "$ORBIT_CONFIG"; then
7283             AC_MSG_CHECKING([for ORBit libIDL usability])
7284                 _ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags`
7285             _ORBIT_LIBS=`${ORBIT_CONFIG} client --libs`
7286             _ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}`
7287             _ORBIT_LIB_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-L/); } }' -- ${_ORBIT_LIBS}`
7288             LIBIDL_CFLAGS="$_ORBIT_INC_PATH"
7289             LIBIDL_LIBS="$_ORBIT_LIB_PATH -lIDL -lglib"
7290             LIBIDL_CONFIG=
7291             _SAVE_CFLAGS="$CFLAGS"
7292             _SAVE_LIBS="$LIBS"
7293             CFLAGS="$LIBIDL_CFLAGS $CFLAGS"
7294             LIBS="$LIBIDL_LIBS $LIBS"
7295             AC_TRY_RUN([
7296 #include <stdlib.h>
7297 #include <libIDL/IDL.h>
7298 int main() {
7299   char *s;
7300   s=strdup(IDL_get_libver_string());
7301   if(s==NULL) {
7302     exit(1);
7303   }
7304   exit(0);
7306             ], [_LIBIDL_FOUND=1
7307                 result="yes"],
7308                [LIBIDL_CFLAGS=
7309                 LIBIDL_LIBS=
7310                 result="no"],
7311                [_LIBIDL_FOUND=1
7312                 result="maybe"] )
7313             AC_MSG_RESULT($result)
7314             CFLAGS="$_SAVE_CFLAGS"
7315             LIBS="$_SAVE_LIBS"
7316         fi
7317     fi
7318     if test -z "$_LIBIDL_FOUND"; then
7319         AC_MSG_ERROR([libIDL not found.
7320         libIDL $LIBIDL_VERSION or higher is required.])
7321     fi
7322     if test "$MACOS_SDK_DIR"; then
7323       CFLAGS="$_MACSAVE_CFLAGS"
7324       LIBS="$_MACSAVE_LIBS"
7325       LDFLAGS="$_MACSAVE_LDFLAGS"
7326       if test -n "$_MACSAVE_NEXT_ROOT" ; then
7327         export NEXT_ROOT="$_MACSAVE_NEXT_ROOT"
7328       fi
7329     fi
7332 if test -n "$CROSS_COMPILE"; then
7333      if test -z "$HOST_LIBIDL_CONFIG"; then
7334         HOST_LIBIDL_CONFIG="$LIBIDL_CONFIG"
7335     fi
7336     if test -n "$HOST_LIBIDL_CONFIG" && test "$HOST_LIBIDL_CONFIG" != "no"; then
7337         HOST_LIBIDL_CFLAGS=`${HOST_LIBIDL_CONFIG} --cflags`
7338         HOST_LIBIDL_LIBS=`${HOST_LIBIDL_CONFIG} --libs`
7339     else
7340         HOST_LIBIDL_CFLAGS="$LIBIDL_CFLAGS"
7341         HOST_LIBIDL_LIBS="$LIBIDL_LIBS"
7342     fi
7345 if test -z "$SKIP_PATH_CHECKS"; then
7346 if test -z "${GLIB_CFLAGS}" || test -z "${GLIB_LIBS}" ; then
7347     if test "$MOZ_ENABLE_GTK2"; then
7348         PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
7349     else
7350         AM_PATH_GLIB(${GLIB_VERSION})
7351     fi
7355 if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then
7356     GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
7359 AC_SUBST(LIBIDL_CFLAGS)
7360 AC_SUBST(LIBIDL_LIBS)
7361 AC_SUBST(STATIC_LIBIDL)
7362 AC_SUBST(GLIB_CFLAGS)
7363 AC_SUBST(GLIB_LIBS)
7364 AC_SUBST(GLIB_GMODULE_LIBS)
7365 AC_SUBST(HOST_LIBIDL_CONFIG)
7366 AC_SUBST(HOST_LIBIDL_CFLAGS)
7367 AC_SUBST(HOST_LIBIDL_LIBS)
7369 dnl ========================================================
7370 dnl Check for libart
7371 dnl ========================================================
7372 if test "$MOZ_SVG_RENDERER_LIBART"; then
7373   if test ! -f $topsrcdir/other-licenses/libart_lgpl/Makefile.in; then
7374     AC_MSG_ERROR([You must check out the mozilla version of libart. Use
7375 mk_add_options MOZ_CO_MODULE=mozilla/other-licenses/libart_lgpl])
7376   fi
7378   dnl libart's configure hasn't been run yet, but we know what the
7379   dnl answer should be anyway
7380   MOZ_LIBART_CFLAGS='-I${DIST}/include/libart_lgpl'
7381   case "$target_os" in
7382   msvc*|mks*|cygwin*|mingw*|wince*)
7383       MOZ_LIBART_LIBS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)moz_art_lgpl.$(IMPORT_LIB_SUFFIX)' 
7384       ;;
7385   os2*)
7386       MOZ_LIBART_LIBS='-lmoz_art -lm'
7387       ;;
7388   beos*)
7389       MOZ_LIBART_LIBS='-lmoz_art_lgpl -lroot -lbe'
7390       ;;
7391   *)
7392       MOZ_LIBART_LIBS='-lmoz_art_lgpl -lm'
7393       ;;
7394   esac
7395   AC_FUNC_ALLOCA
7398 AC_SUBST(MOZ_LIBART_CFLAGS)
7399 AC_SUBST(MOZ_LIBART_LIBS)
7401 dnl ========================================================
7402 dnl Check for cairo
7403 dnl ========================================================
7404 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
7406 MOZ_TREE_CAIRO=1
7407 MOZ_ARG_ENABLE_BOOL(system-cairo,
7408 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
7409 MOZ_TREE_CAIRO=,
7410 MOZ_TREE_CAIRO=1 )
7412 # Check for headers defining standard int types.
7413 AC_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
7415 if test "$MOZ_TREE_CAIRO"; then
7416     AC_DEFINE(MOZ_TREE_CAIRO)
7418     # For now we assume that we will have a uint64_t available through
7419     # one of the above headers or mozstdint.h.
7420     AC_DEFINE(HAVE_UINT64_T)
7422     # Define macros for cairo-features.h
7423     if test "$MOZ_X11"; then
7424         XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
7425         XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
7426         PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
7427         PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7428         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7429         MOZ_ENABLE_CAIRO_FT=1
7430         CAIRO_FT_CFLAGS="$FT2_CFLAGS"
7431     fi
7432     if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
7433         QPAINTER_SURFACE_FEATURE="#define CAIRO_HAS_QPAINTER_SURFACE 1"
7434     fi
7435     if test "$MOZ_WIDGET_TOOLKIT" = "mac" -o "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
7436         QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
7437         QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
7438         QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
7439     fi
7440     if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
7441         WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
7442         WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
7443         PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7444     fi
7445     if test "$MOZ_WIDGET_TOOLKIT" = "os2"; then
7446         OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
7447         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7448         PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7449         MOZ_ENABLE_CAIRO_FT=1
7450         CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
7451         CAIRO_FT_LIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
7452     fi
7453     if test "$MOZ_ENABLE_GLITZ"; then
7454         GLITZ_SURFACE_FEATURE="#define CAIRO_HAS_GLITZ_SURFACE 1"
7455     fi
7456     if test "$MOZ_WIDGET_TOOLKIT" = "beos"; then
7457         PKG_CHECK_MODULES(CAIRO_FT, fontconfig freetype2)
7458         BEOS_SURFACE_FEATURE="#define CAIRO_HAS_BEOS_SURFACE 1"
7459         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7460         MOZ_ENABLE_CAIRO_FT=1
7461     fi
7462     AC_SUBST(MOZ_ENABLE_CAIRO_FT)
7463     AC_SUBST(CAIRO_FT_CFLAGS)
7465     if test "$MOZ_DEBUG"; then
7466       SANITY_CHECKING_FEATURE="#define CAIRO_DO_SANITY_CHECKING 1"
7467     else
7468       SANITY_CHECKING_FEATURE="#undef CAIRO_DO_SANITY_CHECKING"
7469     fi
7471     PNG_FUNCTIONS_FEATURE="#define CAIRO_HAS_PNG_FUNCTIONS 1"
7473     AC_SUBST(PS_SURFACE_FEATURE)
7474     AC_SUBST(PDF_SURFACE_FEATURE)
7475     AC_SUBST(SVG_SURFACE_FEATURE)
7476     AC_SUBST(XLIB_SURFACE_FEATURE)
7477     AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
7478     AC_SUBST(QUARTZ_SURFACE_FEATURE)
7479     AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
7480     AC_SUBST(XCB_SURFACE_FEATURE)
7481     AC_SUBST(WIN32_SURFACE_FEATURE)
7482     AC_SUBST(OS2_SURFACE_FEATURE)
7483     AC_SUBST(BEOS_SURFACE_FEATURE)
7484     AC_SUBST(GLITZ_SURFACE_FEATURE)
7485     AC_SUBST(DIRECTFB_SURFACE_FEATURE)
7486     AC_SUBST(FT_FONT_FEATURE)
7487     AC_SUBST(WIN32_FONT_FEATURE)
7488     AC_SUBST(QUARTZ_FONT_FEATURE)
7489     AC_SUBST(PNG_FUNCTIONS_FEATURE)
7490     AC_SUBST(QPAINTER_SURFACE_FEATURE)
7492     if test "$_WIN32_MSVC"; then
7493         MOZ_CAIRO_LIBS='$(DEPTH)/gfx/cairo/cairo/src/mozcairo.lib $(DEPTH)/gfx/cairo/libpixman/src/mozlibpixman.lib'
7494         if test "$MOZ_ENABLE_GLITZ"; then
7495             MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'$(DEPTH)/gfx/cairo/glitz/src/mozglitz.lib $(DEPTH)/gfx/cairo/glitz/src/wgl/mozglitzwgl.lib'
7496         fi
7497     else
7498         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"
7500         if test "$MOZ_X11"; then
7501             MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS -lXrender -lfreetype -lfontconfig"
7502         fi
7504         if test "$MOZ_ENABLE_GLITZ"; then
7505             MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src -lmozglitz'
7506             if test "$MOZ_X11"; then
7507                 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src/glx -lmozglitzglx -lGL'
7508             fi
7509             if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
7510                 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src/wgl -lmozglitzwgl'
7511             fi
7512         fi
7513     fi
7515     CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
7516     mv -f $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig 2> /dev/null
7518 else
7519    PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION freetype2 fontconfig)
7520    MOZ_CAIRO_CFLAGS=$CAIRO_CFLAGS
7521    MOZ_CAIRO_LIBS=$CAIRO_LIBS
7522    if test "$MOZ_X11"; then
7523         PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
7524         MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
7525         MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
7526    fi
7529 AC_SUBST(MOZ_TREE_CAIRO)
7530 AC_SUBST(MOZ_CAIRO_CFLAGS)
7531 AC_SUBST(MOZ_CAIRO_LIBS)
7533 dnl ========================================================
7534 dnl Check for lcms
7535 dnl ========================================================
7537 MOZ_NATIVE_LCMS=
7538 MOZ_ARG_ENABLE_BOOL(system-lcms,
7539 [ --enable-system-lcms Use system lcms (located with pkgconfig)],
7540 MOZ_NATIVE_LCMS=1,
7541 MOZ_NATIVE_LCMS= )
7543 if test -z "$MOZ_NATIVE_LCMS"
7544 then
7545     LCMS_CFLAGS=
7546     if test "$_WIN32_MSVC"; then
7547         if test -z "$BUILD_STATIC_LIBS" -a -z "$MOZ_ENABLE_LIBXUL"; then
7548             LCMS_CFLAGS=-DLCMS_DLL
7549         fi
7550         LCMS_LIBS='$(LIBXUL_DIST)/lib/mozlcms.lib'
7551     else
7552         LCMS_LIBS='-L$(LIBXUL_DIST)/bin -lmozlcms'
7553     fi
7554 else
7555     PKG_CHECK_MODULES(LCMS, lcms >= $LCMS_VERSION)
7558 AC_SUBST(MOZ_NATIVE_LCMS)
7559 AC_SUBST(LCMS_CFLAGS)
7560 AC_SUBST(LCMS_LIBS)
7562 dnl ========================================================
7563 dnl disable xul
7564 dnl ========================================================
7565 MOZ_ARG_DISABLE_BOOL(xul,
7566 [  --disable-xul           Disable XUL],
7567     MOZ_XUL= )
7568 if test "$MOZ_XUL"; then
7569   AC_DEFINE(MOZ_XUL)
7570 else
7571   dnl remove extensions that require XUL
7572   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
7575 AC_SUBST(MOZ_XUL)
7577 dnl ========================================================
7578 dnl Two ways to enable Python support:
7579 dnl   --enable-extensions=python # select all available.
7580 dnl    (MOZ_PYTHON_EXTENSIONS contains the list of extensions)
7581 dnl or:
7582 dnl   --enable-extensions=python/xpcom,... # select individual ones
7584 dnl If either is used, we locate the Python to use.
7585 dnl ========================================================
7587 dnl If 'python' appears anywhere in the extensions list, go lookin'...
7588 if test `echo "$MOZ_EXTENSIONS" | grep -c python` -ne 0; then
7589     dnl Allow PYTHON to point to the Python interpreter to use
7590     dnl (note that it must be the python executable - which we
7591     dnl run to locate the relevant paths etc)
7592     dnl If not set, we use whatever Python we can find.
7593     MOZ_PYTHON=$PYTHON
7594     dnl Ask Python what its version number is
7595     changequote(,)
7596     MOZ_PYTHON_VER=`$PYTHON -c "import sys;print '%d%d' % sys.version_info[0:2]"`
7597     MOZ_PYTHON_VER_DOTTED=`$PYTHON -c "import sys;print '%d.%d' % sys.version_info[0:2]"`
7598     changequote([,])
7599     dnl Ask for the Python "prefix" (ie, home/source dir)
7600     MOZ_PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
7601     dnl Setup the include and library directories.
7602     if test "$OS_ARCH" = "WINNT"; then
7603         MOZ_PYTHON_PREFIX=`$CYGPATH_W $MOZ_PYTHON_PREFIX | $CYGPATH_S`
7604         dnl Source trees have "include" and "PC" for .h, and "PCbuild" for .lib
7605         dnl Binary trees have "include" for .h, and "libs" for .lib
7606         dnl We add 'em both - along with quotes, to handle spaces.
7607         MOZ_PYTHON_DLL_SUFFIX=.pyd
7608         MOZ_PYTHON_INCLUDES="\"-I$MOZ_PYTHON_PREFIX/include\" \"-I$MOZ_PYTHON_PREFIX/PC\""
7609         MOZ_PYTHON_LIBS="\"/libpath:$MOZ_PYTHON_PREFIX/PCBuild\" \"/libpath:$MOZ_PYTHON_PREFIX/libs\""
7610     else
7611         dnl Non-Windows include and libs
7612         MOZ_PYTHON_DLL_SUFFIX=$DLL_SUFFIX
7613         MOZ_PYTHON_INCLUDES="-I$MOZ_PYTHON_PREFIX/include/python$MOZ_PYTHON_VER_DOTTED"
7614         dnl Check for dynamic Python lib
7615         dnl - A static Python is no good - multiple dynamic libraries (xpcom
7616         dnl - core, xpcom loader, pydom etc) all need to share Python.
7617         dnl - Python 2.3's std --enable-shared configure option will
7618         dnl   create a libpython2.3.so.1.0. We should first try this
7619         dnl   dotted versioned .so file because this is the one that
7620         dnl   the PyXPCOM build mechanics tries to link to.
7621         dnl   XXX Should find a better way than hardcoding "1.0".
7622         dnl - Python developement tree dir layouts are NOT allowed here
7623         dnl   because the PyXPCOM build just dies on it later anyway.
7624         dnl - Fixes to the above by Python/*nix knowledgable people welcome!
7625         if test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7626             MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7627         elif test -f "$MOZ_PYTHON_PREFIX/lib64/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7628             MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib64 -lpython$MOZ_PYTHON_VER_DOTTED"
7629         elif test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7630             MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7631         elif test -f "$MOZ_PYTHON_PREFIX/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7632             dnl Don't Python development tree directory layout.
7633             MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX -lpython$MOZ_PYTHON_VER_DOTTED"
7634             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.])
7635         elif test "$OS_ARCH" = "Darwin"; then
7636             dnl We do Darwin last, so if a custom non-framework build of
7637             dnl python is used on OSX, then it will be picked up first by
7638             dnl the logic above.
7639             MOZ_PYTHON_LIBS="-framework Python"
7640         else
7641             AC_MSG_ERROR([Could not find build shared libraries for Python at $MOZ_PYTHON_PREFIX.  This is required for PyXPCOM.])
7642         fi
7643         if test "$OS_ARCH" = "Linux"; then
7644             MOZ_PYTHON_LIBS="$MOZ_PYTHON_LIBS -lutil"
7645         fi
7646     fi
7647     dnl Handle "_d" on Windows
7648     if test "$OS_ARCH" = "WINNT" && test -n "$MOZ_DEBUG"; then
7649         MOZ_PYTHON_DEBUG_SUFFIX="_d"
7650     else
7651         MOZ_PYTHON_DEBUG_SUFFIX=
7652     fi
7653     AC_MSG_RESULT(Building Python extensions using python-$MOZ_PYTHON_VER_DOTTED from $MOZ_PYTHON_PREFIX)
7656 dnl If the user asks for the 'python' extension, then we add
7657 dnl MOZ_PYTHON_EXTENSIONS to MOZ_EXTENSIONS - but with the leading 'python/'
7658 dnl Note the careful regex - it must match 'python' followed by anything
7659 dnl other than a '/', including the end-of-string.
7660 if test `echo "$MOZ_EXTENSIONS" | grep -c 'python\([[^/]]\|$\)'` -ne 0; then
7661     for pyext in $MOZ_PYTHON_EXTENSIONS; do
7662         MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS python/$pyext`
7663     done
7665 dnl Later we may allow MOZ_PYTHON_EXTENSIONS to be specified on the
7666 dnl command-line, but not yet
7667 AC_SUBST(MOZ_PYTHON_EXTENSIONS)
7668 AC_SUBST(MOZ_PYTHON)
7669 AC_SUBST(MOZ_PYTHON_PREFIX)
7670 AC_SUBST(MOZ_PYTHON_INCLUDES)
7671 AC_SUBST(MOZ_PYTHON_LIBS)
7672 AC_SUBST(MOZ_PYTHON_VER)
7673 AC_SUBST(MOZ_PYTHON_VER_DOTTED)
7674 AC_SUBST(MOZ_PYTHON_DEBUG_SUFFIX)
7675 AC_SUBST(MOZ_PYTHON_DLL_SUFFIX)
7677 dnl ========================================================
7678 dnl disable profile sharing
7679 dnl ========================================================
7680 MOZ_ARG_DISABLE_BOOL(profilesharing,
7681 [  --disable-profilesharing           Disable profile sharing],
7682     MOZ_PROFILESHARING=,
7683     MOZ_PROFILESHARING=1 )
7684 if test "$MOZ_PROFILESHARING"; then
7685   MOZ_IPCD=1
7686   AC_DEFINE(MOZ_PROFILESHARING)
7689 dnl ========================================================
7690 dnl enable ipc/ipcd
7691 dnl ========================================================
7692 MOZ_ARG_ENABLE_BOOL(ipcd,
7693 [  --enable-ipcd                      Enable IPC daemon],
7694     MOZ_IPCD=1,
7695     MOZ_IPCD= )
7697 dnl ========================================================
7698 dnl disable profile locking
7699 dnl   do no use this in applications that can have more than
7700 dnl   one process accessing the profile directory.
7701 dnl ========================================================
7702 MOZ_ARG_DISABLE_BOOL(profilelocking,
7703 [  --disable-profilelocking           Disable profile locking],
7704     MOZ_PROFILELOCKING=,
7705     MOZ_PROFILELOCKING=1 )
7706 if test "$MOZ_PROFILELOCKING"; then
7707   AC_DEFINE(MOZ_PROFILELOCKING)
7710 dnl ========================================================
7711 dnl disable rdf services
7712 dnl ========================================================
7713 MOZ_ARG_DISABLE_BOOL(rdf,
7714 [  --disable-rdf           Disable RDF],
7715     MOZ_RDF= )
7716 if test "$MOZ_RDF"; then
7717   AC_DEFINE(MOZ_RDF)
7720 AC_SUBST(MOZ_RDF)
7722 dnl ========================================================
7723 dnl necko configuration options
7724 dnl ========================================================
7727 dnl option to disable various necko protocols
7729 MOZ_ARG_ENABLE_STRING(necko-protocols,
7730 [  --enable-necko-protocols[={http,ftp,default,all,none}]
7731                           Enable/disable specific protocol handlers],
7732 [ for option in `echo $enableval | sed 's/,/ /g'`; do
7733     if test "$option" = "yes" || test "$option" = "all"; then
7734         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7735     elif test "$option" = "no" || test "$option" = "none"; then
7736         NECKO_PROTOCOLS=""
7737     elif test "$option" = "default"; then
7738         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7739     elif test `echo "$option" | grep -c \^-` != 0; then
7740         option=`echo $option | sed 's/^-//'`
7741         NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
7742     else
7743         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
7744     fi
7745 done],
7746     NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
7747 dnl Remove dupes
7748 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
7749 AC_SUBST(NECKO_PROTOCOLS)
7750 for p in $NECKO_PROTOCOLS; do
7751     AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
7752 done
7755 dnl option to disable necko's disk cache
7757 MOZ_ARG_DISABLE_BOOL(necko-disk-cache,
7758 [  --disable-necko-disk-cache
7759                           Disable necko disk cache],
7760     NECKO_DISK_CACHE=,
7761     NECKO_DISK_CACHE=1)
7762 AC_SUBST(NECKO_DISK_CACHE)
7763 if test "$NECKO_DISK_CACHE"; then
7764     AC_DEFINE(NECKO_DISK_CACHE)
7768 dnl option to minimize size of necko's i/o buffers
7770 MOZ_ARG_ENABLE_BOOL(necko-small-buffers,
7771 [  --enable-necko-small-buffers
7772                           Minimize size of necko's i/o buffers],
7773     NECKO_SMALL_BUFFERS=1,
7774     NECKO_SMALL_BUFFERS=)
7775 AC_SUBST(NECKO_SMALL_BUFFERS)
7776 if test "$NECKO_SMALL_BUFFERS"; then
7777     AC_DEFINE(NECKO_SMALL_BUFFERS)
7778 fi 
7781 dnl option to disable cookies
7783 MOZ_ARG_DISABLE_BOOL(cookies,
7784 [  --disable-cookies       Disable cookie support],
7785     NECKO_COOKIES=,
7786     NECKO_COOKIES=1)
7787 AC_SUBST(NECKO_COOKIES)
7788 if test "$NECKO_COOKIES"; then
7789     AC_DEFINE(NECKO_COOKIES)
7792 dnl NECKO_ configuration options are not global
7793 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_"
7795 dnl Only build Mork if it's required
7796 AC_SUBST(MOZ_MORK)
7797 if test "$MOZ_MORK"; then
7798   AC_DEFINE(MOZ_MORK)
7801 dnl Build the lightweight Mork reader if required
7802 AC_SUBST(MOZ_MORKREADER)
7803 if test "$MOZ_MORKREADER"; then
7804   AC_DEFINE(MOZ_MORKREADER)
7807 dnl ========================================================
7808 if test "$MOZ_DEBUG" || test "$NS_TRACE_MALLOC"; then
7809     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7812 dnl ========================================================
7813 dnl =
7814 dnl = Maintainer debug option (no --enable equivalent)
7815 dnl =
7816 dnl ========================================================
7818 AC_SUBST(AR)
7819 AC_SUBST(AR_FLAGS)
7820 AC_SUBST(AR_LIST)
7821 AC_SUBST(AR_EXTRACT)
7822 AC_SUBST(AR_DELETE)
7823 AC_SUBST(AS)
7824 AC_SUBST(ASFLAGS)
7825 AC_SUBST(AS_DASH_C_FLAG)
7826 AC_SUBST(LD)
7827 AC_SUBST(RC)
7828 AC_SUBST(RCFLAGS)
7829 AC_SUBST(WINDRES)
7830 AC_SUBST(USE_SHORT_LIBNAME)
7831 AC_SUBST(IMPLIB)
7832 AC_SUBST(FILTER)
7833 AC_SUBST(BIN_FLAGS)
7834 AC_SUBST(NS_USE_NATIVE)
7835 AC_SUBST(MOZ_WIDGET_TOOLKIT)
7836 AC_SUBST(MOZ_GFX_TOOLKIT)
7837 AC_SUBST(MOZ_UPDATE_XTERM)
7838 AC_SUBST(MINIMO)
7839 AC_SUBST(MOZ_PLATFORM_HILDON)
7840 AC_SUBST(NS_OSSO)
7841 AC_SUBST(NS_MAEMO_LOCATION)
7842 AC_SUBST(MOZ_AUTH_EXTENSION)
7843 AC_SUBST(MOZ_MATHML)
7844 AC_SUBST(MOZ_PERMISSIONS)
7845 AC_SUBST(MOZ_XTF)
7846 AC_SUBST(MOZ_NO_INSPECTOR_APIS)
7847 AC_SUBST(MOZ_PREF_EXTENSIONS)
7848 AC_SUBST(MOZ_SVG)
7849 AC_SUBST(MOZ_XSLT_STANDALONE)
7850 AC_SUBST(MOZ_JS_LIBS)
7851 AC_SUBST(MOZ_PSM)
7852 AC_SUBST(MOZ_DEBUG)
7853 AC_SUBST(MOZ_DEBUG_MODULES)
7854 AC_SUBST(MOZ_PROFILE_MODULES)
7855 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
7856 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
7857 AC_SUBST(MOZ_DEBUG_FLAGS)
7858 AC_SUBST(MOZ_DEBUG_LDFLAGS)
7859 AC_SUBST(WARNINGS_AS_ERRORS)
7860 AC_SUBST(MOZ_DBGRINFO_MODULES)
7861 AC_SUBST(MOZ_EXTENSIONS)
7862 AC_SUBST(MOZ_IMG_DECODERS)
7863 AC_SUBST(MOZ_IMG_ENCODERS)
7864 AC_SUBST(MOZ_JSDEBUGGER)
7865 AC_SUBST(MOZ_OJI)
7866 AC_SUBST(MOZ_NO_XPCOM_OBSOLETE)
7867 AC_SUBST(MOZ_PLUGINS)
7868 AC_SUBST(ENABLE_EAZEL_PROFILER)
7869 AC_SUBST(EAZEL_PROFILER_CFLAGS)
7870 AC_SUBST(EAZEL_PROFILER_LIBS)
7871 AC_SUBST(MOZ_PERF_METRICS)
7872 AC_SUBST(GC_LEAK_DETECTOR)
7873 AC_SUBST(MOZ_LOG_REFCNT)
7874 AC_SUBST(MOZ_LEAKY)
7875 AC_SUBST(MOZ_JPROF)
7876 AC_SUBST(MOZ_SHARK)
7877 AC_SUBST(MOZ_CALLGRIND)
7878 AC_SUBST(MOZ_VTUNE)
7879 AC_SUBST(MOZ_XPCTOOLS)
7880 AC_SUBST(MOZ_JSLOADER)
7881 AC_SUBST(MOZ_USE_NATIVE_UCONV)
7882 AC_SUBST(MOZ_INSURE)
7883 AC_SUBST(MOZ_INSURE_DIRS)
7884 AC_SUBST(MOZ_INSURE_EXCLUDE_DIRS)
7885 AC_SUBST(MOZ_QUANTIFY)
7886 AC_SUBST(MOZ_INSURIFYING)
7887 AC_SUBST(LIBICONV)
7888 AC_SUBST(MOZ_PLACES)
7889 AC_SUBST(MOZ_PLACES_BOOKMARKS)
7890 AC_SUBST(MOZ_STORAGE)
7891 AC_SUBST(MOZ_FEEDS)
7892 AC_SUBST(NS_PRINTING)
7894 AC_SUBST(MOZ_JAVAXPCOM)
7895 AC_SUBST(JAVA_INCLUDE_PATH)
7896 AC_SUBST(JAVA)
7897 AC_SUBST(JAVAC)
7898 AC_SUBST(JAR)
7900 AC_SUBST(MOZ_PROFILESHARING)
7901 AC_SUBST(MOZ_PROFILELOCKING)
7903 AC_SUBST(MOZ_IPCD)
7905 AC_SUBST(HAVE_XIE)
7906 AC_SUBST(MOZ_XIE_LIBS)
7907 AC_SUBST(MOZ_ENABLE_POSTSCRIPT)
7909 AC_SUBST(XPCOM_USE_LEA)
7910 AC_SUBST(BUILD_STATIC_LIBS)
7911 AC_SUBST(MOZ_ENABLE_LIBXUL)
7912 AC_SUBST(ENABLE_TESTS)
7913 AC_SUBST(IBMBIDI)
7914 AC_SUBST(MOZ_UNIVERSALCHARDET)
7915 AC_SUBST(ACCESSIBILITY)
7916 AC_SUBST(MOZ_XPINSTALL)
7917 AC_SUBST(MOZ_VIEW_SOURCE)
7918 AC_SUBST(MOZ_SPELLCHECK)
7919 AC_SUBST(MOZ_XPFE_COMPONENTS)
7920 AC_SUBST(MOZ_USER_DIR)
7921 AC_SUBST(MOZ_CRASHREPORTER)
7923 AC_SUBST(ENABLE_STRIP)
7924 AC_SUBST(PKG_SKIP_STRIP)
7925 AC_SUBST(USE_ELF_DYNSTR_GC)
7926 AC_SUBST(USE_PREBINDING)
7927 AC_SUBST(INCREMENTAL_LINKER)
7928 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
7929 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
7930 AC_SUBST(MOZ_XPCOM_OBSOLETE_LIBS)
7932 AC_SUBST(MOZ_FIX_LINK_PATHS)
7933 AC_SUBST(XPCOM_LIBS)
7934 AC_SUBST(XPCOM_FROZEN_LDOPTS)
7935 AC_SUBST(XPCOM_GLUE_LDOPTS)
7936 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
7938 AC_SUBST(USE_DEPENDENT_LIBS)
7940 AC_SUBST(MOZ_BUILD_ROOT)
7941 AC_SUBST(MOZ_OS2_TOOLS)
7942 AC_SUBST(MOZ_OS2_USE_DECLSPEC)
7944 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
7945 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
7946 AC_SUBST(MOZ_TIMELINE)
7947 AC_SUBST(WINCE)
7948 AC_SUBST(TARGET_DEVICE)
7950 AC_SUBST(MOZ_APP_NAME)
7951 AC_SUBST(MOZ_APP_DISPLAYNAME)
7952 AC_SUBST(MOZ_APP_VERSION)
7953 AC_SUBST(FIREFOX_VERSION)
7955 AC_SUBST(MOZ_PKG_SPECIAL)
7957 AC_SUBST(MOZILLA_OFFICIAL)
7958 AC_SUBST(BUILD_OFFICIAL)
7959 AC_SUBST(MOZ_MILESTONE_RELEASE)
7961 dnl win32 options
7962 AC_SUBST(MOZ_PROFILE)
7963 AC_SUBST(MOZ_DEBUG_SYMBOLS)
7964 AC_SUBST(MOZ_MAPINFO)
7965 AC_SUBST(MOZ_BROWSE_INFO)
7966 AC_SUBST(MOZ_TOOLS_DIR)
7967 AC_SUBST(CYGWIN_WRAPPER)
7968 AC_SUBST(AS_PERL)
7969 AC_SUBST(WIN32_REDIST_DIR)
7970 AC_SUBST(PYTHON)
7972 dnl Echo the CFLAGS to remove extra whitespace.
7973 CFLAGS=`echo \
7974         $_WARNINGS_CFLAGS \
7975         $CFLAGS`
7977 CXXFLAGS=`echo \
7978         $_MOZ_RTTI_FLAGS \
7979         $_MOZ_EXCEPTIONS_FLAGS \
7980         $_WARNINGS_CXXFLAGS \
7981         $CXXFLAGS`
7983 COMPILE_CFLAGS=`echo \
7984     $_DEFINES_CFLAGS \
7985         $_DEPEND_CFLAGS \
7986     $COMPILE_CFLAGS`
7988 COMPILE_CXXFLAGS=`echo \
7989     $_DEFINES_CXXFLAGS \
7990         $_DEPEND_CFLAGS \
7991     $COMPILE_CXXFLAGS`
7993 AC_SUBST(SYSTEM_MAKEDEPEND)
7994 AC_SUBST(SYSTEM_JPEG)
7995 AC_SUBST(SYSTEM_PNG)
7996 AC_SUBST(SYSTEM_ZLIB)
7997 AC_SUBST(SYSTEM_BZ2)
7999 AC_SUBST(JPEG_CFLAGS)
8000 AC_SUBST(JPEG_LIBS)
8001 AC_SUBST(ZLIB_CFLAGS)
8002 AC_SUBST(ZLIB_LIBS)
8003 AC_SUBST(BZ2_CFLAGS)
8004 AC_SUBST(BZ2_LIBS)
8005 AC_SUBST(PNG_CFLAGS)
8006 AC_SUBST(PNG_LIBS)
8008 AC_SUBST(MOZ_JPEG_CFLAGS)
8009 AC_SUBST(MOZ_JPEG_LIBS)
8010 AC_SUBST(MOZ_ZLIB_CFLAGS)
8011 AC_SUBST(MOZ_ZLIB_LIBS)
8012 AC_SUBST(MOZ_BZ2_CFLAGS)
8013 AC_SUBST(MOZ_BZ2_LIBS)
8014 AC_SUBST(MOZ_PNG_CFLAGS)
8015 AC_SUBST(MOZ_PNG_LIBS)
8017 AC_SUBST(NSPR_CFLAGS)
8018 AC_SUBST(NSPR_LIBS)
8019 AC_SUBST(MOZ_NATIVE_NSPR)
8021 AC_SUBST(NSS_CFLAGS)
8022 AC_SUBST(NSS_LIBS)
8023 AC_SUBST(NSS_DEP_LIBS)
8024 AC_SUBST(MOZ_NATIVE_NSS)
8026 AC_SUBST(CFLAGS)
8027 AC_SUBST(CXXFLAGS)
8028 AC_SUBST(CPPFLAGS)
8029 AC_SUBST(COMPILE_CFLAGS)
8030 AC_SUBST(COMPILE_CXXFLAGS)
8031 AC_SUBST(LDFLAGS)
8032 AC_SUBST(LIBS)
8033 AC_SUBST(CROSS_COMPILE)
8035 AC_SUBST(HOST_CC)
8036 AC_SUBST(HOST_CXX)
8037 AC_SUBST(HOST_CFLAGS)
8038 AC_SUBST(HOST_CXXFLAGS)
8039 AC_SUBST(HOST_OPTIMIZE_FLAGS)
8040 AC_SUBST(HOST_AR)
8041 AC_SUBST(HOST_AR_FLAGS)
8042 AC_SUBST(HOST_LD)
8043 AC_SUBST(HOST_RANLIB)
8044 AC_SUBST(HOST_NSPR_MDCPUCFG)
8045 AC_SUBST(HOST_BIN_SUFFIX)
8046 AC_SUBST(HOST_OS_ARCH)
8048 AC_SUBST(TARGET_CPU)
8049 AC_SUBST(TARGET_VENDOR)
8050 AC_SUBST(TARGET_OS)
8051 AC_SUBST(TARGET_NSPR_MDCPUCFG)
8052 AC_SUBST(TARGET_MD_ARCH)
8053 AC_SUBST(TARGET_XPCOM_ABI)
8054 AC_SUBST(OS_TARGET)
8055 AC_SUBST(OS_ARCH)
8056 AC_SUBST(OS_RELEASE)
8057 AC_SUBST(OS_TEST)
8059 AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
8060 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8062 AC_SUBST(WRAP_MALLOC_CFLAGS)
8063 AC_SUBST(WRAP_MALLOC_LIB)
8064 AC_SUBST(MKSHLIB)
8065 AC_SUBST(MKCSHLIB)
8066 AC_SUBST(MKSHLIB_FORCE_ALL)
8067 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8068 AC_SUBST(DSO_CFLAGS)
8069 AC_SUBST(DSO_PIC_CFLAGS)
8070 AC_SUBST(DSO_LDOPTS)
8071 AC_SUBST(LIB_PREFIX)
8072 AC_SUBST(DLL_PREFIX)
8073 AC_SUBST(DLL_SUFFIX)
8074 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8075 AC_SUBST(LIB_SUFFIX)
8076 AC_SUBST(OBJ_SUFFIX)
8077 AC_SUBST(BIN_SUFFIX)
8078 AC_SUBST(ASM_SUFFIX)
8079 AC_SUBST(IMPORT_LIB_SUFFIX)
8080 AC_SUBST(USE_N32)
8081 AC_SUBST(CC_VERSION)
8082 AC_SUBST(CXX_VERSION)
8083 AC_SUBST(MSMANIFEST_TOOL)
8085 if test "$USING_HCC"; then
8086    CC='${topsrcdir}/build/hcc'
8087    CC="$CC '$_OLDCC'"
8088    CXX='${topsrcdir}/build/hcpp'
8089    CXX="$CXX '$_OLDCXX'"
8090    AC_SUBST(CC)
8091    AC_SUBST(CXX)
8094 dnl Check for missing components
8095 if test "$COMPILE_ENVIRONMENT"; then
8096 if test "$MOZ_X11"; then
8097     dnl ====================================================
8098     dnl = Check if X headers exist
8099     dnl ====================================================
8100     _SAVE_CFLAGS=$CFLAGS
8101     CFLAGS="$CFLAGS $XCFLAGS"
8102     AC_TRY_COMPILE([
8103         #include <stdio.h>
8104         #include <stdlib.h>
8105         #include <X11/Xlib.h>
8106         #include <X11/Intrinsic.h>
8107     ],
8108     [
8109         Display *dpy = 0;
8110         if ((dpy = XOpenDisplay(NULL)) == NULL) {
8111             fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8112             exit(1);
8113         }
8114     ], [], 
8115     [ AC_MSG_ERROR([Could not compile basic X program.]) ])
8116     CFLAGS="$_SAVE_CFLAGS"
8118     if test ! -z "$MISSING_X"; then
8119         AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8120     fi
8122 fi # MOZ_X11
8123 fi # COMPILE_ENVIRONMENT
8125 dnl Set various defines and substitutions
8126 dnl ========================================================
8128 if test "$OS_ARCH" = "OS2" -a "$VACPP" = "yes"; then
8129       LIBS='so32dll.lib tcp32dll.lib'
8130 elif test "$OS_ARCH" = "BeOS"; then
8131   AC_DEFINE(XP_BEOS)
8132   MOZ_MOVEMAIL=1
8133 elif test "$OS_ARCH" = "Darwin"; then
8134   AC_DEFINE(XP_UNIX)
8135   AC_DEFINE(UNIX_ASYNC_DNS)
8136   MOZ_MOVEMAIL=1
8137 elif test "$OS_ARCH" = "OpenVMS"; then
8138   AC_DEFINE(XP_UNIX)
8139 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
8140   AC_DEFINE(XP_UNIX)
8141   AC_DEFINE(UNIX_ASYNC_DNS)
8142   MOZ_MOVEMAIL=1
8144 AC_SUBST(MOZ_MOVEMAIL)
8146 AC_DEFINE(JS_THREADSAFE)
8148 if test "$MOZ_DEBUG"; then
8149     AC_DEFINE(MOZ_REFLOW_PERF)
8150     AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8153 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
8154     AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8155     ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8156     ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8157     ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8158     ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8159     AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8160     AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8161     AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8164 # Used for LD_LIBRARY_PATH of run_viewer target
8165 LIBS_PATH=
8166 for lib_arg in $NSPR_LIBS $TK_LIBS; do
8167   case $lib_arg in
8168     -L* ) LIBS_PATH="${LIBS_PATH:+$LIBS_PATH:}"`expr $lib_arg : "-L\(.*\)"` ;;
8169       * ) ;;
8170   esac
8171 done
8172 AC_SUBST(LIBS_PATH)
8174 dnl ========================================================
8175 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
8176 dnl ========================================================
8177 case "$host_os" in
8178 mingw*)
8179     WIN_TOP_SRC=`cd $srcdir; pwd -W`
8180     ;;
8181 cygwin*|msvc*|mks*)
8182     HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
8183     HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
8184     CC="\$(CYGWIN_WRAPPER) $CC"
8185     CXX="\$(CYGWIN_WRAPPER) $CXX"
8186     CPP="\$(CYGWIN_WRAPPER) $CPP"
8187     LD="\$(CYGWIN_WRAPPER) $LD"
8188     AS="\$(CYGWIN_WRAPPER) $AS"
8189     RC="\$(CYGWIN_WRAPPER) $RC"
8190     MIDL="\$(CYGWIN_WRAPPER) $MIDL"
8191     CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
8192     WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
8193     ;;
8194 esac
8196 AC_SUBST(CYGDRIVE_MOUNT)
8197 AC_SUBST(WIN_TOP_SRC)
8199 AC_SUBST(MOZILLA_VERSION)
8201 AC_SUBST(ac_configure_args)
8203 dnl Spit out some output
8204 dnl ========================================================
8206 dnl The following defines are used by xpcom
8207 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8208 CPP_THROW_NEW
8209 HAVE_CPP_2BYTE_WCHAR_T
8210 HAVE_CPP_ACCESS_CHANGING_USING
8211 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8212 HAVE_CPP_BOOL
8213 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8214 HAVE_CPP_EXPLICIT
8215 HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
8216 HAVE_CPP_NAMESPACE_STD
8217 HAVE_CPP_NEW_CASTS
8218 HAVE_CPP_PARTIAL_SPECIALIZATION
8219 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8220 HAVE_CPP_TYPENAME
8221 HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL
8222 HAVE_STATVFS
8223 NEED_CPP_UNUSED_IMPLEMENTATIONS
8224 NEW_H
8225 HAVE_GETPAGESIZE
8226 HAVE_ICONV
8227 HAVE_ICONV_WITH_CONST_INPUT
8228 HAVE_MBRTOWC
8229 HAVE_SYS_MOUNT_H
8230 HAVE_SYS_VFS_H
8231 HAVE_WCRTOMB
8234 AC_CONFIG_HEADER(
8235 netwerk/necko-config.h
8236 xpcom/xpcom-config.h
8237 xpcom/xpcom-private.h
8240 # Save the defines header file before autoconf removes it.
8241 # (Do not add AC_DEFINE calls after this line.)
8242   _CONFIG_TMP=confdefs-tmp.h
8243   _CONFIG_DEFS_H=mozilla-config.h
8245   cat > $_CONFIG_TMP <<\EOF
8246 /* List of defines generated by configure. Included with preprocessor flag,
8247  * -include, to avoid long list of -D defines on the compile command-line.
8248  * Do not edit.
8249  */
8251 #ifndef _MOZILLA_CONFIG_H_
8252 #define _MOZILLA_CONFIG_H_
8255 _EGREP_PATTERN='^#define ('
8256 if test -n "$_NON_GLOBAL_ACDEFINES"; then
8257     for f in $_NON_GLOBAL_ACDEFINES; do
8258         _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
8259     done
8261 _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
8263   sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
8265   cat >> $_CONFIG_TMP <<\EOF
8267 #endif /* _MOZILLA_CONFIG_H_ */
8271   # Only write mozilla-config.h when something changes (or it doesn't exist)
8272   if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
8273     rm $_CONFIG_TMP
8274   else
8275     AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
8276     mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
8278     echo ==== $_CONFIG_DEFS_H =================================
8279     cat $_CONFIG_DEFS_H
8280   fi
8282 dnl Probably shouldn't call this manually but we always want the output of DEFS
8283 rm -f confdefs.h.save
8284 mv confdefs.h confdefs.h.save
8285 egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
8286 AC_OUTPUT_MAKE_DEFS()
8287 MOZ_DEFINES=$DEFS
8288 AC_SUBST(MOZ_DEFINES)
8289 rm -f confdefs.h
8290 mv confdefs.h.save confdefs.h
8292 dnl Load the list of Makefiles to generate.
8293 dnl   To add new Makefiles, edit allmakefiles.sh.
8294 dnl   allmakefiles.sh sets the variable, MAKEFILES.
8295 . ${srcdir}/allmakefiles.sh
8296 dnl 
8297 dnl Run a perl script to quickly create the makefiles.
8298 dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
8299 dnl   for the files it cannot handle correctly. This way, config.status
8300 dnl   will handle these files.
8301 dnl If it fails, nothing is set and config.status will run as usual.
8303 dnl This does not change the $MAKEFILES variable.
8305 dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
8307 if test -z "${AS_PERL}"; then
8308 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
8309 else
8310 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
8312 . ./conftest.sh
8313 rm conftest.sh
8315 echo $MAKEFILES > unallmakefiles
8317 AC_OUTPUT($MAKEFILES)
8319 dnl Prevent the regeneration of cairo-features.h forcing rebuilds of gfx stuff
8320 if test "$CAIRO_FEATURES_H"; then
8321   if cmp -s $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig; then
8322     mv -f "$CAIRO_FEATURES_H".orig "$CAIRO_FEATURES_H" 2> /dev/null
8323   else
8324     rm -f "$CAIRO_FEATURES_H".orig 2> /dev/null
8325   fi
8328 dnl ========================================================
8329 dnl = Setup a nice relatively clean build environment for
8330 dnl = sub-configures.
8331 dnl ========================================================
8332 CC="$_SUBDIR_CC" 
8333 CXX="$_SUBDIR_CXX" 
8334 CFLAGS="$_SUBDIR_CFLAGS" 
8335 CPPFLAGS="$_SUBDIR_CPPFLAGS"
8336 CXXFLAGS="$_SUBDIR_CXXFLAGS"
8337 LDFLAGS="$_SUBDIR_LDFLAGS"
8338 HOST_CC="$_SUBDIR_HOST_CC" 
8339 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
8340 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
8343 unset MAKEFILES
8344 unset CONFIG_FILES
8346 if test "$COMPILE_ENVIRONMENT"; then
8347 if test -z "$MOZ_NATIVE_NSPR"; then
8348     ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
8349     if test -z "$MOZ_DEBUG"; then
8350         ac_configure_args="$ac_configure_args --disable-debug"
8351     fi
8352     if test "$MOZ_OPTIMIZE" = "1"; then
8353         ac_configure_args="$ac_configure_args --enable-optimize"
8354     fi
8355     if test "$OS_ARCH" = "WINNT" && test "$NS_TRACE_MALLOC"; then
8356        ac_configure_args="$ac_configure_args --enable-debug --disable-optimize"
8357     fi
8358     if test -n "$HAVE_64BIT_OS"; then
8359         ac_configure_args="$ac_configure_args --enable-64bit"
8360     fi
8361     if test -n "$USE_ARM_KUSER"; then
8362         ac_configure_args="$ac_configure_args --with-arm-kuser"
8363     fi
8364     AC_OUTPUT_SUBDIRS(nsprpub)
8365     ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8368 if test -z "$MOZ_NATIVE_NSPR"; then
8369     # Hack to deal with the fact that we use NSPR_CFLAGS everywhere
8370     AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
8371     if test ! "$VACPP" && test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE"; then
8372        NSPR_LIBS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --libdir=$LIBXUL_DIST/lib --libs`
8373        $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $NSPR_LIBS'" config/autoconf.mk
8374     fi
8375     if test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE" ; then
8376        NSPR_CFLAGS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --includedir=$LIBXUL_DIST/include/nspr --cflags`
8377        $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $NSPR_CFLAGS'" config/autoconf.mk
8378     fi
8379     rm -f config/autoconf.mk.bak
8382 fi # COMPILE_ENVIRONMENT