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 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1023 # cross-compilation.
1027 # The following hack allows one to build on a WIN95 machine (as if
1028 # s/he were cross-compiling on a WINNT host for a WIN95 target).
1029 # It also accomodates for MKS's uname.exe. If you never intend
1030 # to do development on a WIN95 machine, you don't need this hack.
1045 CYGWIN_9*|CYGWIN_ME*)
1046 OS_ARCH='CYGWIN_NT-4.0'
1052 # Define and override various archtecture-specific variables, including
1061 case "$HOST_OS_ARCH" in
1062 cygwin*|mingw*|mks*|msvc*)
1081 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1084 HOST_OS_ARCH=UNIXWARE
1096 HOST_OS_ARCH=OpenVMS
1106 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1110 HOST_OS_ARCH=UNIXWARE
1120 # If uname -s returns "Windows_NT", we assume that we are using
1121 # the uname.exe in MKS toolkit.
1123 # The -r option of MKS uname only returns the major version number.
1124 # So we need to use its -v option to get the minor version number.
1125 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1129 OS_MINOR_RELEASE=`uname -v`
1130 if test "$OS_MINOR_RELEASE" = "00"; then
1133 OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1135 CYGWIN32_NT|CYGWIN_NT*|MINGW*_NT*)
1137 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
1138 # the uname.exe in the Cygwin tools.
1139 # Prior to the Beta 20 release, Cygwin was called GNU-Win32.
1140 # If uname -s returns "CYGWIN32/NT", we assume that we are using
1141 # the uname.exe in the GNU-Win32 tools.
1142 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1143 # the uname.exe in the MSYS tools.
1145 OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1150 OS_RELEASE=`uname -v`.`uname -r`
1151 OS_TEST=${target_cpu}
1163 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1167 OS_RELEASE=`uname -v`
1191 OS_RELEASE=`uname -v`
1197 OS_RELEASE=`uname -v`
1200 if test "$OS_TARGET" != "NTO"; then
1202 OS_RELEASE=`uname -v | sed 's/^\([0-9]\)\([0-9]*\)$/\1.\2/'`
1211 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1217 OS_RELEASE=`uname -v`
1224 case "${target_cpu}" in
1232 if test -z "$CROSS_COMPILE" ; then
1240 if test "$OS_ARCH" = "NCR"; then
1242 OS_RELEASE=`awk '{print $3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$/\2.\3/'`
1246 # Only set CPU_ARCH if we recognize the value of OS_TEST
1253 powerpc* | ppc | rs6000)
1257 Alpha | alpha | ALPHA)
1274 if test -z "$OS_TARGET"; then
1277 if test "$OS_TARGET" = "WIN95"; then
1280 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1282 dnl ========================================================
1283 dnl GNU specific defaults
1284 dnl ========================================================
1285 if test "$GNU_CC"; then
1286 # FIXME: Let us build with strict aliasing. bug 414641.
1287 CFLAGS="$CFLAGS -fno-strict-aliasing"
1288 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1289 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1290 DSO_LDOPTS='-shared'
1291 if test "$GCC_USE_GNU_LD"; then
1292 # Don't allow undefined symbols in libraries
1293 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1295 WARNINGS_AS_ERRORS='-Werror'
1297 DSO_PIC_CFLAGS='-fPIC'
1298 ASFLAGS="$ASFLAGS -fPIC"
1299 _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
1300 _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
1301 _MOZ_EXCEPTIONS_FLAGS_ON='-fhandle-exceptions'
1302 _MOZ_EXCEPTIONS_FLAGS_OFF='-fno-handle-exceptions'
1304 # Turn on GNU specific features
1305 # -Wall - turn on all warnings
1306 # -pedantic - make compiler warn about non-ANSI stuff, and
1307 # be a little bit stricter
1308 # Warnings slamm took out for now (these were giving more noise than help):
1309 # -Wbad-function-cast - warns when casting a function to a new return type
1310 # -Wshadow - removed because it generates more noise than help --pete
1311 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
1312 if test -z "$INTEL_CC"; then
1313 # Don't use -Wcast-align with ICC
1315 # And don't use it on hppa, ia64, sparc, since it's noisy there
1316 hppa | ia64 | sparc)
1319 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1324 dnl Turn pedantic on but disable the warnings for long long
1327 if test -z "$INTEL_CC"; then
1328 _IGNORE_LONG_LONG_WARNINGS=1
1329 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
1331 _IGNORE_LONG_LONG_WARNINGS=
1335 _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1336 _USE_CPP_INCLUDE_FLAG=1
1338 MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1339 MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1341 DSO_LDOPTS='-shared'
1342 if test "$GNU_LD"; then
1343 # Don't allow undefined symbols in libraries
1344 DSO_LDOPTS="$DSO_LDOPTS -z defs"
1348 DSO_PIC_CFLAGS='-KPIC'
1349 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1352 if test "$GNU_CXX"; then
1353 # FIXME: Let us build with strict aliasing. bug 414641.
1354 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
1355 # Turn on GNU specific features
1356 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
1357 if test -z "$INTEL_CC"; then
1358 # Don't use -Wcast-align with ICC
1360 # And don't use it on hppa, ia64, sparc, since it's noisy there
1361 hppa | ia64 | sparc)
1364 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1369 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1370 _USE_CPP_INCLUDE_FLAG=1
1372 AC_CACHE_CHECK(whether the compiler supports -Wno-invalid-offsetof,
1373 ac_has_wno_invalid_offsetof,
1377 _SAVE_CXXFLAGS="$CXXFLAGS"
1378 CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1381 ac_has_wno_invalid_offsetof="yes",
1382 ac_has_wno_invalid_offsetof="no")
1383 CXXFLAGS="$_SAVE_CXXFLAGS"
1386 if test "$ac_has_wno_invalid_offsetof" = "yes"; then
1387 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1390 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1393 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1394 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1395 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1396 dnl normal behavior.
1397 dnl ========================================================
1399 MKSHLIB_UNFORCE_ALL=
1401 if test "$COMPILE_ENVIRONMENT"; then
1402 if test "$GNU_CC"; then
1403 AC_MSG_CHECKING(whether ld has archive extraction flags)
1404 AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1405 [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1406 ac_cv_mkshlib_force_and_unforce="no"
1407 exec 3<&0 <<LOOP_INPUT
1408 force="-Wl,--whole-archive"; unforce="-Wl,--no-whole-archive"
1409 force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1410 force="-Wl,-all"; unforce="-Wl,-none"
1417 AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1420 LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1422 if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1426 eval $ac_cv_mkshlib_force_and_unforce
1427 MKSHLIB_FORCE_ALL=$force
1428 MKSHLIB_UNFORCE_ALL=$unforce
1431 fi # COMPILE_ENVIRONMENT
1433 dnl =================================================================
1434 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1435 dnl which is bad when cross compiling.
1436 dnl =================================================================
1437 if test "$COMPILE_ENVIRONMENT"; then
1438 configure_static_assert_macros='
1439 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1440 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1441 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1444 dnl test that the macros actually work:
1445 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1446 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1449 ac_cv_static_assertion_macros_work="yes"
1450 AC_TRY_COMPILE([$configure_static_assert_macros],
1451 [CONFIGURE_STATIC_ASSERT(1)],
1453 ac_cv_static_assertion_macros_work="no")
1454 AC_TRY_COMPILE([$configure_static_assert_macros],
1455 [CONFIGURE_STATIC_ASSERT(0)],
1456 ac_cv_static_assertion_macros_work="no",
1459 AC_TRY_COMPILE([$configure_static_assert_macros],
1460 [CONFIGURE_STATIC_ASSERT(1)],
1462 ac_cv_static_assertion_macros_work="no")
1463 AC_TRY_COMPILE([$configure_static_assert_macros],
1464 [CONFIGURE_STATIC_ASSERT(0)],
1465 ac_cv_static_assertion_macros_work="no",
1469 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1470 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1471 AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1473 fi # COMPILE_ENVIRONMENT
1475 dnl ========================================================
1476 dnl Checking for 64-bit OS
1477 dnl ========================================================
1478 if test "$COMPILE_ENVIRONMENT"; then
1481 AC_MSG_CHECKING(for 64-bit OS)
1482 AC_TRY_COMPILE([$configure_static_assert_macros],
1483 [CONFIGURE_STATIC_ASSERT(sizeof(long) == 8)],
1484 result="yes", result="no")
1485 AC_MSG_RESULT("$result")
1486 if test "$result" = "yes"; then
1487 AC_DEFINE(HAVE_64BIT_OS)
1490 AC_SUBST(HAVE_64BIT_OS)
1492 fi # COMPILE_ENVIRONMENT
1494 dnl ========================================================
1495 dnl Enable high-memory support on OS/2 by default.
1496 dnl ========================================================
1497 MOZ_OS2_HIGH_MEMORY=1
1498 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1499 [ --disable-os2-high-mem Disable high-memory support on OS/2],
1500 MOZ_OS2_HIGH_MEMORY=,
1501 MOZ_OS2_HIGH_MEMORY=1 )
1502 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1504 dnl ========================================================
1505 dnl System overrides of the defaults for host
1506 dnl ========================================================
1509 HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
1510 HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
1511 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1514 *cygwin*|*mingw*|*mks*|*msvc*|*wince)
1515 if test -n "$_WIN32_MSVC"; then
1517 HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1518 HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1519 HOST_RANLIB='echo ranlib'
1521 HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
1523 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
1524 HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1525 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1526 HOST_BIN_SUFFIX=.exe
1529 dnl MinGW/MSYS does not need CYGWIN_WRAPPER
1532 CYGWIN_WRAPPER="${srcdir}/build/cygwin-wrapper"
1533 if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
1535 CYGWIN_WRAPPER="${_pwd}/${srcdir}/build/cygwin-wrapper"
1537 if test "`${PERL} -v | grep -c cygwin 2>/dev/null`" = 0; then
1539 PERL="${CYGWIN_WRAPPER} $PERL"
1542 if test "`${PYTHON} -c 'import sys; print sys.platform;'`" != "cygwin"; then
1543 PYTHON="${CYGWIN_WRAPPER} $PYTHON"
1550 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1551 HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1552 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1553 MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
1554 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL -lobjc'
1557 *-linux*|*-kfreebsd*-gnu)
1558 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1559 HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1560 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1564 HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1565 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1566 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1567 HOST_BIN_SUFFIX=.exe
1572 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1573 HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
1574 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1578 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1579 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1583 dnl Get mozilla version from central milestone file
1584 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1586 dnl Get version of various core apps from the version files.
1587 FIREFOX_VERSION=`cat $topsrcdir/browser/config/version.txt`
1589 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1590 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1592 dnl ========================================================
1593 dnl System overrides of the defaults for target
1594 dnl ========================================================
1599 if test ! "$GNU_CC"; then
1600 if test ! "$HAVE_64BIT_OS"; then
1601 # Compiling with Visual Age C++ object model compat is the
1602 # default. To compile with object model ibm, add
1603 # AIX_OBJMODEL=ibm to .mozconfig.
1604 if test "$AIX_OBJMODEL" = "ibm"; then
1605 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1612 AC_SUBST(AIX_OBJMODEL)
1613 DSO_LDOPTS='-qmkshrobj=1'
1614 DSO_CFLAGS='-qflag=w:w'
1616 LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1617 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
1619 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1620 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1621 if test "$COMPILE_ENVIRONMENT"; then
1624 AC_MSG_CHECKING([for VisualAge C++ compiler version >= 6.0.0.3])
1626 [#if (__IBMCPP__ < 600)
1627 #error "Bad compiler"
1629 _BAD_COMPILER=,_BAD_COMPILER=1)
1630 if test -n "$_BAD_COMPILER"; then
1632 AC_MSG_ERROR([VisualAge C++ version 6.0.0.3 or higher is required to build.])
1634 AC_MSG_RESULT([yes])
1637 TARGET_COMPILER_ABI="ibmc"
1638 CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1639 CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1642 case "${target_os}" in
1647 if test "$COMPILE_ENVIRONMENT"; then
1648 AC_CHECK_HEADERS(sys/inttypes.h)
1650 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1655 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1656 _PLATFORM_DEFAULT_TOOLKIT="cairo-beos"
1657 DSO_LDOPTS='-nostart'
1658 TK_LIBS='-lbe -lroot'
1660 if test "$COMPILE_ENVIRONMENT"; then
1661 AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
1662 AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
1664 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
1665 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
1668 MOZ_USER_DIR="Mozilla"
1672 dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
1674 _IGNORE_LONG_LONG_WARNINGS=
1682 _WARNINGS_CFLAGS="-Wall"
1683 _WARNINGS_CXXFLAGS="-Wall"
1684 # The test above doesn't work properly, at least on 3.1.
1685 MKSHLIB_FORCE_ALL=''
1686 MKSHLIB_UNFORCE_ALL=''
1692 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1693 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1694 MOZ_OPTIMIZE_FLAGS="-O2"
1696 CFLAGS="$CFLAGS -fpascal-strings -fno-common"
1697 CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
1700 STRIP="$STRIP -x -S"
1701 _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1702 MOZ_ENABLE_POSTSCRIPT=
1703 TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1704 LDFLAGS="$LDFLAGS -framework Cocoa"
1705 # The ExceptionHandling framework is needed for Objective-C exception
1706 # logging code in nsObjCExceptions.h. Currently we only use that in debug
1708 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"
1709 # set MACOSX to generate lib/mac/MoreFiles/Makefile
1712 dnl DTrace and -dead_strip don't interact well. See bug 403132.
1713 dnl ===================================================================
1714 if test "x$enable_dtrace" = "xyes"; then
1715 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
1717 dnl check for the presence of the -dead_strip linker flag
1718 AC_MSG_CHECKING([for -dead_strip option to ld])
1719 _SAVE_LDFLAGS=$LDFLAGS
1720 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
1721 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
1722 if test -n "$_HAVE_DEAD_STRIP" ; then
1723 AC_MSG_RESULT([yes])
1724 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
1729 LDFLAGS=$_SAVE_LDFLAGS
1734 if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` != "elf"; then
1735 DLL_SUFFIX=".so.1.0"
1736 DSO_LDOPTS="-shared"
1738 if test ! "$GNU_CC"; then
1739 DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
1741 # Can't have force w/o an unforce.
1742 # # Hack for FreeBSD 2.2
1743 # if test -z "$MKSHLIB_FORCE_ALL"; then
1744 # MKSHLIB_FORCE_ALL='-Wl,-Bforcearchive'
1745 # MKSHLIB_UNFORCE_ALL=''
1751 if test ! "$GNU_CC"; then
1752 DSO_LDOPTS='-b -Wl,+s'
1755 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
1756 MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
1757 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1759 DSO_LDOPTS='-b -E +s'
1760 MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1761 MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1763 MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
1764 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1769 DSO_LDOPTS='-elf -shared'
1771 if test "$GNU_CC"; then
1772 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1773 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1774 MKSHLIB_FORCE_ALL='-Wl,-all'
1775 MKSHLIB_UNFORCE_ALL='-Wl,-none'
1776 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1778 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1779 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1780 MKSHLIB_FORCE_ALL='-all'
1781 MKSHLIB_UNFORCE_ALL='-none'
1787 dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must*
1788 dnl compile and link using -n32
1790 TARGET_COMPILER_ABI=n32
1791 DSO_LDOPTS='-elf -shared'
1792 MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1793 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1794 _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
1795 _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
1796 if test "$GNU_CC"; then
1797 MKSHLIB_FORCE_ALL='-Wl,-all'
1798 MKSHLIB_UNFORCE_ALL='-Wl,-none'
1799 _WARNINGS_CFLAGS="-Wall"
1800 _WARNINGS_CXXFLAGS="-Wall"
1801 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1803 MKSHLIB_FORCE_ALL='-all'
1804 MKSHLIB_UNFORCE_ALL='-none'
1810 CFLAGS="$CFLAGS -woff 3262 -G 4"
1811 CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
1812 if test -n "$USE_N32"; then
1813 ASFLAGS="$ASFLAGS -n32"
1814 CFLAGS="$CFLAGS -n32"
1815 CXXFLAGS="$CXXFLAGS -n32"
1816 LDFLAGS="$LDFLAGS -n32"
1818 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1819 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
1822 if test -z "$GNU_CXX"; then
1828 if test "$GNU_CC"; then
1829 GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
1830 case $GCC_VERSION in
1832 # -Os is broken on gcc 4.1.x and 4.2.x, we need to tweak it to get good results.
1833 MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
1837 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1838 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions $MOZ_OPTIMIZE_SIZE_TWEAK"
1839 MOZ_DEBUG_FLAGS="-g -fno-inline" # most people on linux use gcc/gdb,
1840 # and that combo is not yet good at
1841 # debugging inlined functions (even
1842 # when using DWARF2 as the debugging
1847 case "${target_cpu}" in
1849 CFLAGS="$CFLAGS -mieee"
1850 CXXFLAGS="$CXXFLAGS -mieee"
1854 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1
1857 MOZ_DEBUG_FLAGS="-g" # We want inlining
1864 MOZ_TOOLS_DIR=`echo $MOZ_TOOLS`
1866 AR_EXTRACT="$AR -extract"
1868 AR_FLAGS='-OUT:"$@"'
1870 if test -z "$AS_BIN"; then
1877 if test -z "$RC"; then
1880 # certain versions of cygwin's makedepend barf on the
1881 # #include <string> vs -I./dist/include/string issue so don't use it
1887 HOST_AR='lib -OUT:$@'
1888 HOST_RANLIB='echo ranlib'
1889 HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
1892 WARNINGS_AS_ERRORS='-WX'
1893 MOZ_OPTIMIZE_FLAGS='-O1'
1894 AR_FLAGS='-NOLOGO -OUT:"$@"'
1896 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
1897 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
1900 DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
1901 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
1903 IMPORT_LIB_SUFFIX=lib
1905 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
1908 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1909 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1911 MKSHLIB_UNFORCE_ALL=
1912 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1913 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1914 MOZ_DEBUG_FLAGS='-Zi'
1915 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
1917 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
1918 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
1920 RANLIB='echo not_ranlib'
1921 STRIP='echo not_strip'
1922 TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
1925 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
1927 LIBIDL_CFLAGS="-I$MOZ_TOOLS_DIR/include ${GLIB_CFLAGS}"
1928 LIBIDL_LIBS="$MOZ_TOOLS_DIR/lib/libidl-0.6_s.lib $MOZ_TOOLS_DIR/lib/glib-1.2_s.lib"
1931 AC_DEFINE(HAVE_SNPRINTF)
1937 AC_DEFINE(HW_THREADS)
1938 AC_DEFINE(STDC_HEADERS)
1939 AC_DEFINE(NEW_H, <new>)
1940 AC_DEFINE(WIN32_LEAN_AND_MEAN)
1942 TARGET_MD_ARCH=win32
1943 _PLATFORM_DEFAULT_TOOLKIT='windows'
1946 MOZ_ENABLE_POSTSCRIPT=
1947 MOZ_USER_DIR="Mozilla"
1951 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
1956 # certain versions of cygwin's makedepend barf on the
1957 # #include <string> vs -I./dist/include/string issue so don't use it
1959 if test -n "$GNU_CC"; then
1960 CC="$CC -mno-cygwin"
1961 CXX="$CXX -mno-cygwin"
1962 CPP="$CPP -mno-cygwin"
1963 CFLAGS="$CFLAGS -mms-bitfields"
1964 CXXFLAGS="$CXXFLAGS -mms-bitfields"
1965 DSO_LDOPTS='-shared'
1966 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1967 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1969 # Use temp file for windres (bug 213281)
1970 RCFLAGS='-O coff --use-temp-file'
1971 # mingw doesn't require kernel32, user32, and advapi32 explicitly
1972 LIBS="$LIBS -lgdi32 -lwinmm -lwsock32"
1973 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/lib -ljs$(MOZ_BITS)$(VERSION_NUMBER)'
1975 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core'
1976 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom'
1978 IMPORT_LIB_SUFFIX=dll.a
1980 TARGET_COMPILER_ABI=msvc
1984 AR='lib -NOLOGO -OUT:"$@"'
1986 RANLIB='echo not_ranlib'
1987 STRIP='echo not_strip'
1992 GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
1997 IMPORT_LIB_SUFFIX=lib
1998 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
1999 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2001 MKSHLIB_UNFORCE_ALL=
2002 DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2003 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2004 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2005 LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
2006 MOZ_DEBUG_FLAGS='-Zi'
2007 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2008 WARNINGS_AS_ERRORS='-WX'
2009 MOZ_OPTIMIZE_FLAGS='-O1'
2010 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
2012 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
2013 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
2014 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2015 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2016 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
2017 if test $_MSC_VER -ge 1400; then
2018 LDFLAGS="$LDFLAGS -NXCOMPAT -SAFESEH"
2019 dnl For profile-guided optimization
2020 PROFILE_GEN_CFLAGS="-GL"
2021 PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2022 dnl XXX: PGO builds can fail with warnings treated as errors,
2023 dnl specifically "no profile data available" appears to be
2024 dnl treated as an error sometimes. This might be a consequence
2025 dnl of using WARNINGS_AS_ERRORS in some modules, combined
2026 dnl with the linker doing most of the work in the whole-program
2027 dnl optimization/PGO case. I think it's probably a compiler bug,
2028 dnl but we work around it here.
2029 PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2030 dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2031 dnl Probably also a compiler bug, but what can you do?
2032 PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2033 if test -n "$_USE_DYNAMICBASE"; then
2034 LDFLAGS="$LDFLAGS -DYNAMICBASE"
2038 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,jpeg$(MOZ_BITS)$(VERSION_NUMBER),$(DEPTH)/jpeg)'
2039 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,png,$(DEPTH)/modules/libimg/png)'
2040 AC_DEFINE(HAVE_SNPRINTF)
2046 AC_DEFINE(HW_THREADS)
2047 AC_DEFINE(STDC_HEADERS)
2048 AC_DEFINE(NEW_H, <new>)
2049 AC_DEFINE(WIN32_LEAN_AND_MEAN)
2050 TARGET_MD_ARCH=win32
2051 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2054 MOZ_ENABLE_POSTSCRIPT=
2055 MOZ_USER_DIR="Mozilla"
2057 dnl Hardcode to win95 for now - cls
2058 TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2060 dnl set NO_X11 defines here as the general check is skipped on win32
2064 dnl MinGW/MSYS doesn't provide or need cygpath
2069 MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2071 *-cygwin*|*-msvc*|*-mks*)
2072 CYGPATH_W="cygpath -a -w"
2073 CYGPATH_S="sed -e s|\\\\|/|g"
2074 MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
2078 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2080 if test -z "$MOZ_TOOLS"; then
2081 AC_MSG_ERROR([MOZ_TOOLS is not set])
2084 MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd`
2085 if test "$?" != "0" || test -z "$MOZ_TOOLS_DIR"; then
2086 AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2088 if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_DIR/bin:"` = 0; then
2089 AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2091 MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
2093 if test -n "$GLIB_PREFIX"; then
2094 _GLIB_PREFIX_DIR=`cd $GLIB_PREFIX && pwd`
2095 if test "$?" = "0"; then
2096 if test `echo ${PATH}: | grep -ic "$_GLIB_PREFIX_DIR/bin:"` = 0; then
2097 AC_MSG_ERROR([GLIB_PREFIX must be in your \$PATH.])
2099 _GLIB_PREFIX_DIR=`$CYGPATH_W $_GLIB_PREFIX_DIR | $CYGPATH_S`
2101 AC_MSG_ERROR([GLIB_PREFIX is set but "${GLIB_PREFIX}" is not a directory.])
2104 _GLIB_PREFIX_DIR=$MOZ_TOOLS_DIR
2106 if test ! -f "${_GLIB_PREFIX_DIR}/include/glib.h"; then
2107 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/include/glib.h .])
2109 GLIB_CFLAGS="-I${_GLIB_PREFIX_DIR}/include"
2110 if test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"; then
2111 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"
2112 elif test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"; then
2113 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"
2115 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/lib/glib-1.2.lib or $_GLIB_PREFIX_DIR/lib/glib-1.2_s.lib])
2118 if test -n "$LIBIDL_PREFIX"; then
2119 _LIBIDL_PREFIX_DIR=`cd $LIBIDL_PREFIX && pwd`
2120 if test "$?" = "0"; then
2121 if test `echo ${PATH}: | grep -ic "$_LIBIDL_PREFIX_DIR/bin:"` = 0; then
2122 AC_MSG_ERROR([LIBIDL_PREFIX must be in your \$PATH.])
2124 _LIBIDL_PREFIX_DIR=`$CYGPATH_W $_LIBIDL_PREFIX_DIR | $CYGPATH_S`
2126 AC_MSG_ERROR([LIBIDL_PREFIX is set but "${LIBIDL_PREFIX}" is not a directory.])
2129 _LIBIDL_PREFIX_DIR=$MOZ_TOOLS_DIR
2131 if test ! -f "${_LIBIDL_PREFIX_DIR}/include/libIDL/IDL.h"; then
2132 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/include/libIDL/IDL.h .])
2134 LIBIDL_CFLAGS="-I${_LIBIDL_PREFIX_DIR}/include ${GLIB_CFLAGS}"
2135 if test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"; then
2136 LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"
2138 elif test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"; then
2139 LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"
2141 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/lib/libidl-0.6.lib or $_LIBIDL_PREFIX_DIR/lib/libidl-0.6_s.lib])
2143 LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2146 *) # else cross-compiling
2147 if test -n "$GLIB_PREFIX"; then
2148 GLIB_CFLAGS="-I${GLIB_PREFIX}/include"
2149 if test -f "${GLIB_PREFIX}/lib/glib-1.2_s.lib"; then
2150 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2_s.lib"
2151 elif test -f "${GLIB_PREFIX}/lib/glib-1.2.lib"; then
2152 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2.lib"
2154 AC_MSG_ERROR([Cannot find $GLIB_PREFIX/lib/glib-1.2.lib or $GLIB_PREFIX/lib/glib-1.2_s.lib])
2157 if test -n "$LIBIDL_PREFIX"; then
2158 LIBIDL_CFLAGS="-I${LIBIDL_PREFIX}/include ${GLIB_CFLAGS}"
2159 if test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"; then
2160 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"
2162 elif test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"; then
2163 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"
2165 AC_MSG_ERROR([Cannot find $LIBIDL_PREFIX/lib/libIDL-0.6.lib or $LIBIDL_PREFIX/lib/libIDL-0.6_s.lib])
2168 LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2175 AC_MSG_WARN([Using a cygwin build environment is unsupported. Configure cannot check for the presence of necessary headers. Please upgrade to MozillaBuild; see http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites])
2179 AC_CHECK_HEADERS(mmintrin.h oleacc.idl)
2183 AC_CHECK_HEADERS(atlbase.h wpcapi.h)
2199 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2206 CFLAGS="$CFLAGS -Dunix"
2207 CXXFLAGS="$CXXFLAGS -Dunix"
2208 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2210 DSO_PIC_CFLAGS='-fPIC -DPIC'
2211 DSO_LDOPTS='-shared'
2212 BIN_FLAGS='-Wl,--export-dynamic'
2214 DSO_PIC_CFLAGS='-fPIC -DPIC'
2215 DLL_SUFFIX=".so.1.0"
2216 DSO_LDOPTS='-shared'
2218 # This will fail on a.out systems prior to 1.5.1_ALPHA.
2219 MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2220 MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2221 if test "$LIBRUNPATH"; then
2222 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2224 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2225 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2230 AC_DEFINE(_QNX_SOURCE)
2233 WARNINGS_AS_ERRORS=''
2234 MOZ_OPTIMIZE_FLAGS="-O"
2235 MOZ_DEBUG_FLAGS="-gstabs"
2238 LIBS="$LIBS -lsocket -lstdc++"
2239 _DEFINES_CFLAGS='-Wp,-include -Wp,$(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
2240 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -Wp,-include -Wp,$(DEPTH)/mozilla-config.h -D_POSIX_C_SOURCE=199506'
2241 if test "$with_x" != "yes"
2243 _PLATFORM_DEFAULT_TOOLKIT="photon"
2244 TK_CFLAGS='-I/usr/include/photon'
2247 case "${target_cpu}" in
2249 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
2252 case "${host_cpu}" in
2260 DLL_SUFFIX=".so.1.0"
2262 DSO_PIC_CFLAGS='-fPIC'
2263 DSO_LDOPTS='-shared -fPIC'
2264 if test "$LIBRUNPATH"; then
2265 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2270 AC_DEFINE(NO_PW_GECOS)
2271 AC_DEFINE(NO_UDSOCK)
2272 AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
2274 MKSHLIB_FORCE_ALL='-all'
2275 MKSHLIB_UNFORCE_ALL='-none'
2277 AS_DASH_C_FLAG='-Wc/names=as_is'
2279 DSO_LDOPTS='-shared -auto_symvec'
2281 MOZ_DEBUG_LDFLAGS='-g'
2283 CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
2284 CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
2289 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2290 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2293 AC_DEFINE(OS2EMX_PLAIN_CHAR)
2294 AC_DEFINE(TCPV40HDRS)
2301 IMPORT_LIB_SUFFIX=lib
2305 CFLAGS="$CFLAGS -Zomf"
2306 CXXFLAGS="$CXXFLAGS -Zomf"
2308 BIN_FLAGS='-Zlinker /ST:0x100000'
2312 WARNINGS_AS_ERRORS='-Werror'
2313 MOZ_DEBUG_FLAGS="-g -fno-inline"
2314 MOZ_OPTIMIZE_FLAGS="-O2"
2315 MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2316 MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcomct.lib'
2317 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
2318 LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2320 _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2321 MOZ_ENABLE_POSTSCRIPT=
2324 MOZ_USER_DIR="Mozilla"
2326 if test "$MOZTOOLS"; then
2327 MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2329 AC_MSG_ERROR([MOZTOOLS is not set])
2331 if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2332 DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2333 LDFLAGS="$LDFLAGS -Zhigh-mem"
2334 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2335 AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2338 # GCC for OS/2 currently predefines these, but we don't want them
2339 _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2340 _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2342 AC_CACHE_CHECK(for __declspec(dllexport),
2344 [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2346 ac_os2_declspec="yes",
2347 ac_os2_declspec="no")])
2348 if test "$ac_os2_declspec" = "yes"; then
2350 MOZ_OS2_USE_DECLSPEC='1'
2355 if test "$GNU_CC"; then
2356 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2357 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2360 MOZ_DEBUG_FLAGS='-g'
2361 ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
2362 CFLAGS="$CFLAGS -ieee"
2363 CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee -ptr $(DIST)/cxx_repository'
2364 DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
2367 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2368 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2369 MKSHLIB_FORCE_ALL='-all'
2370 MKSHLIB_UNFORCE_ALL='-none'
2371 dnl Might fix the libxpcom.so breakage on this platform as well....
2372 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2373 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2375 if test -z "$GNU_CXX"; then
2378 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2382 DIRENT_INO=d_stat.st_ino
2383 dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
2384 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2385 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2386 dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
2387 AC_DEFINE(STDC_HEADERS)
2388 if test "$no_x" = "yes"; then
2389 _PLATFORM_DEFAULT_TOOLKIT='photon'
2390 TK_CFLAGS='-I/usr/nto/include/photon'
2391 TK_LIBS='-lphoton -lphrender'
2396 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2397 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2398 CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
2399 if test ! "$GNU_CC"; then
2404 dnl the qsort routine under solaris is faulty
2407 TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2409 # $ORIGIN/.. is for shared libraries under components/ to locate shared
2410 # libraries one level up (e.g. libnspr4.so)
2411 LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..'"
2412 LIBS="-lCrun -lCstd $LIBS"
2414 if test -z "$GNU_CC"; then
2417 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2419 if test "$CPU_ARCH" != "sparc"; then
2420 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all"
2421 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife -norunpath"
2423 # Do not use -xbuiltin on SPARC to get around a bug of compiler
2424 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%none"
2425 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%none -features=tmplife -norunpath"
2428 LDFLAGS="-xildoff -z lazyload -z combreloc $LDFLAGS"
2429 if test -z "$CROSS_COMPILE" && test -f /usr/lib/ld/map.noexstk; then
2430 _SAVE_LDFLAGS=$LDFLAGS
2431 LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2432 AC_TRY_LINK([#include <stdio.h>],
2433 [printf("Hello World\n");],
2435 [LDFLAGS=$_SAVE_LDFLAGS])
2437 WARNINGS_AS_ERRORS='-Werror'
2438 MOZ_OPTIMIZE_FLAGS="-xO4"
2439 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2440 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) -G -z muldefs -h $@ -o $@'
2441 MKSHLIB_FORCE_ALL='-z allextract'
2442 MKSHLIB_UNFORCE_ALL='-z defaultextract'
2443 DSO_LDOPTS='-G -z muldefs'
2449 AS='/usr/ccs/bin/as'
2450 ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2452 TARGET_COMPILER_ABI="sunc"
2453 CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2454 CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2455 AC_MSG_CHECKING([for Forte compiler version >= WS6U2])
2459 [#if (__SUNPRO_CC < 0x530)
2462 _BAD_COMPILER=,_BAD_COMPILER=1)
2463 if test -n "$_BAD_COMPILER"; then
2465 AC_MSG_ERROR([Forte version WS6U2 or higher is required to build. Your compiler version is $CC_VERSION .])
2469 AC_MSG_RESULT([$_res])
2472 ASFLAGS="$ASFLAGS -fPIC"
2475 _WARNINGS_CXXFLAGS=''
2476 if test "$OS_RELEASE" = "5.3"; then
2477 AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2480 if test "$OS_RELEASE" = "5.5.1"; then
2481 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2486 DSO_LDOPTS='-Bdynamic'
2487 MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2488 MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2490 AC_DEFINE(SPRINTF_RETURNS_STRING)
2491 case "$(target_os)" in
2493 DLL_SUFFIX='.so.1.0'
2499 NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2503 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2508 dnl Only one oddball right now (QNX), but this gives us flexibility
2509 dnl if any other platforms need to override this in the future.
2510 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2512 dnl ========================================================
2513 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2514 dnl by now will not have any way to link most binaries (tests
2515 dnl as well as viewer, apprunner, etc.), because some symbols
2516 dnl will be left out of the "composite" .so's by ld as unneeded.
2517 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2518 dnl they can link in the static libs that provide the missing
2520 dnl ========================================================
2521 NO_LD_ARCHIVE_FLAGS=
2522 if test -z "$MKSHLIB_FORCE_ALL" || test -z "$MKSHLIB_UNFORCE_ALL"; then
2523 NO_LD_ARCHIVE_FLAGS=1
2527 NO_LD_ARCHIVE_FLAGS=
2530 NO_LD_ARCHIVE_FLAGS=
2533 NO_LD_ARCHIVE_FLAGS=
2535 *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince)
2536 if test -z "$GNU_CC"; then
2537 NO_LD_ARCHIVE_FLAGS=
2541 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2544 dnl Indicate that platform requires special thread safe
2545 dnl locking when starting up the OJI JVM
2546 dnl (see mozilla/modules/oji/src/nsJVMManager.cpp)
2547 dnl ========================================================
2550 AC_DEFINE(MOZ_OJI_REQUIRE_THREAD_SAFE_ON_STARTUP)
2554 dnl ========================================================
2555 dnl = Flags to strip unused symbols from .so components
2556 dnl ========================================================
2558 *-linux*|*-kfreebsd*-gnu)
2559 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2562 if test -z "$GNU_CC"; then
2563 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2565 if test -z "$GCC_USE_GNU_LD"; then
2566 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2568 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2573 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2576 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2578 *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince)
2579 if test -n "$GNU_CC"; then
2580 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2585 if test -z "$COMPILE_ENVIRONMENT"; then
2586 SKIP_COMPILER_CHECKS=1
2587 SKIP_LIBRARY_CHECKS=1
2590 if test -z "$SKIP_COMPILER_CHECKS"; then
2591 dnl Checks for typedefs, structures, and compiler characteristics.
2592 dnl ========================================================
2600 AC_STRUCT_ST_BLKSIZE
2601 AC_MSG_CHECKING(for siginfo_t)
2602 AC_CACHE_VAL(ac_cv_siginfo_t,
2603 [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2604 #include <signal.h>],
2606 [ac_cv_siginfo_t=true],
2607 [ac_cv_siginfo_t=false])])
2608 if test "$ac_cv_siginfo_t" = true ; then
2609 AC_DEFINE(HAVE_SIGINFO_T)
2615 dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
2616 dnl ========================================================
2617 AC_MSG_CHECKING(for int16_t)
2618 AC_CACHE_VAL(ac_cv_int16_t,
2619 [AC_TRY_COMPILE([#include <stdio.h>
2620 #include <sys/types.h>],
2622 [ac_cv_int16_t=true],
2623 [ac_cv_int16_t=false])])
2624 if test "$ac_cv_int16_t" = true ; then
2625 AC_DEFINE(HAVE_INT16_T)
2630 AC_MSG_CHECKING(for int32_t)
2631 AC_CACHE_VAL(ac_cv_int32_t,
2632 [AC_TRY_COMPILE([#include <stdio.h>
2633 #include <sys/types.h>],
2635 [ac_cv_int32_t=true],
2636 [ac_cv_int32_t=false])])
2637 if test "$ac_cv_int32_t" = true ; then
2638 AC_DEFINE(HAVE_INT32_T)
2643 AC_MSG_CHECKING(for int64_t)
2644 AC_CACHE_VAL(ac_cv_int64_t,
2645 [AC_TRY_COMPILE([#include <stdio.h>
2646 #include <sys/types.h>],
2648 [ac_cv_int64_t=true],
2649 [ac_cv_int64_t=false])])
2650 if test "$ac_cv_int64_t" = true ; then
2651 AC_DEFINE(HAVE_INT64_T)
2656 AC_MSG_CHECKING(for int64)
2657 AC_CACHE_VAL(ac_cv_int64,
2658 [AC_TRY_COMPILE([#include <stdio.h>
2659 #include <sys/types.h>],
2662 [ac_cv_int64=false])])
2663 if test "$ac_cv_int64" = true ; then
2664 AC_DEFINE(HAVE_INT64)
2669 AC_MSG_CHECKING(for uint)
2670 AC_CACHE_VAL(ac_cv_uint,
2671 [AC_TRY_COMPILE([#include <stdio.h>
2672 #include <sys/types.h>],
2675 [ac_cv_uint=false])])
2676 if test "$ac_cv_uint" = true ; then
2677 AC_DEFINE(HAVE_UINT)
2682 AC_MSG_CHECKING(for uint_t)
2683 AC_CACHE_VAL(ac_cv_uint_t,
2684 [AC_TRY_COMPILE([#include <stdio.h>
2685 #include <sys/types.h>],
2687 [ac_cv_uint_t=true],
2688 [ac_cv_uint_t=false])])
2689 if test "$ac_cv_uint_t" = true ; then
2690 AC_DEFINE(HAVE_UINT_T)
2695 AC_MSG_CHECKING(for uint16_t)
2696 AC_CACHE_VAL(ac_cv_uint16_t,
2697 [AC_TRY_COMPILE([#include <stdio.h>
2698 #include <sys/types.h>],
2699 [uint16_t foo = 0;],
2700 [ac_cv_uint16_t=true],
2701 [ac_cv_uint16_t=false])])
2702 if test "$ac_cv_uint16_t" = true ; then
2703 AC_DEFINE(HAVE_UINT16_T)
2709 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
2710 dnl are defined when compiling C++ but not C. Since the result of this
2711 dnl test is used only in C++, do it in C++.
2714 AC_MSG_CHECKING(for uname.domainname)
2715 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
2716 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2717 [ struct utsname *res; char *domain;
2718 (void)uname(res); if (res != 0) { domain = res->domainname; } ],
2719 [ac_cv_have_uname_domainname_field=true],
2720 [ac_cv_have_uname_domainname_field=false])])
2722 if test "$ac_cv_have_uname_domainname_field" = "true"; then
2723 AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
2729 AC_MSG_CHECKING(for uname.__domainname)
2730 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
2731 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2732 [ struct utsname *res; char *domain;
2733 (void)uname(res); if (res != 0) { domain = res->__domainname; } ],
2734 [ac_cv_have_uname_us_domainname_field=true],
2735 [ac_cv_have_uname_us_domainname_field=false])])
2737 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
2738 AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
2746 dnl Check for usable wchar_t (2 bytes, unsigned)
2747 dnl (we really don't need the unsignedness check anymore)
2748 dnl ========================================================
2750 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
2751 ac_cv_have_usable_wchar_v2,
2752 [AC_TRY_COMPILE([#include <stddef.h>
2753 $configure_static_assert_macros],
2754 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2755 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2756 ac_cv_have_usable_wchar_v2="yes",
2757 ac_cv_have_usable_wchar_v2="no")])
2758 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
2759 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2760 HAVE_CPP_2BYTE_WCHAR_T=1
2762 dnl This is really gcc-only
2763 dnl Do this test using CXX only since some versions of gcc
2764 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
2765 dnl only have short-wchar support for c++.
2766 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
2770 _SAVE_CXXFLAGS=$CXXFLAGS
2771 CXXFLAGS="$CXXFLAGS -fshort-wchar"
2773 AC_CACHE_CHECK(for compiler -fshort-wchar option,
2774 ac_cv_have_usable_wchar_option_v2,
2775 [AC_TRY_LINK([#include <stddef.h>
2776 $configure_static_assert_macros],
2777 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2778 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2779 ac_cv_have_usable_wchar_option_v2="yes",
2780 ac_cv_have_usable_wchar_option_v2="no")])
2782 if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
2783 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2784 HAVE_CPP_2BYTE_WCHAR_T=1
2785 WCHAR_CFLAGS="-fshort-wchar"
2787 CXXFLAGS=$_SAVE_CXXFLAGS
2792 dnl Check for .hidden assembler directive and visibility attribute.
2793 dnl Borrowed from glibc configure.in
2794 dnl ===============================================================
2795 if test "$GNU_CC"; then
2796 AC_CACHE_CHECK(for visibility(hidden) attribute,
2797 ac_cv_visibility_hidden,
2798 [cat > conftest.c <<EOF
2799 int foo __attribute__ ((visibility ("hidden"))) = 1;
2801 ac_cv_visibility_hidden=no
2802 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2803 if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2804 ac_cv_visibility_hidden=yes
2809 if test "$ac_cv_visibility_hidden" = "yes"; then
2810 AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2812 AC_CACHE_CHECK(for visibility(default) attribute,
2813 ac_cv_visibility_default,
2814 [cat > conftest.c <<EOF
2815 int foo __attribute__ ((visibility ("default"))) = 1;
2817 ac_cv_visibility_default=no
2818 if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2819 if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2820 ac_cv_visibility_default=yes
2825 if test "$ac_cv_visibility_default" = "yes"; then
2826 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2828 AC_CACHE_CHECK(for visibility pragma support,
2829 ac_cv_visibility_pragma,
2830 [cat > conftest.c <<EOF
2831 #pragma GCC visibility push(hidden)
2833 #pragma GCC visibility push(default)
2834 int foo_default = 1;
2836 ac_cv_visibility_pragma=no
2837 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2838 if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
2839 if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
2840 ac_cv_visibility_pragma=yes
2846 if test "$ac_cv_visibility_pragma" = "yes"; then
2847 AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
2848 ac_cv_have_visibility_class_bug,
2849 [cat > conftest.c <<EOF
2850 #pragma GCC visibility push(hidden)
2851 struct __attribute__ ((visibility ("default"))) TestStruct {
2854 __attribute__ ((visibility ("default"))) void TestFunc() {
2858 ac_cv_have_visibility_class_bug=no
2859 if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2860 ac_cv_have_visibility_class_bug=yes
2862 if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
2863 ac_cv_have_visibility_class_bug=yes
2866 rm -rf conftest.{c,S}
2869 AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
2870 ac_cv_have_visibility_builtin_bug,
2871 [cat > conftest.c <<EOF
2872 #pragma GCC visibility push(hidden)
2873 #pragma GCC visibility push(default)
2875 #pragma GCC visibility pop
2877 __attribute__ ((visibility ("default"))) void Func() {
2879 memset(c, 0, sizeof(c));
2882 ac_cv_have_visibility_builtin_bug=no
2883 if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2884 ac_cv_have_visibility_builtin_bug=yes
2886 if test `grep -c "@PLT" conftest.S` = 0; then
2887 ac_cv_visibility_builtin_bug=yes
2890 rm -f conftest.{c,S}
2892 if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
2893 "$ac_cv_have_visibility_class_bug" = "no"; then
2894 VISIBILITY_FLAGS='-I$(DIST)/include/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
2895 WRAP_SYSTEM_INCLUDES=1
2897 VISIBILITY_FLAGS='-fvisibility=hidden'
2898 fi # have visibility pragma bug
2899 fi # have visibility pragma
2900 fi # have visibility(default) attribute
2901 fi # have visibility(hidden) attribute
2904 # visibility hidden flag for Sun Studio on Solaris
2905 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
2906 VISIBILITY_FLAGS='-xldscope=hidden'
2907 fi # Sun Studio on Solaris
2909 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2910 AC_SUBST(VISIBILITY_FLAGS)
2912 dnl Checks for header files.
2913 dnl ========================================================
2915 case "$target_os" in
2917 # for stuff like -lXshm
2918 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2921 AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
2922 AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
2923 AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
2924 AC_CHECK_HEADERS(malloc.h)
2925 AC_CHECK_HEADERS(X11/XKBlib.h)
2927 dnl These are all the places some variant of statfs can be hiding.
2928 AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2930 dnl Try for MMX support
2931 dnl NB - later gcc versions require -mmmx for this header to be successfully
2932 dnl included (or another option which implies it, such as -march=pentium-mmx)
2933 AC_CHECK_HEADERS(mmintrin.h)
2935 AC_MSG_CHECKING(for ARM SIMD support)
2937 [asm("uqadd8 r1, r1, r2");],
2938 result="yes", result="no")
2939 AC_MSG_RESULT("$result")
2940 if test "$result" = "yes"; then
2941 AC_DEFINE(HAVE_ARM_SIMD)
2944 AC_SUBST(HAVE_ARM_SIMD)
2946 dnl Check whether the compiler supports the new-style C++ standard
2947 dnl library headers (i.e. <new>) or needs the old "new.h"
2950 AC_CHECK_HEADER(new, [NEW_H=new])
2951 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
2954 AC_ARG_ENABLE(dtrace,
2955 [ --enable-dtrace build with dtrace support if available (default=no)],
2956 [enable_dtrace="yes"],)
2957 if test "x$enable_dtrace" = "xyes"; then
2958 AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
2959 if test -n "$HAVE_DTRACE"; then
2960 AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
2962 AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
2965 AC_SUBST(HAVE_DTRACE)
2971 AC_CHECK_HEADERS(sys/cdefs.h)
2975 dnl Checks for libraries.
2976 dnl ========================================================
2981 AC_CHECK_LIB(c_r, gethostbyname_r)
2985 dnl We don't want to link with libdl even if it's present on OS X, since
2986 dnl it's not used and not part of the default installation.
2987 dnl The same goes for BeOS.
2988 dnl We don't want to link against libm or libpthread on Darwin since
2989 dnl they both are just symlinks to libSystem and explicitly linking
2990 dnl against libSystem causes issues when debugging (see bug 299601).
2997 AC_CHECK_LIB(m, atan)
2998 AC_CHECK_LIB(dl, dlopen,
2999 AC_CHECK_HEADER(dlfcn.h,
3001 AC_DEFINE(HAVE_LIBDL)))
3005 _SAVE_CFLAGS="$CFLAGS"
3006 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3007 AC_CHECK_FUNCS(dladdr)
3008 CFLAGS="$_SAVE_CFLAGS"
3010 if test ! "$GNU_CXX"; then
3014 AC_CHECK_LIB(C_r, demangle)
3017 AC_CHECK_LIB(C, demangle)
3021 AC_CHECK_LIB(socket, socket)
3024 XLIBS="$X_EXTRA_LIBS"
3026 dnl ========================================================
3027 dnl Checks for X libraries.
3028 dnl Ordering is important.
3029 dnl Xt is dependent upon SM as of X11R6
3030 dnl ========================================================
3031 if test "$no_x" = "yes"; then
3034 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3035 XLIBS="-lX11 $XLIBS"
3036 _SAVE_LDFLAGS="$LDFLAGS"
3037 LDFLAGS="$XLDFLAGS $LDFLAGS"
3038 AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3039 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3040 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3041 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3044 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3045 unset ac_cv_lib_Xt_XtFree
3046 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3047 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
3048 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3049 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3052 # AIX needs the motif library linked before libXt to prevent
3053 # crashes in plugins linked against Motif - Bug #98892
3054 case "${target_os}" in
3056 XT_LIBS="-lXm $XT_LIBS"
3060 dnl ========================================================
3061 dnl = Check for XShm
3062 dnl ========================================================
3063 AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3065 AC_CHECK_HEADER(X11/extensions/XShm.h)
3066 if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" &&
3067 test -n "$_HAVE_XSHM_XEXT"; then
3068 AC_DEFINE(HAVE_XSHM)
3071 dnl ========================================================
3073 dnl ========================================================
3074 AC_CHECK_LIB(XIE, XieFloGeometry, [MOZ_XIE_LIBS="-lXIE"],,
3076 AC_CHECK_HEADER(X11/extensions/XIElib.h)
3078 if test "$MOZ_XIE_LIBS"; then
3079 dnl ====================================================
3080 dnl = If XIE is present and is desired, turn it on
3081 dnl ====================================================
3091 LDFLAGS="$_SAVE_LDFLAGS"
3093 dnl ========================================================
3094 dnl = Check for freetype2 and its functionality
3095 dnl ========================================================
3096 AC_CHECK_FT2(6.1.0, [_HAVE_FREETYPE2=1], [_HAVE_FREETYPE2=])
3098 if test "$_HAVE_FREETYPE2"; then
3100 _SAVE_CFLAGS="$CFLAGS"
3101 LIBS="$LIBS $FT2_LIBS"
3102 CFLAGS="$CFLAGS $FT2_CFLAGS"
3104 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
3105 ac_cv_member_FT_Bitmap_Size_y_ppem,
3106 [AC_TRY_COMPILE([#include <ft2build.h>
3107 #include FT_FREETYPE_H],
3109 if (sizeof s.y_ppem) return 0;
3111 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
3112 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
3113 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
3114 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
3116 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
3118 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
3119 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
3120 [FT_Bitmap_Size structure includes y_ppem field])
3122 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
3125 CFLAGS="$_SAVE_CFLAGS"
3135 dnl ========================================================
3136 dnl = pthread support
3137 dnl = Start by checking whether the system support pthreads
3138 dnl ========================================================
3139 case "$target_os" in
3144 MOZ_CHECK_PTHREADS(pthreads,
3145 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3146 MOZ_CHECK_PTHREADS(pthread,
3147 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3148 MOZ_CHECK_PTHREADS(c_r,
3149 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3150 MOZ_CHECK_PTHREADS(c,
3159 dnl ========================================================
3160 dnl Check the command line for --with-pthreads
3161 dnl ========================================================
3162 MOZ_ARG_WITH_BOOL(pthreads,
3163 [ --with-pthreads Force use of system pthread library with NSPR ],
3164 [ if test "$USE_PTHREADS"x = x; then
3165 AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3171 dnl ========================================================
3172 dnl Do the platform specific pthread hackery
3173 dnl ========================================================
3174 if test "$USE_PTHREADS"x != x
3177 dnl See if -pthread is supported.
3180 ac_cv_have_dash_pthread=no
3181 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3182 echo 'int main() { return 0; }' | cat > conftest.c
3183 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3184 if test $? -eq 0; then
3185 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3186 ac_cv_have_dash_pthread=yes
3187 case "$target_os" in
3189 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3192 CFLAGS="$CFLAGS -pthread"
3193 CXXFLAGS="$CXXFLAGS -pthread"
3199 AC_MSG_RESULT($ac_cv_have_dash_pthread)
3202 dnl See if -pthreads is supported.
3204 ac_cv_have_dash_pthreads=no
3205 if test "$ac_cv_have_dash_pthread" = "no"; then
3206 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3207 echo 'int main() { return 0; }' | cat > conftest.c
3208 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3209 if test $? -eq 0; then
3210 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3211 ac_cv_have_dash_pthreads=yes
3212 CFLAGS="$CFLAGS -pthreads"
3213 CXXFLAGS="$CXXFLAGS -pthreads"
3217 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3222 AC_DEFINE(_REENTRANT)
3223 AC_DEFINE(_THREAD_SAFE)
3224 dnl -pthread links in -lc_r, so don't specify it explicitly.
3225 if test "$ac_cv_have_dash_pthread" = "yes"; then
3226 _PTHREAD_LDFLAGS="-pthread"
3228 _PTHREAD_LDFLAGS="-lc_r"
3232 *-*-openbsd*|*-*-bsdi*)
3233 AC_DEFINE(_REENTRANT)
3234 AC_DEFINE(_THREAD_SAFE)
3235 dnl -pthread links in -lc_r, so don't specify it explicitly.
3236 if test "$ac_cv_have_dash_pthread" = "yes"; then
3237 _PTHREAD_LDFLAGS="-pthread"
3241 *-*-linux*|*-*-kfreebsd*-gnu)
3242 AC_DEFINE(_REENTRANT)
3246 AC_DEFINE(_REENTRANT)
3250 AC_DEFINE(_REENTRANT)
3254 AC_DEFINE(_REENTRANT)
3258 AC_DEFINE(_REENTRANT)
3262 AC_DEFINE(_REENTRANT)
3263 if test ! "$GNU_CC"; then
3264 CFLAGS="$CFLAGS -mt"
3265 CXXFLAGS="$CXXFLAGS -mt"
3269 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3272 dnl ========================================================
3273 dnl See if mmap sees writes
3274 dnl For cross compiling, just define it as no, which is a safe default
3275 dnl ========================================================
3276 AC_MSG_CHECKING(whether mmap() sees write()s)
3282 #include <sys/mman.h>
3283 #include <sys/types.h>
3284 #include <sys/stat.h>
3287 char fname[] = "conftest.file";
3288 char zbuff[1024]; /* Fractional page is probably worst case */
3295 fd = open(fname, O_RDWR | O_CREAT, 0660);
3298 write(fd, zbuff, sizeof(zbuff));
3299 lseek(fd, 0, SEEK_SET);
3300 map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
3301 if(map==(char*)-1) return 2;
3302 for(i=0; fname[i]; i++) {
3303 int rc = write(fd, &fname[i], 1);
3304 if(map[i]!=fname[i]) return 4;
3311 AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
3313 AC_MSG_RESULT("$result")
3315 if test "$result" = "no"; then
3316 AC_DEFINE(MMAP_MISSES_WRITES)
3320 dnl Checks for library functions.
3321 dnl ========================================================
3322 AC_PROG_GCC_TRADITIONAL
3324 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 truncate64 statvfs64)
3325 AC_CHECK_FUNCS(flockfile getpagesize)
3327 dnl localtime_r and strtok_r are only present on MacOS version 10.2 and higher
3328 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100200"; then
3329 AC_CHECK_FUNCS(localtime_r strtok_r)
3332 dnl check for wcrtomb/mbrtowc
3333 dnl =======================================================================
3334 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3337 AC_CACHE_CHECK(for wcrtomb,
3339 [AC_TRY_LINK([#include <wchar.h>],
3340 [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3341 ac_cv_have_wcrtomb="yes",
3342 ac_cv_have_wcrtomb="no")])
3343 if test "$ac_cv_have_wcrtomb" = "yes"; then
3344 AC_DEFINE(HAVE_WCRTOMB)
3346 AC_CACHE_CHECK(for mbrtowc,
3348 [AC_TRY_LINK([#include <wchar.h>],
3349 [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3350 ac_cv_have_mbrtowc="yes",
3351 ac_cv_have_mbrtowc="no")])
3352 if test "$ac_cv_have_mbrtowc" = "yes"; then
3353 AC_DEFINE(HAVE_MBRTOWC)
3360 ac_cv_func_res_ninit,
3363 #define _BSD_SOURCE 1
3367 [int foo = res_ninit(&_res);],
3368 [ac_cv_func_res_ninit=yes],
3369 [ac_cv_func_res_ninit=no])
3372 if test "$ac_cv_func_res_ninit" = "yes"; then
3373 AC_DEFINE(HAVE_RES_NINIT)
3374 dnl must add the link line we do something as foolish as this... dougt
3376 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3377 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3382 [for gnu_get_libc_version()],
3383 ac_cv_func_gnu_get_libc_version,
3385 #ifdef HAVE_GNU_LIBC_VERSION_H
3386 #include <gnu/libc-version.h>
3389 [const char *glibc_version = gnu_get_libc_version();],
3390 [ac_cv_func_gnu_get_libc_version=yes],
3391 [ac_cv_func_gnu_get_libc_version=no]
3395 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3396 AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3400 os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|beos*)
3404 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3405 AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3406 AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3408 LIBS="$LIBS $_ICONV_LIBS"
3417 iconv_t h = iconv_open("", "");
3418 iconv(h, NULL, NULL, NULL, NULL);
3421 [ac_cv_func_iconv=yes],
3422 [ac_cv_func_iconv=no]
3425 if test "$ac_cv_func_iconv" = "yes"; then
3426 AC_DEFINE(HAVE_ICONV)
3427 DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3428 LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3429 LIBICONV="$_ICONV_LIBS"
3431 [for iconv() with const input],
3432 ac_cv_func_const_iconv,
3438 const char *input = "testing";
3439 iconv_t h = iconv_open("", "");
3440 iconv(h, &input, NULL, NULL, NULL);
3443 [ac_cv_func_const_iconv=yes],
3444 [ac_cv_func_const_iconv=no]
3447 if test "$ac_cv_func_const_iconv" = "yes"; then
3448 AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3460 dnl **********************
3461 dnl *** va_copy checks ***
3462 dnl **********************
3463 dnl we currently check for all three va_copy possibilities, so we get
3464 dnl all results in config.log for bug reports.
3465 AC_MSG_CHECKING(for an implementation of va_copy())
3466 AC_CACHE_VAL(ac_cv_va_copy,[
3469 void f (int i, ...) {
3470 va_list args1, args2;
3471 va_start (args1, i);
3472 va_copy (args2, args1);
3473 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3475 va_end (args1); va_end (args2);
3477 int main() { f (0, 42); return 0; }],
3483 AC_MSG_RESULT($ac_cv_va_copy)
3484 AC_MSG_CHECKING(for an implementation of __va_copy())
3485 AC_CACHE_VAL(ac_cv___va_copy,[
3488 void f (int i, ...) {
3489 va_list args1, args2;
3490 va_start (args1, i);
3491 __va_copy (args2, args1);
3492 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3494 va_end (args1); va_end (args2);
3496 int main() { f (0, 42); return 0; }],
3497 ac_cv___va_copy=yes,
3502 AC_MSG_RESULT($ac_cv___va_copy)
3503 AC_MSG_CHECKING(whether va_lists can be copied by value)
3504 AC_CACHE_VAL(ac_cv_va_val_copy,[
3507 void f (int i, ...) {
3508 va_list args1, args2;
3509 va_start (args1, i);
3511 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3513 va_end (args1); va_end (args2);
3515 int main() { f (0, 42); return 0; }],
3516 ac_cv_va_val_copy=yes,
3517 ac_cv_va_val_copy=no,
3518 ac_cv_va_val_copy=yes
3521 if test "x$ac_cv_va_copy" = "xyes"; then
3522 AC_DEFINE(VA_COPY, va_copy)
3523 AC_DEFINE(HAVE_VA_COPY)
3524 elif test "x$ac_cv___va_copy" = "xyes"; then
3525 AC_DEFINE(VA_COPY, __va_copy)
3526 AC_DEFINE(HAVE_VA_COPY)
3529 if test "x$ac_cv_va_val_copy" = "xno"; then
3530 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3532 AC_MSG_RESULT($ac_cv_va_val_copy)
3534 dnl Check for dll-challenged libc's.
3535 dnl This check is apparently only needed for Linux.
3538 dnl ===================================================================
3541 rm -rf conftest* _conftest
3543 cat >> conftest.C <<\EOF
3548 void __dump_link_map(void) {
3549 struct link_map *map = _dl_loaded;
3550 while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
3553 dlopen("./conftest1.so",RTLD_LAZY);
3554 dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
3555 dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
3556 dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
3560 /* _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).*/
3561 int main() { printf("./conftest1.so\n"); }
3565 $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
3567 cat >> conftest1.C <<\EOF
3569 void foo(void) {printf("foo in dll called\n");}
3571 ${CXX-g++} -fPIC -c -g conftest1.C
3572 ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
3573 ${CXX-g++} -g conftest.C -o conftest -ldl
3574 cp -f conftest1.so conftest _conftest
3576 if test `./conftest | grep conftest1.so | wc -l` -gt 1
3579 echo "*** Your libc has a bug that can result in loading the same dynamic"
3580 echo "*** library multiple times. This bug is known to be fixed in glibc-2.0.7-32"
3581 echo "*** or later. However, if you choose not to upgrade, the only effect"
3582 echo "*** will be excessive memory usage at runtime."
3586 rm -rf conftest* _conftest
3587 dnl ===================================================================
3591 dnl ===================================================================
3592 dnl ========================================================
3593 dnl By default, turn rtti and exceptions off on g++/egcs
3594 dnl ========================================================
3595 if test "$GNU_CXX"; then
3597 AC_MSG_CHECKING(for C++ exceptions flag)
3599 dnl They changed -f[no-]handle-exceptions to -f[no-]exceptions in g++ 2.8
3600 AC_CACHE_VAL(ac_cv_cxx_exceptions_flags,
3601 [echo "int main() { return 0; }" | cat > conftest.C
3603 ${CXX-g++} ${CXXFLAGS} -c -fno-handle-exceptions conftest.C > conftest.out 2>&1
3605 if egrep "warning.*renamed" conftest.out >/dev/null; then
3606 ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-exceptions
3608 ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-handle-exceptions
3613 AC_MSG_RESULT($ac_cv_cxx_exceptions_flags)
3614 _MOZ_EXCEPTIONS_FLAGS_OFF=$ac_cv_cxx_exceptions_flags
3615 _MOZ_EXCEPTIONS_FLAGS_ON=`echo $ac_cv_cxx_exceptions_flags | sed 's|no-||'`
3618 dnl ========================================================
3619 dnl Put your C++ language/feature checks below
3620 dnl ========================================================
3624 if test "$GNU_CC"; then
3625 AC_CACHE_CHECK(for gcc 3.0 ABI,
3626 ac_cv_gcc_three_abi,
3629 #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
3635 ac_cv_gcc_three_abi="yes",
3636 ac_cv_gcc_three_abi="no")])
3637 if test "$ac_cv_gcc_three_abi" = "yes"; then
3638 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc3}"
3641 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc2}"
3644 AC_SUBST(HAVE_GCC3_ABI)
3647 AC_CACHE_CHECK(for C++ \"explicit\" keyword,
3649 [AC_TRY_COMPILE(class X {
3650 public: explicit X(int i) : i_(i) {}
3654 ac_cv_cpp_explicit=yes,
3655 ac_cv_cpp_explicit=no)])
3656 if test "$ac_cv_cpp_explicit" = yes ; then
3657 AC_DEFINE(HAVE_CPP_EXPLICIT)
3660 AC_CACHE_CHECK(for C++ \"typename\" keyword,
3662 [AC_TRY_COMPILE(class param {
3664 typedef unsigned long num_type;
3667 template <class T> class tplt {
3669 typedef typename T::num_type t_num_type;
3670 t_num_type foo(typename T::num_type num) {
3676 ac_cv_cpp_typename=yes,
3677 ac_cv_cpp_typename=no)])
3678 if test "$ac_cv_cpp_typename" = yes ; then
3679 AC_DEFINE(HAVE_CPP_TYPENAME)
3682 dnl Check for support of modern template specialization syntax
3683 dnl Test code and requirement from scc@netscape.com.
3684 dnl Autoconf cut-and-paste job by waterson@netscape.com
3685 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
3686 ac_cv_cpp_modern_specialize_template_syntax,
3687 [AC_TRY_COMPILE(template <class T> struct X { int a; };
3689 template <> struct X<Y> { double a; };,
3692 ac_cv_cpp_modern_specialize_template_syntax=yes,
3693 ac_cv_cpp_modern_specialize_template_syntax=no)])
3694 if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
3695 AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
3699 dnl Some compilers support only full specialization, and some don't.
3700 AC_CACHE_CHECK(whether partial template specialization works,
3701 ac_cv_cpp_partial_specialization,
3702 [AC_TRY_COMPILE(template <class T> class Foo {};
3703 template <class T> class Foo<T*> {};,
3705 ac_cv_cpp_partial_specialization=yes,
3706 ac_cv_cpp_partial_specialization=no)])
3707 if test "$ac_cv_cpp_partial_specialization" = yes ; then
3708 AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
3711 dnl Some compilers have limited support for operators with templates;
3712 dnl specifically, it is necessary to define derived operators when a base
3713 dnl class's operator declaration should suffice.
3714 AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
3715 ac_cv_need_derived_template_operators,
3716 [AC_TRY_COMPILE([template <class T> class Base { };
3718 Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
3719 template <class T> class Derived : public Base<T> { };],
3720 [Derived<char> a, b;
3721 Base<char> c = a + b;
3723 ac_cv_need_derived_template_operators=no,
3724 ac_cv_need_derived_template_operators=yes)])
3725 if test "$ac_cv_need_derived_template_operators" = yes ; then
3726 AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
3730 dnl Some compilers have trouble detecting that a template class
3731 dnl that derives from another template is actually an instance
3732 dnl of the base class. This test checks for that.
3733 AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
3734 ac_cv_need_cpp_template_cast_to_base,
3735 [AC_TRY_COMPILE([template <class T> class Base { };
3736 template <class T> class Derived : public Base<T> { };
3737 template <class T> int foo(const Base<T>&) { return 0; }],
3738 [Derived<char> bar; return foo(bar);],
3739 ac_cv_need_cpp_template_cast_to_base=no,
3740 ac_cv_need_cpp_template_cast_to_base=yes)])
3741 if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
3742 AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
3745 dnl Some compilers have trouble resolving the ambiguity between two
3746 dnl functions whose arguments differ only by cv-qualifications.
3747 AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
3748 ac_cv_can_resolve_const_ambiguity,
3750 template <class T> class ptrClass {
3754 template <class T> T* a(ptrClass<T> *arg) {
3759 const T* a(const ptrClass<T> *arg) {
3765 ac_cv_can_resolve_const_ambiguity=yes,
3766 ac_cv_can_resolve_const_ambiguity=no)])
3767 if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
3768 AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
3772 dnl We don't do exceptions on unix. The only reason this used to be here
3773 dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses
3774 dnl exceptions. But, we turn exceptions off by default and this test breaks.
3775 dnl So im commenting this out until someone writes some artificial
3776 dnl intelligence to detect not only if the compiler has exceptions, but if
3777 dnl they are enabled as well.
3779 dnl AC_CACHE_CHECK(for C++ \"exceptions\",
3780 dnl ac_cv_cpp_exceptions,
3781 dnl [AC_TRY_COMPILE(class X { public: X() {} };
3782 dnl static void F() { throw X(); },
3783 dnl try { F(); } catch(X & e) { },
3784 dnl ac_cv_cpp_exceptions=yes,
3785 dnl ac_cv_cpp_exceptions=no)])
3786 dnl if test $ac_cv_cpp_exceptions = yes ; then
3787 dnl AC_DEFINE(HAVE_CPP_EXCEPTIONS)
3790 dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
3791 dnl supports it well enough to allow us to use it to change access, but not
3792 dnl to resolve ambiguity. The next two tests determine how well the |using|
3793 dnl keyword is supported.
3795 dnl Check to see if we can change access with |using|. Test both a
3796 dnl legal and an illegal example.
3797 AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
3798 ac_cv_cpp_access_changing_using2,
3800 class A { protected: int foo() { return 0; } };
3801 class B : public A { public: using A::foo; };,
3802 B b; return b.foo();,
3804 class A { public: int foo() { return 1; } };
3805 class B : public A { private: using A::foo; };,
3806 B b; return b.foo();,
3807 ac_cv_cpp_access_changing_using2=no,
3808 ac_cv_cpp_access_changing_using2=yes)],
3809 ac_cv_cpp_access_changing_using2=no)])
3810 if test "$ac_cv_cpp_access_changing_using2" = yes ; then
3811 AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
3814 dnl Check to see if we can resolve ambiguity with |using|.
3815 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3816 ac_cv_cpp_ambiguity_resolving_using,
3817 [AC_TRY_COMPILE(class X {
3818 public: int go(const X&) {return 3;}
3819 int jo(const X&) {return 3;}
3821 class Y : public X {
3822 public: int go(int) {return 2;}
3823 int jo(int) {return 2;}
3825 private: using X::go;
3828 ac_cv_cpp_ambiguity_resolving_using=yes,
3829 ac_cv_cpp_ambiguity_resolving_using=no)])
3830 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3831 AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3834 dnl Check to see if the |std| namespace is supported. If so, we'll want
3835 dnl to qualify any standard library calls with "std::" to ensure that
3836 dnl those functions can be resolved.
3837 AC_CACHE_CHECK(for \"std::\" namespace,
3838 ac_cv_cpp_namespace_std,
3839 [AC_TRY_COMPILE([#include <algorithm>],
3840 [return std::min(0, 1);],
3841 ac_cv_cpp_namespace_std=yes,
3842 ac_cv_cpp_namespace_std=no)])
3843 if test "$ac_cv_cpp_namespace_std" = yes ; then
3844 AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
3847 dnl Older compilers are overly ambitious with respect to using the standard
3848 dnl template library's |operator!=()| when |operator==()| is defined. In
3849 dnl which case, defining |operator!=()| in addition to |operator==()| causes
3850 dnl ambiguity at compile-time. This test checks for that case.
3851 AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
3852 ac_cv_cpp_unambiguous_std_notequal,
3853 [AC_TRY_COMPILE([#include <algorithm>
3855 int operator==(const T1&, const T1&) { return 0; }
3856 int operator!=(const T1&, const T1&) { return 0; }],
3857 [T1 a,b; return a != b;],
3858 ac_cv_cpp_unambiguous_std_notequal=unambiguous,
3859 ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
3860 if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
3861 AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
3865 AC_CACHE_CHECK(for C++ reinterpret_cast,
3866 ac_cv_cpp_reinterpret_cast,
3867 [AC_TRY_COMPILE(struct X { int i; };
3868 struct Y { int i; };,
3869 X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
3870 ac_cv_cpp_reinterpret_cast=yes,
3871 ac_cv_cpp_reinterpret_cast=no)])
3872 if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
3873 AC_DEFINE(HAVE_CPP_NEW_CASTS)
3876 dnl See if a dynamic_cast to void* gives the most derived object.
3877 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
3878 ac_cv_cpp_dynamic_cast_void_ptr,
3879 [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
3880 class Y { int j; public: virtual ~Y() { } };
3881 class Z : public X, public Y { int k; };
3887 return !((((void*)&mdo != (void*)subx) &&
3888 ((void*)&mdo == dynamic_cast<void*>(subx))) ||
3889 (((void*)&mdo != (void*)suby) &&
3890 ((void*)&mdo == dynamic_cast<void*>(suby))));
3892 ac_cv_cpp_dynamic_cast_void_ptr=yes,
3893 ac_cv_cpp_dynamic_cast_void_ptr=no,
3894 ac_cv_cpp_dynamic_cast_void_ptr=no)])
3895 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
3896 AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
3900 dnl note that this one is reversed - if the test fails, then
3901 dnl we require implementations of unused virtual methods. Which
3902 dnl really blows because it means we'll have useless vtable
3904 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
3905 ac_cv_cpp_unused_required,
3906 [AC_TRY_LINK(class X {private: virtual void never_called();};,
3908 ac_cv_cpp_unused_required=no,
3909 ac_cv_cpp_unused_required=yes)])
3910 if test "$ac_cv_cpp_unused_required" = yes ; then
3911 AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
3915 dnl Some compilers have trouble comparing a constant reference to a templatized
3916 dnl class to zero, and require an explicit operator==() to be defined that takes
3917 dnl an int. This test separates the strong from the weak.
3919 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
3920 ac_cv_trouble_comparing_to_zero,
3921 [AC_TRY_COMPILE([#include <algorithm>
3922 template <class T> class Foo {};
3924 template <class T> int operator==(const T2*, const T&) { return 0; }
3925 template <class T> int operator!=(const T2*, const T&) { return 0; }],
3926 [Foo<int> f; return (0 != f);],
3927 ac_cv_trouble_comparing_to_zero=no,
3928 ac_cv_trouble_comparing_to_zero=yes)])
3929 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
3930 AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
3935 dnl End of C++ language/feature checks
3938 dnl ========================================================
3939 dnl = Internationalization checks
3940 dnl ========================================================
3942 dnl Internationalization and Locale support is different
3943 dnl on various UNIX platforms. Checks for specific i18n
3944 dnl features go here.
3946 dnl check for LC_MESSAGES
3947 AC_CACHE_CHECK(for LC_MESSAGES,
3948 ac_cv_i18n_lc_messages,
3949 [AC_TRY_COMPILE([#include <locale.h>],
3950 [int category = LC_MESSAGES;],
3951 ac_cv_i18n_lc_messages=yes,
3952 ac_cv_i18n_lc_messages=no)])
3953 if test "$ac_cv_i18n_lc_messages" = yes; then
3954 AC_DEFINE(HAVE_I18N_LC_MESSAGES)
3957 fi # SKIP_COMPILER_CHECKS
3960 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
3961 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
3964 dnl Mozilla specific options
3965 dnl ========================================================
3966 dnl The macros used for command line options
3967 dnl are defined in build/autoconf/altoptions.m4.
3970 dnl ========================================================
3972 dnl = Check for external package dependencies
3974 dnl ========================================================
3975 MOZ_ARG_HEADER(External Packages)
3979 MOZ_ARG_WITH_STRING(libxul-sdk,
3980 [ --with-libxul-sdk=PFX Use the libXUL SDK at <PFX>],
3981 LIBXUL_SDK_DIR=$withval)
3983 if test "$LIBXUL_SDK_DIR" = "yes"; then
3984 AC_MSG_ERROR([--with-libxul-sdk must specify a path])
3985 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
3986 LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
3988 if test ! -f "$LIBXUL_SDK/sdk/include/xpcom-config.h"; then
3989 AC_MSG_ERROR([$LIBXUL_SDK/sdk/include/xpcom-config.h doesn't exist])
3994 AC_SUBST(LIBXUL_SDK)
3996 if test -n "$LIBXUL_SDK"; then
3997 LIBXUL_DIST="$LIBXUL_SDK"
3999 LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
4001 AC_SUBST(LIBXUL_DIST)
4003 dnl ========================================================
4004 dnl = If NSPR was not detected in the system,
4005 dnl = use the one in the source tree (mozilla/nsprpub)
4006 dnl ========================================================
4007 MOZ_ARG_WITH_BOOL(system-nspr,
4008 [ --with-system-nspr Use system installed NSPR],
4009 _USE_SYSTEM_NSPR=1 )
4011 if test -n "$_USE_SYSTEM_NSPR"; then
4012 AM_PATH_NSPR(4.7.0, [MOZ_NATIVE_NSPR=1], [MOZ_NATIVE_NSPR=])
4015 if test -n "$MOZ_NATIVE_NSPR"; then
4016 _SAVE_CFLAGS=$CFLAGS
4017 CFLAGS="$CFLAGS $NSPR_CFLAGS"
4018 AC_TRY_COMPILE([#include "prlog.h"],
4019 [#ifndef PR_STATIC_ASSERT
4020 #error PR_STATIC_ASSERT not defined
4022 [MOZ_NATIVE_NSPR=1],
4023 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT]))
4024 CFLAGS=$_SAVE_CFLAGS
4026 NSPR_CFLAGS='`$(DEPTH)/nsprpub/config/nspr-config --prefix='${LIBXUL_DIST}' --includedir='${LIBXUL_DIST}'/include/nspr --cflags`'
4027 if test "$OS_ARCH" = "WINCE"; then
4028 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4029 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4030 elif test "$OS_ARCH" = "WINNT"; then
4031 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4032 if test -n "$GNU_CC"; then
4033 NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
4035 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4038 NSPR_LIBS='`$(DEPTH)/nsprpub/config/nspr-config --prefix='${LIBXUL_DIST}' --libdir='${LIBXUL_DIST}'/lib --libs`'
4042 dnl ========================================================
4043 dnl = If NSS was not detected in the system,
4044 dnl = use the one in the source tree (mozilla/security/nss)
4045 dnl ========================================================
4047 MOZ_ARG_WITH_BOOL(system-nss,
4048 [ --with-system-nss Use system installed NSS],
4051 if test -n "$_USE_SYSTEM_NSS"; then
4052 AM_PATH_NSS(3.12.0, [MOZ_NATIVE_NSS=1], [MOZ_NATIVE_NSS=])
4055 if test -n "$MOZ_NATIVE_NSS"; then
4056 NSS_LIBS="$NSS_LIBS -lcrmf"
4058 NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4060 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4061 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4062 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4063 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4064 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX) \
4065 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)softokn$NSS_VERSION\$(DLL_SUFFIX)"
4067 if test -z "$GNU_CC" && test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "WINCE" -o "$OS_ARCH" = "OS2"; then
4069 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4070 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4071 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4072 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4073 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4074 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)softokn$NSS_VERSION.\$(IMPORT_LIB_SUFFIX)"
4076 NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION -lsoftokn$NSS_VERSION"
4080 if test -z "$SKIP_LIBRARY_CHECKS"; then
4081 dnl system JPEG support
4082 dnl ========================================================
4083 MOZ_ARG_WITH_STRING(system-jpeg,
4084 [ --with-system-jpeg[=PFX]
4085 Use system libjpeg [installed at prefix PFX]],
4088 _SAVE_CFLAGS=$CFLAGS
4089 _SAVE_LDFLAGS=$LDFLAGS
4091 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4092 CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4093 LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4095 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4098 AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS)
4101 if test "$SYSTEM_JPEG" = 1; then
4102 LIBS="$JPEG_LIBS $LIBS"
4103 AC_TRY_COMPILE([ #include <stdio.h>
4104 #include <sys/types.h>
4105 #include <jpeglib.h> ],
4106 [ #if JPEG_LIB_VERSION < $MOZJPEG
4107 #error "Insufficient JPEG library version ($MOZJPEG required)."
4110 [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=])
4112 CFLAGS=$_SAVE_CFLAGS
4113 LDFLAGS=$_SAVE_LDFLAGS
4116 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$SYSTEM_JPEG" = 1; then
4117 JPEG_CFLAGS="-I${JPEG_DIR}/include"
4118 JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
4121 dnl system ZLIB support
4122 dnl ========================================================
4123 MOZ_ARG_WITH_STRING(system-zlib,
4124 [ --with-system-zlib[=PFX]
4125 Use system libz [installed at prefix PFX]],
4128 _SAVE_CFLAGS=$CFLAGS
4129 _SAVE_LDFLAGS=$LDFLAGS
4131 if test -n "${ZLIB_DIR}" -a "${ZLIB_DIR}" != "yes"; then
4132 CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
4133 LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
4135 if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
4138 AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"],
4139 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
4141 if test "$SYSTEM_ZLIB" = 1; then
4142 LIBS="$ZLIB_LIBS $LIBS"
4143 AC_TRY_COMPILE([ #include <stdio.h>
4145 #include <zlib.h> ],
4146 [ #if ZLIB_VERNUM < $MOZZLIB
4147 #error "Insufficient zlib version ($MOZZLIB required)."
4150 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=])
4152 CFLAGS=$_SAVE_CFLAGS
4153 LDFLAGS=$_SAVE_LDFLAGS
4156 if test "${ZLIB_DIR}" -a -d "${ZLIB_DIR}" -a "$SYSTEM_ZLIB" = 1; then
4157 ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
4158 ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
4161 dnl system BZIP2 Support
4162 dnl ========================================================
4163 MOZ_ARG_WITH_STRING(system-bz2,
4164 [ --with-system-bz2[=PFX]
4165 Use system libbz2 [installed at prefix PFX]],
4168 _SAVE_CFLAGS=$CFLAGS
4169 _SAVE_LDFLAGS=$LDFLAGS
4171 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4172 CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4173 LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4175 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4178 AC_CHECK_LIB(bz2, BZ2_bzread, [SYSTEM_BZ2=1 BZ2_LIBS="-lbz2"],
4179 [SYSTEM_BZ2= BZ2_CFLAGS= BZ2_LIBS=], $BZ2_LIBS)
4181 CFLAGS=$_SAVE_CFLAGS
4182 LDFLAGS=$_SAVE_LDFLAGS
4185 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$SYSTEM_BZ2" = 1; then
4186 BZ2_CFLAGS="-I${BZ2_DIR}/include"
4187 BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
4190 dnl system PNG Support
4191 dnl ========================================================
4192 MOZ_ARG_WITH_STRING(system-png,
4193 [ --with-system-png[=PFX]
4194 Use system libpng [installed at prefix PFX]],
4197 _SAVE_CFLAGS=$CFLAGS
4198 _SAVE_LDFLAGS=$LDFLAGS
4200 CFLAGS="$ZLIB_CFLAGS $CFLAGS"
4201 LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
4202 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4203 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4204 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4206 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4209 _SAVE_PNG_LIBS=$PNG_LIBS
4210 AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"],
4211 AC_MSG_ERROR([--with-system-png requested but no working libpng found]),
4213 AC_CHECK_LIB(png, png_get_acTL, ,
4214 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]),
4217 if test "$SYSTEM_PNG" = 1; then
4218 LIBS="$PNG_LIBS $LIBS"
4219 AC_TRY_COMPILE([ #include <stdio.h>
4220 #include <sys/types.h>
4222 [ #if PNG_LIBPNG_VER < $MOZPNG
4223 #error "Insufficient libpng version ($MOZPNG required)."
4225 #ifndef PNG_UINT_31_MAX
4226 #error "Insufficient libpng version."
4229 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4231 CFLAGS=$_SAVE_CFLAGS
4232 LDFLAGS=$_SAVE_LDFLAGS
4235 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
4236 PNG_CFLAGS="-I${PNG_DIR}/include"
4237 PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
4240 fi # SKIP_LIBRARY_CHECKS
4242 dnl system HunSpell Support
4243 dnl ========================================================
4244 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4245 [ --enable-system-hunspell Use system hunspell (located with pkgconfig)],
4248 if test -n "$SYSTEM_HUNSPELL"; then
4249 PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4252 AC_SUBST(SYSTEM_HUNSPELL)
4254 dnl ========================================================
4255 dnl Java SDK support
4256 dnl ========================================================
4258 MOZ_ARG_WITH_STRING(java-include-path,
4259 [ --with-java-include-path=dir Location of Java SDK headers],
4260 JAVA_INCLUDE_PATH=$withval)
4263 MOZ_ARG_WITH_STRING(java-bin-path,
4264 [ --with-java-bin-path=dir Location of Java binaries (java, javac, jar)],
4265 JAVA_BIN_PATH=$withval)
4267 dnl ========================================================
4268 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4269 dnl their usage and use them in spidermonkey.
4270 dnl ========================================================
4271 MOZ_ARG_WITH_BOOL(arm-kuser,
4272 [ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4275 if test -n "$USE_ARM_KUSER"; then
4276 AC_DEFINE(USE_ARM_KUSER)
4279 dnl ========================================================
4283 dnl ========================================================
4285 MOZ_ARG_HEADER(Application)
4289 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4290 MOZ_BRANDING_DIRECTORY=
4291 MOZ_DBGRINFO_MODULES=
4294 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg bmp xbm icon"
4295 MOZ_IMG_ENCODERS_DEFAULT="png jpeg"
4305 MOZ_AUTH_EXTENSION=1
4306 MOZ_NO_ACTIVEX_SUPPORT=1
4307 MOZ_NO_INSPECTOR_APIS=
4308 MOZ_NO_XPCOM_OBSOLETE=
4317 MOZ_PLAINTEXT_EDITOR_ONLY=
4319 MOZ_PREF_EXTENSIONS=1
4320 MOZ_PROFILELOCKING=1
4321 MOZ_PROFILESHARING=1
4323 MOZ_PYTHON_EXTENSIONS="xpcom dom"
4325 MOZ_PYTHON_DEBUG_SUFFIX=
4326 MOZ_PYTHON_DLL_SUFFIX=
4327 MOZ_PYTHON_INCLUDES=
4331 MOZ_PYTHON_VER_DOTTED=
4337 MOZ_STATIC_MAIL_BUILD=
4342 MOZ_UNIVERSALCHARDET=1
4344 MOZ_USE_NATIVE_UCONV=
4346 MOZ_XPFE_COMPONENTS=1
4348 MOZ_XSLT_STANDALONE=
4356 NECKO_PROTOCOLS_DEFAULT="about data file ftp gopher http res viewsource"
4357 NECKO_SMALL_BUFFERS=
4359 XPC_IDISPATCH_SUPPORT=
4362 case "$target_os" in
4371 case "$target_os" in
4372 msvc*|mks*|cygwin*|mingw*)
4373 if test -z "$GNU_CC"; then
4374 XPC_IDISPATCH_SUPPORT=1
4375 MOZ_NO_ACTIVEX_SUPPORT=
4376 MOZ_ACTIVEX_SCRIPTING_SUPPORT=1
4381 MOZ_ARG_ENABLE_STRING(application,
4382 [ --enable-application=APP
4386 content/xslt (Standalone Transformiix XSLT)
4387 netwerk (Standalone Necko)
4388 tools/update-packaging (AUS-related packaging tools)
4389 standalone (use this for standalone
4390 xpcom/xpconnect or to manually drive a build)],
4391 [ MOZ_BUILD_APP=$enableval ] )
4393 MOZ_EMBEDDING_PROFILE=default
4394 MOZ_ARG_WITH_STRING(embedding-profile,
4395 [ --with-embedding-profile=default|basic|minimal
4396 see http://wiki.mozilla.org/Gecko:Small_Device_Support],
4397 [ MOZ_EMBEDDING_PROFILE=$withval ])
4399 case "$MOZ_EMBEDDING_PROFILE" in
4401 MOZ_EMBEDDING_LEVEL_DEFAULT=1
4402 MOZ_EMBEDDING_LEVEL_BASIC=1
4403 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4404 AC_DEFINE(MOZ_EMBEDDING_LEVEL_DEFAULT)
4405 AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4406 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4410 MOZ_EMBEDDING_LEVEL_DEFAULT=
4411 MOZ_EMBEDDING_LEVEL_BASIC=1
4412 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4413 AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4414 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4416 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4418 MOZ_ENABLE_POSTSCRIPT=
4419 MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4420 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4421 MOZ_IMG_ENCODERS_DEFAULT=
4427 MOZ_NO_ACTIVEX_SUPPORT=1
4428 MOZ_NO_INSPECTOR_APIS=1
4429 MOZ_NO_XPCOM_OBSOLETE=1
4432 MOZ_PLAINTEXT_EDITOR_ONLY=1
4434 MOZ_PREF_EXTENSIONS=
4439 MOZ_UNIVERSALCHARDET=
4441 MOZ_USE_NATIVE_UCONV=
4443 MOZ_XPFE_COMPONENTS=
4448 NECKO_PROTOCOLS_DEFAULT="about data http file res"
4449 NECKO_SMALL_BUFFERS=1
4450 NS_DISABLE_LOGGING=1
4456 MOZ_EMBEDDING_LEVEL_DEFAULT=
4457 MOZ_EMBEDDING_LEVEL_BASIC=
4458 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4459 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4461 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4463 MOZ_ENABLE_POSTSCRIPT=
4464 MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4465 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4466 MOZ_IMG_ENCODERS_DEFAULT=
4472 MOZ_NO_ACTIVEX_SUPPORT=1
4473 MOZ_NO_INSPECTOR_APIS=1
4474 MOZ_NO_XPCOM_OBSOLETE=1
4477 MOZ_PLAINTEXT_EDITOR_ONLY=1
4479 MOZ_PREF_EXTENSIONS=
4486 MOZ_UNIVERSALCHARDET=
4488 MOZ_USE_NATIVE_UCONV=1
4490 MOZ_XPFE_COMPONENTS=
4497 NECKO_PROTOCOLS_DEFAULT="about data http file res"
4498 NECKO_SMALL_BUFFERS=1
4499 NS_DISABLE_LOGGING=1
4505 AC_MSG_ERROR([Unrecognized value: --with-embedding-profile=$MOZ_EMBEDDING_PROFILE])
4509 AC_SUBST(MOZ_EMBEDDING_LEVEL_DEFAULT)
4510 AC_SUBST(MOZ_EMBEDDING_LEVEL_BASIC)
4511 AC_SUBST(MOZ_EMBEDDING_LEVEL_MINIMAL)
4513 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
4514 [ --with-xulrunner-stub-name=appname Create the xulrunner stub with the given name],
4515 XULRUNNER_STUB_NAME=$withval)
4517 if test -z "$XULRUNNER_STUB_NAME"; then
4518 case "$target_os" in
4520 XULRUNNER_STUB_NAME=xulrunner
4523 XULRUNNER_STUB_NAME=xulrunner-stub
4526 AC_SUBST(XULRUNNER_STUB_NAME)
4528 if test -z "$MOZ_BUILD_APP"; then
4529 AC_MSG_ERROR([--enable-application=APP was not specified and is required.])
4531 # We have a valid application only if it has a build.mk file in its top
4533 if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
4534 AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4538 # Allow the application to influence configure with a confvars.sh script.
4540 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4541 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4542 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4543 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4548 # Now is a good time to test for logic errors, define mismatches, etc.
4549 case "$MOZ_BUILD_APP" in
4551 if test "$LIBXUL_SDK"; then
4552 AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4556 # Fix this case for folks who forget. Warn them.
4557 if test -n "$LIBXUL_SDK" -a -z "$MOZ_XUL_APP"; then
4558 AC_MSG_WARN([Setting MOZ_XUL_APP since LIBXUL_SDK was set. Add to confvars.sh!])
4564 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4565 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4567 case "$MOZ_BUILD_APP" in
4569 AC_DEFINE(MOZ_PHOENIX)
4573 AC_DEFINE(MOZ_XULRUNNER)
4581 MOZ_APP_NAME=mozilla
4582 MOZ_APP_DISPLAYNAME=Mozilla
4583 MOZ_APP_VERSION=$MOZILLA_VERSION
4588 if test -z "$MOZ_XUL_APP"; then
4589 AC_MSG_ERROR([builds with unsetting MOZ_XUL_APP in confvars.sh are not supported.])
4592 AC_SUBST(MOZ_BUILD_APP)
4593 AC_SUBST(MOZ_XUL_APP)
4594 AC_SUBST(MOZ_PHOENIX)
4595 AC_SUBST(MOZ_XULRUNNER)
4597 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4599 if test "$MOZ_XUL_APP"; then
4601 AC_DEFINE(MOZ_XUL_APP)
4604 dnl ========================================================
4606 dnl = Toolkit Options
4608 dnl ========================================================
4609 MOZ_ARG_HEADER(Toolkit Options)
4611 dnl ========================================================
4612 dnl = Select the default toolkit
4613 dnl ========================================================
4614 MOZ_ARG_ENABLE_STRING(default-toolkit,
4615 [ --enable-default-toolkit=TK
4616 Select default toolkit
4617 Platform specific defaults:
4619 Mac OS X - cairo-cocoa
4620 Neutrino/QNX - photon
4622 Win32 - cairo-windows
4624 Gtk2 with DirectFB - cairo-gtk2-dfb
4627 [ _DEFAULT_TOOLKIT=$enableval ],
4628 [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4630 if test "$_DEFAULT_TOOLKIT" = "photon" \
4631 -o "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4632 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4633 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-dfb" \
4634 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
4635 -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
4636 -o "$_DEFAULT_TOOLKIT" = "cairo-beos" \
4637 -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
4638 -o "$_DEFAULT_TOOLKIT" = "cairo-mac" \
4639 -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa"
4641 dnl nglayout only supports building with one toolkit,
4642 dnl so ignore everything after the first comma (",").
4643 MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4645 AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
4648 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_TOOLKIT,"$MOZ_WIDGET_TOOLKIT")
4650 dnl ========================================================
4651 dnl = Enable the toolkit as needed =
4652 dnl ========================================================
4654 case "$MOZ_WIDGET_TOOLKIT" in
4657 AC_DEFINE(MOZ_WIDGET_PHOTON)
4661 MOZ_WIDGET_TOOLKIT=windows
4662 MOZ_GFX_TOOLKIT=cairo
4665 cairo-gtk2|cairo-gtk2-x11)
4666 MOZ_WIDGET_TOOLKIT=gtk2
4667 MOZ_GFX_TOOLKIT=cairo
4669 MOZ_ENABLE_XREMOTE=1
4674 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4675 TK_LIBS='$(MOZ_GTK2_LIBS)'
4676 AC_DEFINE(MOZ_WIDGET_GTK2)
4680 MOZ_WIDGET_TOOLKIT=gtk2
4681 MOZ_GFX_TOOLKIT=cairo
4687 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4688 TK_LIBS='$(MOZ_GTK2_LIBS)'
4689 AC_DEFINE(MOZ_WIDGET_GTK2)
4690 if test "$no_x" != "yes"; then
4691 AC_MSG_WARN([Disabling X when DirectFB is specified.])
4697 MOZ_WIDGET_TOOLKIT=qt
4698 MOZ_GFX_TOOLKIT=cairo
4700 MOZ_ENABLE_XREMOTE=1
4706 TK_CFLAGS='$(MOZ_QT_CFLAGS)'
4707 TK_LIBS='$(MOZ_QT_LIBS)'
4708 AC_DEFINE(MOZ_WIDGET_QT)
4712 MOZ_WIDGET_TOOLKIT=beos
4713 MOZ_GFX_TOOLKIT=cairo
4714 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4715 TK_LIBS='$(MOZ_CAIRO_LIBS)'
4719 MOZ_WIDGET_TOOLKIT=os2
4720 MOZ_GFX_TOOLKIT=cairo
4721 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4722 TK_LIBS='$(MOZ_CAIRO_LIBS)'
4725 cairo-mac|cairo-cocoa)
4726 if test "$MOZ_WIDGET_TOOLKIT" = "cairo-cocoa"; then
4727 MOZ_WIDGET_TOOLKIT=cocoa
4728 AC_DEFINE(MOZ_WIDGET_COCOA)
4731 MOZ_WIDGET_TOOLKIT=mac
4733 MOZ_GFX_TOOLKIT=cairo
4734 MOZ_USER_DIR="Mozilla"
4735 AC_DEFINE(XP_MACOSX)
4736 AC_DEFINE(TARGET_CARBON)
4737 AC_DEFINE(TARGET_API_MAC_CARBON)
4738 TK_LIBS='-framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook'
4739 TK_CFLAGS="-I${MACOS_SDK_DIR}/Developer/Headers/FlatCarbon"
4740 CFLAGS="$CFLAGS $TK_CFLAGS"
4741 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4745 if test "$MOZ_ENABLE_XREMOTE"; then
4746 AC_DEFINE(MOZ_ENABLE_XREMOTE)
4749 if test "$COMPILE_ENVIRONMENT"; then
4750 if test "$MOZ_ENABLE_GTK2"; then
4751 if test "$MOZ_X11"; then
4752 GDK_PACKAGES=gdk-x11-2.0
4753 elif test "$MOZ_DFB"; then
4754 PKG_CHECK_MODULES(MOZ_DFB, directfb >= 1.1.0)
4755 GDK_PACKAGES=directfb
4758 PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4761 fi # COMPILE_ENVIRONMENT
4763 AC_SUBST(MOZ_DEFAULT_TOOLKIT)
4765 dnl ========================================================
4766 dnl = startup-notification support module
4767 dnl ========================================================
4769 if test "$MOZ_ENABLE_GTK2"
4771 MOZ_ENABLE_STARTUP_NOTIFICATION=
4773 MOZ_ARG_ENABLE_BOOL(startup-notification,
4774 [ --enable-startup-notification Enable startup-notification support (default: disabled) ],
4775 MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4776 MOZ_ENABLE_STARTUP_NOTIFICATION=)
4777 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4779 PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4780 libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4781 [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4782 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4784 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4786 MOZ_ENABLE_STARTUP_NOTIFICATION=
4790 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4791 AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4794 TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4796 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4797 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4798 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4800 dnl ========================================================
4802 dnl ========================================================
4803 if test "$MOZ_ENABLE_QT"
4805 PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtUiTools QtCore)
4806 AC_SUBST(MOZ_QT_CFLAGS)
4807 AC_SUBST(MOZ_QT_LIBS)
4809 MOZ_ARG_WITH_STRING(qtdir,
4810 [ --with-qtdir=\$dir Specify Qt directory ],
4813 if test -z "$QTDIR"; then
4816 QTINCDIR="/include/qt"
4817 if test ! -d "$QTDIR$QTINCDIR"; then
4818 QTINCDIR="/include/X11/qt"
4820 if test ! -d "$QTDIR$QTINCDIR"; then
4824 if test -x "$QTDIR/bin/moc-qt4"; then
4825 HOST_MOC="$QTDIR/bin/moc-qt4"
4827 if test -x "$QTDIR/bin/moc"; then
4828 HOST_MOC="$QTDIR/bin/moc"
4830 AC_CHECK_PROGS(HOST_MOC, moc, "")
4833 if test -z "$HOST_MOC"; then
4834 AC_MSG_ERROR([no acceptable moc preprocessor found])
4839 AC_SUBST(GTK_CONFIG)
4843 AC_SUBST(MOZ_ENABLE_GTK2)
4844 AC_SUBST(MOZ_ENABLE_PHOTON)
4845 AC_SUBST(MOZ_ENABLE_COCOA)
4846 AC_SUBST(MOZ_ENABLE_QT)
4847 AC_SUBST(MOZ_ENABLE_XREMOTE)
4848 AC_SUBST(MOZ_GTK2_CFLAGS)
4849 AC_SUBST(MOZ_GTK2_LIBS)
4850 AC_SUBST(MOZ_QT_CFLAGS)
4851 AC_SUBST(MOZ_QT_LIBS)
4858 dnl ========================================================
4860 dnl = Components & Features
4862 dnl ========================================================
4863 MOZ_ARG_HEADER(Components and Features)
4865 dnl ========================================================
4867 dnl ========================================================
4868 MOZ_ARG_ENABLE_STRING(ui-locale,
4869 [ --enable-ui-locale=ab-CD
4870 Select the user interface locale (default: en-US)],
4871 MOZ_UI_LOCALE=$enableval )
4872 AC_SUBST(MOZ_UI_LOCALE)
4874 dnl ========================================================
4875 dnl = Trademarked Branding
4876 dnl ========================================================
4877 MOZ_ARG_ENABLE_BOOL(official-branding,
4878 [ --enable-official-branding Enable Official mozilla.org Branding
4879 Do not distribute builds with
4880 --enable-official-branding unless you have
4881 permission to use trademarks per
4882 http://www.mozilla.org/foundation/trademarks/ .],
4883 [case "$MOZ_BUILD_APP" in
4885 MOZ_BRANDING_DIRECTORY=other-licenses/branding/firefox
4886 MOZ_APP_DISPLAYNAME=Firefox
4890 AC_MSG_ERROR([Official branding is only available for Firefox.])
4894 MOZ_ARG_WITH_STRING(branding,
4895 [ --with-branding=dir Use branding from the specified directory.],
4896 MOZ_BRANDING_DIRECTORY=$withval)
4898 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4899 if test -z "$REAL_BRANDING_DIRECTORY"; then
4900 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
4903 if test -f "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"; then
4904 . "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"
4907 AC_SUBST(MOZ_BRANDING_DIRECTORY)
4909 dnl ========================================================
4910 dnl = Distribution ID
4911 dnl ========================================================
4912 MOZ_ARG_WITH_STRING(distribution-id,
4913 [ --with-distribution-id=ID Set distribution-specific id (default=org.mozilla)],
4914 [ val=`echo $withval`
4915 MOZ_DISTRIBUTION_ID="$val"])
4917 if test -z "$MOZ_DISTRIBUTION_ID"; then
4918 MOZ_DISTRIBUTION_ID="org.mozilla"
4921 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
4922 AC_SUBST(MOZ_DISTRIBUTION_ID)
4925 dnl ========================================================
4926 dnl complex text support off by default
4927 dnl ========================================================
4929 MOZ_ARG_DISABLE_BOOL(pango,
4930 [ --disable-pango Disable usage of Pango ],
4935 dnl ========================================================
4937 dnl ========================================================
4938 if test "$MOZ_ENABLE_GTK2"
4942 PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
4944 if test "$MOZ_PANGO"
4946 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
4947 AC_SUBST(MOZ_PANGO_CFLAGS)
4948 AC_SUBST(MOZ_PANGO_LIBS)
4949 AC_DEFINE(MOZ_PANGO)
4951 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
4952 AC_SUBST(MOZ_PANGO_CFLAGS)
4953 AC_SUBST(MOZ_PANGO_LIBS)
4955 PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0 fontconfig)
4956 AC_SUBST(FT2_CFLAGS)
4961 dnl ========================================================
4962 dnl = PostScript print module
4963 dnl ========================================================
4964 MOZ_ARG_DISABLE_BOOL(postscript,
4965 [ --disable-postscript Disable PostScript printing support ],
4966 MOZ_ENABLE_POSTSCRIPT=,
4967 MOZ_ENABLE_POSTSCRIPT=1 )
4969 dnl ========================================================
4970 dnl = GnomeVFS support module
4971 dnl ========================================================
4975 dnl build the gnomevfs extension by default only when the
4976 dnl GTK2 toolkit is in use.
4977 if test "$MOZ_ENABLE_GTK2"
4979 MOZ_ENABLE_GNOMEVFS=1
4981 MOZ_ENABLE_LIBGNOME=1
4984 MOZ_ARG_DISABLE_BOOL(gnomevfs,
4985 [ --disable-gnomevfs Disable GnomeVFS support ],
4986 MOZ_ENABLE_GNOMEVFS=,
4987 MOZ_ENABLE_GNOMEVFS=force)
4989 if test "$MOZ_ENABLE_GNOMEVFS"
4991 PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
4992 MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
4993 MOZ_ENABLE_GNOMEVFS=1
4995 if test "$MOZ_ENABLE_GNOMEVFS" = "force"
4997 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
4999 MOZ_ENABLE_GNOMEVFS=
5003 AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
5004 AC_SUBST(MOZ_GNOMEVFS_LIBS)
5006 if test "$MOZ_ENABLE_GCONF"
5008 PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION,[
5009 MOZ_GCONF_LIBS=`echo $MOZ_GCONF_LIBS | sed 's/-llinc\>//'`
5016 if test "$MOZ_ENABLE_GCONF"; then
5017 AC_DEFINE(MOZ_ENABLE_GCONF)
5020 AC_SUBST(MOZ_ENABLE_GCONF)
5021 AC_SUBST(MOZ_GCONF_CFLAGS)
5022 AC_SUBST(MOZ_GCONF_LIBS)
5024 if test "$MOZ_ENABLE_LIBGNOME"
5026 PKG_CHECK_MODULES(MOZ_LIBGNOME, libgnome-2.0 >= $LIBGNOME_VERSION,[
5027 MOZ_LIBGNOME_LIBS=`echo $MOZ_LIBGNOME_LIBS | sed 's/-llinc\>//'`
5028 MOZ_ENABLE_LIBGNOME=1
5030 MOZ_ENABLE_LIBGNOME=
5034 AC_SUBST(MOZ_LIBGNOME_CFLAGS)
5035 AC_SUBST(MOZ_LIBGNOME_LIBS)
5037 # The GNOME component is built if gtk2, gconf, gnome-vfs, and libgnome
5038 # are all available.
5040 if test "$MOZ_ENABLE_GTK2" -a "$MOZ_ENABLE_GCONF" -a \
5041 "$MOZ_ENABLE_GNOMEVFS" -a "$MOZ_ENABLE_LIBGNOME"; then
5042 MOZ_ENABLE_GNOME_COMPONENT=1
5044 MOZ_ENABLE_GNOME_COMPONENT=
5047 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5050 dnl ========================================================
5051 dnl = libgnomeui support module
5052 dnl ========================================================
5054 if test "$MOZ_ENABLE_GTK2"
5056 MOZ_ENABLE_GNOMEUI=1
5058 MOZ_ARG_DISABLE_BOOL(gnomeui,
5059 [ --disable-gnomeui Disable libgnomeui support (default: auto, optional at runtime) ],
5060 MOZ_ENABLE_GNOMEUI=,
5061 MOZ_ENABLE_GNOMEUI=force)
5063 if test "$MOZ_ENABLE_GNOMEUI"
5065 PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5067 MOZ_GNOMEUI_LIBS=`echo $MOZ_GNOMEUI_LIBS | sed 's/-llinc\>//'`
5068 MOZ_ENABLE_GNOMEUI=1
5070 if test "$MOZ_ENABLE_GNOMEUI" = "force"
5072 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5078 if test "$MOZ_ENABLE_GNOMEUI"; then
5079 AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5082 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5083 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5084 AC_SUBST(MOZ_GNOMEUI_LIBS)
5086 dnl ========================================================
5088 dnl ========================================================
5090 if test "$MOZ_ENABLE_GTK2" || test "$MOZ_ENABLE_QT"
5094 MOZ_ARG_DISABLE_BOOL(dbus,
5095 [ --disable-dbus Disable dbus support ],
5099 if test "$MOZ_ENABLE_DBUS"
5101 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5102 AC_DEFINE(MOZ_ENABLE_DBUS)
5105 AC_SUBST(MOZ_ENABLE_DBUS)
5106 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5107 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5109 dnl ========================================================
5110 dnl = Build Personal Security Manager
5111 dnl ========================================================
5112 MOZ_ARG_DISABLE_BOOL(crypto,
5113 [ --disable-crypto Disable crypto support (Personal Security Manager)],
5117 dnl ========================================================
5118 dnl = JS Debugger XPCOM component (js/jsd)
5119 dnl ========================================================
5120 MOZ_ARG_DISABLE_BOOL(jsd,
5121 [ --disable-jsd Disable JavaScript debug library],
5126 dnl ========================================================
5127 dnl = Disable plugin support
5128 dnl ========================================================
5129 MOZ_ARG_DISABLE_BOOL(plugins,
5130 [ --disable-plugins Disable plugins support],
5134 dnl ========================================================
5135 dnl = Open JVM Interface (OJI) support
5136 dnl ========================================================
5137 MOZ_ARG_DISABLE_BOOL(oji,
5138 [ --disable-oji Disable Open JVM Integration support],
5141 if test -n "$MOZ_OJI"; then
5145 dnl bi-directional support always on
5149 dnl ========================================================
5150 dnl view source support on by default
5151 dnl ========================================================
5152 MOZ_ARG_DISABLE_BOOL(view-source,
5153 [ --disable-view-source Disable view source support],
5156 if test "$MOZ_VIEW_SOURCE"; then
5157 AC_DEFINE(MOZ_VIEW_SOURCE)
5161 dnl ========================================================
5162 dnl accessibility support on by default on all platforms
5164 dnl ========================================================
5165 MOZ_ARG_DISABLE_BOOL(accessibility,
5166 [ --disable-accessibility Disable accessibility support (off by default on OS X)],
5169 if test "$ACCESSIBILITY"; then
5170 AC_DEFINE(ACCESSIBILITY)
5173 if test -n "$ACCESSIBILITY" -a "$COMPILE_ENVIRONMENT" = "1"; then
5175 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5176 if test "$ac_cv_header_atlbase_h" = "no"; then
5177 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.])
5179 if test "$ac_cv_header_oleacc_idl" = "no"; then
5180 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.])
5186 dnl ========================================================
5187 dnl xpfe/components on by default
5188 dnl ========================================================
5189 MOZ_ARG_DISABLE_BOOL(xpfe-components,
5190 [ --disable-xpfe-components
5191 Disable xpfe components],
5192 MOZ_XPFE_COMPONENTS=,
5193 MOZ_XPFE_COMPONENTS=1 )
5195 dnl ========================================================
5196 dnl xpinstall support on by default
5197 dnl ========================================================
5198 MOZ_ARG_DISABLE_BOOL(xpinstall,
5199 [ --disable-xpinstall Disable xpinstall support],
5202 if test "$MOZ_XPINSTALL"; then
5203 AC_DEFINE(MOZ_XPINSTALL)
5206 dnl ========================================================
5207 dnl xpcom js loader support on by default
5208 dnl ========================================================
5209 MOZ_ARG_DISABLE_BOOL(jsloader,
5210 [ --disable-jsloader Disable xpcom js loader support],
5213 if test "$MOZ_JSLOADER"; then
5214 AC_DEFINE(MOZ_JSLOADER)
5217 dnl ========================================================
5218 dnl Disable printing
5219 dnl ========================================================
5220 MOZ_ARG_DISABLE_BOOL(printing,
5221 [ --disable-printing Disable printing support],
5225 if test "$NS_PRINTING"; then
5226 AC_DEFINE(NS_PRINTING)
5227 AC_DEFINE(NS_PRINT_PREVIEW)
5230 dnl ========================================================
5231 dnl use native unicode converters
5232 dnl ========================================================
5233 MOZ_ARG_ENABLE_BOOL(native-uconv,
5234 [ --enable-native-uconv Enable iconv support],
5235 MOZ_USE_NATIVE_UCONV=1,
5236 MOZ_USE_NATIVE_UCONV= )
5237 if test "$MOZ_USE_NATIVE_UCONV"; then
5238 AC_DEFINE(MOZ_USE_NATIVE_UCONV)
5240 if test "$OS_ARCH" != "WINCE" -a "$OS_ARCH" != "WINNT" -a "$MOZ_USE_NATIVE_UCONV" -a "$ac_cv_func_iconv" != "yes"; then
5241 AC_MSG_ERROR([iconv() not found. Cannot enable native uconv support.])
5245 dnl ========================================================
5246 dnl Libeditor can be build as plaintext-only,
5247 dnl or as a full html and text editing component.
5248 dnl We build both by default.
5249 dnl ========================================================
5250 MOZ_ARG_ENABLE_BOOL(plaintext-editor-only,
5251 [ --enable-plaintext-editor-only
5252 Allow only plaintext editing],
5253 MOZ_PLAINTEXT_EDITOR_ONLY=1,
5254 MOZ_PLAINTEXT_EDITOR_ONLY= )
5255 dnl Note the #define is MOZILLA, not MOZ, for compat with the Mac build.
5256 AC_SUBST(MOZ_PLAINTEXT_EDITOR_ONLY)
5258 dnl ========================================================
5259 dnl = Drop XPCOM Obsolete library
5260 dnl ========================================================
5261 MOZ_ARG_DISABLE_BOOL(xpcom-obsolete,
5262 [ --disable-xpcom-obsolete Disable XPCOM Obsolete Library],
5263 MOZ_NO_XPCOM_OBSOLETE=1,
5264 MOZ_NO_XPCOM_OBSOLETE=)
5266 if test -n "$MOZ_NO_XPCOM_OBSOLETE"; then
5267 AC_DEFINE(MOZ_NO_XPCOM_OBSOLETE)
5270 dnl ========================================================
5271 dnl = Disable Fast Load
5272 dnl ========================================================
5273 MOZ_ARG_DISABLE_BOOL(xpcom-fastload,
5274 [ --disable-xpcom-fastload Disable XPCOM fastload support],
5278 AC_SUBST(MOZ_NO_FAST_LOAD)
5280 if test -n "$MOZ_NO_FAST_LOAD"; then
5281 AC_DEFINE(MOZ_NO_FAST_LOAD)
5284 dnl ========================================================
5285 dnl = Disable Ogg Codecs
5286 dnl ========================================================
5287 MOZ_ARG_DISABLE_BOOL(ogg,
5288 [ --disable-ogg Disable Ogg Codec support],
5294 if test -n "$MOZ_OGG"; then
5300 dnl ========================================================
5301 dnl = Disable Wave decoder support
5302 dnl ========================================================
5303 MOZ_ARG_ENABLE_BOOL(wave,
5304 [ --disable-wave Disable Wave decoder support],
5310 if test -n "$MOZ_WAVE"; then
5316 dnl ========================================================
5317 dnl = Handle dependent SYDNEYAUDIO and MEDIA defines
5318 dnl ========================================================
5320 AC_SUBST(MOZ_SYDNEYAUDIO)
5322 if test -n "$MOZ_SYDNEYAUDIO"; then
5323 AC_DEFINE(MOZ_SYDNEYAUDIO)
5328 if test -n "$MOZ_MEDIA"; then
5329 AC_DEFINE(MOZ_MEDIA)
5332 dnl ========================================================
5333 dnl = Check alsa availability on Linux if using sydneyaudio
5334 dnl ========================================================
5336 dnl If using sydneyaudio with Linux, ensure that the alsa library is available
5337 if test "$COMPILE_ENVIRONMENT"; then
5338 if test -n "$MOZ_SYDNEYAUDIO"; then
5339 case "$target_os" in
5341 AC_CHECK_LIB(asound, snd_pcm_open,,AC_MSG_ERROR([Ogg support on Linux requires the alsa library]))
5347 dnl ========================================================
5348 dnl Permissions System
5349 dnl ========================================================
5350 MOZ_ARG_DISABLE_BOOL(permissions,
5351 [ --disable-permissions Disable permissions (popup and cookie blocking)],
5356 dnl ========================================================
5358 dnl ========================================================
5359 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5360 [ --disable-negotiateauth Disable GSS-API negotiation ],
5361 MOZ_AUTH_EXTENSION=,
5362 MOZ_AUTH_EXTENSION=1 )
5364 dnl ========================================================
5366 dnl ========================================================
5367 MOZ_ARG_DISABLE_BOOL(xtf,
5368 [ --disable-xtf Disable XTF (pluggable xml tags) support],
5371 if test "$MOZ_XTF"; then
5375 dnl ========================================================
5377 dnl ========================================================
5378 MOZ_ARG_DISABLE_BOOL(inspector-apis,
5379 [ --disable-inspector-apis Disable the DOM inspection APIs ],
5380 MOZ_NO_INSPECTOR_APIS=1,
5381 MOZ_NO_INSPECTOR_APIS= )
5383 dnl ========================================================
5384 dnl Pref extensions (autoconfig and system-pref)
5385 dnl ========================================================
5386 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5387 [ --disable-pref-extensions
5388 Disable pref extensions such as autoconfig and
5390 MOZ_PREF_EXTENSIONS=,
5391 MOZ_PREF_EXTENSIONS=1 )
5393 dnl ========================================================
5394 dnl = Universalchardet
5395 dnl ========================================================
5396 MOZ_ARG_DISABLE_BOOL(universalchardet,
5397 [ --disable-universalchardet
5398 Disable universal encoding detection],
5399 MOZ_UNIVERSALCHARDET=,
5400 MOZ_UNIVERSALCHARDET=1 )
5402 dnl ========================================================
5404 dnl ========================================================
5405 MOZ_ARG_ENABLE_BOOL(javaxpcom,
5406 [ --enable-javaxpcom
5407 Enable Java-XPCOM bridge],
5411 if test -n "${MOZ_JAVAXPCOM}"; then
5414 if test -n "$JAVA_HOME"; then
5415 JAVA_HOME=`cygpath -u \`cygpath -m -s "$JAVA_HOME"\``
5419 if test -n "$JAVA_HOME"; then
5420 JAVA_HOME=`cd "$JAVA_HOME" && pwd`
5425 if test -n "${JAVA_INCLUDE_PATH}"; then
5426 dnl Make sure jni.h exists in the given include path.
5427 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5428 AC_MSG_ERROR([jni.h was not found in given include path $JAVA_INCLUDE_PATH.])
5431 case "$target_os" in
5433 dnl Default to java system location
5434 JAVA_INCLUDE_PATH=/System/Library/Frameworks/JavaVM.framework/Headers
5438 JAVA_INCLUDE_PATH="$JAVA_HOME/include"
5441 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5442 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.])
5446 if test -n "${JAVA_BIN_PATH}"; then
5447 dnl Look for javac and jar in the specified path.
5448 JAVA_PATH="$JAVA_BIN_PATH"
5450 dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5451 JAVA_PATH="$JAVA_HOME/bin:$PATH"
5454 AC_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5455 AC_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5456 AC_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5457 if test -z "$JAVA" || test "$JAVA" = ":" || test -z "$JAVAC" || test "$JAVAC" = ":" || test -z "$JAR" || test "$JAR" = ":"; then
5458 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.])
5462 dnl ========================================================
5463 dnl = Breakpad crash reporting (on by default on supported platforms)
5464 dnl ========================================================
5466 if (test "$OS_ARCH" = "WINNT" -a -z "$GNU_CC" \
5467 || test "$OS_ARCH" = "Darwin" \
5468 || test "$OS_ARCH" = "Linux" -a "$CPU_ARCH" = "x86" \
5469 || test "$OS_ARCH" = "SunOS") \
5470 && test -z "$HAVE_64BIT_OS"; then
5474 MOZ_ARG_DISABLE_BOOL(crashreporter,
5475 [ --disable-crashreporter Disable breakpad crash reporting],
5477 MOZ_CRASHREPORTER=1)
5479 if test -n "$MOZ_CRASHREPORTER"; then
5480 AC_DEFINE(MOZ_CRASHREPORTER)
5482 if (test "$OS_ARCH" = "Linux" || test "$OS_ARCH" = "SunOS") && \
5483 test -z "$SKIP_LIBRARY_CHECKS"; then
5484 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
5485 AC_SUBST(MOZ_GTHREAD_CFLAGS)
5486 AC_SUBST(MOZ_GTHREAD_LIBS)
5488 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.])])
5492 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
5493 [ --with-crashreporter-enable-percent=NN Enable sending crash reports by default on NN% of users. (default=100)],
5494 [ val=`echo $withval | sed 's/[^0-9]//g'`
5495 MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
5497 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
5498 MOZ_CRASHREPORTER_ENABLE_PERCENT=100
5500 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
5502 dnl ========================================================
5503 dnl = Enable compilation of specific extension modules
5504 dnl ========================================================
5506 MOZ_ARG_ENABLE_STRING(extensions,
5507 [ --enable-extensions Enable extensions],
5508 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5509 if test "$option" = "yes" || test "$option" = "all"; then
5510 AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
5511 elif test "$option" = "no" || test "$option" = "none"; then
5513 elif test "$option" = "default"; then
5514 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
5515 elif test `echo "$option" | grep -c \^-` != 0; then
5516 option=`echo $option | sed 's/^-//'`
5517 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
5519 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
5522 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
5524 if test -z "$MOZ_ENABLE_GNOMEVFS" && test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
5525 # Suppress warning on non-X11 platforms
5526 if test -n "$MOZ_X11"; then
5527 AC_MSG_WARN([Cannot build gnomevfs without required libraries. Removing gnomevfs from MOZ_EXTENSIONS.])
5529 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
5532 if test -z "$MOZ_JSDEBUGGER" && test `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
5533 AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
5534 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
5537 dnl This might be temporary: build tridentprofile only on Windows
5538 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0 && test "$OS_ARCH" != "WINNT"; then
5539 AC_MSG_WARN([tridentprofile extension works only on Windows at this time. Removing tridentprofile from MOZ_EXTENSIONS.])
5540 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5543 dnl cookie must be built before tridentprofile. put it at list's end.
5544 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0; then
5545 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5546 MOZ_EXTENSIONS="$MOZ_EXTENSIONS tridentprofile"
5549 dnl xforms requires xtf and schema-validation
5550 if test -z "$MOZ_XTF" && test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
5551 AC_MSG_WARN([Cannot build XForms without XTF support. Removing XForms from MOZ_EXTENSIONS.])
5552 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5554 if test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0 && test `echo "$MOZ_EXTENSIONS" | grep -c schema-validation` -eq 0; then
5555 AC_MSG_WARN([Cannot build XForms without schema validation. Removing XForms from MOZ_EXTENSIONS.])
5556 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5559 if test `echo "$MOZ_EXTENSIONS" | grep -c auth` -ne 0; then
5560 AC_MSG_WARN([auth is no longer an extension, use --disable-negotiateauth to disable.])
5561 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|auth||g'`
5564 if test `echo "$MOZ_EXTENSIONS" | grep -c 'cookie\|permissions'` -ne 0; then
5565 AC_MSG_WARN([cookie and permissions are no longer extensions, use --disable-permissions to disable.])
5566 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|cookie||g; s|permissions||g'`
5569 if test `echo "$MOZ_EXTENSIONS" | grep -c pref` -ne 0; then
5570 AC_MSG_WARN([pref is no longer an extension, use --disable-pref-extensions to disable.])
5571 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|pref||g'`
5574 if test `echo "$MOZ_EXTENSIONS" | grep -c universalchardet` -ne 0; then
5575 AC_MSG_WARN([universalchardet is no longer an extension, use --disable-universalchardet to disable.])
5576 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|universalchardet||g'`
5579 if test `echo "$MOZ_EXTENSIONS" | grep -c java` -ne 0; then
5580 AC_MSG_WARN([java is no longer an extension, use --enable-javaxpcom to enable.])
5581 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|java||g'`
5584 if test `echo "$MOZ_EXTENSIONS" | grep -c spellcheck` -ne 0; then
5585 AC_MSG_WARN([spellcheck is no longer an extension.])
5586 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|spellcheck||g'`
5589 if test -n "$MOZ_NO_XPCOM_OBSOLETE" && test `echo "$MOZ_EXTENSIONS" | grep -c sroaming` -ne 0; then
5590 AC_MSG_WARN([Cannot currently build sroaming without xpcom obsolete -- bug 249343. Removing sroaming from MOZ_EXTENSIONS.])
5591 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|sroaming||'`
5595 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
5597 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
5598 dnl when trying to build a non-existent extension.
5599 for extension in $MOZ_EXTENSIONS; do
5600 if test ! -d "${srcdir}/extensions/${extension}"; then
5601 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
5606 dnl ========================================================
5608 dnl ========================================================
5609 case "$MOZ_WIDGET_TOOLKIT" in
5610 beos|windows|os2|mac|cocoa)
5613 if test -z "$MOZ_ENABLE_GTK2" && test -z "$MOZ_ENABLE_QT"; then
5614 MOZ_IMG_DECODERS_DEFAULT=`echo $MOZ_IMG_DECODERS_DEFAULT | sed -e 's|icon||'`
5619 MOZ_ARG_ENABLE_STRING(image-decoders,
5620 [ --enable-image-decoders[={mod1,mod2,default,all,none}]
5621 Enable specific image decoders],
5622 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5623 if test "$option" = "yes" || test "$option" = "all"; then
5624 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5625 elif test "$option" = "no" || test "$option" = "none"; then
5627 elif test "$option" = "default"; then
5628 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5629 elif test `echo "$option" | grep -c \^-` != 0; then
5630 option=`echo $option | sed 's/^-//'`
5631 MOZ_IMG_DECODERS=`echo "$MOZ_IMG_DECODERS" | sed "s/ ${option}//"`
5633 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $option"
5636 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS_DEFAULT")
5638 dnl Dupes are removed in the encoder section because it will also add decoders
5640 dnl ========================================================
5642 dnl ========================================================
5643 MOZ_ARG_ENABLE_STRING(image-encoders,
5644 [ --enable-image-encoders[={mod1,mod2,default,all,none}]
5645 Enable specific image encoders],
5646 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5647 if test "$option" = "yes" || test "$option" = "all"; then
5648 addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5649 elif test "$option" = "no" || test "$option" = "none"; then
5652 elif test "$option" = "default"; then
5653 addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5654 elif test `echo "$option" | grep -c \^-` != 0; then
5655 option=`echo $option | sed 's/^-//'`
5656 addencoder=`echo "$MOZ_IMG_ENCODERS" | sed "s/ ${option}//"`
5658 addencoder="$option"
5660 MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS $addencoder"
5662 MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS_DEFAULT")
5665 MOZ_IMG_DECODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_DECODERS}`
5666 MOZ_IMG_ENCODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_ENCODERS}`
5668 dnl ========================================================
5669 dnl MathML on by default
5670 dnl ========================================================
5671 MOZ_ARG_DISABLE_BOOL(mathml,
5672 [ --disable-mathml Disable MathML support],
5675 if test "$MOZ_MATHML"; then
5676 AC_DEFINE(MOZ_MATHML)
5679 dnl ========================================================
5681 dnl ========================================================
5682 MOZ_ARG_DISABLE_BOOL(canvas,
5683 [ --disable-canvas Disable html:canvas feature],
5685 MOZ_ENABLE_CANVAS=1 )
5686 if test -n "$MOZ_ENABLE_CANVAS"; then
5687 AC_DEFINE(MOZ_ENABLE_CANVAS)
5689 AC_SUBST(MOZ_ENABLE_CANVAS)
5691 dnl ========================================================
5693 dnl ========================================================
5694 MOZ_ARG_DISABLE_BOOL(svg,
5695 [ --disable-svg Disable SVG support],
5698 if test -n "$MOZ_SVG"; then
5702 dnl ========================================================
5704 dnl ========================================================
5705 case "$target_os" in
5706 aix*|solaris*|linux*|msvc*|mks*|cygwin*|mingw*|os2*|wince*)
5711 MOZ_ARG_DISABLE_BOOL(installer,
5712 [ --disable-installer Disable building of installer],
5715 if test -n "$MOZ_INSTALLER" -a -n "$MOZ_XUL_APP" -a "$OS_ARCH" = "WINNT"; then
5716 # Disable installer for Windows builds that use the new toolkit if NSIS
5717 # isn't in the path.
5718 AC_PATH_PROGS(MAKENSIS, makensis)
5719 if test -z "$MAKENSIS" || test "$MAKENSIS" = ":"; then
5720 AC_MSG_ERROR([To build the installer makensis is required in your path. To build without the installer reconfigure using --disable-installer.])
5722 # The Windows build for NSIS requires the iconv command line utility to
5723 # convert the charset of the locale files.
5724 AC_PATH_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5725 if test -z "$HOST_ICONV"; then
5726 AC_MSG_ERROR([To build the installer iconv is required in your path. To build without the installer reconfigure using --disable-installer.])
5730 # Automatically disable installer if xpinstall isn't built
5731 if test -z "$MOZ_XPINSTALL"; then
5734 AC_SUBST(MOZ_INSTALLER)
5736 AC_MSG_CHECKING([for tar archiver])
5737 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
5738 if test -z "$TAR"; then
5739 AC_MSG_ERROR([no tar archiver found in \$PATH])
5741 AC_MSG_RESULT([$TAR])
5744 AC_MSG_CHECKING([for wget])
5745 AC_CHECK_PROGS(WGET, wget, "")
5746 AC_MSG_RESULT([$WGET])
5749 dnl ========================================================
5751 dnl ========================================================
5753 MOZ_ARG_DISABLE_BOOL(updater,
5754 [ --disable-updater Disable building of updater],
5757 # The Windows build requires the iconv command line utility
5758 # in order to build the updater.
5759 case "$target_os" in
5760 msvc*|mks*|cygwin*|mingw*|wince*)
5761 if test -n "$MOZ_UPDATER"; then
5762 AC_MSG_CHECKING([for iconv])
5763 AC_CHECK_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5764 if test -z "$HOST_ICONV"; then
5765 AC_MSG_ERROR([iconv not found in \$PATH])
5770 AC_SUBST(MOZ_UPDATER)
5772 # app update channel is 'default' when not supplied.
5773 MOZ_ARG_ENABLE_STRING([update-channel],
5774 [ --enable-update-channel=CHANNEL
5775 Select application update channel (default=default)],
5776 MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
5778 if test -z "$MOZ_UPDATE_CHANNEL"; then
5779 MOZ_UPDATE_CHANNEL=default
5781 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
5783 # tools/update-packaging is not checked out by default.
5784 MOZ_ARG_ENABLE_BOOL(update-packaging,
5785 [ --enable-update-packaging
5786 Enable tools/update-packaging],
5787 MOZ_UPDATE_PACKAGING=1,
5788 MOZ_UPDATE_PACKAGING= )
5789 AC_SUBST(MOZ_UPDATE_PACKAGING)
5791 dnl ========================================================
5793 dnl ========================================================
5795 MOZ_ARG_DISABLE_BOOL(xpconnect-idispatch,
5796 [ --disable-xpconnect-idispatch
5797 Disable building of xpconnect support for IDispatch
5799 XPC_IDISPATCH_SUPPORT=,
5800 XPC_IDISPATCH_SUPPORT=1)
5801 AC_SUBST(XPC_IDISPATCH_SUPPORT)
5803 MOZ_ARG_DISABLE_BOOL(activex,
5804 [ --disable-activex Disable building of ActiveX control (win32 only)],
5805 MOZ_NO_ACTIVEX_SUPPORT=1,
5806 MOZ_NO_ACTIVEX_SUPPORT= )
5807 AC_SUBST(MOZ_NO_ACTIVEX_SUPPORT)
5809 MOZ_ARG_DISABLE_BOOL(activex-scripting,
5810 [ --disable-activex-scripting
5811 Disable building of ActiveX scripting support (win32)],
5812 MOZ_ACTIVEX_SCRIPTING_SUPPORT=,
5813 MOZ_ACTIVEX_SCRIPTING_SUPPORT=1)
5814 AC_SUBST(MOZ_ACTIVEX_SCRIPTING_SUPPORT)
5816 if test -n "$MOZ_NO_ACTIVEX_SUPPORT" -a -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT";
5818 AC_MSG_ERROR([Cannot enable ActiveX scripting support when ActiveX support is disabled.])
5821 if test "$COMPILE_ENVIRONMENT" = "1"; then
5822 if test -n "$XPC_IDISPATCH_SUPPORT" -o -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
5824 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5825 if test "$ac_cv_header_atlbase_h" = "no"; then
5826 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.])
5833 dnl ========================================================
5835 dnl ========================================================
5836 MOZ_ARG_ENABLE_BOOL(leaky,
5837 [ --enable-leaky Build leaky memory tool],
5842 dnl ========================================================
5844 dnl ========================================================
5845 MOZ_ARG_ENABLE_BOOL(xpctools,
5846 [ --enable-xpctools Build JS profiling tool],
5851 dnl ========================================================
5852 dnl build the tests by default
5853 dnl ========================================================
5854 MOZ_ARG_DISABLE_BOOL(tests,
5855 [ --disable-tests Do not build test libraries & programs],
5859 dnl ========================================================
5860 dnl parental controls (for Windows Vista)
5861 dnl ========================================================
5862 MOZ_ARG_DISABLE_BOOL(parental-controls,
5863 [ --disable-parental-controls
5864 Do not build parental controls],
5865 MOZ_DISABLE_PARENTAL_CONTROLS=1,
5866 MOZ_DISABLE_PARENTAL_CONTROLS=)
5867 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5868 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5871 dnl ========================================================
5872 dnl Vista SDK specific api
5873 dnl ========================================================
5874 MOZ_ARG_DISABLE_BOOL(vista-sdk-requirements,
5875 [ --disable-vista-sdk-requirements
5876 Do not build Vista SDK specific code],
5877 MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=1,
5878 MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=)
5879 if test -n "$COMPILE_ENVIRONMENT"; then
5880 if test -n "$MOZ_DISABLE_VISTA_SDK_REQUIREMENTS"; then
5881 AC_MSG_WARN([Resulting builds will not be compatible with Windows Vista. (bug 428970)])
5882 AC_DEFINE(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
5883 if test -z "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5884 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5886 MOZ_DISABLE_PARENTAL_CONTROLS=1
5889 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5890 if test "$ac_cv_header_wpcapi_h" = "no"; then
5891 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.])
5897 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
5898 AC_SUBST(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
5900 dnl ========================================================
5902 dnl = Module specific options
5904 dnl ========================================================
5905 MOZ_ARG_HEADER(Individual module options)
5907 dnl ========================================================
5908 dnl = Enable Lea malloc in xpcom. OFF by default.
5909 dnl ========================================================
5910 MOZ_ARG_ENABLE_BOOL(xpcom-lea,
5911 [ --enable-xpcom-lea Use Lea malloc in xpcom ],
5914 if test -n "$XPCOM_USE_LEA"; then
5915 AC_DEFINE(XPCOM_USE_LEA)
5918 dnl ========================================================
5919 dnl = Enable places (new history/bookmarks)
5920 dnl ========================================================
5921 MOZ_ARG_ENABLE_BOOL(places,
5922 [ --enable-places Enable 'places' bookmark/history implementation],
5925 if test -n "$MOZ_PLACES"; then
5926 AC_DEFINE(MOZ_PLACES)
5927 if test -z "$MOZ_MAIL_NEWS"; then
5932 if test "$MOZ_BUILD_APP" = "browser"; then
5933 AC_MSG_ERROR([Cannot build Firefox with --disable-places.])
5937 dnl ========================================================
5938 dnl = Disable feed handling components
5939 dnl ========================================================
5940 MOZ_ARG_DISABLE_BOOL(feeds,
5941 [ --disable-feeds Disable feed handling and processing components],
5944 if test -n "$MOZ_FEEDS"; then
5945 AC_DEFINE(MOZ_FEEDS)
5947 if test "$MOZ_BUILD_APP" = "browser"; then
5948 AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
5952 dnl ========================================================
5953 dnl = Enable mozStorage
5954 dnl ========================================================
5955 dnl Implicitly enabled by default if building calendar or places
5956 MOZ_ARG_ENABLE_BOOL(storage,
5957 [ --enable-storage Enable mozStorage module and related components],
5960 if test -n "$MOZ_STORAGE"; then
5961 AC_DEFINE(MOZ_STORAGE)
5964 dnl ========================================================
5965 dnl Check for sqlite
5966 dnl ========================================================
5969 MOZ_ARG_ENABLE_BOOL(system-sqlite,
5970 [ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
5971 MOZ_NATIVE_SQLITE=1,
5972 MOZ_NATIVE_SQLITE= )
5974 if test -z "$MOZ_NATIVE_SQLITE"
5977 SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,sqlite3,$(DIST)/lib)'
5979 PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
5982 AC_SUBST(MOZ_NATIVE_SQLITE)
5984 dnl ========================================================
5985 dnl = Enable help viewer (off by default)
5986 dnl ========================================================
5987 MOZ_ARG_ENABLE_BOOL(help-viewer,
5988 [ --enable-help-viewer Enable help viewer],
5991 if test -n "$MOZ_HELP_VIEWER"; then
5992 AC_DEFINE(MOZ_HELP_VIEWER)
5994 AC_SUBST(MOZ_HELP_VIEWER)
5995 if test "$MOZ_BUILD_APP" = "browser" -a -n "$MOZ_HELP_VIEWER"; then
5996 AC_MSG_ERROR([Cannot build Firefox with --enable-help-viewer.])
5999 dnl ========================================================
6000 dnl = Enable safe browsing (anti-phishing)
6001 dnl ========================================================
6002 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6003 [ --enable-safe-browsing Enable safe browsing (anti-phishing) implementation],
6004 MOZ_SAFE_BROWSING=1,
6005 MOZ_SAFE_BROWSING= )
6006 if test -n "$MOZ_SAFE_BROWSING"; then
6007 AC_DEFINE(MOZ_SAFE_BROWSING)
6009 AC_SUBST(MOZ_SAFE_BROWSING)
6011 dnl ========================================================
6012 dnl = Enable url-classifier
6013 dnl ========================================================
6014 dnl Implicitly enabled by default if building with safe-browsing
6015 if test -n "$MOZ_SAFE_BROWSING"; then
6016 MOZ_URL_CLASSIFIER=1
6018 MOZ_ARG_ENABLE_BOOL(url-classifier,
6019 [ --enable-url-classifier Enable url classifier module],
6020 MOZ_URL_CLASSIFIER=1,
6021 MOZ_URL_CLASSIFIER= )
6022 if test -n "$MOZ_URL_CLASSIFIER"; then
6023 AC_DEFINE(MOZ_URL_CLASSIFIER)
6025 AC_SUBST(MOZ_URL_CLASSIFIER)
6027 dnl ========================================================
6028 dnl = Disable zipwriter
6029 dnl ========================================================
6030 MOZ_ARG_DISABLE_BOOL(zipwriter,
6031 [ --disable-zipwriter Disable zipwriter component],
6034 AC_SUBST(MOZ_ZIPWRITER)
6036 dnl ========================================================
6037 dnl = Enable Ultrasparc specific optimizations for JS
6038 dnl ========================================================
6039 MOZ_ARG_ENABLE_BOOL(js-ultrasparc,
6040 [ --enable-js-ultrasparc Use UltraSPARC optimizations in JS],
6041 JS_ULTRASPARC_OPTS=1,
6042 JS_ULTRASPARC_OPTS= )
6044 dnl only enable option for ultrasparcs
6045 if test `echo "$target_os" | grep -c \^solaris 2>/dev/null` = 0 -o \
6046 "$OS_TEST" != "sun4u"; then
6049 AC_SUBST(JS_ULTRASPARC_OPTS)
6051 dnl ========================================================
6052 dnl = Hildon and OSSO checks
6053 dnl ========================================================
6054 PKG_CHECK_MODULES(LIBHILDONMIME,libhildonmime,
6055 MOZ_PLATFORM_HILDON=1,
6056 MOZ_PLATFORM_HILDON=)
6057 if test $MOZ_PLATFORM_HILDON; then
6058 AC_DEFINE(MOZ_PLATFORM_HILDON)
6060 AC_SUBST(LIBHILDONMIME_CFLAGS)
6061 AC_SUBST(LIBHILDONMIME_LIBS)
6063 PKG_CHECK_MODULES(LIBOSSO,libosso,
6067 if test $NS_OSSO; then
6068 if test -z "$MOZ_ENABLE_DBUS"; then
6069 AC_MSG_ERROR([DBus is required when building for OSSO])
6072 dnl XXX this should go somewhere else; it's not just for OSSO
6073 AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
6075 AC_SUBST(LIBOSSO_CFLAGS)
6076 AC_SUBST(LIBOSSO_LIBS)
6078 PKG_CHECK_MODULES(MOZ_LOCATION, [liblocation gpsbt],
6079 NS_MAEMO_LOCATION=1,
6082 if test $NS_MAEMO_LOCATION; then
6083 AC_DEFINE(NS_MAEMO_LOCATION)
6086 AC_SUBST(MOZ_LOCATION_CFLAGS)
6087 AC_SUBST(MOZ_LOCATION_LIBS)
6089 dnl ========================================================
6091 dnl = Feature options that require extra sources to be pulled
6093 dnl ========================================================
6094 dnl MOZ_ARG_HEADER(Features that require extra sources)
6096 dnl ========================================================
6098 dnl = Debugging Options
6100 dnl ========================================================
6101 MOZ_ARG_HEADER(Debugging and Optimizations)
6103 dnl ========================================================
6104 dnl = Disable building with debug info.
6105 dnl = Debugging is OFF by default
6106 dnl ========================================================
6107 if test -z "$MOZ_DEBUG_FLAGS"
6111 if test "$GNU_CC"; then
6112 GCC_VERSION=`$CC -v 2>&1 | awk '/version/ { print $3 }'`
6113 case "$GCC_VERSION" in
6118 MOZ_DEBUG_FLAGS="-g"
6122 MOZ_DEBUG_FLAGS="-g"
6126 MOZ_DEBUG_FLAGS="-g"
6131 MOZ_ARG_ENABLE_STRING(debug,
6132 [ --enable-debug[=DBG] Enable building with developer debug info
6133 (Using compiler flags DBG)],
6134 [ if test "$enableval" != "no"; then
6136 if test -n "$enableval" && test "$enableval" != "yes"; then
6137 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6144 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG"
6145 case "${target_os}" in
6147 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${USER}"
6149 msvc*|mks*|cygwin*|mingw*|os2*|wince*)
6150 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
6153 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`$WHOAMI`"
6156 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DTRACING"
6158 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
6160 if test -n "$MOZ_DEBUG"; then
6161 AC_MSG_CHECKING([for valid debug flags])
6162 _SAVE_CFLAGS=$CFLAGS
6163 CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
6164 AC_TRY_COMPILE([#include <stdio.h>],
6165 [printf("Hello World\n");],
6168 AC_MSG_RESULT([$_results])
6169 if test "$_results" = "no"; then
6170 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
6172 CFLAGS=$_SAVE_CFLAGS
6175 dnl ========================================================
6176 dnl = Enable code optimization. ON by default.
6177 dnl ========================================================
6178 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6179 MOZ_OPTIMIZE_FLAGS="-O"
6182 MOZ_ARG_ENABLE_STRING(optimize,
6183 [ --disable-optimize Disable compiler optimization
6184 --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6185 [ if test "$enableval" != "no"; then
6187 if test -n "$enableval" && test "$enableval" != "yes"; then
6188 MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6193 fi ], MOZ_OPTIMIZE=1)
6195 if test "$COMPILE_ENVIRONMENT"; then
6196 if test -n "$MOZ_OPTIMIZE"; then
6197 AC_MSG_CHECKING([for valid optimization flags])
6198 _SAVE_CFLAGS=$CFLAGS
6199 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6200 AC_TRY_COMPILE([#include <stdio.h>],
6201 [printf("Hello World\n");],
6204 AC_MSG_RESULT([$_results])
6205 if test "$_results" = "no"; then
6206 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6208 CFLAGS=$_SAVE_CFLAGS
6210 fi # COMPILE_ENVIRONMENT
6212 AC_SUBST(MOZ_OPTIMIZE)
6213 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6214 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6215 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6217 dnl ========================================================
6218 dnl = Enable/disable debug for specific modules only
6219 dnl = module names beginning with ^ will be disabled
6220 dnl ========================================================
6221 MOZ_ARG_ENABLE_STRING(debug-modules,
6222 [ --enable-debug-modules Enable/disable debug info for specific modules],
6223 [ MOZ_DEBUG_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6225 dnl ========================================================
6226 dnl = Enable/disable generation of debugger info for specific modules only
6227 dnl = the special module name ALL_MODULES can be used to denote all modules
6228 dnl = module names beginning with ^ will be disabled
6229 dnl ========================================================
6230 MOZ_ARG_ENABLE_STRING(debugger-info-modules,
6231 [ --enable-debugger-info-modules
6232 Enable/disable debugger info for specific modules],
6233 [ for i in `echo $enableval | sed 's/,/ /g'`; do
6234 dnl note that the list of module names is reversed as it is copied
6235 dnl this is important, as it will allow config.mk to interpret stuff like
6236 dnl "^ALL_MODULES xpcom" properly
6237 if test "$i" = "no"; then
6240 if test "$i" = "yes"; then
6243 MOZ_DBGRINFO_MODULES="$i $MOZ_DBGRINFO_MODULES";
6246 dnl ========================================================
6247 dnl Enable garbage collector
6248 dnl ========================================================
6249 MOZ_ARG_ENABLE_BOOL(boehm,
6250 [ --enable-boehm Enable the Boehm Garbage Collector],
6253 if test -n "$GC_LEAK_DETECTOR"; then
6254 AC_DEFINE(GC_LEAK_DETECTOR)
6257 dnl ========================================================
6258 dnl Disable runtime logging checks
6259 dnl ========================================================
6260 MOZ_ARG_DISABLE_BOOL(logging,
6261 [ --disable-logging Disable logging facilities],
6262 NS_DISABLE_LOGGING=1,
6263 NS_DISABLE_LOGGING= )
6264 if test "$NS_DISABLE_LOGGING"; then
6265 AC_DEFINE(NS_DISABLE_LOGGING)
6267 AC_DEFINE(MOZ_LOGGING)
6270 dnl ========================================================
6271 dnl = dnl This will enable logging of addref, release, ctor, dtor.
6272 dnl ========================================================
6273 _ENABLE_LOGREFCNT=42
6274 MOZ_ARG_ENABLE_BOOL(logrefcnt,
6275 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
6276 _ENABLE_LOGREFCNT=1,
6277 _ENABLE_LOGREFCNT= )
6278 if test "$_ENABLE_LOGREFCNT" = "1"; then
6279 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
6280 elif test -z "$_ENABLE_LOGREFCNT"; then
6281 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
6284 dnl ========================================================
6285 dnl = Enable trace malloc
6286 dnl ========================================================
6287 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
6288 MOZ_ARG_ENABLE_BOOL(trace-malloc,
6289 [ --enable-trace-malloc Enable malloc tracing],
6292 if test "$NS_TRACE_MALLOC"; then
6293 # Please, Mr. Linker Man, don't take away our symbol names
6294 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6296 AC_DEFINE(NS_TRACE_MALLOC)
6298 AC_SUBST(NS_TRACE_MALLOC)
6300 dnl ========================================================
6301 dnl = Enable jemalloc
6302 dnl ========================================================
6303 MOZ_ARG_ENABLE_BOOL(jemalloc,
6304 [ --enable-jemalloc Replace memory allocator with jemalloc],
6308 if test "$NS_TRACE_MALLOC"; then
6312 if test "$MOZ_MEMORY"; then
6314 dnl Don't try to run compiler tests on Windows
6315 if test "$OS_ARCH" = "WINNT"; then
6316 if test -z "$HAVE_64BIT_OS"; then
6317 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6319 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6322 AC_CHECK_SIZEOF([int *], [4])
6323 case "${ac_cv_sizeof_int_p}" in
6325 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6328 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6331 AC_MSG_ERROR([Unexpected pointer size])
6336 AC_DEFINE(MOZ_MEMORY)
6337 if test "x$MOZ_DEBUG" = "x1"; then
6338 AC_DEFINE(MOZ_MEMORY_DEBUG)
6340 dnl The generic feature tests that determine how to compute ncpus are long and
6341 dnl complicated. Therefore, simply define special cpp variables for the
6342 dnl platforms we have special knowledge of.
6343 case "${target_os}" in
6345 AC_DEFINE(MOZ_MEMORY_DARWIN)
6348 AC_DEFINE(MOZ_MEMORY_BSD)
6351 AC_DEFINE(MOZ_MEMORY_LINUX)
6354 AC_DEFINE(MOZ_MEMORY_BSD)
6357 AC_DEFINE(MOZ_MEMORY_SOLARIS)
6359 msvc*|mks*|cygwin*|mingw*)
6360 AC_DEFINE(MOZ_MEMORY_WINDOWS)
6361 dnl XXX: should test for vc8sp1 here, otherwise patching the crt src
6362 dnl will fail miserably
6363 if test "$_CC_SUITE" -lt "8"; then
6364 AC_MSG_ERROR([Building jemalloc requires Visual C++ 2005 or better])
6366 if test -z "$WIN32_CRT_SRC_DIR" -a -z "$WIN32_CUSTOM_CRT_DIR"; then
6367 if test -z "$VCINSTALLDIR" -o ! -d "$VCINSTALLDIR"; then
6368 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.])
6370 WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src"
6373 if test -z "$WIN32_CRT_SRC_DIR"; then
6375 WIN32_CUSTOM_CRT_DIR=`cd "$WIN32_CUSTOM_CRT_DIR" && pwd`
6376 _WIN_UNIX_CRT_PATH="$WIN32_CUSTOM_CRT_DIR"
6378 # CRT source directory
6379 WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd`
6380 _CRT_BASE_DIR=`basename "$WIN32_CRT_SRC_DIR"`
6381 _WIN_UNIX_CRT_PATH="$_objdir/memory/jemalloc/$_CRT_BASE_DIR/build/intel"
6383 dnl need win32 paths in LIB, hence this python abuse. extra brackets
6385 _WIN_CRT_PATH=[`$PYTHON -c 'import sys, os.path; print os.path.normpath(sys.argv[1])' "$_WIN_UNIX_CRT_PATH"`]
6386 MOZ_LIB="$_WIN_CRT_PATH;$LIB"
6387 dnl Needs to be in PATH too, since our tools will wind up linked against it.
6388 dnl This needs to be unix style.
6389 MOZ_PATH="$PATH:$_WIN_UNIX_CRT_PATH"
6390 dnl Statically link the C++ stdlib. We only use this for Breakpad anyway.
6391 AC_DEFINE(_STATIC_CPPLIB)
6392 dnl Don't generate a manifest, since we're linking to a custom CRT.
6393 LDFLAGS="$LDFLAGS -MANIFEST:NO"
6394 dnl Also pass this to NSPR/NSS
6395 DLLFLAGS="$DLLFLAGS -MANIFEST:NO"
6399 AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
6403 AC_ARG_WITH([valgrind],
6404 [ --with-valgrind Enable valgrind integration hooks],
6405 [enable_valgrind="yes"], [enable_valgrind="no"])
6406 AC_CHECK_HEADER([valgrind/valgrind.h], [], [enable_valgrind="no"])
6407 if test "x$enable_valgrind" = "xyes" ; then
6408 AC_DEFINE(MOZ_VALGRIND)
6411 AC_SUBST(MOZ_MEMORY)
6412 AC_SUBST(WIN32_CRT_SRC_DIR)
6413 AC_SUBST(WIN32_CUSTOM_CRT_DIR)
6416 dnl Need to set this for make because NSS doesn't have configure
6419 dnl ========================================================
6420 dnl = Use malloc wrapper lib
6421 dnl ========================================================
6422 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
6423 [ --enable-wrap-malloc Wrap malloc calls (gnu linker only)],
6427 if test -n "$_WRAP_MALLOC"; then
6428 if test "$GNU_CC"; then
6429 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"
6430 MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) -o $@'
6434 dnl ========================================================
6435 dnl = Location of malloc wrapper lib
6436 dnl ========================================================
6437 MOZ_ARG_WITH_STRING(wrap-malloc,
6438 [ --with-wrap-malloc=DIR Location of malloc wrapper library],
6439 WRAP_MALLOC_LIB=$withval)
6441 dnl ========================================================
6442 dnl = Use Electric Fence
6443 dnl ========================================================
6444 MOZ_ARG_ENABLE_BOOL(efence,
6445 [ --enable-efence Link with Electric Fence],
6448 if test -n "$_ENABLE_EFENCE"; then
6449 AC_CHECK_LIB(efence,malloc)
6452 dnl ========================================================
6454 dnl ========================================================
6455 MOZ_ARG_ENABLE_BOOL(jprof,
6456 [ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof)],
6459 if test -n "$MOZ_JPROF"; then
6460 AC_DEFINE(MOZ_JPROF)
6463 dnl ========================================================
6465 dnl ========================================================
6466 MOZ_ARG_ENABLE_BOOL(shark,
6467 [ --enable-shark Enable shark remote profiling (needs CHUD framework)],
6470 if test -n "$MOZ_SHARK"; then
6471 AC_DEFINE(MOZ_SHARK)
6474 dnl ========================================================
6476 dnl ========================================================
6477 MOZ_ARG_ENABLE_BOOL(callgrind,
6478 [ --enable-callgrind Enable callgrind profiling],
6481 if test -n "$MOZ_CALLGRIND"; then
6482 AC_DEFINE(MOZ_CALLGRIND)
6485 dnl ========================================================
6487 dnl ========================================================
6488 MOZ_ARG_ENABLE_BOOL(vtune,
6489 [ --enable-vtune Enable vtune profiling],
6492 if test -n "$MOZ_VTUNE"; then
6493 AC_DEFINE(MOZ_VTUNE)
6496 dnl ========================================================
6497 dnl = Enable static checking using gcc-dehydra
6498 dnl ========================================================
6500 MOZ_ARG_WITH_STRING(static-checking,
6501 [ --with-static-checking=path/to/gcc_dehydra.so
6502 Enable static checking of code using GCC-dehydra],
6503 DEHYDRA_PATH=$withval,
6506 if test -n "$DEHYDRA_PATH"; then
6507 if ! test -f "$DEHYDRA_PATH"; then
6508 AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
6510 AC_DEFINE(NS_STATIC_CHECKING)
6512 AC_SUBST(DEHYDRA_PATH)
6514 dnl ========================================================
6515 dnl = Enable stripping of libs & executables
6516 dnl ========================================================
6517 MOZ_ARG_ENABLE_BOOL(strip,
6518 [ --enable-strip Enable stripping of libs & executables ],
6522 dnl ========================================================
6523 dnl = Enable stripping of libs & executables when packaging
6524 dnl ========================================================
6525 MOZ_ARG_ENABLE_BOOL(install-strip,
6526 [ --enable-install-strip Enable stripping of libs & executables when packaging ],
6530 dnl ========================================================
6531 dnl = --enable-elf-dynstr-gc
6532 dnl ========================================================
6533 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
6534 [ --enable-elf-dynstr-gc Enable elf dynstr garbage collector (opt builds only)],
6535 USE_ELF_DYNSTR_GC=1,
6536 USE_ELF_DYNSTR_GC= )
6538 dnl ========================================================
6539 dnl = --enable-old-abi-compat-wrappers
6540 dnl ========================================================
6541 dnl on x86 linux, the current builds of some popular plugins (notably
6542 dnl flashplayer and real) expect a few builtin symbols from libgcc
6543 dnl which were available in some older versions of gcc. However,
6544 dnl they're _NOT_ available in newer versions of gcc (eg 3.1), so if
6545 dnl we want those plugin to work with a gcc-3.1 built binary, we need
6546 dnl to provide these symbols. MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS defaults
6547 dnl to true on x86 linux, and false everywhere else.
6550 MOZ_ARG_ENABLE_BOOL(old-abi-compat-wrappers,
6551 [ --enable-old-abi-compat-wrappers
6552 Support old GCC ABI symbols to ease the pain
6553 of the linux compiler change],
6554 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1,
6555 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS= )
6556 if test "$COMPILE_ENVIRONMENT"; then
6557 if test "$MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS"; then
6560 AC_CHECK_FUNCS(__builtin_vec_new __builtin_vec_delete __builtin_new __builtin_delete __pure_virtual)
6562 AC_DEFINE(MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS)
6564 fi # COMPILE_ENVIRONMENT
6566 dnl ========================================================
6568 dnl = Profiling and Instrumenting
6570 dnl ========================================================
6571 MOZ_ARG_HEADER(Profiling and Instrumenting)
6573 dnl ========================================================
6574 dnl = Enable timeline service, which provides lightweight
6575 dnl = instrumentation of mozilla for performance measurement.
6576 dnl = Timeline is off by default.
6577 dnl ========================================================
6578 MOZ_ARG_ENABLE_BOOL(timeline,
6579 [ --enable-timeline Enable timeline services ],
6582 if test -n "$MOZ_TIMELINE"; then
6583 AC_DEFINE(MOZ_TIMELINE)
6586 dnl ========================================================
6587 dnl Turn on reflow counting
6588 dnl ========================================================
6589 MOZ_ARG_ENABLE_BOOL(reflow-perf,
6590 [ --enable-reflow-perf Enable reflow performance tracing],
6593 if test -n "$MOZ_REFLOW_PREF"; then
6594 AC_DEFINE(MOZ_REFLOW_PREF)
6596 AC_SUBST(MOZ_REFLOW_PERF)
6598 dnl ========================================================
6599 dnl Enable performance metrics.
6600 dnl ========================================================
6601 MOZ_ARG_ENABLE_BOOL(perf-metrics,
6602 [ --enable-perf-metrics Enable performance metrics],
6605 if test -n "$MOZ_PERF_METRICS"; then
6606 AC_DEFINE(MOZ_PERF_METRICS)
6609 dnl ========================================================
6610 dnl Enable code size metrics.
6611 dnl ========================================================
6612 MOZ_ARG_ENABLE_BOOL(codesighs,
6613 [ --enable-codesighs Enable code size analysis tools],
6614 _ENABLE_CODESIGHS=1,
6615 _ENABLE_CODESIGHS= )
6616 if test -n "$_ENABLE_CODESIGHS"; then
6617 if test -d $srcdir/tools/codesighs; then
6620 AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
6624 dnl ========================================================
6625 dnl = Add support for Eazel profiler
6626 dnl ========================================================
6627 MOZ_ARG_ENABLE_BOOL(eazel-profiler-support,
6628 [ --enable-eazel-profiler-support
6629 Enable Corel/Eazel profiler support],
6630 ENABLE_EAZEL_PROFILER=1,
6631 ENABLE_EAZEL_PROFILER= )
6632 if test -n "$ENABLE_EAZEL_PROFILER"; then
6633 AC_DEFINE(ENABLE_EAZEL_PROFILER)
6635 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6636 EAZEL_PROFILER_CFLAGS="-g -O -gdwarf-2 -finstrument-functions -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
6637 EAZEL_PROFILER_LIBS="-lprofiler -lpthread"
6640 MOZ_ARG_ENABLE_STRING(profile-modules,
6641 [ --enable-profile-modules
6642 Enable/disable profiling for specific modules],
6643 [ MOZ_PROFILE_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6645 MOZ_ARG_ENABLE_BOOL(insure,
6646 [ --enable-insure Enable insure++ instrumentation (linux only)],
6649 if test -n "$_ENABLE_INSURE"; then
6653 MOZ_INSURE_EXCLUDE_DIRS="config"
6656 MOZ_ARG_WITH_STRING(insure-dirs,
6657 [ --with-insure-dirs=DIRS
6658 Dirs to instrument with insure ],
6659 MOZ_INSURE_DIRS=$withval )
6661 MOZ_ARG_WITH_STRING(insure-exclude-dirs,
6662 [ --with-insure-exclude-dirs=DIRS
6663 Dirs to not instrument with insure ],
6664 MOZ_INSURE_EXCLUDE_DIRS="config $withval" )
6666 dnl ========================================================
6667 dnl = Support for Quantify (Windows)
6668 dnl ========================================================
6669 MOZ_ARG_ENABLE_BOOL(quantify,
6670 [ --enable-quantify Enable Quantify support (Windows only) ],
6674 dnl ========================================================
6675 dnl = Support for demangling undefined symbols
6676 dnl ========================================================
6677 if test -z "$SKIP_LIBRARY_CHECKS"; then
6680 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
6684 # Demangle only for debug or trace-malloc builds
6685 MOZ_DEMANGLE_SYMBOLS=
6686 if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
6687 MOZ_DEMANGLE_SYMBOLS=1
6688 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
6690 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
6692 dnl ========================================================
6693 dnl = Support for gcc stack unwinding (from gcc 3.3)
6694 dnl ========================================================
6695 if test "$HAVE_GCC3_ABI" && test -z "$SKIP_LIBRARY_CHECKS"; then
6696 AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
6699 dnl ========================================================
6703 dnl ========================================================
6704 MOZ_ARG_HEADER(Misc. Options)
6706 dnl ========================================================
6707 dnl update xterm title
6708 dnl ========================================================
6709 MOZ_ARG_ENABLE_BOOL(xterm-updates,
6710 [ --enable-xterm-updates Update XTERM titles with current command.],
6714 dnl =========================================================
6716 dnl =========================================================
6717 MOZ_ARG_ENABLE_STRING([chrome-format],
6718 [ --enable-chrome-format=jar|flat|both|symlink
6719 Select FORMAT of chrome files (default=jar)],
6720 MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
6722 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
6723 MOZ_CHROME_FILE_FORMAT=jar
6726 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
6727 test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
6728 test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
6729 test "$MOZ_CHROME_FILE_FORMAT" != "both"; then
6730 AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, or symlink])
6733 dnl ========================================================
6734 dnl = Define default location for MOZILLA_FIVE_HOME
6735 dnl ========================================================
6736 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
6737 [ --with-default-mozilla-five-home
6738 Set the default value for MOZILLA_FIVE_HOME],
6739 [ val=`echo $withval`
6740 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
6742 dnl ========================================================
6743 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
6744 dnl ========================================================
6745 MOZ_ARG_WITH_STRING(user-appdir,
6746 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
6747 [ val=`echo $withval`
6748 if echo "$val" | grep "\/" >/dev/null; then
6749 AC_MSG_ERROR("Homedir must be single relative path.")
6754 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
6756 dnl ========================================================
6757 dnl = Doxygen configuration
6758 dnl ========================================================
6759 dnl Use commas to specify multiple dirs to this arg
6760 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
6761 MOZ_ARG_WITH_STRING(doc-input-dirs,
6762 [ --with-doc-input-dirs=DIRS
6763 Header/idl dirs to create docs from],
6764 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6765 AC_SUBST(MOZ_DOC_INPUT_DIRS)
6767 dnl Use commas to specify multiple dirs to this arg
6768 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
6769 MOZ_ARG_WITH_STRING(doc-include-dirs,
6770 [ --with-doc-include-dirs=DIRS
6771 Include dirs to preprocess doc headers],
6772 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6773 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
6775 MOZ_DOC_OUTPUT_DIR='./dist/docs'
6776 MOZ_ARG_WITH_STRING(doc-output-dir,
6777 [ --with-doc-output-dir=DIR
6778 Dir to generate docs into],
6779 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
6780 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
6782 if test -z "$SKIP_COMPILER_CHECKS"; then
6783 dnl ========================================================
6785 dnl = Compiler Options
6787 dnl ========================================================
6788 MOZ_ARG_HEADER(Compiler Options)
6790 dnl ========================================================
6791 dnl Check for gcc -pipe support
6792 dnl ========================================================
6793 AC_MSG_CHECKING([for gcc -pipe support])
6794 if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
6795 echo '#include <stdio.h>' > dummy-hello.c
6796 echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
6797 ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
6798 cat dummy-hello.s | ${AS_BIN} -o dummy-hello.S - 2>&5
6799 if test $? = 0; then
6804 if test "$_res_as_stdin" = "yes"; then
6805 _SAVE_CFLAGS=$CFLAGS
6806 CFLAGS="$CFLAGS -pipe"
6807 AC_TRY_COMPILE( [ #include <stdio.h> ],
6808 [printf("Hello World\n");],
6809 [_res_gcc_pipe="yes"],
6810 [_res_gcc_pipe="no"] )
6811 CFLAGS=$_SAVE_CFLAGS
6813 if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then
6815 CFLAGS="$CFLAGS -pipe"
6816 CXXFLAGS="$CXXFLAGS -pipe"
6820 rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
6821 AC_MSG_RESULT([$_res])
6826 dnl pass -Wno-long-long to the compiler
6827 MOZ_ARG_ENABLE_BOOL(long-long-warning,
6828 [ --enable-long-long-warning
6829 Warn about use of non-ANSI long long type],
6830 _IGNORE_LONG_LONG_WARNINGS=,
6831 _IGNORE_LONG_LONG_WARNINGS=1)
6833 if test "$_IGNORE_LONG_LONG_WARNINGS"; then
6834 _SAVE_CFLAGS="$CFLAGS"
6835 CFLAGS="$CFLAGS ${_COMPILER_PREFIX}-Wno-long-long"
6836 AC_MSG_CHECKING([whether compiler supports -Wno-long-long])
6837 AC_TRY_COMPILE([], [return(0);],
6838 [ _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6839 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6840 result="yes" ], result="no")
6841 AC_MSG_RESULT([$result])
6842 CFLAGS="$_SAVE_CFLAGS"
6845 dnl ========================================================
6846 dnl Profile guided optimization
6847 dnl ========================================================
6848 dnl Test for profiling options
6849 dnl Under gcc 3.3, use -fprofile-arcs/-fbranch-probabilities
6850 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
6852 dnl Provide a switch to disable PGO even when called via profiledbuild.
6853 MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
6854 [ --disable-profile-guided-optimization
6855 Don't build with PGO even if called via make profiledbuild],
6856 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
6857 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
6859 AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
6861 _SAVE_CFLAGS="$CFLAGS"
6862 CFLAGS="$CFLAGS -fprofile-generate"
6864 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
6865 AC_TRY_COMPILE([], [return 0;],
6866 [ PROFILE_GEN_CFLAGS="-fprofile-generate"
6867 result="yes" ], result="no")
6868 AC_MSG_RESULT([$result])
6870 if test $result = "yes"; then
6871 PROFILE_GEN_LDFLAGS="-fprofile-generate"
6872 PROFILE_USE_CFLAGS="-fprofile-use"
6873 PROFILE_USE_LDFLAGS="-fprofile-use"
6875 CFLAGS="$_SAVE_CFLAGS -fprofile-arcs"
6876 AC_MSG_CHECKING([whether C compiler supports -fprofile-arcs])
6877 AC_TRY_COMPILE([], [return 0;],
6878 [ PROFILE_GEN_CFLAGS="-fprofile-arcs"
6879 result="yes" ], result="no")
6880 AC_MSG_RESULT([$result])
6881 if test $result = "yes"; then
6882 PROFILE_USE_CFLAGS="-fbranch-probabilities"
6884 # don't really care, this is an old GCC
6885 PROFILE_GEN_LDFLAGS=
6886 PROFILE_USE_LDFLAGS=
6889 CFLAGS="$_SAVE_CFLAGS"
6891 if test -n "$INTEL_CC"; then
6892 PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
6893 PROFILE_GEN_LDFLAGS=
6894 PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
6895 PROFILE_USE_LDFLAGS=
6898 dnl Sun Studio on Solaris
6899 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
6900 PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
6901 PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
6902 if test "$CPU_ARCH" != "sparc"; then
6903 PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
6904 PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
6906 PROFILE_USE_CFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
6907 PROFILE_USE_LDFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
6911 AC_SUBST(PROFILE_GEN_CFLAGS)
6912 AC_SUBST(PROFILE_GEN_LDFLAGS)
6913 AC_SUBST(PROFILE_USE_CFLAGS)
6914 AC_SUBST(PROFILE_USE_LDFLAGS)
6918 dnl ========================================================
6919 dnl Test for -pedantic bustage
6920 dnl ========================================================
6921 MOZ_ARG_DISABLE_BOOL(pedantic,
6922 [ --disable-pedantic Issue all warnings demanded by strict ANSI C ],
6924 if test "$_PEDANTIC"; then
6925 _SAVE_CXXFLAGS=$CXXFLAGS
6926 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
6927 AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
6928 AC_TRY_COMPILE([$configure_static_assert_macros],
6929 [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
6930 result="no", result="yes" )
6931 AC_MSG_RESULT([$result])
6932 CXXFLAGS="$_SAVE_CXXFLAGS"
6936 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic"
6937 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
6940 AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic. Reconfigure using --disable-pedantic. ])
6945 dnl ========================================================
6946 dnl Test for correct temporary object destruction order
6947 dnl ========================================================
6948 dnl We want to make sure the compiler follows the C++ spec here as
6949 dnl xpcom and the string classes depend on it (bug 235381).
6950 AC_MSG_CHECKING([for correct temporary object destruction order])
6951 AC_TRY_RUN([ class A {
6952 public: A(int& x) : mValue(x) {}
6954 operator char**() { return 0; }
6955 private: int& mValue;
6957 void func(char **arg) {}
6968 result="yes", result="no", result="maybe")
6969 AC_MSG_RESULT([$result])
6971 if test "$result" = "no"; then
6972 AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
6975 dnl ========================================================
6976 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
6977 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
6978 dnl raw pointers in nsCOMPtr.h. (VC++ has the same bug.)
6979 dnl ========================================================
6980 _SAVE_CXXFLAGS=$CXXFLAGS
6981 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
6982 AC_CACHE_CHECK(for correct overload resolution with const and templates,
6983 ac_nscap_nonconst_opeq_bug,
6992 template <class T, class U>
6993 int operator==(const Pointer<T>& rhs, U* lhs)
6995 return rhs.myPtr == lhs;
6998 template <class T, class U>
6999 int operator==(const Pointer<T>& rhs, const U* lhs)
7001 return rhs.myPtr == lhs;
7009 ac_nscap_nonconst_opeq_bug="no",
7010 ac_nscap_nonconst_opeq_bug="yes")])
7011 CXXFLAGS="$_SAVE_CXXFLAGS"
7013 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
7014 AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
7016 fi # SKIP_COMPILER_CHECKS
7018 dnl ========================================================
7020 dnl Should be smarter and check that the compiler does indeed have rtti
7021 dnl ========================================================
7022 MOZ_ARG_ENABLE_BOOL(cpp-rtti,
7023 [ --enable-cpp-rtti Enable C++ RTTI ],
7024 [ _MOZ_USE_RTTI=1 ],
7027 if test "$_MOZ_USE_RTTI"; then
7028 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
7030 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
7033 AC_SUBST(_MOZ_RTTI_FLAGS_ON)
7035 dnl ========================================================
7036 dnl C++ exceptions (g++/egcs only - for now)
7037 dnl Should be smarter and check that the compiler does indeed have exceptions
7038 dnl ========================================================
7039 MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
7040 [ --enable-cpp-exceptions Enable C++ exceptions ],
7041 [ _MOZ_CPP_EXCEPTIONS=1 ],
7042 [ _MOZ_CPP_EXCEPTIONS= ])
7044 if test "$_MOZ_CPP_EXCEPTIONS"; then
7045 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_ON
7047 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_OFF
7050 # Irix & OSF native compilers do not like exception declarations
7051 # when exceptions are disabled
7052 if test -n "$MIPSPRO_CXX" -o -n "$COMPAQ_CXX" -o -n "$VACPP"; then
7053 AC_DEFINE(CPP_THROW_NEW, [])
7055 AC_DEFINE(CPP_THROW_NEW, [throw()])
7059 dnl ========================================================
7061 dnl = Build depencency options
7063 dnl ========================================================
7064 MOZ_ARG_HEADER(Build dependencies)
7066 dnl ========================================================
7067 dnl = Do not auto generate dependency info
7068 dnl ========================================================
7070 MOZ_ARG_DISABLE_BOOL(auto-deps,
7071 [ --disable-auto-deps Do not automatically generate dependency info],
7075 if test -n "$MOZ_AUTO_DEPS"; then
7076 dnl ========================================================
7077 dnl = Use mkdepend instead of $CC -MD for dependency generation
7078 dnl ========================================================
7080 MOZ_ARG_DISABLE_BOOL(md,
7081 [ --disable-md Do not use compiler-based dependencies ],
7084 [dnl Default is to turn on -MD if using GNU-compatible compilers
7085 if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
7088 dnl Default is to use -xM if using Sun Studio on Solaris
7089 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
7092 if test "$_cpp_md_flag"; then
7094 if test "$OS_ARCH" = "OpenVMS"; then
7095 _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(basename $(@F)).pp))'
7097 _DEPEND_CFLAGS='$(filter-out %/.pp,-Wp,-MD,$(MDDEPDIR)/$(basename $(@F)).pp)'
7099 dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7100 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
7105 _USE_CPP_INCLUDE_FLAG=
7106 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7107 _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7111 AC_SUBST(MOZ_AUTO_DEPS)
7112 AC_SUBST(COMPILER_DEPEND)
7116 dnl ========================================================
7118 dnl = Static Build Options
7120 dnl ========================================================
7121 MOZ_ARG_HEADER(Static build options)
7123 MOZ_ARG_ENABLE_BOOL(static,
7124 [ --enable-static Enable building of internal static libs],
7125 BUILD_STATIC_LIBS=1,
7128 dnl Disable libxul in debug builds, but not for xulrunner.
7129 if test -n "$MOZ_DEBUG" -a "$MOZ_BUILD_APP" != "xulrunner"; then
7133 MOZ_ARG_ENABLE_BOOL(libxul,
7134 [ --enable-libxul Enable building of libxul],
7135 MOZ_ENABLE_LIBXUL=1,
7138 if test -n "$MOZ_STATIC_BUILD_UNSUPPORTED" -a -n "$BUILD_STATIC_LIBS"; then
7139 AC_MSG_ERROR([--enable-static is not supported for building $MOZ_APP_NAME. You probably want --enable-libxul.])
7142 if test -n "$MOZ_ENABLE_LIBXUL" -a -n "$BUILD_STATIC_LIBS"; then
7143 AC_MSG_ERROR([--enable-libxul is not compatible with --enable-static])
7146 if test -n "$MOZ_ENABLE_LIBXUL" -a -z "$MOZ_XUL_APP"; then
7147 AC_MSG_ERROR([--enable-libxul is only compatible with toolkit XUL applications.])
7150 if test -n "$MOZ_ENABLE_LIBXUL"; then
7151 XPCOM_LIBS="$LIBXUL_LIBS"
7152 AC_DEFINE(MOZ_ENABLE_LIBXUL)
7154 if test -n "$BUILD_STATIC_LIBS"; then
7155 AC_DEFINE(MOZ_STATIC_BUILD)
7157 XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS"
7160 dnl ========================================================
7161 dnl = Force JS to be a static lib
7162 dnl ========================================================
7163 MOZ_ARG_ENABLE_BOOL(js-static-build,
7164 [ --enable-js-static-build Force js to be a static lib],
7168 AC_SUBST(JS_STATIC_BUILD)
7170 if test -n "$JS_STATIC_BUILD"; then
7171 AC_DEFINE(EXPORT_JS_API)
7173 if test -z "$BUILD_STATIC_LIBS"; then
7174 AC_MSG_ERROR([--enable-js-static-build is only compatible with --enable-static])
7179 dnl ========================================================
7181 dnl = Standalone module options
7183 dnl ========================================================
7184 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7186 dnl Check for GLib and libIDL.
7187 dnl ========================================================
7188 case "$target_os" in
7189 msvc*|mks*|cygwin*|mingw*|wince*)
7190 SKIP_IDL_CHECK="yes"
7197 if test -z "$COMPILE_ENVIRONMENT"; then
7198 SKIP_IDL_CHECK="yes"
7201 dnl = Allow users to disable libIDL checking for standalone modules
7202 MOZ_ARG_WITHOUT_BOOL(libIDL,
7203 [ --without-libIDL Skip check for libIDL (standalone modules only)],
7204 SKIP_IDL_CHECK="yes")
7206 if test "$SKIP_IDL_CHECK" = "no"
7209 if test "$MACOS_SDK_DIR"; then
7210 dnl xpidl, and therefore libIDL, is only needed on the build host.
7211 dnl Don't build it against the SDK, as that causes problems.
7212 _MACSAVE_CFLAGS="$CFLAGS"
7213 _MACSAVE_LIBS="$LIBS"
7214 _MACSAVE_LDFLAGS="$LDFLAGS"
7215 _MACSAVE_NEXT_ROOT="$NEXT_ROOT"
7217 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"`
7218 LIBS=`echo $LIBS|sed -e "s?-L${MACOS_SDK_DIR}/usr/lib[^ ]*??g"`
7219 LDFLAGS=`echo $LDFLAGS|sed -e "s?-Wl,-syslibroot,${MACOS_SDK_DIR}??g"`
7224 if test "$MOZ_ENABLE_GTK2"; then
7225 PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0 glib-2.0 gobject-2.0, _LIBIDL_FOUND=1,_LIBIDL_FOUND=)
7227 dnl if no gtk/libIDL1 or gtk2/libIDL2 combination was found, fall back
7228 dnl to either libIDL1 or libIDL2.
7229 if test -z "$_LIBIDL_FOUND"; then
7230 AM_PATH_LIBIDL($LIBIDL_VERSION,_LIBIDL_FOUND=1)
7231 if test -z "$_LIBIDL_FOUND"; then
7232 PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0,_LIBIDL_FOUND=1)
7236 dnl If we don't have a libIDL config program & not cross-compiling,
7237 dnl look for orbit-config instead.
7239 if test -z "$_LIBIDL_FOUND" && test -z "$CROSS_COMPILE"; then
7240 AC_PATH_PROGS(ORBIT_CONFIG, $ORBIT_CONFIG orbit-config)
7241 if test -n "$ORBIT_CONFIG"; then
7242 AC_MSG_CHECKING([for ORBit libIDL usability])
7243 _ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags`
7244 _ORBIT_LIBS=`${ORBIT_CONFIG} client --libs`
7245 _ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}`
7246 _ORBIT_LIB_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-L/); } }' -- ${_ORBIT_LIBS}`
7247 LIBIDL_CFLAGS="$_ORBIT_INC_PATH"
7248 LIBIDL_LIBS="$_ORBIT_LIB_PATH -lIDL -lglib"
7250 _SAVE_CFLAGS="$CFLAGS"
7252 CFLAGS="$LIBIDL_CFLAGS $CFLAGS"
7253 LIBS="$LIBIDL_LIBS $LIBS"
7256 #include <libIDL/IDL.h>
7259 s=strdup(IDL_get_libver_string());
7272 AC_MSG_RESULT($result)
7273 CFLAGS="$_SAVE_CFLAGS"
7277 if test -z "$_LIBIDL_FOUND"; then
7278 AC_MSG_ERROR([libIDL not found.
7279 libIDL $LIBIDL_VERSION or higher is required.])
7281 if test "$MACOS_SDK_DIR"; then
7282 CFLAGS="$_MACSAVE_CFLAGS"
7283 LIBS="$_MACSAVE_LIBS"
7284 LDFLAGS="$_MACSAVE_LDFLAGS"
7285 if test -n "$_MACSAVE_NEXT_ROOT" ; then
7286 export NEXT_ROOT="$_MACSAVE_NEXT_ROOT"
7291 if test -n "$CROSS_COMPILE"; then
7292 if test -z "$HOST_LIBIDL_CONFIG"; then
7293 HOST_LIBIDL_CONFIG="$LIBIDL_CONFIG"
7295 if test -n "$HOST_LIBIDL_CONFIG" && test "$HOST_LIBIDL_CONFIG" != "no"; then
7296 HOST_LIBIDL_CFLAGS=`${HOST_LIBIDL_CONFIG} --cflags`
7297 HOST_LIBIDL_LIBS=`${HOST_LIBIDL_CONFIG} --libs`
7299 HOST_LIBIDL_CFLAGS="$LIBIDL_CFLAGS"
7300 HOST_LIBIDL_LIBS="$LIBIDL_LIBS"
7304 if test -z "$SKIP_PATH_CHECKS"; then
7305 if test -z "${GLIB_CFLAGS}" || test -z "${GLIB_LIBS}" ; then
7306 if test "$MOZ_ENABLE_GTK2" || test "$USE_ELF_DYNSTR_GC" ; then
7307 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
7309 AM_PATH_GLIB(${GLIB_VERSION})
7314 if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then
7315 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
7318 AC_SUBST(LIBIDL_CFLAGS)
7319 AC_SUBST(LIBIDL_LIBS)
7320 AC_SUBST(STATIC_LIBIDL)
7321 AC_SUBST(GLIB_CFLAGS)
7323 AC_SUBST(GLIB_GMODULE_LIBS)
7324 AC_SUBST(HOST_LIBIDL_CONFIG)
7325 AC_SUBST(HOST_LIBIDL_CFLAGS)
7326 AC_SUBST(HOST_LIBIDL_LIBS)
7328 dnl ========================================================
7329 dnl Check for libart
7330 dnl ========================================================
7331 if test "$MOZ_SVG_RENDERER_LIBART"; then
7332 if test ! -f $topsrcdir/other-licenses/libart_lgpl/Makefile.in; then
7333 AC_MSG_ERROR([You must check out the mozilla version of libart. Use
7334 mk_add_options MOZ_CO_MODULE=mozilla/other-licenses/libart_lgpl])
7337 dnl libart's configure hasn't been run yet, but we know what the
7338 dnl answer should be anyway
7339 MOZ_LIBART_CFLAGS='-I${DIST}/include/libart_lgpl'
7340 case "$target_os" in
7341 msvc*|mks*|cygwin*|mingw*|wince*)
7342 MOZ_LIBART_LIBS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)moz_art_lgpl.$(IMPORT_LIB_SUFFIX)'
7345 MOZ_LIBART_LIBS='-lmoz_art -lm'
7348 MOZ_LIBART_LIBS='-lmoz_art_lgpl -lroot -lbe'
7351 MOZ_LIBART_LIBS='-lmoz_art_lgpl -lm'
7357 AC_SUBST(MOZ_LIBART_CFLAGS)
7358 AC_SUBST(MOZ_LIBART_LIBS)
7360 dnl ========================================================
7362 dnl ========================================================
7363 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
7366 MOZ_ARG_ENABLE_BOOL(system-cairo,
7367 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
7371 # Check for headers defining standard int types.
7372 AC_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
7374 if test "$MOZ_TREE_CAIRO"; then
7375 AC_DEFINE(MOZ_TREE_CAIRO)
7377 # For now we assume that we will have a uint64_t available through
7378 # one of the above headers or mozstdint.h.
7379 AC_DEFINE(HAVE_UINT64_T)
7381 # Define macros for cairo-features.h
7382 if test "$MOZ_X11"; then
7383 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
7384 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
7385 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
7386 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7387 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7388 MOZ_ENABLE_CAIRO_FT=1
7389 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
7391 if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
7392 QPAINTER_SURFACE_FEATURE="#define CAIRO_HAS_QPAINTER_SURFACE 1"
7394 if test "$MOZ_WIDGET_TOOLKIT" = "mac" -o "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
7395 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
7396 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
7397 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
7399 if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
7400 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
7401 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
7402 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7404 if test "$MOZ_WIDGET_TOOLKIT" = "os2"; then
7405 OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
7406 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7407 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7408 MOZ_ENABLE_CAIRO_FT=1
7409 CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
7410 CAIRO_FT_LIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
7412 if test "$MOZ_WIDGET_TOOLKIT" = "beos"; then
7413 PKG_CHECK_MODULES(CAIRO_FT, fontconfig freetype2)
7414 BEOS_SURFACE_FEATURE="#define CAIRO_HAS_BEOS_SURFACE 1"
7415 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7416 MOZ_ENABLE_CAIRO_FT=1
7418 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
7419 AC_SUBST(CAIRO_FT_CFLAGS)
7421 if test "$MOZ_DEBUG"; then
7422 SANITY_CHECKING_FEATURE="#define CAIRO_DO_SANITY_CHECKING 1"
7424 SANITY_CHECKING_FEATURE="#undef CAIRO_DO_SANITY_CHECKING"
7427 PNG_FUNCTIONS_FEATURE="#define CAIRO_HAS_PNG_FUNCTIONS 1"
7429 AC_SUBST(PS_SURFACE_FEATURE)
7430 AC_SUBST(PDF_SURFACE_FEATURE)
7431 AC_SUBST(SVG_SURFACE_FEATURE)
7432 AC_SUBST(XLIB_SURFACE_FEATURE)
7433 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
7434 AC_SUBST(QUARTZ_SURFACE_FEATURE)
7435 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
7436 AC_SUBST(XCB_SURFACE_FEATURE)
7437 AC_SUBST(WIN32_SURFACE_FEATURE)
7438 AC_SUBST(OS2_SURFACE_FEATURE)
7439 AC_SUBST(BEOS_SURFACE_FEATURE)
7440 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
7441 AC_SUBST(FT_FONT_FEATURE)
7442 AC_SUBST(WIN32_FONT_FEATURE)
7443 AC_SUBST(QUARTZ_FONT_FEATURE)
7444 AC_SUBST(PNG_FUNCTIONS_FEATURE)
7445 AC_SUBST(QPAINTER_SURFACE_FEATURE)
7447 if test "$_WIN32_MSVC"; then
7448 MOZ_CAIRO_LIBS='$(DEPTH)/gfx/cairo/cairo/src/mozcairo.lib $(DEPTH)/gfx/cairo/libpixman/src/mozlibpixman.lib'
7450 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"
7452 if test "$MOZ_X11"; then
7453 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS -lXrender -lfreetype -lfontconfig"
7457 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
7458 mv -f $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig 2> /dev/null
7461 PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION freetype2 fontconfig)
7462 MOZ_CAIRO_CFLAGS=$CAIRO_CFLAGS
7463 MOZ_CAIRO_LIBS=$CAIRO_LIBS
7464 if test "$MOZ_X11"; then
7465 PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
7466 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
7467 MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
7471 AC_SUBST(MOZ_TREE_CAIRO)
7472 AC_SUBST(MOZ_CAIRO_CFLAGS)
7473 AC_SUBST(MOZ_CAIRO_LIBS)
7475 dnl ========================================================
7477 dnl ========================================================
7480 MOZ_ARG_ENABLE_BOOL(system-lcms,
7481 [ --enable-system-lcms Use system lcms (located with pkgconfig)],
7485 if test -z "$MOZ_NATIVE_LCMS"
7488 if test "$_WIN32_MSVC"; then
7489 if test -z "$BUILD_STATIC_LIBS" -a -z "$MOZ_ENABLE_LIBXUL"; then
7490 LCMS_CFLAGS=-DLCMS_DLL
7492 LCMS_LIBS='$(LIBXUL_DIST)/lib/mozlcms.lib'
7494 LCMS_LIBS='-L$(LIBXUL_DIST)/bin -lmozlcms'
7497 PKG_CHECK_MODULES(LCMS, lcms >= $LCMS_VERSION)
7500 AC_SUBST(MOZ_NATIVE_LCMS)
7501 AC_SUBST(LCMS_CFLAGS)
7504 dnl ========================================================
7506 dnl ========================================================
7507 MOZ_ARG_DISABLE_BOOL(xul,
7508 [ --disable-xul Disable XUL],
7510 if test "$MOZ_XUL"; then
7513 dnl remove extensions that require XUL
7514 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
7519 dnl ========================================================
7520 dnl Two ways to enable Python support:
7521 dnl --enable-extensions=python # select all available.
7522 dnl (MOZ_PYTHON_EXTENSIONS contains the list of extensions)
7524 dnl --enable-extensions=python/xpcom,... # select individual ones
7526 dnl If either is used, we locate the Python to use.
7527 dnl ========================================================
7529 dnl If 'python' appears anywhere in the extensions list, go lookin'...
7530 if test `echo "$MOZ_EXTENSIONS" | grep -c python` -ne 0; then
7531 dnl Allow PYTHON to point to the Python interpreter to use
7532 dnl (note that it must be the python executable - which we
7533 dnl run to locate the relevant paths etc)
7534 dnl If not set, we use whatever Python we can find.
7536 dnl Ask Python what its version number is
7538 MOZ_PYTHON_VER=`$PYTHON -c "import sys;print '%d%d' % sys.version_info[0:2]"`
7539 MOZ_PYTHON_VER_DOTTED=`$PYTHON -c "import sys;print '%d.%d' % sys.version_info[0:2]"`
7541 dnl Ask for the Python "prefix" (ie, home/source dir)
7542 MOZ_PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
7543 dnl Setup the include and library directories.
7544 if test "$OS_ARCH" = "WINNT"; then
7545 MOZ_PYTHON_PREFIX=`$CYGPATH_W $MOZ_PYTHON_PREFIX | $CYGPATH_S`
7546 dnl Source trees have "include" and "PC" for .h, and "PCbuild" for .lib
7547 dnl Binary trees have "include" for .h, and "libs" for .lib
7548 dnl We add 'em both - along with quotes, to handle spaces.
7549 MOZ_PYTHON_DLL_SUFFIX=.pyd
7550 MOZ_PYTHON_INCLUDES="\"-I$MOZ_PYTHON_PREFIX/include\" \"-I$MOZ_PYTHON_PREFIX/PC\""
7551 MOZ_PYTHON_LIBS="\"/libpath:$MOZ_PYTHON_PREFIX/PCBuild\" \"/libpath:$MOZ_PYTHON_PREFIX/libs\""
7553 dnl Non-Windows include and libs
7554 MOZ_PYTHON_DLL_SUFFIX=$DLL_SUFFIX
7555 MOZ_PYTHON_INCLUDES="-I$MOZ_PYTHON_PREFIX/include/python$MOZ_PYTHON_VER_DOTTED"
7556 dnl Check for dynamic Python lib
7557 dnl - A static Python is no good - multiple dynamic libraries (xpcom
7558 dnl - core, xpcom loader, pydom etc) all need to share Python.
7559 dnl - Python 2.3's std --enable-shared configure option will
7560 dnl create a libpython2.3.so.1.0. We should first try this
7561 dnl dotted versioned .so file because this is the one that
7562 dnl the PyXPCOM build mechanics tries to link to.
7563 dnl XXX Should find a better way than hardcoding "1.0".
7564 dnl - Python developement tree dir layouts are NOT allowed here
7565 dnl because the PyXPCOM build just dies on it later anyway.
7566 dnl - Fixes to the above by Python/*nix knowledgable people welcome!
7567 if test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7568 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7569 elif test -f "$MOZ_PYTHON_PREFIX/lib64/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7570 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib64 -lpython$MOZ_PYTHON_VER_DOTTED"
7571 elif test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7572 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7573 elif test -f "$MOZ_PYTHON_PREFIX/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7574 dnl Don't Python development tree directory layout.
7575 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX -lpython$MOZ_PYTHON_VER_DOTTED"
7576 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.])
7577 elif test "$OS_ARCH" = "Darwin"; then
7578 dnl We do Darwin last, so if a custom non-framework build of
7579 dnl python is used on OSX, then it will be picked up first by
7580 dnl the logic above.
7581 MOZ_PYTHON_LIBS="-framework Python"
7583 AC_MSG_ERROR([Could not find build shared libraries for Python at $MOZ_PYTHON_PREFIX. This is required for PyXPCOM.])
7585 if test "$OS_ARCH" = "Linux"; then
7586 MOZ_PYTHON_LIBS="$MOZ_PYTHON_LIBS -lutil"
7589 dnl Handle "_d" on Windows
7590 if test "$OS_ARCH" = "WINNT" && test -n "$MOZ_DEBUG"; then
7591 MOZ_PYTHON_DEBUG_SUFFIX="_d"
7593 MOZ_PYTHON_DEBUG_SUFFIX=
7595 AC_MSG_RESULT(Building Python extensions using python-$MOZ_PYTHON_VER_DOTTED from $MOZ_PYTHON_PREFIX)
7598 dnl If the user asks for the 'python' extension, then we add
7599 dnl MOZ_PYTHON_EXTENSIONS to MOZ_EXTENSIONS - but with the leading 'python/'
7600 dnl Note the careful regex - it must match 'python' followed by anything
7601 dnl other than a '/', including the end-of-string.
7602 if test `echo "$MOZ_EXTENSIONS" | grep -c 'python\([[^/]]\|$\)'` -ne 0; then
7603 for pyext in $MOZ_PYTHON_EXTENSIONS; do
7604 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS python/$pyext`
7607 dnl Later we may allow MOZ_PYTHON_EXTENSIONS to be specified on the
7608 dnl command-line, but not yet
7609 AC_SUBST(MOZ_PYTHON_EXTENSIONS)
7610 AC_SUBST(MOZ_PYTHON)
7611 AC_SUBST(MOZ_PYTHON_PREFIX)
7612 AC_SUBST(MOZ_PYTHON_INCLUDES)
7613 AC_SUBST(MOZ_PYTHON_LIBS)
7614 AC_SUBST(MOZ_PYTHON_VER)
7615 AC_SUBST(MOZ_PYTHON_VER_DOTTED)
7616 AC_SUBST(MOZ_PYTHON_DEBUG_SUFFIX)
7617 AC_SUBST(MOZ_PYTHON_DLL_SUFFIX)
7619 dnl ========================================================
7620 dnl disable profile sharing
7621 dnl ========================================================
7622 MOZ_ARG_DISABLE_BOOL(profilesharing,
7623 [ --disable-profilesharing Disable profile sharing],
7624 MOZ_PROFILESHARING=,
7625 MOZ_PROFILESHARING=1 )
7626 if test "$MOZ_PROFILESHARING"; then
7628 AC_DEFINE(MOZ_PROFILESHARING)
7631 dnl ========================================================
7633 dnl ========================================================
7634 MOZ_ARG_ENABLE_BOOL(ipcd,
7635 [ --enable-ipcd Enable IPC daemon],
7639 dnl ========================================================
7640 dnl disable profile locking
7641 dnl do no use this in applications that can have more than
7642 dnl one process accessing the profile directory.
7643 dnl ========================================================
7644 MOZ_ARG_DISABLE_BOOL(profilelocking,
7645 [ --disable-profilelocking Disable profile locking],
7646 MOZ_PROFILELOCKING=,
7647 MOZ_PROFILELOCKING=1 )
7648 if test "$MOZ_PROFILELOCKING"; then
7649 AC_DEFINE(MOZ_PROFILELOCKING)
7652 dnl ========================================================
7653 dnl disable rdf services
7654 dnl ========================================================
7655 MOZ_ARG_DISABLE_BOOL(rdf,
7656 [ --disable-rdf Disable RDF],
7658 if test "$MOZ_RDF"; then
7664 dnl ========================================================
7665 dnl necko configuration options
7666 dnl ========================================================
7669 dnl option to disable various necko protocols
7671 MOZ_ARG_ENABLE_STRING(necko-protocols,
7672 [ --enable-necko-protocols[={http,ftp,default,all,none}]
7673 Enable/disable specific protocol handlers],
7674 [ for option in `echo $enableval | sed 's/,/ /g'`; do
7675 if test "$option" = "yes" || test "$option" = "all"; then
7676 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7677 elif test "$option" = "no" || test "$option" = "none"; then
7679 elif test "$option" = "default"; then
7680 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7681 elif test `echo "$option" | grep -c \^-` != 0; then
7682 option=`echo $option | sed 's/^-//'`
7683 NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
7685 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
7688 NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
7690 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
7691 AC_SUBST(NECKO_PROTOCOLS)
7692 for p in $NECKO_PROTOCOLS; do
7693 AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
7697 dnl option to disable necko's disk cache
7699 MOZ_ARG_DISABLE_BOOL(necko-disk-cache,
7700 [ --disable-necko-disk-cache
7701 Disable necko disk cache],
7704 AC_SUBST(NECKO_DISK_CACHE)
7705 if test "$NECKO_DISK_CACHE"; then
7706 AC_DEFINE(NECKO_DISK_CACHE)
7710 dnl option to minimize size of necko's i/o buffers
7712 MOZ_ARG_ENABLE_BOOL(necko-small-buffers,
7713 [ --enable-necko-small-buffers
7714 Minimize size of necko's i/o buffers],
7715 NECKO_SMALL_BUFFERS=1,
7716 NECKO_SMALL_BUFFERS=)
7717 AC_SUBST(NECKO_SMALL_BUFFERS)
7718 if test "$NECKO_SMALL_BUFFERS"; then
7719 AC_DEFINE(NECKO_SMALL_BUFFERS)
7723 dnl option to disable cookies
7725 MOZ_ARG_DISABLE_BOOL(cookies,
7726 [ --disable-cookies Disable cookie support],
7729 AC_SUBST(NECKO_COOKIES)
7730 if test "$NECKO_COOKIES"; then
7731 AC_DEFINE(NECKO_COOKIES)
7734 dnl NECKO_ configuration options are not global
7735 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_"
7737 dnl Only build Mork if it's required
7739 if test "$MOZ_MORK"; then
7743 dnl Build the lightweight Mork reader if required
7744 AC_SUBST(MOZ_MORKREADER)
7745 if test "$MOZ_MORKREADER"; then
7746 AC_DEFINE(MOZ_MORKREADER)
7749 dnl ========================================================
7750 if test "$MOZ_DEBUG" || test "$NS_TRACE_MALLOC"; then
7751 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7754 dnl ========================================================
7756 dnl = Maintainer debug option (no --enable equivalent)
7758 dnl ========================================================
7763 AC_SUBST(AR_EXTRACT)
7767 AC_SUBST(AS_DASH_C_FLAG)
7772 AC_SUBST(USE_SHORT_LIBNAME)
7776 AC_SUBST(NS_USE_NATIVE)
7777 AC_SUBST(MOZ_WIDGET_TOOLKIT)
7778 AC_SUBST(MOZ_GFX_TOOLKIT)
7779 AC_SUBST(MOZ_UPDATE_XTERM)
7781 AC_SUBST(MOZ_PLATFORM_HILDON)
7783 AC_SUBST(NS_MAEMO_LOCATION)
7784 AC_SUBST(MOZ_AUTH_EXTENSION)
7785 AC_SUBST(MOZ_MATHML)
7786 AC_SUBST(MOZ_PERMISSIONS)
7788 AC_SUBST(MOZ_NO_INSPECTOR_APIS)
7789 AC_SUBST(MOZ_PREF_EXTENSIONS)
7791 AC_SUBST(MOZ_XSLT_STANDALONE)
7792 AC_SUBST(MOZ_JS_LIBS)
7795 AC_SUBST(MOZ_DEBUG_MODULES)
7796 AC_SUBST(MOZ_PROFILE_MODULES)
7797 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
7798 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
7799 AC_SUBST(MOZ_DEBUG_FLAGS)
7800 AC_SUBST(MOZ_DEBUG_LDFLAGS)
7801 AC_SUBST(WARNINGS_AS_ERRORS)
7802 AC_SUBST(MOZ_DBGRINFO_MODULES)
7803 AC_SUBST(MOZ_EXTENSIONS)
7804 AC_SUBST(MOZ_IMG_DECODERS)
7805 AC_SUBST(MOZ_IMG_ENCODERS)
7806 AC_SUBST(MOZ_JSDEBUGGER)
7808 AC_SUBST(MOZ_NO_XPCOM_OBSOLETE)
7809 AC_SUBST(MOZ_PLUGINS)
7810 AC_SUBST(ENABLE_EAZEL_PROFILER)
7811 AC_SUBST(EAZEL_PROFILER_CFLAGS)
7812 AC_SUBST(EAZEL_PROFILER_LIBS)
7813 AC_SUBST(MOZ_PERF_METRICS)
7814 AC_SUBST(GC_LEAK_DETECTOR)
7815 AC_SUBST(MOZ_LOG_REFCNT)
7819 AC_SUBST(MOZ_CALLGRIND)
7821 AC_SUBST(MOZ_XPCTOOLS)
7822 AC_SUBST(MOZ_JSLOADER)
7823 AC_SUBST(MOZ_USE_NATIVE_UCONV)
7824 AC_SUBST(MOZ_INSURE)
7825 AC_SUBST(MOZ_INSURE_DIRS)
7826 AC_SUBST(MOZ_INSURE_EXCLUDE_DIRS)
7827 AC_SUBST(MOZ_QUANTIFY)
7828 AC_SUBST(MOZ_INSURIFYING)
7830 AC_SUBST(MOZ_PLACES)
7831 AC_SUBST(MOZ_PLACES_BOOKMARKS)
7832 AC_SUBST(MOZ_STORAGE)
7834 AC_SUBST(NS_PRINTING)
7836 AC_SUBST(MOZ_JAVAXPCOM)
7837 AC_SUBST(JAVA_INCLUDE_PATH)
7842 AC_SUBST(MOZ_PROFILESHARING)
7843 AC_SUBST(MOZ_PROFILELOCKING)
7848 AC_SUBST(MOZ_XIE_LIBS)
7849 AC_SUBST(MOZ_ENABLE_POSTSCRIPT)
7851 AC_SUBST(XPCOM_USE_LEA)
7852 AC_SUBST(BUILD_STATIC_LIBS)
7853 AC_SUBST(MOZ_ENABLE_LIBXUL)
7854 AC_SUBST(ENABLE_TESTS)
7856 AC_SUBST(MOZ_UNIVERSALCHARDET)
7857 AC_SUBST(ACCESSIBILITY)
7858 AC_SUBST(MOZ_XPINSTALL)
7859 AC_SUBST(MOZ_VIEW_SOURCE)
7860 AC_SUBST(MOZ_SPELLCHECK)
7861 AC_SUBST(MOZ_XPFE_COMPONENTS)
7862 AC_SUBST(MOZ_USER_DIR)
7863 AC_SUBST(MOZ_CRASHREPORTER)
7865 AC_SUBST(ENABLE_STRIP)
7866 AC_SUBST(PKG_SKIP_STRIP)
7867 AC_SUBST(USE_ELF_DYNSTR_GC)
7868 AC_SUBST(INCREMENTAL_LINKER)
7869 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
7870 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
7871 AC_SUBST(MOZ_XPCOM_OBSOLETE_LIBS)
7873 AC_SUBST(MOZ_FIX_LINK_PATHS)
7874 AC_SUBST(XPCOM_LIBS)
7875 AC_SUBST(XPCOM_FROZEN_LDOPTS)
7876 AC_SUBST(XPCOM_GLUE_LDOPTS)
7877 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
7879 AC_SUBST(USE_DEPENDENT_LIBS)
7881 AC_SUBST(MOZ_BUILD_ROOT)
7882 AC_SUBST(MOZ_OS2_TOOLS)
7883 AC_SUBST(MOZ_OS2_USE_DECLSPEC)
7885 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
7886 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
7887 AC_SUBST(MOZ_TIMELINE)
7889 AC_SUBST(TARGET_DEVICE)
7891 AC_SUBST(MOZ_APP_NAME)
7892 AC_SUBST(MOZ_APP_DISPLAYNAME)
7893 AC_SUBST(MOZ_APP_VERSION)
7894 AC_SUBST(FIREFOX_VERSION)
7896 AC_SUBST(MOZ_PKG_SPECIAL)
7898 AC_SUBST(MOZILLA_OFFICIAL)
7899 AC_SUBST(BUILD_OFFICIAL)
7900 AC_SUBST(MOZ_MILESTONE_RELEASE)
7903 AC_SUBST(MOZ_PROFILE)
7904 AC_SUBST(MOZ_DEBUG_SYMBOLS)
7905 AC_SUBST(MOZ_MAPINFO)
7906 AC_SUBST(MOZ_BROWSE_INFO)
7907 AC_SUBST(MOZ_TOOLS_DIR)
7908 AC_SUBST(CYGWIN_WRAPPER)
7910 AC_SUBST(WIN32_REDIST_DIR)
7913 dnl Echo the CFLAGS to remove extra whitespace.
7920 $_MOZ_EXCEPTIONS_FLAGS \
7921 $_WARNINGS_CXXFLAGS \
7924 COMPILE_CFLAGS=`echo \
7929 COMPILE_CXXFLAGS=`echo \
7930 $_DEFINES_CXXFLAGS \
7934 AC_SUBST(SYSTEM_MAKEDEPEND)
7935 AC_SUBST(SYSTEM_JPEG)
7936 AC_SUBST(SYSTEM_PNG)
7937 AC_SUBST(SYSTEM_ZLIB)
7938 AC_SUBST(SYSTEM_BZ2)
7940 AC_SUBST(JPEG_CFLAGS)
7942 AC_SUBST(ZLIB_CFLAGS)
7944 AC_SUBST(BZ2_CFLAGS)
7946 AC_SUBST(PNG_CFLAGS)
7949 AC_SUBST(MOZ_JPEG_CFLAGS)
7950 AC_SUBST(MOZ_JPEG_LIBS)
7951 AC_SUBST(MOZ_ZLIB_CFLAGS)
7952 AC_SUBST(MOZ_ZLIB_LIBS)
7953 AC_SUBST(MOZ_BZ2_CFLAGS)
7954 AC_SUBST(MOZ_BZ2_LIBS)
7955 AC_SUBST(MOZ_PNG_CFLAGS)
7956 AC_SUBST(MOZ_PNG_LIBS)
7958 AC_SUBST(NSPR_CFLAGS)
7960 AC_SUBST(MOZ_NATIVE_NSPR)
7962 AC_SUBST(NSS_CFLAGS)
7964 AC_SUBST(NSS_DEP_LIBS)
7965 AC_SUBST(MOZ_NATIVE_NSS)
7970 AC_SUBST(COMPILE_CFLAGS)
7971 AC_SUBST(COMPILE_CXXFLAGS)
7974 AC_SUBST(CROSS_COMPILE)
7975 AC_SUBST(WCHAR_CFLAGS)
7979 AC_SUBST(HOST_CFLAGS)
7980 AC_SUBST(HOST_CXXFLAGS)
7981 AC_SUBST(HOST_OPTIMIZE_FLAGS)
7983 AC_SUBST(HOST_AR_FLAGS)
7985 AC_SUBST(HOST_RANLIB)
7986 AC_SUBST(HOST_NSPR_MDCPUCFG)
7987 AC_SUBST(HOST_BIN_SUFFIX)
7988 AC_SUBST(HOST_OS_ARCH)
7990 AC_SUBST(TARGET_CPU)
7991 AC_SUBST(TARGET_VENDOR)
7993 AC_SUBST(TARGET_NSPR_MDCPUCFG)
7994 AC_SUBST(TARGET_MD_ARCH)
7995 AC_SUBST(TARGET_XPCOM_ABI)
7998 AC_SUBST(OS_RELEASE)
8001 AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
8002 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8004 AC_SUBST(WRAP_MALLOC_CFLAGS)
8005 AC_SUBST(WRAP_MALLOC_LIB)
8008 AC_SUBST(MKSHLIB_FORCE_ALL)
8009 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8010 AC_SUBST(DSO_CFLAGS)
8011 AC_SUBST(DSO_PIC_CFLAGS)
8012 AC_SUBST(DSO_LDOPTS)
8013 AC_SUBST(LIB_PREFIX)
8014 AC_SUBST(DLL_PREFIX)
8015 AC_SUBST(DLL_SUFFIX)
8016 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8017 AC_SUBST(LIB_SUFFIX)
8018 AC_SUBST(OBJ_SUFFIX)
8019 AC_SUBST(BIN_SUFFIX)
8020 AC_SUBST(ASM_SUFFIX)
8021 AC_SUBST(IMPORT_LIB_SUFFIX)
8023 AC_SUBST(CC_VERSION)
8024 AC_SUBST(CXX_VERSION)
8025 AC_SUBST(MSMANIFEST_TOOL)
8027 if test "$USING_HCC"; then
8028 CC='${topsrcdir}/build/hcc'
8030 CXX='${topsrcdir}/build/hcpp'
8031 CXX="$CXX '$_OLDCXX'"
8036 dnl Check for missing components
8037 if test "$COMPILE_ENVIRONMENT"; then
8038 if test "$MOZ_X11"; then
8039 dnl ====================================================
8040 dnl = Check if X headers exist
8041 dnl ====================================================
8042 _SAVE_CFLAGS=$CFLAGS
8043 CFLAGS="$CFLAGS $XCFLAGS"
8047 #include <X11/Xlib.h>
8048 #include <X11/Intrinsic.h>
8052 if ((dpy = XOpenDisplay(NULL)) == NULL) {
8053 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8057 [ AC_MSG_ERROR([Could not compile basic X program.]) ])
8058 CFLAGS="$_SAVE_CFLAGS"
8060 if test ! -z "$MISSING_X"; then
8061 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8065 fi # COMPILE_ENVIRONMENT
8067 dnl Set various defines and substitutions
8068 dnl ========================================================
8070 if test "$OS_ARCH" = "BeOS"; then
8073 elif test "$OS_ARCH" = "Darwin"; then
8075 AC_DEFINE(UNIX_ASYNC_DNS)
8077 elif test "$OS_ARCH" = "OpenVMS"; then
8079 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
8081 AC_DEFINE(UNIX_ASYNC_DNS)
8084 AC_SUBST(MOZ_MOVEMAIL)
8086 if test "$MOZ_DEBUG"; then
8087 AC_DEFINE(MOZ_REFLOW_PERF)
8088 AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8091 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
8092 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8093 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8094 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8095 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8096 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8097 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8098 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8099 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8102 # Used for LD_LIBRARY_PATH of run_viewer target
8104 for lib_arg in $NSPR_LIBS $TK_LIBS; do
8106 -L* ) LIBS_PATH="${LIBS_PATH:+$LIBS_PATH:}"`expr $lib_arg : "-L\(.*\)"` ;;
8112 dnl ========================================================
8113 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
8114 dnl ========================================================
8117 WIN_TOP_SRC=`cd $srcdir; pwd -W`
8120 HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
8121 HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
8122 CC="\$(CYGWIN_WRAPPER) $CC"
8123 CXX="\$(CYGWIN_WRAPPER) $CXX"
8124 CPP="\$(CYGWIN_WRAPPER) $CPP"
8125 LD="\$(CYGWIN_WRAPPER) $LD"
8126 AS="\$(CYGWIN_WRAPPER) $AS"
8127 RC="\$(CYGWIN_WRAPPER) $RC"
8128 MIDL="\$(CYGWIN_WRAPPER) $MIDL"
8129 CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
8130 WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
8134 AC_SUBST(CYGDRIVE_MOUNT)
8135 AC_SUBST(WIN_TOP_SRC)
8137 AC_SUBST(MOZILLA_VERSION)
8139 AC_SUBST(ac_configure_args)
8141 dnl Spit out some output
8142 dnl ========================================================
8144 dnl The following defines are used by xpcom
8145 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8147 HAVE_CPP_2BYTE_WCHAR_T
8148 HAVE_CPP_ACCESS_CHANGING_USING
8149 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8151 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8153 HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
8154 HAVE_CPP_NAMESPACE_STD
8156 HAVE_CPP_PARTIAL_SPECIALIZATION
8157 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8159 HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL
8161 NEED_CPP_UNUSED_IMPLEMENTATIONS
8165 HAVE_ICONV_WITH_CONST_INPUT
8173 netwerk/necko-config.h
8174 xpcom/xpcom-config.h
8175 xpcom/xpcom-private.h
8178 # Save the defines header file before autoconf removes it.
8179 # (Do not add AC_DEFINE calls after this line.)
8180 _CONFIG_TMP=confdefs-tmp.h
8181 _CONFIG_DEFS_H=mozilla-config.h
8183 cat > $_CONFIG_TMP <<\EOF
8184 /* List of defines generated by configure. Included with preprocessor flag,
8185 * -include, to avoid long list of -D defines on the compile command-line.
8189 #ifndef _MOZILLA_CONFIG_H_
8190 #define _MOZILLA_CONFIG_H_
8193 _EGREP_PATTERN='^#define ('
8194 if test -n "$_NON_GLOBAL_ACDEFINES"; then
8195 for f in $_NON_GLOBAL_ACDEFINES; do
8196 _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
8199 _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
8201 sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
8203 cat >> $_CONFIG_TMP <<\EOF
8205 #endif /* _MOZILLA_CONFIG_H_ */
8209 # Only write mozilla-config.h when something changes (or it doesn't exist)
8210 if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
8213 AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
8214 mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
8216 echo ==== $_CONFIG_DEFS_H =================================
8220 dnl Probably shouldn't call this manually but we always want the output of DEFS
8221 rm -f confdefs.h.save
8222 mv confdefs.h confdefs.h.save
8223 egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
8224 AC_OUTPUT_MAKE_DEFS()
8226 AC_SUBST(MOZ_DEFINES)
8228 mv confdefs.h.save confdefs.h
8230 dnl Load the list of Makefiles to generate.
8231 dnl To add new Makefiles, edit allmakefiles.sh.
8232 dnl allmakefiles.sh sets the variable, MAKEFILES.
8233 . ${srcdir}/allmakefiles.sh
8235 dnl Run a perl script to quickly create the makefiles.
8236 dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
8237 dnl for the files it cannot handle correctly. This way, config.status
8238 dnl will handle these files.
8239 dnl If it fails, nothing is set and config.status will run as usual.
8241 dnl This does not change the $MAKEFILES variable.
8243 dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
8245 if test -z "${AS_PERL}"; then
8246 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
8248 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
8253 echo $MAKEFILES > unallmakefiles
8255 AC_OUTPUT($MAKEFILES)
8257 dnl Prevent the regeneration of cairo-features.h forcing rebuilds of gfx stuff
8258 if test "$CAIRO_FEATURES_H"; then
8259 if cmp -s $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig; then
8260 mv -f "$CAIRO_FEATURES_H".orig "$CAIRO_FEATURES_H" 2> /dev/null
8262 rm -f "$CAIRO_FEATURES_H".orig 2> /dev/null
8266 dnl ========================================================
8267 dnl = Setup a nice relatively clean build environment for
8268 dnl = sub-configures.
8269 dnl ========================================================
8272 CFLAGS="$_SUBDIR_CFLAGS"
8273 CPPFLAGS="$_SUBDIR_CPPFLAGS"
8274 CXXFLAGS="$_SUBDIR_CXXFLAGS"
8275 LDFLAGS="$_SUBDIR_LDFLAGS"
8276 HOST_CC="$_SUBDIR_HOST_CC"
8277 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
8278 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
8284 # No need to run subconfigures when building with LIBXUL_SDK_DIR
8285 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
8287 if test -z "$MOZ_NATIVE_NSPR"; then
8288 ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
8289 if test -z "$MOZ_DEBUG"; then
8290 ac_configure_args="$ac_configure_args --disable-debug"
8292 if test "$MOZ_OPTIMIZE" = "1"; then
8293 ac_configure_args="$ac_configure_args --enable-optimize"
8295 if test "$OS_ARCH" = "WINNT" && test "$NS_TRACE_MALLOC"; then
8296 ac_configure_args="$ac_configure_args --enable-debug --disable-optimize"
8298 if test -n "$HAVE_64BIT_OS"; then
8299 ac_configure_args="$ac_configure_args --enable-64bit"
8301 if test -n "$USE_ARM_KUSER"; then
8302 ac_configure_args="$ac_configure_args --with-arm-kuser"
8304 AC_OUTPUT_SUBDIRS(nsprpub)
8305 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8308 if test -z "$MOZ_NATIVE_NSPR"; then
8309 # Hack to deal with the fact that we use NSPR_CFLAGS everywhere
8310 AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
8311 if test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE"; then
8312 NSPR_LIBS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --libdir=$LIBXUL_DIST/lib --libs`
8313 $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $NSPR_LIBS'" config/autoconf.mk
8314 NSPR_CFLAGS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --includedir=$LIBXUL_DIST/include/nspr --cflags`
8315 $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $NSPR_CFLAGS'" config/autoconf.mk
8317 rm -f config/autoconf.mk.bak
8320 # Run the SpiderMonkey 'configure' script.
8321 dist=$MOZ_BUILD_ROOT/dist
8322 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8323 ac_configure_args="$ac_configure_args --enable-threadsafe"
8324 if test -z "$MOZ_NATIVE_NSPR"; then
8325 ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
8326 ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
8328 ac_configure_args="$ac_configure_args --includedir=$dist/include"
8329 ac_configure_args="$ac_configure_args --bindir=$dist/bin"
8330 ac_configure_args="$ac_configure_args --libdir=$dist/lib"
8331 ac_configure_args="$ac_configure_args --with-sync-build-files=$srcdir"
8332 if test "$MOZ_MEMORY"; then
8333 ac_configure_args="$ac_configure_args --enable-jemalloc"
8335 AC_OUTPUT_SUBDIRS(js/src)
8336 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8338 fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR