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