Bug 438261, Fx3.0RC3 config, p=joduinn, r=me
[mozilla-1.9.git] / configure.in
blobebde50d770f99841ba30f0173fffeb9e607e5011
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 by default.
1452 dnl ========================================================
1453 MOZ_OS2_HIGH_MEMORY=1
1454 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1455 [  --disable-os2-high-mem  Disable high-memory support on OS/2],
1456     MOZ_OS2_HIGH_MEMORY=,
1457     MOZ_OS2_HIGH_MEMORY=1 )
1458 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1460 dnl ========================================================
1461 dnl System overrides of the defaults for host
1462 dnl ========================================================
1463 case "$host" in
1464 *-beos*)
1465     HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
1466     HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
1467     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1468     ;;
1470 *cygwin*|*mingw*|*mks*|*msvc*|*wince)
1471     if test -n "$_WIN32_MSVC"; then
1472         HOST_AR=lib
1473         HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1474         HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1475         HOST_RANLIB='echo ranlib'
1476     else
1477         HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
1478     fi
1479     HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
1480     HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1481     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1482     HOST_BIN_SUFFIX=.exe
1483     case "$host" in
1484     *mingw*)
1485     dnl MinGW/MSYS does not need CYGWIN_WRAPPER
1486         ;;
1487     *)
1488         CYGWIN_WRAPPER="${srcdir}/build/cygwin-wrapper"
1489         if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
1490             _pwd=`pwd`
1491             CYGWIN_WRAPPER="${_pwd}/${srcdir}/build/cygwin-wrapper"
1492         fi
1493         if test "`${PERL} -v | grep -c cygwin  2>/dev/null`" = 0; then
1494             AS_PERL=1
1495             PERL="${CYGWIN_WRAPPER} $PERL"
1496         fi
1498         if test "`${PYTHON} -c 'import sys; print sys.platform;'`" != "cygwin"; then
1499             PYTHON="${CYGWIN_WRAPPER} $PYTHON"
1500         fi
1501         ;;
1502     esac
1503     ;;
1505 *-darwin*)
1506     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1507     HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1508     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1509     MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
1510     LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL -lobjc'
1511     ;;
1513 *-linux*|*-kfreebsd*-gnu)
1514     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1515     HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1516     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1517     ;;
1519 *os2*)
1520     HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1521     HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1522     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1523     HOST_BIN_SUFFIX=.exe
1524     MOZ_FIX_LINK_PATHS=
1525     ;;
1527 *-osf*)
1528     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1529     HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
1530     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1531     ;;
1534     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1535     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1536     ;;
1537 esac
1539 dnl Get mozilla version from central milestone file
1540 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1542 dnl Get version of various core apps from the version files.
1543 FIREFOX_VERSION=`cat $topsrcdir/browser/config/version.txt`
1544 THUNDERBIRD_VERSION=`cat $topsrcdir/mail/config/version.txt`
1545 SUNBIRD_VERSION=`cat $topsrcdir/calendar/sunbird/config/version.txt`
1546 SEAMONKEY_VERSION=`cat $topsrcdir/suite/config/version.txt`
1548 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1549 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1551 dnl ========================================================
1552 dnl System overrides of the defaults for target
1553 dnl ========================================================
1555 case "$target" in
1556 *-aix*)
1557     AC_DEFINE(AIX)
1558     if test ! "$GNU_CC"; then
1559         if test ! "$HAVE_64BIT_OS"; then
1560             # Compiling with Visual Age C++ object model compat is the
1561             # default. To compile with object model ibm, add 
1562             # AIX_OBJMODEL=ibm to .mozconfig.
1563             if test "$AIX_OBJMODEL" = "ibm"; then
1564                 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1565             else
1566                 AIX_OBJMODEL=compat
1567             fi
1568         else
1569             AIX_OBJMODEL=compat
1570         fi
1571         AC_SUBST(AIX_OBJMODEL)
1572         DSO_LDOPTS='-qmkshrobj=1'
1573         DSO_CFLAGS='-qflag=w:w'
1574         DSO_PIC_CFLAGS=
1575         LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1576         AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
1577         MOZ_FIX_LINK_PATHS=
1578         MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1579         MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1580         if test "$COMPILE_ENVIRONMENT"; then
1581             AC_LANG_SAVE
1582             AC_LANG_CPLUSPLUS
1583             AC_MSG_CHECKING([for VisualAge C++ compiler version >= 5.0.2.0])
1584             AC_TRY_COMPILE([],
1585                 [#if (__IBMCPP__ < 502)
1586                  #error "Bad compiler"
1587                  #endif],
1588                 _BAD_COMPILER=,_BAD_COMPILER=1)
1589             if test -n "$_BAD_COMPILER"; then
1590                 AC_MSG_RESULT([no])    
1591                 AC_MSG_ERROR([VisualAge C++ version 5.0.2.0 or higher is required to build.])
1592             else
1593                 AC_MSG_RESULT([yes])    
1594             fi
1595             AC_LANG_RESTORE
1596             TARGET_COMPILER_ABI="ibmc"
1597             CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1598             CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1599         fi
1600     fi
1601     case "${target_os}" in
1602     aix4.1*)
1603         DLL_SUFFIX='_shr.a'
1604         ;;
1605     esac
1606     if test "$COMPILE_ENVIRONMENT"; then
1607         AC_CHECK_HEADERS(sys/inttypes.h)
1608     fi
1609     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1610     ;;
1612 *-beos*)
1613     no_x=yes
1614     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1615     _PLATFORM_DEFAULT_TOOLKIT="cairo-beos"
1616     DSO_LDOPTS='-nostart'
1617     TK_LIBS='-lbe -lroot'
1618     LIBS="$LIBS -lbe"
1619     if test "$COMPILE_ENVIRONMENT"; then
1620         AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
1621         AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
1622     fi
1623     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
1624     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
1625     _MOZ_USE_RTTI=1
1626     USE_DEPENDENT_LIBS=
1627     MOZ_USER_DIR="Mozilla"
1628     ;;
1630 *-bsdi*)
1631     dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
1632     _PEDANTIC=
1633     _IGNORE_LONG_LONG_WARNINGS=
1634     case $OS_RELEASE in
1635         4.*|5.*)
1636             STRIP="$STRIP -d"
1637             ;;
1638         *)
1639             DSO_CFLAGS=''
1640             DSO_LDOPTS='-r'
1641             _WARNINGS_CFLAGS="-Wall"
1642             _WARNINGS_CXXFLAGS="-Wall"
1643             # The test above doesn't work properly, at least on 3.1.
1644             MKSHLIB_FORCE_ALL=''
1645             MKSHLIB_UNFORCE_ALL=''
1646         ;;
1647     esac
1648     ;;
1650 *-darwin*) 
1651     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1652     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1653     MOZ_OPTIMIZE_FLAGS="-O2"
1654     _PEDANTIC=
1655     CFLAGS="$CFLAGS -fpascal-strings -fno-common"
1656     CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
1657     DLL_SUFFIX=".dylib"
1658     DSO_LDOPTS=''
1659     STRIP="$STRIP -x -S"
1660     _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1661     MOZ_ENABLE_POSTSCRIPT=
1662     TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1663     LDFLAGS="$LDFLAGS -framework Cocoa"
1664     # The ExceptionHandling framework is needed for Objective-C exception
1665     # logging code in nsObjCExceptions.h. Currently we only use that in debug
1666     # builds.
1667     MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"
1668     # set MACOSX to generate lib/mac/MoreFiles/Makefile
1669     MACOSX=1
1671     dnl check for the presence of the -dead_strip linker flag
1672     AC_MSG_CHECKING([for -dead_strip option to ld])
1673     _SAVE_LDFLAGS=$LDFLAGS
1674     LDFLAGS="$LDFLAGS -Wl,-dead_strip"
1675     AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
1676     if test -n "$_HAVE_DEAD_STRIP" ; then
1677         AC_MSG_RESULT([yes])
1678         MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
1679     else
1680         AC_MSG_RESULT([no])
1681     fi
1682     LDFLAGS=$_SAVE_LDFLAGS
1683     ;;
1685 *-freebsd*)
1686     if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` != "elf"; then
1687         DLL_SUFFIX=".so.1.0"
1688         DSO_LDOPTS="-shared"
1689     fi
1690     if test ! "$GNU_CC"; then
1691         DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
1692     fi
1693 # Can't have force w/o an unforce.
1694 #    # Hack for FreeBSD 2.2
1695 #    if test -z "$MKSHLIB_FORCE_ALL"; then
1696 #       MKSHLIB_FORCE_ALL='-Wl,-Bforcearchive'
1697 #       MKSHLIB_UNFORCE_ALL=''
1698 #    fi
1699     ;; 
1701 *-hpux*)
1702     DLL_SUFFIX=".sl"
1703     if test ! "$GNU_CC"; then
1704         DSO_LDOPTS='-b -Wl,+s'
1705         DSO_CFLAGS=""
1706         DSO_PIC_CFLAGS="+Z"
1707         MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
1708         MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
1709         CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1710     else
1711         DSO_LDOPTS='-b -E +s'
1712         MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1713         MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1714     fi
1715     MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
1716     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1717     ;;
1719 *-irix5*)
1720     AC_DEFINE(IRIX)
1721     DSO_LDOPTS='-elf -shared'
1723     if test "$GNU_CC"; then
1724        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1725        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1726        MKSHLIB_FORCE_ALL='-Wl,-all'
1727        MKSHLIB_UNFORCE_ALL='-Wl,-none'
1728        CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1729     else
1730        MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1731        MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1732        MKSHLIB_FORCE_ALL='-all'
1733        MKSHLIB_UNFORCE_ALL='-none'
1734     fi
1735     ;;
1737 *-irix6*)
1738     AC_DEFINE(IRIX)
1739     dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must* 
1740     dnl compile and link using -n32
1741     USE_N32=1
1742     TARGET_COMPILER_ABI=n32
1743     DSO_LDOPTS='-elf -shared'
1744     MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1745     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1746     _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
1747     _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
1748     if test "$GNU_CC"; then
1749        MKSHLIB_FORCE_ALL='-Wl,-all'
1750        MKSHLIB_UNFORCE_ALL='-Wl,-none'
1751        _WARNINGS_CFLAGS="-Wall"
1752        _WARNINGS_CXXFLAGS="-Wall"
1753        CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1754     else
1755        MKSHLIB_FORCE_ALL='-all'
1756        MKSHLIB_UNFORCE_ALL='-none'
1757            AR_LIST="$AR t"
1758            AR_EXTRACT="$AR x"
1759            AR_DELETE="$AR d"
1760            AR='$(CXX) -ar'
1761            AR_FLAGS='-o $@'
1762        CFLAGS="$CFLAGS -woff 3262 -G 4"
1763        CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
1764        if test -n "$USE_N32"; then
1765            ASFLAGS="$ASFLAGS -n32"
1766            CFLAGS="$CFLAGS -n32"
1767            CXXFLAGS="$CXXFLAGS -n32"
1768            LDFLAGS="$LDFLAGS -n32"
1769        fi
1770        AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1771        AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
1772        MOZ_FIX_LINK_PATHS=
1773     fi
1774     if test -z "$GNU_CXX"; then
1775       MIPSPRO_CXX=1
1776     fi
1777     ;;
1779 *-*linux*)
1780     if test "$GNU_CC"; then
1781         GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
1782         case $GCC_VERSION in
1783         4.1.*|4.2.*)
1784             # -Os is broken on gcc 4.1.x and 4.2.x, we need to tweak it to get good results.
1785             MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
1786         esac
1787     fi
1789     TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1790     MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions $MOZ_OPTIMIZE_SIZE_TWEAK"
1791     MOZ_DEBUG_FLAGS="-g -fno-inline"  # most people on linux use gcc/gdb,
1792                                       # and that combo is not yet good at
1793                                       # debugging inlined functions (even
1794                                       # when using DWARF2 as the debugging
1795                                       # format)    
1797     MOZ_MEMORY=1
1799     case "${target_cpu}" in
1800     alpha*)
1801         CFLAGS="$CFLAGS -mieee"
1802         CXXFLAGS="$CXXFLAGS -mieee"
1803     ;;
1804     i*86)
1805         USE_ELF_DYNSTR_GC=1
1806         MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1
1807     ;;
1808     mips*)
1809         CFLAGS="$CFLAGS -Wa,-xgot"
1810         CXXFLAGS="$CXXFLAGS -Wa,-xgot"
1811     ;;
1812     esac
1813     ;;
1815 *-wince*)
1817     MOZ_TOOLS_DIR=`echo $MOZ_TOOLS`
1818     AR_LIST="$AR -list"
1819     AR_EXTRACT="$AR -extract"
1820     AR_DELETE="$AR d"
1821     AR_FLAGS='-OUT:"$@"'
1823     DSO_CFLAGS=
1824     DSO_PIC_CFLAGS=
1825     DLL_SUFFIX=.dll
1826     BIN_SUFFIX='.exe'
1827     RC=rc.exe
1828     # certain versions of cygwin's makedepend barf on the 
1829     # #include <string> vs -I./dist/include/string issue so don't use it
1830     SYSTEM_MAKEDEPEND=
1832     HOST_CC=cl
1833     HOST_CXX=cl
1834     HOST_LD=link
1835     HOST_AR='lib -OUT:$@'
1836     HOST_RANLIB='echo ranlib'
1837     HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
1838         
1839         
1840     WARNINGS_AS_ERRORS='-WX'
1841         MOZ_OPTIMIZE_FLAGS='-O1'
1842     AR_FLAGS='-NOLOGO -OUT:"$@"'
1843     ASM_SUFFIX=asm
1844     CFLAGS="$CFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1845     CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1846     DLL_PREFIX=
1847     DOXYGEN=:
1848     DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
1849     DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
1850     GARBAGE=
1851     IMPORT_LIB_SUFFIX=lib
1852     LIBS="$LIBS"
1853     LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
1854     LIB_PREFIX=
1855     LIB_SUFFIX=lib 
1856     MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1857     MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1858     MKSHLIB_FORCE_ALL=
1859     MKSHLIB_UNFORCE_ALL=
1860     MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1861     MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1862     MOZ_DEBUG_FLAGS='-Zi'
1863     MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
1864     MOZ_FIX_LINK_PATHS=
1865     MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
1866     MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
1867     OBJ_SUFFIX=obj
1868     RANLIB='echo not_ranlib'
1869     STRIP='echo not_strip'
1870     TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
1871     UNZIP=unzip
1872     XARGS=xargs
1873     XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
1874     ZIP=zip
1875     LIBIDL_CFLAGS="-I$MOZ_TOOLS_DIR/include ${GLIB_CFLAGS}"
1876     LIBIDL_LIBS="$MOZ_TOOLS_DIR/lib/libidl-0.6_s.lib $MOZ_TOOLS_DIR/lib/glib-1.2_s.lib"
1877     STATIC_LIBIDL=1
1879     AC_DEFINE(HAVE_SNPRINTF)
1880     AC_DEFINE(_WINDOWS)
1881     AC_DEFINE(_WIN32)
1882     AC_DEFINE(WIN32)
1883     AC_DEFINE(XP_WIN)
1884     AC_DEFINE(XP_WIN32)
1885     AC_DEFINE(HW_THREADS)
1886     AC_DEFINE(STDC_HEADERS)
1887     AC_DEFINE(NEW_H, <new>)
1888     AC_DEFINE(WIN32_LEAN_AND_MEAN)
1890     TARGET_MD_ARCH=win32
1891     _PLATFORM_DEFAULT_TOOLKIT='windows'
1892     BIN_SUFFIX='.exe'
1893     USE_SHORT_LIBNAME=1
1894     MOZ_ENABLE_POSTSCRIPT=
1895     MOZ_USER_DIR="Mozilla"
1899 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
1900     DSO_CFLAGS=
1901     DSO_PIC_CFLAGS=
1902     DLL_SUFFIX=.dll
1903     RC=rc.exe
1904     # certain versions of cygwin's makedepend barf on the 
1905     # #include <string> vs -I./dist/include/string issue so don't use it
1906     SYSTEM_MAKEDEPEND=
1907     if test -n "$GNU_CC"; then
1908         CC="$CC -mno-cygwin"
1909         CXX="$CXX -mno-cygwin"
1910         CPP="$CPP -mno-cygwin"
1911         CFLAGS="$CFLAGS -mms-bitfields"
1912         CXXFLAGS="$CXXFLAGS -mms-bitfields"
1913         DSO_LDOPTS='-shared'
1914         MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1915         MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1916         RC='$(WINDRES)'
1917         # Use temp file for windres (bug 213281)
1918         RCFLAGS='-O coff --use-temp-file'
1919         # mingw doesn't require kernel32, user32, and advapi32 explicitly
1920         LIBS="$LIBS -lgdi32 -lwinmm -lwsock32"
1921         MOZ_JS_LIBS='-L$(LIBXUL_DIST)/lib -ljs$(MOZ_BITS)$(VERSION_NUMBER)'
1922         MOZ_FIX_LINK_PATHS=
1923         DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core'
1924         XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom'
1925         DLL_PREFIX=
1926         IMPORT_LIB_SUFFIX=dll.a
1927     else
1928         TARGET_COMPILER_ABI=msvc
1929         HOST_CC='$(CC)'
1930         HOST_CXX='$(CXX)'
1931         HOST_LD='$(LD)'
1932         AR='lib -NOLOGO -OUT:"$@"'
1933         AR_FLAGS=
1934         RANLIB='echo not_ranlib'
1935         STRIP='echo not_strip'
1936         XARGS=xargs
1937         ZIP=zip
1938         UNZIP=unzip
1939         DOXYGEN=:
1940         GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
1941         OBJ_SUFFIX=obj
1942         LIB_SUFFIX=lib
1943         DLL_PREFIX=
1944         LIB_PREFIX=
1945         IMPORT_LIB_SUFFIX=lib
1946         MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(PDBFILE) $(DSO_LDOPTS)'
1947         MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(PDBFILE) $(DSO_LDOPTS)'
1948         MKSHLIB_FORCE_ALL=
1949         MKSHLIB_UNFORCE_ALL=
1950         DSO_LDOPTS=-SUBSYSTEM:WINDOWS
1951         CFLAGS="$CFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1952         CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1953         LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
1954         MOZ_DEBUG_FLAGS='-Zi'
1955         MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
1956         WARNINGS_AS_ERRORS='-WX'
1957         MOZ_OPTIMIZE_FLAGS='-O1'
1958         MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
1959         MOZ_FIX_LINK_PATHS=
1960         DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
1961         XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
1962         LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
1963         MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1964         MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
1965         if test $_MSC_VER -ge 1400; then
1966             LDFLAGS="$LDFLAGS -NXCOMPAT -SAFESEH"
1967             dnl For profile-guided optimization
1968             PROFILE_GEN_CFLAGS="-GL"
1969             PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
1970             dnl XXX: PGO builds can fail with warnings treated as errors,
1971             dnl specifically "no profile data available" appears to be
1972             dnl treated as an error sometimes. This might be a consequence
1973             dnl of using WARNINGS_AS_ERRORS in some modules, combined
1974             dnl with the linker doing most of the work in the whole-program
1975             dnl optimization/PGO case. I think it's probably a compiler bug,
1976             dnl but we work around it here.
1977             PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
1978             dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
1979             dnl Probably also a compiler bug, but what can you do?
1980             PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
1981             if test -n "$_USE_DYNAMICBASE"; then
1982                LDFLAGS="$LDFLAGS -DYNAMICBASE"
1983             fi
1984         fi
1985     fi
1986     MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,jpeg$(MOZ_BITS)$(VERSION_NUMBER),$(DEPTH)/jpeg)'
1987     MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,png,$(DEPTH)/modules/libimg/png)'
1988     AC_DEFINE(HAVE_SNPRINTF)
1989     AC_DEFINE(_WINDOWS)
1990     AC_DEFINE(_WIN32)
1991     AC_DEFINE(WIN32)
1992     AC_DEFINE(XP_WIN)
1993     AC_DEFINE(XP_WIN32)
1994     AC_DEFINE(HW_THREADS)
1995     AC_DEFINE(STDC_HEADERS)
1996     AC_DEFINE(NEW_H, <new>)
1997     AC_DEFINE(WIN32_LEAN_AND_MEAN)
1998     TARGET_MD_ARCH=win32
1999     _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2000     BIN_SUFFIX='.exe'
2001     USE_SHORT_LIBNAME=1
2002     MOZ_ENABLE_POSTSCRIPT=
2003     MOZ_USER_DIR="Mozilla"
2005     dnl Hardcode to win95 for now - cls
2006     TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2008     dnl set NO_X11 defines here as the general check is skipped on win32
2009     no_x=yes
2010     AC_DEFINE(NO_X11)
2012     dnl MinGW/MSYS doesn't provide or need cygpath
2013     case "$host" in
2014     *-mingw*)
2015         CYGPATH_W=echo
2016         CYGPATH_S=cat
2017         MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2018         ;;
2019     *-cygwin*|*-msvc*|*-mks*)
2020         CYGPATH_W="cygpath -a -w"
2021         CYGPATH_S="sed -e s|\\\\|/|g"
2022         MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
2023         ;;
2024     esac
2025     case "$host" in
2026     *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2028     if test -z "$MOZ_TOOLS"; then
2029         AC_MSG_ERROR([MOZ_TOOLS is not set])
2030     fi
2032     MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd`
2033     if test "$?" != "0" || test -z "$MOZ_TOOLS_DIR"; then
2034         AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2035     fi
2036     if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_DIR/bin:"` = 0; then
2037         AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2038     fi
2039     MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
2041     if test -n "$GLIB_PREFIX"; then
2042         _GLIB_PREFIX_DIR=`cd $GLIB_PREFIX && pwd`
2043         if test "$?" = "0"; then
2044             if test `echo ${PATH}: | grep -ic "$_GLIB_PREFIX_DIR/bin:"` = 0; then
2045                 AC_MSG_ERROR([GLIB_PREFIX must be in your \$PATH.])
2046             fi
2047             _GLIB_PREFIX_DIR=`$CYGPATH_W $_GLIB_PREFIX_DIR | $CYGPATH_S`
2048         else
2049             AC_MSG_ERROR([GLIB_PREFIX is set but "${GLIB_PREFIX}" is not a directory.])
2050         fi
2051     else
2052         _GLIB_PREFIX_DIR=$MOZ_TOOLS_DIR
2053     fi
2054     if test ! -f "${_GLIB_PREFIX_DIR}/include/glib.h"; then
2055         AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/include/glib.h .])
2056     fi
2057     GLIB_CFLAGS="-I${_GLIB_PREFIX_DIR}/include"
2058     if test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"; then
2059         GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"
2060     elif test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"; then
2061         GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"
2062     else
2063         AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/lib/glib-1.2.lib or $_GLIB_PREFIX_DIR/lib/glib-1.2_s.lib])
2064     fi
2066     if test -n "$LIBIDL_PREFIX"; then
2067         _LIBIDL_PREFIX_DIR=`cd $LIBIDL_PREFIX && pwd`
2068         if test "$?" = "0"; then
2069             if test `echo ${PATH}: | grep -ic "$_LIBIDL_PREFIX_DIR/bin:"` = 0; then
2070                 AC_MSG_ERROR([LIBIDL_PREFIX must be in your \$PATH.])
2071             fi
2072             _LIBIDL_PREFIX_DIR=`$CYGPATH_W $_LIBIDL_PREFIX_DIR | $CYGPATH_S`
2073         else
2074             AC_MSG_ERROR([LIBIDL_PREFIX is set but "${LIBIDL_PREFIX}" is not a directory.])
2075         fi
2076     else
2077         _LIBIDL_PREFIX_DIR=$MOZ_TOOLS_DIR
2078     fi        
2079     if test ! -f "${_LIBIDL_PREFIX_DIR}/include/libIDL/IDL.h"; then
2080         AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/include/libIDL/IDL.h .])
2081     fi
2082     LIBIDL_CFLAGS="-I${_LIBIDL_PREFIX_DIR}/include ${GLIB_CFLAGS}"
2083     if test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"; then
2084         LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"
2085         STATIC_LIBIDL=1
2086     elif test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"; then
2087         LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"
2088     else
2089         AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/lib/libidl-0.6.lib or $_LIBIDL_PREFIX_DIR/lib/libidl-0.6_s.lib])
2090     fi
2091     LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2092     ;;
2094     *) # else cross-compiling
2095         if test -n "$GLIB_PREFIX"; then
2096             GLIB_CFLAGS="-I${GLIB_PREFIX}/include"
2097             if test -f "${GLIB_PREFIX}/lib/glib-1.2_s.lib"; then
2098                 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2_s.lib"
2099             elif test -f "${GLIB_PREFIX}/lib/glib-1.2.lib"; then
2100                 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2.lib"
2101             else
2102                 AC_MSG_ERROR([Cannot find $GLIB_PREFIX/lib/glib-1.2.lib or $GLIB_PREFIX/lib/glib-1.2_s.lib])
2103             fi
2104         fi
2105         if test -n "$LIBIDL_PREFIX"; then
2106             LIBIDL_CFLAGS="-I${LIBIDL_PREFIX}/include ${GLIB_CFLAGS}"
2107             if test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"; then
2108                 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"
2109                 STATIC_LIBIDL=1
2110             elif test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"; then
2111                 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"
2112             else
2113                 AC_MSG_ERROR([Cannot find $LIBIDL_PREFIX/lib/libIDL-0.6.lib or $LIBIDL_PREFIX/lib/libIDL-0.6_s.lib])
2114             fi
2115         fi
2116         LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2117         ;;
2118     esac 
2121     case "$host_os" in
2122     cygwin*|msvc*|mks*)
2123         AC_MSG_WARN([Using a cygwin build environment is unsupported. Configure cannot check for the presence of necessary headers. Please upgrade to MozillaBuild; see http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites])
2124         ;;
2126     *)
2127         AC_CHECK_HEADERS(mmintrin.h oleacc.idl)
2129         AC_LANG_SAVE
2130         AC_LANG_CPLUSPLUS
2131         AC_CHECK_HEADERS(atlbase.h wpcapi.h)
2132         AC_LANG_RESTORE
2133         ;;
2134     esac
2136     case "$target" in
2137     i*86-*)
2138         AC_DEFINE(_X86_)
2139         ;;
2140     alpha-*)
2141         AC_DEFINE(_ALPHA_)
2142         ;;
2143     mips-*)
2144         AC_DEFINE(_MIPS_)
2145         ;;
2146     *)
2147         AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2148         ;;
2149     esac
2150     ;;
2152 *-netbsd*)
2153     DSO_CFLAGS=''
2154     CFLAGS="$CFLAGS -Dunix"
2155     CXXFLAGS="$CXXFLAGS -Dunix"
2156     if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2157         DLL_SUFFIX=".so"
2158         DSO_PIC_CFLAGS='-fPIC -DPIC'
2159         DSO_LDOPTS='-shared'
2160         BIN_FLAGS='-Wl,--export-dynamic'
2161     else
2162         DSO_PIC_CFLAGS='-fPIC -DPIC'
2163         DLL_SUFFIX=".so.1.0"
2164         DSO_LDOPTS='-shared'
2165     fi
2166     # This will fail on a.out systems prior to 1.5.1_ALPHA.
2167     MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2168     MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2169     if test "$LIBRUNPATH"; then
2170         DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2171     fi
2172     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2173     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2174     ;;
2176 *-nto*) 
2177         AC_DEFINE(NTO)  
2178         AC_DEFINE(_QNX_SOURCE)
2179         AC_DEFINE(_i386)
2180         OS_TARGET=NTO
2181         WARNINGS_AS_ERRORS=''
2182         MOZ_OPTIMIZE_FLAGS="-O"
2183         MOZ_DEBUG_FLAGS="-gstabs"
2184         USE_PTHREADS=1
2185         _PEDANTIC=
2186         LIBS="$LIBS -lsocket -lstdc++"
2187         _DEFINES_CFLAGS='-Wp,-include -Wp,$(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
2188         _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -Wp,-include -Wp,$(DEPTH)/mozilla-config.h -D_POSIX_C_SOURCE=199506'
2189         if test "$with_x" != "yes"
2190         then
2191                 _PLATFORM_DEFAULT_TOOLKIT="photon"
2192             TK_CFLAGS='-I/usr/include/photon'
2193                 TK_LIBS='-lph'
2194         fi
2195         case "${target_cpu}" in
2196         ppc*)
2197         AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)        
2198         ;;
2199         esac
2200         case "${host_cpu}" in
2201         i*86)
2202         USE_ELF_DYNSTR_GC=1
2203         ;;
2204         esac
2205         ;;
2207 *-openbsd*)
2208     DLL_SUFFIX=".so.1.0"
2209     DSO_CFLAGS=''
2210     DSO_PIC_CFLAGS='-fPIC'
2211     DSO_LDOPTS='-shared -fPIC'
2212     if test "$LIBRUNPATH"; then
2213         DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2214     fi
2215     ;;
2217 *-openvms*) 
2218     AC_DEFINE(NO_PW_GECOS)
2219     AC_DEFINE(NO_UDSOCK)
2220     AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
2221     USE_PTHREADS=1
2222     MKSHLIB_FORCE_ALL='-all'
2223     MKSHLIB_UNFORCE_ALL='-none'
2224     AS='as'
2225     AS_DASH_C_FLAG='-Wc/names=as_is'
2226     AR_FLAGS='c $@'
2227     DSO_LDOPTS='-shared -auto_symvec'
2228     DSO_PIC_CFLAGS=
2229     MOZ_DEBUG_LDFLAGS='-g'
2230     COMPAQ_CXX=1
2231     CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
2232     CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
2233     ;;
2236 *-os2*)
2237     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2238     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2239     AC_DEFINE(XP_OS2)
2240     USE_SHORT_LIBNAME=1
2241     DLL_PREFIX=
2242     LIB_PREFIX=
2243     LIB_SUFFIX=lib
2244     BIN_SUFFIX=".exe"
2245     DLL_SUFFIX=".dll"
2246     IMPORT_LIB_SUFFIX=lib
2247     DSO_PIC_CFLAGS=
2248     TARGET_MD_ARCH=os2
2249     _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2250     MOZ_ENABLE_POSTSCRIPT=
2251     RC=rc.exe
2252     RCFLAGS='-n'
2253     MOZ_USER_DIR="Mozilla"
2255     if test "$MOZTOOLS"; then
2256         MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2257     else
2258         AC_MSG_ERROR([MOZTOOLS is not set])
2259     fi
2261     # EMX/GCC build
2262     if test -n "$GNU_CC"; then
2263         AC_DEFINE(OS2)
2264         AC_DEFINE(XP_OS2_EMX)
2265         AC_DEFINE(OS2EMX_PLAIN_CHAR)
2266         AC_DEFINE(TCPV40HDRS)
2267         AR=emxomfar
2268         AR_FLAGS='r $@'
2269         CFLAGS="$CFLAGS -Zomf"
2270         CXXFLAGS="$CXXFLAGS -Zomf"
2271         DSO_LDOPTS='-Zdll'
2272         BIN_FLAGS='-Zlinker /ST:0x100000'
2273         IMPLIB='emximp -o'
2274         FILTER='emxexp -o'
2275         LDFLAGS='-Zmap'
2276         WARNINGS_AS_ERRORS='-Werror'
2277         MOZ_DEBUG_FLAGS="-g -fno-inline"
2278         MOZ_OPTIMIZE_FLAGS="-O2"
2279         MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2280         MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcomct.lib'
2281         DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
2282         LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2283         if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2284           DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2285           LDFLAGS="$LDFLAGS -Zhigh-mem"
2286           MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2287           AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2288         fi
2290         # GCC for OS/2 currently predefines these, but we don't want them
2291         _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2292         _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2294         AC_CACHE_CHECK(for __declspec(dllexport),
2295            ac_os2_declspec,
2296            [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2297                            [return 0;],
2298                            ac_os2_declspec="yes",
2299                            ac_os2_declspec="no")])
2300         if test "$ac_os2_declspec" = "yes"; then
2301            FILTER='true'
2302            MOZ_OS2_USE_DECLSPEC='1'
2303         fi
2304         
2305     # Visual Age C++ build
2306     elif test "$VACPP" = "yes"; then
2307         MOZ_BUILD_ROOT=`pwd -D`
2308         OBJ_SUFFIX=obj
2309         AR=-ilib
2310         AR_FLAGS='/NOL /NOI /O:$(subst /,\\,$@)'
2311         AR_LIST='/L'
2312         AR_EXTRACT='-*'
2313         AR_DELETE='-'
2314         AS=alp
2315         ASFLAGS='-Mb'
2316         AS_DASH_C_FLAG=''
2317         ASM_SUFFIX=asm
2318         LD='-ilink'
2319         CFLAGS="/Q /qlibansi /Gm+ /Su4 /Mp /Tl9"
2320         CXXFLAGS="/Q /qlibansi /Gm+ /Su4 /Mp /Tl9 /Gx+"
2321         MOZ_DEBUG_FLAGS="/Ti+"
2322         WARNINGS_AS_ERRORS='-WX'
2323         MOZ_OPTIMIZE_FLAGS="/O+ /Gl+ /G5 /qarch=pentium"
2324         LDFLAGS="/NOL /M"
2325         MOZ_DEBUG_LDFLAGS="/DE"
2326         MOZ_OPTIMIZE_LDFLAGS="/OPTFUNC /EXEPACK:2 /PACKCODE /PACKDATA"
2327         DSO_LDOPTS=''
2328         DSO_PIC_CFLAGS=
2329         IMPLIB='implib /NOL /NOI'
2330         FILTER='cppfilt -q -B -P'
2331         AC_DEFINE(NO_ANSI_KEYWORDS)
2332         AC_DEFINE(OS2,4)
2333         AC_DEFINE(_X86_)
2334         AC_DEFINE(XP_OS2_VACPP)
2335         AC_DEFINE(TCPV40HDRS)
2336         AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2337         AC_DEFINE(STDC_HEADERS)
2338         MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2339         MKSHLIB='$(LD) $(DSO_LDOPTS)'
2340         MKCSHLIB='$(LD) $(DSO_LDOPTS)'
2341         MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2342         MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcomct.lib'
2343         DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
2344         LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2345     fi
2346     ;;
2348 alpha*-*-osf*)
2349     if test "$GNU_CC"; then
2350       MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2351       MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2353     else
2354         MOZ_DEBUG_FLAGS='-g'
2355         ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
2356         CFLAGS="$CFLAGS -ieee"
2357         CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee  -ptr $(DIST)/cxx_repository'
2358         DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
2359         DSO_CFLAGS=
2360         DSO_PIC_CFLAGS=
2361         MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2362         MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2363         MKSHLIB_FORCE_ALL='-all'
2364         MKSHLIB_UNFORCE_ALL='-none'
2365         dnl Might fix the libxpcom.so breakage on this platform as well....
2366         AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2367         AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2368     fi
2369     if test -z "$GNU_CXX"; then
2370       COMPAQ_CXX=1
2371     fi
2372     AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2373     ;;
2375 *-qnx*) 
2376     DIRENT_INO=d_stat.st_ino
2377     dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
2378     AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2379     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2380     dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
2381     AC_DEFINE(STDC_HEADERS)
2382     if test "$no_x" = "yes"; then
2383             _PLATFORM_DEFAULT_TOOLKIT='photon'
2384             TK_CFLAGS='-I/usr/nto/include/photon'
2385             TK_LIBS='-lphoton -lphrender'
2386     fi
2387     ;;
2389 *-sco*) 
2390     AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2391     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2392     CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
2393     if test ! "$GNU_CC"; then
2394        DSO_LDOPTS='-G'
2395     fi
2396     ;;
2398 dnl the qsort routine under solaris is faulty
2399 *-solaris*) 
2400     AC_DEFINE(SOLARIS)
2401     TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2402     SYSTEM_MAKEDEPEND=
2403     # $ORIGIN/.. is for shared libraries under components/ to locate shared
2404     # libraries one level up (e.g. libnspr4.so)
2405     LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..'"
2406     MOZ_MEMORY=1
2407     if test -z "$GNU_CC"; then
2408        NS_USE_NATIVE=1
2409        MOZ_FIX_LINK_PATHS='-R $(LIBXUL_DIST)/bin'
2410        AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2412        if test "$CPU_ARCH" != "sparc"; then
2413           CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all"
2414           CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife -norunpath"
2415        else
2416           # Do not use -xbuiltin on SPARC to get around a bug of compiler
2417           CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%none"
2418           CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%none -features=tmplife -norunpath"
2419        fi
2421        LDFLAGS="-xildoff -z lazyload -z combreloc $LDFLAGS"
2422        if test -z "$CROSS_COMPILE" && test -f /usr/lib/ld/map.noexstk; then
2423            _SAVE_LDFLAGS=$LDFLAGS
2424            LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS" 
2425            AC_TRY_LINK([#include <stdio.h>],
2426                        [printf("Hello World\n");],
2427                        ,
2428                        [LDFLAGS=$_SAVE_LDFLAGS])
2429        fi
2430        WARNINGS_AS_ERRORS='-Werror'
2431        MOZ_OPTIMIZE_FLAGS="-xO4"
2432        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2433        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) -G -z muldefs -h $@ -o $@'
2434        MKSHLIB_FORCE_ALL='-z allextract'
2435        MKSHLIB_UNFORCE_ALL='-z defaultextract'
2436        DSO_LDOPTS='-G -z muldefs'
2437        AR_LIST="$AR t"
2438        AR_EXTRACT="$AR x"
2439        AR_DELETE="$AR d"
2440        AR='$(CXX) -xar'
2441        AR_FLAGS='-o $@'
2442        AS='/usr/ccs/bin/as'
2443        ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2444        AS_DASH_C_FLAG=''
2445        TARGET_COMPILER_ABI="sunc"
2446         CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2447         CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2448        AC_MSG_CHECKING([for Forte compiler version >= WS6U2])
2449        AC_LANG_SAVE
2450        AC_LANG_CPLUSPLUS
2451        AC_TRY_COMPILE([],
2452            [#if (__SUNPRO_CC < 0x530)
2453            #error "Denied"
2454            #endif],
2455            _BAD_COMPILER=,_BAD_COMPILER=1)
2456         if test -n "$_BAD_COMPILER"; then
2457             _res="no"
2458             AC_MSG_ERROR([Forte version WS6U2 or higher is required to build. Your compiler version is $CC_VERSION .])
2459         else
2460             _res="yes"
2461         fi
2462         AC_MSG_RESULT([$_res])
2463         AC_LANG_RESTORE
2464     else
2465        ASFLAGS="$ASFLAGS -fPIC"
2466        DSO_LDOPTS='-G'
2467        _WARNINGS_CFLAGS=''
2468        _WARNINGS_CXXFLAGS=''
2469        if test "$OS_RELEASE" = "5.3"; then
2470           AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2471        fi
2472     fi
2473     if test "$OS_RELEASE" = "5.5.1"; then
2474        AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2475     fi
2476     ;;
2478 *-sunos*) 
2479     DSO_LDOPTS='-Bdynamic'
2480     MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2481     MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2482     AC_DEFINE(SUNOS4)
2483     AC_DEFINE(SPRINTF_RETURNS_STRING)
2484     case "$(target_os)" in
2485     sunos4.1*)
2486         DLL_SUFFIX='.so.1.0'
2487         ;;
2488     esac
2489     ;;
2491 *-sysv4.2uw7*) 
2492         NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2493     ;;
2495 *-os2*)
2496     HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2497     ;;
2499 esac
2501 dnl Only one oddball right now (QNX), but this gives us flexibility
2502 dnl if any other platforms need to override this in the future.
2503 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2505 dnl ========================================================
2506 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2507 dnl by now will not have any way to link most binaries (tests
2508 dnl as well as viewer, apprunner, etc.), because some symbols
2509 dnl will be left out of the "composite" .so's by ld as unneeded.
2510 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2511 dnl they can link in the static libs that provide the missing
2512 dnl symbols.
2513 dnl ========================================================
2514 NO_LD_ARCHIVE_FLAGS=
2515 if test -z "$MKSHLIB_FORCE_ALL" || test -z "$MKSHLIB_UNFORCE_ALL"; then
2516     NO_LD_ARCHIVE_FLAGS=1
2518 case "$target" in
2519 *-os2*)
2520     NO_LD_ARCHIVE_FLAGS=
2521     ;;
2522 *-aix4.3*|*-aix5*)
2523     NO_LD_ARCHIVE_FLAGS=
2524     ;;
2525 *-openvms*)
2526     NO_LD_ARCHIVE_FLAGS=
2527     ;;
2528 *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince)
2529     if test -z "$GNU_CC"; then
2530         NO_LD_ARCHIVE_FLAGS=
2531     fi
2532     ;;
2533 esac
2534 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2537 dnl Indicate that platform requires special thread safe 
2538 dnl locking when starting up the OJI JVM 
2539 dnl (see mozilla/modules/oji/src/nsJVMManager.cpp)
2540 dnl ========================================================
2541 case "$target" in
2542     *-hpux*)      
2543         AC_DEFINE(MOZ_OJI_REQUIRE_THREAD_SAFE_ON_STARTUP)
2544         ;;
2545 esac
2547 dnl ========================================================
2548 dnl = Flags to strip unused symbols from .so components
2549 dnl ========================================================
2550 case "$target" in
2551     *-linux*|*-kfreebsd*-gnu)
2552         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2553         ;;
2554     *-solaris*)
2555         if test -z "$GNU_CC"; then
2556          MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2557         else
2558          if test -z "$GCC_USE_GNU_LD"; then
2559           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2560          else
2561           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2562          fi
2563         fi
2564         ;;
2565     *-nto*) 
2566         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2567         ;;
2568     *-darwin*)
2569         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2570         ;;
2571     *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince)
2572         if test -n "$GNU_CC"; then
2573            MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2574         fi
2575         ;;
2576 esac
2578 if test -z "$COMPILE_ENVIRONMENT"; then
2579     SKIP_COMPILER_CHECKS=1
2580     SKIP_LIBRARY_CHECKS=1
2583 if test -z "$SKIP_COMPILER_CHECKS"; then
2584 dnl Checks for typedefs, structures, and compiler characteristics.
2585 dnl ========================================================
2586 AC_LANG_C
2587 AC_HEADER_STDC
2588 AC_C_CONST
2589 AC_TYPE_MODE_T
2590 AC_TYPE_OFF_T
2591 AC_TYPE_PID_T
2592 AC_TYPE_SIZE_T
2593 AC_STRUCT_ST_BLKSIZE
2594 AC_MSG_CHECKING(for siginfo_t)
2595 AC_CACHE_VAL(ac_cv_siginfo_t,
2596  [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2597                   #include <signal.h>],
2598                  [siginfo_t* info;],
2599                  [ac_cv_siginfo_t=true],
2600                  [ac_cv_siginfo_t=false])])
2601 if test "$ac_cv_siginfo_t" = true ; then
2602   AC_DEFINE(HAVE_SIGINFO_T)
2603   AC_MSG_RESULT(yes)
2604 else
2605   AC_MSG_RESULT(no)
2608 dnl Visual Age for os/2 also defines size_t and off_t in certain 
2609 dnl  header files.  These defines make Visual Age use the mozilla
2610 dnl  defines types.
2611 if test "$VACPP" = "yes"; then
2612    AC_DEFINE(__size_t)
2613    AC_DEFINE(__off_t)
2616 dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
2617 dnl ========================================================
2618 AC_MSG_CHECKING(for int16_t)
2619 AC_CACHE_VAL(ac_cv_int16_t,
2620  [AC_TRY_COMPILE([#include <stdio.h>
2621                   #include <sys/types.h>],
2622                  [int16_t foo = 0;],
2623                  [ac_cv_int16_t=true],
2624                  [ac_cv_int16_t=false])])
2625 if test "$ac_cv_int16_t" = true ; then
2626   AC_DEFINE(HAVE_INT16_T)
2627   AC_MSG_RESULT(yes)
2628 else
2629   AC_MSG_RESULT(no)
2631 AC_MSG_CHECKING(for int32_t)
2632 AC_CACHE_VAL(ac_cv_int32_t,
2633  [AC_TRY_COMPILE([#include <stdio.h>
2634                   #include <sys/types.h>],
2635                  [int32_t foo = 0;],
2636                  [ac_cv_int32_t=true],
2637                  [ac_cv_int32_t=false])])
2638 if test "$ac_cv_int32_t" = true ; then
2639   AC_DEFINE(HAVE_INT32_T)
2640   AC_MSG_RESULT(yes)
2641 else
2642   AC_MSG_RESULT(no)
2644 AC_MSG_CHECKING(for int64_t)
2645 AC_CACHE_VAL(ac_cv_int64_t,
2646  [AC_TRY_COMPILE([#include <stdio.h>
2647                   #include <sys/types.h>],
2648                  [int64_t foo = 0;],
2649                  [ac_cv_int64_t=true],
2650                  [ac_cv_int64_t=false])])
2651 if test "$ac_cv_int64_t" = true ; then
2652   AC_DEFINE(HAVE_INT64_T)
2653   AC_MSG_RESULT(yes)
2654 else
2655   AC_MSG_RESULT(no)
2657 AC_MSG_CHECKING(for int64)
2658 AC_CACHE_VAL(ac_cv_int64,
2659  [AC_TRY_COMPILE([#include <stdio.h>
2660                   #include <sys/types.h>],
2661                  [int64 foo = 0;],
2662                  [ac_cv_int64=true],
2663                  [ac_cv_int64=false])])
2664 if test "$ac_cv_int64" = true ; then
2665   AC_DEFINE(HAVE_INT64)
2666   AC_MSG_RESULT(yes)
2667 else
2668   AC_MSG_RESULT(no)
2670 AC_MSG_CHECKING(for uint)
2671 AC_CACHE_VAL(ac_cv_uint,
2672  [AC_TRY_COMPILE([#include <stdio.h>
2673                   #include <sys/types.h>],
2674                  [uint foo = 0;],
2675                  [ac_cv_uint=true],
2676                  [ac_cv_uint=false])])
2677 if test "$ac_cv_uint" = true ; then
2678   AC_DEFINE(HAVE_UINT)
2679   AC_MSG_RESULT(yes)
2680 else
2681   AC_MSG_RESULT(no)
2683 AC_MSG_CHECKING(for uint_t)
2684 AC_CACHE_VAL(ac_cv_uint_t,
2685  [AC_TRY_COMPILE([#include <stdio.h>
2686                   #include <sys/types.h>],
2687                  [uint_t foo = 0;],
2688                  [ac_cv_uint_t=true],
2689                  [ac_cv_uint_t=false])])
2690 if test "$ac_cv_uint_t" = true ; then
2691   AC_DEFINE(HAVE_UINT_T)
2692   AC_MSG_RESULT(yes)
2693 else
2694   AC_MSG_RESULT(no)
2696 AC_MSG_CHECKING(for uint16_t)
2697 AC_CACHE_VAL(ac_cv_uint16_t,
2698  [AC_TRY_COMPILE([#include <stdio.h>
2699                   #include <sys/types.h>],
2700                  [uint16_t foo = 0;],
2701                  [ac_cv_uint16_t=true],
2702                  [ac_cv_uint16_t=false])])
2703 if test "$ac_cv_uint16_t" = true ; then
2704   AC_DEFINE(HAVE_UINT16_T)
2705   AC_MSG_RESULT(yes)
2706 else
2707   AC_MSG_RESULT(no)
2710 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
2711 dnl are defined when compiling C++ but not C.  Since the result of this
2712 dnl test is used only in C++, do it in C++.
2713 AC_LANG_CPLUSPLUS
2715 AC_MSG_CHECKING(for uname.domainname)
2716 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
2717     [AC_TRY_COMPILE([#include <sys/utsname.h>],
2718         [ struct utsname *res; char *domain; 
2719             (void)uname(res);  if (res != 0) { domain = res->domainname; } ],
2720         [ac_cv_have_uname_domainname_field=true],
2721         [ac_cv_have_uname_domainname_field=false])])
2723 if test "$ac_cv_have_uname_domainname_field" = "true"; then
2724     AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
2725     AC_MSG_RESULT(yes)
2726 else
2727     AC_MSG_RESULT(no)
2730 AC_MSG_CHECKING(for uname.__domainname)
2731 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
2732     [AC_TRY_COMPILE([#include <sys/utsname.h>],
2733         [ struct utsname *res; char *domain; 
2734             (void)uname(res);  if (res != 0) { domain = res->__domainname; } ],
2735         [ac_cv_have_uname_us_domainname_field=true],
2736         [ac_cv_have_uname_us_domainname_field=false])])
2738 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
2739     AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
2740     AC_MSG_RESULT(yes)
2741 else
2742     AC_MSG_RESULT(no)
2745 AC_LANG_C
2747 dnl Check for usable wchar_t (2 bytes, unsigned)
2748 dnl (we really don't need the unsignedness check anymore)
2749 dnl ========================================================
2751 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
2752     ac_cv_have_usable_wchar_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_v2="yes",
2758                     ac_cv_have_usable_wchar_v2="no")])
2759 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
2760     AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2761     HAVE_CPP_2BYTE_WCHAR_T=1
2762 else
2763 dnl This is really gcc-only
2764 dnl Do this test using CXX only since some versions of gcc
2765 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
2766 dnl only have short-wchar support for c++.
2767 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
2769     AC_LANG_SAVE
2770     AC_LANG_CPLUSPLUS
2771     _SAVE_CXXFLAGS=$CXXFLAGS
2772     CXXFLAGS="$CXXFLAGS -fshort-wchar"
2774     AC_CACHE_CHECK(for compiler -fshort-wchar option, 
2775         ac_cv_have_usable_wchar_option_v2,
2776         [AC_TRY_COMPILE([#include <stddef.h>
2777                          $configure_static_assert_macros],
2778                         [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2779                          CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2780                         ac_cv_have_usable_wchar_option_v2="yes",
2781                         ac_cv_have_usable_wchar_option_v2="no")])
2783     if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
2784         AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2785         HAVE_CPP_2BYTE_WCHAR_T=1
2786     else    
2787         CXXFLAGS=$_SAVE_CXXFLAGS
2788     fi
2789     AC_LANG_RESTORE
2792 dnl Check for .hidden assembler directive and visibility attribute.
2793 dnl Borrowed from glibc configure.in
2794 dnl ===============================================================
2795 if test "$GNU_CC"; then
2796   AC_CACHE_CHECK(for visibility(hidden) attribute,
2797                  ac_cv_visibility_hidden,
2798                  [cat > conftest.c <<EOF
2799                   int foo __attribute__ ((visibility ("hidden"))) = 1;
2801                   ac_cv_visibility_hidden=no
2802                   if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2803                     if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2804                       ac_cv_visibility_hidden=yes
2805                     fi
2806                   fi
2807                   rm -f conftest.[cs]
2808                  ])
2809   if test "$ac_cv_visibility_hidden" = "yes"; then
2810     AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2812     AC_CACHE_CHECK(for visibility(default) attribute,
2813                    ac_cv_visibility_default,
2814                    [cat > conftest.c <<EOF
2815                     int foo __attribute__ ((visibility ("default"))) = 1;
2817                     ac_cv_visibility_default=no
2818                     if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2819                       if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2820                         ac_cv_visibility_default=yes
2821                       fi
2822                     fi
2823                     rm -f conftest.[cs]
2824                    ])
2825     if test "$ac_cv_visibility_default" = "yes"; then
2826       AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2828       AC_CACHE_CHECK(for visibility pragma support,
2829                      ac_cv_visibility_pragma,
2830                      [cat > conftest.c <<EOF
2831 #pragma GCC visibility push(hidden)
2832                       int foo_hidden = 1;
2833 #pragma GCC visibility push(default)
2834                       int foo_default = 1;
2836                       ac_cv_visibility_pragma=no
2837                       if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2838                         if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
2839                           if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
2840                             ac_cv_visibility_pragma=yes
2841                           fi
2842                         fi
2843                       fi
2844                       rm -f conftest.[cs]
2845                     ])
2846       if test "$ac_cv_visibility_pragma" = "yes"; then
2847         AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
2848                        ac_cv_have_visibility_class_bug,
2849                        [cat > conftest.c <<EOF
2850 #pragma GCC visibility push(hidden)
2851 struct __attribute__ ((visibility ("default"))) TestStruct {
2852   static void Init();
2854 __attribute__ ((visibility ("default"))) void TestFunc() {
2855   TestStruct::Init();
2858                        ac_cv_have_visibility_class_bug=no
2859                        if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2860                          ac_cv_have_visibility_class_bug=yes
2861                        else
2862                          if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
2863                            ac_cv_have_visibility_class_bug=yes
2864                          fi
2865                        fi
2866                        rm -rf conftest.{c,S}
2867                        ])
2869         AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
2870                        ac_cv_have_visibility_builtin_bug,
2871                        [cat > conftest.c <<EOF
2872 #pragma GCC visibility push(hidden)
2873 #pragma GCC visibility push(default)
2874 #include <string.h>
2875 #pragma GCC visibility pop
2877 __attribute__ ((visibility ("default"))) void Func() {
2878   char c[[100]];
2879   memset(c, 0, sizeof(c));
2882                        ac_cv_have_visibility_builtin_bug=no
2883                        if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2884                          ac_cv_have_visibility_builtin_bug=yes
2885                        else
2886                          if test `grep -c "@PLT" conftest.S` = 0; then
2887                            ac_cv_visibility_builtin_bug=yes
2888                          fi
2889                        fi
2890                        rm -f conftest.{c,S}
2891                        ])
2892         if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
2893                 "$ac_cv_have_visibility_class_bug" = "no"; then
2894           VISIBILITY_FLAGS='-I$(DIST)/include/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
2895           WRAP_SYSTEM_INCLUDES=1
2896         else
2897           VISIBILITY_FLAGS='-fvisibility=hidden'
2898         fi # have visibility pragma bug
2899       fi   # have visibility pragma
2900     fi     # have visibility(default) attribute
2901   fi       # have visibility(hidden) attribute
2902 fi         # GNU_CC
2904 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2905 AC_SUBST(VISIBILITY_FLAGS)
2907 dnl Checks for header files.
2908 dnl ========================================================
2909 AC_HEADER_DIRENT
2910 case "$target_os" in
2911 freebsd*)
2912 # for stuff like -lXshm
2913     CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2914     ;;
2915 esac
2916 AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
2917 AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
2918 AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
2919 AC_CHECK_HEADERS(malloc.h)
2920 AC_CHECK_HEADERS(X11/XKBlib.h)
2922 dnl These are all the places some variant of statfs can be hiding.
2923 AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2925 dnl Try for MMX support
2926 dnl NB - later gcc versions require -mmmx for this header to be successfully
2927 dnl included (or another option which implies it, such as -march=pentium-mmx)
2928 AC_CHECK_HEADERS(mmintrin.h)
2930 dnl Check whether the compiler supports the new-style C++ standard
2931 dnl library headers (i.e. <new>) or needs the old "new.h"
2932 AC_LANG_CPLUSPLUS
2933 NEW_H=new.h
2934 AC_CHECK_HEADER(new, [NEW_H=new])
2935 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
2936 AC_LANG_C
2938 AC_ARG_ENABLE(dtrace,
2939               [  --enable-dtrace         build with dtrace support if available (default=no)],
2940               [enable_dtrace="yes"],)
2941 if test "x$enable_dtrace" = "xyes"; then
2942   AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
2943   if test -n "$HAVE_DTRACE"; then
2944       AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
2945   else
2946       AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
2947   fi
2949 AC_SUBST(HAVE_DTRACE)
2951 case $target in
2952 *-aix4.3*|*-aix5*)
2953         ;;
2955         AC_CHECK_HEADERS(sys/cdefs.h)
2956         ;;
2957 esac
2959 dnl Checks for libraries.
2960 dnl ========================================================
2961 case $target in
2962 *-hpux11.*)
2963         ;;
2965         AC_CHECK_LIB(c_r, gethostbyname_r)
2966         ;;
2967 esac
2969 dnl We don't want to link with libdl even if it's present on OS X, since
2970 dnl it's not used and not part of the default installation.
2971 dnl The same goes for BeOS.
2972 dnl We don't want to link against libm or libpthread on Darwin since
2973 dnl they both are just symlinks to libSystem and explicitly linking
2974 dnl against libSystem causes issues when debugging (see bug 299601).
2975 case $target in
2976 *-darwin*)
2977     ;;
2978 *-beos*)
2979     ;;
2981     AC_CHECK_LIB(m, atan)
2982     AC_CHECK_LIB(dl, dlopen,
2983     AC_CHECK_HEADER(dlfcn.h, 
2984         LIBS="-ldl $LIBS"
2985         AC_DEFINE(HAVE_LIBDL)))
2986     ;;
2987 esac
2989 _SAVE_CFLAGS="$CFLAGS"
2990 CFLAGS="$CFLAGS -D_GNU_SOURCE"
2991 AC_CHECK_FUNCS(dladdr)
2992 CFLAGS="$_SAVE_CFLAGS"
2994 if test ! "$GNU_CXX"; then
2996     case $target in
2997     *-aix*)
2998         AC_CHECK_LIB(C_r, demangle)
2999         ;;
3000      *)
3001         AC_CHECK_LIB(C, demangle)
3002         ;;
3003      esac
3005 AC_CHECK_LIB(socket, socket)
3007 XLDFLAGS="$X_LIBS"
3008 XLIBS="$X_EXTRA_LIBS"
3010 dnl ========================================================
3011 dnl Checks for X libraries.
3012 dnl Ordering is important.
3013 dnl Xt is dependent upon SM as of X11R6
3014 dnl ========================================================
3015 if test "$no_x" = "yes"; then
3016     AC_DEFINE(NO_X11)
3017 else
3018     AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3019         XLIBS="-lX11 $XLIBS"
3020         _SAVE_LDFLAGS="$LDFLAGS"
3021         LDFLAGS="$XLDFLAGS $LDFLAGS"
3022         AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3023                 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3024         AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3025                 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3026    
3027      
3028         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3029         unset ac_cv_lib_Xt_XtFree
3030             AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3031             AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS) 
3032         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3033                     [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3034         ])
3036     # AIX needs the motif library linked before libXt to prevent
3037     # crashes in plugins linked against Motif - Bug #98892
3038     case "${target_os}" in
3039     aix*)
3040         XT_LIBS="-lXm $XT_LIBS"
3041         ;;
3042     esac
3044     dnl ========================================================
3045     dnl = Check for XShm
3046     dnl ========================================================
3047     AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3048         $XLIBS $XEXT_LIBS)
3049     AC_CHECK_HEADER(X11/extensions/XShm.h)
3050     if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" &&
3051         test -n "$_HAVE_XSHM_XEXT"; then
3052         AC_DEFINE(HAVE_XSHM)
3053     fi
3055     dnl ========================================================
3056     dnl = Check for XIE
3057     dnl ========================================================
3058     AC_CHECK_LIB(XIE, XieFloGeometry, [MOZ_XIE_LIBS="-lXIE"],,
3059         $XLIBS $XEXT_LIBS)
3060     AC_CHECK_HEADER(X11/extensions/XIElib.h)
3062     if test "$MOZ_XIE_LIBS"; then
3063         dnl ====================================================
3064         dnl = If XIE is present and is desired, turn it on
3065         dnl ====================================================
3066         case $target in
3067             *-hpux*)
3068                 ;;
3069             *)
3070                 HAVE_XIE=1
3071                 ;;
3072         esac
3073     fi
3075         LDFLAGS="$_SAVE_LDFLAGS"
3077     dnl ========================================================
3078     dnl = Check for freetype2 and its functionality
3079     dnl ========================================================
3080     AC_CHECK_FT2(6.1.0, [_HAVE_FREETYPE2=1], [_HAVE_FREETYPE2=])
3082     if test "$_HAVE_FREETYPE2"; then
3083         _SAVE_LIBS="$LIBS"
3084         _SAVE_CFLAGS="$CFLAGS"
3085         LIBS="$LIBS $FT2_LIBS"
3086         CFLAGS="$CFLAGS $FT2_CFLAGS"
3088         AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
3089             ac_cv_member_FT_Bitmap_Size_y_ppem,
3090             [AC_TRY_COMPILE([#include <ft2build.h>
3091                              #include FT_FREETYPE_H],
3092                             [FT_Bitmap_Size s;
3093                              if (sizeof s.y_ppem) return 0;
3094                              return 1],
3095                             ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
3096                             ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
3097         if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
3098             HAVE_FT_BITMAP_SIZE_Y_PPEM=1
3099         else
3100             HAVE_FT_BITMAP_SIZE_Y_PPEM=0
3101         fi
3102         AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
3103                            $HAVE_FT_BITMAP_SIZE_Y_PPEM,
3104                            [FT_Bitmap_Size structure includes y_ppem field])
3106         AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
3108         LIBS="$_SAVE_LIBS"
3109         CFLAGS="$_SAVE_CFLAGS"
3110     fi
3112 fi # $no_x
3114 AC_SUBST(XCFLAGS)
3115 AC_SUBST(XLDFLAGS)
3116 AC_SUBST(XLIBS)
3117 AC_SUBST(XT_LIBS)
3119 dnl ========================================================
3120 dnl = pthread support
3121 dnl = Start by checking whether the system support pthreads
3122 dnl ========================================================
3123 case "$target_os" in
3124 darwin*)
3125     USE_PTHREADS=1
3126     ;;
3128     MOZ_CHECK_PTHREADS(pthreads,
3129         USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3130         MOZ_CHECK_PTHREADS(pthread,
3131             USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3132             MOZ_CHECK_PTHREADS(c_r,
3133                 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3134                 MOZ_CHECK_PTHREADS(c,
3135                     USE_PTHREADS=1
3136                 )
3137             )
3138         )
3139     )
3140     ;;
3141 esac
3143 dnl ========================================================
3144 dnl Check the command line for --with-pthreads 
3145 dnl ========================================================
3146 MOZ_ARG_WITH_BOOL(pthreads,
3147 [  --with-pthreads         Force use of system pthread library with NSPR ],
3148 [ if test "$USE_PTHREADS"x = x; then
3149     AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3150 fi],
3151     USE_PTHREADS=
3152     _PTHREAD_LDFLAGS=
3155 dnl ========================================================
3156 dnl Do the platform specific pthread hackery
3157 dnl ========================================================
3158 if test "$USE_PTHREADS"x != x
3159 then
3160         dnl
3161         dnl See if -pthread is supported.
3162         dnl
3163         rm -f conftest*
3164         ac_cv_have_dash_pthread=no
3165         AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3166         echo 'int main() { return 0; }' | cat > conftest.c
3167         ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3168         if test $? -eq 0; then
3169                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3170                         ac_cv_have_dash_pthread=yes
3171                 case "$target_os" in
3172                 freebsd*)
3173 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3174                 ;;
3175                 *)
3176                             CFLAGS="$CFLAGS -pthread"
3177                             CXXFLAGS="$CXXFLAGS -pthread"
3178                 ;;
3179                 esac
3180                 fi
3181         fi
3182         rm -f conftest*
3183     AC_MSG_RESULT($ac_cv_have_dash_pthread)
3185         dnl
3186         dnl See if -pthreads is supported.
3187         dnl
3188     ac_cv_have_dash_pthreads=no
3189     if test "$ac_cv_have_dash_pthread" = "no"; then
3190             AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3191         echo 'int main() { return 0; }' | cat > conftest.c
3192             ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3193         if test $? -eq 0; then
3194                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3195                             ac_cv_have_dash_pthreads=yes
3196                             CFLAGS="$CFLAGS -pthreads"
3197                             CXXFLAGS="$CXXFLAGS -pthreads"
3198                     fi
3199             fi
3200             rm -f conftest*
3201         AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3202     fi
3204         case "$target" in
3205             *-*-freebsd*)
3206                         AC_DEFINE(_REENTRANT)
3207                         AC_DEFINE(_THREAD_SAFE)
3208                         dnl -pthread links in -lc_r, so don't specify it explicitly.
3209                         if test "$ac_cv_have_dash_pthread" = "yes"; then
3210                                 _PTHREAD_LDFLAGS="-pthread"
3211                         else
3212                                 _PTHREAD_LDFLAGS="-lc_r"
3213                         fi
3214                         ;;
3216             *-*-openbsd*|*-*-bsdi*)
3217                         AC_DEFINE(_REENTRANT)
3218                         AC_DEFINE(_THREAD_SAFE)
3219                         dnl -pthread links in -lc_r, so don't specify it explicitly.
3220                         if test "$ac_cv_have_dash_pthread" = "yes"; then
3221                 _PTHREAD_LDFLAGS="-pthread"
3222                         fi
3223                         ;;
3225             *-*-linux*|*-*-kfreebsd*-gnu)
3226                         AC_DEFINE(_REENTRANT) 
3227                         ;;
3229             *-*-nto*) 
3230                         AC_DEFINE(_REENTRANT) 
3231                         ;;
3233             *-aix4.3*|*-aix5*)
3234                         AC_DEFINE(_REENTRANT) 
3235                         ;;
3237             *-hpux11.*)
3238                         AC_DEFINE(_REENTRANT) 
3239                         ;;
3241             alpha*-*-osf*)
3242                         AC_DEFINE(_REENTRANT)
3243                         ;;
3245             *-*-solaris*) 
3246                         AC_DEFINE(_REENTRANT) 
3247                         if test ! "$GNU_CC"; then
3248                                 CFLAGS="$CFLAGS -mt" 
3249                                 CXXFLAGS="$CXXFLAGS -mt" 
3250                         fi
3251                         ;;
3252         esac
3253     LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3256 dnl ========================================================
3257 dnl See if mmap sees writes
3258 dnl For cross compiling, just define it as no, which is a safe default
3259 dnl ========================================================
3260 AC_MSG_CHECKING(whether mmap() sees write()s)
3262 changequote(,)
3263 mmap_test_prog='
3264     #include <stdlib.h>
3265     #include <unistd.h>
3266     #include <sys/mman.h>
3267     #include <sys/types.h>
3268     #include <sys/stat.h>
3269     #include <fcntl.h>
3271     char fname[] = "conftest.file";
3272     char zbuff[1024]; /* Fractional page is probably worst case */
3274     int main() {
3275         char *map;
3276         int fd;
3277         int i;
3278         unlink(fname);
3279         fd = open(fname, O_RDWR | O_CREAT, 0660);
3280         if(fd<0) return 1;
3281         unlink(fname);
3282         write(fd, zbuff, sizeof(zbuff));
3283         lseek(fd, 0, SEEK_SET);
3284         map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
3285         if(map==(char*)-1) return 2;
3286         for(i=0; fname[i]; i++) {
3287             int rc = write(fd, &fname[i], 1);
3288             if(map[i]!=fname[i]) return 4;
3289         }
3290         return 0;
3291     }
3293 changequote([,])
3295 AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
3297 AC_MSG_RESULT("$result")
3299 if test "$result" = "no"; then
3300     AC_DEFINE(MMAP_MISSES_WRITES)
3304 dnl Checks for library functions.
3305 dnl ========================================================
3306 AC_PROG_GCC_TRADITIONAL
3307 AC_FUNC_MEMCMP
3308 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 truncate64 statvfs64)
3309 AC_CHECK_FUNCS(flockfile getpagesize)
3311 dnl localtime_r and strtok_r are only present on MacOS version 10.2 and higher
3312 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100200"; then
3313   AC_CHECK_FUNCS(localtime_r strtok_r)
3316 dnl check for wcrtomb/mbrtowc
3317 dnl =======================================================================
3318 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3319 AC_LANG_SAVE
3320 AC_LANG_CPLUSPLUS
3321 AC_CACHE_CHECK(for wcrtomb,
3322     ac_cv_have_wcrtomb,
3323     [AC_TRY_LINK([#include <wchar.h>],
3324                  [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3325                  ac_cv_have_wcrtomb="yes",
3326                  ac_cv_have_wcrtomb="no")])
3327 if test "$ac_cv_have_wcrtomb" = "yes"; then
3328     AC_DEFINE(HAVE_WCRTOMB)
3330 AC_CACHE_CHECK(for mbrtowc,
3331     ac_cv_have_mbrtowc,
3332     [AC_TRY_LINK([#include <wchar.h>],
3333                  [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3334                  ac_cv_have_mbrtowc="yes",
3335                  ac_cv_have_mbrtowc="no")])
3336 if test "$ac_cv_have_mbrtowc" = "yes"; then
3337     AC_DEFINE(HAVE_MBRTOWC)
3339 AC_LANG_RESTORE
3342 AC_CACHE_CHECK(
3343     [for res_ninit()],
3344     ac_cv_func_res_ninit,
3345     [AC_TRY_LINK([
3346         #ifdef linux
3347         #define _BSD_SOURCE 1
3348         #endif
3349         #include <resolv.h>
3350         ],
3351         [int foo = res_ninit(&_res);],
3352         [ac_cv_func_res_ninit=yes],
3353         [ac_cv_func_res_ninit=no])
3354     ])
3356 if test "$ac_cv_func_res_ninit" = "yes"; then
3357     AC_DEFINE(HAVE_RES_NINIT)
3358 dnl must add the link line we do something as foolish as this... dougt
3359 dnl else
3360 dnl    AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3361 dnl        AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3364 AC_LANG_CPLUSPLUS
3365 AC_CACHE_CHECK(
3366     [for gnu_get_libc_version()],
3367     ac_cv_func_gnu_get_libc_version,
3368     [AC_TRY_LINK([
3369         #ifdef HAVE_GNU_LIBC_VERSION_H
3370         #include <gnu/libc-version.h>
3371         #endif
3372         ],
3373         [const char *glibc_version = gnu_get_libc_version();],
3374         [ac_cv_func_gnu_get_libc_version=yes],
3375         [ac_cv_func_gnu_get_libc_version=no] 
3376         )]
3377     )
3379 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3380     AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3383 case $target_os in
3384     os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|beos*)
3385         ;;
3386     *)
3387     
3388 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3389     AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3390         AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3391 _SAVE_LIBS=$LIBS
3392 LIBS="$LIBS $_ICONV_LIBS"
3393 AC_CACHE_CHECK(
3394     [for iconv()],
3395     ac_cv_func_iconv,
3396     [AC_TRY_LINK([
3397         #include <stdlib.h>
3398         #include <iconv.h>
3399         ],
3400         [
3401             iconv_t h = iconv_open("", "");
3402             iconv(h, NULL, NULL, NULL, NULL);
3403             iconv_close(h);
3404         ],
3405         [ac_cv_func_iconv=yes],
3406         [ac_cv_func_iconv=no] 
3407         )]
3408     )
3409 if test "$ac_cv_func_iconv" = "yes"; then
3410     AC_DEFINE(HAVE_ICONV)
3411     DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3412     LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3413     LIBICONV="$_ICONV_LIBS"
3414     AC_CACHE_CHECK(
3415         [for iconv() with const input],
3416         ac_cv_func_const_iconv,
3417         [AC_TRY_COMPILE([
3418             #include <stdlib.h>
3419             #include <iconv.h>
3420             ],
3421             [
3422                 const char *input = "testing";
3423                 iconv_t h = iconv_open("", "");
3424                 iconv(h, &input, NULL, NULL, NULL);
3425                 iconv_close(h);
3426             ],
3427             [ac_cv_func_const_iconv=yes],
3428             [ac_cv_func_const_iconv=no] 
3429             )]
3430         )
3431     if test "$ac_cv_func_const_iconv" = "yes"; then
3432         AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3433     fi
3435 LIBS=$_SAVE_LIBS
3437     ;;
3438 esac
3440 AM_LANGINFO_CODESET
3442 AC_LANG_C
3444 dnl **********************
3445 dnl *** va_copy checks ***
3446 dnl **********************
3447 dnl we currently check for all three va_copy possibilities, so we get
3448 dnl all results in config.log for bug reports.
3449 AC_MSG_CHECKING(for an implementation of va_copy())
3450 AC_CACHE_VAL(ac_cv_va_copy,[
3451     AC_TRY_RUN([
3452         #include <stdarg.h>
3453         void f (int i, ...) {
3454             va_list args1, args2;
3455             va_start (args1, i);
3456             va_copy (args2, args1);
3457             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3458                 exit (1);
3459             va_end (args1); va_end (args2);
3460         }
3461         int main() { f (0, 42); return 0; }],
3462         ac_cv_va_copy=yes,
3463         ac_cv_va_copy=no,
3464         ac_cv_va_copy=no
3465     )
3467 AC_MSG_RESULT($ac_cv_va_copy)
3468 AC_MSG_CHECKING(for an implementation of __va_copy())
3469 AC_CACHE_VAL(ac_cv___va_copy,[
3470     AC_TRY_RUN([
3471         #include <stdarg.h>
3472         void f (int i, ...) {
3473             va_list args1, args2;
3474             va_start (args1, i);
3475             __va_copy (args2, args1);
3476             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3477                 exit (1);
3478             va_end (args1); va_end (args2);
3479         }
3480         int main() { f (0, 42); return 0; }],
3481         ac_cv___va_copy=yes,
3482         ac_cv___va_copy=no,
3483         ac_cv___va_copy=no
3484     )
3486 AC_MSG_RESULT($ac_cv___va_copy)
3487 AC_MSG_CHECKING(whether va_lists can be copied by value)
3488 AC_CACHE_VAL(ac_cv_va_val_copy,[
3489     AC_TRY_RUN([
3490         #include <stdarg.h>
3491         void f (int i, ...) {
3492             va_list args1, args2;
3493             va_start (args1, i);
3494             args2 = args1;
3495             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3496                 exit (1);
3497             va_end (args1); va_end (args2);
3498         }
3499         int main() { f (0, 42); return 0; }],
3500         ac_cv_va_val_copy=yes,
3501         ac_cv_va_val_copy=no,
3502         ac_cv_va_val_copy=yes
3503     )
3505 if test "x$ac_cv_va_copy" = "xyes"; then
3506     AC_DEFINE(VA_COPY, va_copy)
3507     AC_DEFINE(HAVE_VA_COPY)
3508 elif test "x$ac_cv___va_copy" = "xyes"; then
3509     AC_DEFINE(VA_COPY, __va_copy)
3510     AC_DEFINE(HAVE_VA_COPY)
3513 if test "x$ac_cv_va_val_copy" = "xno"; then
3514    AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3516 AC_MSG_RESULT($ac_cv_va_val_copy)
3518 dnl Check for dll-challenged libc's.
3519 dnl This check is apparently only needed for Linux.
3520 case "$target" in
3521         *-linux*)
3522             dnl ===================================================================
3523             _curdir=`pwd`
3524             export _curdir
3525             rm -rf conftest* _conftest
3526             mkdir _conftest
3527             cat >> conftest.C <<\EOF
3528 #include <stdio.h>
3529 #include <link.h>
3530 #include <dlfcn.h>
3531 #ifdef _dl_loaded
3532 void __dump_link_map(void) {
3533   struct link_map *map = _dl_loaded;
3534   while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
3536 int main() {
3537   dlopen("./conftest1.so",RTLD_LAZY);
3538   dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
3539   dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
3540   dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
3541   __dump_link_map();
3543 #else
3544 /* _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).*/
3545 int main() { printf("./conftest1.so\n"); }
3546 #endif
3549             $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
3551             cat >> conftest1.C <<\EOF
3552 #include <stdio.h>
3553 void foo(void) {printf("foo in dll called\n");}
3555             ${CXX-g++} -fPIC -c -g conftest1.C
3556             ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
3557             ${CXX-g++} -g conftest.C -o conftest -ldl
3558             cp -f conftest1.so conftest _conftest
3559             cd _conftest
3560             if test `./conftest | grep conftest1.so | wc -l` -gt 1
3561             then
3562                 echo
3563                 echo "*** Your libc has a bug that can result in loading the same dynamic"
3564                 echo "*** library multiple times.  This bug is known to be fixed in glibc-2.0.7-32"
3565                 echo "*** or later.  However, if you choose not to upgrade, the only effect"
3566                 echo "*** will be excessive memory usage at runtime."
3567                 echo
3568             fi
3569             cd ${_curdir}
3570             rm -rf conftest* _conftest
3571             dnl ===================================================================
3572             ;;
3573 esac
3575 dnl ===================================================================
3576 dnl ========================================================
3577 dnl By default, turn rtti and exceptions off on g++/egcs
3578 dnl ========================================================
3579 if test "$GNU_CXX"; then
3581   AC_MSG_CHECKING(for C++ exceptions flag)
3583   dnl They changed -f[no-]handle-exceptions to -f[no-]exceptions in g++ 2.8
3584   AC_CACHE_VAL(ac_cv_cxx_exceptions_flags,
3585   [echo "int main() { return 0; }" | cat > conftest.C
3587   ${CXX-g++} ${CXXFLAGS} -c -fno-handle-exceptions conftest.C > conftest.out 2>&1
3589   if egrep "warning.*renamed" conftest.out >/dev/null; then
3590     ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-exceptions
3591   else
3592     ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-handle-exceptions
3593   fi
3595   rm -f conftest*])
3597   AC_MSG_RESULT($ac_cv_cxx_exceptions_flags)
3598   _MOZ_EXCEPTIONS_FLAGS_OFF=$ac_cv_cxx_exceptions_flags
3599   _MOZ_EXCEPTIONS_FLAGS_ON=`echo $ac_cv_cxx_exceptions_flags | sed 's|no-||'`
3602 dnl ========================================================
3603 dnl Put your C++ language/feature checks below
3604 dnl ========================================================
3605 AC_LANG_CPLUSPLUS
3607 HAVE_GCC3_ABI=
3608 if test "$GNU_CC"; then
3609   AC_CACHE_CHECK(for gcc 3.0 ABI,
3610       ac_cv_gcc_three_abi,
3611       [AC_TRY_COMPILE([],
3612                       [
3613 #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
3614   return 0;
3615 #else
3616 #error Not gcc3.
3617 #endif
3618                       ],
3619                       ac_cv_gcc_three_abi="yes",
3620                       ac_cv_gcc_three_abi="no")])
3621   if test "$ac_cv_gcc_three_abi" = "yes"; then
3622       TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc3}"
3623       HAVE_GCC3_ABI=1
3624   else
3625       TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc2}"
3626   fi
3628 AC_SUBST(HAVE_GCC3_ABI)
3631 AC_CACHE_CHECK(for C++ \"explicit\" keyword,
3632                ac_cv_cpp_explicit,
3633                [AC_TRY_COMPILE(class X {
3634                                public: explicit X(int i) : i_(i) {}
3635                                private: int i_;
3636                                };,
3637                                X x(3);,
3638                                ac_cv_cpp_explicit=yes,
3639                                ac_cv_cpp_explicit=no)])
3640 if test "$ac_cv_cpp_explicit" = yes ; then
3641    AC_DEFINE(HAVE_CPP_EXPLICIT)
3644 AC_CACHE_CHECK(for C++ \"typename\" keyword,
3645                ac_cv_cpp_typename,
3646                [AC_TRY_COMPILE(class param {
3647                                public:
3648                                    typedef unsigned long num_type;
3649                                };
3651                                template <class T> class tplt {
3652                                public:
3653                                    typedef typename T::num_type t_num_type;
3654                                    t_num_type foo(typename T::num_type num) {
3655                                        return num;
3656                                    }
3657                                };,
3658                                tplt<param> A;
3659                                A.foo(0);,
3660                                ac_cv_cpp_typename=yes,
3661                                ac_cv_cpp_typename=no)])
3662 if test "$ac_cv_cpp_typename" = yes ; then
3663    AC_DEFINE(HAVE_CPP_TYPENAME)
3666 dnl Check for support of modern template specialization syntax
3667 dnl Test code and requirement from scc@netscape.com.
3668 dnl Autoconf cut-and-paste job by waterson@netscape.com
3669 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
3670                ac_cv_cpp_modern_specialize_template_syntax,
3671                [AC_TRY_COMPILE(template <class T> struct X { int a; };
3672                                class Y {};
3673                                template <> struct X<Y> { double a; };,
3674                                X<int> int_x;
3675                                X<Y> y_x;,
3676                                ac_cv_cpp_modern_specialize_template_syntax=yes,
3677                                ac_cv_cpp_modern_specialize_template_syntax=no)])
3678 if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
3679   AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
3683 dnl Some compilers support only full specialization, and some don't.
3684 AC_CACHE_CHECK(whether partial template specialization works,
3685                ac_cv_cpp_partial_specialization,
3686                [AC_TRY_COMPILE(template <class T> class Foo {};
3687                                template <class T> class Foo<T*> {};,
3688                                return 0;,
3689                                ac_cv_cpp_partial_specialization=yes,
3690                                ac_cv_cpp_partial_specialization=no)])
3691 if test "$ac_cv_cpp_partial_specialization" = yes ; then
3692   AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
3695 dnl Some compilers have limited support for operators with templates;
3696 dnl specifically, it is necessary to define derived operators when a base
3697 dnl class's operator declaration should suffice.
3698 AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
3699                ac_cv_need_derived_template_operators,
3700                [AC_TRY_COMPILE([template <class T> class Base { };
3701                                 template <class T>
3702                                 Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
3703                                 template <class T> class Derived : public Base<T> { };],
3704                                [Derived<char> a, b;
3705                                 Base<char> c = a + b;
3706                                 return 0;],
3707                                ac_cv_need_derived_template_operators=no,
3708                                ac_cv_need_derived_template_operators=yes)])
3709 if test "$ac_cv_need_derived_template_operators" = yes ; then
3710   AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
3714 dnl Some compilers have trouble detecting that a template class
3715 dnl that derives from another template is actually an instance
3716 dnl of the base class. This test checks for that.
3717 AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
3718                ac_cv_need_cpp_template_cast_to_base,
3719                [AC_TRY_COMPILE([template <class T> class Base { };
3720                                 template <class T> class Derived : public Base<T> { };
3721                                 template <class T> int foo(const Base<T>&) { return 0; }],
3722                                [Derived<char> bar; return foo(bar);],
3723                                ac_cv_need_cpp_template_cast_to_base=no,
3724                                ac_cv_need_cpp_template_cast_to_base=yes)])
3725 if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
3726   AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
3729 dnl Some compilers have trouble resolving the ambiguity between two
3730 dnl functions whose arguments differ only by cv-qualifications.
3731 AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
3732                ac_cv_can_resolve_const_ambiguity,
3733                [AC_TRY_COMPILE([
3734                                 template <class T> class ptrClass {
3735                                   public: T* ptr;
3736                                 };
3738                                 template <class T> T* a(ptrClass<T> *arg) {
3739                                   return arg->ptr;
3740                                 }
3742                                 template <class T>
3743                                 const T* a(const ptrClass<T> *arg) {
3744                                   return arg->ptr;
3745                                 }
3746                                ],
3747                                [ ptrClass<int> i;
3748                                  a(&i); ],
3749                                ac_cv_can_resolve_const_ambiguity=yes,
3750                                ac_cv_can_resolve_const_ambiguity=no)])
3751 if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
3752   AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
3756 dnl We don't do exceptions on unix.  The only reason this used to be here
3757 dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses 
3758 dnl exceptions.  But, we turn exceptions off by default and this test breaks.
3759 dnl So im commenting this out until someone writes some artificial 
3760 dnl intelligence to detect not only if the compiler has exceptions, but if 
3761 dnl they are enabled as well.
3762 dnl 
3763 dnl AC_CACHE_CHECK(for C++ \"exceptions\",
3764 dnl                ac_cv_cpp_exceptions,
3765 dnl                [AC_TRY_COMPILE(class X { public: X() {} };
3766 dnl                                static void F() { throw X(); },
3767 dnl                                try { F(); } catch(X & e) { },
3768 dnl                                ac_cv_cpp_exceptions=yes,
3769 dnl                                ac_cv_cpp_exceptions=no)])
3770 dnl if test $ac_cv_cpp_exceptions = yes ; then
3771 dnl    AC_DEFINE(HAVE_CPP_EXCEPTIONS)
3772 dnl fi
3774 dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
3775 dnl supports it well enough to allow us to use it to change access, but not
3776 dnl to resolve ambiguity. The next two tests determine how well the |using|
3777 dnl keyword is supported.
3779 dnl Check to see if we can change access with |using|.  Test both a
3780 dnl legal and an illegal example.
3781 AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
3782                ac_cv_cpp_access_changing_using2,
3783                [AC_TRY_COMPILE(
3784                    class A { protected: int foo() { return 0; } };
3785                    class B : public A { public: using A::foo; };,
3786                    B b; return b.foo();,
3787                    [AC_TRY_COMPILE(
3788                        class A { public: int foo() { return 1; } };
3789                        class B : public A { private: using A::foo; };,
3790                        B b; return b.foo();,
3791                        ac_cv_cpp_access_changing_using2=no,
3792                        ac_cv_cpp_access_changing_using2=yes)],
3793                    ac_cv_cpp_access_changing_using2=no)])
3794 if test "$ac_cv_cpp_access_changing_using2" = yes ; then
3795    AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
3798 dnl Check to see if we can resolve ambiguity with |using|.
3799 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3800                ac_cv_cpp_ambiguity_resolving_using,
3801                [AC_TRY_COMPILE(class X { 
3802                                  public: int go(const X&) {return 3;}
3803                                          int jo(const X&) {return 3;}
3804                                };
3805                                class Y : public X {
3806                                  public:  int go(int) {return 2;}
3807                                           int jo(int) {return 2;}
3808                                           using X::jo;
3809                                  private: using X::go;
3810                                };,
3811                                X x; Y y; y.jo(x);,
3812                                ac_cv_cpp_ambiguity_resolving_using=yes,
3813                                ac_cv_cpp_ambiguity_resolving_using=no)])
3814 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3815    AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3818 dnl Check to see if the |std| namespace is supported. If so, we'll want
3819 dnl to qualify any standard library calls with "std::" to ensure that
3820 dnl those functions can be resolved.
3821 AC_CACHE_CHECK(for \"std::\" namespace,
3822                ac_cv_cpp_namespace_std,
3823                [AC_TRY_COMPILE([#include <algorithm>],
3824                                [return std::min(0, 1);],
3825                                ac_cv_cpp_namespace_std=yes,
3826                                ac_cv_cpp_namespace_std=no)])
3827 if test "$ac_cv_cpp_namespace_std" = yes ; then
3828    AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
3831 dnl Older compilers are overly ambitious with respect to using the standard
3832 dnl template library's |operator!=()| when |operator==()| is defined. In
3833 dnl which case, defining |operator!=()| in addition to |operator==()| causes
3834 dnl ambiguity at compile-time. This test checks for that case.
3835 AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
3836                ac_cv_cpp_unambiguous_std_notequal,
3837                [AC_TRY_COMPILE([#include <algorithm>
3838                                 struct T1 {};
3839                                 int operator==(const T1&, const T1&) { return 0; }
3840                                 int operator!=(const T1&, const T1&) { return 0; }],
3841                                [T1 a,b; return a != b;],
3842                                ac_cv_cpp_unambiguous_std_notequal=unambiguous,
3843                                ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
3844 if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
3845   AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
3849 AC_CACHE_CHECK(for C++ reinterpret_cast,
3850                ac_cv_cpp_reinterpret_cast,
3851                [AC_TRY_COMPILE(struct X { int i; };
3852                                struct Y { int i; };,
3853                                X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
3854                                ac_cv_cpp_reinterpret_cast=yes,
3855                                ac_cv_cpp_reinterpret_cast=no)])
3856 if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
3857    AC_DEFINE(HAVE_CPP_NEW_CASTS)
3860 dnl See if a dynamic_cast to void* gives the most derived object.
3861 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
3862                ac_cv_cpp_dynamic_cast_void_ptr,
3863                [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
3864                             class Y { int j; public: virtual ~Y() { } };
3865                             class Z : public X, public Y { int k; };
3867                             int main() {
3868                                  Z mdo;
3869                                  X *subx = (X*)&mdo;
3870                                  Y *suby = (Y*)&mdo;
3871                                  return !((((void*)&mdo != (void*)subx) &&
3872                                            ((void*)&mdo == dynamic_cast<void*>(subx))) ||
3873                                           (((void*)&mdo != (void*)suby) &&
3874                                            ((void*)&mdo == dynamic_cast<void*>(suby))));
3875                             }],
3876                            ac_cv_cpp_dynamic_cast_void_ptr=yes,
3877                            ac_cv_cpp_dynamic_cast_void_ptr=no,
3878                            ac_cv_cpp_dynamic_cast_void_ptr=no)])
3879 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
3880    AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
3884 dnl note that this one is reversed - if the test fails, then
3885 dnl we require implementations of unused virtual methods. Which
3886 dnl really blows because it means we'll have useless vtable
3887 dnl bloat.
3888 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
3889                ac_cv_cpp_unused_required,
3890                [AC_TRY_LINK(class X {private: virtual void never_called();};,
3891                                X x;,
3892                                ac_cv_cpp_unused_required=no,
3893                                ac_cv_cpp_unused_required=yes)])
3894 if test "$ac_cv_cpp_unused_required" = yes ; then
3895    AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
3899 dnl Some compilers have trouble comparing a constant reference to a templatized
3900 dnl class to zero, and require an explicit operator==() to be defined that takes
3901 dnl an int. This test separates the strong from the weak.
3903 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
3904                ac_cv_trouble_comparing_to_zero,
3905                [AC_TRY_COMPILE([#include <algorithm>
3906                                 template <class T> class Foo {};
3907                                 class T2;
3908                                 template <class T> int operator==(const T2*, const T&) { return 0; }
3909                                 template <class T> int operator!=(const T2*, const T&) { return 0; }],
3910                                [Foo<int> f; return (0 != f);],
3911                                ac_cv_trouble_comparing_to_zero=no,
3912                                ac_cv_trouble_comparing_to_zero=yes)])
3913 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
3914   AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
3919 dnl End of C++ language/feature checks
3920 AC_LANG_C
3922 dnl ========================================================
3923 dnl =  Internationalization checks
3924 dnl ========================================================
3926 dnl Internationalization and Locale support is different
3927 dnl on various UNIX platforms.  Checks for specific i18n
3928 dnl features go here.
3930 dnl check for LC_MESSAGES
3931 AC_CACHE_CHECK(for LC_MESSAGES,
3932                 ac_cv_i18n_lc_messages,
3933                 [AC_TRY_COMPILE([#include <locale.h>],
3934                                 [int category = LC_MESSAGES;],
3935                                 ac_cv_i18n_lc_messages=yes,
3936                                 ac_cv_i18n_lc_messages=no)])
3937 if test "$ac_cv_i18n_lc_messages" = yes; then
3938    AC_DEFINE(HAVE_I18N_LC_MESSAGES)
3939 fi      
3941 fi # SKIP_COMPILER_CHECKS
3943 TARGET_XPCOM_ABI=
3944 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
3945     TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
3948 dnl Mozilla specific options
3949 dnl ========================================================
3950 dnl The macros used for command line options
3951 dnl are defined in build/autoconf/altoptions.m4.
3954 dnl ========================================================
3955 dnl =
3956 dnl = Check for external package dependencies
3957 dnl =
3958 dnl ========================================================
3959 MOZ_ARG_HEADER(External Packages)
3961 MOZ_ENABLE_LIBXUL=
3963 MOZ_ARG_WITH_STRING(libxul-sdk,
3964 [  --with-libxul-sdk=PFX   Use the libXUL SDK at <PFX>],
3965   LIBXUL_SDK_DIR=$withval)
3967 if test "$LIBXUL_SDK_DIR" = "yes"; then
3968     AC_MSG_ERROR([--with-libxul-sdk must specify a path])
3969 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
3970     LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
3972     if test ! -f "$LIBXUL_SDK/sdk/include/xpcom-config.h"; then
3973         AC_MSG_ERROR([$LIBXUL_SDK/sdk/include/xpcom-config.h doesn't exist])
3974     fi
3976     MOZ_ENABLE_LIBXUL=1
3978 AC_SUBST(LIBXUL_SDK)
3980 dnl ========================================================
3981 dnl = If NSPR was not detected in the system, 
3982 dnl = use the one in the source tree (mozilla/nsprpub)
3983 dnl ========================================================
3984 MOZ_ARG_WITH_BOOL(system-nspr,
3985 [  --with-system-nspr      Use system installed NSPR],
3986     _USE_SYSTEM_NSPR=1 )
3988 if test -n "$_USE_SYSTEM_NSPR"; then
3989     AM_PATH_NSPR(4.7.0, [MOZ_NATIVE_NSPR=1], [MOZ_NATIVE_NSPR=])
3992 if test -n "$MOZ_NATIVE_NSPR"; then
3993     _SAVE_CFLAGS=$CFLAGS
3994     CFLAGS="$CFLAGS $NSPR_CFLAGS"
3995     AC_TRY_COMPILE([#include "prlog.h"],
3996                 [#ifndef PR_STATIC_ASSERT
3997                  #error PR_STATIC_ASSERT not defined
3998                  #endif],
3999                 [MOZ_NATIVE_NSPR=1],
4000                 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT]))
4001     CFLAGS=$_SAVE_CFLAGS
4002 else
4003     NSPR_CFLAGS='`$(DEPTH)/nsprpub/config/nspr-config --prefix=$(LIBXUL_DIST) --includedir=$(LIBXUL_DIST)/include/nspr --cflags`'
4004     # explicitly set libs for Visual Age C++ for OS/2
4005     if test "$OS_ARCH" = "OS2" -a "$VACPP" = "yes"; then
4006         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''
4007     elif test "$OS_ARCH" = "WINCE"; then
4008         NSPR_CFLAGS='-I$(LIBXUL_DIST)/include/nspr'
4009         NSPR_LIBS='$(LIBXUL_DIST)/lib/nspr'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plc'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plds'$NSPR_VERSION'.lib '
4010     elif test "$OS_ARCH" = "WINNT"; then
4011         NSPR_CFLAGS='-I$(LIBXUL_DIST)/include/nspr'
4012         if test -n "$GNU_CC"; then
4013             NSPR_LIBS="-L\$(LIBXUL_DIST)/lib -lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION"
4014         else
4015             NSPR_LIBS='$(LIBXUL_DIST)/lib/nspr'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plc'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plds'$NSPR_VERSION'.lib '
4016         fi
4017     else
4018         NSPR_LIBS='`$(DEPTH)/nsprpub/config/nspr-config --prefix=$(LIBXUL_DIST) --libdir=$(LIBXUL_DIST)/lib --libs`'
4019     fi
4022 dnl ========================================================
4023 dnl = If NSS was not detected in the system, 
4024 dnl = use the one in the source tree (mozilla/security/nss)
4025 dnl ========================================================
4027 MOZ_ARG_WITH_BOOL(system-nss,
4028 [  --with-system-nss      Use system installed NSS],
4029     _USE_SYSTEM_NSS=1 )
4031 if test -n "$_USE_SYSTEM_NSS"; then
4032     AM_PATH_NSS(3.12.0, [MOZ_NATIVE_NSS=1], [MOZ_NATIVE_NSS=])
4035 if test -n "$MOZ_NATIVE_NSS"; then
4036    NSS_LIBS="$NSS_LIBS -lcrmf"
4037 else
4038    NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4039    NSS_DEP_LIBS="\
4040         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4041         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4042         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4043         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4044         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX) \
4045         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)softokn$NSS_VERSION\$(DLL_SUFFIX)"
4047    if test -z "$GNU_CC" && test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "WINCE" -o "$OS_ARCH" = "OS2"; then
4048        NSS_LIBS="\
4049         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4050         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4051         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4052         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4053         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4054         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)softokn$NSS_VERSION.\$(IMPORT_LIB_SUFFIX)"
4055    else
4056        NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION -lsoftokn$NSS_VERSION"
4057    fi
4060 if test -z "$SKIP_LIBRARY_CHECKS"; then
4061 dnl system JPEG support
4062 dnl ========================================================
4063 MOZ_ARG_WITH_STRING(system-jpeg,
4064 [  --with-system-jpeg[=PFX]
4065                           Use system libjpeg [installed at prefix PFX]],
4066     JPEG_DIR=$withval)
4068 _SAVE_CFLAGS=$CFLAGS
4069 _SAVE_LDFLAGS=$LDFLAGS
4070 _SAVE_LIBS=$LIBS
4071 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4072     CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4073     LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4075 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4076     SYSTEM_JPEG=
4077 else
4078     AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS)
4081 if test "$SYSTEM_JPEG" = 1; then
4082     LIBS="$JPEG_LIBS $LIBS"
4083     AC_TRY_COMPILE([ #include <stdio.h>
4084                      #include <sys/types.h>
4085                      #include <jpeglib.h> ],
4086                    [ #if JPEG_LIB_VERSION < $MOZJPEG
4087                      #error "Insufficient JPEG library version ($MOZJPEG required)."
4088                      #endif ],
4089                    SYSTEM_JPEG=1,
4090                    [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=]) 
4091 fi 
4092 CFLAGS=$_SAVE_CFLAGS
4093 LDFLAGS=$_SAVE_LDFLAGS
4094 LIBS=$_SAVE_LIBS
4096 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$SYSTEM_JPEG" = 1; then
4097     JPEG_CFLAGS="-I${JPEG_DIR}/include"
4098     JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
4101 dnl system ZLIB support
4102 dnl ========================================================
4103 MOZ_ARG_WITH_STRING(system-zlib,
4104 [  --with-system-zlib[=PFX]
4105                           Use system libz [installed at prefix PFX]],
4106     ZLIB_DIR=$withval)
4108 _SAVE_CFLAGS=$CFLAGS
4109 _SAVE_LDFLAGS=$LDFLAGS
4110 _SAVE_LIBS=$LIBS
4111 if test -n "${ZLIB_DIR}" -a "${ZLIB_DIR}" != "yes"; then
4112     CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
4113     LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
4115 if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
4116     SYSTEM_ZLIB=
4117 else
4118     AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"], 
4119         [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
4121 if test "$SYSTEM_ZLIB" = 1; then
4122     LIBS="$ZLIB_LIBS $LIBS"
4123     AC_TRY_COMPILE([ #include <stdio.h>
4124                      #include <string.h>
4125                      #include <zlib.h> ],
4126                    [ #if ZLIB_VERNUM < $MOZZLIB 
4127                      #error "Insufficient zlib version ($MOZZLIB required)."
4128                      #endif ],
4129                    SYSTEM_ZLIB=1,
4130                    [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=]) 
4132 CFLAGS=$_SAVE_CFLAGS
4133 LDFLAGS=$_SAVE_LDFLAGS
4134 LIBS=$_SAVE_LIBS
4136 if test "${ZLIB_DIR}" -a -d "${ZLIB_DIR}" -a "$SYSTEM_ZLIB" = 1; then
4137     ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
4138     ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
4141 dnl system BZIP2 Support
4142 dnl ========================================================
4143 MOZ_ARG_WITH_STRING(system-bz2,
4144 [  --with-system-bz2[=PFX]
4145                           Use system libbz2 [installed at prefix PFX]],
4146     BZ2_DIR=$withval)
4148 _SAVE_CFLAGS=$CFLAGS
4149 _SAVE_LDFLAGS=$LDFLAGS
4150 _SAVE_LIBS=$LIBS
4151 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4152     CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4153     LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4155 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4156     SYSTEM_BZ2=
4157 else
4158     AC_CHECK_LIB(bz2, BZ2_bzread, [SYSTEM_BZ2=1 BZ2_LIBS="-lbz2"],
4159         [SYSTEM_BZ2= BZ2_CFLAGS= BZ2_LIBS=], $BZ2_LIBS)
4161 CFLAGS=$_SAVE_CFLAGS
4162 LDFLAGS=$_SAVE_LDFLAGS
4163 LIBS=$_SAVE_LIBS
4165 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$SYSTEM_BZ2" = 1; then
4166     BZ2_CFLAGS="-I${BZ2_DIR}/include"
4167     BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
4170 dnl system PNG Support
4171 dnl ========================================================
4172 MOZ_ARG_WITH_STRING(system-png, 
4173 [  --with-system-png[=PFX]
4174                           Use system libpng [installed at prefix PFX]],
4175     PNG_DIR=$withval)
4177 _SAVE_CFLAGS=$CFLAGS
4178 _SAVE_LDFLAGS=$LDFLAGS
4179 _SAVE_LIBS=$LIBS
4180 CFLAGS="$ZLIB_CFLAGS $CFLAGS"
4181 LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
4182 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4183     CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4184     LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4186 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4187     SYSTEM_PNG=
4188 else
4189     _SAVE_PNG_LIBS=$PNG_LIBS
4190     AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"],
4191                  AC_MSG_ERROR([--with-system-png requested but no working libpng found]), 
4192                  $PNG_LIBS)
4193     AC_CHECK_LIB(png, png_get_acTL, ,
4194                  AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]),
4195                  $_SAVE_PNG_LIBS)
4197 if test "$SYSTEM_PNG" = 1; then
4198     LIBS="$PNG_LIBS $LIBS"
4199     AC_TRY_COMPILE([ #include <stdio.h>
4200                      #include <sys/types.h>
4201                      #include <png.h> ],
4202                    [ #if PNG_LIBPNG_VER < $MOZPNG
4203                      #error "Insufficient libpng version ($MOZPNG required)."
4204                      #endif
4205                      #ifndef PNG_UINT_31_MAX
4206                      #error "Insufficient libpng version."
4207                      #endif ],
4208                    SYSTEM_PNG=1,
4209                    AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4211 CFLAGS=$_SAVE_CFLAGS
4212 LDFLAGS=$_SAVE_LDFLAGS
4213 LIBS=$_SAVE_LIBS
4215 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
4216     PNG_CFLAGS="-I${PNG_DIR}/include"
4217     PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
4220 fi # SKIP_LIBRARY_CHECKS
4222 dnl system HunSpell Support
4223 dnl ========================================================
4224 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4225 [  --enable-system-hunspell  Use system hunspell (located with pkgconfig)],
4226     SYSTEM_HUNSPELL=1 )
4228 if test -n "$SYSTEM_HUNSPELL"; then
4229     PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4232 AC_SUBST(SYSTEM_HUNSPELL)
4234 dnl check whether to enable glitz
4235 dnl ========================================================
4236 MOZ_ARG_ENABLE_BOOL(glitz,
4237 [  --enable-glitz          Enable Glitz for use with Cairo],
4238     MOZ_ENABLE_GLITZ=1,
4239     MOZ_ENABLE_GLITZ= )
4240 if test "$MOZ_ENABLE_GLITZ"; then
4241     AC_DEFINE(MOZ_ENABLE_GLITZ)
4244 dnl ========================================================
4245 dnl Java SDK support
4246 dnl ========================================================
4247 JAVA_INCLUDE_PATH=
4248 MOZ_ARG_WITH_STRING(java-include-path,
4249 [  --with-java-include-path=dir   Location of Java SDK headers],
4250     JAVA_INCLUDE_PATH=$withval)
4252 JAVA_BIN_PATH=
4253 MOZ_ARG_WITH_STRING(java-bin-path,
4254 [  --with-java-bin-path=dir   Location of Java binaries (java, javac, jar)],
4255     JAVA_BIN_PATH=$withval)
4257 dnl ========================================================
4258 dnl =
4259 dnl = Application
4260 dnl =
4261 dnl ========================================================
4263 MOZ_ARG_HEADER(Application)
4265 BUILD_STATIC_LIBS=
4266 ENABLE_TESTS=1
4267 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4268 MOZ_BRANDING_DIRECTORY=
4269 MOZ_CALENDAR=
4270 MOZ_DBGRINFO_MODULES=
4271 MOZ_ENABLE_CANVAS=1
4272 MOZ_EXTENSIONS_ALL=" wallet xml-rpc venkman inspector irc typeaheadfind gnomevfs sroaming datetime finger cview layout-debug tasks sql xforms schema-validation reporter"
4273 MOZ_FEEDS=1
4274 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg bmp xbm icon"
4275 MOZ_IMG_ENCODERS_DEFAULT="png jpeg"
4276 MOZ_IPCD=
4277 MOZ_JAVAXPCOM=
4278 MOZ_JSDEBUGGER=1
4279 MOZ_JSLOADER=1
4280 MOZ_LDAP_XPCOM=
4281 MOZ_LIBART_CFLAGS=
4282 MOZ_LIBART_LIBS=
4283 MOZ_MAIL_NEWS=
4284 MOZ_MATHML=1
4285 MOZ_MOCHITEST=1
4286 MOZ_MORK=1
4287 MOZ_MORKREADER=
4288 MOZ_AUTH_EXTENSION=1
4289 MOZ_NO_ACTIVEX_SUPPORT=1
4290 MOZ_NO_INSPECTOR_APIS=
4291 MOZ_NO_XPCOM_OBSOLETE=
4292 MOZ_NO_FAST_LOAD=
4293 MOZ_OJI=1
4294 MOZ_PERMISSIONS=1
4295 MOZ_PLACES=
4296 MOZ_PLAINTEXT_EDITOR_ONLY=
4297 MOZ_PLUGINS=1
4298 MOZ_PREF_EXTENSIONS=1
4299 MOZ_PROFILELOCKING=1
4300 MOZ_PROFILESHARING=1
4301 MOZ_PSM=1
4302 MOZ_PYTHON_EXTENSIONS="xpcom dom"
4303 MOZ_PYTHON=
4304 MOZ_PYTHON_DEBUG_SUFFIX=
4305 MOZ_PYTHON_DLL_SUFFIX=
4306 MOZ_PYTHON_INCLUDES=
4307 MOZ_PYTHON_LIBS=
4308 MOZ_PYTHON_PREFIX=
4309 MOZ_PYTHON_VER=
4310 MOZ_PYTHON_VER_DOTTED=
4311 MOZ_RDF=1
4312 MOZ_REFLOW_PERF=
4313 MOZ_SAFE_BROWSING=
4314 MOZ_HELP_VIEWER=
4315 MOZ_SPELLCHECK=1
4316 MOZ_STATIC_MAIL_BUILD=
4317 MOZ_STORAGE=1
4318 MOZ_SVG=1
4319 MOZ_TIMELINE=
4320 MOZ_UI_LOCALE=en-US
4321 MOZ_UNIVERSALCHARDET=1
4322 MOZ_URL_CLASSIFIER=
4323 MOZ_USE_NATIVE_UCONV=
4324 MOZ_V1_STRING_ABI=
4325 MOZ_VIEW_SOURCE=1
4326 MOZ_WEBSERVICES=
4327 MOZ_XMLEXTRAS=1
4328 MOZ_XPFE_COMPONENTS=1
4329 MOZ_XPINSTALL=1
4330 MOZ_XSLT_STANDALONE=
4331 MOZ_XTF=1
4332 MOZ_XUL=1
4333 MOZ_XUL_APP=1
4334 MOZ_ZIPWRITER=1
4335 NS_PRINTING=1
4336 NECKO_COOKIES=1
4337 NECKO_DISK_CACHE=1
4338 NECKO_PROTOCOLS_DEFAULT="about data file ftp gopher http res viewsource"
4339 NECKO_SMALL_BUFFERS=
4340 SUNCTL=
4341 JS_STATIC_BUILD=
4342 XPC_IDISPATCH_SUPPORT=
4345 case "$target_os" in
4346 darwin*)
4347     ACCESSIBILITY=
4348     ;;
4350     ACCESSIBILITY=1
4351     ;;
4352 esac
4354 case "$target_os" in
4355     msvc*|mks*|cygwin*|mingw*)
4356         if test -z "$GNU_CC"; then 
4357             XPC_IDISPATCH_SUPPORT=1
4358             MOZ_NO_ACTIVEX_SUPPORT=
4359             MOZ_ACTIVEX_SCRIPTING_SUPPORT=1
4360         fi
4361         ;;
4362 esac
4364 MOZ_ARG_ENABLE_STRING(application,
4365 [  --enable-application=APP
4366                           Options include:
4367                             suite
4368                             browser (Firefox)
4369                             mail (Thunderbird)
4370                             minimo
4371                             composer
4372                             calendar (Sunbird)
4373                             xulrunner
4374                             camino
4375                             content/xslt (Standalone Transformiix XSLT)
4376                             netwerk (Standalone Necko)
4377                             tools/update-packaging (AUS-related packaging tools)
4378                             standalone (use this for standalone
4379                               xpcom/xpconnect or to manually drive a build)],
4380 [ MOZ_BUILD_APP=$enableval ] )
4382 if test "$MOZ_BUILD_APP" = "macbrowser"; then
4383     AC_MSG_WARN([--enable-application=macbrowser is deprecated. Use --enable-application=camino.])
4384     MOZ_BUILD_APP=camino
4387 case "$MOZ_BUILD_APP" in
4388 minimo)
4389   MOZ_EMBEDDING_PROFILE=basic
4390   ;;
4393   MOZ_EMBEDDING_PROFILE=default
4394   ;;
4395 esac
4397 MOZ_ARG_WITH_STRING(embedding-profile,
4398 [  --with-embedding-profile=default|basic|minimal
4399                        see http://wiki.mozilla.org/Gecko:Small_Device_Support],
4400 [ MOZ_EMBEDDING_PROFILE=$withval ])
4402 case "$MOZ_EMBEDDING_PROFILE" in
4403 default)
4404   MOZ_EMBEDDING_LEVEL_DEFAULT=1
4405   MOZ_EMBEDDING_LEVEL_BASIC=1
4406   MOZ_EMBEDDING_LEVEL_MINIMAL=1
4407   AC_DEFINE(MOZ_EMBEDDING_LEVEL_DEFAULT)
4408   AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4409   AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4410   ;;
4412 basic)
4413   MOZ_EMBEDDING_LEVEL_DEFAULT=
4414   MOZ_EMBEDDING_LEVEL_BASIC=1
4415   MOZ_EMBEDDING_LEVEL_MINIMAL=1
4416   AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4417   AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4418   ENABLE_TESTS=
4419   MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4420   MOZ_COMPOSER=
4421   MOZ_ENABLE_CANVAS=
4422   MOZ_ENABLE_POSTSCRIPT=
4423   MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4424   MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4425   MOZ_IMG_ENCODERS_DEFAULT=
4426   MOZ_IMG_ENCODERS=
4427   MOZ_INSTALLER=
4428   MOZ_JSDEBUGGER=
4429   MOZ_LDAP_XPCOM=
4430   MOZ_MAIL_NEWS=
4431   MOZ_MATHML=
4432   MOZ_AUTH_EXTENSION=
4433   MOZ_NO_ACTIVEX_SUPPORT=1
4434   MOZ_NO_INSPECTOR_APIS=1
4435   MOZ_NO_XPCOM_OBSOLETE=1
4436   MOZ_NO_FAST_LOAD=1
4437   MOZ_OJI=
4438   MOZ_PLAINTEXT_EDITOR_ONLY=1
4439 #  MOZ_PLUGINS=
4440   MOZ_PREF_EXTENSIONS=
4441   MOZ_PROFILELOCKING=
4442   MOZ_PROFILESHARING=
4443   MOZ_SPELLCHECK=
4444   MOZ_SVG=
4445   MOZ_UNIVERSALCHARDET=
4446   MOZ_UPDATER=
4447   MOZ_USE_NATIVE_UCONV=
4448   MOZ_VIEW_SOURCE=
4449   MOZ_XPFE_COMPONENTS=
4450   MOZ_XPINSTALL=
4451   MOZ_XTF=
4452   MOZ_ZIPWRITER=
4453   NECKO_DISK_CACHE=
4454   NECKO_PROTOCOLS_DEFAULT="about data http file res"
4455   NECKO_SMALL_BUFFERS=1
4456   NS_DISABLE_LOGGING=1
4457   NS_PRINTING=
4458   JS_STATIC_BUILD=1
4459   ;;
4461 minimal)
4462   MOZ_EMBEDDING_LEVEL_DEFAULT=
4463   MOZ_EMBEDDING_LEVEL_BASIC=
4464   MOZ_EMBEDDING_LEVEL_MINIMAL=1
4465   AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4466   ENABLE_TESTS=
4467   MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4468   MOZ_COMPOSER=
4469   MOZ_ENABLE_CANVAS=
4470   MOZ_ENABLE_POSTSCRIPT=
4471   MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4472   MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4473   MOZ_IMG_ENCODERS_DEFAULT=
4474   MOZ_IMG_ENCODERS=
4475   MOZ_INSTALLER=
4476   MOZ_JSDEBUGGER=
4477   MOZ_LDAP_XPCOM=
4478   MOZ_MAIL_NEWS=
4479   MOZ_MATHML=
4480   MOZ_AUTH_EXTENSION=
4481   MOZ_NO_ACTIVEX_SUPPORT=1
4482   MOZ_NO_INSPECTOR_APIS=1
4483   MOZ_NO_XPCOM_OBSOLETE=1
4484   MOZ_NO_FAST_LOAD=1
4485   MOZ_OJI=
4486   MOZ_PLAINTEXT_EDITOR_ONLY=1
4487   MOZ_PLUGINS=
4488   MOZ_PREF_EXTENSIONS=
4489   MOZ_PROFILELOCKING=
4490   MOZ_PROFILESHARING=
4491   MOZ_SPELLCHECK=
4492   MOZ_STORAGE=1
4493   MOZ_PLACES=
4494   MOZ_SVG=
4495   MOZ_UNIVERSALCHARDET=
4496   MOZ_UPDATER=
4497   MOZ_USE_NATIVE_UCONV=1
4498   MOZ_VIEW_SOURCE=
4499   MOZ_XPFE_COMPONENTS=
4500   MOZ_XPINSTALL=
4501   MOZ_XTF=
4502   MOZ_XUL=
4503   MOZ_ZIPWRITER=
4504   MOZ_RDF=
4505   NECKO_DISK_CACHE=
4506   NECKO_PROTOCOLS_DEFAULT="about data http file res"
4507   NECKO_SMALL_BUFFERS=1
4508   NS_DISABLE_LOGGING=1
4509   NS_PRINTING=
4510   JS_STATIC_BUILD=1
4511   ;;
4514   AC_MSG_ERROR([Unrecognized value: --with-embedding-profile=$MOZ_EMBEDDING_PROFILE])
4515   ;;
4516 esac
4518 AC_SUBST(MOZ_EMBEDDING_LEVEL_DEFAULT)
4519 AC_SUBST(MOZ_EMBEDDING_LEVEL_BASIC)
4520 AC_SUBST(MOZ_EMBEDDING_LEVEL_MINIMAL)
4522 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
4523 [  --with-xulrunner-stub-name=appname   Create the xulrunner stub with the given name],
4524   XULRUNNER_STUB_NAME=$withval)
4526 if test -z "$XULRUNNER_STUB_NAME"; then
4527   case "$target_os" in
4528   darwin*)
4529     XULRUNNER_STUB_NAME=xulrunner
4530     ;;
4531   *)
4532     XULRUNNER_STUB_NAME=xulrunner-stub
4533   esac
4535 AC_SUBST(XULRUNNER_STUB_NAME)
4537 if test -z "$MOZ_BUILD_APP"; then
4538   AC_MSG_ERROR([--enable-application=APP was not specified and is required.])
4539 else
4540   # We have a valid application only if it has a build.mk file in its top
4541   # directory.
4542   if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
4543     AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4544   fi
4547 # Allow the application to influence configure with a confvars.sh script.
4549 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4550 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4551   AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4552   . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4553 else
4554   AC_MSG_RESULT([no])
4557 # Now is a good time to test for logic errors, define mismatches, etc.
4558 case "$MOZ_BUILD_APP" in
4559 xulrunner)
4560   if test "$LIBXUL_SDK"; then
4561     AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4562   fi
4563   ;;
4565   # Fix this case for folks who forget. Warn them.
4566   if test -n "$LIBXUL_SDK" -a -z "$MOZ_XUL_APP"; then
4567     AC_MSG_WARN([Setting MOZ_XUL_APP since LIBXUL_SDK was set. Add to confvars.sh!])
4568     MOZ_XUL_APP=1
4569   fi
4570   ;;
4571 esac
4573 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4574 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4575 # MOZ_BUILD_APP.
4576 case "$MOZ_BUILD_APP" in
4577 suite)
4578   AC_DEFINE(MOZ_SUITE)
4579   ;;
4581 browser)
4582   AC_DEFINE(MOZ_PHOENIX)
4583   ;;
4585 minimo)
4586   AC_DEFINE(MINIMO)
4587   ;;
4589 mail)
4590   AC_DEFINE(MOZ_THUNDERBIRD)
4591   ;;
4593 composer)
4594   AC_DEFINE(MOZ_STANDALONE_COMPOSER)
4595   ;;
4597 calendar)
4598   AC_DEFINE(MOZ_SUNBIRD)
4599   ;;
4601 xulrunner)
4602   AC_DEFINE(MOZ_XULRUNNER)
4603   ;;
4605 camino) 
4606   AC_DEFINE(MOZ_MACBROWSER)
4607   ;;
4609 content/xslt)
4610   AC_DEFINE(TX_EXE)
4611   ;;
4613 standalone) 
4614   MOZ_APP_NAME=mozilla
4615   MOZ_APP_DISPLAYNAME=Mozilla
4616   MOZ_APP_VERSION=$MOZILLA_VERSION
4617   ;;
4619 esac
4621 AC_SUBST(MOZ_BUILD_APP)
4622 AC_SUBST(MOZ_XUL_APP)
4623 AC_SUBST(MOZ_SUITE)
4624 AC_SUBST(MOZ_PHOENIX)
4625 AC_SUBST(MOZ_THUNDERBIRD)
4626 AC_SUBST(MOZ_STANDALONE_COMPOSER)
4627 AC_SUBST(MOZ_SUNBIRD)
4628 AC_SUBST(MOZ_XULRUNNER)
4630 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4632 if test "$MOZ_XUL_APP"; then
4633   MOZ_PROFILESHARING=
4634   AC_DEFINE(MOZ_XUL_APP)
4637 dnl ========================================================
4638 dnl = 
4639 dnl = Toolkit Options
4640 dnl = 
4641 dnl ========================================================
4642 MOZ_ARG_HEADER(Toolkit Options)
4644     dnl ========================================================
4645     dnl = Select the default toolkit
4646     dnl ========================================================
4647         MOZ_ARG_ENABLE_STRING(default-toolkit,
4648         [  --enable-default-toolkit=TK
4649                           Select default toolkit
4650                           Platform specific defaults:
4651                             BeOS - cairo-beos
4652                             Mac OS X - cairo-cocoa
4653                             Neutrino/QNX - photon
4654                             OS/2 - cairo-os2
4655                             Win32 - cairo-windows
4656                             WinCE - windows
4657                             * - cairo-gtk2],
4658     [ _DEFAULT_TOOLKIT=$enableval ],
4659     [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4661     if test "$_DEFAULT_TOOLKIT" = "photon" \
4662         -o "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4663         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4664         -o "$_DEFAULT_TOOLKIT" = "cairo-beos" \
4665         -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
4666         -o "$_DEFAULT_TOOLKIT" = "cairo-mac" \
4667         -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa"
4668     then
4669         dnl nglayout only supports building with one toolkit,
4670         dnl so ignore everything after the first comma (",").
4671         MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4672     else
4673         if test "$no_x" != "yes"; then
4674             AC_MSG_ERROR([Toolkit must be cairo-gtk2.])
4675         else
4676             AC_MSG_ERROR([Toolkit must be $_PLATFORM_DEFAULT_TOOLKIT (if supported).])
4677         fi
4678     fi
4680 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_TOOLKIT,"$MOZ_WIDGET_TOOLKIT")
4682 dnl ========================================================
4683 dnl = Enable the toolkit as needed                         =
4684 dnl ========================================================
4686 case "$MOZ_WIDGET_TOOLKIT" in
4687 photon)
4688         MOZ_ENABLE_PHOTON=1
4689         AC_DEFINE(MOZ_WIDGET_PHOTON)
4690     ;;
4692 cairo-windows)
4693     MOZ_WIDGET_TOOLKIT=windows
4694     MOZ_GFX_TOOLKIT=cairo
4695     ;;
4697 cairo-gtk2)
4698     MOZ_WIDGET_TOOLKIT=gtk2
4699     MOZ_GFX_TOOLKIT=cairo
4700     MOZ_ENABLE_GTK2=1
4701     MOZ_ENABLE_XREMOTE=1
4702     TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4703     TK_LIBS='$(MOZ_GTK2_LIBS)'
4704     AC_DEFINE(MOZ_WIDGET_GTK2)
4705     ;;
4706 cairo-beos)
4707     MOZ_WIDGET_TOOLKIT=beos
4708     MOZ_GFX_TOOLKIT=cairo
4709     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4710     TK_LIBS='$(MOZ_CAIRO_LIBS)'
4711     ;;
4713 cairo-os2)
4714     MOZ_WIDGET_TOOLKIT=os2
4715     MOZ_GFX_TOOLKIT=cairo
4716     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4717     TK_LIBS='$(MOZ_CAIRO_LIBS)'
4718     ;;
4720 cairo-mac|cairo-cocoa)
4721     if test "$MOZ_WIDGET_TOOLKIT" = "cairo-cocoa"; then
4722         MOZ_WIDGET_TOOLKIT=cocoa
4723         AC_DEFINE(MOZ_WIDGET_COCOA)
4724         MOZ_ENABLE_COCOA=1
4725     else
4726         MOZ_WIDGET_TOOLKIT=mac
4727     fi
4728     MOZ_GFX_TOOLKIT=cairo
4729     MOZ_USER_DIR="Mozilla"
4730     AC_DEFINE(XP_MACOSX)
4731     AC_DEFINE(TARGET_CARBON)
4732     AC_DEFINE(TARGET_API_MAC_CARBON)
4733     TK_LIBS='-framework Carbon'
4734     TK_CFLAGS="-I${MACOS_SDK_DIR}/Developer/Headers/FlatCarbon"
4735     CFLAGS="$CFLAGS $TK_CFLAGS"
4736     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4737     ;;
4738 esac
4740 if test "$MOZ_ENABLE_XREMOTE"; then
4741     AC_DEFINE(MOZ_ENABLE_XREMOTE)
4744 if test "$COMPILE_ENVIRONMENT"; then
4745 if test "$MOZ_ENABLE_GTK2"
4746 then
4747     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)
4749 fi # COMPILE_ENVIRONMENT
4751 AC_SUBST(MOZ_DEFAULT_TOOLKIT)
4753 dnl ========================================================
4754 dnl = startup-notification support module
4755 dnl ========================================================
4757 if test "$MOZ_ENABLE_GTK2"
4758 then
4759     MOZ_ENABLE_STARTUP_NOTIFICATION=
4761     MOZ_ARG_ENABLE_BOOL(startup-notification,
4762     [  --enable-startup-notification       Enable startup-notification support (default: disabled) ],
4763         MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4764         MOZ_ENABLE_STARTUP_NOTIFICATION=)
4765     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4766     then
4767         PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4768                           libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4769         [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4770             if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4771             then
4772                 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4773             fi
4774             MOZ_ENABLE_STARTUP_NOTIFICATION=
4775         ])
4776     fi
4778     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4779         AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4780     fi
4782     TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4784 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4785 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4786 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4788 AC_SUBST(GTK_CONFIG)
4789 AC_SUBST(TK_CFLAGS)
4790 AC_SUBST(TK_LIBS)
4792 AC_SUBST(MOZ_ENABLE_GTK2)
4793 AC_SUBST(MOZ_ENABLE_PHOTON)
4794 AC_SUBST(MOZ_ENABLE_COCOA)
4795 AC_SUBST(MOZ_ENABLE_GLITZ)
4796 AC_SUBST(MOZ_ENABLE_XREMOTE)
4797 AC_SUBST(MOZ_GTK2_CFLAGS)
4798 AC_SUBST(MOZ_GTK2_LIBS)
4800 AC_SUBST(MOC)
4802 if test "$MOZ_ENABLE_GTK2"
4803 then
4804     AC_DEFINE(MOZ_X11)
4805     MOZ_X11=1
4807 AC_SUBST(MOZ_X11)
4809 dnl ========================================================
4810 dnl =
4811 dnl = Components & Features
4812 dnl = 
4813 dnl ========================================================
4814 MOZ_ARG_HEADER(Components and Features)
4816 dnl ========================================================
4817 dnl = Localization
4818 dnl ========================================================
4819 MOZ_ARG_ENABLE_STRING(ui-locale,
4820 [  --enable-ui-locale=ab-CD
4821                           Select the user interface locale (default: en-US)],
4822     MOZ_UI_LOCALE=$enableval )
4823 AC_SUBST(MOZ_UI_LOCALE)
4825 dnl =========================================================
4826 dnl = Calendar client
4827 dnl =========================================================
4828 MOZ_ARG_ENABLE_BOOL(calendar,,
4829     MOZ_OLD_CALENDAR=1,
4830     MOZ_OLD_CALENDAR= )
4832 if test "$MOZ_OLD_CALENDAR"; then
4833     AC_MSG_WARN([Building with the calendar extension is no longer supported.])
4834     if test "$MOZ_THUNDERBIRD"; then
4835         AC_MSG_WARN([Since you're trying to build mail, you could try adding])
4836         AC_MSG_WARN(['--enable-extensions=default,lightning' to your mozconfig])
4837         AC_MSG_WARN([and building WITH A FRESH TREE.])
4838     fi
4839     AC_MSG_WARN([For more information, please visit:])
4840     AC_MSG_ERROR([http://www.mozilla.org/projects/calendar/])
4843 AC_SUBST(MOZ_CALENDAR)
4845 dnl =========================================================
4846 dnl = Mail & News
4847 dnl =========================================================
4848 MOZ_ARG_DISABLE_BOOL(mailnews,
4849 [  --disable-mailnews      Disable building of mail & news components],
4850     MOZ_MAIL_NEWS=,
4851     MOZ_MAIL_NEWS=1 )
4852 AC_SUBST(MOZ_MAIL_NEWS)
4854 dnl =========================================================
4855 dnl = LDAP
4856 dnl =========================================================
4857 MOZ_ARG_DISABLE_BOOL(ldap,
4858 [  --disable-ldap          Disable LDAP support],
4859     MOZ_LDAP_XPCOM=,
4860     MOZ_LDAP_XPCOM=1)
4862 dnl ========================================================
4863 dnl = Trademarked Branding 
4864 dnl ========================================================
4865 MOZ_ARG_ENABLE_BOOL(official-branding,
4866 [  --enable-official-branding Enable Official mozilla.org Branding
4867                           Do not distribute builds with
4868                           --enable-official-branding unless you have
4869                           permission to use trademarks per
4870                           http://www.mozilla.org/foundation/trademarks/ .],
4871 [case "$MOZ_BUILD_APP" in
4872 browser)
4873     MOZ_BRANDING_DIRECTORY=other-licenses/branding/firefox
4874     MOZ_APP_DISPLAYNAME=Firefox
4875     ;;
4877 calendar)
4878     MOZ_BRANDING_DIRECTORY=other-licenses/branding/sunbird
4879     MOZ_APP_DISPLAYNAME=Sunbird
4880     ;;
4882 mail)
4883     MOZ_BRANDING_DIRECTORY=other-licenses/branding/thunderbird
4884     ;;
4887     AC_MSG_ERROR([Official branding is only available for Firefox Sunbird and Thunderbird.])
4888 esac
4891 MOZ_ARG_WITH_STRING(branding,
4892 [  --with-branding=dir    Use branding from the specified directory.],
4893     MOZ_BRANDING_DIRECTORY=$withval)
4895 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4896 if test -z "$REAL_BRANDING_DIRECTORY"; then
4897   REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
4900 if test -f "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"; then
4901   . "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"
4904 AC_SUBST(MOZ_BRANDING_DIRECTORY)
4906 dnl ========================================================
4907 dnl = Distribution ID
4908 dnl ========================================================
4909 MOZ_ARG_WITH_STRING(distribution-id,
4910 [  --with-distribution-id=ID  Set distribution-specific id (default=org.mozilla)],
4911 [ val=`echo $withval`
4912     MOZ_DISTRIBUTION_ID="$val"])
4914 if test -z "$MOZ_DISTRIBUTION_ID"; then
4915    MOZ_DISTRIBUTION_ID="org.mozilla"
4918 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
4919 AC_SUBST(MOZ_DISTRIBUTION_ID)
4921 dnl ========================================================
4922 dnl = Xft and Pango
4923 dnl ========================================================
4924 if test "$MOZ_ENABLE_GTK2"
4925 then
4926     PKG_CHECK_MODULES(MOZ_XFT, xft)
4927     AC_SUBST(MOZ_XFT_CFLAGS)
4928     AC_SUBST(MOZ_XFT_LIBS)
4930     PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
4931     PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangocairo >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
4932     AC_SUBST(MOZ_PANGO_CFLAGS)
4933     AC_SUBST(MOZ_PANGO_LIBS)
4936 dnl ========================================================
4937 dnl = PostScript print module
4938 dnl ========================================================
4939 MOZ_ARG_DISABLE_BOOL(postscript,
4940 [  --disable-postscript    Disable PostScript printing support ],
4941     MOZ_ENABLE_POSTSCRIPT=,
4942     MOZ_ENABLE_POSTSCRIPT=1 )
4944 dnl ========================================================
4945 dnl = GnomeVFS support module
4946 dnl ========================================================
4948 if test "$MOZ_X11"
4949 then
4950     dnl build the gnomevfs extension by default only when the
4951     dnl GTK2 toolkit is in use.
4952     if test "$MOZ_ENABLE_GTK2"
4953     then
4954         MOZ_ENABLE_GNOMEVFS=1
4955         MOZ_ENABLE_GCONF=1
4956         MOZ_ENABLE_LIBGNOME=1
4957     fi
4959     MOZ_ARG_DISABLE_BOOL(gnomevfs,
4960     [  --disable-gnomevfs      Disable GnomeVFS support ],
4961         MOZ_ENABLE_GNOMEVFS=,
4962         MOZ_ENABLE_GNOMEVFS=force)
4964     if test "$MOZ_ENABLE_GNOMEVFS"
4965     then
4966         PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
4967             MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
4968             MOZ_ENABLE_GNOMEVFS=1
4969         ],[
4970             if test "$MOZ_ENABLE_GNOMEVFS" = "force"
4971             then
4972                 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
4973             fi
4974             MOZ_ENABLE_GNOMEVFS=
4975         ])
4976     fi
4978     AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
4979     AC_SUBST(MOZ_GNOMEVFS_LIBS)
4981     if test "$MOZ_ENABLE_GCONF"
4982     then
4983         PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION,[
4984             MOZ_GCONF_LIBS=`echo $MOZ_GCONF_LIBS | sed 's/-llinc\>//'`
4985             MOZ_ENABLE_GCONF=1
4986         ],[
4987             MOZ_ENABLE_GCONF=
4988         ])
4989     fi
4991     if test "$MOZ_ENABLE_GCONF"; then
4992         AC_DEFINE(MOZ_ENABLE_GCONF)
4993     fi
4995     AC_SUBST(MOZ_ENABLE_GCONF)
4996     AC_SUBST(MOZ_GCONF_CFLAGS)
4997     AC_SUBST(MOZ_GCONF_LIBS)
4999     if test "$MOZ_ENABLE_LIBGNOME"
5000     then
5001         PKG_CHECK_MODULES(MOZ_LIBGNOME, libgnome-2.0 >= $LIBGNOME_VERSION,[
5002             MOZ_LIBGNOME_LIBS=`echo $MOZ_LIBGNOME_LIBS | sed 's/-llinc\>//'`
5003             MOZ_ENABLE_LIBGNOME=1
5004         ],[
5005             MOZ_ENABLE_LIBGNOME=
5006         ])
5007     fi
5009     AC_SUBST(MOZ_LIBGNOME_CFLAGS)
5010     AC_SUBST(MOZ_LIBGNOME_LIBS)
5012     # The GNOME component is built if gtk2, gconf, gnome-vfs, and libgnome
5013     # are all available.
5015     if test "$MOZ_ENABLE_GTK2" -a "$MOZ_ENABLE_GCONF" -a \
5016             "$MOZ_ENABLE_GNOMEVFS" -a "$MOZ_ENABLE_LIBGNOME"; then
5017       MOZ_ENABLE_GNOME_COMPONENT=1
5018     else
5019       MOZ_ENABLE_GNOME_COMPONENT=
5020     fi
5022     AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5025 dnl ========================================================
5026 dnl = libgnomeui support module
5027 dnl ========================================================
5029 if test "$MOZ_ENABLE_GTK2"
5030 then
5031     MOZ_ENABLE_GNOMEUI=1
5033     MOZ_ARG_DISABLE_BOOL(gnomeui,
5034     [  --disable-gnomeui       Disable libgnomeui support (default: auto, optional at runtime) ],
5035         MOZ_ENABLE_GNOMEUI=,
5036         MOZ_ENABLE_GNOMEUI=force)
5038     if test "$MOZ_ENABLE_GNOMEUI"
5039     then
5040         PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5041         [
5042             MOZ_GNOMEUI_LIBS=`echo $MOZ_GNOMEUI_LIBS | sed 's/-llinc\>//'`
5043             MOZ_ENABLE_GNOMEUI=1
5044         ],[
5045             if test "$MOZ_ENABLE_GNOMEUI" = "force"
5046             then
5047                 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5048             fi
5049             MOZ_ENABLE_GNOMEUI=
5050         ])
5051     fi
5053     if test "$MOZ_ENABLE_GNOMEUI"; then
5054         AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5055     fi
5057 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5058 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5059 AC_SUBST(MOZ_GNOMEUI_LIBS)
5061 dnl ========================================================
5062 dnl = dbus support
5063 dnl ========================================================
5065 if test "$MOZ_ENABLE_GTK2"
5066 then
5067     MOZ_ENABLE_DBUS=1
5069     MOZ_ARG_DISABLE_BOOL(dbus,
5070     [  --disable-dbus       Disable dbus support ],
5071         MOZ_ENABLE_DBUS=,
5072         MOZ_ENABLE_DBUS=1)
5074     if test "$MOZ_ENABLE_DBUS"
5075     then
5076         PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5077         AC_DEFINE(MOZ_ENABLE_DBUS)
5078     fi
5080 AC_SUBST(MOZ_ENABLE_DBUS)
5081 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5082 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5084 dnl ========================================================
5085 dnl = Build Personal Security Manager
5086 dnl ========================================================
5087 MOZ_ARG_DISABLE_BOOL(crypto,
5088 [  --disable-crypto        Disable crypto support (Personal Security Manager)],
5089     MOZ_PSM=,
5090     MOZ_PSM=1 )
5092 dnl ========================================================
5093 dnl = JS Debugger XPCOM component (js/jsd)
5094 dnl ========================================================
5095 MOZ_ARG_DISABLE_BOOL(jsd,
5096 [  --disable-jsd           Disable JavaScript debug library],
5097     MOZ_JSDEBUGGER=,
5098     MOZ_JSDEBUGGER=1)
5101 dnl ========================================================
5102 dnl = Disable plugin support
5103 dnl ========================================================
5104 MOZ_ARG_DISABLE_BOOL(plugins,
5105 [  --disable-plugins       Disable plugins support],
5106     MOZ_PLUGINS=,
5107     MOZ_PLUGINS=1)
5109 dnl ========================================================
5110 dnl = Open JVM Interface (OJI) support
5111 dnl ========================================================
5112 MOZ_ARG_DISABLE_BOOL(oji,
5113 [  --disable-oji           Disable Open JVM Integration support],
5114     MOZ_OJI=,
5115     MOZ_OJI=1)
5116 if test -n "$MOZ_OJI"; then
5117     AC_DEFINE(OJI)
5120 dnl bi-directional support always on
5121 IBMBIDI=1
5122 AC_DEFINE(IBMBIDI)
5124 dnl ========================================================
5125 dnl complex text support off by default
5126 dnl ========================================================
5127 MOZ_ARG_ENABLE_BOOL(ctl,
5128 [  --enable-ctl            Enable Thai Complex Script support],
5129     SUNCTL=1,
5130     SUNCTL= )
5132 dnl ========================================================
5133 dnl view source support on by default
5134 dnl ========================================================
5135 MOZ_ARG_DISABLE_BOOL(view-source,
5136 [  --disable-view-source     Disable view source support],
5137     MOZ_VIEW_SOURCE=,
5138     MOZ_VIEW_SOURCE=1 )
5139 if test "$MOZ_VIEW_SOURCE"; then
5140     AC_DEFINE(MOZ_VIEW_SOURCE)
5144 dnl ========================================================
5145 dnl accessibility support on by default on all platforms 
5146 dnl except OS X.
5147 dnl ========================================================
5148 MOZ_ARG_DISABLE_BOOL(accessibility,
5149 [  --disable-accessibility Disable accessibility support (off by default on OS X)],
5150     ACCESSIBILITY=,
5151     ACCESSIBILITY=1 )
5152 if test "$ACCESSIBILITY"; then
5153     AC_DEFINE(ACCESSIBILITY)
5156 if test -n "$ACCESSIBILITY"; then
5157 case "$target" in
5158 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5159     if test "$ac_cv_header_atlbase_h" = "no"; then
5160         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.])
5161     fi
5162     if test "$ac_cv_header_oleacc_idl" = "no"; then
5163         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.])
5164     fi
5165     ;;
5166 esac
5169 dnl ========================================================
5170 dnl xpfe/components on by default
5171 dnl ========================================================
5172 MOZ_ARG_DISABLE_BOOL(xpfe-components,
5173 [  --disable-xpfe-components
5174                           Disable xpfe components],
5175     MOZ_XPFE_COMPONENTS=,
5176     MOZ_XPFE_COMPONENTS=1 )
5178 dnl ========================================================
5179 dnl xpinstall support on by default
5180 dnl ========================================================
5181 MOZ_ARG_DISABLE_BOOL(xpinstall,
5182 [  --disable-xpinstall     Disable xpinstall support],
5183     MOZ_XPINSTALL=,
5184     MOZ_XPINSTALL=1 )
5185 if test "$MOZ_XPINSTALL"; then
5186     AC_DEFINE(MOZ_XPINSTALL)
5189 dnl ========================================================
5190 dnl xpcom js loader support on by default
5191 dnl ========================================================
5192 MOZ_ARG_DISABLE_BOOL(jsloader,
5193 [  --disable-jsloader      Disable xpcom js loader support],
5194     MOZ_JSLOADER=,
5195     MOZ_JSLOADER=1 )
5196 if test "$MOZ_JSLOADER"; then
5197     AC_DEFINE(MOZ_JSLOADER)
5200 dnl ========================================================
5201 dnl Disable printing
5202 dnl ========================================================
5203 MOZ_ARG_DISABLE_BOOL(printing,
5204 [  --disable-printing  Disable printing support],
5205     NS_PRINTING=,
5206     NS_PRINTING=1 )
5208 if test "$NS_PRINTING"; then
5209     AC_DEFINE(NS_PRINTING)
5210     AC_DEFINE(NS_PRINT_PREVIEW)
5213 dnl ========================================================
5214 dnl use native unicode converters
5215 dnl ========================================================
5216 MOZ_ARG_ENABLE_BOOL(native-uconv,
5217 [  --enable-native-uconv   Enable iconv support],
5218     MOZ_USE_NATIVE_UCONV=1,
5219     MOZ_USE_NATIVE_UCONV= )
5220 if test "$MOZ_USE_NATIVE_UCONV"; then
5221     AC_DEFINE(MOZ_USE_NATIVE_UCONV)
5223 if test "$OS_ARCH" != "WINCE" -a "$OS_ARCH" != "WINNT" -a "$MOZ_USE_NATIVE_UCONV" -a "$ac_cv_func_iconv" != "yes"; then
5224     AC_MSG_ERROR([iconv() not found.  Cannot enable native uconv support.])
5228 dnl ========================================================
5229 dnl Libeditor can be build as plaintext-only,
5230 dnl or as a full html and text editing component.
5231 dnl We build both by default.
5232 dnl ========================================================
5233 MOZ_ARG_ENABLE_BOOL(plaintext-editor-only,
5234 [  --enable-plaintext-editor-only
5235                           Allow only plaintext editing],
5236     MOZ_PLAINTEXT_EDITOR_ONLY=1,
5237     MOZ_PLAINTEXT_EDITOR_ONLY= )
5238 dnl Note the #define is MOZILLA, not MOZ, for compat with the Mac build.
5239 AC_SUBST(MOZ_PLAINTEXT_EDITOR_ONLY)
5241 dnl ========================================================
5242 dnl Composer is on by default.
5243 dnl ========================================================
5244 MOZ_ARG_DISABLE_BOOL(composer,
5245 [  --disable-composer      Disable building of Composer],
5246     MOZ_COMPOSER=,
5247     MOZ_COMPOSER=1 )
5248 AC_SUBST(MOZ_COMPOSER)
5251 dnl ========================================================
5252 dnl = Drop XPCOM Obsolete library
5253 dnl ========================================================
5254 MOZ_ARG_DISABLE_BOOL(xpcom-obsolete,
5255 [  --disable-xpcom-obsolete           Disable XPCOM Obsolete Library],
5256     MOZ_NO_XPCOM_OBSOLETE=1,
5257     MOZ_NO_XPCOM_OBSOLETE=)
5259 if test -n "$MOZ_NO_XPCOM_OBSOLETE"; then
5260     AC_DEFINE(MOZ_NO_XPCOM_OBSOLETE)
5263 dnl ========================================================
5264 dnl = Disable Fast Load
5265 dnl ========================================================
5266 MOZ_ARG_DISABLE_BOOL(xpcom-fastload,
5267 [  --disable-xpcom-fastload           Disable XPCOM fastload support],
5268     MOZ_NO_FAST_LOAD=1,
5269     MOZ_NO_FAST_LOAD=)
5271 AC_SUBST(MOZ_NO_FAST_LOAD)
5273 if test -n "$MOZ_NO_FAST_LOAD"; then
5274     AC_DEFINE(MOZ_NO_FAST_LOAD)
5277 dnl ========================================================
5278 dnl Permissions System
5279 dnl ========================================================
5280 MOZ_ARG_DISABLE_BOOL(permissions,
5281 [  --disable-permissions   Disable permissions (popup and cookie blocking)],
5282     MOZ_PERMISSIONS=,
5283     MOZ_PERMISSIONS=1
5286 dnl ========================================================
5287 dnl NegotiateAuth
5288 dnl ========================================================
5289 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5290 [  --disable-negotiateauth Disable GSS-API negotiation ],
5291     MOZ_AUTH_EXTENSION=,
5292     MOZ_AUTH_EXTENSION=1 )
5294 dnl ========================================================
5295 dnl XTF
5296 dnl ========================================================
5297 MOZ_ARG_DISABLE_BOOL(xtf,
5298 [  --disable-xtf           Disable XTF (pluggable xml tags) support],
5299     MOZ_XTF=,
5300     MOZ_XTF=1 )
5301 if test "$MOZ_XTF"; then
5302   AC_DEFINE(MOZ_XTF)
5305 dnl ========================================================
5306 dnl Inspector APIs
5307 dnl ========================================================
5308 MOZ_ARG_DISABLE_BOOL(inspector-apis,
5309 [  --disable-inspector-apis Disable the DOM inspection APIs ],
5310     MOZ_NO_INSPECTOR_APIS=1,
5311     MOZ_NO_INSPECTOR_APIS= )
5313 dnl ========================================================
5314 dnl XMLExtras
5315 dnl ========================================================
5316 MOZ_ARG_DISABLE_BOOL(xmlextras,
5317 [  --disable-xmlextras Disable XMLExtras such as XPointer support ],
5318     MOZ_XMLEXTRAS=,
5319     MOZ_XMLEXTRAS=1 )
5321 dnl ========================================================
5322 dnl Webservices
5323 dnl ========================================================
5324 MOZ_ARG_ENABLE_BOOL(webservices,
5325 [  --enable-webservices Enable Webservices/SOAP support ],
5326     MOZ_WEBSERVICES=1,
5327     MOZ_WEBSERVICES= )
5329 dnl ========================================================
5330 dnl Pref extensions (autoconfig and system-pref)
5331 dnl ========================================================
5332 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5333 [  --disable-pref-extensions
5334                           Disable pref extensions such as autoconfig and
5335                           system-pref],
5336   MOZ_PREF_EXTENSIONS=,
5337   MOZ_PREF_EXTENSIONS=1 )
5339 dnl ========================================================
5340 dnl = Universalchardet
5341 dnl ========================================================
5342 MOZ_ARG_DISABLE_BOOL(universalchardet,
5343 [  --disable-universalchardet
5344                           Disable universal encoding detection],
5345   MOZ_UNIVERSALCHARDET=,
5346   MOZ_UNIVERSALCHARDET=1 )
5348 dnl ========================================================
5349 dnl JavaXPCOM
5350 dnl ========================================================
5351 MOZ_ARG_ENABLE_BOOL(javaxpcom,
5352 [  --enable-javaxpcom
5353                           Enable Java-XPCOM bridge],
5354     MOZ_JAVAXPCOM=1,
5355     MOZ_JAVAXPCOM= )
5357 if test -n "${MOZ_JAVAXPCOM}"; then
5358   case "$host_os" in
5359     cygwin*|msvc*|mks*)
5360       if test -n "$JAVA_HOME"; then
5361         JAVA_HOME=`cygpath -u \`cygpath -m -s "$JAVA_HOME"\``
5362       fi
5363       ;;
5364     *mingw*)
5365       if test -n "$JAVA_HOME"; then
5366         JAVA_HOME=`cd "$JAVA_HOME" && pwd`
5367       fi
5368       ;;
5369   esac
5371   if test -n "${JAVA_INCLUDE_PATH}"; then
5372     dnl Make sure jni.h exists in the given include path.
5373     if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5374       AC_MSG_ERROR([jni.h was not found in given include path $JAVA_INCLUDE_PATH.])
5375     fi
5376   else
5377     case "$target_os" in
5378       darwin*)
5379         dnl Default to java system location
5380         JAVA_INCLUDE_PATH=/System/Library/Frameworks/JavaVM.framework/Headers
5381         ;;
5382       *)
5383         dnl Try $JAVA_HOME
5384         JAVA_INCLUDE_PATH="$JAVA_HOME/include"
5385         ;;
5386     esac
5387     if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5388       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.])
5389     fi
5390   fi
5392   if test -n "${JAVA_BIN_PATH}"; then
5393     dnl Look for javac and jar in the specified path.
5394     JAVA_PATH="$JAVA_BIN_PATH"
5395   else
5396     dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5397     JAVA_PATH="$JAVA_HOME/bin:$PATH"
5398   fi
5400   AC_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5401   AC_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5402   AC_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5403   if test -z "$JAVA" || test "$JAVA" = ":" || test -z "$JAVAC" || test "$JAVAC" = ":" || test -z "$JAR" || test "$JAR" = ":"; then
5404     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.])
5405   fi
5408 dnl ========================================================
5409 dnl = Breakpad crash reporting (on by default on supported platforms)
5410 dnl ========================================================
5412 if (test "$OS_ARCH" = "WINNT" -a -z "$GNU_CC" \
5413     || test "$OS_ARCH" = "Darwin" \
5414     || test "$OS_ARCH" = "Linux" -a "$CPU_ARCH" = "x86" \
5415     || test "$OS_ARCH" = "SunOS") \
5416    && test -z "$HAVE_64BIT_OS"; then
5417    MOZ_CRASHREPORTER=1
5420 MOZ_ARG_DISABLE_BOOL(crashreporter,
5421 [  --disable-crashreporter          Disable breakpad crash reporting],
5422     MOZ_CRASHREPORTER=,
5423     MOZ_CRASHREPORTER=1)
5425 if test -n "$MOZ_CRASHREPORTER"; then
5426    AC_DEFINE(MOZ_CRASHREPORTER)
5428   if (test "$OS_ARCH" = "Linux" || test "$OS_ARCH" = "SunOS") && \
5429     test -z "$SKIP_LIBRARY_CHECKS"; then
5430     PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
5431     AC_SUBST(MOZ_GTHREAD_CFLAGS)
5432     AC_SUBST(MOZ_GTHREAD_LIBS)
5434     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.])])
5435   fi
5438 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
5439 [  --with-crashreporter-enable-percent=NN  Enable sending crash reports by default on NN% of users. (default=100)],
5440 [ val=`echo $withval | sed 's/[^0-9]//g'`
5441     MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
5443 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
5444    MOZ_CRASHREPORTER_ENABLE_PERCENT=100
5446 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
5449 dnl ========================================================
5450 dnl = Build mochitest JS/DOM tests (on by default)
5451 dnl ========================================================
5452 MOZ_ARG_DISABLE_BOOL(mochitest,
5453 [  --disable-mochitest        Disable mochitest harness],
5454     MOZ_MOCHITEST=,
5455     MOZ_MOCHITEST=1 )
5457 dnl ========================================================
5458 dnl = Enable compilation of specific extension modules
5459 dnl ========================================================
5461 MOZ_ARG_ENABLE_STRING(extensions,
5462 [  --enable-extensions     Enable extensions],
5463 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5464     if test "$option" = "yes" || test "$option" = "all"; then
5465         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_ALL"
5466     elif test "$option" = "no" || test "$option" = "none"; then
5467         MOZ_EXTENSIONS=""
5468     elif test "$option" = "default"; then
5469         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
5470     elif test `echo "$option" | grep -c \^-` != 0; then
5471         option=`echo $option | sed 's/^-//'`
5472         MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
5473     else
5474         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
5475     fi
5476 done],
5477     MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
5479 if test -z "$MOZ_ENABLE_GNOMEVFS" && test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
5480     # Suppress warning on non-X11 platforms
5481     if test -n "$MOZ_X11"; then
5482         AC_MSG_WARN([Cannot build gnomevfs without required libraries. Removing gnomevfs from MOZ_EXTENSIONS.])
5483     fi
5484     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
5487 if test -z "$MOZ_JSDEBUGGER" && test `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
5488     AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
5489     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
5492 dnl This might be temporary: build tridentprofile only on Windows
5493 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0 && test "$OS_ARCH" != "WINNT"; then
5494     AC_MSG_WARN([tridentprofile extension works only on Windows at this time. Removing tridentprofile from MOZ_EXTENSIONS.])
5495     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5498 dnl cookie must be built before tridentprofile. put it at list's end.
5499 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0; then
5500   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5501   MOZ_EXTENSIONS="$MOZ_EXTENSIONS tridentprofile"
5504 dnl xforms requires xtf and schema-validation
5505 if test -z "$MOZ_XTF" && test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
5506     AC_MSG_WARN([Cannot build XForms without XTF support.  Removing XForms from MOZ_EXTENSIONS.])
5507     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5509 if test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0 && test `echo "$MOZ_EXTENSIONS" | grep -c schema-validation` -eq 0; then
5510     AC_MSG_WARN([Cannot build XForms without schema validation.  Removing XForms from MOZ_EXTENSIONS.])
5511     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5514 if test `echo "$MOZ_EXTENSIONS" | grep -c auth` -ne 0; then
5515     AC_MSG_WARN([auth is no longer an extension, use --disable-negotiateauth to disable.])
5516     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|auth||g'`
5519 if test `echo "$MOZ_EXTENSIONS" | grep -c xmlextras` -ne 0; then
5520     AC_MSG_WARN([xmlextras is no longer an extension, use --disable-xmlextras to disable.])
5521     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xmlextras||g'`
5524 if test `echo "$MOZ_EXTENSIONS" | grep -c 'cookie\|permissions'` -ne 0; then
5525     AC_MSG_WARN([cookie and permissions are no longer extensions, use --disable-permissions to disable.])
5526     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|cookie||g; s|permissions||g'`
5529 if test `echo "$MOZ_EXTENSIONS" | grep -c webservices` -ne 0; then
5530     AC_MSG_WARN([webservices is no longer an extension, use --disable-webservices to disable.])
5531     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|webservices||g'`
5534 if test `echo "$MOZ_EXTENSIONS" | grep -c pref` -ne 0; then
5535     AC_MSG_WARN([pref is no longer an extension, use --disable-pref-extensions to disable.])
5536     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|pref||g'`
5539 if test `echo "$MOZ_EXTENSIONS" | grep -c universalchardet` -ne 0; then
5540     AC_MSG_WARN([universalchardet is no longer an extension, use --disable-universalchardet to disable.])
5541     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|universalchardet||g'`
5544 if test `echo "$MOZ_EXTENSIONS" | grep -c java` -ne 0; then
5545     AC_MSG_WARN([java is no longer an extension, use --enable-javaxpcom to enable.])
5546     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|java||g'`
5549 if test `echo "$MOZ_EXTENSIONS" | grep -c spellcheck` -ne 0; then
5550     AC_MSG_WARN([spellcheck is no longer an extension.])
5551     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|spellcheck||g'`
5554 if test -n "$MOZ_NO_XPCOM_OBSOLETE" && test `echo "$MOZ_EXTENSIONS" | grep -c sroaming` -ne 0; then
5555     AC_MSG_WARN([Cannot currently build sroaming without xpcom obsolete -- bug 249343. Removing sroaming from MOZ_EXTENSIONS.])
5556     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|sroaming||'`
5559 dnl Remove dupes
5560 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
5562 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
5563 dnl when trying to build a non-existent extension.
5564 for extension in $MOZ_EXTENSIONS; do
5565     if test ! -d "${srcdir}/extensions/${extension}"; then
5566         AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
5567     fi
5568 done
5571 dnl ========================================================
5572 dnl Image decoders
5573 dnl ========================================================
5574 case "$MOZ_WIDGET_TOOLKIT" in
5575 beos|windows|os2|mac|cocoa)
5576     ;;
5578     if test -z "$MOZ_ENABLE_GTK2"; then
5579        MOZ_IMG_DECODERS_DEFAULT=`echo $MOZ_IMG_DECODERS_DEFAULT | sed -e 's|icon||'`                
5580     fi
5581     ;;
5582 esac
5584 MOZ_ARG_ENABLE_STRING(image-decoders,
5585 [  --enable-image-decoders[={mod1,mod2,default,all,none}]
5586                           Enable specific image decoders],
5587 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5588     if test "$option" = "yes" || test "$option" = "all"; then
5589         MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5590     elif test "$option" = "no" || test "$option" = "none"; then
5591         MOZ_IMG_DECODERS=""
5592     elif test "$option" = "default"; then
5593         MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5594     elif test `echo "$option" | grep -c \^-` != 0; then
5595         option=`echo $option | sed 's/^-//'`
5596         MOZ_IMG_DECODERS=`echo "$MOZ_IMG_DECODERS" | sed "s/ ${option}//"`
5597     else
5598         MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $option"
5599     fi
5600 done],
5601     MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS_DEFAULT")
5603 dnl Dupes are removed in the encoder section because it will also add decoders
5605 dnl ========================================================
5606 dnl Image encoders
5607 dnl ========================================================
5608 MOZ_ARG_ENABLE_STRING(image-encoders,
5609 [  --enable-image-encoders[={mod1,mod2,default,all,none}]
5610                           Enable specific image encoders],
5611 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5612     if test "$option" = "yes" || test "$option" = "all"; then
5613         addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5614     elif test "$option" = "no" || test "$option" = "none"; then
5615         MOZ_IMG_ENCODERS=""
5616         addencoder=""
5617     elif test "$option" = "default"; then
5618         addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5619     elif test `echo "$option" | grep -c \^-` != 0; then
5620         option=`echo $option | sed 's/^-//'`
5621         addencoder=`echo "$MOZ_IMG_ENCODERS" | sed "s/ ${option}//"`
5622     else
5623         addencoder="$option"
5624     fi
5625     MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS $addencoder"
5626 done],
5627     MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS_DEFAULT")
5629 dnl Remove dupes
5630 MOZ_IMG_DECODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_DECODERS}`
5631 MOZ_IMG_ENCODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_ENCODERS}`
5633 dnl ========================================================
5634 dnl experimental ldap features
5635 dnl ========================================================
5636 MOZ_ARG_ENABLE_BOOL(ldap-experimental,
5637 [  --enable-ldap-experimental
5638                           Enable LDAP experimental features],
5639     MOZ_LDAP_XPCOM_EXPERIMENTAL=1,
5640     MOZ_LDAP_XPCOM_EXPERIMENTAL=)
5642 dnl ========================================================
5643 dnl MathML on by default
5644 dnl ========================================================
5645 MOZ_ARG_DISABLE_BOOL(mathml,
5646 [  --disable-mathml        Disable MathML support],
5647     MOZ_MATHML=,
5648     MOZ_MATHML=1 )
5649 if test "$MOZ_MATHML"; then
5650   AC_DEFINE(MOZ_MATHML)
5653 dnl ========================================================
5654 dnl Canvas
5655 dnl ========================================================
5656 MOZ_ARG_DISABLE_BOOL(canvas,
5657 [  --disable-canvas          Disable html:canvas feature],
5658     MOZ_ENABLE_CANVAS=,
5659     MOZ_ENABLE_CANVAS=1 )
5660 if test -n "$MOZ_ENABLE_CANVAS"; then
5661     AC_DEFINE(MOZ_ENABLE_CANVAS)
5663 AC_SUBST(MOZ_ENABLE_CANVAS)
5665 dnl ========================================================
5666 dnl SVG
5667 dnl ========================================================
5668 MOZ_ARG_DISABLE_BOOL(svg,
5669 [  --disable-svg            Disable SVG support],
5670     MOZ_SVG=,
5671     MOZ_SVG=1 )
5672 if test -n "$MOZ_SVG"; then
5673   AC_DEFINE(MOZ_SVG)
5676 MOZ_SVG_FOREIGNOBJECT=1
5677 dnl ========================================================
5678 dnl SVG <foreignObject>
5679 dnl ========================================================
5680 MOZ_ARG_DISABLE_BOOL(svg-foreignobject,
5681    [  --disable-svg-foreignobject
5682                         Disable SVG <foreignObject> support],
5683    MOZ_SVG_FOREIGNOBJECT=,
5684    MOZ_SVG_FOREIGNOBJECT=1 )
5685 if test "$MOZ_SVG_FOREIGNOBJECT"; then
5686   if test "$MOZ_SVG"; then
5687     AC_DEFINE(MOZ_SVG_FOREIGNOBJECT)
5688   else
5689     MOZ_SVG_FOREIGNOBEJCT=
5690   fi
5693 dnl ========================================================
5694 dnl Installer
5695 dnl ========================================================
5696 case "$target_os" in
5697     aix*|solaris*|linux*|msvc*|mks*|cygwin*|mingw*|os2*|wince*)
5698         MOZ_INSTALLER=1
5699         ;;
5700 esac
5702 MOZ_ARG_DISABLE_BOOL(installer,
5703 [  --disable-installer     Disable building of installer],
5704     MOZ_INSTALLER=,
5705     MOZ_INSTALLER=1 )
5706 if test -n "$MOZ_INSTALLER" -a -n "$MOZ_XUL_APP" -a "$OS_ARCH" = "WINNT"; then
5707     # Disable installer for Windows builds that use the new toolkit if NSIS
5708     # isn't in the path.
5709     AC_PATH_PROGS(MAKENSIS, makensis)
5710     if test -z "$MAKENSIS" || test "$MAKENSIS" = ":"; then
5711         AC_MSG_ERROR([To build the installer makensis is required in your path. To build without the installer reconfigure using --disable-installer.])
5712     fi
5713     # The Windows build for NSIS requires the iconv command line utility to
5714     # convert the charset of the locale files.
5715     AC_PATH_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5716     if test -z "$HOST_ICONV"; then
5717         AC_MSG_ERROR([To build the installer iconv is required in your path. To build without the installer reconfigure using --disable-installer.])
5718     fi
5721 # Automatically disable installer if xpinstall isn't built
5722 if test -z "$MOZ_XPINSTALL"; then
5723     MOZ_INSTALLER=
5725 AC_SUBST(MOZ_INSTALLER)
5727 AC_MSG_CHECKING([for tar archiver])
5728 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
5729 if test -z "$TAR"; then
5730     AC_MSG_ERROR([no tar archiver found in \$PATH])
5732 AC_MSG_RESULT([$TAR])
5733 AC_SUBST(TAR)
5735 dnl ========================================================
5736 dnl Updater
5737 dnl ========================================================
5739 MOZ_ARG_DISABLE_BOOL(updater,
5740 [  --disable-updater       Disable building of updater],
5741     MOZ_UPDATER=,
5742     MOZ_UPDATER=1 )
5743 # The Windows build requires the iconv command line utility
5744 # in order to build the updater.
5745 case "$target_os" in
5746     msvc*|mks*|cygwin*|mingw*|wince*)
5747         if test -n "$MOZ_UPDATER"; then
5748             AC_MSG_CHECKING([for iconv])
5749             AC_CHECK_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5750             if test -z "$HOST_ICONV"; then
5751                 AC_MSG_ERROR([iconv not found in \$PATH])
5752             fi
5753         fi
5754         ;;
5755 esac
5756 AC_SUBST(MOZ_UPDATER)
5758 # app update channel is 'default' when not supplied.
5759 MOZ_ARG_ENABLE_STRING([update-channel],
5760 [  --enable-update-channel=CHANNEL
5761                            Select application update channel (default=default)],
5762     MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
5764 if test -z "$MOZ_UPDATE_CHANNEL"; then
5765     MOZ_UPDATE_CHANNEL=default
5767 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
5769 # tools/update-packaging is not checked out by default.
5770 MOZ_ARG_ENABLE_BOOL(update-packaging,
5771 [  --enable-update-packaging
5772                            Enable tools/update-packaging],
5773     MOZ_UPDATE_PACKAGING=1,
5774     MOZ_UPDATE_PACKAGING= )
5775 AC_SUBST(MOZ_UPDATE_PACKAGING)
5777 dnl ========================================================
5778 dnl ActiveX
5779 dnl ========================================================
5781 MOZ_ARG_DISABLE_BOOL(xpconnect-idispatch,
5782 [  --disable-xpconnect-idispatch
5783                           Disable building of xpconnect support for IDispatch
5784                           (win32 only)],
5785     XPC_IDISPATCH_SUPPORT=,
5786     XPC_IDISPATCH_SUPPORT=1)
5787 AC_SUBST(XPC_IDISPATCH_SUPPORT)
5789 MOZ_ARG_DISABLE_BOOL(activex,
5790 [  --disable-activex       Disable building of ActiveX control (win32 only)],
5791     MOZ_NO_ACTIVEX_SUPPORT=1,
5792     MOZ_NO_ACTIVEX_SUPPORT= )
5793 AC_SUBST(MOZ_NO_ACTIVEX_SUPPORT)
5795 MOZ_ARG_DISABLE_BOOL(activex-scripting,
5796 [  --disable-activex-scripting
5797                           Disable building of ActiveX scripting support (win32)],
5798     MOZ_ACTIVEX_SCRIPTING_SUPPORT=,
5799     MOZ_ACTIVEX_SCRIPTING_SUPPORT=1)
5800 AC_SUBST(MOZ_ACTIVEX_SCRIPTING_SUPPORT)
5802 if test -n "$MOZ_NO_ACTIVEX_SUPPORT" -a -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT";
5803 then
5804     AC_MSG_ERROR([Cannot enable ActiveX scripting support when ActiveX support is disabled.])
5807 if test -n "$XPC_IDISPATCH_SUPPORT" -o -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
5808 case "$target" in
5809 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5810     if test "$ac_cv_header_atlbase_h" = "no"; then
5811         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.])
5812     fi
5813     ;;
5814 esac
5817 dnl ========================================================
5818 dnl leaky
5819 dnl ========================================================
5820 MOZ_ARG_ENABLE_BOOL(leaky,
5821 [  --enable-leaky          Build leaky memory tool],
5822     MOZ_LEAKY=1,
5823     MOZ_LEAKY=)
5826 dnl ========================================================
5827 dnl xpctools
5828 dnl ========================================================
5829 MOZ_ARG_ENABLE_BOOL(xpctools,
5830 [  --enable-xpctools       Build JS profiling tool],
5831     MOZ_XPCTOOLS=1,
5832     MOZ_XPCTOOLS= )
5835 dnl ========================================================
5836 dnl build the tests by default
5837 dnl ========================================================
5838 MOZ_ARG_DISABLE_BOOL(tests,
5839 [  --disable-tests         Do not build test libraries & programs],
5840     ENABLE_TESTS=,
5841     ENABLE_TESTS=1 )
5843 dnl ========================================================
5844 dnl parental controls (for Windows Vista)
5845 dnl ========================================================
5846 MOZ_ARG_DISABLE_BOOL(parental-controls,
5847 [  --disable-parental-controls
5848                            Do not build parental controls],
5849    MOZ_DISABLE_PARENTAL_CONTROLS=1,
5850    MOZ_DISABLE_PARENTAL_CONTROLS=)
5851 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5852     AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5855 dnl ========================================================
5856 dnl Vista SDK specific api
5857 dnl ========================================================
5858 MOZ_ARG_DISABLE_BOOL(vista-sdk-requirements,
5859 [  --disable-vista-sdk-requirements
5860                            Do not build Vista SDK specific code],
5861    MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=1,
5862    MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=)
5863 if test -n "$MOZ_DISABLE_VISTA_SDK_REQUIREMENTS"; then
5864     AC_MSG_WARN([Resulting builds will not be compatible with Windows Vista. (bug 428970)])
5865     AC_DEFINE(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
5866     if test -z "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5867         AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5868     fi
5869     MOZ_DISABLE_PARENTAL_CONTROLS=1
5870 else
5871 case "$target" in
5872 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5873     if test "$ac_cv_header_wpcapi_h" = "no"; then
5874         AC_MSG_ERROR([System header wpcapi.h is not available. See updated http://developer.mozilla.org/en/docs/wpcapi.h for details on fixing this problem.])
5875     fi
5876     ;;
5877 esac
5879 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
5880 AC_SUBST(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
5882 dnl ========================================================
5883 dnl =
5884 dnl = Module specific options
5885 dnl =
5886 dnl ========================================================
5887 MOZ_ARG_HEADER(Individual module options)
5889 dnl ========================================================
5890 dnl = Enable Lea malloc in xpcom. OFF by default.
5891 dnl ========================================================
5892 MOZ_ARG_ENABLE_BOOL(xpcom-lea,
5893 [  --enable-xpcom-lea      Use Lea malloc in xpcom ],
5894     XPCOM_USE_LEA=1,
5895     XPCOM_USE_LEA= )
5896 if test -n "$XPCOM_USE_LEA"; then
5897     AC_DEFINE(XPCOM_USE_LEA)
5900 dnl ========================================================
5901 dnl = Enable places (new history/bookmarks)
5902 dnl ========================================================
5903 MOZ_ARG_ENABLE_BOOL(places,
5904 [  --enable-places        Enable 'places' bookmark/history implementation],
5905     MOZ_PLACES=1,
5906     MOZ_PLACES= )
5907 if test -n "$MOZ_PLACES"; then
5908     AC_DEFINE(MOZ_PLACES)
5909     if test -z "$MOZ_MAIL_NEWS"; then
5910       MOZ_MORK=
5911     fi
5912     MOZ_MORKREADER=1
5913 else
5914   if test "$MOZ_BUILD_APP" = "browser"; then
5915     AC_MSG_ERROR([Cannot build Firefox with --disable-places.])
5916   fi
5919 dnl ========================================================
5920 dnl = Disable feed handling components
5921 dnl ========================================================
5922 MOZ_ARG_DISABLE_BOOL(feeds,
5923 [  --disable-feeds        Disable feed handling and processing components],
5924     MOZ_FEEDS=,
5925     MOZ_FEEDS=1 )
5926 if test -n "$MOZ_FEEDS"; then
5927     AC_DEFINE(MOZ_FEEDS)
5928 else
5929     if test "$MOZ_BUILD_APP" = "browser"; then
5930         AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
5931     fi
5934 dnl ========================================================
5935 dnl = Enable mozStorage
5936 dnl ========================================================
5937 dnl Implicitly enabled by default if building calendar or places
5938 MOZ_ARG_ENABLE_BOOL(storage,
5939 [  --enable-storage        Enable mozStorage module and related components],
5940     MOZ_STORAGE=1,
5941     MOZ_STORAGE= )
5942 if test -n "$MOZ_STORAGE"; then
5943     AC_DEFINE(MOZ_STORAGE)
5946 dnl ========================================================
5947 dnl Check for sqlite
5948 dnl ========================================================
5950 MOZ_NATIVE_SQLITE=
5951 MOZ_ARG_ENABLE_BOOL(system-sqlite,
5952 [  --enable-system-sqlite  Use system sqlite (located with pkgconfig)],
5953 MOZ_NATIVE_SQLITE=1,
5954 MOZ_NATIVE_SQLITE= )
5956 if test -z "$MOZ_NATIVE_SQLITE"
5957 then
5958     SQLITE_CFLAGS=
5959     SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,sqlite3,$(DIST)/lib)'
5960 else
5961     PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
5964 AC_SUBST(MOZ_NATIVE_SQLITE)
5966 dnl = Enable help viewer (off by default)
5967 dnl ========================================================
5968 MOZ_ARG_ENABLE_BOOL(help-viewer,
5969 [  --enable-help-viewer        Enable help viewer],
5970     MOZ_HELP_VIEWER=1,
5971     MOZ_HELP_VIEWER= )
5972 if test -n "$MOZ_HELP_VIEWER"; then
5973      AC_DEFINE(MOZ_HELP_VIEWER)
5975 AC_SUBST(MOZ_HELP_VIEWER)
5977 dnl ========================================================
5978 dnl = Enable safe browsing (anti-phishing)
5979 dnl ========================================================
5980 MOZ_ARG_ENABLE_BOOL(safe-browsing,
5981 [  --enable-safe-browsing        Enable safe browsing (anti-phishing) implementation],
5982     MOZ_SAFE_BROWSING=1,
5983     MOZ_SAFE_BROWSING= )
5984 if test -n "$MOZ_SAFE_BROWSING"; then
5985     AC_DEFINE(MOZ_SAFE_BROWSING)
5987 AC_SUBST(MOZ_SAFE_BROWSING)
5989 dnl ========================================================
5990 dnl = Enable url-classifier
5991 dnl ========================================================
5992 dnl Implicitly enabled by default if building with safe-browsing
5993 if test -n "$MOZ_SAFE_BROWSING"; then
5994     MOZ_URL_CLASSIFIER=1
5996 MOZ_ARG_ENABLE_BOOL(url-classifier,
5997 [  --enable-url-classifier        Enable url classifier module],
5998     MOZ_URL_CLASSIFIER=1,
5999     MOZ_URL_CLASSIFIER= )
6000 if test -n "$MOZ_URL_CLASSIFIER"; then
6001     AC_DEFINE(MOZ_URL_CLASSIFIER)
6003 AC_SUBST(MOZ_URL_CLASSIFIER)
6005 dnl ========================================================
6006 dnl = Disable zipwriter
6007 dnl ========================================================
6008 MOZ_ARG_DISABLE_BOOL(zipwriter,
6009 [  --disable-zipwriter             Disable zipwriter component],
6010     MOZ_ZIPWRITER=,
6011     MOZ_ZIPWRITER=1 )
6012 AC_SUBST(MOZ_ZIPWRITER)
6014 dnl ========================================================
6015 dnl = Enable Ultrasparc specific optimizations for JS
6016 dnl ========================================================
6017 MOZ_ARG_ENABLE_BOOL(js-ultrasparc,
6018 [  --enable-js-ultrasparc  Use UltraSPARC optimizations in JS],
6019     JS_ULTRASPARC_OPTS=1,
6020     JS_ULTRASPARC_OPTS= )
6022 dnl only enable option for ultrasparcs
6023 if test `echo "$target_os" | grep -c \^solaris 2>/dev/null` = 0 -o \
6024     "$OS_TEST" != "sun4u"; then
6025     JS_ULTRASPARC_OPTS=
6027 AC_SUBST(JS_ULTRASPARC_OPTS)
6029 dnl ========================================================
6030 dnl =
6031 dnl = Feature options that require extra sources to be pulled
6032 dnl =
6033 dnl ========================================================
6034 dnl MOZ_ARG_HEADER(Features that require extra sources)
6036 dnl ========================================================
6037 dnl =
6038 dnl = Debugging Options
6039 dnl = 
6040 dnl ========================================================
6041 MOZ_ARG_HEADER(Debugging and Optimizations)
6043 dnl ========================================================
6044 dnl = Disable building with debug info.
6045 dnl = Debugging is OFF by default
6046 dnl ========================================================
6047 if test -z "$MOZ_DEBUG_FLAGS"
6048 then
6049     case "$target" in
6050     *-irix*)
6051         if test "$GNU_CC"; then
6052             GCC_VERSION=`$CC -v 2>&1 | awk '/version/ { print $3 }'`
6053             case "$GCC_VERSION" in
6054             2.95.*)
6055                 MOZ_DEBUG_FLAGS=""
6056                 ;;
6057             *)
6058                 MOZ_DEBUG_FLAGS="-g"
6059                 ;;
6060             esac
6061         else
6062             MOZ_DEBUG_FLAGS="-g"
6063         fi
6064         ;;
6065     *)
6066         MOZ_DEBUG_FLAGS="-g"
6067         ;;
6068     esac
6071 MOZ_ARG_ENABLE_STRING(debug,
6072 [  --enable-debug[=DBG]    Enable building with developer debug info
6073                           (Using compiler flags DBG)],
6074 [ if test "$enableval" != "no"; then
6075     MOZ_DEBUG=1
6076     if test -n "$enableval" && test "$enableval" != "yes"; then
6077         MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6078     fi
6079   else
6080     MOZ_DEBUG=
6081   fi ],
6082   MOZ_DEBUG=)
6084 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG"
6085  case "${target_os}" in
6086     beos*)
6087         MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${USER}"
6088         ;;
6089     msvc*|mks*|cygwin*|mingw*|os2*|wince*)
6090         MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
6091         ;;
6092     *) 
6093         MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`$WHOAMI`"
6094         ;;
6095   esac
6096 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DTRACING"
6098 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
6100 if test -n "$MOZ_DEBUG"; then
6101     AC_MSG_CHECKING([for valid debug flags])
6102     _SAVE_CFLAGS=$CFLAGS
6103     CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
6104     AC_TRY_COMPILE([#include <stdio.h>], 
6105         [printf("Hello World\n");],
6106         _results=yes,
6107         _results=no)
6108     AC_MSG_RESULT([$_results])
6109     if test "$_results" = "no"; then
6110         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
6111     fi
6112     CFLAGS=$_SAVE_CFLAGS
6115 dnl ========================================================
6116 dnl = Enable code optimization. ON by default.
6117 dnl ========================================================
6118 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6119         MOZ_OPTIMIZE_FLAGS="-O"
6122 MOZ_ARG_ENABLE_STRING(optimize,
6123 [  --disable-optimize      Disable compiler optimization
6124   --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6125 [ if test "$enableval" != "no"; then
6126     MOZ_OPTIMIZE=1
6127     if test -n "$enableval" && test "$enableval" != "yes"; then
6128         MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6129         MOZ_OPTIMIZE=2
6130     fi
6131 else
6132     MOZ_OPTIMIZE=
6133 fi ], MOZ_OPTIMIZE=1)
6135 if test "$COMPILE_ENVIRONMENT"; then
6136 if test -n "$MOZ_OPTIMIZE"; then
6137     AC_MSG_CHECKING([for valid optimization flags])
6138     _SAVE_CFLAGS=$CFLAGS
6139     CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6140     AC_TRY_COMPILE([#include <stdio.h>], 
6141         [printf("Hello World\n");],
6142         _results=yes,
6143         _results=no)
6144     AC_MSG_RESULT([$_results])
6145     if test "$_results" = "no"; then
6146         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6147     fi
6148     CFLAGS=$_SAVE_CFLAGS
6150 fi # COMPILE_ENVIRONMENT
6152 AC_SUBST(MOZ_OPTIMIZE)
6153 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6154 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6155 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6157 dnl ========================================================
6158 dnl = Enable/disable debug for specific modules only
6159 dnl =   module names beginning with ^ will be disabled 
6160 dnl ========================================================
6161 MOZ_ARG_ENABLE_STRING(debug-modules,
6162 [  --enable-debug-modules  Enable/disable debug info for specific modules],
6163 [ MOZ_DEBUG_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6165 dnl ========================================================
6166 dnl = Enable/disable generation of debugger info for specific modules only
6167 dnl =    the special module name ALL_MODULES can be used to denote all modules
6168 dnl =    module names beginning with ^ will be disabled
6169 dnl ========================================================
6170 MOZ_ARG_ENABLE_STRING(debugger-info-modules,
6171 [  --enable-debugger-info-modules
6172                           Enable/disable debugger info for specific modules],
6173 [ for i in `echo $enableval | sed 's/,/ /g'`; do
6174       dnl note that the list of module names is reversed as it is copied
6175       dnl this is important, as it will allow config.mk to interpret stuff like
6176       dnl "^ALL_MODULES xpcom" properly
6177       if test "$i" = "no"; then
6178         i="^ALL_MODULES"
6179       fi
6180       if test "$i" = "yes"; then
6181         i="ALL_MODULES"
6182       fi
6183       MOZ_DBGRINFO_MODULES="$i $MOZ_DBGRINFO_MODULES";
6184     done ])
6186 dnl ========================================================
6187 dnl Enable garbage collector
6188 dnl ========================================================
6189 MOZ_ARG_ENABLE_BOOL(boehm,
6190 [  --enable-boehm          Enable the Boehm Garbage Collector],
6191     GC_LEAK_DETECTOR=1,
6192     GC_LEAK_DETECTOR= )
6193 if test -n "$GC_LEAK_DETECTOR"; then
6194     AC_DEFINE(GC_LEAK_DETECTOR)
6197 dnl ========================================================
6198 dnl Disable runtime logging checks
6199 dnl ========================================================
6200 MOZ_ARG_DISABLE_BOOL(logging,
6201 [  --disable-logging       Disable logging facilities],
6202     NS_DISABLE_LOGGING=1,
6203     NS_DISABLE_LOGGING= )
6204 if test "$NS_DISABLE_LOGGING"; then
6205     AC_DEFINE(NS_DISABLE_LOGGING)
6206 else
6207     AC_DEFINE(MOZ_LOGGING)
6210 dnl ========================================================
6211 dnl = dnl This will enable logging of addref, release, ctor, dtor.
6212 dnl ========================================================
6213 _ENABLE_LOGREFCNT=42
6214 MOZ_ARG_ENABLE_BOOL(logrefcnt,
6215 [  --enable-logrefcnt      Enable logging of refcounts (default=debug) ],
6216     _ENABLE_LOGREFCNT=1,
6217     _ENABLE_LOGREFCNT= )
6218 if test "$_ENABLE_LOGREFCNT" = "1"; then
6219     AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
6220 elif test -z "$_ENABLE_LOGREFCNT"; then
6221     AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
6224 dnl ========================================================
6225 dnl = Enable trace malloc
6226 dnl ========================================================
6227 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
6228 MOZ_ARG_ENABLE_BOOL(trace-malloc,
6229 [  --enable-trace-malloc   Enable malloc tracing],
6230     NS_TRACE_MALLOC=1,
6231     NS_TRACE_MALLOC= )
6232 if test "$NS_TRACE_MALLOC"; then
6233   # Please, Mr. Linker Man, don't take away our symbol names
6234   MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6235   USE_ELF_DYNSTR_GC=
6236   AC_DEFINE(NS_TRACE_MALLOC)
6238 AC_SUBST(NS_TRACE_MALLOC)
6240 dnl ========================================================
6241 dnl = Enable jemalloc
6242 dnl ========================================================
6243 MOZ_ARG_ENABLE_BOOL(jemalloc,
6244 [  --enable-jemalloc       Replace memory allocator with jemalloc],
6245     MOZ_MEMORY=1,
6246     MOZ_MEMORY=)
6248 if test "$NS_TRACE_MALLOC"; then
6249     MOZ_MEMORY=
6252 if test "$MOZ_MEMORY"; then
6254   dnl Don't try to run compiler tests on Windows  
6255   if test "$OS_ARCH" = "WINNT"; then
6256     if test -z "$HAVE_64BIT_OS"; then
6257       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6258     else
6259       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6260     fi
6261   else
6262     AC_CHECK_SIZEOF([int *], [4])
6263     case "${ac_cv_sizeof_int_p}" in
6264     4)
6265       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6266       ;;
6267     8)
6268       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6269       ;;
6270     *)
6271       AC_MSG_ERROR([Unexpected pointer size])
6272       ;;
6273     esac
6274   fi
6276   AC_DEFINE(MOZ_MEMORY)
6277   if test "x$MOZ_DEBUG" = "x1"; then
6278     AC_DEFINE(MOZ_MEMORY_DEBUG)
6279   fi
6280   dnl The generic feature tests that determine how to compute ncpus are long and
6281   dnl complicated.  Therefore, simply define special cpp variables for the
6282   dnl platforms we have special knowledge of.
6283   case "${target_os}" in
6284   darwin*)
6285     AC_DEFINE(MOZ_MEMORY_DARWIN)
6286     ;;
6287   *-freebsd*)
6288     AC_DEFINE(MOZ_MEMORY_BSD)
6289     ;;
6290   *linux*)
6291     AC_DEFINE(MOZ_MEMORY_LINUX)
6292     ;;
6293   netbsd*)
6294     AC_DEFINE(MOZ_MEMORY_BSD)
6295     ;;
6296   solaris*)
6297     AC_DEFINE(MOZ_MEMORY_SOLARIS)
6298     ;;
6299   msvc*|mks*|cygwin*|mingw*)
6300     AC_DEFINE(MOZ_MEMORY_WINDOWS)
6301     dnl XXX: should test for vc8sp1 here, otherwise patching the crt src
6302     dnl will fail miserably
6303     if test "$_CC_SUITE" -lt "8"; then
6304         AC_MSG_ERROR([Building jemalloc requires Visual C++ 2005 or better])
6305     fi
6306     if test -z "$WIN32_CRT_SRC_DIR" -a -z "$WIN32_CUSTOM_CRT_DIR"; then
6307       if test -z "$VCINSTALLDIR" -o ! -d "$VCINSTALLDIR"; then
6308         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.])
6309       else
6310         WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src"
6311       fi
6312     fi
6313     if test -z "$WIN32_CRT_SRC_DIR"; then
6314       # pre-built dll
6315       WIN32_CUSTOM_CRT_DIR=`cd "$WIN32_CUSTOM_CRT_DIR" && pwd`
6316       _WIN_UNIX_CRT_PATH="$WIN32_CUSTOM_CRT_DIR"
6317     else
6318       # CRT source directory
6319       WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd`
6320       _CRT_BASE_DIR=`basename "$WIN32_CRT_SRC_DIR"`
6321       _WIN_UNIX_CRT_PATH="$_objdir/memory/jemalloc/$_CRT_BASE_DIR/build/intel"
6322     fi
6323     dnl need win32 paths in LIB, hence this python abuse.  extra brackets
6324     dnl are to avoid m4
6325     _WIN_CRT_PATH=[`$PYTHON -c 'import sys, os.path; print os.path.normpath(sys.argv[1])' "$_WIN_UNIX_CRT_PATH"`]
6326     MOZ_LIB="$_WIN_CRT_PATH;$LIB"
6327     dnl Needs to be in PATH too, since our tools will wind up linked against it.
6328     dnl This needs to be unix style.
6329     MOZ_PATH="$PATH:$_WIN_UNIX_CRT_PATH"
6330     dnl Statically link the C++ stdlib.  We only use this for Breakpad anyway.
6331     AC_DEFINE(_STATIC_CPPLIB)
6332     dnl Don't generate a manifest, since we're linking to a custom CRT.
6333     LDFLAGS="$LDFLAGS -MANIFEST:NO"
6334     dnl Also pass this to NSPR/NSS
6335     DLLFLAGS="$DLLFLAGS -MANIFEST:NO"
6336     export DLLFLAGS
6337     ;;
6338   *)
6339     AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
6340     ;;
6341   esac
6343   AC_ARG_WITH([valgrind],
6344     [  --with-valgrind         Enable valgrind integration hooks],
6345     [enable_valgrind="yes"], [enable_valgrind="no"])
6346   AC_CHECK_HEADER([valgrind/valgrind.h], [], [enable_valgrind="no"])
6347   if test "x$enable_valgrind" = "xyes" ; then
6348     AC_DEFINE(MOZ_VALGRIND)
6349   fi
6351 AC_SUBST(MOZ_MEMORY)
6352 AC_SUBST(WIN32_CRT_SRC_DIR)
6353 AC_SUBST(WIN32_CUSTOM_CRT_DIR)
6354 AC_SUBST(MOZ_LIB)
6355 AC_SUBST(MOZ_PATH)
6356 dnl Need to set this for make because NSS doesn't have configure
6357 AC_SUBST(DLLFLAGS)
6359 dnl ========================================================
6360 dnl = Use malloc wrapper lib
6361 dnl ========================================================
6362 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
6363 [  --enable-wrap-malloc    Wrap malloc calls (gnu linker only)],
6364     _WRAP_MALLOC=1,
6365     _WRAP_MALLOC= )
6367 if test -n "$_WRAP_MALLOC"; then
6368     if test "$GNU_CC"; then
6369     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"
6370     MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) -o $@'
6371     fi
6374 dnl ========================================================
6375 dnl = Location of malloc wrapper lib
6376 dnl ========================================================
6377 MOZ_ARG_WITH_STRING(wrap-malloc,
6378 [  --with-wrap-malloc=DIR  Location of malloc wrapper library],
6379     WRAP_MALLOC_LIB=$withval)
6381 dnl ========================================================
6382 dnl = Use Electric Fence
6383 dnl ========================================================
6384 MOZ_ARG_ENABLE_BOOL(efence,
6385 [  --enable-efence         Link with Electric Fence],
6386     _ENABLE_EFENCE=1,
6387     _ENABLE_EFENCE= )
6388 if test -n "$_ENABLE_EFENCE"; then
6389     AC_CHECK_LIB(efence,malloc)
6392 dnl ========================================================
6393 dnl jprof
6394 dnl ========================================================
6395 MOZ_ARG_ENABLE_BOOL(jprof,
6396 [  --enable-jprof          Enable jprof profiling tool (needs mozilla/tools/jprof)],
6397     MOZ_JPROF=1,
6398     MOZ_JPROF= )
6399 if test -n "$MOZ_JPROF"; then
6400     AC_DEFINE(MOZ_JPROF)
6403 dnl ========================================================
6404 dnl shark
6405 dnl ========================================================
6406 MOZ_ARG_ENABLE_BOOL(shark,
6407 [  --enable-shark          Enable shark remote profiling (needs CHUD framework)],
6408     MOZ_SHARK=1,
6409     MOZ_SHARK= )
6410 if test -n "$MOZ_SHARK"; then
6411     AC_DEFINE(MOZ_SHARK)
6414 dnl ========================================================
6415 dnl = Enable stripping of libs & executables
6416 dnl ========================================================
6417 MOZ_ARG_ENABLE_BOOL(strip,
6418 [  --enable-strip          Enable stripping of libs & executables ],
6419     ENABLE_STRIP=1,
6420     ENABLE_STRIP= )
6422 dnl ========================================================
6423 dnl = Enable stripping of libs & executables when packaging
6424 dnl ========================================================
6425 MOZ_ARG_ENABLE_BOOL(install-strip,
6426 [  --enable-install-strip  Enable stripping of libs & executables when packaging ],
6427     PKG_SKIP_STRIP= ,
6428     PKG_SKIP_STRIP=1)
6430 dnl ========================================================
6431 dnl = --enable-elf-dynstr-gc
6432 dnl ========================================================
6433 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
6434 [  --enable-elf-dynstr-gc  Enable elf dynstr garbage collector (opt builds only)],
6435     USE_ELF_DYNSTR_GC=1,
6436     USE_ELF_DYNSTR_GC= )
6438 dnl ========================================================
6439 dnl = --enable-old-abi-compat-wrappers
6440 dnl ========================================================
6441 dnl on x86 linux, the current builds of some popular plugins (notably
6442 dnl flashplayer and real) expect a few builtin symbols from libgcc
6443 dnl which were available in some older versions of gcc.  However,
6444 dnl they're _NOT_ available in newer versions of gcc (eg 3.1), so if
6445 dnl we want those plugin to work with a gcc-3.1 built binary, we need
6446 dnl to provide these symbols.  MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS defaults
6447 dnl to true on x86 linux, and false everywhere else.
6450 MOZ_ARG_ENABLE_BOOL(old-abi-compat-wrappers,
6451 [  --enable-old-abi-compat-wrappers
6452                           Support old GCC ABI symbols to ease the pain 
6453                           of the linux compiler change],
6454     MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1,
6455     MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS= )
6456 if test "$COMPILE_ENVIRONMENT"; then
6457 if test "$MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS"; then
6458     AC_LANG_SAVE
6459     AC_LANG_CPLUSPLUS
6460     AC_CHECK_FUNCS(__builtin_vec_new __builtin_vec_delete __builtin_new __builtin_delete __pure_virtual)
6461     AC_LANG_RESTORE
6462     AC_DEFINE(MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS)
6464 fi # COMPILE_ENVIRONMENT
6466 dnl ========================================================
6467 dnl = --enable-prebinding
6468 dnl ========================================================
6469 MOZ_ARG_ENABLE_BOOL(prebinding,
6470 [  --enable-prebinding     Enable prebinding (Mac OS X only)],
6471     USE_PREBINDING=1,
6472     USE_PREBINDING= )
6474 dnl ========================================================
6475 dnl = 
6476 dnl = Profiling and Instrumenting
6477 dnl = 
6478 dnl ========================================================
6479 MOZ_ARG_HEADER(Profiling and Instrumenting)
6481 dnl ========================================================
6482 dnl = Enable timeline service, which provides lightweight
6483 dnl = instrumentation of mozilla for performance measurement.
6484 dnl = Timeline is off by default.
6485 dnl ========================================================
6486 MOZ_ARG_ENABLE_BOOL(timeline,
6487 [  --enable-timeline       Enable timeline services ],
6488     MOZ_TIMELINE=1,
6489     MOZ_TIMELINE= )
6490 if test -n "$MOZ_TIMELINE"; then
6491     AC_DEFINE(MOZ_TIMELINE)
6494 dnl ========================================================
6495 dnl Turn on reflow counting
6496 dnl ========================================================
6497 MOZ_ARG_ENABLE_BOOL(reflow-perf,
6498 [  --enable-reflow-perf    Enable reflow performance tracing],
6499     MOZ_REFLOW_PERF=1,
6500     MOZ_REFLOW_PERF= )
6501 if test -n "$MOZ_REFLOW_PREF"; then
6502     AC_DEFINE(MOZ_REFLOW_PREF)
6504 AC_SUBST(MOZ_REFLOW_PERF)
6506 dnl ========================================================
6507 dnl Enable performance metrics.
6508 dnl ========================================================
6509 MOZ_ARG_ENABLE_BOOL(perf-metrics,
6510 [  --enable-perf-metrics   Enable performance metrics],
6511     MOZ_PERF_METRICS=1,
6512     MOZ_PERF_METRICS= )
6513 if test -n "$MOZ_PERF_METRICS"; then
6514     AC_DEFINE(MOZ_PERF_METRICS)
6517 dnl ========================================================
6518 dnl Enable code size metrics.
6519 dnl ========================================================
6520 MOZ_ARG_ENABLE_BOOL(codesighs,
6521 [  --enable-codesighs      Enable code size analysis tools],
6522     _ENABLE_CODESIGHS=1,
6523     _ENABLE_CODESIGHS= )
6524 if test -n "$_ENABLE_CODESIGHS"; then
6525     if test -d $srcdir/tools/codesighs; then 
6526         MOZ_MAPINFO=1
6527     else
6528         AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
6529     fi
6532 dnl ========================================================
6533 dnl = Add support for Eazel profiler
6534 dnl ========================================================
6535 MOZ_ARG_ENABLE_BOOL(eazel-profiler-support,
6536 [  --enable-eazel-profiler-support
6537                           Enable Corel/Eazel profiler support],
6538     ENABLE_EAZEL_PROFILER=1,
6539     ENABLE_EAZEL_PROFILER= )
6540 if test -n "$ENABLE_EAZEL_PROFILER"; then
6541     AC_DEFINE(ENABLE_EAZEL_PROFILER)
6542     USE_ELF_DYNSTR_GC=
6543     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6544     EAZEL_PROFILER_CFLAGS="-g -O -gdwarf-2 -finstrument-functions -D__NO_STRING_INLINES  -D__NO_MATH_INLINES"
6545     EAZEL_PROFILER_LIBS="-lprofiler -lpthread"
6548 MOZ_ARG_ENABLE_STRING(profile-modules,
6549 [  --enable-profile-modules
6550                           Enable/disable profiling for specific modules],
6551 [ MOZ_PROFILE_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6553 MOZ_ARG_ENABLE_BOOL(insure,
6554 [  --enable-insure         Enable insure++ instrumentation (linux only)],
6555     _ENABLE_INSURE=1,
6556     _ENABLE_INSURE= )
6557 if test -n "$_ENABLE_INSURE"; then
6558     MOZ_INSURE="insure"
6559     MOZ_INSURIFYING=1
6560     MOZ_INSURE_DIRS="."
6561     MOZ_INSURE_EXCLUDE_DIRS="config"
6564 MOZ_ARG_WITH_STRING(insure-dirs,
6565 [  --with-insure-dirs=DIRS
6566                           Dirs to instrument with insure ],
6567     MOZ_INSURE_DIRS=$withval )
6569 MOZ_ARG_WITH_STRING(insure-exclude-dirs,
6570 [  --with-insure-exclude-dirs=DIRS
6571                           Dirs to not instrument with insure ],
6572     MOZ_INSURE_EXCLUDE_DIRS="config $withval" )
6574 dnl ========================================================
6575 dnl = Support for Quantify (Windows)
6576 dnl ========================================================
6577 MOZ_ARG_ENABLE_BOOL(quantify,
6578 [  --enable-quantify      Enable Quantify support (Windows only) ],
6579     MOZ_QUANTIFY=1,
6580     MOZ_QUANTIFY= )
6582 dnl ========================================================
6583 dnl = Support for demangling undefined symbols
6584 dnl ========================================================
6585 if test -z "$SKIP_LIBRARY_CHECKS"; then
6586     AC_LANG_SAVE
6587     AC_LANG_CPLUSPLUS
6588     AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
6589     AC_LANG_RESTORE
6592 # Demangle only for debug or trace-malloc builds
6593 MOZ_DEMANGLE_SYMBOLS=
6594 if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
6595     MOZ_DEMANGLE_SYMBOLS=1
6596     AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
6598 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
6600 dnl ========================================================
6601 dnl = Support for gcc stack unwinding (from gcc 3.3)
6602 dnl ========================================================
6603 if test "$HAVE_GCC3_ABI" && test -z "$SKIP_LIBRARY_CHECKS"; then
6604     AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
6607 dnl ========================================================
6608 dnl =
6609 dnl = Misc. Options
6610 dnl = 
6611 dnl ========================================================
6612 MOZ_ARG_HEADER(Misc. Options)
6614 dnl ========================================================
6615 dnl update xterm title
6616 dnl ========================================================
6617 MOZ_ARG_ENABLE_BOOL(xterm-updates,
6618 [  --enable-xterm-updates  Update XTERM titles with current command.],
6619     MOZ_UPDATE_XTERM=1,
6620     MOZ_UPDATE_XTERM= )
6622 dnl =========================================================
6623 dnl = Chrome format
6624 dnl =========================================================
6625 MOZ_ARG_ENABLE_STRING([chrome-format],
6626 [  --enable-chrome-format=jar|flat|both|symlink
6627                           Select FORMAT of chrome files (default=jar)],
6628     MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
6630 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
6631     MOZ_CHROME_FILE_FORMAT=jar
6634 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" && 
6635     test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
6636     test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
6637     test "$MOZ_CHROME_FILE_FORMAT" != "both"; then
6638     AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, or symlink])
6641 dnl ========================================================
6642 dnl = Define default location for MOZILLA_FIVE_HOME
6643 dnl ========================================================
6644 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
6645 [  --with-default-mozilla-five-home
6646                           Set the default value for MOZILLA_FIVE_HOME],
6647 [ val=`echo $withval`
6648   AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
6650 dnl ========================================================
6651 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
6652 dnl ========================================================
6653 MOZ_ARG_WITH_STRING(user-appdir,
6654 [  --with-user-appdir=DIR  Set user-specific appdir (default=.mozilla)],
6655 [ val=`echo $withval`
6656 if echo "$val" | grep "\/" >/dev/null; then
6657     AC_MSG_ERROR("Homedir must be single relative path.")
6658 else 
6659     MOZ_USER_DIR="$val"
6660 fi])
6662 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
6664 dnl ========================================================
6665 dnl = Doxygen configuration
6666 dnl ========================================================
6667 dnl Use commas to specify multiple dirs to this arg
6668 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
6669 MOZ_ARG_WITH_STRING(doc-input-dirs,
6670 [  --with-doc-input-dirs=DIRS
6671                           Header/idl dirs to create docs from],
6672 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6673 AC_SUBST(MOZ_DOC_INPUT_DIRS)
6675 dnl Use commas to specify multiple dirs to this arg
6676 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
6677 MOZ_ARG_WITH_STRING(doc-include-dirs,
6678 [  --with-doc-include-dirs=DIRS  
6679                           Include dirs to preprocess doc headers],
6680 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6681 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
6683 MOZ_DOC_OUTPUT_DIR='./dist/docs'
6684 MOZ_ARG_WITH_STRING(doc-output-dir,
6685 [  --with-doc-output-dir=DIR
6686                           Dir to generate docs into],
6687 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
6688 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
6690 if test -z "$SKIP_COMPILER_CHECKS"; then
6691 dnl ========================================================
6692 dnl =
6693 dnl = Compiler Options
6694 dnl = 
6695 dnl ========================================================
6696 MOZ_ARG_HEADER(Compiler Options)
6698 dnl ========================================================
6699 dnl Check for gcc -pipe support
6700 dnl ========================================================
6701 AC_MSG_CHECKING([for gcc -pipe support])
6702 if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
6703     echo '#include <stdio.h>' > dummy-hello.c
6704     echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
6705     ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
6706     cat dummy-hello.s | ${AS_BIN} -o dummy-hello.S - 2>&5
6707     if test $? = 0; then
6708         _res_as_stdin="yes"
6709     else
6710         _res_as_stdin="no"
6711     fi
6712     if test "$_res_as_stdin" = "yes"; then
6713         _SAVE_CFLAGS=$CFLAGS
6714         CFLAGS="$CFLAGS -pipe"
6715         AC_TRY_COMPILE( [ #include <stdio.h> ],
6716             [printf("Hello World\n");],
6717             [_res_gcc_pipe="yes"],
6718             [_res_gcc_pipe="no"] )
6719         CFLAGS=$_SAVE_CFLAGS
6720     fi
6721     if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then
6722         _res="yes";
6723         CFLAGS="$CFLAGS -pipe"
6724         CXXFLAGS="$CXXFLAGS -pipe"
6725     else
6726         _res="no"
6727     fi
6728     rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
6729     AC_MSG_RESULT([$_res])
6730 else
6731     AC_MSG_RESULT([no])
6734 dnl pass -Wno-long-long to the compiler
6735 MOZ_ARG_ENABLE_BOOL(long-long-warning,
6736 [  --enable-long-long-warning 
6737                           Warn about use of non-ANSI long long type],
6738     _IGNORE_LONG_LONG_WARNINGS=,
6739     _IGNORE_LONG_LONG_WARNINGS=1)
6741 if test "$_IGNORE_LONG_LONG_WARNINGS"; then
6742      _SAVE_CFLAGS="$CFLAGS"
6743      CFLAGS="$CFLAGS ${_COMPILER_PREFIX}-Wno-long-long"
6744      AC_MSG_CHECKING([whether compiler supports -Wno-long-long])
6745      AC_TRY_COMPILE([], [return(0);], 
6746         [ _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6747           _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6748           result="yes" ], result="no")
6749      AC_MSG_RESULT([$result])
6750      CFLAGS="$_SAVE_CFLAGS"
6753 dnl ========================================================
6754 dnl Profile guided optimization
6755 dnl ========================================================
6756 dnl Test for profiling options
6757 dnl Under gcc 3.3, use -fprofile-arcs/-fbranch-probabilities
6758 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
6760 dnl Provide a switch to disable PGO even when called via profiledbuild.
6761 MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
6762 [  --disable-profile-guided-optimization
6763                            Don't build with PGO even if called via make profiledbuild],
6764 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
6765 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
6767 AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
6769 _SAVE_CFLAGS="$CFLAGS"
6770 CFLAGS="$CFLAGS -fprofile-generate"
6772 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
6773 AC_TRY_COMPILE([], [return 0;],
6774                [ PROFILE_GEN_CFLAGS="-fprofile-generate"
6775                  result="yes" ], result="no")
6776 AC_MSG_RESULT([$result])
6778 if test $result = "yes"; then
6779   PROFILE_GEN_LDFLAGS="-fprofile-generate"
6780   PROFILE_USE_CFLAGS="-fprofile-use"
6781   PROFILE_USE_LDFLAGS="-fprofile-use"
6782 else
6783   CFLAGS="$_SAVE_CFLAGS -fprofile-arcs"
6784   AC_MSG_CHECKING([whether C compiler supports -fprofile-arcs])
6785   AC_TRY_COMPILE([], [return 0;],
6786                  [ PROFILE_GEN_CFLAGS="-fprofile-arcs"
6787                    result="yes" ], result="no")
6788   AC_MSG_RESULT([$result])
6789   if test $result = "yes"; then
6790     PROFILE_USE_CFLAGS="-fbranch-probabilities"
6791   fi
6792   # don't really care, this is an old GCC
6793   PROFILE_GEN_LDFLAGS=
6794   PROFILE_USE_LDFLAGS=
6797 CFLAGS="$_SAVE_CFLAGS"
6799 if test -n "$INTEL_CC"; then
6800   PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
6801   PROFILE_GEN_LDFLAGS=
6802   PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
6803   PROFILE_USE_LDFLAGS=
6806 dnl Sun Studio on Solaris
6807 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
6808   PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
6809   PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
6810   if test "$CPU_ARCH" != "sparc"; then
6811     PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
6812     PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
6813   else
6814     PROFILE_USE_CFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
6815     PROFILE_USE_LDFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
6816   fi
6819 AC_SUBST(PROFILE_GEN_CFLAGS)
6820 AC_SUBST(PROFILE_GEN_LDFLAGS)
6821 AC_SUBST(PROFILE_USE_CFLAGS)
6822 AC_SUBST(PROFILE_USE_LDFLAGS)
6824 AC_LANG_CPLUSPLUS
6826 dnl ========================================================
6827 dnl Test for -pedantic bustage
6828 dnl ========================================================
6829 MOZ_ARG_DISABLE_BOOL(pedantic,
6830 [  --disable-pedantic      Issue all warnings demanded by strict ANSI C ],
6831 _PEDANTIC= )
6832 if test "$_PEDANTIC"; then
6833     _SAVE_CXXFLAGS=$CXXFLAGS
6834     CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
6835     AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
6836     AC_TRY_COMPILE([$configure_static_assert_macros],
6837                    [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
6838                    result="no", result="yes" )
6839     AC_MSG_RESULT([$result])
6840     CXXFLAGS="$_SAVE_CXXFLAGS"
6842     case "$result" in
6843     no)
6844         _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic"
6845         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
6846         ;;
6847     yes)
6848         AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic.  Reconfigure using --disable-pedantic. ])
6849         ;;
6850     esac
6853 dnl ========================================================
6854 dnl Test for correct temporary object destruction order
6855 dnl ========================================================
6856 dnl We want to make sure the compiler follows the C++ spec here as 
6857 dnl xpcom and the string classes depend on it (bug 235381).
6858 AC_MSG_CHECKING([for correct temporary object destruction order])
6859 AC_TRY_RUN([ class A {
6860              public:  A(int& x) : mValue(x) {}
6861                       ~A() { mValue--; }
6862                       operator char**() { return 0; }
6863              private:  int& mValue;
6864              };
6865              void func(char **arg) {}
6866              int m=2;
6867              void test() {
6868                   func(A(m));
6869                   if (m==1) m = 0;
6870              }
6871              int main() {
6872                  test();
6873                  return(m);
6874              }
6875              ],
6876      result="yes", result="no", result="maybe")
6877 AC_MSG_RESULT([$result])
6879 if test "$result" = "no"; then
6880     AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
6883 dnl ========================================================
6884 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
6885 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
6886 dnl raw pointers in nsCOMPtr.h.  (VC++ has the same bug.)
6887 dnl ========================================================
6888 _SAVE_CXXFLAGS=$CXXFLAGS
6889 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
6890 AC_CACHE_CHECK(for correct overload resolution with const and templates,
6891     ac_nscap_nonconst_opeq_bug,
6892     [AC_TRY_COMPILE([
6893                       template <class T>
6894                       class Pointer
6895                         {
6896                         public:
6897                           T* myPtr;
6898                         };
6899                       
6900                       template <class T, class U>
6901                       int operator==(const Pointer<T>& rhs, U* lhs)
6902                         {
6903                           return rhs.myPtr == lhs;
6904                         }
6905                       
6906                       template <class T, class U>
6907                       int operator==(const Pointer<T>& rhs, const U* lhs)
6908                         {
6909                           return rhs.myPtr == lhs;
6910                         }
6911                     ],
6912                     [
6913                       Pointer<int> foo;
6914                       const int* bar;
6915                       return foo == bar;
6916                     ],
6917                     ac_nscap_nonconst_opeq_bug="no",
6918                     ac_nscap_nonconst_opeq_bug="yes")])
6919 CXXFLAGS="$_SAVE_CXXFLAGS"
6921 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
6922     AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
6924 fi # SKIP_COMPILER_CHECKS
6926 dnl ========================================================
6927 dnl C++ rtti
6928 dnl Should be smarter and check that the compiler does indeed have rtti
6929 dnl ========================================================
6930 MOZ_ARG_ENABLE_BOOL(cpp-rtti,
6931 [  --enable-cpp-rtti       Enable C++ RTTI ],
6932 [ _MOZ_USE_RTTI=1 ],
6933 [ _MOZ_USE_RTTI= ])
6935 if test "$_MOZ_USE_RTTI"; then
6936    _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
6937 else
6938    _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
6941 AC_SUBST(_MOZ_RTTI_FLAGS_ON)
6943 dnl ========================================================
6944 dnl C++ exceptions (g++/egcs only - for now)
6945 dnl Should be smarter and check that the compiler does indeed have exceptions
6946 dnl ========================================================
6947 MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
6948 [  --enable-cpp-exceptions Enable C++ exceptions ],
6949 [ _MOZ_CPP_EXCEPTIONS=1 ],
6950 [ _MOZ_CPP_EXCEPTIONS= ])
6952 if test "$_MOZ_CPP_EXCEPTIONS"; then
6953     _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_ON
6954 else
6955     _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_OFF
6958 # Irix & OSF native compilers do not like exception declarations 
6959 # when exceptions are disabled
6960 if test -n "$MIPSPRO_CXX" -o -n "$COMPAQ_CXX" -o -n "$VACPP"; then
6961     AC_DEFINE(CPP_THROW_NEW, [])
6962 else
6963     AC_DEFINE(CPP_THROW_NEW, [throw()])
6965 AC_LANG_C
6967 dnl ========================================================
6968 dnl =
6969 dnl = Build depencency options
6970 dnl =
6971 dnl ========================================================
6972 MOZ_ARG_HEADER(Build dependencies)
6974 dnl ========================================================
6975 dnl = Do not auto generate dependency info
6976 dnl ========================================================
6977 MOZ_AUTO_DEPS=1
6978 MOZ_ARG_DISABLE_BOOL(auto-deps,
6979 [  --disable-auto-deps     Do not automatically generate dependency info],
6980     MOZ_AUTO_DEPS=,
6981     MOZ_AUTO_DEPS=1)
6983 if test -n "$MOZ_AUTO_DEPS"; then
6984 dnl ========================================================
6985 dnl = Use mkdepend instead of $CC -MD for dependency generation
6986 dnl ========================================================
6987 _cpp_md_flag=
6988 MOZ_ARG_DISABLE_BOOL(md,
6989 [  --disable-md            Do not use compiler-based dependencies ],
6990   [_cpp_md_flag=],
6991   [_cpp_md_flag=1],
6992   [dnl Default is to turn on -MD if using GNU-compatible compilers
6993    if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
6994      _cpp_md_flag=1
6995    fi
6996   dnl Default is to use -xM if using Sun Studio on Solaris
6997    if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
6998      _cpp_md_flag=1
6999    fi])
7000 if test "$_cpp_md_flag"; then
7001   COMPILER_DEPEND=1
7002   if test "$OS_ARCH" = "OpenVMS"; then
7003     _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(*F).pp))'
7004   else
7005     _DEPEND_CFLAGS='$(filter-out %/.pp,-Wp,-MD,$(MDDEPDIR)/$(*F).pp)'
7006   fi
7007   dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7008   if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
7009     _DEPEND_CFLAGS=
7010   fi
7011 else
7012   COMPILER_DEPEND=
7013   _USE_CPP_INCLUDE_FLAG=
7014   _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7015   _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7017 fi # MOZ_AUTO_DEPS
7018 MDDEPDIR='.deps'
7019 AC_SUBST(MOZ_AUTO_DEPS)
7020 AC_SUBST(COMPILER_DEPEND)
7021 AC_SUBST(MDDEPDIR)
7024 dnl ========================================================
7025 dnl =
7026 dnl = Static Build Options
7027 dnl =
7028 dnl ========================================================
7029 MOZ_ARG_HEADER(Static build options)
7031 MOZ_ARG_ENABLE_BOOL(static,
7032 [  --enable-static         Enable building of internal static libs],
7033     BUILD_STATIC_LIBS=1,
7034     BUILD_STATIC_LIBS=)
7036 dnl Disable libxul in debug builds, but not for xulrunner.
7037 if test -n "$MOZ_DEBUG" -a "$MOZ_BUILD_APP" != "xulrunner"; then
7038    MOZ_ENABLE_LIBXUL=
7041 MOZ_ARG_ENABLE_BOOL(libxul,
7042 [  --enable-libxul         Enable building of libxul],
7043     MOZ_ENABLE_LIBXUL=1,
7044     MOZ_ENABLE_LIBXUL=)
7046 if test -n "$MOZ_ENABLE_LIBXUL" -a -n "$BUILD_STATIC_LIBS"; then
7047         AC_MSG_ERROR([--enable-libxul is not compatible with --enable-static])
7050 if test -n "$MOZ_ENABLE_LIBXUL" -a -z "$MOZ_XUL_APP"; then
7051         AC_MSG_ERROR([--enable-libxul is only compatible with toolkit XUL applications.])
7054 if test -n "$MOZ_ENABLE_LIBXUL"; then
7055     XPCOM_LIBS="$LIBXUL_LIBS"
7056     AC_DEFINE(MOZ_ENABLE_LIBXUL)
7057 else
7058     if test -n "$BUILD_STATIC_LIBS"; then
7059         AC_DEFINE(MOZ_STATIC_BUILD)
7060     fi
7061     XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS"
7064 dnl ========================================================
7065 dnl = Force JS to be a static lib
7066 dnl ========================================================
7067 MOZ_ARG_ENABLE_BOOL(js-static-build,
7068 [  --enable-js-static-build  Force js to be a static lib],
7069     JS_STATIC_BUILD=1,
7070     JS_STATIC_BUILD= )
7072 AC_SUBST(JS_STATIC_BUILD)
7073         
7074 if test -n "$JS_STATIC_BUILD"; then
7075     AC_DEFINE(EXPORT_JS_API)
7077 if test -z "$BUILD_STATIC_LIBS"; then
7078     AC_MSG_ERROR([--enable-js-static-build is only compatible with --enable-static])
7083 dnl Disable static mail in debug builds, but not with libxul sdk.
7084 if test -n "$MOZ_DEBUG" -a -z "$LIBXUL_SDK"; then
7085    MOZ_STATIC_MAIL_BUILD=
7087 MOZ_ARG_ENABLE_BOOL(static-mail,
7088 [  --enable-static-mail Enable static mail build support],
7089     MOZ_STATIC_MAIL_BUILD=1,
7090     MOZ_STATIC_MAIL_BUILD= )
7092 if test "$MOZ_STATIC_MAIL_BUILD"; then
7093     AC_DEFINE(MOZ_STATIC_MAIL_BUILD)
7096 AC_SUBST(MOZ_STATIC_MAIL_BUILD)
7098 dnl ========================================================
7099 dnl =
7100 dnl = Standalone module options
7101 dnl = 
7102 dnl ========================================================
7103 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7105 dnl Check for GLib and libIDL.
7106 dnl ========================================================
7107 case "$target_os" in
7108 msvc*|mks*|cygwin*|mingw*|wince*)
7109     SKIP_IDL_CHECK="yes"
7110     ;;
7112     SKIP_IDL_CHECK="no"
7113     ;;
7114 esac
7116 if test -z "$COMPILE_ENVIRONMENT"; then
7117     SKIP_IDL_CHECK="yes"
7120 dnl = Allow users to disable libIDL checking for standalone modules
7121 MOZ_ARG_WITHOUT_BOOL(libIDL,
7122 [  --without-libIDL        Skip check for libIDL (standalone modules only)],
7123         SKIP_IDL_CHECK="yes")
7125 if test "$SKIP_IDL_CHECK" = "no"
7126 then
7127     _LIBIDL_FOUND=
7128     if test "$MACOS_SDK_DIR"; then 
7129       dnl xpidl, and therefore libIDL, is only needed on the build host.
7130       dnl Don't build it against the SDK, as that causes problems.
7131       _MACSAVE_CFLAGS="$CFLAGS"
7132       _MACSAVE_LIBS="$LIBS"
7133       _MACSAVE_LDFLAGS="$LDFLAGS"
7134       _MACSAVE_NEXT_ROOT="$NEXT_ROOT"
7135       changequote(,)
7136       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"`
7137       LIBS=`echo $LIBS|sed -e "s?-L${MACOS_SDK_DIR}/usr/lib[^ ]*??g"`
7138       LDFLAGS=`echo $LDFLAGS|sed -e "s?-Wl,-syslibroot,${MACOS_SDK_DIR}??g"`
7139       changequote([,])
7140       unset NEXT_ROOT
7141     fi
7143     if test "$MOZ_ENABLE_GTK2"; then
7144         PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0 glib-2.0 gobject-2.0, _LIBIDL_FOUND=1,_LIBIDL_FOUND=)
7145     fi
7146     dnl if no gtk/libIDL1 or gtk2/libIDL2 combination was found, fall back
7147     dnl to either libIDL1 or libIDL2.
7148     if test -z "$_LIBIDL_FOUND"; then
7149         AM_PATH_LIBIDL($LIBIDL_VERSION,_LIBIDL_FOUND=1)
7150         if test -z "$_LIBIDL_FOUND"; then
7151             PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0,_LIBIDL_FOUND=1)
7152         fi
7153     fi
7154     dnl
7155     dnl If we don't have a libIDL config program & not cross-compiling, 
7156     dnl     look for orbit-config instead.
7157     dnl
7158     if test -z "$_LIBIDL_FOUND" && test -z "$CROSS_COMPILE"; then
7159         AC_PATH_PROGS(ORBIT_CONFIG, $ORBIT_CONFIG orbit-config)
7160         if test -n "$ORBIT_CONFIG"; then
7161             AC_MSG_CHECKING([for ORBit libIDL usability])
7162                 _ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags`
7163             _ORBIT_LIBS=`${ORBIT_CONFIG} client --libs`
7164             _ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}`
7165             _ORBIT_LIB_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-L/); } }' -- ${_ORBIT_LIBS}`
7166             LIBIDL_CFLAGS="$_ORBIT_INC_PATH"
7167             LIBIDL_LIBS="$_ORBIT_LIB_PATH -lIDL -lglib"
7168             LIBIDL_CONFIG=
7169             _SAVE_CFLAGS="$CFLAGS"
7170             _SAVE_LIBS="$LIBS"
7171             CFLAGS="$LIBIDL_CFLAGS $CFLAGS"
7172             LIBS="$LIBIDL_LIBS $LIBS"
7173             AC_TRY_RUN([
7174 #include <stdlib.h>
7175 #include <libIDL/IDL.h>
7176 int main() {
7177   char *s;
7178   s=strdup(IDL_get_libver_string());
7179   if(s==NULL) {
7180     exit(1);
7181   }
7182   exit(0);
7184             ], [_LIBIDL_FOUND=1
7185                 result="yes"],
7186                [LIBIDL_CFLAGS=
7187                 LIBIDL_LIBS=
7188                 result="no"],
7189                [_LIBIDL_FOUND=1
7190                 result="maybe"] )
7191             AC_MSG_RESULT($result)
7192             CFLAGS="$_SAVE_CFLAGS"
7193             LIBS="$_SAVE_LIBS"
7194         fi
7195     fi
7196     if test -z "$_LIBIDL_FOUND"; then
7197         AC_MSG_ERROR([libIDL not found.
7198         libIDL $LIBIDL_VERSION or higher is required.])
7199     fi
7200     if test "$MACOS_SDK_DIR"; then
7201       CFLAGS="$_MACSAVE_CFLAGS"
7202       LIBS="$_MACSAVE_LIBS"
7203       LDFLAGS="$_MACSAVE_LDFLAGS"
7204       if test -n "$_MACSAVE_NEXT_ROOT" ; then
7205         export NEXT_ROOT="$_MACSAVE_NEXT_ROOT"
7206       fi
7207     fi
7210 if test -n "$CROSS_COMPILE"; then
7211      if test -z "$HOST_LIBIDL_CONFIG"; then
7212         HOST_LIBIDL_CONFIG="$LIBIDL_CONFIG"
7213     fi
7214     if test -n "$HOST_LIBIDL_CONFIG" && test "$HOST_LIBIDL_CONFIG" != "no"; then
7215         HOST_LIBIDL_CFLAGS=`${HOST_LIBIDL_CONFIG} --cflags`
7216         HOST_LIBIDL_LIBS=`${HOST_LIBIDL_CONFIG} --libs`
7217     else
7218         HOST_LIBIDL_CFLAGS="$LIBIDL_CFLAGS"
7219         HOST_LIBIDL_LIBS="$LIBIDL_LIBS"
7220     fi
7223 if test -z "$SKIP_PATH_CHECKS"; then
7224 if test -z "${GLIB_CFLAGS}" || test -z "${GLIB_LIBS}" ; then
7225     if test "$MOZ_ENABLE_GTK2"; then
7226         PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
7227     else
7228         AM_PATH_GLIB(${GLIB_VERSION})
7229     fi
7233 if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then
7234     GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
7237 AC_SUBST(LIBIDL_CFLAGS)
7238 AC_SUBST(LIBIDL_LIBS)
7239 AC_SUBST(STATIC_LIBIDL)
7240 AC_SUBST(GLIB_CFLAGS)
7241 AC_SUBST(GLIB_LIBS)
7242 AC_SUBST(GLIB_GMODULE_LIBS)
7243 AC_SUBST(HOST_LIBIDL_CONFIG)
7244 AC_SUBST(HOST_LIBIDL_CFLAGS)
7245 AC_SUBST(HOST_LIBIDL_LIBS)
7247 dnl ========================================================
7248 dnl Check for libart
7249 dnl ========================================================
7250 if test "$MOZ_SVG_RENDERER_LIBART"; then
7251   if test ! -f $topsrcdir/other-licenses/libart_lgpl/Makefile.in; then
7252     AC_MSG_ERROR([You must check out the mozilla version of libart. Use
7253 mk_add_options MOZ_CO_MODULE=mozilla/other-licenses/libart_lgpl])
7254   fi
7256   dnl libart's configure hasn't been run yet, but we know what the
7257   dnl answer should be anyway
7258   MOZ_LIBART_CFLAGS='-I${DIST}/include/libart_lgpl'
7259   case "$target_os" in
7260   msvc*|mks*|cygwin*|mingw*|wince*)
7261       MOZ_LIBART_LIBS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)moz_art_lgpl.$(IMPORT_LIB_SUFFIX)' 
7262       ;;
7263   os2*)
7264       MOZ_LIBART_LIBS='-lmoz_art -lm'
7265       ;;
7266   beos*)
7267       MOZ_LIBART_LIBS='-lmoz_art_lgpl -lroot -lbe'
7268       ;;
7269   *)
7270       MOZ_LIBART_LIBS='-lmoz_art_lgpl -lm'
7271       ;;
7272   esac
7273   AC_FUNC_ALLOCA
7276 AC_SUBST(MOZ_LIBART_CFLAGS)
7277 AC_SUBST(MOZ_LIBART_LIBS)
7279 dnl ========================================================
7280 dnl Check for cairo
7281 dnl ========================================================
7282 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
7284 MOZ_TREE_CAIRO=1
7285 MOZ_ARG_ENABLE_BOOL(system-cairo,
7286 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
7287 MOZ_TREE_CAIRO=,
7288 MOZ_TREE_CAIRO=1 )
7290 # Check for headers defining standard int types.
7291 AC_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
7293 if test "$MOZ_TREE_CAIRO"; then
7294     AC_DEFINE(MOZ_TREE_CAIRO)
7296     # For now we assume that we will have a uint64_t available through
7297     # one of the above headers or mozstdint.h.
7298     AC_DEFINE(HAVE_UINT64_T)
7300     # Define macros for cairo-features.h
7301     if test "$MOZ_X11"; then
7302         XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
7303         XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
7304         PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
7305         PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7306         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7307         MOZ_ENABLE_CAIRO_FT=1
7308         CAIRO_FT_CFLAGS="$FT2_CFLAGS"
7309     fi
7310     if test "$MOZ_WIDGET_TOOLKIT" = "mac" -o "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
7311         QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
7312         QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
7313         QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
7314     fi
7315     if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
7316         WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
7317         WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
7318         PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7319     fi
7320     if test "$MOZ_WIDGET_TOOLKIT" = "os2"; then
7321         OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
7322         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7323         PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7324         MOZ_ENABLE_CAIRO_FT=1
7325         CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
7326         CAIRO_FT_LIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
7327     fi
7328     if test "$MOZ_ENABLE_GLITZ"; then
7329         GLITZ_SURFACE_FEATURE="#define CAIRO_HAS_GLITZ_SURFACE 1"
7330     fi
7331     if test "$MOZ_WIDGET_TOOLKIT" = "beos"; then
7332         PKG_CHECK_MODULES(CAIRO_FT, fontconfig freetype2)
7333         BEOS_SURFACE_FEATURE="#define CAIRO_HAS_BEOS_SURFACE 1"
7334         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7335         MOZ_ENABLE_CAIRO_FT=1
7336     fi
7337     AC_SUBST(MOZ_ENABLE_CAIRO_FT)
7338     AC_SUBST(CAIRO_FT_CFLAGS)
7340     if test "$MOZ_DEBUG"; then
7341       SANITY_CHECKING_FEATURE="#define CAIRO_DO_SANITY_CHECKING 1"
7342     else
7343       SANITY_CHECKING_FEATURE="#undef CAIRO_DO_SANITY_CHECKING"
7344     fi
7346     PNG_FUNCTIONS_FEATURE="#define CAIRO_HAS_PNG_FUNCTIONS 1"
7348     AC_SUBST(PS_SURFACE_FEATURE)
7349     AC_SUBST(PDF_SURFACE_FEATURE)
7350     AC_SUBST(SVG_SURFACE_FEATURE)
7351     AC_SUBST(XLIB_SURFACE_FEATURE)
7352     AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
7353     AC_SUBST(QUARTZ_SURFACE_FEATURE)
7354     AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
7355     AC_SUBST(XCB_SURFACE_FEATURE)
7356     AC_SUBST(WIN32_SURFACE_FEATURE)
7357     AC_SUBST(OS2_SURFACE_FEATURE)
7358     AC_SUBST(BEOS_SURFACE_FEATURE)
7359     AC_SUBST(GLITZ_SURFACE_FEATURE)
7360     AC_SUBST(DIRECTFB_SURFACE_FEATURE)
7361     AC_SUBST(FT_FONT_FEATURE)
7362     AC_SUBST(WIN32_FONT_FEATURE)
7363     AC_SUBST(QUARTZ_FONT_FEATURE)
7364     AC_SUBST(PNG_FUNCTIONS_FEATURE)
7366     if test "$_WIN32_MSVC"; then
7367         MOZ_CAIRO_LIBS='$(DEPTH)/gfx/cairo/cairo/src/mozcairo.lib $(DEPTH)/gfx/cairo/libpixman/src/mozlibpixman.lib'
7368         if test "$MOZ_ENABLE_GLITZ"; then
7369             MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'$(DEPTH)/gfx/cairo/glitz/src/mozglitz.lib $(DEPTH)/gfx/cairo/glitz/src/wgl/mozglitzwgl.lib'
7370         fi
7371     else
7372         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"
7374         if test "$MOZ_X11"; then
7375             MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS -lXrender -lfreetype -lfontconfig"
7376         fi
7378         if test "$MOZ_ENABLE_GLITZ"; then
7379             MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src -lmozglitz'
7380             if test "$MOZ_X11"; then
7381                 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src/glx -lmozglitzglx -lGL'
7382             fi
7383             if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
7384                 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src/wgl -lmozglitzwgl'
7385             fi
7386         fi
7387     fi
7388 else
7389    PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION freetype2 fontconfig)
7390    MOZ_CAIRO_CFLAGS=$CAIRO_CFLAGS
7391    MOZ_CAIRO_LIBS=$CAIRO_LIBS
7392    if test "$MOZ_X11"; then
7393         PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
7394         MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
7395         MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
7396    fi
7399 AC_SUBST(MOZ_TREE_CAIRO)
7400 AC_SUBST(MOZ_CAIRO_CFLAGS)
7401 AC_SUBST(MOZ_CAIRO_LIBS)
7403 dnl ========================================================
7404 dnl Check for lcms
7405 dnl ========================================================
7407 MOZ_NATIVE_LCMS=
7408 MOZ_ARG_ENABLE_BOOL(system-lcms,
7409 [ --enable-system-lcms Use system lcms (located with pkgconfig)],
7410 MOZ_NATIVE_LCMS=1,
7411 MOZ_NATIVE_LCMS= )
7413 if test -z "$MOZ_NATIVE_LCMS"
7414 then
7415     LCMS_CFLAGS=
7416     if test "$_WIN32_MSVC"; then
7417         if test -z "$BUILD_STATIC_LIBS" -a -z "$MOZ_ENABLE_LIBXUL"; then
7418             LCMS_CFLAGS=-DLCMS_DLL
7419         fi
7420         LCMS_LIBS='$(LIBXUL_DIST)/lib/mozlcms.lib'
7421     else
7422         LCMS_LIBS='-L$(LIBXUL_DIST)/bin -lmozlcms'
7423     fi
7424 else
7425     PKG_CHECK_MODULES(LCMS, lcms >= $LCMS_VERSION)
7428 AC_SUBST(MOZ_NATIVE_LCMS)
7429 AC_SUBST(LCMS_CFLAGS)
7430 AC_SUBST(LCMS_LIBS)
7432 dnl ========================================================
7433 dnl disable xul
7434 dnl ========================================================
7435 MOZ_ARG_DISABLE_BOOL(xul,
7436 [  --disable-xul           Disable XUL],
7437     MOZ_XUL= )
7438 if test "$MOZ_XUL"; then
7439   AC_DEFINE(MOZ_XUL)
7440 else
7441   dnl remove extensions that require XUL
7442   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
7445 AC_SUBST(MOZ_XUL)
7447 dnl ========================================================
7448 dnl Two ways to enable Python support:
7449 dnl   --enable-extensions=python # select all available.
7450 dnl    (MOZ_PYTHON_EXTENSIONS contains the list of extensions)
7451 dnl or:
7452 dnl   --enable-extensions=python/xpcom,... # select individual ones
7454 dnl If either is used, we locate the Python to use.
7455 dnl ========================================================
7457 dnl If 'python' appears anywhere in the extensions list, go lookin'...
7458 if test `echo "$MOZ_EXTENSIONS" | grep -c python` -ne 0; then
7459     dnl Allow PYTHON to point to the Python interpreter to use
7460     dnl (note that it must be the python executable - which we
7461     dnl run to locate the relevant paths etc)
7462     dnl If not set, we use whatever Python we can find.
7463     MOZ_PYTHON=$PYTHON
7464     dnl Ask Python what its version number is
7465     changequote(,)
7466     MOZ_PYTHON_VER=`$PYTHON -c "import sys;print '%d%d' % sys.version_info[0:2]"`
7467     MOZ_PYTHON_VER_DOTTED=`$PYTHON -c "import sys;print '%d.%d' % sys.version_info[0:2]"`
7468     changequote([,])
7469     dnl Ask for the Python "prefix" (ie, home/source dir)
7470     MOZ_PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
7471     dnl Setup the include and library directories.
7472     if test "$OS_ARCH" = "WINNT"; then
7473         MOZ_PYTHON_PREFIX=`$CYGPATH_W $MOZ_PYTHON_PREFIX | $CYGPATH_S`
7474         dnl Source trees have "include" and "PC" for .h, and "PCbuild" for .lib
7475         dnl Binary trees have "include" for .h, and "libs" for .lib
7476         dnl We add 'em both - along with quotes, to handle spaces.
7477         MOZ_PYTHON_DLL_SUFFIX=.pyd
7478         MOZ_PYTHON_INCLUDES="\"-I$MOZ_PYTHON_PREFIX/include\" \"-I$MOZ_PYTHON_PREFIX/PC\""
7479         MOZ_PYTHON_LIBS="\"/libpath:$MOZ_PYTHON_PREFIX/PCBuild\" \"/libpath:$MOZ_PYTHON_PREFIX/libs\""
7480     else
7481         dnl Non-Windows include and libs
7482         MOZ_PYTHON_DLL_SUFFIX=$DLL_SUFFIX
7483         MOZ_PYTHON_INCLUDES="-I$MOZ_PYTHON_PREFIX/include/python$MOZ_PYTHON_VER_DOTTED"
7484         dnl Check for dynamic Python lib
7485         dnl - A static Python is no good - multiple dynamic libraries (xpcom
7486         dnl - core, xpcom loader, pydom etc) all need to share Python.
7487         dnl - Python 2.3's std --enable-shared configure option will
7488         dnl   create a libpython2.3.so.1.0. We should first try this
7489         dnl   dotted versioned .so file because this is the one that
7490         dnl   the PyXPCOM build mechanics tries to link to.
7491         dnl   XXX Should find a better way than hardcoding "1.0".
7492         dnl - Python developement tree dir layouts are NOT allowed here
7493         dnl   because the PyXPCOM build just dies on it later anyway.
7494         dnl - Fixes to the above by Python/*nix knowledgable people welcome!
7495         if test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7496             MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7497         elif test -f "$MOZ_PYTHON_PREFIX/lib64/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7498             MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib64 -lpython$MOZ_PYTHON_VER_DOTTED"
7499         elif test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7500             MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7501         elif test -f "$MOZ_PYTHON_PREFIX/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7502             dnl Don't Python development tree directory layout.
7503             MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX -lpython$MOZ_PYTHON_VER_DOTTED"
7504             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.])
7505         elif test "$OS_ARCH" = "Darwin"; then
7506             dnl We do Darwin last, so if a custom non-framework build of
7507             dnl python is used on OSX, then it will be picked up first by
7508             dnl the logic above.
7509             MOZ_PYTHON_LIBS="-framework Python"
7510         else
7511             AC_MSG_ERROR([Could not find build shared libraries for Python at $MOZ_PYTHON_PREFIX.  This is required for PyXPCOM.])
7512         fi
7513         if test "$OS_ARCH" = "Linux"; then
7514             MOZ_PYTHON_LIBS="$MOZ_PYTHON_LIBS -lutil"
7515         fi
7516     fi
7517     dnl Handle "_d" on Windows
7518     if test "$OS_ARCH" = "WINNT" && test -n "$MOZ_DEBUG"; then
7519         MOZ_PYTHON_DEBUG_SUFFIX="_d"
7520     else
7521         MOZ_PYTHON_DEBUG_SUFFIX=
7522     fi
7523     AC_MSG_RESULT(Building Python extensions using python-$MOZ_PYTHON_VER_DOTTED from $MOZ_PYTHON_PREFIX)
7526 dnl If the user asks for the 'python' extension, then we add
7527 dnl MOZ_PYTHON_EXTENSIONS to MOZ_EXTENSIONS - but with the leading 'python/'
7528 dnl Note the careful regex - it must match 'python' followed by anything
7529 dnl other than a '/', including the end-of-string.
7530 if test `echo "$MOZ_EXTENSIONS" | grep -c 'python\([[^/]]\|$\)'` -ne 0; then
7531     for pyext in $MOZ_PYTHON_EXTENSIONS; do
7532         MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS python/$pyext`
7533     done
7535 dnl Later we may allow MOZ_PYTHON_EXTENSIONS to be specified on the
7536 dnl command-line, but not yet
7537 AC_SUBST(MOZ_PYTHON_EXTENSIONS)
7538 AC_SUBST(MOZ_PYTHON)
7539 AC_SUBST(MOZ_PYTHON_PREFIX)
7540 AC_SUBST(MOZ_PYTHON_INCLUDES)
7541 AC_SUBST(MOZ_PYTHON_LIBS)
7542 AC_SUBST(MOZ_PYTHON_VER)
7543 AC_SUBST(MOZ_PYTHON_VER_DOTTED)
7544 AC_SUBST(MOZ_PYTHON_DEBUG_SUFFIX)
7545 AC_SUBST(MOZ_PYTHON_DLL_SUFFIX)
7547 dnl ========================================================
7548 dnl disable profile sharing
7549 dnl ========================================================
7550 MOZ_ARG_DISABLE_BOOL(profilesharing,
7551 [  --disable-profilesharing           Disable profile sharing],
7552     MOZ_PROFILESHARING=,
7553     MOZ_PROFILESHARING=1 )
7554 if test "$MOZ_PROFILESHARING"; then
7555   MOZ_IPCD=1
7556   AC_DEFINE(MOZ_PROFILESHARING)
7559 dnl ========================================================
7560 dnl enable ipc/ipcd
7561 dnl ========================================================
7562 MOZ_ARG_ENABLE_BOOL(ipcd,
7563 [  --enable-ipcd                      Enable IPC daemon],
7564     MOZ_IPCD=1,
7565     MOZ_IPCD= )
7567 dnl ========================================================
7568 dnl disable profile locking
7569 dnl   do no use this in applications that can have more than
7570 dnl   one process accessing the profile directory.
7571 dnl ========================================================
7572 MOZ_ARG_DISABLE_BOOL(profilelocking,
7573 [  --disable-profilelocking           Disable profile locking],
7574     MOZ_PROFILELOCKING=,
7575     MOZ_PROFILELOCKING=1 )
7576 if test "$MOZ_PROFILELOCKING"; then
7577   AC_DEFINE(MOZ_PROFILELOCKING)
7580 dnl ========================================================
7581 dnl disable rdf services
7582 dnl ========================================================
7583 MOZ_ARG_DISABLE_BOOL(rdf,
7584 [  --disable-rdf           Disable RDF],
7585     MOZ_RDF= )
7586 if test "$MOZ_RDF"; then
7587   AC_DEFINE(MOZ_RDF)
7590 AC_SUBST(MOZ_RDF)
7592 dnl ========================================================
7593 dnl necko configuration options
7594 dnl ========================================================
7597 dnl option to disable various necko protocols
7599 MOZ_ARG_ENABLE_STRING(necko-protocols,
7600 [  --enable-necko-protocols[={http,ftp,default,all,none}]
7601                           Enable/disable specific protocol handlers],
7602 [ for option in `echo $enableval | sed 's/,/ /g'`; do
7603     if test "$option" = "yes" || test "$option" = "all"; then
7604         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7605     elif test "$option" = "no" || test "$option" = "none"; then
7606         NECKO_PROTOCOLS=""
7607     elif test "$option" = "default"; then
7608         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7609     elif test `echo "$option" | grep -c \^-` != 0; then
7610         option=`echo $option | sed 's/^-//'`
7611         NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
7612     else
7613         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
7614     fi
7615 done],
7616     NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
7617 dnl Remove dupes
7618 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
7619 AC_SUBST(NECKO_PROTOCOLS)
7620 for p in $NECKO_PROTOCOLS; do
7621     AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
7622 done
7625 dnl option to disable necko's disk cache
7627 MOZ_ARG_DISABLE_BOOL(necko-disk-cache,
7628 [  --disable-necko-disk-cache
7629                           Disable necko disk cache],
7630     NECKO_DISK_CACHE=,
7631     NECKO_DISK_CACHE=1)
7632 AC_SUBST(NECKO_DISK_CACHE)
7633 if test "$NECKO_DISK_CACHE"; then
7634     AC_DEFINE(NECKO_DISK_CACHE)
7638 dnl option to minimize size of necko's i/o buffers
7640 MOZ_ARG_ENABLE_BOOL(necko-small-buffers,
7641 [  --enable-necko-small-buffers
7642                           Minimize size of necko's i/o buffers],
7643     NECKO_SMALL_BUFFERS=1,
7644     NECKO_SMALL_BUFFERS=)
7645 AC_SUBST(NECKO_SMALL_BUFFERS)
7646 if test "$NECKO_SMALL_BUFFERS"; then
7647     AC_DEFINE(NECKO_SMALL_BUFFERS)
7648 fi 
7651 dnl option to disable cookies
7653 MOZ_ARG_DISABLE_BOOL(cookies,
7654 [  --disable-cookies       Disable cookie support],
7655     NECKO_COOKIES=,
7656     NECKO_COOKIES=1)
7657 AC_SUBST(NECKO_COOKIES)
7658 if test "$NECKO_COOKIES"; then
7659     AC_DEFINE(NECKO_COOKIES)
7662 dnl NECKO_ configuration options are not global
7663 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_"
7665 dnl ========================================================
7666 dnl string api compatibility
7667 dnl ========================================================
7668 MOZ_ARG_DISABLE_BOOL(v1-string-abi,
7669 [  --disable-v1-string-abi   Disable binary compatibility layer for strings],
7670     MOZ_V1_STRING_ABI=,
7671     MOZ_V1_STRING_ABI=1)
7672 AC_SUBST(MOZ_V1_STRING_ABI)
7673 if test "$MOZ_V1_STRING_ABI"; then
7674     AC_DEFINE(MOZ_V1_STRING_ABI)
7677 dnl Only build Mork if it's required
7678 AC_SUBST(MOZ_MORK)
7679 if test "$MOZ_MORK"; then
7680   AC_DEFINE(MOZ_MORK)
7683 dnl Build the lightweight Mork reader if required
7684 AC_SUBST(MOZ_MORKREADER)
7685 if test "$MOZ_MORKREADER"; then
7686   AC_DEFINE(MOZ_MORKREADER)
7689 dnl ========================================================
7690 if test "$MOZ_DEBUG" || test "$NS_TRACE_MALLOC"; then
7691     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7694 if test "$MOZ_LDAP_XPCOM"; then
7695     LDAP_CFLAGS='-I${DIST}/public/ldap'
7696     if test "$OS_ARCH" = "WINNT"; then
7697         if test -n "$GNU_CC"; then
7698             LDAP_LIBS='-L$(DIST)/lib -lnsldap32v60 -lnsldappr32v60 -lnsldif32v60'
7699         else
7700             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}'
7701         fi
7702     elif test "$OS_ARCH" = "OS2"; then
7703             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}'
7704     else
7705         LDAP_LIBS='-L${DIST}/bin -L${DIST}/lib -lldap60 -lprldap60 -lldif60'
7706     fi
7709 if test "$COMPILE_ENVIRONMENT"; then
7710 if test "$SUNCTL"; then
7711     dnl older versions of glib do not seem to have gmodule which ctl needs
7712     _SAVE_CFLAGS=$CFLAGS
7713     CFLAGS="$CFLAGS $GLIB_CFLAGS"
7714     AC_LANG_SAVE
7715     AC_LANG_C
7716     AC_TRY_COMPILE([#include <gmodule.h>],
7717         [ int x = 1; x++; ],,
7718         [AC_MSG_ERROR([Cannot build ctl without gmodule support in glib.])])
7719     AC_LANG_RESTORE
7720     CFLAGS=$_SAVE_CFLAGS
7721     AC_DEFINE(SUNCTL)
7723 fi # COMPILE_ENVIRONMENT
7725 dnl ========================================================
7726 dnl =
7727 dnl = Maintainer debug option (no --enable equivalent)
7728 dnl =
7729 dnl ========================================================
7731 AC_SUBST(AR)
7732 AC_SUBST(AR_FLAGS)
7733 AC_SUBST(AR_LIST)
7734 AC_SUBST(AR_EXTRACT)
7735 AC_SUBST(AR_DELETE)
7736 AC_SUBST(AS)
7737 AC_SUBST(ASFLAGS)
7738 AC_SUBST(AS_DASH_C_FLAG)
7739 AC_SUBST(LD)
7740 AC_SUBST(RC)
7741 AC_SUBST(RCFLAGS)
7742 AC_SUBST(WINDRES)
7743 AC_SUBST(USE_SHORT_LIBNAME)
7744 AC_SUBST(IMPLIB)
7745 AC_SUBST(FILTER)
7746 AC_SUBST(BIN_FLAGS)
7747 AC_SUBST(NS_USE_NATIVE)
7748 AC_SUBST(MOZ_WIDGET_TOOLKIT)
7749 AC_SUBST(MOZ_GFX_TOOLKIT)
7750 AC_SUBST(MOZ_UPDATE_XTERM)
7751 AC_SUBST(MINIMO)
7752 AC_SUBST(MOZ_AUTH_EXTENSION)
7753 AC_SUBST(MOZ_MATHML)
7754 AC_SUBST(MOZ_PERMISSIONS)
7755 AC_SUBST(MOZ_XTF)
7756 AC_SUBST(MOZ_XMLEXTRAS)
7757 AC_SUBST(MOZ_NO_INSPECTOR_APIS)
7758 AC_SUBST(MOZ_WEBSERVICES)
7759 AC_SUBST(MOZ_PREF_EXTENSIONS)
7760 AC_SUBST(MOZ_SVG)
7761 AC_SUBST(MOZ_SVG_FOREIGNOBJECT)
7762 AC_SUBST(MOZ_XSLT_STANDALONE)
7763 AC_SUBST(MOZ_JS_LIBS)
7764 AC_SUBST(MOZ_PSM)
7765 AC_SUBST(MOZ_DEBUG)
7766 AC_SUBST(MOZ_DEBUG_MODULES)
7767 AC_SUBST(MOZ_PROFILE_MODULES)
7768 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
7769 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
7770 AC_SUBST(MOZ_DEBUG_FLAGS)
7771 AC_SUBST(MOZ_DEBUG_LDFLAGS)
7772 AC_SUBST(WARNINGS_AS_ERRORS)
7773 AC_SUBST(MOZ_DBGRINFO_MODULES)
7774 AC_SUBST(MOZ_EXTENSIONS)
7775 AC_SUBST(MOZ_IMG_DECODERS)
7776 AC_SUBST(MOZ_IMG_ENCODERS)
7777 AC_SUBST(MOZ_JSDEBUGGER)
7778 AC_SUBST(MOZ_OJI)
7779 AC_SUBST(MOZ_NO_XPCOM_OBSOLETE)
7780 AC_SUBST(MOZ_PLUGINS)
7781 AC_SUBST(ENABLE_EAZEL_PROFILER)
7782 AC_SUBST(EAZEL_PROFILER_CFLAGS)
7783 AC_SUBST(EAZEL_PROFILER_LIBS)
7784 AC_SUBST(MOZ_PERF_METRICS)
7785 AC_SUBST(GC_LEAK_DETECTOR)
7786 AC_SUBST(MOZ_LOG_REFCNT)
7787 AC_SUBST(MOZ_LEAKY)
7788 AC_SUBST(MOZ_JPROF)
7789 AC_SUBST(MOZ_SHARK)
7790 AC_SUBST(MOZ_XPCTOOLS)
7791 AC_SUBST(MOZ_JSLOADER)
7792 AC_SUBST(MOZ_USE_NATIVE_UCONV)
7793 AC_SUBST(MOZ_INSURE)
7794 AC_SUBST(MOZ_INSURE_DIRS)
7795 AC_SUBST(MOZ_INSURE_EXCLUDE_DIRS)
7796 AC_SUBST(MOZ_QUANTIFY)
7797 AC_SUBST(MOZ_INSURIFYING)
7798 AC_SUBST(MOZ_LDAP_XPCOM)
7799 AC_SUBST(MOZ_LDAP_XPCOM_EXPERIMENTAL)
7800 AC_SUBST(LDAP_CFLAGS)
7801 AC_SUBST(LDAP_LIBS)
7802 AC_SUBST(LIBICONV)
7803 AC_SUBST(MOZ_PLACES)
7804 AC_SUBST(MOZ_PLACES_BOOKMARKS)
7805 AC_SUBST(MOZ_STORAGE)
7806 AC_SUBST(MOZ_FEEDS)
7807 AC_SUBST(NS_PRINTING)
7809 AC_SUBST(MOZ_JAVAXPCOM)
7810 AC_SUBST(JAVA_INCLUDE_PATH)
7811 AC_SUBST(JAVA)
7812 AC_SUBST(JAVAC)
7813 AC_SUBST(JAR)
7815 AC_SUBST(MOZ_PROFILESHARING)
7816 AC_SUBST(MOZ_PROFILELOCKING)
7818 AC_SUBST(MOZ_IPCD)
7820 AC_SUBST(HAVE_XIE)
7821 AC_SUBST(MOZ_XIE_LIBS)
7822 AC_SUBST(MOZ_ENABLE_POSTSCRIPT)
7824 AC_SUBST(XPCOM_USE_LEA)
7825 AC_SUBST(BUILD_STATIC_LIBS)
7826 AC_SUBST(MOZ_ENABLE_LIBXUL)
7827 AC_SUBST(ENABLE_TESTS)
7828 AC_SUBST(IBMBIDI)
7829 AC_SUBST(SUNCTL)
7830 AC_SUBST(MOZ_UNIVERSALCHARDET)
7831 AC_SUBST(ACCESSIBILITY)
7832 AC_SUBST(MOZ_XPINSTALL)
7833 AC_SUBST(MOZ_VIEW_SOURCE)
7834 AC_SUBST(MOZ_SPELLCHECK)
7835 AC_SUBST(MOZ_XPFE_COMPONENTS)
7836 AC_SUBST(MOZ_USER_DIR)
7837 AC_SUBST(MOZ_CRASHREPORTER)
7838 AC_SUBST(MOZ_MOCHITEST)
7840 AC_SUBST(ENABLE_STRIP)
7841 AC_SUBST(PKG_SKIP_STRIP)
7842 AC_SUBST(USE_ELF_DYNSTR_GC)
7843 AC_SUBST(USE_PREBINDING)
7844 AC_SUBST(INCREMENTAL_LINKER)
7845 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
7846 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
7847 AC_SUBST(MOZ_XPCOM_OBSOLETE_LIBS)
7849 AC_SUBST(MOZ_FIX_LINK_PATHS)
7850 AC_SUBST(XPCOM_LIBS)
7851 AC_SUBST(XPCOM_FROZEN_LDOPTS)
7852 AC_SUBST(XPCOM_GLUE_LDOPTS)
7853 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
7855 AC_SUBST(USE_DEPENDENT_LIBS)
7857 AC_SUBST(MOZ_BUILD_ROOT)
7858 AC_SUBST(MOZ_OS2_TOOLS)
7859 AC_SUBST(MOZ_OS2_USE_DECLSPEC)
7861 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
7862 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
7863 AC_SUBST(MOZ_TIMELINE)
7864 AC_SUBST(WINCE)
7865 AC_SUBST(TARGET_DEVICE)
7867 AC_SUBST(MOZ_APP_NAME)
7868 AC_SUBST(MOZ_APP_DISPLAYNAME)
7869 AC_SUBST(MOZ_APP_VERSION)
7870 AC_SUBST(FIREFOX_VERSION)
7871 AC_SUBST(THUNDERBIRD_VERSION)
7872 AC_SUBST(SUNBIRD_VERSION)
7873 AC_SUBST(SEAMONKEY_VERSION)
7875 AC_SUBST(MOZ_PKG_SPECIAL)
7877 AC_SUBST(MOZILLA_OFFICIAL)
7878 AC_SUBST(BUILD_OFFICIAL)
7879 AC_SUBST(MOZ_MILESTONE_RELEASE)
7881 dnl win32 options
7882 AC_SUBST(MOZ_PROFILE)
7883 AC_SUBST(MOZ_DEBUG_SYMBOLS)
7884 AC_SUBST(MOZ_MAPINFO)
7885 AC_SUBST(MOZ_BROWSE_INFO)
7886 AC_SUBST(MOZ_TOOLS_DIR)
7887 AC_SUBST(CYGWIN_WRAPPER)
7888 AC_SUBST(AS_PERL)
7889 AC_SUBST(WIN32_REDIST_DIR)
7890 AC_SUBST(PYTHON)
7892 dnl Echo the CFLAGS to remove extra whitespace.
7893 CFLAGS=`echo \
7894         $_WARNINGS_CFLAGS \
7895         $CFLAGS`
7897 CXXFLAGS=`echo \
7898         $_MOZ_RTTI_FLAGS \
7899         $_MOZ_EXCEPTIONS_FLAGS \
7900         $_WARNINGS_CXXFLAGS \
7901         $CXXFLAGS`
7903 COMPILE_CFLAGS=`echo \
7904     $_DEFINES_CFLAGS \
7905         $_DEPEND_CFLAGS \
7906     $COMPILE_CFLAGS`
7908 COMPILE_CXXFLAGS=`echo \
7909     $_DEFINES_CXXFLAGS \
7910         $_DEPEND_CFLAGS \
7911     $COMPILE_CXXFLAGS`
7913 AC_SUBST(SYSTEM_MAKEDEPEND)
7914 AC_SUBST(SYSTEM_JPEG)
7915 AC_SUBST(SYSTEM_PNG)
7916 AC_SUBST(SYSTEM_ZLIB)
7917 AC_SUBST(SYSTEM_BZ2)
7919 AC_SUBST(JPEG_CFLAGS)
7920 AC_SUBST(JPEG_LIBS)
7921 AC_SUBST(ZLIB_CFLAGS)
7922 AC_SUBST(ZLIB_LIBS)
7923 AC_SUBST(BZ2_CFLAGS)
7924 AC_SUBST(BZ2_LIBS)
7925 AC_SUBST(PNG_CFLAGS)
7926 AC_SUBST(PNG_LIBS)
7928 AC_SUBST(MOZ_JPEG_CFLAGS)
7929 AC_SUBST(MOZ_JPEG_LIBS)
7930 AC_SUBST(MOZ_ZLIB_CFLAGS)
7931 AC_SUBST(MOZ_ZLIB_LIBS)
7932 AC_SUBST(MOZ_BZ2_CFLAGS)
7933 AC_SUBST(MOZ_BZ2_LIBS)
7934 AC_SUBST(MOZ_PNG_CFLAGS)
7935 AC_SUBST(MOZ_PNG_LIBS)
7937 AC_SUBST(NSPR_CFLAGS)
7938 AC_SUBST(NSPR_LIBS)
7939 AC_SUBST(MOZ_NATIVE_NSPR)
7941 AC_SUBST(NSS_CFLAGS)
7942 AC_SUBST(NSS_LIBS)
7943 AC_SUBST(NSS_DEP_LIBS)
7944 AC_SUBST(MOZ_NATIVE_NSS)
7946 AC_SUBST(CFLAGS)
7947 AC_SUBST(CXXFLAGS)
7948 AC_SUBST(CPPFLAGS)
7949 AC_SUBST(COMPILE_CFLAGS)
7950 AC_SUBST(COMPILE_CXXFLAGS)
7951 AC_SUBST(LDFLAGS)
7952 AC_SUBST(LIBS)
7953 AC_SUBST(CROSS_COMPILE)
7955 AC_SUBST(HOST_CC)
7956 AC_SUBST(HOST_CXX)
7957 AC_SUBST(HOST_CFLAGS)
7958 AC_SUBST(HOST_CXXFLAGS)
7959 AC_SUBST(HOST_OPTIMIZE_FLAGS)
7960 AC_SUBST(HOST_AR)
7961 AC_SUBST(HOST_AR_FLAGS)
7962 AC_SUBST(HOST_LD)
7963 AC_SUBST(HOST_RANLIB)
7964 AC_SUBST(HOST_NSPR_MDCPUCFG)
7965 AC_SUBST(HOST_BIN_SUFFIX)
7966 AC_SUBST(HOST_OS_ARCH)
7968 AC_SUBST(TARGET_CPU)
7969 AC_SUBST(TARGET_VENDOR)
7970 AC_SUBST(TARGET_OS)
7971 AC_SUBST(TARGET_NSPR_MDCPUCFG)
7972 AC_SUBST(TARGET_MD_ARCH)
7973 AC_SUBST(TARGET_XPCOM_ABI)
7974 AC_SUBST(OS_TARGET)
7975 AC_SUBST(OS_ARCH)
7976 AC_SUBST(OS_RELEASE)
7977 AC_SUBST(OS_TEST)
7979 AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
7980 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
7982 AC_SUBST(WRAP_MALLOC_CFLAGS)
7983 AC_SUBST(WRAP_MALLOC_LIB)
7984 AC_SUBST(MKSHLIB)
7985 AC_SUBST(MKCSHLIB)
7986 AC_SUBST(MKSHLIB_FORCE_ALL)
7987 AC_SUBST(MKSHLIB_UNFORCE_ALL)
7988 AC_SUBST(DSO_CFLAGS)
7989 AC_SUBST(DSO_PIC_CFLAGS)
7990 AC_SUBST(DSO_LDOPTS)
7991 AC_SUBST(LIB_PREFIX)
7992 AC_SUBST(DLL_PREFIX)
7993 AC_SUBST(DLL_SUFFIX)
7994 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
7995 AC_SUBST(LIB_SUFFIX)
7996 AC_SUBST(OBJ_SUFFIX)
7997 AC_SUBST(BIN_SUFFIX)
7998 AC_SUBST(ASM_SUFFIX)
7999 AC_SUBST(IMPORT_LIB_SUFFIX)
8000 AC_SUBST(USE_N32)
8001 AC_SUBST(CC_VERSION)
8002 AC_SUBST(CXX_VERSION)
8003 AC_SUBST(MSMANIFEST_TOOL)
8005 if test "$USING_HCC"; then
8006    CC='${topsrcdir}/build/hcc'
8007    CC="$CC '$_OLDCC'"
8008    CXX='${topsrcdir}/build/hcpp'
8009    CXX="$CXX '$_OLDCXX'"
8010    AC_SUBST(CC)
8011    AC_SUBST(CXX)
8014 dnl Check for missing components
8015 if test "$COMPILE_ENVIRONMENT"; then
8016 if test "$MOZ_X11"; then
8017     dnl ====================================================
8018     dnl = Check if X headers exist
8019     dnl ====================================================
8020     _SAVE_CFLAGS=$CFLAGS
8021     CFLAGS="$CFLAGS $XCFLAGS"
8022     AC_TRY_COMPILE([
8023         #include <stdio.h>
8024         #include <stdlib.h>
8025         #include <X11/Xlib.h>
8026         #include <X11/Intrinsic.h>
8027     ],
8028     [
8029         Display *dpy = 0;
8030         if ((dpy = XOpenDisplay(NULL)) == NULL) {
8031             fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8032             exit(1);
8033         }
8034     ], [], 
8035     [ AC_MSG_ERROR([Could not compile basic X program.]) ])
8036     CFLAGS="$_SAVE_CFLAGS"
8038     if test ! -z "$MISSING_X"; then
8039         AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8040     fi
8042 fi # MOZ_X11
8043 fi # COMPILE_ENVIRONMENT
8045 dnl Set various defines and substitutions
8046 dnl ========================================================
8048 if test "$OS_ARCH" = "OS2" -a "$VACPP" = "yes"; then
8049       LIBS='so32dll.lib tcp32dll.lib'
8050 elif test "$OS_ARCH" = "BeOS"; then
8051   AC_DEFINE(XP_BEOS)
8052   MOZ_MOVEMAIL=1
8053 elif test "$OS_ARCH" = "Darwin"; then
8054   AC_DEFINE(XP_UNIX)
8055   AC_DEFINE(UNIX_ASYNC_DNS)
8056   MOZ_MOVEMAIL=1
8057 elif test "$OS_ARCH" = "OpenVMS"; then
8058   AC_DEFINE(XP_UNIX)
8059 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
8060   AC_DEFINE(XP_UNIX)
8061   AC_DEFINE(UNIX_ASYNC_DNS)
8062   MOZ_MOVEMAIL=1
8064 AC_SUBST(MOZ_MOVEMAIL)
8066 AC_DEFINE(JS_THREADSAFE)
8068 if test "$MOZ_DEBUG"; then
8069     AC_DEFINE(MOZ_REFLOW_PERF)
8070     AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8073 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
8074     AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8075     ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8076     ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8077     ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8078     ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8079     AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8080     AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8081     AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8084 # Used for LD_LIBRARY_PATH of run_viewer target
8085 LIBS_PATH=
8086 for lib_arg in $NSPR_LIBS $TK_LIBS; do
8087   case $lib_arg in
8088     -L* ) LIBS_PATH="${LIBS_PATH:+$LIBS_PATH:}"`expr $lib_arg : "-L\(.*\)"` ;;
8089       * ) ;;
8090   esac
8091 done
8092 AC_SUBST(LIBS_PATH)
8094 dnl ========================================================
8095 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
8096 dnl ========================================================
8097 case "$host_os" in
8098 mingw*)
8099     WIN_TOP_SRC=`cd $srcdir; pwd -W`
8100     ;;
8101 cygwin*|msvc*|mks*)
8102     HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
8103     HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
8104     CC="\$(CYGWIN_WRAPPER) $CC"
8105     CXX="\$(CYGWIN_WRAPPER) $CXX"
8106     CPP="\$(CYGWIN_WRAPPER) $CPP"
8107     LD="\$(CYGWIN_WRAPPER) $LD"
8108     AS="\$(CYGWIN_WRAPPER) $AS"
8109     RC="\$(CYGWIN_WRAPPER) $RC"
8110     MIDL="\$(CYGWIN_WRAPPER) $MIDL"
8111     CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
8112     WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
8113     ;;
8114 esac
8116 AC_SUBST(CYGDRIVE_MOUNT)
8117 AC_SUBST(WIN_TOP_SRC)
8119 AC_SUBST(MOZILLA_VERSION)
8121 . ${srcdir}/config/chrome-versions.sh
8122 AC_DEFINE_UNQUOTED(MOZILLA_LOCALE_VERSION,"$MOZILLA_LOCALE_VERSION")
8123 AC_DEFINE_UNQUOTED(MOZILLA_REGION_VERSION,"$MOZILLA_REGION_VERSION")
8124 AC_DEFINE_UNQUOTED(MOZILLA_SKIN_VERSION,"$MOZILLA_SKIN_VERSION")
8126 AC_SUBST(ac_configure_args)
8128 dnl Spit out some output
8129 dnl ========================================================
8131 dnl The following defines are used by xpcom
8132 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8133 CPP_THROW_NEW
8134 HAVE_CPP_2BYTE_WCHAR_T
8135 HAVE_CPP_ACCESS_CHANGING_USING
8136 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8137 HAVE_CPP_BOOL
8138 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8139 HAVE_CPP_EXPLICIT
8140 HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
8141 HAVE_CPP_NAMESPACE_STD
8142 HAVE_CPP_NEW_CASTS
8143 HAVE_CPP_PARTIAL_SPECIALIZATION
8144 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8145 HAVE_CPP_TYPENAME
8146 HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL
8147 HAVE_STATVFS
8148 NEED_CPP_UNUSED_IMPLEMENTATIONS
8149 NEW_H
8150 HAVE_GETPAGESIZE
8151 HAVE_ICONV
8152 HAVE_ICONV_WITH_CONST_INPUT
8153 HAVE_MBRTOWC
8154 HAVE_SYS_MOUNT_H
8155 HAVE_SYS_VFS_H
8156 HAVE_WCRTOMB
8157 MOZ_V1_STRING_ABI
8160 AC_CONFIG_HEADER(
8161 netwerk/necko-config.h
8162 xpcom/xpcom-config.h
8163 xpcom/xpcom-private.h
8166 # Save the defines header file before autoconf removes it.
8167 # (Do not add AC_DEFINE calls after this line.)
8168   _CONFIG_TMP=confdefs-tmp.h
8169   _CONFIG_DEFS_H=mozilla-config.h
8171   cat > $_CONFIG_TMP <<\EOF
8172 /* List of defines generated by configure. Included with preprocessor flag,
8173  * -include, to avoid long list of -D defines on the compile command-line.
8174  * Do not edit.
8175  */
8177 #ifndef _MOZILLA_CONFIG_H_
8178 #define _MOZILLA_CONFIG_H_
8181 _EGREP_PATTERN='^#define ('
8182 if test -n "$_NON_GLOBAL_ACDEFINES"; then
8183     for f in $_NON_GLOBAL_ACDEFINES; do
8184         _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
8185     done
8187 _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
8189   sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
8191   cat >> $_CONFIG_TMP <<\EOF
8193 #endif /* _MOZILLA_CONFIG_H_ */
8197   # Only write mozilla-config.h when something changes (or it doesn't exist)
8198   if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
8199     rm $_CONFIG_TMP
8200   else
8201     AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
8202     mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
8204     echo ==== $_CONFIG_DEFS_H =================================
8205     cat $_CONFIG_DEFS_H
8206   fi
8208 dnl Probably shouldn't call this manually but we always want the output of DEFS
8209 rm -f confdefs.h.save
8210 mv confdefs.h confdefs.h.save
8211 egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
8212 AC_OUTPUT_MAKE_DEFS()
8213 MOZ_DEFINES=$DEFS
8214 AC_SUBST(MOZ_DEFINES)
8215 rm -f confdefs.h
8216 mv confdefs.h.save confdefs.h
8218 dnl Load the list of Makefiles to generate.
8219 dnl   To add new Makefiles, edit allmakefiles.sh.
8220 dnl   allmakefiles.sh sets the variable, MAKEFILES.
8221 . ${srcdir}/allmakefiles.sh
8222 dnl 
8223 dnl Run a perl script to quickly create the makefiles.
8224 dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
8225 dnl   for the files it cannot handle correctly. This way, config.status
8226 dnl   will handle these files.
8227 dnl If it fails, nothing is set and config.status will run as usual.
8229 dnl This does not change the $MAKEFILES variable.
8231 dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
8233 if test -z "${AS_PERL}"; then
8234 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
8235 else
8236 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
8238 . ./conftest.sh
8239 rm conftest.sh
8241 echo $MAKEFILES > unallmakefiles
8243 AC_OUTPUT($MAKEFILES)
8245 dnl ========================================================
8246 dnl = Setup a nice relatively clean build environment for
8247 dnl = sub-configures.
8248 dnl ========================================================
8249 CC="$_SUBDIR_CC" 
8250 CXX="$_SUBDIR_CXX" 
8251 CFLAGS="$_SUBDIR_CFLAGS" 
8252 CPPFLAGS="$_SUBDIR_CPPFLAGS"
8253 CXXFLAGS="$_SUBDIR_CXXFLAGS"
8254 LDFLAGS="$_SUBDIR_LDFLAGS"
8255 HOST_CC="$_SUBDIR_HOST_CC" 
8256 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
8257 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
8260 unset MAKEFILES
8261 unset CONFIG_FILES
8263 if test "$COMPILE_ENVIRONMENT"; then
8264 if test -z "$MOZ_NATIVE_NSPR" || test "$MOZ_LDAP_XPCOM"; then
8265     ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
8266     if test -z "$MOZ_DEBUG"; then
8267         ac_configure_args="$ac_configure_args --disable-debug"
8268     fi
8269     if test "$MOZ_OPTIMIZE" = "1"; then
8270         ac_configure_args="$ac_configure_args --enable-optimize"
8271     fi
8272     if test "$OS_ARCH" = "WINNT" && test "$NS_TRACE_MALLOC"; then
8273        ac_configure_args="$ac_configure_args --enable-debug --disable-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(nsprpub)
8279     ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8282 if test -z "$MOZ_NATIVE_NSPR"; then
8283     # Hack to deal with the fact that we use NSPR_CFLAGS everywhere
8284     AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
8285     if test ! "$VACPP" && test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE"; then
8286        _libs=`./nsprpub/config/nspr-config --prefix=$\(LIBXUL_DIST\) --exec-prefix=$\(DIST\) --libdir=$\(LIBXUL_DIST\)/lib --libs`
8287        $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $_libs'" config/autoconf.mk
8288     fi
8289     if test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE" ; then
8290        _cflags=`./nsprpub/config/nspr-config --prefix=$\(LIBXUL_DIST\) --exec-prefix=$\(DIST\) --includedir=$\(LIBXUL_DIST\)/include/nspr --cflags`
8291        $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $_cflags'" config/autoconf.mk
8292     fi
8293     rm -f config/autoconf.mk.bak
8296 # if we're building the LDAP XPCOM component, we need to build 
8297 # the c-sdk first.  
8299 if test "$MOZ_LDAP_XPCOM"; then
8301     # these subdirs may not yet have been created in the build tree.
8302     # don't use the "-p" switch to mkdir, since not all platforms have it
8303     #
8304     if test ! -d "directory"; then
8305         mkdir "directory"
8306     fi
8307     if test ! -d "directory/c-sdk"; then
8308         mkdir "directory/c-sdk"    
8309     fi
8310     if test ! -d "directory/c-sdk/ldap"; then
8311         mkdir "directory/c-sdk/ldap"    
8312     fi
8314     ac_configure_args="$_SUBDIR_CONFIG_ARGS --prefix=$MOZ_BUILD_ROOT/dist --with-dist-prefix=$MOZ_BUILD_ROOT/dist --without-nss --with-mozilla"
8315     if test -z "$MOZ_DEBUG"; then
8316         ac_configure_args="$ac_configure_args --disable-debug"
8317     fi
8318     if test "$MOZ_OPTIMIZE" = "1"; then
8319         ac_configure_args="$ac_configure_args --enable-optimize"
8320     fi
8321     if test -n "$HAVE_64BIT_OS"; then
8322         ac_configure_args="$ac_configure_args --enable-64bit"
8323     fi
8324     AC_OUTPUT_SUBDIRS(directory/c-sdk)
8325     ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8327 fi # COMPILE_ENVIRONMENT