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