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
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
235 echo -----------------------------------------------------------------------------
236 echo Building Windows CE Shunt Library and Tool Chain
237 echo -----------------------------------------------------------------------------
241 echo -n "#define TOPSRCDIR \"" > $srcdir/build/wince/tools/topsrcdir.h
242 echo `cd "$_topsrcdir" && pwd -W | tr '\n' '\"'` >> $srcdir/build/wince/tools/topsrcdir.h
243 make -C $srcdir/build/wince/tools
244 echo -----------------------------------------------------------------------------
248 if test -n "$CROSS_COMPILE" && test "$target" != "$host"; then
249 echo "cross compiling from $host to $target"
253 _SAVE_CFLAGS="$CFLAGS"
254 _SAVE_LDFLAGS="$LDFLAGS"
256 AC_MSG_CHECKING([for host c compiler])
257 AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
258 if test -z "$HOST_CC"; then
259 AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
261 AC_MSG_RESULT([$HOST_CC])
262 AC_MSG_CHECKING([for host c++ compiler])
263 AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
264 if test -z "$HOST_CXX"; then
265 AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
267 AC_MSG_RESULT([$HOST_CXX])
269 if test -z "$HOST_CFLAGS"; then
270 HOST_CFLAGS="$CFLAGS"
272 if test -z "$HOST_CXXFLAGS"; then
273 HOST_CXXFLAGS="$CXXFLAGS"
275 if test -z "$HOST_LDFLAGS"; then
276 HOST_LDFLAGS="$LDFLAGS"
278 AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
279 AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
281 CFLAGS="$HOST_CFLAGS"
282 LDFLAGS="$HOST_LDFLAGS"
284 AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
285 AC_TRY_COMPILE([], [return(0);],
286 [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
287 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
290 CFLAGS="$HOST_CXXFLAGS"
292 AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
293 AC_TRY_COMPILE([], [return(0);],
294 [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
295 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
299 LDFLAGS=$_SAVE_LDFLAGS
301 case "$build:$target" in
302 powerpc-apple-darwin8*:i?86-apple-darwin*)
303 dnl The Darwin cross compiler doesn't necessarily point itself at a
304 dnl root that has libraries for the proper architecture, it defaults
305 dnl to the system root. The libraries in the system root on current
306 dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
307 dnl checks will fail. Fake a working SDK in that case.
309 _SAVE_CXXFLAGS=$CXXLAGS
310 CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CFLAGS"
311 CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CXXFLAGS"
315 AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
318 AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
322 case "$build:$target" in
323 powerpc-apple-darwin8*:i?86-apple-darwin*)
324 dnl Revert the changes made above. From this point on, the target
325 dnl compiler will never be used without applying the SDK to CFLAGS
326 dnl (see --with-macos-sdk below).
328 CXXFLAGS=$_SAVE_CXXFLAGS
332 AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
333 AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
334 AC_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
335 AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
336 AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
337 AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
338 AC_DEFINE(CROSS_COMPILE)
343 AC_PATH_PROGS(AS, $AS as, $CC)
344 AC_CHECK_PROGS(AR, ar, :)
345 AC_CHECK_PROGS(LD, ld, :)
346 AC_CHECK_PROGS(STRIP, strip, :)
347 AC_CHECK_PROGS(WINDRES, windres, :)
348 if test -z "$HOST_CC"; then
351 if test -z "$HOST_CFLAGS"; then
352 HOST_CFLAGS="$CFLAGS"
354 if test -z "$HOST_CXX"; then
357 if test -z "$HOST_CXXFLAGS"; then
358 HOST_CXXFLAGS="$CXXFLAGS"
360 if test -z "$HOST_LDFLAGS"; then
361 HOST_LDFLAGS="$LDFLAGS"
363 if test -z "$HOST_RANLIB"; then
364 HOST_RANLIB="$RANLIB"
366 if test -z "$HOST_AR"; then
377 if test "$GCC" = "yes"; then
379 CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
381 if test "$GXX" = "yes"; then
383 CXX_VERSION=`$CXX -v 2>&1 | grep 'gcc version'`
385 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
388 if test "`echo | $LD -v 2>&1 | grep -c GNU`" != "0"; then
391 if test "$GNU_CC"; then
392 if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
399 if test "$GCC" = yes; then
400 if test "`$CC -help 2>&1 | grep -c 'Intel(R) C Compiler'`" != "0"; then
405 if test "$GXX" = yes; then
406 if test "`$CXX -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
411 dnl Special win32 checks
412 dnl ========================================================
418 if test -n "$GNU_CC"; then
426 MOZ_ARG_WITH_STRING(windows-version,
427 [ --with-windows-version=WINVER
428 Minimum Windows version (WINVER) to support
439 AC_MSG_ERROR([Invalid value --with-windows-version, must be 400, 500 or 501]);
445 *-cygwin*|*-mingw*|*-msvc*|*-mks*|*-wince)
446 if test "$GCC" != "yes"; then
447 # Check to see if we are really running in a msvc environemnt
449 AC_CHECK_PROGS(MIDL, midl)
451 # Make sure compilers are valid
452 CFLAGS="$CFLAGS -TC -nologo"
453 CXXFLAGS="$CXXFLAGS -TP -nologo"
456 AC_TRY_COMPILE([#include <stdio.h>],
457 [ printf("Hello World\n"); ],,
458 AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
461 AC_TRY_COMPILE([#include <new.h>],
462 [ unsigned *test = new unsigned(42); ],,
463 AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
467 _MSVC_VER_FILTER='s|.* ([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
470 # Determine compiler version
471 CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
472 _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
473 _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
474 _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
475 _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
476 _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
478 CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
479 _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
481 if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
482 AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
484 if test "$_CC_MAJOR_VERSION" = "12"; then
486 elif test "$_CC_MAJOR_VERSION" = "13"; then
488 elif test "$_CC_MAJOR_VERSION" = "14"; then
490 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
491 dnl -DYNAMICBASE is only supported on VC8SP1 or newer,
492 dnl so be very specific here!
493 dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762
494 if test $_CC_RELEASE -gt 50727; then
496 elif test $_CC_BUILD -ge 762; then
499 AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
500 AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
501 elif test "$_CC_MAJOR_VERSION" = "15"; then
503 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
504 LDFLAGS="$LDFLAGS -MANIFESTUAC:NO"
506 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
507 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
509 AC_MSG_ERROR([This version of the MSVC compiler, $CC_VERSION , is unsupported.])
512 _MOZ_RTTI_FLAGS_ON='-GR'
513 _MOZ_RTTI_FLAGS_OFF='-GR-'
514 _MOZ_EXCEPTIONS_FLAGS_ON='-EHsc'
515 _MOZ_EXCEPTIONS_FLAGS_OFF=''
517 if test -n "$WIN32_REDIST_DIR"; then
518 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
522 # ensure that mt.exe is Microsoft (R) Manifest Tool and not magnetic tape manipulation utility (or something else)
523 if test "$_CC_SUITE" -ge "8"; then
525 _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
528 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
529 if test -n "$MSMT_TOOL"; then
530 MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
531 if test -z "$MSMANIFEST_TOOL_VERSION"; then
532 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
537 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
541 # Check linker version
542 _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
543 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
544 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
545 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
550 _MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
551 _MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
552 _MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
553 _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
554 # Add flags if necessary
555 AC_MSG_CHECKING([for midl flags])
556 if test \( "$_MIDL_MAJOR_VERSION" -gt "6" \) -o \( "$_MIDL_MAJOR_VERSION" = "6" -a "$_MIDL_MINOR_VERSION" -gt "0" \) -o \( "$_MIDL_MAJOR_VERSION" = "6" -a "$_MIDL_MINOR_VERSION" = "00" -a "$_MIDL_REV_VERSION" -gt "359" \); then
557 # Starting with MIDL version 6.0.359, the MIDL compiler
558 # generates /Oicf /robust stubs by default, which is not
559 # compatible with versions of Windows older than Win2k.
560 # This switches us back to the old behaviour. When we drop
561 # support for Windows older than Win2k, we should remove
563 MIDL_FLAGS="${MIDL_FLAGS} -no_robust"
564 AC_MSG_RESULT([need -no_robust])
566 MIDL_FLAGS="${MIDL_FLAGS}"
567 AC_MSG_RESULT([none needed])
570 unset _MSVC_VER_FILTER
573 # Check w32api version
574 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
575 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
576 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
577 AC_TRY_COMPILE([#include <w32api.h>],
578 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
579 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
580 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
581 #error "test failed."
583 , [ res=yes ], [ res=no ])
584 AC_MSG_RESULT([$res])
585 if test "$res" != "yes"; then
586 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
588 # Check windres version
589 AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
590 _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
591 AC_MSG_RESULT([$_WINDRES_VERSION])
592 _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
593 _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
594 _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
595 WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
596 WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
597 WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
598 if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
599 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
600 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
601 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
602 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
603 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
605 AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
609 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
610 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
611 # Require OS features provided by IE 5.0
612 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0500)
616 dnl Test breaks icc on OS/2 && MSVC
617 if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
619 if grep "NO_MINUS_C_MINUS_O 1" ./confdefs.h >/dev/null; then
623 CC="${srcdir}/build/hcc '$CC'"
624 CXX="${srcdir}/build/hcpp '$CXX'"
631 if test -n "$_WIN32_MSVC"; then
633 SKIP_COMPILER_CHECKS=1
634 SKIP_LIBRARY_CHECKS=1
637 fi # COMPILE_ENVIRONMENT
649 dnl ========================================================
650 dnl Checks for programs.
651 dnl ========================================================
654 AC_PATH_PROGS(PERL, $PERL perl5 perl )
655 if test -z "$PERL" || test "$PERL" = ":"; then
656 AC_MSG_ERROR([perl not found in \$PATH])
659 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
660 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
661 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
663 AC_MSG_RESULT([$_perl_version])
665 if test "$_perl_res" != 0; then
666 AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
670 AC_MSG_CHECKING([for full perl installation])
671 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
673 if test "$_perl_res" != 0; then
675 AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
680 AC_PATH_PROGS(PYTHON, $PYTHON python)
681 if test -z "$PYTHON"; then
682 AC_MSG_ERROR([python was not found in \$PATH])
684 echo PYTHON="$PYTHON"
686 AC_PATH_PROGS(NSINSTALL_BIN, nsinstall )
687 if test -z "$COMPILE_ENVIRONMENT"; then
688 if test -z "$NSINSTALL_BIN" || test "$NSINSTALL_BIN" = ":"; then
689 NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
692 AC_SUBST(NSINSTALL_BIN)
694 AC_PATH_PROG(DOXYGEN, doxygen, :)
695 AC_PATH_PROG(WHOAMI, whoami, :)
696 AC_PATH_PROG(AUTOCONF, autoconf, :)
697 AC_PATH_PROG(UNZIP, unzip, :)
698 AC_PATH_PROGS(ZIP, zip)
699 if test -z "$ZIP" || test "$ZIP" = ":"; then
700 AC_MSG_ERROR([zip not found in \$PATH])
702 AC_PATH_PROG(SYSTEM_MAKEDEPEND, makedepend)
703 AC_PATH_PROG(XARGS, xargs)
704 if test -z "$XARGS" || test "$XARGS" = ":"; then
705 AC_MSG_ERROR([xargs not found in \$PATH .])
708 if test "$COMPILE_ENVIRONMENT"; then
710 dnl ========================================================
711 dnl = Mac OS X toolchain support
712 dnl ========================================================
716 dnl Current known valid versions for GCC_VERSION are 2.95.2 3.1 3.3 4.0.
717 dnl 4.0 identifies itself as 4.0.x, so strip the decidecimal for
718 dnl the environment and includedir purposes (when using an SDK, below),
719 dnl but remember the full version number for the libdir (SDK).
721 GCC_VERSION_FULL=`echo $CXX_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
722 GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
724 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
725 dnl Bug 280479, but this keeps popping up in bug 292530 too because
726 dnl 4.0.0/4061 is the default compiler in Tiger.
728 GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
730 if test "$GCC_BUILD" = "4061" ; then
731 AC_MSG_ERROR([You are attempting to use Apple gcc 4.0 build 4061.
732 This compiler was supplied with Xcode 2.0, and contains bugs that prevent it
733 from building Mozilla. Upgrade to Xcode 2.1 or later.])
737 dnl xcodebuild needs GCC_VERSION defined in the environment, since it
738 dnl doesn't respect the CC/CXX setting. With GCC_VERSION set, it will use
739 dnl /usr/bin/g(cc|++)-$GCC_VERSION.
740 AC_PATH_PROGS(PBBUILD, pbbuild xcodebuild pbxbuild)
745 XCODEBUILD_VERSION=`$PBBUILD -version 2>/dev/null | xargs | sed -e 's/.*DevToolsCore-\([0-9]*\).*/\1/'`
747 if test -n "$XCODEBUILD_VERSION" && test "$XCODEBUILD_VERSION" -ge 620 ; then
753 dnl sdp was formerly in /Developer/Tools. As of Mac OS X 10.4 (Darwin 8),
754 dnl it has moved into /usr/bin.
755 AC_PATH_PROG(SDP, sdp, :, [$PATH:/usr/bin:/Developer/Tools])
759 AC_SUBST(GCC_VERSION)
760 AC_SUBST(XCODEBUILD_VERSION)
761 AC_SUBST(HAS_XCODE_2_1)
763 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
764 dnl that a universal binary is being produced.
765 AC_SUBST(UNIVERSAL_BINARY)
767 dnl ========================================================
768 dnl Check for MacOS deployment target version
769 dnl ========================================================
771 MOZ_ARG_ENABLE_STRING(macos-target,
772 [ --enable-macos-target=VER (default=10.4)
773 Set the minimum MacOS version needed at runtime],
774 [_MACOSX_DEPLOYMENT_TARGET=$enableval])
778 if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
779 dnl Use the specified value
780 export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
781 AC_DEFINE_UNQUOTED(__ENVIRONMENT_MAC_OS_X_VERION_MIN_REQUIRED__,$_MACOSX_DEPLOYMENT_TARGET)
782 elif test -z "$MACOSX_DEPLOYMENT_TARGET" ; then
783 dnl No value specified on the command line or in the environment,
784 dnl use the lesser of the application's minimum or the architecture's
786 export MACOSX_DEPLOYMENT_TARGET=10.4
791 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
793 dnl ========================================================
794 dnl = Mac OS X SDK support
795 dnl ========================================================
798 MOZ_ARG_WITH_STRING(macos-sdk,
799 [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
800 MACOS_SDK_DIR=$withval)
802 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
803 dnl NEXT_ROOT will be set and exported only if it's needed.
804 AC_SUBST(MACOS_SDK_DIR)
807 if test "$MACOS_SDK_DIR"; then
808 dnl Sync this section with the ones in NSPR and NSS.
809 dnl Changes to the cross environment here need to be accounted for in
810 dnl the libIDL checks (below) and xpidl build.
812 if test ! -d "$MACOS_SDK_DIR"; then
813 AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
814 specify a valid SDK. SDKs are installed when the optional cross-development
815 tools are selected during the Xcode/Developer Tools installation.])
818 GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
819 if test "$GCC_VERSION_MAJOR" -lt "4" ; then
820 SDK_C_INCLUDE="-isystem ${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION} -isystem ${MACOS_SDK_DIR}/usr/include -F${MACOS_SDK_DIR}/System/Library/Frameworks"
821 if test -d "${MACOS_SDK_DIR}/Library/Frameworks" ; then
822 SDK_C_INCLUDE="$SDK_C_INCLUDE -F${MACOS_SDK_DIR}/Library/Frameworks"
824 SDK_CXX_INCLUDE="-I${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION}/c++ -I${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION}/c++/ppc-darwin -I${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION}/c++/backward"
826 CFLAGS="$CFLAGS -nostdinc ${SDK_C_INCLUDE}"
827 CXXFLAGS="$CXXFLAGS -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
829 dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
830 CPP="$CPP -nostdinc ${SDK_C_INCLUDE}"
831 CXXCPP="$CXXCPP -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
833 dnl ld support for -syslibroot is compiler-agnostic, but only available
834 dnl on Tiger. Although it's possible to switch on the build host's
835 dnl OS release to use ld -syslibroot when available, ld -syslibroot will
836 dnl cause warnings as long as NEXT_ROOT is set. NEXT_ROOT should be
837 dnl set because both the compiler and linker use it.
838 LIBS="-L${MACOS_SDK_DIR}/usr/lib/gcc/darwin -L${MACOS_SDK_DIR}/usr/lib/gcc/darwin/${GCC_VERSION_FULL} -L${MACOS_SDK_DIR}/usr/lib $LIBS"
839 export NEXT_ROOT=$MACOS_SDK_DIR
841 if test -n "$CROSS_COMPILE" ; then
842 dnl NEXT_ROOT will be in the environment, but it shouldn't be set for
843 dnl the build host. HOST_CXX is presently unused.
844 HOST_CC="NEXT_ROOT= $HOST_CC"
845 HOST_CXX="NEXT_ROOT= $HOST_CXX"
848 dnl gcc >= 4.0 uses different paths than above, but knows how to find
850 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
851 CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
853 dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
854 CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
855 CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
857 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
858 dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
859 dnl that supports -syslibroot. Don't set NEXT_ROOT because it will
860 dnl be ignored and cause warnings when -syslibroot is specified.
861 dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
862 dnl the -isysroot it receives, so this is only needed with 4.0.0.
863 LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
868 AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
870 AC_TRY_COMPILE([#include <new>
871 int main() { return 0; }],
875 AC_MSG_RESULT($result)
877 if test "$result" = "no" ; then
878 AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
882 fi # COMPILE_ENVIRONMENT
884 dnl Be sure the make we use is GNU make.
885 dnl on win32, gmake.exe is the generally the wrong version
887 cygwin*|mingw*|mks*|msvc*)
888 AC_PATH_PROGS(MAKE, $MAKE make gmake, :)
891 AC_PATH_PROGS(MAKE, $MAKE gmake make, :)
894 _make_try=`$MAKE --version 2>/dev/null | grep GNU`
895 if test ! "$_make_try"
898 echo "*** $MAKE is not GNU Make. You will not be able to build Mozilla without GNU Make."
902 dnl Now exit if version if < MAKE_VERSION
904 echo 'all: ; @echo $(MAKE_VERSION)' > dummy.mk
905 _make_vers=`$MAKE --no-print-directory -f dummy.mk all 2>/dev/null`
907 _MAKE_MAJOR_VERSION=`echo $_make_vers | $AWK -F\. '{ print $1 }'`
908 _MAKE_MINOR_VERSION=`echo $_make_vers | $AWK -F\. '{ print $2 }'`
909 MAKE_MAJOR_VERSION=`echo $MAKE_VERSION | $AWK -F\. '{ print $1 }'`
910 MAKE_MINOR_VERSION=`echo $MAKE_VERSION | $AWK -F\. '{ print $2 }'`
911 if test "$_MAKE_MAJOR_VERSION" -lt "$MAKE_MAJOR_VERSION" || \
912 test "$_MAKE_MAJOR_VERSION" = "$MAKE_MAJOR_VERSION" -a \
913 "$_MAKE_MINOR_VERSION" -lt "$MAKE_MINOR_VERSION"; then
914 AC_MSG_ERROR([GNU Make $MAKE_VERSION or higher is required to build Mozilla.])
918 if test "$COMPILE_ENVIRONMENT"; then
922 dnl Check in X11 include directory too.
923 if test "$no_x" != "yes"; then
924 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
929 fi # COMPILE_ENVIRONMENT
931 dnl ========================================================
932 dnl set the defaults first
933 dnl ========================================================
952 MOZ_USER_DIR=".mozilla"
954 HOST_AR_FLAGS='$(AR_FLAGS)'
957 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/jpeg)'
959 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,$(DEPTH)/modules/zlib/src)'
961 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
963 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/modules/libimg/png)'
965 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs'
966 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxpcom -lxpcom_core'
967 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(PREFIX)/lib'
968 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxpcom'
969 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) -lxul'
970 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
971 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
973 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
974 MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom_compat'
978 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
979 MOZ_GFX_TOOLKIT='$(MOZ_WIDGET_TOOLKIT)'
981 MOZ_ENABLE_POSTSCRIPT=1
983 if test -n "$CROSS_COMPILE"; then
984 OS_TARGET="${target_os}"
985 OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
987 case "${target_os}" in
988 linux*) OS_ARCH=Linux OS_TARGET=Linux ;;
989 kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
990 solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
991 mingw*) OS_ARCH=WINNT ;;
992 wince*) OS_ARCH=WINCE ;;
993 darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;;
997 OS_ARCH=`uname -s | sed -e 's|/|_|g'`
998 OS_RELEASE=`uname -r`
1001 # Before this used `uname -m` when not cross compiling
1002 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1003 OS_TEST="${target_cpu}"
1007 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1009 #######################################################################
1010 # Master "Core Components" macros for getting the OS target #
1011 #######################################################################
1014 # Note: OS_TARGET should be specified on the command line for gmake.
1015 # When OS_TARGET=WIN95 is specified, then a Windows 95 target is built.
1016 # The difference between the Win95 target and the WinNT target is that
1017 # the WinNT target uses Windows NT specific features not available
1018 # in Windows 95. The Win95 target will run on Windows NT, but (supposedly)
1019 # at lesser performance (the Win95 target uses threads; the WinNT target
1022 # When OS_TARGET=WIN16 is specified, then a Windows 3.11 (16bit) target
1023 # is built. See: win16_3.11.mk for lots more about the Win16 target.
1025 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1026 # cross-compilation.
1030 # The following hack allows one to build on a WIN95 machine (as if
1031 # s/he were cross-compiling on a WINNT host for a WIN95 target).
1032 # It also accomodates for MKS's uname.exe. If you never intend
1033 # to do development on a WIN95 machine, you don't need this hack.
1048 CYGWIN_9*|CYGWIN_ME*)
1049 OS_ARCH='CYGWIN_NT-4.0'
1055 # Define and override various archtecture-specific variables, including
1064 case "$HOST_OS_ARCH" in
1065 cygwin*|mingw*|mks*|msvc*)
1084 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1087 HOST_OS_ARCH=UNIXWARE
1099 HOST_OS_ARCH=OpenVMS
1109 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1113 HOST_OS_ARCH=UNIXWARE
1123 # If uname -s returns "Windows_NT", we assume that we are using
1124 # the uname.exe in MKS toolkit.
1126 # The -r option of MKS uname only returns the major version number.
1127 # So we need to use its -v option to get the minor version number.
1128 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1132 OS_MINOR_RELEASE=`uname -v`
1133 if test "$OS_MINOR_RELEASE" = "00"; then
1136 OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1138 CYGWIN32_NT|CYGWIN_NT*|MINGW*_NT*)
1140 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
1141 # the uname.exe in the Cygwin tools.
1142 # Prior to the Beta 20 release, Cygwin was called GNU-Win32.
1143 # If uname -s returns "CYGWIN32/NT", we assume that we are using
1144 # the uname.exe in the GNU-Win32 tools.
1145 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1146 # the uname.exe in the MSYS tools.
1148 OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1153 OS_RELEASE=`uname -v`.`uname -r`
1166 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1170 OS_RELEASE=`uname -v`
1194 OS_RELEASE=`uname -v`
1200 OS_RELEASE=`uname -v`
1203 if test "$OS_TARGET" != "NTO"; then
1205 OS_RELEASE=`uname -v | sed 's/^\([0-9]\)\([0-9]*\)$/\1.\2/'`
1214 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1220 OS_RELEASE=`uname -v`
1227 case "${target_cpu}" in
1235 if test -z "$CROSS_COMPILE" ; then
1243 if test "$OS_ARCH" = "NCR"; then
1245 OS_RELEASE=`awk '{print $3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$/\2.\3/'`
1249 # Only set CPU_ARCH if we recognize the value of OS_TEST
1260 Alpha | alpha | ALPHA)
1277 if test -z "$OS_TARGET"; then
1280 if test "$OS_TARGET" = "WIN95"; then
1283 if test "$OS_TARGET" = "WIN16"; then
1286 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1288 dnl ========================================================
1289 dnl GNU specific defaults
1290 dnl ========================================================
1291 if test "$GNU_CC"; then
1292 # FIXME: Let us build with strict aliasing. bug 414641.
1293 CFLAGS="$CFLAGS -fno-strict-aliasing"
1294 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1295 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1296 DSO_LDOPTS='-shared'
1297 if test "$GCC_USE_GNU_LD"; then
1298 # Don't allow undefined symbols in libraries
1299 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1301 WARNINGS_AS_ERRORS='-Werror'
1303 DSO_PIC_CFLAGS='-fPIC'
1304 _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
1305 _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
1306 _MOZ_EXCEPTIONS_FLAGS_ON='-fhandle-exceptions'
1307 _MOZ_EXCEPTIONS_FLAGS_OFF='-fno-handle-exceptions'
1309 # Turn on GNU specific features
1310 # -Wall - turn on all warnings
1311 # -pedantic - make compiler warn about non-ANSI stuff, and
1312 # be a little bit stricter
1313 # Warnings slamm took out for now (these were giving more noise than help):
1314 # -Wbad-function-cast - warns when casting a function to a new return type
1315 # -Wshadow - removed because it generates more noise than help --pete
1316 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
1317 if test -z "$INTEL_CC"; then
1318 # Don't use -Wcast-align with ICC
1320 # And don't use it on hppa, ia64, sparc, since it's noisy there
1321 hppa | ia64 | sparc)
1324 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1329 dnl Turn pedantic on but disable the warnings for long long
1332 if test -z "$INTEL_CC"; then
1333 _IGNORE_LONG_LONG_WARNINGS=1
1334 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
1336 _IGNORE_LONG_LONG_WARNINGS=
1340 _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1341 _USE_CPP_INCLUDE_FLAG=1
1343 MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1344 MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1346 DSO_LDOPTS='-shared'
1347 if test "$GNU_LD"; then
1348 # Don't allow undefined symbols in libraries
1349 DSO_LDOPTS="$DSO_LDOPTS -z defs"
1353 DSO_PIC_CFLAGS='-KPIC'
1354 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1357 if test "$GNU_CXX"; then
1358 # FIXME: Let us build with strict aliasing. bug 414641.
1359 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
1360 # Turn on GNU specific features
1361 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
1362 if test -z "$INTEL_CC"; then
1363 # Don't use -Wcast-align with ICC
1365 # And don't use it on hppa, ia64, sparc, since it's noisy there
1366 hppa | ia64 | sparc)
1369 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1374 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1375 _USE_CPP_INCLUDE_FLAG=1
1377 AC_CACHE_CHECK(whether the compiler supports -Wno-invalid-offsetof,
1378 ac_has_wno_invalid_offsetof,
1382 _SAVE_CXXFLAGS="$CXXFLAGS"
1383 CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1386 ac_has_wno_invalid_offsetof="yes",
1387 ac_has_wno_invalid_offsetof="no")
1388 CXXFLAGS="$_SAVE_CXXFLAGS"
1391 if test "$ac_has_wno_invalid_offsetof" = "yes"; then
1392 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1395 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1398 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1399 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1400 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1401 dnl normal behavior.
1402 dnl ========================================================
1404 MKSHLIB_UNFORCE_ALL=
1406 if test "$COMPILE_ENVIRONMENT"; then
1407 if test "$GNU_CC"; then
1408 AC_MSG_CHECKING(whether ld has archive extraction flags)
1409 AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1410 [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1411 ac_cv_mkshlib_force_and_unforce="no"
1412 exec 3<&0 <<LOOP_INPUT
1413 force="-Wl,--whole-archive"; unforce="-Wl,--no-whole-archive"
1414 force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1415 force="-Wl,-all"; unforce="-Wl,-none"
1422 AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1425 LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1427 if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1431 eval $ac_cv_mkshlib_force_and_unforce
1432 MKSHLIB_FORCE_ALL=$force
1433 MKSHLIB_UNFORCE_ALL=$unforce
1436 fi # COMPILE_ENVIRONMENT
1438 dnl =================================================================
1439 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1440 dnl which is bad when cross compiling.
1441 dnl =================================================================
1442 if test "$COMPILE_ENVIRONMENT"; then
1443 configure_static_assert_macros='
1444 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1445 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1446 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1449 dnl test that the macros actually work:
1450 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1451 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1454 ac_cv_static_assertion_macros_work="yes"
1455 AC_TRY_COMPILE([$configure_static_assert_macros],
1456 [CONFIGURE_STATIC_ASSERT(1)],
1458 ac_cv_static_assertion_macros_work="no")
1459 AC_TRY_COMPILE([$configure_static_assert_macros],
1460 [CONFIGURE_STATIC_ASSERT(0)],
1461 ac_cv_static_assertion_macros_work="no",
1464 AC_TRY_COMPILE([$configure_static_assert_macros],
1465 [CONFIGURE_STATIC_ASSERT(1)],
1467 ac_cv_static_assertion_macros_work="no")
1468 AC_TRY_COMPILE([$configure_static_assert_macros],
1469 [CONFIGURE_STATIC_ASSERT(0)],
1470 ac_cv_static_assertion_macros_work="no",
1474 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1475 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1476 AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1478 fi # COMPILE_ENVIRONMENT
1480 dnl ========================================================
1481 dnl Checking for 64-bit OS
1482 dnl ========================================================
1483 if test "$COMPILE_ENVIRONMENT"; then
1486 AC_MSG_CHECKING(for 64-bit OS)
1487 AC_TRY_COMPILE([$configure_static_assert_macros],
1488 [CONFIGURE_STATIC_ASSERT(sizeof(long) == 8)],
1489 result="yes", result="no")
1490 AC_MSG_RESULT("$result")
1491 if test "$result" = "yes"; then
1492 AC_DEFINE(HAVE_64BIT_OS)
1495 AC_SUBST(HAVE_64BIT_OS)
1497 fi # COMPILE_ENVIRONMENT
1499 dnl ========================================================
1500 dnl Enable high-memory support on OS/2 by default.
1501 dnl ========================================================
1502 MOZ_OS2_HIGH_MEMORY=1
1503 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1504 [ --disable-os2-high-mem Disable high-memory support on OS/2],
1505 MOZ_OS2_HIGH_MEMORY=,
1506 MOZ_OS2_HIGH_MEMORY=1 )
1507 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1509 dnl ========================================================
1510 dnl System overrides of the defaults for host
1511 dnl ========================================================
1514 HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
1515 HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
1516 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1519 *cygwin*|*mingw*|*mks*|*msvc*|*wince)
1520 if test -n "$_WIN32_MSVC"; then
1522 HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1523 HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1524 HOST_RANLIB='echo ranlib'
1526 HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
1528 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
1529 HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1530 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1531 HOST_BIN_SUFFIX=.exe
1534 dnl MinGW/MSYS does not need CYGWIN_WRAPPER
1537 CYGWIN_WRAPPER="${srcdir}/build/cygwin-wrapper"
1538 if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
1540 CYGWIN_WRAPPER="${_pwd}/${srcdir}/build/cygwin-wrapper"
1542 if test "`${PERL} -v | grep -c cygwin 2>/dev/null`" = 0; then
1544 PERL="${CYGWIN_WRAPPER} $PERL"
1547 if test "`${PYTHON} -c 'import sys; print sys.platform;'`" != "cygwin"; then
1548 PYTHON="${CYGWIN_WRAPPER} $PYTHON"
1555 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1556 HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1557 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1558 MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
1559 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL -lobjc'
1562 *-linux*|*-kfreebsd*-gnu)
1563 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1564 HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1565 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1569 HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1570 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1571 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1572 HOST_BIN_SUFFIX=.exe
1577 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1578 HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
1579 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1583 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1584 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1588 dnl Get mozilla version from central milestone file
1589 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1591 dnl Get version of various core apps from the version files.
1592 FIREFOX_VERSION=`cat $topsrcdir/browser/config/version.txt`
1594 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1595 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1597 dnl ========================================================
1598 dnl System overrides of the defaults for target
1599 dnl ========================================================
1604 if test ! "$GNU_CC"; then
1605 if test ! "$HAVE_64BIT_OS"; then
1606 # Compiling with Visual Age C++ object model compat is the
1607 # default. To compile with object model ibm, add
1608 # AIX_OBJMODEL=ibm to .mozconfig.
1609 if test "$AIX_OBJMODEL" = "ibm"; then
1610 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1617 AC_SUBST(AIX_OBJMODEL)
1618 DSO_LDOPTS='-qmkshrobj=1'
1619 DSO_CFLAGS='-qflag=w:w'
1621 LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1622 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
1624 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1625 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1626 if test "$COMPILE_ENVIRONMENT"; then
1629 AC_MSG_CHECKING([for VisualAge C++ compiler version >= 5.0.2.0])
1631 [#if (__IBMCPP__ < 502)
1632 #error "Bad compiler"
1634 _BAD_COMPILER=,_BAD_COMPILER=1)
1635 if test -n "$_BAD_COMPILER"; then
1637 AC_MSG_ERROR([VisualAge C++ version 5.0.2.0 or higher is required to build.])
1639 AC_MSG_RESULT([yes])
1642 TARGET_COMPILER_ABI="ibmc"
1643 CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1644 CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1647 case "${target_os}" in
1652 if test "$COMPILE_ENVIRONMENT"; then
1653 AC_CHECK_HEADERS(sys/inttypes.h)
1655 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1660 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1661 _PLATFORM_DEFAULT_TOOLKIT="cairo-beos"
1662 DSO_LDOPTS='-nostart'
1663 TK_LIBS='-lbe -lroot'
1665 if test "$COMPILE_ENVIRONMENT"; then
1666 AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
1667 AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
1669 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
1670 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
1673 MOZ_USER_DIR="Mozilla"
1677 dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
1679 _IGNORE_LONG_LONG_WARNINGS=
1687 _WARNINGS_CFLAGS="-Wall"
1688 _WARNINGS_CXXFLAGS="-Wall"
1689 # The test above doesn't work properly, at least on 3.1.
1690 MKSHLIB_FORCE_ALL=''
1691 MKSHLIB_UNFORCE_ALL=''
1697 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1698 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1699 MOZ_OPTIMIZE_FLAGS="-O2"
1701 CFLAGS="$CFLAGS -fpascal-strings -fno-common"
1702 CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
1705 STRIP="$STRIP -x -S"
1706 _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1707 MOZ_ENABLE_POSTSCRIPT=
1708 TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1709 LDFLAGS="$LDFLAGS -framework Cocoa"
1710 # The ExceptionHandling framework is needed for Objective-C exception
1711 # logging code in nsObjCExceptions.h. Currently we only use that in debug
1713 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"
1714 # set MACOSX to generate lib/mac/MoreFiles/Makefile
1717 dnl DTrace and -dead_strip don't interact well. See bug 403132.
1718 dnl ===================================================================
1719 if test "x$enable_dtrace" = "xyes"; then
1720 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
1722 dnl check for the presence of the -dead_strip linker flag
1723 AC_MSG_CHECKING([for -dead_strip option to ld])
1724 _SAVE_LDFLAGS=$LDFLAGS
1725 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
1726 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
1727 if test -n "$_HAVE_DEAD_STRIP" ; then
1728 AC_MSG_RESULT([yes])
1729 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
1734 LDFLAGS=$_SAVE_LDFLAGS
1739 if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` != "elf"; then
1740 DLL_SUFFIX=".so.1.0"
1741 DSO_LDOPTS="-shared"
1743 if test ! "$GNU_CC"; then
1744 DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
1746 # Can't have force w/o an unforce.
1747 # # Hack for FreeBSD 2.2
1748 # if test -z "$MKSHLIB_FORCE_ALL"; then
1749 # MKSHLIB_FORCE_ALL='-Wl,-Bforcearchive'
1750 # MKSHLIB_UNFORCE_ALL=''
1756 if test ! "$GNU_CC"; then
1757 DSO_LDOPTS='-b -Wl,+s'
1760 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
1761 MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
1762 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1764 DSO_LDOPTS='-b -E +s'
1765 MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1766 MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1768 MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
1769 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1774 DSO_LDOPTS='-elf -shared'
1776 if test "$GNU_CC"; then
1777 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1778 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1779 MKSHLIB_FORCE_ALL='-Wl,-all'
1780 MKSHLIB_UNFORCE_ALL='-Wl,-none'
1781 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1783 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1784 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1785 MKSHLIB_FORCE_ALL='-all'
1786 MKSHLIB_UNFORCE_ALL='-none'
1792 dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must*
1793 dnl compile and link using -n32
1795 TARGET_COMPILER_ABI=n32
1796 DSO_LDOPTS='-elf -shared'
1797 MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1798 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1799 _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
1800 _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
1801 if test "$GNU_CC"; then
1802 MKSHLIB_FORCE_ALL='-Wl,-all'
1803 MKSHLIB_UNFORCE_ALL='-Wl,-none'
1804 _WARNINGS_CFLAGS="-Wall"
1805 _WARNINGS_CXXFLAGS="-Wall"
1806 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1808 MKSHLIB_FORCE_ALL='-all'
1809 MKSHLIB_UNFORCE_ALL='-none'
1815 CFLAGS="$CFLAGS -woff 3262 -G 4"
1816 CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
1817 if test -n "$USE_N32"; then
1818 ASFLAGS="$ASFLAGS -n32"
1819 CFLAGS="$CFLAGS -n32"
1820 CXXFLAGS="$CXXFLAGS -n32"
1821 LDFLAGS="$LDFLAGS -n32"
1823 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1824 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
1827 if test -z "$GNU_CXX"; then
1833 if test "$GNU_CC"; then
1834 GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
1835 case $GCC_VERSION in
1837 # -Os is broken on gcc 4.1.x and 4.2.x, we need to tweak it to get good results.
1838 MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
1842 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1843 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions $MOZ_OPTIMIZE_SIZE_TWEAK"
1844 MOZ_DEBUG_FLAGS="-g -fno-inline" # most people on linux use gcc/gdb,
1845 # and that combo is not yet good at
1846 # debugging inlined functions (even
1847 # when using DWARF2 as the debugging
1852 case "${target_cpu}" in
1854 CFLAGS="$CFLAGS -mieee"
1855 CXXFLAGS="$CXXFLAGS -mieee"
1859 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1
1862 CFLAGS="$CFLAGS -Wa,-xgot"
1863 CXXFLAGS="$CXXFLAGS -Wa,-xgot"
1870 MOZ_TOOLS_DIR=`echo $MOZ_TOOLS`
1872 AR_EXTRACT="$AR -extract"
1874 AR_FLAGS='-OUT:"$@"'
1876 if test -z "$AS_BIN"; then
1883 if test -z "$RC"; then
1886 # certain versions of cygwin's makedepend barf on the
1887 # #include <string> vs -I./dist/include/string issue so don't use it
1893 HOST_AR='lib -OUT:$@'
1894 HOST_RANLIB='echo ranlib'
1895 HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
1898 WARNINGS_AS_ERRORS='-WX'
1899 MOZ_OPTIMIZE_FLAGS='-O1'
1900 AR_FLAGS='-NOLOGO -OUT:"$@"'
1902 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1903 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1906 DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
1907 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
1909 IMPORT_LIB_SUFFIX=lib
1911 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
1914 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1915 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1917 MKSHLIB_UNFORCE_ALL=
1918 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1919 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1920 MOZ_DEBUG_FLAGS='-Zi'
1921 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
1923 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
1924 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
1926 RANLIB='echo not_ranlib'
1927 STRIP='echo not_strip'
1928 TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
1931 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
1933 LIBIDL_CFLAGS="-I$MOZ_TOOLS_DIR/include ${GLIB_CFLAGS}"
1934 LIBIDL_LIBS="$MOZ_TOOLS_DIR/lib/libidl-0.6_s.lib $MOZ_TOOLS_DIR/lib/glib-1.2_s.lib"
1937 AC_DEFINE(HAVE_SNPRINTF)
1943 AC_DEFINE(HW_THREADS)
1944 AC_DEFINE(STDC_HEADERS)
1945 AC_DEFINE(NEW_H, <new>)
1946 AC_DEFINE(WIN32_LEAN_AND_MEAN)
1948 TARGET_MD_ARCH=win32
1949 _PLATFORM_DEFAULT_TOOLKIT='windows'
1952 MOZ_ENABLE_POSTSCRIPT=
1953 MOZ_USER_DIR="Mozilla"
1957 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
1962 # certain versions of cygwin's makedepend barf on the
1963 # #include <string> vs -I./dist/include/string issue so don't use it
1965 if test -n "$GNU_CC"; then
1966 CC="$CC -mno-cygwin"
1967 CXX="$CXX -mno-cygwin"
1968 CPP="$CPP -mno-cygwin"
1969 CFLAGS="$CFLAGS -mms-bitfields"
1970 CXXFLAGS="$CXXFLAGS -mms-bitfields"
1971 DSO_LDOPTS='-shared'
1972 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1973 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1975 # Use temp file for windres (bug 213281)
1976 RCFLAGS='-O coff --use-temp-file'
1977 # mingw doesn't require kernel32, user32, and advapi32 explicitly
1978 LIBS="$LIBS -lgdi32 -lwinmm -lwsock32"
1979 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/lib -ljs$(MOZ_BITS)$(VERSION_NUMBER)'
1981 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core'
1982 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom'
1984 IMPORT_LIB_SUFFIX=dll.a
1986 TARGET_COMPILER_ABI=msvc
1990 AR='lib -NOLOGO -OUT:"$@"'
1992 RANLIB='echo not_ranlib'
1993 STRIP='echo not_strip'
1998 GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
2003 IMPORT_LIB_SUFFIX=lib
2004 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(PDBFILE) $(DSO_LDOPTS)'
2005 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(PDBFILE) $(DSO_LDOPTS)'
2007 MKSHLIB_UNFORCE_ALL=
2008 DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2009 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(PDBFILE)"
2010 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(PDBFILE)"
2011 LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
2012 MOZ_DEBUG_FLAGS='-Zi'
2013 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2014 WARNINGS_AS_ERRORS='-WX'
2015 MOZ_OPTIMIZE_FLAGS='-O1'
2016 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
2018 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
2019 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
2020 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2021 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2022 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
2023 if test $_MSC_VER -ge 1400; then
2024 LDFLAGS="$LDFLAGS -NXCOMPAT -SAFESEH"
2025 dnl For profile-guided optimization
2026 PROFILE_GEN_CFLAGS="-GL"
2027 PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2028 dnl XXX: PGO builds can fail with warnings treated as errors,
2029 dnl specifically "no profile data available" appears to be
2030 dnl treated as an error sometimes. This might be a consequence
2031 dnl of using WARNINGS_AS_ERRORS in some modules, combined
2032 dnl with the linker doing most of the work in the whole-program
2033 dnl optimization/PGO case. I think it's probably a compiler bug,
2034 dnl but we work around it here.
2035 PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2036 dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2037 dnl Probably also a compiler bug, but what can you do?
2038 PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2039 if test -n "$_USE_DYNAMICBASE"; then
2040 LDFLAGS="$LDFLAGS -DYNAMICBASE"
2044 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,jpeg$(MOZ_BITS)$(VERSION_NUMBER),$(DEPTH)/jpeg)'
2045 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,png,$(DEPTH)/modules/libimg/png)'
2046 AC_DEFINE(HAVE_SNPRINTF)
2052 AC_DEFINE(HW_THREADS)
2053 AC_DEFINE(STDC_HEADERS)
2054 AC_DEFINE(NEW_H, <new>)
2055 AC_DEFINE(WIN32_LEAN_AND_MEAN)
2056 TARGET_MD_ARCH=win32
2057 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2060 MOZ_ENABLE_POSTSCRIPT=
2061 MOZ_USER_DIR="Mozilla"
2063 dnl Hardcode to win95 for now - cls
2064 TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2066 dnl set NO_X11 defines here as the general check is skipped on win32
2070 dnl MinGW/MSYS doesn't provide or need cygpath
2075 MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2077 *-cygwin*|*-msvc*|*-mks*)
2078 CYGPATH_W="cygpath -a -w"
2079 CYGPATH_S="sed -e s|\\\\|/|g"
2080 MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
2084 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2086 if test -z "$MOZ_TOOLS"; then
2087 AC_MSG_ERROR([MOZ_TOOLS is not set])
2090 MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd`
2091 if test "$?" != "0" || test -z "$MOZ_TOOLS_DIR"; then
2092 AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2094 if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_DIR/bin:"` = 0; then
2095 AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2097 MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
2099 if test -n "$GLIB_PREFIX"; then
2100 _GLIB_PREFIX_DIR=`cd $GLIB_PREFIX && pwd`
2101 if test "$?" = "0"; then
2102 if test `echo ${PATH}: | grep -ic "$_GLIB_PREFIX_DIR/bin:"` = 0; then
2103 AC_MSG_ERROR([GLIB_PREFIX must be in your \$PATH.])
2105 _GLIB_PREFIX_DIR=`$CYGPATH_W $_GLIB_PREFIX_DIR | $CYGPATH_S`
2107 AC_MSG_ERROR([GLIB_PREFIX is set but "${GLIB_PREFIX}" is not a directory.])
2110 _GLIB_PREFIX_DIR=$MOZ_TOOLS_DIR
2112 if test ! -f "${_GLIB_PREFIX_DIR}/include/glib.h"; then
2113 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/include/glib.h .])
2115 GLIB_CFLAGS="-I${_GLIB_PREFIX_DIR}/include"
2116 if test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"; then
2117 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"
2118 elif test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"; then
2119 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"
2121 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/lib/glib-1.2.lib or $_GLIB_PREFIX_DIR/lib/glib-1.2_s.lib])
2124 if test -n "$LIBIDL_PREFIX"; then
2125 _LIBIDL_PREFIX_DIR=`cd $LIBIDL_PREFIX && pwd`
2126 if test "$?" = "0"; then
2127 if test `echo ${PATH}: | grep -ic "$_LIBIDL_PREFIX_DIR/bin:"` = 0; then
2128 AC_MSG_ERROR([LIBIDL_PREFIX must be in your \$PATH.])
2130 _LIBIDL_PREFIX_DIR=`$CYGPATH_W $_LIBIDL_PREFIX_DIR | $CYGPATH_S`
2132 AC_MSG_ERROR([LIBIDL_PREFIX is set but "${LIBIDL_PREFIX}" is not a directory.])
2135 _LIBIDL_PREFIX_DIR=$MOZ_TOOLS_DIR
2137 if test ! -f "${_LIBIDL_PREFIX_DIR}/include/libIDL/IDL.h"; then
2138 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/include/libIDL/IDL.h .])
2140 LIBIDL_CFLAGS="-I${_LIBIDL_PREFIX_DIR}/include ${GLIB_CFLAGS}"
2141 if test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"; then
2142 LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"
2144 elif test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"; then
2145 LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"
2147 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/lib/libidl-0.6.lib or $_LIBIDL_PREFIX_DIR/lib/libidl-0.6_s.lib])
2149 LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2152 *) # else cross-compiling
2153 if test -n "$GLIB_PREFIX"; then
2154 GLIB_CFLAGS="-I${GLIB_PREFIX}/include"
2155 if test -f "${GLIB_PREFIX}/lib/glib-1.2_s.lib"; then
2156 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2_s.lib"
2157 elif test -f "${GLIB_PREFIX}/lib/glib-1.2.lib"; then
2158 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2.lib"
2160 AC_MSG_ERROR([Cannot find $GLIB_PREFIX/lib/glib-1.2.lib or $GLIB_PREFIX/lib/glib-1.2_s.lib])
2163 if test -n "$LIBIDL_PREFIX"; then
2164 LIBIDL_CFLAGS="-I${LIBIDL_PREFIX}/include ${GLIB_CFLAGS}"
2165 if test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"; then
2166 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"
2168 elif test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"; then
2169 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"
2171 AC_MSG_ERROR([Cannot find $LIBIDL_PREFIX/lib/libIDL-0.6.lib or $LIBIDL_PREFIX/lib/libIDL-0.6_s.lib])
2174 LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2181 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])
2185 AC_CHECK_HEADERS(mmintrin.h oleacc.idl)
2189 AC_CHECK_HEADERS(atlbase.h wpcapi.h)
2205 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2212 CFLAGS="$CFLAGS -Dunix"
2213 CXXFLAGS="$CXXFLAGS -Dunix"
2214 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2216 DSO_PIC_CFLAGS='-fPIC -DPIC'
2217 DSO_LDOPTS='-shared'
2218 BIN_FLAGS='-Wl,--export-dynamic'
2220 DSO_PIC_CFLAGS='-fPIC -DPIC'
2221 DLL_SUFFIX=".so.1.0"
2222 DSO_LDOPTS='-shared'
2224 # This will fail on a.out systems prior to 1.5.1_ALPHA.
2225 MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2226 MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2227 if test "$LIBRUNPATH"; then
2228 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2230 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2231 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2236 AC_DEFINE(_QNX_SOURCE)
2239 WARNINGS_AS_ERRORS=''
2240 MOZ_OPTIMIZE_FLAGS="-O"
2241 MOZ_DEBUG_FLAGS="-gstabs"
2244 LIBS="$LIBS -lsocket -lstdc++"
2245 _DEFINES_CFLAGS='-Wp,-include -Wp,$(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
2246 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -Wp,-include -Wp,$(DEPTH)/mozilla-config.h -D_POSIX_C_SOURCE=199506'
2247 if test "$with_x" != "yes"
2249 _PLATFORM_DEFAULT_TOOLKIT="photon"
2250 TK_CFLAGS='-I/usr/include/photon'
2253 case "${target_cpu}" in
2255 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
2258 case "${host_cpu}" in
2266 DLL_SUFFIX=".so.1.0"
2268 DSO_PIC_CFLAGS='-fPIC'
2269 DSO_LDOPTS='-shared -fPIC'
2270 if test "$LIBRUNPATH"; then
2271 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2276 AC_DEFINE(NO_PW_GECOS)
2277 AC_DEFINE(NO_UDSOCK)
2278 AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
2280 MKSHLIB_FORCE_ALL='-all'
2281 MKSHLIB_UNFORCE_ALL='-none'
2283 AS_DASH_C_FLAG='-Wc/names=as_is'
2285 DSO_LDOPTS='-shared -auto_symvec'
2287 MOZ_DEBUG_LDFLAGS='-g'
2289 CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
2290 CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
2295 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2296 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2304 IMPORT_LIB_SUFFIX=lib
2307 _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2308 MOZ_ENABLE_POSTSCRIPT=
2311 MOZ_USER_DIR="Mozilla"
2313 if test "$MOZTOOLS"; then
2314 MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2316 AC_MSG_ERROR([MOZTOOLS is not set])
2320 if test -n "$GNU_CC"; then
2322 AC_DEFINE(XP_OS2_EMX)
2323 AC_DEFINE(OS2EMX_PLAIN_CHAR)
2324 AC_DEFINE(TCPV40HDRS)
2327 CFLAGS="$CFLAGS -Zomf"
2328 CXXFLAGS="$CXXFLAGS -Zomf"
2330 BIN_FLAGS='-Zlinker /ST:0x100000'
2334 WARNINGS_AS_ERRORS='-Werror'
2335 MOZ_DEBUG_FLAGS="-g -fno-inline"
2336 MOZ_OPTIMIZE_FLAGS="-O2"
2337 MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2338 MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcomct.lib'
2339 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
2340 LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2341 if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2342 DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2343 LDFLAGS="$LDFLAGS -Zhigh-mem"
2344 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2345 AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2348 # GCC for OS/2 currently predefines these, but we don't want them
2349 _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2350 _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2352 AC_CACHE_CHECK(for __declspec(dllexport),
2354 [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2356 ac_os2_declspec="yes",
2357 ac_os2_declspec="no")])
2358 if test "$ac_os2_declspec" = "yes"; then
2360 MOZ_OS2_USE_DECLSPEC='1'
2363 # Visual Age C++ build
2364 elif test "$VACPP" = "yes"; then
2365 MOZ_BUILD_ROOT=`pwd -D`
2368 AR_FLAGS='/NOL /NOI /O:$(subst /,\\,$@)'
2377 CFLAGS="/Q /qlibansi /Gm+ /Su4 /Mp /Tl9"
2378 CXXFLAGS="/Q /qlibansi /Gm+ /Su4 /Mp /Tl9 /Gx+"
2379 MOZ_DEBUG_FLAGS="/Ti+"
2380 WARNINGS_AS_ERRORS='-WX'
2381 MOZ_OPTIMIZE_FLAGS="/O+ /Gl+ /G5 /qarch=pentium"
2383 MOZ_DEBUG_LDFLAGS="/DE"
2384 MOZ_OPTIMIZE_LDFLAGS="/OPTFUNC /EXEPACK:2 /PACKCODE /PACKDATA"
2387 IMPLIB='implib /NOL /NOI'
2388 FILTER='cppfilt -q -B -P'
2389 AC_DEFINE(NO_ANSI_KEYWORDS)
2392 AC_DEFINE(XP_OS2_VACPP)
2393 AC_DEFINE(TCPV40HDRS)
2394 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2395 AC_DEFINE(STDC_HEADERS)
2396 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2397 MKSHLIB='$(LD) $(DSO_LDOPTS)'
2398 MKCSHLIB='$(LD) $(DSO_LDOPTS)'
2399 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2400 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcomct.lib'
2401 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
2402 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2407 if test "$GNU_CC"; then
2408 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2409 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2412 MOZ_DEBUG_FLAGS='-g'
2413 ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
2414 CFLAGS="$CFLAGS -ieee"
2415 CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee -ptr $(DIST)/cxx_repository'
2416 DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
2419 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2420 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2421 MKSHLIB_FORCE_ALL='-all'
2422 MKSHLIB_UNFORCE_ALL='-none'
2423 dnl Might fix the libxpcom.so breakage on this platform as well....
2424 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2425 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2427 if test -z "$GNU_CXX"; then
2430 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2434 DIRENT_INO=d_stat.st_ino
2435 dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
2436 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2437 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2438 dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
2439 AC_DEFINE(STDC_HEADERS)
2440 if test "$no_x" = "yes"; then
2441 _PLATFORM_DEFAULT_TOOLKIT='photon'
2442 TK_CFLAGS='-I/usr/nto/include/photon'
2443 TK_LIBS='-lphoton -lphrender'
2448 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2449 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2450 CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
2451 if test ! "$GNU_CC"; then
2456 dnl the qsort routine under solaris is faulty
2459 TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2461 # $ORIGIN/.. is for shared libraries under components/ to locate shared
2462 # libraries one level up (e.g. libnspr4.so)
2463 LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..'"
2464 LIBS="-lCrun -lCstd $LIBS"
2466 if test -z "$GNU_CC"; then
2469 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2471 if test "$CPU_ARCH" != "sparc"; then
2472 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all"
2473 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife -norunpath"
2475 # Do not use -xbuiltin on SPARC to get around a bug of compiler
2476 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%none"
2477 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%none -features=tmplife -norunpath"
2480 LDFLAGS="-xildoff -z lazyload -z combreloc $LDFLAGS"
2481 if test -z "$CROSS_COMPILE" && test -f /usr/lib/ld/map.noexstk; then
2482 _SAVE_LDFLAGS=$LDFLAGS
2483 LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2484 AC_TRY_LINK([#include <stdio.h>],
2485 [printf("Hello World\n");],
2487 [LDFLAGS=$_SAVE_LDFLAGS])
2489 WARNINGS_AS_ERRORS='-Werror'
2490 MOZ_OPTIMIZE_FLAGS="-xO4"
2491 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2492 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) -G -z muldefs -h $@ -o $@'
2493 MKSHLIB_FORCE_ALL='-z allextract'
2494 MKSHLIB_UNFORCE_ALL='-z defaultextract'
2495 DSO_LDOPTS='-G -z muldefs'
2501 AS='/usr/ccs/bin/as'
2502 ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2504 TARGET_COMPILER_ABI="sunc"
2505 CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2506 CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2507 AC_MSG_CHECKING([for Forte compiler version >= WS6U2])
2511 [#if (__SUNPRO_CC < 0x530)
2514 _BAD_COMPILER=,_BAD_COMPILER=1)
2515 if test -n "$_BAD_COMPILER"; then
2517 AC_MSG_ERROR([Forte version WS6U2 or higher is required to build. Your compiler version is $CC_VERSION .])
2521 AC_MSG_RESULT([$_res])
2524 ASFLAGS="$ASFLAGS -fPIC"
2527 _WARNINGS_CXXFLAGS=''
2528 if test "$OS_RELEASE" = "5.3"; then
2529 AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2532 if test "$OS_RELEASE" = "5.5.1"; then
2533 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2538 DSO_LDOPTS='-Bdynamic'
2539 MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2540 MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2542 AC_DEFINE(SPRINTF_RETURNS_STRING)
2543 case "$(target_os)" in
2545 DLL_SUFFIX='.so.1.0'
2551 NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2555 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2560 dnl Only one oddball right now (QNX), but this gives us flexibility
2561 dnl if any other platforms need to override this in the future.
2562 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2564 dnl ========================================================
2565 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2566 dnl by now will not have any way to link most binaries (tests
2567 dnl as well as viewer, apprunner, etc.), because some symbols
2568 dnl will be left out of the "composite" .so's by ld as unneeded.
2569 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2570 dnl they can link in the static libs that provide the missing
2572 dnl ========================================================
2573 NO_LD_ARCHIVE_FLAGS=
2574 if test -z "$MKSHLIB_FORCE_ALL" || test -z "$MKSHLIB_UNFORCE_ALL"; then
2575 NO_LD_ARCHIVE_FLAGS=1
2579 NO_LD_ARCHIVE_FLAGS=
2582 NO_LD_ARCHIVE_FLAGS=
2585 NO_LD_ARCHIVE_FLAGS=
2587 *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince)
2588 if test -z "$GNU_CC"; then
2589 NO_LD_ARCHIVE_FLAGS=
2593 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2596 dnl Indicate that platform requires special thread safe
2597 dnl locking when starting up the OJI JVM
2598 dnl (see mozilla/modules/oji/src/nsJVMManager.cpp)
2599 dnl ========================================================
2602 AC_DEFINE(MOZ_OJI_REQUIRE_THREAD_SAFE_ON_STARTUP)
2606 dnl ========================================================
2607 dnl = Flags to strip unused symbols from .so components
2608 dnl ========================================================
2610 *-linux*|*-kfreebsd*-gnu)
2611 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2614 if test -z "$GNU_CC"; then
2615 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2617 if test -z "$GCC_USE_GNU_LD"; then
2618 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2620 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2625 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2628 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2630 *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince)
2631 if test -n "$GNU_CC"; then
2632 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2637 if test -z "$COMPILE_ENVIRONMENT"; then
2638 SKIP_COMPILER_CHECKS=1
2639 SKIP_LIBRARY_CHECKS=1
2642 if test -z "$SKIP_COMPILER_CHECKS"; then
2643 dnl Checks for typedefs, structures, and compiler characteristics.
2644 dnl ========================================================
2652 AC_STRUCT_ST_BLKSIZE
2653 AC_MSG_CHECKING(for siginfo_t)
2654 AC_CACHE_VAL(ac_cv_siginfo_t,
2655 [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2656 #include <signal.h>],
2658 [ac_cv_siginfo_t=true],
2659 [ac_cv_siginfo_t=false])])
2660 if test "$ac_cv_siginfo_t" = true ; then
2661 AC_DEFINE(HAVE_SIGINFO_T)
2667 dnl Visual Age for os/2 also defines size_t and off_t in certain
2668 dnl header files. These defines make Visual Age use the mozilla
2670 if test "$VACPP" = "yes"; then
2675 dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
2676 dnl ========================================================
2677 AC_MSG_CHECKING(for int16_t)
2678 AC_CACHE_VAL(ac_cv_int16_t,
2679 [AC_TRY_COMPILE([#include <stdio.h>
2680 #include <sys/types.h>],
2682 [ac_cv_int16_t=true],
2683 [ac_cv_int16_t=false])])
2684 if test "$ac_cv_int16_t" = true ; then
2685 AC_DEFINE(HAVE_INT16_T)
2690 AC_MSG_CHECKING(for int32_t)
2691 AC_CACHE_VAL(ac_cv_int32_t,
2692 [AC_TRY_COMPILE([#include <stdio.h>
2693 #include <sys/types.h>],
2695 [ac_cv_int32_t=true],
2696 [ac_cv_int32_t=false])])
2697 if test "$ac_cv_int32_t" = true ; then
2698 AC_DEFINE(HAVE_INT32_T)
2703 AC_MSG_CHECKING(for int64_t)
2704 AC_CACHE_VAL(ac_cv_int64_t,
2705 [AC_TRY_COMPILE([#include <stdio.h>
2706 #include <sys/types.h>],
2708 [ac_cv_int64_t=true],
2709 [ac_cv_int64_t=false])])
2710 if test "$ac_cv_int64_t" = true ; then
2711 AC_DEFINE(HAVE_INT64_T)
2716 AC_MSG_CHECKING(for int64)
2717 AC_CACHE_VAL(ac_cv_int64,
2718 [AC_TRY_COMPILE([#include <stdio.h>
2719 #include <sys/types.h>],
2722 [ac_cv_int64=false])])
2723 if test "$ac_cv_int64" = true ; then
2724 AC_DEFINE(HAVE_INT64)
2729 AC_MSG_CHECKING(for uint)
2730 AC_CACHE_VAL(ac_cv_uint,
2731 [AC_TRY_COMPILE([#include <stdio.h>
2732 #include <sys/types.h>],
2735 [ac_cv_uint=false])])
2736 if test "$ac_cv_uint" = true ; then
2737 AC_DEFINE(HAVE_UINT)
2742 AC_MSG_CHECKING(for uint_t)
2743 AC_CACHE_VAL(ac_cv_uint_t,
2744 [AC_TRY_COMPILE([#include <stdio.h>
2745 #include <sys/types.h>],
2747 [ac_cv_uint_t=true],
2748 [ac_cv_uint_t=false])])
2749 if test "$ac_cv_uint_t" = true ; then
2750 AC_DEFINE(HAVE_UINT_T)
2755 AC_MSG_CHECKING(for uint16_t)
2756 AC_CACHE_VAL(ac_cv_uint16_t,
2757 [AC_TRY_COMPILE([#include <stdio.h>
2758 #include <sys/types.h>],
2759 [uint16_t foo = 0;],
2760 [ac_cv_uint16_t=true],
2761 [ac_cv_uint16_t=false])])
2762 if test "$ac_cv_uint16_t" = true ; then
2763 AC_DEFINE(HAVE_UINT16_T)
2769 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
2770 dnl are defined when compiling C++ but not C. Since the result of this
2771 dnl test is used only in C++, do it in C++.
2774 AC_MSG_CHECKING(for uname.domainname)
2775 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
2776 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2777 [ struct utsname *res; char *domain;
2778 (void)uname(res); if (res != 0) { domain = res->domainname; } ],
2779 [ac_cv_have_uname_domainname_field=true],
2780 [ac_cv_have_uname_domainname_field=false])])
2782 if test "$ac_cv_have_uname_domainname_field" = "true"; then
2783 AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
2789 AC_MSG_CHECKING(for uname.__domainname)
2790 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
2791 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2792 [ struct utsname *res; char *domain;
2793 (void)uname(res); if (res != 0) { domain = res->__domainname; } ],
2794 [ac_cv_have_uname_us_domainname_field=true],
2795 [ac_cv_have_uname_us_domainname_field=false])])
2797 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
2798 AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
2806 dnl Check for usable wchar_t (2 bytes, unsigned)
2807 dnl (we really don't need the unsignedness check anymore)
2808 dnl ========================================================
2810 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
2811 ac_cv_have_usable_wchar_v2,
2812 [AC_TRY_COMPILE([#include <stddef.h>
2813 $configure_static_assert_macros],
2814 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2815 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2816 ac_cv_have_usable_wchar_v2="yes",
2817 ac_cv_have_usable_wchar_v2="no")])
2818 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
2819 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2820 HAVE_CPP_2BYTE_WCHAR_T=1
2822 dnl This is really gcc-only
2823 dnl Do this test using CXX only since some versions of gcc
2824 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
2825 dnl only have short-wchar support for c++.
2826 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
2830 _SAVE_CXXFLAGS=$CXXFLAGS
2831 CXXFLAGS="$CXXFLAGS -fshort-wchar"
2833 AC_CACHE_CHECK(for compiler -fshort-wchar option,
2834 ac_cv_have_usable_wchar_option_v2,
2835 [AC_TRY_LINK([#include <stddef.h>
2836 $configure_static_assert_macros],
2837 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2838 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2839 ac_cv_have_usable_wchar_option_v2="yes",
2840 ac_cv_have_usable_wchar_option_v2="no")])
2842 if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
2843 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2844 HAVE_CPP_2BYTE_WCHAR_T=1
2846 CXXFLAGS=$_SAVE_CXXFLAGS
2851 dnl Check for .hidden assembler directive and visibility attribute.
2852 dnl Borrowed from glibc configure.in
2853 dnl ===============================================================
2854 if test "$GNU_CC"; then
2855 AC_CACHE_CHECK(for visibility(hidden) attribute,
2856 ac_cv_visibility_hidden,
2857 [cat > conftest.c <<EOF
2858 int foo __attribute__ ((visibility ("hidden"))) = 1;
2860 ac_cv_visibility_hidden=no
2861 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2862 if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2863 ac_cv_visibility_hidden=yes
2868 if test "$ac_cv_visibility_hidden" = "yes"; then
2869 AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2871 AC_CACHE_CHECK(for visibility(default) attribute,
2872 ac_cv_visibility_default,
2873 [cat > conftest.c <<EOF
2874 int foo __attribute__ ((visibility ("default"))) = 1;
2876 ac_cv_visibility_default=no
2877 if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2878 if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2879 ac_cv_visibility_default=yes
2884 if test "$ac_cv_visibility_default" = "yes"; then
2885 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2887 AC_CACHE_CHECK(for visibility pragma support,
2888 ac_cv_visibility_pragma,
2889 [cat > conftest.c <<EOF
2890 #pragma GCC visibility push(hidden)
2892 #pragma GCC visibility push(default)
2893 int foo_default = 1;
2895 ac_cv_visibility_pragma=no
2896 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2897 if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
2898 if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
2899 ac_cv_visibility_pragma=yes
2905 if test "$ac_cv_visibility_pragma" = "yes"; then
2906 AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
2907 ac_cv_have_visibility_class_bug,
2908 [cat > conftest.c <<EOF
2909 #pragma GCC visibility push(hidden)
2910 struct __attribute__ ((visibility ("default"))) TestStruct {
2913 __attribute__ ((visibility ("default"))) void TestFunc() {
2917 ac_cv_have_visibility_class_bug=no
2918 if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2919 ac_cv_have_visibility_class_bug=yes
2921 if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
2922 ac_cv_have_visibility_class_bug=yes
2925 rm -rf conftest.{c,S}
2928 AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
2929 ac_cv_have_visibility_builtin_bug,
2930 [cat > conftest.c <<EOF
2931 #pragma GCC visibility push(hidden)
2932 #pragma GCC visibility push(default)
2934 #pragma GCC visibility pop
2936 __attribute__ ((visibility ("default"))) void Func() {
2938 memset(c, 0, sizeof(c));
2941 ac_cv_have_visibility_builtin_bug=no
2942 if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2943 ac_cv_have_visibility_builtin_bug=yes
2945 if test `grep -c "@PLT" conftest.S` = 0; then
2946 ac_cv_visibility_builtin_bug=yes
2949 rm -f conftest.{c,S}
2951 if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
2952 "$ac_cv_have_visibility_class_bug" = "no"; then
2953 VISIBILITY_FLAGS='-I$(DIST)/include/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
2954 WRAP_SYSTEM_INCLUDES=1
2956 VISIBILITY_FLAGS='-fvisibility=hidden'
2957 fi # have visibility pragma bug
2958 fi # have visibility pragma
2959 fi # have visibility(default) attribute
2960 fi # have visibility(hidden) attribute
2963 # visibility hidden flag for Sun Studio on Solaris
2964 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
2965 VISIBILITY_FLAGS='-xldscope=hidden'
2966 fi # Sun Studio on Solaris
2968 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2969 AC_SUBST(VISIBILITY_FLAGS)
2971 dnl Checks for header files.
2972 dnl ========================================================
2974 case "$target_os" in
2976 # for stuff like -lXshm
2977 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2980 AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
2981 AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
2982 AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
2983 AC_CHECK_HEADERS(malloc.h)
2984 AC_CHECK_HEADERS(X11/XKBlib.h)
2986 dnl These are all the places some variant of statfs can be hiding.
2987 AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2989 dnl Try for MMX support
2990 dnl NB - later gcc versions require -mmmx for this header to be successfully
2991 dnl included (or another option which implies it, such as -march=pentium-mmx)
2992 AC_CHECK_HEADERS(mmintrin.h)
2994 AC_MSG_CHECKING(for ARM SIMD support)
2996 [asm("uqadd8 r1, r1, r2");],
2997 result="yes", result="no")
2998 AC_MSG_RESULT("$result")
2999 if test "$result" = "yes"; then
3000 AC_DEFINE(HAVE_ARM_SIMD)
3003 AC_SUBST(HAVE_ARM_SIMD)
3005 dnl Check whether the compiler supports the new-style C++ standard
3006 dnl library headers (i.e. <new>) or needs the old "new.h"
3009 AC_CHECK_HEADER(new, [NEW_H=new])
3010 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
3013 AC_ARG_ENABLE(dtrace,
3014 [ --enable-dtrace build with dtrace support if available (default=no)],
3015 [enable_dtrace="yes"],)
3016 if test "x$enable_dtrace" = "xyes"; then
3017 AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
3018 if test -n "$HAVE_DTRACE"; then
3019 AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
3021 AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
3024 AC_SUBST(HAVE_DTRACE)
3030 AC_CHECK_HEADERS(sys/cdefs.h)
3034 dnl Checks for libraries.
3035 dnl ========================================================
3040 AC_CHECK_LIB(c_r, gethostbyname_r)
3044 dnl We don't want to link with libdl even if it's present on OS X, since
3045 dnl it's not used and not part of the default installation.
3046 dnl The same goes for BeOS.
3047 dnl We don't want to link against libm or libpthread on Darwin since
3048 dnl they both are just symlinks to libSystem and explicitly linking
3049 dnl against libSystem causes issues when debugging (see bug 299601).
3056 AC_CHECK_LIB(m, atan)
3057 AC_CHECK_LIB(dl, dlopen,
3058 AC_CHECK_HEADER(dlfcn.h,
3060 AC_DEFINE(HAVE_LIBDL)))
3064 _SAVE_CFLAGS="$CFLAGS"
3065 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3066 AC_CHECK_FUNCS(dladdr)
3067 CFLAGS="$_SAVE_CFLAGS"
3069 if test ! "$GNU_CXX"; then
3073 AC_CHECK_LIB(C_r, demangle)
3076 AC_CHECK_LIB(C, demangle)
3080 AC_CHECK_LIB(socket, socket)
3083 XLIBS="$X_EXTRA_LIBS"
3085 dnl ========================================================
3086 dnl Checks for X libraries.
3087 dnl Ordering is important.
3088 dnl Xt is dependent upon SM as of X11R6
3089 dnl ========================================================
3090 if test "$no_x" = "yes"; then
3093 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3094 XLIBS="-lX11 $XLIBS"
3095 _SAVE_LDFLAGS="$LDFLAGS"
3096 LDFLAGS="$XLDFLAGS $LDFLAGS"
3097 AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3098 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3099 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3100 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3103 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3104 unset ac_cv_lib_Xt_XtFree
3105 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3106 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
3107 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3108 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3111 # AIX needs the motif library linked before libXt to prevent
3112 # crashes in plugins linked against Motif - Bug #98892
3113 case "${target_os}" in
3115 XT_LIBS="-lXm $XT_LIBS"
3119 dnl ========================================================
3120 dnl = Check for XShm
3121 dnl ========================================================
3122 AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3124 AC_CHECK_HEADER(X11/extensions/XShm.h)
3125 if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" &&
3126 test -n "$_HAVE_XSHM_XEXT"; then
3127 AC_DEFINE(HAVE_XSHM)
3130 dnl ========================================================
3132 dnl ========================================================
3133 AC_CHECK_LIB(XIE, XieFloGeometry, [MOZ_XIE_LIBS="-lXIE"],,
3135 AC_CHECK_HEADER(X11/extensions/XIElib.h)
3137 if test "$MOZ_XIE_LIBS"; then
3138 dnl ====================================================
3139 dnl = If XIE is present and is desired, turn it on
3140 dnl ====================================================
3150 LDFLAGS="$_SAVE_LDFLAGS"
3152 dnl ========================================================
3153 dnl = Check for freetype2 and its functionality
3154 dnl ========================================================
3155 AC_CHECK_FT2(6.1.0, [_HAVE_FREETYPE2=1], [_HAVE_FREETYPE2=])
3157 if test "$_HAVE_FREETYPE2"; then
3159 _SAVE_CFLAGS="$CFLAGS"
3160 LIBS="$LIBS $FT2_LIBS"
3161 CFLAGS="$CFLAGS $FT2_CFLAGS"
3163 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
3164 ac_cv_member_FT_Bitmap_Size_y_ppem,
3165 [AC_TRY_COMPILE([#include <ft2build.h>
3166 #include FT_FREETYPE_H],
3168 if (sizeof s.y_ppem) return 0;
3170 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
3171 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
3172 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
3173 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
3175 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
3177 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
3178 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
3179 [FT_Bitmap_Size structure includes y_ppem field])
3181 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
3184 CFLAGS="$_SAVE_CFLAGS"
3194 dnl ========================================================
3195 dnl = pthread support
3196 dnl = Start by checking whether the system support pthreads
3197 dnl ========================================================
3198 case "$target_os" in
3203 MOZ_CHECK_PTHREADS(pthreads,
3204 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3205 MOZ_CHECK_PTHREADS(pthread,
3206 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3207 MOZ_CHECK_PTHREADS(c_r,
3208 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3209 MOZ_CHECK_PTHREADS(c,
3218 dnl ========================================================
3219 dnl Check the command line for --with-pthreads
3220 dnl ========================================================
3221 MOZ_ARG_WITH_BOOL(pthreads,
3222 [ --with-pthreads Force use of system pthread library with NSPR ],
3223 [ if test "$USE_PTHREADS"x = x; then
3224 AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3230 dnl ========================================================
3231 dnl Do the platform specific pthread hackery
3232 dnl ========================================================
3233 if test "$USE_PTHREADS"x != x
3236 dnl See if -pthread is supported.
3239 ac_cv_have_dash_pthread=no
3240 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3241 echo 'int main() { return 0; }' | cat > conftest.c
3242 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3243 if test $? -eq 0; then
3244 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3245 ac_cv_have_dash_pthread=yes
3246 case "$target_os" in
3248 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3251 CFLAGS="$CFLAGS -pthread"
3252 CXXFLAGS="$CXXFLAGS -pthread"
3258 AC_MSG_RESULT($ac_cv_have_dash_pthread)
3261 dnl See if -pthreads is supported.
3263 ac_cv_have_dash_pthreads=no
3264 if test "$ac_cv_have_dash_pthread" = "no"; then
3265 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3266 echo 'int main() { return 0; }' | cat > conftest.c
3267 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3268 if test $? -eq 0; then
3269 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3270 ac_cv_have_dash_pthreads=yes
3271 CFLAGS="$CFLAGS -pthreads"
3272 CXXFLAGS="$CXXFLAGS -pthreads"
3276 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3281 AC_DEFINE(_REENTRANT)
3282 AC_DEFINE(_THREAD_SAFE)
3283 dnl -pthread links in -lc_r, so don't specify it explicitly.
3284 if test "$ac_cv_have_dash_pthread" = "yes"; then
3285 _PTHREAD_LDFLAGS="-pthread"
3287 _PTHREAD_LDFLAGS="-lc_r"
3291 *-*-openbsd*|*-*-bsdi*)
3292 AC_DEFINE(_REENTRANT)
3293 AC_DEFINE(_THREAD_SAFE)
3294 dnl -pthread links in -lc_r, so don't specify it explicitly.
3295 if test "$ac_cv_have_dash_pthread" = "yes"; then
3296 _PTHREAD_LDFLAGS="-pthread"
3300 *-*-linux*|*-*-kfreebsd*-gnu)
3301 AC_DEFINE(_REENTRANT)
3305 AC_DEFINE(_REENTRANT)
3309 AC_DEFINE(_REENTRANT)
3313 AC_DEFINE(_REENTRANT)
3317 AC_DEFINE(_REENTRANT)
3321 AC_DEFINE(_REENTRANT)
3322 if test ! "$GNU_CC"; then
3323 CFLAGS="$CFLAGS -mt"
3324 CXXFLAGS="$CXXFLAGS -mt"
3328 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3331 dnl ========================================================
3332 dnl See if mmap sees writes
3333 dnl For cross compiling, just define it as no, which is a safe default
3334 dnl ========================================================
3335 AC_MSG_CHECKING(whether mmap() sees write()s)
3341 #include <sys/mman.h>
3342 #include <sys/types.h>
3343 #include <sys/stat.h>
3346 char fname[] = "conftest.file";
3347 char zbuff[1024]; /* Fractional page is probably worst case */
3354 fd = open(fname, O_RDWR | O_CREAT, 0660);
3357 write(fd, zbuff, sizeof(zbuff));
3358 lseek(fd, 0, SEEK_SET);
3359 map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
3360 if(map==(char*)-1) return 2;
3361 for(i=0; fname[i]; i++) {
3362 int rc = write(fd, &fname[i], 1);
3363 if(map[i]!=fname[i]) return 4;
3370 AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
3372 AC_MSG_RESULT("$result")
3374 if test "$result" = "no"; then
3375 AC_DEFINE(MMAP_MISSES_WRITES)
3379 dnl Checks for library functions.
3380 dnl ========================================================
3381 AC_PROG_GCC_TRADITIONAL
3383 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 truncate64 statvfs64)
3384 AC_CHECK_FUNCS(flockfile getpagesize)
3386 dnl localtime_r and strtok_r are only present on MacOS version 10.2 and higher
3387 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100200"; then
3388 AC_CHECK_FUNCS(localtime_r strtok_r)
3391 dnl check for wcrtomb/mbrtowc
3392 dnl =======================================================================
3393 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3396 AC_CACHE_CHECK(for wcrtomb,
3398 [AC_TRY_LINK([#include <wchar.h>],
3399 [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3400 ac_cv_have_wcrtomb="yes",
3401 ac_cv_have_wcrtomb="no")])
3402 if test "$ac_cv_have_wcrtomb" = "yes"; then
3403 AC_DEFINE(HAVE_WCRTOMB)
3405 AC_CACHE_CHECK(for mbrtowc,
3407 [AC_TRY_LINK([#include <wchar.h>],
3408 [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3409 ac_cv_have_mbrtowc="yes",
3410 ac_cv_have_mbrtowc="no")])
3411 if test "$ac_cv_have_mbrtowc" = "yes"; then
3412 AC_DEFINE(HAVE_MBRTOWC)
3419 ac_cv_func_res_ninit,
3422 #define _BSD_SOURCE 1
3426 [int foo = res_ninit(&_res);],
3427 [ac_cv_func_res_ninit=yes],
3428 [ac_cv_func_res_ninit=no])
3431 if test "$ac_cv_func_res_ninit" = "yes"; then
3432 AC_DEFINE(HAVE_RES_NINIT)
3433 dnl must add the link line we do something as foolish as this... dougt
3435 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3436 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3441 [for gnu_get_libc_version()],
3442 ac_cv_func_gnu_get_libc_version,
3444 #ifdef HAVE_GNU_LIBC_VERSION_H
3445 #include <gnu/libc-version.h>
3448 [const char *glibc_version = gnu_get_libc_version();],
3449 [ac_cv_func_gnu_get_libc_version=yes],
3450 [ac_cv_func_gnu_get_libc_version=no]
3454 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3455 AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3459 os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|beos*)
3463 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3464 AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3465 AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3467 LIBS="$LIBS $_ICONV_LIBS"
3476 iconv_t h = iconv_open("", "");
3477 iconv(h, NULL, NULL, NULL, NULL);
3480 [ac_cv_func_iconv=yes],
3481 [ac_cv_func_iconv=no]
3484 if test "$ac_cv_func_iconv" = "yes"; then
3485 AC_DEFINE(HAVE_ICONV)
3486 DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3487 LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3488 LIBICONV="$_ICONV_LIBS"
3490 [for iconv() with const input],
3491 ac_cv_func_const_iconv,
3497 const char *input = "testing";
3498 iconv_t h = iconv_open("", "");
3499 iconv(h, &input, NULL, NULL, NULL);
3502 [ac_cv_func_const_iconv=yes],
3503 [ac_cv_func_const_iconv=no]
3506 if test "$ac_cv_func_const_iconv" = "yes"; then
3507 AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3519 dnl **********************
3520 dnl *** va_copy checks ***
3521 dnl **********************
3522 dnl we currently check for all three va_copy possibilities, so we get
3523 dnl all results in config.log for bug reports.
3524 AC_MSG_CHECKING(for an implementation of va_copy())
3525 AC_CACHE_VAL(ac_cv_va_copy,[
3528 void f (int i, ...) {
3529 va_list args1, args2;
3530 va_start (args1, i);
3531 va_copy (args2, args1);
3532 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3534 va_end (args1); va_end (args2);
3536 int main() { f (0, 42); return 0; }],
3542 AC_MSG_RESULT($ac_cv_va_copy)
3543 AC_MSG_CHECKING(for an implementation of __va_copy())
3544 AC_CACHE_VAL(ac_cv___va_copy,[
3547 void f (int i, ...) {
3548 va_list args1, args2;
3549 va_start (args1, i);
3550 __va_copy (args2, args1);
3551 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3553 va_end (args1); va_end (args2);
3555 int main() { f (0, 42); return 0; }],
3556 ac_cv___va_copy=yes,
3561 AC_MSG_RESULT($ac_cv___va_copy)
3562 AC_MSG_CHECKING(whether va_lists can be copied by value)
3563 AC_CACHE_VAL(ac_cv_va_val_copy,[
3566 void f (int i, ...) {
3567 va_list args1, args2;
3568 va_start (args1, i);
3570 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3572 va_end (args1); va_end (args2);
3574 int main() { f (0, 42); return 0; }],
3575 ac_cv_va_val_copy=yes,
3576 ac_cv_va_val_copy=no,
3577 ac_cv_va_val_copy=yes
3580 if test "x$ac_cv_va_copy" = "xyes"; then
3581 AC_DEFINE(VA_COPY, va_copy)
3582 AC_DEFINE(HAVE_VA_COPY)
3583 elif test "x$ac_cv___va_copy" = "xyes"; then
3584 AC_DEFINE(VA_COPY, __va_copy)
3585 AC_DEFINE(HAVE_VA_COPY)
3588 if test "x$ac_cv_va_val_copy" = "xno"; then
3589 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3591 AC_MSG_RESULT($ac_cv_va_val_copy)
3593 dnl Check for dll-challenged libc's.
3594 dnl This check is apparently only needed for Linux.
3597 dnl ===================================================================
3600 rm -rf conftest* _conftest
3602 cat >> conftest.C <<\EOF
3607 void __dump_link_map(void) {
3608 struct link_map *map = _dl_loaded;
3609 while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
3612 dlopen("./conftest1.so",RTLD_LAZY);
3613 dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
3614 dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
3615 dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
3619 /* _dl_loaded isn't defined, so this should be either a libc5 (glibc1) system, or a glibc2 system that doesn't have the multiple load bug (i.e., RH6.0).*/
3620 int main() { printf("./conftest1.so\n"); }
3624 $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
3626 cat >> conftest1.C <<\EOF
3628 void foo(void) {printf("foo in dll called\n");}
3630 ${CXX-g++} -fPIC -c -g conftest1.C
3631 ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
3632 ${CXX-g++} -g conftest.C -o conftest -ldl
3633 cp -f conftest1.so conftest _conftest
3635 if test `./conftest | grep conftest1.so | wc -l` -gt 1
3638 echo "*** Your libc has a bug that can result in loading the same dynamic"
3639 echo "*** library multiple times. This bug is known to be fixed in glibc-2.0.7-32"
3640 echo "*** or later. However, if you choose not to upgrade, the only effect"
3641 echo "*** will be excessive memory usage at runtime."
3645 rm -rf conftest* _conftest
3646 dnl ===================================================================
3650 dnl ===================================================================
3651 dnl ========================================================
3652 dnl By default, turn rtti and exceptions off on g++/egcs
3653 dnl ========================================================
3654 if test "$GNU_CXX"; then
3656 AC_MSG_CHECKING(for C++ exceptions flag)
3658 dnl They changed -f[no-]handle-exceptions to -f[no-]exceptions in g++ 2.8
3659 AC_CACHE_VAL(ac_cv_cxx_exceptions_flags,
3660 [echo "int main() { return 0; }" | cat > conftest.C
3662 ${CXX-g++} ${CXXFLAGS} -c -fno-handle-exceptions conftest.C > conftest.out 2>&1
3664 if egrep "warning.*renamed" conftest.out >/dev/null; then
3665 ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-exceptions
3667 ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-handle-exceptions
3672 AC_MSG_RESULT($ac_cv_cxx_exceptions_flags)
3673 _MOZ_EXCEPTIONS_FLAGS_OFF=$ac_cv_cxx_exceptions_flags
3674 _MOZ_EXCEPTIONS_FLAGS_ON=`echo $ac_cv_cxx_exceptions_flags | sed 's|no-||'`
3677 dnl ========================================================
3678 dnl Put your C++ language/feature checks below
3679 dnl ========================================================
3683 if test "$GNU_CC"; then
3684 AC_CACHE_CHECK(for gcc 3.0 ABI,
3685 ac_cv_gcc_three_abi,
3688 #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
3694 ac_cv_gcc_three_abi="yes",
3695 ac_cv_gcc_three_abi="no")])
3696 if test "$ac_cv_gcc_three_abi" = "yes"; then
3697 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc3}"
3700 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc2}"
3703 AC_SUBST(HAVE_GCC3_ABI)
3706 AC_CACHE_CHECK(for C++ \"explicit\" keyword,
3708 [AC_TRY_COMPILE(class X {
3709 public: explicit X(int i) : i_(i) {}
3713 ac_cv_cpp_explicit=yes,
3714 ac_cv_cpp_explicit=no)])
3715 if test "$ac_cv_cpp_explicit" = yes ; then
3716 AC_DEFINE(HAVE_CPP_EXPLICIT)
3719 AC_CACHE_CHECK(for C++ \"typename\" keyword,
3721 [AC_TRY_COMPILE(class param {
3723 typedef unsigned long num_type;
3726 template <class T> class tplt {
3728 typedef typename T::num_type t_num_type;
3729 t_num_type foo(typename T::num_type num) {
3735 ac_cv_cpp_typename=yes,
3736 ac_cv_cpp_typename=no)])
3737 if test "$ac_cv_cpp_typename" = yes ; then
3738 AC_DEFINE(HAVE_CPP_TYPENAME)
3741 dnl Check for support of modern template specialization syntax
3742 dnl Test code and requirement from scc@netscape.com.
3743 dnl Autoconf cut-and-paste job by waterson@netscape.com
3744 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
3745 ac_cv_cpp_modern_specialize_template_syntax,
3746 [AC_TRY_COMPILE(template <class T> struct X { int a; };
3748 template <> struct X<Y> { double a; };,
3751 ac_cv_cpp_modern_specialize_template_syntax=yes,
3752 ac_cv_cpp_modern_specialize_template_syntax=no)])
3753 if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
3754 AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
3758 dnl Some compilers support only full specialization, and some don't.
3759 AC_CACHE_CHECK(whether partial template specialization works,
3760 ac_cv_cpp_partial_specialization,
3761 [AC_TRY_COMPILE(template <class T> class Foo {};
3762 template <class T> class Foo<T*> {};,
3764 ac_cv_cpp_partial_specialization=yes,
3765 ac_cv_cpp_partial_specialization=no)])
3766 if test "$ac_cv_cpp_partial_specialization" = yes ; then
3767 AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
3770 dnl Some compilers have limited support for operators with templates;
3771 dnl specifically, it is necessary to define derived operators when a base
3772 dnl class's operator declaration should suffice.
3773 AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
3774 ac_cv_need_derived_template_operators,
3775 [AC_TRY_COMPILE([template <class T> class Base { };
3777 Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
3778 template <class T> class Derived : public Base<T> { };],
3779 [Derived<char> a, b;
3780 Base<char> c = a + b;
3782 ac_cv_need_derived_template_operators=no,
3783 ac_cv_need_derived_template_operators=yes)])
3784 if test "$ac_cv_need_derived_template_operators" = yes ; then
3785 AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
3789 dnl Some compilers have trouble detecting that a template class
3790 dnl that derives from another template is actually an instance
3791 dnl of the base class. This test checks for that.
3792 AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
3793 ac_cv_need_cpp_template_cast_to_base,
3794 [AC_TRY_COMPILE([template <class T> class Base { };
3795 template <class T> class Derived : public Base<T> { };
3796 template <class T> int foo(const Base<T>&) { return 0; }],
3797 [Derived<char> bar; return foo(bar);],
3798 ac_cv_need_cpp_template_cast_to_base=no,
3799 ac_cv_need_cpp_template_cast_to_base=yes)])
3800 if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
3801 AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
3804 dnl Some compilers have trouble resolving the ambiguity between two
3805 dnl functions whose arguments differ only by cv-qualifications.
3806 AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
3807 ac_cv_can_resolve_const_ambiguity,
3809 template <class T> class ptrClass {
3813 template <class T> T* a(ptrClass<T> *arg) {
3818 const T* a(const ptrClass<T> *arg) {
3824 ac_cv_can_resolve_const_ambiguity=yes,
3825 ac_cv_can_resolve_const_ambiguity=no)])
3826 if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
3827 AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
3831 dnl We don't do exceptions on unix. The only reason this used to be here
3832 dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses
3833 dnl exceptions. But, we turn exceptions off by default and this test breaks.
3834 dnl So im commenting this out until someone writes some artificial
3835 dnl intelligence to detect not only if the compiler has exceptions, but if
3836 dnl they are enabled as well.
3838 dnl AC_CACHE_CHECK(for C++ \"exceptions\",
3839 dnl ac_cv_cpp_exceptions,
3840 dnl [AC_TRY_COMPILE(class X { public: X() {} };
3841 dnl static void F() { throw X(); },
3842 dnl try { F(); } catch(X & e) { },
3843 dnl ac_cv_cpp_exceptions=yes,
3844 dnl ac_cv_cpp_exceptions=no)])
3845 dnl if test $ac_cv_cpp_exceptions = yes ; then
3846 dnl AC_DEFINE(HAVE_CPP_EXCEPTIONS)
3849 dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
3850 dnl supports it well enough to allow us to use it to change access, but not
3851 dnl to resolve ambiguity. The next two tests determine how well the |using|
3852 dnl keyword is supported.
3854 dnl Check to see if we can change access with |using|. Test both a
3855 dnl legal and an illegal example.
3856 AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
3857 ac_cv_cpp_access_changing_using2,
3859 class A { protected: int foo() { return 0; } };
3860 class B : public A { public: using A::foo; };,
3861 B b; return b.foo();,
3863 class A { public: int foo() { return 1; } };
3864 class B : public A { private: using A::foo; };,
3865 B b; return b.foo();,
3866 ac_cv_cpp_access_changing_using2=no,
3867 ac_cv_cpp_access_changing_using2=yes)],
3868 ac_cv_cpp_access_changing_using2=no)])
3869 if test "$ac_cv_cpp_access_changing_using2" = yes ; then
3870 AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
3873 dnl Check to see if we can resolve ambiguity with |using|.
3874 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3875 ac_cv_cpp_ambiguity_resolving_using,
3876 [AC_TRY_COMPILE(class X {
3877 public: int go(const X&) {return 3;}
3878 int jo(const X&) {return 3;}
3880 class Y : public X {
3881 public: int go(int) {return 2;}
3882 int jo(int) {return 2;}
3884 private: using X::go;
3887 ac_cv_cpp_ambiguity_resolving_using=yes,
3888 ac_cv_cpp_ambiguity_resolving_using=no)])
3889 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3890 AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3893 dnl Check to see if the |std| namespace is supported. If so, we'll want
3894 dnl to qualify any standard library calls with "std::" to ensure that
3895 dnl those functions can be resolved.
3896 AC_CACHE_CHECK(for \"std::\" namespace,
3897 ac_cv_cpp_namespace_std,
3898 [AC_TRY_COMPILE([#include <algorithm>],
3899 [return std::min(0, 1);],
3900 ac_cv_cpp_namespace_std=yes,
3901 ac_cv_cpp_namespace_std=no)])
3902 if test "$ac_cv_cpp_namespace_std" = yes ; then
3903 AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
3906 dnl Older compilers are overly ambitious with respect to using the standard
3907 dnl template library's |operator!=()| when |operator==()| is defined. In
3908 dnl which case, defining |operator!=()| in addition to |operator==()| causes
3909 dnl ambiguity at compile-time. This test checks for that case.
3910 AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
3911 ac_cv_cpp_unambiguous_std_notequal,
3912 [AC_TRY_COMPILE([#include <algorithm>
3914 int operator==(const T1&, const T1&) { return 0; }
3915 int operator!=(const T1&, const T1&) { return 0; }],
3916 [T1 a,b; return a != b;],
3917 ac_cv_cpp_unambiguous_std_notequal=unambiguous,
3918 ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
3919 if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
3920 AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
3924 AC_CACHE_CHECK(for C++ reinterpret_cast,
3925 ac_cv_cpp_reinterpret_cast,
3926 [AC_TRY_COMPILE(struct X { int i; };
3927 struct Y { int i; };,
3928 X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
3929 ac_cv_cpp_reinterpret_cast=yes,
3930 ac_cv_cpp_reinterpret_cast=no)])
3931 if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
3932 AC_DEFINE(HAVE_CPP_NEW_CASTS)
3935 dnl See if a dynamic_cast to void* gives the most derived object.
3936 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
3937 ac_cv_cpp_dynamic_cast_void_ptr,
3938 [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
3939 class Y { int j; public: virtual ~Y() { } };
3940 class Z : public X, public Y { int k; };
3946 return !((((void*)&mdo != (void*)subx) &&
3947 ((void*)&mdo == dynamic_cast<void*>(subx))) ||
3948 (((void*)&mdo != (void*)suby) &&
3949 ((void*)&mdo == dynamic_cast<void*>(suby))));
3951 ac_cv_cpp_dynamic_cast_void_ptr=yes,
3952 ac_cv_cpp_dynamic_cast_void_ptr=no,
3953 ac_cv_cpp_dynamic_cast_void_ptr=no)])
3954 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
3955 AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
3959 dnl note that this one is reversed - if the test fails, then
3960 dnl we require implementations of unused virtual methods. Which
3961 dnl really blows because it means we'll have useless vtable
3963 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
3964 ac_cv_cpp_unused_required,
3965 [AC_TRY_LINK(class X {private: virtual void never_called();};,
3967 ac_cv_cpp_unused_required=no,
3968 ac_cv_cpp_unused_required=yes)])
3969 if test "$ac_cv_cpp_unused_required" = yes ; then
3970 AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
3974 dnl Some compilers have trouble comparing a constant reference to a templatized
3975 dnl class to zero, and require an explicit operator==() to be defined that takes
3976 dnl an int. This test separates the strong from the weak.
3978 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
3979 ac_cv_trouble_comparing_to_zero,
3980 [AC_TRY_COMPILE([#include <algorithm>
3981 template <class T> class Foo {};
3983 template <class T> int operator==(const T2*, const T&) { return 0; }
3984 template <class T> int operator!=(const T2*, const T&) { return 0; }],
3985 [Foo<int> f; return (0 != f);],
3986 ac_cv_trouble_comparing_to_zero=no,
3987 ac_cv_trouble_comparing_to_zero=yes)])
3988 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
3989 AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
3994 dnl End of C++ language/feature checks
3997 dnl ========================================================
3998 dnl = Internationalization checks
3999 dnl ========================================================
4001 dnl Internationalization and Locale support is different
4002 dnl on various UNIX platforms. Checks for specific i18n
4003 dnl features go here.
4005 dnl check for LC_MESSAGES
4006 AC_CACHE_CHECK(for LC_MESSAGES,
4007 ac_cv_i18n_lc_messages,
4008 [AC_TRY_COMPILE([#include <locale.h>],
4009 [int category = LC_MESSAGES;],
4010 ac_cv_i18n_lc_messages=yes,
4011 ac_cv_i18n_lc_messages=no)])
4012 if test "$ac_cv_i18n_lc_messages" = yes; then
4013 AC_DEFINE(HAVE_I18N_LC_MESSAGES)
4016 fi # SKIP_COMPILER_CHECKS
4019 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
4020 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
4023 dnl Mozilla specific options
4024 dnl ========================================================
4025 dnl The macros used for command line options
4026 dnl are defined in build/autoconf/altoptions.m4.
4029 dnl ========================================================
4031 dnl = Check for external package dependencies
4033 dnl ========================================================
4034 MOZ_ARG_HEADER(External Packages)
4038 MOZ_ARG_WITH_STRING(libxul-sdk,
4039 [ --with-libxul-sdk=PFX Use the libXUL SDK at <PFX>],
4040 LIBXUL_SDK_DIR=$withval)
4042 if test "$LIBXUL_SDK_DIR" = "yes"; then
4043 AC_MSG_ERROR([--with-libxul-sdk must specify a path])
4044 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
4045 LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
4047 if test ! -f "$LIBXUL_SDK/sdk/include/xpcom-config.h"; then
4048 AC_MSG_ERROR([$LIBXUL_SDK/sdk/include/xpcom-config.h doesn't exist])
4053 AC_SUBST(LIBXUL_SDK)
4055 if test -n "$LIBXUL_SDK"; then
4056 LIBXUL_DIST="$LIBXUL_SDK"
4058 LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
4060 AC_SUBST(LIBXUL_DIST)
4062 dnl ========================================================
4063 dnl = If NSPR was not detected in the system,
4064 dnl = use the one in the source tree (mozilla/nsprpub)
4065 dnl ========================================================
4066 MOZ_ARG_WITH_BOOL(system-nspr,
4067 [ --with-system-nspr Use system installed NSPR],
4068 _USE_SYSTEM_NSPR=1 )
4070 if test -n "$_USE_SYSTEM_NSPR"; then
4071 AM_PATH_NSPR(4.7.0, [MOZ_NATIVE_NSPR=1], [MOZ_NATIVE_NSPR=])
4074 if test -n "$MOZ_NATIVE_NSPR"; then
4075 _SAVE_CFLAGS=$CFLAGS
4076 CFLAGS="$CFLAGS $NSPR_CFLAGS"
4077 AC_TRY_COMPILE([#include "prlog.h"],
4078 [#ifndef PR_STATIC_ASSERT
4079 #error PR_STATIC_ASSERT not defined
4081 [MOZ_NATIVE_NSPR=1],
4082 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT]))
4083 CFLAGS=$_SAVE_CFLAGS
4085 NSPR_CFLAGS='`$(DEPTH)/nsprpub/config/nspr-config --prefix='${LIBXUL_DIST}' --includedir='${LIBXUL_DIST}'/include/nspr --cflags`'
4086 # explicitly set libs for Visual Age C++ for OS/2
4087 if test "$OS_ARCH" = "OS2" -a "$VACPP" = "yes"; then
4088 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib ${_PTHREAD_LDFLAGS}"
4089 elif test "$OS_ARCH" = "WINCE"; then
4090 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4091 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4092 elif test "$OS_ARCH" = "WINNT"; then
4093 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4094 if test -n "$GNU_CC"; then
4095 NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
4097 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4100 NSPR_LIBS='`$(DEPTH)/nsprpub/config/nspr-config --prefix='${LIBXUL_DIST}' --libdir='${LIBXUL_DIST}'/lib --libs`'
4104 dnl ========================================================
4105 dnl = If NSS was not detected in the system,
4106 dnl = use the one in the source tree (mozilla/security/nss)
4107 dnl ========================================================
4109 MOZ_ARG_WITH_BOOL(system-nss,
4110 [ --with-system-nss Use system installed NSS],
4113 if test -n "$_USE_SYSTEM_NSS"; then
4114 AM_PATH_NSS(3.12.0, [MOZ_NATIVE_NSS=1], [MOZ_NATIVE_NSS=])
4117 if test -n "$MOZ_NATIVE_NSS"; then
4118 NSS_LIBS="$NSS_LIBS -lcrmf"
4120 NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4122 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4123 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4124 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4125 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4126 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX) \
4127 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)softokn$NSS_VERSION\$(DLL_SUFFIX)"
4129 if test -z "$GNU_CC" && test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "WINCE" -o "$OS_ARCH" = "OS2"; then
4131 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4132 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4133 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4134 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4135 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4136 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)softokn$NSS_VERSION.\$(IMPORT_LIB_SUFFIX)"
4138 NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION -lsoftokn$NSS_VERSION"
4142 if test -z "$SKIP_LIBRARY_CHECKS"; then
4143 dnl system JPEG support
4144 dnl ========================================================
4145 MOZ_ARG_WITH_STRING(system-jpeg,
4146 [ --with-system-jpeg[=PFX]
4147 Use system libjpeg [installed at prefix PFX]],
4150 _SAVE_CFLAGS=$CFLAGS
4151 _SAVE_LDFLAGS=$LDFLAGS
4153 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4154 CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4155 LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4157 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4160 AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS)
4163 if test "$SYSTEM_JPEG" = 1; then
4164 LIBS="$JPEG_LIBS $LIBS"
4165 AC_TRY_COMPILE([ #include <stdio.h>
4166 #include <sys/types.h>
4167 #include <jpeglib.h> ],
4168 [ #if JPEG_LIB_VERSION < $MOZJPEG
4169 #error "Insufficient JPEG library version ($MOZJPEG required)."
4172 [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=])
4174 CFLAGS=$_SAVE_CFLAGS
4175 LDFLAGS=$_SAVE_LDFLAGS
4178 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$SYSTEM_JPEG" = 1; then
4179 JPEG_CFLAGS="-I${JPEG_DIR}/include"
4180 JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
4183 dnl system ZLIB support
4184 dnl ========================================================
4185 MOZ_ARG_WITH_STRING(system-zlib,
4186 [ --with-system-zlib[=PFX]
4187 Use system libz [installed at prefix PFX]],
4190 _SAVE_CFLAGS=$CFLAGS
4191 _SAVE_LDFLAGS=$LDFLAGS
4193 if test -n "${ZLIB_DIR}" -a "${ZLIB_DIR}" != "yes"; then
4194 CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
4195 LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
4197 if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
4200 AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"],
4201 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
4203 if test "$SYSTEM_ZLIB" = 1; then
4204 LIBS="$ZLIB_LIBS $LIBS"
4205 AC_TRY_COMPILE([ #include <stdio.h>
4207 #include <zlib.h> ],
4208 [ #if ZLIB_VERNUM < $MOZZLIB
4209 #error "Insufficient zlib version ($MOZZLIB required)."
4212 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=])
4214 CFLAGS=$_SAVE_CFLAGS
4215 LDFLAGS=$_SAVE_LDFLAGS
4218 if test "${ZLIB_DIR}" -a -d "${ZLIB_DIR}" -a "$SYSTEM_ZLIB" = 1; then
4219 ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
4220 ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
4223 dnl system BZIP2 Support
4224 dnl ========================================================
4225 MOZ_ARG_WITH_STRING(system-bz2,
4226 [ --with-system-bz2[=PFX]
4227 Use system libbz2 [installed at prefix PFX]],
4230 _SAVE_CFLAGS=$CFLAGS
4231 _SAVE_LDFLAGS=$LDFLAGS
4233 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4234 CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4235 LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4237 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4240 AC_CHECK_LIB(bz2, BZ2_bzread, [SYSTEM_BZ2=1 BZ2_LIBS="-lbz2"],
4241 [SYSTEM_BZ2= BZ2_CFLAGS= BZ2_LIBS=], $BZ2_LIBS)
4243 CFLAGS=$_SAVE_CFLAGS
4244 LDFLAGS=$_SAVE_LDFLAGS
4247 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$SYSTEM_BZ2" = 1; then
4248 BZ2_CFLAGS="-I${BZ2_DIR}/include"
4249 BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
4252 dnl system PNG Support
4253 dnl ========================================================
4254 MOZ_ARG_WITH_STRING(system-png,
4255 [ --with-system-png[=PFX]
4256 Use system libpng [installed at prefix PFX]],
4259 _SAVE_CFLAGS=$CFLAGS
4260 _SAVE_LDFLAGS=$LDFLAGS
4262 CFLAGS="$ZLIB_CFLAGS $CFLAGS"
4263 LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
4264 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4265 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4266 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4268 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4271 _SAVE_PNG_LIBS=$PNG_LIBS
4272 AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"],
4273 AC_MSG_ERROR([--with-system-png requested but no working libpng found]),
4275 AC_CHECK_LIB(png, png_get_acTL, ,
4276 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]),
4279 if test "$SYSTEM_PNG" = 1; then
4280 LIBS="$PNG_LIBS $LIBS"
4281 AC_TRY_COMPILE([ #include <stdio.h>
4282 #include <sys/types.h>
4284 [ #if PNG_LIBPNG_VER < $MOZPNG
4285 #error "Insufficient libpng version ($MOZPNG required)."
4287 #ifndef PNG_UINT_31_MAX
4288 #error "Insufficient libpng version."
4291 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4293 CFLAGS=$_SAVE_CFLAGS
4294 LDFLAGS=$_SAVE_LDFLAGS
4297 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
4298 PNG_CFLAGS="-I${PNG_DIR}/include"
4299 PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
4302 fi # SKIP_LIBRARY_CHECKS
4304 dnl system HunSpell Support
4305 dnl ========================================================
4306 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4307 [ --enable-system-hunspell Use system hunspell (located with pkgconfig)],
4310 if test -n "$SYSTEM_HUNSPELL"; then
4311 PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4314 AC_SUBST(SYSTEM_HUNSPELL)
4316 dnl ========================================================
4317 dnl Java SDK support
4318 dnl ========================================================
4320 MOZ_ARG_WITH_STRING(java-include-path,
4321 [ --with-java-include-path=dir Location of Java SDK headers],
4322 JAVA_INCLUDE_PATH=$withval)
4325 MOZ_ARG_WITH_STRING(java-bin-path,
4326 [ --with-java-bin-path=dir Location of Java binaries (java, javac, jar)],
4327 JAVA_BIN_PATH=$withval)
4329 dnl ========================================================
4330 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4331 dnl their usage and use them in spidermonkey.
4332 dnl ========================================================
4333 MOZ_ARG_WITH_BOOL(arm-kuser,
4334 [ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4337 if test -n "$USE_ARM_KUSER"; then
4338 AC_DEFINE(USE_ARM_KUSER)
4341 dnl ========================================================
4345 dnl ========================================================
4347 MOZ_ARG_HEADER(Application)
4351 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4352 MOZ_BRANDING_DIRECTORY=
4353 MOZ_DBGRINFO_MODULES=
4355 MOZ_EXTENSIONS_ALL=" wallet p3p venkman inspector irc typeaheadfind gnomevfs sroaming datetime finger cview layout-debug tasks sql xforms schema-validation reporter"
4357 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg bmp xbm icon"
4358 MOZ_IMG_ENCODERS_DEFAULT="png jpeg"
4368 MOZ_AUTH_EXTENSION=1
4369 MOZ_NO_ACTIVEX_SUPPORT=1
4370 MOZ_NO_INSPECTOR_APIS=
4371 MOZ_NO_XPCOM_OBSOLETE=
4378 MOZ_PLAINTEXT_EDITOR_ONLY=
4380 MOZ_PREF_EXTENSIONS=1
4381 MOZ_PROFILELOCKING=1
4382 MOZ_PROFILESHARING=1
4384 MOZ_PYTHON_EXTENSIONS="xpcom dom"
4386 MOZ_PYTHON_DEBUG_SUFFIX=
4387 MOZ_PYTHON_DLL_SUFFIX=
4388 MOZ_PYTHON_INCLUDES=
4392 MOZ_PYTHON_VER_DOTTED=
4398 MOZ_STATIC_MAIL_BUILD=
4403 MOZ_UNIVERSALCHARDET=1
4405 MOZ_USE_NATIVE_UCONV=
4407 MOZ_XPFE_COMPONENTS=1
4409 MOZ_XSLT_STANDALONE=
4417 NECKO_PROTOCOLS_DEFAULT="about data file ftp gopher http res viewsource"
4418 NECKO_SMALL_BUFFERS=
4420 XPC_IDISPATCH_SUPPORT=
4423 case "$target_os" in
4432 case "$target_os" in
4433 msvc*|mks*|cygwin*|mingw*)
4434 if test -z "$GNU_CC"; then
4435 XPC_IDISPATCH_SUPPORT=1
4436 MOZ_NO_ACTIVEX_SUPPORT=
4437 MOZ_ACTIVEX_SCRIPTING_SUPPORT=1
4442 MOZ_ARG_ENABLE_STRING(application,
4443 [ --enable-application=APP
4447 content/xslt (Standalone Transformiix XSLT)
4448 netwerk (Standalone Necko)
4449 tools/update-packaging (AUS-related packaging tools)
4450 standalone (use this for standalone
4451 xpcom/xpconnect or to manually drive a build)],
4452 [ MOZ_BUILD_APP=$enableval ] )
4454 MOZ_EMBEDDING_PROFILE=default
4455 MOZ_ARG_WITH_STRING(embedding-profile,
4456 [ --with-embedding-profile=default|basic|minimal
4457 see http://wiki.mozilla.org/Gecko:Small_Device_Support],
4458 [ MOZ_EMBEDDING_PROFILE=$withval ])
4460 case "$MOZ_EMBEDDING_PROFILE" in
4462 MOZ_EMBEDDING_LEVEL_DEFAULT=1
4463 MOZ_EMBEDDING_LEVEL_BASIC=1
4464 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4465 AC_DEFINE(MOZ_EMBEDDING_LEVEL_DEFAULT)
4466 AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4467 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4471 MOZ_EMBEDDING_LEVEL_DEFAULT=
4472 MOZ_EMBEDDING_LEVEL_BASIC=1
4473 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4474 AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4475 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4477 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4479 MOZ_ENABLE_POSTSCRIPT=
4480 MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4481 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4482 MOZ_IMG_ENCODERS_DEFAULT=
4488 MOZ_NO_ACTIVEX_SUPPORT=1
4489 MOZ_NO_INSPECTOR_APIS=1
4490 MOZ_NO_XPCOM_OBSOLETE=1
4493 MOZ_PLAINTEXT_EDITOR_ONLY=1
4495 MOZ_PREF_EXTENSIONS=
4500 MOZ_UNIVERSALCHARDET=
4502 MOZ_USE_NATIVE_UCONV=
4504 MOZ_XPFE_COMPONENTS=
4509 NECKO_PROTOCOLS_DEFAULT="about data http file res"
4510 NECKO_SMALL_BUFFERS=1
4511 NS_DISABLE_LOGGING=1
4517 MOZ_EMBEDDING_LEVEL_DEFAULT=
4518 MOZ_EMBEDDING_LEVEL_BASIC=
4519 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4520 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4522 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4524 MOZ_ENABLE_POSTSCRIPT=
4525 MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4526 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4527 MOZ_IMG_ENCODERS_DEFAULT=
4533 MOZ_NO_ACTIVEX_SUPPORT=1
4534 MOZ_NO_INSPECTOR_APIS=1
4535 MOZ_NO_XPCOM_OBSOLETE=1
4538 MOZ_PLAINTEXT_EDITOR_ONLY=1
4540 MOZ_PREF_EXTENSIONS=
4547 MOZ_UNIVERSALCHARDET=
4549 MOZ_USE_NATIVE_UCONV=1
4551 MOZ_XPFE_COMPONENTS=
4558 NECKO_PROTOCOLS_DEFAULT="about data http file res"
4559 NECKO_SMALL_BUFFERS=1
4560 NS_DISABLE_LOGGING=1
4566 AC_MSG_ERROR([Unrecognized value: --with-embedding-profile=$MOZ_EMBEDDING_PROFILE])
4570 AC_SUBST(MOZ_EMBEDDING_LEVEL_DEFAULT)
4571 AC_SUBST(MOZ_EMBEDDING_LEVEL_BASIC)
4572 AC_SUBST(MOZ_EMBEDDING_LEVEL_MINIMAL)
4574 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
4575 [ --with-xulrunner-stub-name=appname Create the xulrunner stub with the given name],
4576 XULRUNNER_STUB_NAME=$withval)
4578 if test -z "$XULRUNNER_STUB_NAME"; then
4579 case "$target_os" in
4581 XULRUNNER_STUB_NAME=xulrunner
4584 XULRUNNER_STUB_NAME=xulrunner-stub
4587 AC_SUBST(XULRUNNER_STUB_NAME)
4589 if test -z "$MOZ_BUILD_APP"; then
4590 AC_MSG_ERROR([--enable-application=APP was not specified and is required.])
4592 # We have a valid application only if it has a build.mk file in its top
4594 if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
4595 AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4599 # Allow the application to influence configure with a confvars.sh script.
4601 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4602 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4603 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4604 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4609 # Now is a good time to test for logic errors, define mismatches, etc.
4610 case "$MOZ_BUILD_APP" in
4612 if test "$LIBXUL_SDK"; then
4613 AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4617 # Fix this case for folks who forget. Warn them.
4618 if test -n "$LIBXUL_SDK" -a -z "$MOZ_XUL_APP"; then
4619 AC_MSG_WARN([Setting MOZ_XUL_APP since LIBXUL_SDK was set. Add to confvars.sh!])
4625 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4626 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4628 case "$MOZ_BUILD_APP" in
4630 AC_DEFINE(MOZ_PHOENIX)
4634 AC_DEFINE(MOZ_XULRUNNER)
4642 MOZ_APP_NAME=mozilla
4643 MOZ_APP_DISPLAYNAME=Mozilla
4644 MOZ_APP_VERSION=$MOZILLA_VERSION
4649 if test -z "$MOZ_XUL_APP"; then
4650 AC_MSG_ERROR([builds with unsetting MOZ_XUL_APP in confvars.sh are not supported.])
4653 AC_SUBST(MOZ_BUILD_APP)
4654 AC_SUBST(MOZ_XUL_APP)
4655 AC_SUBST(MOZ_PHOENIX)
4656 AC_SUBST(MOZ_XULRUNNER)
4658 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4660 if test "$MOZ_XUL_APP"; then
4662 AC_DEFINE(MOZ_XUL_APP)
4665 dnl ========================================================
4667 dnl = Toolkit Options
4669 dnl ========================================================
4670 MOZ_ARG_HEADER(Toolkit Options)
4672 dnl ========================================================
4673 dnl = Select the default toolkit
4674 dnl ========================================================
4675 MOZ_ARG_ENABLE_STRING(default-toolkit,
4676 [ --enable-default-toolkit=TK
4677 Select default toolkit
4678 Platform specific defaults:
4680 Mac OS X - cairo-cocoa
4681 Neutrino/QNX - photon
4683 Win32 - cairo-windows
4685 Gtk2 with DirectFB - cairo-gtk2-dfb
4688 [ _DEFAULT_TOOLKIT=$enableval ],
4689 [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4691 if test "$_DEFAULT_TOOLKIT" = "photon" \
4692 -o "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4693 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4694 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-dfb" \
4695 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
4696 -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
4697 -o "$_DEFAULT_TOOLKIT" = "cairo-beos" \
4698 -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
4699 -o "$_DEFAULT_TOOLKIT" = "cairo-mac" \
4700 -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa"
4702 dnl nglayout only supports building with one toolkit,
4703 dnl so ignore everything after the first comma (",").
4704 MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4706 AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
4709 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_TOOLKIT,"$MOZ_WIDGET_TOOLKIT")
4711 dnl ========================================================
4712 dnl = Enable the toolkit as needed =
4713 dnl ========================================================
4715 case "$MOZ_WIDGET_TOOLKIT" in
4718 AC_DEFINE(MOZ_WIDGET_PHOTON)
4722 MOZ_WIDGET_TOOLKIT=windows
4723 MOZ_GFX_TOOLKIT=cairo
4726 cairo-gtk2|cairo-gtk2-x11)
4727 MOZ_WIDGET_TOOLKIT=gtk2
4728 MOZ_GFX_TOOLKIT=cairo
4730 MOZ_ENABLE_XREMOTE=1
4735 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4736 TK_LIBS='$(MOZ_GTK2_LIBS)'
4737 AC_DEFINE(MOZ_WIDGET_GTK2)
4741 MOZ_WIDGET_TOOLKIT=gtk2
4742 MOZ_GFX_TOOLKIT=cairo
4748 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4749 TK_LIBS='$(MOZ_GTK2_LIBS)'
4750 AC_DEFINE(MOZ_WIDGET_GTK2)
4751 if test "$no_x" != "yes"; then
4752 AC_MSG_WARN([Disabling X when DirectFB is specified.])
4758 MOZ_WIDGET_TOOLKIT=qt
4759 MOZ_GFX_TOOLKIT=cairo
4761 MOZ_ENABLE_XREMOTE=1
4767 TK_CFLAGS='$(MOZ_QT_CFLAGS)'
4768 TK_LIBS='$(MOZ_QT_LIBS)'
4769 AC_DEFINE(MOZ_WIDGET_QT)
4773 MOZ_WIDGET_TOOLKIT=beos
4774 MOZ_GFX_TOOLKIT=cairo
4775 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4776 TK_LIBS='$(MOZ_CAIRO_LIBS)'
4780 MOZ_WIDGET_TOOLKIT=os2
4781 MOZ_GFX_TOOLKIT=cairo
4782 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4783 TK_LIBS='$(MOZ_CAIRO_LIBS)'
4786 cairo-mac|cairo-cocoa)
4787 if test "$MOZ_WIDGET_TOOLKIT" = "cairo-cocoa"; then
4788 MOZ_WIDGET_TOOLKIT=cocoa
4789 AC_DEFINE(MOZ_WIDGET_COCOA)
4792 MOZ_WIDGET_TOOLKIT=mac
4794 MOZ_GFX_TOOLKIT=cairo
4795 MOZ_USER_DIR="Mozilla"
4796 AC_DEFINE(XP_MACOSX)
4797 AC_DEFINE(TARGET_CARBON)
4798 AC_DEFINE(TARGET_API_MAC_CARBON)
4799 TK_LIBS='-framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook'
4800 TK_CFLAGS="-I${MACOS_SDK_DIR}/Developer/Headers/FlatCarbon"
4801 CFLAGS="$CFLAGS $TK_CFLAGS"
4802 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4806 if test "$MOZ_ENABLE_XREMOTE"; then
4807 AC_DEFINE(MOZ_ENABLE_XREMOTE)
4810 if test "$COMPILE_ENVIRONMENT"; then
4811 if test "$MOZ_ENABLE_GTK2"; then
4812 if test "$MOZ_X11"; then
4813 GDK_PACKAGES=gdk-x11-2.0
4814 elif test "$MOZ_DFB"; then
4815 PKG_CHECK_MODULES(MOZ_DFB, directfb >= 1.1.0)
4816 GDK_PACKAGES=directfb
4819 PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4822 fi # COMPILE_ENVIRONMENT
4824 AC_SUBST(MOZ_DEFAULT_TOOLKIT)
4826 dnl ========================================================
4827 dnl = startup-notification support module
4828 dnl ========================================================
4830 if test "$MOZ_ENABLE_GTK2"
4832 MOZ_ENABLE_STARTUP_NOTIFICATION=
4834 MOZ_ARG_ENABLE_BOOL(startup-notification,
4835 [ --enable-startup-notification Enable startup-notification support (default: disabled) ],
4836 MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4837 MOZ_ENABLE_STARTUP_NOTIFICATION=)
4838 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4840 PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4841 libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4842 [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4843 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4845 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4847 MOZ_ENABLE_STARTUP_NOTIFICATION=
4851 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4852 AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4855 TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4857 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4858 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4859 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4861 dnl ========================================================
4863 dnl ========================================================
4864 if test "$MOZ_ENABLE_QT"
4866 PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtUiTools QtCore)
4867 AC_SUBST(MOZ_QT_CFLAGS)
4868 AC_SUBST(MOZ_QT_LIBS)
4870 MOZ_ARG_WITH_STRING(qtdir,
4871 [ --with-qtdir=\$dir Specify Qt directory ],
4874 if test -z "$QTDIR"; then
4877 QTINCDIR="/include/qt"
4878 if test ! -d "$QTDIR$QTINCDIR"; then
4879 QTINCDIR="/include/X11/qt"
4881 if test ! -d "$QTDIR$QTINCDIR"; then
4885 if test -x "$QTDIR/bin/moc-qt4"; then
4886 HOST_MOC="$QTDIR/bin/moc-qt4"
4888 if test -x "$QTDIR/bin/moc"; then
4889 HOST_MOC="$QTDIR/bin/moc"
4891 AC_CHECK_PROGS(HOST_MOC, moc, "")
4894 if test -z "$HOST_MOC"; then
4895 AC_MSG_ERROR([no acceptable moc preprocessor found])
4900 AC_SUBST(GTK_CONFIG)
4904 AC_SUBST(MOZ_ENABLE_GTK2)
4905 AC_SUBST(MOZ_ENABLE_PHOTON)
4906 AC_SUBST(MOZ_ENABLE_COCOA)
4907 AC_SUBST(MOZ_ENABLE_QT)
4908 AC_SUBST(MOZ_ENABLE_XREMOTE)
4909 AC_SUBST(MOZ_GTK2_CFLAGS)
4910 AC_SUBST(MOZ_GTK2_LIBS)
4911 AC_SUBST(MOZ_QT_CFLAGS)
4912 AC_SUBST(MOZ_QT_LIBS)
4919 dnl ========================================================
4921 dnl = Components & Features
4923 dnl ========================================================
4924 MOZ_ARG_HEADER(Components and Features)
4926 dnl ========================================================
4928 dnl ========================================================
4929 MOZ_ARG_ENABLE_STRING(ui-locale,
4930 [ --enable-ui-locale=ab-CD
4931 Select the user interface locale (default: en-US)],
4932 MOZ_UI_LOCALE=$enableval )
4933 AC_SUBST(MOZ_UI_LOCALE)
4935 dnl ========================================================
4936 dnl = Trademarked Branding
4937 dnl ========================================================
4938 MOZ_ARG_ENABLE_BOOL(official-branding,
4939 [ --enable-official-branding Enable Official mozilla.org Branding
4940 Do not distribute builds with
4941 --enable-official-branding unless you have
4942 permission to use trademarks per
4943 http://www.mozilla.org/foundation/trademarks/ .],
4944 [case "$MOZ_BUILD_APP" in
4946 MOZ_BRANDING_DIRECTORY=other-licenses/branding/firefox
4947 MOZ_APP_DISPLAYNAME=Firefox
4951 AC_MSG_ERROR([Official branding is only available for Firefox.])
4955 MOZ_ARG_WITH_STRING(branding,
4956 [ --with-branding=dir Use branding from the specified directory.],
4957 MOZ_BRANDING_DIRECTORY=$withval)
4959 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4960 if test -z "$REAL_BRANDING_DIRECTORY"; then
4961 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
4964 if test -f "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"; then
4965 . "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"
4968 AC_SUBST(MOZ_BRANDING_DIRECTORY)
4970 dnl ========================================================
4971 dnl = Distribution ID
4972 dnl ========================================================
4973 MOZ_ARG_WITH_STRING(distribution-id,
4974 [ --with-distribution-id=ID Set distribution-specific id (default=org.mozilla)],
4975 [ val=`echo $withval`
4976 MOZ_DISTRIBUTION_ID="$val"])
4978 if test -z "$MOZ_DISTRIBUTION_ID"; then
4979 MOZ_DISTRIBUTION_ID="org.mozilla"
4982 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
4983 AC_SUBST(MOZ_DISTRIBUTION_ID)
4986 dnl ========================================================
4987 dnl complex text support off by default
4988 dnl ========================================================
4990 MOZ_ARG_DISABLE_BOOL(pango,
4991 [ --disable-pango Disable usage of Pango ],
4996 dnl ========================================================
4998 dnl ========================================================
4999 if test "$MOZ_ENABLE_GTK2"
5003 PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
5005 if test "$MOZ_PANGO"
5007 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
5008 AC_SUBST(MOZ_PANGO_CFLAGS)
5009 AC_SUBST(MOZ_PANGO_LIBS)
5010 AC_DEFINE(MOZ_PANGO)
5012 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
5013 AC_SUBST(MOZ_PANGO_CFLAGS)
5014 AC_SUBST(MOZ_PANGO_LIBS)
5016 PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0 fontconfig)
5017 AC_SUBST(FT2_CFLAGS)
5022 dnl ========================================================
5023 dnl = PostScript print module
5024 dnl ========================================================
5025 MOZ_ARG_DISABLE_BOOL(postscript,
5026 [ --disable-postscript Disable PostScript printing support ],
5027 MOZ_ENABLE_POSTSCRIPT=,
5028 MOZ_ENABLE_POSTSCRIPT=1 )
5030 dnl ========================================================
5031 dnl = GnomeVFS support module
5032 dnl ========================================================
5036 dnl build the gnomevfs extension by default only when the
5037 dnl GTK2 toolkit is in use.
5038 if test "$MOZ_ENABLE_GTK2"
5040 MOZ_ENABLE_GNOMEVFS=1
5042 MOZ_ENABLE_LIBGNOME=1
5045 MOZ_ARG_DISABLE_BOOL(gnomevfs,
5046 [ --disable-gnomevfs Disable GnomeVFS support ],
5047 MOZ_ENABLE_GNOMEVFS=,
5048 MOZ_ENABLE_GNOMEVFS=force)
5050 if test "$MOZ_ENABLE_GNOMEVFS"
5052 PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
5053 MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
5054 MOZ_ENABLE_GNOMEVFS=1
5056 if test "$MOZ_ENABLE_GNOMEVFS" = "force"
5058 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
5060 MOZ_ENABLE_GNOMEVFS=
5064 AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
5065 AC_SUBST(MOZ_GNOMEVFS_LIBS)
5067 if test "$MOZ_ENABLE_GCONF"
5069 PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION,[
5070 MOZ_GCONF_LIBS=`echo $MOZ_GCONF_LIBS | sed 's/-llinc\>//'`
5077 if test "$MOZ_ENABLE_GCONF"; then
5078 AC_DEFINE(MOZ_ENABLE_GCONF)
5081 AC_SUBST(MOZ_ENABLE_GCONF)
5082 AC_SUBST(MOZ_GCONF_CFLAGS)
5083 AC_SUBST(MOZ_GCONF_LIBS)
5085 if test "$MOZ_ENABLE_LIBGNOME"
5087 PKG_CHECK_MODULES(MOZ_LIBGNOME, libgnome-2.0 >= $LIBGNOME_VERSION,[
5088 MOZ_LIBGNOME_LIBS=`echo $MOZ_LIBGNOME_LIBS | sed 's/-llinc\>//'`
5089 MOZ_ENABLE_LIBGNOME=1
5091 MOZ_ENABLE_LIBGNOME=
5095 AC_SUBST(MOZ_LIBGNOME_CFLAGS)
5096 AC_SUBST(MOZ_LIBGNOME_LIBS)
5098 # The GNOME component is built if gtk2, gconf, gnome-vfs, and libgnome
5099 # are all available.
5101 if test "$MOZ_ENABLE_GTK2" -a "$MOZ_ENABLE_GCONF" -a \
5102 "$MOZ_ENABLE_GNOMEVFS" -a "$MOZ_ENABLE_LIBGNOME"; then
5103 MOZ_ENABLE_GNOME_COMPONENT=1
5105 MOZ_ENABLE_GNOME_COMPONENT=
5108 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5111 dnl ========================================================
5112 dnl = libgnomeui support module
5113 dnl ========================================================
5115 if test "$MOZ_ENABLE_GTK2"
5117 MOZ_ENABLE_GNOMEUI=1
5119 MOZ_ARG_DISABLE_BOOL(gnomeui,
5120 [ --disable-gnomeui Disable libgnomeui support (default: auto, optional at runtime) ],
5121 MOZ_ENABLE_GNOMEUI=,
5122 MOZ_ENABLE_GNOMEUI=force)
5124 if test "$MOZ_ENABLE_GNOMEUI"
5126 PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5128 MOZ_GNOMEUI_LIBS=`echo $MOZ_GNOMEUI_LIBS | sed 's/-llinc\>//'`
5129 MOZ_ENABLE_GNOMEUI=1
5131 if test "$MOZ_ENABLE_GNOMEUI" = "force"
5133 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5139 if test "$MOZ_ENABLE_GNOMEUI"; then
5140 AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5143 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5144 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5145 AC_SUBST(MOZ_GNOMEUI_LIBS)
5147 dnl ========================================================
5149 dnl ========================================================
5151 if test "$MOZ_ENABLE_GTK2" || test "$MOZ_ENABLE_QT"
5155 MOZ_ARG_DISABLE_BOOL(dbus,
5156 [ --disable-dbus Disable dbus support ],
5160 if test "$MOZ_ENABLE_DBUS"
5162 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5163 AC_DEFINE(MOZ_ENABLE_DBUS)
5166 AC_SUBST(MOZ_ENABLE_DBUS)
5167 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5168 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5170 dnl ========================================================
5171 dnl = Build Personal Security Manager
5172 dnl ========================================================
5173 MOZ_ARG_DISABLE_BOOL(crypto,
5174 [ --disable-crypto Disable crypto support (Personal Security Manager)],
5178 dnl ========================================================
5179 dnl = JS Debugger XPCOM component (js/jsd)
5180 dnl ========================================================
5181 MOZ_ARG_DISABLE_BOOL(jsd,
5182 [ --disable-jsd Disable JavaScript debug library],
5187 dnl ========================================================
5188 dnl = Disable plugin support
5189 dnl ========================================================
5190 MOZ_ARG_DISABLE_BOOL(plugins,
5191 [ --disable-plugins Disable plugins support],
5195 dnl ========================================================
5196 dnl = Open JVM Interface (OJI) support
5197 dnl ========================================================
5198 MOZ_ARG_DISABLE_BOOL(oji,
5199 [ --disable-oji Disable Open JVM Integration support],
5202 if test -n "$MOZ_OJI"; then
5206 dnl bi-directional support always on
5210 dnl ========================================================
5211 dnl view source support on by default
5212 dnl ========================================================
5213 MOZ_ARG_DISABLE_BOOL(view-source,
5214 [ --disable-view-source Disable view source support],
5217 if test "$MOZ_VIEW_SOURCE"; then
5218 AC_DEFINE(MOZ_VIEW_SOURCE)
5222 dnl ========================================================
5223 dnl accessibility support on by default on all platforms
5225 dnl ========================================================
5226 MOZ_ARG_DISABLE_BOOL(accessibility,
5227 [ --disable-accessibility Disable accessibility support (off by default on OS X)],
5230 if test "$ACCESSIBILITY"; then
5231 AC_DEFINE(ACCESSIBILITY)
5234 if test -n "$ACCESSIBILITY"; then
5236 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5237 if test "$ac_cv_header_atlbase_h" = "no"; then
5238 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.])
5240 if test "$ac_cv_header_oleacc_idl" = "no"; then
5241 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.])
5247 dnl ========================================================
5248 dnl xpfe/components on by default
5249 dnl ========================================================
5250 MOZ_ARG_DISABLE_BOOL(xpfe-components,
5251 [ --disable-xpfe-components
5252 Disable xpfe components],
5253 MOZ_XPFE_COMPONENTS=,
5254 MOZ_XPFE_COMPONENTS=1 )
5256 dnl ========================================================
5257 dnl xpinstall support on by default
5258 dnl ========================================================
5259 MOZ_ARG_DISABLE_BOOL(xpinstall,
5260 [ --disable-xpinstall Disable xpinstall support],
5263 if test "$MOZ_XPINSTALL"; then
5264 AC_DEFINE(MOZ_XPINSTALL)
5267 dnl ========================================================
5268 dnl xpcom js loader support on by default
5269 dnl ========================================================
5270 MOZ_ARG_DISABLE_BOOL(jsloader,
5271 [ --disable-jsloader Disable xpcom js loader support],
5274 if test "$MOZ_JSLOADER"; then
5275 AC_DEFINE(MOZ_JSLOADER)
5278 dnl ========================================================
5279 dnl Disable printing
5280 dnl ========================================================
5281 MOZ_ARG_DISABLE_BOOL(printing,
5282 [ --disable-printing Disable printing support],
5286 if test "$NS_PRINTING"; then
5287 AC_DEFINE(NS_PRINTING)
5288 AC_DEFINE(NS_PRINT_PREVIEW)
5291 dnl ========================================================
5292 dnl use native unicode converters
5293 dnl ========================================================
5294 MOZ_ARG_ENABLE_BOOL(native-uconv,
5295 [ --enable-native-uconv Enable iconv support],
5296 MOZ_USE_NATIVE_UCONV=1,
5297 MOZ_USE_NATIVE_UCONV= )
5298 if test "$MOZ_USE_NATIVE_UCONV"; then
5299 AC_DEFINE(MOZ_USE_NATIVE_UCONV)
5301 if test "$OS_ARCH" != "WINCE" -a "$OS_ARCH" != "WINNT" -a "$MOZ_USE_NATIVE_UCONV" -a "$ac_cv_func_iconv" != "yes"; then
5302 AC_MSG_ERROR([iconv() not found. Cannot enable native uconv support.])
5306 dnl ========================================================
5307 dnl Libeditor can be build as plaintext-only,
5308 dnl or as a full html and text editing component.
5309 dnl We build both by default.
5310 dnl ========================================================
5311 MOZ_ARG_ENABLE_BOOL(plaintext-editor-only,
5312 [ --enable-plaintext-editor-only
5313 Allow only plaintext editing],
5314 MOZ_PLAINTEXT_EDITOR_ONLY=1,
5315 MOZ_PLAINTEXT_EDITOR_ONLY= )
5316 dnl Note the #define is MOZILLA, not MOZ, for compat with the Mac build.
5317 AC_SUBST(MOZ_PLAINTEXT_EDITOR_ONLY)
5319 dnl ========================================================
5320 dnl = Drop XPCOM Obsolete library
5321 dnl ========================================================
5322 MOZ_ARG_DISABLE_BOOL(xpcom-obsolete,
5323 [ --disable-xpcom-obsolete Disable XPCOM Obsolete Library],
5324 MOZ_NO_XPCOM_OBSOLETE=1,
5325 MOZ_NO_XPCOM_OBSOLETE=)
5327 if test -n "$MOZ_NO_XPCOM_OBSOLETE"; then
5328 AC_DEFINE(MOZ_NO_XPCOM_OBSOLETE)
5331 dnl ========================================================
5332 dnl = Disable Fast Load
5333 dnl ========================================================
5334 MOZ_ARG_DISABLE_BOOL(xpcom-fastload,
5335 [ --disable-xpcom-fastload Disable XPCOM fastload support],
5339 AC_SUBST(MOZ_NO_FAST_LOAD)
5341 if test -n "$MOZ_NO_FAST_LOAD"; then
5342 AC_DEFINE(MOZ_NO_FAST_LOAD)
5345 dnl ========================================================
5346 dnl = Enable Ogg Codecs
5347 dnl ========================================================
5348 MOZ_ARG_DISABLE_BOOL(ogg,
5349 [ --disable-ogg Disable Ogg Codec support],
5355 if test -n "$MOZ_OGG"; then
5362 if test -n "$MOZ_MEDIA"; then
5363 AC_DEFINE(MOZ_MEDIA)
5366 dnl If using Ogg with Linux, ensure that the alsa library is available
5367 if test -n "$MOZ_OGG"; then
5368 case "$target_os" in
5370 AC_CHECK_LIB(asound, snd_pcm_open,,AC_MSG_ERROR([Ogg support on Linux requires the alsa library]))
5375 dnl ========================================================
5376 dnl Permissions System
5377 dnl ========================================================
5378 MOZ_ARG_DISABLE_BOOL(permissions,
5379 [ --disable-permissions Disable permissions (popup and cookie blocking)],
5384 dnl ========================================================
5386 dnl ========================================================
5387 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5388 [ --disable-negotiateauth Disable GSS-API negotiation ],
5389 MOZ_AUTH_EXTENSION=,
5390 MOZ_AUTH_EXTENSION=1 )
5392 dnl ========================================================
5394 dnl ========================================================
5395 MOZ_ARG_DISABLE_BOOL(xtf,
5396 [ --disable-xtf Disable XTF (pluggable xml tags) support],
5399 if test "$MOZ_XTF"; then
5403 dnl ========================================================
5405 dnl ========================================================
5406 MOZ_ARG_DISABLE_BOOL(inspector-apis,
5407 [ --disable-inspector-apis Disable the DOM inspection APIs ],
5408 MOZ_NO_INSPECTOR_APIS=1,
5409 MOZ_NO_INSPECTOR_APIS= )
5411 dnl ========================================================
5412 dnl Pref extensions (autoconfig and system-pref)
5413 dnl ========================================================
5414 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5415 [ --disable-pref-extensions
5416 Disable pref extensions such as autoconfig and
5418 MOZ_PREF_EXTENSIONS=,
5419 MOZ_PREF_EXTENSIONS=1 )
5421 dnl ========================================================
5422 dnl = Universalchardet
5423 dnl ========================================================
5424 MOZ_ARG_DISABLE_BOOL(universalchardet,
5425 [ --disable-universalchardet
5426 Disable universal encoding detection],
5427 MOZ_UNIVERSALCHARDET=,
5428 MOZ_UNIVERSALCHARDET=1 )
5430 dnl ========================================================
5432 dnl ========================================================
5433 MOZ_ARG_ENABLE_BOOL(javaxpcom,
5434 [ --enable-javaxpcom
5435 Enable Java-XPCOM bridge],
5439 if test -n "${MOZ_JAVAXPCOM}"; then
5442 if test -n "$JAVA_HOME"; then
5443 JAVA_HOME=`cygpath -u \`cygpath -m -s "$JAVA_HOME"\``
5447 if test -n "$JAVA_HOME"; then
5448 JAVA_HOME=`cd "$JAVA_HOME" && pwd`
5453 if test -n "${JAVA_INCLUDE_PATH}"; then
5454 dnl Make sure jni.h exists in the given include path.
5455 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5456 AC_MSG_ERROR([jni.h was not found in given include path $JAVA_INCLUDE_PATH.])
5459 case "$target_os" in
5461 dnl Default to java system location
5462 JAVA_INCLUDE_PATH=/System/Library/Frameworks/JavaVM.framework/Headers
5466 JAVA_INCLUDE_PATH="$JAVA_HOME/include"
5469 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5470 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.])
5474 if test -n "${JAVA_BIN_PATH}"; then
5475 dnl Look for javac and jar in the specified path.
5476 JAVA_PATH="$JAVA_BIN_PATH"
5478 dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5479 JAVA_PATH="$JAVA_HOME/bin:$PATH"
5482 AC_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5483 AC_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5484 AC_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5485 if test -z "$JAVA" || test "$JAVA" = ":" || test -z "$JAVAC" || test "$JAVAC" = ":" || test -z "$JAR" || test "$JAR" = ":"; then
5486 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.])
5490 dnl ========================================================
5491 dnl = Breakpad crash reporting (on by default on supported platforms)
5492 dnl ========================================================
5494 if (test "$OS_ARCH" = "WINNT" -a -z "$GNU_CC" \
5495 || test "$OS_ARCH" = "Darwin" \
5496 || test "$OS_ARCH" = "Linux" -a "$CPU_ARCH" = "x86" \
5497 || test "$OS_ARCH" = "SunOS") \
5498 && test -z "$HAVE_64BIT_OS"; then
5502 MOZ_ARG_DISABLE_BOOL(crashreporter,
5503 [ --disable-crashreporter Disable breakpad crash reporting],
5505 MOZ_CRASHREPORTER=1)
5507 if test -n "$MOZ_CRASHREPORTER"; then
5508 AC_DEFINE(MOZ_CRASHREPORTER)
5510 if (test "$OS_ARCH" = "Linux" || test "$OS_ARCH" = "SunOS") && \
5511 test -z "$SKIP_LIBRARY_CHECKS"; then
5512 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
5513 AC_SUBST(MOZ_GTHREAD_CFLAGS)
5514 AC_SUBST(MOZ_GTHREAD_LIBS)
5516 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.])])
5520 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
5521 [ --with-crashreporter-enable-percent=NN Enable sending crash reports by default on NN% of users. (default=100)],
5522 [ val=`echo $withval | sed 's/[^0-9]//g'`
5523 MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
5525 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
5526 MOZ_CRASHREPORTER_ENABLE_PERCENT=100
5528 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
5530 dnl ========================================================
5531 dnl = Enable compilation of specific extension modules
5532 dnl ========================================================
5534 MOZ_ARG_ENABLE_STRING(extensions,
5535 [ --enable-extensions Enable extensions],
5536 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5537 if test "$option" = "yes" || test "$option" = "all"; then
5538 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_ALL"
5539 elif test "$option" = "no" || test "$option" = "none"; then
5541 elif test "$option" = "default"; then
5542 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
5543 elif test `echo "$option" | grep -c \^-` != 0; then
5544 option=`echo $option | sed 's/^-//'`
5545 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
5547 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
5550 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
5552 if test -z "$MOZ_ENABLE_GNOMEVFS" && test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
5553 # Suppress warning on non-X11 platforms
5554 if test -n "$MOZ_X11"; then
5555 AC_MSG_WARN([Cannot build gnomevfs without required libraries. Removing gnomevfs from MOZ_EXTENSIONS.])
5557 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
5560 if test -z "$MOZ_JSDEBUGGER" && test `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
5561 AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
5562 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
5565 dnl This might be temporary: build tridentprofile only on Windows
5566 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0 && test "$OS_ARCH" != "WINNT"; then
5567 AC_MSG_WARN([tridentprofile extension works only on Windows at this time. Removing tridentprofile from MOZ_EXTENSIONS.])
5568 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5571 dnl cookie must be built before tridentprofile. put it at list's end.
5572 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0; then
5573 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5574 MOZ_EXTENSIONS="$MOZ_EXTENSIONS tridentprofile"
5577 dnl xforms requires xtf and schema-validation
5578 if test -z "$MOZ_XTF" && test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
5579 AC_MSG_WARN([Cannot build XForms without XTF support. Removing XForms from MOZ_EXTENSIONS.])
5580 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5582 if test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0 && test `echo "$MOZ_EXTENSIONS" | grep -c schema-validation` -eq 0; then
5583 AC_MSG_WARN([Cannot build XForms without schema validation. Removing XForms from MOZ_EXTENSIONS.])
5584 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5587 if test `echo "$MOZ_EXTENSIONS" | grep -c auth` -ne 0; then
5588 AC_MSG_WARN([auth is no longer an extension, use --disable-negotiateauth to disable.])
5589 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|auth||g'`
5592 if test `echo "$MOZ_EXTENSIONS" | grep -c 'cookie\|permissions'` -ne 0; then
5593 AC_MSG_WARN([cookie and permissions are no longer extensions, use --disable-permissions to disable.])
5594 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|cookie||g; s|permissions||g'`
5597 if test `echo "$MOZ_EXTENSIONS" | grep -c pref` -ne 0; then
5598 AC_MSG_WARN([pref is no longer an extension, use --disable-pref-extensions to disable.])
5599 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|pref||g'`
5602 if test `echo "$MOZ_EXTENSIONS" | grep -c universalchardet` -ne 0; then
5603 AC_MSG_WARN([universalchardet is no longer an extension, use --disable-universalchardet to disable.])
5604 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|universalchardet||g'`
5607 if test `echo "$MOZ_EXTENSIONS" | grep -c java` -ne 0; then
5608 AC_MSG_WARN([java is no longer an extension, use --enable-javaxpcom to enable.])
5609 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|java||g'`
5612 if test `echo "$MOZ_EXTENSIONS" | grep -c spellcheck` -ne 0; then
5613 AC_MSG_WARN([spellcheck is no longer an extension.])
5614 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|spellcheck||g'`
5617 if test -n "$MOZ_NO_XPCOM_OBSOLETE" && test `echo "$MOZ_EXTENSIONS" | grep -c sroaming` -ne 0; then
5618 AC_MSG_WARN([Cannot currently build sroaming without xpcom obsolete -- bug 249343. Removing sroaming from MOZ_EXTENSIONS.])
5619 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|sroaming||'`
5623 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
5625 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
5626 dnl when trying to build a non-existent extension.
5627 for extension in $MOZ_EXTENSIONS; do
5628 if test ! -d "${srcdir}/extensions/${extension}"; then
5629 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
5634 dnl ========================================================
5636 dnl ========================================================
5637 case "$MOZ_WIDGET_TOOLKIT" in
5638 beos|windows|os2|mac|cocoa)
5641 if test -z "$MOZ_ENABLE_GTK2" && test -z "$MOZ_ENABLE_QT"; then
5642 MOZ_IMG_DECODERS_DEFAULT=`echo $MOZ_IMG_DECODERS_DEFAULT | sed -e 's|icon||'`
5647 MOZ_ARG_ENABLE_STRING(image-decoders,
5648 [ --enable-image-decoders[={mod1,mod2,default,all,none}]
5649 Enable specific image decoders],
5650 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5651 if test "$option" = "yes" || test "$option" = "all"; then
5652 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5653 elif test "$option" = "no" || test "$option" = "none"; then
5655 elif test "$option" = "default"; then
5656 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5657 elif test `echo "$option" | grep -c \^-` != 0; then
5658 option=`echo $option | sed 's/^-//'`
5659 MOZ_IMG_DECODERS=`echo "$MOZ_IMG_DECODERS" | sed "s/ ${option}//"`
5661 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $option"
5664 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS_DEFAULT")
5666 dnl Dupes are removed in the encoder section because it will also add decoders
5668 dnl ========================================================
5670 dnl ========================================================
5671 MOZ_ARG_ENABLE_STRING(image-encoders,
5672 [ --enable-image-encoders[={mod1,mod2,default,all,none}]
5673 Enable specific image encoders],
5674 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5675 if test "$option" = "yes" || test "$option" = "all"; then
5676 addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5677 elif test "$option" = "no" || test "$option" = "none"; then
5680 elif test "$option" = "default"; then
5681 addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5682 elif test `echo "$option" | grep -c \^-` != 0; then
5683 option=`echo $option | sed 's/^-//'`
5684 addencoder=`echo "$MOZ_IMG_ENCODERS" | sed "s/ ${option}//"`
5686 addencoder="$option"
5688 MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS $addencoder"
5690 MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS_DEFAULT")
5693 MOZ_IMG_DECODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_DECODERS}`
5694 MOZ_IMG_ENCODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_ENCODERS}`
5696 dnl ========================================================
5697 dnl MathML on by default
5698 dnl ========================================================
5699 MOZ_ARG_DISABLE_BOOL(mathml,
5700 [ --disable-mathml Disable MathML support],
5703 if test "$MOZ_MATHML"; then
5704 AC_DEFINE(MOZ_MATHML)
5707 dnl ========================================================
5709 dnl ========================================================
5710 MOZ_ARG_DISABLE_BOOL(canvas,
5711 [ --disable-canvas Disable html:canvas feature],
5713 MOZ_ENABLE_CANVAS=1 )
5714 if test -n "$MOZ_ENABLE_CANVAS"; then
5715 AC_DEFINE(MOZ_ENABLE_CANVAS)
5717 AC_SUBST(MOZ_ENABLE_CANVAS)
5719 dnl ========================================================
5721 dnl ========================================================
5722 MOZ_ARG_DISABLE_BOOL(svg,
5723 [ --disable-svg Disable SVG support],
5726 if test -n "$MOZ_SVG"; then
5730 dnl ========================================================
5732 dnl ========================================================
5733 case "$target_os" in
5734 aix*|solaris*|linux*|msvc*|mks*|cygwin*|mingw*|os2*|wince*)
5739 MOZ_ARG_DISABLE_BOOL(installer,
5740 [ --disable-installer Disable building of installer],
5743 if test -n "$MOZ_INSTALLER" -a -n "$MOZ_XUL_APP" -a "$OS_ARCH" = "WINNT"; then
5744 # Disable installer for Windows builds that use the new toolkit if NSIS
5745 # isn't in the path.
5746 AC_PATH_PROGS(MAKENSIS, makensis)
5747 if test -z "$MAKENSIS" || test "$MAKENSIS" = ":"; then
5748 AC_MSG_ERROR([To build the installer makensis is required in your path. To build without the installer reconfigure using --disable-installer.])
5750 # The Windows build for NSIS requires the iconv command line utility to
5751 # convert the charset of the locale files.
5752 AC_PATH_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5753 if test -z "$HOST_ICONV"; then
5754 AC_MSG_ERROR([To build the installer iconv is required in your path. To build without the installer reconfigure using --disable-installer.])
5758 # Automatically disable installer if xpinstall isn't built
5759 if test -z "$MOZ_XPINSTALL"; then
5762 AC_SUBST(MOZ_INSTALLER)
5764 AC_MSG_CHECKING([for tar archiver])
5765 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
5766 if test -z "$TAR"; then
5767 AC_MSG_ERROR([no tar archiver found in \$PATH])
5769 AC_MSG_RESULT([$TAR])
5772 AC_MSG_CHECKING([for wget])
5773 AC_CHECK_PROGS(WGET, wget, "")
5774 AC_MSG_RESULT([$WGET])
5777 dnl ========================================================
5779 dnl ========================================================
5781 MOZ_ARG_DISABLE_BOOL(updater,
5782 [ --disable-updater Disable building of updater],
5785 # The Windows build requires the iconv command line utility
5786 # in order to build the updater.
5787 case "$target_os" in
5788 msvc*|mks*|cygwin*|mingw*|wince*)
5789 if test -n "$MOZ_UPDATER"; then
5790 AC_MSG_CHECKING([for iconv])
5791 AC_CHECK_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5792 if test -z "$HOST_ICONV"; then
5793 AC_MSG_ERROR([iconv not found in \$PATH])
5798 AC_SUBST(MOZ_UPDATER)
5800 # app update channel is 'default' when not supplied.
5801 MOZ_ARG_ENABLE_STRING([update-channel],
5802 [ --enable-update-channel=CHANNEL
5803 Select application update channel (default=default)],
5804 MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
5806 if test -z "$MOZ_UPDATE_CHANNEL"; then
5807 MOZ_UPDATE_CHANNEL=default
5809 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
5811 # tools/update-packaging is not checked out by default.
5812 MOZ_ARG_ENABLE_BOOL(update-packaging,
5813 [ --enable-update-packaging
5814 Enable tools/update-packaging],
5815 MOZ_UPDATE_PACKAGING=1,
5816 MOZ_UPDATE_PACKAGING= )
5817 AC_SUBST(MOZ_UPDATE_PACKAGING)
5819 dnl ========================================================
5821 dnl ========================================================
5823 MOZ_ARG_DISABLE_BOOL(xpconnect-idispatch,
5824 [ --disable-xpconnect-idispatch
5825 Disable building of xpconnect support for IDispatch
5827 XPC_IDISPATCH_SUPPORT=,
5828 XPC_IDISPATCH_SUPPORT=1)
5829 AC_SUBST(XPC_IDISPATCH_SUPPORT)
5831 MOZ_ARG_DISABLE_BOOL(activex,
5832 [ --disable-activex Disable building of ActiveX control (win32 only)],
5833 MOZ_NO_ACTIVEX_SUPPORT=1,
5834 MOZ_NO_ACTIVEX_SUPPORT= )
5835 AC_SUBST(MOZ_NO_ACTIVEX_SUPPORT)
5837 MOZ_ARG_DISABLE_BOOL(activex-scripting,
5838 [ --disable-activex-scripting
5839 Disable building of ActiveX scripting support (win32)],
5840 MOZ_ACTIVEX_SCRIPTING_SUPPORT=,
5841 MOZ_ACTIVEX_SCRIPTING_SUPPORT=1)
5842 AC_SUBST(MOZ_ACTIVEX_SCRIPTING_SUPPORT)
5844 if test -n "$MOZ_NO_ACTIVEX_SUPPORT" -a -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT";
5846 AC_MSG_ERROR([Cannot enable ActiveX scripting support when ActiveX support is disabled.])
5849 if test -n "$XPC_IDISPATCH_SUPPORT" -o -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
5851 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5852 if test "$ac_cv_header_atlbase_h" = "no"; then
5853 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.])
5859 dnl ========================================================
5861 dnl ========================================================
5862 MOZ_ARG_ENABLE_BOOL(leaky,
5863 [ --enable-leaky Build leaky memory tool],
5868 dnl ========================================================
5870 dnl ========================================================
5871 MOZ_ARG_ENABLE_BOOL(xpctools,
5872 [ --enable-xpctools Build JS profiling tool],
5877 dnl ========================================================
5878 dnl build the tests by default
5879 dnl ========================================================
5880 MOZ_ARG_DISABLE_BOOL(tests,
5881 [ --disable-tests Do not build test libraries & programs],
5885 dnl ========================================================
5886 dnl parental controls (for Windows Vista)
5887 dnl ========================================================
5888 MOZ_ARG_DISABLE_BOOL(parental-controls,
5889 [ --disable-parental-controls
5890 Do not build parental controls],
5891 MOZ_DISABLE_PARENTAL_CONTROLS=1,
5892 MOZ_DISABLE_PARENTAL_CONTROLS=)
5893 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5894 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5897 dnl ========================================================
5898 dnl Vista SDK specific api
5899 dnl ========================================================
5900 MOZ_ARG_DISABLE_BOOL(vista-sdk-requirements,
5901 [ --disable-vista-sdk-requirements
5902 Do not build Vista SDK specific code],
5903 MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=1,
5904 MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=)
5905 if test -n "$MOZ_DISABLE_VISTA_SDK_REQUIREMENTS"; then
5906 AC_MSG_WARN([Resulting builds will not be compatible with Windows Vista. (bug 428970)])
5907 AC_DEFINE(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
5908 if test -z "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5909 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5911 MOZ_DISABLE_PARENTAL_CONTROLS=1
5914 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5915 if test "$ac_cv_header_wpcapi_h" = "no"; then
5916 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.])
5921 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
5922 AC_SUBST(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
5924 dnl ========================================================
5926 dnl = Module specific options
5928 dnl ========================================================
5929 MOZ_ARG_HEADER(Individual module options)
5931 dnl ========================================================
5932 dnl = Enable Lea malloc in xpcom. OFF by default.
5933 dnl ========================================================
5934 MOZ_ARG_ENABLE_BOOL(xpcom-lea,
5935 [ --enable-xpcom-lea Use Lea malloc in xpcom ],
5938 if test -n "$XPCOM_USE_LEA"; then
5939 AC_DEFINE(XPCOM_USE_LEA)
5942 dnl ========================================================
5943 dnl = Enable places (new history/bookmarks)
5944 dnl ========================================================
5945 MOZ_ARG_ENABLE_BOOL(places,
5946 [ --enable-places Enable 'places' bookmark/history implementation],
5949 if test -n "$MOZ_PLACES"; then
5950 AC_DEFINE(MOZ_PLACES)
5951 if test -z "$MOZ_MAIL_NEWS"; then
5956 if test "$MOZ_BUILD_APP" = "browser"; then
5957 AC_MSG_ERROR([Cannot build Firefox with --disable-places.])
5961 dnl ========================================================
5962 dnl = Disable feed handling components
5963 dnl ========================================================
5964 MOZ_ARG_DISABLE_BOOL(feeds,
5965 [ --disable-feeds Disable feed handling and processing components],
5968 if test -n "$MOZ_FEEDS"; then
5969 AC_DEFINE(MOZ_FEEDS)
5971 if test "$MOZ_BUILD_APP" = "browser"; then
5972 AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
5976 dnl ========================================================
5977 dnl = Enable mozStorage
5978 dnl ========================================================
5979 dnl Implicitly enabled by default if building calendar or places
5980 MOZ_ARG_ENABLE_BOOL(storage,
5981 [ --enable-storage Enable mozStorage module and related components],
5984 if test -n "$MOZ_STORAGE"; then
5985 AC_DEFINE(MOZ_STORAGE)
5988 dnl ========================================================
5989 dnl Check for sqlite
5990 dnl ========================================================
5993 MOZ_ARG_ENABLE_BOOL(system-sqlite,
5994 [ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
5995 MOZ_NATIVE_SQLITE=1,
5996 MOZ_NATIVE_SQLITE= )
5998 if test -z "$MOZ_NATIVE_SQLITE"
6001 SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,sqlite3,$(DIST)/lib)'
6003 PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6006 AC_SUBST(MOZ_NATIVE_SQLITE)
6008 dnl ========================================================
6009 dnl = Enable help viewer (off by default)
6010 dnl ========================================================
6011 MOZ_ARG_ENABLE_BOOL(help-viewer,
6012 [ --enable-help-viewer Enable help viewer],
6015 if test -n "$MOZ_HELP_VIEWER"; then
6016 AC_DEFINE(MOZ_HELP_VIEWER)
6018 AC_SUBST(MOZ_HELP_VIEWER)
6019 if test "$MOZ_BUILD_APP" = "browser" -a -n "$MOZ_HELP_VIEWER"; then
6020 AC_MSG_ERROR([Cannot build Firefox with --enable-help-viewer.])
6023 dnl ========================================================
6024 dnl = Enable safe browsing (anti-phishing)
6025 dnl ========================================================
6026 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6027 [ --enable-safe-browsing Enable safe browsing (anti-phishing) implementation],
6028 MOZ_SAFE_BROWSING=1,
6029 MOZ_SAFE_BROWSING= )
6030 if test -n "$MOZ_SAFE_BROWSING"; then
6031 AC_DEFINE(MOZ_SAFE_BROWSING)
6033 AC_SUBST(MOZ_SAFE_BROWSING)
6035 dnl ========================================================
6036 dnl = Enable url-classifier
6037 dnl ========================================================
6038 dnl Implicitly enabled by default if building with safe-browsing
6039 if test -n "$MOZ_SAFE_BROWSING"; then
6040 MOZ_URL_CLASSIFIER=1
6042 MOZ_ARG_ENABLE_BOOL(url-classifier,
6043 [ --enable-url-classifier Enable url classifier module],
6044 MOZ_URL_CLASSIFIER=1,
6045 MOZ_URL_CLASSIFIER= )
6046 if test -n "$MOZ_URL_CLASSIFIER"; then
6047 AC_DEFINE(MOZ_URL_CLASSIFIER)
6049 AC_SUBST(MOZ_URL_CLASSIFIER)
6051 dnl ========================================================
6052 dnl = Disable zipwriter
6053 dnl ========================================================
6054 MOZ_ARG_DISABLE_BOOL(zipwriter,
6055 [ --disable-zipwriter Disable zipwriter component],
6058 AC_SUBST(MOZ_ZIPWRITER)
6060 dnl ========================================================
6061 dnl = Enable Ultrasparc specific optimizations for JS
6062 dnl ========================================================
6063 MOZ_ARG_ENABLE_BOOL(js-ultrasparc,
6064 [ --enable-js-ultrasparc Use UltraSPARC optimizations in JS],
6065 JS_ULTRASPARC_OPTS=1,
6066 JS_ULTRASPARC_OPTS= )
6068 dnl only enable option for ultrasparcs
6069 if test `echo "$target_os" | grep -c \^solaris 2>/dev/null` = 0 -o \
6070 "$OS_TEST" != "sun4u"; then
6073 AC_SUBST(JS_ULTRASPARC_OPTS)
6075 dnl ========================================================
6076 dnl = Hildon and OSSO checks
6077 dnl ========================================================
6078 PKG_CHECK_MODULES(LIBHILDONMIME,libhildonmime,
6079 MOZ_PLATFORM_HILDON=1,
6080 MOZ_PLATFORM_HILDON=)
6081 if test $MOZ_PLATFORM_HILDON; then
6082 AC_DEFINE(MOZ_PLATFORM_HILDON)
6084 AC_SUBST(LIBHILDONMIME_CFLAGS)
6085 AC_SUBST(LIBHILDONMIME_LIBS)
6087 PKG_CHECK_MODULES(LIBOSSO,libosso,
6091 if test $NS_OSSO; then
6092 if test -z "$MOZ_ENABLE_DBUS"; then
6093 AC_MSG_ERROR([DBus is required when building for OSSO])
6097 AC_SUBST(LIBOSSO_CFLAGS)
6098 AC_SUBST(LIBOSSO_LIBS)
6100 PKG_CHECK_MODULES(MOZ_LOCATION, [liblocation gpsbt],
6101 NS_MAEMO_LOCATION=1,
6104 if test $NS_MAEMO_LOCATION; then
6105 AC_DEFINE(NS_MAEMO_LOCATION)
6108 AC_SUBST(MOZ_LOCATION_CFLAGS)
6109 AC_SUBST(MOZ_LOCATION_LIBS)
6111 dnl ========================================================
6113 dnl = Feature options that require extra sources to be pulled
6115 dnl ========================================================
6116 dnl MOZ_ARG_HEADER(Features that require extra sources)
6118 dnl ========================================================
6120 dnl = Debugging Options
6122 dnl ========================================================
6123 MOZ_ARG_HEADER(Debugging and Optimizations)
6125 dnl ========================================================
6126 dnl = Disable building with debug info.
6127 dnl = Debugging is OFF by default
6128 dnl ========================================================
6129 if test -z "$MOZ_DEBUG_FLAGS"
6133 if test "$GNU_CC"; then
6134 GCC_VERSION=`$CC -v 2>&1 | awk '/version/ { print $3 }'`
6135 case "$GCC_VERSION" in
6140 MOZ_DEBUG_FLAGS="-g"
6144 MOZ_DEBUG_FLAGS="-g"
6148 MOZ_DEBUG_FLAGS="-g"
6153 MOZ_ARG_ENABLE_STRING(debug,
6154 [ --enable-debug[=DBG] Enable building with developer debug info
6155 (Using compiler flags DBG)],
6156 [ if test "$enableval" != "no"; then
6158 if test -n "$enableval" && test "$enableval" != "yes"; then
6159 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6166 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG"
6167 case "${target_os}" in
6169 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${USER}"
6171 msvc*|mks*|cygwin*|mingw*|os2*|wince*)
6172 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
6175 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`$WHOAMI`"
6178 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DTRACING"
6180 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
6182 if test -n "$MOZ_DEBUG"; then
6183 AC_MSG_CHECKING([for valid debug flags])
6184 _SAVE_CFLAGS=$CFLAGS
6185 CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
6186 AC_TRY_COMPILE([#include <stdio.h>],
6187 [printf("Hello World\n");],
6190 AC_MSG_RESULT([$_results])
6191 if test "$_results" = "no"; then
6192 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
6194 CFLAGS=$_SAVE_CFLAGS
6197 dnl ========================================================
6198 dnl = Enable code optimization. ON by default.
6199 dnl ========================================================
6200 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6201 MOZ_OPTIMIZE_FLAGS="-O"
6204 MOZ_ARG_ENABLE_STRING(optimize,
6205 [ --disable-optimize Disable compiler optimization
6206 --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6207 [ if test "$enableval" != "no"; then
6209 if test -n "$enableval" && test "$enableval" != "yes"; then
6210 MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6215 fi ], MOZ_OPTIMIZE=1)
6217 if test "$COMPILE_ENVIRONMENT"; then
6218 if test -n "$MOZ_OPTIMIZE"; then
6219 AC_MSG_CHECKING([for valid optimization flags])
6220 _SAVE_CFLAGS=$CFLAGS
6221 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6222 AC_TRY_COMPILE([#include <stdio.h>],
6223 [printf("Hello World\n");],
6226 AC_MSG_RESULT([$_results])
6227 if test "$_results" = "no"; then
6228 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6230 CFLAGS=$_SAVE_CFLAGS
6232 fi # COMPILE_ENVIRONMENT
6234 AC_SUBST(MOZ_OPTIMIZE)
6235 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6236 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6237 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6239 dnl ========================================================
6240 dnl = Enable/disable debug for specific modules only
6241 dnl = module names beginning with ^ will be disabled
6242 dnl ========================================================
6243 MOZ_ARG_ENABLE_STRING(debug-modules,
6244 [ --enable-debug-modules Enable/disable debug info for specific modules],
6245 [ MOZ_DEBUG_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6247 dnl ========================================================
6248 dnl = Enable/disable generation of debugger info for specific modules only
6249 dnl = the special module name ALL_MODULES can be used to denote all modules
6250 dnl = module names beginning with ^ will be disabled
6251 dnl ========================================================
6252 MOZ_ARG_ENABLE_STRING(debugger-info-modules,
6253 [ --enable-debugger-info-modules
6254 Enable/disable debugger info for specific modules],
6255 [ for i in `echo $enableval | sed 's/,/ /g'`; do
6256 dnl note that the list of module names is reversed as it is copied
6257 dnl this is important, as it will allow config.mk to interpret stuff like
6258 dnl "^ALL_MODULES xpcom" properly
6259 if test "$i" = "no"; then
6262 if test "$i" = "yes"; then
6265 MOZ_DBGRINFO_MODULES="$i $MOZ_DBGRINFO_MODULES";
6268 dnl ========================================================
6269 dnl Enable garbage collector
6270 dnl ========================================================
6271 MOZ_ARG_ENABLE_BOOL(boehm,
6272 [ --enable-boehm Enable the Boehm Garbage Collector],
6275 if test -n "$GC_LEAK_DETECTOR"; then
6276 AC_DEFINE(GC_LEAK_DETECTOR)
6279 dnl ========================================================
6280 dnl Disable runtime logging checks
6281 dnl ========================================================
6282 MOZ_ARG_DISABLE_BOOL(logging,
6283 [ --disable-logging Disable logging facilities],
6284 NS_DISABLE_LOGGING=1,
6285 NS_DISABLE_LOGGING= )
6286 if test "$NS_DISABLE_LOGGING"; then
6287 AC_DEFINE(NS_DISABLE_LOGGING)
6289 AC_DEFINE(MOZ_LOGGING)
6292 dnl ========================================================
6293 dnl = dnl This will enable logging of addref, release, ctor, dtor.
6294 dnl ========================================================
6295 _ENABLE_LOGREFCNT=42
6296 MOZ_ARG_ENABLE_BOOL(logrefcnt,
6297 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
6298 _ENABLE_LOGREFCNT=1,
6299 _ENABLE_LOGREFCNT= )
6300 if test "$_ENABLE_LOGREFCNT" = "1"; then
6301 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
6302 elif test -z "$_ENABLE_LOGREFCNT"; then
6303 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
6306 dnl ========================================================
6307 dnl = Enable trace malloc
6308 dnl ========================================================
6309 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
6310 MOZ_ARG_ENABLE_BOOL(trace-malloc,
6311 [ --enable-trace-malloc Enable malloc tracing],
6314 if test "$NS_TRACE_MALLOC"; then
6315 # Please, Mr. Linker Man, don't take away our symbol names
6316 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6318 AC_DEFINE(NS_TRACE_MALLOC)
6320 AC_SUBST(NS_TRACE_MALLOC)
6322 dnl ========================================================
6323 dnl = Enable jemalloc
6324 dnl ========================================================
6325 MOZ_ARG_ENABLE_BOOL(jemalloc,
6326 [ --enable-jemalloc Replace memory allocator with jemalloc],
6330 if test "$NS_TRACE_MALLOC"; then
6334 if test "$MOZ_MEMORY"; then
6336 dnl Don't try to run compiler tests on Windows
6337 if test "$OS_ARCH" = "WINNT"; then
6338 if test -z "$HAVE_64BIT_OS"; then
6339 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6341 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6344 AC_CHECK_SIZEOF([int *], [4])
6345 case "${ac_cv_sizeof_int_p}" in
6347 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6350 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6353 AC_MSG_ERROR([Unexpected pointer size])
6358 AC_DEFINE(MOZ_MEMORY)
6359 if test "x$MOZ_DEBUG" = "x1"; then
6360 AC_DEFINE(MOZ_MEMORY_DEBUG)
6362 dnl The generic feature tests that determine how to compute ncpus are long and
6363 dnl complicated. Therefore, simply define special cpp variables for the
6364 dnl platforms we have special knowledge of.
6365 case "${target_os}" in
6367 AC_DEFINE(MOZ_MEMORY_DARWIN)
6370 AC_DEFINE(MOZ_MEMORY_BSD)
6373 AC_DEFINE(MOZ_MEMORY_LINUX)
6376 AC_DEFINE(MOZ_MEMORY_BSD)
6379 AC_DEFINE(MOZ_MEMORY_SOLARIS)
6381 msvc*|mks*|cygwin*|mingw*)
6382 AC_DEFINE(MOZ_MEMORY_WINDOWS)
6383 dnl XXX: should test for vc8sp1 here, otherwise patching the crt src
6384 dnl will fail miserably
6385 if test "$_CC_SUITE" -lt "8"; then
6386 AC_MSG_ERROR([Building jemalloc requires Visual C++ 2005 or better])
6388 if test -z "$WIN32_CRT_SRC_DIR" -a -z "$WIN32_CUSTOM_CRT_DIR"; then
6389 if test -z "$VCINSTALLDIR" -o ! -d "$VCINSTALLDIR"; then
6390 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.])
6392 WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src"
6395 if test -z "$WIN32_CRT_SRC_DIR"; then
6397 WIN32_CUSTOM_CRT_DIR=`cd "$WIN32_CUSTOM_CRT_DIR" && pwd`
6398 _WIN_UNIX_CRT_PATH="$WIN32_CUSTOM_CRT_DIR"
6400 # CRT source directory
6401 WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd`
6402 _CRT_BASE_DIR=`basename "$WIN32_CRT_SRC_DIR"`
6403 _WIN_UNIX_CRT_PATH="$_objdir/memory/jemalloc/$_CRT_BASE_DIR/build/intel"
6405 dnl need win32 paths in LIB, hence this python abuse. extra brackets
6407 _WIN_CRT_PATH=[`$PYTHON -c 'import sys, os.path; print os.path.normpath(sys.argv[1])' "$_WIN_UNIX_CRT_PATH"`]
6408 MOZ_LIB="$_WIN_CRT_PATH;$LIB"
6409 dnl Needs to be in PATH too, since our tools will wind up linked against it.
6410 dnl This needs to be unix style.
6411 MOZ_PATH="$PATH:$_WIN_UNIX_CRT_PATH"
6412 dnl Statically link the C++ stdlib. We only use this for Breakpad anyway.
6413 AC_DEFINE(_STATIC_CPPLIB)
6414 dnl Don't generate a manifest, since we're linking to a custom CRT.
6415 LDFLAGS="$LDFLAGS -MANIFEST:NO"
6416 dnl Also pass this to NSPR/NSS
6417 DLLFLAGS="$DLLFLAGS -MANIFEST:NO"
6421 AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
6425 AC_ARG_WITH([valgrind],
6426 [ --with-valgrind Enable valgrind integration hooks],
6427 [enable_valgrind="yes"], [enable_valgrind="no"])
6428 AC_CHECK_HEADER([valgrind/valgrind.h], [], [enable_valgrind="no"])
6429 if test "x$enable_valgrind" = "xyes" ; then
6430 AC_DEFINE(MOZ_VALGRIND)
6433 AC_SUBST(MOZ_MEMORY)
6434 AC_SUBST(WIN32_CRT_SRC_DIR)
6435 AC_SUBST(WIN32_CUSTOM_CRT_DIR)
6438 dnl Need to set this for make because NSS doesn't have configure
6441 dnl ========================================================
6442 dnl = Use malloc wrapper lib
6443 dnl ========================================================
6444 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
6445 [ --enable-wrap-malloc Wrap malloc calls (gnu linker only)],
6449 if test -n "$_WRAP_MALLOC"; then
6450 if test "$GNU_CC"; then
6451 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"
6452 MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) -o $@'
6456 dnl ========================================================
6457 dnl = Location of malloc wrapper lib
6458 dnl ========================================================
6459 MOZ_ARG_WITH_STRING(wrap-malloc,
6460 [ --with-wrap-malloc=DIR Location of malloc wrapper library],
6461 WRAP_MALLOC_LIB=$withval)
6463 dnl ========================================================
6464 dnl = Use Electric Fence
6465 dnl ========================================================
6466 MOZ_ARG_ENABLE_BOOL(efence,
6467 [ --enable-efence Link with Electric Fence],
6470 if test -n "$_ENABLE_EFENCE"; then
6471 AC_CHECK_LIB(efence,malloc)
6474 dnl ========================================================
6476 dnl ========================================================
6477 MOZ_ARG_ENABLE_BOOL(jprof,
6478 [ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof)],
6481 if test -n "$MOZ_JPROF"; then
6482 AC_DEFINE(MOZ_JPROF)
6485 dnl ========================================================
6487 dnl ========================================================
6488 MOZ_ARG_ENABLE_BOOL(shark,
6489 [ --enable-shark Enable shark remote profiling (needs CHUD framework)],
6492 if test -n "$MOZ_SHARK"; then
6493 AC_DEFINE(MOZ_SHARK)
6496 dnl ========================================================
6498 dnl ========================================================
6499 MOZ_ARG_ENABLE_BOOL(callgrind,
6500 [ --enable-callgrind Enable callgrind profiling],
6503 if test -n "$MOZ_CALLGRIND"; then
6504 AC_DEFINE(MOZ_CALLGRIND)
6507 dnl ========================================================
6509 dnl ========================================================
6510 MOZ_ARG_ENABLE_BOOL(vtune,
6511 [ --enable-vtune Enable vtune profiling],
6514 if test -n "$MOZ_VTUNE"; then
6515 AC_DEFINE(MOZ_VTUNE)
6518 dnl ========================================================
6519 dnl = Enable static checking using gcc-dehydra
6520 dnl ========================================================
6522 MOZ_ARG_WITH_STRING(static-checking,
6523 [ --with-static-checking=path/to/gcc_dehydra.so
6524 Enable static checking of code using GCC-dehydra],
6525 DEHYDRA_PATH=$withval,
6528 if test -n "$DEHYDRA_PATH"; then
6529 if ! test -f "$DEHYDRA_PATH"; then
6530 AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
6532 AC_DEFINE(NS_STATIC_CHECKING)
6534 AC_SUBST(DEHYDRA_PATH)
6536 dnl ========================================================
6537 dnl = Enable stripping of libs & executables
6538 dnl ========================================================
6539 MOZ_ARG_ENABLE_BOOL(strip,
6540 [ --enable-strip Enable stripping of libs & executables ],
6544 dnl ========================================================
6545 dnl = Enable stripping of libs & executables when packaging
6546 dnl ========================================================
6547 MOZ_ARG_ENABLE_BOOL(install-strip,
6548 [ --enable-install-strip Enable stripping of libs & executables when packaging ],
6552 dnl ========================================================
6553 dnl = --enable-elf-dynstr-gc
6554 dnl ========================================================
6555 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
6556 [ --enable-elf-dynstr-gc Enable elf dynstr garbage collector (opt builds only)],
6557 USE_ELF_DYNSTR_GC=1,
6558 USE_ELF_DYNSTR_GC= )
6560 dnl ========================================================
6561 dnl = --enable-old-abi-compat-wrappers
6562 dnl ========================================================
6563 dnl on x86 linux, the current builds of some popular plugins (notably
6564 dnl flashplayer and real) expect a few builtin symbols from libgcc
6565 dnl which were available in some older versions of gcc. However,
6566 dnl they're _NOT_ available in newer versions of gcc (eg 3.1), so if
6567 dnl we want those plugin to work with a gcc-3.1 built binary, we need
6568 dnl to provide these symbols. MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS defaults
6569 dnl to true on x86 linux, and false everywhere else.
6572 MOZ_ARG_ENABLE_BOOL(old-abi-compat-wrappers,
6573 [ --enable-old-abi-compat-wrappers
6574 Support old GCC ABI symbols to ease the pain
6575 of the linux compiler change],
6576 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1,
6577 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS= )
6578 if test "$COMPILE_ENVIRONMENT"; then
6579 if test "$MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS"; then
6582 AC_CHECK_FUNCS(__builtin_vec_new __builtin_vec_delete __builtin_new __builtin_delete __pure_virtual)
6584 AC_DEFINE(MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS)
6586 fi # COMPILE_ENVIRONMENT
6588 dnl ========================================================
6589 dnl = --enable-prebinding
6590 dnl ========================================================
6591 MOZ_ARG_ENABLE_BOOL(prebinding,
6592 [ --enable-prebinding Enable prebinding (Mac OS X only)],
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 sharing
7651 dnl ========================================================
7652 MOZ_ARG_DISABLE_BOOL(profilesharing,
7653 [ --disable-profilesharing Disable profile sharing],
7654 MOZ_PROFILESHARING=,
7655 MOZ_PROFILESHARING=1 )
7656 if test "$MOZ_PROFILESHARING"; then
7658 AC_DEFINE(MOZ_PROFILESHARING)
7661 dnl ========================================================
7663 dnl ========================================================
7664 MOZ_ARG_ENABLE_BOOL(ipcd,
7665 [ --enable-ipcd Enable IPC daemon],
7669 dnl ========================================================
7670 dnl disable profile locking
7671 dnl do no use this in applications that can have more than
7672 dnl one process accessing the profile directory.
7673 dnl ========================================================
7674 MOZ_ARG_DISABLE_BOOL(profilelocking,
7675 [ --disable-profilelocking Disable profile locking],
7676 MOZ_PROFILELOCKING=,
7677 MOZ_PROFILELOCKING=1 )
7678 if test "$MOZ_PROFILELOCKING"; then
7679 AC_DEFINE(MOZ_PROFILELOCKING)
7682 dnl ========================================================
7683 dnl disable rdf services
7684 dnl ========================================================
7685 MOZ_ARG_DISABLE_BOOL(rdf,
7686 [ --disable-rdf Disable RDF],
7688 if test "$MOZ_RDF"; then
7694 dnl ========================================================
7695 dnl necko configuration options
7696 dnl ========================================================
7699 dnl option to disable various necko protocols
7701 MOZ_ARG_ENABLE_STRING(necko-protocols,
7702 [ --enable-necko-protocols[={http,ftp,default,all,none}]
7703 Enable/disable specific protocol handlers],
7704 [ for option in `echo $enableval | sed 's/,/ /g'`; do
7705 if test "$option" = "yes" || test "$option" = "all"; then
7706 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7707 elif test "$option" = "no" || test "$option" = "none"; then
7709 elif test "$option" = "default"; then
7710 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7711 elif test `echo "$option" | grep -c \^-` != 0; then
7712 option=`echo $option | sed 's/^-//'`
7713 NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
7715 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
7718 NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
7720 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
7721 AC_SUBST(NECKO_PROTOCOLS)
7722 for p in $NECKO_PROTOCOLS; do
7723 AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
7727 dnl option to disable necko's disk cache
7729 MOZ_ARG_DISABLE_BOOL(necko-disk-cache,
7730 [ --disable-necko-disk-cache
7731 Disable necko disk cache],
7734 AC_SUBST(NECKO_DISK_CACHE)
7735 if test "$NECKO_DISK_CACHE"; then
7736 AC_DEFINE(NECKO_DISK_CACHE)
7740 dnl option to minimize size of necko's i/o buffers
7742 MOZ_ARG_ENABLE_BOOL(necko-small-buffers,
7743 [ --enable-necko-small-buffers
7744 Minimize size of necko's i/o buffers],
7745 NECKO_SMALL_BUFFERS=1,
7746 NECKO_SMALL_BUFFERS=)
7747 AC_SUBST(NECKO_SMALL_BUFFERS)
7748 if test "$NECKO_SMALL_BUFFERS"; then
7749 AC_DEFINE(NECKO_SMALL_BUFFERS)
7753 dnl option to disable cookies
7755 MOZ_ARG_DISABLE_BOOL(cookies,
7756 [ --disable-cookies Disable cookie support],
7759 AC_SUBST(NECKO_COOKIES)
7760 if test "$NECKO_COOKIES"; then
7761 AC_DEFINE(NECKO_COOKIES)
7764 dnl NECKO_ configuration options are not global
7765 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_"
7767 dnl Only build Mork if it's required
7769 if test "$MOZ_MORK"; then
7773 dnl Build the lightweight Mork reader if required
7774 AC_SUBST(MOZ_MORKREADER)
7775 if test "$MOZ_MORKREADER"; then
7776 AC_DEFINE(MOZ_MORKREADER)
7779 dnl ========================================================
7780 if test "$MOZ_DEBUG" || test "$NS_TRACE_MALLOC"; then
7781 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7784 dnl ========================================================
7786 dnl = Maintainer debug option (no --enable equivalent)
7788 dnl ========================================================
7793 AC_SUBST(AR_EXTRACT)
7797 AC_SUBST(AS_DASH_C_FLAG)
7802 AC_SUBST(USE_SHORT_LIBNAME)
7806 AC_SUBST(NS_USE_NATIVE)
7807 AC_SUBST(MOZ_WIDGET_TOOLKIT)
7808 AC_SUBST(MOZ_GFX_TOOLKIT)
7809 AC_SUBST(MOZ_UPDATE_XTERM)
7811 AC_SUBST(MOZ_PLATFORM_HILDON)
7813 AC_SUBST(NS_MAEMO_LOCATION)
7814 AC_SUBST(MOZ_AUTH_EXTENSION)
7815 AC_SUBST(MOZ_MATHML)
7816 AC_SUBST(MOZ_PERMISSIONS)
7818 AC_SUBST(MOZ_NO_INSPECTOR_APIS)
7819 AC_SUBST(MOZ_PREF_EXTENSIONS)
7821 AC_SUBST(MOZ_XSLT_STANDALONE)
7822 AC_SUBST(MOZ_JS_LIBS)
7825 AC_SUBST(MOZ_DEBUG_MODULES)
7826 AC_SUBST(MOZ_PROFILE_MODULES)
7827 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
7828 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
7829 AC_SUBST(MOZ_DEBUG_FLAGS)
7830 AC_SUBST(MOZ_DEBUG_LDFLAGS)
7831 AC_SUBST(WARNINGS_AS_ERRORS)
7832 AC_SUBST(MOZ_DBGRINFO_MODULES)
7833 AC_SUBST(MOZ_EXTENSIONS)
7834 AC_SUBST(MOZ_IMG_DECODERS)
7835 AC_SUBST(MOZ_IMG_ENCODERS)
7836 AC_SUBST(MOZ_JSDEBUGGER)
7838 AC_SUBST(MOZ_NO_XPCOM_OBSOLETE)
7839 AC_SUBST(MOZ_PLUGINS)
7840 AC_SUBST(ENABLE_EAZEL_PROFILER)
7841 AC_SUBST(EAZEL_PROFILER_CFLAGS)
7842 AC_SUBST(EAZEL_PROFILER_LIBS)
7843 AC_SUBST(MOZ_PERF_METRICS)
7844 AC_SUBST(GC_LEAK_DETECTOR)
7845 AC_SUBST(MOZ_LOG_REFCNT)
7849 AC_SUBST(MOZ_CALLGRIND)
7851 AC_SUBST(MOZ_XPCTOOLS)
7852 AC_SUBST(MOZ_JSLOADER)
7853 AC_SUBST(MOZ_USE_NATIVE_UCONV)
7854 AC_SUBST(MOZ_INSURE)
7855 AC_SUBST(MOZ_INSURE_DIRS)
7856 AC_SUBST(MOZ_INSURE_EXCLUDE_DIRS)
7857 AC_SUBST(MOZ_QUANTIFY)
7858 AC_SUBST(MOZ_INSURIFYING)
7860 AC_SUBST(MOZ_PLACES)
7861 AC_SUBST(MOZ_PLACES_BOOKMARKS)
7862 AC_SUBST(MOZ_STORAGE)
7864 AC_SUBST(NS_PRINTING)
7866 AC_SUBST(MOZ_JAVAXPCOM)
7867 AC_SUBST(JAVA_INCLUDE_PATH)
7872 AC_SUBST(MOZ_PROFILESHARING)
7873 AC_SUBST(MOZ_PROFILELOCKING)
7878 AC_SUBST(MOZ_XIE_LIBS)
7879 AC_SUBST(MOZ_ENABLE_POSTSCRIPT)
7881 AC_SUBST(XPCOM_USE_LEA)
7882 AC_SUBST(BUILD_STATIC_LIBS)
7883 AC_SUBST(MOZ_ENABLE_LIBXUL)
7884 AC_SUBST(ENABLE_TESTS)
7886 AC_SUBST(MOZ_UNIVERSALCHARDET)
7887 AC_SUBST(ACCESSIBILITY)
7888 AC_SUBST(MOZ_XPINSTALL)
7889 AC_SUBST(MOZ_VIEW_SOURCE)
7890 AC_SUBST(MOZ_SPELLCHECK)
7891 AC_SUBST(MOZ_XPFE_COMPONENTS)
7892 AC_SUBST(MOZ_USER_DIR)
7893 AC_SUBST(MOZ_CRASHREPORTER)
7895 AC_SUBST(ENABLE_STRIP)
7896 AC_SUBST(PKG_SKIP_STRIP)
7897 AC_SUBST(USE_ELF_DYNSTR_GC)
7898 AC_SUBST(USE_PREBINDING)
7899 AC_SUBST(INCREMENTAL_LINKER)
7900 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
7901 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
7902 AC_SUBST(MOZ_XPCOM_OBSOLETE_LIBS)
7904 AC_SUBST(MOZ_FIX_LINK_PATHS)
7905 AC_SUBST(XPCOM_LIBS)
7906 AC_SUBST(XPCOM_FROZEN_LDOPTS)
7907 AC_SUBST(XPCOM_GLUE_LDOPTS)
7908 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
7910 AC_SUBST(USE_DEPENDENT_LIBS)
7912 AC_SUBST(MOZ_BUILD_ROOT)
7913 AC_SUBST(MOZ_OS2_TOOLS)
7914 AC_SUBST(MOZ_OS2_USE_DECLSPEC)
7916 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
7917 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
7918 AC_SUBST(MOZ_TIMELINE)
7920 AC_SUBST(TARGET_DEVICE)
7922 AC_SUBST(MOZ_APP_NAME)
7923 AC_SUBST(MOZ_APP_DISPLAYNAME)
7924 AC_SUBST(MOZ_APP_VERSION)
7925 AC_SUBST(FIREFOX_VERSION)
7927 AC_SUBST(MOZ_PKG_SPECIAL)
7929 AC_SUBST(MOZILLA_OFFICIAL)
7930 AC_SUBST(BUILD_OFFICIAL)
7931 AC_SUBST(MOZ_MILESTONE_RELEASE)
7934 AC_SUBST(MOZ_PROFILE)
7935 AC_SUBST(MOZ_DEBUG_SYMBOLS)
7936 AC_SUBST(MOZ_MAPINFO)
7937 AC_SUBST(MOZ_BROWSE_INFO)
7938 AC_SUBST(MOZ_TOOLS_DIR)
7939 AC_SUBST(CYGWIN_WRAPPER)
7941 AC_SUBST(WIN32_REDIST_DIR)
7944 dnl Echo the CFLAGS to remove extra whitespace.
7951 $_MOZ_EXCEPTIONS_FLAGS \
7952 $_WARNINGS_CXXFLAGS \
7955 COMPILE_CFLAGS=`echo \
7960 COMPILE_CXXFLAGS=`echo \
7961 $_DEFINES_CXXFLAGS \
7965 AC_SUBST(SYSTEM_MAKEDEPEND)
7966 AC_SUBST(SYSTEM_JPEG)
7967 AC_SUBST(SYSTEM_PNG)
7968 AC_SUBST(SYSTEM_ZLIB)
7969 AC_SUBST(SYSTEM_BZ2)
7971 AC_SUBST(JPEG_CFLAGS)
7973 AC_SUBST(ZLIB_CFLAGS)
7975 AC_SUBST(BZ2_CFLAGS)
7977 AC_SUBST(PNG_CFLAGS)
7980 AC_SUBST(MOZ_JPEG_CFLAGS)
7981 AC_SUBST(MOZ_JPEG_LIBS)
7982 AC_SUBST(MOZ_ZLIB_CFLAGS)
7983 AC_SUBST(MOZ_ZLIB_LIBS)
7984 AC_SUBST(MOZ_BZ2_CFLAGS)
7985 AC_SUBST(MOZ_BZ2_LIBS)
7986 AC_SUBST(MOZ_PNG_CFLAGS)
7987 AC_SUBST(MOZ_PNG_LIBS)
7989 AC_SUBST(NSPR_CFLAGS)
7991 AC_SUBST(MOZ_NATIVE_NSPR)
7993 AC_SUBST(NSS_CFLAGS)
7995 AC_SUBST(NSS_DEP_LIBS)
7996 AC_SUBST(MOZ_NATIVE_NSS)
8001 AC_SUBST(COMPILE_CFLAGS)
8002 AC_SUBST(COMPILE_CXXFLAGS)
8005 AC_SUBST(CROSS_COMPILE)
8009 AC_SUBST(HOST_CFLAGS)
8010 AC_SUBST(HOST_CXXFLAGS)
8011 AC_SUBST(HOST_OPTIMIZE_FLAGS)
8013 AC_SUBST(HOST_AR_FLAGS)
8015 AC_SUBST(HOST_RANLIB)
8016 AC_SUBST(HOST_NSPR_MDCPUCFG)
8017 AC_SUBST(HOST_BIN_SUFFIX)
8018 AC_SUBST(HOST_OS_ARCH)
8020 AC_SUBST(TARGET_CPU)
8021 AC_SUBST(TARGET_VENDOR)
8023 AC_SUBST(TARGET_NSPR_MDCPUCFG)
8024 AC_SUBST(TARGET_MD_ARCH)
8025 AC_SUBST(TARGET_XPCOM_ABI)
8028 AC_SUBST(OS_RELEASE)
8031 AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
8032 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8034 AC_SUBST(WRAP_MALLOC_CFLAGS)
8035 AC_SUBST(WRAP_MALLOC_LIB)
8038 AC_SUBST(MKSHLIB_FORCE_ALL)
8039 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8040 AC_SUBST(DSO_CFLAGS)
8041 AC_SUBST(DSO_PIC_CFLAGS)
8042 AC_SUBST(DSO_LDOPTS)
8043 AC_SUBST(LIB_PREFIX)
8044 AC_SUBST(DLL_PREFIX)
8045 AC_SUBST(DLL_SUFFIX)
8046 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8047 AC_SUBST(LIB_SUFFIX)
8048 AC_SUBST(OBJ_SUFFIX)
8049 AC_SUBST(BIN_SUFFIX)
8050 AC_SUBST(ASM_SUFFIX)
8051 AC_SUBST(IMPORT_LIB_SUFFIX)
8053 AC_SUBST(CC_VERSION)
8054 AC_SUBST(CXX_VERSION)
8055 AC_SUBST(MSMANIFEST_TOOL)
8057 if test "$USING_HCC"; then
8058 CC='${topsrcdir}/build/hcc'
8060 CXX='${topsrcdir}/build/hcpp'
8061 CXX="$CXX '$_OLDCXX'"
8066 dnl Check for missing components
8067 if test "$COMPILE_ENVIRONMENT"; then
8068 if test "$MOZ_X11"; then
8069 dnl ====================================================
8070 dnl = Check if X headers exist
8071 dnl ====================================================
8072 _SAVE_CFLAGS=$CFLAGS
8073 CFLAGS="$CFLAGS $XCFLAGS"
8077 #include <X11/Xlib.h>
8078 #include <X11/Intrinsic.h>
8082 if ((dpy = XOpenDisplay(NULL)) == NULL) {
8083 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8087 [ AC_MSG_ERROR([Could not compile basic X program.]) ])
8088 CFLAGS="$_SAVE_CFLAGS"
8090 if test ! -z "$MISSING_X"; then
8091 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8095 fi # COMPILE_ENVIRONMENT
8097 dnl Set various defines and substitutions
8098 dnl ========================================================
8100 if test "$OS_ARCH" = "OS2" -a "$VACPP" = "yes"; then
8101 LIBS='so32dll.lib tcp32dll.lib'
8102 elif test "$OS_ARCH" = "BeOS"; then
8105 elif test "$OS_ARCH" = "Darwin"; then
8107 AC_DEFINE(UNIX_ASYNC_DNS)
8109 elif test "$OS_ARCH" = "OpenVMS"; then
8111 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
8113 AC_DEFINE(UNIX_ASYNC_DNS)
8116 AC_SUBST(MOZ_MOVEMAIL)
8118 AC_DEFINE(JS_THREADSAFE)
8120 if test "$MOZ_DEBUG"; then
8121 AC_DEFINE(MOZ_REFLOW_PERF)
8122 AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8125 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
8126 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8127 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8128 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8129 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8130 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8131 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8132 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8133 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8136 # Used for LD_LIBRARY_PATH of run_viewer target
8138 for lib_arg in $NSPR_LIBS $TK_LIBS; do
8140 -L* ) LIBS_PATH="${LIBS_PATH:+$LIBS_PATH:}"`expr $lib_arg : "-L\(.*\)"` ;;
8146 dnl ========================================================
8147 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
8148 dnl ========================================================
8151 WIN_TOP_SRC=`cd $srcdir; pwd -W`
8154 HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
8155 HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
8156 CC="\$(CYGWIN_WRAPPER) $CC"
8157 CXX="\$(CYGWIN_WRAPPER) $CXX"
8158 CPP="\$(CYGWIN_WRAPPER) $CPP"
8159 LD="\$(CYGWIN_WRAPPER) $LD"
8160 AS="\$(CYGWIN_WRAPPER) $AS"
8161 RC="\$(CYGWIN_WRAPPER) $RC"
8162 MIDL="\$(CYGWIN_WRAPPER) $MIDL"
8163 CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
8164 WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
8168 AC_SUBST(CYGDRIVE_MOUNT)
8169 AC_SUBST(WIN_TOP_SRC)
8171 AC_SUBST(MOZILLA_VERSION)
8173 AC_SUBST(ac_configure_args)
8175 dnl Spit out some output
8176 dnl ========================================================
8178 dnl The following defines are used by xpcom
8179 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8181 HAVE_CPP_2BYTE_WCHAR_T
8182 HAVE_CPP_ACCESS_CHANGING_USING
8183 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8185 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8187 HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
8188 HAVE_CPP_NAMESPACE_STD
8190 HAVE_CPP_PARTIAL_SPECIALIZATION
8191 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8193 HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL
8195 NEED_CPP_UNUSED_IMPLEMENTATIONS
8199 HAVE_ICONV_WITH_CONST_INPUT
8207 netwerk/necko-config.h
8208 xpcom/xpcom-config.h
8209 xpcom/xpcom-private.h
8212 # Save the defines header file before autoconf removes it.
8213 # (Do not add AC_DEFINE calls after this line.)
8214 _CONFIG_TMP=confdefs-tmp.h
8215 _CONFIG_DEFS_H=mozilla-config.h
8217 cat > $_CONFIG_TMP <<\EOF
8218 /* List of defines generated by configure. Included with preprocessor flag,
8219 * -include, to avoid long list of -D defines on the compile command-line.
8223 #ifndef _MOZILLA_CONFIG_H_
8224 #define _MOZILLA_CONFIG_H_
8227 _EGREP_PATTERN='^#define ('
8228 if test -n "$_NON_GLOBAL_ACDEFINES"; then
8229 for f in $_NON_GLOBAL_ACDEFINES; do
8230 _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
8233 _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
8235 sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
8237 cat >> $_CONFIG_TMP <<\EOF
8239 #endif /* _MOZILLA_CONFIG_H_ */
8243 # Only write mozilla-config.h when something changes (or it doesn't exist)
8244 if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
8247 AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
8248 mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
8250 echo ==== $_CONFIG_DEFS_H =================================
8254 dnl Probably shouldn't call this manually but we always want the output of DEFS
8255 rm -f confdefs.h.save
8256 mv confdefs.h confdefs.h.save
8257 egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
8258 AC_OUTPUT_MAKE_DEFS()
8260 AC_SUBST(MOZ_DEFINES)
8262 mv confdefs.h.save confdefs.h
8264 dnl Load the list of Makefiles to generate.
8265 dnl To add new Makefiles, edit allmakefiles.sh.
8266 dnl allmakefiles.sh sets the variable, MAKEFILES.
8267 . ${srcdir}/allmakefiles.sh
8269 dnl Run a perl script to quickly create the makefiles.
8270 dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
8271 dnl for the files it cannot handle correctly. This way, config.status
8272 dnl will handle these files.
8273 dnl If it fails, nothing is set and config.status will run as usual.
8275 dnl This does not change the $MAKEFILES variable.
8277 dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
8279 if test -z "${AS_PERL}"; then
8280 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
8282 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
8287 echo $MAKEFILES > unallmakefiles
8289 AC_OUTPUT($MAKEFILES)
8291 dnl Prevent the regeneration of cairo-features.h forcing rebuilds of gfx stuff
8292 if test "$CAIRO_FEATURES_H"; then
8293 if cmp -s $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig; then
8294 mv -f "$CAIRO_FEATURES_H".orig "$CAIRO_FEATURES_H" 2> /dev/null
8296 rm -f "$CAIRO_FEATURES_H".orig 2> /dev/null
8300 dnl ========================================================
8301 dnl = Setup a nice relatively clean build environment for
8302 dnl = sub-configures.
8303 dnl ========================================================
8306 CFLAGS="$_SUBDIR_CFLAGS"
8307 CPPFLAGS="$_SUBDIR_CPPFLAGS"
8308 CXXFLAGS="$_SUBDIR_CXXFLAGS"
8309 LDFLAGS="$_SUBDIR_LDFLAGS"
8310 HOST_CC="$_SUBDIR_HOST_CC"
8311 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
8312 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
8318 if test "$COMPILE_ENVIRONMENT"; then
8319 if test -z "$MOZ_NATIVE_NSPR"; then
8320 ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
8321 if test -z "$MOZ_DEBUG"; then
8322 ac_configure_args="$ac_configure_args --disable-debug"
8324 if test "$MOZ_OPTIMIZE" = "1"; then
8325 ac_configure_args="$ac_configure_args --enable-optimize"
8327 if test "$OS_ARCH" = "WINNT" && test "$NS_TRACE_MALLOC"; then
8328 ac_configure_args="$ac_configure_args --enable-debug --disable-optimize"
8330 if test -n "$HAVE_64BIT_OS"; then
8331 ac_configure_args="$ac_configure_args --enable-64bit"
8333 if test -n "$USE_ARM_KUSER"; then
8334 ac_configure_args="$ac_configure_args --with-arm-kuser"
8336 AC_OUTPUT_SUBDIRS(nsprpub)
8337 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8340 if test -z "$MOZ_NATIVE_NSPR"; then
8341 # Hack to deal with the fact that we use NSPR_CFLAGS everywhere
8342 AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
8343 if test ! "$VACPP" && test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE"; then
8344 NSPR_LIBS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --libdir=$LIBXUL_DIST/lib --libs`
8345 $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $NSPR_LIBS'" config/autoconf.mk
8347 if test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE" ; then
8348 NSPR_CFLAGS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --includedir=$LIBXUL_DIST/include/nspr --cflags`
8349 $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $NSPR_CFLAGS'" config/autoconf.mk
8351 rm -f config/autoconf.mk.bak
8354 fi # COMPILE_ENVIRONMENT