Merge.
[mozilla-central.git] / configure.in
blob6b1bf2d6b58fe59fb3e48a3b5b6bf70890ce527f
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     MOZ_MEMORY=1
2466     if test -z "$GNU_CC"; then
2467        NS_USE_NATIVE=1
2468        MOZ_FIX_LINK_PATHS='-R $(LIBXUL_DIST)/bin'
2469        AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2471        if test "$CPU_ARCH" != "sparc"; then
2472           CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all"
2473           CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife -norunpath"
2474        else
2475           # Do not use -xbuiltin on SPARC to get around a bug of compiler
2476           CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%none"
2477           CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%none -features=tmplife -norunpath"
2478        fi
2480        LDFLAGS="-xildoff -z lazyload -z combreloc $LDFLAGS"
2481        if test -z "$CROSS_COMPILE" && test -f /usr/lib/ld/map.noexstk; then
2482            _SAVE_LDFLAGS=$LDFLAGS
2483            LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS" 
2484            AC_TRY_LINK([#include <stdio.h>],
2485                        [printf("Hello World\n");],
2486                        ,
2487                        [LDFLAGS=$_SAVE_LDFLAGS])
2488        fi
2489        WARNINGS_AS_ERRORS='-Werror'
2490        MOZ_OPTIMIZE_FLAGS="-xO4"
2491        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2492        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) -G -z muldefs -h $@ -o $@'
2493        MKSHLIB_FORCE_ALL='-z allextract'
2494        MKSHLIB_UNFORCE_ALL='-z defaultextract'
2495        DSO_LDOPTS='-G -z muldefs'
2496        AR_LIST="$AR t"
2497        AR_EXTRACT="$AR x"
2498        AR_DELETE="$AR d"
2499        AR='$(CXX) -xar'
2500        AR_FLAGS='-o $@'
2501        AS='/usr/ccs/bin/as'
2502        ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2503        AS_DASH_C_FLAG=''
2504        TARGET_COMPILER_ABI="sunc"
2505         CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2506         CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2507        AC_MSG_CHECKING([for Forte compiler version >= WS6U2])
2508        AC_LANG_SAVE
2509        AC_LANG_CPLUSPLUS
2510        AC_TRY_COMPILE([],
2511            [#if (__SUNPRO_CC < 0x530)
2512            #error "Denied"
2513            #endif],
2514            _BAD_COMPILER=,_BAD_COMPILER=1)
2515         if test -n "$_BAD_COMPILER"; then
2516             _res="no"
2517             AC_MSG_ERROR([Forte version WS6U2 or higher is required to build. Your compiler version is $CC_VERSION .])
2518         else
2519             _res="yes"
2520         fi
2521         AC_MSG_RESULT([$_res])
2522         AC_LANG_RESTORE
2523     else
2524        ASFLAGS="$ASFLAGS -fPIC"
2525        DSO_LDOPTS='-G'
2526        _WARNINGS_CFLAGS=''
2527        _WARNINGS_CXXFLAGS=''
2528        if test "$OS_RELEASE" = "5.3"; then
2529           AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2530        fi
2531     fi
2532     if test "$OS_RELEASE" = "5.5.1"; then
2533        AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2534     fi
2535     ;;
2537 *-sunos*) 
2538     DSO_LDOPTS='-Bdynamic'
2539     MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2540     MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2541     AC_DEFINE(SUNOS4)
2542     AC_DEFINE(SPRINTF_RETURNS_STRING)
2543     case "$(target_os)" in
2544     sunos4.1*)
2545         DLL_SUFFIX='.so.1.0'
2546         ;;
2547     esac
2548     ;;
2550 *-sysv4.2uw7*) 
2551         NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2552     ;;
2554 *-os2*)
2555     HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2556     ;;
2558 esac
2560 dnl Only one oddball right now (QNX), but this gives us flexibility
2561 dnl if any other platforms need to override this in the future.
2562 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2564 dnl ========================================================
2565 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2566 dnl by now will not have any way to link most binaries (tests
2567 dnl as well as viewer, apprunner, etc.), because some symbols
2568 dnl will be left out of the "composite" .so's by ld as unneeded.
2569 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2570 dnl they can link in the static libs that provide the missing
2571 dnl symbols.
2572 dnl ========================================================
2573 NO_LD_ARCHIVE_FLAGS=
2574 if test -z "$MKSHLIB_FORCE_ALL" || test -z "$MKSHLIB_UNFORCE_ALL"; then
2575     NO_LD_ARCHIVE_FLAGS=1
2577 case "$target" in
2578 *-os2*)
2579     NO_LD_ARCHIVE_FLAGS=
2580     ;;
2581 *-aix4.3*|*-aix5*)
2582     NO_LD_ARCHIVE_FLAGS=
2583     ;;
2584 *-openvms*)
2585     NO_LD_ARCHIVE_FLAGS=
2586     ;;
2587 *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince)
2588     if test -z "$GNU_CC"; then
2589         NO_LD_ARCHIVE_FLAGS=
2590     fi
2591     ;;
2592 esac
2593 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2596 dnl Indicate that platform requires special thread safe 
2597 dnl locking when starting up the OJI JVM 
2598 dnl (see mozilla/modules/oji/src/nsJVMManager.cpp)
2599 dnl ========================================================
2600 case "$target" in
2601     *-hpux*)      
2602         AC_DEFINE(MOZ_OJI_REQUIRE_THREAD_SAFE_ON_STARTUP)
2603         ;;
2604 esac
2606 dnl ========================================================
2607 dnl = Flags to strip unused symbols from .so components
2608 dnl ========================================================
2609 case "$target" in
2610     *-linux*|*-kfreebsd*-gnu)
2611         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2612         ;;
2613     *-solaris*)
2614         if test -z "$GNU_CC"; then
2615          MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2616         else
2617          if test -z "$GCC_USE_GNU_LD"; then
2618           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2619          else
2620           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2621          fi
2622         fi
2623         ;;
2624     *-nto*) 
2625         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2626         ;;
2627     *-darwin*)
2628         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2629         ;;
2630     *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince)
2631         if test -n "$GNU_CC"; then
2632            MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2633         fi
2634         ;;
2635 esac
2637 if test -z "$COMPILE_ENVIRONMENT"; then
2638     SKIP_COMPILER_CHECKS=1
2639     SKIP_LIBRARY_CHECKS=1
2642 if test -z "$SKIP_COMPILER_CHECKS"; then
2643 dnl Checks for typedefs, structures, and compiler characteristics.
2644 dnl ========================================================
2645 AC_LANG_C
2646 AC_HEADER_STDC
2647 AC_C_CONST
2648 AC_TYPE_MODE_T
2649 AC_TYPE_OFF_T
2650 AC_TYPE_PID_T
2651 AC_TYPE_SIZE_T
2652 AC_STRUCT_ST_BLKSIZE
2653 AC_MSG_CHECKING(for siginfo_t)
2654 AC_CACHE_VAL(ac_cv_siginfo_t,
2655  [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2656                   #include <signal.h>],
2657                  [siginfo_t* info;],
2658                  [ac_cv_siginfo_t=true],
2659                  [ac_cv_siginfo_t=false])])
2660 if test "$ac_cv_siginfo_t" = true ; then
2661   AC_DEFINE(HAVE_SIGINFO_T)
2662   AC_MSG_RESULT(yes)
2663 else
2664   AC_MSG_RESULT(no)
2667 dnl Visual Age for os/2 also defines size_t and off_t in certain 
2668 dnl  header files.  These defines make Visual Age use the mozilla
2669 dnl  defines types.
2670 if test "$VACPP" = "yes"; then
2671    AC_DEFINE(__size_t)
2672    AC_DEFINE(__off_t)
2675 dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
2676 dnl ========================================================
2677 AC_MSG_CHECKING(for int16_t)
2678 AC_CACHE_VAL(ac_cv_int16_t,
2679  [AC_TRY_COMPILE([#include <stdio.h>
2680                   #include <sys/types.h>],
2681                  [int16_t foo = 0;],
2682                  [ac_cv_int16_t=true],
2683                  [ac_cv_int16_t=false])])
2684 if test "$ac_cv_int16_t" = true ; then
2685   AC_DEFINE(HAVE_INT16_T)
2686   AC_MSG_RESULT(yes)
2687 else
2688   AC_MSG_RESULT(no)
2690 AC_MSG_CHECKING(for int32_t)
2691 AC_CACHE_VAL(ac_cv_int32_t,
2692  [AC_TRY_COMPILE([#include <stdio.h>
2693                   #include <sys/types.h>],
2694                  [int32_t foo = 0;],
2695                  [ac_cv_int32_t=true],
2696                  [ac_cv_int32_t=false])])
2697 if test "$ac_cv_int32_t" = true ; then
2698   AC_DEFINE(HAVE_INT32_T)
2699   AC_MSG_RESULT(yes)
2700 else
2701   AC_MSG_RESULT(no)
2703 AC_MSG_CHECKING(for int64_t)
2704 AC_CACHE_VAL(ac_cv_int64_t,
2705  [AC_TRY_COMPILE([#include <stdio.h>
2706                   #include <sys/types.h>],
2707                  [int64_t foo = 0;],
2708                  [ac_cv_int64_t=true],
2709                  [ac_cv_int64_t=false])])
2710 if test "$ac_cv_int64_t" = true ; then
2711   AC_DEFINE(HAVE_INT64_T)
2712   AC_MSG_RESULT(yes)
2713 else
2714   AC_MSG_RESULT(no)
2716 AC_MSG_CHECKING(for int64)
2717 AC_CACHE_VAL(ac_cv_int64,
2718  [AC_TRY_COMPILE([#include <stdio.h>
2719                   #include <sys/types.h>],
2720                  [int64 foo = 0;],
2721                  [ac_cv_int64=true],
2722                  [ac_cv_int64=false])])
2723 if test "$ac_cv_int64" = true ; then
2724   AC_DEFINE(HAVE_INT64)
2725   AC_MSG_RESULT(yes)
2726 else
2727   AC_MSG_RESULT(no)
2729 AC_MSG_CHECKING(for uint)
2730 AC_CACHE_VAL(ac_cv_uint,
2731  [AC_TRY_COMPILE([#include <stdio.h>
2732                   #include <sys/types.h>],
2733                  [uint foo = 0;],
2734                  [ac_cv_uint=true],
2735                  [ac_cv_uint=false])])
2736 if test "$ac_cv_uint" = true ; then
2737   AC_DEFINE(HAVE_UINT)
2738   AC_MSG_RESULT(yes)
2739 else
2740   AC_MSG_RESULT(no)
2742 AC_MSG_CHECKING(for uint_t)
2743 AC_CACHE_VAL(ac_cv_uint_t,
2744  [AC_TRY_COMPILE([#include <stdio.h>
2745                   #include <sys/types.h>],
2746                  [uint_t foo = 0;],
2747                  [ac_cv_uint_t=true],
2748                  [ac_cv_uint_t=false])])
2749 if test "$ac_cv_uint_t" = true ; then
2750   AC_DEFINE(HAVE_UINT_T)
2751   AC_MSG_RESULT(yes)
2752 else
2753   AC_MSG_RESULT(no)
2755 AC_MSG_CHECKING(for uint16_t)
2756 AC_CACHE_VAL(ac_cv_uint16_t,
2757  [AC_TRY_COMPILE([#include <stdio.h>
2758                   #include <sys/types.h>],
2759                  [uint16_t foo = 0;],
2760                  [ac_cv_uint16_t=true],
2761                  [ac_cv_uint16_t=false])])
2762 if test "$ac_cv_uint16_t" = true ; then
2763   AC_DEFINE(HAVE_UINT16_T)
2764   AC_MSG_RESULT(yes)
2765 else
2766   AC_MSG_RESULT(no)
2769 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
2770 dnl are defined when compiling C++ but not C.  Since the result of this
2771 dnl test is used only in C++, do it in C++.
2772 AC_LANG_CPLUSPLUS
2774 AC_MSG_CHECKING(for uname.domainname)
2775 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
2776     [AC_TRY_COMPILE([#include <sys/utsname.h>],
2777         [ struct utsname *res; char *domain; 
2778             (void)uname(res);  if (res != 0) { domain = res->domainname; } ],
2779         [ac_cv_have_uname_domainname_field=true],
2780         [ac_cv_have_uname_domainname_field=false])])
2782 if test "$ac_cv_have_uname_domainname_field" = "true"; then
2783     AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
2784     AC_MSG_RESULT(yes)
2785 else
2786     AC_MSG_RESULT(no)
2789 AC_MSG_CHECKING(for uname.__domainname)
2790 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
2791     [AC_TRY_COMPILE([#include <sys/utsname.h>],
2792         [ struct utsname *res; char *domain; 
2793             (void)uname(res);  if (res != 0) { domain = res->__domainname; } ],
2794         [ac_cv_have_uname_us_domainname_field=true],
2795         [ac_cv_have_uname_us_domainname_field=false])])
2797 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
2798     AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
2799     AC_MSG_RESULT(yes)
2800 else
2801     AC_MSG_RESULT(no)
2804 AC_LANG_C
2806 dnl Check for usable wchar_t (2 bytes, unsigned)
2807 dnl (we really don't need the unsignedness check anymore)
2808 dnl ========================================================
2810 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
2811     ac_cv_have_usable_wchar_v2,
2812     [AC_TRY_COMPILE([#include <stddef.h>
2813                      $configure_static_assert_macros],
2814                     [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2815                      CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2816                     ac_cv_have_usable_wchar_v2="yes",
2817                     ac_cv_have_usable_wchar_v2="no")])
2818 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
2819     AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2820     HAVE_CPP_2BYTE_WCHAR_T=1
2821 else
2822 dnl This is really gcc-only
2823 dnl Do this test using CXX only since some versions of gcc
2824 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
2825 dnl only have short-wchar support for c++.
2826 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
2828     AC_LANG_SAVE
2829     AC_LANG_CPLUSPLUS
2830     _SAVE_CXXFLAGS=$CXXFLAGS
2831     CXXFLAGS="$CXXFLAGS -fshort-wchar"
2833     AC_CACHE_CHECK(for compiler -fshort-wchar option, 
2834         ac_cv_have_usable_wchar_option_v2,
2835         [AC_TRY_LINK([#include <stddef.h>
2836                       $configure_static_assert_macros],
2837                      [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2838                       CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2839                      ac_cv_have_usable_wchar_option_v2="yes",
2840                      ac_cv_have_usable_wchar_option_v2="no")])
2842     if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
2843         AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2844         HAVE_CPP_2BYTE_WCHAR_T=1
2845     else    
2846         CXXFLAGS=$_SAVE_CXXFLAGS
2847     fi
2848     AC_LANG_RESTORE
2851 dnl Check for .hidden assembler directive and visibility attribute.
2852 dnl Borrowed from glibc configure.in
2853 dnl ===============================================================
2854 if test "$GNU_CC"; then
2855   AC_CACHE_CHECK(for visibility(hidden) attribute,
2856                  ac_cv_visibility_hidden,
2857                  [cat > conftest.c <<EOF
2858                   int foo __attribute__ ((visibility ("hidden"))) = 1;
2860                   ac_cv_visibility_hidden=no
2861                   if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2862                     if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2863                       ac_cv_visibility_hidden=yes
2864                     fi
2865                   fi
2866                   rm -f conftest.[cs]
2867                  ])
2868   if test "$ac_cv_visibility_hidden" = "yes"; then
2869     AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2871     AC_CACHE_CHECK(for visibility(default) attribute,
2872                    ac_cv_visibility_default,
2873                    [cat > conftest.c <<EOF
2874                     int foo __attribute__ ((visibility ("default"))) = 1;
2876                     ac_cv_visibility_default=no
2877                     if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2878                       if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2879                         ac_cv_visibility_default=yes
2880                       fi
2881                     fi
2882                     rm -f conftest.[cs]
2883                    ])
2884     if test "$ac_cv_visibility_default" = "yes"; then
2885       AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2887       AC_CACHE_CHECK(for visibility pragma support,
2888                      ac_cv_visibility_pragma,
2889                      [cat > conftest.c <<EOF
2890 #pragma GCC visibility push(hidden)
2891                       int foo_hidden = 1;
2892 #pragma GCC visibility push(default)
2893                       int foo_default = 1;
2895                       ac_cv_visibility_pragma=no
2896                       if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2897                         if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
2898                           if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
2899                             ac_cv_visibility_pragma=yes
2900                           fi
2901                         fi
2902                       fi
2903                       rm -f conftest.[cs]
2904                     ])
2905       if test "$ac_cv_visibility_pragma" = "yes"; then
2906         AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
2907                        ac_cv_have_visibility_class_bug,
2908                        [cat > conftest.c <<EOF
2909 #pragma GCC visibility push(hidden)
2910 struct __attribute__ ((visibility ("default"))) TestStruct {
2911   static void Init();
2913 __attribute__ ((visibility ("default"))) void TestFunc() {
2914   TestStruct::Init();
2917                        ac_cv_have_visibility_class_bug=no
2918                        if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2919                          ac_cv_have_visibility_class_bug=yes
2920                        else
2921                          if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
2922                            ac_cv_have_visibility_class_bug=yes
2923                          fi
2924                        fi
2925                        rm -rf conftest.{c,S}
2926                        ])
2928         AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
2929                        ac_cv_have_visibility_builtin_bug,
2930                        [cat > conftest.c <<EOF
2931 #pragma GCC visibility push(hidden)
2932 #pragma GCC visibility push(default)
2933 #include <string.h>
2934 #pragma GCC visibility pop
2936 __attribute__ ((visibility ("default"))) void Func() {
2937   char c[[100]];
2938   memset(c, 0, sizeof(c));
2941                        ac_cv_have_visibility_builtin_bug=no
2942                        if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2943                          ac_cv_have_visibility_builtin_bug=yes
2944                        else
2945                          if test `grep -c "@PLT" conftest.S` = 0; then
2946                            ac_cv_visibility_builtin_bug=yes
2947                          fi
2948                        fi
2949                        rm -f conftest.{c,S}
2950                        ])
2951         if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
2952                 "$ac_cv_have_visibility_class_bug" = "no"; then
2953           VISIBILITY_FLAGS='-I$(DIST)/include/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
2954           WRAP_SYSTEM_INCLUDES=1
2955         else
2956           VISIBILITY_FLAGS='-fvisibility=hidden'
2957         fi # have visibility pragma bug
2958       fi   # have visibility pragma
2959     fi     # have visibility(default) attribute
2960   fi       # have visibility(hidden) attribute
2961 fi         # GNU_CC
2963 # visibility hidden flag for Sun Studio on Solaris
2964 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
2965 VISIBILITY_FLAGS='-xldscope=hidden'
2966 fi         # Sun Studio on Solaris
2968 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2969 AC_SUBST(VISIBILITY_FLAGS)
2971 dnl Checks for header files.
2972 dnl ========================================================
2973 AC_HEADER_DIRENT
2974 case "$target_os" in
2975 freebsd*)
2976 # for stuff like -lXshm
2977     CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2978     ;;
2979 esac
2980 AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
2981 AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
2982 AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
2983 AC_CHECK_HEADERS(malloc.h)
2984 AC_CHECK_HEADERS(X11/XKBlib.h)
2986 dnl These are all the places some variant of statfs can be hiding.
2987 AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2989 dnl Try for MMX support
2990 dnl NB - later gcc versions require -mmmx for this header to be successfully
2991 dnl included (or another option which implies it, such as -march=pentium-mmx)
2992 AC_CHECK_HEADERS(mmintrin.h)
2994 AC_MSG_CHECKING(for ARM SIMD support)
2995 AC_TRY_COMPILE([],
2996                [asm("uqadd8 r1, r1, r2");],
2997                result="yes", result="no")
2998 AC_MSG_RESULT("$result")
2999 if test "$result" = "yes"; then
3000     AC_DEFINE(HAVE_ARM_SIMD)
3001     HAVE_ARM_SIMD=1
3003 AC_SUBST(HAVE_ARM_SIMD)
3005 dnl Check whether the compiler supports the new-style C++ standard
3006 dnl library headers (i.e. <new>) or needs the old "new.h"
3007 AC_LANG_CPLUSPLUS
3008 NEW_H=new.h
3009 AC_CHECK_HEADER(new, [NEW_H=new])
3010 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
3011 AC_LANG_C
3013 AC_ARG_ENABLE(dtrace,
3014               [  --enable-dtrace         build with dtrace support if available (default=no)],
3015               [enable_dtrace="yes"],)
3016 if test "x$enable_dtrace" = "xyes"; then
3017   AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
3018   if test -n "$HAVE_DTRACE"; then
3019       AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
3020   else
3021       AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
3022   fi
3024 AC_SUBST(HAVE_DTRACE)
3026 case $target in
3027 *-aix4.3*|*-aix5*)
3028         ;;
3030         AC_CHECK_HEADERS(sys/cdefs.h)
3031         ;;
3032 esac
3034 dnl Checks for libraries.
3035 dnl ========================================================
3036 case $target in
3037 *-hpux11.*)
3038         ;;
3040         AC_CHECK_LIB(c_r, gethostbyname_r)
3041         ;;
3042 esac
3044 dnl We don't want to link with libdl even if it's present on OS X, since
3045 dnl it's not used and not part of the default installation.
3046 dnl The same goes for BeOS.
3047 dnl We don't want to link against libm or libpthread on Darwin since
3048 dnl they both are just symlinks to libSystem and explicitly linking
3049 dnl against libSystem causes issues when debugging (see bug 299601).
3050 case $target in
3051 *-darwin*)
3052     ;;
3053 *-beos*)
3054     ;;
3056     AC_CHECK_LIB(m, atan)
3057     AC_CHECK_LIB(dl, dlopen,
3058     AC_CHECK_HEADER(dlfcn.h, 
3059         LIBS="-ldl $LIBS"
3060         AC_DEFINE(HAVE_LIBDL)))
3061     ;;
3062 esac
3064 _SAVE_CFLAGS="$CFLAGS"
3065 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3066 AC_CHECK_FUNCS(dladdr)
3067 CFLAGS="$_SAVE_CFLAGS"
3069 if test ! "$GNU_CXX"; then
3071     case $target in
3072     *-aix*)
3073         AC_CHECK_LIB(C_r, demangle)
3074         ;;
3075      *)
3076         AC_CHECK_LIB(C, demangle)
3077         ;;
3078      esac
3080 AC_CHECK_LIB(socket, socket)
3082 XLDFLAGS="$X_LIBS"
3083 XLIBS="$X_EXTRA_LIBS"
3085 dnl ========================================================
3086 dnl Checks for X libraries.
3087 dnl Ordering is important.
3088 dnl Xt is dependent upon SM as of X11R6
3089 dnl ========================================================
3090 if test "$no_x" = "yes"; then
3091     AC_DEFINE(NO_X11)
3092 else
3093     AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3094         XLIBS="-lX11 $XLIBS"
3095         _SAVE_LDFLAGS="$LDFLAGS"
3096         LDFLAGS="$XLDFLAGS $LDFLAGS"
3097         AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3098                 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3099         AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3100                 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3101    
3102      
3103         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3104         unset ac_cv_lib_Xt_XtFree
3105             AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3106             AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS) 
3107         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3108                     [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3109         ])
3111     # AIX needs the motif library linked before libXt to prevent
3112     # crashes in plugins linked against Motif - Bug #98892
3113     case "${target_os}" in
3114     aix*)
3115         XT_LIBS="-lXm $XT_LIBS"
3116         ;;
3117     esac
3119     dnl ========================================================
3120     dnl = Check for XShm
3121     dnl ========================================================
3122     AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3123         $XLIBS $XEXT_LIBS)
3124     AC_CHECK_HEADER(X11/extensions/XShm.h)
3125     if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" &&
3126         test -n "$_HAVE_XSHM_XEXT"; then
3127         AC_DEFINE(HAVE_XSHM)
3128     fi
3130     dnl ========================================================
3131     dnl = Check for XIE
3132     dnl ========================================================
3133     AC_CHECK_LIB(XIE, XieFloGeometry, [MOZ_XIE_LIBS="-lXIE"],,
3134         $XLIBS $XEXT_LIBS)
3135     AC_CHECK_HEADER(X11/extensions/XIElib.h)
3137     if test "$MOZ_XIE_LIBS"; then
3138         dnl ====================================================
3139         dnl = If XIE is present and is desired, turn it on
3140         dnl ====================================================
3141         case $target in
3142             *-hpux*)
3143                 ;;
3144             *)
3145                 HAVE_XIE=1
3146                 ;;
3147         esac
3148     fi
3150         LDFLAGS="$_SAVE_LDFLAGS"
3152     dnl ========================================================
3153     dnl = Check for freetype2 and its functionality
3154     dnl ========================================================
3155     AC_CHECK_FT2(6.1.0, [_HAVE_FREETYPE2=1], [_HAVE_FREETYPE2=])
3157     if test "$_HAVE_FREETYPE2"; then
3158         _SAVE_LIBS="$LIBS"
3159         _SAVE_CFLAGS="$CFLAGS"
3160         LIBS="$LIBS $FT2_LIBS"
3161         CFLAGS="$CFLAGS $FT2_CFLAGS"
3163         AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
3164             ac_cv_member_FT_Bitmap_Size_y_ppem,
3165             [AC_TRY_COMPILE([#include <ft2build.h>
3166                              #include FT_FREETYPE_H],
3167                             [FT_Bitmap_Size s;
3168                              if (sizeof s.y_ppem) return 0;
3169                              return 1],
3170                             ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
3171                             ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
3172         if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
3173             HAVE_FT_BITMAP_SIZE_Y_PPEM=1
3174         else
3175             HAVE_FT_BITMAP_SIZE_Y_PPEM=0
3176         fi
3177         AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
3178                            $HAVE_FT_BITMAP_SIZE_Y_PPEM,
3179                            [FT_Bitmap_Size structure includes y_ppem field])
3181         AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
3183         LIBS="$_SAVE_LIBS"
3184         CFLAGS="$_SAVE_CFLAGS"
3185     fi
3187 fi # $no_x
3189 AC_SUBST(XCFLAGS)
3190 AC_SUBST(XLDFLAGS)
3191 AC_SUBST(XLIBS)
3192 AC_SUBST(XT_LIBS)
3194 dnl ========================================================
3195 dnl = pthread support
3196 dnl = Start by checking whether the system support pthreads
3197 dnl ========================================================
3198 case "$target_os" in
3199 darwin*)
3200     USE_PTHREADS=1
3201     ;;
3203     MOZ_CHECK_PTHREADS(pthreads,
3204         USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3205         MOZ_CHECK_PTHREADS(pthread,
3206             USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3207             MOZ_CHECK_PTHREADS(c_r,
3208                 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3209                 MOZ_CHECK_PTHREADS(c,
3210                     USE_PTHREADS=1
3211                 )
3212             )
3213         )
3214     )
3215     ;;
3216 esac
3218 dnl ========================================================
3219 dnl Check the command line for --with-pthreads 
3220 dnl ========================================================
3221 MOZ_ARG_WITH_BOOL(pthreads,
3222 [  --with-pthreads         Force use of system pthread library with NSPR ],
3223 [ if test "$USE_PTHREADS"x = x; then
3224     AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3225 fi],
3226     USE_PTHREADS=
3227     _PTHREAD_LDFLAGS=
3230 dnl ========================================================
3231 dnl Do the platform specific pthread hackery
3232 dnl ========================================================
3233 if test "$USE_PTHREADS"x != x
3234 then
3235         dnl
3236         dnl See if -pthread is supported.
3237         dnl
3238         rm -f conftest*
3239         ac_cv_have_dash_pthread=no
3240         AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3241         echo 'int main() { return 0; }' | cat > conftest.c
3242         ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3243         if test $? -eq 0; then
3244                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3245                         ac_cv_have_dash_pthread=yes
3246                 case "$target_os" in
3247                 freebsd*)
3248 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3249                 ;;
3250                 *)
3251                             CFLAGS="$CFLAGS -pthread"
3252                             CXXFLAGS="$CXXFLAGS -pthread"
3253                 ;;
3254                 esac
3255                 fi
3256         fi
3257         rm -f conftest*
3258     AC_MSG_RESULT($ac_cv_have_dash_pthread)
3260         dnl
3261         dnl See if -pthreads is supported.
3262         dnl
3263     ac_cv_have_dash_pthreads=no
3264     if test "$ac_cv_have_dash_pthread" = "no"; then
3265             AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3266         echo 'int main() { return 0; }' | cat > conftest.c
3267             ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3268         if test $? -eq 0; then
3269                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3270                             ac_cv_have_dash_pthreads=yes
3271                             CFLAGS="$CFLAGS -pthreads"
3272                             CXXFLAGS="$CXXFLAGS -pthreads"
3273                     fi
3274             fi
3275             rm -f conftest*
3276         AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3277     fi
3279         case "$target" in
3280             *-*-freebsd*)
3281                         AC_DEFINE(_REENTRANT)
3282                         AC_DEFINE(_THREAD_SAFE)
3283                         dnl -pthread links in -lc_r, so don't specify it explicitly.
3284                         if test "$ac_cv_have_dash_pthread" = "yes"; then
3285                                 _PTHREAD_LDFLAGS="-pthread"
3286                         else
3287                                 _PTHREAD_LDFLAGS="-lc_r"
3288                         fi
3289                         ;;
3291             *-*-openbsd*|*-*-bsdi*)
3292                         AC_DEFINE(_REENTRANT)
3293                         AC_DEFINE(_THREAD_SAFE)
3294                         dnl -pthread links in -lc_r, so don't specify it explicitly.
3295                         if test "$ac_cv_have_dash_pthread" = "yes"; then
3296                 _PTHREAD_LDFLAGS="-pthread"
3297                         fi
3298                         ;;
3300             *-*-linux*|*-*-kfreebsd*-gnu)
3301                         AC_DEFINE(_REENTRANT) 
3302                         ;;
3304             *-*-nto*) 
3305                         AC_DEFINE(_REENTRANT) 
3306                         ;;
3308             *-aix4.3*|*-aix5*)
3309                         AC_DEFINE(_REENTRANT) 
3310                         ;;
3312             *-hpux11.*)
3313                         AC_DEFINE(_REENTRANT) 
3314                         ;;
3316             alpha*-*-osf*)
3317                         AC_DEFINE(_REENTRANT)
3318                         ;;
3320             *-*-solaris*) 
3321                         AC_DEFINE(_REENTRANT) 
3322                         if test ! "$GNU_CC"; then
3323                                 CFLAGS="$CFLAGS -mt" 
3324                                 CXXFLAGS="$CXXFLAGS -mt" 
3325                         fi
3326                         ;;
3327         esac
3328     LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3331 dnl ========================================================
3332 dnl See if mmap sees writes
3333 dnl For cross compiling, just define it as no, which is a safe default
3334 dnl ========================================================
3335 AC_MSG_CHECKING(whether mmap() sees write()s)
3337 changequote(,)
3338 mmap_test_prog='
3339     #include <stdlib.h>
3340     #include <unistd.h>
3341     #include <sys/mman.h>
3342     #include <sys/types.h>
3343     #include <sys/stat.h>
3344     #include <fcntl.h>
3346     char fname[] = "conftest.file";
3347     char zbuff[1024]; /* Fractional page is probably worst case */
3349     int main() {
3350         char *map;
3351         int fd;
3352         int i;
3353         unlink(fname);
3354         fd = open(fname, O_RDWR | O_CREAT, 0660);
3355         if(fd<0) return 1;
3356         unlink(fname);
3357         write(fd, zbuff, sizeof(zbuff));
3358         lseek(fd, 0, SEEK_SET);
3359         map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
3360         if(map==(char*)-1) return 2;
3361         for(i=0; fname[i]; i++) {
3362             int rc = write(fd, &fname[i], 1);
3363             if(map[i]!=fname[i]) return 4;
3364         }
3365         return 0;
3366     }
3368 changequote([,])
3370 AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
3372 AC_MSG_RESULT("$result")
3374 if test "$result" = "no"; then
3375     AC_DEFINE(MMAP_MISSES_WRITES)
3379 dnl Checks for library functions.
3380 dnl ========================================================
3381 AC_PROG_GCC_TRADITIONAL
3382 AC_FUNC_MEMCMP
3383 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 truncate64 statvfs64)
3384 AC_CHECK_FUNCS(flockfile getpagesize)
3386 dnl localtime_r and strtok_r are only present on MacOS version 10.2 and higher
3387 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100200"; then
3388   AC_CHECK_FUNCS(localtime_r strtok_r)
3391 dnl check for wcrtomb/mbrtowc
3392 dnl =======================================================================
3393 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3394 AC_LANG_SAVE
3395 AC_LANG_CPLUSPLUS
3396 AC_CACHE_CHECK(for wcrtomb,
3397     ac_cv_have_wcrtomb,
3398     [AC_TRY_LINK([#include <wchar.h>],
3399                  [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3400                  ac_cv_have_wcrtomb="yes",
3401                  ac_cv_have_wcrtomb="no")])
3402 if test "$ac_cv_have_wcrtomb" = "yes"; then
3403     AC_DEFINE(HAVE_WCRTOMB)
3405 AC_CACHE_CHECK(for mbrtowc,
3406     ac_cv_have_mbrtowc,
3407     [AC_TRY_LINK([#include <wchar.h>],
3408                  [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3409                  ac_cv_have_mbrtowc="yes",
3410                  ac_cv_have_mbrtowc="no")])
3411 if test "$ac_cv_have_mbrtowc" = "yes"; then
3412     AC_DEFINE(HAVE_MBRTOWC)
3414 AC_LANG_RESTORE
3417 AC_CACHE_CHECK(
3418     [for res_ninit()],
3419     ac_cv_func_res_ninit,
3420     [AC_TRY_LINK([
3421         #ifdef linux
3422         #define _BSD_SOURCE 1
3423         #endif
3424         #include <resolv.h>
3425         ],
3426         [int foo = res_ninit(&_res);],
3427         [ac_cv_func_res_ninit=yes],
3428         [ac_cv_func_res_ninit=no])
3429     ])
3431 if test "$ac_cv_func_res_ninit" = "yes"; then
3432     AC_DEFINE(HAVE_RES_NINIT)
3433 dnl must add the link line we do something as foolish as this... dougt
3434 dnl else
3435 dnl    AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3436 dnl        AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3439 AC_LANG_CPLUSPLUS
3440 AC_CACHE_CHECK(
3441     [for gnu_get_libc_version()],
3442     ac_cv_func_gnu_get_libc_version,
3443     [AC_TRY_LINK([
3444         #ifdef HAVE_GNU_LIBC_VERSION_H
3445         #include <gnu/libc-version.h>
3446         #endif
3447         ],
3448         [const char *glibc_version = gnu_get_libc_version();],
3449         [ac_cv_func_gnu_get_libc_version=yes],
3450         [ac_cv_func_gnu_get_libc_version=no] 
3451         )]
3452     )
3454 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3455     AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3458 case $target_os in
3459     os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|beos*)
3460         ;;
3461     *)
3462     
3463 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3464     AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3465         AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3466 _SAVE_LIBS=$LIBS
3467 LIBS="$LIBS $_ICONV_LIBS"
3468 AC_CACHE_CHECK(
3469     [for iconv()],
3470     ac_cv_func_iconv,
3471     [AC_TRY_LINK([
3472         #include <stdlib.h>
3473         #include <iconv.h>
3474         ],
3475         [
3476             iconv_t h = iconv_open("", "");
3477             iconv(h, NULL, NULL, NULL, NULL);
3478             iconv_close(h);
3479         ],
3480         [ac_cv_func_iconv=yes],
3481         [ac_cv_func_iconv=no] 
3482         )]
3483     )
3484 if test "$ac_cv_func_iconv" = "yes"; then
3485     AC_DEFINE(HAVE_ICONV)
3486     DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3487     LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3488     LIBICONV="$_ICONV_LIBS"
3489     AC_CACHE_CHECK(
3490         [for iconv() with const input],
3491         ac_cv_func_const_iconv,
3492         [AC_TRY_COMPILE([
3493             #include <stdlib.h>
3494             #include <iconv.h>
3495             ],
3496             [
3497                 const char *input = "testing";
3498                 iconv_t h = iconv_open("", "");
3499                 iconv(h, &input, NULL, NULL, NULL);
3500                 iconv_close(h);
3501             ],
3502             [ac_cv_func_const_iconv=yes],
3503             [ac_cv_func_const_iconv=no] 
3504             )]
3505         )
3506     if test "$ac_cv_func_const_iconv" = "yes"; then
3507         AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3508     fi
3510 LIBS=$_SAVE_LIBS
3512     ;;
3513 esac
3515 AM_LANGINFO_CODESET
3517 AC_LANG_C
3519 dnl **********************
3520 dnl *** va_copy checks ***
3521 dnl **********************
3522 dnl we currently check for all three va_copy possibilities, so we get
3523 dnl all results in config.log for bug reports.
3524 AC_MSG_CHECKING(for an implementation of va_copy())
3525 AC_CACHE_VAL(ac_cv_va_copy,[
3526     AC_TRY_RUN([
3527         #include <stdarg.h>
3528         void f (int i, ...) {
3529             va_list args1, args2;
3530             va_start (args1, i);
3531             va_copy (args2, args1);
3532             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3533                 exit (1);
3534             va_end (args1); va_end (args2);
3535         }
3536         int main() { f (0, 42); return 0; }],
3537         ac_cv_va_copy=yes,
3538         ac_cv_va_copy=no,
3539         ac_cv_va_copy=no
3540     )
3542 AC_MSG_RESULT($ac_cv_va_copy)
3543 AC_MSG_CHECKING(for an implementation of __va_copy())
3544 AC_CACHE_VAL(ac_cv___va_copy,[
3545     AC_TRY_RUN([
3546         #include <stdarg.h>
3547         void f (int i, ...) {
3548             va_list args1, args2;
3549             va_start (args1, i);
3550             __va_copy (args2, args1);
3551             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3552                 exit (1);
3553             va_end (args1); va_end (args2);
3554         }
3555         int main() { f (0, 42); return 0; }],
3556         ac_cv___va_copy=yes,
3557         ac_cv___va_copy=no,
3558         ac_cv___va_copy=no
3559     )
3561 AC_MSG_RESULT($ac_cv___va_copy)
3562 AC_MSG_CHECKING(whether va_lists can be copied by value)
3563 AC_CACHE_VAL(ac_cv_va_val_copy,[
3564     AC_TRY_RUN([
3565         #include <stdarg.h>
3566         void f (int i, ...) {
3567             va_list args1, args2;
3568             va_start (args1, i);
3569             args2 = args1;
3570             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3571                 exit (1);
3572             va_end (args1); va_end (args2);
3573         }
3574         int main() { f (0, 42); return 0; }],
3575         ac_cv_va_val_copy=yes,
3576         ac_cv_va_val_copy=no,
3577         ac_cv_va_val_copy=yes
3578     )
3580 if test "x$ac_cv_va_copy" = "xyes"; then
3581     AC_DEFINE(VA_COPY, va_copy)
3582     AC_DEFINE(HAVE_VA_COPY)
3583 elif test "x$ac_cv___va_copy" = "xyes"; then
3584     AC_DEFINE(VA_COPY, __va_copy)
3585     AC_DEFINE(HAVE_VA_COPY)
3588 if test "x$ac_cv_va_val_copy" = "xno"; then
3589    AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3591 AC_MSG_RESULT($ac_cv_va_val_copy)
3593 dnl Check for dll-challenged libc's.
3594 dnl This check is apparently only needed for Linux.
3595 case "$target" in
3596         *-linux*)
3597             dnl ===================================================================
3598             _curdir=`pwd`
3599             export _curdir
3600             rm -rf conftest* _conftest
3601             mkdir _conftest
3602             cat >> conftest.C <<\EOF
3603 #include <stdio.h>
3604 #include <link.h>
3605 #include <dlfcn.h>
3606 #ifdef _dl_loaded
3607 void __dump_link_map(void) {
3608   struct link_map *map = _dl_loaded;
3609   while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
3611 int main() {
3612   dlopen("./conftest1.so",RTLD_LAZY);
3613   dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
3614   dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
3615   dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
3616   __dump_link_map();
3618 #else
3619 /* _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).*/
3620 int main() { printf("./conftest1.so\n"); }
3621 #endif
3624             $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
3626             cat >> conftest1.C <<\EOF
3627 #include <stdio.h>
3628 void foo(void) {printf("foo in dll called\n");}
3630             ${CXX-g++} -fPIC -c -g conftest1.C
3631             ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
3632             ${CXX-g++} -g conftest.C -o conftest -ldl
3633             cp -f conftest1.so conftest _conftest
3634             cd _conftest
3635             if test `./conftest | grep conftest1.so | wc -l` -gt 1
3636             then
3637                 echo
3638                 echo "*** Your libc has a bug that can result in loading the same dynamic"
3639                 echo "*** library multiple times.  This bug is known to be fixed in glibc-2.0.7-32"
3640                 echo "*** or later.  However, if you choose not to upgrade, the only effect"
3641                 echo "*** will be excessive memory usage at runtime."
3642                 echo
3643             fi
3644             cd ${_curdir}
3645             rm -rf conftest* _conftest
3646             dnl ===================================================================
3647             ;;
3648 esac
3650 dnl ===================================================================
3651 dnl ========================================================
3652 dnl By default, turn rtti and exceptions off on g++/egcs
3653 dnl ========================================================
3654 if test "$GNU_CXX"; then
3656   AC_MSG_CHECKING(for C++ exceptions flag)
3658   dnl They changed -f[no-]handle-exceptions to -f[no-]exceptions in g++ 2.8
3659   AC_CACHE_VAL(ac_cv_cxx_exceptions_flags,
3660   [echo "int main() { return 0; }" | cat > conftest.C
3662   ${CXX-g++} ${CXXFLAGS} -c -fno-handle-exceptions conftest.C > conftest.out 2>&1
3664   if egrep "warning.*renamed" conftest.out >/dev/null; then
3665     ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-exceptions
3666   else
3667     ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-handle-exceptions
3668   fi
3670   rm -f conftest*])
3672   AC_MSG_RESULT($ac_cv_cxx_exceptions_flags)
3673   _MOZ_EXCEPTIONS_FLAGS_OFF=$ac_cv_cxx_exceptions_flags
3674   _MOZ_EXCEPTIONS_FLAGS_ON=`echo $ac_cv_cxx_exceptions_flags | sed 's|no-||'`
3677 dnl ========================================================
3678 dnl Put your C++ language/feature checks below
3679 dnl ========================================================
3680 AC_LANG_CPLUSPLUS
3682 HAVE_GCC3_ABI=
3683 if test "$GNU_CC"; then
3684   AC_CACHE_CHECK(for gcc 3.0 ABI,
3685       ac_cv_gcc_three_abi,
3686       [AC_TRY_COMPILE([],
3687                       [
3688 #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
3689   return 0;
3690 #else
3691 #error Not gcc3.
3692 #endif
3693                       ],
3694                       ac_cv_gcc_three_abi="yes",
3695                       ac_cv_gcc_three_abi="no")])
3696   if test "$ac_cv_gcc_three_abi" = "yes"; then
3697       TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc3}"
3698       HAVE_GCC3_ABI=1
3699   else
3700       TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc2}"
3701   fi
3703 AC_SUBST(HAVE_GCC3_ABI)
3706 AC_CACHE_CHECK(for C++ \"explicit\" keyword,
3707                ac_cv_cpp_explicit,
3708                [AC_TRY_COMPILE(class X {
3709                                public: explicit X(int i) : i_(i) {}
3710                                private: int i_;
3711                                };,
3712                                X x(3);,
3713                                ac_cv_cpp_explicit=yes,
3714                                ac_cv_cpp_explicit=no)])
3715 if test "$ac_cv_cpp_explicit" = yes ; then
3716    AC_DEFINE(HAVE_CPP_EXPLICIT)
3719 AC_CACHE_CHECK(for C++ \"typename\" keyword,
3720                ac_cv_cpp_typename,
3721                [AC_TRY_COMPILE(class param {
3722                                public:
3723                                    typedef unsigned long num_type;
3724                                };
3726                                template <class T> class tplt {
3727                                public:
3728                                    typedef typename T::num_type t_num_type;
3729                                    t_num_type foo(typename T::num_type num) {
3730                                        return num;
3731                                    }
3732                                };,
3733                                tplt<param> A;
3734                                A.foo(0);,
3735                                ac_cv_cpp_typename=yes,
3736                                ac_cv_cpp_typename=no)])
3737 if test "$ac_cv_cpp_typename" = yes ; then
3738    AC_DEFINE(HAVE_CPP_TYPENAME)
3741 dnl Check for support of modern template specialization syntax
3742 dnl Test code and requirement from scc@netscape.com.
3743 dnl Autoconf cut-and-paste job by waterson@netscape.com
3744 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
3745                ac_cv_cpp_modern_specialize_template_syntax,
3746                [AC_TRY_COMPILE(template <class T> struct X { int a; };
3747                                class Y {};
3748                                template <> struct X<Y> { double a; };,
3749                                X<int> int_x;
3750                                X<Y> y_x;,
3751                                ac_cv_cpp_modern_specialize_template_syntax=yes,
3752                                ac_cv_cpp_modern_specialize_template_syntax=no)])
3753 if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
3754   AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
3758 dnl Some compilers support only full specialization, and some don't.
3759 AC_CACHE_CHECK(whether partial template specialization works,
3760                ac_cv_cpp_partial_specialization,
3761                [AC_TRY_COMPILE(template <class T> class Foo {};
3762                                template <class T> class Foo<T*> {};,
3763                                return 0;,
3764                                ac_cv_cpp_partial_specialization=yes,
3765                                ac_cv_cpp_partial_specialization=no)])
3766 if test "$ac_cv_cpp_partial_specialization" = yes ; then
3767   AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
3770 dnl Some compilers have limited support for operators with templates;
3771 dnl specifically, it is necessary to define derived operators when a base
3772 dnl class's operator declaration should suffice.
3773 AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
3774                ac_cv_need_derived_template_operators,
3775                [AC_TRY_COMPILE([template <class T> class Base { };
3776                                 template <class T>
3777                                 Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
3778                                 template <class T> class Derived : public Base<T> { };],
3779                                [Derived<char> a, b;
3780                                 Base<char> c = a + b;
3781                                 return 0;],
3782                                ac_cv_need_derived_template_operators=no,
3783                                ac_cv_need_derived_template_operators=yes)])
3784 if test "$ac_cv_need_derived_template_operators" = yes ; then
3785   AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
3789 dnl Some compilers have trouble detecting that a template class
3790 dnl that derives from another template is actually an instance
3791 dnl of the base class. This test checks for that.
3792 AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
3793                ac_cv_need_cpp_template_cast_to_base,
3794                [AC_TRY_COMPILE([template <class T> class Base { };
3795                                 template <class T> class Derived : public Base<T> { };
3796                                 template <class T> int foo(const Base<T>&) { return 0; }],
3797                                [Derived<char> bar; return foo(bar);],
3798                                ac_cv_need_cpp_template_cast_to_base=no,
3799                                ac_cv_need_cpp_template_cast_to_base=yes)])
3800 if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
3801   AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
3804 dnl Some compilers have trouble resolving the ambiguity between two
3805 dnl functions whose arguments differ only by cv-qualifications.
3806 AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
3807                ac_cv_can_resolve_const_ambiguity,
3808                [AC_TRY_COMPILE([
3809                                 template <class T> class ptrClass {
3810                                   public: T* ptr;
3811                                 };
3813                                 template <class T> T* a(ptrClass<T> *arg) {
3814                                   return arg->ptr;
3815                                 }
3817                                 template <class T>
3818                                 const T* a(const ptrClass<T> *arg) {
3819                                   return arg->ptr;
3820                                 }
3821                                ],
3822                                [ ptrClass<int> i;
3823                                  a(&i); ],
3824                                ac_cv_can_resolve_const_ambiguity=yes,
3825                                ac_cv_can_resolve_const_ambiguity=no)])
3826 if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
3827   AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
3831 dnl We don't do exceptions on unix.  The only reason this used to be here
3832 dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses 
3833 dnl exceptions.  But, we turn exceptions off by default and this test breaks.
3834 dnl So im commenting this out until someone writes some artificial 
3835 dnl intelligence to detect not only if the compiler has exceptions, but if 
3836 dnl they are enabled as well.
3837 dnl 
3838 dnl AC_CACHE_CHECK(for C++ \"exceptions\",
3839 dnl                ac_cv_cpp_exceptions,
3840 dnl                [AC_TRY_COMPILE(class X { public: X() {} };
3841 dnl                                static void F() { throw X(); },
3842 dnl                                try { F(); } catch(X & e) { },
3843 dnl                                ac_cv_cpp_exceptions=yes,
3844 dnl                                ac_cv_cpp_exceptions=no)])
3845 dnl if test $ac_cv_cpp_exceptions = yes ; then
3846 dnl    AC_DEFINE(HAVE_CPP_EXCEPTIONS)
3847 dnl fi
3849 dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
3850 dnl supports it well enough to allow us to use it to change access, but not
3851 dnl to resolve ambiguity. The next two tests determine how well the |using|
3852 dnl keyword is supported.
3854 dnl Check to see if we can change access with |using|.  Test both a
3855 dnl legal and an illegal example.
3856 AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
3857                ac_cv_cpp_access_changing_using2,
3858                [AC_TRY_COMPILE(
3859                    class A { protected: int foo() { return 0; } };
3860                    class B : public A { public: using A::foo; };,
3861                    B b; return b.foo();,
3862                    [AC_TRY_COMPILE(
3863                        class A { public: int foo() { return 1; } };
3864                        class B : public A { private: using A::foo; };,
3865                        B b; return b.foo();,
3866                        ac_cv_cpp_access_changing_using2=no,
3867                        ac_cv_cpp_access_changing_using2=yes)],
3868                    ac_cv_cpp_access_changing_using2=no)])
3869 if test "$ac_cv_cpp_access_changing_using2" = yes ; then
3870    AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
3873 dnl Check to see if we can resolve ambiguity with |using|.
3874 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3875                ac_cv_cpp_ambiguity_resolving_using,
3876                [AC_TRY_COMPILE(class X { 
3877                                  public: int go(const X&) {return 3;}
3878                                          int jo(const X&) {return 3;}
3879                                };
3880                                class Y : public X {
3881                                  public:  int go(int) {return 2;}
3882                                           int jo(int) {return 2;}
3883                                           using X::jo;
3884                                  private: using X::go;
3885                                };,
3886                                X x; Y y; y.jo(x);,
3887                                ac_cv_cpp_ambiguity_resolving_using=yes,
3888                                ac_cv_cpp_ambiguity_resolving_using=no)])
3889 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3890    AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3893 dnl Check to see if the |std| namespace is supported. If so, we'll want
3894 dnl to qualify any standard library calls with "std::" to ensure that
3895 dnl those functions can be resolved.
3896 AC_CACHE_CHECK(for \"std::\" namespace,
3897                ac_cv_cpp_namespace_std,
3898                [AC_TRY_COMPILE([#include <algorithm>],
3899                                [return std::min(0, 1);],
3900                                ac_cv_cpp_namespace_std=yes,
3901                                ac_cv_cpp_namespace_std=no)])
3902 if test "$ac_cv_cpp_namespace_std" = yes ; then
3903    AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
3906 dnl Older compilers are overly ambitious with respect to using the standard
3907 dnl template library's |operator!=()| when |operator==()| is defined. In
3908 dnl which case, defining |operator!=()| in addition to |operator==()| causes
3909 dnl ambiguity at compile-time. This test checks for that case.
3910 AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
3911                ac_cv_cpp_unambiguous_std_notequal,
3912                [AC_TRY_COMPILE([#include <algorithm>
3913                                 struct T1 {};
3914                                 int operator==(const T1&, const T1&) { return 0; }
3915                                 int operator!=(const T1&, const T1&) { return 0; }],
3916                                [T1 a,b; return a != b;],
3917                                ac_cv_cpp_unambiguous_std_notequal=unambiguous,
3918                                ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
3919 if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
3920   AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
3924 AC_CACHE_CHECK(for C++ reinterpret_cast,
3925                ac_cv_cpp_reinterpret_cast,
3926                [AC_TRY_COMPILE(struct X { int i; };
3927                                struct Y { int i; };,
3928                                X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
3929                                ac_cv_cpp_reinterpret_cast=yes,
3930                                ac_cv_cpp_reinterpret_cast=no)])
3931 if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
3932    AC_DEFINE(HAVE_CPP_NEW_CASTS)
3935 dnl See if a dynamic_cast to void* gives the most derived object.
3936 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
3937                ac_cv_cpp_dynamic_cast_void_ptr,
3938                [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
3939                             class Y { int j; public: virtual ~Y() { } };
3940                             class Z : public X, public Y { int k; };
3942                             int main() {
3943                                  Z mdo;
3944                                  X *subx = (X*)&mdo;
3945                                  Y *suby = (Y*)&mdo;
3946                                  return !((((void*)&mdo != (void*)subx) &&
3947                                            ((void*)&mdo == dynamic_cast<void*>(subx))) ||
3948                                           (((void*)&mdo != (void*)suby) &&
3949                                            ((void*)&mdo == dynamic_cast<void*>(suby))));
3950                             }],
3951                            ac_cv_cpp_dynamic_cast_void_ptr=yes,
3952                            ac_cv_cpp_dynamic_cast_void_ptr=no,
3953                            ac_cv_cpp_dynamic_cast_void_ptr=no)])
3954 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
3955    AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
3959 dnl note that this one is reversed - if the test fails, then
3960 dnl we require implementations of unused virtual methods. Which
3961 dnl really blows because it means we'll have useless vtable
3962 dnl bloat.
3963 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
3964                ac_cv_cpp_unused_required,
3965                [AC_TRY_LINK(class X {private: virtual void never_called();};,
3966                                X x;,
3967                                ac_cv_cpp_unused_required=no,
3968                                ac_cv_cpp_unused_required=yes)])
3969 if test "$ac_cv_cpp_unused_required" = yes ; then
3970    AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
3974 dnl Some compilers have trouble comparing a constant reference to a templatized
3975 dnl class to zero, and require an explicit operator==() to be defined that takes
3976 dnl an int. This test separates the strong from the weak.
3978 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
3979                ac_cv_trouble_comparing_to_zero,
3980                [AC_TRY_COMPILE([#include <algorithm>
3981                                 template <class T> class Foo {};
3982                                 class T2;
3983                                 template <class T> int operator==(const T2*, const T&) { return 0; }
3984                                 template <class T> int operator!=(const T2*, const T&) { return 0; }],
3985                                [Foo<int> f; return (0 != f);],
3986                                ac_cv_trouble_comparing_to_zero=no,
3987                                ac_cv_trouble_comparing_to_zero=yes)])
3988 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
3989   AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
3994 dnl End of C++ language/feature checks
3995 AC_LANG_C
3997 dnl ========================================================
3998 dnl =  Internationalization checks
3999 dnl ========================================================
4001 dnl Internationalization and Locale support is different
4002 dnl on various UNIX platforms.  Checks for specific i18n
4003 dnl features go here.
4005 dnl check for LC_MESSAGES
4006 AC_CACHE_CHECK(for LC_MESSAGES,
4007                 ac_cv_i18n_lc_messages,
4008                 [AC_TRY_COMPILE([#include <locale.h>],
4009                                 [int category = LC_MESSAGES;],
4010                                 ac_cv_i18n_lc_messages=yes,
4011                                 ac_cv_i18n_lc_messages=no)])
4012 if test "$ac_cv_i18n_lc_messages" = yes; then
4013    AC_DEFINE(HAVE_I18N_LC_MESSAGES)
4014 fi      
4016 fi # SKIP_COMPILER_CHECKS
4018 TARGET_XPCOM_ABI=
4019 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
4020     TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
4023 dnl Mozilla specific options
4024 dnl ========================================================
4025 dnl The macros used for command line options
4026 dnl are defined in build/autoconf/altoptions.m4.
4029 dnl ========================================================
4030 dnl =
4031 dnl = Check for external package dependencies
4032 dnl =
4033 dnl ========================================================
4034 MOZ_ARG_HEADER(External Packages)
4036 MOZ_ENABLE_LIBXUL=
4038 MOZ_ARG_WITH_STRING(libxul-sdk,
4039 [  --with-libxul-sdk=PFX   Use the libXUL SDK at <PFX>],
4040   LIBXUL_SDK_DIR=$withval)
4042 if test "$LIBXUL_SDK_DIR" = "yes"; then
4043     AC_MSG_ERROR([--with-libxul-sdk must specify a path])
4044 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
4045     LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
4047     if test ! -f "$LIBXUL_SDK/sdk/include/xpcom-config.h"; then
4048         AC_MSG_ERROR([$LIBXUL_SDK/sdk/include/xpcom-config.h doesn't exist])
4049     fi
4051     MOZ_ENABLE_LIBXUL=1
4053 AC_SUBST(LIBXUL_SDK)
4055 if test -n "$LIBXUL_SDK"; then
4056     LIBXUL_DIST="$LIBXUL_SDK"
4057 else
4058     LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
4060 AC_SUBST(LIBXUL_DIST)
4062 dnl ========================================================
4063 dnl = If NSPR was not detected in the system, 
4064 dnl = use the one in the source tree (mozilla/nsprpub)
4065 dnl ========================================================
4066 MOZ_ARG_WITH_BOOL(system-nspr,
4067 [  --with-system-nspr      Use system installed NSPR],
4068     _USE_SYSTEM_NSPR=1 )
4070 if test -n "$_USE_SYSTEM_NSPR"; then
4071     AM_PATH_NSPR(4.7.0, [MOZ_NATIVE_NSPR=1], [MOZ_NATIVE_NSPR=])
4074 if test -n "$MOZ_NATIVE_NSPR"; then
4075     _SAVE_CFLAGS=$CFLAGS
4076     CFLAGS="$CFLAGS $NSPR_CFLAGS"
4077     AC_TRY_COMPILE([#include "prlog.h"],
4078                 [#ifndef PR_STATIC_ASSERT
4079                  #error PR_STATIC_ASSERT not defined
4080                  #endif],
4081                 [MOZ_NATIVE_NSPR=1],
4082                 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT]))
4083     CFLAGS=$_SAVE_CFLAGS
4084 else
4085     NSPR_CFLAGS='`$(DEPTH)/nsprpub/config/nspr-config --prefix='${LIBXUL_DIST}' --includedir='${LIBXUL_DIST}'/include/nspr --cflags`'
4086     # explicitly set libs for Visual Age C++ for OS/2
4087     if test "$OS_ARCH" = "OS2" -a "$VACPP" = "yes"; then
4088         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}"
4089     elif test "$OS_ARCH" = "WINCE"; then
4090         NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4091         NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4092     elif test "$OS_ARCH" = "WINNT"; then
4093         NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4094         if test -n "$GNU_CC"; then
4095             NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
4096         else
4097             NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4098         fi
4099     else
4100         NSPR_LIBS='`$(DEPTH)/nsprpub/config/nspr-config --prefix='${LIBXUL_DIST}' --libdir='${LIBXUL_DIST}'/lib --libs`'
4101     fi
4104 dnl ========================================================
4105 dnl = If NSS was not detected in the system, 
4106 dnl = use the one in the source tree (mozilla/security/nss)
4107 dnl ========================================================
4109 MOZ_ARG_WITH_BOOL(system-nss,
4110 [  --with-system-nss      Use system installed NSS],
4111     _USE_SYSTEM_NSS=1 )
4113 if test -n "$_USE_SYSTEM_NSS"; then
4114     AM_PATH_NSS(3.12.0, [MOZ_NATIVE_NSS=1], [MOZ_NATIVE_NSS=])
4117 if test -n "$MOZ_NATIVE_NSS"; then
4118    NSS_LIBS="$NSS_LIBS -lcrmf"
4119 else
4120    NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4121    NSS_DEP_LIBS="\
4122         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4123         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4124         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4125         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4126         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX) \
4127         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)softokn$NSS_VERSION\$(DLL_SUFFIX)"
4129    if test -z "$GNU_CC" && test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "WINCE" -o "$OS_ARCH" = "OS2"; then
4130        NSS_LIBS="\
4131         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4132         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4133         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4134         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4135         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4136         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)softokn$NSS_VERSION.\$(IMPORT_LIB_SUFFIX)"
4137    else
4138        NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION -lsoftokn$NSS_VERSION"
4139    fi
4142 if test -z "$SKIP_LIBRARY_CHECKS"; then
4143 dnl system JPEG support
4144 dnl ========================================================
4145 MOZ_ARG_WITH_STRING(system-jpeg,
4146 [  --with-system-jpeg[=PFX]
4147                           Use system libjpeg [installed at prefix PFX]],
4148     JPEG_DIR=$withval)
4150 _SAVE_CFLAGS=$CFLAGS
4151 _SAVE_LDFLAGS=$LDFLAGS
4152 _SAVE_LIBS=$LIBS
4153 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4154     CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4155     LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4157 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4158     SYSTEM_JPEG=
4159 else
4160     AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS)
4163 if test "$SYSTEM_JPEG" = 1; then
4164     LIBS="$JPEG_LIBS $LIBS"
4165     AC_TRY_COMPILE([ #include <stdio.h>
4166                      #include <sys/types.h>
4167                      #include <jpeglib.h> ],
4168                    [ #if JPEG_LIB_VERSION < $MOZJPEG
4169                      #error "Insufficient JPEG library version ($MOZJPEG required)."
4170                      #endif ],
4171                    SYSTEM_JPEG=1,
4172                    [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=]) 
4173 fi 
4174 CFLAGS=$_SAVE_CFLAGS
4175 LDFLAGS=$_SAVE_LDFLAGS
4176 LIBS=$_SAVE_LIBS
4178 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$SYSTEM_JPEG" = 1; then
4179     JPEG_CFLAGS="-I${JPEG_DIR}/include"
4180     JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
4183 dnl system ZLIB support
4184 dnl ========================================================
4185 MOZ_ARG_WITH_STRING(system-zlib,
4186 [  --with-system-zlib[=PFX]
4187                           Use system libz [installed at prefix PFX]],
4188     ZLIB_DIR=$withval)
4190 _SAVE_CFLAGS=$CFLAGS
4191 _SAVE_LDFLAGS=$LDFLAGS
4192 _SAVE_LIBS=$LIBS
4193 if test -n "${ZLIB_DIR}" -a "${ZLIB_DIR}" != "yes"; then
4194     CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
4195     LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
4197 if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
4198     SYSTEM_ZLIB=
4199 else
4200     AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"], 
4201         [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
4203 if test "$SYSTEM_ZLIB" = 1; then
4204     LIBS="$ZLIB_LIBS $LIBS"
4205     AC_TRY_COMPILE([ #include <stdio.h>
4206                      #include <string.h>
4207                      #include <zlib.h> ],
4208                    [ #if ZLIB_VERNUM < $MOZZLIB 
4209                      #error "Insufficient zlib version ($MOZZLIB required)."
4210                      #endif ],
4211                    SYSTEM_ZLIB=1,
4212                    [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=]) 
4214 CFLAGS=$_SAVE_CFLAGS
4215 LDFLAGS=$_SAVE_LDFLAGS
4216 LIBS=$_SAVE_LIBS
4218 if test "${ZLIB_DIR}" -a -d "${ZLIB_DIR}" -a "$SYSTEM_ZLIB" = 1; then
4219     ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
4220     ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
4223 dnl system BZIP2 Support
4224 dnl ========================================================
4225 MOZ_ARG_WITH_STRING(system-bz2,
4226 [  --with-system-bz2[=PFX]
4227                           Use system libbz2 [installed at prefix PFX]],
4228     BZ2_DIR=$withval)
4230 _SAVE_CFLAGS=$CFLAGS
4231 _SAVE_LDFLAGS=$LDFLAGS
4232 _SAVE_LIBS=$LIBS
4233 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4234     CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4235     LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4237 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4238     SYSTEM_BZ2=
4239 else
4240     AC_CHECK_LIB(bz2, BZ2_bzread, [SYSTEM_BZ2=1 BZ2_LIBS="-lbz2"],
4241         [SYSTEM_BZ2= BZ2_CFLAGS= BZ2_LIBS=], $BZ2_LIBS)
4243 CFLAGS=$_SAVE_CFLAGS
4244 LDFLAGS=$_SAVE_LDFLAGS
4245 LIBS=$_SAVE_LIBS
4247 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$SYSTEM_BZ2" = 1; then
4248     BZ2_CFLAGS="-I${BZ2_DIR}/include"
4249     BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
4252 dnl system PNG Support
4253 dnl ========================================================
4254 MOZ_ARG_WITH_STRING(system-png, 
4255 [  --with-system-png[=PFX]
4256                           Use system libpng [installed at prefix PFX]],
4257     PNG_DIR=$withval)
4259 _SAVE_CFLAGS=$CFLAGS
4260 _SAVE_LDFLAGS=$LDFLAGS
4261 _SAVE_LIBS=$LIBS
4262 CFLAGS="$ZLIB_CFLAGS $CFLAGS"
4263 LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
4264 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4265     CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4266     LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4268 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4269     SYSTEM_PNG=
4270 else
4271     _SAVE_PNG_LIBS=$PNG_LIBS
4272     AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"],
4273                  AC_MSG_ERROR([--with-system-png requested but no working libpng found]), 
4274                  $PNG_LIBS)
4275     AC_CHECK_LIB(png, png_get_acTL, ,
4276                  AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]),
4277                  $_SAVE_PNG_LIBS)
4279 if test "$SYSTEM_PNG" = 1; then
4280     LIBS="$PNG_LIBS $LIBS"
4281     AC_TRY_COMPILE([ #include <stdio.h>
4282                      #include <sys/types.h>
4283                      #include <png.h> ],
4284                    [ #if PNG_LIBPNG_VER < $MOZPNG
4285                      #error "Insufficient libpng version ($MOZPNG required)."
4286                      #endif
4287                      #ifndef PNG_UINT_31_MAX
4288                      #error "Insufficient libpng version."
4289                      #endif ],
4290                    SYSTEM_PNG=1,
4291                    AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4293 CFLAGS=$_SAVE_CFLAGS
4294 LDFLAGS=$_SAVE_LDFLAGS
4295 LIBS=$_SAVE_LIBS
4297 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
4298     PNG_CFLAGS="-I${PNG_DIR}/include"
4299     PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
4302 fi # SKIP_LIBRARY_CHECKS
4304 dnl system HunSpell Support
4305 dnl ========================================================
4306 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4307 [  --enable-system-hunspell  Use system hunspell (located with pkgconfig)],
4308     SYSTEM_HUNSPELL=1 )
4310 if test -n "$SYSTEM_HUNSPELL"; then
4311     PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4314 AC_SUBST(SYSTEM_HUNSPELL)
4316 dnl check whether to enable glitz
4317 dnl ========================================================
4318 MOZ_ARG_ENABLE_BOOL(glitz,
4319 [  --enable-glitz          Enable Glitz for use with Cairo],
4320     MOZ_ENABLE_GLITZ=1,
4321     MOZ_ENABLE_GLITZ= )
4322 if test "$MOZ_ENABLE_GLITZ"; then
4323     AC_DEFINE(MOZ_ENABLE_GLITZ)
4326 dnl ========================================================
4327 dnl Java SDK support
4328 dnl ========================================================
4329 JAVA_INCLUDE_PATH=
4330 MOZ_ARG_WITH_STRING(java-include-path,
4331 [  --with-java-include-path=dir   Location of Java SDK headers],
4332     JAVA_INCLUDE_PATH=$withval)
4334 JAVA_BIN_PATH=
4335 MOZ_ARG_WITH_STRING(java-bin-path,
4336 [  --with-java-bin-path=dir   Location of Java binaries (java, javac, jar)],
4337     JAVA_BIN_PATH=$withval)
4339 dnl ========================================================
4340 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4341 dnl their usage and use them in spidermonkey.
4342 dnl ========================================================
4343 MOZ_ARG_WITH_BOOL(arm-kuser,
4344 [  --with-arm-kuser         Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4345     USE_ARM_KUSER=1,
4346     USE_ARM_KUSER=)
4347 if test -n "$USE_ARM_KUSER"; then
4348    AC_DEFINE(USE_ARM_KUSER)
4351 dnl ========================================================
4352 dnl =
4353 dnl = Application
4354 dnl =
4355 dnl ========================================================
4357 MOZ_ARG_HEADER(Application)
4359 BUILD_STATIC_LIBS=
4360 ENABLE_TESTS=1
4361 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4362 MOZ_BRANDING_DIRECTORY=
4363 MOZ_DBGRINFO_MODULES=
4364 MOZ_ENABLE_CANVAS=1
4365 MOZ_EXTENSIONS_ALL=" wallet p3p venkman inspector irc typeaheadfind gnomevfs sroaming datetime finger cview layout-debug tasks sql xforms schema-validation reporter"
4366 MOZ_FEEDS=1
4367 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg bmp xbm icon"
4368 MOZ_IMG_ENCODERS_DEFAULT="png jpeg"
4369 MOZ_IPCD=
4370 MOZ_JAVAXPCOM=
4371 MOZ_JSDEBUGGER=1
4372 MOZ_JSLOADER=1
4373 MOZ_LIBART_CFLAGS=
4374 MOZ_LIBART_LIBS=
4375 MOZ_MATHML=1
4376 MOZ_MORK=1
4377 MOZ_MORKREADER=
4378 MOZ_AUTH_EXTENSION=1
4379 MOZ_NO_ACTIVEX_SUPPORT=1
4380 MOZ_NO_INSPECTOR_APIS=
4381 MOZ_NO_XPCOM_OBSOLETE=
4382 MOZ_NO_FAST_LOAD=
4383 MOZ_OGG=1
4384 MOZ_MEDIA=
4385 MOZ_OJI=1
4386 MOZ_PERMISSIONS=1
4387 MOZ_PLACES=
4388 MOZ_PLAINTEXT_EDITOR_ONLY=
4389 MOZ_PLUGINS=1
4390 MOZ_PREF_EXTENSIONS=1
4391 MOZ_PROFILELOCKING=1
4392 MOZ_PROFILESHARING=1
4393 MOZ_PSM=1
4394 MOZ_PYTHON_EXTENSIONS="xpcom dom"
4395 MOZ_PYTHON=
4396 MOZ_PYTHON_DEBUG_SUFFIX=
4397 MOZ_PYTHON_DLL_SUFFIX=
4398 MOZ_PYTHON_INCLUDES=
4399 MOZ_PYTHON_LIBS=
4400 MOZ_PYTHON_PREFIX=
4401 MOZ_PYTHON_VER=
4402 MOZ_PYTHON_VER_DOTTED=
4403 MOZ_RDF=1
4404 MOZ_REFLOW_PERF=
4405 MOZ_SAFE_BROWSING=
4406 MOZ_HELP_VIEWER=
4407 MOZ_SPELLCHECK=1
4408 MOZ_STATIC_MAIL_BUILD=
4409 MOZ_STORAGE=1
4410 MOZ_SVG=1
4411 MOZ_TIMELINE=
4412 MOZ_UI_LOCALE=en-US
4413 MOZ_UNIVERSALCHARDET=1
4414 MOZ_URL_CLASSIFIER=
4415 MOZ_USE_NATIVE_UCONV=
4416 MOZ_VIEW_SOURCE=1
4417 MOZ_XPFE_COMPONENTS=1
4418 MOZ_XPINSTALL=1
4419 MOZ_XSLT_STANDALONE=
4420 MOZ_XTF=1
4421 MOZ_XUL=1
4422 MOZ_XUL_APP=1
4423 MOZ_ZIPWRITER=1
4424 NS_PRINTING=1
4425 NECKO_COOKIES=1
4426 NECKO_DISK_CACHE=1
4427 NECKO_PROTOCOLS_DEFAULT="about data file ftp gopher http res viewsource"
4428 NECKO_SMALL_BUFFERS=
4429 JS_STATIC_BUILD=
4430 XPC_IDISPATCH_SUPPORT=
4433 case "$target_os" in
4434 darwin*)
4435     ACCESSIBILITY=
4436     ;;
4438     ACCESSIBILITY=1
4439     ;;
4440 esac
4442 case "$target_os" in
4443     msvc*|mks*|cygwin*|mingw*)
4444         if test -z "$GNU_CC"; then 
4445             XPC_IDISPATCH_SUPPORT=1
4446             MOZ_NO_ACTIVEX_SUPPORT=
4447             MOZ_ACTIVEX_SCRIPTING_SUPPORT=1
4448         fi
4449         ;;
4450 esac
4452 MOZ_ARG_ENABLE_STRING(application,
4453 [  --enable-application=APP
4454                           Options include:
4455                             browser (Firefox)
4456                             xulrunner
4457                             content/xslt (Standalone Transformiix XSLT)
4458                             netwerk (Standalone Necko)
4459                             tools/update-packaging (AUS-related packaging tools)
4460                             standalone (use this for standalone
4461                               xpcom/xpconnect or to manually drive a build)],
4462 [ MOZ_BUILD_APP=$enableval ] )
4464 MOZ_EMBEDDING_PROFILE=default
4465 MOZ_ARG_WITH_STRING(embedding-profile,
4466 [  --with-embedding-profile=default|basic|minimal
4467                        see http://wiki.mozilla.org/Gecko:Small_Device_Support],
4468 [ MOZ_EMBEDDING_PROFILE=$withval ])
4470 case "$MOZ_EMBEDDING_PROFILE" in
4471 default)
4472   MOZ_EMBEDDING_LEVEL_DEFAULT=1
4473   MOZ_EMBEDDING_LEVEL_BASIC=1
4474   MOZ_EMBEDDING_LEVEL_MINIMAL=1
4475   AC_DEFINE(MOZ_EMBEDDING_LEVEL_DEFAULT)
4476   AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4477   AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4478   ;;
4480 basic)
4481   MOZ_EMBEDDING_LEVEL_DEFAULT=
4482   MOZ_EMBEDDING_LEVEL_BASIC=1
4483   MOZ_EMBEDDING_LEVEL_MINIMAL=1
4484   AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4485   AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4486   ENABLE_TESTS=
4487   MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4488   MOZ_ENABLE_CANVAS=
4489   MOZ_ENABLE_POSTSCRIPT=
4490   MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4491   MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4492   MOZ_IMG_ENCODERS_DEFAULT=
4493   MOZ_IMG_ENCODERS=
4494   MOZ_INSTALLER=
4495   MOZ_JSDEBUGGER=
4496   MOZ_MATHML=
4497   MOZ_AUTH_EXTENSION=
4498   MOZ_NO_ACTIVEX_SUPPORT=1
4499   MOZ_NO_INSPECTOR_APIS=1
4500   MOZ_NO_XPCOM_OBSOLETE=1
4501   MOZ_NO_FAST_LOAD=1
4502   MOZ_OJI=
4503   MOZ_PLAINTEXT_EDITOR_ONLY=1
4504 #  MOZ_PLUGINS=
4505   MOZ_PREF_EXTENSIONS=
4506   MOZ_PROFILELOCKING=
4507   MOZ_PROFILESHARING=
4508   MOZ_SPELLCHECK=
4509   MOZ_SVG=
4510   MOZ_UNIVERSALCHARDET=
4511   MOZ_UPDATER=
4512   MOZ_USE_NATIVE_UCONV=
4513   MOZ_VIEW_SOURCE=
4514   MOZ_XPFE_COMPONENTS=
4515   MOZ_XPINSTALL=
4516   MOZ_XTF=
4517   MOZ_ZIPWRITER=
4518   NECKO_DISK_CACHE=
4519   NECKO_PROTOCOLS_DEFAULT="about data http file res"
4520   NECKO_SMALL_BUFFERS=1
4521   NS_DISABLE_LOGGING=1
4522   NS_PRINTING=
4523   JS_STATIC_BUILD=1
4524   ;;
4526 minimal)
4527   MOZ_EMBEDDING_LEVEL_DEFAULT=
4528   MOZ_EMBEDDING_LEVEL_BASIC=
4529   MOZ_EMBEDDING_LEVEL_MINIMAL=1
4530   AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4531   ENABLE_TESTS=
4532   MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4533   MOZ_ENABLE_CANVAS=
4534   MOZ_ENABLE_POSTSCRIPT=
4535   MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4536   MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4537   MOZ_IMG_ENCODERS_DEFAULT=
4538   MOZ_IMG_ENCODERS=
4539   MOZ_INSTALLER=
4540   MOZ_JSDEBUGGER=
4541   MOZ_MATHML=
4542   MOZ_AUTH_EXTENSION=
4543   MOZ_NO_ACTIVEX_SUPPORT=1
4544   MOZ_NO_INSPECTOR_APIS=1
4545   MOZ_NO_XPCOM_OBSOLETE=1
4546   MOZ_NO_FAST_LOAD=1
4547   MOZ_OJI=
4548   MOZ_PLAINTEXT_EDITOR_ONLY=1
4549   MOZ_PLUGINS=
4550   MOZ_PREF_EXTENSIONS=
4551   MOZ_PROFILELOCKING=
4552   MOZ_PROFILESHARING=
4553   MOZ_SPELLCHECK=
4554   MOZ_STORAGE=1
4555   MOZ_PLACES=
4556   MOZ_SVG=
4557   MOZ_UNIVERSALCHARDET=
4558   MOZ_UPDATER=
4559   MOZ_USE_NATIVE_UCONV=1
4560   MOZ_VIEW_SOURCE=
4561   MOZ_XPFE_COMPONENTS=
4562   MOZ_XPINSTALL=
4563   MOZ_XTF=
4564   MOZ_XUL=
4565   MOZ_ZIPWRITER=
4566   MOZ_RDF=
4567   NECKO_DISK_CACHE=
4568   NECKO_PROTOCOLS_DEFAULT="about data http file res"
4569   NECKO_SMALL_BUFFERS=1
4570   NS_DISABLE_LOGGING=1
4571   NS_PRINTING=
4572   JS_STATIC_BUILD=1
4573   ;;
4576   AC_MSG_ERROR([Unrecognized value: --with-embedding-profile=$MOZ_EMBEDDING_PROFILE])
4577   ;;
4578 esac
4580 AC_SUBST(MOZ_EMBEDDING_LEVEL_DEFAULT)
4581 AC_SUBST(MOZ_EMBEDDING_LEVEL_BASIC)
4582 AC_SUBST(MOZ_EMBEDDING_LEVEL_MINIMAL)
4584 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
4585 [  --with-xulrunner-stub-name=appname   Create the xulrunner stub with the given name],
4586   XULRUNNER_STUB_NAME=$withval)
4588 if test -z "$XULRUNNER_STUB_NAME"; then
4589   case "$target_os" in
4590   darwin*)
4591     XULRUNNER_STUB_NAME=xulrunner
4592     ;;
4593   *)
4594     XULRUNNER_STUB_NAME=xulrunner-stub
4595   esac
4597 AC_SUBST(XULRUNNER_STUB_NAME)
4599 if test -z "$MOZ_BUILD_APP"; then
4600   AC_MSG_ERROR([--enable-application=APP was not specified and is required.])
4601 else
4602   # We have a valid application only if it has a build.mk file in its top
4603   # directory.
4604   if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
4605     AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4606   fi
4609 # Allow the application to influence configure with a confvars.sh script.
4611 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4612 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4613   AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4614   . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4615 else
4616   AC_MSG_RESULT([no])
4619 # Now is a good time to test for logic errors, define mismatches, etc.
4620 case "$MOZ_BUILD_APP" in
4621 xulrunner)
4622   if test "$LIBXUL_SDK"; then
4623     AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4624   fi
4625   ;;
4627   # Fix this case for folks who forget. Warn them.
4628   if test -n "$LIBXUL_SDK" -a -z "$MOZ_XUL_APP"; then
4629     AC_MSG_WARN([Setting MOZ_XUL_APP since LIBXUL_SDK was set. Add to confvars.sh!])
4630     MOZ_XUL_APP=1
4631   fi
4632   ;;
4633 esac
4635 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4636 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4637 # MOZ_BUILD_APP.
4638 case "$MOZ_BUILD_APP" in
4639 browser)
4640   AC_DEFINE(MOZ_PHOENIX)
4641   ;;
4643 xulrunner)
4644   AC_DEFINE(MOZ_XULRUNNER)
4645   ;;
4647 content/xslt)
4648   AC_DEFINE(TX_EXE)
4649   ;;
4651 standalone) 
4652   MOZ_APP_NAME=mozilla
4653   MOZ_APP_DISPLAYNAME=Mozilla
4654   MOZ_APP_VERSION=$MOZILLA_VERSION
4655   ;;
4657 esac
4659 if test -z "$MOZ_XUL_APP"; then
4660         AC_MSG_ERROR([builds with unsetting MOZ_XUL_APP in confvars.sh are not supported.])
4663 AC_SUBST(MOZ_BUILD_APP)
4664 AC_SUBST(MOZ_XUL_APP)
4665 AC_SUBST(MOZ_PHOENIX)
4666 AC_SUBST(MOZ_XULRUNNER)
4668 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4670 if test "$MOZ_XUL_APP"; then
4671   MOZ_PROFILESHARING=
4672   AC_DEFINE(MOZ_XUL_APP)
4675 dnl ========================================================
4676 dnl = 
4677 dnl = Toolkit Options
4678 dnl = 
4679 dnl ========================================================
4680 MOZ_ARG_HEADER(Toolkit Options)
4682     dnl ========================================================
4683     dnl = Select the default toolkit
4684     dnl ========================================================
4685         MOZ_ARG_ENABLE_STRING(default-toolkit,
4686         [  --enable-default-toolkit=TK
4687                           Select default toolkit
4688                           Platform specific defaults:
4689                             BeOS - cairo-beos
4690                             Mac OS X - cairo-cocoa
4691                             Neutrino/QNX - photon
4692                             OS/2 - cairo-os2
4693                             Win32 - cairo-windows
4694                             WinCE - windows
4695                             Gtk2 with DirectFB - cairo-gtk2-dfb
4696                             * - cairo-gtk2
4697                             * - cairo-qt],
4698     [ _DEFAULT_TOOLKIT=$enableval ],
4699     [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4701     if test "$_DEFAULT_TOOLKIT" = "photon" \
4702         -o "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4703         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4704         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-dfb" \
4705         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
4706         -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
4707         -o "$_DEFAULT_TOOLKIT" = "cairo-beos" \
4708         -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
4709         -o "$_DEFAULT_TOOLKIT" = "cairo-mac" \
4710         -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa"
4711     then
4712         dnl nglayout only supports building with one toolkit,
4713         dnl so ignore everything after the first comma (",").
4714         MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4715     else
4716         AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
4717     fi
4719 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_TOOLKIT,"$MOZ_WIDGET_TOOLKIT")
4721 dnl ========================================================
4722 dnl = Enable the toolkit as needed                         =
4723 dnl ========================================================
4725 case "$MOZ_WIDGET_TOOLKIT" in
4726 photon)
4727         MOZ_ENABLE_PHOTON=1
4728         AC_DEFINE(MOZ_WIDGET_PHOTON)
4729     ;;
4731 cairo-windows)
4732     MOZ_WIDGET_TOOLKIT=windows
4733     MOZ_GFX_TOOLKIT=cairo
4734     ;;
4736 cairo-gtk2|cairo-gtk2-x11)
4737     MOZ_WIDGET_TOOLKIT=gtk2
4738     MOZ_GFX_TOOLKIT=cairo
4739     MOZ_ENABLE_GTK2=1
4740     MOZ_ENABLE_XREMOTE=1
4742     AC_DEFINE(MOZ_X11)
4743     MOZ_X11=1
4745     TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4746     TK_LIBS='$(MOZ_GTK2_LIBS)'
4747     AC_DEFINE(MOZ_WIDGET_GTK2)
4748     ;;
4750 cairo-gtk2-dfb)
4751     MOZ_WIDGET_TOOLKIT=gtk2
4752     MOZ_GFX_TOOLKIT=cairo
4753     MOZ_ENABLE_GTK2=1
4755     AC_DEFINE(MOZ_DFB)
4756     MOZ_DFB=1
4758     TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4759     TK_LIBS='$(MOZ_GTK2_LIBS)'
4760     AC_DEFINE(MOZ_WIDGET_GTK2)
4761     if test "$no_x" != "yes"; then
4762         AC_MSG_WARN([Disabling X when DirectFB is specified.])
4763         no_x=yes
4764     fi
4765     ;;
4767 cairo-qt)
4768     MOZ_WIDGET_TOOLKIT=qt
4769     MOZ_GFX_TOOLKIT=cairo
4770     MOZ_ENABLE_QT=1
4771     MOZ_ENABLE_XREMOTE=1
4773     AC_DEFINE(MOZ_X11)
4774     MOZ_X11=1
4776     TK_CFLAGS='$(MOZ_QT_CFLAGS)'
4777     TK_LIBS='$(MOZ_QT_LIBS)'
4778     AC_DEFINE(MOZ_WIDGET_QT)
4779     ;;
4781 cairo-beos)
4782     MOZ_WIDGET_TOOLKIT=beos
4783     MOZ_GFX_TOOLKIT=cairo
4784     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4785     TK_LIBS='$(MOZ_CAIRO_LIBS)'
4786     ;;
4788 cairo-os2)
4789     MOZ_WIDGET_TOOLKIT=os2
4790     MOZ_GFX_TOOLKIT=cairo
4791     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4792     TK_LIBS='$(MOZ_CAIRO_LIBS)'
4793     ;;
4795 cairo-mac|cairo-cocoa)
4796     if test "$MOZ_WIDGET_TOOLKIT" = "cairo-cocoa"; then
4797         MOZ_WIDGET_TOOLKIT=cocoa
4798         AC_DEFINE(MOZ_WIDGET_COCOA)
4799         MOZ_ENABLE_COCOA=1
4800     else
4801         MOZ_WIDGET_TOOLKIT=mac
4802     fi
4803     MOZ_GFX_TOOLKIT=cairo
4804     MOZ_USER_DIR="Mozilla"
4805     AC_DEFINE(XP_MACOSX)
4806     AC_DEFINE(TARGET_CARBON)
4807     AC_DEFINE(TARGET_API_MAC_CARBON)
4808     TK_LIBS='-framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook'
4809     TK_CFLAGS="-I${MACOS_SDK_DIR}/Developer/Headers/FlatCarbon"
4810     CFLAGS="$CFLAGS $TK_CFLAGS"
4811     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4812     ;;
4813 esac
4815 if test "$MOZ_ENABLE_XREMOTE"; then
4816     AC_DEFINE(MOZ_ENABLE_XREMOTE)
4819 if test "$COMPILE_ENVIRONMENT"; then
4820   if test "$MOZ_ENABLE_GTK2"; then
4821     if test "$MOZ_X11"; then
4822       GDK_PACKAGES=gdk-x11-2.0
4823     elif test "$MOZ_DFB"; then
4824       PKG_CHECK_MODULES(MOZ_DFB, directfb >= 1.1.0)
4825       GDK_PACKAGES=directfb
4826     fi
4828     PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4829   fi
4831 fi # COMPILE_ENVIRONMENT
4833 AC_SUBST(MOZ_DEFAULT_TOOLKIT)
4835 dnl ========================================================
4836 dnl = startup-notification support module
4837 dnl ========================================================
4839 if test "$MOZ_ENABLE_GTK2"
4840 then
4841     MOZ_ENABLE_STARTUP_NOTIFICATION=
4843     MOZ_ARG_ENABLE_BOOL(startup-notification,
4844     [  --enable-startup-notification       Enable startup-notification support (default: disabled) ],
4845         MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4846         MOZ_ENABLE_STARTUP_NOTIFICATION=)
4847     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4848     then
4849         PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4850                           libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4851         [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4852             if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4853             then
4854                 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4855             fi
4856             MOZ_ENABLE_STARTUP_NOTIFICATION=
4857         ])
4858     fi
4860     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4861         AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4862     fi
4864     TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4866 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4867 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4868 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4870 dnl ========================================================
4871 dnl = QT support
4872 dnl ========================================================
4873 if test "$MOZ_ENABLE_QT"
4874 then
4875     PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtUiTools QtCore)
4876     AC_SUBST(MOZ_QT_CFLAGS)
4877     AC_SUBST(MOZ_QT_LIBS)
4879     MOZ_ARG_WITH_STRING(qtdir,
4880     [  --with-qtdir=\$dir       Specify Qt directory ],
4881     [ QTDIR=$withval])
4883     if test -z "$QTDIR"; then
4884       QTDIR="/usr"
4885     fi
4886     QTINCDIR="/include/qt"
4887     if test ! -d "$QTDIR$QTINCDIR"; then
4888        QTINCDIR="/include/X11/qt"
4889     fi
4890     if test ! -d "$QTDIR$QTINCDIR"; then
4891        QTINCDIR="/include"
4892     fi
4894     if test -x "$QTDIR/bin/moc-qt4"; then
4895       HOST_MOC="$QTDIR/bin/moc-qt4"
4896     else
4897       if test -x "$QTDIR/bin/moc"; then
4898         HOST_MOC="$QTDIR/bin/moc"
4899       else
4900         AC_CHECK_PROGS(HOST_MOC, moc, "")
4901       fi
4902     fi
4903     if test -z "$HOST_MOC"; then
4904       AC_MSG_ERROR([no acceptable moc preprocessor found])
4905     fi
4906     MOC=$HOST_MOC
4909 AC_SUBST(GTK_CONFIG)
4910 AC_SUBST(TK_CFLAGS)
4911 AC_SUBST(TK_LIBS)
4913 AC_SUBST(MOZ_ENABLE_GTK2)
4914 AC_SUBST(MOZ_ENABLE_PHOTON)
4915 AC_SUBST(MOZ_ENABLE_COCOA)
4916 AC_SUBST(MOZ_ENABLE_GLITZ)
4917 AC_SUBST(MOZ_ENABLE_QT)
4918 AC_SUBST(MOZ_ENABLE_XREMOTE)
4919 AC_SUBST(MOZ_GTK2_CFLAGS)
4920 AC_SUBST(MOZ_GTK2_LIBS)
4921 AC_SUBST(MOZ_QT_CFLAGS)
4922 AC_SUBST(MOZ_QT_LIBS)
4924 AC_SUBST(MOC)
4926 AC_SUBST(MOZ_DFB)
4927 AC_SUBST(MOZ_X11)
4929 dnl ========================================================
4930 dnl =
4931 dnl = Components & Features
4932 dnl = 
4933 dnl ========================================================
4934 MOZ_ARG_HEADER(Components and Features)
4936 dnl ========================================================
4937 dnl = Localization
4938 dnl ========================================================
4939 MOZ_ARG_ENABLE_STRING(ui-locale,
4940 [  --enable-ui-locale=ab-CD
4941                           Select the user interface locale (default: en-US)],
4942     MOZ_UI_LOCALE=$enableval )
4943 AC_SUBST(MOZ_UI_LOCALE)
4945 dnl ========================================================
4946 dnl = Trademarked Branding 
4947 dnl ========================================================
4948 MOZ_ARG_ENABLE_BOOL(official-branding,
4949 [  --enable-official-branding Enable Official mozilla.org Branding
4950                           Do not distribute builds with
4951                           --enable-official-branding unless you have
4952                           permission to use trademarks per
4953                           http://www.mozilla.org/foundation/trademarks/ .],
4954 [case "$MOZ_BUILD_APP" in
4955 browser)
4956     MOZ_BRANDING_DIRECTORY=other-licenses/branding/firefox
4957     MOZ_APP_DISPLAYNAME=Firefox
4958     ;;
4961     AC_MSG_ERROR([Official branding is only available for Firefox.])
4962 esac
4965 MOZ_ARG_WITH_STRING(branding,
4966 [  --with-branding=dir    Use branding from the specified directory.],
4967     MOZ_BRANDING_DIRECTORY=$withval)
4969 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4970 if test -z "$REAL_BRANDING_DIRECTORY"; then
4971   REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
4974 if test -f "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"; then
4975   . "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"
4978 AC_SUBST(MOZ_BRANDING_DIRECTORY)
4980 dnl ========================================================
4981 dnl = Distribution ID
4982 dnl ========================================================
4983 MOZ_ARG_WITH_STRING(distribution-id,
4984 [  --with-distribution-id=ID  Set distribution-specific id (default=org.mozilla)],
4985 [ val=`echo $withval`
4986     MOZ_DISTRIBUTION_ID="$val"])
4988 if test -z "$MOZ_DISTRIBUTION_ID"; then
4989    MOZ_DISTRIBUTION_ID="org.mozilla"
4992 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
4993 AC_SUBST(MOZ_DISTRIBUTION_ID)
4996 dnl ========================================================
4997 dnl complex text support off by default
4998 dnl ========================================================
4999 MOZ_PANGO=1
5000 MOZ_ARG_DISABLE_BOOL(pango,
5001 [  --disable-pango Disable usage of Pango ],
5002     MOZ_PANGO=,
5003     MOZ_PANGO=1)
5006 dnl ========================================================
5007 dnl = Xft and Pango
5008 dnl ========================================================
5009 if test "$MOZ_ENABLE_GTK2"
5010 then
5011     if test "$MOZ_X11"; then
5012         PKG_CHECK_MODULES(MOZ_XFT, xft)
5013         AC_SUBST(MOZ_XFT_CFLAGS)
5014         AC_SUBST(MOZ_XFT_LIBS)
5015     fi
5017     AC_SUBST(MOZ_PANGO)
5019     PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
5021     if test "$MOZ_PANGO"
5022     then
5023         PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangocairo >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
5024         AC_SUBST(MOZ_PANGO_CFLAGS)
5025         AC_SUBST(MOZ_PANGO_LIBS)
5026         AC_DEFINE(MOZ_PANGO)
5027     else
5028         PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
5029         AC_SUBST(MOZ_PANGO_CFLAGS)
5030         AC_SUBST(MOZ_PANGO_LIBS)
5032         PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0 fontconfig)
5033         AC_SUBST(FT2_CFLAGS)
5034         AC_SUBST(FT2_LIBS)
5035     fi
5038 dnl ========================================================
5039 dnl = PostScript print module
5040 dnl ========================================================
5041 MOZ_ARG_DISABLE_BOOL(postscript,
5042 [  --disable-postscript    Disable PostScript printing support ],
5043     MOZ_ENABLE_POSTSCRIPT=,
5044     MOZ_ENABLE_POSTSCRIPT=1 )
5046 dnl ========================================================
5047 dnl = GnomeVFS support module
5048 dnl ========================================================
5050 if test "$MOZ_X11"
5051 then
5052     dnl build the gnomevfs extension by default only when the
5053     dnl GTK2 toolkit is in use.
5054     if test "$MOZ_ENABLE_GTK2"
5055     then
5056         MOZ_ENABLE_GNOMEVFS=1
5057         MOZ_ENABLE_GCONF=1
5058         MOZ_ENABLE_LIBGNOME=1
5059     fi
5061     MOZ_ARG_DISABLE_BOOL(gnomevfs,
5062     [  --disable-gnomevfs      Disable GnomeVFS support ],
5063         MOZ_ENABLE_GNOMEVFS=,
5064         MOZ_ENABLE_GNOMEVFS=force)
5066     if test "$MOZ_ENABLE_GNOMEVFS"
5067     then
5068         PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
5069             MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
5070             MOZ_ENABLE_GNOMEVFS=1
5071         ],[
5072             if test "$MOZ_ENABLE_GNOMEVFS" = "force"
5073             then
5074                 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
5075             fi
5076             MOZ_ENABLE_GNOMEVFS=
5077         ])
5078     fi
5080     AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
5081     AC_SUBST(MOZ_GNOMEVFS_LIBS)
5083     if test "$MOZ_ENABLE_GCONF"
5084     then
5085         PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION,[
5086             MOZ_GCONF_LIBS=`echo $MOZ_GCONF_LIBS | sed 's/-llinc\>//'`
5087             MOZ_ENABLE_GCONF=1
5088         ],[
5089             MOZ_ENABLE_GCONF=
5090         ])
5091     fi
5093     if test "$MOZ_ENABLE_GCONF"; then
5094         AC_DEFINE(MOZ_ENABLE_GCONF)
5095     fi
5097     AC_SUBST(MOZ_ENABLE_GCONF)
5098     AC_SUBST(MOZ_GCONF_CFLAGS)
5099     AC_SUBST(MOZ_GCONF_LIBS)
5101     if test "$MOZ_ENABLE_LIBGNOME"
5102     then
5103         PKG_CHECK_MODULES(MOZ_LIBGNOME, libgnome-2.0 >= $LIBGNOME_VERSION,[
5104             MOZ_LIBGNOME_LIBS=`echo $MOZ_LIBGNOME_LIBS | sed 's/-llinc\>//'`
5105             MOZ_ENABLE_LIBGNOME=1
5106         ],[
5107             MOZ_ENABLE_LIBGNOME=
5108         ])
5109     fi
5111     AC_SUBST(MOZ_LIBGNOME_CFLAGS)
5112     AC_SUBST(MOZ_LIBGNOME_LIBS)
5114     # The GNOME component is built if gtk2, gconf, gnome-vfs, and libgnome
5115     # are all available.
5117     if test "$MOZ_ENABLE_GTK2" -a "$MOZ_ENABLE_GCONF" -a \
5118             "$MOZ_ENABLE_GNOMEVFS" -a "$MOZ_ENABLE_LIBGNOME"; then
5119       MOZ_ENABLE_GNOME_COMPONENT=1
5120     else
5121       MOZ_ENABLE_GNOME_COMPONENT=
5122     fi
5124     AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5127 dnl ========================================================
5128 dnl = libgnomeui support module
5129 dnl ========================================================
5131 if test "$MOZ_ENABLE_GTK2"
5132 then
5133     MOZ_ENABLE_GNOMEUI=1
5135     MOZ_ARG_DISABLE_BOOL(gnomeui,
5136     [  --disable-gnomeui       Disable libgnomeui support (default: auto, optional at runtime) ],
5137         MOZ_ENABLE_GNOMEUI=,
5138         MOZ_ENABLE_GNOMEUI=force)
5140     if test "$MOZ_ENABLE_GNOMEUI"
5141     then
5142         PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5143         [
5144             MOZ_GNOMEUI_LIBS=`echo $MOZ_GNOMEUI_LIBS | sed 's/-llinc\>//'`
5145             MOZ_ENABLE_GNOMEUI=1
5146         ],[
5147             if test "$MOZ_ENABLE_GNOMEUI" = "force"
5148             then
5149                 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5150             fi
5151             MOZ_ENABLE_GNOMEUI=
5152         ])
5153     fi
5155     if test "$MOZ_ENABLE_GNOMEUI"; then
5156         AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5157     fi
5159 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5160 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5161 AC_SUBST(MOZ_GNOMEUI_LIBS)
5163 dnl ========================================================
5164 dnl = dbus support
5165 dnl ========================================================
5167 if test "$MOZ_ENABLE_GTK2" || "$MOZ_ENABLE_QT"
5168 then
5169     MOZ_ENABLE_DBUS=1
5171     MOZ_ARG_DISABLE_BOOL(dbus,
5172     [  --disable-dbus       Disable dbus support ],
5173         MOZ_ENABLE_DBUS=,
5174         MOZ_ENABLE_DBUS=1)
5176     if test "$MOZ_ENABLE_DBUS"
5177     then
5178         PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5179         AC_DEFINE(MOZ_ENABLE_DBUS)
5180     fi
5182 AC_SUBST(MOZ_ENABLE_DBUS)
5183 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5184 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5186 dnl ========================================================
5187 dnl = Build Personal Security Manager
5188 dnl ========================================================
5189 MOZ_ARG_DISABLE_BOOL(crypto,
5190 [  --disable-crypto        Disable crypto support (Personal Security Manager)],
5191     MOZ_PSM=,
5192     MOZ_PSM=1 )
5194 dnl ========================================================
5195 dnl = JS Debugger XPCOM component (js/jsd)
5196 dnl ========================================================
5197 MOZ_ARG_DISABLE_BOOL(jsd,
5198 [  --disable-jsd           Disable JavaScript debug library],
5199     MOZ_JSDEBUGGER=,
5200     MOZ_JSDEBUGGER=1)
5203 dnl ========================================================
5204 dnl = Disable plugin support
5205 dnl ========================================================
5206 MOZ_ARG_DISABLE_BOOL(plugins,
5207 [  --disable-plugins       Disable plugins support],
5208     MOZ_PLUGINS=,
5209     MOZ_PLUGINS=1)
5211 dnl ========================================================
5212 dnl = Open JVM Interface (OJI) support
5213 dnl ========================================================
5214 MOZ_ARG_DISABLE_BOOL(oji,
5215 [  --disable-oji           Disable Open JVM Integration support],
5216     MOZ_OJI=,
5217     MOZ_OJI=1)
5218 if test -n "$MOZ_OJI"; then
5219     AC_DEFINE(OJI)
5222 dnl bi-directional support always on
5223 IBMBIDI=1
5224 AC_DEFINE(IBMBIDI)
5226 dnl ========================================================
5227 dnl view source support on by default
5228 dnl ========================================================
5229 MOZ_ARG_DISABLE_BOOL(view-source,
5230 [  --disable-view-source     Disable view source support],
5231     MOZ_VIEW_SOURCE=,
5232     MOZ_VIEW_SOURCE=1 )
5233 if test "$MOZ_VIEW_SOURCE"; then
5234     AC_DEFINE(MOZ_VIEW_SOURCE)
5238 dnl ========================================================
5239 dnl accessibility support on by default on all platforms 
5240 dnl except OS X.
5241 dnl ========================================================
5242 MOZ_ARG_DISABLE_BOOL(accessibility,
5243 [  --disable-accessibility Disable accessibility support (off by default on OS X)],
5244     ACCESSIBILITY=,
5245     ACCESSIBILITY=1 )
5246 if test "$ACCESSIBILITY"; then
5247     AC_DEFINE(ACCESSIBILITY)
5250 if test -n "$ACCESSIBILITY"; then
5251 case "$target" in
5252 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5253     if test "$ac_cv_header_atlbase_h" = "no"; then
5254         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.])
5255     fi
5256     if test "$ac_cv_header_oleacc_idl" = "no"; then
5257         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.])
5258     fi
5259     ;;
5260 esac
5263 dnl ========================================================
5264 dnl xpfe/components on by default
5265 dnl ========================================================
5266 MOZ_ARG_DISABLE_BOOL(xpfe-components,
5267 [  --disable-xpfe-components
5268                           Disable xpfe components],
5269     MOZ_XPFE_COMPONENTS=,
5270     MOZ_XPFE_COMPONENTS=1 )
5272 dnl ========================================================
5273 dnl xpinstall support on by default
5274 dnl ========================================================
5275 MOZ_ARG_DISABLE_BOOL(xpinstall,
5276 [  --disable-xpinstall     Disable xpinstall support],
5277     MOZ_XPINSTALL=,
5278     MOZ_XPINSTALL=1 )
5279 if test "$MOZ_XPINSTALL"; then
5280     AC_DEFINE(MOZ_XPINSTALL)
5283 dnl ========================================================
5284 dnl xpcom js loader support on by default
5285 dnl ========================================================
5286 MOZ_ARG_DISABLE_BOOL(jsloader,
5287 [  --disable-jsloader      Disable xpcom js loader support],
5288     MOZ_JSLOADER=,
5289     MOZ_JSLOADER=1 )
5290 if test "$MOZ_JSLOADER"; then
5291     AC_DEFINE(MOZ_JSLOADER)
5294 dnl ========================================================
5295 dnl Disable printing
5296 dnl ========================================================
5297 MOZ_ARG_DISABLE_BOOL(printing,
5298 [  --disable-printing  Disable printing support],
5299     NS_PRINTING=,
5300     NS_PRINTING=1 )
5302 if test "$NS_PRINTING"; then
5303     AC_DEFINE(NS_PRINTING)
5304     AC_DEFINE(NS_PRINT_PREVIEW)
5307 dnl ========================================================
5308 dnl use native unicode converters
5309 dnl ========================================================
5310 MOZ_ARG_ENABLE_BOOL(native-uconv,
5311 [  --enable-native-uconv   Enable iconv support],
5312     MOZ_USE_NATIVE_UCONV=1,
5313     MOZ_USE_NATIVE_UCONV= )
5314 if test "$MOZ_USE_NATIVE_UCONV"; then
5315     AC_DEFINE(MOZ_USE_NATIVE_UCONV)
5317 if test "$OS_ARCH" != "WINCE" -a "$OS_ARCH" != "WINNT" -a "$MOZ_USE_NATIVE_UCONV" -a "$ac_cv_func_iconv" != "yes"; then
5318     AC_MSG_ERROR([iconv() not found.  Cannot enable native uconv support.])
5322 dnl ========================================================
5323 dnl Libeditor can be build as plaintext-only,
5324 dnl or as a full html and text editing component.
5325 dnl We build both by default.
5326 dnl ========================================================
5327 MOZ_ARG_ENABLE_BOOL(plaintext-editor-only,
5328 [  --enable-plaintext-editor-only
5329                           Allow only plaintext editing],
5330     MOZ_PLAINTEXT_EDITOR_ONLY=1,
5331     MOZ_PLAINTEXT_EDITOR_ONLY= )
5332 dnl Note the #define is MOZILLA, not MOZ, for compat with the Mac build.
5333 AC_SUBST(MOZ_PLAINTEXT_EDITOR_ONLY)
5335 dnl ========================================================
5336 dnl = Drop XPCOM Obsolete library
5337 dnl ========================================================
5338 MOZ_ARG_DISABLE_BOOL(xpcom-obsolete,
5339 [  --disable-xpcom-obsolete           Disable XPCOM Obsolete Library],
5340     MOZ_NO_XPCOM_OBSOLETE=1,
5341     MOZ_NO_XPCOM_OBSOLETE=)
5343 if test -n "$MOZ_NO_XPCOM_OBSOLETE"; then
5344     AC_DEFINE(MOZ_NO_XPCOM_OBSOLETE)
5347 dnl ========================================================
5348 dnl = Disable Fast Load
5349 dnl ========================================================
5350 MOZ_ARG_DISABLE_BOOL(xpcom-fastload,
5351 [  --disable-xpcom-fastload           Disable XPCOM fastload support],
5352     MOZ_NO_FAST_LOAD=1,
5353     MOZ_NO_FAST_LOAD=)
5355 AC_SUBST(MOZ_NO_FAST_LOAD)
5357 if test -n "$MOZ_NO_FAST_LOAD"; then
5358     AC_DEFINE(MOZ_NO_FAST_LOAD)
5361 dnl ========================================================
5362 dnl = Enable Ogg Codecs
5363 dnl ========================================================
5364 MOZ_ARG_DISABLE_BOOL(ogg,
5365 [  --disable-ogg           Disable Ogg Codec support],
5366     MOZ_OGG=,
5367     MOZ_OGG=1)
5369 AC_SUBST(MOZ_OGG)
5371 if test -n "$MOZ_OGG"; then
5372     AC_DEFINE(MOZ_OGG)
5373     MOZ_MEDIA=1
5376 AC_SUBST(MOZ_MEDIA)
5378 if test -n "$MOZ_MEDIA"; then
5379     AC_DEFINE(MOZ_MEDIA)
5382 dnl If using Ogg with Linux, ensure that the alsa library is available
5383 if test -n "$MOZ_OGG"; then
5384    case "$target_os" in
5385 linux*)
5386       AC_CHECK_LIB(asound, snd_pcm_open,,AC_MSG_ERROR([Ogg support on Linux requires the alsa library]))
5387       ;;
5388    esac
5391 dnl ========================================================
5392 dnl Permissions System
5393 dnl ========================================================
5394 MOZ_ARG_DISABLE_BOOL(permissions,
5395 [  --disable-permissions   Disable permissions (popup and cookie blocking)],
5396     MOZ_PERMISSIONS=,
5397     MOZ_PERMISSIONS=1
5400 dnl ========================================================
5401 dnl NegotiateAuth
5402 dnl ========================================================
5403 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5404 [  --disable-negotiateauth Disable GSS-API negotiation ],
5405     MOZ_AUTH_EXTENSION=,
5406     MOZ_AUTH_EXTENSION=1 )
5408 dnl ========================================================
5409 dnl XTF
5410 dnl ========================================================
5411 MOZ_ARG_DISABLE_BOOL(xtf,
5412 [  --disable-xtf           Disable XTF (pluggable xml tags) support],
5413     MOZ_XTF=,
5414     MOZ_XTF=1 )
5415 if test "$MOZ_XTF"; then
5416   AC_DEFINE(MOZ_XTF)
5419 dnl ========================================================
5420 dnl Inspector APIs
5421 dnl ========================================================
5422 MOZ_ARG_DISABLE_BOOL(inspector-apis,
5423 [  --disable-inspector-apis Disable the DOM inspection APIs ],
5424     MOZ_NO_INSPECTOR_APIS=1,
5425     MOZ_NO_INSPECTOR_APIS= )
5427 dnl ========================================================
5428 dnl Pref extensions (autoconfig and system-pref)
5429 dnl ========================================================
5430 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5431 [  --disable-pref-extensions
5432                           Disable pref extensions such as autoconfig and
5433                           system-pref],
5434   MOZ_PREF_EXTENSIONS=,
5435   MOZ_PREF_EXTENSIONS=1 )
5437 dnl ========================================================
5438 dnl = Universalchardet
5439 dnl ========================================================
5440 MOZ_ARG_DISABLE_BOOL(universalchardet,
5441 [  --disable-universalchardet
5442                           Disable universal encoding detection],
5443   MOZ_UNIVERSALCHARDET=,
5444   MOZ_UNIVERSALCHARDET=1 )
5446 dnl ========================================================
5447 dnl JavaXPCOM
5448 dnl ========================================================
5449 MOZ_ARG_ENABLE_BOOL(javaxpcom,
5450 [  --enable-javaxpcom
5451                           Enable Java-XPCOM bridge],
5452     MOZ_JAVAXPCOM=1,
5453     MOZ_JAVAXPCOM= )
5455 if test -n "${MOZ_JAVAXPCOM}"; then
5456   case "$host_os" in
5457     cygwin*|msvc*|mks*)
5458       if test -n "$JAVA_HOME"; then
5459         JAVA_HOME=`cygpath -u \`cygpath -m -s "$JAVA_HOME"\``
5460       fi
5461       ;;
5462     *mingw*)
5463       if test -n "$JAVA_HOME"; then
5464         JAVA_HOME=`cd "$JAVA_HOME" && pwd`
5465       fi
5466       ;;
5467   esac
5469   if test -n "${JAVA_INCLUDE_PATH}"; then
5470     dnl Make sure jni.h exists in the given include path.
5471     if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5472       AC_MSG_ERROR([jni.h was not found in given include path $JAVA_INCLUDE_PATH.])
5473     fi
5474   else
5475     case "$target_os" in
5476       darwin*)
5477         dnl Default to java system location
5478         JAVA_INCLUDE_PATH=/System/Library/Frameworks/JavaVM.framework/Headers
5479         ;;
5480       *)
5481         dnl Try $JAVA_HOME
5482         JAVA_INCLUDE_PATH="$JAVA_HOME/include"
5483         ;;
5484     esac
5485     if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5486       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.])
5487     fi
5488   fi
5490   if test -n "${JAVA_BIN_PATH}"; then
5491     dnl Look for javac and jar in the specified path.
5492     JAVA_PATH="$JAVA_BIN_PATH"
5493   else
5494     dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5495     JAVA_PATH="$JAVA_HOME/bin:$PATH"
5496   fi
5498   AC_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5499   AC_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5500   AC_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5501   if test -z "$JAVA" || test "$JAVA" = ":" || test -z "$JAVAC" || test "$JAVAC" = ":" || test -z "$JAR" || test "$JAR" = ":"; then
5502     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.])
5503   fi
5506 dnl ========================================================
5507 dnl = Breakpad crash reporting (on by default on supported platforms)
5508 dnl ========================================================
5510 if (test "$OS_ARCH" = "WINNT" -a -z "$GNU_CC" \
5511     || test "$OS_ARCH" = "Darwin" \
5512     || test "$OS_ARCH" = "Linux" -a "$CPU_ARCH" = "x86" \
5513     || test "$OS_ARCH" = "SunOS") \
5514    && test -z "$HAVE_64BIT_OS"; then
5515    MOZ_CRASHREPORTER=1
5518 MOZ_ARG_DISABLE_BOOL(crashreporter,
5519 [  --disable-crashreporter          Disable breakpad crash reporting],
5520     MOZ_CRASHREPORTER=,
5521     MOZ_CRASHREPORTER=1)
5523 if test -n "$MOZ_CRASHREPORTER"; then
5524    AC_DEFINE(MOZ_CRASHREPORTER)
5526   if (test "$OS_ARCH" = "Linux" || test "$OS_ARCH" = "SunOS") && \
5527     test -z "$SKIP_LIBRARY_CHECKS"; then
5528     PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
5529     AC_SUBST(MOZ_GTHREAD_CFLAGS)
5530     AC_SUBST(MOZ_GTHREAD_LIBS)
5532     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.])])
5533   fi
5536 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
5537 [  --with-crashreporter-enable-percent=NN  Enable sending crash reports by default on NN% of users. (default=100)],
5538 [ val=`echo $withval | sed 's/[^0-9]//g'`
5539     MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
5541 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
5542    MOZ_CRASHREPORTER_ENABLE_PERCENT=100
5544 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
5546 dnl ========================================================
5547 dnl = Enable compilation of specific extension modules
5548 dnl ========================================================
5550 MOZ_ARG_ENABLE_STRING(extensions,
5551 [  --enable-extensions     Enable extensions],
5552 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5553     if test "$option" = "yes" || test "$option" = "all"; then
5554         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_ALL"
5555     elif test "$option" = "no" || test "$option" = "none"; then
5556         MOZ_EXTENSIONS=""
5557     elif test "$option" = "default"; then
5558         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
5559     elif test `echo "$option" | grep -c \^-` != 0; then
5560         option=`echo $option | sed 's/^-//'`
5561         MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
5562     else
5563         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
5564     fi
5565 done],
5566     MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
5568 if test -z "$MOZ_ENABLE_GNOMEVFS" && test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
5569     # Suppress warning on non-X11 platforms
5570     if test -n "$MOZ_X11"; then
5571         AC_MSG_WARN([Cannot build gnomevfs without required libraries. Removing gnomevfs from MOZ_EXTENSIONS.])
5572     fi
5573     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
5576 if test -z "$MOZ_JSDEBUGGER" && test `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
5577     AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
5578     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
5581 dnl This might be temporary: build tridentprofile only on Windows
5582 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0 && test "$OS_ARCH" != "WINNT"; then
5583     AC_MSG_WARN([tridentprofile extension works only on Windows at this time. Removing tridentprofile from MOZ_EXTENSIONS.])
5584     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5587 dnl cookie must be built before tridentprofile. put it at list's end.
5588 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0; then
5589   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5590   MOZ_EXTENSIONS="$MOZ_EXTENSIONS tridentprofile"
5593 dnl xforms requires xtf and schema-validation
5594 if test -z "$MOZ_XTF" && test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
5595     AC_MSG_WARN([Cannot build XForms without XTF support.  Removing XForms from MOZ_EXTENSIONS.])
5596     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5598 if test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0 && test `echo "$MOZ_EXTENSIONS" | grep -c schema-validation` -eq 0; then
5599     AC_MSG_WARN([Cannot build XForms without schema validation.  Removing XForms from MOZ_EXTENSIONS.])
5600     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5603 if test `echo "$MOZ_EXTENSIONS" | grep -c auth` -ne 0; then
5604     AC_MSG_WARN([auth is no longer an extension, use --disable-negotiateauth to disable.])
5605     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|auth||g'`
5608 if test `echo "$MOZ_EXTENSIONS" | grep -c 'cookie\|permissions'` -ne 0; then
5609     AC_MSG_WARN([cookie and permissions are no longer extensions, use --disable-permissions to disable.])
5610     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|cookie||g; s|permissions||g'`
5613 if test `echo "$MOZ_EXTENSIONS" | grep -c pref` -ne 0; then
5614     AC_MSG_WARN([pref is no longer an extension, use --disable-pref-extensions to disable.])
5615     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|pref||g'`
5618 if test `echo "$MOZ_EXTENSIONS" | grep -c universalchardet` -ne 0; then
5619     AC_MSG_WARN([universalchardet is no longer an extension, use --disable-universalchardet to disable.])
5620     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|universalchardet||g'`
5623 if test `echo "$MOZ_EXTENSIONS" | grep -c java` -ne 0; then
5624     AC_MSG_WARN([java is no longer an extension, use --enable-javaxpcom to enable.])
5625     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|java||g'`
5628 if test `echo "$MOZ_EXTENSIONS" | grep -c spellcheck` -ne 0; then
5629     AC_MSG_WARN([spellcheck is no longer an extension.])
5630     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|spellcheck||g'`
5633 if test -n "$MOZ_NO_XPCOM_OBSOLETE" && test `echo "$MOZ_EXTENSIONS" | grep -c sroaming` -ne 0; then
5634     AC_MSG_WARN([Cannot currently build sroaming without xpcom obsolete -- bug 249343. Removing sroaming from MOZ_EXTENSIONS.])
5635     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|sroaming||'`
5638 dnl Remove dupes
5639 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
5641 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
5642 dnl when trying to build a non-existent extension.
5643 for extension in $MOZ_EXTENSIONS; do
5644     if test ! -d "${srcdir}/extensions/${extension}"; then
5645         AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
5646     fi
5647 done
5650 dnl ========================================================
5651 dnl Image decoders
5652 dnl ========================================================
5653 case "$MOZ_WIDGET_TOOLKIT" in
5654 beos|windows|os2|mac|cocoa)
5655     ;;
5657     if test -z "$MOZ_ENABLE_GTK2" && test -z "$MOZ_ENABLE_QT"; then
5658        MOZ_IMG_DECODERS_DEFAULT=`echo $MOZ_IMG_DECODERS_DEFAULT | sed -e 's|icon||'`
5659     fi
5660     ;;
5661 esac
5663 MOZ_ARG_ENABLE_STRING(image-decoders,
5664 [  --enable-image-decoders[={mod1,mod2,default,all,none}]
5665                           Enable specific image decoders],
5666 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5667     if test "$option" = "yes" || test "$option" = "all"; then
5668         MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5669     elif test "$option" = "no" || test "$option" = "none"; then
5670         MOZ_IMG_DECODERS=""
5671     elif test "$option" = "default"; then
5672         MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5673     elif test `echo "$option" | grep -c \^-` != 0; then
5674         option=`echo $option | sed 's/^-//'`
5675         MOZ_IMG_DECODERS=`echo "$MOZ_IMG_DECODERS" | sed "s/ ${option}//"`
5676     else
5677         MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $option"
5678     fi
5679 done],
5680     MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS_DEFAULT")
5682 dnl Dupes are removed in the encoder section because it will also add decoders
5684 dnl ========================================================
5685 dnl Image encoders
5686 dnl ========================================================
5687 MOZ_ARG_ENABLE_STRING(image-encoders,
5688 [  --enable-image-encoders[={mod1,mod2,default,all,none}]
5689                           Enable specific image encoders],
5690 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5691     if test "$option" = "yes" || test "$option" = "all"; then
5692         addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5693     elif test "$option" = "no" || test "$option" = "none"; then
5694         MOZ_IMG_ENCODERS=""
5695         addencoder=""
5696     elif test "$option" = "default"; then
5697         addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5698     elif test `echo "$option" | grep -c \^-` != 0; then
5699         option=`echo $option | sed 's/^-//'`
5700         addencoder=`echo "$MOZ_IMG_ENCODERS" | sed "s/ ${option}//"`
5701     else
5702         addencoder="$option"
5703     fi
5704     MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS $addencoder"
5705 done],
5706     MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS_DEFAULT")
5708 dnl Remove dupes
5709 MOZ_IMG_DECODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_DECODERS}`
5710 MOZ_IMG_ENCODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_ENCODERS}`
5712 dnl ========================================================
5713 dnl MathML on by default
5714 dnl ========================================================
5715 MOZ_ARG_DISABLE_BOOL(mathml,
5716 [  --disable-mathml        Disable MathML support],
5717     MOZ_MATHML=,
5718     MOZ_MATHML=1 )
5719 if test "$MOZ_MATHML"; then
5720   AC_DEFINE(MOZ_MATHML)
5723 dnl ========================================================
5724 dnl Canvas
5725 dnl ========================================================
5726 MOZ_ARG_DISABLE_BOOL(canvas,
5727 [  --disable-canvas          Disable html:canvas feature],
5728     MOZ_ENABLE_CANVAS=,
5729     MOZ_ENABLE_CANVAS=1 )
5730 if test -n "$MOZ_ENABLE_CANVAS"; then
5731     AC_DEFINE(MOZ_ENABLE_CANVAS)
5733 AC_SUBST(MOZ_ENABLE_CANVAS)
5735 dnl ========================================================
5736 dnl SVG
5737 dnl ========================================================
5738 MOZ_ARG_DISABLE_BOOL(svg,
5739 [  --disable-svg            Disable SVG support],
5740     MOZ_SVG=,
5741     MOZ_SVG=1 )
5742 if test -n "$MOZ_SVG"; then
5743   AC_DEFINE(MOZ_SVG)
5746 dnl ========================================================
5747 dnl Installer
5748 dnl ========================================================
5749 case "$target_os" in
5750     aix*|solaris*|linux*|msvc*|mks*|cygwin*|mingw*|os2*|wince*)
5751         MOZ_INSTALLER=1
5752         ;;
5753 esac
5755 MOZ_ARG_DISABLE_BOOL(installer,
5756 [  --disable-installer     Disable building of installer],
5757     MOZ_INSTALLER=,
5758     MOZ_INSTALLER=1 )
5759 if test -n "$MOZ_INSTALLER" -a -n "$MOZ_XUL_APP" -a "$OS_ARCH" = "WINNT"; then
5760     # Disable installer for Windows builds that use the new toolkit if NSIS
5761     # isn't in the path.
5762     AC_PATH_PROGS(MAKENSIS, makensis)
5763     if test -z "$MAKENSIS" || test "$MAKENSIS" = ":"; then
5764         AC_MSG_ERROR([To build the installer makensis is required in your path. To build without the installer reconfigure using --disable-installer.])
5765     fi
5766     # The Windows build for NSIS requires the iconv command line utility to
5767     # convert the charset of the locale files.
5768     AC_PATH_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5769     if test -z "$HOST_ICONV"; then
5770         AC_MSG_ERROR([To build the installer iconv is required in your path. To build without the installer reconfigure using --disable-installer.])
5771     fi
5774 # Automatically disable installer if xpinstall isn't built
5775 if test -z "$MOZ_XPINSTALL"; then
5776     MOZ_INSTALLER=
5778 AC_SUBST(MOZ_INSTALLER)
5780 AC_MSG_CHECKING([for tar archiver])
5781 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
5782 if test -z "$TAR"; then
5783     AC_MSG_ERROR([no tar archiver found in \$PATH])
5785 AC_MSG_RESULT([$TAR])
5786 AC_SUBST(TAR)
5788 AC_MSG_CHECKING([for wget])
5789 AC_CHECK_PROGS(WGET, wget, "")
5790 AC_MSG_RESULT([$WGET])
5791 AC_SUBST(WGET)
5793 dnl ========================================================
5794 dnl Updater
5795 dnl ========================================================
5797 MOZ_ARG_DISABLE_BOOL(updater,
5798 [  --disable-updater       Disable building of updater],
5799     MOZ_UPDATER=,
5800     MOZ_UPDATER=1 )
5801 # The Windows build requires the iconv command line utility
5802 # in order to build the updater.
5803 case "$target_os" in
5804     msvc*|mks*|cygwin*|mingw*|wince*)
5805         if test -n "$MOZ_UPDATER"; then
5806             AC_MSG_CHECKING([for iconv])
5807             AC_CHECK_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5808             if test -z "$HOST_ICONV"; then
5809                 AC_MSG_ERROR([iconv not found in \$PATH])
5810             fi
5811         fi
5812         ;;
5813 esac
5814 AC_SUBST(MOZ_UPDATER)
5816 # app update channel is 'default' when not supplied.
5817 MOZ_ARG_ENABLE_STRING([update-channel],
5818 [  --enable-update-channel=CHANNEL
5819                            Select application update channel (default=default)],
5820     MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
5822 if test -z "$MOZ_UPDATE_CHANNEL"; then
5823     MOZ_UPDATE_CHANNEL=default
5825 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
5827 # tools/update-packaging is not checked out by default.
5828 MOZ_ARG_ENABLE_BOOL(update-packaging,
5829 [  --enable-update-packaging
5830                            Enable tools/update-packaging],
5831     MOZ_UPDATE_PACKAGING=1,
5832     MOZ_UPDATE_PACKAGING= )
5833 AC_SUBST(MOZ_UPDATE_PACKAGING)
5835 dnl ========================================================
5836 dnl ActiveX
5837 dnl ========================================================
5839 MOZ_ARG_DISABLE_BOOL(xpconnect-idispatch,
5840 [  --disable-xpconnect-idispatch
5841                           Disable building of xpconnect support for IDispatch
5842                           (win32 only)],
5843     XPC_IDISPATCH_SUPPORT=,
5844     XPC_IDISPATCH_SUPPORT=1)
5845 AC_SUBST(XPC_IDISPATCH_SUPPORT)
5847 MOZ_ARG_DISABLE_BOOL(activex,
5848 [  --disable-activex       Disable building of ActiveX control (win32 only)],
5849     MOZ_NO_ACTIVEX_SUPPORT=1,
5850     MOZ_NO_ACTIVEX_SUPPORT= )
5851 AC_SUBST(MOZ_NO_ACTIVEX_SUPPORT)
5853 MOZ_ARG_DISABLE_BOOL(activex-scripting,
5854 [  --disable-activex-scripting
5855                           Disable building of ActiveX scripting support (win32)],
5856     MOZ_ACTIVEX_SCRIPTING_SUPPORT=,
5857     MOZ_ACTIVEX_SCRIPTING_SUPPORT=1)
5858 AC_SUBST(MOZ_ACTIVEX_SCRIPTING_SUPPORT)
5860 if test -n "$MOZ_NO_ACTIVEX_SUPPORT" -a -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT";
5861 then
5862     AC_MSG_ERROR([Cannot enable ActiveX scripting support when ActiveX support is disabled.])
5865 if test -n "$XPC_IDISPATCH_SUPPORT" -o -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
5866 case "$target" in
5867 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5868     if test "$ac_cv_header_atlbase_h" = "no"; then
5869         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.])
5870     fi
5871     ;;
5872 esac
5875 dnl ========================================================
5876 dnl leaky
5877 dnl ========================================================
5878 MOZ_ARG_ENABLE_BOOL(leaky,
5879 [  --enable-leaky          Build leaky memory tool],
5880     MOZ_LEAKY=1,
5881     MOZ_LEAKY=)
5884 dnl ========================================================
5885 dnl xpctools
5886 dnl ========================================================
5887 MOZ_ARG_ENABLE_BOOL(xpctools,
5888 [  --enable-xpctools       Build JS profiling tool],
5889     MOZ_XPCTOOLS=1,
5890     MOZ_XPCTOOLS= )
5893 dnl ========================================================
5894 dnl build the tests by default
5895 dnl ========================================================
5896 MOZ_ARG_DISABLE_BOOL(tests,
5897 [  --disable-tests         Do not build test libraries & programs],
5898     ENABLE_TESTS=,
5899     ENABLE_TESTS=1 )
5901 dnl ========================================================
5902 dnl parental controls (for Windows Vista)
5903 dnl ========================================================
5904 MOZ_ARG_DISABLE_BOOL(parental-controls,
5905 [  --disable-parental-controls
5906                            Do not build parental controls],
5907    MOZ_DISABLE_PARENTAL_CONTROLS=1,
5908    MOZ_DISABLE_PARENTAL_CONTROLS=)
5909 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5910     AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5913 dnl ========================================================
5914 dnl Vista SDK specific api
5915 dnl ========================================================
5916 MOZ_ARG_DISABLE_BOOL(vista-sdk-requirements,
5917 [  --disable-vista-sdk-requirements
5918                            Do not build Vista SDK specific code],
5919    MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=1,
5920    MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=)
5921 if test -n "$MOZ_DISABLE_VISTA_SDK_REQUIREMENTS"; then
5922     AC_MSG_WARN([Resulting builds will not be compatible with Windows Vista. (bug 428970)])
5923     AC_DEFINE(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
5924     if test -z "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5925         AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5926     fi
5927     MOZ_DISABLE_PARENTAL_CONTROLS=1
5928 else
5929 case "$target" in
5930 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5931     if test "$ac_cv_header_wpcapi_h" = "no"; then
5932         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.])
5933     fi
5934     ;;
5935 esac
5937 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
5938 AC_SUBST(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
5940 dnl ========================================================
5941 dnl =
5942 dnl = Module specific options
5943 dnl =
5944 dnl ========================================================
5945 MOZ_ARG_HEADER(Individual module options)
5947 dnl ========================================================
5948 dnl = Enable Lea malloc in xpcom. OFF by default.
5949 dnl ========================================================
5950 MOZ_ARG_ENABLE_BOOL(xpcom-lea,
5951 [  --enable-xpcom-lea      Use Lea malloc in xpcom ],
5952     XPCOM_USE_LEA=1,
5953     XPCOM_USE_LEA= )
5954 if test -n "$XPCOM_USE_LEA"; then
5955     AC_DEFINE(XPCOM_USE_LEA)
5958 dnl ========================================================
5959 dnl = Enable places (new history/bookmarks)
5960 dnl ========================================================
5961 MOZ_ARG_ENABLE_BOOL(places,
5962 [  --enable-places        Enable 'places' bookmark/history implementation],
5963     MOZ_PLACES=1,
5964     MOZ_PLACES= )
5965 if test -n "$MOZ_PLACES"; then
5966     AC_DEFINE(MOZ_PLACES)
5967     if test -z "$MOZ_MAIL_NEWS"; then
5968       MOZ_MORK=
5969     fi
5970     MOZ_MORKREADER=1
5971 else
5972   if test "$MOZ_BUILD_APP" = "browser"; then
5973     AC_MSG_ERROR([Cannot build Firefox with --disable-places.])
5974   fi
5977 dnl ========================================================
5978 dnl = Disable feed handling components
5979 dnl ========================================================
5980 MOZ_ARG_DISABLE_BOOL(feeds,
5981 [  --disable-feeds        Disable feed handling and processing components],
5982     MOZ_FEEDS=,
5983     MOZ_FEEDS=1 )
5984 if test -n "$MOZ_FEEDS"; then
5985     AC_DEFINE(MOZ_FEEDS)
5986 else
5987     if test "$MOZ_BUILD_APP" = "browser"; then
5988         AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
5989     fi
5992 dnl ========================================================
5993 dnl = Enable mozStorage
5994 dnl ========================================================
5995 dnl Implicitly enabled by default if building calendar or places
5996 MOZ_ARG_ENABLE_BOOL(storage,
5997 [  --enable-storage        Enable mozStorage module and related components],
5998     MOZ_STORAGE=1,
5999     MOZ_STORAGE= )
6000 if test -n "$MOZ_STORAGE"; then
6001     AC_DEFINE(MOZ_STORAGE)
6004 dnl ========================================================
6005 dnl Check for sqlite
6006 dnl ========================================================
6008 MOZ_NATIVE_SQLITE=
6009 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6010 [  --enable-system-sqlite  Use system sqlite (located with pkgconfig)],
6011 MOZ_NATIVE_SQLITE=1,
6012 MOZ_NATIVE_SQLITE= )
6014 if test -z "$MOZ_NATIVE_SQLITE"
6015 then
6016     SQLITE_CFLAGS=
6017     SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,sqlite3,$(DIST)/lib)'
6018 else
6019     PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6022 AC_SUBST(MOZ_NATIVE_SQLITE)
6024 dnl ========================================================
6025 dnl = Enable help viewer (off by default)
6026 dnl ========================================================
6027 MOZ_ARG_ENABLE_BOOL(help-viewer,
6028 [  --enable-help-viewer        Enable help viewer],
6029     MOZ_HELP_VIEWER=1,
6030     MOZ_HELP_VIEWER= )
6031 if test -n "$MOZ_HELP_VIEWER"; then
6032      AC_DEFINE(MOZ_HELP_VIEWER)
6034 AC_SUBST(MOZ_HELP_VIEWER)
6035 if test "$MOZ_BUILD_APP" = "browser" -a -n "$MOZ_HELP_VIEWER"; then
6036     AC_MSG_ERROR([Cannot build Firefox with --enable-help-viewer.])
6039 dnl ========================================================
6040 dnl = Enable safe browsing (anti-phishing)
6041 dnl ========================================================
6042 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6043 [  --enable-safe-browsing        Enable safe browsing (anti-phishing) implementation],
6044     MOZ_SAFE_BROWSING=1,
6045     MOZ_SAFE_BROWSING= )
6046 if test -n "$MOZ_SAFE_BROWSING"; then
6047     AC_DEFINE(MOZ_SAFE_BROWSING)
6049 AC_SUBST(MOZ_SAFE_BROWSING)
6051 dnl ========================================================
6052 dnl = Enable url-classifier
6053 dnl ========================================================
6054 dnl Implicitly enabled by default if building with safe-browsing
6055 if test -n "$MOZ_SAFE_BROWSING"; then
6056     MOZ_URL_CLASSIFIER=1
6058 MOZ_ARG_ENABLE_BOOL(url-classifier,
6059 [  --enable-url-classifier        Enable url classifier module],
6060     MOZ_URL_CLASSIFIER=1,
6061     MOZ_URL_CLASSIFIER= )
6062 if test -n "$MOZ_URL_CLASSIFIER"; then
6063     AC_DEFINE(MOZ_URL_CLASSIFIER)
6065 AC_SUBST(MOZ_URL_CLASSIFIER)
6067 dnl ========================================================
6068 dnl = Disable zipwriter
6069 dnl ========================================================
6070 MOZ_ARG_DISABLE_BOOL(zipwriter,
6071 [  --disable-zipwriter             Disable zipwriter component],
6072     MOZ_ZIPWRITER=,
6073     MOZ_ZIPWRITER=1 )
6074 AC_SUBST(MOZ_ZIPWRITER)
6076 dnl ========================================================
6077 dnl = Enable Ultrasparc specific optimizations for JS
6078 dnl ========================================================
6079 MOZ_ARG_ENABLE_BOOL(js-ultrasparc,
6080 [  --enable-js-ultrasparc  Use UltraSPARC optimizations in JS],
6081     JS_ULTRASPARC_OPTS=1,
6082     JS_ULTRASPARC_OPTS= )
6084 dnl only enable option for ultrasparcs
6085 if test `echo "$target_os" | grep -c \^solaris 2>/dev/null` = 0 -o \
6086     "$OS_TEST" != "sun4u"; then
6087     JS_ULTRASPARC_OPTS=
6089 AC_SUBST(JS_ULTRASPARC_OPTS)
6091 dnl ========================================================
6092 dnl = Hildon and OSSO checks
6093 dnl ========================================================
6094 PKG_CHECK_MODULES(LIBHILDONMIME,libhildonmime,
6095                   MOZ_PLATFORM_HILDON=1,
6096                   MOZ_PLATFORM_HILDON=)
6097 if test $MOZ_PLATFORM_HILDON; then
6098    AC_DEFINE(MOZ_PLATFORM_HILDON)
6100 AC_SUBST(LIBHILDONMIME_CFLAGS)
6101 AC_SUBST(LIBHILDONMIME_LIBS)
6103 PKG_CHECK_MODULES(LIBOSSO,libosso,
6104                   NS_OSSO=1,
6105                   NS_OSSO=)
6107 if test $NS_OSSO; then
6108     if test -z "$MOZ_ENABLE_DBUS"; then
6109         AC_MSG_ERROR([DBus is required when building for OSSO])
6110     fi
6111     AC_DEFINE(NS_OSSO)     
6113 AC_SUBST(LIBOSSO_CFLAGS)
6114 AC_SUBST(LIBOSSO_LIBS)
6116 PKG_CHECK_MODULES(MOZ_LOCATION, [liblocation gpsbt],
6117                   NS_MAEMO_LOCATION=1,
6118                   NS_MAEMO_LOCATION=)
6120 if test $NS_MAEMO_LOCATION; then
6121   AC_DEFINE(NS_MAEMO_LOCATION)
6124 AC_SUBST(MOZ_LOCATION_CFLAGS)
6125 AC_SUBST(MOZ_LOCATION_LIBS)
6127 dnl ========================================================
6128 dnl =
6129 dnl = Feature options that require extra sources to be pulled
6130 dnl =
6131 dnl ========================================================
6132 dnl MOZ_ARG_HEADER(Features that require extra sources)
6134 dnl ========================================================
6135 dnl =
6136 dnl = Debugging Options
6137 dnl = 
6138 dnl ========================================================
6139 MOZ_ARG_HEADER(Debugging and Optimizations)
6141 dnl ========================================================
6142 dnl = Disable building with debug info.
6143 dnl = Debugging is OFF by default
6144 dnl ========================================================
6145 if test -z "$MOZ_DEBUG_FLAGS"
6146 then
6147     case "$target" in
6148     *-irix*)
6149         if test "$GNU_CC"; then
6150             GCC_VERSION=`$CC -v 2>&1 | awk '/version/ { print $3 }'`
6151             case "$GCC_VERSION" in
6152             2.95.*)
6153                 MOZ_DEBUG_FLAGS=""
6154                 ;;
6155             *)
6156                 MOZ_DEBUG_FLAGS="-g"
6157                 ;;
6158             esac
6159         else
6160             MOZ_DEBUG_FLAGS="-g"
6161         fi
6162         ;;
6163     *)
6164         MOZ_DEBUG_FLAGS="-g"
6165         ;;
6166     esac
6169 MOZ_ARG_ENABLE_STRING(debug,
6170 [  --enable-debug[=DBG]    Enable building with developer debug info
6171                           (Using compiler flags DBG)],
6172 [ if test "$enableval" != "no"; then
6173     MOZ_DEBUG=1
6174     if test -n "$enableval" && test "$enableval" != "yes"; then
6175         MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6176     fi
6177   else
6178     MOZ_DEBUG=
6179   fi ],
6180   MOZ_DEBUG=)
6182 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG"
6183  case "${target_os}" in
6184     beos*)
6185         MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${USER}"
6186         ;;
6187     msvc*|mks*|cygwin*|mingw*|os2*|wince*)
6188         MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
6189         ;;
6190     *) 
6191         MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`$WHOAMI`"
6192         ;;
6193   esac
6194 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DTRACING"
6196 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
6198 if test -n "$MOZ_DEBUG"; then
6199     AC_MSG_CHECKING([for valid debug flags])
6200     _SAVE_CFLAGS=$CFLAGS
6201     CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
6202     AC_TRY_COMPILE([#include <stdio.h>], 
6203         [printf("Hello World\n");],
6204         _results=yes,
6205         _results=no)
6206     AC_MSG_RESULT([$_results])
6207     if test "$_results" = "no"; then
6208         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
6209     fi
6210     CFLAGS=$_SAVE_CFLAGS
6213 dnl ========================================================
6214 dnl = Enable code optimization. ON by default.
6215 dnl ========================================================
6216 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6217         MOZ_OPTIMIZE_FLAGS="-O"
6220 MOZ_ARG_ENABLE_STRING(optimize,
6221 [  --disable-optimize      Disable compiler optimization
6222   --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6223 [ if test "$enableval" != "no"; then
6224     MOZ_OPTIMIZE=1
6225     if test -n "$enableval" && test "$enableval" != "yes"; then
6226         MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6227         MOZ_OPTIMIZE=2
6228     fi
6229 else
6230     MOZ_OPTIMIZE=
6231 fi ], MOZ_OPTIMIZE=1)
6233 if test "$COMPILE_ENVIRONMENT"; then
6234 if test -n "$MOZ_OPTIMIZE"; then
6235     AC_MSG_CHECKING([for valid optimization flags])
6236     _SAVE_CFLAGS=$CFLAGS
6237     CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6238     AC_TRY_COMPILE([#include <stdio.h>], 
6239         [printf("Hello World\n");],
6240         _results=yes,
6241         _results=no)
6242     AC_MSG_RESULT([$_results])
6243     if test "$_results" = "no"; then
6244         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6245     fi
6246     CFLAGS=$_SAVE_CFLAGS
6248 fi # COMPILE_ENVIRONMENT
6250 AC_SUBST(MOZ_OPTIMIZE)
6251 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6252 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6253 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6255 dnl ========================================================
6256 dnl = Enable/disable debug for specific modules only
6257 dnl =   module names beginning with ^ will be disabled 
6258 dnl ========================================================
6259 MOZ_ARG_ENABLE_STRING(debug-modules,
6260 [  --enable-debug-modules  Enable/disable debug info for specific modules],
6261 [ MOZ_DEBUG_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6263 dnl ========================================================
6264 dnl = Enable/disable generation of debugger info for specific modules only
6265 dnl =    the special module name ALL_MODULES can be used to denote all modules
6266 dnl =    module names beginning with ^ will be disabled
6267 dnl ========================================================
6268 MOZ_ARG_ENABLE_STRING(debugger-info-modules,
6269 [  --enable-debugger-info-modules
6270                           Enable/disable debugger info for specific modules],
6271 [ for i in `echo $enableval | sed 's/,/ /g'`; do
6272       dnl note that the list of module names is reversed as it is copied
6273       dnl this is important, as it will allow config.mk to interpret stuff like
6274       dnl "^ALL_MODULES xpcom" properly
6275       if test "$i" = "no"; then
6276         i="^ALL_MODULES"
6277       fi
6278       if test "$i" = "yes"; then
6279         i="ALL_MODULES"
6280       fi
6281       MOZ_DBGRINFO_MODULES="$i $MOZ_DBGRINFO_MODULES";
6282     done ])
6284 dnl ========================================================
6285 dnl Enable garbage collector
6286 dnl ========================================================
6287 MOZ_ARG_ENABLE_BOOL(boehm,
6288 [  --enable-boehm          Enable the Boehm Garbage Collector],
6289     GC_LEAK_DETECTOR=1,
6290     GC_LEAK_DETECTOR= )
6291 if test -n "$GC_LEAK_DETECTOR"; then
6292     AC_DEFINE(GC_LEAK_DETECTOR)
6295 dnl ========================================================
6296 dnl Disable runtime logging checks
6297 dnl ========================================================
6298 MOZ_ARG_DISABLE_BOOL(logging,
6299 [  --disable-logging       Disable logging facilities],
6300     NS_DISABLE_LOGGING=1,
6301     NS_DISABLE_LOGGING= )
6302 if test "$NS_DISABLE_LOGGING"; then
6303     AC_DEFINE(NS_DISABLE_LOGGING)
6304 else
6305     AC_DEFINE(MOZ_LOGGING)
6308 dnl ========================================================
6309 dnl = dnl This will enable logging of addref, release, ctor, dtor.
6310 dnl ========================================================
6311 _ENABLE_LOGREFCNT=42
6312 MOZ_ARG_ENABLE_BOOL(logrefcnt,
6313 [  --enable-logrefcnt      Enable logging of refcounts (default=debug) ],
6314     _ENABLE_LOGREFCNT=1,
6315     _ENABLE_LOGREFCNT= )
6316 if test "$_ENABLE_LOGREFCNT" = "1"; then
6317     AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
6318 elif test -z "$_ENABLE_LOGREFCNT"; then
6319     AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
6322 dnl ========================================================
6323 dnl = Enable trace malloc
6324 dnl ========================================================
6325 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
6326 MOZ_ARG_ENABLE_BOOL(trace-malloc,
6327 [  --enable-trace-malloc   Enable malloc tracing],
6328     NS_TRACE_MALLOC=1,
6329     NS_TRACE_MALLOC= )
6330 if test "$NS_TRACE_MALLOC"; then
6331   # Please, Mr. Linker Man, don't take away our symbol names
6332   MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6333   USE_ELF_DYNSTR_GC=
6334   AC_DEFINE(NS_TRACE_MALLOC)
6336 AC_SUBST(NS_TRACE_MALLOC)
6338 dnl ========================================================
6339 dnl = Enable jemalloc
6340 dnl ========================================================
6341 MOZ_ARG_ENABLE_BOOL(jemalloc,
6342 [  --enable-jemalloc       Replace memory allocator with jemalloc],
6343     MOZ_MEMORY=1,
6344     MOZ_MEMORY=)
6346 if test "$NS_TRACE_MALLOC"; then
6347     MOZ_MEMORY=
6350 if test "$MOZ_MEMORY"; then
6352   dnl Don't try to run compiler tests on Windows  
6353   if test "$OS_ARCH" = "WINNT"; then
6354     if test -z "$HAVE_64BIT_OS"; then
6355       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6356     else
6357       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6358     fi
6359   else
6360     AC_CHECK_SIZEOF([int *], [4])
6361     case "${ac_cv_sizeof_int_p}" in
6362     4)
6363       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6364       ;;
6365     8)
6366       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6367       ;;
6368     *)
6369       AC_MSG_ERROR([Unexpected pointer size])
6370       ;;
6371     esac
6372   fi
6374   AC_DEFINE(MOZ_MEMORY)
6375   if test "x$MOZ_DEBUG" = "x1"; then
6376     AC_DEFINE(MOZ_MEMORY_DEBUG)
6377   fi
6378   dnl The generic feature tests that determine how to compute ncpus are long and
6379   dnl complicated.  Therefore, simply define special cpp variables for the
6380   dnl platforms we have special knowledge of.
6381   case "${target_os}" in
6382   darwin*)
6383     AC_DEFINE(MOZ_MEMORY_DARWIN)
6384     ;;
6385   *-freebsd*)
6386     AC_DEFINE(MOZ_MEMORY_BSD)
6387     ;;
6388   *linux*)
6389     AC_DEFINE(MOZ_MEMORY_LINUX)
6390     ;;
6391   netbsd*)
6392     AC_DEFINE(MOZ_MEMORY_BSD)
6393     ;;
6394   solaris*)
6395     AC_DEFINE(MOZ_MEMORY_SOLARIS)
6396     ;;
6397   msvc*|mks*|cygwin*|mingw*)
6398     AC_DEFINE(MOZ_MEMORY_WINDOWS)
6399     dnl XXX: should test for vc8sp1 here, otherwise patching the crt src
6400     dnl will fail miserably
6401     if test "$_CC_SUITE" -lt "8"; then
6402         AC_MSG_ERROR([Building jemalloc requires Visual C++ 2005 or better])
6403     fi
6404     if test -z "$WIN32_CRT_SRC_DIR" -a -z "$WIN32_CUSTOM_CRT_DIR"; then
6405       if test -z "$VCINSTALLDIR" -o ! -d "$VCINSTALLDIR"; then
6406         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.])
6407       else
6408         WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src"
6409       fi
6410     fi
6411     if test -z "$WIN32_CRT_SRC_DIR"; then
6412       # pre-built dll
6413       WIN32_CUSTOM_CRT_DIR=`cd "$WIN32_CUSTOM_CRT_DIR" && pwd`
6414       _WIN_UNIX_CRT_PATH="$WIN32_CUSTOM_CRT_DIR"
6415     else
6416       # CRT source directory
6417       WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd`
6418       _CRT_BASE_DIR=`basename "$WIN32_CRT_SRC_DIR"`
6419       _WIN_UNIX_CRT_PATH="$_objdir/memory/jemalloc/$_CRT_BASE_DIR/build/intel"
6420     fi
6421     dnl need win32 paths in LIB, hence this python abuse.  extra brackets
6422     dnl are to avoid m4
6423     _WIN_CRT_PATH=[`$PYTHON -c 'import sys, os.path; print os.path.normpath(sys.argv[1])' "$_WIN_UNIX_CRT_PATH"`]
6424     MOZ_LIB="$_WIN_CRT_PATH;$LIB"
6425     dnl Needs to be in PATH too, since our tools will wind up linked against it.
6426     dnl This needs to be unix style.
6427     MOZ_PATH="$PATH:$_WIN_UNIX_CRT_PATH"
6428     dnl Statically link the C++ stdlib.  We only use this for Breakpad anyway.
6429     AC_DEFINE(_STATIC_CPPLIB)
6430     dnl Don't generate a manifest, since we're linking to a custom CRT.
6431     LDFLAGS="$LDFLAGS -MANIFEST:NO"
6432     dnl Also pass this to NSPR/NSS
6433     DLLFLAGS="$DLLFLAGS -MANIFEST:NO"
6434     export DLLFLAGS
6435     ;;
6436   *)
6437     AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
6438     ;;
6439   esac
6441   AC_ARG_WITH([valgrind],
6442     [  --with-valgrind         Enable valgrind integration hooks],
6443     [enable_valgrind="yes"], [enable_valgrind="no"])
6444   AC_CHECK_HEADER([valgrind/valgrind.h], [], [enable_valgrind="no"])
6445   if test "x$enable_valgrind" = "xyes" ; then
6446     AC_DEFINE(MOZ_VALGRIND)
6447   fi
6449 AC_SUBST(MOZ_MEMORY)
6450 AC_SUBST(WIN32_CRT_SRC_DIR)
6451 AC_SUBST(WIN32_CUSTOM_CRT_DIR)
6452 AC_SUBST(MOZ_LIB)
6453 AC_SUBST(MOZ_PATH)
6454 dnl Need to set this for make because NSS doesn't have configure
6455 AC_SUBST(DLLFLAGS)
6457 dnl ========================================================
6458 dnl = Use malloc wrapper lib
6459 dnl ========================================================
6460 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
6461 [  --enable-wrap-malloc    Wrap malloc calls (gnu linker only)],
6462     _WRAP_MALLOC=1,
6463     _WRAP_MALLOC= )
6465 if test -n "$_WRAP_MALLOC"; then
6466     if test "$GNU_CC"; then
6467     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"
6468     MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) -o $@'
6469     fi
6472 dnl ========================================================
6473 dnl = Location of malloc wrapper lib
6474 dnl ========================================================
6475 MOZ_ARG_WITH_STRING(wrap-malloc,
6476 [  --with-wrap-malloc=DIR  Location of malloc wrapper library],
6477     WRAP_MALLOC_LIB=$withval)
6479 dnl ========================================================
6480 dnl = Use Electric Fence
6481 dnl ========================================================
6482 MOZ_ARG_ENABLE_BOOL(efence,
6483 [  --enable-efence         Link with Electric Fence],
6484     _ENABLE_EFENCE=1,
6485     _ENABLE_EFENCE= )
6486 if test -n "$_ENABLE_EFENCE"; then
6487     AC_CHECK_LIB(efence,malloc)
6490 dnl ========================================================
6491 dnl jprof
6492 dnl ========================================================
6493 MOZ_ARG_ENABLE_BOOL(jprof,
6494 [  --enable-jprof          Enable jprof profiling tool (needs mozilla/tools/jprof)],
6495     MOZ_JPROF=1,
6496     MOZ_JPROF= )
6497 if test -n "$MOZ_JPROF"; then
6498     AC_DEFINE(MOZ_JPROF)
6501 dnl ========================================================
6502 dnl shark
6503 dnl ========================================================
6504 MOZ_ARG_ENABLE_BOOL(shark,
6505 [  --enable-shark          Enable shark remote profiling (needs CHUD framework)],
6506     MOZ_SHARK=1,
6507     MOZ_SHARK= )
6508 if test -n "$MOZ_SHARK"; then
6509     AC_DEFINE(MOZ_SHARK)
6512 dnl ========================================================
6513 dnl callgrind
6514 dnl ========================================================
6515 MOZ_ARG_ENABLE_BOOL(callgrind,
6516 [  --enable-callgrind      Enable callgrind profiling],
6517     MOZ_CALLGRIND=1,
6518     MOZ_CALLGRIND= )
6519 if test -n "$MOZ_CALLGRIND"; then
6520     AC_DEFINE(MOZ_CALLGRIND)
6523 dnl ========================================================
6524 dnl vtune
6525 dnl ========================================================
6526 MOZ_ARG_ENABLE_BOOL(vtune,
6527 [  --enable-vtune          Enable vtune profiling],
6528     MOZ_VTUNE=1,
6529     MOZ_VTUNE= )
6530 if test -n "$MOZ_VTUNE"; then
6531     AC_DEFINE(MOZ_VTUNE)
6534 dnl ========================================================
6535 dnl = Enable static checking using gcc-dehydra
6536 dnl ========================================================
6538 MOZ_ARG_WITH_STRING(static-checking,
6539 [  --with-static-checking=path/to/gcc_dehydra.so
6540                             Enable static checking of code using GCC-dehydra],
6541     DEHYDRA_PATH=$withval,
6542     DEHYDRA_PATH= )
6544 if test -n "$DEHYDRA_PATH"; then
6545     if ! test -f "$DEHYDRA_PATH"; then
6546         AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
6547     fi
6548     AC_DEFINE(NS_STATIC_CHECKING)
6550 AC_SUBST(DEHYDRA_PATH)
6552 dnl ========================================================
6553 dnl = Enable stripping of libs & executables
6554 dnl ========================================================
6555 MOZ_ARG_ENABLE_BOOL(strip,
6556 [  --enable-strip          Enable stripping of libs & executables ],
6557     ENABLE_STRIP=1,
6558     ENABLE_STRIP= )
6560 dnl ========================================================
6561 dnl = Enable stripping of libs & executables when packaging
6562 dnl ========================================================
6563 MOZ_ARG_ENABLE_BOOL(install-strip,
6564 [  --enable-install-strip  Enable stripping of libs & executables when packaging ],
6565     PKG_SKIP_STRIP= ,
6566     PKG_SKIP_STRIP=1)
6568 dnl ========================================================
6569 dnl = --enable-elf-dynstr-gc
6570 dnl ========================================================
6571 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
6572 [  --enable-elf-dynstr-gc  Enable elf dynstr garbage collector (opt builds only)],
6573     USE_ELF_DYNSTR_GC=1,
6574     USE_ELF_DYNSTR_GC= )
6576 dnl ========================================================
6577 dnl = --enable-old-abi-compat-wrappers
6578 dnl ========================================================
6579 dnl on x86 linux, the current builds of some popular plugins (notably
6580 dnl flashplayer and real) expect a few builtin symbols from libgcc
6581 dnl which were available in some older versions of gcc.  However,
6582 dnl they're _NOT_ available in newer versions of gcc (eg 3.1), so if
6583 dnl we want those plugin to work with a gcc-3.1 built binary, we need
6584 dnl to provide these symbols.  MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS defaults
6585 dnl to true on x86 linux, and false everywhere else.
6588 MOZ_ARG_ENABLE_BOOL(old-abi-compat-wrappers,
6589 [  --enable-old-abi-compat-wrappers
6590                           Support old GCC ABI symbols to ease the pain 
6591                           of the linux compiler change],
6592     MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1,
6593     MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS= )
6594 if test "$COMPILE_ENVIRONMENT"; then
6595 if test "$MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS"; then
6596     AC_LANG_SAVE
6597     AC_LANG_CPLUSPLUS
6598     AC_CHECK_FUNCS(__builtin_vec_new __builtin_vec_delete __builtin_new __builtin_delete __pure_virtual)
6599     AC_LANG_RESTORE
6600     AC_DEFINE(MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS)
6602 fi # COMPILE_ENVIRONMENT
6604 dnl ========================================================
6605 dnl = --enable-prebinding
6606 dnl ========================================================
6607 MOZ_ARG_ENABLE_BOOL(prebinding,
6608 [  --enable-prebinding     Enable prebinding (Mac OS X only)],
6609     USE_PREBINDING=1,
6610     USE_PREBINDING= )
6612 dnl ========================================================
6613 dnl = 
6614 dnl = Profiling and Instrumenting
6615 dnl = 
6616 dnl ========================================================
6617 MOZ_ARG_HEADER(Profiling and Instrumenting)
6619 dnl ========================================================
6620 dnl = Enable timeline service, which provides lightweight
6621 dnl = instrumentation of mozilla for performance measurement.
6622 dnl = Timeline is off by default.
6623 dnl ========================================================
6624 MOZ_ARG_ENABLE_BOOL(timeline,
6625 [  --enable-timeline       Enable timeline services ],
6626     MOZ_TIMELINE=1,
6627     MOZ_TIMELINE= )
6628 if test -n "$MOZ_TIMELINE"; then
6629     AC_DEFINE(MOZ_TIMELINE)
6632 dnl ========================================================
6633 dnl Turn on reflow counting
6634 dnl ========================================================
6635 MOZ_ARG_ENABLE_BOOL(reflow-perf,
6636 [  --enable-reflow-perf    Enable reflow performance tracing],
6637     MOZ_REFLOW_PERF=1,
6638     MOZ_REFLOW_PERF= )
6639 if test -n "$MOZ_REFLOW_PREF"; then
6640     AC_DEFINE(MOZ_REFLOW_PREF)
6642 AC_SUBST(MOZ_REFLOW_PERF)
6644 dnl ========================================================
6645 dnl Enable performance metrics.
6646 dnl ========================================================
6647 MOZ_ARG_ENABLE_BOOL(perf-metrics,
6648 [  --enable-perf-metrics   Enable performance metrics],
6649     MOZ_PERF_METRICS=1,
6650     MOZ_PERF_METRICS= )
6651 if test -n "$MOZ_PERF_METRICS"; then
6652     AC_DEFINE(MOZ_PERF_METRICS)
6655 dnl ========================================================
6656 dnl Enable code size metrics.
6657 dnl ========================================================
6658 MOZ_ARG_ENABLE_BOOL(codesighs,
6659 [  --enable-codesighs      Enable code size analysis tools],
6660     _ENABLE_CODESIGHS=1,
6661     _ENABLE_CODESIGHS= )
6662 if test -n "$_ENABLE_CODESIGHS"; then
6663     if test -d $srcdir/tools/codesighs; then 
6664         MOZ_MAPINFO=1
6665     else
6666         AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
6667     fi
6670 dnl ========================================================
6671 dnl = Add support for Eazel profiler
6672 dnl ========================================================
6673 MOZ_ARG_ENABLE_BOOL(eazel-profiler-support,
6674 [  --enable-eazel-profiler-support
6675                           Enable Corel/Eazel profiler support],
6676     ENABLE_EAZEL_PROFILER=1,
6677     ENABLE_EAZEL_PROFILER= )
6678 if test -n "$ENABLE_EAZEL_PROFILER"; then
6679     AC_DEFINE(ENABLE_EAZEL_PROFILER)
6680     USE_ELF_DYNSTR_GC=
6681     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6682     EAZEL_PROFILER_CFLAGS="-g -O -gdwarf-2 -finstrument-functions -D__NO_STRING_INLINES  -D__NO_MATH_INLINES"
6683     EAZEL_PROFILER_LIBS="-lprofiler -lpthread"
6686 MOZ_ARG_ENABLE_STRING(profile-modules,
6687 [  --enable-profile-modules
6688                           Enable/disable profiling for specific modules],
6689 [ MOZ_PROFILE_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6691 MOZ_ARG_ENABLE_BOOL(insure,
6692 [  --enable-insure         Enable insure++ instrumentation (linux only)],
6693     _ENABLE_INSURE=1,
6694     _ENABLE_INSURE= )
6695 if test -n "$_ENABLE_INSURE"; then
6696     MOZ_INSURE="insure"
6697     MOZ_INSURIFYING=1
6698     MOZ_INSURE_DIRS="."
6699     MOZ_INSURE_EXCLUDE_DIRS="config"
6702 MOZ_ARG_WITH_STRING(insure-dirs,
6703 [  --with-insure-dirs=DIRS
6704                           Dirs to instrument with insure ],
6705     MOZ_INSURE_DIRS=$withval )
6707 MOZ_ARG_WITH_STRING(insure-exclude-dirs,
6708 [  --with-insure-exclude-dirs=DIRS
6709                           Dirs to not instrument with insure ],
6710     MOZ_INSURE_EXCLUDE_DIRS="config $withval" )
6712 dnl ========================================================
6713 dnl = Support for Quantify (Windows)
6714 dnl ========================================================
6715 MOZ_ARG_ENABLE_BOOL(quantify,
6716 [  --enable-quantify      Enable Quantify support (Windows only) ],
6717     MOZ_QUANTIFY=1,
6718     MOZ_QUANTIFY= )
6720 dnl ========================================================
6721 dnl = Support for demangling undefined symbols
6722 dnl ========================================================
6723 if test -z "$SKIP_LIBRARY_CHECKS"; then
6724     AC_LANG_SAVE
6725     AC_LANG_CPLUSPLUS
6726     AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
6727     AC_LANG_RESTORE
6730 # Demangle only for debug or trace-malloc builds
6731 MOZ_DEMANGLE_SYMBOLS=
6732 if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
6733     MOZ_DEMANGLE_SYMBOLS=1
6734     AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
6736 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
6738 dnl ========================================================
6739 dnl = Support for gcc stack unwinding (from gcc 3.3)
6740 dnl ========================================================
6741 if test "$HAVE_GCC3_ABI" && test -z "$SKIP_LIBRARY_CHECKS"; then
6742     AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
6745 dnl ========================================================
6746 dnl =
6747 dnl = Misc. Options
6748 dnl = 
6749 dnl ========================================================
6750 MOZ_ARG_HEADER(Misc. Options)
6752 dnl ========================================================
6753 dnl update xterm title
6754 dnl ========================================================
6755 MOZ_ARG_ENABLE_BOOL(xterm-updates,
6756 [  --enable-xterm-updates  Update XTERM titles with current command.],
6757     MOZ_UPDATE_XTERM=1,
6758     MOZ_UPDATE_XTERM= )
6760 dnl =========================================================
6761 dnl = Chrome format
6762 dnl =========================================================
6763 MOZ_ARG_ENABLE_STRING([chrome-format],
6764 [  --enable-chrome-format=jar|flat|both|symlink
6765                           Select FORMAT of chrome files (default=jar)],
6766     MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
6768 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
6769     MOZ_CHROME_FILE_FORMAT=jar
6772 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" && 
6773     test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
6774     test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
6775     test "$MOZ_CHROME_FILE_FORMAT" != "both"; then
6776     AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, or symlink])
6779 dnl ========================================================
6780 dnl = Define default location for MOZILLA_FIVE_HOME
6781 dnl ========================================================
6782 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
6783 [  --with-default-mozilla-five-home
6784                           Set the default value for MOZILLA_FIVE_HOME],
6785 [ val=`echo $withval`
6786   AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
6788 dnl ========================================================
6789 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
6790 dnl ========================================================
6791 MOZ_ARG_WITH_STRING(user-appdir,
6792 [  --with-user-appdir=DIR  Set user-specific appdir (default=.mozilla)],
6793 [ val=`echo $withval`
6794 if echo "$val" | grep "\/" >/dev/null; then
6795     AC_MSG_ERROR("Homedir must be single relative path.")
6796 else 
6797     MOZ_USER_DIR="$val"
6798 fi])
6800 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
6802 dnl ========================================================
6803 dnl = Doxygen configuration
6804 dnl ========================================================
6805 dnl Use commas to specify multiple dirs to this arg
6806 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
6807 MOZ_ARG_WITH_STRING(doc-input-dirs,
6808 [  --with-doc-input-dirs=DIRS
6809                           Header/idl dirs to create docs from],
6810 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6811 AC_SUBST(MOZ_DOC_INPUT_DIRS)
6813 dnl Use commas to specify multiple dirs to this arg
6814 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
6815 MOZ_ARG_WITH_STRING(doc-include-dirs,
6816 [  --with-doc-include-dirs=DIRS  
6817                           Include dirs to preprocess doc headers],
6818 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6819 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
6821 MOZ_DOC_OUTPUT_DIR='./dist/docs'
6822 MOZ_ARG_WITH_STRING(doc-output-dir,
6823 [  --with-doc-output-dir=DIR
6824                           Dir to generate docs into],
6825 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
6826 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
6828 if test -z "$SKIP_COMPILER_CHECKS"; then
6829 dnl ========================================================
6830 dnl =
6831 dnl = Compiler Options
6832 dnl = 
6833 dnl ========================================================
6834 MOZ_ARG_HEADER(Compiler Options)
6836 dnl ========================================================
6837 dnl Check for gcc -pipe support
6838 dnl ========================================================
6839 AC_MSG_CHECKING([for gcc -pipe support])
6840 if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
6841     echo '#include <stdio.h>' > dummy-hello.c
6842     echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
6843     ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
6844     cat dummy-hello.s | ${AS_BIN} -o dummy-hello.S - 2>&5
6845     if test $? = 0; then
6846         _res_as_stdin="yes"
6847     else
6848         _res_as_stdin="no"
6849     fi
6850     if test "$_res_as_stdin" = "yes"; then
6851         _SAVE_CFLAGS=$CFLAGS
6852         CFLAGS="$CFLAGS -pipe"
6853         AC_TRY_COMPILE( [ #include <stdio.h> ],
6854             [printf("Hello World\n");],
6855             [_res_gcc_pipe="yes"],
6856             [_res_gcc_pipe="no"] )
6857         CFLAGS=$_SAVE_CFLAGS
6858     fi
6859     if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then
6860         _res="yes";
6861         CFLAGS="$CFLAGS -pipe"
6862         CXXFLAGS="$CXXFLAGS -pipe"
6863     else
6864         _res="no"
6865     fi
6866     rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
6867     AC_MSG_RESULT([$_res])
6868 else
6869     AC_MSG_RESULT([no])
6872 dnl pass -Wno-long-long to the compiler
6873 MOZ_ARG_ENABLE_BOOL(long-long-warning,
6874 [  --enable-long-long-warning 
6875                           Warn about use of non-ANSI long long type],
6876     _IGNORE_LONG_LONG_WARNINGS=,
6877     _IGNORE_LONG_LONG_WARNINGS=1)
6879 if test "$_IGNORE_LONG_LONG_WARNINGS"; then
6880      _SAVE_CFLAGS="$CFLAGS"
6881      CFLAGS="$CFLAGS ${_COMPILER_PREFIX}-Wno-long-long"
6882      AC_MSG_CHECKING([whether compiler supports -Wno-long-long])
6883      AC_TRY_COMPILE([], [return(0);], 
6884         [ _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6885           _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6886           result="yes" ], result="no")
6887      AC_MSG_RESULT([$result])
6888      CFLAGS="$_SAVE_CFLAGS"
6891 dnl ========================================================
6892 dnl Profile guided optimization
6893 dnl ========================================================
6894 dnl Test for profiling options
6895 dnl Under gcc 3.3, use -fprofile-arcs/-fbranch-probabilities
6896 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
6898 dnl Provide a switch to disable PGO even when called via profiledbuild.
6899 MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
6900 [  --disable-profile-guided-optimization
6901                            Don't build with PGO even if called via make profiledbuild],
6902 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
6903 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
6905 AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
6907 _SAVE_CFLAGS="$CFLAGS"
6908 CFLAGS="$CFLAGS -fprofile-generate"
6910 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
6911 AC_TRY_COMPILE([], [return 0;],
6912                [ PROFILE_GEN_CFLAGS="-fprofile-generate"
6913                  result="yes" ], result="no")
6914 AC_MSG_RESULT([$result])
6916 if test $result = "yes"; then
6917   PROFILE_GEN_LDFLAGS="-fprofile-generate"
6918   PROFILE_USE_CFLAGS="-fprofile-use"
6919   PROFILE_USE_LDFLAGS="-fprofile-use"
6920 else
6921   CFLAGS="$_SAVE_CFLAGS -fprofile-arcs"
6922   AC_MSG_CHECKING([whether C compiler supports -fprofile-arcs])
6923   AC_TRY_COMPILE([], [return 0;],
6924                  [ PROFILE_GEN_CFLAGS="-fprofile-arcs"
6925                    result="yes" ], result="no")
6926   AC_MSG_RESULT([$result])
6927   if test $result = "yes"; then
6928     PROFILE_USE_CFLAGS="-fbranch-probabilities"
6929   fi
6930   # don't really care, this is an old GCC
6931   PROFILE_GEN_LDFLAGS=
6932   PROFILE_USE_LDFLAGS=
6935 CFLAGS="$_SAVE_CFLAGS"
6937 if test -n "$INTEL_CC"; then
6938   PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
6939   PROFILE_GEN_LDFLAGS=
6940   PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
6941   PROFILE_USE_LDFLAGS=
6944 dnl Sun Studio on Solaris
6945 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
6946   PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
6947   PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
6948   if test "$CPU_ARCH" != "sparc"; then
6949     PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
6950     PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
6951   else
6952     PROFILE_USE_CFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
6953     PROFILE_USE_LDFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
6954   fi
6957 AC_SUBST(PROFILE_GEN_CFLAGS)
6958 AC_SUBST(PROFILE_GEN_LDFLAGS)
6959 AC_SUBST(PROFILE_USE_CFLAGS)
6960 AC_SUBST(PROFILE_USE_LDFLAGS)
6962 AC_LANG_CPLUSPLUS
6964 dnl ========================================================
6965 dnl Test for -pedantic bustage
6966 dnl ========================================================
6967 MOZ_ARG_DISABLE_BOOL(pedantic,
6968 [  --disable-pedantic      Issue all warnings demanded by strict ANSI C ],
6969 _PEDANTIC= )
6970 if test "$_PEDANTIC"; then
6971     _SAVE_CXXFLAGS=$CXXFLAGS
6972     CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
6973     AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
6974     AC_TRY_COMPILE([$configure_static_assert_macros],
6975                    [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
6976                    result="no", result="yes" )
6977     AC_MSG_RESULT([$result])
6978     CXXFLAGS="$_SAVE_CXXFLAGS"
6980     case "$result" in
6981     no)
6982         _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic"
6983         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
6984         ;;
6985     yes)
6986         AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic.  Reconfigure using --disable-pedantic. ])
6987         ;;
6988     esac
6991 dnl ========================================================
6992 dnl Test for correct temporary object destruction order
6993 dnl ========================================================
6994 dnl We want to make sure the compiler follows the C++ spec here as 
6995 dnl xpcom and the string classes depend on it (bug 235381).
6996 AC_MSG_CHECKING([for correct temporary object destruction order])
6997 AC_TRY_RUN([ class A {
6998              public:  A(int& x) : mValue(x) {}
6999                       ~A() { mValue--; }
7000                       operator char**() { return 0; }
7001              private:  int& mValue;
7002              };
7003              void func(char **arg) {}
7004              int m=2;
7005              void test() {
7006                   func(A(m));
7007                   if (m==1) m = 0;
7008              }
7009              int main() {
7010                  test();
7011                  return(m);
7012              }
7013              ],
7014      result="yes", result="no", result="maybe")
7015 AC_MSG_RESULT([$result])
7017 if test "$result" = "no"; then
7018     AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
7021 dnl ========================================================
7022 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
7023 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
7024 dnl raw pointers in nsCOMPtr.h.  (VC++ has the same bug.)
7025 dnl ========================================================
7026 _SAVE_CXXFLAGS=$CXXFLAGS
7027 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
7028 AC_CACHE_CHECK(for correct overload resolution with const and templates,
7029     ac_nscap_nonconst_opeq_bug,
7030     [AC_TRY_COMPILE([
7031                       template <class T>
7032                       class Pointer
7033                         {
7034                         public:
7035                           T* myPtr;
7036                         };
7037                       
7038                       template <class T, class U>
7039                       int operator==(const Pointer<T>& rhs, U* lhs)
7040                         {
7041                           return rhs.myPtr == lhs;
7042                         }
7043                       
7044                       template <class T, class U>
7045                       int operator==(const Pointer<T>& rhs, const U* lhs)
7046                         {
7047                           return rhs.myPtr == lhs;
7048                         }
7049                     ],
7050                     [
7051                       Pointer<int> foo;
7052                       const int* bar;
7053                       return foo == bar;
7054                     ],
7055                     ac_nscap_nonconst_opeq_bug="no",
7056                     ac_nscap_nonconst_opeq_bug="yes")])
7057 CXXFLAGS="$_SAVE_CXXFLAGS"
7059 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
7060     AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
7062 fi # SKIP_COMPILER_CHECKS
7064 dnl ========================================================
7065 dnl C++ rtti
7066 dnl Should be smarter and check that the compiler does indeed have rtti
7067 dnl ========================================================
7068 MOZ_ARG_ENABLE_BOOL(cpp-rtti,
7069 [  --enable-cpp-rtti       Enable C++ RTTI ],
7070 [ _MOZ_USE_RTTI=1 ],
7071 [ _MOZ_USE_RTTI= ])
7073 if test "$_MOZ_USE_RTTI"; then
7074    _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
7075 else
7076    _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
7079 AC_SUBST(_MOZ_RTTI_FLAGS_ON)
7081 dnl ========================================================
7082 dnl C++ exceptions (g++/egcs only - for now)
7083 dnl Should be smarter and check that the compiler does indeed have exceptions
7084 dnl ========================================================
7085 MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
7086 [  --enable-cpp-exceptions Enable C++ exceptions ],
7087 [ _MOZ_CPP_EXCEPTIONS=1 ],
7088 [ _MOZ_CPP_EXCEPTIONS= ])
7090 if test "$_MOZ_CPP_EXCEPTIONS"; then
7091     _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_ON
7092 else
7093     _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_OFF
7096 # Irix & OSF native compilers do not like exception declarations 
7097 # when exceptions are disabled
7098 if test -n "$MIPSPRO_CXX" -o -n "$COMPAQ_CXX" -o -n "$VACPP"; then
7099     AC_DEFINE(CPP_THROW_NEW, [])
7100 else
7101     AC_DEFINE(CPP_THROW_NEW, [throw()])
7103 AC_LANG_C
7105 dnl ========================================================
7106 dnl =
7107 dnl = Build depencency options
7108 dnl =
7109 dnl ========================================================
7110 MOZ_ARG_HEADER(Build dependencies)
7112 dnl ========================================================
7113 dnl = Do not auto generate dependency info
7114 dnl ========================================================
7115 MOZ_AUTO_DEPS=1
7116 MOZ_ARG_DISABLE_BOOL(auto-deps,
7117 [  --disable-auto-deps     Do not automatically generate dependency info],
7118     MOZ_AUTO_DEPS=,
7119     MOZ_AUTO_DEPS=1)
7121 if test -n "$MOZ_AUTO_DEPS"; then
7122 dnl ========================================================
7123 dnl = Use mkdepend instead of $CC -MD for dependency generation
7124 dnl ========================================================
7125 _cpp_md_flag=
7126 MOZ_ARG_DISABLE_BOOL(md,
7127 [  --disable-md            Do not use compiler-based dependencies ],
7128   [_cpp_md_flag=],
7129   [_cpp_md_flag=1],
7130   [dnl Default is to turn on -MD if using GNU-compatible compilers
7131    if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
7132      _cpp_md_flag=1
7133    fi
7134   dnl Default is to use -xM if using Sun Studio on Solaris
7135    if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
7136      _cpp_md_flag=1
7137    fi])
7138 if test "$_cpp_md_flag"; then
7139   COMPILER_DEPEND=1
7140   if test "$OS_ARCH" = "OpenVMS"; then
7141     _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(*F).pp))'
7142   else
7143     _DEPEND_CFLAGS='$(filter-out %/.pp,-Wp,-MD,$(MDDEPDIR)/$(*F).pp)'
7144   fi
7145   dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7146   if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
7147     _DEPEND_CFLAGS=
7148   fi
7149 else
7150   COMPILER_DEPEND=
7151   _USE_CPP_INCLUDE_FLAG=
7152   _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7153   _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7155 fi # MOZ_AUTO_DEPS
7156 MDDEPDIR='.deps'
7157 AC_SUBST(MOZ_AUTO_DEPS)
7158 AC_SUBST(COMPILER_DEPEND)
7159 AC_SUBST(MDDEPDIR)
7162 dnl ========================================================
7163 dnl =
7164 dnl = Static Build Options
7165 dnl =
7166 dnl ========================================================
7167 MOZ_ARG_HEADER(Static build options)
7169 MOZ_ARG_ENABLE_BOOL(static,
7170 [  --enable-static         Enable building of internal static libs],
7171     BUILD_STATIC_LIBS=1,
7172     BUILD_STATIC_LIBS=)
7174 dnl Disable libxul in debug builds, but not for xulrunner.
7175 if test -n "$MOZ_DEBUG" -a "$MOZ_BUILD_APP" != "xulrunner"; then
7176    MOZ_ENABLE_LIBXUL=
7179 MOZ_ARG_ENABLE_BOOL(libxul,
7180 [  --enable-libxul         Enable building of libxul],
7181     MOZ_ENABLE_LIBXUL=1,
7182     MOZ_ENABLE_LIBXUL=)
7184 if test -n "$MOZ_STATIC_BUILD_UNSUPPORTED" -a -n "$BUILD_STATIC_LIBS"; then
7185         AC_MSG_ERROR([--enable-static is not supported for building $MOZ_APP_NAME. You probably want --enable-libxul.])
7188 if test -n "$MOZ_ENABLE_LIBXUL" -a -n "$BUILD_STATIC_LIBS"; then
7189         AC_MSG_ERROR([--enable-libxul is not compatible with --enable-static])
7192 if test -n "$MOZ_ENABLE_LIBXUL" -a -z "$MOZ_XUL_APP"; then
7193         AC_MSG_ERROR([--enable-libxul is only compatible with toolkit XUL applications.])
7196 if test -n "$MOZ_ENABLE_LIBXUL"; then
7197     XPCOM_LIBS="$LIBXUL_LIBS"
7198     AC_DEFINE(MOZ_ENABLE_LIBXUL)
7199 else
7200     if test -n "$BUILD_STATIC_LIBS"; then
7201         AC_DEFINE(MOZ_STATIC_BUILD)
7202     fi
7203     XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS"
7206 dnl ========================================================
7207 dnl = Force JS to be a static lib
7208 dnl ========================================================
7209 MOZ_ARG_ENABLE_BOOL(js-static-build,
7210 [  --enable-js-static-build  Force js to be a static lib],
7211     JS_STATIC_BUILD=1,
7212     JS_STATIC_BUILD= )
7214 AC_SUBST(JS_STATIC_BUILD)
7215         
7216 if test -n "$JS_STATIC_BUILD"; then
7217     AC_DEFINE(EXPORT_JS_API)
7219 if test -z "$BUILD_STATIC_LIBS"; then
7220     AC_MSG_ERROR([--enable-js-static-build is only compatible with --enable-static])
7225 dnl ========================================================
7226 dnl =
7227 dnl = Standalone module options
7228 dnl = 
7229 dnl ========================================================
7230 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7232 dnl Check for GLib and libIDL.
7233 dnl ========================================================
7234 case "$target_os" in
7235 msvc*|mks*|cygwin*|mingw*|wince*)
7236     SKIP_IDL_CHECK="yes"
7237     ;;
7239     SKIP_IDL_CHECK="no"
7240     ;;
7241 esac
7243 if test -z "$COMPILE_ENVIRONMENT"; then
7244     SKIP_IDL_CHECK="yes"
7247 dnl = Allow users to disable libIDL checking for standalone modules
7248 MOZ_ARG_WITHOUT_BOOL(libIDL,
7249 [  --without-libIDL        Skip check for libIDL (standalone modules only)],
7250         SKIP_IDL_CHECK="yes")
7252 if test "$SKIP_IDL_CHECK" = "no"
7253 then
7254     _LIBIDL_FOUND=
7255     if test "$MACOS_SDK_DIR"; then 
7256       dnl xpidl, and therefore libIDL, is only needed on the build host.
7257       dnl Don't build it against the SDK, as that causes problems.
7258       _MACSAVE_CFLAGS="$CFLAGS"
7259       _MACSAVE_LIBS="$LIBS"
7260       _MACSAVE_LDFLAGS="$LDFLAGS"
7261       _MACSAVE_NEXT_ROOT="$NEXT_ROOT"
7262       changequote(,)
7263       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"`
7264       LIBS=`echo $LIBS|sed -e "s?-L${MACOS_SDK_DIR}/usr/lib[^ ]*??g"`
7265       LDFLAGS=`echo $LDFLAGS|sed -e "s?-Wl,-syslibroot,${MACOS_SDK_DIR}??g"`
7266       changequote([,])
7267       unset NEXT_ROOT
7268     fi
7270     if test "$MOZ_ENABLE_GTK2"; then
7271         PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0 glib-2.0 gobject-2.0, _LIBIDL_FOUND=1,_LIBIDL_FOUND=)
7272     fi
7273     dnl if no gtk/libIDL1 or gtk2/libIDL2 combination was found, fall back
7274     dnl to either libIDL1 or libIDL2.
7275     if test -z "$_LIBIDL_FOUND"; then
7276         AM_PATH_LIBIDL($LIBIDL_VERSION,_LIBIDL_FOUND=1)
7277         if test -z "$_LIBIDL_FOUND"; then
7278             PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0,_LIBIDL_FOUND=1)
7279         fi
7280     fi
7281     dnl
7282     dnl If we don't have a libIDL config program & not cross-compiling, 
7283     dnl     look for orbit-config instead.
7284     dnl
7285     if test -z "$_LIBIDL_FOUND" && test -z "$CROSS_COMPILE"; then
7286         AC_PATH_PROGS(ORBIT_CONFIG, $ORBIT_CONFIG orbit-config)
7287         if test -n "$ORBIT_CONFIG"; then
7288             AC_MSG_CHECKING([for ORBit libIDL usability])
7289                 _ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags`
7290             _ORBIT_LIBS=`${ORBIT_CONFIG} client --libs`
7291             _ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}`
7292             _ORBIT_LIB_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-L/); } }' -- ${_ORBIT_LIBS}`
7293             LIBIDL_CFLAGS="$_ORBIT_INC_PATH"
7294             LIBIDL_LIBS="$_ORBIT_LIB_PATH -lIDL -lglib"
7295             LIBIDL_CONFIG=
7296             _SAVE_CFLAGS="$CFLAGS"
7297             _SAVE_LIBS="$LIBS"
7298             CFLAGS="$LIBIDL_CFLAGS $CFLAGS"
7299             LIBS="$LIBIDL_LIBS $LIBS"
7300             AC_TRY_RUN([
7301 #include <stdlib.h>
7302 #include <libIDL/IDL.h>
7303 int main() {
7304   char *s;
7305   s=strdup(IDL_get_libver_string());
7306   if(s==NULL) {
7307     exit(1);
7308   }
7309   exit(0);
7311             ], [_LIBIDL_FOUND=1
7312                 result="yes"],
7313                [LIBIDL_CFLAGS=
7314                 LIBIDL_LIBS=
7315                 result="no"],
7316                [_LIBIDL_FOUND=1
7317                 result="maybe"] )
7318             AC_MSG_RESULT($result)
7319             CFLAGS="$_SAVE_CFLAGS"
7320             LIBS="$_SAVE_LIBS"
7321         fi
7322     fi
7323     if test -z "$_LIBIDL_FOUND"; then
7324         AC_MSG_ERROR([libIDL not found.
7325         libIDL $LIBIDL_VERSION or higher is required.])
7326     fi
7327     if test "$MACOS_SDK_DIR"; then
7328       CFLAGS="$_MACSAVE_CFLAGS"
7329       LIBS="$_MACSAVE_LIBS"
7330       LDFLAGS="$_MACSAVE_LDFLAGS"
7331       if test -n "$_MACSAVE_NEXT_ROOT" ; then
7332         export NEXT_ROOT="$_MACSAVE_NEXT_ROOT"
7333       fi
7334     fi
7337 if test -n "$CROSS_COMPILE"; then
7338      if test -z "$HOST_LIBIDL_CONFIG"; then
7339         HOST_LIBIDL_CONFIG="$LIBIDL_CONFIG"
7340     fi
7341     if test -n "$HOST_LIBIDL_CONFIG" && test "$HOST_LIBIDL_CONFIG" != "no"; then
7342         HOST_LIBIDL_CFLAGS=`${HOST_LIBIDL_CONFIG} --cflags`
7343         HOST_LIBIDL_LIBS=`${HOST_LIBIDL_CONFIG} --libs`
7344     else
7345         HOST_LIBIDL_CFLAGS="$LIBIDL_CFLAGS"
7346         HOST_LIBIDL_LIBS="$LIBIDL_LIBS"
7347     fi
7350 if test -z "$SKIP_PATH_CHECKS"; then
7351 if test -z "${GLIB_CFLAGS}" || test -z "${GLIB_LIBS}" ; then
7352     if test "$MOZ_ENABLE_GTK2"; then
7353         PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
7354     else
7355         AM_PATH_GLIB(${GLIB_VERSION})
7356     fi
7360 if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then
7361     GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
7364 AC_SUBST(LIBIDL_CFLAGS)
7365 AC_SUBST(LIBIDL_LIBS)
7366 AC_SUBST(STATIC_LIBIDL)
7367 AC_SUBST(GLIB_CFLAGS)
7368 AC_SUBST(GLIB_LIBS)
7369 AC_SUBST(GLIB_GMODULE_LIBS)
7370 AC_SUBST(HOST_LIBIDL_CONFIG)
7371 AC_SUBST(HOST_LIBIDL_CFLAGS)
7372 AC_SUBST(HOST_LIBIDL_LIBS)
7374 dnl ========================================================
7375 dnl Check for libart
7376 dnl ========================================================
7377 if test "$MOZ_SVG_RENDERER_LIBART"; then
7378   if test ! -f $topsrcdir/other-licenses/libart_lgpl/Makefile.in; then
7379     AC_MSG_ERROR([You must check out the mozilla version of libart. Use
7380 mk_add_options MOZ_CO_MODULE=mozilla/other-licenses/libart_lgpl])
7381   fi
7383   dnl libart's configure hasn't been run yet, but we know what the
7384   dnl answer should be anyway
7385   MOZ_LIBART_CFLAGS='-I${DIST}/include/libart_lgpl'
7386   case "$target_os" in
7387   msvc*|mks*|cygwin*|mingw*|wince*)
7388       MOZ_LIBART_LIBS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)moz_art_lgpl.$(IMPORT_LIB_SUFFIX)' 
7389       ;;
7390   os2*)
7391       MOZ_LIBART_LIBS='-lmoz_art -lm'
7392       ;;
7393   beos*)
7394       MOZ_LIBART_LIBS='-lmoz_art_lgpl -lroot -lbe'
7395       ;;
7396   *)
7397       MOZ_LIBART_LIBS='-lmoz_art_lgpl -lm'
7398       ;;
7399   esac
7400   AC_FUNC_ALLOCA
7403 AC_SUBST(MOZ_LIBART_CFLAGS)
7404 AC_SUBST(MOZ_LIBART_LIBS)
7406 dnl ========================================================
7407 dnl Check for cairo
7408 dnl ========================================================
7409 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
7411 MOZ_TREE_CAIRO=1
7412 MOZ_ARG_ENABLE_BOOL(system-cairo,
7413 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
7414 MOZ_TREE_CAIRO=,
7415 MOZ_TREE_CAIRO=1 )
7417 # Check for headers defining standard int types.
7418 AC_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
7420 if test "$MOZ_TREE_CAIRO"; then
7421     AC_DEFINE(MOZ_TREE_CAIRO)
7423     # For now we assume that we will have a uint64_t available through
7424     # one of the above headers or mozstdint.h.
7425     AC_DEFINE(HAVE_UINT64_T)
7427     # Define macros for cairo-features.h
7428     if test "$MOZ_X11"; then
7429         XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
7430         XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
7431         PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
7432         PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7433         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7434         MOZ_ENABLE_CAIRO_FT=1
7435         CAIRO_FT_CFLAGS="$FT2_CFLAGS"
7436     fi
7437     if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
7438         QPAINTER_SURFACE_FEATURE="#define CAIRO_HAS_QPAINTER_SURFACE 1"
7439     fi
7440     if test "$MOZ_WIDGET_TOOLKIT" = "mac" -o "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
7441         QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
7442         QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
7443         QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
7444     fi
7445     if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
7446         WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
7447         WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
7448         PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7449     fi
7450     if test "$MOZ_WIDGET_TOOLKIT" = "os2"; then
7451         OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
7452         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7453         PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7454         MOZ_ENABLE_CAIRO_FT=1
7455         CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
7456         CAIRO_FT_LIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
7457     fi
7458     if test "$MOZ_ENABLE_GLITZ"; then
7459         GLITZ_SURFACE_FEATURE="#define CAIRO_HAS_GLITZ_SURFACE 1"
7460     fi
7461     if test "$MOZ_WIDGET_TOOLKIT" = "beos"; then
7462         PKG_CHECK_MODULES(CAIRO_FT, fontconfig freetype2)
7463         BEOS_SURFACE_FEATURE="#define CAIRO_HAS_BEOS_SURFACE 1"
7464         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7465         MOZ_ENABLE_CAIRO_FT=1
7466     fi
7467     AC_SUBST(MOZ_ENABLE_CAIRO_FT)
7468     AC_SUBST(CAIRO_FT_CFLAGS)
7470     if test "$MOZ_DEBUG"; then
7471       SANITY_CHECKING_FEATURE="#define CAIRO_DO_SANITY_CHECKING 1"
7472     else
7473       SANITY_CHECKING_FEATURE="#undef CAIRO_DO_SANITY_CHECKING"
7474     fi
7476     PNG_FUNCTIONS_FEATURE="#define CAIRO_HAS_PNG_FUNCTIONS 1"
7478     AC_SUBST(PS_SURFACE_FEATURE)
7479     AC_SUBST(PDF_SURFACE_FEATURE)
7480     AC_SUBST(SVG_SURFACE_FEATURE)
7481     AC_SUBST(XLIB_SURFACE_FEATURE)
7482     AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
7483     AC_SUBST(QUARTZ_SURFACE_FEATURE)
7484     AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
7485     AC_SUBST(XCB_SURFACE_FEATURE)
7486     AC_SUBST(WIN32_SURFACE_FEATURE)
7487     AC_SUBST(OS2_SURFACE_FEATURE)
7488     AC_SUBST(BEOS_SURFACE_FEATURE)
7489     AC_SUBST(GLITZ_SURFACE_FEATURE)
7490     AC_SUBST(DIRECTFB_SURFACE_FEATURE)
7491     AC_SUBST(FT_FONT_FEATURE)
7492     AC_SUBST(WIN32_FONT_FEATURE)
7493     AC_SUBST(QUARTZ_FONT_FEATURE)
7494     AC_SUBST(PNG_FUNCTIONS_FEATURE)
7495     AC_SUBST(QPAINTER_SURFACE_FEATURE)
7497     if test "$_WIN32_MSVC"; then
7498         MOZ_CAIRO_LIBS='$(DEPTH)/gfx/cairo/cairo/src/mozcairo.lib $(DEPTH)/gfx/cairo/libpixman/src/mozlibpixman.lib'
7499         if test "$MOZ_ENABLE_GLITZ"; then
7500             MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'$(DEPTH)/gfx/cairo/glitz/src/mozglitz.lib $(DEPTH)/gfx/cairo/glitz/src/wgl/mozglitzwgl.lib'
7501         fi
7502     else
7503         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"
7505         if test "$MOZ_X11"; then
7506             MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS -lXrender -lfreetype -lfontconfig"
7507         fi
7509         if test "$MOZ_ENABLE_GLITZ"; then
7510             MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src -lmozglitz'
7511             if test "$MOZ_X11"; then
7512                 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src/glx -lmozglitzglx -lGL'
7513             fi
7514             if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
7515                 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src/wgl -lmozglitzwgl'
7516             fi
7517         fi
7518     fi
7520     CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
7521     mv -f $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig 2> /dev/null
7523 else
7524    PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION freetype2 fontconfig)
7525    MOZ_CAIRO_CFLAGS=$CAIRO_CFLAGS
7526    MOZ_CAIRO_LIBS=$CAIRO_LIBS
7527    if test "$MOZ_X11"; then
7528         PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
7529         MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
7530         MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
7531    fi
7534 AC_SUBST(MOZ_TREE_CAIRO)
7535 AC_SUBST(MOZ_CAIRO_CFLAGS)
7536 AC_SUBST(MOZ_CAIRO_LIBS)
7538 dnl ========================================================
7539 dnl Check for lcms
7540 dnl ========================================================
7542 MOZ_NATIVE_LCMS=
7543 MOZ_ARG_ENABLE_BOOL(system-lcms,
7544 [ --enable-system-lcms Use system lcms (located with pkgconfig)],
7545 MOZ_NATIVE_LCMS=1,
7546 MOZ_NATIVE_LCMS= )
7548 if test -z "$MOZ_NATIVE_LCMS"
7549 then
7550     LCMS_CFLAGS=
7551     if test "$_WIN32_MSVC"; then
7552         if test -z "$BUILD_STATIC_LIBS" -a -z "$MOZ_ENABLE_LIBXUL"; then
7553             LCMS_CFLAGS=-DLCMS_DLL
7554         fi
7555         LCMS_LIBS='$(LIBXUL_DIST)/lib/mozlcms.lib'
7556     else
7557         LCMS_LIBS='-L$(LIBXUL_DIST)/bin -lmozlcms'
7558     fi
7559 else
7560     PKG_CHECK_MODULES(LCMS, lcms >= $LCMS_VERSION)
7563 AC_SUBST(MOZ_NATIVE_LCMS)
7564 AC_SUBST(LCMS_CFLAGS)
7565 AC_SUBST(LCMS_LIBS)
7567 dnl ========================================================
7568 dnl disable xul
7569 dnl ========================================================
7570 MOZ_ARG_DISABLE_BOOL(xul,
7571 [  --disable-xul           Disable XUL],
7572     MOZ_XUL= )
7573 if test "$MOZ_XUL"; then
7574   AC_DEFINE(MOZ_XUL)
7575 else
7576   dnl remove extensions that require XUL
7577   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
7580 AC_SUBST(MOZ_XUL)
7582 dnl ========================================================
7583 dnl Two ways to enable Python support:
7584 dnl   --enable-extensions=python # select all available.
7585 dnl    (MOZ_PYTHON_EXTENSIONS contains the list of extensions)
7586 dnl or:
7587 dnl   --enable-extensions=python/xpcom,... # select individual ones
7589 dnl If either is used, we locate the Python to use.
7590 dnl ========================================================
7592 dnl If 'python' appears anywhere in the extensions list, go lookin'...
7593 if test `echo "$MOZ_EXTENSIONS" | grep -c python` -ne 0; then
7594     dnl Allow PYTHON to point to the Python interpreter to use
7595     dnl (note that it must be the python executable - which we
7596     dnl run to locate the relevant paths etc)
7597     dnl If not set, we use whatever Python we can find.
7598     MOZ_PYTHON=$PYTHON
7599     dnl Ask Python what its version number is
7600     changequote(,)
7601     MOZ_PYTHON_VER=`$PYTHON -c "import sys;print '%d%d' % sys.version_info[0:2]"`
7602     MOZ_PYTHON_VER_DOTTED=`$PYTHON -c "import sys;print '%d.%d' % sys.version_info[0:2]"`
7603     changequote([,])
7604     dnl Ask for the Python "prefix" (ie, home/source dir)
7605     MOZ_PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
7606     dnl Setup the include and library directories.
7607     if test "$OS_ARCH" = "WINNT"; then
7608         MOZ_PYTHON_PREFIX=`$CYGPATH_W $MOZ_PYTHON_PREFIX | $CYGPATH_S`
7609         dnl Source trees have "include" and "PC" for .h, and "PCbuild" for .lib
7610         dnl Binary trees have "include" for .h, and "libs" for .lib
7611         dnl We add 'em both - along with quotes, to handle spaces.
7612         MOZ_PYTHON_DLL_SUFFIX=.pyd
7613         MOZ_PYTHON_INCLUDES="\"-I$MOZ_PYTHON_PREFIX/include\" \"-I$MOZ_PYTHON_PREFIX/PC\""
7614         MOZ_PYTHON_LIBS="\"/libpath:$MOZ_PYTHON_PREFIX/PCBuild\" \"/libpath:$MOZ_PYTHON_PREFIX/libs\""
7615     else
7616         dnl Non-Windows include and libs
7617         MOZ_PYTHON_DLL_SUFFIX=$DLL_SUFFIX
7618         MOZ_PYTHON_INCLUDES="-I$MOZ_PYTHON_PREFIX/include/python$MOZ_PYTHON_VER_DOTTED"
7619         dnl Check for dynamic Python lib
7620         dnl - A static Python is no good - multiple dynamic libraries (xpcom
7621         dnl - core, xpcom loader, pydom etc) all need to share Python.
7622         dnl - Python 2.3's std --enable-shared configure option will
7623         dnl   create a libpython2.3.so.1.0. We should first try this
7624         dnl   dotted versioned .so file because this is the one that
7625         dnl   the PyXPCOM build mechanics tries to link to.
7626         dnl   XXX Should find a better way than hardcoding "1.0".
7627         dnl - Python developement tree dir layouts are NOT allowed here
7628         dnl   because the PyXPCOM build just dies on it later anyway.
7629         dnl - Fixes to the above by Python/*nix knowledgable people welcome!
7630         if test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7631             MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7632         elif test -f "$MOZ_PYTHON_PREFIX/lib64/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7633             MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib64 -lpython$MOZ_PYTHON_VER_DOTTED"
7634         elif test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7635             MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7636         elif test -f "$MOZ_PYTHON_PREFIX/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7637             dnl Don't Python development tree directory layout.
7638             MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX -lpython$MOZ_PYTHON_VER_DOTTED"
7639             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.])
7640         elif test "$OS_ARCH" = "Darwin"; then
7641             dnl We do Darwin last, so if a custom non-framework build of
7642             dnl python is used on OSX, then it will be picked up first by
7643             dnl the logic above.
7644             MOZ_PYTHON_LIBS="-framework Python"
7645         else
7646             AC_MSG_ERROR([Could not find build shared libraries for Python at $MOZ_PYTHON_PREFIX.  This is required for PyXPCOM.])
7647         fi
7648         if test "$OS_ARCH" = "Linux"; then
7649             MOZ_PYTHON_LIBS="$MOZ_PYTHON_LIBS -lutil"
7650         fi
7651     fi
7652     dnl Handle "_d" on Windows
7653     if test "$OS_ARCH" = "WINNT" && test -n "$MOZ_DEBUG"; then
7654         MOZ_PYTHON_DEBUG_SUFFIX="_d"
7655     else
7656         MOZ_PYTHON_DEBUG_SUFFIX=
7657     fi
7658     AC_MSG_RESULT(Building Python extensions using python-$MOZ_PYTHON_VER_DOTTED from $MOZ_PYTHON_PREFIX)
7661 dnl If the user asks for the 'python' extension, then we add
7662 dnl MOZ_PYTHON_EXTENSIONS to MOZ_EXTENSIONS - but with the leading 'python/'
7663 dnl Note the careful regex - it must match 'python' followed by anything
7664 dnl other than a '/', including the end-of-string.
7665 if test `echo "$MOZ_EXTENSIONS" | grep -c 'python\([[^/]]\|$\)'` -ne 0; then
7666     for pyext in $MOZ_PYTHON_EXTENSIONS; do
7667         MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS python/$pyext`
7668     done
7670 dnl Later we may allow MOZ_PYTHON_EXTENSIONS to be specified on the
7671 dnl command-line, but not yet
7672 AC_SUBST(MOZ_PYTHON_EXTENSIONS)
7673 AC_SUBST(MOZ_PYTHON)
7674 AC_SUBST(MOZ_PYTHON_PREFIX)
7675 AC_SUBST(MOZ_PYTHON_INCLUDES)
7676 AC_SUBST(MOZ_PYTHON_LIBS)
7677 AC_SUBST(MOZ_PYTHON_VER)
7678 AC_SUBST(MOZ_PYTHON_VER_DOTTED)
7679 AC_SUBST(MOZ_PYTHON_DEBUG_SUFFIX)
7680 AC_SUBST(MOZ_PYTHON_DLL_SUFFIX)
7682 dnl ========================================================
7683 dnl disable profile sharing
7684 dnl ========================================================
7685 MOZ_ARG_DISABLE_BOOL(profilesharing,
7686 [  --disable-profilesharing           Disable profile sharing],
7687     MOZ_PROFILESHARING=,
7688     MOZ_PROFILESHARING=1 )
7689 if test "$MOZ_PROFILESHARING"; then
7690   MOZ_IPCD=1
7691   AC_DEFINE(MOZ_PROFILESHARING)
7694 dnl ========================================================
7695 dnl enable ipc/ipcd
7696 dnl ========================================================
7697 MOZ_ARG_ENABLE_BOOL(ipcd,
7698 [  --enable-ipcd                      Enable IPC daemon],
7699     MOZ_IPCD=1,
7700     MOZ_IPCD= )
7702 dnl ========================================================
7703 dnl disable profile locking
7704 dnl   do no use this in applications that can have more than
7705 dnl   one process accessing the profile directory.
7706 dnl ========================================================
7707 MOZ_ARG_DISABLE_BOOL(profilelocking,
7708 [  --disable-profilelocking           Disable profile locking],
7709     MOZ_PROFILELOCKING=,
7710     MOZ_PROFILELOCKING=1 )
7711 if test "$MOZ_PROFILELOCKING"; then
7712   AC_DEFINE(MOZ_PROFILELOCKING)
7715 dnl ========================================================
7716 dnl disable rdf services
7717 dnl ========================================================
7718 MOZ_ARG_DISABLE_BOOL(rdf,
7719 [  --disable-rdf           Disable RDF],
7720     MOZ_RDF= )
7721 if test "$MOZ_RDF"; then
7722   AC_DEFINE(MOZ_RDF)
7725 AC_SUBST(MOZ_RDF)
7727 dnl ========================================================
7728 dnl necko configuration options
7729 dnl ========================================================
7732 dnl option to disable various necko protocols
7734 MOZ_ARG_ENABLE_STRING(necko-protocols,
7735 [  --enable-necko-protocols[={http,ftp,default,all,none}]
7736                           Enable/disable specific protocol handlers],
7737 [ for option in `echo $enableval | sed 's/,/ /g'`; do
7738     if test "$option" = "yes" || test "$option" = "all"; then
7739         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7740     elif test "$option" = "no" || test "$option" = "none"; then
7741         NECKO_PROTOCOLS=""
7742     elif test "$option" = "default"; then
7743         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7744     elif test `echo "$option" | grep -c \^-` != 0; then
7745         option=`echo $option | sed 's/^-//'`
7746         NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
7747     else
7748         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
7749     fi
7750 done],
7751     NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
7752 dnl Remove dupes
7753 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
7754 AC_SUBST(NECKO_PROTOCOLS)
7755 for p in $NECKO_PROTOCOLS; do
7756     AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
7757 done
7760 dnl option to disable necko's disk cache
7762 MOZ_ARG_DISABLE_BOOL(necko-disk-cache,
7763 [  --disable-necko-disk-cache
7764                           Disable necko disk cache],
7765     NECKO_DISK_CACHE=,
7766     NECKO_DISK_CACHE=1)
7767 AC_SUBST(NECKO_DISK_CACHE)
7768 if test "$NECKO_DISK_CACHE"; then
7769     AC_DEFINE(NECKO_DISK_CACHE)
7773 dnl option to minimize size of necko's i/o buffers
7775 MOZ_ARG_ENABLE_BOOL(necko-small-buffers,
7776 [  --enable-necko-small-buffers
7777                           Minimize size of necko's i/o buffers],
7778     NECKO_SMALL_BUFFERS=1,
7779     NECKO_SMALL_BUFFERS=)
7780 AC_SUBST(NECKO_SMALL_BUFFERS)
7781 if test "$NECKO_SMALL_BUFFERS"; then
7782     AC_DEFINE(NECKO_SMALL_BUFFERS)
7783 fi 
7786 dnl option to disable cookies
7788 MOZ_ARG_DISABLE_BOOL(cookies,
7789 [  --disable-cookies       Disable cookie support],
7790     NECKO_COOKIES=,
7791     NECKO_COOKIES=1)
7792 AC_SUBST(NECKO_COOKIES)
7793 if test "$NECKO_COOKIES"; then
7794     AC_DEFINE(NECKO_COOKIES)
7797 dnl NECKO_ configuration options are not global
7798 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_"
7800 dnl Only build Mork if it's required
7801 AC_SUBST(MOZ_MORK)
7802 if test "$MOZ_MORK"; then
7803   AC_DEFINE(MOZ_MORK)
7806 dnl Build the lightweight Mork reader if required
7807 AC_SUBST(MOZ_MORKREADER)
7808 if test "$MOZ_MORKREADER"; then
7809   AC_DEFINE(MOZ_MORKREADER)
7812 dnl ========================================================
7813 if test "$MOZ_DEBUG" || test "$NS_TRACE_MALLOC"; then
7814     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7817 dnl ========================================================
7818 dnl =
7819 dnl = Maintainer debug option (no --enable equivalent)
7820 dnl =
7821 dnl ========================================================
7823 AC_SUBST(AR)
7824 AC_SUBST(AR_FLAGS)
7825 AC_SUBST(AR_LIST)
7826 AC_SUBST(AR_EXTRACT)
7827 AC_SUBST(AR_DELETE)
7828 AC_SUBST(AS)
7829 AC_SUBST(ASFLAGS)
7830 AC_SUBST(AS_DASH_C_FLAG)
7831 AC_SUBST(LD)
7832 AC_SUBST(RC)
7833 AC_SUBST(RCFLAGS)
7834 AC_SUBST(WINDRES)
7835 AC_SUBST(USE_SHORT_LIBNAME)
7836 AC_SUBST(IMPLIB)
7837 AC_SUBST(FILTER)
7838 AC_SUBST(BIN_FLAGS)
7839 AC_SUBST(NS_USE_NATIVE)
7840 AC_SUBST(MOZ_WIDGET_TOOLKIT)
7841 AC_SUBST(MOZ_GFX_TOOLKIT)
7842 AC_SUBST(MOZ_UPDATE_XTERM)
7843 AC_SUBST(MINIMO)
7844 AC_SUBST(MOZ_PLATFORM_HILDON)
7845 AC_SUBST(NS_OSSO)
7846 AC_SUBST(NS_MAEMO_LOCATION)
7847 AC_SUBST(MOZ_AUTH_EXTENSION)
7848 AC_SUBST(MOZ_MATHML)
7849 AC_SUBST(MOZ_PERMISSIONS)
7850 AC_SUBST(MOZ_XTF)
7851 AC_SUBST(MOZ_NO_INSPECTOR_APIS)
7852 AC_SUBST(MOZ_PREF_EXTENSIONS)
7853 AC_SUBST(MOZ_SVG)
7854 AC_SUBST(MOZ_XSLT_STANDALONE)
7855 AC_SUBST(MOZ_JS_LIBS)
7856 AC_SUBST(MOZ_PSM)
7857 AC_SUBST(MOZ_DEBUG)
7858 AC_SUBST(MOZ_DEBUG_MODULES)
7859 AC_SUBST(MOZ_PROFILE_MODULES)
7860 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
7861 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
7862 AC_SUBST(MOZ_DEBUG_FLAGS)
7863 AC_SUBST(MOZ_DEBUG_LDFLAGS)
7864 AC_SUBST(WARNINGS_AS_ERRORS)
7865 AC_SUBST(MOZ_DBGRINFO_MODULES)
7866 AC_SUBST(MOZ_EXTENSIONS)
7867 AC_SUBST(MOZ_IMG_DECODERS)
7868 AC_SUBST(MOZ_IMG_ENCODERS)
7869 AC_SUBST(MOZ_JSDEBUGGER)
7870 AC_SUBST(MOZ_OJI)
7871 AC_SUBST(MOZ_NO_XPCOM_OBSOLETE)
7872 AC_SUBST(MOZ_PLUGINS)
7873 AC_SUBST(ENABLE_EAZEL_PROFILER)
7874 AC_SUBST(EAZEL_PROFILER_CFLAGS)
7875 AC_SUBST(EAZEL_PROFILER_LIBS)
7876 AC_SUBST(MOZ_PERF_METRICS)
7877 AC_SUBST(GC_LEAK_DETECTOR)
7878 AC_SUBST(MOZ_LOG_REFCNT)
7879 AC_SUBST(MOZ_LEAKY)
7880 AC_SUBST(MOZ_JPROF)
7881 AC_SUBST(MOZ_SHARK)
7882 AC_SUBST(MOZ_CALLGRIND)
7883 AC_SUBST(MOZ_VTUNE)
7884 AC_SUBST(MOZ_XPCTOOLS)
7885 AC_SUBST(MOZ_JSLOADER)
7886 AC_SUBST(MOZ_USE_NATIVE_UCONV)
7887 AC_SUBST(MOZ_INSURE)
7888 AC_SUBST(MOZ_INSURE_DIRS)
7889 AC_SUBST(MOZ_INSURE_EXCLUDE_DIRS)
7890 AC_SUBST(MOZ_QUANTIFY)
7891 AC_SUBST(MOZ_INSURIFYING)
7892 AC_SUBST(LIBICONV)
7893 AC_SUBST(MOZ_PLACES)
7894 AC_SUBST(MOZ_PLACES_BOOKMARKS)
7895 AC_SUBST(MOZ_STORAGE)
7896 AC_SUBST(MOZ_FEEDS)
7897 AC_SUBST(NS_PRINTING)
7899 AC_SUBST(MOZ_JAVAXPCOM)
7900 AC_SUBST(JAVA_INCLUDE_PATH)
7901 AC_SUBST(JAVA)
7902 AC_SUBST(JAVAC)
7903 AC_SUBST(JAR)
7905 AC_SUBST(MOZ_PROFILESHARING)
7906 AC_SUBST(MOZ_PROFILELOCKING)
7908 AC_SUBST(MOZ_IPCD)
7910 AC_SUBST(HAVE_XIE)
7911 AC_SUBST(MOZ_XIE_LIBS)
7912 AC_SUBST(MOZ_ENABLE_POSTSCRIPT)
7914 AC_SUBST(XPCOM_USE_LEA)
7915 AC_SUBST(BUILD_STATIC_LIBS)
7916 AC_SUBST(MOZ_ENABLE_LIBXUL)
7917 AC_SUBST(ENABLE_TESTS)
7918 AC_SUBST(IBMBIDI)
7919 AC_SUBST(MOZ_UNIVERSALCHARDET)
7920 AC_SUBST(ACCESSIBILITY)
7921 AC_SUBST(MOZ_XPINSTALL)
7922 AC_SUBST(MOZ_VIEW_SOURCE)
7923 AC_SUBST(MOZ_SPELLCHECK)
7924 AC_SUBST(MOZ_XPFE_COMPONENTS)
7925 AC_SUBST(MOZ_USER_DIR)
7926 AC_SUBST(MOZ_CRASHREPORTER)
7928 AC_SUBST(ENABLE_STRIP)
7929 AC_SUBST(PKG_SKIP_STRIP)
7930 AC_SUBST(USE_ELF_DYNSTR_GC)
7931 AC_SUBST(USE_PREBINDING)
7932 AC_SUBST(INCREMENTAL_LINKER)
7933 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
7934 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
7935 AC_SUBST(MOZ_XPCOM_OBSOLETE_LIBS)
7937 AC_SUBST(MOZ_FIX_LINK_PATHS)
7938 AC_SUBST(XPCOM_LIBS)
7939 AC_SUBST(XPCOM_FROZEN_LDOPTS)
7940 AC_SUBST(XPCOM_GLUE_LDOPTS)
7941 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
7943 AC_SUBST(USE_DEPENDENT_LIBS)
7945 AC_SUBST(MOZ_BUILD_ROOT)
7946 AC_SUBST(MOZ_OS2_TOOLS)
7947 AC_SUBST(MOZ_OS2_USE_DECLSPEC)
7949 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
7950 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
7951 AC_SUBST(MOZ_TIMELINE)
7952 AC_SUBST(WINCE)
7953 AC_SUBST(TARGET_DEVICE)
7955 AC_SUBST(MOZ_APP_NAME)
7956 AC_SUBST(MOZ_APP_DISPLAYNAME)
7957 AC_SUBST(MOZ_APP_VERSION)
7958 AC_SUBST(FIREFOX_VERSION)
7960 AC_SUBST(MOZ_PKG_SPECIAL)
7962 AC_SUBST(MOZILLA_OFFICIAL)
7963 AC_SUBST(BUILD_OFFICIAL)
7964 AC_SUBST(MOZ_MILESTONE_RELEASE)
7966 dnl win32 options
7967 AC_SUBST(MOZ_PROFILE)
7968 AC_SUBST(MOZ_DEBUG_SYMBOLS)
7969 AC_SUBST(MOZ_MAPINFO)
7970 AC_SUBST(MOZ_BROWSE_INFO)
7971 AC_SUBST(MOZ_TOOLS_DIR)
7972 AC_SUBST(CYGWIN_WRAPPER)
7973 AC_SUBST(AS_PERL)
7974 AC_SUBST(WIN32_REDIST_DIR)
7975 AC_SUBST(PYTHON)
7977 dnl Echo the CFLAGS to remove extra whitespace.
7978 CFLAGS=`echo \
7979         $_WARNINGS_CFLAGS \
7980         $CFLAGS`
7982 CXXFLAGS=`echo \
7983         $_MOZ_RTTI_FLAGS \
7984         $_MOZ_EXCEPTIONS_FLAGS \
7985         $_WARNINGS_CXXFLAGS \
7986         $CXXFLAGS`
7988 COMPILE_CFLAGS=`echo \
7989     $_DEFINES_CFLAGS \
7990         $_DEPEND_CFLAGS \
7991     $COMPILE_CFLAGS`
7993 COMPILE_CXXFLAGS=`echo \
7994     $_DEFINES_CXXFLAGS \
7995         $_DEPEND_CFLAGS \
7996     $COMPILE_CXXFLAGS`
7998 AC_SUBST(SYSTEM_MAKEDEPEND)
7999 AC_SUBST(SYSTEM_JPEG)
8000 AC_SUBST(SYSTEM_PNG)
8001 AC_SUBST(SYSTEM_ZLIB)
8002 AC_SUBST(SYSTEM_BZ2)
8004 AC_SUBST(JPEG_CFLAGS)
8005 AC_SUBST(JPEG_LIBS)
8006 AC_SUBST(ZLIB_CFLAGS)
8007 AC_SUBST(ZLIB_LIBS)
8008 AC_SUBST(BZ2_CFLAGS)
8009 AC_SUBST(BZ2_LIBS)
8010 AC_SUBST(PNG_CFLAGS)
8011 AC_SUBST(PNG_LIBS)
8013 AC_SUBST(MOZ_JPEG_CFLAGS)
8014 AC_SUBST(MOZ_JPEG_LIBS)
8015 AC_SUBST(MOZ_ZLIB_CFLAGS)
8016 AC_SUBST(MOZ_ZLIB_LIBS)
8017 AC_SUBST(MOZ_BZ2_CFLAGS)
8018 AC_SUBST(MOZ_BZ2_LIBS)
8019 AC_SUBST(MOZ_PNG_CFLAGS)
8020 AC_SUBST(MOZ_PNG_LIBS)
8022 AC_SUBST(NSPR_CFLAGS)
8023 AC_SUBST(NSPR_LIBS)
8024 AC_SUBST(MOZ_NATIVE_NSPR)
8026 AC_SUBST(NSS_CFLAGS)
8027 AC_SUBST(NSS_LIBS)
8028 AC_SUBST(NSS_DEP_LIBS)
8029 AC_SUBST(MOZ_NATIVE_NSS)
8031 AC_SUBST(CFLAGS)
8032 AC_SUBST(CXXFLAGS)
8033 AC_SUBST(CPPFLAGS)
8034 AC_SUBST(COMPILE_CFLAGS)
8035 AC_SUBST(COMPILE_CXXFLAGS)
8036 AC_SUBST(LDFLAGS)
8037 AC_SUBST(LIBS)
8038 AC_SUBST(CROSS_COMPILE)
8040 AC_SUBST(HOST_CC)
8041 AC_SUBST(HOST_CXX)
8042 AC_SUBST(HOST_CFLAGS)
8043 AC_SUBST(HOST_CXXFLAGS)
8044 AC_SUBST(HOST_OPTIMIZE_FLAGS)
8045 AC_SUBST(HOST_AR)
8046 AC_SUBST(HOST_AR_FLAGS)
8047 AC_SUBST(HOST_LD)
8048 AC_SUBST(HOST_RANLIB)
8049 AC_SUBST(HOST_NSPR_MDCPUCFG)
8050 AC_SUBST(HOST_BIN_SUFFIX)
8051 AC_SUBST(HOST_OS_ARCH)
8053 AC_SUBST(TARGET_CPU)
8054 AC_SUBST(TARGET_VENDOR)
8055 AC_SUBST(TARGET_OS)
8056 AC_SUBST(TARGET_NSPR_MDCPUCFG)
8057 AC_SUBST(TARGET_MD_ARCH)
8058 AC_SUBST(TARGET_XPCOM_ABI)
8059 AC_SUBST(OS_TARGET)
8060 AC_SUBST(OS_ARCH)
8061 AC_SUBST(OS_RELEASE)
8062 AC_SUBST(OS_TEST)
8064 AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
8065 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8067 AC_SUBST(WRAP_MALLOC_CFLAGS)
8068 AC_SUBST(WRAP_MALLOC_LIB)
8069 AC_SUBST(MKSHLIB)
8070 AC_SUBST(MKCSHLIB)
8071 AC_SUBST(MKSHLIB_FORCE_ALL)
8072 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8073 AC_SUBST(DSO_CFLAGS)
8074 AC_SUBST(DSO_PIC_CFLAGS)
8075 AC_SUBST(DSO_LDOPTS)
8076 AC_SUBST(LIB_PREFIX)
8077 AC_SUBST(DLL_PREFIX)
8078 AC_SUBST(DLL_SUFFIX)
8079 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8080 AC_SUBST(LIB_SUFFIX)
8081 AC_SUBST(OBJ_SUFFIX)
8082 AC_SUBST(BIN_SUFFIX)
8083 AC_SUBST(ASM_SUFFIX)
8084 AC_SUBST(IMPORT_LIB_SUFFIX)
8085 AC_SUBST(USE_N32)
8086 AC_SUBST(CC_VERSION)
8087 AC_SUBST(CXX_VERSION)
8088 AC_SUBST(MSMANIFEST_TOOL)
8090 if test "$USING_HCC"; then
8091    CC='${topsrcdir}/build/hcc'
8092    CC="$CC '$_OLDCC'"
8093    CXX='${topsrcdir}/build/hcpp'
8094    CXX="$CXX '$_OLDCXX'"
8095    AC_SUBST(CC)
8096    AC_SUBST(CXX)
8099 dnl Check for missing components
8100 if test "$COMPILE_ENVIRONMENT"; then
8101 if test "$MOZ_X11"; then
8102     dnl ====================================================
8103     dnl = Check if X headers exist
8104     dnl ====================================================
8105     _SAVE_CFLAGS=$CFLAGS
8106     CFLAGS="$CFLAGS $XCFLAGS"
8107     AC_TRY_COMPILE([
8108         #include <stdio.h>
8109         #include <stdlib.h>
8110         #include <X11/Xlib.h>
8111         #include <X11/Intrinsic.h>
8112     ],
8113     [
8114         Display *dpy = 0;
8115         if ((dpy = XOpenDisplay(NULL)) == NULL) {
8116             fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8117             exit(1);
8118         }
8119     ], [], 
8120     [ AC_MSG_ERROR([Could not compile basic X program.]) ])
8121     CFLAGS="$_SAVE_CFLAGS"
8123     if test ! -z "$MISSING_X"; then
8124         AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8125     fi
8127 fi # MOZ_X11
8128 fi # COMPILE_ENVIRONMENT
8130 dnl Set various defines and substitutions
8131 dnl ========================================================
8133 if test "$OS_ARCH" = "OS2" -a "$VACPP" = "yes"; then
8134       LIBS='so32dll.lib tcp32dll.lib'
8135 elif test "$OS_ARCH" = "BeOS"; then
8136   AC_DEFINE(XP_BEOS)
8137   MOZ_MOVEMAIL=1
8138 elif test "$OS_ARCH" = "Darwin"; then
8139   AC_DEFINE(XP_UNIX)
8140   AC_DEFINE(UNIX_ASYNC_DNS)
8141   MOZ_MOVEMAIL=1
8142 elif test "$OS_ARCH" = "OpenVMS"; then
8143   AC_DEFINE(XP_UNIX)
8144 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
8145   AC_DEFINE(XP_UNIX)
8146   AC_DEFINE(UNIX_ASYNC_DNS)
8147   MOZ_MOVEMAIL=1
8149 AC_SUBST(MOZ_MOVEMAIL)
8151 AC_DEFINE(JS_THREADSAFE)
8153 if test "$MOZ_DEBUG"; then
8154     AC_DEFINE(MOZ_REFLOW_PERF)
8155     AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8158 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
8159     AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8160     ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8161     ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8162     ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8163     ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8164     AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8165     AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8166     AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8169 # Used for LD_LIBRARY_PATH of run_viewer target
8170 LIBS_PATH=
8171 for lib_arg in $NSPR_LIBS $TK_LIBS; do
8172   case $lib_arg in
8173     -L* ) LIBS_PATH="${LIBS_PATH:+$LIBS_PATH:}"`expr $lib_arg : "-L\(.*\)"` ;;
8174       * ) ;;
8175   esac
8176 done
8177 AC_SUBST(LIBS_PATH)
8179 dnl ========================================================
8180 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
8181 dnl ========================================================
8182 case "$host_os" in
8183 mingw*)
8184     WIN_TOP_SRC=`cd $srcdir; pwd -W`
8185     ;;
8186 cygwin*|msvc*|mks*)
8187     HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
8188     HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
8189     CC="\$(CYGWIN_WRAPPER) $CC"
8190     CXX="\$(CYGWIN_WRAPPER) $CXX"
8191     CPP="\$(CYGWIN_WRAPPER) $CPP"
8192     LD="\$(CYGWIN_WRAPPER) $LD"
8193     AS="\$(CYGWIN_WRAPPER) $AS"
8194     RC="\$(CYGWIN_WRAPPER) $RC"
8195     MIDL="\$(CYGWIN_WRAPPER) $MIDL"
8196     CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
8197     WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
8198     ;;
8199 esac
8201 AC_SUBST(CYGDRIVE_MOUNT)
8202 AC_SUBST(WIN_TOP_SRC)
8204 AC_SUBST(MOZILLA_VERSION)
8206 AC_SUBST(ac_configure_args)
8208 dnl Spit out some output
8209 dnl ========================================================
8211 dnl The following defines are used by xpcom
8212 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8213 CPP_THROW_NEW
8214 HAVE_CPP_2BYTE_WCHAR_T
8215 HAVE_CPP_ACCESS_CHANGING_USING
8216 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8217 HAVE_CPP_BOOL
8218 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8219 HAVE_CPP_EXPLICIT
8220 HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
8221 HAVE_CPP_NAMESPACE_STD
8222 HAVE_CPP_NEW_CASTS
8223 HAVE_CPP_PARTIAL_SPECIALIZATION
8224 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8225 HAVE_CPP_TYPENAME
8226 HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL
8227 HAVE_STATVFS
8228 NEED_CPP_UNUSED_IMPLEMENTATIONS
8229 NEW_H
8230 HAVE_GETPAGESIZE
8231 HAVE_ICONV
8232 HAVE_ICONV_WITH_CONST_INPUT
8233 HAVE_MBRTOWC
8234 HAVE_SYS_MOUNT_H
8235 HAVE_SYS_VFS_H
8236 HAVE_WCRTOMB
8239 AC_CONFIG_HEADER(
8240 netwerk/necko-config.h
8241 xpcom/xpcom-config.h
8242 xpcom/xpcom-private.h
8245 # Save the defines header file before autoconf removes it.
8246 # (Do not add AC_DEFINE calls after this line.)
8247   _CONFIG_TMP=confdefs-tmp.h
8248   _CONFIG_DEFS_H=mozilla-config.h
8250   cat > $_CONFIG_TMP <<\EOF
8251 /* List of defines generated by configure. Included with preprocessor flag,
8252  * -include, to avoid long list of -D defines on the compile command-line.
8253  * Do not edit.
8254  */
8256 #ifndef _MOZILLA_CONFIG_H_
8257 #define _MOZILLA_CONFIG_H_
8260 _EGREP_PATTERN='^#define ('
8261 if test -n "$_NON_GLOBAL_ACDEFINES"; then
8262     for f in $_NON_GLOBAL_ACDEFINES; do
8263         _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
8264     done
8266 _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
8268   sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
8270   cat >> $_CONFIG_TMP <<\EOF
8272 #endif /* _MOZILLA_CONFIG_H_ */
8276   # Only write mozilla-config.h when something changes (or it doesn't exist)
8277   if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
8278     rm $_CONFIG_TMP
8279   else
8280     AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
8281     mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
8283     echo ==== $_CONFIG_DEFS_H =================================
8284     cat $_CONFIG_DEFS_H
8285   fi
8287 dnl Probably shouldn't call this manually but we always want the output of DEFS
8288 rm -f confdefs.h.save
8289 mv confdefs.h confdefs.h.save
8290 egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
8291 AC_OUTPUT_MAKE_DEFS()
8292 MOZ_DEFINES=$DEFS
8293 AC_SUBST(MOZ_DEFINES)
8294 rm -f confdefs.h
8295 mv confdefs.h.save confdefs.h
8297 dnl Load the list of Makefiles to generate.
8298 dnl   To add new Makefiles, edit allmakefiles.sh.
8299 dnl   allmakefiles.sh sets the variable, MAKEFILES.
8300 . ${srcdir}/allmakefiles.sh
8301 dnl 
8302 dnl Run a perl script to quickly create the makefiles.
8303 dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
8304 dnl   for the files it cannot handle correctly. This way, config.status
8305 dnl   will handle these files.
8306 dnl If it fails, nothing is set and config.status will run as usual.
8308 dnl This does not change the $MAKEFILES variable.
8310 dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
8312 if test -z "${AS_PERL}"; then
8313 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
8314 else
8315 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
8317 . ./conftest.sh
8318 rm conftest.sh
8320 echo $MAKEFILES > unallmakefiles
8322 AC_OUTPUT($MAKEFILES)
8324 dnl Prevent the regeneration of cairo-features.h forcing rebuilds of gfx stuff
8325 if test "$CAIRO_FEATURES_H"; then
8326   if cmp -s $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig; then
8327     mv -f "$CAIRO_FEATURES_H".orig "$CAIRO_FEATURES_H" 2> /dev/null
8328   else
8329     rm -f "$CAIRO_FEATURES_H".orig 2> /dev/null
8330   fi
8333 dnl ========================================================
8334 dnl = Setup a nice relatively clean build environment for
8335 dnl = sub-configures.
8336 dnl ========================================================
8337 CC="$_SUBDIR_CC" 
8338 CXX="$_SUBDIR_CXX" 
8339 CFLAGS="$_SUBDIR_CFLAGS" 
8340 CPPFLAGS="$_SUBDIR_CPPFLAGS"
8341 CXXFLAGS="$_SUBDIR_CXXFLAGS"
8342 LDFLAGS="$_SUBDIR_LDFLAGS"
8343 HOST_CC="$_SUBDIR_HOST_CC" 
8344 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
8345 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
8348 unset MAKEFILES
8349 unset CONFIG_FILES
8351 if test "$COMPILE_ENVIRONMENT"; then
8352 if test -z "$MOZ_NATIVE_NSPR"; then
8353     ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
8354     if test -z "$MOZ_DEBUG"; then
8355         ac_configure_args="$ac_configure_args --disable-debug"
8356     fi
8357     if test "$MOZ_OPTIMIZE" = "1"; then
8358         ac_configure_args="$ac_configure_args --enable-optimize"
8359     fi
8360     if test "$OS_ARCH" = "WINNT" && test "$NS_TRACE_MALLOC"; then
8361        ac_configure_args="$ac_configure_args --enable-debug --disable-optimize"
8362     fi
8363     if test -n "$HAVE_64BIT_OS"; then
8364         ac_configure_args="$ac_configure_args --enable-64bit"
8365     fi
8366     if test -n "$USE_ARM_KUSER"; then
8367         ac_configure_args="$ac_configure_args --with-arm-kuser"
8368     fi
8369     AC_OUTPUT_SUBDIRS(nsprpub)
8370     ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8373 if test -z "$MOZ_NATIVE_NSPR"; then
8374     # Hack to deal with the fact that we use NSPR_CFLAGS everywhere
8375     AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
8376     if test ! "$VACPP" && test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE"; then
8377        NSPR_LIBS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --libdir=$LIBXUL_DIST/lib --libs`
8378        $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $NSPR_LIBS'" config/autoconf.mk
8379     fi
8380     if test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE" ; then
8381        NSPR_CFLAGS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --includedir=$LIBXUL_DIST/include/nspr --cflags`
8382        $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $NSPR_CFLAGS'" config/autoconf.mk
8383     fi
8384     rm -f config/autoconf.mk.bak
8387 fi # COMPILE_ENVIRONMENT