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
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/
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
16 dnl The Original Code is this file as it was released upon August 6, 1998.
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.
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
31 dnl Henry Sobotka <sobotka@axess.com>
33 dnl Dan Mosedale <dmose@mozilla.org>
35 dnl Seth Spitzer <sspitzer@netscape.com>
37 dnl Benjamin Smedberg <benjamin@smedbergs.us>
38 dnl Howard Chu <hyc@symas.com>
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>
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.
58 dnl ***** END LICENSE BLOCK *****
60 dnl Process this file with autoconf to produce a configure script.
61 dnl ========================================================
64 AC_INIT(config/config.mk)
65 AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
67 TARGET_CPU="${target_cpu}"
68 TARGET_VENDOR="${target_vendor}"
69 TARGET_OS="${target_os}"
72 MOZ_DEB_TIMESTAMP=`date +"%a, %d %b %Y %T %z" 2>&1`
73 AC_SUBST(MOZ_DEB_TIMESTAMP)
76 dnl ========================================================
78 dnl = Don't change the following two lines. Doing so breaks:
80 dnl = CFLAGS="-foo" ./configure
82 dnl ========================================================
84 CPPFLAGS="${CPPFLAGS=}"
85 CXXFLAGS="${CXXFLAGS=}"
87 HOST_CFLAGS="${HOST_CFLAGS=}"
88 HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
89 HOST_LDFLAGS="${HOST_LDFLAGS=}"
91 dnl ========================================================
92 dnl = Preserve certain environment flags passed to configure
93 dnl = We want sub projects to receive the same flags
94 dnl = untainted by this configure script
95 dnl ========================================================
98 _SUBDIR_CFLAGS="$CFLAGS"
99 _SUBDIR_CPPFLAGS="$CPPFLAGS"
100 _SUBDIR_CXXFLAGS="$CXXFLAGS"
101 _SUBDIR_LDFLAGS="$LDFLAGS"
102 _SUBDIR_HOST_CC="$HOST_CC"
103 _SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
104 _SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
105 _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
106 _SUBDIR_CONFIG_ARGS="$ac_configure_args"
108 dnl Set the version number of the libs included with mozilla
109 dnl ========================================================
116 dnl Set the minimum version of toolkit libs used by mozilla
117 dnl ========================================================
126 WINDRES_VERSION=2.14.90
129 GNOMEUI_VERSION=2.2.0
132 STARTUP_NOTIFICATION_VERSION=0.8
135 SQLITE_VERSION=3.6.6.2
139 dnl Set various checks
140 dnl ========================================================
144 dnl Initialize the Pthread test variables early so they can be
145 dnl overridden by each platform.
146 dnl ========================================================
150 dnl Do not allow a separate objdir build if a srcdir build exists.
151 dnl ==============================================================
152 _topsrcdir=`cd \`dirname $0\`; pwd`
155 if test "$_topsrcdir" != "$_objdir"
157 # Check for a couple representative files in the source tree
159 for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
160 if test -f $file; then
161 _conflict_files="$_conflict_files $file"
164 if test "$_conflict_files"; then
166 echo "* Your source tree contains these files:"
167 for file in $_conflict_files; do
171 * This indicates that you previously built in the source tree.
172 * A source tree build can confuse the separate objdir build.
174 * To clean up the source tree:
185 dnl Default to MSVC for win32
186 dnl ==============================================================
187 if test -z "$CROSS_COMPILE"; then
189 *-cygwin*|*-mingw*|*-msvc*|*-mks*)
191 if test -z "$CC"; then CC=cl; fi
192 if test -z "$CXX"; then CXX=cl; fi
193 if test -z "$CPP"; then CPP="cl -E -nologo"; fi
194 if test -z "$CXXCPP"; then CXXCPP="cl -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
195 if test -z "$LD"; then LD=link; fi
196 if test -z "$AS"; then AS=ml; fi
197 if test -z "$MIDL"; then MIDL=midl; fi
202 COMPILE_ENVIRONMENT=1
203 MOZ_ARG_ENABLE_BOOL(compile-environment,
204 [ --disable-compile-environment
205 Disable compiler/library checks.],
206 COMPILE_ENVIRONMENT=1,
207 COMPILE_ENVIRONMENT= )
209 MOZ_ARG_WITH_STRING(l10n-base,
210 [ --with-l10n-base=DIR path to l10n repositories],
211 L10NBASEDIR=$withval)
212 if test ! -z "$L10NBASEDIR"; then
213 if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then
214 AC_MSG_ERROR([--with-l10n-base must specify a path])
215 elif test -d "$L10NBASEDIR"; then
216 L10NBASEDIR=`cd "$L10NBASEDIR" && pwd`
218 AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
221 AC_SUBST(L10NBASEDIR)
223 dnl ========================================================
224 dnl Checks for compilers.
225 dnl ========================================================
226 dnl Set CROSS_COMPILE in the environment when running configure
227 dnl to use the cross-compile setup for now
228 dnl ========================================================
230 if test "$COMPILE_ENVIRONMENT"; then
232 dnl Do some special WinCE toolchain stuff
236 MOZ_ARG_WITH_STRING(wince-sdk,
237 [ --with-wince-sdk=WINCE_SDK
238 The path to the windows mobile sdk],
242 mk_add_options WINCE=1
244 echo -----------------------------------------------------------------------------
245 echo Building Windows CE Shunt Library and Tool Chain
252 rm -f $srcdir/build/wince/shunt/include/windows.h
254 echo -n "#define TOPSRCDIR \"" > $srcdir/build/wince/tools/topsrcdir.h
255 echo `cd "$_topsrcdir" && pwd -W | tr '\n' '\"'` >> $srcdir/build/wince/tools/topsrcdir.h
256 make -C $srcdir/build/wince/tools
258 echo "#include \"$WINCE_SDK/windows.h\"" > $srcdir/build/wince/shunt/include/windows.h
259 echo "#define GetProcAddress GetProcAddressA" >> $srcdir/build/wince/shunt/include/windows.h
260 echo -----------------------------------------------------------------------------
265 if test -n "$CROSS_COMPILE" && test "$target" != "$host"; then
266 echo "cross compiling from $host to $target"
270 _SAVE_CFLAGS="$CFLAGS"
271 _SAVE_LDFLAGS="$LDFLAGS"
273 AC_MSG_CHECKING([for host c compiler])
274 AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
275 if test -z "$HOST_CC"; then
276 AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
278 AC_MSG_RESULT([$HOST_CC])
279 AC_MSG_CHECKING([for host c++ compiler])
280 AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
281 if test -z "$HOST_CXX"; then
282 AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
284 AC_MSG_RESULT([$HOST_CXX])
286 if test -z "$HOST_CFLAGS"; then
287 HOST_CFLAGS="$CFLAGS"
289 if test -z "$HOST_CXXFLAGS"; then
290 HOST_CXXFLAGS="$CXXFLAGS"
292 if test -z "$HOST_LDFLAGS"; then
293 HOST_LDFLAGS="$LDFLAGS"
295 AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
296 AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
298 CFLAGS="$HOST_CFLAGS"
299 LDFLAGS="$HOST_LDFLAGS"
301 AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
302 AC_TRY_COMPILE([], [return(0);],
303 [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
304 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
307 CFLAGS="$HOST_CXXFLAGS"
309 AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
310 AC_TRY_COMPILE([], [return(0);],
311 [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
312 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
316 LDFLAGS=$_SAVE_LDFLAGS
318 case "$build:$target" in
319 powerpc-apple-darwin8*:i?86-apple-darwin*)
320 dnl The Darwin cross compiler doesn't necessarily point itself at a
321 dnl root that has libraries for the proper architecture, it defaults
322 dnl to the system root. The libraries in the system root on current
323 dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
324 dnl checks will fail. Fake a working SDK in that case.
326 _SAVE_CXXFLAGS=$CXXLAGS
327 CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CFLAGS"
328 CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CXXFLAGS"
332 AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
335 AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
339 case "$build:$target" in
340 powerpc-apple-darwin8*:i?86-apple-darwin*)
341 dnl Revert the changes made above. From this point on, the target
342 dnl compiler will never be used without applying the SDK to CFLAGS
343 dnl (see --with-macos-sdk below).
345 CXXFLAGS=$_SAVE_CXXFLAGS
349 AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
350 AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
351 AC_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
352 AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
353 AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
354 AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
355 AC_DEFINE(CROSS_COMPILE)
360 AC_PATH_PROGS(AS, $AS as, $CC)
361 AC_CHECK_PROGS(AR, ar, :)
362 AC_CHECK_PROGS(LD, ld, :)
363 AC_CHECK_PROGS(STRIP, strip, :)
364 AC_CHECK_PROGS(WINDRES, windres, :)
365 if test -z "$HOST_CC"; then
368 if test -z "$HOST_CFLAGS"; then
369 HOST_CFLAGS="$CFLAGS"
371 if test -z "$HOST_CXX"; then
374 if test -z "$HOST_CXXFLAGS"; then
375 HOST_CXXFLAGS="$CXXFLAGS"
377 if test -z "$HOST_LDFLAGS"; then
378 HOST_LDFLAGS="$LDFLAGS"
380 if test -z "$HOST_RANLIB"; then
381 HOST_RANLIB="$RANLIB"
383 if test -z "$HOST_AR"; then
394 if test "$GCC" = "yes"; then
396 CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
398 if test "$GXX" = "yes"; then
400 CXX_VERSION=`$CXX -v 2>&1 | grep 'gcc version'`
402 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
405 if test "`echo | $LD -v 2>&1 | grep -c GNU`" != "0"; then
408 if test "$GNU_CC"; then
409 if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
416 if test "$GCC" = yes; then
417 if test "`$CC -help 2>&1 | grep -c 'Intel(R) C Compiler'`" != "0"; then
422 if test "$GXX" = yes; then
423 if test "`$CXX -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
428 dnl Special win32 checks
429 dnl ========================================================
435 if test -n "$GNU_CC"; then
443 MOZ_ARG_WITH_STRING(windows-version,
444 [ --with-windows-version=WINVER
445 Minimum Windows version (WINVER) to support
456 AC_MSG_ERROR([Invalid value --with-windows-version, must be 400, 500 or 501]);
462 *-cygwin*|*-mingw*|*-msvc*|*-mks*|*-wince)
463 if test "$GCC" != "yes"; then
464 # Check to see if we are really running in a msvc environemnt
466 AC_CHECK_PROGS(MIDL, midl)
468 # Make sure compilers are valid
469 CFLAGS="$CFLAGS -TC -nologo"
470 CXXFLAGS="$CXXFLAGS -TP -nologo"
473 AC_TRY_COMPILE([#include <stdio.h>],
474 [ printf("Hello World\n"); ],,
475 AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
478 AC_TRY_COMPILE([#include <new.h>],
479 [ unsigned *test = new unsigned(42); ],,
480 AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
484 _MSVC_VER_FILTER='s|.* ([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
487 # Determine compiler version
488 CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
489 _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
490 _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
491 _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
492 _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
493 _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
495 CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
496 _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
498 if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
499 AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
501 if test "$_CC_MAJOR_VERSION" = "12"; then
503 elif test "$_CC_MAJOR_VERSION" = "13"; then
505 elif test "$_CC_MAJOR_VERSION" = "14"; then
507 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
508 dnl -DYNAMICBASE is only supported on VC8SP1 or newer,
509 dnl so be very specific here!
510 dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762
511 if test $_CC_RELEASE -gt 50727; then
513 elif test $_CC_BUILD -ge 762; then
516 AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
517 AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
518 elif test "$_CC_MAJOR_VERSION" = "15"; then
520 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
521 LDFLAGS="$LDFLAGS -MANIFESTUAC:NO"
523 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
524 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
526 AC_MSG_ERROR([This version of the MSVC compiler, $CC_VERSION , is unsupported.])
529 _MOZ_RTTI_FLAGS_ON='-GR'
530 _MOZ_RTTI_FLAGS_OFF='-GR-'
531 _MOZ_EXCEPTIONS_FLAGS_ON='-EHsc'
532 _MOZ_EXCEPTIONS_FLAGS_OFF=''
534 if test -n "$WIN32_REDIST_DIR"; then
535 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
539 # ensure that mt.exe is Microsoft (R) Manifest Tool and not magnetic tape manipulation utility (or something else)
540 if test "$_CC_SUITE" -ge "8"; then
542 _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
545 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
546 if test -n "$MSMT_TOOL"; then
547 MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
548 if test -z "$MSMANIFEST_TOOL_VERSION"; then
549 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
554 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
558 # Check linker version
559 _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
560 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
561 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
562 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
567 _MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
568 _MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
569 _MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
570 _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
571 # Add flags if necessary
572 AC_MSG_CHECKING([for midl flags])
573 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
574 # Starting with MIDL version 6.0.359, the MIDL compiler
575 # generates /Oicf /robust stubs by default, which is not
576 # compatible with versions of Windows older than Win2k.
577 # This switches us back to the old behaviour. When we drop
578 # support for Windows older than Win2k, we should remove
580 MIDL_FLAGS="${MIDL_FLAGS} -no_robust"
581 AC_MSG_RESULT([need -no_robust])
583 MIDL_FLAGS="${MIDL_FLAGS}"
584 AC_MSG_RESULT([none needed])
587 unset _MSVC_VER_FILTER
590 # Check w32api version
591 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
592 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
593 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
594 AC_TRY_COMPILE([#include <w32api.h>],
595 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
596 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
597 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
598 #error "test failed."
600 , [ res=yes ], [ res=no ])
601 AC_MSG_RESULT([$res])
602 if test "$res" != "yes"; then
603 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
605 # Check windres version
606 AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
607 _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
608 AC_MSG_RESULT([$_WINDRES_VERSION])
609 _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
610 _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
611 _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
612 WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
613 WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
614 WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
615 if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
616 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
617 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
618 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
619 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
620 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
622 AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
626 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
627 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
628 # Require OS features provided by IE 5.0
629 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0500)
633 dnl Test breaks icc on OS/2 && MSVC
634 if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
636 if grep "NO_MINUS_C_MINUS_O 1" ./confdefs.h >/dev/null; then
640 CC="${srcdir}/build/hcc '$CC'"
641 CXX="${srcdir}/build/hcpp '$CXX'"
648 if test -n "$_WIN32_MSVC"; then
650 SKIP_COMPILER_CHECKS=1
651 SKIP_LIBRARY_CHECKS=1
654 fi # COMPILE_ENVIRONMENT
666 dnl ========================================================
667 dnl Checks for programs.
668 dnl ========================================================
671 AC_PATH_PROGS(PERL, $PERL perl5 perl )
672 if test -z "$PERL" || test "$PERL" = ":"; then
673 AC_MSG_ERROR([perl not found in \$PATH])
676 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
677 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
678 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
680 AC_MSG_RESULT([$_perl_version])
682 if test "$_perl_res" != 0; then
683 AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
687 AC_MSG_CHECKING([for full perl installation])
688 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
690 if test "$_perl_res" != 0; then
692 AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
697 AC_PATH_PROGS(PYTHON, $PYTHON python)
698 if test -z "$PYTHON"; then
699 AC_MSG_ERROR([python was not found in \$PATH])
702 AC_PATH_PROGS(NSINSTALL_BIN, nsinstall )
703 if test -z "$COMPILE_ENVIRONMENT"; then
704 if test -z "$NSINSTALL_BIN" || test "$NSINSTALL_BIN" = ":"; then
705 NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
708 AC_SUBST(NSINSTALL_BIN)
710 AC_PATH_PROG(DOXYGEN, doxygen, :)
711 AC_PATH_PROG(WHOAMI, whoami, :)
712 AC_PATH_PROG(AUTOCONF, autoconf, :)
713 AC_PATH_PROG(UNZIP, unzip, :)
714 AC_PATH_PROGS(ZIP, zip)
715 if test -z "$ZIP" || test "$ZIP" = ":"; then
716 AC_MSG_ERROR([zip not found in \$PATH])
718 AC_PATH_PROG(SYSTEM_MAKEDEPEND, makedepend)
719 AC_PATH_PROG(XARGS, xargs)
720 if test -z "$XARGS" || test "$XARGS" = ":"; then
721 AC_MSG_ERROR([xargs not found in \$PATH .])
724 if test "$COMPILE_ENVIRONMENT"; then
726 dnl ========================================================
727 dnl = Mac OS X toolchain support
728 dnl ========================================================
732 dnl Current known valid versions for GCC_VERSION are 2.95.2 3.1 3.3 4.0.
733 dnl 4.0 identifies itself as 4.0.x, so strip the decidecimal for
734 dnl the environment and includedir purposes (when using an SDK, below),
735 dnl but remember the full version number for the libdir (SDK).
737 GCC_VERSION_FULL=`echo $CXX_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
738 GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
740 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
741 dnl Bug 280479, but this keeps popping up in bug 292530 too because
742 dnl 4.0.0/4061 is the default compiler in Tiger.
744 GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
746 if test "$GCC_BUILD" = "4061" ; then
747 AC_MSG_ERROR([You are attempting to use Apple gcc 4.0 build 4061.
748 This compiler was supplied with Xcode 2.0, and contains bugs that prevent it
749 from building Mozilla. Upgrade to Xcode 2.1 or later.])
753 dnl xcodebuild needs GCC_VERSION defined in the environment, since it
754 dnl doesn't respect the CC/CXX setting. With GCC_VERSION set, it will use
755 dnl /usr/bin/g(cc|++)-$GCC_VERSION.
756 AC_PATH_PROGS(PBBUILD, pbbuild xcodebuild pbxbuild)
761 XCODEBUILD_VERSION=`$PBBUILD -version 2>/dev/null | xargs | sed -e 's/.*DevToolsCore-\([0-9]*\).*/\1/'`
763 if test -n "$XCODEBUILD_VERSION" && test "$XCODEBUILD_VERSION" -ge 620 ; then
769 dnl sdp was formerly in /Developer/Tools. As of Mac OS X 10.4 (Darwin 8),
770 dnl it has moved into /usr/bin.
771 AC_PATH_PROG(SDP, sdp, :, [$PATH:/usr/bin:/Developer/Tools])
775 AC_SUBST(GCC_VERSION)
776 AC_SUBST(XCODEBUILD_VERSION)
777 AC_SUBST(HAS_XCODE_2_1)
779 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
780 dnl that a universal binary is being produced.
781 AC_SUBST(UNIVERSAL_BINARY)
783 dnl ========================================================
784 dnl Check for MacOS deployment target version
785 dnl ========================================================
787 MOZ_ARG_ENABLE_STRING(macos-target,
788 [ --enable-macos-target=VER (default=10.4)
789 Set the minimum MacOS version needed at runtime],
790 [_MACOSX_DEPLOYMENT_TARGET=$enableval])
794 if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
795 dnl Use the specified value
796 export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
797 AC_DEFINE_UNQUOTED(__ENVIRONMENT_MAC_OS_X_VERION_MIN_REQUIRED__,$_MACOSX_DEPLOYMENT_TARGET)
798 elif test -z "$MACOSX_DEPLOYMENT_TARGET" ; then
799 dnl No value specified on the command line or in the environment,
800 dnl use the lesser of the application's minimum or the architecture's
802 export MACOSX_DEPLOYMENT_TARGET=10.4
807 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
809 dnl ========================================================
810 dnl = Mac OS X SDK support
811 dnl ========================================================
814 MOZ_ARG_WITH_STRING(macos-sdk,
815 [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
816 MACOS_SDK_DIR=$withval)
818 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
819 dnl NEXT_ROOT will be set and exported only if it's needed.
820 AC_SUBST(MACOS_SDK_DIR)
823 if test "$MACOS_SDK_DIR"; then
824 dnl Sync this section with the ones in NSPR and NSS.
825 dnl Changes to the cross environment here need to be accounted for in
826 dnl the libIDL checks (below) and xpidl build.
828 if test ! -d "$MACOS_SDK_DIR"; then
829 AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
830 specify a valid SDK. SDKs are installed when the optional cross-development
831 tools are selected during the Xcode/Developer Tools installation.])
834 GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
835 if test "$GCC_VERSION_MAJOR" -lt "4" ; then
836 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"
837 if test -d "${MACOS_SDK_DIR}/Library/Frameworks" ; then
838 SDK_C_INCLUDE="$SDK_C_INCLUDE -F${MACOS_SDK_DIR}/Library/Frameworks"
840 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"
842 CFLAGS="$CFLAGS -nostdinc ${SDK_C_INCLUDE}"
843 CXXFLAGS="$CXXFLAGS -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
845 dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
846 CPP="$CPP -nostdinc ${SDK_C_INCLUDE}"
847 CXXCPP="$CXXCPP -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
849 dnl ld support for -syslibroot is compiler-agnostic, but only available
850 dnl on Tiger. Although it's possible to switch on the build host's
851 dnl OS release to use ld -syslibroot when available, ld -syslibroot will
852 dnl cause warnings as long as NEXT_ROOT is set. NEXT_ROOT should be
853 dnl set because both the compiler and linker use it.
854 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"
855 export NEXT_ROOT=$MACOS_SDK_DIR
857 if test -n "$CROSS_COMPILE" ; then
858 dnl NEXT_ROOT will be in the environment, but it shouldn't be set for
859 dnl the build host. HOST_CXX is presently unused.
860 HOST_CC="NEXT_ROOT= $HOST_CC"
861 HOST_CXX="NEXT_ROOT= $HOST_CXX"
864 dnl gcc >= 4.0 uses different paths than above, but knows how to find
866 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
867 CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
869 dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
870 CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
871 CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
873 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
874 dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
875 dnl that supports -syslibroot. Don't set NEXT_ROOT because it will
876 dnl be ignored and cause warnings when -syslibroot is specified.
877 dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
878 dnl the -isysroot it receives, so this is only needed with 4.0.0.
879 LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
884 AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
886 AC_TRY_COMPILE([#include <new>
887 int main() { return 0; }],
891 AC_MSG_RESULT($result)
893 if test "$result" = "no" ; then
894 AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
898 fi # COMPILE_ENVIRONMENT
900 dnl Be sure the make we use is GNU make.
901 dnl on win32, gmake.exe is the generally the wrong version
903 cygwin*|mingw*|mks*|msvc*)
904 AC_PATH_PROGS(MAKE, $MAKE make gmake, :)
907 AC_PATH_PROGS(MAKE, $MAKE gmake make, :)
910 _make_try=`$MAKE --version 2>/dev/null | grep GNU`
911 if test ! "$_make_try"
914 echo "*** $MAKE is not GNU Make. You will not be able to build Mozilla without GNU Make."
918 dnl Now exit if version if < MAKE_VERSION
920 echo 'all: ; @echo $(MAKE_VERSION)' > dummy.mk
921 _make_vers=`$MAKE --no-print-directory -f dummy.mk all 2>/dev/null`
923 _MAKE_MAJOR_VERSION=`echo $_make_vers | $AWK -F\. '{ print $1 }'`
924 _MAKE_MINOR_VERSION=`echo $_make_vers | $AWK -F\. '{ print $2 }'`
925 MAKE_MAJOR_VERSION=`echo $MAKE_VERSION | $AWK -F\. '{ print $1 }'`
926 MAKE_MINOR_VERSION=`echo $MAKE_VERSION | $AWK -F\. '{ print $2 }'`
927 if test "$_MAKE_MAJOR_VERSION" -lt "$MAKE_MAJOR_VERSION" || \
928 test "$_MAKE_MAJOR_VERSION" = "$MAKE_MAJOR_VERSION" -a \
929 "$_MAKE_MINOR_VERSION" -lt "$MAKE_MINOR_VERSION"; then
930 AC_MSG_ERROR([GNU Make $MAKE_VERSION or higher is required to build Mozilla.])
934 if test "$COMPILE_ENVIRONMENT"; then
938 dnl Check in X11 include directory too.
939 if test "$no_x" != "yes"; then
940 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
945 fi # COMPILE_ENVIRONMENT
947 dnl ========================================================
948 dnl set the defaults first
949 dnl ========================================================
968 MOZ_USER_DIR=".mozilla"
970 HOST_AR_FLAGS='$(AR_FLAGS)'
973 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/jpeg)'
975 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,$(DEPTH)/modules/zlib/src)'
977 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
979 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/modules/libimg/png)'
981 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs'
982 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxpcom -lxpcom_core'
983 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
984 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxpcom'
985 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) -lxul'
986 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
987 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
989 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
990 MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom_compat'
994 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
995 MOZ_GFX_TOOLKIT='$(MOZ_WIDGET_TOOLKIT)'
997 MOZ_ENABLE_POSTSCRIPT=1
999 if test -n "$CROSS_COMPILE"; then
1000 OS_TARGET="${target_os}"
1001 OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
1003 case "${target_os}" in
1004 linux*) OS_ARCH=Linux OS_TARGET=Linux ;;
1005 kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
1006 solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
1007 mingw*) OS_ARCH=WINNT ;;
1008 wince*) OS_ARCH=WINCE ;;
1009 darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;;
1012 OS_TARGET=`uname -s`
1013 OS_ARCH=`uname -s | sed -e 's|/|_|g'`
1014 OS_RELEASE=`uname -r`
1017 # Before this used `uname -m` when not cross compiling
1018 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1019 OS_TEST="${target_cpu}"
1023 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1025 #######################################################################
1026 # Master "Core Components" macros for getting the OS target #
1027 #######################################################################
1030 # Note: OS_TARGET should be specified on the command line for gmake.
1031 # When OS_TARGET=WIN95 is specified, then a Windows 95 target is built.
1032 # The difference between the Win95 target and the WinNT target is that
1033 # the WinNT target uses Windows NT specific features not available
1034 # in Windows 95. The Win95 target will run on Windows NT, but (supposedly)
1035 # at lesser performance (the Win95 target uses threads; the WinNT target
1038 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1039 # cross-compilation.
1043 # The following hack allows one to build on a WIN95 machine (as if
1044 # s/he were cross-compiling on a WINNT host for a WIN95 target).
1045 # It also accomodates for MKS's uname.exe. If you never intend
1046 # to do development on a WIN95 machine, you don't need this hack.
1061 CYGWIN_9*|CYGWIN_ME*)
1062 OS_ARCH='CYGWIN_NT-4.0'
1068 # Define and override various archtecture-specific variables, including
1077 case "$HOST_OS_ARCH" in
1078 cygwin*|mingw*|mks*|msvc*)
1097 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1100 HOST_OS_ARCH=UNIXWARE
1112 HOST_OS_ARCH=OpenVMS
1122 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1126 HOST_OS_ARCH=UNIXWARE
1136 # If uname -s returns "Windows_NT", we assume that we are using
1137 # the uname.exe in MKS toolkit.
1139 # The -r option of MKS uname only returns the major version number.
1140 # So we need to use its -v option to get the minor version number.
1141 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1145 OS_MINOR_RELEASE=`uname -v`
1146 if test "$OS_MINOR_RELEASE" = "00"; then
1149 OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1151 CYGWIN32_NT|CYGWIN_NT*|MINGW*_NT*)
1153 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
1154 # the uname.exe in the Cygwin tools.
1155 # Prior to the Beta 20 release, Cygwin was called GNU-Win32.
1156 # If uname -s returns "CYGWIN32/NT", we assume that we are using
1157 # the uname.exe in the GNU-Win32 tools.
1158 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1159 # the uname.exe in the MSYS tools.
1161 OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1166 OS_RELEASE=`uname -v`.`uname -r`
1167 OS_TEST=${target_cpu}
1179 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1183 OS_RELEASE=`uname -v`
1207 OS_RELEASE=`uname -v`
1213 OS_RELEASE=`uname -v`
1216 if test "$OS_TARGET" != "NTO"; then
1218 OS_RELEASE=`uname -v | sed 's/^\([0-9]\)\([0-9]*\)$/\1.\2/'`
1227 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1233 OS_RELEASE=`uname -v`
1240 case "${target_cpu}" in
1251 if test -z "$CROSS_COMPILE" ; then
1259 if test "$OS_ARCH" = "NCR"; then
1261 OS_RELEASE=`awk '{print $3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$/\2.\3/'`
1265 # Only set CPU_ARCH if we recognize the value of OS_TEST
1272 powerpc* | ppc | rs6000)
1276 Alpha | alpha | ALPHA)
1293 if test -z "$OS_TARGET"; then
1296 if test "$OS_TARGET" = "WIN95"; then
1299 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1301 dnl ========================================================
1302 dnl GNU specific defaults
1303 dnl ========================================================
1304 if test "$GNU_CC"; then
1305 # FIXME: Let us build with strict aliasing. bug 414641.
1306 CFLAGS="$CFLAGS -fno-strict-aliasing"
1307 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1308 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1309 DSO_LDOPTS='-shared'
1310 if test "$GCC_USE_GNU_LD"; then
1311 # Don't allow undefined symbols in libraries
1312 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1314 WARNINGS_AS_ERRORS='-Werror'
1316 DSO_PIC_CFLAGS='-fPIC'
1317 ASFLAGS="$ASFLAGS -fPIC"
1318 _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
1319 _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
1320 _MOZ_EXCEPTIONS_FLAGS_ON='-fhandle-exceptions'
1321 _MOZ_EXCEPTIONS_FLAGS_OFF='-fno-handle-exceptions'
1323 # Turn on GNU specific features
1324 # -Wall - turn on all warnings
1325 # -pedantic - make compiler warn about non-ANSI stuff, and
1326 # be a little bit stricter
1327 # Warnings slamm took out for now (these were giving more noise than help):
1328 # -Wbad-function-cast - warns when casting a function to a new return type
1329 # -Wshadow - removed because it generates more noise than help --pete
1330 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
1331 if test -z "$INTEL_CC"; then
1332 # Don't use -Wcast-align with ICC
1334 # And don't use it on hppa, ia64, sparc, since it's noisy there
1335 hppa | ia64 | sparc)
1338 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1343 dnl Turn pedantic on but disable the warnings for long long
1346 if test -z "$INTEL_CC"; then
1347 _IGNORE_LONG_LONG_WARNINGS=1
1348 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
1350 _IGNORE_LONG_LONG_WARNINGS=
1354 _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1355 _USE_CPP_INCLUDE_FLAG=1
1357 MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1358 MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1360 DSO_LDOPTS='-shared'
1361 if test "$GNU_LD"; then
1362 # Don't allow undefined symbols in libraries
1363 DSO_LDOPTS="$DSO_LDOPTS -z defs"
1367 DSO_PIC_CFLAGS='-KPIC'
1368 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1371 if test "$GNU_CXX"; then
1372 # FIXME: Let us build with strict aliasing. bug 414641.
1373 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
1374 # Turn on GNU specific features
1375 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
1376 if test -z "$INTEL_CC"; then
1377 # Don't use -Wcast-align with ICC
1379 # And don't use it on hppa, ia64, sparc, since it's noisy there
1380 hppa | ia64 | sparc)
1383 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1388 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1389 _USE_CPP_INCLUDE_FLAG=1
1391 AC_CACHE_CHECK(whether the compiler supports -Wno-invalid-offsetof,
1392 ac_has_wno_invalid_offsetof,
1396 _SAVE_CXXFLAGS="$CXXFLAGS"
1397 CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1400 ac_has_wno_invalid_offsetof="yes",
1401 ac_has_wno_invalid_offsetof="no")
1402 CXXFLAGS="$_SAVE_CXXFLAGS"
1405 if test "$ac_has_wno_invalid_offsetof" = "yes"; then
1406 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1409 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1412 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1413 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1414 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1415 dnl normal behavior.
1416 dnl ========================================================
1418 MKSHLIB_UNFORCE_ALL=
1420 if test "$COMPILE_ENVIRONMENT"; then
1421 if test "$GNU_CC"; then
1422 AC_MSG_CHECKING(whether ld has archive extraction flags)
1423 AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1424 [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1425 ac_cv_mkshlib_force_and_unforce="no"
1426 exec 3<&0 <<LOOP_INPUT
1427 force="-Wl,--whole-archive"; unforce="-Wl,--no-whole-archive"
1428 force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1429 force="-Wl,-all"; unforce="-Wl,-none"
1436 AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1439 LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1441 if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1445 eval $ac_cv_mkshlib_force_and_unforce
1446 MKSHLIB_FORCE_ALL=$force
1447 MKSHLIB_UNFORCE_ALL=$unforce
1450 fi # COMPILE_ENVIRONMENT
1452 dnl =================================================================
1453 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1454 dnl which is bad when cross compiling.
1455 dnl =================================================================
1456 if test "$COMPILE_ENVIRONMENT"; then
1457 configure_static_assert_macros='
1458 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1459 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1460 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1463 dnl test that the macros actually work:
1464 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1465 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1468 ac_cv_static_assertion_macros_work="yes"
1469 AC_TRY_COMPILE([$configure_static_assert_macros],
1470 [CONFIGURE_STATIC_ASSERT(1)],
1472 ac_cv_static_assertion_macros_work="no")
1473 AC_TRY_COMPILE([$configure_static_assert_macros],
1474 [CONFIGURE_STATIC_ASSERT(0)],
1475 ac_cv_static_assertion_macros_work="no",
1478 AC_TRY_COMPILE([$configure_static_assert_macros],
1479 [CONFIGURE_STATIC_ASSERT(1)],
1481 ac_cv_static_assertion_macros_work="no")
1482 AC_TRY_COMPILE([$configure_static_assert_macros],
1483 [CONFIGURE_STATIC_ASSERT(0)],
1484 ac_cv_static_assertion_macros_work="no",
1488 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1489 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1490 AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1492 fi # COMPILE_ENVIRONMENT
1494 dnl ========================================================
1495 dnl Checking for 64-bit OS
1496 dnl ========================================================
1497 if test "$COMPILE_ENVIRONMENT"; then
1500 AC_MSG_CHECKING(for 64-bit OS)
1501 AC_TRY_COMPILE([$configure_static_assert_macros],
1502 [CONFIGURE_STATIC_ASSERT(sizeof(long) == 8)],
1503 result="yes", result="no")
1504 AC_MSG_RESULT("$result")
1505 if test "$result" = "yes"; then
1506 AC_DEFINE(HAVE_64BIT_OS)
1509 AC_SUBST(HAVE_64BIT_OS)
1511 fi # COMPILE_ENVIRONMENT
1513 dnl ========================================================
1514 dnl Enable high-memory support on OS/2 by default.
1515 dnl ========================================================
1516 MOZ_OS2_HIGH_MEMORY=1
1517 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1518 [ --disable-os2-high-mem Disable high-memory support on OS/2],
1519 MOZ_OS2_HIGH_MEMORY=,
1520 MOZ_OS2_HIGH_MEMORY=1 )
1521 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1523 dnl ========================================================
1524 dnl System overrides of the defaults for host
1525 dnl ========================================================
1528 HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
1529 HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
1530 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1533 *cygwin*|*mingw*|*mks*|*msvc*|*wince)
1534 if test -n "$_WIN32_MSVC"; then
1536 HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1537 HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1538 HOST_RANLIB='echo ranlib'
1540 HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
1542 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
1543 HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1544 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1545 HOST_BIN_SUFFIX=.exe
1548 dnl MinGW/MSYS does not need CYGWIN_WRAPPER
1551 CYGWIN_WRAPPER="${srcdir}/build/cygwin-wrapper"
1552 if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
1554 CYGWIN_WRAPPER="${_pwd}/${srcdir}/build/cygwin-wrapper"
1556 if test "`${PERL} -v | grep -c cygwin 2>/dev/null`" = 0; then
1558 PERL="${CYGWIN_WRAPPER} $PERL"
1561 if test "`${PYTHON} -c 'import sys; print sys.platform;'`" != "cygwin"; then
1562 PYTHON="${CYGWIN_WRAPPER} $PYTHON"
1569 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1570 HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1571 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1572 MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
1573 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL -lobjc'
1576 *-linux*|*-kfreebsd*-gnu)
1577 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1578 HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1579 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1583 HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1584 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1585 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1586 HOST_BIN_SUFFIX=.exe
1591 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1592 HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
1593 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1597 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1598 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1602 dnl Get mozilla version from central milestone file
1603 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1605 dnl Get version of various core apps from the version files.
1606 FIREFOX_VERSION=`cat $topsrcdir/browser/config/version.txt`
1608 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1609 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1611 dnl ========================================================
1612 dnl System overrides of the defaults for target
1613 dnl ========================================================
1618 if test ! "$GNU_CC"; then
1619 if test ! "$HAVE_64BIT_OS"; then
1620 # Compiling with Visual Age C++ object model compat is the
1621 # default. To compile with object model ibm, add
1622 # AIX_OBJMODEL=ibm to .mozconfig.
1623 if test "$AIX_OBJMODEL" = "ibm"; then
1624 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1631 AC_SUBST(AIX_OBJMODEL)
1632 DSO_LDOPTS='-qmkshrobj=1'
1633 DSO_CFLAGS='-qflag=w:w'
1635 LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1636 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
1638 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1639 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1640 if test "$COMPILE_ENVIRONMENT"; then
1643 AC_MSG_CHECKING([for VisualAge C++ compiler version >= 6.0.0.3])
1645 [#if (__IBMCPP__ < 600)
1646 #error "Bad compiler"
1648 _BAD_COMPILER=,_BAD_COMPILER=1)
1649 if test -n "$_BAD_COMPILER"; then
1651 AC_MSG_ERROR([VisualAge C++ version 6.0.0.3 or higher is required to build.])
1653 AC_MSG_RESULT([yes])
1656 TARGET_COMPILER_ABI="ibmc"
1657 CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1658 CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1661 case "${target_os}" in
1666 if test "$COMPILE_ENVIRONMENT"; then
1667 AC_CHECK_HEADERS(sys/inttypes.h)
1669 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1674 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1675 _PLATFORM_DEFAULT_TOOLKIT="cairo-beos"
1676 DSO_LDOPTS='-nostart'
1677 TK_LIBS='-lbe -lroot'
1679 if test "$COMPILE_ENVIRONMENT"; then
1680 AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
1681 AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
1683 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
1684 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
1687 MOZ_USER_DIR="Mozilla"
1691 dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
1693 _IGNORE_LONG_LONG_WARNINGS=
1701 _WARNINGS_CFLAGS="-Wall"
1702 _WARNINGS_CXXFLAGS="-Wall"
1703 # The test above doesn't work properly, at least on 3.1.
1704 MKSHLIB_FORCE_ALL=''
1705 MKSHLIB_UNFORCE_ALL=''
1711 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1712 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1713 MOZ_OPTIMIZE_FLAGS="-O2"
1715 CFLAGS="$CFLAGS -fpascal-strings -fno-common"
1716 CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
1719 STRIP="$STRIP -x -S"
1720 _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1721 MOZ_ENABLE_POSTSCRIPT=
1722 TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1723 LDFLAGS="$LDFLAGS -framework Cocoa"
1724 # The ExceptionHandling framework is needed for Objective-C exception
1725 # logging code in nsObjCExceptions.h. Currently we only use that in debug
1727 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"
1728 # set MACOSX to generate lib/mac/MoreFiles/Makefile
1731 dnl DTrace and -dead_strip don't interact well. See bug 403132.
1732 dnl ===================================================================
1733 if test "x$enable_dtrace" = "xyes"; then
1734 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
1736 dnl check for the presence of the -dead_strip linker flag
1737 AC_MSG_CHECKING([for -dead_strip option to ld])
1738 _SAVE_LDFLAGS=$LDFLAGS
1739 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
1740 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
1741 if test -n "$_HAVE_DEAD_STRIP" ; then
1742 AC_MSG_RESULT([yes])
1743 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
1748 LDFLAGS=$_SAVE_LDFLAGS
1753 if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` != "elf"; then
1754 DLL_SUFFIX=".so.1.0"
1755 DSO_LDOPTS="-shared"
1757 if test ! "$GNU_CC"; then
1758 DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
1760 # Can't have force w/o an unforce.
1761 # # Hack for FreeBSD 2.2
1762 # if test -z "$MKSHLIB_FORCE_ALL"; then
1763 # MKSHLIB_FORCE_ALL='-Wl,-Bforcearchive'
1764 # MKSHLIB_UNFORCE_ALL=''
1770 if test ! "$GNU_CC"; then
1771 DSO_LDOPTS='-b -Wl,+s'
1774 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
1775 MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
1776 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1778 DSO_LDOPTS='-b -E +s'
1779 MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1780 MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1782 MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
1783 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1788 DSO_LDOPTS='-elf -shared'
1790 if test "$GNU_CC"; then
1791 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1792 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1793 MKSHLIB_FORCE_ALL='-Wl,-all'
1794 MKSHLIB_UNFORCE_ALL='-Wl,-none'
1795 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1797 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1798 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1799 MKSHLIB_FORCE_ALL='-all'
1800 MKSHLIB_UNFORCE_ALL='-none'
1806 dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must*
1807 dnl compile and link using -n32
1809 TARGET_COMPILER_ABI=n32
1810 DSO_LDOPTS='-elf -shared'
1811 MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1812 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1813 _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
1814 _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
1815 if test "$GNU_CC"; then
1816 MKSHLIB_FORCE_ALL='-Wl,-all'
1817 MKSHLIB_UNFORCE_ALL='-Wl,-none'
1818 _WARNINGS_CFLAGS="-Wall"
1819 _WARNINGS_CXXFLAGS="-Wall"
1820 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1822 MKSHLIB_FORCE_ALL='-all'
1823 MKSHLIB_UNFORCE_ALL='-none'
1829 CFLAGS="$CFLAGS -woff 3262 -G 4"
1830 CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
1831 if test -n "$USE_N32"; then
1832 ASFLAGS="$ASFLAGS -n32"
1833 CFLAGS="$CFLAGS -n32"
1834 CXXFLAGS="$CXXFLAGS -n32"
1835 LDFLAGS="$LDFLAGS -n32"
1837 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1838 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
1841 if test -z "$GNU_CXX"; then
1847 # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
1848 # Similarly for GNU_CXX and INTEL_CXX.
1849 if test "$INTEL_CC" || test "$INTEL_CXX"; then
1850 # -Os has been broken on Intel's C/C++ compilers for quite a
1851 # while; Intel recommends against using it.
1852 MOZ_OPTIMIZE_FLAGS="-O2"
1853 MOZ_DEBUG_FLAGS="-g -fno-inline"
1854 elif test "$GNU_CC" || test "$GNU_CXX"; then
1855 GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
1856 case $GCC_VERSION in
1858 # -Os is broken on gcc 4.1.x and 4.2.x, we need to tweak it to get good results.
1859 MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
1861 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions $MOZ_OPTIMIZE_SIZE_TWEAK"
1862 MOZ_DEBUG_FLAGS="-g -fno-inline" # most people on linux use gcc/gdb,
1863 # and that combo is not yet good at
1864 # debugging inlined functions (even
1865 # when using DWARF2 as the debugging
1869 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1873 case "${target_cpu}" in
1875 CFLAGS="$CFLAGS -mieee"
1876 CXXFLAGS="$CXXFLAGS -mieee"
1880 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1
1883 MOZ_DEBUG_FLAGS="-g" # We want inlining
1890 MOZ_TOOLS_DIR=`echo $MOZ_TOOLS`
1892 AR_EXTRACT="$AR -extract"
1894 AR_FLAGS='-OUT:"$@"'
1896 if test -z "$AS_BIN"; then
1903 if test -z "$RC"; then
1906 # certain versions of cygwin's makedepend barf on the
1907 # #include <string> vs -I./dist/include/string issue so don't use it
1913 HOST_AR='lib -OUT:$@'
1914 HOST_RANLIB='echo ranlib'
1915 HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
1918 WARNINGS_AS_ERRORS='-WX'
1919 MOZ_OPTIMIZE_FLAGS='-O1'
1920 AR_FLAGS='-NOLOGO -OUT:"$@"'
1922 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
1923 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
1926 DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
1927 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
1929 IMPORT_LIB_SUFFIX=lib
1931 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
1934 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1935 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1937 MKSHLIB_UNFORCE_ALL=
1938 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1939 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1940 MOZ_DEBUG_FLAGS='-Zi'
1941 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
1943 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
1944 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
1946 RANLIB='echo not_ranlib'
1947 STRIP='echo not_strip'
1948 TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
1951 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
1953 LIBIDL_CFLAGS="-I$MOZ_TOOLS_DIR/include ${GLIB_CFLAGS}"
1954 LIBIDL_LIBS="$MOZ_TOOLS_DIR/lib/libidl-0.6_s.lib $MOZ_TOOLS_DIR/lib/glib-1.2_s.lib"
1957 AC_DEFINE(HAVE_SNPRINTF)
1963 AC_DEFINE(HW_THREADS)
1964 AC_DEFINE(STDC_HEADERS)
1965 AC_DEFINE(NEW_H, <new>)
1966 AC_DEFINE(WIN32_LEAN_AND_MEAN)
1968 TARGET_MD_ARCH=win32
1969 _PLATFORM_DEFAULT_TOOLKIT='windows'
1972 MOZ_ENABLE_POSTSCRIPT=
1973 MOZ_USER_DIR="Mozilla"
1977 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
1982 # certain versions of cygwin's makedepend barf on the
1983 # #include <string> vs -I./dist/include/string issue so don't use it
1985 if test -n "$GNU_CC"; then
1986 CC="$CC -mno-cygwin"
1987 CXX="$CXX -mno-cygwin"
1988 CPP="$CPP -mno-cygwin"
1989 CFLAGS="$CFLAGS -mms-bitfields"
1990 CXXFLAGS="$CXXFLAGS -mms-bitfields"
1991 DSO_LDOPTS='-shared'
1992 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1993 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1995 # Use temp file for windres (bug 213281)
1996 RCFLAGS='-O coff --use-temp-file'
1997 # mingw doesn't require kernel32, user32, and advapi32 explicitly
1998 LIBS="$LIBS -lgdi32 -lwinmm -lwsock32"
1999 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/lib -ljs$(MOZ_BITS)$(VERSION_NUMBER)'
2001 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core'
2002 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom'
2004 IMPORT_LIB_SUFFIX=dll.a
2006 TARGET_COMPILER_ABI=msvc
2010 AR='lib -NOLOGO -OUT:"$@"'
2012 RANLIB='echo not_ranlib'
2013 STRIP='echo not_strip'
2018 GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
2023 IMPORT_LIB_SUFFIX=lib
2024 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2025 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2027 MKSHLIB_UNFORCE_ALL=
2028 DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2029 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2030 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2031 LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
2032 MOZ_DEBUG_FLAGS='-Zi'
2033 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2034 WARNINGS_AS_ERRORS='-WX'
2035 MOZ_OPTIMIZE_FLAGS='-O1'
2036 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
2038 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
2039 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
2040 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2041 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2042 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
2043 if test $_MSC_VER -ge 1400; then
2044 LDFLAGS="$LDFLAGS -NXCOMPAT -SAFESEH"
2045 dnl For profile-guided optimization
2046 PROFILE_GEN_CFLAGS="-GL"
2047 PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2048 dnl XXX: PGO builds can fail with warnings treated as errors,
2049 dnl specifically "no profile data available" appears to be
2050 dnl treated as an error sometimes. This might be a consequence
2051 dnl of using WARNINGS_AS_ERRORS in some modules, combined
2052 dnl with the linker doing most of the work in the whole-program
2053 dnl optimization/PGO case. I think it's probably a compiler bug,
2054 dnl but we work around it here.
2055 PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2056 dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2057 dnl Probably also a compiler bug, but what can you do?
2058 PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2059 if test -n "$_USE_DYNAMICBASE"; then
2060 LDFLAGS="$LDFLAGS -DYNAMICBASE"
2064 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,jpeg$(MOZ_BITS)$(VERSION_NUMBER),$(DEPTH)/jpeg)'
2065 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,png,$(DEPTH)/modules/libimg/png)'
2066 AC_DEFINE(HAVE_SNPRINTF)
2072 AC_DEFINE(HW_THREADS)
2073 AC_DEFINE(STDC_HEADERS)
2074 AC_DEFINE(NEW_H, <new>)
2075 AC_DEFINE(WIN32_LEAN_AND_MEAN)
2076 TARGET_MD_ARCH=win32
2077 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2080 MOZ_ENABLE_POSTSCRIPT=
2081 MOZ_USER_DIR="Mozilla"
2083 dnl Hardcode to win95 for now - cls
2084 TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2086 dnl set NO_X11 defines here as the general check is skipped on win32
2090 dnl MinGW/MSYS doesn't provide or need cygpath
2095 MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2097 *-cygwin*|*-msvc*|*-mks*)
2098 CYGPATH_W="cygpath -a -w"
2099 CYGPATH_S="sed -e s|\\\\|/|g"
2100 MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
2104 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2106 if test -z "$MOZ_TOOLS"; then
2107 AC_MSG_ERROR([MOZ_TOOLS is not set])
2110 MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd`
2111 if test "$?" != "0" || test -z "$MOZ_TOOLS_DIR"; then
2112 AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2114 if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_DIR/bin:"` = 0; then
2115 AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2117 MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
2119 if test -n "$GLIB_PREFIX"; then
2120 _GLIB_PREFIX_DIR=`cd $GLIB_PREFIX && pwd`
2121 if test "$?" = "0"; then
2122 if test `echo ${PATH}: | grep -ic "$_GLIB_PREFIX_DIR/bin:"` = 0; then
2123 AC_MSG_ERROR([GLIB_PREFIX must be in your \$PATH.])
2125 _GLIB_PREFIX_DIR=`$CYGPATH_W $_GLIB_PREFIX_DIR | $CYGPATH_S`
2127 AC_MSG_ERROR([GLIB_PREFIX is set but "${GLIB_PREFIX}" is not a directory.])
2130 _GLIB_PREFIX_DIR=$MOZ_TOOLS_DIR
2132 if test ! -f "${_GLIB_PREFIX_DIR}/include/glib.h"; then
2133 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/include/glib.h .])
2135 GLIB_CFLAGS="-I${_GLIB_PREFIX_DIR}/include"
2136 if test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"; then
2137 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"
2138 elif test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"; then
2139 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"
2141 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/lib/glib-1.2.lib or $_GLIB_PREFIX_DIR/lib/glib-1.2_s.lib])
2144 if test -n "$LIBIDL_PREFIX"; then
2145 _LIBIDL_PREFIX_DIR=`cd $LIBIDL_PREFIX && pwd`
2146 if test "$?" = "0"; then
2147 if test `echo ${PATH}: | grep -ic "$_LIBIDL_PREFIX_DIR/bin:"` = 0; then
2148 AC_MSG_ERROR([LIBIDL_PREFIX must be in your \$PATH.])
2150 _LIBIDL_PREFIX_DIR=`$CYGPATH_W $_LIBIDL_PREFIX_DIR | $CYGPATH_S`
2152 AC_MSG_ERROR([LIBIDL_PREFIX is set but "${LIBIDL_PREFIX}" is not a directory.])
2155 _LIBIDL_PREFIX_DIR=$MOZ_TOOLS_DIR
2157 if test ! -f "${_LIBIDL_PREFIX_DIR}/include/libIDL/IDL.h"; then
2158 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/include/libIDL/IDL.h .])
2160 LIBIDL_CFLAGS="-I${_LIBIDL_PREFIX_DIR}/include ${GLIB_CFLAGS}"
2161 if test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"; then
2162 LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"
2164 elif test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"; then
2165 LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"
2167 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/lib/libidl-0.6.lib or $_LIBIDL_PREFIX_DIR/lib/libidl-0.6_s.lib])
2169 LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2172 *) # else cross-compiling
2173 if test -n "$GLIB_PREFIX"; then
2174 GLIB_CFLAGS="-I${GLIB_PREFIX}/include"
2175 if test -f "${GLIB_PREFIX}/lib/glib-1.2_s.lib"; then
2176 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2_s.lib"
2177 elif test -f "${GLIB_PREFIX}/lib/glib-1.2.lib"; then
2178 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2.lib"
2180 AC_MSG_ERROR([Cannot find $GLIB_PREFIX/lib/glib-1.2.lib or $GLIB_PREFIX/lib/glib-1.2_s.lib])
2183 if test -n "$LIBIDL_PREFIX"; then
2184 LIBIDL_CFLAGS="-I${LIBIDL_PREFIX}/include ${GLIB_CFLAGS}"
2185 if test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"; then
2186 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"
2188 elif test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"; then
2189 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"
2191 AC_MSG_ERROR([Cannot find $LIBIDL_PREFIX/lib/libIDL-0.6.lib or $LIBIDL_PREFIX/lib/libIDL-0.6_s.lib])
2194 LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2201 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])
2205 AC_CHECK_HEADERS(mmintrin.h oleacc.idl)
2209 AC_CHECK_HEADERS(atlbase.h wpcapi.h)
2225 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2232 CFLAGS="$CFLAGS -Dunix"
2233 CXXFLAGS="$CXXFLAGS -Dunix"
2234 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2236 DSO_PIC_CFLAGS='-fPIC -DPIC'
2237 DSO_LDOPTS='-shared'
2238 BIN_FLAGS='-Wl,--export-dynamic'
2240 DSO_PIC_CFLAGS='-fPIC -DPIC'
2241 DLL_SUFFIX=".so.1.0"
2242 DSO_LDOPTS='-shared'
2244 # This will fail on a.out systems prior to 1.5.1_ALPHA.
2245 MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2246 MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2247 if test "$LIBRUNPATH"; then
2248 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2250 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2251 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2256 AC_DEFINE(_QNX_SOURCE)
2259 WARNINGS_AS_ERRORS=''
2260 MOZ_OPTIMIZE_FLAGS="-O"
2261 MOZ_DEBUG_FLAGS="-gstabs"
2264 LIBS="$LIBS -lsocket -lstdc++"
2265 _DEFINES_CFLAGS='-Wp,-include -Wp,$(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
2266 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -Wp,-include -Wp,$(DEPTH)/mozilla-config.h -D_POSIX_C_SOURCE=199506'
2267 if test "$with_x" != "yes"
2269 _PLATFORM_DEFAULT_TOOLKIT="photon"
2270 TK_CFLAGS='-I/usr/include/photon'
2273 case "${target_cpu}" in
2275 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
2278 case "${host_cpu}" in
2286 DLL_SUFFIX=".so.1.0"
2288 DSO_PIC_CFLAGS='-fPIC'
2289 DSO_LDOPTS='-shared -fPIC'
2290 if test "$LIBRUNPATH"; then
2291 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2296 AC_DEFINE(NO_PW_GECOS)
2297 AC_DEFINE(NO_UDSOCK)
2298 AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
2300 MKSHLIB_FORCE_ALL='-all'
2301 MKSHLIB_UNFORCE_ALL='-none'
2303 AS_DASH_C_FLAG='-Wc/names=as_is'
2305 DSO_LDOPTS='-shared -auto_symvec'
2307 MOZ_DEBUG_LDFLAGS='-g'
2309 CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
2310 CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
2315 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2316 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2319 AC_DEFINE(OS2EMX_PLAIN_CHAR)
2320 AC_DEFINE(TCPV40HDRS)
2327 IMPORT_LIB_SUFFIX=lib
2331 CFLAGS="$CFLAGS -Zomf"
2332 CXXFLAGS="$CXXFLAGS -Zomf"
2334 BIN_FLAGS='-Zlinker /ST:0x100000'
2338 WARNINGS_AS_ERRORS='-Werror'
2339 MOZ_DEBUG_FLAGS="-g -fno-inline"
2340 MOZ_OPTIMIZE_FLAGS="-O2"
2341 MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2342 MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcomct.lib'
2343 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
2344 LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2346 _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2347 MOZ_ENABLE_POSTSCRIPT=
2350 MOZ_USER_DIR="Mozilla"
2352 if test "$MOZTOOLS"; then
2353 MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2355 AC_MSG_ERROR([MOZTOOLS is not set])
2357 if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2358 DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2359 LDFLAGS="$LDFLAGS -Zhigh-mem"
2360 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2361 AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2364 # GCC for OS/2 currently predefines these, but we don't want them
2365 _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2366 _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2368 AC_CACHE_CHECK(for __declspec(dllexport),
2370 [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2372 ac_os2_declspec="yes",
2373 ac_os2_declspec="no")])
2374 if test "$ac_os2_declspec" = "yes"; then
2376 MOZ_OS2_USE_DECLSPEC='1'
2381 if test "$GNU_CC"; then
2382 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2383 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2386 MOZ_DEBUG_FLAGS='-g'
2387 ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
2388 CFLAGS="$CFLAGS -ieee"
2389 CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee -ptr $(DIST)/cxx_repository'
2390 DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
2393 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2394 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2395 MKSHLIB_FORCE_ALL='-all'
2396 MKSHLIB_UNFORCE_ALL='-none'
2397 dnl Might fix the libxpcom.so breakage on this platform as well....
2398 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2399 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2401 if test -z "$GNU_CXX"; then
2404 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2408 DIRENT_INO=d_stat.st_ino
2409 dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
2410 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2411 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2412 dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
2413 AC_DEFINE(STDC_HEADERS)
2414 if test "$no_x" = "yes"; then
2415 _PLATFORM_DEFAULT_TOOLKIT='photon'
2416 TK_CFLAGS='-I/usr/nto/include/photon'
2417 TK_LIBS='-lphoton -lphrender'
2422 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2423 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2424 CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
2425 if test ! "$GNU_CC"; then
2430 dnl the qsort routine under solaris is faulty
2433 TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2435 # $ORIGIN/.. is for shared libraries under components/ to locate shared
2436 # libraries one level up (e.g. libnspr4.so)
2437 LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..'"
2438 LIBS="-lCrun -lCstd $LIBS"
2440 if test -z "$GNU_CC"; then
2443 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2445 if test "$CPU_ARCH" != "sparc"; then
2446 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all"
2447 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife -norunpath"
2449 # Do not use -xbuiltin on SPARC to get around a bug of compiler
2450 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%none"
2451 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%none -features=tmplife -norunpath"
2454 LDFLAGS="-xildoff -z lazyload -z combreloc $LDFLAGS"
2455 if test -z "$CROSS_COMPILE" && test -f /usr/lib/ld/map.noexstk; then
2456 _SAVE_LDFLAGS=$LDFLAGS
2457 LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2458 AC_TRY_LINK([#include <stdio.h>],
2459 [printf("Hello World\n");],
2461 [LDFLAGS=$_SAVE_LDFLAGS])
2463 WARNINGS_AS_ERRORS='-Werror'
2464 MOZ_OPTIMIZE_FLAGS="-xO4"
2465 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2466 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) -G -z muldefs -h $@ -o $@'
2467 MKSHLIB_FORCE_ALL='-z allextract'
2468 MKSHLIB_UNFORCE_ALL='-z defaultextract'
2469 DSO_LDOPTS='-G -z muldefs'
2475 AS='/usr/ccs/bin/as'
2476 ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2478 TARGET_COMPILER_ABI="sunc"
2479 CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2480 CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2481 AC_MSG_CHECKING([for Forte compiler version >= WS6U2])
2485 [#if (__SUNPRO_CC < 0x530)
2488 _BAD_COMPILER=,_BAD_COMPILER=1)
2489 if test -n "$_BAD_COMPILER"; then
2491 AC_MSG_ERROR([Forte version WS6U2 or higher is required to build. Your compiler version is $CC_VERSION .])
2495 AC_MSG_RESULT([$_res])
2498 ASFLAGS="$ASFLAGS -fPIC"
2501 _WARNINGS_CXXFLAGS=''
2502 if test "$OS_RELEASE" = "5.3"; then
2503 AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2506 if test "$OS_RELEASE" = "5.5.1"; then
2507 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2512 DSO_LDOPTS='-Bdynamic'
2513 MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2514 MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2516 AC_DEFINE(SPRINTF_RETURNS_STRING)
2517 case "$(target_os)" in
2519 DLL_SUFFIX='.so.1.0'
2525 NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2529 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2534 dnl Only one oddball right now (QNX), but this gives us flexibility
2535 dnl if any other platforms need to override this in the future.
2536 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2538 dnl ========================================================
2539 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2540 dnl by now will not have any way to link most binaries (tests
2541 dnl as well as viewer, apprunner, etc.), because some symbols
2542 dnl will be left out of the "composite" .so's by ld as unneeded.
2543 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2544 dnl they can link in the static libs that provide the missing
2546 dnl ========================================================
2547 NO_LD_ARCHIVE_FLAGS=
2548 if test -z "$MKSHLIB_FORCE_ALL" || test -z "$MKSHLIB_UNFORCE_ALL"; then
2549 NO_LD_ARCHIVE_FLAGS=1
2553 NO_LD_ARCHIVE_FLAGS=
2556 NO_LD_ARCHIVE_FLAGS=
2559 NO_LD_ARCHIVE_FLAGS=
2561 *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince)
2562 if test -z "$GNU_CC"; then
2563 NO_LD_ARCHIVE_FLAGS=
2567 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2570 dnl Indicate that platform requires special thread safe
2571 dnl locking when starting up the OJI JVM
2572 dnl (see mozilla/modules/oji/src/nsJVMManager.cpp)
2573 dnl ========================================================
2576 AC_DEFINE(MOZ_OJI_REQUIRE_THREAD_SAFE_ON_STARTUP)
2580 dnl ========================================================
2581 dnl = Flags to strip unused symbols from .so components
2582 dnl ========================================================
2584 *-linux*|*-kfreebsd*-gnu)
2585 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2588 if test -z "$GNU_CC"; then
2589 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2591 if test -z "$GCC_USE_GNU_LD"; then
2592 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2594 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2599 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2602 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2604 *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince)
2605 if test -n "$GNU_CC"; then
2606 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2611 if test -z "$COMPILE_ENVIRONMENT"; then
2612 SKIP_COMPILER_CHECKS=1
2613 SKIP_LIBRARY_CHECKS=1
2616 if test -z "$SKIP_COMPILER_CHECKS"; then
2617 dnl Checks for typedefs, structures, and compiler characteristics.
2618 dnl ========================================================
2626 AC_STRUCT_ST_BLKSIZE
2627 AC_MSG_CHECKING(for siginfo_t)
2628 AC_CACHE_VAL(ac_cv_siginfo_t,
2629 [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2630 #include <signal.h>],
2632 [ac_cv_siginfo_t=true],
2633 [ac_cv_siginfo_t=false])])
2634 if test "$ac_cv_siginfo_t" = true ; then
2635 AC_DEFINE(HAVE_SIGINFO_T)
2641 dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
2642 dnl ========================================================
2643 AC_MSG_CHECKING(for int16_t)
2644 AC_CACHE_VAL(ac_cv_int16_t,
2645 [AC_TRY_COMPILE([#include <stdio.h>
2646 #include <sys/types.h>],
2648 [ac_cv_int16_t=true],
2649 [ac_cv_int16_t=false])])
2650 if test "$ac_cv_int16_t" = true ; then
2651 AC_DEFINE(HAVE_INT16_T)
2656 AC_MSG_CHECKING(for int32_t)
2657 AC_CACHE_VAL(ac_cv_int32_t,
2658 [AC_TRY_COMPILE([#include <stdio.h>
2659 #include <sys/types.h>],
2661 [ac_cv_int32_t=true],
2662 [ac_cv_int32_t=false])])
2663 if test "$ac_cv_int32_t" = true ; then
2664 AC_DEFINE(HAVE_INT32_T)
2669 AC_MSG_CHECKING(for int64_t)
2670 AC_CACHE_VAL(ac_cv_int64_t,
2671 [AC_TRY_COMPILE([#include <stdio.h>
2672 #include <sys/types.h>],
2674 [ac_cv_int64_t=true],
2675 [ac_cv_int64_t=false])])
2676 if test "$ac_cv_int64_t" = true ; then
2677 AC_DEFINE(HAVE_INT64_T)
2682 AC_MSG_CHECKING(for int64)
2683 AC_CACHE_VAL(ac_cv_int64,
2684 [AC_TRY_COMPILE([#include <stdio.h>
2685 #include <sys/types.h>],
2688 [ac_cv_int64=false])])
2689 if test "$ac_cv_int64" = true ; then
2690 AC_DEFINE(HAVE_INT64)
2695 AC_MSG_CHECKING(for uint)
2696 AC_CACHE_VAL(ac_cv_uint,
2697 [AC_TRY_COMPILE([#include <stdio.h>
2698 #include <sys/types.h>],
2701 [ac_cv_uint=false])])
2702 if test "$ac_cv_uint" = true ; then
2703 AC_DEFINE(HAVE_UINT)
2708 AC_MSG_CHECKING(for uint_t)
2709 AC_CACHE_VAL(ac_cv_uint_t,
2710 [AC_TRY_COMPILE([#include <stdio.h>
2711 #include <sys/types.h>],
2713 [ac_cv_uint_t=true],
2714 [ac_cv_uint_t=false])])
2715 if test "$ac_cv_uint_t" = true ; then
2716 AC_DEFINE(HAVE_UINT_T)
2721 AC_MSG_CHECKING(for uint16_t)
2722 AC_CACHE_VAL(ac_cv_uint16_t,
2723 [AC_TRY_COMPILE([#include <stdio.h>
2724 #include <sys/types.h>],
2725 [uint16_t foo = 0;],
2726 [ac_cv_uint16_t=true],
2727 [ac_cv_uint16_t=false])])
2728 if test "$ac_cv_uint16_t" = true ; then
2729 AC_DEFINE(HAVE_UINT16_T)
2735 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
2736 dnl are defined when compiling C++ but not C. Since the result of this
2737 dnl test is used only in C++, do it in C++.
2740 AC_MSG_CHECKING(for uname.domainname)
2741 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
2742 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2743 [ struct utsname *res; char *domain;
2744 (void)uname(res); if (res != 0) { domain = res->domainname; } ],
2745 [ac_cv_have_uname_domainname_field=true],
2746 [ac_cv_have_uname_domainname_field=false])])
2748 if test "$ac_cv_have_uname_domainname_field" = "true"; then
2749 AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
2755 AC_MSG_CHECKING(for uname.__domainname)
2756 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
2757 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2758 [ struct utsname *res; char *domain;
2759 (void)uname(res); if (res != 0) { domain = res->__domainname; } ],
2760 [ac_cv_have_uname_us_domainname_field=true],
2761 [ac_cv_have_uname_us_domainname_field=false])])
2763 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
2764 AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
2772 dnl Check for usable wchar_t (2 bytes, unsigned)
2773 dnl (we really don't need the unsignedness check anymore)
2774 dnl ========================================================
2776 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
2777 ac_cv_have_usable_wchar_v2,
2778 [AC_TRY_COMPILE([#include <stddef.h>
2779 $configure_static_assert_macros],
2780 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2781 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2782 ac_cv_have_usable_wchar_v2="yes",
2783 ac_cv_have_usable_wchar_v2="no")])
2784 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
2785 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2786 HAVE_CPP_2BYTE_WCHAR_T=1
2788 dnl This is really gcc-only
2789 dnl Do this test using CXX only since some versions of gcc
2790 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
2791 dnl only have short-wchar support for c++.
2792 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
2796 _SAVE_CXXFLAGS=$CXXFLAGS
2797 CXXFLAGS="$CXXFLAGS -fshort-wchar"
2799 AC_CACHE_CHECK(for compiler -fshort-wchar option,
2800 ac_cv_have_usable_wchar_option_v2,
2801 [AC_TRY_LINK([#include <stddef.h>
2802 $configure_static_assert_macros],
2803 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2804 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2805 ac_cv_have_usable_wchar_option_v2="yes",
2806 ac_cv_have_usable_wchar_option_v2="no")])
2808 if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
2809 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2810 HAVE_CPP_2BYTE_WCHAR_T=1
2811 WCHAR_CFLAGS="-fshort-wchar"
2813 CXXFLAGS=$_SAVE_CXXFLAGS
2818 dnl Check for .hidden assembler directive and visibility attribute.
2819 dnl Borrowed from glibc configure.in
2820 dnl ===============================================================
2821 if test "$GNU_CC"; then
2822 AC_CACHE_CHECK(for visibility(hidden) attribute,
2823 ac_cv_visibility_hidden,
2824 [cat > conftest.c <<EOF
2825 int foo __attribute__ ((visibility ("hidden"))) = 1;
2827 ac_cv_visibility_hidden=no
2828 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2829 if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2830 ac_cv_visibility_hidden=yes
2835 if test "$ac_cv_visibility_hidden" = "yes"; then
2836 AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2838 AC_CACHE_CHECK(for visibility(default) attribute,
2839 ac_cv_visibility_default,
2840 [cat > conftest.c <<EOF
2841 int foo __attribute__ ((visibility ("default"))) = 1;
2843 ac_cv_visibility_default=no
2844 if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2845 if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2846 ac_cv_visibility_default=yes
2851 if test "$ac_cv_visibility_default" = "yes"; then
2852 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2854 AC_CACHE_CHECK(for visibility pragma support,
2855 ac_cv_visibility_pragma,
2856 [cat > conftest.c <<EOF
2857 #pragma GCC visibility push(hidden)
2859 #pragma GCC visibility push(default)
2860 int foo_default = 1;
2862 ac_cv_visibility_pragma=no
2863 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2864 if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
2865 if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
2866 ac_cv_visibility_pragma=yes
2872 if test "$ac_cv_visibility_pragma" = "yes"; then
2873 AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
2874 ac_cv_have_visibility_class_bug,
2875 [cat > conftest.c <<EOF
2876 #pragma GCC visibility push(hidden)
2877 struct __attribute__ ((visibility ("default"))) TestStruct {
2880 __attribute__ ((visibility ("default"))) void TestFunc() {
2884 ac_cv_have_visibility_class_bug=no
2885 if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2886 ac_cv_have_visibility_class_bug=yes
2888 if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
2889 ac_cv_have_visibility_class_bug=yes
2892 rm -rf conftest.{c,S}
2895 AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
2896 ac_cv_have_visibility_builtin_bug,
2897 [cat > conftest.c <<EOF
2898 #pragma GCC visibility push(hidden)
2899 #pragma GCC visibility push(default)
2901 #pragma GCC visibility pop
2903 __attribute__ ((visibility ("default"))) void Func() {
2905 memset(c, 0, sizeof(c));
2908 ac_cv_have_visibility_builtin_bug=no
2909 if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2910 ac_cv_have_visibility_builtin_bug=yes
2912 if test `grep -c "@PLT" conftest.S` = 0; then
2913 ac_cv_visibility_builtin_bug=yes
2916 rm -f conftest.{c,S}
2918 if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
2919 "$ac_cv_have_visibility_class_bug" = "no"; then
2920 VISIBILITY_FLAGS='-I$(DIST)/include/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
2921 WRAP_SYSTEM_INCLUDES=1
2923 VISIBILITY_FLAGS='-fvisibility=hidden'
2924 fi # have visibility pragma bug
2925 fi # have visibility pragma
2926 fi # have visibility(default) attribute
2927 fi # have visibility(hidden) attribute
2930 # visibility hidden flag for Sun Studio on Solaris
2931 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
2932 VISIBILITY_FLAGS='-xldscope=hidden'
2933 fi # Sun Studio on Solaris
2935 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2936 AC_SUBST(VISIBILITY_FLAGS)
2938 dnl Checks for header files.
2939 dnl ========================================================
2941 case "$target_os" in
2943 # for stuff like -lXshm
2944 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2947 AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
2948 AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
2949 AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
2950 AC_CHECK_HEADERS(malloc.h)
2951 AC_CHECK_HEADERS(X11/XKBlib.h)
2953 dnl These are all the places some variant of statfs can be hiding.
2954 AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2956 dnl Try for MMX support
2957 dnl NB - later gcc versions require -mmmx for this header to be successfully
2958 dnl included (or another option which implies it, such as -march=pentium-mmx)
2959 AC_CHECK_HEADERS(mmintrin.h)
2961 AC_MSG_CHECKING(for ARM SIMD support)
2963 [asm("uqadd8 r1, r1, r2");],
2964 result="yes", result="no")
2965 AC_MSG_RESULT("$result")
2966 if test "$result" = "yes"; then
2967 AC_DEFINE(HAVE_ARM_SIMD)
2970 AC_SUBST(HAVE_ARM_SIMD)
2972 dnl Check whether the compiler supports the new-style C++ standard
2973 dnl library headers (i.e. <new>) or needs the old "new.h"
2976 AC_CHECK_HEADER(new, [NEW_H=new])
2977 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
2980 AC_ARG_ENABLE(dtrace,
2981 [ --enable-dtrace build with dtrace support if available (default=no)],
2982 [enable_dtrace="yes"],)
2983 if test "x$enable_dtrace" = "xyes"; then
2984 AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
2985 if test -n "$HAVE_DTRACE"; then
2986 AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
2988 AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
2991 AC_SUBST(HAVE_DTRACE)
2997 AC_CHECK_HEADERS(sys/cdefs.h)
3001 dnl Checks for libraries.
3002 dnl ========================================================
3007 AC_CHECK_LIB(c_r, gethostbyname_r)
3011 dnl We don't want to link with libdl even if it's present on OS X, since
3012 dnl it's not used and not part of the default installation.
3013 dnl The same goes for BeOS.
3014 dnl We don't want to link against libm or libpthread on Darwin since
3015 dnl they both are just symlinks to libSystem and explicitly linking
3016 dnl against libSystem causes issues when debugging (see bug 299601).
3023 AC_CHECK_LIB(m, atan)
3024 AC_CHECK_LIB(dl, dlopen,
3025 AC_CHECK_HEADER(dlfcn.h,
3027 AC_DEFINE(HAVE_LIBDL)))
3031 _SAVE_CFLAGS="$CFLAGS"
3032 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3033 AC_CHECK_FUNCS(dladdr)
3034 CFLAGS="$_SAVE_CFLAGS"
3036 if test ! "$GNU_CXX"; then
3040 AC_CHECK_LIB(C_r, demangle)
3043 AC_CHECK_LIB(C, demangle)
3047 AC_CHECK_LIB(socket, socket)
3050 XLIBS="$X_EXTRA_LIBS"
3052 dnl ========================================================
3053 dnl Checks for X libraries.
3054 dnl Ordering is important.
3055 dnl Xt is dependent upon SM as of X11R6
3056 dnl ========================================================
3057 if test "$no_x" = "yes"; then
3060 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3061 XLIBS="-lX11 $XLIBS"
3062 _SAVE_LDFLAGS="$LDFLAGS"
3063 LDFLAGS="$XLDFLAGS $LDFLAGS"
3064 AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3065 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3066 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3067 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3070 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3071 unset ac_cv_lib_Xt_XtFree
3072 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3073 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
3074 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3075 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3078 # AIX needs the motif library linked before libXt to prevent
3079 # crashes in plugins linked against Motif - Bug #98892
3080 case "${target_os}" in
3082 XT_LIBS="-lXm $XT_LIBS"
3086 dnl ========================================================
3087 dnl = Check for XShm
3088 dnl ========================================================
3089 AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3091 AC_CHECK_HEADER(X11/extensions/XShm.h)
3092 if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" &&
3093 test -n "$_HAVE_XSHM_XEXT"; then
3094 AC_DEFINE(HAVE_XSHM)
3097 dnl ========================================================
3099 dnl ========================================================
3100 AC_CHECK_LIB(XIE, XieFloGeometry, [MOZ_XIE_LIBS="-lXIE"],,
3102 AC_CHECK_HEADER(X11/extensions/XIElib.h)
3104 if test "$MOZ_XIE_LIBS"; then
3105 dnl ====================================================
3106 dnl = If XIE is present and is desired, turn it on
3107 dnl ====================================================
3117 LDFLAGS="$_SAVE_LDFLAGS"
3119 dnl ========================================================
3120 dnl = Check for freetype2 and its functionality
3121 dnl ========================================================
3122 AC_CHECK_FT2(6.1.0, [_HAVE_FREETYPE2=1], [_HAVE_FREETYPE2=])
3124 if test "$_HAVE_FREETYPE2"; then
3126 _SAVE_CFLAGS="$CFLAGS"
3127 LIBS="$LIBS $FT2_LIBS"
3128 CFLAGS="$CFLAGS $FT2_CFLAGS"
3130 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
3131 ac_cv_member_FT_Bitmap_Size_y_ppem,
3132 [AC_TRY_COMPILE([#include <ft2build.h>
3133 #include FT_FREETYPE_H],
3135 if (sizeof s.y_ppem) return 0;
3137 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
3138 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
3139 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
3140 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
3142 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
3144 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
3145 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
3146 [FT_Bitmap_Size structure includes y_ppem field])
3148 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
3151 CFLAGS="$_SAVE_CFLAGS"
3161 dnl ========================================================
3162 dnl = pthread support
3163 dnl = Start by checking whether the system support pthreads
3164 dnl ========================================================
3165 case "$target_os" in
3170 MOZ_CHECK_PTHREADS(pthreads,
3171 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3172 MOZ_CHECK_PTHREADS(pthread,
3173 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3174 MOZ_CHECK_PTHREADS(c_r,
3175 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3176 MOZ_CHECK_PTHREADS(c,
3185 dnl ========================================================
3186 dnl Check the command line for --with-pthreads
3187 dnl ========================================================
3188 MOZ_ARG_WITH_BOOL(pthreads,
3189 [ --with-pthreads Force use of system pthread library with NSPR ],
3190 [ if test "$USE_PTHREADS"x = x; then
3191 AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3197 dnl ========================================================
3198 dnl Do the platform specific pthread hackery
3199 dnl ========================================================
3200 if test "$USE_PTHREADS"x != x
3203 dnl See if -pthread is supported.
3206 ac_cv_have_dash_pthread=no
3207 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3208 echo 'int main() { return 0; }' | cat > conftest.c
3209 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3210 if test $? -eq 0; then
3211 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3212 ac_cv_have_dash_pthread=yes
3213 case "$target_os" in
3215 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3218 CFLAGS="$CFLAGS -pthread"
3219 CXXFLAGS="$CXXFLAGS -pthread"
3225 AC_MSG_RESULT($ac_cv_have_dash_pthread)
3228 dnl See if -pthreads is supported.
3230 ac_cv_have_dash_pthreads=no
3231 if test "$ac_cv_have_dash_pthread" = "no"; then
3232 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3233 echo 'int main() { return 0; }' | cat > conftest.c
3234 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3235 if test $? -eq 0; then
3236 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3237 ac_cv_have_dash_pthreads=yes
3238 CFLAGS="$CFLAGS -pthreads"
3239 CXXFLAGS="$CXXFLAGS -pthreads"
3243 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3248 AC_DEFINE(_REENTRANT)
3249 AC_DEFINE(_THREAD_SAFE)
3250 dnl -pthread links in -lc_r, so don't specify it explicitly.
3251 if test "$ac_cv_have_dash_pthread" = "yes"; then
3252 _PTHREAD_LDFLAGS="-pthread"
3254 _PTHREAD_LDFLAGS="-lc_r"
3258 *-*-openbsd*|*-*-bsdi*)
3259 AC_DEFINE(_REENTRANT)
3260 AC_DEFINE(_THREAD_SAFE)
3261 dnl -pthread links in -lc_r, so don't specify it explicitly.
3262 if test "$ac_cv_have_dash_pthread" = "yes"; then
3263 _PTHREAD_LDFLAGS="-pthread"
3267 *-*-linux*|*-*-kfreebsd*-gnu)
3268 AC_DEFINE(_REENTRANT)
3272 AC_DEFINE(_REENTRANT)
3276 AC_DEFINE(_REENTRANT)
3280 AC_DEFINE(_REENTRANT)
3284 AC_DEFINE(_REENTRANT)
3288 AC_DEFINE(_REENTRANT)
3289 if test ! "$GNU_CC"; then
3290 CFLAGS="$CFLAGS -mt"
3291 CXXFLAGS="$CXXFLAGS -mt"
3295 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3298 dnl ========================================================
3299 dnl See if mmap sees writes
3300 dnl For cross compiling, just define it as no, which is a safe default
3301 dnl ========================================================
3302 AC_MSG_CHECKING(whether mmap() sees write()s)
3308 #include <sys/mman.h>
3309 #include <sys/types.h>
3310 #include <sys/stat.h>
3313 char fname[] = "conftest.file";
3314 char zbuff[1024]; /* Fractional page is probably worst case */
3321 fd = open(fname, O_RDWR | O_CREAT, 0660);
3324 write(fd, zbuff, sizeof(zbuff));
3325 lseek(fd, 0, SEEK_SET);
3326 map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
3327 if(map==(char*)-1) return 2;
3328 for(i=0; fname[i]; i++) {
3329 int rc = write(fd, &fname[i], 1);
3330 if(map[i]!=fname[i]) return 4;
3337 AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
3339 AC_MSG_RESULT("$result")
3341 if test "$result" = "no"; then
3342 AC_DEFINE(MMAP_MISSES_WRITES)
3346 dnl Checks for library functions.
3347 dnl ========================================================
3348 AC_PROG_GCC_TRADITIONAL
3350 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 truncate64 statvfs64)
3351 AC_CHECK_FUNCS(flockfile getpagesize)
3353 dnl localtime_r and strtok_r are only present on MacOS version 10.2 and higher
3354 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100200"; then
3355 AC_CHECK_FUNCS(localtime_r strtok_r)
3358 dnl check for wcrtomb/mbrtowc
3359 dnl =======================================================================
3360 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3363 AC_CACHE_CHECK(for wcrtomb,
3365 [AC_TRY_LINK([#include <wchar.h>],
3366 [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3367 ac_cv_have_wcrtomb="yes",
3368 ac_cv_have_wcrtomb="no")])
3369 if test "$ac_cv_have_wcrtomb" = "yes"; then
3370 AC_DEFINE(HAVE_WCRTOMB)
3372 AC_CACHE_CHECK(for mbrtowc,
3374 [AC_TRY_LINK([#include <wchar.h>],
3375 [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3376 ac_cv_have_mbrtowc="yes",
3377 ac_cv_have_mbrtowc="no")])
3378 if test "$ac_cv_have_mbrtowc" = "yes"; then
3379 AC_DEFINE(HAVE_MBRTOWC)
3386 ac_cv_func_res_ninit,
3389 #define _BSD_SOURCE 1
3393 [int foo = res_ninit(&_res);],
3394 [ac_cv_func_res_ninit=yes],
3395 [ac_cv_func_res_ninit=no])
3398 if test "$ac_cv_func_res_ninit" = "yes"; then
3399 AC_DEFINE(HAVE_RES_NINIT)
3400 dnl must add the link line we do something as foolish as this... dougt
3402 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3403 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3408 [for gnu_get_libc_version()],
3409 ac_cv_func_gnu_get_libc_version,
3411 #ifdef HAVE_GNU_LIBC_VERSION_H
3412 #include <gnu/libc-version.h>
3415 [const char *glibc_version = gnu_get_libc_version();],
3416 [ac_cv_func_gnu_get_libc_version=yes],
3417 [ac_cv_func_gnu_get_libc_version=no]
3421 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3422 AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3426 os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|beos*)
3430 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3431 AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3432 AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3434 LIBS="$LIBS $_ICONV_LIBS"
3443 iconv_t h = iconv_open("", "");
3444 iconv(h, NULL, NULL, NULL, NULL);
3447 [ac_cv_func_iconv=yes],
3448 [ac_cv_func_iconv=no]
3451 if test "$ac_cv_func_iconv" = "yes"; then
3452 AC_DEFINE(HAVE_ICONV)
3453 DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3454 LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3455 LIBICONV="$_ICONV_LIBS"
3457 [for iconv() with const input],
3458 ac_cv_func_const_iconv,
3464 const char *input = "testing";
3465 iconv_t h = iconv_open("", "");
3466 iconv(h, &input, NULL, NULL, NULL);
3469 [ac_cv_func_const_iconv=yes],
3470 [ac_cv_func_const_iconv=no]
3473 if test "$ac_cv_func_const_iconv" = "yes"; then
3474 AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3486 dnl **********************
3487 dnl *** va_copy checks ***
3488 dnl **********************
3489 dnl we currently check for all three va_copy possibilities, so we get
3490 dnl all results in config.log for bug reports.
3491 AC_MSG_CHECKING(for an implementation of va_copy())
3492 AC_CACHE_VAL(ac_cv_va_copy,[
3495 void f (int i, ...) {
3496 va_list args1, args2;
3497 va_start (args1, i);
3498 va_copy (args2, args1);
3499 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3501 va_end (args1); va_end (args2);
3503 int main() { f (0, 42); return 0; }],
3509 AC_MSG_RESULT($ac_cv_va_copy)
3510 AC_MSG_CHECKING(for an implementation of __va_copy())
3511 AC_CACHE_VAL(ac_cv___va_copy,[
3514 void f (int i, ...) {
3515 va_list args1, args2;
3516 va_start (args1, i);
3517 __va_copy (args2, args1);
3518 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3520 va_end (args1); va_end (args2);
3522 int main() { f (0, 42); return 0; }],
3523 ac_cv___va_copy=yes,
3528 AC_MSG_RESULT($ac_cv___va_copy)
3529 AC_MSG_CHECKING(whether va_lists can be copied by value)
3530 AC_CACHE_VAL(ac_cv_va_val_copy,[
3533 void f (int i, ...) {
3534 va_list args1, args2;
3535 va_start (args1, i);
3537 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3539 va_end (args1); va_end (args2);
3541 int main() { f (0, 42); return 0; }],
3542 ac_cv_va_val_copy=yes,
3543 ac_cv_va_val_copy=no,
3544 ac_cv_va_val_copy=yes
3547 if test "x$ac_cv_va_copy" = "xyes"; then
3548 AC_DEFINE(VA_COPY, va_copy)
3549 AC_DEFINE(HAVE_VA_COPY)
3550 elif test "x$ac_cv___va_copy" = "xyes"; then
3551 AC_DEFINE(VA_COPY, __va_copy)
3552 AC_DEFINE(HAVE_VA_COPY)
3555 if test "x$ac_cv_va_val_copy" = "xno"; then
3556 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3558 AC_MSG_RESULT($ac_cv_va_val_copy)
3560 dnl Check for dll-challenged libc's.
3561 dnl This check is apparently only needed for Linux.
3564 dnl ===================================================================
3567 rm -rf conftest* _conftest
3569 cat >> conftest.C <<\EOF
3574 void __dump_link_map(void) {
3575 struct link_map *map = _dl_loaded;
3576 while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
3579 dlopen("./conftest1.so",RTLD_LAZY);
3580 dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
3581 dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
3582 dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
3586 /* _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).*/
3587 int main() { printf("./conftest1.so\n"); }
3591 $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
3593 cat >> conftest1.C <<\EOF
3595 void foo(void) {printf("foo in dll called\n");}
3597 ${CXX-g++} -fPIC -c -g conftest1.C
3598 ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
3599 ${CXX-g++} -g conftest.C -o conftest -ldl
3600 cp -f conftest1.so conftest _conftest
3602 if test `./conftest | grep conftest1.so | wc -l` -gt 1
3605 echo "*** Your libc has a bug that can result in loading the same dynamic"
3606 echo "*** library multiple times. This bug is known to be fixed in glibc-2.0.7-32"
3607 echo "*** or later. However, if you choose not to upgrade, the only effect"
3608 echo "*** will be excessive memory usage at runtime."
3612 rm -rf conftest* _conftest
3613 dnl ===================================================================
3617 dnl ===================================================================
3618 dnl ========================================================
3619 dnl By default, turn rtti and exceptions off on g++/egcs
3620 dnl ========================================================
3621 if test "$GNU_CXX"; then
3623 AC_MSG_CHECKING(for C++ exceptions flag)
3625 dnl They changed -f[no-]handle-exceptions to -f[no-]exceptions in g++ 2.8
3626 AC_CACHE_VAL(ac_cv_cxx_exceptions_flags,
3627 [echo "int main() { return 0; }" | cat > conftest.C
3629 ${CXX-g++} ${CXXFLAGS} -c -fno-handle-exceptions conftest.C > conftest.out 2>&1
3631 if egrep "warning.*renamed" conftest.out >/dev/null; then
3632 ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-exceptions
3634 ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-handle-exceptions
3639 AC_MSG_RESULT($ac_cv_cxx_exceptions_flags)
3640 _MOZ_EXCEPTIONS_FLAGS_OFF=$ac_cv_cxx_exceptions_flags
3641 _MOZ_EXCEPTIONS_FLAGS_ON=`echo $ac_cv_cxx_exceptions_flags | sed 's|no-||'`
3644 dnl ========================================================
3645 dnl Put your C++ language/feature checks below
3646 dnl ========================================================
3650 if test "$GNU_CC"; then
3651 AC_CACHE_CHECK(for gcc 3.0 ABI,
3652 ac_cv_gcc_three_abi,
3655 #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
3661 ac_cv_gcc_three_abi="yes",
3662 ac_cv_gcc_three_abi="no")])
3663 if test "$ac_cv_gcc_three_abi" = "yes"; then
3664 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc3}"
3667 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc2}"
3670 AC_SUBST(HAVE_GCC3_ABI)
3673 AC_CACHE_CHECK(for C++ \"explicit\" keyword,
3675 [AC_TRY_COMPILE(class X {
3676 public: explicit X(int i) : i_(i) {}
3680 ac_cv_cpp_explicit=yes,
3681 ac_cv_cpp_explicit=no)])
3682 if test "$ac_cv_cpp_explicit" = yes ; then
3683 AC_DEFINE(HAVE_CPP_EXPLICIT)
3686 AC_CACHE_CHECK(for C++ \"typename\" keyword,
3688 [AC_TRY_COMPILE(class param {
3690 typedef unsigned long num_type;
3693 template <class T> class tplt {
3695 typedef typename T::num_type t_num_type;
3696 t_num_type foo(typename T::num_type num) {
3702 ac_cv_cpp_typename=yes,
3703 ac_cv_cpp_typename=no)])
3704 if test "$ac_cv_cpp_typename" = yes ; then
3705 AC_DEFINE(HAVE_CPP_TYPENAME)
3708 dnl Check for support of modern template specialization syntax
3709 dnl Test code and requirement from scc@netscape.com.
3710 dnl Autoconf cut-and-paste job by waterson@netscape.com
3711 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
3712 ac_cv_cpp_modern_specialize_template_syntax,
3713 [AC_TRY_COMPILE(template <class T> struct X { int a; };
3715 template <> struct X<Y> { double a; };,
3718 ac_cv_cpp_modern_specialize_template_syntax=yes,
3719 ac_cv_cpp_modern_specialize_template_syntax=no)])
3720 if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
3721 AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
3725 dnl Some compilers support only full specialization, and some don't.
3726 AC_CACHE_CHECK(whether partial template specialization works,
3727 ac_cv_cpp_partial_specialization,
3728 [AC_TRY_COMPILE(template <class T> class Foo {};
3729 template <class T> class Foo<T*> {};,
3731 ac_cv_cpp_partial_specialization=yes,
3732 ac_cv_cpp_partial_specialization=no)])
3733 if test "$ac_cv_cpp_partial_specialization" = yes ; then
3734 AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
3737 dnl Some compilers have limited support for operators with templates;
3738 dnl specifically, it is necessary to define derived operators when a base
3739 dnl class's operator declaration should suffice.
3740 AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
3741 ac_cv_need_derived_template_operators,
3742 [AC_TRY_COMPILE([template <class T> class Base { };
3744 Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
3745 template <class T> class Derived : public Base<T> { };],
3746 [Derived<char> a, b;
3747 Base<char> c = a + b;
3749 ac_cv_need_derived_template_operators=no,
3750 ac_cv_need_derived_template_operators=yes)])
3751 if test "$ac_cv_need_derived_template_operators" = yes ; then
3752 AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
3756 dnl Some compilers have trouble detecting that a template class
3757 dnl that derives from another template is actually an instance
3758 dnl of the base class. This test checks for that.
3759 AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
3760 ac_cv_need_cpp_template_cast_to_base,
3761 [AC_TRY_COMPILE([template <class T> class Base { };
3762 template <class T> class Derived : public Base<T> { };
3763 template <class T> int foo(const Base<T>&) { return 0; }],
3764 [Derived<char> bar; return foo(bar);],
3765 ac_cv_need_cpp_template_cast_to_base=no,
3766 ac_cv_need_cpp_template_cast_to_base=yes)])
3767 if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
3768 AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
3771 dnl Some compilers have trouble resolving the ambiguity between two
3772 dnl functions whose arguments differ only by cv-qualifications.
3773 AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
3774 ac_cv_can_resolve_const_ambiguity,
3776 template <class T> class ptrClass {
3780 template <class T> T* a(ptrClass<T> *arg) {
3785 const T* a(const ptrClass<T> *arg) {
3791 ac_cv_can_resolve_const_ambiguity=yes,
3792 ac_cv_can_resolve_const_ambiguity=no)])
3793 if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
3794 AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
3798 dnl We don't do exceptions on unix. The only reason this used to be here
3799 dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses
3800 dnl exceptions. But, we turn exceptions off by default and this test breaks.
3801 dnl So im commenting this out until someone writes some artificial
3802 dnl intelligence to detect not only if the compiler has exceptions, but if
3803 dnl they are enabled as well.
3805 dnl AC_CACHE_CHECK(for C++ \"exceptions\",
3806 dnl ac_cv_cpp_exceptions,
3807 dnl [AC_TRY_COMPILE(class X { public: X() {} };
3808 dnl static void F() { throw X(); },
3809 dnl try { F(); } catch(X & e) { },
3810 dnl ac_cv_cpp_exceptions=yes,
3811 dnl ac_cv_cpp_exceptions=no)])
3812 dnl if test $ac_cv_cpp_exceptions = yes ; then
3813 dnl AC_DEFINE(HAVE_CPP_EXCEPTIONS)
3816 dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
3817 dnl supports it well enough to allow us to use it to change access, but not
3818 dnl to resolve ambiguity. The next two tests determine how well the |using|
3819 dnl keyword is supported.
3821 dnl Check to see if we can change access with |using|. Test both a
3822 dnl legal and an illegal example.
3823 AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
3824 ac_cv_cpp_access_changing_using2,
3826 class A { protected: int foo() { return 0; } };
3827 class B : public A { public: using A::foo; };,
3828 B b; return b.foo();,
3830 class A { public: int foo() { return 1; } };
3831 class B : public A { private: using A::foo; };,
3832 B b; return b.foo();,
3833 ac_cv_cpp_access_changing_using2=no,
3834 ac_cv_cpp_access_changing_using2=yes)],
3835 ac_cv_cpp_access_changing_using2=no)])
3836 if test "$ac_cv_cpp_access_changing_using2" = yes ; then
3837 AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
3840 dnl Check to see if we can resolve ambiguity with |using|.
3841 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3842 ac_cv_cpp_ambiguity_resolving_using,
3843 [AC_TRY_COMPILE(class X {
3844 public: int go(const X&) {return 3;}
3845 int jo(const X&) {return 3;}
3847 class Y : public X {
3848 public: int go(int) {return 2;}
3849 int jo(int) {return 2;}
3851 private: using X::go;
3854 ac_cv_cpp_ambiguity_resolving_using=yes,
3855 ac_cv_cpp_ambiguity_resolving_using=no)])
3856 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3857 AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3860 dnl Check to see if the |std| namespace is supported. If so, we'll want
3861 dnl to qualify any standard library calls with "std::" to ensure that
3862 dnl those functions can be resolved.
3863 AC_CACHE_CHECK(for \"std::\" namespace,
3864 ac_cv_cpp_namespace_std,
3865 [AC_TRY_COMPILE([#include <algorithm>],
3866 [return std::min(0, 1);],
3867 ac_cv_cpp_namespace_std=yes,
3868 ac_cv_cpp_namespace_std=no)])
3869 if test "$ac_cv_cpp_namespace_std" = yes ; then
3870 AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
3873 dnl Older compilers are overly ambitious with respect to using the standard
3874 dnl template library's |operator!=()| when |operator==()| is defined. In
3875 dnl which case, defining |operator!=()| in addition to |operator==()| causes
3876 dnl ambiguity at compile-time. This test checks for that case.
3877 AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
3878 ac_cv_cpp_unambiguous_std_notequal,
3879 [AC_TRY_COMPILE([#include <algorithm>
3881 int operator==(const T1&, const T1&) { return 0; }
3882 int operator!=(const T1&, const T1&) { return 0; }],
3883 [T1 a,b; return a != b;],
3884 ac_cv_cpp_unambiguous_std_notequal=unambiguous,
3885 ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
3886 if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
3887 AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
3891 AC_CACHE_CHECK(for C++ reinterpret_cast,
3892 ac_cv_cpp_reinterpret_cast,
3893 [AC_TRY_COMPILE(struct X { int i; };
3894 struct Y { int i; };,
3895 X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
3896 ac_cv_cpp_reinterpret_cast=yes,
3897 ac_cv_cpp_reinterpret_cast=no)])
3898 if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
3899 AC_DEFINE(HAVE_CPP_NEW_CASTS)
3902 dnl See if a dynamic_cast to void* gives the most derived object.
3903 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
3904 ac_cv_cpp_dynamic_cast_void_ptr,
3905 [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
3906 class Y { int j; public: virtual ~Y() { } };
3907 class Z : public X, public Y { int k; };
3913 return !((((void*)&mdo != (void*)subx) &&
3914 ((void*)&mdo == dynamic_cast<void*>(subx))) ||
3915 (((void*)&mdo != (void*)suby) &&
3916 ((void*)&mdo == dynamic_cast<void*>(suby))));
3918 ac_cv_cpp_dynamic_cast_void_ptr=yes,
3919 ac_cv_cpp_dynamic_cast_void_ptr=no,
3920 ac_cv_cpp_dynamic_cast_void_ptr=no)])
3921 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
3922 AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
3926 dnl note that this one is reversed - if the test fails, then
3927 dnl we require implementations of unused virtual methods. Which
3928 dnl really blows because it means we'll have useless vtable
3930 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
3931 ac_cv_cpp_unused_required,
3932 [AC_TRY_LINK(class X {private: virtual void never_called();};,
3934 ac_cv_cpp_unused_required=no,
3935 ac_cv_cpp_unused_required=yes)])
3936 if test "$ac_cv_cpp_unused_required" = yes ; then
3937 AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
3941 dnl Some compilers have trouble comparing a constant reference to a templatized
3942 dnl class to zero, and require an explicit operator==() to be defined that takes
3943 dnl an int. This test separates the strong from the weak.
3945 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
3946 ac_cv_trouble_comparing_to_zero,
3947 [AC_TRY_COMPILE([#include <algorithm>
3948 template <class T> class Foo {};
3950 template <class T> int operator==(const T2*, const T&) { return 0; }
3951 template <class T> int operator!=(const T2*, const T&) { return 0; }],
3952 [Foo<int> f; return (0 != f);],
3953 ac_cv_trouble_comparing_to_zero=no,
3954 ac_cv_trouble_comparing_to_zero=yes)])
3955 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
3956 AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
3961 dnl End of C++ language/feature checks
3964 dnl ========================================================
3965 dnl = Internationalization checks
3966 dnl ========================================================
3968 dnl Internationalization and Locale support is different
3969 dnl on various UNIX platforms. Checks for specific i18n
3970 dnl features go here.
3972 dnl check for LC_MESSAGES
3973 AC_CACHE_CHECK(for LC_MESSAGES,
3974 ac_cv_i18n_lc_messages,
3975 [AC_TRY_COMPILE([#include <locale.h>],
3976 [int category = LC_MESSAGES;],
3977 ac_cv_i18n_lc_messages=yes,
3978 ac_cv_i18n_lc_messages=no)])
3979 if test "$ac_cv_i18n_lc_messages" = yes; then
3980 AC_DEFINE(HAVE_I18N_LC_MESSAGES)
3983 fi # SKIP_COMPILER_CHECKS
3986 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
3987 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
3990 dnl Mozilla specific options
3991 dnl ========================================================
3992 dnl The macros used for command line options
3993 dnl are defined in build/autoconf/altoptions.m4.
3996 dnl ========================================================
3998 dnl = Check for external package dependencies
4000 dnl ========================================================
4001 MOZ_ARG_HEADER(External Packages)
4005 MOZ_ARG_WITH_STRING(libxul-sdk,
4006 [ --with-libxul-sdk=PFX Use the libXUL SDK at <PFX>],
4007 LIBXUL_SDK_DIR=$withval)
4009 if test "$LIBXUL_SDK_DIR" = "yes"; then
4010 AC_MSG_ERROR([--with-libxul-sdk must specify a path])
4011 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
4012 LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
4014 if test ! -f "$LIBXUL_SDK/sdk/include/xpcom-config.h"; then
4015 AC_MSG_ERROR([$LIBXUL_SDK/sdk/include/xpcom-config.h doesn't exist])
4020 AC_SUBST(LIBXUL_SDK)
4022 if test -n "$LIBXUL_SDK"; then
4023 LIBXUL_DIST="$LIBXUL_SDK"
4025 LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
4027 AC_SUBST(LIBXUL_DIST)
4029 dnl ========================================================
4030 dnl = If NSPR was not detected in the system,
4031 dnl = use the one in the source tree (mozilla/nsprpub)
4032 dnl ========================================================
4033 MOZ_ARG_WITH_BOOL(system-nspr,
4034 [ --with-system-nspr Use system installed NSPR],
4035 _USE_SYSTEM_NSPR=1 )
4037 if test -n "$_USE_SYSTEM_NSPR"; then
4038 AM_PATH_NSPR(4.7.0, [MOZ_NATIVE_NSPR=1], [MOZ_NATIVE_NSPR=])
4041 if test -n "$MOZ_NATIVE_NSPR"; then
4042 _SAVE_CFLAGS=$CFLAGS
4043 CFLAGS="$CFLAGS $NSPR_CFLAGS"
4044 AC_TRY_COMPILE([#include "prlog.h"],
4045 [#ifndef PR_STATIC_ASSERT
4046 #error PR_STATIC_ASSERT not defined
4048 [MOZ_NATIVE_NSPR=1],
4049 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT]))
4050 CFLAGS=$_SAVE_CFLAGS
4052 NSPR_CFLAGS='`$(DEPTH)/nsprpub/config/nspr-config --prefix='${LIBXUL_DIST}' --includedir='${LIBXUL_DIST}'/include/nspr --cflags`'
4053 if test "$OS_ARCH" = "WINCE"; then
4054 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4055 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4056 elif test "$OS_ARCH" = "WINNT"; then
4057 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4058 if test -n "$GNU_CC"; then
4059 NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
4061 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4064 NSPR_LIBS='`$(DEPTH)/nsprpub/config/nspr-config --prefix='${LIBXUL_DIST}' --libdir='${LIBXUL_DIST}'/lib --libs`'
4068 dnl ========================================================
4069 dnl = If NSS was not detected in the system,
4070 dnl = use the one in the source tree (mozilla/security/nss)
4071 dnl ========================================================
4073 MOZ_ARG_WITH_BOOL(system-nss,
4074 [ --with-system-nss Use system installed NSS],
4077 if test -n "$_USE_SYSTEM_NSS"; then
4078 AM_PATH_NSS(3.12.0, [MOZ_NATIVE_NSS=1], [MOZ_NATIVE_NSS=])
4081 if test -n "$MOZ_NATIVE_NSS"; then
4082 NSS_LIBS="$NSS_LIBS -lcrmf"
4084 NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4086 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4087 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4088 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4089 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4090 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX) \
4091 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)softokn$NSS_VERSION\$(DLL_SUFFIX)"
4093 if test -z "$GNU_CC" && test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "WINCE" -o "$OS_ARCH" = "OS2"; then
4095 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4096 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4097 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4098 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4099 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4100 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)softokn$NSS_VERSION.\$(IMPORT_LIB_SUFFIX)"
4102 NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION -lsoftokn$NSS_VERSION"
4106 if test -z "$SKIP_LIBRARY_CHECKS"; then
4107 dnl system JPEG support
4108 dnl ========================================================
4109 MOZ_ARG_WITH_STRING(system-jpeg,
4110 [ --with-system-jpeg[=PFX]
4111 Use system libjpeg [installed at prefix PFX]],
4114 _SAVE_CFLAGS=$CFLAGS
4115 _SAVE_LDFLAGS=$LDFLAGS
4117 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4118 CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4119 LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4121 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4124 AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS)
4127 if test "$SYSTEM_JPEG" = 1; then
4128 LIBS="$JPEG_LIBS $LIBS"
4129 AC_TRY_COMPILE([ #include <stdio.h>
4130 #include <sys/types.h>
4131 #include <jpeglib.h> ],
4132 [ #if JPEG_LIB_VERSION < $MOZJPEG
4133 #error "Insufficient JPEG library version ($MOZJPEG required)."
4136 [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=])
4138 CFLAGS=$_SAVE_CFLAGS
4139 LDFLAGS=$_SAVE_LDFLAGS
4142 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$SYSTEM_JPEG" = 1; then
4143 JPEG_CFLAGS="-I${JPEG_DIR}/include"
4144 JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
4147 dnl system ZLIB support
4148 dnl ========================================================
4149 MOZ_ARG_WITH_STRING(system-zlib,
4150 [ --with-system-zlib[=PFX]
4151 Use system libz [installed at prefix PFX]],
4154 _SAVE_CFLAGS=$CFLAGS
4155 _SAVE_LDFLAGS=$LDFLAGS
4157 if test -n "${ZLIB_DIR}" -a "${ZLIB_DIR}" != "yes"; then
4158 CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
4159 LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
4161 if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
4164 AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"],
4165 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
4167 if test "$SYSTEM_ZLIB" = 1; then
4168 LIBS="$ZLIB_LIBS $LIBS"
4169 AC_TRY_COMPILE([ #include <stdio.h>
4171 #include <zlib.h> ],
4172 [ #if ZLIB_VERNUM < $MOZZLIB
4173 #error "Insufficient zlib version ($MOZZLIB required)."
4176 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=])
4178 CFLAGS=$_SAVE_CFLAGS
4179 LDFLAGS=$_SAVE_LDFLAGS
4182 if test "${ZLIB_DIR}" -a -d "${ZLIB_DIR}" -a "$SYSTEM_ZLIB" = 1; then
4183 ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
4184 ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
4187 dnl system BZIP2 Support
4188 dnl ========================================================
4189 MOZ_ARG_WITH_STRING(system-bz2,
4190 [ --with-system-bz2[=PFX]
4191 Use system libbz2 [installed at prefix PFX]],
4194 _SAVE_CFLAGS=$CFLAGS
4195 _SAVE_LDFLAGS=$LDFLAGS
4197 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4198 CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4199 LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4201 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4204 AC_CHECK_LIB(bz2, BZ2_bzread, [SYSTEM_BZ2=1 BZ2_LIBS="-lbz2"],
4205 [SYSTEM_BZ2= BZ2_CFLAGS= BZ2_LIBS=], $BZ2_LIBS)
4207 CFLAGS=$_SAVE_CFLAGS
4208 LDFLAGS=$_SAVE_LDFLAGS
4211 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$SYSTEM_BZ2" = 1; then
4212 BZ2_CFLAGS="-I${BZ2_DIR}/include"
4213 BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
4216 dnl system PNG Support
4217 dnl ========================================================
4218 MOZ_ARG_WITH_STRING(system-png,
4219 [ --with-system-png[=PFX]
4220 Use system libpng [installed at prefix PFX]],
4223 _SAVE_CFLAGS=$CFLAGS
4224 _SAVE_LDFLAGS=$LDFLAGS
4226 CFLAGS="$ZLIB_CFLAGS $CFLAGS"
4227 LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
4228 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4229 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4230 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4232 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4235 _SAVE_PNG_LIBS=$PNG_LIBS
4236 AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"],
4237 AC_MSG_ERROR([--with-system-png requested but no working libpng found]),
4239 AC_CHECK_LIB(png, png_get_acTL, ,
4240 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]),
4243 if test "$SYSTEM_PNG" = 1; then
4244 LIBS="$PNG_LIBS $LIBS"
4245 AC_TRY_COMPILE([ #include <stdio.h>
4246 #include <sys/types.h>
4248 [ #if PNG_LIBPNG_VER < $MOZPNG
4249 #error "Insufficient libpng version ($MOZPNG required)."
4251 #ifndef PNG_UINT_31_MAX
4252 #error "Insufficient libpng version."
4255 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4257 CFLAGS=$_SAVE_CFLAGS
4258 LDFLAGS=$_SAVE_LDFLAGS
4261 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
4262 PNG_CFLAGS="-I${PNG_DIR}/include"
4263 PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
4266 fi # SKIP_LIBRARY_CHECKS
4268 dnl system HunSpell Support
4269 dnl ========================================================
4270 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4271 [ --enable-system-hunspell Use system hunspell (located with pkgconfig)],
4274 if test -n "$SYSTEM_HUNSPELL"; then
4275 PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4278 AC_SUBST(SYSTEM_HUNSPELL)
4280 dnl ========================================================
4281 dnl Java SDK support
4282 dnl ========================================================
4284 MOZ_ARG_WITH_STRING(java-include-path,
4285 [ --with-java-include-path=dir Location of Java SDK headers],
4286 JAVA_INCLUDE_PATH=$withval)
4289 MOZ_ARG_WITH_STRING(java-bin-path,
4290 [ --with-java-bin-path=dir Location of Java binaries (java, javac, jar)],
4291 JAVA_BIN_PATH=$withval)
4293 dnl ========================================================
4294 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4295 dnl their usage and use them in spidermonkey.
4296 dnl ========================================================
4297 MOZ_ARG_WITH_BOOL(arm-kuser,
4298 [ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4301 if test -n "$USE_ARM_KUSER"; then
4302 AC_DEFINE(USE_ARM_KUSER)
4305 dnl ========================================================
4309 dnl ========================================================
4311 MOZ_ARG_HEADER(Application)
4315 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4316 MOZ_BRANDING_DIRECTORY=
4317 MOZ_DBGRINFO_MODULES=
4320 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg bmp xbm icon"
4321 MOZ_IMG_ENCODERS_DEFAULT="png jpeg"
4330 MOZ_AUTH_EXTENSION=1
4331 MOZ_NO_ACTIVEX_SUPPORT=1
4332 MOZ_NO_INSPECTOR_APIS=
4333 MOZ_NO_XPCOM_OBSOLETE=
4342 MOZ_PLAINTEXT_EDITOR_ONLY=
4344 MOZ_PREF_EXTENSIONS=1
4345 MOZ_PROFILELOCKING=1
4347 MOZ_PYTHON_EXTENSIONS="xpcom dom"
4349 MOZ_PYTHON_DEBUG_SUFFIX=
4350 MOZ_PYTHON_DLL_SUFFIX=
4351 MOZ_PYTHON_INCLUDES=
4355 MOZ_PYTHON_VER_DOTTED=
4361 MOZ_STATIC_MAIL_BUILD=
4366 MOZ_UNIVERSALCHARDET=1
4368 MOZ_USE_NATIVE_UCONV=
4370 MOZ_XPFE_COMPONENTS=1
4372 MOZ_XSLT_STANDALONE=
4380 NECKO_PROTOCOLS_DEFAULT="about data file ftp gopher http res viewsource"
4381 NECKO_SMALL_BUFFERS=
4383 XPC_IDISPATCH_SUPPORT=
4386 case "$target_os" in
4395 case "$target_os" in
4396 msvc*|mks*|cygwin*|mingw*)
4397 if test -z "$GNU_CC"; then
4398 XPC_IDISPATCH_SUPPORT=1
4399 MOZ_NO_ACTIVEX_SUPPORT=
4400 MOZ_ACTIVEX_SCRIPTING_SUPPORT=1
4405 MOZ_ARG_ENABLE_STRING(application,
4406 [ --enable-application=APP
4410 content/xslt (Standalone Transformiix XSLT)
4411 netwerk (Standalone Necko)
4412 tools/update-packaging (AUS-related packaging tools)
4413 standalone (use this for standalone
4414 xpcom/xpconnect or to manually drive a build)],
4415 [ MOZ_BUILD_APP=$enableval ] )
4417 MOZ_EMBEDDING_PROFILE=default
4418 MOZ_ARG_WITH_STRING(embedding-profile,
4419 [ --with-embedding-profile=default|basic|minimal
4420 see http://wiki.mozilla.org/Gecko:Small_Device_Support],
4421 [ MOZ_EMBEDDING_PROFILE=$withval ])
4423 case "$MOZ_EMBEDDING_PROFILE" in
4425 MOZ_EMBEDDING_LEVEL_DEFAULT=1
4426 MOZ_EMBEDDING_LEVEL_BASIC=1
4427 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4428 AC_DEFINE(MOZ_EMBEDDING_LEVEL_DEFAULT)
4429 AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4430 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4434 MOZ_EMBEDDING_LEVEL_DEFAULT=
4435 MOZ_EMBEDDING_LEVEL_BASIC=1
4436 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4437 AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4438 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4440 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4442 MOZ_ENABLE_POSTSCRIPT=
4443 MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4444 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4445 MOZ_IMG_ENCODERS_DEFAULT=
4451 MOZ_NO_ACTIVEX_SUPPORT=1
4452 MOZ_NO_INSPECTOR_APIS=1
4453 MOZ_NO_XPCOM_OBSOLETE=1
4456 MOZ_PLAINTEXT_EDITOR_ONLY=1
4458 MOZ_PREF_EXTENSIONS=
4462 MOZ_UNIVERSALCHARDET=
4464 MOZ_USE_NATIVE_UCONV=
4466 MOZ_XPFE_COMPONENTS=
4471 NECKO_PROTOCOLS_DEFAULT="about data http file res"
4472 NECKO_SMALL_BUFFERS=1
4473 NS_DISABLE_LOGGING=1
4479 MOZ_EMBEDDING_LEVEL_DEFAULT=
4480 MOZ_EMBEDDING_LEVEL_BASIC=
4481 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4482 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4484 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4486 MOZ_ENABLE_POSTSCRIPT=
4487 MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4488 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4489 MOZ_IMG_ENCODERS_DEFAULT=
4495 MOZ_NO_ACTIVEX_SUPPORT=1
4496 MOZ_NO_INSPECTOR_APIS=1
4497 MOZ_NO_XPCOM_OBSOLETE=1
4500 MOZ_PLAINTEXT_EDITOR_ONLY=1
4502 MOZ_PREF_EXTENSIONS=
4508 MOZ_UNIVERSALCHARDET=
4510 MOZ_USE_NATIVE_UCONV=1
4512 MOZ_XPFE_COMPONENTS=
4519 NECKO_PROTOCOLS_DEFAULT="about data http file res"
4520 NECKO_SMALL_BUFFERS=1
4521 NS_DISABLE_LOGGING=1
4527 AC_MSG_ERROR([Unrecognized value: --with-embedding-profile=$MOZ_EMBEDDING_PROFILE])
4531 AC_SUBST(MOZ_EMBEDDING_LEVEL_DEFAULT)
4532 AC_SUBST(MOZ_EMBEDDING_LEVEL_BASIC)
4533 AC_SUBST(MOZ_EMBEDDING_LEVEL_MINIMAL)
4535 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
4536 [ --with-xulrunner-stub-name=appname Create the xulrunner stub with the given name],
4537 XULRUNNER_STUB_NAME=$withval)
4539 if test -z "$XULRUNNER_STUB_NAME"; then
4540 case "$target_os" in
4542 XULRUNNER_STUB_NAME=xulrunner
4545 XULRUNNER_STUB_NAME=xulrunner-stub
4548 AC_SUBST(XULRUNNER_STUB_NAME)
4550 if test -z "$MOZ_BUILD_APP"; then
4551 AC_MSG_ERROR([--enable-application=APP was not specified and is required.])
4553 # We have a valid application only if it has a build.mk file in its top
4555 if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
4556 AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4560 # Allow the application to influence configure with a confvars.sh script.
4562 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4563 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4564 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4565 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4570 # Now is a good time to test for logic errors, define mismatches, etc.
4571 case "$MOZ_BUILD_APP" in
4573 if test "$LIBXUL_SDK"; then
4574 AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4578 # Fix this case for folks who forget. Warn them.
4579 if test -n "$LIBXUL_SDK" -a -z "$MOZ_XUL_APP"; then
4580 AC_MSG_WARN([Setting MOZ_XUL_APP since LIBXUL_SDK was set. Add to confvars.sh!])
4586 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4587 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4589 case "$MOZ_BUILD_APP" in
4591 AC_DEFINE(MOZ_PHOENIX)
4595 AC_DEFINE(MOZ_XULRUNNER)
4603 MOZ_APP_NAME=mozilla
4604 MOZ_APP_DISPLAYNAME=Mozilla
4605 MOZ_APP_VERSION=$MOZILLA_VERSION
4610 if test -z "$MOZ_XUL_APP"; then
4611 AC_MSG_ERROR([builds with unsetting MOZ_XUL_APP in confvars.sh are not supported.])
4614 AC_SUBST(MOZ_BUILD_APP)
4615 AC_SUBST(MOZ_XUL_APP)
4616 AC_SUBST(MOZ_PHOENIX)
4617 AC_SUBST(MOZ_XULRUNNER)
4619 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4621 if test "$MOZ_XUL_APP"; then
4622 AC_DEFINE(MOZ_XUL_APP)
4625 dnl ========================================================
4627 dnl = Toolkit Options
4629 dnl ========================================================
4630 MOZ_ARG_HEADER(Toolkit Options)
4632 dnl ========================================================
4633 dnl = Select the default toolkit
4634 dnl ========================================================
4635 MOZ_ARG_ENABLE_STRING(default-toolkit,
4636 [ --enable-default-toolkit=TK
4637 Select default toolkit
4638 Platform specific defaults:
4640 Mac OS X - cairo-cocoa
4641 Neutrino/QNX - photon
4643 Win32 - cairo-windows
4645 Gtk2 with DirectFB - cairo-gtk2-dfb
4648 [ _DEFAULT_TOOLKIT=$enableval ],
4649 [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4651 if test "$_DEFAULT_TOOLKIT" = "photon" \
4652 -o "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4653 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4654 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-dfb" \
4655 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
4656 -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
4657 -o "$_DEFAULT_TOOLKIT" = "cairo-beos" \
4658 -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
4659 -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa"
4661 dnl nglayout only supports building with one toolkit,
4662 dnl so ignore everything after the first comma (",").
4663 MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4665 AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
4668 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_TOOLKIT,"$MOZ_WIDGET_TOOLKIT")
4670 dnl ========================================================
4671 dnl = Enable the toolkit as needed =
4672 dnl ========================================================
4674 case "$MOZ_WIDGET_TOOLKIT" in
4677 AC_DEFINE(MOZ_WIDGET_PHOTON)
4681 MOZ_WIDGET_TOOLKIT=windows
4682 MOZ_GFX_TOOLKIT=cairo
4685 cairo-gtk2|cairo-gtk2-x11)
4686 MOZ_WIDGET_TOOLKIT=gtk2
4687 MOZ_GFX_TOOLKIT=cairo
4689 MOZ_ENABLE_XREMOTE=1
4694 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4695 TK_LIBS='$(MOZ_GTK2_LIBS)'
4696 AC_DEFINE(MOZ_WIDGET_GTK2)
4700 MOZ_WIDGET_TOOLKIT=gtk2
4701 MOZ_GFX_TOOLKIT=cairo
4707 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4708 TK_LIBS='$(MOZ_GTK2_LIBS)'
4709 AC_DEFINE(MOZ_WIDGET_GTK2)
4710 if test "$no_x" != "yes"; then
4711 AC_MSG_WARN([Disabling X when DirectFB is specified.])
4717 MOZ_WIDGET_TOOLKIT=qt
4718 MOZ_GFX_TOOLKIT=cairo
4720 MOZ_ENABLE_XREMOTE=1
4727 TK_CFLAGS='$(MOZ_QT_CFLAGS)'
4728 TK_LIBS='$(MOZ_QT_LIBS)'
4729 AC_DEFINE(MOZ_WIDGET_QT)
4733 MOZ_WIDGET_TOOLKIT=beos
4734 MOZ_GFX_TOOLKIT=cairo
4735 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4736 TK_LIBS='$(MOZ_CAIRO_LIBS)'
4740 MOZ_WIDGET_TOOLKIT=os2
4741 MOZ_GFX_TOOLKIT=cairo
4742 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4743 TK_LIBS='$(MOZ_CAIRO_LIBS)'
4747 MOZ_WIDGET_TOOLKIT=cocoa
4748 AC_DEFINE(MOZ_WIDGET_COCOA)
4750 MOZ_GFX_TOOLKIT=cairo
4751 MOZ_USER_DIR="Mozilla"
4752 AC_DEFINE(XP_MACOSX)
4753 AC_DEFINE(TARGET_CARBON)
4754 AC_DEFINE(TARGET_API_MAC_CARBON)
4755 TK_LIBS='-framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook'
4756 TK_CFLAGS="-I${MACOS_SDK_DIR}/Developer/Headers/FlatCarbon"
4757 CFLAGS="$CFLAGS $TK_CFLAGS"
4758 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4762 if test "$MOZ_ENABLE_XREMOTE"; then
4763 AC_DEFINE(MOZ_ENABLE_XREMOTE)
4766 if test "$COMPILE_ENVIRONMENT"; then
4767 if test "$MOZ_ENABLE_GTK2"; then
4768 if test "$MOZ_X11"; then
4769 GDK_PACKAGES=gdk-x11-2.0
4770 elif test "$MOZ_DFB"; then
4771 PKG_CHECK_MODULES(MOZ_DFB, directfb >= 1.1.0)
4772 GDK_PACKAGES=directfb
4775 PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4778 fi # COMPILE_ENVIRONMENT
4780 AC_SUBST(MOZ_DEFAULT_TOOLKIT)
4782 dnl ========================================================
4783 dnl = startup-notification support module
4784 dnl ========================================================
4786 if test "$MOZ_ENABLE_GTK2"
4788 MOZ_ENABLE_STARTUP_NOTIFICATION=
4790 MOZ_ARG_ENABLE_BOOL(startup-notification,
4791 [ --enable-startup-notification Enable startup-notification support (default: disabled) ],
4792 MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4793 MOZ_ENABLE_STARTUP_NOTIFICATION=)
4794 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4796 PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4797 libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4798 [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4799 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4801 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4803 MOZ_ENABLE_STARTUP_NOTIFICATION=
4807 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4808 AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4811 TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4813 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4814 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4815 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4817 dnl ========================================================
4819 dnl ========================================================
4820 if test "$MOZ_ENABLE_QT"
4822 PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtUiTools QtCore)
4823 AC_SUBST(MOZ_QT_CFLAGS)
4824 AC_SUBST(MOZ_QT_LIBS)
4826 MOZ_ARG_WITH_STRING(qtdir,
4827 [ --with-qtdir=\$dir Specify Qt directory ],
4830 if test -z "$QTDIR"; then
4833 QTINCDIR="/include/qt"
4834 if test ! -d "$QTDIR$QTINCDIR"; then
4835 QTINCDIR="/include/X11/qt"
4837 if test ! -d "$QTDIR$QTINCDIR"; then
4841 if test -x "$QTDIR/bin/moc-qt4"; then
4842 HOST_MOC="$QTDIR/bin/moc-qt4"
4844 if test -x "$QTDIR/bin/moc"; then
4845 HOST_MOC="$QTDIR/bin/moc"
4847 AC_CHECK_PROGS(HOST_MOC, moc, "")
4850 if test -z "$HOST_MOC"; then
4851 AC_MSG_ERROR([no acceptable moc preprocessor found])
4856 AC_SUBST(GTK_CONFIG)
4860 AC_SUBST(MOZ_ENABLE_GTK2)
4861 AC_SUBST(MOZ_ENABLE_PHOTON)
4862 AC_SUBST(MOZ_ENABLE_COCOA)
4863 AC_SUBST(MOZ_ENABLE_QT)
4864 AC_SUBST(MOZ_ENABLE_XREMOTE)
4865 AC_SUBST(MOZ_GTK2_CFLAGS)
4866 AC_SUBST(MOZ_GTK2_LIBS)
4867 AC_SUBST(MOZ_QT_CFLAGS)
4868 AC_SUBST(MOZ_QT_LIBS)
4875 dnl ========================================================
4877 dnl = Components & Features
4879 dnl ========================================================
4880 MOZ_ARG_HEADER(Components and Features)
4882 dnl ========================================================
4884 dnl ========================================================
4885 MOZ_ARG_ENABLE_STRING(ui-locale,
4886 [ --enable-ui-locale=ab-CD
4887 Select the user interface locale (default: en-US)],
4888 MOZ_UI_LOCALE=$enableval )
4889 AC_SUBST(MOZ_UI_LOCALE)
4891 dnl ========================================================
4892 dnl = Trademarked Branding
4893 dnl ========================================================
4894 MOZ_ARG_ENABLE_BOOL(official-branding,
4895 [ --enable-official-branding Enable Official mozilla.org Branding
4896 Do not distribute builds with
4897 --enable-official-branding unless you have
4898 permission to use trademarks per
4899 http://www.mozilla.org/foundation/trademarks/ .],
4900 [case "$MOZ_BUILD_APP" in
4902 MOZ_BRANDING_DIRECTORY=other-licenses/branding/firefox
4903 MOZ_APP_DISPLAYNAME=Firefox
4907 AC_MSG_ERROR([Official branding is only available for Firefox.])
4911 MOZ_ARG_WITH_STRING(branding,
4912 [ --with-branding=dir Use branding from the specified directory.],
4913 MOZ_BRANDING_DIRECTORY=$withval)
4915 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4916 if test -z "$REAL_BRANDING_DIRECTORY"; then
4917 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
4920 if test -f "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"; then
4921 . "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"
4924 AC_SUBST(MOZ_BRANDING_DIRECTORY)
4926 dnl ========================================================
4927 dnl = Distribution ID
4928 dnl ========================================================
4929 MOZ_ARG_WITH_STRING(distribution-id,
4930 [ --with-distribution-id=ID Set distribution-specific id (default=org.mozilla)],
4931 [ val=`echo $withval`
4932 MOZ_DISTRIBUTION_ID="$val"])
4934 if test -z "$MOZ_DISTRIBUTION_ID"; then
4935 MOZ_DISTRIBUTION_ID="org.mozilla"
4938 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
4939 AC_SUBST(MOZ_DISTRIBUTION_ID)
4942 dnl ========================================================
4943 dnl complex text support off by default
4944 dnl ========================================================
4946 MOZ_ARG_DISABLE_BOOL(pango,
4947 [ --disable-pango Disable usage of Pango ],
4952 dnl ========================================================
4954 dnl ========================================================
4955 if test "$MOZ_ENABLE_GTK2"
4959 PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
4961 if test "$MOZ_PANGO"
4963 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
4964 AC_SUBST(MOZ_PANGO_CFLAGS)
4965 AC_SUBST(MOZ_PANGO_LIBS)
4966 AC_DEFINE(MOZ_PANGO)
4968 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
4969 AC_SUBST(MOZ_PANGO_CFLAGS)
4970 AC_SUBST(MOZ_PANGO_LIBS)
4972 PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0 fontconfig)
4973 AC_SUBST(FT2_CFLAGS)
4978 dnl ========================================================
4979 dnl = PostScript print module
4980 dnl ========================================================
4981 MOZ_ARG_DISABLE_BOOL(postscript,
4982 [ --disable-postscript Disable PostScript printing support ],
4983 MOZ_ENABLE_POSTSCRIPT=,
4984 MOZ_ENABLE_POSTSCRIPT=1 )
4986 dnl ========================================================
4987 dnl = GnomeVFS support module
4988 dnl ========================================================
4992 dnl build the gnomevfs extension by default only when the
4993 dnl GTK2 toolkit is in use.
4994 if test "$MOZ_ENABLE_GTK2"
4996 MOZ_ENABLE_GNOMEVFS=1
4998 MOZ_ENABLE_LIBGNOME=1
5001 MOZ_ARG_DISABLE_BOOL(gnomevfs,
5002 [ --disable-gnomevfs Disable GnomeVFS support ],
5003 MOZ_ENABLE_GNOMEVFS=,
5004 MOZ_ENABLE_GNOMEVFS=force)
5006 if test "$MOZ_ENABLE_GNOMEVFS"
5008 PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
5009 MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
5010 MOZ_ENABLE_GNOMEVFS=1
5012 if test "$MOZ_ENABLE_GNOMEVFS" = "force"
5014 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
5016 MOZ_ENABLE_GNOMEVFS=
5020 AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
5021 AC_SUBST(MOZ_GNOMEVFS_LIBS)
5023 if test "$MOZ_ENABLE_GCONF"
5025 PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION,[
5026 MOZ_GCONF_LIBS=`echo $MOZ_GCONF_LIBS | sed 's/-llinc\>//'`
5033 if test "$MOZ_ENABLE_GCONF"; then
5034 AC_DEFINE(MOZ_ENABLE_GCONF)
5037 AC_SUBST(MOZ_ENABLE_GCONF)
5038 AC_SUBST(MOZ_GCONF_CFLAGS)
5039 AC_SUBST(MOZ_GCONF_LIBS)
5041 if test "$MOZ_ENABLE_LIBGNOME"
5043 PKG_CHECK_MODULES(MOZ_LIBGNOME, libgnome-2.0 >= $LIBGNOME_VERSION,[
5044 MOZ_LIBGNOME_LIBS=`echo $MOZ_LIBGNOME_LIBS | sed 's/-llinc\>//'`
5045 MOZ_ENABLE_LIBGNOME=1
5047 MOZ_ENABLE_LIBGNOME=
5051 AC_SUBST(MOZ_LIBGNOME_CFLAGS)
5052 AC_SUBST(MOZ_LIBGNOME_LIBS)
5054 # The GNOME component is built if gtk2, gconf, gnome-vfs, and libgnome
5055 # are all available.
5057 if test "$MOZ_ENABLE_GTK2" -a "$MOZ_ENABLE_GCONF" -a \
5058 "$MOZ_ENABLE_GNOMEVFS" -a "$MOZ_ENABLE_LIBGNOME"; then
5059 MOZ_ENABLE_GNOME_COMPONENT=1
5061 MOZ_ENABLE_GNOME_COMPONENT=
5064 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5067 dnl ========================================================
5068 dnl = libgnomeui support module
5069 dnl ========================================================
5071 if test "$MOZ_ENABLE_GTK2"
5073 MOZ_ENABLE_GNOMEUI=1
5075 MOZ_ARG_DISABLE_BOOL(gnomeui,
5076 [ --disable-gnomeui Disable libgnomeui support (default: auto, optional at runtime) ],
5077 MOZ_ENABLE_GNOMEUI=,
5078 MOZ_ENABLE_GNOMEUI=force)
5080 if test "$MOZ_ENABLE_GNOMEUI"
5082 PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5084 MOZ_GNOMEUI_LIBS=`echo $MOZ_GNOMEUI_LIBS | sed 's/-llinc\>//'`
5085 MOZ_ENABLE_GNOMEUI=1
5087 if test "$MOZ_ENABLE_GNOMEUI" = "force"
5089 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5095 if test "$MOZ_ENABLE_GNOMEUI"; then
5096 AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5099 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5100 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5101 AC_SUBST(MOZ_GNOMEUI_LIBS)
5103 dnl ========================================================
5105 dnl ========================================================
5107 if test "$MOZ_ENABLE_GTK2" || test "$MOZ_ENABLE_QT"
5111 MOZ_ARG_DISABLE_BOOL(dbus,
5112 [ --disable-dbus Disable dbus support ],
5116 if test "$MOZ_ENABLE_DBUS"
5118 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5119 AC_DEFINE(MOZ_ENABLE_DBUS)
5122 AC_SUBST(MOZ_ENABLE_DBUS)
5123 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5124 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5126 dnl ========================================================
5127 dnl = Build Personal Security Manager
5128 dnl ========================================================
5129 MOZ_ARG_DISABLE_BOOL(crypto,
5130 [ --disable-crypto Disable crypto support (Personal Security Manager)],
5134 dnl ========================================================
5135 dnl = JS Debugger XPCOM component (js/jsd)
5136 dnl ========================================================
5137 MOZ_ARG_DISABLE_BOOL(jsd,
5138 [ --disable-jsd Disable JavaScript debug library],
5143 dnl ========================================================
5144 dnl = Disable plugin support
5145 dnl ========================================================
5146 MOZ_ARG_DISABLE_BOOL(plugins,
5147 [ --disable-plugins Disable plugins support],
5151 dnl ========================================================
5152 dnl = Disable building dbm
5153 dnl ========================================================
5154 MOZ_ARG_DISABLE_BOOL(dbm,
5155 [ --disable-dbm Disable building dbm],
5159 dnl ========================================================
5160 dnl = Open JVM Interface (OJI) support
5161 dnl ========================================================
5162 MOZ_ARG_DISABLE_BOOL(oji,
5163 [ --disable-oji Disable Open JVM Integration support],
5166 if test -n "$MOZ_OJI"; then
5170 dnl bi-directional support always on
5174 dnl ========================================================
5175 dnl view source support on by default
5176 dnl ========================================================
5177 MOZ_ARG_DISABLE_BOOL(view-source,
5178 [ --disable-view-source Disable view source support],
5181 if test "$MOZ_VIEW_SOURCE"; then
5182 AC_DEFINE(MOZ_VIEW_SOURCE)
5186 dnl ========================================================
5187 dnl accessibility support on by default on all platforms
5189 dnl ========================================================
5190 MOZ_ARG_DISABLE_BOOL(accessibility,
5191 [ --disable-accessibility Disable accessibility support (off by default on OS X)],
5194 if test "$ACCESSIBILITY"; then
5195 AC_DEFINE(ACCESSIBILITY)
5198 if test -n "$ACCESSIBILITY" -a "$COMPILE_ENVIRONMENT" = "1"; then
5200 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5201 if test "$ac_cv_header_atlbase_h" = "no"; then
5202 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.])
5204 if test "$ac_cv_header_oleacc_idl" = "no"; then
5205 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.])
5211 dnl ========================================================
5212 dnl xpfe/components on by default
5213 dnl ========================================================
5214 MOZ_ARG_DISABLE_BOOL(xpfe-components,
5215 [ --disable-xpfe-components
5216 Disable xpfe components],
5217 MOZ_XPFE_COMPONENTS=,
5218 MOZ_XPFE_COMPONENTS=1 )
5220 dnl ========================================================
5221 dnl xpinstall support on by default
5222 dnl ========================================================
5223 MOZ_ARG_DISABLE_BOOL(xpinstall,
5224 [ --disable-xpinstall Disable xpinstall support],
5227 if test "$MOZ_XPINSTALL"; then
5228 AC_DEFINE(MOZ_XPINSTALL)
5231 dnl ========================================================
5232 dnl xpcom js loader support on by default
5233 dnl ========================================================
5234 MOZ_ARG_DISABLE_BOOL(jsloader,
5235 [ --disable-jsloader Disable xpcom js loader support],
5238 if test "$MOZ_JSLOADER"; then
5239 AC_DEFINE(MOZ_JSLOADER)
5242 dnl ========================================================
5243 dnl Disable printing
5244 dnl ========================================================
5245 MOZ_ARG_DISABLE_BOOL(printing,
5246 [ --disable-printing Disable printing support],
5250 if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
5251 AC_MSG_WARN([Printing does not work with Qt at this time. Omitting printing support.])
5255 if test "$NS_PRINTING"; then
5256 AC_DEFINE(NS_PRINTING)
5257 AC_DEFINE(NS_PRINT_PREVIEW)
5260 dnl ========================================================
5261 dnl use native unicode converters
5262 dnl ========================================================
5263 MOZ_ARG_ENABLE_BOOL(native-uconv,
5264 [ --enable-native-uconv Enable iconv support],
5265 MOZ_USE_NATIVE_UCONV=1,
5266 MOZ_USE_NATIVE_UCONV= )
5267 if test "$MOZ_USE_NATIVE_UCONV"; then
5268 AC_DEFINE(MOZ_USE_NATIVE_UCONV)
5270 if test "$OS_ARCH" != "WINCE" -a "$OS_ARCH" != "WINNT" -a "$MOZ_USE_NATIVE_UCONV" -a "$ac_cv_func_iconv" != "yes"; then
5271 AC_MSG_ERROR([iconv() not found. Cannot enable native uconv support.])
5275 dnl ========================================================
5276 dnl Libeditor can be build as plaintext-only,
5277 dnl or as a full html and text editing component.
5278 dnl We build both by default.
5279 dnl ========================================================
5280 MOZ_ARG_ENABLE_BOOL(plaintext-editor-only,
5281 [ --enable-plaintext-editor-only
5282 Allow only plaintext editing],
5283 MOZ_PLAINTEXT_EDITOR_ONLY=1,
5284 MOZ_PLAINTEXT_EDITOR_ONLY= )
5285 dnl Note the #define is MOZILLA, not MOZ, for compat with the Mac build.
5286 AC_SUBST(MOZ_PLAINTEXT_EDITOR_ONLY)
5288 dnl ========================================================
5289 dnl = Drop XPCOM Obsolete library
5290 dnl ========================================================
5291 MOZ_ARG_DISABLE_BOOL(xpcom-obsolete,
5292 [ --disable-xpcom-obsolete Disable XPCOM Obsolete Library],
5293 MOZ_NO_XPCOM_OBSOLETE=1,
5294 MOZ_NO_XPCOM_OBSOLETE=)
5296 if test -n "$MOZ_NO_XPCOM_OBSOLETE"; then
5297 AC_DEFINE(MOZ_NO_XPCOM_OBSOLETE)
5300 dnl ========================================================
5301 dnl = Disable Fast Load
5302 dnl ========================================================
5303 MOZ_ARG_DISABLE_BOOL(xpcom-fastload,
5304 [ --disable-xpcom-fastload Disable XPCOM fastload support],
5308 AC_SUBST(MOZ_NO_FAST_LOAD)
5310 if test -n "$MOZ_NO_FAST_LOAD"; then
5311 AC_DEFINE(MOZ_NO_FAST_LOAD)
5314 dnl ========================================================
5315 dnl = Disable Ogg Codecs
5316 dnl ========================================================
5317 MOZ_ARG_DISABLE_BOOL(ogg,
5318 [ --disable-ogg Disable Ogg Codec support],
5324 if test -n "$MOZ_OGG"; then
5330 dnl ========================================================
5331 dnl = Disable Wave decoder support
5332 dnl ========================================================
5333 MOZ_ARG_DISABLE_BOOL(wave,
5334 [ --disable-wave Disable Wave decoder support],
5340 if test -n "$MOZ_WAVE"; then
5346 dnl ========================================================
5347 dnl = Handle dependent SYDNEYAUDIO and MEDIA defines
5348 dnl ========================================================
5350 AC_SUBST(MOZ_SYDNEYAUDIO)
5352 if test -n "$MOZ_SYDNEYAUDIO"; then
5353 AC_DEFINE(MOZ_SYDNEYAUDIO)
5358 if test -n "$MOZ_MEDIA"; then
5359 AC_DEFINE(MOZ_MEDIA)
5362 dnl ========================================================
5363 dnl = Check alsa availability on Linux if using sydneyaudio
5364 dnl ========================================================
5366 dnl If using sydneyaudio with Linux, ensure that the alsa library is available
5367 if test "$COMPILE_ENVIRONMENT"; then
5368 if test -n "$MOZ_SYDNEYAUDIO"; then
5369 case "$target_os" in
5371 AC_CHECK_LIB(asound, snd_pcm_open,,AC_MSG_ERROR([Ogg support on Linux requires the alsa library]))
5377 dnl ========================================================
5378 dnl Permissions System
5379 dnl ========================================================
5380 MOZ_ARG_DISABLE_BOOL(permissions,
5381 [ --disable-permissions Disable permissions (popup and cookie blocking)],
5386 dnl ========================================================
5388 dnl ========================================================
5389 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5390 [ --disable-negotiateauth Disable GSS-API negotiation ],
5391 MOZ_AUTH_EXTENSION=,
5392 MOZ_AUTH_EXTENSION=1 )
5394 dnl ========================================================
5396 dnl ========================================================
5397 MOZ_ARG_DISABLE_BOOL(xtf,
5398 [ --disable-xtf Disable XTF (pluggable xml tags) support],
5401 if test "$MOZ_XTF"; then
5405 dnl ========================================================
5407 dnl ========================================================
5408 MOZ_ARG_DISABLE_BOOL(inspector-apis,
5409 [ --disable-inspector-apis Disable the DOM inspection APIs ],
5410 MOZ_NO_INSPECTOR_APIS=1,
5411 MOZ_NO_INSPECTOR_APIS= )
5413 dnl ========================================================
5414 dnl Pref extensions (autoconfig and system-pref)
5415 dnl ========================================================
5416 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5417 [ --disable-pref-extensions
5418 Disable pref extensions such as autoconfig and
5420 MOZ_PREF_EXTENSIONS=,
5421 MOZ_PREF_EXTENSIONS=1 )
5423 dnl ========================================================
5424 dnl = Universalchardet
5425 dnl ========================================================
5426 MOZ_ARG_DISABLE_BOOL(universalchardet,
5427 [ --disable-universalchardet
5428 Disable universal encoding detection],
5429 MOZ_UNIVERSALCHARDET=,
5430 MOZ_UNIVERSALCHARDET=1 )
5432 dnl ========================================================
5434 dnl ========================================================
5435 MOZ_ARG_ENABLE_BOOL(javaxpcom,
5436 [ --enable-javaxpcom
5437 Enable Java-XPCOM bridge],
5441 if test -n "${MOZ_JAVAXPCOM}"; then
5444 if test -n "$JAVA_HOME"; then
5445 JAVA_HOME=`cygpath -u \`cygpath -m -s "$JAVA_HOME"\``
5449 if test -n "$JAVA_HOME"; then
5450 JAVA_HOME=`cd "$JAVA_HOME" && pwd`
5455 if test -n "${JAVA_INCLUDE_PATH}"; then
5456 dnl Make sure jni.h exists in the given include path.
5457 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5458 AC_MSG_ERROR([jni.h was not found in given include path $JAVA_INCLUDE_PATH.])
5461 case "$target_os" in
5463 dnl Default to java system location
5464 JAVA_INCLUDE_PATH=/System/Library/Frameworks/JavaVM.framework/Headers
5468 JAVA_INCLUDE_PATH="$JAVA_HOME/include"
5471 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5472 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.])
5476 if test -n "${JAVA_BIN_PATH}"; then
5477 dnl Look for javac and jar in the specified path.
5478 JAVA_PATH="$JAVA_BIN_PATH"
5480 dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5481 JAVA_PATH="$JAVA_HOME/bin:$PATH"
5484 AC_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5485 AC_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5486 AC_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5487 if test -z "$JAVA" || test "$JAVA" = ":" || test -z "$JAVAC" || test "$JAVAC" = ":" || test -z "$JAR" || test "$JAR" = ":"; then
5488 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.])
5492 dnl ========================================================
5493 dnl = Breakpad crash reporting (on by default on supported platforms)
5494 dnl ========================================================
5496 if (test "$OS_ARCH" = "WINNT" -a -z "$GNU_CC" \
5497 || test "$OS_ARCH" = "Darwin" \
5498 || test "$OS_ARCH" = "Linux" -a "$CPU_ARCH" = "x86" \
5499 || test "$OS_ARCH" = "SunOS") \
5500 && test -z "$HAVE_64BIT_OS"; then
5504 MOZ_ARG_DISABLE_BOOL(crashreporter,
5505 [ --disable-crashreporter Disable breakpad crash reporting],
5507 MOZ_CRASHREPORTER=1)
5509 if test -n "$MOZ_CRASHREPORTER"; then
5510 AC_DEFINE(MOZ_CRASHREPORTER)
5512 if (test "$OS_ARCH" = "Linux" || test "$OS_ARCH" = "SunOS") && \
5513 test -z "$SKIP_LIBRARY_CHECKS"; then
5514 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
5515 AC_SUBST(MOZ_GTHREAD_CFLAGS)
5516 AC_SUBST(MOZ_GTHREAD_LIBS)
5518 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.])])
5522 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
5523 [ --with-crashreporter-enable-percent=NN Enable sending crash reports by default on NN% of users. (default=100)],
5524 [ val=`echo $withval | sed 's/[^0-9]//g'`
5525 MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
5527 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
5528 MOZ_CRASHREPORTER_ENABLE_PERCENT=100
5530 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
5532 dnl ========================================================
5533 dnl = Enable compilation of specific extension modules
5534 dnl ========================================================
5536 MOZ_ARG_ENABLE_STRING(extensions,
5537 [ --enable-extensions Enable extensions],
5538 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5539 if test "$option" = "yes" || test "$option" = "all"; then
5540 AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
5541 elif test "$option" = "no" || test "$option" = "none"; then
5543 elif test "$option" = "default"; then
5544 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
5545 elif test `echo "$option" | grep -c \^-` != 0; then
5546 option=`echo $option | sed 's/^-//'`
5547 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
5549 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
5552 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
5554 if test -z "$MOZ_ENABLE_GNOMEVFS" && test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
5555 # Suppress warning on non-X11 platforms
5556 if test -n "$MOZ_X11"; then
5557 AC_MSG_WARN([Cannot build gnomevfs without required libraries. Removing gnomevfs from MOZ_EXTENSIONS.])
5559 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
5562 if test -z "$MOZ_JSDEBUGGER" && test `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
5563 AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
5564 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
5567 dnl This might be temporary: build tridentprofile only on Windows
5568 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0 && test "$OS_ARCH" != "WINNT"; then
5569 AC_MSG_WARN([tridentprofile extension works only on Windows at this time. Removing tridentprofile from MOZ_EXTENSIONS.])
5570 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5573 dnl cookie must be built before tridentprofile. put it at list's end.
5574 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0; then
5575 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5576 MOZ_EXTENSIONS="$MOZ_EXTENSIONS tridentprofile"
5579 dnl xforms requires xtf and schema-validation
5580 if test -z "$MOZ_XTF" && test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
5581 AC_MSG_WARN([Cannot build XForms without XTF support. Removing XForms from MOZ_EXTENSIONS.])
5582 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5584 if test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0 && test `echo "$MOZ_EXTENSIONS" | grep -c schema-validation` -eq 0; then
5585 AC_MSG_WARN([Cannot build XForms without schema validation. Removing XForms from MOZ_EXTENSIONS.])
5586 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5589 if test `echo "$MOZ_EXTENSIONS" | grep -c auth` -ne 0; then
5590 AC_MSG_WARN([auth is no longer an extension, use --disable-negotiateauth to disable.])
5591 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|auth||g'`
5594 if test `echo "$MOZ_EXTENSIONS" | grep -c 'cookie\|permissions'` -ne 0; then
5595 AC_MSG_WARN([cookie and permissions are no longer extensions, use --disable-permissions to disable.])
5596 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|cookie||g; s|permissions||g'`
5599 if test `echo "$MOZ_EXTENSIONS" | grep -c pref` -ne 0; then
5600 AC_MSG_WARN([pref is no longer an extension, use --disable-pref-extensions to disable.])
5601 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|pref||g'`
5604 if test `echo "$MOZ_EXTENSIONS" | grep -c universalchardet` -ne 0; then
5605 AC_MSG_WARN([universalchardet is no longer an extension, use --disable-universalchardet to disable.])
5606 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|universalchardet||g'`
5609 if test `echo "$MOZ_EXTENSIONS" | grep -c java` -ne 0; then
5610 AC_MSG_WARN([java is no longer an extension, use --enable-javaxpcom to enable.])
5611 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|java||g'`
5614 if test `echo "$MOZ_EXTENSIONS" | grep -c spellcheck` -ne 0; then
5615 AC_MSG_WARN([spellcheck is no longer an extension.])
5616 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|spellcheck||g'`
5619 if test -n "$MOZ_NO_XPCOM_OBSOLETE" && test `echo "$MOZ_EXTENSIONS" | grep -c sroaming` -ne 0; then
5620 AC_MSG_WARN([Cannot currently build sroaming without xpcom obsolete -- bug 249343. Removing sroaming from MOZ_EXTENSIONS.])
5621 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|sroaming||'`
5625 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
5627 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
5628 dnl when trying to build a non-existent extension.
5629 for extension in $MOZ_EXTENSIONS; do
5630 if test ! -d "${srcdir}/extensions/${extension}"; then
5631 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
5636 dnl ========================================================
5638 dnl ========================================================
5639 case "$MOZ_WIDGET_TOOLKIT" in
5640 beos|windows|os2|mac|cocoa)
5643 if test -z "$MOZ_ENABLE_GTK2" && test -z "$MOZ_ENABLE_QT"; then
5644 MOZ_IMG_DECODERS_DEFAULT=`echo $MOZ_IMG_DECODERS_DEFAULT | sed -e 's|icon||'`
5649 MOZ_ARG_ENABLE_STRING(image-decoders,
5650 [ --enable-image-decoders[={mod1,mod2,default,all,none}]
5651 Enable specific image decoders],
5652 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5653 if test "$option" = "yes" || test "$option" = "all"; then
5654 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5655 elif test "$option" = "no" || test "$option" = "none"; then
5657 elif test "$option" = "default"; then
5658 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5659 elif test `echo "$option" | grep -c \^-` != 0; then
5660 option=`echo $option | sed 's/^-//'`
5661 MOZ_IMG_DECODERS=`echo "$MOZ_IMG_DECODERS" | sed "s/ ${option}//"`
5663 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $option"
5666 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS_DEFAULT")
5668 dnl Dupes are removed in the encoder section because it will also add decoders
5670 dnl ========================================================
5672 dnl ========================================================
5673 MOZ_ARG_ENABLE_STRING(image-encoders,
5674 [ --enable-image-encoders[={mod1,mod2,default,all,none}]
5675 Enable specific image encoders],
5676 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5677 if test "$option" = "yes" || test "$option" = "all"; then
5678 addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5679 elif test "$option" = "no" || test "$option" = "none"; then
5682 elif test "$option" = "default"; then
5683 addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5684 elif test `echo "$option" | grep -c \^-` != 0; then
5685 option=`echo $option | sed 's/^-//'`
5686 addencoder=`echo "$MOZ_IMG_ENCODERS" | sed "s/ ${option}//"`
5688 addencoder="$option"
5690 MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS $addencoder"
5692 MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS_DEFAULT")
5695 MOZ_IMG_DECODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_DECODERS}`
5696 MOZ_IMG_ENCODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_ENCODERS}`
5698 dnl ========================================================
5699 dnl MathML on by default
5700 dnl ========================================================
5701 MOZ_ARG_DISABLE_BOOL(mathml,
5702 [ --disable-mathml Disable MathML support],
5705 if test "$MOZ_MATHML"; then
5706 AC_DEFINE(MOZ_MATHML)
5709 dnl ========================================================
5711 dnl ========================================================
5712 MOZ_ARG_DISABLE_BOOL(canvas,
5713 [ --disable-canvas Disable html:canvas feature],
5715 MOZ_ENABLE_CANVAS=1 )
5716 if test -n "$MOZ_ENABLE_CANVAS"; then
5717 AC_DEFINE(MOZ_ENABLE_CANVAS)
5719 AC_SUBST(MOZ_ENABLE_CANVAS)
5721 dnl ========================================================
5723 dnl ========================================================
5724 MOZ_ARG_DISABLE_BOOL(svg,
5725 [ --disable-svg Disable SVG support],
5728 if test -n "$MOZ_SVG"; then
5732 dnl ========================================================
5734 dnl ========================================================
5735 case "$target_os" in
5736 aix*|solaris*|linux*|msvc*|mks*|cygwin*|mingw*|os2*|wince*)
5741 MOZ_ARG_DISABLE_BOOL(installer,
5742 [ --disable-installer Disable building of installer],
5745 if test -n "$MOZ_INSTALLER" -a -n "$MOZ_XUL_APP" -a "$OS_ARCH" = "WINNT"; then
5746 # Disable installer for Windows builds that use the new toolkit if NSIS
5747 # isn't in the path.
5748 AC_PATH_PROGS(MAKENSIS, makensis)
5749 if test -z "$MAKENSIS" || test "$MAKENSIS" = ":"; then
5750 AC_MSG_ERROR([To build the installer makensis is required in your path. To build without the installer reconfigure using --disable-installer.])
5752 # The Windows build for NSIS requires the iconv command line utility to
5753 # convert the charset of the locale files.
5754 AC_PATH_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5755 if test -z "$HOST_ICONV"; then
5756 AC_MSG_ERROR([To build the installer iconv is required in your path. To build without the installer reconfigure using --disable-installer.])
5760 # Automatically disable installer if xpinstall isn't built
5761 if test -z "$MOZ_XPINSTALL"; then
5764 AC_SUBST(MOZ_INSTALLER)
5766 AC_MSG_CHECKING([for tar archiver])
5767 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
5768 if test -z "$TAR"; then
5769 AC_MSG_ERROR([no tar archiver found in \$PATH])
5771 AC_MSG_RESULT([$TAR])
5774 AC_MSG_CHECKING([for wget])
5775 AC_CHECK_PROGS(WGET, wget, "")
5776 AC_MSG_RESULT([$WGET])
5779 dnl ========================================================
5781 dnl ========================================================
5783 MOZ_ARG_DISABLE_BOOL(updater,
5784 [ --disable-updater Disable building of updater],
5787 # The Windows build requires the iconv command line utility
5788 # in order to build the updater.
5789 case "$target_os" in
5790 msvc*|mks*|cygwin*|mingw*|wince*)
5791 if test -n "$MOZ_UPDATER"; then
5792 AC_MSG_CHECKING([for iconv])
5793 AC_CHECK_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5794 if test -z "$HOST_ICONV"; then
5795 AC_MSG_ERROR([iconv not found in \$PATH])
5800 AC_SUBST(MOZ_UPDATER)
5802 # app update channel is 'default' when not supplied.
5803 MOZ_ARG_ENABLE_STRING([update-channel],
5804 [ --enable-update-channel=CHANNEL
5805 Select application update channel (default=default)],
5806 MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
5808 if test -z "$MOZ_UPDATE_CHANNEL"; then
5809 MOZ_UPDATE_CHANNEL=default
5811 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
5813 # tools/update-packaging is not checked out by default.
5814 MOZ_ARG_ENABLE_BOOL(update-packaging,
5815 [ --enable-update-packaging
5816 Enable tools/update-packaging],
5817 MOZ_UPDATE_PACKAGING=1,
5818 MOZ_UPDATE_PACKAGING= )
5819 AC_SUBST(MOZ_UPDATE_PACKAGING)
5821 dnl ========================================================
5823 dnl ========================================================
5825 MOZ_ARG_DISABLE_BOOL(xpconnect-idispatch,
5826 [ --disable-xpconnect-idispatch
5827 Disable building of xpconnect support for IDispatch
5829 XPC_IDISPATCH_SUPPORT=,
5830 XPC_IDISPATCH_SUPPORT=1)
5831 AC_SUBST(XPC_IDISPATCH_SUPPORT)
5833 MOZ_ARG_DISABLE_BOOL(activex,
5834 [ --disable-activex Disable building of ActiveX control (win32 only)],
5835 MOZ_NO_ACTIVEX_SUPPORT=1,
5836 MOZ_NO_ACTIVEX_SUPPORT= )
5837 AC_SUBST(MOZ_NO_ACTIVEX_SUPPORT)
5839 MOZ_ARG_DISABLE_BOOL(activex-scripting,
5840 [ --disable-activex-scripting
5841 Disable building of ActiveX scripting support (win32)],
5842 MOZ_ACTIVEX_SCRIPTING_SUPPORT=,
5843 MOZ_ACTIVEX_SCRIPTING_SUPPORT=1)
5844 AC_SUBST(MOZ_ACTIVEX_SCRIPTING_SUPPORT)
5846 if test -n "$MOZ_NO_ACTIVEX_SUPPORT" -a -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT";
5848 AC_MSG_ERROR([Cannot enable ActiveX scripting support when ActiveX support is disabled.])
5851 if test "$COMPILE_ENVIRONMENT" = "1"; then
5852 if test -n "$XPC_IDISPATCH_SUPPORT" -o -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
5854 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5855 if test "$ac_cv_header_atlbase_h" = "no"; then
5856 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.])
5863 dnl ========================================================
5865 dnl ========================================================
5866 MOZ_ARG_ENABLE_BOOL(leaky,
5867 [ --enable-leaky Build leaky memory tool],
5872 dnl ========================================================
5874 dnl ========================================================
5875 MOZ_ARG_ENABLE_BOOL(xpctools,
5876 [ --enable-xpctools Build JS profiling tool],
5881 dnl ========================================================
5882 dnl build the tests by default
5883 dnl ========================================================
5884 MOZ_ARG_DISABLE_BOOL(tests,
5885 [ --disable-tests Do not build test libraries & programs],
5889 dnl ========================================================
5890 dnl parental controls (for Windows Vista)
5891 dnl ========================================================
5892 MOZ_ARG_DISABLE_BOOL(parental-controls,
5893 [ --disable-parental-controls
5894 Do not build parental controls],
5895 MOZ_DISABLE_PARENTAL_CONTROLS=1,
5896 MOZ_DISABLE_PARENTAL_CONTROLS=)
5897 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5898 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5901 dnl ========================================================
5902 dnl Vista SDK specific api
5903 dnl ========================================================
5904 MOZ_ARG_DISABLE_BOOL(vista-sdk-requirements,
5905 [ --disable-vista-sdk-requirements
5906 Do not build Vista SDK specific code],
5907 MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=1,
5908 MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=)
5909 if test -n "$COMPILE_ENVIRONMENT"; then
5910 if test -n "$MOZ_DISABLE_VISTA_SDK_REQUIREMENTS"; then
5911 AC_MSG_WARN([Resulting builds will not be compatible with Windows Vista. (bug 428970)])
5912 AC_DEFINE(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
5913 if test -z "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5914 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5916 MOZ_DISABLE_PARENTAL_CONTROLS=1
5919 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5920 if test "$ac_cv_header_wpcapi_h" = "no"; then
5921 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.])
5927 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
5928 AC_SUBST(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
5930 dnl ========================================================
5932 dnl = Module specific options
5934 dnl ========================================================
5935 MOZ_ARG_HEADER(Individual module options)
5937 dnl ========================================================
5938 dnl = Enable Lea malloc in xpcom. OFF by default.
5939 dnl ========================================================
5940 MOZ_ARG_ENABLE_BOOL(xpcom-lea,
5941 [ --enable-xpcom-lea Use Lea malloc in xpcom ],
5944 if test -n "$XPCOM_USE_LEA"; then
5945 AC_DEFINE(XPCOM_USE_LEA)
5948 dnl ========================================================
5949 dnl = Enable places (new history/bookmarks)
5950 dnl ========================================================
5951 MOZ_ARG_ENABLE_BOOL(places,
5952 [ --enable-places Enable 'places' bookmark/history implementation],
5955 if test -n "$MOZ_PLACES"; then
5956 AC_DEFINE(MOZ_PLACES)
5957 if test -z "$MOZ_MAIL_NEWS"; then
5962 if test "$MOZ_BUILD_APP" = "browser"; then
5963 AC_MSG_ERROR([Cannot build Firefox with --disable-places.])
5967 dnl ========================================================
5968 dnl = Disable feed handling components
5969 dnl ========================================================
5970 MOZ_ARG_DISABLE_BOOL(feeds,
5971 [ --disable-feeds Disable feed handling and processing components],
5974 if test -n "$MOZ_FEEDS"; then
5975 AC_DEFINE(MOZ_FEEDS)
5977 if test "$MOZ_BUILD_APP" = "browser"; then
5978 AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
5982 dnl ========================================================
5983 dnl = Enable mozStorage
5984 dnl ========================================================
5985 dnl Implicitly enabled by default if building calendar or places
5986 MOZ_ARG_ENABLE_BOOL(storage,
5987 [ --enable-storage Enable mozStorage module and related components],
5990 if test -n "$MOZ_STORAGE"; then
5991 AC_DEFINE(MOZ_STORAGE)
5994 dnl ========================================================
5995 dnl Check for sqlite
5996 dnl ========================================================
5999 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6000 [ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
6001 MOZ_NATIVE_SQLITE=1,
6002 MOZ_NATIVE_SQLITE= )
6004 if test -z "$MOZ_NATIVE_SQLITE"
6007 SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,sqlite3,$(DIST)/lib)'
6009 PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6012 AC_SUBST(MOZ_NATIVE_SQLITE)
6014 dnl ========================================================
6015 dnl = Enable help viewer (off by default)
6016 dnl ========================================================
6017 MOZ_ARG_ENABLE_BOOL(help-viewer,
6018 [ --enable-help-viewer Enable help viewer],
6021 if test -n "$MOZ_HELP_VIEWER"; then
6022 AC_DEFINE(MOZ_HELP_VIEWER)
6024 AC_SUBST(MOZ_HELP_VIEWER)
6025 if test "$MOZ_BUILD_APP" = "browser" -a -n "$MOZ_HELP_VIEWER"; then
6026 AC_MSG_ERROR([Cannot build Firefox with --enable-help-viewer.])
6029 dnl ========================================================
6030 dnl = Enable safe browsing (anti-phishing)
6031 dnl ========================================================
6032 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6033 [ --enable-safe-browsing Enable safe browsing (anti-phishing) implementation],
6034 MOZ_SAFE_BROWSING=1,
6035 MOZ_SAFE_BROWSING= )
6036 if test -n "$MOZ_SAFE_BROWSING"; then
6037 AC_DEFINE(MOZ_SAFE_BROWSING)
6039 AC_SUBST(MOZ_SAFE_BROWSING)
6041 dnl ========================================================
6042 dnl = Enable url-classifier
6043 dnl ========================================================
6044 dnl Implicitly enabled by default if building with safe-browsing
6045 if test -n "$MOZ_SAFE_BROWSING"; then
6046 MOZ_URL_CLASSIFIER=1
6048 MOZ_ARG_ENABLE_BOOL(url-classifier,
6049 [ --enable-url-classifier Enable url classifier module],
6050 MOZ_URL_CLASSIFIER=1,
6051 MOZ_URL_CLASSIFIER= )
6052 if test -n "$MOZ_URL_CLASSIFIER"; then
6053 AC_DEFINE(MOZ_URL_CLASSIFIER)
6055 AC_SUBST(MOZ_URL_CLASSIFIER)
6057 dnl ========================================================
6058 dnl = Disable zipwriter
6059 dnl ========================================================
6060 MOZ_ARG_DISABLE_BOOL(zipwriter,
6061 [ --disable-zipwriter Disable zipwriter component],
6064 AC_SUBST(MOZ_ZIPWRITER)
6066 dnl ========================================================
6067 dnl = Enable Ultrasparc specific optimizations for JS
6068 dnl ========================================================
6069 MOZ_ARG_ENABLE_BOOL(js-ultrasparc,
6070 [ --enable-js-ultrasparc Use UltraSPARC optimizations in JS],
6071 JS_ULTRASPARC_OPTS=1,
6072 JS_ULTRASPARC_OPTS= )
6074 dnl only enable option for ultrasparcs
6075 if test `echo "$target_os" | grep -c \^solaris 2>/dev/null` = 0 -o \
6076 "$OS_TEST" != "sun4u"; then
6079 AC_SUBST(JS_ULTRASPARC_OPTS)
6081 dnl ========================================================
6082 dnl = Hildon and OSSO checks
6083 dnl ========================================================
6084 PKG_CHECK_MODULES(LIBHILDONMIME,libhildonmime,
6085 MOZ_PLATFORM_HILDON=1,
6086 MOZ_PLATFORM_HILDON=)
6087 if test $MOZ_PLATFORM_HILDON; then
6088 AC_DEFINE(MOZ_PLATFORM_HILDON)
6090 AC_SUBST(LIBHILDONMIME_CFLAGS)
6091 AC_SUBST(LIBHILDONMIME_LIBS)
6093 PKG_CHECK_MODULES(LIBOSSO,libosso,
6097 if test $NS_OSSO; then
6098 if test -z "$MOZ_ENABLE_DBUS"; then
6099 AC_MSG_ERROR([DBus is required when building for OSSO])
6102 dnl XXX this should go somewhere else; it's not just for OSSO
6103 AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
6105 AC_SUBST(LIBOSSO_CFLAGS)
6106 AC_SUBST(LIBOSSO_LIBS)
6108 PKG_CHECK_MODULES(MOZ_LOCATION, [liblocation gpsbt],
6109 NS_MAEMO_LOCATION=1,
6112 if test $NS_MAEMO_LOCATION; then
6113 AC_DEFINE(NS_MAEMO_LOCATION)
6116 AC_SUBST(MOZ_LOCATION_CFLAGS)
6117 AC_SUBST(MOZ_LOCATION_LIBS)
6119 dnl ========================================================
6121 dnl = Feature options that require extra sources to be pulled
6123 dnl ========================================================
6124 dnl MOZ_ARG_HEADER(Features that require extra sources)
6126 dnl ========================================================
6128 dnl = Debugging Options
6130 dnl ========================================================
6131 MOZ_ARG_HEADER(Debugging and Optimizations)
6133 dnl ========================================================
6134 dnl = Disable building with debug info.
6135 dnl = Debugging is OFF by default
6136 dnl ========================================================
6137 if test -z "$MOZ_DEBUG_FLAGS"
6141 if test "$GNU_CC"; then
6142 GCC_VERSION=`$CC -v 2>&1 | awk '/version/ { print $3 }'`
6143 case "$GCC_VERSION" in
6148 MOZ_DEBUG_FLAGS="-g"
6152 MOZ_DEBUG_FLAGS="-g"
6156 MOZ_DEBUG_FLAGS="-g"
6161 MOZ_ARG_ENABLE_STRING(debug,
6162 [ --enable-debug[=DBG] Enable building with developer debug info
6163 (Using compiler flags DBG)],
6164 [ if test "$enableval" != "no"; then
6166 if test -n "$enableval" && test "$enableval" != "yes"; then
6167 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6174 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG"
6175 case "${target_os}" in
6177 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${USER}"
6179 msvc*|mks*|cygwin*|mingw*|os2*|wince*)
6180 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
6183 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`$WHOAMI`"
6186 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DTRACING"
6188 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
6190 if test -n "$MOZ_DEBUG"; then
6191 AC_MSG_CHECKING([for valid debug flags])
6192 _SAVE_CFLAGS=$CFLAGS
6193 CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
6194 AC_TRY_COMPILE([#include <stdio.h>],
6195 [printf("Hello World\n");],
6198 AC_MSG_RESULT([$_results])
6199 if test "$_results" = "no"; then
6200 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
6202 CFLAGS=$_SAVE_CFLAGS
6205 dnl ========================================================
6206 dnl = Enable code optimization. ON by default.
6207 dnl ========================================================
6208 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6209 MOZ_OPTIMIZE_FLAGS="-O"
6212 MOZ_ARG_ENABLE_STRING(optimize,
6213 [ --disable-optimize Disable compiler optimization
6214 --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6215 [ if test "$enableval" != "no"; then
6217 if test -n "$enableval" && test "$enableval" != "yes"; then
6218 MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6223 fi ], MOZ_OPTIMIZE=1)
6225 if test "$COMPILE_ENVIRONMENT"; then
6226 if test -n "$MOZ_OPTIMIZE"; then
6227 AC_MSG_CHECKING([for valid optimization flags])
6228 _SAVE_CFLAGS=$CFLAGS
6229 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6230 AC_TRY_COMPILE([#include <stdio.h>],
6231 [printf("Hello World\n");],
6234 AC_MSG_RESULT([$_results])
6235 if test "$_results" = "no"; then
6236 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6238 CFLAGS=$_SAVE_CFLAGS
6240 fi # COMPILE_ENVIRONMENT
6242 AC_SUBST(MOZ_OPTIMIZE)
6243 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6244 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6245 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6247 dnl ========================================================
6248 dnl = Enable/disable debug for specific modules only
6249 dnl = module names beginning with ^ will be disabled
6250 dnl ========================================================
6251 MOZ_ARG_ENABLE_STRING(debug-modules,
6252 [ --enable-debug-modules Enable/disable debug info for specific modules],
6253 [ MOZ_DEBUG_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6255 dnl ========================================================
6256 dnl = Enable/disable generation of debugger info for specific modules only
6257 dnl = the special module name ALL_MODULES can be used to denote all modules
6258 dnl = module names beginning with ^ will be disabled
6259 dnl ========================================================
6260 MOZ_ARG_ENABLE_STRING(debugger-info-modules,
6261 [ --enable-debugger-info-modules
6262 Enable/disable debugger info for specific modules],
6263 [ for i in `echo $enableval | sed 's/,/ /g'`; do
6264 dnl note that the list of module names is reversed as it is copied
6265 dnl this is important, as it will allow config.mk to interpret stuff like
6266 dnl "^ALL_MODULES xpcom" properly
6267 if test "$i" = "no"; then
6270 if test "$i" = "yes"; then
6273 MOZ_DBGRINFO_MODULES="$i $MOZ_DBGRINFO_MODULES";
6276 dnl ========================================================
6277 dnl Enable garbage collector
6278 dnl ========================================================
6279 MOZ_ARG_ENABLE_BOOL(boehm,
6280 [ --enable-boehm Enable the Boehm Garbage Collector],
6283 if test -n "$GC_LEAK_DETECTOR"; then
6284 AC_DEFINE(GC_LEAK_DETECTOR)
6287 dnl ========================================================
6288 dnl Disable runtime logging checks
6289 dnl ========================================================
6290 MOZ_ARG_DISABLE_BOOL(logging,
6291 [ --disable-logging Disable logging facilities],
6292 NS_DISABLE_LOGGING=1,
6293 NS_DISABLE_LOGGING= )
6294 if test "$NS_DISABLE_LOGGING"; then
6295 AC_DEFINE(NS_DISABLE_LOGGING)
6297 AC_DEFINE(MOZ_LOGGING)
6300 dnl ========================================================
6301 dnl = dnl This will enable logging of addref, release, ctor, dtor.
6302 dnl ========================================================
6303 _ENABLE_LOGREFCNT=42
6304 MOZ_ARG_ENABLE_BOOL(logrefcnt,
6305 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
6306 _ENABLE_LOGREFCNT=1,
6307 _ENABLE_LOGREFCNT= )
6308 if test "$_ENABLE_LOGREFCNT" = "1"; then
6309 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
6310 elif test -z "$_ENABLE_LOGREFCNT"; then
6311 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
6314 dnl ========================================================
6315 dnl = Enable trace malloc
6316 dnl ========================================================
6317 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
6318 MOZ_ARG_ENABLE_BOOL(trace-malloc,
6319 [ --enable-trace-malloc Enable malloc tracing],
6322 if test "$NS_TRACE_MALLOC"; then
6323 # Please, Mr. Linker Man, don't take away our symbol names
6324 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6326 AC_DEFINE(NS_TRACE_MALLOC)
6328 AC_SUBST(NS_TRACE_MALLOC)
6330 dnl ========================================================
6331 dnl = Enable jemalloc
6332 dnl ========================================================
6333 MOZ_ARG_ENABLE_BOOL(jemalloc,
6334 [ --enable-jemalloc Replace memory allocator with jemalloc],
6338 if test "$NS_TRACE_MALLOC"; then
6342 if test "$MOZ_MEMORY"; then
6344 dnl Don't try to run compiler tests on Windows
6345 if test "$OS_ARCH" = "WINNT"; then
6346 if test -z "$HAVE_64BIT_OS"; then
6347 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6349 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6352 AC_CHECK_SIZEOF([int *], [4])
6353 case "${ac_cv_sizeof_int_p}" in
6355 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6358 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6361 AC_MSG_ERROR([Unexpected pointer size])
6366 AC_DEFINE(MOZ_MEMORY)
6367 if test "x$MOZ_DEBUG" = "x1"; then
6368 AC_DEFINE(MOZ_MEMORY_DEBUG)
6370 dnl The generic feature tests that determine how to compute ncpus are long and
6371 dnl complicated. Therefore, simply define special cpp variables for the
6372 dnl platforms we have special knowledge of.
6373 case "${target_os}" in
6375 AC_DEFINE(MOZ_MEMORY_DARWIN)
6378 AC_DEFINE(MOZ_MEMORY_BSD)
6381 AC_DEFINE(MOZ_MEMORY_LINUX)
6384 AC_DEFINE(MOZ_MEMORY_BSD)
6387 AC_DEFINE(MOZ_MEMORY_SOLARIS)
6389 msvc*|mks*|cygwin*|mingw*)
6390 AC_DEFINE(MOZ_MEMORY_WINDOWS)
6391 dnl XXX: should test for vc8sp1 here, otherwise patching the crt src
6392 dnl will fail miserably
6393 if test "$_CC_SUITE" -lt "8"; then
6394 AC_MSG_ERROR([Building jemalloc requires Visual C++ 2005 or better])
6396 if test -z "$WIN32_CRT_SRC_DIR" -a -z "$WIN32_CUSTOM_CRT_DIR"; then
6397 if test -z "$VCINSTALLDIR" -o ! -d "$VCINSTALLDIR"; then
6398 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.])
6400 WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src"
6403 if test -z "$WIN32_CRT_SRC_DIR"; then
6405 WIN32_CUSTOM_CRT_DIR=`cd "$WIN32_CUSTOM_CRT_DIR" && pwd`
6406 _WIN_UNIX_CRT_PATH="$WIN32_CUSTOM_CRT_DIR"
6408 # CRT source directory
6409 WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd`
6410 _CRT_BASE_DIR=`basename "$WIN32_CRT_SRC_DIR"`
6411 _WIN_UNIX_CRT_PATH="$_objdir/memory/jemalloc/$_CRT_BASE_DIR/build/intel"
6413 dnl need win32 paths in LIB, hence this python abuse. extra brackets
6415 _WIN_CRT_PATH=[`$PYTHON -c 'import sys, os.path; print os.path.normpath(sys.argv[1])' "$_WIN_UNIX_CRT_PATH"`]
6416 MOZ_LIB="$_WIN_CRT_PATH;$LIB"
6417 dnl Needs to be in PATH too, since our tools will wind up linked against it.
6418 dnl This needs to be unix style.
6419 MOZ_PATH="$PATH:$_WIN_UNIX_CRT_PATH"
6420 dnl Statically link the C++ stdlib. We only use this for Breakpad anyway.
6421 AC_DEFINE(_STATIC_CPPLIB)
6422 dnl Don't generate a manifest, since we're linking to a custom CRT.
6423 LDFLAGS="$LDFLAGS -MANIFEST:NO"
6424 dnl Also pass this to NSPR/NSS
6425 DLLFLAGS="$DLLFLAGS -MANIFEST:NO"
6429 AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
6433 AC_ARG_WITH([valgrind],
6434 [ --with-valgrind Enable valgrind integration hooks],
6435 [enable_valgrind="yes"], [enable_valgrind="no"])
6436 AC_CHECK_HEADER([valgrind/valgrind.h], [], [enable_valgrind="no"])
6437 if test "x$enable_valgrind" = "xyes" ; then
6438 AC_DEFINE(MOZ_VALGRIND)
6441 AC_SUBST(MOZ_MEMORY)
6442 AC_SUBST(WIN32_CRT_SRC_DIR)
6443 AC_SUBST(WIN32_CUSTOM_CRT_DIR)
6446 dnl Need to set this for make because NSS doesn't have configure
6449 dnl ========================================================
6450 dnl = Use malloc wrapper lib
6451 dnl ========================================================
6452 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
6453 [ --enable-wrap-malloc Wrap malloc calls (gnu linker only)],
6457 if test -n "$_WRAP_MALLOC"; then
6458 if test "$GNU_CC"; then
6459 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"
6460 MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) -o $@'
6464 dnl ========================================================
6465 dnl = Location of malloc wrapper lib
6466 dnl ========================================================
6467 MOZ_ARG_WITH_STRING(wrap-malloc,
6468 [ --with-wrap-malloc=DIR Location of malloc wrapper library],
6469 WRAP_MALLOC_LIB=$withval)
6471 dnl ========================================================
6472 dnl = Use Electric Fence
6473 dnl ========================================================
6474 MOZ_ARG_ENABLE_BOOL(efence,
6475 [ --enable-efence Link with Electric Fence],
6478 if test -n "$_ENABLE_EFENCE"; then
6479 AC_CHECK_LIB(efence,malloc)
6482 dnl ========================================================
6484 dnl ========================================================
6485 MOZ_ARG_ENABLE_BOOL(jprof,
6486 [ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof)],
6489 if test -n "$MOZ_JPROF"; then
6490 AC_DEFINE(MOZ_JPROF)
6493 dnl ========================================================
6495 dnl ========================================================
6496 MOZ_ARG_ENABLE_BOOL(shark,
6497 [ --enable-shark Enable shark remote profiling (needs CHUD framework)],
6500 if test -n "$MOZ_SHARK"; then
6501 AC_DEFINE(MOZ_SHARK)
6504 dnl ========================================================
6506 dnl ========================================================
6507 MOZ_ARG_ENABLE_BOOL(callgrind,
6508 [ --enable-callgrind Enable callgrind profiling],
6511 if test -n "$MOZ_CALLGRIND"; then
6512 AC_DEFINE(MOZ_CALLGRIND)
6515 dnl ========================================================
6517 dnl ========================================================
6518 MOZ_ARG_ENABLE_BOOL(vtune,
6519 [ --enable-vtune Enable vtune profiling],
6522 if test -n "$MOZ_VTUNE"; then
6523 AC_DEFINE(MOZ_VTUNE)
6526 dnl ========================================================
6527 dnl = Enable static checking using gcc-dehydra
6528 dnl ========================================================
6530 MOZ_ARG_WITH_STRING(static-checking,
6531 [ --with-static-checking=path/to/gcc_dehydra.so
6532 Enable static checking of code using GCC-dehydra],
6533 DEHYDRA_PATH=$withval,
6536 if test -n "$DEHYDRA_PATH"; then
6537 if ! test -f "$DEHYDRA_PATH"; then
6538 AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
6540 AC_DEFINE(NS_STATIC_CHECKING)
6542 AC_SUBST(DEHYDRA_PATH)
6544 dnl ========================================================
6545 dnl = Enable stripping of libs & executables
6546 dnl ========================================================
6547 MOZ_ARG_ENABLE_BOOL(strip,
6548 [ --enable-strip Enable stripping of libs & executables ],
6552 dnl ========================================================
6553 dnl = Enable stripping of libs & executables when packaging
6554 dnl ========================================================
6555 MOZ_ARG_ENABLE_BOOL(install-strip,
6556 [ --enable-install-strip Enable stripping of libs & executables when packaging ],
6560 dnl ========================================================
6561 dnl = --enable-elf-dynstr-gc
6562 dnl ========================================================
6563 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
6564 [ --enable-elf-dynstr-gc Enable elf dynstr garbage collector (opt builds only)],
6565 USE_ELF_DYNSTR_GC=1,
6566 USE_ELF_DYNSTR_GC= )
6568 dnl ========================================================
6569 dnl = --enable-old-abi-compat-wrappers
6570 dnl ========================================================
6571 dnl on x86 linux, the current builds of some popular plugins (notably
6572 dnl flashplayer and real) expect a few builtin symbols from libgcc
6573 dnl which were available in some older versions of gcc. However,
6574 dnl they're _NOT_ available in newer versions of gcc (eg 3.1), so if
6575 dnl we want those plugin to work with a gcc-3.1 built binary, we need
6576 dnl to provide these symbols. MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS defaults
6577 dnl to true on x86 linux, and false everywhere else.
6580 MOZ_ARG_ENABLE_BOOL(old-abi-compat-wrappers,
6581 [ --enable-old-abi-compat-wrappers
6582 Support old GCC ABI symbols to ease the pain
6583 of the linux compiler change],
6584 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1,
6585 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS= )
6586 if test "$COMPILE_ENVIRONMENT"; then
6587 if test "$MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS"; then
6590 AC_CHECK_FUNCS(__builtin_vec_new __builtin_vec_delete __builtin_new __builtin_delete __pure_virtual)
6592 AC_DEFINE(MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS)
6594 fi # COMPILE_ENVIRONMENT
6596 dnl ========================================================
6598 dnl = Profiling and Instrumenting
6600 dnl ========================================================
6601 MOZ_ARG_HEADER(Profiling and Instrumenting)
6603 dnl ========================================================
6604 dnl = Enable timeline service, which provides lightweight
6605 dnl = instrumentation of mozilla for performance measurement.
6606 dnl = Timeline is off by default.
6607 dnl ========================================================
6608 MOZ_ARG_ENABLE_BOOL(timeline,
6609 [ --enable-timeline Enable timeline services ],
6612 if test -n "$MOZ_TIMELINE"; then
6613 AC_DEFINE(MOZ_TIMELINE)
6616 dnl ========================================================
6617 dnl Turn on reflow counting
6618 dnl ========================================================
6619 MOZ_ARG_ENABLE_BOOL(reflow-perf,
6620 [ --enable-reflow-perf Enable reflow performance tracing],
6623 if test -n "$MOZ_REFLOW_PREF"; then
6624 AC_DEFINE(MOZ_REFLOW_PREF)
6626 AC_SUBST(MOZ_REFLOW_PERF)
6628 dnl ========================================================
6629 dnl Enable performance metrics.
6630 dnl ========================================================
6631 MOZ_ARG_ENABLE_BOOL(perf-metrics,
6632 [ --enable-perf-metrics Enable performance metrics],
6635 if test -n "$MOZ_PERF_METRICS"; then
6636 AC_DEFINE(MOZ_PERF_METRICS)
6639 dnl ========================================================
6640 dnl Enable code size metrics.
6641 dnl ========================================================
6642 MOZ_ARG_ENABLE_BOOL(codesighs,
6643 [ --enable-codesighs Enable code size analysis tools],
6644 _ENABLE_CODESIGHS=1,
6645 _ENABLE_CODESIGHS= )
6646 if test -n "$_ENABLE_CODESIGHS"; then
6647 if test -d $srcdir/tools/codesighs; then
6650 AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
6654 dnl ========================================================
6655 dnl = Add support for Eazel profiler
6656 dnl ========================================================
6657 MOZ_ARG_ENABLE_BOOL(eazel-profiler-support,
6658 [ --enable-eazel-profiler-support
6659 Enable Corel/Eazel profiler support],
6660 ENABLE_EAZEL_PROFILER=1,
6661 ENABLE_EAZEL_PROFILER= )
6662 if test -n "$ENABLE_EAZEL_PROFILER"; then
6663 AC_DEFINE(ENABLE_EAZEL_PROFILER)
6665 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6666 EAZEL_PROFILER_CFLAGS="-g -O -gdwarf-2 -finstrument-functions -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
6667 EAZEL_PROFILER_LIBS="-lprofiler -lpthread"
6670 MOZ_ARG_ENABLE_STRING(profile-modules,
6671 [ --enable-profile-modules
6672 Enable/disable profiling for specific modules],
6673 [ MOZ_PROFILE_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6675 MOZ_ARG_ENABLE_BOOL(insure,
6676 [ --enable-insure Enable insure++ instrumentation (linux only)],
6679 if test -n "$_ENABLE_INSURE"; then
6683 MOZ_INSURE_EXCLUDE_DIRS="config"
6686 MOZ_ARG_WITH_STRING(insure-dirs,
6687 [ --with-insure-dirs=DIRS
6688 Dirs to instrument with insure ],
6689 MOZ_INSURE_DIRS=$withval )
6691 MOZ_ARG_WITH_STRING(insure-exclude-dirs,
6692 [ --with-insure-exclude-dirs=DIRS
6693 Dirs to not instrument with insure ],
6694 MOZ_INSURE_EXCLUDE_DIRS="config $withval" )
6696 dnl ========================================================
6697 dnl = Support for Quantify (Windows)
6698 dnl ========================================================
6699 MOZ_ARG_ENABLE_BOOL(quantify,
6700 [ --enable-quantify Enable Quantify support (Windows only) ],
6704 dnl ========================================================
6705 dnl = Support for demangling undefined symbols
6706 dnl ========================================================
6707 if test -z "$SKIP_LIBRARY_CHECKS"; then
6710 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
6714 # Demangle only for debug or trace-malloc builds
6715 MOZ_DEMANGLE_SYMBOLS=
6716 if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
6717 MOZ_DEMANGLE_SYMBOLS=1
6718 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
6720 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
6722 dnl ========================================================
6723 dnl = Support for gcc stack unwinding (from gcc 3.3)
6724 dnl ========================================================
6725 if test "$HAVE_GCC3_ABI" && test -z "$SKIP_LIBRARY_CHECKS"; then
6726 AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
6729 dnl ========================================================
6733 dnl ========================================================
6734 MOZ_ARG_HEADER(Misc. Options)
6736 dnl ========================================================
6737 dnl update xterm title
6738 dnl ========================================================
6739 MOZ_ARG_ENABLE_BOOL(xterm-updates,
6740 [ --enable-xterm-updates Update XTERM titles with current command.],
6744 dnl =========================================================
6746 dnl =========================================================
6747 MOZ_ARG_ENABLE_STRING([chrome-format],
6748 [ --enable-chrome-format=jar|flat|both|symlink
6749 Select FORMAT of chrome files (default=jar)],
6750 MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
6752 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
6753 MOZ_CHROME_FILE_FORMAT=jar
6756 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
6757 test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
6758 test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
6759 test "$MOZ_CHROME_FILE_FORMAT" != "both"; then
6760 AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, or symlink])
6763 dnl ========================================================
6764 dnl = Define default location for MOZILLA_FIVE_HOME
6765 dnl ========================================================
6766 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
6767 [ --with-default-mozilla-five-home
6768 Set the default value for MOZILLA_FIVE_HOME],
6769 [ val=`echo $withval`
6770 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
6772 dnl ========================================================
6773 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
6774 dnl ========================================================
6775 MOZ_ARG_WITH_STRING(user-appdir,
6776 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
6777 [ val=`echo $withval`
6778 if echo "$val" | grep "\/" >/dev/null; then
6779 AC_MSG_ERROR("Homedir must be single relative path.")
6784 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
6786 dnl ========================================================
6787 dnl = Doxygen configuration
6788 dnl ========================================================
6789 dnl Use commas to specify multiple dirs to this arg
6790 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
6791 MOZ_ARG_WITH_STRING(doc-input-dirs,
6792 [ --with-doc-input-dirs=DIRS
6793 Header/idl dirs to create docs from],
6794 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6795 AC_SUBST(MOZ_DOC_INPUT_DIRS)
6797 dnl Use commas to specify multiple dirs to this arg
6798 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
6799 MOZ_ARG_WITH_STRING(doc-include-dirs,
6800 [ --with-doc-include-dirs=DIRS
6801 Include dirs to preprocess doc headers],
6802 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6803 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
6805 MOZ_DOC_OUTPUT_DIR='./dist/docs'
6806 MOZ_ARG_WITH_STRING(doc-output-dir,
6807 [ --with-doc-output-dir=DIR
6808 Dir to generate docs into],
6809 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
6810 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
6812 if test -z "$SKIP_COMPILER_CHECKS"; then
6813 dnl ========================================================
6815 dnl = Compiler Options
6817 dnl ========================================================
6818 MOZ_ARG_HEADER(Compiler Options)
6820 dnl ========================================================
6821 dnl Check for gcc -pipe support
6822 dnl ========================================================
6823 AC_MSG_CHECKING([for gcc -pipe support])
6824 if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
6825 echo '#include <stdio.h>' > dummy-hello.c
6826 echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
6827 ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
6828 cat dummy-hello.s | ${AS_BIN} -o dummy-hello.S - 2>&5
6829 if test $? = 0; then
6834 if test "$_res_as_stdin" = "yes"; then
6835 _SAVE_CFLAGS=$CFLAGS
6836 CFLAGS="$CFLAGS -pipe"
6837 AC_TRY_COMPILE( [ #include <stdio.h> ],
6838 [printf("Hello World\n");],
6839 [_res_gcc_pipe="yes"],
6840 [_res_gcc_pipe="no"] )
6841 CFLAGS=$_SAVE_CFLAGS
6843 if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then
6845 CFLAGS="$CFLAGS -pipe"
6846 CXXFLAGS="$CXXFLAGS -pipe"
6850 rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
6851 AC_MSG_RESULT([$_res])
6856 dnl pass -Wno-long-long to the compiler
6857 MOZ_ARG_ENABLE_BOOL(long-long-warning,
6858 [ --enable-long-long-warning
6859 Warn about use of non-ANSI long long type],
6860 _IGNORE_LONG_LONG_WARNINGS=,
6861 _IGNORE_LONG_LONG_WARNINGS=1)
6863 if test "$_IGNORE_LONG_LONG_WARNINGS"; then
6864 _SAVE_CFLAGS="$CFLAGS"
6865 CFLAGS="$CFLAGS ${_COMPILER_PREFIX}-Wno-long-long"
6866 AC_MSG_CHECKING([whether compiler supports -Wno-long-long])
6867 AC_TRY_COMPILE([], [return(0);],
6868 [ _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6869 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6870 result="yes" ], result="no")
6871 AC_MSG_RESULT([$result])
6872 CFLAGS="$_SAVE_CFLAGS"
6875 dnl ========================================================
6876 dnl Profile guided optimization
6877 dnl ========================================================
6878 dnl Test for profiling options
6879 dnl Under gcc 3.3, use -fprofile-arcs/-fbranch-probabilities
6880 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
6882 dnl Provide a switch to disable PGO even when called via profiledbuild.
6883 MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
6884 [ --disable-profile-guided-optimization
6885 Don't build with PGO even if called via make profiledbuild],
6886 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
6887 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
6889 AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
6891 _SAVE_CFLAGS="$CFLAGS"
6892 CFLAGS="$CFLAGS -fprofile-generate"
6894 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
6895 AC_TRY_COMPILE([], [return 0;],
6896 [ PROFILE_GEN_CFLAGS="-fprofile-generate"
6897 result="yes" ], result="no")
6898 AC_MSG_RESULT([$result])
6900 if test $result = "yes"; then
6901 PROFILE_GEN_LDFLAGS="-fprofile-generate"
6902 PROFILE_USE_CFLAGS="-fprofile-use"
6903 PROFILE_USE_LDFLAGS="-fprofile-use"
6905 CFLAGS="$_SAVE_CFLAGS -fprofile-arcs"
6906 AC_MSG_CHECKING([whether C compiler supports -fprofile-arcs])
6907 AC_TRY_COMPILE([], [return 0;],
6908 [ PROFILE_GEN_CFLAGS="-fprofile-arcs"
6909 result="yes" ], result="no")
6910 AC_MSG_RESULT([$result])
6911 if test $result = "yes"; then
6912 PROFILE_USE_CFLAGS="-fbranch-probabilities"
6914 # don't really care, this is an old GCC
6915 PROFILE_GEN_LDFLAGS=
6916 PROFILE_USE_LDFLAGS=
6919 CFLAGS="$_SAVE_CFLAGS"
6921 if test -n "$INTEL_CC"; then
6922 PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
6923 PROFILE_GEN_LDFLAGS=
6924 PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
6925 PROFILE_USE_LDFLAGS=
6928 dnl Sun Studio on Solaris
6929 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
6930 PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
6931 PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
6932 if test "$CPU_ARCH" != "sparc"; then
6933 PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
6934 PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
6936 PROFILE_USE_CFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
6937 PROFILE_USE_LDFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
6941 AC_SUBST(PROFILE_GEN_CFLAGS)
6942 AC_SUBST(PROFILE_GEN_LDFLAGS)
6943 AC_SUBST(PROFILE_USE_CFLAGS)
6944 AC_SUBST(PROFILE_USE_LDFLAGS)
6948 dnl ========================================================
6949 dnl Test for -pedantic bustage
6950 dnl ========================================================
6951 MOZ_ARG_DISABLE_BOOL(pedantic,
6952 [ --disable-pedantic Issue all warnings demanded by strict ANSI C ],
6954 if test "$_PEDANTIC"; then
6955 _SAVE_CXXFLAGS=$CXXFLAGS
6956 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
6957 AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
6958 AC_TRY_COMPILE([$configure_static_assert_macros],
6959 [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
6960 result="no", result="yes" )
6961 AC_MSG_RESULT([$result])
6962 CXXFLAGS="$_SAVE_CXXFLAGS"
6966 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic"
6967 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
6970 AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic. Reconfigure using --disable-pedantic. ])
6975 dnl ========================================================
6976 dnl Test for correct temporary object destruction order
6977 dnl ========================================================
6978 dnl We want to make sure the compiler follows the C++ spec here as
6979 dnl xpcom and the string classes depend on it (bug 235381).
6980 AC_MSG_CHECKING([for correct temporary object destruction order])
6981 AC_TRY_RUN([ class A {
6982 public: A(int& x) : mValue(x) {}
6984 operator char**() { return 0; }
6985 private: int& mValue;
6987 void func(char **arg) {}
6998 result="yes", result="no", result="maybe")
6999 AC_MSG_RESULT([$result])
7001 if test "$result" = "no"; then
7002 AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
7005 dnl ========================================================
7006 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
7007 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
7008 dnl raw pointers in nsCOMPtr.h. (VC++ has the same bug.)
7009 dnl ========================================================
7010 _SAVE_CXXFLAGS=$CXXFLAGS
7011 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
7012 AC_CACHE_CHECK(for correct overload resolution with const and templates,
7013 ac_nscap_nonconst_opeq_bug,
7022 template <class T, class U>
7023 int operator==(const Pointer<T>& rhs, U* lhs)
7025 return rhs.myPtr == lhs;
7028 template <class T, class U>
7029 int operator==(const Pointer<T>& rhs, const U* lhs)
7031 return rhs.myPtr == lhs;
7039 ac_nscap_nonconst_opeq_bug="no",
7040 ac_nscap_nonconst_opeq_bug="yes")])
7041 CXXFLAGS="$_SAVE_CXXFLAGS"
7043 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
7044 AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
7046 fi # SKIP_COMPILER_CHECKS
7048 dnl ========================================================
7050 dnl Should be smarter and check that the compiler does indeed have rtti
7051 dnl ========================================================
7052 MOZ_ARG_ENABLE_BOOL(cpp-rtti,
7053 [ --enable-cpp-rtti Enable C++ RTTI ],
7054 [ _MOZ_USE_RTTI=1 ],
7057 if test "$_MOZ_USE_RTTI"; then
7058 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
7060 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
7063 AC_SUBST(_MOZ_RTTI_FLAGS_ON)
7065 dnl ========================================================
7066 dnl C++ exceptions (g++/egcs only - for now)
7067 dnl Should be smarter and check that the compiler does indeed have exceptions
7068 dnl ========================================================
7069 MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
7070 [ --enable-cpp-exceptions Enable C++ exceptions ],
7071 [ _MOZ_CPP_EXCEPTIONS=1 ],
7072 [ _MOZ_CPP_EXCEPTIONS= ])
7074 if test "$_MOZ_CPP_EXCEPTIONS"; then
7075 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_ON
7077 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_OFF
7080 # Irix & OSF native compilers do not like exception declarations
7081 # when exceptions are disabled
7082 if test -n "$MIPSPRO_CXX" -o -n "$COMPAQ_CXX" -o -n "$VACPP"; then
7083 AC_DEFINE(CPP_THROW_NEW, [])
7085 AC_DEFINE(CPP_THROW_NEW, [throw()])
7089 dnl ========================================================
7091 dnl = Build depencency options
7093 dnl ========================================================
7094 MOZ_ARG_HEADER(Build dependencies)
7096 dnl ========================================================
7097 dnl = Do not auto generate dependency info
7098 dnl ========================================================
7100 MOZ_ARG_DISABLE_BOOL(auto-deps,
7101 [ --disable-auto-deps Do not automatically generate dependency info],
7105 if test -n "$MOZ_AUTO_DEPS"; then
7106 dnl ========================================================
7107 dnl = Use mkdepend instead of $CC -MD for dependency generation
7108 dnl ========================================================
7110 MOZ_ARG_DISABLE_BOOL(md,
7111 [ --disable-md Do not use compiler-based dependencies ],
7114 [dnl Default is to turn on -MD if using GNU-compatible compilers
7115 if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
7118 dnl Default is to use -xM if using Sun Studio on Solaris
7119 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
7122 if test "$_cpp_md_flag"; then
7124 if test "$OS_ARCH" = "OpenVMS"; then
7125 _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(basename $(@F)).pp))'
7127 _DEPEND_CFLAGS='$(filter-out %/.pp,-Wp,-MD,$(MDDEPDIR)/$(basename $(@F)).pp)'
7129 dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7130 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
7135 _USE_CPP_INCLUDE_FLAG=
7136 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7137 _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7141 AC_SUBST(MOZ_AUTO_DEPS)
7142 AC_SUBST(COMPILER_DEPEND)
7146 dnl ========================================================
7148 dnl = Static Build Options
7150 dnl ========================================================
7151 MOZ_ARG_HEADER(Static build options)
7153 MOZ_ARG_ENABLE_BOOL(static,
7154 [ --enable-static Enable building of internal static libs],
7155 BUILD_STATIC_LIBS=1,
7158 dnl Disable libxul in debug builds, but not for xulrunner.
7159 if test -n "$MOZ_DEBUG" -a "$MOZ_BUILD_APP" != "xulrunner"; then
7163 MOZ_ARG_ENABLE_BOOL(libxul,
7164 [ --enable-libxul Enable building of libxul],
7165 MOZ_ENABLE_LIBXUL=1,
7168 if test -n "$MOZ_STATIC_BUILD_UNSUPPORTED" -a -n "$BUILD_STATIC_LIBS"; then
7169 AC_MSG_ERROR([--enable-static is not supported for building $MOZ_APP_NAME. You probably want --enable-libxul.])
7172 if test -n "$MOZ_ENABLE_LIBXUL" -a -n "$BUILD_STATIC_LIBS"; then
7173 AC_MSG_ERROR([--enable-libxul is not compatible with --enable-static])
7176 if test -n "$MOZ_ENABLE_LIBXUL" -a -z "$MOZ_XUL_APP"; then
7177 AC_MSG_ERROR([--enable-libxul is only compatible with toolkit XUL applications.])
7180 if test -n "$MOZ_ENABLE_LIBXUL"; then
7181 XPCOM_LIBS="$LIBXUL_LIBS"
7182 AC_DEFINE(MOZ_ENABLE_LIBXUL)
7184 if test -n "$BUILD_STATIC_LIBS"; then
7185 AC_DEFINE(MOZ_STATIC_BUILD)
7187 XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS"
7190 dnl ========================================================
7191 dnl = Force JS to be a static lib
7192 dnl ========================================================
7193 MOZ_ARG_ENABLE_BOOL(js-static-build,
7194 [ --enable-js-static-build Force js to be a static lib],
7198 AC_SUBST(JS_STATIC_BUILD)
7200 if test -n "$JS_STATIC_BUILD"; then
7201 AC_DEFINE(EXPORT_JS_API)
7203 if test -z "$BUILD_STATIC_LIBS"; then
7204 AC_MSG_ERROR([--enable-js-static-build is only compatible with --enable-static])
7209 dnl ========================================================
7211 dnl = Standalone module options
7213 dnl ========================================================
7214 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7216 dnl Check for GLib and libIDL.
7217 dnl ========================================================
7218 case "$target_os" in
7219 msvc*|mks*|cygwin*|mingw*|wince*)
7220 SKIP_IDL_CHECK="yes"
7227 if test -z "$COMPILE_ENVIRONMENT"; then
7228 SKIP_IDL_CHECK="yes"
7231 dnl = Allow users to disable libIDL checking for standalone modules
7232 MOZ_ARG_WITHOUT_BOOL(libIDL,
7233 [ --without-libIDL Skip check for libIDL (standalone modules only)],
7234 SKIP_IDL_CHECK="yes")
7236 if test "$SKIP_IDL_CHECK" = "no"
7239 if test "$MACOS_SDK_DIR"; then
7240 dnl xpidl, and therefore libIDL, is only needed on the build host.
7241 dnl Don't build it against the SDK, as that causes problems.
7242 _MACSAVE_CFLAGS="$CFLAGS"
7243 _MACSAVE_LIBS="$LIBS"
7244 _MACSAVE_LDFLAGS="$LDFLAGS"
7245 _MACSAVE_NEXT_ROOT="$NEXT_ROOT"
7247 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"`
7248 LIBS=`echo $LIBS|sed -e "s?-L${MACOS_SDK_DIR}/usr/lib[^ ]*??g"`
7249 LDFLAGS=`echo $LDFLAGS|sed -e "s?-Wl,-syslibroot,${MACOS_SDK_DIR}??g"`
7254 if test "$MOZ_ENABLE_GTK2"; then
7255 PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0 glib-2.0 gobject-2.0, _LIBIDL_FOUND=1,_LIBIDL_FOUND=)
7257 dnl if no gtk/libIDL1 or gtk2/libIDL2 combination was found, fall back
7258 dnl to either libIDL1 or libIDL2.
7259 if test -z "$_LIBIDL_FOUND"; then
7260 AM_PATH_LIBIDL($LIBIDL_VERSION,_LIBIDL_FOUND=1)
7261 if test -z "$_LIBIDL_FOUND"; then
7262 PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0,_LIBIDL_FOUND=1)
7266 dnl If we don't have a libIDL config program & not cross-compiling,
7267 dnl look for orbit-config instead.
7269 if test -z "$_LIBIDL_FOUND" && test -z "$CROSS_COMPILE"; then
7270 AC_PATH_PROGS(ORBIT_CONFIG, $ORBIT_CONFIG orbit-config)
7271 if test -n "$ORBIT_CONFIG"; then
7272 AC_MSG_CHECKING([for ORBit libIDL usability])
7273 _ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags`
7274 _ORBIT_LIBS=`${ORBIT_CONFIG} client --libs`
7275 _ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}`
7276 _ORBIT_LIB_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-L/); } }' -- ${_ORBIT_LIBS}`
7277 LIBIDL_CFLAGS="$_ORBIT_INC_PATH"
7278 LIBIDL_LIBS="$_ORBIT_LIB_PATH -lIDL -lglib"
7280 _SAVE_CFLAGS="$CFLAGS"
7282 CFLAGS="$LIBIDL_CFLAGS $CFLAGS"
7283 LIBS="$LIBIDL_LIBS $LIBS"
7286 #include <libIDL/IDL.h>
7289 s=strdup(IDL_get_libver_string());
7302 AC_MSG_RESULT($result)
7303 CFLAGS="$_SAVE_CFLAGS"
7307 if test -z "$_LIBIDL_FOUND"; then
7308 AC_MSG_ERROR([libIDL not found.
7309 libIDL $LIBIDL_VERSION or higher is required.])
7311 if test "$MACOS_SDK_DIR"; then
7312 CFLAGS="$_MACSAVE_CFLAGS"
7313 LIBS="$_MACSAVE_LIBS"
7314 LDFLAGS="$_MACSAVE_LDFLAGS"
7315 if test -n "$_MACSAVE_NEXT_ROOT" ; then
7316 export NEXT_ROOT="$_MACSAVE_NEXT_ROOT"
7321 if test -n "$CROSS_COMPILE"; then
7322 if test -z "$HOST_LIBIDL_CONFIG"; then
7323 HOST_LIBIDL_CONFIG="$LIBIDL_CONFIG"
7325 if test -n "$HOST_LIBIDL_CONFIG" && test "$HOST_LIBIDL_CONFIG" != "no"; then
7326 HOST_LIBIDL_CFLAGS=`${HOST_LIBIDL_CONFIG} --cflags`
7327 HOST_LIBIDL_LIBS=`${HOST_LIBIDL_CONFIG} --libs`
7329 HOST_LIBIDL_CFLAGS="$LIBIDL_CFLAGS"
7330 HOST_LIBIDL_LIBS="$LIBIDL_LIBS"
7334 if test -z "$SKIP_PATH_CHECKS"; then
7335 if test -z "${GLIB_CFLAGS}" || test -z "${GLIB_LIBS}" ; then
7336 if test "$MOZ_ENABLE_GTK2" || test "$USE_ELF_DYNSTR_GC" ; then
7337 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
7339 AM_PATH_GLIB(${GLIB_VERSION})
7344 if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then
7345 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
7348 AC_SUBST(LIBIDL_CFLAGS)
7349 AC_SUBST(LIBIDL_LIBS)
7350 AC_SUBST(STATIC_LIBIDL)
7351 AC_SUBST(GLIB_CFLAGS)
7353 AC_SUBST(GLIB_GMODULE_LIBS)
7354 AC_SUBST(HOST_LIBIDL_CONFIG)
7355 AC_SUBST(HOST_LIBIDL_CFLAGS)
7356 AC_SUBST(HOST_LIBIDL_LIBS)
7358 dnl ========================================================
7359 dnl Check for libart
7360 dnl ========================================================
7361 if test "$MOZ_SVG_RENDERER_LIBART"; then
7362 if test ! -f $topsrcdir/other-licenses/libart_lgpl/Makefile.in; then
7363 AC_MSG_ERROR([You must check out the mozilla version of libart. Use
7364 mk_add_options MOZ_CO_MODULE=mozilla/other-licenses/libart_lgpl])
7367 dnl libart's configure hasn't been run yet, but we know what the
7368 dnl answer should be anyway
7369 MOZ_LIBART_CFLAGS='-I${DIST}/include/libart_lgpl'
7370 case "$target_os" in
7371 msvc*|mks*|cygwin*|mingw*|wince*)
7372 MOZ_LIBART_LIBS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)moz_art_lgpl.$(IMPORT_LIB_SUFFIX)'
7375 MOZ_LIBART_LIBS='-lmoz_art -lm'
7378 MOZ_LIBART_LIBS='-lmoz_art_lgpl -lroot -lbe'
7381 MOZ_LIBART_LIBS='-lmoz_art_lgpl -lm'
7387 AC_SUBST(MOZ_LIBART_CFLAGS)
7388 AC_SUBST(MOZ_LIBART_LIBS)
7390 dnl ========================================================
7392 dnl ========================================================
7393 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
7396 MOZ_ARG_ENABLE_BOOL(system-cairo,
7397 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
7401 # Check for headers defining standard int types.
7402 AC_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
7404 if test "$MOZ_TREE_CAIRO"; then
7405 AC_DEFINE(MOZ_TREE_CAIRO)
7407 # For now we assume that we will have a uint64_t available through
7408 # one of the above headers or mozstdint.h.
7409 AC_DEFINE(HAVE_UINT64_T)
7411 # Define macros for cairo-features.h
7412 if test "$MOZ_X11"; then
7413 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
7414 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
7415 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
7416 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7417 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7418 MOZ_ENABLE_CAIRO_FT=1
7419 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
7421 if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
7422 QPAINTER_SURFACE_FEATURE="#define CAIRO_HAS_QPAINTER_SURFACE 1"
7424 if test "$MOZ_WIDGET_TOOLKIT" = "mac" -o "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
7425 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
7426 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
7427 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
7429 if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
7430 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
7431 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
7432 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7434 if test "$MOZ_WIDGET_TOOLKIT" = "os2"; then
7435 OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
7436 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7437 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7438 MOZ_ENABLE_CAIRO_FT=1
7439 CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
7440 CAIRO_FT_LIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
7442 if test "$MOZ_WIDGET_TOOLKIT" = "beos"; then
7443 PKG_CHECK_MODULES(CAIRO_FT, fontconfig freetype2)
7444 BEOS_SURFACE_FEATURE="#define CAIRO_HAS_BEOS_SURFACE 1"
7445 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7446 MOZ_ENABLE_CAIRO_FT=1
7448 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
7449 AC_SUBST(CAIRO_FT_CFLAGS)
7451 if test "$MOZ_DEBUG"; then
7452 SANITY_CHECKING_FEATURE="#define CAIRO_DO_SANITY_CHECKING 1"
7454 SANITY_CHECKING_FEATURE="#undef CAIRO_DO_SANITY_CHECKING"
7457 PNG_FUNCTIONS_FEATURE="#define CAIRO_HAS_PNG_FUNCTIONS 1"
7459 AC_SUBST(PS_SURFACE_FEATURE)
7460 AC_SUBST(PDF_SURFACE_FEATURE)
7461 AC_SUBST(SVG_SURFACE_FEATURE)
7462 AC_SUBST(XLIB_SURFACE_FEATURE)
7463 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
7464 AC_SUBST(QUARTZ_SURFACE_FEATURE)
7465 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
7466 AC_SUBST(XCB_SURFACE_FEATURE)
7467 AC_SUBST(WIN32_SURFACE_FEATURE)
7468 AC_SUBST(OS2_SURFACE_FEATURE)
7469 AC_SUBST(BEOS_SURFACE_FEATURE)
7470 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
7471 AC_SUBST(FT_FONT_FEATURE)
7472 AC_SUBST(WIN32_FONT_FEATURE)
7473 AC_SUBST(QUARTZ_FONT_FEATURE)
7474 AC_SUBST(PNG_FUNCTIONS_FEATURE)
7475 AC_SUBST(QPAINTER_SURFACE_FEATURE)
7477 if test "$_WIN32_MSVC"; then
7478 MOZ_CAIRO_LIBS='$(DEPTH)/gfx/cairo/cairo/src/mozcairo.lib $(DEPTH)/gfx/cairo/libpixman/src/mozlibpixman.lib'
7480 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"
7482 if test "$MOZ_X11"; then
7483 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS -lXrender -lfreetype -lfontconfig"
7487 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
7488 mv -f $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig 2> /dev/null
7491 PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION freetype2 fontconfig)
7492 MOZ_CAIRO_CFLAGS=$CAIRO_CFLAGS
7493 MOZ_CAIRO_LIBS=$CAIRO_LIBS
7494 if test "$MOZ_X11"; then
7495 PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
7496 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
7497 MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
7501 AC_SUBST(MOZ_TREE_CAIRO)
7502 AC_SUBST(MOZ_CAIRO_CFLAGS)
7503 AC_SUBST(MOZ_CAIRO_LIBS)
7505 dnl ========================================================
7507 dnl ========================================================
7510 MOZ_ARG_ENABLE_BOOL(system-lcms,
7511 [ --enable-system-lcms Use system lcms (located with pkgconfig)],
7515 if test -z "$MOZ_NATIVE_LCMS"
7518 if test "$_WIN32_MSVC"; then
7519 if test -z "$BUILD_STATIC_LIBS" -a -z "$MOZ_ENABLE_LIBXUL"; then
7520 LCMS_CFLAGS=-DLCMS_DLL
7522 LCMS_LIBS='$(LIBXUL_DIST)/lib/mozlcms.lib'
7524 LCMS_LIBS='-L$(LIBXUL_DIST)/bin -lmozlcms'
7527 PKG_CHECK_MODULES(LCMS, lcms >= $LCMS_VERSION)
7530 AC_SUBST(MOZ_NATIVE_LCMS)
7531 AC_SUBST(LCMS_CFLAGS)
7534 dnl ========================================================
7536 dnl ========================================================
7537 MOZ_ARG_DISABLE_BOOL(xul,
7538 [ --disable-xul Disable XUL],
7540 if test "$MOZ_XUL"; then
7543 dnl remove extensions that require XUL
7544 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
7549 dnl ========================================================
7550 dnl Two ways to enable Python support:
7551 dnl --enable-extensions=python # select all available.
7552 dnl (MOZ_PYTHON_EXTENSIONS contains the list of extensions)
7554 dnl --enable-extensions=python/xpcom,... # select individual ones
7556 dnl If either is used, we locate the Python to use.
7557 dnl ========================================================
7559 dnl If 'python' appears anywhere in the extensions list, go lookin'...
7560 if test `echo "$MOZ_EXTENSIONS" | grep -c python` -ne 0; then
7561 dnl Allow PYTHON to point to the Python interpreter to use
7562 dnl (note that it must be the python executable - which we
7563 dnl run to locate the relevant paths etc)
7564 dnl If not set, we use whatever Python we can find.
7566 dnl Ask Python what its version number is
7568 MOZ_PYTHON_VER=`$PYTHON -c "import sys;print '%d%d' % sys.version_info[0:2]"`
7569 MOZ_PYTHON_VER_DOTTED=`$PYTHON -c "import sys;print '%d.%d' % sys.version_info[0:2]"`
7571 dnl Ask for the Python "prefix" (ie, home/source dir)
7572 MOZ_PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
7573 dnl Setup the include and library directories.
7574 if test "$OS_ARCH" = "WINNT"; then
7575 MOZ_PYTHON_PREFIX=`$CYGPATH_W $MOZ_PYTHON_PREFIX | $CYGPATH_S`
7576 dnl Source trees have "include" and "PC" for .h, and "PCbuild" for .lib
7577 dnl Binary trees have "include" for .h, and "libs" for .lib
7578 dnl We add 'em both - along with quotes, to handle spaces.
7579 MOZ_PYTHON_DLL_SUFFIX=.pyd
7580 MOZ_PYTHON_INCLUDES="\"-I$MOZ_PYTHON_PREFIX/include\" \"-I$MOZ_PYTHON_PREFIX/PC\""
7581 MOZ_PYTHON_LIBS="\"/libpath:$MOZ_PYTHON_PREFIX/PCBuild\" \"/libpath:$MOZ_PYTHON_PREFIX/libs\""
7583 dnl Non-Windows include and libs
7584 MOZ_PYTHON_DLL_SUFFIX=$DLL_SUFFIX
7585 MOZ_PYTHON_INCLUDES="-I$MOZ_PYTHON_PREFIX/include/python$MOZ_PYTHON_VER_DOTTED"
7586 dnl Check for dynamic Python lib
7587 dnl - A static Python is no good - multiple dynamic libraries (xpcom
7588 dnl - core, xpcom loader, pydom etc) all need to share Python.
7589 dnl - Python 2.3's std --enable-shared configure option will
7590 dnl create a libpython2.3.so.1.0. We should first try this
7591 dnl dotted versioned .so file because this is the one that
7592 dnl the PyXPCOM build mechanics tries to link to.
7593 dnl XXX Should find a better way than hardcoding "1.0".
7594 dnl - Python developement tree dir layouts are NOT allowed here
7595 dnl because the PyXPCOM build just dies on it later anyway.
7596 dnl - Fixes to the above by Python/*nix knowledgable people welcome!
7597 if test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7598 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7599 elif test -f "$MOZ_PYTHON_PREFIX/lib64/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7600 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib64 -lpython$MOZ_PYTHON_VER_DOTTED"
7601 elif test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7602 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7603 elif test -f "$MOZ_PYTHON_PREFIX/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7604 dnl Don't Python development tree directory layout.
7605 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX -lpython$MOZ_PYTHON_VER_DOTTED"
7606 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.])
7607 elif test "$OS_ARCH" = "Darwin"; then
7608 dnl We do Darwin last, so if a custom non-framework build of
7609 dnl python is used on OSX, then it will be picked up first by
7610 dnl the logic above.
7611 MOZ_PYTHON_LIBS="-framework Python"
7613 AC_MSG_ERROR([Could not find build shared libraries for Python at $MOZ_PYTHON_PREFIX. This is required for PyXPCOM.])
7615 if test "$OS_ARCH" = "Linux"; then
7616 MOZ_PYTHON_LIBS="$MOZ_PYTHON_LIBS -lutil"
7619 dnl Handle "_d" on Windows
7620 if test "$OS_ARCH" = "WINNT" && test -n "$MOZ_DEBUG"; then
7621 MOZ_PYTHON_DEBUG_SUFFIX="_d"
7623 MOZ_PYTHON_DEBUG_SUFFIX=
7625 AC_MSG_RESULT(Building Python extensions using python-$MOZ_PYTHON_VER_DOTTED from $MOZ_PYTHON_PREFIX)
7628 dnl If the user asks for the 'python' extension, then we add
7629 dnl MOZ_PYTHON_EXTENSIONS to MOZ_EXTENSIONS - but with the leading 'python/'
7630 dnl Note the careful regex - it must match 'python' followed by anything
7631 dnl other than a '/', including the end-of-string.
7632 if test `echo "$MOZ_EXTENSIONS" | grep -c 'python\([[^/]]\|$\)'` -ne 0; then
7633 for pyext in $MOZ_PYTHON_EXTENSIONS; do
7634 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS python/$pyext`
7637 dnl Later we may allow MOZ_PYTHON_EXTENSIONS to be specified on the
7638 dnl command-line, but not yet
7639 AC_SUBST(MOZ_PYTHON_EXTENSIONS)
7640 AC_SUBST(MOZ_PYTHON)
7641 AC_SUBST(MOZ_PYTHON_PREFIX)
7642 AC_SUBST(MOZ_PYTHON_INCLUDES)
7643 AC_SUBST(MOZ_PYTHON_LIBS)
7644 AC_SUBST(MOZ_PYTHON_VER)
7645 AC_SUBST(MOZ_PYTHON_VER_DOTTED)
7646 AC_SUBST(MOZ_PYTHON_DEBUG_SUFFIX)
7647 AC_SUBST(MOZ_PYTHON_DLL_SUFFIX)
7649 dnl ========================================================
7650 dnl disable profile locking
7651 dnl do no use this in applications that can have more than
7652 dnl one process accessing the profile directory.
7653 dnl ========================================================
7654 MOZ_ARG_DISABLE_BOOL(profilelocking,
7655 [ --disable-profilelocking Disable profile locking],
7656 MOZ_PROFILELOCKING=,
7657 MOZ_PROFILELOCKING=1 )
7658 if test "$MOZ_PROFILELOCKING"; then
7659 AC_DEFINE(MOZ_PROFILELOCKING)
7662 dnl ========================================================
7663 dnl disable rdf services
7664 dnl ========================================================
7665 MOZ_ARG_DISABLE_BOOL(rdf,
7666 [ --disable-rdf Disable RDF],
7668 if test "$MOZ_RDF"; then
7674 dnl ========================================================
7675 dnl necko configuration options
7676 dnl ========================================================
7679 dnl option to disable various necko protocols
7681 MOZ_ARG_ENABLE_STRING(necko-protocols,
7682 [ --enable-necko-protocols[={http,ftp,default,all,none}]
7683 Enable/disable specific protocol handlers],
7684 [ for option in `echo $enableval | sed 's/,/ /g'`; do
7685 if test "$option" = "yes" || test "$option" = "all"; then
7686 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7687 elif test "$option" = "no" || test "$option" = "none"; then
7689 elif test "$option" = "default"; then
7690 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7691 elif test `echo "$option" | grep -c \^-` != 0; then
7692 option=`echo $option | sed 's/^-//'`
7693 NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
7695 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
7698 NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
7700 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
7701 AC_SUBST(NECKO_PROTOCOLS)
7702 for p in $NECKO_PROTOCOLS; do
7703 AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
7707 dnl option to disable necko's disk cache
7709 MOZ_ARG_DISABLE_BOOL(necko-disk-cache,
7710 [ --disable-necko-disk-cache
7711 Disable necko disk cache],
7714 AC_SUBST(NECKO_DISK_CACHE)
7715 if test "$NECKO_DISK_CACHE"; then
7716 AC_DEFINE(NECKO_DISK_CACHE)
7720 dnl option to minimize size of necko's i/o buffers
7722 MOZ_ARG_ENABLE_BOOL(necko-small-buffers,
7723 [ --enable-necko-small-buffers
7724 Minimize size of necko's i/o buffers],
7725 NECKO_SMALL_BUFFERS=1,
7726 NECKO_SMALL_BUFFERS=)
7727 AC_SUBST(NECKO_SMALL_BUFFERS)
7728 if test "$NECKO_SMALL_BUFFERS"; then
7729 AC_DEFINE(NECKO_SMALL_BUFFERS)
7733 dnl option to disable cookies
7735 MOZ_ARG_DISABLE_BOOL(cookies,
7736 [ --disable-cookies Disable cookie support],
7739 AC_SUBST(NECKO_COOKIES)
7740 if test "$NECKO_COOKIES"; then
7741 AC_DEFINE(NECKO_COOKIES)
7744 dnl NECKO_ configuration options are not global
7745 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_"
7747 dnl Only build Mork if it's required
7749 if test "$MOZ_MORK"; then
7753 dnl Build the lightweight Mork reader if required
7754 AC_SUBST(MOZ_MORKREADER)
7755 if test "$MOZ_MORKREADER"; then
7756 AC_DEFINE(MOZ_MORKREADER)
7759 dnl ========================================================
7760 if test "$MOZ_DEBUG" || test "$NS_TRACE_MALLOC"; then
7761 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7764 dnl ========================================================
7766 dnl = Maintainer debug option (no --enable equivalent)
7768 dnl ========================================================
7773 AC_SUBST(AR_EXTRACT)
7777 AC_SUBST(AS_DASH_C_FLAG)
7782 AC_SUBST(USE_SHORT_LIBNAME)
7786 AC_SUBST(NS_USE_NATIVE)
7787 AC_SUBST(MOZ_WIDGET_TOOLKIT)
7788 AC_SUBST(MOZ_GFX_TOOLKIT)
7789 AC_SUBST(MOZ_UPDATE_XTERM)
7791 AC_SUBST(MOZ_PLATFORM_HILDON)
7793 AC_SUBST(NS_MAEMO_LOCATION)
7794 AC_SUBST(MOZ_AUTH_EXTENSION)
7795 AC_SUBST(MOZ_MATHML)
7796 AC_SUBST(MOZ_PERMISSIONS)
7798 AC_SUBST(MOZ_NO_INSPECTOR_APIS)
7799 AC_SUBST(MOZ_PREF_EXTENSIONS)
7801 AC_SUBST(MOZ_XSLT_STANDALONE)
7802 AC_SUBST(MOZ_JS_LIBS)
7805 AC_SUBST(MOZ_DEBUG_MODULES)
7806 AC_SUBST(MOZ_PROFILE_MODULES)
7807 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
7808 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
7809 AC_SUBST(MOZ_DEBUG_FLAGS)
7810 AC_SUBST(MOZ_DEBUG_LDFLAGS)
7811 AC_SUBST(WARNINGS_AS_ERRORS)
7812 AC_SUBST(MOZ_DBGRINFO_MODULES)
7813 AC_SUBST(MOZ_EXTENSIONS)
7814 AC_SUBST(MOZ_IMG_DECODERS)
7815 AC_SUBST(MOZ_IMG_ENCODERS)
7816 AC_SUBST(MOZ_JSDEBUGGER)
7818 AC_SUBST(MOZ_NO_XPCOM_OBSOLETE)
7819 AC_SUBST(MOZ_PLUGINS)
7820 AC_SUBST(ENABLE_EAZEL_PROFILER)
7821 AC_SUBST(EAZEL_PROFILER_CFLAGS)
7822 AC_SUBST(EAZEL_PROFILER_LIBS)
7823 AC_SUBST(MOZ_PERF_METRICS)
7824 AC_SUBST(GC_LEAK_DETECTOR)
7825 AC_SUBST(MOZ_LOG_REFCNT)
7829 AC_SUBST(MOZ_CALLGRIND)
7831 AC_SUBST(MOZ_XPCTOOLS)
7832 AC_SUBST(MOZ_JSLOADER)
7833 AC_SUBST(MOZ_USE_NATIVE_UCONV)
7834 AC_SUBST(MOZ_INSURE)
7835 AC_SUBST(MOZ_INSURE_DIRS)
7836 AC_SUBST(MOZ_INSURE_EXCLUDE_DIRS)
7837 AC_SUBST(MOZ_QUANTIFY)
7838 AC_SUBST(MOZ_INSURIFYING)
7840 AC_SUBST(MOZ_PLACES)
7841 AC_SUBST(MOZ_PLACES_BOOKMARKS)
7842 AC_SUBST(MOZ_STORAGE)
7844 AC_SUBST(NS_PRINTING)
7846 AC_SUBST(MOZ_JAVAXPCOM)
7847 AC_SUBST(JAVA_INCLUDE_PATH)
7852 AC_SUBST(MOZ_PROFILELOCKING)
7855 AC_SUBST(MOZ_XIE_LIBS)
7856 AC_SUBST(MOZ_ENABLE_POSTSCRIPT)
7858 AC_SUBST(XPCOM_USE_LEA)
7859 AC_SUBST(BUILD_STATIC_LIBS)
7860 AC_SUBST(MOZ_ENABLE_LIBXUL)
7861 AC_SUBST(ENABLE_TESTS)
7863 AC_SUBST(MOZ_UNIVERSALCHARDET)
7864 AC_SUBST(ACCESSIBILITY)
7865 AC_SUBST(MOZ_XPINSTALL)
7866 AC_SUBST(MOZ_VIEW_SOURCE)
7867 AC_SUBST(MOZ_SPELLCHECK)
7868 AC_SUBST(MOZ_XPFE_COMPONENTS)
7869 AC_SUBST(MOZ_USER_DIR)
7870 AC_SUBST(MOZ_CRASHREPORTER)
7872 AC_SUBST(ENABLE_STRIP)
7873 AC_SUBST(PKG_SKIP_STRIP)
7874 AC_SUBST(USE_ELF_DYNSTR_GC)
7875 AC_SUBST(INCREMENTAL_LINKER)
7876 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
7877 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
7878 AC_SUBST(MOZ_XPCOM_OBSOLETE_LIBS)
7880 AC_SUBST(MOZ_FIX_LINK_PATHS)
7881 AC_SUBST(XPCOM_LIBS)
7882 AC_SUBST(XPCOM_FROZEN_LDOPTS)
7883 AC_SUBST(XPCOM_GLUE_LDOPTS)
7884 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
7886 AC_SUBST(USE_DEPENDENT_LIBS)
7888 AC_SUBST(MOZ_BUILD_ROOT)
7889 AC_SUBST(MOZ_OS2_TOOLS)
7890 AC_SUBST(MOZ_OS2_USE_DECLSPEC)
7892 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
7893 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
7894 AC_SUBST(MOZ_TIMELINE)
7897 AC_SUBST(TARGET_DEVICE)
7899 AC_SUBST(MOZ_APP_NAME)
7900 AC_SUBST(MOZ_APP_DISPLAYNAME)
7901 AC_SUBST(MOZ_APP_VERSION)
7902 AC_SUBST(FIREFOX_VERSION)
7904 AC_SUBST(MOZ_PKG_SPECIAL)
7906 AC_SUBST(MOZILLA_OFFICIAL)
7907 AC_SUBST(BUILD_OFFICIAL)
7908 AC_SUBST(MOZ_MILESTONE_RELEASE)
7911 AC_SUBST(MOZ_PROFILE)
7912 AC_SUBST(MOZ_DEBUG_SYMBOLS)
7913 AC_SUBST(MOZ_MAPINFO)
7914 AC_SUBST(MOZ_BROWSE_INFO)
7915 AC_SUBST(MOZ_TOOLS_DIR)
7916 AC_SUBST(CYGWIN_WRAPPER)
7918 AC_SUBST(WIN32_REDIST_DIR)
7921 dnl Echo the CFLAGS to remove extra whitespace.
7928 $_MOZ_EXCEPTIONS_FLAGS \
7929 $_WARNINGS_CXXFLAGS \
7932 COMPILE_CFLAGS=`echo \
7937 COMPILE_CXXFLAGS=`echo \
7938 $_DEFINES_CXXFLAGS \
7942 AC_SUBST(SYSTEM_MAKEDEPEND)
7943 AC_SUBST(SYSTEM_JPEG)
7944 AC_SUBST(SYSTEM_PNG)
7945 AC_SUBST(SYSTEM_ZLIB)
7946 AC_SUBST(SYSTEM_BZ2)
7948 AC_SUBST(JPEG_CFLAGS)
7950 AC_SUBST(ZLIB_CFLAGS)
7952 AC_SUBST(BZ2_CFLAGS)
7954 AC_SUBST(PNG_CFLAGS)
7957 AC_SUBST(MOZ_JPEG_CFLAGS)
7958 AC_SUBST(MOZ_JPEG_LIBS)
7959 AC_SUBST(MOZ_ZLIB_CFLAGS)
7960 AC_SUBST(MOZ_ZLIB_LIBS)
7961 AC_SUBST(MOZ_BZ2_CFLAGS)
7962 AC_SUBST(MOZ_BZ2_LIBS)
7963 AC_SUBST(MOZ_PNG_CFLAGS)
7964 AC_SUBST(MOZ_PNG_LIBS)
7966 AC_SUBST(NSPR_CFLAGS)
7968 AC_SUBST(MOZ_NATIVE_NSPR)
7970 AC_SUBST(NSS_CFLAGS)
7972 AC_SUBST(NSS_DEP_LIBS)
7973 AC_SUBST(MOZ_NATIVE_NSS)
7974 AC_SUBST(NSS_DISABLE_DBM)
7979 AC_SUBST(COMPILE_CFLAGS)
7980 AC_SUBST(COMPILE_CXXFLAGS)
7983 AC_SUBST(CROSS_COMPILE)
7984 AC_SUBST(WCHAR_CFLAGS)
7988 AC_SUBST(HOST_CFLAGS)
7989 AC_SUBST(HOST_CXXFLAGS)
7990 AC_SUBST(HOST_OPTIMIZE_FLAGS)
7992 AC_SUBST(HOST_AR_FLAGS)
7994 AC_SUBST(HOST_RANLIB)
7995 AC_SUBST(HOST_NSPR_MDCPUCFG)
7996 AC_SUBST(HOST_BIN_SUFFIX)
7997 AC_SUBST(HOST_OS_ARCH)
7999 AC_SUBST(TARGET_CPU)
8000 AC_SUBST(TARGET_VENDOR)
8002 AC_SUBST(TARGET_NSPR_MDCPUCFG)
8003 AC_SUBST(TARGET_MD_ARCH)
8004 AC_SUBST(TARGET_XPCOM_ABI)
8007 AC_SUBST(OS_RELEASE)
8010 AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
8011 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8013 AC_SUBST(WRAP_MALLOC_CFLAGS)
8014 AC_SUBST(WRAP_MALLOC_LIB)
8017 AC_SUBST(MKSHLIB_FORCE_ALL)
8018 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8019 AC_SUBST(DSO_CFLAGS)
8020 AC_SUBST(DSO_PIC_CFLAGS)
8021 AC_SUBST(DSO_LDOPTS)
8022 AC_SUBST(LIB_PREFIX)
8023 AC_SUBST(DLL_PREFIX)
8024 AC_SUBST(DLL_SUFFIX)
8025 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8026 AC_SUBST(LIB_SUFFIX)
8027 AC_SUBST(OBJ_SUFFIX)
8028 AC_SUBST(BIN_SUFFIX)
8029 AC_SUBST(ASM_SUFFIX)
8030 AC_SUBST(IMPORT_LIB_SUFFIX)
8032 AC_SUBST(CC_VERSION)
8033 AC_SUBST(CXX_VERSION)
8034 AC_SUBST(MSMANIFEST_TOOL)
8036 if test "$USING_HCC"; then
8037 CC='${topsrcdir}/build/hcc'
8039 CXX='${topsrcdir}/build/hcpp'
8040 CXX="$CXX '$_OLDCXX'"
8045 dnl Check for missing components
8046 if test "$COMPILE_ENVIRONMENT"; then
8047 if test "$MOZ_X11"; then
8048 dnl ====================================================
8049 dnl = Check if X headers exist
8050 dnl ====================================================
8051 _SAVE_CFLAGS=$CFLAGS
8052 CFLAGS="$CFLAGS $XCFLAGS"
8056 #include <X11/Xlib.h>
8057 #include <X11/Intrinsic.h>
8061 if ((dpy = XOpenDisplay(NULL)) == NULL) {
8062 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8066 [ AC_MSG_ERROR([Could not compile basic X program.]) ])
8067 CFLAGS="$_SAVE_CFLAGS"
8069 if test ! -z "$MISSING_X"; then
8070 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8074 fi # COMPILE_ENVIRONMENT
8076 dnl Set various defines and substitutions
8077 dnl ========================================================
8079 if test "$OS_ARCH" = "BeOS"; then
8082 elif test "$OS_ARCH" = "Darwin"; then
8084 AC_DEFINE(UNIX_ASYNC_DNS)
8086 elif test "$OS_ARCH" = "OpenVMS"; then
8088 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
8090 AC_DEFINE(UNIX_ASYNC_DNS)
8093 AC_SUBST(MOZ_MOVEMAIL)
8095 if test "$MOZ_DEBUG"; then
8096 AC_DEFINE(MOZ_REFLOW_PERF)
8097 AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8100 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
8101 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8102 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8103 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8104 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8105 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8106 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8107 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8108 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8111 # Used for LD_LIBRARY_PATH of run_viewer target
8113 for lib_arg in $NSPR_LIBS $TK_LIBS; do
8115 -L* ) LIBS_PATH="${LIBS_PATH:+$LIBS_PATH:}"`expr $lib_arg : "-L\(.*\)"` ;;
8121 dnl ========================================================
8122 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
8123 dnl ========================================================
8126 WIN_TOP_SRC=`cd $srcdir; pwd -W`
8129 HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
8130 HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
8131 CC="\$(CYGWIN_WRAPPER) $CC"
8132 CXX="\$(CYGWIN_WRAPPER) $CXX"
8133 CPP="\$(CYGWIN_WRAPPER) $CPP"
8134 LD="\$(CYGWIN_WRAPPER) $LD"
8135 AS="\$(CYGWIN_WRAPPER) $AS"
8136 RC="\$(CYGWIN_WRAPPER) $RC"
8137 MIDL="\$(CYGWIN_WRAPPER) $MIDL"
8138 CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
8139 WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
8143 AC_SUBST(CYGDRIVE_MOUNT)
8144 AC_SUBST(WIN_TOP_SRC)
8146 AC_SUBST(MOZILLA_VERSION)
8148 AC_SUBST(ac_configure_args)
8150 dnl Spit out some output
8151 dnl ========================================================
8153 dnl The following defines are used by xpcom
8154 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8156 HAVE_CPP_2BYTE_WCHAR_T
8157 HAVE_CPP_ACCESS_CHANGING_USING
8158 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8160 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8162 HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
8163 HAVE_CPP_NAMESPACE_STD
8165 HAVE_CPP_PARTIAL_SPECIALIZATION
8166 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8168 HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL
8170 NEED_CPP_UNUSED_IMPLEMENTATIONS
8174 HAVE_ICONV_WITH_CONST_INPUT
8182 netwerk/necko-config.h
8183 xpcom/xpcom-config.h
8184 xpcom/xpcom-private.h
8187 # Save the defines header file before autoconf removes it.
8188 # (Do not add AC_DEFINE calls after this line.)
8189 _CONFIG_TMP=confdefs-tmp.h
8190 _CONFIG_DEFS_H=mozilla-config.h
8192 cat > $_CONFIG_TMP <<\EOF
8193 /* List of defines generated by configure. Included with preprocessor flag,
8194 * -include, to avoid long list of -D defines on the compile command-line.
8198 #ifndef _MOZILLA_CONFIG_H_
8199 #define _MOZILLA_CONFIG_H_
8202 _EGREP_PATTERN='^#define ('
8203 if test -n "$_NON_GLOBAL_ACDEFINES"; then
8204 for f in $_NON_GLOBAL_ACDEFINES; do
8205 _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
8208 _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
8210 sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
8212 cat >> $_CONFIG_TMP <<\EOF
8214 #endif /* _MOZILLA_CONFIG_H_ */
8218 # Only write mozilla-config.h when something changes (or it doesn't exist)
8219 if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
8222 AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
8223 mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
8225 echo ==== $_CONFIG_DEFS_H =================================
8229 dnl Probably shouldn't call this manually but we always want the output of DEFS
8230 rm -f confdefs.h.save
8231 mv confdefs.h confdefs.h.save
8232 egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
8233 AC_OUTPUT_MAKE_DEFS()
8235 AC_SUBST(MOZ_DEFINES)
8237 mv confdefs.h.save confdefs.h
8239 dnl Load the list of Makefiles to generate.
8240 dnl To add new Makefiles, edit allmakefiles.sh.
8241 dnl allmakefiles.sh sets the variable, MAKEFILES.
8242 . ${srcdir}/allmakefiles.sh
8244 dnl Run a perl script to quickly create the makefiles.
8245 dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
8246 dnl for the files it cannot handle correctly. This way, config.status
8247 dnl will handle these files.
8248 dnl If it fails, nothing is set and config.status will run as usual.
8250 dnl This does not change the $MAKEFILES variable.
8252 dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
8254 if test -z "${AS_PERL}"; then
8255 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
8257 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
8262 echo $MAKEFILES > unallmakefiles
8264 AC_OUTPUT($MAKEFILES)
8266 dnl Prevent the regeneration of cairo-features.h forcing rebuilds of gfx stuff
8267 if test "$CAIRO_FEATURES_H"; then
8268 if cmp -s $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig; then
8269 mv -f "$CAIRO_FEATURES_H".orig "$CAIRO_FEATURES_H" 2> /dev/null
8271 rm -f "$CAIRO_FEATURES_H".orig 2> /dev/null
8275 dnl ========================================================
8276 dnl = Setup a nice relatively clean build environment for
8277 dnl = sub-configures.
8278 dnl ========================================================
8281 CFLAGS="$_SUBDIR_CFLAGS"
8282 CPPFLAGS="$_SUBDIR_CPPFLAGS"
8283 CXXFLAGS="$_SUBDIR_CXXFLAGS"
8284 LDFLAGS="$_SUBDIR_LDFLAGS"
8285 HOST_CC="$_SUBDIR_HOST_CC"
8286 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
8287 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
8293 # No need to run subconfigures when building with LIBXUL_SDK_DIR
8294 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
8296 if test -z "$MOZ_NATIVE_NSPR"; then
8297 ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
8298 if test -z "$MOZ_DEBUG"; then
8299 ac_configure_args="$ac_configure_args --disable-debug"
8301 if test "$MOZ_OPTIMIZE" = "1"; then
8302 ac_configure_args="$ac_configure_args --enable-optimize"
8304 if test "$OS_ARCH" = "WINNT" && test "$NS_TRACE_MALLOC"; then
8305 ac_configure_args="$ac_configure_args --enable-debug --disable-optimize"
8307 if test -n "$HAVE_64BIT_OS"; then
8308 ac_configure_args="$ac_configure_args --enable-64bit"
8310 if test -n "$USE_ARM_KUSER"; then
8311 ac_configure_args="$ac_configure_args --with-arm-kuser"
8313 AC_OUTPUT_SUBDIRS(nsprpub)
8314 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8317 if test -z "$MOZ_NATIVE_NSPR"; then
8318 # Hack to deal with the fact that we use NSPR_CFLAGS everywhere
8319 AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
8320 if test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE"; then
8321 NSPR_LIBS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --libdir=$LIBXUL_DIST/lib --libs`
8322 $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $NSPR_LIBS'" config/autoconf.mk
8323 NSPR_CFLAGS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --includedir=$LIBXUL_DIST/include/nspr --cflags`
8324 $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $NSPR_CFLAGS'" config/autoconf.mk
8326 rm -f config/autoconf.mk.bak
8329 # Run the SpiderMonkey 'configure' script.
8330 dist=$MOZ_BUILD_ROOT/dist
8331 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8332 ac_configure_args="$ac_configure_args --enable-threadsafe"
8333 if test -z "$MOZ_NATIVE_NSPR"; then
8334 ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
8335 ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
8337 ac_configure_args="$ac_configure_args --includedir=$dist/include"
8338 ac_configure_args="$ac_configure_args --bindir=$dist/bin"
8339 ac_configure_args="$ac_configure_args --libdir=$dist/lib"
8340 ac_configure_args="$ac_configure_args --with-sync-build-files=$_topsrcdir"
8341 if test "$MOZ_MEMORY"; then
8342 ac_configure_args="$ac_configure_args --enable-jemalloc"
8344 AC_OUTPUT_SUBDIRS(js/src)
8345 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8347 fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR