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}"
71 dnl ========================================================
73 dnl = Don't change the following two lines. Doing so breaks:
75 dnl = CFLAGS="-foo" ./configure
77 dnl ========================================================
79 CPPFLAGS="${CPPFLAGS=}"
80 CXXFLAGS="${CXXFLAGS=}"
82 HOST_CFLAGS="${HOST_CFLAGS=}"
83 HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
84 HOST_LDFLAGS="${HOST_LDFLAGS=}"
86 dnl ========================================================
87 dnl = Preserve certain environment flags passed to configure
88 dnl = We want sub projects to receive the same flags
89 dnl = untainted by this configure script
90 dnl ========================================================
93 _SUBDIR_CFLAGS="$CFLAGS"
94 _SUBDIR_CPPFLAGS="$CPPFLAGS"
95 _SUBDIR_CXXFLAGS="$CXXFLAGS"
96 _SUBDIR_LDFLAGS="$LDFLAGS"
97 _SUBDIR_HOST_CC="$HOST_CC"
98 _SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
99 _SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
100 _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
101 _SUBDIR_CONFIG_ARGS="$ac_configure_args"
103 dnl Set the version number of the libs included with mozilla
104 dnl ========================================================
111 dnl Set the minimum version of toolkit libs used by mozilla
112 dnl ========================================================
122 WINDRES_VERSION=2.14.90
125 GNOMEUI_VERSION=2.2.0
128 STARTUP_NOTIFICATION_VERSION=0.8
135 dnl Set various checks
136 dnl ========================================================
140 dnl Initialize the Pthread test variables early so they can be
141 dnl overridden by each platform.
142 dnl ========================================================
146 dnl Do not allow a separate objdir build if a srcdir build exists.
147 dnl ==============================================================
148 _topsrcdir=`cd \`dirname $0\`; pwd`
151 if test "$_topsrcdir" != "$_objdir"
153 # Check for a couple representative files in the source tree
155 for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
156 if test -f $file; then
157 _conflict_files="$_conflict_files $file"
160 if test "$_conflict_files"; then
162 echo "* Your source tree contains these files:"
163 for file in $_conflict_files; do
167 * This indicates that you previously built in the source tree.
168 * A source tree build can confuse the separate objdir build.
170 * To clean up the source tree:
181 dnl Default to MSVC for win32
182 dnl ==============================================================
183 if test -z "$CROSS_COMPILE"; then
185 *-cygwin*|*-mingw*|*-msvc*|*-mks*)
187 if test -z "$CC"; then CC=cl; fi
188 if test -z "$CXX"; then CXX=cl; fi
189 if test -z "$CPP"; then CPP="cl -E -nologo"; fi
190 if test -z "$CXXCPP"; then CXXCPP="cl -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
191 if test -z "$LD"; then LD=link; fi
192 if test -z "$AS"; then AS=ml; fi
193 if test -z "$MIDL"; then MIDL=midl; fi
198 COMPILE_ENVIRONMENT=1
199 MOZ_ARG_ENABLE_BOOL(compile-environment,
200 [ --disable-compile-environment
201 Disable compiler/library checks.],
202 COMPILE_ENVIRONMENT=1,
203 COMPILE_ENVIRONMENT= )
205 dnl ========================================================
206 dnl Checks for compilers.
207 dnl ========================================================
208 dnl Set CROSS_COMPILE in the environment when running configure
209 dnl to use the cross-compile setup for now
210 dnl ========================================================
212 if test "$COMPILE_ENVIRONMENT"; then
214 dnl Do some special WinCE toolchain stuff
217 echo -----------------------------------------------------------------------------
218 echo Building Windows CE Shunt Library and Tool Chain
219 echo -----------------------------------------------------------------------------
223 echo -n "#define TOPSRCDIR \"" > $srcdir/build/wince/tools/topsrcdir.h
224 echo `cd "$_topsrcdir" && pwd -W | tr '\n' '\"'` >> $srcdir/build/wince/tools/topsrcdir.h
225 make -C $srcdir/build/wince/tools
226 echo -----------------------------------------------------------------------------
230 if test -n "$CROSS_COMPILE" && test "$target" != "$host"; then
231 echo "cross compiling from $host to $target"
235 _SAVE_CFLAGS="$CFLAGS"
236 _SAVE_LDFLAGS="$LDFLAGS"
238 AC_MSG_CHECKING([for host c compiler])
239 AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
240 if test -z "$HOST_CC"; then
241 AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
243 AC_MSG_RESULT([$HOST_CC])
244 AC_MSG_CHECKING([for host c++ compiler])
245 AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
246 if test -z "$HOST_CXX"; then
247 AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
249 AC_MSG_RESULT([$HOST_CXX])
251 if test -z "$HOST_CFLAGS"; then
252 HOST_CFLAGS="$CFLAGS"
254 if test -z "$HOST_CXXFLAGS"; then
255 HOST_CXXFLAGS="$CXXFLAGS"
257 if test -z "$HOST_LDFLAGS"; then
258 HOST_LDFLAGS="$LDFLAGS"
260 AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
261 AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
263 CFLAGS="$HOST_CFLAGS"
264 LDFLAGS="$HOST_LDFLAGS"
266 AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
267 AC_TRY_COMPILE([], [return(0);],
268 [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
269 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
272 CFLAGS="$HOST_CXXFLAGS"
274 AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
275 AC_TRY_COMPILE([], [return(0);],
276 [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
277 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
281 LDFLAGS=$_SAVE_LDFLAGS
283 case "$build:$target" in
284 powerpc-apple-darwin8*:i?86-apple-darwin*)
285 dnl The Darwin cross compiler doesn't necessarily point itself at a
286 dnl root that has libraries for the proper architecture, it defaults
287 dnl to the system root. The libraries in the system root on current
288 dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
289 dnl checks will fail. Fake a working SDK in that case.
291 _SAVE_CXXFLAGS=$CXXLAGS
292 CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CFLAGS"
293 CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CXXFLAGS"
297 AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
300 AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
304 case "$build:$target" in
305 powerpc-apple-darwin8*:i?86-apple-darwin*)
306 dnl Revert the changes made above. From this point on, the target
307 dnl compiler will never be used without applying the SDK to CFLAGS
308 dnl (see --with-macos-sdk below).
310 CXXFLAGS=$_SAVE_CXXFLAGS
314 AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
315 AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
316 AC_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
317 AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
318 AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
319 AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
320 AC_DEFINE(CROSS_COMPILE)
325 AC_PATH_PROGS(AS, $AS as, $CC)
326 AC_CHECK_PROGS(AR, ar, :)
327 AC_CHECK_PROGS(LD, ld, :)
328 AC_CHECK_PROGS(STRIP, strip, :)
329 AC_CHECK_PROGS(WINDRES, windres, :)
330 if test -z "$HOST_CC"; then
333 if test -z "$HOST_CFLAGS"; then
334 HOST_CFLAGS="$CFLAGS"
336 if test -z "$HOST_CXX"; then
339 if test -z "$HOST_CXXFLAGS"; then
340 HOST_CXXFLAGS="$CXXFLAGS"
342 if test -z "$HOST_LDFLAGS"; then
343 HOST_LDFLAGS="$LDFLAGS"
345 if test -z "$HOST_RANLIB"; then
346 HOST_RANLIB="$RANLIB"
348 if test -z "$HOST_AR"; then
359 if test "$GCC" = "yes"; then
361 CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
363 if test "$GXX" = "yes"; then
365 CXX_VERSION=`$CXX -v 2>&1 | grep 'gcc version'`
367 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
370 if test "`echo | $LD -v 2>&1 | grep -c GNU`" != "0"; then
373 if test "$GNU_CC"; then
374 if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
381 if test "$GCC" = yes; then
382 if test "`$CC -help 2>&1 | grep -c 'Intel(R) C Compiler'`" != "0"; then
387 if test "$GXX" = yes; then
388 if test "`$CXX -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
393 dnl Special win32 checks
394 dnl ========================================================
400 if test -n "$GNU_CC"; then
408 MOZ_ARG_WITH_STRING(windows-version,
409 [ --with-windows-version=WINVER
410 Minimum Windows version (WINVER) to support
421 AC_MSG_ERROR([Invalid value --with-windows-version, must be 400, 500 or 501]);
427 *-cygwin*|*-mingw*|*-msvc*|*-mks*|*-wince)
428 if test "$GCC" != "yes"; then
429 # Check to see if we are really running in a msvc environemnt
431 AC_CHECK_PROGS(MIDL, midl)
433 # Make sure compilers are valid
434 CFLAGS="$CFLAGS -TC -nologo"
435 CXXFLAGS="$CXXFLAGS -TP -nologo"
438 AC_TRY_COMPILE([#include <stdio.h>],
439 [ printf("Hello World\n"); ],,
440 AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
443 AC_TRY_COMPILE([#include <new.h>],
444 [ unsigned *test = new unsigned(42); ],,
445 AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
449 _MSVC_VER_FILTER='s|.* ([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
452 # Determine compiler version
453 CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
454 _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
455 _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
456 _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
457 _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
458 _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
460 CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
461 _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
463 if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
464 AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
466 if test "$_CC_MAJOR_VERSION" = "12"; then
468 elif test "$_CC_MAJOR_VERSION" = "13"; then
470 elif test "$_CC_MAJOR_VERSION" = "14"; then
472 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
473 dnl -DYNAMICBASE is only supported on VC8SP1 or newer,
474 dnl so be very specific here!
475 dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762
476 if test $_CC_RELEASE -gt 50727; then
478 elif test $_CC_BUILD -ge 762; then
481 AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
482 AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
483 elif test "$_CC_MAJOR_VERSION" = "15"; then
485 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
487 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
488 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
490 AC_MSG_ERROR([This version of the MSVC compiler, $CC_VERSION , is unsupported.])
493 _MOZ_RTTI_FLAGS_ON='-GR'
494 _MOZ_RTTI_FLAGS_OFF='-GR-'
495 _MOZ_EXCEPTIONS_FLAGS_ON='-EHsc'
496 _MOZ_EXCEPTIONS_FLAGS_OFF=''
498 if test -n "$WIN32_REDIST_DIR"; then
499 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
503 # ensure that mt.exe is Microsoft (R) Manifest Tool and not magnetic tape manipulation utility (or something else)
504 if test "$_CC_SUITE" -ge "8"; then
506 _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
509 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
510 if test -n "$MSMT_TOOL"; then
511 MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
512 if test -z "$MSMANIFEST_TOOL_VERSION"; then
513 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
518 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
522 # Check linker version
523 _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
524 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
525 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
526 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
531 _MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
532 _MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
533 _MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
534 _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
535 # Add flags if necessary
536 AC_MSG_CHECKING([for midl flags])
537 if test \( "$_MIDL_MAJOR_VERSION" -gt "6" \) -o \( "$_MIDL_MAJOR_VERSION" = "6" -a "$_MIDL_MINOR_VERSION" -gt "0" \) -o \( "$_MIDL_MAJOR_VERSION" = "6" -a "$_MIDL_MINOR_VERSION" = "00" -a "$_MIDL_REV_VERSION" -gt "359" \); then
538 # Starting with MIDL version 6.0.359, the MIDL compiler
539 # generates /Oicf /robust stubs by default, which is not
540 # compatible with versions of Windows older than Win2k.
541 # This switches us back to the old behaviour. When we drop
542 # support for Windows older than Win2k, we should remove
544 MIDL_FLAGS="${MIDL_FLAGS} -no_robust"
545 AC_MSG_RESULT([need -no_robust])
547 MIDL_FLAGS="${MIDL_FLAGS}"
548 AC_MSG_RESULT([none needed])
551 unset _MSVC_VER_FILTER
554 # Check w32api version
555 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
556 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
557 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
558 AC_TRY_COMPILE([#include <w32api.h>],
559 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
560 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
561 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
562 #error "test failed."
564 , [ res=yes ], [ res=no ])
565 AC_MSG_RESULT([$res])
566 if test "$res" != "yes"; then
567 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
569 # Check windres version
570 AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
571 _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
572 AC_MSG_RESULT([$_WINDRES_VERSION])
573 _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
574 _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
575 _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
576 WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
577 WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
578 WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
579 if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
580 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
581 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
582 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
583 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
584 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
586 AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
590 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
591 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
592 # Require OS features provided by IE 5.0
593 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0500)
597 dnl Test breaks icc on OS/2 && MSVC
598 if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
600 if grep "NO_MINUS_C_MINUS_O 1" ./confdefs.h >/dev/null; then
604 CC="${srcdir}/build/hcc '$CC'"
605 CXX="${srcdir}/build/hcpp '$CXX'"
612 if test -n "$_WIN32_MSVC"; then
614 SKIP_COMPILER_CHECKS=1
615 SKIP_LIBRARY_CHECKS=1
618 fi # COMPILE_ENVIRONMENT
630 dnl ========================================================
631 dnl Checks for programs.
632 dnl ========================================================
635 AC_PATH_PROGS(PERL, $PERL perl5 perl )
636 if test -z "$PERL" || test "$PERL" = ":"; then
637 AC_MSG_ERROR([perl not found in \$PATH])
640 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
641 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
642 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
644 AC_MSG_RESULT([$_perl_version])
646 if test "$_perl_res" != 0; then
647 AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
651 AC_MSG_CHECKING([for full perl installation])
652 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
654 if test "$_perl_res" != 0; then
656 AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
661 AC_PATH_PROGS(PYTHON, $PYTHON python)
662 if test -z "$PYTHON"; then
663 AC_MSG_ERROR([python was not found in \$PATH])
665 echo PYTHON="$PYTHON"
667 AC_PATH_PROGS(NSINSTALL_BIN, nsinstall )
668 if test -z "$COMPILE_ENVIRONMENT"; then
669 if test -z "$NSINSTALL_BIN" || test "$NSINSTALL_BIN" = ":"; then
670 NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
673 AC_SUBST(NSINSTALL_BIN)
675 AC_PATH_PROG(DOXYGEN, doxygen, :)
676 AC_PATH_PROG(WHOAMI, whoami, :)
677 AC_PATH_PROG(AUTOCONF, autoconf, :)
678 AC_PATH_PROG(UNZIP, unzip, :)
679 AC_PATH_PROGS(ZIP, zip)
680 if test -z "$ZIP" || test "$ZIP" = ":"; then
681 AC_MSG_ERROR([zip not found in \$PATH])
683 AC_PATH_PROG(SYSTEM_MAKEDEPEND, makedepend)
684 AC_PATH_PROG(XARGS, xargs)
685 if test -z "$XARGS" || test "$XARGS" = ":"; then
686 AC_MSG_ERROR([xargs not found in \$PATH .])
689 if test "$COMPILE_ENVIRONMENT"; then
691 dnl ========================================================
692 dnl = Mac OS X toolchain support
693 dnl ========================================================
697 dnl Current known valid versions for GCC_VERSION are 2.95.2 3.1 3.3 4.0.
698 dnl 4.0 identifies itself as 4.0.x, so strip the decidecimal for
699 dnl the environment and includedir purposes (when using an SDK, below),
700 dnl but remember the full version number for the libdir (SDK).
702 GCC_VERSION_FULL=`echo $CXX_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
703 GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
705 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
706 dnl Bug 280479, but this keeps popping up in bug 292530 too because
707 dnl 4.0.0/4061 is the default compiler in Tiger.
709 GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
711 if test "$GCC_BUILD" = "4061" ; then
712 AC_MSG_ERROR([You are attempting to use Apple gcc 4.0 build 4061.
713 This compiler was supplied with Xcode 2.0, and contains bugs that prevent it
714 from building Mozilla. Upgrade to Xcode 2.1 or later.])
718 dnl xcodebuild needs GCC_VERSION defined in the environment, since it
719 dnl doesn't respect the CC/CXX setting. With GCC_VERSION set, it will use
720 dnl /usr/bin/g(cc|++)-$GCC_VERSION.
721 AC_PATH_PROGS(PBBUILD, pbbuild xcodebuild pbxbuild)
726 XCODEBUILD_VERSION=`$PBBUILD -version 2>/dev/null | xargs | sed -e 's/.*DevToolsCore-\([0-9]*\).*/\1/'`
728 if test -n "$XCODEBUILD_VERSION" && test "$XCODEBUILD_VERSION" -ge 620 ; then
734 dnl sdp was formerly in /Developer/Tools. As of Mac OS X 10.4 (Darwin 8),
735 dnl it has moved into /usr/bin.
736 AC_PATH_PROG(SDP, sdp, :, [$PATH:/usr/bin:/Developer/Tools])
740 AC_SUBST(GCC_VERSION)
741 AC_SUBST(XCODEBUILD_VERSION)
742 AC_SUBST(HAS_XCODE_2_1)
744 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
745 dnl that a universal binary is being produced.
746 AC_SUBST(UNIVERSAL_BINARY)
748 dnl ========================================================
749 dnl Check for MacOS deployment target version
750 dnl ========================================================
752 MOZ_ARG_ENABLE_STRING(macos-target,
753 [ --enable-macos-target=VER (default=10.4)
754 Set the minimum MacOS version needed at runtime],
755 [_MACOSX_DEPLOYMENT_TARGET=$enableval])
759 if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
760 dnl Use the specified value
761 export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
762 AC_DEFINE_UNQUOTED(__ENVIRONMENT_MAC_OS_X_VERION_MIN_REQUIRED__,$_MACOSX_DEPLOYMENT_TARGET)
763 elif test -z "$MACOSX_DEPLOYMENT_TARGET" ; then
764 dnl No value specified on the command line or in the environment,
765 dnl use the lesser of the application's minimum or the architecture's
767 export MACOSX_DEPLOYMENT_TARGET=10.4
772 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
774 dnl ========================================================
775 dnl = Mac OS X SDK support
776 dnl ========================================================
779 MOZ_ARG_WITH_STRING(macos-sdk,
780 [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
781 MACOS_SDK_DIR=$withval)
783 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
784 dnl NEXT_ROOT will be set and exported only if it's needed.
785 AC_SUBST(MACOS_SDK_DIR)
788 if test "$MACOS_SDK_DIR"; then
789 dnl Sync this section with the ones in NSPR and NSS.
790 dnl Changes to the cross environment here need to be accounted for in
791 dnl the libIDL checks (below) and xpidl build.
793 if test ! -d "$MACOS_SDK_DIR"; then
794 AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
795 specify a valid SDK. SDKs are installed when the optional cross-development
796 tools are selected during the Xcode/Developer Tools installation.])
799 GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
800 if test "$GCC_VERSION_MAJOR" -lt "4" ; then
801 SDK_C_INCLUDE="-isystem ${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION} -isystem ${MACOS_SDK_DIR}/usr/include -F${MACOS_SDK_DIR}/System/Library/Frameworks"
802 if test -d "${MACOS_SDK_DIR}/Library/Frameworks" ; then
803 SDK_C_INCLUDE="$SDK_C_INCLUDE -F${MACOS_SDK_DIR}/Library/Frameworks"
805 SDK_CXX_INCLUDE="-I${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION}/c++ -I${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION}/c++/ppc-darwin -I${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION}/c++/backward"
807 CFLAGS="$CFLAGS -nostdinc ${SDK_C_INCLUDE}"
808 CXXFLAGS="$CXXFLAGS -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
810 dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
811 CPP="$CPP -nostdinc ${SDK_C_INCLUDE}"
812 CXXCPP="$CXXCPP -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
814 dnl ld support for -syslibroot is compiler-agnostic, but only available
815 dnl on Tiger. Although it's possible to switch on the build host's
816 dnl OS release to use ld -syslibroot when available, ld -syslibroot will
817 dnl cause warnings as long as NEXT_ROOT is set. NEXT_ROOT should be
818 dnl set because both the compiler and linker use it.
819 LIBS="-L${MACOS_SDK_DIR}/usr/lib/gcc/darwin -L${MACOS_SDK_DIR}/usr/lib/gcc/darwin/${GCC_VERSION_FULL} -L${MACOS_SDK_DIR}/usr/lib $LIBS"
820 export NEXT_ROOT=$MACOS_SDK_DIR
822 if test -n "$CROSS_COMPILE" ; then
823 dnl NEXT_ROOT will be in the environment, but it shouldn't be set for
824 dnl the build host. HOST_CXX is presently unused.
825 HOST_CC="NEXT_ROOT= $HOST_CC"
826 HOST_CXX="NEXT_ROOT= $HOST_CXX"
829 dnl gcc >= 4.0 uses different paths than above, but knows how to find
831 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
832 CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
834 dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
835 CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
836 CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
838 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
839 dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
840 dnl that supports -syslibroot. Don't set NEXT_ROOT because it will
841 dnl be ignored and cause warnings when -syslibroot is specified.
842 dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
843 dnl the -isysroot it receives, so this is only needed with 4.0.0.
844 LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
849 AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
851 AC_TRY_COMPILE([#include <new>
852 int main() { return 0; }],
856 AC_MSG_RESULT($result)
858 if test "$result" = "no" ; then
859 AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
863 fi # COMPILE_ENVIRONMENT
865 dnl Be sure the make we use is GNU make.
866 dnl on win32, gmake.exe is the generally the wrong version
868 cygwin*|mingw*|mks*|msvc*)
869 AC_PATH_PROGS(MAKE, $MAKE make gmake, :)
872 AC_PATH_PROGS(MAKE, $MAKE gmake make, :)
875 _make_try=`$MAKE --version 2>/dev/null | grep GNU`
876 if test ! "$_make_try"
879 echo "*** $MAKE is not GNU Make. You will not be able to build Mozilla without GNU Make."
883 dnl Now exit if version if < MAKE_VERSION
885 echo 'all: ; @echo $(MAKE_VERSION)' > dummy.mk
886 _make_vers=`$MAKE --no-print-directory -f dummy.mk all 2>/dev/null`
888 _MAKE_MAJOR_VERSION=`echo $_make_vers | $AWK -F\. '{ print $1 }'`
889 _MAKE_MINOR_VERSION=`echo $_make_vers | $AWK -F\. '{ print $2 }'`
890 MAKE_MAJOR_VERSION=`echo $MAKE_VERSION | $AWK -F\. '{ print $1 }'`
891 MAKE_MINOR_VERSION=`echo $MAKE_VERSION | $AWK -F\. '{ print $2 }'`
892 if test "$_MAKE_MAJOR_VERSION" -lt "$MAKE_MAJOR_VERSION" || \
893 test "$_MAKE_MAJOR_VERSION" = "$MAKE_MAJOR_VERSION" -a \
894 "$_MAKE_MINOR_VERSION" -lt "$MAKE_MINOR_VERSION"; then
895 AC_MSG_ERROR([GNU Make $MAKE_VERSION or higher is required to build Mozilla.])
899 if test "$COMPILE_ENVIRONMENT"; then
903 dnl Check in X11 include directory too.
904 if test "$no_x" != "yes"; then
905 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
910 fi # COMPILE_ENVIRONMENT
912 dnl ========================================================
913 dnl set the defaults first
914 dnl ========================================================
933 MOZ_USER_DIR=".mozilla"
935 HOST_AR_FLAGS='$(AR_FLAGS)'
938 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/jpeg)'
940 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,$(DEPTH)/modules/zlib/src)'
942 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
944 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/modules/libimg/png)'
946 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs'
947 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxpcom -lxpcom_core'
948 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin'
949 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxpcom'
950 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) -lxul'
951 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
952 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
954 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
955 MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom_compat'
959 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
960 MOZ_GFX_TOOLKIT='$(MOZ_WIDGET_TOOLKIT)'
962 MOZ_ENABLE_POSTSCRIPT=1
964 if test -n "$CROSS_COMPILE"; then
965 OS_TARGET="${target_os}"
966 OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
968 case "${target_os}" in
969 linux*) OS_ARCH=Linux OS_TARGET=Linux ;;
970 kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
971 solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
972 mingw*) OS_ARCH=WINNT ;;
973 wince*) OS_ARCH=WINCE ;;
974 darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;;
978 OS_ARCH=`uname -s | sed -e 's|/|_|g'`
979 OS_RELEASE=`uname -r`
982 # Before this used `uname -m` when not cross compiling
983 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
984 OS_TEST="${target_cpu}"
988 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
990 #######################################################################
991 # Master "Core Components" macros for getting the OS target #
992 #######################################################################
995 # Note: OS_TARGET should be specified on the command line for gmake.
996 # When OS_TARGET=WIN95 is specified, then a Windows 95 target is built.
997 # The difference between the Win95 target and the WinNT target is that
998 # the WinNT target uses Windows NT specific features not available
999 # in Windows 95. The Win95 target will run on Windows NT, but (supposedly)
1000 # at lesser performance (the Win95 target uses threads; the WinNT target
1003 # When OS_TARGET=WIN16 is specified, then a Windows 3.11 (16bit) target
1004 # is built. See: win16_3.11.mk for lots more about the Win16 target.
1006 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1007 # cross-compilation.
1011 # The following hack allows one to build on a WIN95 machine (as if
1012 # s/he were cross-compiling on a WINNT host for a WIN95 target).
1013 # It also accomodates for MKS's uname.exe. If you never intend
1014 # to do development on a WIN95 machine, you don't need this hack.
1029 CYGWIN_9*|CYGWIN_ME*)
1030 OS_ARCH='CYGWIN_NT-4.0'
1036 # Define and override various archtecture-specific variables, including
1045 case "$HOST_OS_ARCH" in
1046 cygwin*|mingw*|mks*|msvc*)
1065 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1068 HOST_OS_ARCH=UNIXWARE
1080 HOST_OS_ARCH=OpenVMS
1090 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1094 HOST_OS_ARCH=UNIXWARE
1104 # If uname -s returns "Windows_NT", we assume that we are using
1105 # the uname.exe in MKS toolkit.
1107 # The -r option of MKS uname only returns the major version number.
1108 # So we need to use its -v option to get the minor version number.
1109 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1113 OS_MINOR_RELEASE=`uname -v`
1114 if test "$OS_MINOR_RELEASE" = "00"; then
1117 OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1119 CYGWIN32_NT|CYGWIN_NT*|MINGW*_NT*)
1121 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
1122 # the uname.exe in the Cygwin tools.
1123 # Prior to the Beta 20 release, Cygwin was called GNU-Win32.
1124 # If uname -s returns "CYGWIN32/NT", we assume that we are using
1125 # the uname.exe in the GNU-Win32 tools.
1126 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1127 # the uname.exe in the MSYS tools.
1129 OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1134 OS_RELEASE=`uname -v`.`uname -r`
1147 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1151 OS_RELEASE=`uname -v`
1175 OS_RELEASE=`uname -v`
1181 OS_RELEASE=`uname -v`
1184 if test "$OS_TARGET" != "NTO"; then
1186 OS_RELEASE=`uname -v | sed 's/^\([0-9]\)\([0-9]*\)$/\1.\2/'`
1195 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1201 OS_RELEASE=`uname -v`
1208 case "${target_cpu}" in
1216 if test -z "$CROSS_COMPILE" ; then
1224 if test "$OS_ARCH" = "NCR"; then
1226 OS_RELEASE=`awk '{print $3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$/\2.\3/'`
1230 # Only set CPU_ARCH if we recognize the value of OS_TEST
1241 Alpha | alpha | ALPHA)
1254 if test -z "$OS_TARGET"; then
1257 if test "$OS_TARGET" = "WIN95"; then
1260 if test "$OS_TARGET" = "WIN16"; then
1263 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1265 dnl ========================================================
1266 dnl GNU specific defaults
1267 dnl ========================================================
1268 if test "$GNU_CC"; then
1269 # FIXME: Let us build with strict aliasing. bug 414641.
1270 CFLAGS="$CFLAGS -fno-strict-aliasing"
1271 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1272 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1273 DSO_LDOPTS='-shared'
1274 if test "$GCC_USE_GNU_LD"; then
1275 # Don't allow undefined symbols in libraries
1276 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1278 WARNINGS_AS_ERRORS='-Werror'
1280 DSO_PIC_CFLAGS='-fPIC'
1281 _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
1282 _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
1283 _MOZ_EXCEPTIONS_FLAGS_ON='-fhandle-exceptions'
1284 _MOZ_EXCEPTIONS_FLAGS_OFF='-fno-handle-exceptions'
1286 # Turn on GNU specific features
1287 # -Wall - turn on all warnings
1288 # -pedantic - make compiler warn about non-ANSI stuff, and
1289 # be a little bit stricter
1290 # Warnings slamm took out for now (these were giving more noise than help):
1291 # -Wbad-function-cast - warns when casting a function to a new return type
1292 # -Wconversion - complained when char's or short's were used a function args
1293 # -Wshadow - removed because it generates more noise than help --pete
1294 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
1295 if test "$CPU_ARCH" != "ia64" && test "$CPU_ARCH" != "sparc" \
1296 && test -z "$INTEL_CC"; then
1297 # don't use -Wcast-align on ia64 or sparc, it's noisy on those platforms
1298 # icc doesn't support this flag.
1299 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1302 dnl Turn pedantic on but disable the warnings for long long
1305 if test -z "$INTEL_CC"; then
1306 _IGNORE_LONG_LONG_WARNINGS=1
1307 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
1309 _IGNORE_LONG_LONG_WARNINGS=
1313 _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1314 _USE_CPP_INCLUDE_FLAG=1
1316 MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1317 MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1319 DSO_LDOPTS='-shared'
1320 if test "$GNU_LD"; then
1321 # Don't allow undefined symbols in libraries
1322 DSO_LDOPTS="$DSO_LDOPTS -z defs"
1326 DSO_PIC_CFLAGS='-KPIC'
1327 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1330 if test "$GNU_CXX"; then
1331 # FIXME: Let us build with strict aliasing. bug 414641.
1332 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
1333 # Turn on GNU specific features
1334 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wconversion -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
1335 if test "$CPU_ARCH" != "ia64" && test "$CPU_ARCH" != "sparc" \
1336 && test -z "$INTEL_CC"; then
1337 # don't use -Wcast-align on ia64 or sparc, it's noisy on those platforms
1338 # icc doesn't support this flag.
1339 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1342 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1343 _USE_CPP_INCLUDE_FLAG=1
1345 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1348 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1349 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1350 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1351 dnl normal behavior.
1352 dnl ========================================================
1354 MKSHLIB_UNFORCE_ALL=
1356 if test "$COMPILE_ENVIRONMENT"; then
1357 if test "$GNU_CC"; then
1358 AC_MSG_CHECKING(whether ld has archive extraction flags)
1359 AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1360 [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1361 ac_cv_mkshlib_force_and_unforce="no"
1362 exec 3<&0 <<LOOP_INPUT
1363 force="-Wl,--whole-archive"; unforce="-Wl,--no-whole-archive"
1364 force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1365 force="-Wl,-all"; unforce="-Wl,-none"
1372 AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1375 LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1377 if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1381 eval $ac_cv_mkshlib_force_and_unforce
1382 MKSHLIB_FORCE_ALL=$force
1383 MKSHLIB_UNFORCE_ALL=$unforce
1386 fi # COMPILE_ENVIRONMENT
1388 dnl =================================================================
1389 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1390 dnl which is bad when cross compiling.
1391 dnl =================================================================
1392 if test "$COMPILE_ENVIRONMENT"; then
1393 configure_static_assert_macros='
1394 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1395 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1396 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1399 dnl test that the macros actually work:
1400 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1401 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1404 ac_cv_static_assertion_macros_work="yes"
1405 AC_TRY_COMPILE([$configure_static_assert_macros],
1406 [CONFIGURE_STATIC_ASSERT(1)],
1408 ac_cv_static_assertion_macros_work="no")
1409 AC_TRY_COMPILE([$configure_static_assert_macros],
1410 [CONFIGURE_STATIC_ASSERT(0)],
1411 ac_cv_static_assertion_macros_work="no",
1414 AC_TRY_COMPILE([$configure_static_assert_macros],
1415 [CONFIGURE_STATIC_ASSERT(1)],
1417 ac_cv_static_assertion_macros_work="no")
1418 AC_TRY_COMPILE([$configure_static_assert_macros],
1419 [CONFIGURE_STATIC_ASSERT(0)],
1420 ac_cv_static_assertion_macros_work="no",
1424 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1425 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1426 AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1429 fi # COMPILE_ENVIRONMENT
1431 dnl ========================================================
1432 dnl Checking for 64-bit OS
1433 dnl ========================================================
1434 if test "$COMPILE_ENVIRONMENT"; then
1437 AC_MSG_CHECKING(for 64-bit OS)
1438 AC_TRY_COMPILE([$configure_static_assert_macros],
1439 [CONFIGURE_STATIC_ASSERT(sizeof(long) == 8)],
1440 result="yes", result="no")
1441 AC_MSG_RESULT("$result")
1442 if test "$result" = "yes"; then
1443 AC_DEFINE(HAVE_64BIT_OS)
1446 AC_SUBST(HAVE_64BIT_OS)
1448 fi # COMPILE_ENVIRONMENT
1450 dnl ========================================================
1451 dnl Enable high-memory support on OS/2 by default.
1452 dnl ========================================================
1453 MOZ_OS2_HIGH_MEMORY=1
1454 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1455 [ --disable-os2-high-mem Disable high-memory support on OS/2],
1456 MOZ_OS2_HIGH_MEMORY=,
1457 MOZ_OS2_HIGH_MEMORY=1 )
1458 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1460 dnl ========================================================
1461 dnl System overrides of the defaults for host
1462 dnl ========================================================
1465 HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
1466 HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
1467 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1470 *cygwin*|*mingw*|*mks*|*msvc*|*wince)
1471 if test -n "$_WIN32_MSVC"; then
1473 HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1474 HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1475 HOST_RANLIB='echo ranlib'
1477 HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
1479 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
1480 HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1481 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1482 HOST_BIN_SUFFIX=.exe
1485 dnl MinGW/MSYS does not need CYGWIN_WRAPPER
1488 CYGWIN_WRAPPER="${srcdir}/build/cygwin-wrapper"
1489 if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
1491 CYGWIN_WRAPPER="${_pwd}/${srcdir}/build/cygwin-wrapper"
1493 if test "`${PERL} -v | grep -c cygwin 2>/dev/null`" = 0; then
1495 PERL="${CYGWIN_WRAPPER} $PERL"
1498 if test "`${PYTHON} -c 'import sys; print sys.platform;'`" != "cygwin"; then
1499 PYTHON="${CYGWIN_WRAPPER} $PYTHON"
1506 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1507 HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1508 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1509 MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
1510 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL -lobjc'
1513 *-linux*|*-kfreebsd*-gnu)
1514 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1515 HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1516 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1520 HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1521 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1522 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1523 HOST_BIN_SUFFIX=.exe
1528 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1529 HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
1530 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1534 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1535 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1539 dnl Get mozilla version from central milestone file
1540 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1542 dnl Get version of various core apps from the version files.
1543 FIREFOX_VERSION=`cat $topsrcdir/browser/config/version.txt`
1544 THUNDERBIRD_VERSION=`cat $topsrcdir/mail/config/version.txt`
1545 SUNBIRD_VERSION=`cat $topsrcdir/calendar/sunbird/config/version.txt`
1546 SEAMONKEY_VERSION=`cat $topsrcdir/suite/config/version.txt`
1548 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1549 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1551 dnl ========================================================
1552 dnl System overrides of the defaults for target
1553 dnl ========================================================
1558 if test ! "$GNU_CC"; then
1559 if test ! "$HAVE_64BIT_OS"; then
1560 # Compiling with Visual Age C++ object model compat is the
1561 # default. To compile with object model ibm, add
1562 # AIX_OBJMODEL=ibm to .mozconfig.
1563 if test "$AIX_OBJMODEL" = "ibm"; then
1564 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1571 AC_SUBST(AIX_OBJMODEL)
1572 DSO_LDOPTS='-qmkshrobj=1'
1573 DSO_CFLAGS='-qflag=w:w'
1575 LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1576 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
1578 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1579 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1580 if test "$COMPILE_ENVIRONMENT"; then
1583 AC_MSG_CHECKING([for VisualAge C++ compiler version >= 5.0.2.0])
1585 [#if (__IBMCPP__ < 502)
1586 #error "Bad compiler"
1588 _BAD_COMPILER=,_BAD_COMPILER=1)
1589 if test -n "$_BAD_COMPILER"; then
1591 AC_MSG_ERROR([VisualAge C++ version 5.0.2.0 or higher is required to build.])
1593 AC_MSG_RESULT([yes])
1596 TARGET_COMPILER_ABI="ibmc"
1597 CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1598 CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1601 case "${target_os}" in
1606 if test "$COMPILE_ENVIRONMENT"; then
1607 AC_CHECK_HEADERS(sys/inttypes.h)
1609 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1614 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1615 _PLATFORM_DEFAULT_TOOLKIT="cairo-beos"
1616 DSO_LDOPTS='-nostart'
1617 TK_LIBS='-lbe -lroot'
1619 if test "$COMPILE_ENVIRONMENT"; then
1620 AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
1621 AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
1623 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
1624 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
1627 MOZ_USER_DIR="Mozilla"
1631 dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
1633 _IGNORE_LONG_LONG_WARNINGS=
1641 _WARNINGS_CFLAGS="-Wall"
1642 _WARNINGS_CXXFLAGS="-Wall"
1643 # The test above doesn't work properly, at least on 3.1.
1644 MKSHLIB_FORCE_ALL=''
1645 MKSHLIB_UNFORCE_ALL=''
1651 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1652 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1653 MOZ_OPTIMIZE_FLAGS="-O2"
1655 CFLAGS="$CFLAGS -fpascal-strings -fno-common"
1656 CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
1659 STRIP="$STRIP -x -S"
1660 _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1661 MOZ_ENABLE_POSTSCRIPT=
1662 TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1663 LDFLAGS="$LDFLAGS -framework Cocoa"
1664 # The ExceptionHandling framework is needed for Objective-C exception
1665 # logging code in nsObjCExceptions.h. Currently we only use that in debug
1667 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"
1668 # set MACOSX to generate lib/mac/MoreFiles/Makefile
1671 dnl check for the presence of the -dead_strip linker flag
1672 AC_MSG_CHECKING([for -dead_strip option to ld])
1673 _SAVE_LDFLAGS=$LDFLAGS
1674 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
1675 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
1676 if test -n "$_HAVE_DEAD_STRIP" ; then
1677 AC_MSG_RESULT([yes])
1678 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
1682 LDFLAGS=$_SAVE_LDFLAGS
1686 if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` != "elf"; then
1687 DLL_SUFFIX=".so.1.0"
1688 DSO_LDOPTS="-shared"
1690 if test ! "$GNU_CC"; then
1691 DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
1693 # Can't have force w/o an unforce.
1694 # # Hack for FreeBSD 2.2
1695 # if test -z "$MKSHLIB_FORCE_ALL"; then
1696 # MKSHLIB_FORCE_ALL='-Wl,-Bforcearchive'
1697 # MKSHLIB_UNFORCE_ALL=''
1703 if test ! "$GNU_CC"; then
1704 DSO_LDOPTS='-b -Wl,+s'
1707 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
1708 MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
1709 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1711 DSO_LDOPTS='-b -E +s'
1712 MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1713 MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1715 MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
1716 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1721 DSO_LDOPTS='-elf -shared'
1723 if test "$GNU_CC"; then
1724 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1725 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1726 MKSHLIB_FORCE_ALL='-Wl,-all'
1727 MKSHLIB_UNFORCE_ALL='-Wl,-none'
1728 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1730 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1731 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1732 MKSHLIB_FORCE_ALL='-all'
1733 MKSHLIB_UNFORCE_ALL='-none'
1739 dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must*
1740 dnl compile and link using -n32
1742 TARGET_COMPILER_ABI=n32
1743 DSO_LDOPTS='-elf -shared'
1744 MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1745 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1746 _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
1747 _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
1748 if test "$GNU_CC"; then
1749 MKSHLIB_FORCE_ALL='-Wl,-all'
1750 MKSHLIB_UNFORCE_ALL='-Wl,-none'
1751 _WARNINGS_CFLAGS="-Wall"
1752 _WARNINGS_CXXFLAGS="-Wall"
1753 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1755 MKSHLIB_FORCE_ALL='-all'
1756 MKSHLIB_UNFORCE_ALL='-none'
1762 CFLAGS="$CFLAGS -woff 3262 -G 4"
1763 CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
1764 if test -n "$USE_N32"; then
1765 ASFLAGS="$ASFLAGS -n32"
1766 CFLAGS="$CFLAGS -n32"
1767 CXXFLAGS="$CXXFLAGS -n32"
1768 LDFLAGS="$LDFLAGS -n32"
1770 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1771 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
1774 if test -z "$GNU_CXX"; then
1780 if test "$GNU_CC"; then
1781 GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
1782 case $GCC_VERSION in
1784 # -Os is broken on gcc 4.1.x and 4.2.x, we need to tweak it to get good results.
1785 MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
1789 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1790 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions $MOZ_OPTIMIZE_SIZE_TWEAK"
1791 MOZ_DEBUG_FLAGS="-g -fno-inline" # most people on linux use gcc/gdb,
1792 # and that combo is not yet good at
1793 # debugging inlined functions (even
1794 # when using DWARF2 as the debugging
1799 case "${target_cpu}" in
1801 CFLAGS="$CFLAGS -mieee"
1802 CXXFLAGS="$CXXFLAGS -mieee"
1806 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1
1809 CFLAGS="$CFLAGS -Wa,-xgot"
1810 CXXFLAGS="$CXXFLAGS -Wa,-xgot"
1817 MOZ_TOOLS_DIR=`echo $MOZ_TOOLS`
1819 AR_EXTRACT="$AR -extract"
1821 AR_FLAGS='-OUT:"$@"'
1828 # certain versions of cygwin's makedepend barf on the
1829 # #include <string> vs -I./dist/include/string issue so don't use it
1835 HOST_AR='lib -OUT:$@'
1836 HOST_RANLIB='echo ranlib'
1837 HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
1840 WARNINGS_AS_ERRORS='-WX'
1841 MOZ_OPTIMIZE_FLAGS='-O1'
1842 AR_FLAGS='-NOLOGO -OUT:"$@"'
1844 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1845 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1848 DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
1849 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
1851 IMPORT_LIB_SUFFIX=lib
1853 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
1856 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1857 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1859 MKSHLIB_UNFORCE_ALL=
1860 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1861 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1862 MOZ_DEBUG_FLAGS='-Zi'
1863 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
1865 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
1866 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
1868 RANLIB='echo not_ranlib'
1869 STRIP='echo not_strip'
1870 TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
1873 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
1875 LIBIDL_CFLAGS="-I$MOZ_TOOLS_DIR/include ${GLIB_CFLAGS}"
1876 LIBIDL_LIBS="$MOZ_TOOLS_DIR/lib/libidl-0.6_s.lib $MOZ_TOOLS_DIR/lib/glib-1.2_s.lib"
1879 AC_DEFINE(HAVE_SNPRINTF)
1885 AC_DEFINE(HW_THREADS)
1886 AC_DEFINE(STDC_HEADERS)
1887 AC_DEFINE(NEW_H, <new>)
1888 AC_DEFINE(WIN32_LEAN_AND_MEAN)
1890 TARGET_MD_ARCH=win32
1891 _PLATFORM_DEFAULT_TOOLKIT='windows'
1894 MOZ_ENABLE_POSTSCRIPT=
1895 MOZ_USER_DIR="Mozilla"
1899 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
1904 # certain versions of cygwin's makedepend barf on the
1905 # #include <string> vs -I./dist/include/string issue so don't use it
1907 if test -n "$GNU_CC"; then
1908 CC="$CC -mno-cygwin"
1909 CXX="$CXX -mno-cygwin"
1910 CPP="$CPP -mno-cygwin"
1911 CFLAGS="$CFLAGS -mms-bitfields"
1912 CXXFLAGS="$CXXFLAGS -mms-bitfields"
1913 DSO_LDOPTS='-shared'
1914 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1915 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1917 # Use temp file for windres (bug 213281)
1918 RCFLAGS='-O coff --use-temp-file'
1919 # mingw doesn't require kernel32, user32, and advapi32 explicitly
1920 LIBS="$LIBS -lgdi32 -lwinmm -lwsock32"
1921 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/lib -ljs$(MOZ_BITS)$(VERSION_NUMBER)'
1923 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core'
1924 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom'
1926 IMPORT_LIB_SUFFIX=dll.a
1928 TARGET_COMPILER_ABI=msvc
1932 AR='lib -NOLOGO -OUT:"$@"'
1934 RANLIB='echo not_ranlib'
1935 STRIP='echo not_strip'
1940 GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
1945 IMPORT_LIB_SUFFIX=lib
1946 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(PDBFILE) $(DSO_LDOPTS)'
1947 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(PDBFILE) $(DSO_LDOPTS)'
1949 MKSHLIB_UNFORCE_ALL=
1950 DSO_LDOPTS=-SUBSYSTEM:WINDOWS
1951 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1952 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1953 LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
1954 MOZ_DEBUG_FLAGS='-Zi'
1955 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
1956 WARNINGS_AS_ERRORS='-WX'
1957 MOZ_OPTIMIZE_FLAGS='-O1'
1958 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
1960 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
1961 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
1962 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
1963 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1964 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
1965 if test $_MSC_VER -ge 1400; then
1966 LDFLAGS="$LDFLAGS -NXCOMPAT -SAFESEH"
1967 dnl For profile-guided optimization
1968 PROFILE_GEN_CFLAGS="-GL"
1969 PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
1970 dnl XXX: PGO builds can fail with warnings treated as errors,
1971 dnl specifically "no profile data available" appears to be
1972 dnl treated as an error sometimes. This might be a consequence
1973 dnl of using WARNINGS_AS_ERRORS in some modules, combined
1974 dnl with the linker doing most of the work in the whole-program
1975 dnl optimization/PGO case. I think it's probably a compiler bug,
1976 dnl but we work around it here.
1977 PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
1978 dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
1979 dnl Probably also a compiler bug, but what can you do?
1980 PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
1981 if test -n "$_USE_DYNAMICBASE"; then
1982 LDFLAGS="$LDFLAGS -DYNAMICBASE"
1986 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,jpeg$(MOZ_BITS)$(VERSION_NUMBER),$(DEPTH)/jpeg)'
1987 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,png,$(DEPTH)/modules/libimg/png)'
1988 AC_DEFINE(HAVE_SNPRINTF)
1994 AC_DEFINE(HW_THREADS)
1995 AC_DEFINE(STDC_HEADERS)
1996 AC_DEFINE(NEW_H, <new>)
1997 AC_DEFINE(WIN32_LEAN_AND_MEAN)
1998 TARGET_MD_ARCH=win32
1999 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2002 MOZ_ENABLE_POSTSCRIPT=
2003 MOZ_USER_DIR="Mozilla"
2005 dnl Hardcode to win95 for now - cls
2006 TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2008 dnl set NO_X11 defines here as the general check is skipped on win32
2012 dnl MinGW/MSYS doesn't provide or need cygpath
2017 MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2019 *-cygwin*|*-msvc*|*-mks*)
2020 CYGPATH_W="cygpath -a -w"
2021 CYGPATH_S="sed -e s|\\\\|/|g"
2022 MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
2026 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2028 if test -z "$MOZ_TOOLS"; then
2029 AC_MSG_ERROR([MOZ_TOOLS is not set])
2032 MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd`
2033 if test "$?" != "0" || test -z "$MOZ_TOOLS_DIR"; then
2034 AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2036 if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_DIR/bin:"` = 0; then
2037 AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2039 MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
2041 if test -n "$GLIB_PREFIX"; then
2042 _GLIB_PREFIX_DIR=`cd $GLIB_PREFIX && pwd`
2043 if test "$?" = "0"; then
2044 if test `echo ${PATH}: | grep -ic "$_GLIB_PREFIX_DIR/bin:"` = 0; then
2045 AC_MSG_ERROR([GLIB_PREFIX must be in your \$PATH.])
2047 _GLIB_PREFIX_DIR=`$CYGPATH_W $_GLIB_PREFIX_DIR | $CYGPATH_S`
2049 AC_MSG_ERROR([GLIB_PREFIX is set but "${GLIB_PREFIX}" is not a directory.])
2052 _GLIB_PREFIX_DIR=$MOZ_TOOLS_DIR
2054 if test ! -f "${_GLIB_PREFIX_DIR}/include/glib.h"; then
2055 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/include/glib.h .])
2057 GLIB_CFLAGS="-I${_GLIB_PREFIX_DIR}/include"
2058 if test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"; then
2059 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"
2060 elif test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"; then
2061 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"
2063 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/lib/glib-1.2.lib or $_GLIB_PREFIX_DIR/lib/glib-1.2_s.lib])
2066 if test -n "$LIBIDL_PREFIX"; then
2067 _LIBIDL_PREFIX_DIR=`cd $LIBIDL_PREFIX && pwd`
2068 if test "$?" = "0"; then
2069 if test `echo ${PATH}: | grep -ic "$_LIBIDL_PREFIX_DIR/bin:"` = 0; then
2070 AC_MSG_ERROR([LIBIDL_PREFIX must be in your \$PATH.])
2072 _LIBIDL_PREFIX_DIR=`$CYGPATH_W $_LIBIDL_PREFIX_DIR | $CYGPATH_S`
2074 AC_MSG_ERROR([LIBIDL_PREFIX is set but "${LIBIDL_PREFIX}" is not a directory.])
2077 _LIBIDL_PREFIX_DIR=$MOZ_TOOLS_DIR
2079 if test ! -f "${_LIBIDL_PREFIX_DIR}/include/libIDL/IDL.h"; then
2080 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/include/libIDL/IDL.h .])
2082 LIBIDL_CFLAGS="-I${_LIBIDL_PREFIX_DIR}/include ${GLIB_CFLAGS}"
2083 if test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"; then
2084 LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"
2086 elif test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"; then
2087 LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"
2089 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/lib/libidl-0.6.lib or $_LIBIDL_PREFIX_DIR/lib/libidl-0.6_s.lib])
2091 LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2094 *) # else cross-compiling
2095 if test -n "$GLIB_PREFIX"; then
2096 GLIB_CFLAGS="-I${GLIB_PREFIX}/include"
2097 if test -f "${GLIB_PREFIX}/lib/glib-1.2_s.lib"; then
2098 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2_s.lib"
2099 elif test -f "${GLIB_PREFIX}/lib/glib-1.2.lib"; then
2100 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2.lib"
2102 AC_MSG_ERROR([Cannot find $GLIB_PREFIX/lib/glib-1.2.lib or $GLIB_PREFIX/lib/glib-1.2_s.lib])
2105 if test -n "$LIBIDL_PREFIX"; then
2106 LIBIDL_CFLAGS="-I${LIBIDL_PREFIX}/include ${GLIB_CFLAGS}"
2107 if test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"; then
2108 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"
2110 elif test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"; then
2111 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"
2113 AC_MSG_ERROR([Cannot find $LIBIDL_PREFIX/lib/libIDL-0.6.lib or $LIBIDL_PREFIX/lib/libIDL-0.6_s.lib])
2116 LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2123 AC_MSG_WARN([Using a cygwin build environment is unsupported. Configure cannot check for the presence of necessary headers. Please upgrade to MozillaBuild; see http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites])
2127 AC_CHECK_HEADERS(mmintrin.h oleacc.idl)
2131 AC_CHECK_HEADERS(atlbase.h wpcapi.h)
2147 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2154 CFLAGS="$CFLAGS -Dunix"
2155 CXXFLAGS="$CXXFLAGS -Dunix"
2156 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2158 DSO_PIC_CFLAGS='-fPIC -DPIC'
2159 DSO_LDOPTS='-shared'
2160 BIN_FLAGS='-Wl,--export-dynamic'
2162 DSO_PIC_CFLAGS='-fPIC -DPIC'
2163 DLL_SUFFIX=".so.1.0"
2164 DSO_LDOPTS='-shared'
2166 # This will fail on a.out systems prior to 1.5.1_ALPHA.
2167 MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2168 MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2169 if test "$LIBRUNPATH"; then
2170 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2172 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2173 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2178 AC_DEFINE(_QNX_SOURCE)
2181 WARNINGS_AS_ERRORS=''
2182 MOZ_OPTIMIZE_FLAGS="-O"
2183 MOZ_DEBUG_FLAGS="-gstabs"
2186 LIBS="$LIBS -lsocket -lstdc++"
2187 _DEFINES_CFLAGS='-Wp,-include -Wp,$(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
2188 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -Wp,-include -Wp,$(DEPTH)/mozilla-config.h -D_POSIX_C_SOURCE=199506'
2189 if test "$with_x" != "yes"
2191 _PLATFORM_DEFAULT_TOOLKIT="photon"
2192 TK_CFLAGS='-I/usr/include/photon'
2195 case "${target_cpu}" in
2197 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
2200 case "${host_cpu}" in
2208 DLL_SUFFIX=".so.1.0"
2210 DSO_PIC_CFLAGS='-fPIC'
2211 DSO_LDOPTS='-shared -fPIC'
2212 if test "$LIBRUNPATH"; then
2213 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2218 AC_DEFINE(NO_PW_GECOS)
2219 AC_DEFINE(NO_UDSOCK)
2220 AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
2222 MKSHLIB_FORCE_ALL='-all'
2223 MKSHLIB_UNFORCE_ALL='-none'
2225 AS_DASH_C_FLAG='-Wc/names=as_is'
2227 DSO_LDOPTS='-shared -auto_symvec'
2229 MOZ_DEBUG_LDFLAGS='-g'
2231 CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
2232 CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
2237 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2238 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2246 IMPORT_LIB_SUFFIX=lib
2249 _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2250 MOZ_ENABLE_POSTSCRIPT=
2253 MOZ_USER_DIR="Mozilla"
2255 if test "$MOZTOOLS"; then
2256 MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2258 AC_MSG_ERROR([MOZTOOLS is not set])
2262 if test -n "$GNU_CC"; then
2264 AC_DEFINE(XP_OS2_EMX)
2265 AC_DEFINE(OS2EMX_PLAIN_CHAR)
2266 AC_DEFINE(TCPV40HDRS)
2269 CFLAGS="$CFLAGS -Zomf"
2270 CXXFLAGS="$CXXFLAGS -Zomf"
2272 BIN_FLAGS='-Zlinker /ST:0x100000'
2276 WARNINGS_AS_ERRORS='-Werror'
2277 MOZ_DEBUG_FLAGS="-g -fno-inline"
2278 MOZ_OPTIMIZE_FLAGS="-O2"
2279 MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2280 MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcomct.lib'
2281 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
2282 LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2283 if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2284 DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2285 LDFLAGS="$LDFLAGS -Zhigh-mem"
2286 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2287 AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2290 # GCC for OS/2 currently predefines these, but we don't want them
2291 _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2292 _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2294 AC_CACHE_CHECK(for __declspec(dllexport),
2296 [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2298 ac_os2_declspec="yes",
2299 ac_os2_declspec="no")])
2300 if test "$ac_os2_declspec" = "yes"; then
2302 MOZ_OS2_USE_DECLSPEC='1'
2305 # Visual Age C++ build
2306 elif test "$VACPP" = "yes"; then
2307 MOZ_BUILD_ROOT=`pwd -D`
2310 AR_FLAGS='/NOL /NOI /O:$(subst /,\\,$@)'
2319 CFLAGS="/Q /qlibansi /Gm+ /Su4 /Mp /Tl9"
2320 CXXFLAGS="/Q /qlibansi /Gm+ /Su4 /Mp /Tl9 /Gx+"
2321 MOZ_DEBUG_FLAGS="/Ti+"
2322 WARNINGS_AS_ERRORS='-WX'
2323 MOZ_OPTIMIZE_FLAGS="/O+ /Gl+ /G5 /qarch=pentium"
2325 MOZ_DEBUG_LDFLAGS="/DE"
2326 MOZ_OPTIMIZE_LDFLAGS="/OPTFUNC /EXEPACK:2 /PACKCODE /PACKDATA"
2329 IMPLIB='implib /NOL /NOI'
2330 FILTER='cppfilt -q -B -P'
2331 AC_DEFINE(NO_ANSI_KEYWORDS)
2334 AC_DEFINE(XP_OS2_VACPP)
2335 AC_DEFINE(TCPV40HDRS)
2336 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2337 AC_DEFINE(STDC_HEADERS)
2338 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2339 MKSHLIB='$(LD) $(DSO_LDOPTS)'
2340 MKCSHLIB='$(LD) $(DSO_LDOPTS)'
2341 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2342 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcomct.lib'
2343 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
2344 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2349 if test "$GNU_CC"; then
2350 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2351 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2354 MOZ_DEBUG_FLAGS='-g'
2355 ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
2356 CFLAGS="$CFLAGS -ieee"
2357 CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee -ptr $(DIST)/cxx_repository'
2358 DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
2361 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2362 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2363 MKSHLIB_FORCE_ALL='-all'
2364 MKSHLIB_UNFORCE_ALL='-none'
2365 dnl Might fix the libxpcom.so breakage on this platform as well....
2366 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2367 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2369 if test -z "$GNU_CXX"; then
2372 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2376 DIRENT_INO=d_stat.st_ino
2377 dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
2378 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2379 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2380 dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
2381 AC_DEFINE(STDC_HEADERS)
2382 if test "$no_x" = "yes"; then
2383 _PLATFORM_DEFAULT_TOOLKIT='photon'
2384 TK_CFLAGS='-I/usr/nto/include/photon'
2385 TK_LIBS='-lphoton -lphrender'
2390 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2391 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2392 CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
2393 if test ! "$GNU_CC"; then
2398 dnl the qsort routine under solaris is faulty
2401 TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2403 # $ORIGIN/.. is for shared libraries under components/ to locate shared
2404 # libraries one level up (e.g. libnspr4.so)
2405 LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..'"
2407 if test -z "$GNU_CC"; then
2409 MOZ_FIX_LINK_PATHS='-R $(LIBXUL_DIST)/bin'
2410 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2412 if test "$CPU_ARCH" != "sparc"; then
2413 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all"
2414 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife -norunpath"
2416 # Do not use -xbuiltin on SPARC to get around a bug of compiler
2417 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%none"
2418 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%none -features=tmplife -norunpath"
2421 LDFLAGS="-xildoff -z lazyload -z combreloc $LDFLAGS"
2422 if test -z "$CROSS_COMPILE" && test -f /usr/lib/ld/map.noexstk; then
2423 _SAVE_LDFLAGS=$LDFLAGS
2424 LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2425 AC_TRY_LINK([#include <stdio.h>],
2426 [printf("Hello World\n");],
2428 [LDFLAGS=$_SAVE_LDFLAGS])
2430 WARNINGS_AS_ERRORS='-Werror'
2431 MOZ_OPTIMIZE_FLAGS="-xO4"
2432 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2433 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) -G -z muldefs -h $@ -o $@'
2434 MKSHLIB_FORCE_ALL='-z allextract'
2435 MKSHLIB_UNFORCE_ALL='-z defaultextract'
2436 DSO_LDOPTS='-G -z muldefs'
2442 AS='/usr/ccs/bin/as'
2443 ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2445 TARGET_COMPILER_ABI="sunc"
2446 CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2447 CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2448 AC_MSG_CHECKING([for Forte compiler version >= WS6U2])
2452 [#if (__SUNPRO_CC < 0x530)
2455 _BAD_COMPILER=,_BAD_COMPILER=1)
2456 if test -n "$_BAD_COMPILER"; then
2458 AC_MSG_ERROR([Forte version WS6U2 or higher is required to build. Your compiler version is $CC_VERSION .])
2462 AC_MSG_RESULT([$_res])
2465 ASFLAGS="$ASFLAGS -fPIC"
2468 _WARNINGS_CXXFLAGS=''
2469 if test "$OS_RELEASE" = "5.3"; then
2470 AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2473 if test "$OS_RELEASE" = "5.5.1"; then
2474 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2479 DSO_LDOPTS='-Bdynamic'
2480 MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2481 MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2483 AC_DEFINE(SPRINTF_RETURNS_STRING)
2484 case "$(target_os)" in
2486 DLL_SUFFIX='.so.1.0'
2492 NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2496 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2501 dnl Only one oddball right now (QNX), but this gives us flexibility
2502 dnl if any other platforms need to override this in the future.
2503 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2505 dnl ========================================================
2506 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2507 dnl by now will not have any way to link most binaries (tests
2508 dnl as well as viewer, apprunner, etc.), because some symbols
2509 dnl will be left out of the "composite" .so's by ld as unneeded.
2510 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2511 dnl they can link in the static libs that provide the missing
2513 dnl ========================================================
2514 NO_LD_ARCHIVE_FLAGS=
2515 if test -z "$MKSHLIB_FORCE_ALL" || test -z "$MKSHLIB_UNFORCE_ALL"; then
2516 NO_LD_ARCHIVE_FLAGS=1
2520 NO_LD_ARCHIVE_FLAGS=
2523 NO_LD_ARCHIVE_FLAGS=
2526 NO_LD_ARCHIVE_FLAGS=
2528 *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince)
2529 if test -z "$GNU_CC"; then
2530 NO_LD_ARCHIVE_FLAGS=
2534 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2537 dnl Indicate that platform requires special thread safe
2538 dnl locking when starting up the OJI JVM
2539 dnl (see mozilla/modules/oji/src/nsJVMManager.cpp)
2540 dnl ========================================================
2543 AC_DEFINE(MOZ_OJI_REQUIRE_THREAD_SAFE_ON_STARTUP)
2547 dnl ========================================================
2548 dnl = Flags to strip unused symbols from .so components
2549 dnl ========================================================
2551 *-linux*|*-kfreebsd*-gnu)
2552 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2555 if test -z "$GNU_CC"; then
2556 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2558 if test -z "$GCC_USE_GNU_LD"; then
2559 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2561 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2566 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2569 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2571 *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince)
2572 if test -n "$GNU_CC"; then
2573 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2578 if test -z "$COMPILE_ENVIRONMENT"; then
2579 SKIP_COMPILER_CHECKS=1
2580 SKIP_LIBRARY_CHECKS=1
2583 if test -z "$SKIP_COMPILER_CHECKS"; then
2584 dnl Checks for typedefs, structures, and compiler characteristics.
2585 dnl ========================================================
2593 AC_STRUCT_ST_BLKSIZE
2594 AC_MSG_CHECKING(for siginfo_t)
2595 AC_CACHE_VAL(ac_cv_siginfo_t,
2596 [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2597 #include <signal.h>],
2599 [ac_cv_siginfo_t=true],
2600 [ac_cv_siginfo_t=false])])
2601 if test "$ac_cv_siginfo_t" = true ; then
2602 AC_DEFINE(HAVE_SIGINFO_T)
2608 dnl Visual Age for os/2 also defines size_t and off_t in certain
2609 dnl header files. These defines make Visual Age use the mozilla
2611 if test "$VACPP" = "yes"; then
2616 dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
2617 dnl ========================================================
2618 AC_MSG_CHECKING(for int16_t)
2619 AC_CACHE_VAL(ac_cv_int16_t,
2620 [AC_TRY_COMPILE([#include <stdio.h>
2621 #include <sys/types.h>],
2623 [ac_cv_int16_t=true],
2624 [ac_cv_int16_t=false])])
2625 if test "$ac_cv_int16_t" = true ; then
2626 AC_DEFINE(HAVE_INT16_T)
2631 AC_MSG_CHECKING(for int32_t)
2632 AC_CACHE_VAL(ac_cv_int32_t,
2633 [AC_TRY_COMPILE([#include <stdio.h>
2634 #include <sys/types.h>],
2636 [ac_cv_int32_t=true],
2637 [ac_cv_int32_t=false])])
2638 if test "$ac_cv_int32_t" = true ; then
2639 AC_DEFINE(HAVE_INT32_T)
2644 AC_MSG_CHECKING(for int64_t)
2645 AC_CACHE_VAL(ac_cv_int64_t,
2646 [AC_TRY_COMPILE([#include <stdio.h>
2647 #include <sys/types.h>],
2649 [ac_cv_int64_t=true],
2650 [ac_cv_int64_t=false])])
2651 if test "$ac_cv_int64_t" = true ; then
2652 AC_DEFINE(HAVE_INT64_T)
2657 AC_MSG_CHECKING(for int64)
2658 AC_CACHE_VAL(ac_cv_int64,
2659 [AC_TRY_COMPILE([#include <stdio.h>
2660 #include <sys/types.h>],
2663 [ac_cv_int64=false])])
2664 if test "$ac_cv_int64" = true ; then
2665 AC_DEFINE(HAVE_INT64)
2670 AC_MSG_CHECKING(for uint)
2671 AC_CACHE_VAL(ac_cv_uint,
2672 [AC_TRY_COMPILE([#include <stdio.h>
2673 #include <sys/types.h>],
2676 [ac_cv_uint=false])])
2677 if test "$ac_cv_uint" = true ; then
2678 AC_DEFINE(HAVE_UINT)
2683 AC_MSG_CHECKING(for uint_t)
2684 AC_CACHE_VAL(ac_cv_uint_t,
2685 [AC_TRY_COMPILE([#include <stdio.h>
2686 #include <sys/types.h>],
2688 [ac_cv_uint_t=true],
2689 [ac_cv_uint_t=false])])
2690 if test "$ac_cv_uint_t" = true ; then
2691 AC_DEFINE(HAVE_UINT_T)
2696 AC_MSG_CHECKING(for uint16_t)
2697 AC_CACHE_VAL(ac_cv_uint16_t,
2698 [AC_TRY_COMPILE([#include <stdio.h>
2699 #include <sys/types.h>],
2700 [uint16_t foo = 0;],
2701 [ac_cv_uint16_t=true],
2702 [ac_cv_uint16_t=false])])
2703 if test "$ac_cv_uint16_t" = true ; then
2704 AC_DEFINE(HAVE_UINT16_T)
2710 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
2711 dnl are defined when compiling C++ but not C. Since the result of this
2712 dnl test is used only in C++, do it in C++.
2715 AC_MSG_CHECKING(for uname.domainname)
2716 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
2717 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2718 [ struct utsname *res; char *domain;
2719 (void)uname(res); if (res != 0) { domain = res->domainname; } ],
2720 [ac_cv_have_uname_domainname_field=true],
2721 [ac_cv_have_uname_domainname_field=false])])
2723 if test "$ac_cv_have_uname_domainname_field" = "true"; then
2724 AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
2730 AC_MSG_CHECKING(for uname.__domainname)
2731 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
2732 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2733 [ struct utsname *res; char *domain;
2734 (void)uname(res); if (res != 0) { domain = res->__domainname; } ],
2735 [ac_cv_have_uname_us_domainname_field=true],
2736 [ac_cv_have_uname_us_domainname_field=false])])
2738 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
2739 AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
2747 dnl Check for usable wchar_t (2 bytes, unsigned)
2748 dnl (we really don't need the unsignedness check anymore)
2749 dnl ========================================================
2751 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
2752 ac_cv_have_usable_wchar_v2,
2753 [AC_TRY_COMPILE([#include <stddef.h>
2754 $configure_static_assert_macros],
2755 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2756 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2757 ac_cv_have_usable_wchar_v2="yes",
2758 ac_cv_have_usable_wchar_v2="no")])
2759 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
2760 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2761 HAVE_CPP_2BYTE_WCHAR_T=1
2763 dnl This is really gcc-only
2764 dnl Do this test using CXX only since some versions of gcc
2765 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
2766 dnl only have short-wchar support for c++.
2767 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
2771 _SAVE_CXXFLAGS=$CXXFLAGS
2772 CXXFLAGS="$CXXFLAGS -fshort-wchar"
2774 AC_CACHE_CHECK(for compiler -fshort-wchar option,
2775 ac_cv_have_usable_wchar_option_v2,
2776 [AC_TRY_COMPILE([#include <stddef.h>
2777 $configure_static_assert_macros],
2778 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2779 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2780 ac_cv_have_usable_wchar_option_v2="yes",
2781 ac_cv_have_usable_wchar_option_v2="no")])
2783 if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
2784 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2785 HAVE_CPP_2BYTE_WCHAR_T=1
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 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2905 AC_SUBST(VISIBILITY_FLAGS)
2907 dnl Checks for header files.
2908 dnl ========================================================
2910 case "$target_os" in
2912 # for stuff like -lXshm
2913 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2916 AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
2917 AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
2918 AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
2919 AC_CHECK_HEADERS(malloc.h)
2920 AC_CHECK_HEADERS(X11/XKBlib.h)
2922 dnl These are all the places some variant of statfs can be hiding.
2923 AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2925 dnl Try for MMX support
2926 dnl NB - later gcc versions require -mmmx for this header to be successfully
2927 dnl included (or another option which implies it, such as -march=pentium-mmx)
2928 AC_CHECK_HEADERS(mmintrin.h)
2930 dnl Check whether the compiler supports the new-style C++ standard
2931 dnl library headers (i.e. <new>) or needs the old "new.h"
2934 AC_CHECK_HEADER(new, [NEW_H=new])
2935 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
2938 AC_ARG_ENABLE(dtrace,
2939 [ --enable-dtrace build with dtrace support if available (default=no)],
2940 [enable_dtrace="yes"],)
2941 if test "x$enable_dtrace" = "xyes"; then
2942 AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
2943 if test -n "$HAVE_DTRACE"; then
2944 AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
2946 AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
2949 AC_SUBST(HAVE_DTRACE)
2955 AC_CHECK_HEADERS(sys/cdefs.h)
2959 dnl Checks for libraries.
2960 dnl ========================================================
2965 AC_CHECK_LIB(c_r, gethostbyname_r)
2969 dnl We don't want to link with libdl even if it's present on OS X, since
2970 dnl it's not used and not part of the default installation.
2971 dnl The same goes for BeOS.
2972 dnl We don't want to link against libm or libpthread on Darwin since
2973 dnl they both are just symlinks to libSystem and explicitly linking
2974 dnl against libSystem causes issues when debugging (see bug 299601).
2981 AC_CHECK_LIB(m, atan)
2982 AC_CHECK_LIB(dl, dlopen,
2983 AC_CHECK_HEADER(dlfcn.h,
2985 AC_DEFINE(HAVE_LIBDL)))
2989 _SAVE_CFLAGS="$CFLAGS"
2990 CFLAGS="$CFLAGS -D_GNU_SOURCE"
2991 AC_CHECK_FUNCS(dladdr)
2992 CFLAGS="$_SAVE_CFLAGS"
2994 if test ! "$GNU_CXX"; then
2998 AC_CHECK_LIB(C_r, demangle)
3001 AC_CHECK_LIB(C, demangle)
3005 AC_CHECK_LIB(socket, socket)
3008 XLIBS="$X_EXTRA_LIBS"
3010 dnl ========================================================
3011 dnl Checks for X libraries.
3012 dnl Ordering is important.
3013 dnl Xt is dependent upon SM as of X11R6
3014 dnl ========================================================
3015 if test "$no_x" = "yes"; then
3018 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3019 XLIBS="-lX11 $XLIBS"
3020 _SAVE_LDFLAGS="$LDFLAGS"
3021 LDFLAGS="$XLDFLAGS $LDFLAGS"
3022 AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3023 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3024 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3025 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3028 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3029 unset ac_cv_lib_Xt_XtFree
3030 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3031 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
3032 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3033 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3036 # AIX needs the motif library linked before libXt to prevent
3037 # crashes in plugins linked against Motif - Bug #98892
3038 case "${target_os}" in
3040 XT_LIBS="-lXm $XT_LIBS"
3044 dnl ========================================================
3045 dnl = Check for XShm
3046 dnl ========================================================
3047 AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3049 AC_CHECK_HEADER(X11/extensions/XShm.h)
3050 if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" &&
3051 test -n "$_HAVE_XSHM_XEXT"; then
3052 AC_DEFINE(HAVE_XSHM)
3055 dnl ========================================================
3057 dnl ========================================================
3058 AC_CHECK_LIB(XIE, XieFloGeometry, [MOZ_XIE_LIBS="-lXIE"],,
3060 AC_CHECK_HEADER(X11/extensions/XIElib.h)
3062 if test "$MOZ_XIE_LIBS"; then
3063 dnl ====================================================
3064 dnl = If XIE is present and is desired, turn it on
3065 dnl ====================================================
3075 LDFLAGS="$_SAVE_LDFLAGS"
3077 dnl ========================================================
3078 dnl = Check for freetype2 and its functionality
3079 dnl ========================================================
3080 AC_CHECK_FT2(6.1.0, [_HAVE_FREETYPE2=1], [_HAVE_FREETYPE2=])
3082 if test "$_HAVE_FREETYPE2"; then
3084 _SAVE_CFLAGS="$CFLAGS"
3085 LIBS="$LIBS $FT2_LIBS"
3086 CFLAGS="$CFLAGS $FT2_CFLAGS"
3088 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
3089 ac_cv_member_FT_Bitmap_Size_y_ppem,
3090 [AC_TRY_COMPILE([#include <ft2build.h>
3091 #include FT_FREETYPE_H],
3093 if (sizeof s.y_ppem) return 0;
3095 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
3096 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
3097 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
3098 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
3100 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
3102 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
3103 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
3104 [FT_Bitmap_Size structure includes y_ppem field])
3106 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
3109 CFLAGS="$_SAVE_CFLAGS"
3119 dnl ========================================================
3120 dnl = pthread support
3121 dnl = Start by checking whether the system support pthreads
3122 dnl ========================================================
3123 case "$target_os" in
3128 MOZ_CHECK_PTHREADS(pthreads,
3129 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3130 MOZ_CHECK_PTHREADS(pthread,
3131 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3132 MOZ_CHECK_PTHREADS(c_r,
3133 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3134 MOZ_CHECK_PTHREADS(c,
3143 dnl ========================================================
3144 dnl Check the command line for --with-pthreads
3145 dnl ========================================================
3146 MOZ_ARG_WITH_BOOL(pthreads,
3147 [ --with-pthreads Force use of system pthread library with NSPR ],
3148 [ if test "$USE_PTHREADS"x = x; then
3149 AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3155 dnl ========================================================
3156 dnl Do the platform specific pthread hackery
3157 dnl ========================================================
3158 if test "$USE_PTHREADS"x != x
3161 dnl See if -pthread is supported.
3164 ac_cv_have_dash_pthread=no
3165 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3166 echo 'int main() { return 0; }' | cat > conftest.c
3167 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3168 if test $? -eq 0; then
3169 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3170 ac_cv_have_dash_pthread=yes
3171 case "$target_os" in
3173 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3176 CFLAGS="$CFLAGS -pthread"
3177 CXXFLAGS="$CXXFLAGS -pthread"
3183 AC_MSG_RESULT($ac_cv_have_dash_pthread)
3186 dnl See if -pthreads is supported.
3188 ac_cv_have_dash_pthreads=no
3189 if test "$ac_cv_have_dash_pthread" = "no"; then
3190 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3191 echo 'int main() { return 0; }' | cat > conftest.c
3192 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3193 if test $? -eq 0; then
3194 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3195 ac_cv_have_dash_pthreads=yes
3196 CFLAGS="$CFLAGS -pthreads"
3197 CXXFLAGS="$CXXFLAGS -pthreads"
3201 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3206 AC_DEFINE(_REENTRANT)
3207 AC_DEFINE(_THREAD_SAFE)
3208 dnl -pthread links in -lc_r, so don't specify it explicitly.
3209 if test "$ac_cv_have_dash_pthread" = "yes"; then
3210 _PTHREAD_LDFLAGS="-pthread"
3212 _PTHREAD_LDFLAGS="-lc_r"
3216 *-*-openbsd*|*-*-bsdi*)
3217 AC_DEFINE(_REENTRANT)
3218 AC_DEFINE(_THREAD_SAFE)
3219 dnl -pthread links in -lc_r, so don't specify it explicitly.
3220 if test "$ac_cv_have_dash_pthread" = "yes"; then
3221 _PTHREAD_LDFLAGS="-pthread"
3225 *-*-linux*|*-*-kfreebsd*-gnu)
3226 AC_DEFINE(_REENTRANT)
3230 AC_DEFINE(_REENTRANT)
3234 AC_DEFINE(_REENTRANT)
3238 AC_DEFINE(_REENTRANT)
3242 AC_DEFINE(_REENTRANT)
3246 AC_DEFINE(_REENTRANT)
3247 if test ! "$GNU_CC"; then
3248 CFLAGS="$CFLAGS -mt"
3249 CXXFLAGS="$CXXFLAGS -mt"
3253 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3256 dnl ========================================================
3257 dnl See if mmap sees writes
3258 dnl For cross compiling, just define it as no, which is a safe default
3259 dnl ========================================================
3260 AC_MSG_CHECKING(whether mmap() sees write()s)
3266 #include <sys/mman.h>
3267 #include <sys/types.h>
3268 #include <sys/stat.h>
3271 char fname[] = "conftest.file";
3272 char zbuff[1024]; /* Fractional page is probably worst case */
3279 fd = open(fname, O_RDWR | O_CREAT, 0660);
3282 write(fd, zbuff, sizeof(zbuff));
3283 lseek(fd, 0, SEEK_SET);
3284 map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
3285 if(map==(char*)-1) return 2;
3286 for(i=0; fname[i]; i++) {
3287 int rc = write(fd, &fname[i], 1);
3288 if(map[i]!=fname[i]) return 4;
3295 AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
3297 AC_MSG_RESULT("$result")
3299 if test "$result" = "no"; then
3300 AC_DEFINE(MMAP_MISSES_WRITES)
3304 dnl Checks for library functions.
3305 dnl ========================================================
3306 AC_PROG_GCC_TRADITIONAL
3308 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 truncate64 statvfs64)
3309 AC_CHECK_FUNCS(flockfile getpagesize)
3311 dnl localtime_r and strtok_r are only present on MacOS version 10.2 and higher
3312 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100200"; then
3313 AC_CHECK_FUNCS(localtime_r strtok_r)
3316 dnl check for wcrtomb/mbrtowc
3317 dnl =======================================================================
3318 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3321 AC_CACHE_CHECK(for wcrtomb,
3323 [AC_TRY_LINK([#include <wchar.h>],
3324 [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3325 ac_cv_have_wcrtomb="yes",
3326 ac_cv_have_wcrtomb="no")])
3327 if test "$ac_cv_have_wcrtomb" = "yes"; then
3328 AC_DEFINE(HAVE_WCRTOMB)
3330 AC_CACHE_CHECK(for mbrtowc,
3332 [AC_TRY_LINK([#include <wchar.h>],
3333 [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3334 ac_cv_have_mbrtowc="yes",
3335 ac_cv_have_mbrtowc="no")])
3336 if test "$ac_cv_have_mbrtowc" = "yes"; then
3337 AC_DEFINE(HAVE_MBRTOWC)
3344 ac_cv_func_res_ninit,
3347 #define _BSD_SOURCE 1
3351 [int foo = res_ninit(&_res);],
3352 [ac_cv_func_res_ninit=yes],
3353 [ac_cv_func_res_ninit=no])
3356 if test "$ac_cv_func_res_ninit" = "yes"; then
3357 AC_DEFINE(HAVE_RES_NINIT)
3358 dnl must add the link line we do something as foolish as this... dougt
3360 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3361 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3366 [for gnu_get_libc_version()],
3367 ac_cv_func_gnu_get_libc_version,
3369 #ifdef HAVE_GNU_LIBC_VERSION_H
3370 #include <gnu/libc-version.h>
3373 [const char *glibc_version = gnu_get_libc_version();],
3374 [ac_cv_func_gnu_get_libc_version=yes],
3375 [ac_cv_func_gnu_get_libc_version=no]
3379 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3380 AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3384 os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|beos*)
3388 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3389 AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3390 AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3392 LIBS="$LIBS $_ICONV_LIBS"
3401 iconv_t h = iconv_open("", "");
3402 iconv(h, NULL, NULL, NULL, NULL);
3405 [ac_cv_func_iconv=yes],
3406 [ac_cv_func_iconv=no]
3409 if test "$ac_cv_func_iconv" = "yes"; then
3410 AC_DEFINE(HAVE_ICONV)
3411 DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3412 LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3413 LIBICONV="$_ICONV_LIBS"
3415 [for iconv() with const input],
3416 ac_cv_func_const_iconv,
3422 const char *input = "testing";
3423 iconv_t h = iconv_open("", "");
3424 iconv(h, &input, NULL, NULL, NULL);
3427 [ac_cv_func_const_iconv=yes],
3428 [ac_cv_func_const_iconv=no]
3431 if test "$ac_cv_func_const_iconv" = "yes"; then
3432 AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3444 dnl **********************
3445 dnl *** va_copy checks ***
3446 dnl **********************
3447 dnl we currently check for all three va_copy possibilities, so we get
3448 dnl all results in config.log for bug reports.
3449 AC_MSG_CHECKING(for an implementation of va_copy())
3450 AC_CACHE_VAL(ac_cv_va_copy,[
3453 void f (int i, ...) {
3454 va_list args1, args2;
3455 va_start (args1, i);
3456 va_copy (args2, args1);
3457 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3459 va_end (args1); va_end (args2);
3461 int main() { f (0, 42); return 0; }],
3467 AC_MSG_RESULT($ac_cv_va_copy)
3468 AC_MSG_CHECKING(for an implementation of __va_copy())
3469 AC_CACHE_VAL(ac_cv___va_copy,[
3472 void f (int i, ...) {
3473 va_list args1, args2;
3474 va_start (args1, i);
3475 __va_copy (args2, args1);
3476 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3478 va_end (args1); va_end (args2);
3480 int main() { f (0, 42); return 0; }],
3481 ac_cv___va_copy=yes,
3486 AC_MSG_RESULT($ac_cv___va_copy)
3487 AC_MSG_CHECKING(whether va_lists can be copied by value)
3488 AC_CACHE_VAL(ac_cv_va_val_copy,[
3491 void f (int i, ...) {
3492 va_list args1, args2;
3493 va_start (args1, i);
3495 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3497 va_end (args1); va_end (args2);
3499 int main() { f (0, 42); return 0; }],
3500 ac_cv_va_val_copy=yes,
3501 ac_cv_va_val_copy=no,
3502 ac_cv_va_val_copy=yes
3505 if test "x$ac_cv_va_copy" = "xyes"; then
3506 AC_DEFINE(VA_COPY, va_copy)
3507 AC_DEFINE(HAVE_VA_COPY)
3508 elif test "x$ac_cv___va_copy" = "xyes"; then
3509 AC_DEFINE(VA_COPY, __va_copy)
3510 AC_DEFINE(HAVE_VA_COPY)
3513 if test "x$ac_cv_va_val_copy" = "xno"; then
3514 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3516 AC_MSG_RESULT($ac_cv_va_val_copy)
3518 dnl Check for dll-challenged libc's.
3519 dnl This check is apparently only needed for Linux.
3522 dnl ===================================================================
3525 rm -rf conftest* _conftest
3527 cat >> conftest.C <<\EOF
3532 void __dump_link_map(void) {
3533 struct link_map *map = _dl_loaded;
3534 while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
3537 dlopen("./conftest1.so",RTLD_LAZY);
3538 dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
3539 dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
3540 dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
3544 /* _dl_loaded isn't defined, so this should be either a libc5 (glibc1) system, or a glibc2 system that doesn't have the multiple load bug (i.e., RH6.0).*/
3545 int main() { printf("./conftest1.so\n"); }
3549 $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
3551 cat >> conftest1.C <<\EOF
3553 void foo(void) {printf("foo in dll called\n");}
3555 ${CXX-g++} -fPIC -c -g conftest1.C
3556 ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
3557 ${CXX-g++} -g conftest.C -o conftest -ldl
3558 cp -f conftest1.so conftest _conftest
3560 if test `./conftest | grep conftest1.so | wc -l` -gt 1
3563 echo "*** Your libc has a bug that can result in loading the same dynamic"
3564 echo "*** library multiple times. This bug is known to be fixed in glibc-2.0.7-32"
3565 echo "*** or later. However, if you choose not to upgrade, the only effect"
3566 echo "*** will be excessive memory usage at runtime."
3570 rm -rf conftest* _conftest
3571 dnl ===================================================================
3575 dnl ===================================================================
3576 dnl ========================================================
3577 dnl By default, turn rtti and exceptions off on g++/egcs
3578 dnl ========================================================
3579 if test "$GNU_CXX"; then
3581 AC_MSG_CHECKING(for C++ exceptions flag)
3583 dnl They changed -f[no-]handle-exceptions to -f[no-]exceptions in g++ 2.8
3584 AC_CACHE_VAL(ac_cv_cxx_exceptions_flags,
3585 [echo "int main() { return 0; }" | cat > conftest.C
3587 ${CXX-g++} ${CXXFLAGS} -c -fno-handle-exceptions conftest.C > conftest.out 2>&1
3589 if egrep "warning.*renamed" conftest.out >/dev/null; then
3590 ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-exceptions
3592 ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-handle-exceptions
3597 AC_MSG_RESULT($ac_cv_cxx_exceptions_flags)
3598 _MOZ_EXCEPTIONS_FLAGS_OFF=$ac_cv_cxx_exceptions_flags
3599 _MOZ_EXCEPTIONS_FLAGS_ON=`echo $ac_cv_cxx_exceptions_flags | sed 's|no-||'`
3602 dnl ========================================================
3603 dnl Put your C++ language/feature checks below
3604 dnl ========================================================
3608 if test "$GNU_CC"; then
3609 AC_CACHE_CHECK(for gcc 3.0 ABI,
3610 ac_cv_gcc_three_abi,
3613 #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
3619 ac_cv_gcc_three_abi="yes",
3620 ac_cv_gcc_three_abi="no")])
3621 if test "$ac_cv_gcc_three_abi" = "yes"; then
3622 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc3}"
3625 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc2}"
3628 AC_SUBST(HAVE_GCC3_ABI)
3631 AC_CACHE_CHECK(for C++ \"explicit\" keyword,
3633 [AC_TRY_COMPILE(class X {
3634 public: explicit X(int i) : i_(i) {}
3638 ac_cv_cpp_explicit=yes,
3639 ac_cv_cpp_explicit=no)])
3640 if test "$ac_cv_cpp_explicit" = yes ; then
3641 AC_DEFINE(HAVE_CPP_EXPLICIT)
3644 AC_CACHE_CHECK(for C++ \"typename\" keyword,
3646 [AC_TRY_COMPILE(class param {
3648 typedef unsigned long num_type;
3651 template <class T> class tplt {
3653 typedef typename T::num_type t_num_type;
3654 t_num_type foo(typename T::num_type num) {
3660 ac_cv_cpp_typename=yes,
3661 ac_cv_cpp_typename=no)])
3662 if test "$ac_cv_cpp_typename" = yes ; then
3663 AC_DEFINE(HAVE_CPP_TYPENAME)
3666 dnl Check for support of modern template specialization syntax
3667 dnl Test code and requirement from scc@netscape.com.
3668 dnl Autoconf cut-and-paste job by waterson@netscape.com
3669 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
3670 ac_cv_cpp_modern_specialize_template_syntax,
3671 [AC_TRY_COMPILE(template <class T> struct X { int a; };
3673 template <> struct X<Y> { double a; };,
3676 ac_cv_cpp_modern_specialize_template_syntax=yes,
3677 ac_cv_cpp_modern_specialize_template_syntax=no)])
3678 if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
3679 AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
3683 dnl Some compilers support only full specialization, and some don't.
3684 AC_CACHE_CHECK(whether partial template specialization works,
3685 ac_cv_cpp_partial_specialization,
3686 [AC_TRY_COMPILE(template <class T> class Foo {};
3687 template <class T> class Foo<T*> {};,
3689 ac_cv_cpp_partial_specialization=yes,
3690 ac_cv_cpp_partial_specialization=no)])
3691 if test "$ac_cv_cpp_partial_specialization" = yes ; then
3692 AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
3695 dnl Some compilers have limited support for operators with templates;
3696 dnl specifically, it is necessary to define derived operators when a base
3697 dnl class's operator declaration should suffice.
3698 AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
3699 ac_cv_need_derived_template_operators,
3700 [AC_TRY_COMPILE([template <class T> class Base { };
3702 Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
3703 template <class T> class Derived : public Base<T> { };],
3704 [Derived<char> a, b;
3705 Base<char> c = a + b;
3707 ac_cv_need_derived_template_operators=no,
3708 ac_cv_need_derived_template_operators=yes)])
3709 if test "$ac_cv_need_derived_template_operators" = yes ; then
3710 AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
3714 dnl Some compilers have trouble detecting that a template class
3715 dnl that derives from another template is actually an instance
3716 dnl of the base class. This test checks for that.
3717 AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
3718 ac_cv_need_cpp_template_cast_to_base,
3719 [AC_TRY_COMPILE([template <class T> class Base { };
3720 template <class T> class Derived : public Base<T> { };
3721 template <class T> int foo(const Base<T>&) { return 0; }],
3722 [Derived<char> bar; return foo(bar);],
3723 ac_cv_need_cpp_template_cast_to_base=no,
3724 ac_cv_need_cpp_template_cast_to_base=yes)])
3725 if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
3726 AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
3729 dnl Some compilers have trouble resolving the ambiguity between two
3730 dnl functions whose arguments differ only by cv-qualifications.
3731 AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
3732 ac_cv_can_resolve_const_ambiguity,
3734 template <class T> class ptrClass {
3738 template <class T> T* a(ptrClass<T> *arg) {
3743 const T* a(const ptrClass<T> *arg) {
3749 ac_cv_can_resolve_const_ambiguity=yes,
3750 ac_cv_can_resolve_const_ambiguity=no)])
3751 if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
3752 AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
3756 dnl We don't do exceptions on unix. The only reason this used to be here
3757 dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses
3758 dnl exceptions. But, we turn exceptions off by default and this test breaks.
3759 dnl So im commenting this out until someone writes some artificial
3760 dnl intelligence to detect not only if the compiler has exceptions, but if
3761 dnl they are enabled as well.
3763 dnl AC_CACHE_CHECK(for C++ \"exceptions\",
3764 dnl ac_cv_cpp_exceptions,
3765 dnl [AC_TRY_COMPILE(class X { public: X() {} };
3766 dnl static void F() { throw X(); },
3767 dnl try { F(); } catch(X & e) { },
3768 dnl ac_cv_cpp_exceptions=yes,
3769 dnl ac_cv_cpp_exceptions=no)])
3770 dnl if test $ac_cv_cpp_exceptions = yes ; then
3771 dnl AC_DEFINE(HAVE_CPP_EXCEPTIONS)
3774 dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
3775 dnl supports it well enough to allow us to use it to change access, but not
3776 dnl to resolve ambiguity. The next two tests determine how well the |using|
3777 dnl keyword is supported.
3779 dnl Check to see if we can change access with |using|. Test both a
3780 dnl legal and an illegal example.
3781 AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
3782 ac_cv_cpp_access_changing_using2,
3784 class A { protected: int foo() { return 0; } };
3785 class B : public A { public: using A::foo; };,
3786 B b; return b.foo();,
3788 class A { public: int foo() { return 1; } };
3789 class B : public A { private: using A::foo; };,
3790 B b; return b.foo();,
3791 ac_cv_cpp_access_changing_using2=no,
3792 ac_cv_cpp_access_changing_using2=yes)],
3793 ac_cv_cpp_access_changing_using2=no)])
3794 if test "$ac_cv_cpp_access_changing_using2" = yes ; then
3795 AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
3798 dnl Check to see if we can resolve ambiguity with |using|.
3799 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3800 ac_cv_cpp_ambiguity_resolving_using,
3801 [AC_TRY_COMPILE(class X {
3802 public: int go(const X&) {return 3;}
3803 int jo(const X&) {return 3;}
3805 class Y : public X {
3806 public: int go(int) {return 2;}
3807 int jo(int) {return 2;}
3809 private: using X::go;
3812 ac_cv_cpp_ambiguity_resolving_using=yes,
3813 ac_cv_cpp_ambiguity_resolving_using=no)])
3814 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3815 AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3818 dnl Check to see if the |std| namespace is supported. If so, we'll want
3819 dnl to qualify any standard library calls with "std::" to ensure that
3820 dnl those functions can be resolved.
3821 AC_CACHE_CHECK(for \"std::\" namespace,
3822 ac_cv_cpp_namespace_std,
3823 [AC_TRY_COMPILE([#include <algorithm>],
3824 [return std::min(0, 1);],
3825 ac_cv_cpp_namespace_std=yes,
3826 ac_cv_cpp_namespace_std=no)])
3827 if test "$ac_cv_cpp_namespace_std" = yes ; then
3828 AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
3831 dnl Older compilers are overly ambitious with respect to using the standard
3832 dnl template library's |operator!=()| when |operator==()| is defined. In
3833 dnl which case, defining |operator!=()| in addition to |operator==()| causes
3834 dnl ambiguity at compile-time. This test checks for that case.
3835 AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
3836 ac_cv_cpp_unambiguous_std_notequal,
3837 [AC_TRY_COMPILE([#include <algorithm>
3839 int operator==(const T1&, const T1&) { return 0; }
3840 int operator!=(const T1&, const T1&) { return 0; }],
3841 [T1 a,b; return a != b;],
3842 ac_cv_cpp_unambiguous_std_notequal=unambiguous,
3843 ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
3844 if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
3845 AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
3849 AC_CACHE_CHECK(for C++ reinterpret_cast,
3850 ac_cv_cpp_reinterpret_cast,
3851 [AC_TRY_COMPILE(struct X { int i; };
3852 struct Y { int i; };,
3853 X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
3854 ac_cv_cpp_reinterpret_cast=yes,
3855 ac_cv_cpp_reinterpret_cast=no)])
3856 if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
3857 AC_DEFINE(HAVE_CPP_NEW_CASTS)
3860 dnl See if a dynamic_cast to void* gives the most derived object.
3861 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
3862 ac_cv_cpp_dynamic_cast_void_ptr,
3863 [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
3864 class Y { int j; public: virtual ~Y() { } };
3865 class Z : public X, public Y { int k; };
3871 return !((((void*)&mdo != (void*)subx) &&
3872 ((void*)&mdo == dynamic_cast<void*>(subx))) ||
3873 (((void*)&mdo != (void*)suby) &&
3874 ((void*)&mdo == dynamic_cast<void*>(suby))));
3876 ac_cv_cpp_dynamic_cast_void_ptr=yes,
3877 ac_cv_cpp_dynamic_cast_void_ptr=no,
3878 ac_cv_cpp_dynamic_cast_void_ptr=no)])
3879 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
3880 AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
3884 dnl note that this one is reversed - if the test fails, then
3885 dnl we require implementations of unused virtual methods. Which
3886 dnl really blows because it means we'll have useless vtable
3888 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
3889 ac_cv_cpp_unused_required,
3890 [AC_TRY_LINK(class X {private: virtual void never_called();};,
3892 ac_cv_cpp_unused_required=no,
3893 ac_cv_cpp_unused_required=yes)])
3894 if test "$ac_cv_cpp_unused_required" = yes ; then
3895 AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
3899 dnl Some compilers have trouble comparing a constant reference to a templatized
3900 dnl class to zero, and require an explicit operator==() to be defined that takes
3901 dnl an int. This test separates the strong from the weak.
3903 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
3904 ac_cv_trouble_comparing_to_zero,
3905 [AC_TRY_COMPILE([#include <algorithm>
3906 template <class T> class Foo {};
3908 template <class T> int operator==(const T2*, const T&) { return 0; }
3909 template <class T> int operator!=(const T2*, const T&) { return 0; }],
3910 [Foo<int> f; return (0 != f);],
3911 ac_cv_trouble_comparing_to_zero=no,
3912 ac_cv_trouble_comparing_to_zero=yes)])
3913 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
3914 AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
3919 dnl End of C++ language/feature checks
3922 dnl ========================================================
3923 dnl = Internationalization checks
3924 dnl ========================================================
3926 dnl Internationalization and Locale support is different
3927 dnl on various UNIX platforms. Checks for specific i18n
3928 dnl features go here.
3930 dnl check for LC_MESSAGES
3931 AC_CACHE_CHECK(for LC_MESSAGES,
3932 ac_cv_i18n_lc_messages,
3933 [AC_TRY_COMPILE([#include <locale.h>],
3934 [int category = LC_MESSAGES;],
3935 ac_cv_i18n_lc_messages=yes,
3936 ac_cv_i18n_lc_messages=no)])
3937 if test "$ac_cv_i18n_lc_messages" = yes; then
3938 AC_DEFINE(HAVE_I18N_LC_MESSAGES)
3941 fi # SKIP_COMPILER_CHECKS
3944 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
3945 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
3948 dnl Mozilla specific options
3949 dnl ========================================================
3950 dnl The macros used for command line options
3951 dnl are defined in build/autoconf/altoptions.m4.
3954 dnl ========================================================
3956 dnl = Check for external package dependencies
3958 dnl ========================================================
3959 MOZ_ARG_HEADER(External Packages)
3963 MOZ_ARG_WITH_STRING(libxul-sdk,
3964 [ --with-libxul-sdk=PFX Use the libXUL SDK at <PFX>],
3965 LIBXUL_SDK_DIR=$withval)
3967 if test "$LIBXUL_SDK_DIR" = "yes"; then
3968 AC_MSG_ERROR([--with-libxul-sdk must specify a path])
3969 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
3970 LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
3972 if test ! -f "$LIBXUL_SDK/sdk/include/xpcom-config.h"; then
3973 AC_MSG_ERROR([$LIBXUL_SDK/sdk/include/xpcom-config.h doesn't exist])
3978 AC_SUBST(LIBXUL_SDK)
3980 dnl ========================================================
3981 dnl = If NSPR was not detected in the system,
3982 dnl = use the one in the source tree (mozilla/nsprpub)
3983 dnl ========================================================
3984 MOZ_ARG_WITH_BOOL(system-nspr,
3985 [ --with-system-nspr Use system installed NSPR],
3986 _USE_SYSTEM_NSPR=1 )
3988 if test -n "$_USE_SYSTEM_NSPR"; then
3989 AM_PATH_NSPR(4.7.0, [MOZ_NATIVE_NSPR=1], [MOZ_NATIVE_NSPR=])
3992 if test -n "$MOZ_NATIVE_NSPR"; then
3993 _SAVE_CFLAGS=$CFLAGS
3994 CFLAGS="$CFLAGS $NSPR_CFLAGS"
3995 AC_TRY_COMPILE([#include "prlog.h"],
3996 [#ifndef PR_STATIC_ASSERT
3997 #error PR_STATIC_ASSERT not defined
3999 [MOZ_NATIVE_NSPR=1],
4000 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT]))
4001 CFLAGS=$_SAVE_CFLAGS
4003 NSPR_CFLAGS='`$(DEPTH)/nsprpub/config/nspr-config --prefix=$(LIBXUL_DIST) --includedir=$(LIBXUL_DIST)/include/nspr --cflags`'
4004 # explicitly set libs for Visual Age C++ for OS/2
4005 if test "$OS_ARCH" = "OS2" -a "$VACPP" = "yes"; then
4006 NSPR_LIBS='$(LIBXUL_DIST)/lib/nspr'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plc'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plds'$NSPR_VERSION'.lib '$_PTHREAD_LDFLAGS''
4007 elif test "$OS_ARCH" = "WINCE"; then
4008 NSPR_CFLAGS='-I$(LIBXUL_DIST)/include/nspr'
4009 NSPR_LIBS='$(LIBXUL_DIST)/lib/nspr'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plc'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plds'$NSPR_VERSION'.lib '
4010 elif test "$OS_ARCH" = "WINNT"; then
4011 NSPR_CFLAGS='-I$(LIBXUL_DIST)/include/nspr'
4012 if test -n "$GNU_CC"; then
4013 NSPR_LIBS="-L\$(LIBXUL_DIST)/lib -lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION"
4015 NSPR_LIBS='$(LIBXUL_DIST)/lib/nspr'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plc'$NSPR_VERSION'.lib $(LIBXUL_DIST)/lib/plds'$NSPR_VERSION'.lib '
4018 NSPR_LIBS='`$(DEPTH)/nsprpub/config/nspr-config --prefix=$(LIBXUL_DIST) --libdir=$(LIBXUL_DIST)/lib --libs`'
4022 dnl ========================================================
4023 dnl = If NSS was not detected in the system,
4024 dnl = use the one in the source tree (mozilla/security/nss)
4025 dnl ========================================================
4027 MOZ_ARG_WITH_BOOL(system-nss,
4028 [ --with-system-nss Use system installed NSS],
4031 if test -n "$_USE_SYSTEM_NSS"; then
4032 AM_PATH_NSS(3.12.0, [MOZ_NATIVE_NSS=1], [MOZ_NATIVE_NSS=])
4035 if test -n "$MOZ_NATIVE_NSS"; then
4036 NSS_LIBS="$NSS_LIBS -lcrmf"
4038 NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4040 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4041 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4042 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4043 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4044 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX) \
4045 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)softokn$NSS_VERSION\$(DLL_SUFFIX)"
4047 if test -z "$GNU_CC" && test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "WINCE" -o "$OS_ARCH" = "OS2"; then
4049 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4050 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4051 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4052 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4053 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4054 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)softokn$NSS_VERSION.\$(IMPORT_LIB_SUFFIX)"
4056 NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION -lsoftokn$NSS_VERSION"
4060 if test -z "$SKIP_LIBRARY_CHECKS"; then
4061 dnl system JPEG support
4062 dnl ========================================================
4063 MOZ_ARG_WITH_STRING(system-jpeg,
4064 [ --with-system-jpeg[=PFX]
4065 Use system libjpeg [installed at prefix PFX]],
4068 _SAVE_CFLAGS=$CFLAGS
4069 _SAVE_LDFLAGS=$LDFLAGS
4071 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4072 CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4073 LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4075 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4078 AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS)
4081 if test "$SYSTEM_JPEG" = 1; then
4082 LIBS="$JPEG_LIBS $LIBS"
4083 AC_TRY_COMPILE([ #include <stdio.h>
4084 #include <sys/types.h>
4085 #include <jpeglib.h> ],
4086 [ #if JPEG_LIB_VERSION < $MOZJPEG
4087 #error "Insufficient JPEG library version ($MOZJPEG required)."
4090 [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=])
4092 CFLAGS=$_SAVE_CFLAGS
4093 LDFLAGS=$_SAVE_LDFLAGS
4096 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$SYSTEM_JPEG" = 1; then
4097 JPEG_CFLAGS="-I${JPEG_DIR}/include"
4098 JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
4101 dnl system ZLIB support
4102 dnl ========================================================
4103 MOZ_ARG_WITH_STRING(system-zlib,
4104 [ --with-system-zlib[=PFX]
4105 Use system libz [installed at prefix PFX]],
4108 _SAVE_CFLAGS=$CFLAGS
4109 _SAVE_LDFLAGS=$LDFLAGS
4111 if test -n "${ZLIB_DIR}" -a "${ZLIB_DIR}" != "yes"; then
4112 CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
4113 LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
4115 if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
4118 AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"],
4119 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
4121 if test "$SYSTEM_ZLIB" = 1; then
4122 LIBS="$ZLIB_LIBS $LIBS"
4123 AC_TRY_COMPILE([ #include <stdio.h>
4125 #include <zlib.h> ],
4126 [ #if ZLIB_VERNUM < $MOZZLIB
4127 #error "Insufficient zlib version ($MOZZLIB required)."
4130 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=])
4132 CFLAGS=$_SAVE_CFLAGS
4133 LDFLAGS=$_SAVE_LDFLAGS
4136 if test "${ZLIB_DIR}" -a -d "${ZLIB_DIR}" -a "$SYSTEM_ZLIB" = 1; then
4137 ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
4138 ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
4141 dnl system BZIP2 Support
4142 dnl ========================================================
4143 MOZ_ARG_WITH_STRING(system-bz2,
4144 [ --with-system-bz2[=PFX]
4145 Use system libbz2 [installed at prefix PFX]],
4148 _SAVE_CFLAGS=$CFLAGS
4149 _SAVE_LDFLAGS=$LDFLAGS
4151 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4152 CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4153 LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4155 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4158 AC_CHECK_LIB(bz2, BZ2_bzread, [SYSTEM_BZ2=1 BZ2_LIBS="-lbz2"],
4159 [SYSTEM_BZ2= BZ2_CFLAGS= BZ2_LIBS=], $BZ2_LIBS)
4161 CFLAGS=$_SAVE_CFLAGS
4162 LDFLAGS=$_SAVE_LDFLAGS
4165 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$SYSTEM_BZ2" = 1; then
4166 BZ2_CFLAGS="-I${BZ2_DIR}/include"
4167 BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
4170 dnl system PNG Support
4171 dnl ========================================================
4172 MOZ_ARG_WITH_STRING(system-png,
4173 [ --with-system-png[=PFX]
4174 Use system libpng [installed at prefix PFX]],
4177 _SAVE_CFLAGS=$CFLAGS
4178 _SAVE_LDFLAGS=$LDFLAGS
4180 CFLAGS="$ZLIB_CFLAGS $CFLAGS"
4181 LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
4182 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4183 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4184 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4186 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4189 _SAVE_PNG_LIBS=$PNG_LIBS
4190 AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"],
4191 AC_MSG_ERROR([--with-system-png requested but no working libpng found]),
4193 AC_CHECK_LIB(png, png_get_acTL, ,
4194 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]),
4197 if test "$SYSTEM_PNG" = 1; then
4198 LIBS="$PNG_LIBS $LIBS"
4199 AC_TRY_COMPILE([ #include <stdio.h>
4200 #include <sys/types.h>
4202 [ #if PNG_LIBPNG_VER < $MOZPNG
4203 #error "Insufficient libpng version ($MOZPNG required)."
4205 #ifndef PNG_UINT_31_MAX
4206 #error "Insufficient libpng version."
4209 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4211 CFLAGS=$_SAVE_CFLAGS
4212 LDFLAGS=$_SAVE_LDFLAGS
4215 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
4216 PNG_CFLAGS="-I${PNG_DIR}/include"
4217 PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
4220 fi # SKIP_LIBRARY_CHECKS
4222 dnl system HunSpell Support
4223 dnl ========================================================
4224 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4225 [ --enable-system-hunspell Use system hunspell (located with pkgconfig)],
4228 if test -n "$SYSTEM_HUNSPELL"; then
4229 PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4232 AC_SUBST(SYSTEM_HUNSPELL)
4234 dnl check whether to enable glitz
4235 dnl ========================================================
4236 MOZ_ARG_ENABLE_BOOL(glitz,
4237 [ --enable-glitz Enable Glitz for use with Cairo],
4240 if test "$MOZ_ENABLE_GLITZ"; then
4241 AC_DEFINE(MOZ_ENABLE_GLITZ)
4244 dnl ========================================================
4245 dnl Java SDK support
4246 dnl ========================================================
4248 MOZ_ARG_WITH_STRING(java-include-path,
4249 [ --with-java-include-path=dir Location of Java SDK headers],
4250 JAVA_INCLUDE_PATH=$withval)
4253 MOZ_ARG_WITH_STRING(java-bin-path,
4254 [ --with-java-bin-path=dir Location of Java binaries (java, javac, jar)],
4255 JAVA_BIN_PATH=$withval)
4257 dnl ========================================================
4261 dnl ========================================================
4263 MOZ_ARG_HEADER(Application)
4267 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4268 MOZ_BRANDING_DIRECTORY=
4270 MOZ_DBGRINFO_MODULES=
4272 MOZ_EXTENSIONS_ALL=" wallet xml-rpc venkman inspector irc typeaheadfind gnomevfs sroaming datetime finger cview layout-debug tasks sql xforms schema-validation reporter"
4274 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg bmp xbm icon"
4275 MOZ_IMG_ENCODERS_DEFAULT="png jpeg"
4288 MOZ_AUTH_EXTENSION=1
4289 MOZ_NO_ACTIVEX_SUPPORT=1
4290 MOZ_NO_INSPECTOR_APIS=
4291 MOZ_NO_XPCOM_OBSOLETE=
4296 MOZ_PLAINTEXT_EDITOR_ONLY=
4298 MOZ_PREF_EXTENSIONS=1
4299 MOZ_PROFILELOCKING=1
4300 MOZ_PROFILESHARING=1
4302 MOZ_PYTHON_EXTENSIONS="xpcom dom"
4304 MOZ_PYTHON_DEBUG_SUFFIX=
4305 MOZ_PYTHON_DLL_SUFFIX=
4306 MOZ_PYTHON_INCLUDES=
4310 MOZ_PYTHON_VER_DOTTED=
4316 MOZ_STATIC_MAIL_BUILD=
4321 MOZ_UNIVERSALCHARDET=1
4323 MOZ_USE_NATIVE_UCONV=
4328 MOZ_XPFE_COMPONENTS=1
4330 MOZ_XSLT_STANDALONE=
4338 NECKO_PROTOCOLS_DEFAULT="about data file ftp gopher http res viewsource"
4339 NECKO_SMALL_BUFFERS=
4342 XPC_IDISPATCH_SUPPORT=
4345 case "$target_os" in
4354 case "$target_os" in
4355 msvc*|mks*|cygwin*|mingw*)
4356 if test -z "$GNU_CC"; then
4357 XPC_IDISPATCH_SUPPORT=1
4358 MOZ_NO_ACTIVEX_SUPPORT=
4359 MOZ_ACTIVEX_SCRIPTING_SUPPORT=1
4364 MOZ_ARG_ENABLE_STRING(application,
4365 [ --enable-application=APP
4375 content/xslt (Standalone Transformiix XSLT)
4376 netwerk (Standalone Necko)
4377 tools/update-packaging (AUS-related packaging tools)
4378 standalone (use this for standalone
4379 xpcom/xpconnect or to manually drive a build)],
4380 [ MOZ_BUILD_APP=$enableval ] )
4382 if test "$MOZ_BUILD_APP" = "macbrowser"; then
4383 AC_MSG_WARN([--enable-application=macbrowser is deprecated. Use --enable-application=camino.])
4384 MOZ_BUILD_APP=camino
4387 case "$MOZ_BUILD_APP" in
4389 MOZ_EMBEDDING_PROFILE=basic
4393 MOZ_EMBEDDING_PROFILE=default
4397 MOZ_ARG_WITH_STRING(embedding-profile,
4398 [ --with-embedding-profile=default|basic|minimal
4399 see http://wiki.mozilla.org/Gecko:Small_Device_Support],
4400 [ MOZ_EMBEDDING_PROFILE=$withval ])
4402 case "$MOZ_EMBEDDING_PROFILE" in
4404 MOZ_EMBEDDING_LEVEL_DEFAULT=1
4405 MOZ_EMBEDDING_LEVEL_BASIC=1
4406 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4407 AC_DEFINE(MOZ_EMBEDDING_LEVEL_DEFAULT)
4408 AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4409 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4413 MOZ_EMBEDDING_LEVEL_DEFAULT=
4414 MOZ_EMBEDDING_LEVEL_BASIC=1
4415 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4416 AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4417 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4419 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4422 MOZ_ENABLE_POSTSCRIPT=
4423 MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4424 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4425 MOZ_IMG_ENCODERS_DEFAULT=
4433 MOZ_NO_ACTIVEX_SUPPORT=1
4434 MOZ_NO_INSPECTOR_APIS=1
4435 MOZ_NO_XPCOM_OBSOLETE=1
4438 MOZ_PLAINTEXT_EDITOR_ONLY=1
4440 MOZ_PREF_EXTENSIONS=
4445 MOZ_UNIVERSALCHARDET=
4447 MOZ_USE_NATIVE_UCONV=
4449 MOZ_XPFE_COMPONENTS=
4454 NECKO_PROTOCOLS_DEFAULT="about data http file res"
4455 NECKO_SMALL_BUFFERS=1
4456 NS_DISABLE_LOGGING=1
4462 MOZ_EMBEDDING_LEVEL_DEFAULT=
4463 MOZ_EMBEDDING_LEVEL_BASIC=
4464 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4465 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4467 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4470 MOZ_ENABLE_POSTSCRIPT=
4471 MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4472 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4473 MOZ_IMG_ENCODERS_DEFAULT=
4481 MOZ_NO_ACTIVEX_SUPPORT=1
4482 MOZ_NO_INSPECTOR_APIS=1
4483 MOZ_NO_XPCOM_OBSOLETE=1
4486 MOZ_PLAINTEXT_EDITOR_ONLY=1
4488 MOZ_PREF_EXTENSIONS=
4495 MOZ_UNIVERSALCHARDET=
4497 MOZ_USE_NATIVE_UCONV=1
4499 MOZ_XPFE_COMPONENTS=
4506 NECKO_PROTOCOLS_DEFAULT="about data http file res"
4507 NECKO_SMALL_BUFFERS=1
4508 NS_DISABLE_LOGGING=1
4514 AC_MSG_ERROR([Unrecognized value: --with-embedding-profile=$MOZ_EMBEDDING_PROFILE])
4518 AC_SUBST(MOZ_EMBEDDING_LEVEL_DEFAULT)
4519 AC_SUBST(MOZ_EMBEDDING_LEVEL_BASIC)
4520 AC_SUBST(MOZ_EMBEDDING_LEVEL_MINIMAL)
4522 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
4523 [ --with-xulrunner-stub-name=appname Create the xulrunner stub with the given name],
4524 XULRUNNER_STUB_NAME=$withval)
4526 if test -z "$XULRUNNER_STUB_NAME"; then
4527 case "$target_os" in
4529 XULRUNNER_STUB_NAME=xulrunner
4532 XULRUNNER_STUB_NAME=xulrunner-stub
4535 AC_SUBST(XULRUNNER_STUB_NAME)
4537 if test -z "$MOZ_BUILD_APP"; then
4538 AC_MSG_ERROR([--enable-application=APP was not specified and is required.])
4540 # We have a valid application only if it has a build.mk file in its top
4542 if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
4543 AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4547 # Allow the application to influence configure with a confvars.sh script.
4549 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4550 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4551 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4552 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4557 # Now is a good time to test for logic errors, define mismatches, etc.
4558 case "$MOZ_BUILD_APP" in
4560 if test "$LIBXUL_SDK"; then
4561 AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4565 # Fix this case for folks who forget. Warn them.
4566 if test -n "$LIBXUL_SDK" -a -z "$MOZ_XUL_APP"; then
4567 AC_MSG_WARN([Setting MOZ_XUL_APP since LIBXUL_SDK was set. Add to confvars.sh!])
4573 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4574 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4576 case "$MOZ_BUILD_APP" in
4578 AC_DEFINE(MOZ_SUITE)
4582 AC_DEFINE(MOZ_PHOENIX)
4590 AC_DEFINE(MOZ_THUNDERBIRD)
4594 AC_DEFINE(MOZ_STANDALONE_COMPOSER)
4598 AC_DEFINE(MOZ_SUNBIRD)
4602 AC_DEFINE(MOZ_XULRUNNER)
4606 AC_DEFINE(MOZ_MACBROWSER)
4614 MOZ_APP_NAME=mozilla
4615 MOZ_APP_DISPLAYNAME=Mozilla
4616 MOZ_APP_VERSION=$MOZILLA_VERSION
4621 AC_SUBST(MOZ_BUILD_APP)
4622 AC_SUBST(MOZ_XUL_APP)
4624 AC_SUBST(MOZ_PHOENIX)
4625 AC_SUBST(MOZ_THUNDERBIRD)
4626 AC_SUBST(MOZ_STANDALONE_COMPOSER)
4627 AC_SUBST(MOZ_SUNBIRD)
4628 AC_SUBST(MOZ_XULRUNNER)
4630 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4632 if test "$MOZ_XUL_APP"; then
4634 AC_DEFINE(MOZ_XUL_APP)
4637 dnl ========================================================
4639 dnl = Toolkit Options
4641 dnl ========================================================
4642 MOZ_ARG_HEADER(Toolkit Options)
4644 dnl ========================================================
4645 dnl = Select the default toolkit
4646 dnl ========================================================
4647 MOZ_ARG_ENABLE_STRING(default-toolkit,
4648 [ --enable-default-toolkit=TK
4649 Select default toolkit
4650 Platform specific defaults:
4652 Mac OS X - cairo-cocoa
4653 Neutrino/QNX - photon
4655 Win32 - cairo-windows
4658 [ _DEFAULT_TOOLKIT=$enableval ],
4659 [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4661 if test "$_DEFAULT_TOOLKIT" = "photon" \
4662 -o "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4663 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4664 -o "$_DEFAULT_TOOLKIT" = "cairo-beos" \
4665 -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
4666 -o "$_DEFAULT_TOOLKIT" = "cairo-mac" \
4667 -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa"
4669 dnl nglayout only supports building with one toolkit,
4670 dnl so ignore everything after the first comma (",").
4671 MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4673 if test "$no_x" != "yes"; then
4674 AC_MSG_ERROR([Toolkit must be cairo-gtk2.])
4676 AC_MSG_ERROR([Toolkit must be $_PLATFORM_DEFAULT_TOOLKIT (if supported).])
4680 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_TOOLKIT,"$MOZ_WIDGET_TOOLKIT")
4682 dnl ========================================================
4683 dnl = Enable the toolkit as needed =
4684 dnl ========================================================
4686 case "$MOZ_WIDGET_TOOLKIT" in
4689 AC_DEFINE(MOZ_WIDGET_PHOTON)
4693 MOZ_WIDGET_TOOLKIT=windows
4694 MOZ_GFX_TOOLKIT=cairo
4698 MOZ_WIDGET_TOOLKIT=gtk2
4699 MOZ_GFX_TOOLKIT=cairo
4701 MOZ_ENABLE_XREMOTE=1
4702 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4703 TK_LIBS='$(MOZ_GTK2_LIBS)'
4704 AC_DEFINE(MOZ_WIDGET_GTK2)
4707 MOZ_WIDGET_TOOLKIT=beos
4708 MOZ_GFX_TOOLKIT=cairo
4709 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4710 TK_LIBS='$(MOZ_CAIRO_LIBS)'
4714 MOZ_WIDGET_TOOLKIT=os2
4715 MOZ_GFX_TOOLKIT=cairo
4716 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4717 TK_LIBS='$(MOZ_CAIRO_LIBS)'
4720 cairo-mac|cairo-cocoa)
4721 if test "$MOZ_WIDGET_TOOLKIT" = "cairo-cocoa"; then
4722 MOZ_WIDGET_TOOLKIT=cocoa
4723 AC_DEFINE(MOZ_WIDGET_COCOA)
4726 MOZ_WIDGET_TOOLKIT=mac
4728 MOZ_GFX_TOOLKIT=cairo
4729 MOZ_USER_DIR="Mozilla"
4730 AC_DEFINE(XP_MACOSX)
4731 AC_DEFINE(TARGET_CARBON)
4732 AC_DEFINE(TARGET_API_MAC_CARBON)
4733 TK_LIBS='-framework Carbon'
4734 TK_CFLAGS="-I${MACOS_SDK_DIR}/Developer/Headers/FlatCarbon"
4735 CFLAGS="$CFLAGS $TK_CFLAGS"
4736 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4740 if test "$MOZ_ENABLE_XREMOTE"; then
4741 AC_DEFINE(MOZ_ENABLE_XREMOTE)
4744 if test "$COMPILE_ENVIRONMENT"; then
4745 if test "$MOZ_ENABLE_GTK2"
4747 PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 gdk-x11-2.0 glib-2.0 gobject-2.0)
4749 fi # COMPILE_ENVIRONMENT
4751 AC_SUBST(MOZ_DEFAULT_TOOLKIT)
4753 dnl ========================================================
4754 dnl = startup-notification support module
4755 dnl ========================================================
4757 if test "$MOZ_ENABLE_GTK2"
4759 MOZ_ENABLE_STARTUP_NOTIFICATION=
4761 MOZ_ARG_ENABLE_BOOL(startup-notification,
4762 [ --enable-startup-notification Enable startup-notification support (default: disabled) ],
4763 MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4764 MOZ_ENABLE_STARTUP_NOTIFICATION=)
4765 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4767 PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4768 libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4769 [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4770 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4772 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4774 MOZ_ENABLE_STARTUP_NOTIFICATION=
4778 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4779 AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4782 TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4784 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4785 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4786 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4788 AC_SUBST(GTK_CONFIG)
4792 AC_SUBST(MOZ_ENABLE_GTK2)
4793 AC_SUBST(MOZ_ENABLE_PHOTON)
4794 AC_SUBST(MOZ_ENABLE_COCOA)
4795 AC_SUBST(MOZ_ENABLE_GLITZ)
4796 AC_SUBST(MOZ_ENABLE_XREMOTE)
4797 AC_SUBST(MOZ_GTK2_CFLAGS)
4798 AC_SUBST(MOZ_GTK2_LIBS)
4802 if test "$MOZ_ENABLE_GTK2"
4809 dnl ========================================================
4811 dnl = Components & Features
4813 dnl ========================================================
4814 MOZ_ARG_HEADER(Components and Features)
4816 dnl ========================================================
4818 dnl ========================================================
4819 MOZ_ARG_ENABLE_STRING(ui-locale,
4820 [ --enable-ui-locale=ab-CD
4821 Select the user interface locale (default: en-US)],
4822 MOZ_UI_LOCALE=$enableval )
4823 AC_SUBST(MOZ_UI_LOCALE)
4825 dnl =========================================================
4826 dnl = Calendar client
4827 dnl =========================================================
4828 MOZ_ARG_ENABLE_BOOL(calendar,,
4832 if test "$MOZ_OLD_CALENDAR"; then
4833 AC_MSG_WARN([Building with the calendar extension is no longer supported.])
4834 if test "$MOZ_THUNDERBIRD"; then
4835 AC_MSG_WARN([Since you're trying to build mail, you could try adding])
4836 AC_MSG_WARN(['--enable-extensions=default,lightning' to your mozconfig])
4837 AC_MSG_WARN([and building WITH A FRESH TREE.])
4839 AC_MSG_WARN([For more information, please visit:])
4840 AC_MSG_ERROR([http://www.mozilla.org/projects/calendar/])
4843 AC_SUBST(MOZ_CALENDAR)
4845 dnl =========================================================
4847 dnl =========================================================
4848 MOZ_ARG_DISABLE_BOOL(mailnews,
4849 [ --disable-mailnews Disable building of mail & news components],
4852 AC_SUBST(MOZ_MAIL_NEWS)
4854 dnl =========================================================
4856 dnl =========================================================
4857 MOZ_ARG_DISABLE_BOOL(ldap,
4858 [ --disable-ldap Disable LDAP support],
4862 dnl ========================================================
4863 dnl = Trademarked Branding
4864 dnl ========================================================
4865 MOZ_ARG_ENABLE_BOOL(official-branding,
4866 [ --enable-official-branding Enable Official mozilla.org Branding
4867 Do not distribute builds with
4868 --enable-official-branding unless you have
4869 permission to use trademarks per
4870 http://www.mozilla.org/foundation/trademarks/ .],
4871 [case "$MOZ_BUILD_APP" in
4873 MOZ_BRANDING_DIRECTORY=other-licenses/branding/firefox
4874 MOZ_APP_DISPLAYNAME=Firefox
4878 MOZ_BRANDING_DIRECTORY=other-licenses/branding/sunbird
4879 MOZ_APP_DISPLAYNAME=Sunbird
4883 MOZ_BRANDING_DIRECTORY=other-licenses/branding/thunderbird
4887 AC_MSG_ERROR([Official branding is only available for Firefox Sunbird and Thunderbird.])
4891 MOZ_ARG_WITH_STRING(branding,
4892 [ --with-branding=dir Use branding from the specified directory.],
4893 MOZ_BRANDING_DIRECTORY=$withval)
4895 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4896 if test -z "$REAL_BRANDING_DIRECTORY"; then
4897 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
4900 if test -f "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"; then
4901 . "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"
4904 AC_SUBST(MOZ_BRANDING_DIRECTORY)
4906 dnl ========================================================
4907 dnl = Distribution ID
4908 dnl ========================================================
4909 MOZ_ARG_WITH_STRING(distribution-id,
4910 [ --with-distribution-id=ID Set distribution-specific id (default=org.mozilla)],
4911 [ val=`echo $withval`
4912 MOZ_DISTRIBUTION_ID="$val"])
4914 if test -z "$MOZ_DISTRIBUTION_ID"; then
4915 MOZ_DISTRIBUTION_ID="org.mozilla"
4918 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
4919 AC_SUBST(MOZ_DISTRIBUTION_ID)
4921 dnl ========================================================
4923 dnl ========================================================
4924 if test "$MOZ_ENABLE_GTK2"
4926 PKG_CHECK_MODULES(MOZ_XFT, xft)
4927 AC_SUBST(MOZ_XFT_CFLAGS)
4928 AC_SUBST(MOZ_XFT_LIBS)
4930 PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
4931 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangocairo >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
4932 AC_SUBST(MOZ_PANGO_CFLAGS)
4933 AC_SUBST(MOZ_PANGO_LIBS)
4936 dnl ========================================================
4937 dnl = PostScript print module
4938 dnl ========================================================
4939 MOZ_ARG_DISABLE_BOOL(postscript,
4940 [ --disable-postscript Disable PostScript printing support ],
4941 MOZ_ENABLE_POSTSCRIPT=,
4942 MOZ_ENABLE_POSTSCRIPT=1 )
4944 dnl ========================================================
4945 dnl = GnomeVFS support module
4946 dnl ========================================================
4950 dnl build the gnomevfs extension by default only when the
4951 dnl GTK2 toolkit is in use.
4952 if test "$MOZ_ENABLE_GTK2"
4954 MOZ_ENABLE_GNOMEVFS=1
4956 MOZ_ENABLE_LIBGNOME=1
4959 MOZ_ARG_DISABLE_BOOL(gnomevfs,
4960 [ --disable-gnomevfs Disable GnomeVFS support ],
4961 MOZ_ENABLE_GNOMEVFS=,
4962 MOZ_ENABLE_GNOMEVFS=force)
4964 if test "$MOZ_ENABLE_GNOMEVFS"
4966 PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
4967 MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
4968 MOZ_ENABLE_GNOMEVFS=1
4970 if test "$MOZ_ENABLE_GNOMEVFS" = "force"
4972 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
4974 MOZ_ENABLE_GNOMEVFS=
4978 AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
4979 AC_SUBST(MOZ_GNOMEVFS_LIBS)
4981 if test "$MOZ_ENABLE_GCONF"
4983 PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION,[
4984 MOZ_GCONF_LIBS=`echo $MOZ_GCONF_LIBS | sed 's/-llinc\>//'`
4991 if test "$MOZ_ENABLE_GCONF"; then
4992 AC_DEFINE(MOZ_ENABLE_GCONF)
4995 AC_SUBST(MOZ_ENABLE_GCONF)
4996 AC_SUBST(MOZ_GCONF_CFLAGS)
4997 AC_SUBST(MOZ_GCONF_LIBS)
4999 if test "$MOZ_ENABLE_LIBGNOME"
5001 PKG_CHECK_MODULES(MOZ_LIBGNOME, libgnome-2.0 >= $LIBGNOME_VERSION,[
5002 MOZ_LIBGNOME_LIBS=`echo $MOZ_LIBGNOME_LIBS | sed 's/-llinc\>//'`
5003 MOZ_ENABLE_LIBGNOME=1
5005 MOZ_ENABLE_LIBGNOME=
5009 AC_SUBST(MOZ_LIBGNOME_CFLAGS)
5010 AC_SUBST(MOZ_LIBGNOME_LIBS)
5012 # The GNOME component is built if gtk2, gconf, gnome-vfs, and libgnome
5013 # are all available.
5015 if test "$MOZ_ENABLE_GTK2" -a "$MOZ_ENABLE_GCONF" -a \
5016 "$MOZ_ENABLE_GNOMEVFS" -a "$MOZ_ENABLE_LIBGNOME"; then
5017 MOZ_ENABLE_GNOME_COMPONENT=1
5019 MOZ_ENABLE_GNOME_COMPONENT=
5022 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5025 dnl ========================================================
5026 dnl = libgnomeui support module
5027 dnl ========================================================
5029 if test "$MOZ_ENABLE_GTK2"
5031 MOZ_ENABLE_GNOMEUI=1
5033 MOZ_ARG_DISABLE_BOOL(gnomeui,
5034 [ --disable-gnomeui Disable libgnomeui support (default: auto, optional at runtime) ],
5035 MOZ_ENABLE_GNOMEUI=,
5036 MOZ_ENABLE_GNOMEUI=force)
5038 if test "$MOZ_ENABLE_GNOMEUI"
5040 PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5042 MOZ_GNOMEUI_LIBS=`echo $MOZ_GNOMEUI_LIBS | sed 's/-llinc\>//'`
5043 MOZ_ENABLE_GNOMEUI=1
5045 if test "$MOZ_ENABLE_GNOMEUI" = "force"
5047 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5053 if test "$MOZ_ENABLE_GNOMEUI"; then
5054 AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5057 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5058 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5059 AC_SUBST(MOZ_GNOMEUI_LIBS)
5061 dnl ========================================================
5063 dnl ========================================================
5065 if test "$MOZ_ENABLE_GTK2"
5069 MOZ_ARG_DISABLE_BOOL(dbus,
5070 [ --disable-dbus Disable dbus support ],
5074 if test "$MOZ_ENABLE_DBUS"
5076 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5077 AC_DEFINE(MOZ_ENABLE_DBUS)
5080 AC_SUBST(MOZ_ENABLE_DBUS)
5081 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5082 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5084 dnl ========================================================
5085 dnl = Build Personal Security Manager
5086 dnl ========================================================
5087 MOZ_ARG_DISABLE_BOOL(crypto,
5088 [ --disable-crypto Disable crypto support (Personal Security Manager)],
5092 dnl ========================================================
5093 dnl = JS Debugger XPCOM component (js/jsd)
5094 dnl ========================================================
5095 MOZ_ARG_DISABLE_BOOL(jsd,
5096 [ --disable-jsd Disable JavaScript debug library],
5101 dnl ========================================================
5102 dnl = Disable plugin support
5103 dnl ========================================================
5104 MOZ_ARG_DISABLE_BOOL(plugins,
5105 [ --disable-plugins Disable plugins support],
5109 dnl ========================================================
5110 dnl = Open JVM Interface (OJI) support
5111 dnl ========================================================
5112 MOZ_ARG_DISABLE_BOOL(oji,
5113 [ --disable-oji Disable Open JVM Integration support],
5116 if test -n "$MOZ_OJI"; then
5120 dnl bi-directional support always on
5124 dnl ========================================================
5125 dnl complex text support off by default
5126 dnl ========================================================
5127 MOZ_ARG_ENABLE_BOOL(ctl,
5128 [ --enable-ctl Enable Thai Complex Script support],
5132 dnl ========================================================
5133 dnl view source support on by default
5134 dnl ========================================================
5135 MOZ_ARG_DISABLE_BOOL(view-source,
5136 [ --disable-view-source Disable view source support],
5139 if test "$MOZ_VIEW_SOURCE"; then
5140 AC_DEFINE(MOZ_VIEW_SOURCE)
5144 dnl ========================================================
5145 dnl accessibility support on by default on all platforms
5147 dnl ========================================================
5148 MOZ_ARG_DISABLE_BOOL(accessibility,
5149 [ --disable-accessibility Disable accessibility support (off by default on OS X)],
5152 if test "$ACCESSIBILITY"; then
5153 AC_DEFINE(ACCESSIBILITY)
5156 if test -n "$ACCESSIBILITY"; then
5158 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5159 if test "$ac_cv_header_atlbase_h" = "no"; then
5160 AC_MSG_ERROR([System header atlbase.h is not available. See http://developer.mozilla.org/en/docs/atlbase.h for details on fixing this problem.])
5162 if test "$ac_cv_header_oleacc_idl" = "no"; then
5163 AC_MSG_ERROR([System header oleacc.idl is not available. See http://developer.mozilla.org/en/docs/oleacc.idl for details on fixing this problem.])
5169 dnl ========================================================
5170 dnl xpfe/components on by default
5171 dnl ========================================================
5172 MOZ_ARG_DISABLE_BOOL(xpfe-components,
5173 [ --disable-xpfe-components
5174 Disable xpfe components],
5175 MOZ_XPFE_COMPONENTS=,
5176 MOZ_XPFE_COMPONENTS=1 )
5178 dnl ========================================================
5179 dnl xpinstall support on by default
5180 dnl ========================================================
5181 MOZ_ARG_DISABLE_BOOL(xpinstall,
5182 [ --disable-xpinstall Disable xpinstall support],
5185 if test "$MOZ_XPINSTALL"; then
5186 AC_DEFINE(MOZ_XPINSTALL)
5189 dnl ========================================================
5190 dnl xpcom js loader support on by default
5191 dnl ========================================================
5192 MOZ_ARG_DISABLE_BOOL(jsloader,
5193 [ --disable-jsloader Disable xpcom js loader support],
5196 if test "$MOZ_JSLOADER"; then
5197 AC_DEFINE(MOZ_JSLOADER)
5200 dnl ========================================================
5201 dnl Disable printing
5202 dnl ========================================================
5203 MOZ_ARG_DISABLE_BOOL(printing,
5204 [ --disable-printing Disable printing support],
5208 if test "$NS_PRINTING"; then
5209 AC_DEFINE(NS_PRINTING)
5210 AC_DEFINE(NS_PRINT_PREVIEW)
5213 dnl ========================================================
5214 dnl use native unicode converters
5215 dnl ========================================================
5216 MOZ_ARG_ENABLE_BOOL(native-uconv,
5217 [ --enable-native-uconv Enable iconv support],
5218 MOZ_USE_NATIVE_UCONV=1,
5219 MOZ_USE_NATIVE_UCONV= )
5220 if test "$MOZ_USE_NATIVE_UCONV"; then
5221 AC_DEFINE(MOZ_USE_NATIVE_UCONV)
5223 if test "$OS_ARCH" != "WINCE" -a "$OS_ARCH" != "WINNT" -a "$MOZ_USE_NATIVE_UCONV" -a "$ac_cv_func_iconv" != "yes"; then
5224 AC_MSG_ERROR([iconv() not found. Cannot enable native uconv support.])
5228 dnl ========================================================
5229 dnl Libeditor can be build as plaintext-only,
5230 dnl or as a full html and text editing component.
5231 dnl We build both by default.
5232 dnl ========================================================
5233 MOZ_ARG_ENABLE_BOOL(plaintext-editor-only,
5234 [ --enable-plaintext-editor-only
5235 Allow only plaintext editing],
5236 MOZ_PLAINTEXT_EDITOR_ONLY=1,
5237 MOZ_PLAINTEXT_EDITOR_ONLY= )
5238 dnl Note the #define is MOZILLA, not MOZ, for compat with the Mac build.
5239 AC_SUBST(MOZ_PLAINTEXT_EDITOR_ONLY)
5241 dnl ========================================================
5242 dnl Composer is on by default.
5243 dnl ========================================================
5244 MOZ_ARG_DISABLE_BOOL(composer,
5245 [ --disable-composer Disable building of Composer],
5248 AC_SUBST(MOZ_COMPOSER)
5251 dnl ========================================================
5252 dnl = Drop XPCOM Obsolete library
5253 dnl ========================================================
5254 MOZ_ARG_DISABLE_BOOL(xpcom-obsolete,
5255 [ --disable-xpcom-obsolete Disable XPCOM Obsolete Library],
5256 MOZ_NO_XPCOM_OBSOLETE=1,
5257 MOZ_NO_XPCOM_OBSOLETE=)
5259 if test -n "$MOZ_NO_XPCOM_OBSOLETE"; then
5260 AC_DEFINE(MOZ_NO_XPCOM_OBSOLETE)
5263 dnl ========================================================
5264 dnl = Disable Fast Load
5265 dnl ========================================================
5266 MOZ_ARG_DISABLE_BOOL(xpcom-fastload,
5267 [ --disable-xpcom-fastload Disable XPCOM fastload support],
5271 AC_SUBST(MOZ_NO_FAST_LOAD)
5273 if test -n "$MOZ_NO_FAST_LOAD"; then
5274 AC_DEFINE(MOZ_NO_FAST_LOAD)
5277 dnl ========================================================
5278 dnl Permissions System
5279 dnl ========================================================
5280 MOZ_ARG_DISABLE_BOOL(permissions,
5281 [ --disable-permissions Disable permissions (popup and cookie blocking)],
5286 dnl ========================================================
5288 dnl ========================================================
5289 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5290 [ --disable-negotiateauth Disable GSS-API negotiation ],
5291 MOZ_AUTH_EXTENSION=,
5292 MOZ_AUTH_EXTENSION=1 )
5294 dnl ========================================================
5296 dnl ========================================================
5297 MOZ_ARG_DISABLE_BOOL(xtf,
5298 [ --disable-xtf Disable XTF (pluggable xml tags) support],
5301 if test "$MOZ_XTF"; then
5305 dnl ========================================================
5307 dnl ========================================================
5308 MOZ_ARG_DISABLE_BOOL(inspector-apis,
5309 [ --disable-inspector-apis Disable the DOM inspection APIs ],
5310 MOZ_NO_INSPECTOR_APIS=1,
5311 MOZ_NO_INSPECTOR_APIS= )
5313 dnl ========================================================
5315 dnl ========================================================
5316 MOZ_ARG_DISABLE_BOOL(xmlextras,
5317 [ --disable-xmlextras Disable XMLExtras such as XPointer support ],
5321 dnl ========================================================
5323 dnl ========================================================
5324 MOZ_ARG_ENABLE_BOOL(webservices,
5325 [ --enable-webservices Enable Webservices/SOAP support ],
5329 dnl ========================================================
5330 dnl Pref extensions (autoconfig and system-pref)
5331 dnl ========================================================
5332 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5333 [ --disable-pref-extensions
5334 Disable pref extensions such as autoconfig and
5336 MOZ_PREF_EXTENSIONS=,
5337 MOZ_PREF_EXTENSIONS=1 )
5339 dnl ========================================================
5340 dnl = Universalchardet
5341 dnl ========================================================
5342 MOZ_ARG_DISABLE_BOOL(universalchardet,
5343 [ --disable-universalchardet
5344 Disable universal encoding detection],
5345 MOZ_UNIVERSALCHARDET=,
5346 MOZ_UNIVERSALCHARDET=1 )
5348 dnl ========================================================
5350 dnl ========================================================
5351 MOZ_ARG_ENABLE_BOOL(javaxpcom,
5352 [ --enable-javaxpcom
5353 Enable Java-XPCOM bridge],
5357 if test -n "${MOZ_JAVAXPCOM}"; then
5360 if test -n "$JAVA_HOME"; then
5361 JAVA_HOME=`cygpath -u \`cygpath -m -s "$JAVA_HOME"\``
5365 if test -n "$JAVA_HOME"; then
5366 JAVA_HOME=`cd "$JAVA_HOME" && pwd`
5371 if test -n "${JAVA_INCLUDE_PATH}"; then
5372 dnl Make sure jni.h exists in the given include path.
5373 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5374 AC_MSG_ERROR([jni.h was not found in given include path $JAVA_INCLUDE_PATH.])
5377 case "$target_os" in
5379 dnl Default to java system location
5380 JAVA_INCLUDE_PATH=/System/Library/Frameworks/JavaVM.framework/Headers
5384 JAVA_INCLUDE_PATH="$JAVA_HOME/include"
5387 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5388 AC_MSG_ERROR([The header jni.h was not found. Set \$JAVA_HOME to your java sdk directory, use --with-java-bin-path={java-bin-dir}, or reconfigure with --disable-javaxpcom.])
5392 if test -n "${JAVA_BIN_PATH}"; then
5393 dnl Look for javac and jar in the specified path.
5394 JAVA_PATH="$JAVA_BIN_PATH"
5396 dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5397 JAVA_PATH="$JAVA_HOME/bin:$PATH"
5400 AC_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5401 AC_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5402 AC_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5403 if test -z "$JAVA" || test "$JAVA" = ":" || test -z "$JAVAC" || test "$JAVAC" = ":" || test -z "$JAR" || test "$JAR" = ":"; then
5404 AC_MSG_ERROR([The programs java, javac and jar were not found. Set \$JAVA_HOME to your java sdk directory, use --with-java-bin-path={java-bin-dir}, or reconfigure with --disable-javaxpcom.])
5408 dnl ========================================================
5409 dnl = Breakpad crash reporting (on by default on supported platforms)
5410 dnl ========================================================
5412 if (test "$OS_ARCH" = "WINNT" -a -z "$GNU_CC" \
5413 || test "$OS_ARCH" = "Darwin" \
5414 || test "$OS_ARCH" = "Linux" -a "$CPU_ARCH" = "x86" \
5415 || test "$OS_ARCH" = "SunOS") \
5416 && test -z "$HAVE_64BIT_OS"; then
5420 MOZ_ARG_DISABLE_BOOL(crashreporter,
5421 [ --disable-crashreporter Disable breakpad crash reporting],
5423 MOZ_CRASHREPORTER=1)
5425 if test -n "$MOZ_CRASHREPORTER"; then
5426 AC_DEFINE(MOZ_CRASHREPORTER)
5428 if (test "$OS_ARCH" = "Linux" || test "$OS_ARCH" = "SunOS") && \
5429 test -z "$SKIP_LIBRARY_CHECKS"; then
5430 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
5431 AC_SUBST(MOZ_GTHREAD_CFLAGS)
5432 AC_SUBST(MOZ_GTHREAD_LIBS)
5434 AC_CHECK_HEADERS([curl/curl.h], [], [AC_MSG_ERROR([Couldn't find curl/curl.h which is required for the crash reporter. Use --disable-crashreporter to disable the crash reporter.])])
5438 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
5439 [ --with-crashreporter-enable-percent=NN Enable sending crash reports by default on NN% of users. (default=100)],
5440 [ val=`echo $withval | sed 's/[^0-9]//g'`
5441 MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
5443 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
5444 MOZ_CRASHREPORTER_ENABLE_PERCENT=100
5446 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
5449 dnl ========================================================
5450 dnl = Build mochitest JS/DOM tests (on by default)
5451 dnl ========================================================
5452 MOZ_ARG_DISABLE_BOOL(mochitest,
5453 [ --disable-mochitest Disable mochitest harness],
5457 dnl ========================================================
5458 dnl = Enable compilation of specific extension modules
5459 dnl ========================================================
5461 MOZ_ARG_ENABLE_STRING(extensions,
5462 [ --enable-extensions Enable extensions],
5463 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5464 if test "$option" = "yes" || test "$option" = "all"; then
5465 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_ALL"
5466 elif test "$option" = "no" || test "$option" = "none"; then
5468 elif test "$option" = "default"; then
5469 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
5470 elif test `echo "$option" | grep -c \^-` != 0; then
5471 option=`echo $option | sed 's/^-//'`
5472 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
5474 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
5477 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
5479 if test -z "$MOZ_ENABLE_GNOMEVFS" && test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
5480 # Suppress warning on non-X11 platforms
5481 if test -n "$MOZ_X11"; then
5482 AC_MSG_WARN([Cannot build gnomevfs without required libraries. Removing gnomevfs from MOZ_EXTENSIONS.])
5484 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
5487 if test -z "$MOZ_JSDEBUGGER" && test `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
5488 AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
5489 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
5492 dnl This might be temporary: build tridentprofile only on Windows
5493 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0 && test "$OS_ARCH" != "WINNT"; then
5494 AC_MSG_WARN([tridentprofile extension works only on Windows at this time. Removing tridentprofile from MOZ_EXTENSIONS.])
5495 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5498 dnl cookie must be built before tridentprofile. put it at list's end.
5499 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0; then
5500 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5501 MOZ_EXTENSIONS="$MOZ_EXTENSIONS tridentprofile"
5504 dnl xforms requires xtf and schema-validation
5505 if test -z "$MOZ_XTF" && test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
5506 AC_MSG_WARN([Cannot build XForms without XTF support. Removing XForms from MOZ_EXTENSIONS.])
5507 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5509 if test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0 && test `echo "$MOZ_EXTENSIONS" | grep -c schema-validation` -eq 0; then
5510 AC_MSG_WARN([Cannot build XForms without schema validation. Removing XForms from MOZ_EXTENSIONS.])
5511 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5514 if test `echo "$MOZ_EXTENSIONS" | grep -c auth` -ne 0; then
5515 AC_MSG_WARN([auth is no longer an extension, use --disable-negotiateauth to disable.])
5516 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|auth||g'`
5519 if test `echo "$MOZ_EXTENSIONS" | grep -c xmlextras` -ne 0; then
5520 AC_MSG_WARN([xmlextras is no longer an extension, use --disable-xmlextras to disable.])
5521 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xmlextras||g'`
5524 if test `echo "$MOZ_EXTENSIONS" | grep -c 'cookie\|permissions'` -ne 0; then
5525 AC_MSG_WARN([cookie and permissions are no longer extensions, use --disable-permissions to disable.])
5526 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|cookie||g; s|permissions||g'`
5529 if test `echo "$MOZ_EXTENSIONS" | grep -c webservices` -ne 0; then
5530 AC_MSG_WARN([webservices is no longer an extension, use --disable-webservices to disable.])
5531 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|webservices||g'`
5534 if test `echo "$MOZ_EXTENSIONS" | grep -c pref` -ne 0; then
5535 AC_MSG_WARN([pref is no longer an extension, use --disable-pref-extensions to disable.])
5536 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|pref||g'`
5539 if test `echo "$MOZ_EXTENSIONS" | grep -c universalchardet` -ne 0; then
5540 AC_MSG_WARN([universalchardet is no longer an extension, use --disable-universalchardet to disable.])
5541 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|universalchardet||g'`
5544 if test `echo "$MOZ_EXTENSIONS" | grep -c java` -ne 0; then
5545 AC_MSG_WARN([java is no longer an extension, use --enable-javaxpcom to enable.])
5546 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|java||g'`
5549 if test `echo "$MOZ_EXTENSIONS" | grep -c spellcheck` -ne 0; then
5550 AC_MSG_WARN([spellcheck is no longer an extension.])
5551 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|spellcheck||g'`
5554 if test -n "$MOZ_NO_XPCOM_OBSOLETE" && test `echo "$MOZ_EXTENSIONS" | grep -c sroaming` -ne 0; then
5555 AC_MSG_WARN([Cannot currently build sroaming without xpcom obsolete -- bug 249343. Removing sroaming from MOZ_EXTENSIONS.])
5556 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|sroaming||'`
5560 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
5562 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
5563 dnl when trying to build a non-existent extension.
5564 for extension in $MOZ_EXTENSIONS; do
5565 if test ! -d "${srcdir}/extensions/${extension}"; then
5566 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
5571 dnl ========================================================
5573 dnl ========================================================
5574 case "$MOZ_WIDGET_TOOLKIT" in
5575 beos|windows|os2|mac|cocoa)
5578 if test -z "$MOZ_ENABLE_GTK2"; then
5579 MOZ_IMG_DECODERS_DEFAULT=`echo $MOZ_IMG_DECODERS_DEFAULT | sed -e 's|icon||'`
5584 MOZ_ARG_ENABLE_STRING(image-decoders,
5585 [ --enable-image-decoders[={mod1,mod2,default,all,none}]
5586 Enable specific image decoders],
5587 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5588 if test "$option" = "yes" || test "$option" = "all"; then
5589 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5590 elif test "$option" = "no" || test "$option" = "none"; then
5592 elif test "$option" = "default"; then
5593 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5594 elif test `echo "$option" | grep -c \^-` != 0; then
5595 option=`echo $option | sed 's/^-//'`
5596 MOZ_IMG_DECODERS=`echo "$MOZ_IMG_DECODERS" | sed "s/ ${option}//"`
5598 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $option"
5601 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS_DEFAULT")
5603 dnl Dupes are removed in the encoder section because it will also add decoders
5605 dnl ========================================================
5607 dnl ========================================================
5608 MOZ_ARG_ENABLE_STRING(image-encoders,
5609 [ --enable-image-encoders[={mod1,mod2,default,all,none}]
5610 Enable specific image encoders],
5611 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5612 if test "$option" = "yes" || test "$option" = "all"; then
5613 addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5614 elif test "$option" = "no" || test "$option" = "none"; then
5617 elif test "$option" = "default"; then
5618 addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5619 elif test `echo "$option" | grep -c \^-` != 0; then
5620 option=`echo $option | sed 's/^-//'`
5621 addencoder=`echo "$MOZ_IMG_ENCODERS" | sed "s/ ${option}//"`
5623 addencoder="$option"
5625 MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS $addencoder"
5627 MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS_DEFAULT")
5630 MOZ_IMG_DECODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_DECODERS}`
5631 MOZ_IMG_ENCODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_ENCODERS}`
5633 dnl ========================================================
5634 dnl experimental ldap features
5635 dnl ========================================================
5636 MOZ_ARG_ENABLE_BOOL(ldap-experimental,
5637 [ --enable-ldap-experimental
5638 Enable LDAP experimental features],
5639 MOZ_LDAP_XPCOM_EXPERIMENTAL=1,
5640 MOZ_LDAP_XPCOM_EXPERIMENTAL=)
5642 dnl ========================================================
5643 dnl MathML on by default
5644 dnl ========================================================
5645 MOZ_ARG_DISABLE_BOOL(mathml,
5646 [ --disable-mathml Disable MathML support],
5649 if test "$MOZ_MATHML"; then
5650 AC_DEFINE(MOZ_MATHML)
5653 dnl ========================================================
5655 dnl ========================================================
5656 MOZ_ARG_DISABLE_BOOL(canvas,
5657 [ --disable-canvas Disable html:canvas feature],
5659 MOZ_ENABLE_CANVAS=1 )
5660 if test -n "$MOZ_ENABLE_CANVAS"; then
5661 AC_DEFINE(MOZ_ENABLE_CANVAS)
5663 AC_SUBST(MOZ_ENABLE_CANVAS)
5665 dnl ========================================================
5667 dnl ========================================================
5668 MOZ_ARG_DISABLE_BOOL(svg,
5669 [ --disable-svg Disable SVG support],
5672 if test -n "$MOZ_SVG"; then
5676 MOZ_SVG_FOREIGNOBJECT=1
5677 dnl ========================================================
5678 dnl SVG <foreignObject>
5679 dnl ========================================================
5680 MOZ_ARG_DISABLE_BOOL(svg-foreignobject,
5681 [ --disable-svg-foreignobject
5682 Disable SVG <foreignObject> support],
5683 MOZ_SVG_FOREIGNOBJECT=,
5684 MOZ_SVG_FOREIGNOBJECT=1 )
5685 if test "$MOZ_SVG_FOREIGNOBJECT"; then
5686 if test "$MOZ_SVG"; then
5687 AC_DEFINE(MOZ_SVG_FOREIGNOBJECT)
5689 MOZ_SVG_FOREIGNOBEJCT=
5693 dnl ========================================================
5695 dnl ========================================================
5696 case "$target_os" in
5697 aix*|solaris*|linux*|msvc*|mks*|cygwin*|mingw*|os2*|wince*)
5702 MOZ_ARG_DISABLE_BOOL(installer,
5703 [ --disable-installer Disable building of installer],
5706 if test -n "$MOZ_INSTALLER" -a -n "$MOZ_XUL_APP" -a "$OS_ARCH" = "WINNT"; then
5707 # Disable installer for Windows builds that use the new toolkit if NSIS
5708 # isn't in the path.
5709 AC_PATH_PROGS(MAKENSIS, makensis)
5710 if test -z "$MAKENSIS" || test "$MAKENSIS" = ":"; then
5711 AC_MSG_ERROR([To build the installer makensis is required in your path. To build without the installer reconfigure using --disable-installer.])
5713 # The Windows build for NSIS requires the iconv command line utility to
5714 # convert the charset of the locale files.
5715 AC_PATH_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5716 if test -z "$HOST_ICONV"; then
5717 AC_MSG_ERROR([To build the installer iconv is required in your path. To build without the installer reconfigure using --disable-installer.])
5721 # Automatically disable installer if xpinstall isn't built
5722 if test -z "$MOZ_XPINSTALL"; then
5725 AC_SUBST(MOZ_INSTALLER)
5727 AC_MSG_CHECKING([for tar archiver])
5728 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
5729 if test -z "$TAR"; then
5730 AC_MSG_ERROR([no tar archiver found in \$PATH])
5732 AC_MSG_RESULT([$TAR])
5735 dnl ========================================================
5737 dnl ========================================================
5739 MOZ_ARG_DISABLE_BOOL(updater,
5740 [ --disable-updater Disable building of updater],
5743 # The Windows build requires the iconv command line utility
5744 # in order to build the updater.
5745 case "$target_os" in
5746 msvc*|mks*|cygwin*|mingw*|wince*)
5747 if test -n "$MOZ_UPDATER"; then
5748 AC_MSG_CHECKING([for iconv])
5749 AC_CHECK_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5750 if test -z "$HOST_ICONV"; then
5751 AC_MSG_ERROR([iconv not found in \$PATH])
5756 AC_SUBST(MOZ_UPDATER)
5758 # app update channel is 'default' when not supplied.
5759 MOZ_ARG_ENABLE_STRING([update-channel],
5760 [ --enable-update-channel=CHANNEL
5761 Select application update channel (default=default)],
5762 MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
5764 if test -z "$MOZ_UPDATE_CHANNEL"; then
5765 MOZ_UPDATE_CHANNEL=default
5767 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
5769 # tools/update-packaging is not checked out by default.
5770 MOZ_ARG_ENABLE_BOOL(update-packaging,
5771 [ --enable-update-packaging
5772 Enable tools/update-packaging],
5773 MOZ_UPDATE_PACKAGING=1,
5774 MOZ_UPDATE_PACKAGING= )
5775 AC_SUBST(MOZ_UPDATE_PACKAGING)
5777 dnl ========================================================
5779 dnl ========================================================
5781 MOZ_ARG_DISABLE_BOOL(xpconnect-idispatch,
5782 [ --disable-xpconnect-idispatch
5783 Disable building of xpconnect support for IDispatch
5785 XPC_IDISPATCH_SUPPORT=,
5786 XPC_IDISPATCH_SUPPORT=1)
5787 AC_SUBST(XPC_IDISPATCH_SUPPORT)
5789 MOZ_ARG_DISABLE_BOOL(activex,
5790 [ --disable-activex Disable building of ActiveX control (win32 only)],
5791 MOZ_NO_ACTIVEX_SUPPORT=1,
5792 MOZ_NO_ACTIVEX_SUPPORT= )
5793 AC_SUBST(MOZ_NO_ACTIVEX_SUPPORT)
5795 MOZ_ARG_DISABLE_BOOL(activex-scripting,
5796 [ --disable-activex-scripting
5797 Disable building of ActiveX scripting support (win32)],
5798 MOZ_ACTIVEX_SCRIPTING_SUPPORT=,
5799 MOZ_ACTIVEX_SCRIPTING_SUPPORT=1)
5800 AC_SUBST(MOZ_ACTIVEX_SCRIPTING_SUPPORT)
5802 if test -n "$MOZ_NO_ACTIVEX_SUPPORT" -a -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT";
5804 AC_MSG_ERROR([Cannot enable ActiveX scripting support when ActiveX support is disabled.])
5807 if test -n "$XPC_IDISPATCH_SUPPORT" -o -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
5809 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5810 if test "$ac_cv_header_atlbase_h" = "no"; then
5811 AC_MSG_ERROR([System header atlbase.h is not available. See http://developer.mozilla.org/en/docs/atlbase.h for details on fixing this problem.])
5817 dnl ========================================================
5819 dnl ========================================================
5820 MOZ_ARG_ENABLE_BOOL(leaky,
5821 [ --enable-leaky Build leaky memory tool],
5826 dnl ========================================================
5828 dnl ========================================================
5829 MOZ_ARG_ENABLE_BOOL(xpctools,
5830 [ --enable-xpctools Build JS profiling tool],
5835 dnl ========================================================
5836 dnl build the tests by default
5837 dnl ========================================================
5838 MOZ_ARG_DISABLE_BOOL(tests,
5839 [ --disable-tests Do not build test libraries & programs],
5843 dnl ========================================================
5844 dnl parental controls (for Windows Vista)
5845 dnl ========================================================
5846 MOZ_ARG_DISABLE_BOOL(parental-controls,
5847 [ --disable-parental-controls
5848 Do not build parental controls],
5849 MOZ_DISABLE_PARENTAL_CONTROLS=1,
5850 MOZ_DISABLE_PARENTAL_CONTROLS=)
5851 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5852 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5855 dnl ========================================================
5856 dnl Vista SDK specific api
5857 dnl ========================================================
5858 MOZ_ARG_DISABLE_BOOL(vista-sdk-requirements,
5859 [ --disable-vista-sdk-requirements
5860 Do not build Vista SDK specific code],
5861 MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=1,
5862 MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=)
5863 if test -n "$MOZ_DISABLE_VISTA_SDK_REQUIREMENTS"; then
5864 AC_MSG_WARN([Resulting builds will not be compatible with Windows Vista. (bug 428970)])
5865 AC_DEFINE(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
5866 if test -z "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5867 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5869 MOZ_DISABLE_PARENTAL_CONTROLS=1
5872 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5873 if test "$ac_cv_header_wpcapi_h" = "no"; then
5874 AC_MSG_ERROR([System header wpcapi.h is not available. See updated http://developer.mozilla.org/en/docs/wpcapi.h for details on fixing this problem.])
5879 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
5880 AC_SUBST(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
5882 dnl ========================================================
5884 dnl = Module specific options
5886 dnl ========================================================
5887 MOZ_ARG_HEADER(Individual module options)
5889 dnl ========================================================
5890 dnl = Enable Lea malloc in xpcom. OFF by default.
5891 dnl ========================================================
5892 MOZ_ARG_ENABLE_BOOL(xpcom-lea,
5893 [ --enable-xpcom-lea Use Lea malloc in xpcom ],
5896 if test -n "$XPCOM_USE_LEA"; then
5897 AC_DEFINE(XPCOM_USE_LEA)
5900 dnl ========================================================
5901 dnl = Enable places (new history/bookmarks)
5902 dnl ========================================================
5903 MOZ_ARG_ENABLE_BOOL(places,
5904 [ --enable-places Enable 'places' bookmark/history implementation],
5907 if test -n "$MOZ_PLACES"; then
5908 AC_DEFINE(MOZ_PLACES)
5909 if test -z "$MOZ_MAIL_NEWS"; then
5914 if test "$MOZ_BUILD_APP" = "browser"; then
5915 AC_MSG_ERROR([Cannot build Firefox with --disable-places.])
5919 dnl ========================================================
5920 dnl = Disable feed handling components
5921 dnl ========================================================
5922 MOZ_ARG_DISABLE_BOOL(feeds,
5923 [ --disable-feeds Disable feed handling and processing components],
5926 if test -n "$MOZ_FEEDS"; then
5927 AC_DEFINE(MOZ_FEEDS)
5929 if test "$MOZ_BUILD_APP" = "browser"; then
5930 AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
5934 dnl ========================================================
5935 dnl = Enable mozStorage
5936 dnl ========================================================
5937 dnl Implicitly enabled by default if building calendar or places
5938 MOZ_ARG_ENABLE_BOOL(storage,
5939 [ --enable-storage Enable mozStorage module and related components],
5942 if test -n "$MOZ_STORAGE"; then
5943 AC_DEFINE(MOZ_STORAGE)
5946 dnl ========================================================
5947 dnl Check for sqlite
5948 dnl ========================================================
5951 MOZ_ARG_ENABLE_BOOL(system-sqlite,
5952 [ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
5953 MOZ_NATIVE_SQLITE=1,
5954 MOZ_NATIVE_SQLITE= )
5956 if test -z "$MOZ_NATIVE_SQLITE"
5959 SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,sqlite3,$(DIST)/lib)'
5961 PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
5964 AC_SUBST(MOZ_NATIVE_SQLITE)
5966 dnl = Enable help viewer (off by default)
5967 dnl ========================================================
5968 MOZ_ARG_ENABLE_BOOL(help-viewer,
5969 [ --enable-help-viewer Enable help viewer],
5972 if test -n "$MOZ_HELP_VIEWER"; then
5973 AC_DEFINE(MOZ_HELP_VIEWER)
5975 AC_SUBST(MOZ_HELP_VIEWER)
5977 dnl ========================================================
5978 dnl = Enable safe browsing (anti-phishing)
5979 dnl ========================================================
5980 MOZ_ARG_ENABLE_BOOL(safe-browsing,
5981 [ --enable-safe-browsing Enable safe browsing (anti-phishing) implementation],
5982 MOZ_SAFE_BROWSING=1,
5983 MOZ_SAFE_BROWSING= )
5984 if test -n "$MOZ_SAFE_BROWSING"; then
5985 AC_DEFINE(MOZ_SAFE_BROWSING)
5987 AC_SUBST(MOZ_SAFE_BROWSING)
5989 dnl ========================================================
5990 dnl = Enable url-classifier
5991 dnl ========================================================
5992 dnl Implicitly enabled by default if building with safe-browsing
5993 if test -n "$MOZ_SAFE_BROWSING"; then
5994 MOZ_URL_CLASSIFIER=1
5996 MOZ_ARG_ENABLE_BOOL(url-classifier,
5997 [ --enable-url-classifier Enable url classifier module],
5998 MOZ_URL_CLASSIFIER=1,
5999 MOZ_URL_CLASSIFIER= )
6000 if test -n "$MOZ_URL_CLASSIFIER"; then
6001 AC_DEFINE(MOZ_URL_CLASSIFIER)
6003 AC_SUBST(MOZ_URL_CLASSIFIER)
6005 dnl ========================================================
6006 dnl = Disable zipwriter
6007 dnl ========================================================
6008 MOZ_ARG_DISABLE_BOOL(zipwriter,
6009 [ --disable-zipwriter Disable zipwriter component],
6012 AC_SUBST(MOZ_ZIPWRITER)
6014 dnl ========================================================
6015 dnl = Enable Ultrasparc specific optimizations for JS
6016 dnl ========================================================
6017 MOZ_ARG_ENABLE_BOOL(js-ultrasparc,
6018 [ --enable-js-ultrasparc Use UltraSPARC optimizations in JS],
6019 JS_ULTRASPARC_OPTS=1,
6020 JS_ULTRASPARC_OPTS= )
6022 dnl only enable option for ultrasparcs
6023 if test `echo "$target_os" | grep -c \^solaris 2>/dev/null` = 0 -o \
6024 "$OS_TEST" != "sun4u"; then
6027 AC_SUBST(JS_ULTRASPARC_OPTS)
6029 dnl ========================================================
6031 dnl = Feature options that require extra sources to be pulled
6033 dnl ========================================================
6034 dnl MOZ_ARG_HEADER(Features that require extra sources)
6036 dnl ========================================================
6038 dnl = Debugging Options
6040 dnl ========================================================
6041 MOZ_ARG_HEADER(Debugging and Optimizations)
6043 dnl ========================================================
6044 dnl = Disable building with debug info.
6045 dnl = Debugging is OFF by default
6046 dnl ========================================================
6047 if test -z "$MOZ_DEBUG_FLAGS"
6051 if test "$GNU_CC"; then
6052 GCC_VERSION=`$CC -v 2>&1 | awk '/version/ { print $3 }'`
6053 case "$GCC_VERSION" in
6058 MOZ_DEBUG_FLAGS="-g"
6062 MOZ_DEBUG_FLAGS="-g"
6066 MOZ_DEBUG_FLAGS="-g"
6071 MOZ_ARG_ENABLE_STRING(debug,
6072 [ --enable-debug[=DBG] Enable building with developer debug info
6073 (Using compiler flags DBG)],
6074 [ if test "$enableval" != "no"; then
6076 if test -n "$enableval" && test "$enableval" != "yes"; then
6077 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6084 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG"
6085 case "${target_os}" in
6087 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${USER}"
6089 msvc*|mks*|cygwin*|mingw*|os2*|wince*)
6090 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
6093 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`$WHOAMI`"
6096 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DTRACING"
6098 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
6100 if test -n "$MOZ_DEBUG"; then
6101 AC_MSG_CHECKING([for valid debug flags])
6102 _SAVE_CFLAGS=$CFLAGS
6103 CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
6104 AC_TRY_COMPILE([#include <stdio.h>],
6105 [printf("Hello World\n");],
6108 AC_MSG_RESULT([$_results])
6109 if test "$_results" = "no"; then
6110 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
6112 CFLAGS=$_SAVE_CFLAGS
6115 dnl ========================================================
6116 dnl = Enable code optimization. ON by default.
6117 dnl ========================================================
6118 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6119 MOZ_OPTIMIZE_FLAGS="-O"
6122 MOZ_ARG_ENABLE_STRING(optimize,
6123 [ --disable-optimize Disable compiler optimization
6124 --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6125 [ if test "$enableval" != "no"; then
6127 if test -n "$enableval" && test "$enableval" != "yes"; then
6128 MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6133 fi ], MOZ_OPTIMIZE=1)
6135 if test "$COMPILE_ENVIRONMENT"; then
6136 if test -n "$MOZ_OPTIMIZE"; then
6137 AC_MSG_CHECKING([for valid optimization flags])
6138 _SAVE_CFLAGS=$CFLAGS
6139 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6140 AC_TRY_COMPILE([#include <stdio.h>],
6141 [printf("Hello World\n");],
6144 AC_MSG_RESULT([$_results])
6145 if test "$_results" = "no"; then
6146 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6148 CFLAGS=$_SAVE_CFLAGS
6150 fi # COMPILE_ENVIRONMENT
6152 AC_SUBST(MOZ_OPTIMIZE)
6153 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6154 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6155 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6157 dnl ========================================================
6158 dnl = Enable/disable debug for specific modules only
6159 dnl = module names beginning with ^ will be disabled
6160 dnl ========================================================
6161 MOZ_ARG_ENABLE_STRING(debug-modules,
6162 [ --enable-debug-modules Enable/disable debug info for specific modules],
6163 [ MOZ_DEBUG_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6165 dnl ========================================================
6166 dnl = Enable/disable generation of debugger info for specific modules only
6167 dnl = the special module name ALL_MODULES can be used to denote all modules
6168 dnl = module names beginning with ^ will be disabled
6169 dnl ========================================================
6170 MOZ_ARG_ENABLE_STRING(debugger-info-modules,
6171 [ --enable-debugger-info-modules
6172 Enable/disable debugger info for specific modules],
6173 [ for i in `echo $enableval | sed 's/,/ /g'`; do
6174 dnl note that the list of module names is reversed as it is copied
6175 dnl this is important, as it will allow config.mk to interpret stuff like
6176 dnl "^ALL_MODULES xpcom" properly
6177 if test "$i" = "no"; then
6180 if test "$i" = "yes"; then
6183 MOZ_DBGRINFO_MODULES="$i $MOZ_DBGRINFO_MODULES";
6186 dnl ========================================================
6187 dnl Enable garbage collector
6188 dnl ========================================================
6189 MOZ_ARG_ENABLE_BOOL(boehm,
6190 [ --enable-boehm Enable the Boehm Garbage Collector],
6193 if test -n "$GC_LEAK_DETECTOR"; then
6194 AC_DEFINE(GC_LEAK_DETECTOR)
6197 dnl ========================================================
6198 dnl Disable runtime logging checks
6199 dnl ========================================================
6200 MOZ_ARG_DISABLE_BOOL(logging,
6201 [ --disable-logging Disable logging facilities],
6202 NS_DISABLE_LOGGING=1,
6203 NS_DISABLE_LOGGING= )
6204 if test "$NS_DISABLE_LOGGING"; then
6205 AC_DEFINE(NS_DISABLE_LOGGING)
6207 AC_DEFINE(MOZ_LOGGING)
6210 dnl ========================================================
6211 dnl = dnl This will enable logging of addref, release, ctor, dtor.
6212 dnl ========================================================
6213 _ENABLE_LOGREFCNT=42
6214 MOZ_ARG_ENABLE_BOOL(logrefcnt,
6215 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
6216 _ENABLE_LOGREFCNT=1,
6217 _ENABLE_LOGREFCNT= )
6218 if test "$_ENABLE_LOGREFCNT" = "1"; then
6219 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
6220 elif test -z "$_ENABLE_LOGREFCNT"; then
6221 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
6224 dnl ========================================================
6225 dnl = Enable trace malloc
6226 dnl ========================================================
6227 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
6228 MOZ_ARG_ENABLE_BOOL(trace-malloc,
6229 [ --enable-trace-malloc Enable malloc tracing],
6232 if test "$NS_TRACE_MALLOC"; then
6233 # Please, Mr. Linker Man, don't take away our symbol names
6234 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6236 AC_DEFINE(NS_TRACE_MALLOC)
6238 AC_SUBST(NS_TRACE_MALLOC)
6240 dnl ========================================================
6241 dnl = Enable jemalloc
6242 dnl ========================================================
6243 MOZ_ARG_ENABLE_BOOL(jemalloc,
6244 [ --enable-jemalloc Replace memory allocator with jemalloc],
6248 if test "$NS_TRACE_MALLOC"; then
6252 if test "$MOZ_MEMORY"; then
6254 dnl Don't try to run compiler tests on Windows
6255 if test "$OS_ARCH" = "WINNT"; then
6256 if test -z "$HAVE_64BIT_OS"; then
6257 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6259 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6262 AC_CHECK_SIZEOF([int *], [4])
6263 case "${ac_cv_sizeof_int_p}" in
6265 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6268 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6271 AC_MSG_ERROR([Unexpected pointer size])
6276 AC_DEFINE(MOZ_MEMORY)
6277 if test "x$MOZ_DEBUG" = "x1"; then
6278 AC_DEFINE(MOZ_MEMORY_DEBUG)
6280 dnl The generic feature tests that determine how to compute ncpus are long and
6281 dnl complicated. Therefore, simply define special cpp variables for the
6282 dnl platforms we have special knowledge of.
6283 case "${target_os}" in
6285 AC_DEFINE(MOZ_MEMORY_DARWIN)
6288 AC_DEFINE(MOZ_MEMORY_BSD)
6291 AC_DEFINE(MOZ_MEMORY_LINUX)
6294 AC_DEFINE(MOZ_MEMORY_BSD)
6297 AC_DEFINE(MOZ_MEMORY_SOLARIS)
6299 msvc*|mks*|cygwin*|mingw*)
6300 AC_DEFINE(MOZ_MEMORY_WINDOWS)
6301 dnl XXX: should test for vc8sp1 here, otherwise patching the crt src
6302 dnl will fail miserably
6303 if test "$_CC_SUITE" -lt "8"; then
6304 AC_MSG_ERROR([Building jemalloc requires Visual C++ 2005 or better])
6306 if test -z "$WIN32_CRT_SRC_DIR" -a -z "$WIN32_CUSTOM_CRT_DIR"; then
6307 if test -z "$VCINSTALLDIR" -o ! -d "$VCINSTALLDIR"; then
6308 AC_MSG_ERROR([When building jemalloc, either set WIN32_CRT_SRC_DIR to the path to the Visual C++ CRT source (usually VCINSTALLDIR\crt\src), or set WIN32_CUSTOM_CRT_DIR to the path to a folder containing a pre-built CRT DLL.])
6310 WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src"
6313 if test -z "$WIN32_CRT_SRC_DIR"; then
6315 WIN32_CUSTOM_CRT_DIR=`cd "$WIN32_CUSTOM_CRT_DIR" && pwd`
6316 _WIN_UNIX_CRT_PATH="$WIN32_CUSTOM_CRT_DIR"
6318 # CRT source directory
6319 WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd`
6320 _CRT_BASE_DIR=`basename "$WIN32_CRT_SRC_DIR"`
6321 _WIN_UNIX_CRT_PATH="$_objdir/memory/jemalloc/$_CRT_BASE_DIR/build/intel"
6323 dnl need win32 paths in LIB, hence this python abuse. extra brackets
6325 _WIN_CRT_PATH=[`$PYTHON -c 'import sys, os.path; print os.path.normpath(sys.argv[1])' "$_WIN_UNIX_CRT_PATH"`]
6326 MOZ_LIB="$_WIN_CRT_PATH;$LIB"
6327 dnl Needs to be in PATH too, since our tools will wind up linked against it.
6328 dnl This needs to be unix style.
6329 MOZ_PATH="$PATH:$_WIN_UNIX_CRT_PATH"
6330 dnl Statically link the C++ stdlib. We only use this for Breakpad anyway.
6331 AC_DEFINE(_STATIC_CPPLIB)
6332 dnl Don't generate a manifest, since we're linking to a custom CRT.
6333 LDFLAGS="$LDFLAGS -MANIFEST:NO"
6334 dnl Also pass this to NSPR/NSS
6335 DLLFLAGS="$DLLFLAGS -MANIFEST:NO"
6339 AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
6343 AC_ARG_WITH([valgrind],
6344 [ --with-valgrind Enable valgrind integration hooks],
6345 [enable_valgrind="yes"], [enable_valgrind="no"])
6346 AC_CHECK_HEADER([valgrind/valgrind.h], [], [enable_valgrind="no"])
6347 if test "x$enable_valgrind" = "xyes" ; then
6348 AC_DEFINE(MOZ_VALGRIND)
6351 AC_SUBST(MOZ_MEMORY)
6352 AC_SUBST(WIN32_CRT_SRC_DIR)
6353 AC_SUBST(WIN32_CUSTOM_CRT_DIR)
6356 dnl Need to set this for make because NSS doesn't have configure
6359 dnl ========================================================
6360 dnl = Use malloc wrapper lib
6361 dnl ========================================================
6362 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
6363 [ --enable-wrap-malloc Wrap malloc calls (gnu linker only)],
6367 if test -n "$_WRAP_MALLOC"; then
6368 if test "$GNU_CC"; then
6369 WRAP_MALLOC_CFLAGS="${LDFLAGS} -Wl,--wrap -Wl,malloc -Wl,--wrap -Wl,free -Wl,--wrap -Wl,realloc -Wl,--wrap -Wl,__builtin_new -Wl,--wrap -Wl,__builtin_vec_new -Wl,--wrap -Wl,__builtin_delete -Wl,--wrap -Wl,__builtin_vec_delete -Wl,--wrap -Wl,PR_Free -Wl,--wrap -Wl,PR_Malloc -Wl,--wrap -Wl,PR_Calloc -Wl,--wrap -Wl,PR_Realloc"
6370 MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) -o $@'
6374 dnl ========================================================
6375 dnl = Location of malloc wrapper lib
6376 dnl ========================================================
6377 MOZ_ARG_WITH_STRING(wrap-malloc,
6378 [ --with-wrap-malloc=DIR Location of malloc wrapper library],
6379 WRAP_MALLOC_LIB=$withval)
6381 dnl ========================================================
6382 dnl = Use Electric Fence
6383 dnl ========================================================
6384 MOZ_ARG_ENABLE_BOOL(efence,
6385 [ --enable-efence Link with Electric Fence],
6388 if test -n "$_ENABLE_EFENCE"; then
6389 AC_CHECK_LIB(efence,malloc)
6392 dnl ========================================================
6394 dnl ========================================================
6395 MOZ_ARG_ENABLE_BOOL(jprof,
6396 [ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof)],
6399 if test -n "$MOZ_JPROF"; then
6400 AC_DEFINE(MOZ_JPROF)
6403 dnl ========================================================
6405 dnl ========================================================
6406 MOZ_ARG_ENABLE_BOOL(shark,
6407 [ --enable-shark Enable shark remote profiling (needs CHUD framework)],
6410 if test -n "$MOZ_SHARK"; then
6411 AC_DEFINE(MOZ_SHARK)
6414 dnl ========================================================
6415 dnl = Enable stripping of libs & executables
6416 dnl ========================================================
6417 MOZ_ARG_ENABLE_BOOL(strip,
6418 [ --enable-strip Enable stripping of libs & executables ],
6422 dnl ========================================================
6423 dnl = Enable stripping of libs & executables when packaging
6424 dnl ========================================================
6425 MOZ_ARG_ENABLE_BOOL(install-strip,
6426 [ --enable-install-strip Enable stripping of libs & executables when packaging ],
6430 dnl ========================================================
6431 dnl = --enable-elf-dynstr-gc
6432 dnl ========================================================
6433 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
6434 [ --enable-elf-dynstr-gc Enable elf dynstr garbage collector (opt builds only)],
6435 USE_ELF_DYNSTR_GC=1,
6436 USE_ELF_DYNSTR_GC= )
6438 dnl ========================================================
6439 dnl = --enable-old-abi-compat-wrappers
6440 dnl ========================================================
6441 dnl on x86 linux, the current builds of some popular plugins (notably
6442 dnl flashplayer and real) expect a few builtin symbols from libgcc
6443 dnl which were available in some older versions of gcc. However,
6444 dnl they're _NOT_ available in newer versions of gcc (eg 3.1), so if
6445 dnl we want those plugin to work with a gcc-3.1 built binary, we need
6446 dnl to provide these symbols. MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS defaults
6447 dnl to true on x86 linux, and false everywhere else.
6450 MOZ_ARG_ENABLE_BOOL(old-abi-compat-wrappers,
6451 [ --enable-old-abi-compat-wrappers
6452 Support old GCC ABI symbols to ease the pain
6453 of the linux compiler change],
6454 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1,
6455 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS= )
6456 if test "$COMPILE_ENVIRONMENT"; then
6457 if test "$MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS"; then
6460 AC_CHECK_FUNCS(__builtin_vec_new __builtin_vec_delete __builtin_new __builtin_delete __pure_virtual)
6462 AC_DEFINE(MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS)
6464 fi # COMPILE_ENVIRONMENT
6466 dnl ========================================================
6467 dnl = --enable-prebinding
6468 dnl ========================================================
6469 MOZ_ARG_ENABLE_BOOL(prebinding,
6470 [ --enable-prebinding Enable prebinding (Mac OS X only)],
6474 dnl ========================================================
6476 dnl = Profiling and Instrumenting
6478 dnl ========================================================
6479 MOZ_ARG_HEADER(Profiling and Instrumenting)
6481 dnl ========================================================
6482 dnl = Enable timeline service, which provides lightweight
6483 dnl = instrumentation of mozilla for performance measurement.
6484 dnl = Timeline is off by default.
6485 dnl ========================================================
6486 MOZ_ARG_ENABLE_BOOL(timeline,
6487 [ --enable-timeline Enable timeline services ],
6490 if test -n "$MOZ_TIMELINE"; then
6491 AC_DEFINE(MOZ_TIMELINE)
6494 dnl ========================================================
6495 dnl Turn on reflow counting
6496 dnl ========================================================
6497 MOZ_ARG_ENABLE_BOOL(reflow-perf,
6498 [ --enable-reflow-perf Enable reflow performance tracing],
6501 if test -n "$MOZ_REFLOW_PREF"; then
6502 AC_DEFINE(MOZ_REFLOW_PREF)
6504 AC_SUBST(MOZ_REFLOW_PERF)
6506 dnl ========================================================
6507 dnl Enable performance metrics.
6508 dnl ========================================================
6509 MOZ_ARG_ENABLE_BOOL(perf-metrics,
6510 [ --enable-perf-metrics Enable performance metrics],
6513 if test -n "$MOZ_PERF_METRICS"; then
6514 AC_DEFINE(MOZ_PERF_METRICS)
6517 dnl ========================================================
6518 dnl Enable code size metrics.
6519 dnl ========================================================
6520 MOZ_ARG_ENABLE_BOOL(codesighs,
6521 [ --enable-codesighs Enable code size analysis tools],
6522 _ENABLE_CODESIGHS=1,
6523 _ENABLE_CODESIGHS= )
6524 if test -n "$_ENABLE_CODESIGHS"; then
6525 if test -d $srcdir/tools/codesighs; then
6528 AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
6532 dnl ========================================================
6533 dnl = Add support for Eazel profiler
6534 dnl ========================================================
6535 MOZ_ARG_ENABLE_BOOL(eazel-profiler-support,
6536 [ --enable-eazel-profiler-support
6537 Enable Corel/Eazel profiler support],
6538 ENABLE_EAZEL_PROFILER=1,
6539 ENABLE_EAZEL_PROFILER= )
6540 if test -n "$ENABLE_EAZEL_PROFILER"; then
6541 AC_DEFINE(ENABLE_EAZEL_PROFILER)
6543 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6544 EAZEL_PROFILER_CFLAGS="-g -O -gdwarf-2 -finstrument-functions -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
6545 EAZEL_PROFILER_LIBS="-lprofiler -lpthread"
6548 MOZ_ARG_ENABLE_STRING(profile-modules,
6549 [ --enable-profile-modules
6550 Enable/disable profiling for specific modules],
6551 [ MOZ_PROFILE_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6553 MOZ_ARG_ENABLE_BOOL(insure,
6554 [ --enable-insure Enable insure++ instrumentation (linux only)],
6557 if test -n "$_ENABLE_INSURE"; then
6561 MOZ_INSURE_EXCLUDE_DIRS="config"
6564 MOZ_ARG_WITH_STRING(insure-dirs,
6565 [ --with-insure-dirs=DIRS
6566 Dirs to instrument with insure ],
6567 MOZ_INSURE_DIRS=$withval )
6569 MOZ_ARG_WITH_STRING(insure-exclude-dirs,
6570 [ --with-insure-exclude-dirs=DIRS
6571 Dirs to not instrument with insure ],
6572 MOZ_INSURE_EXCLUDE_DIRS="config $withval" )
6574 dnl ========================================================
6575 dnl = Support for Quantify (Windows)
6576 dnl ========================================================
6577 MOZ_ARG_ENABLE_BOOL(quantify,
6578 [ --enable-quantify Enable Quantify support (Windows only) ],
6582 dnl ========================================================
6583 dnl = Support for demangling undefined symbols
6584 dnl ========================================================
6585 if test -z "$SKIP_LIBRARY_CHECKS"; then
6588 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
6592 # Demangle only for debug or trace-malloc builds
6593 MOZ_DEMANGLE_SYMBOLS=
6594 if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
6595 MOZ_DEMANGLE_SYMBOLS=1
6596 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
6598 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
6600 dnl ========================================================
6601 dnl = Support for gcc stack unwinding (from gcc 3.3)
6602 dnl ========================================================
6603 if test "$HAVE_GCC3_ABI" && test -z "$SKIP_LIBRARY_CHECKS"; then
6604 AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
6607 dnl ========================================================
6611 dnl ========================================================
6612 MOZ_ARG_HEADER(Misc. Options)
6614 dnl ========================================================
6615 dnl update xterm title
6616 dnl ========================================================
6617 MOZ_ARG_ENABLE_BOOL(xterm-updates,
6618 [ --enable-xterm-updates Update XTERM titles with current command.],
6622 dnl =========================================================
6624 dnl =========================================================
6625 MOZ_ARG_ENABLE_STRING([chrome-format],
6626 [ --enable-chrome-format=jar|flat|both|symlink
6627 Select FORMAT of chrome files (default=jar)],
6628 MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
6630 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
6631 MOZ_CHROME_FILE_FORMAT=jar
6634 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
6635 test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
6636 test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
6637 test "$MOZ_CHROME_FILE_FORMAT" != "both"; then
6638 AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, or symlink])
6641 dnl ========================================================
6642 dnl = Define default location for MOZILLA_FIVE_HOME
6643 dnl ========================================================
6644 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
6645 [ --with-default-mozilla-five-home
6646 Set the default value for MOZILLA_FIVE_HOME],
6647 [ val=`echo $withval`
6648 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
6650 dnl ========================================================
6651 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
6652 dnl ========================================================
6653 MOZ_ARG_WITH_STRING(user-appdir,
6654 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
6655 [ val=`echo $withval`
6656 if echo "$val" | grep "\/" >/dev/null; then
6657 AC_MSG_ERROR("Homedir must be single relative path.")
6662 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
6664 dnl ========================================================
6665 dnl = Doxygen configuration
6666 dnl ========================================================
6667 dnl Use commas to specify multiple dirs to this arg
6668 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
6669 MOZ_ARG_WITH_STRING(doc-input-dirs,
6670 [ --with-doc-input-dirs=DIRS
6671 Header/idl dirs to create docs from],
6672 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6673 AC_SUBST(MOZ_DOC_INPUT_DIRS)
6675 dnl Use commas to specify multiple dirs to this arg
6676 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
6677 MOZ_ARG_WITH_STRING(doc-include-dirs,
6678 [ --with-doc-include-dirs=DIRS
6679 Include dirs to preprocess doc headers],
6680 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6681 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
6683 MOZ_DOC_OUTPUT_DIR='./dist/docs'
6684 MOZ_ARG_WITH_STRING(doc-output-dir,
6685 [ --with-doc-output-dir=DIR
6686 Dir to generate docs into],
6687 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
6688 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
6690 if test -z "$SKIP_COMPILER_CHECKS"; then
6691 dnl ========================================================
6693 dnl = Compiler Options
6695 dnl ========================================================
6696 MOZ_ARG_HEADER(Compiler Options)
6698 dnl ========================================================
6699 dnl Check for gcc -pipe support
6700 dnl ========================================================
6701 AC_MSG_CHECKING([for gcc -pipe support])
6702 if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
6703 echo '#include <stdio.h>' > dummy-hello.c
6704 echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
6705 ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
6706 cat dummy-hello.s | ${AS_BIN} -o dummy-hello.S - 2>&5
6707 if test $? = 0; then
6712 if test "$_res_as_stdin" = "yes"; then
6713 _SAVE_CFLAGS=$CFLAGS
6714 CFLAGS="$CFLAGS -pipe"
6715 AC_TRY_COMPILE( [ #include <stdio.h> ],
6716 [printf("Hello World\n");],
6717 [_res_gcc_pipe="yes"],
6718 [_res_gcc_pipe="no"] )
6719 CFLAGS=$_SAVE_CFLAGS
6721 if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then
6723 CFLAGS="$CFLAGS -pipe"
6724 CXXFLAGS="$CXXFLAGS -pipe"
6728 rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
6729 AC_MSG_RESULT([$_res])
6734 dnl pass -Wno-long-long to the compiler
6735 MOZ_ARG_ENABLE_BOOL(long-long-warning,
6736 [ --enable-long-long-warning
6737 Warn about use of non-ANSI long long type],
6738 _IGNORE_LONG_LONG_WARNINGS=,
6739 _IGNORE_LONG_LONG_WARNINGS=1)
6741 if test "$_IGNORE_LONG_LONG_WARNINGS"; then
6742 _SAVE_CFLAGS="$CFLAGS"
6743 CFLAGS="$CFLAGS ${_COMPILER_PREFIX}-Wno-long-long"
6744 AC_MSG_CHECKING([whether compiler supports -Wno-long-long])
6745 AC_TRY_COMPILE([], [return(0);],
6746 [ _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6747 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6748 result="yes" ], result="no")
6749 AC_MSG_RESULT([$result])
6750 CFLAGS="$_SAVE_CFLAGS"
6753 dnl ========================================================
6754 dnl Profile guided optimization
6755 dnl ========================================================
6756 dnl Test for profiling options
6757 dnl Under gcc 3.3, use -fprofile-arcs/-fbranch-probabilities
6758 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
6760 dnl Provide a switch to disable PGO even when called via profiledbuild.
6761 MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
6762 [ --disable-profile-guided-optimization
6763 Don't build with PGO even if called via make profiledbuild],
6764 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
6765 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
6767 AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
6769 _SAVE_CFLAGS="$CFLAGS"
6770 CFLAGS="$CFLAGS -fprofile-generate"
6772 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
6773 AC_TRY_COMPILE([], [return 0;],
6774 [ PROFILE_GEN_CFLAGS="-fprofile-generate"
6775 result="yes" ], result="no")
6776 AC_MSG_RESULT([$result])
6778 if test $result = "yes"; then
6779 PROFILE_GEN_LDFLAGS="-fprofile-generate"
6780 PROFILE_USE_CFLAGS="-fprofile-use"
6781 PROFILE_USE_LDFLAGS="-fprofile-use"
6783 CFLAGS="$_SAVE_CFLAGS -fprofile-arcs"
6784 AC_MSG_CHECKING([whether C compiler supports -fprofile-arcs])
6785 AC_TRY_COMPILE([], [return 0;],
6786 [ PROFILE_GEN_CFLAGS="-fprofile-arcs"
6787 result="yes" ], result="no")
6788 AC_MSG_RESULT([$result])
6789 if test $result = "yes"; then
6790 PROFILE_USE_CFLAGS="-fbranch-probabilities"
6792 # don't really care, this is an old GCC
6793 PROFILE_GEN_LDFLAGS=
6794 PROFILE_USE_LDFLAGS=
6797 CFLAGS="$_SAVE_CFLAGS"
6799 if test -n "$INTEL_CC"; then
6800 PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
6801 PROFILE_GEN_LDFLAGS=
6802 PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
6803 PROFILE_USE_LDFLAGS=
6806 dnl Sun Studio on Solaris
6807 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
6808 PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
6809 PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
6810 if test "$CPU_ARCH" != "sparc"; then
6811 PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
6812 PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
6814 PROFILE_USE_CFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
6815 PROFILE_USE_LDFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
6819 AC_SUBST(PROFILE_GEN_CFLAGS)
6820 AC_SUBST(PROFILE_GEN_LDFLAGS)
6821 AC_SUBST(PROFILE_USE_CFLAGS)
6822 AC_SUBST(PROFILE_USE_LDFLAGS)
6826 dnl ========================================================
6827 dnl Test for -pedantic bustage
6828 dnl ========================================================
6829 MOZ_ARG_DISABLE_BOOL(pedantic,
6830 [ --disable-pedantic Issue all warnings demanded by strict ANSI C ],
6832 if test "$_PEDANTIC"; then
6833 _SAVE_CXXFLAGS=$CXXFLAGS
6834 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
6835 AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
6836 AC_TRY_COMPILE([$configure_static_assert_macros],
6837 [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
6838 result="no", result="yes" )
6839 AC_MSG_RESULT([$result])
6840 CXXFLAGS="$_SAVE_CXXFLAGS"
6844 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic"
6845 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
6848 AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic. Reconfigure using --disable-pedantic. ])
6853 dnl ========================================================
6854 dnl Test for correct temporary object destruction order
6855 dnl ========================================================
6856 dnl We want to make sure the compiler follows the C++ spec here as
6857 dnl xpcom and the string classes depend on it (bug 235381).
6858 AC_MSG_CHECKING([for correct temporary object destruction order])
6859 AC_TRY_RUN([ class A {
6860 public: A(int& x) : mValue(x) {}
6862 operator char**() { return 0; }
6863 private: int& mValue;
6865 void func(char **arg) {}
6876 result="yes", result="no", result="maybe")
6877 AC_MSG_RESULT([$result])
6879 if test "$result" = "no"; then
6880 AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
6883 dnl ========================================================
6884 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
6885 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
6886 dnl raw pointers in nsCOMPtr.h. (VC++ has the same bug.)
6887 dnl ========================================================
6888 _SAVE_CXXFLAGS=$CXXFLAGS
6889 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
6890 AC_CACHE_CHECK(for correct overload resolution with const and templates,
6891 ac_nscap_nonconst_opeq_bug,
6900 template <class T, class U>
6901 int operator==(const Pointer<T>& rhs, U* lhs)
6903 return rhs.myPtr == lhs;
6906 template <class T, class U>
6907 int operator==(const Pointer<T>& rhs, const U* lhs)
6909 return rhs.myPtr == lhs;
6917 ac_nscap_nonconst_opeq_bug="no",
6918 ac_nscap_nonconst_opeq_bug="yes")])
6919 CXXFLAGS="$_SAVE_CXXFLAGS"
6921 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
6922 AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
6924 fi # SKIP_COMPILER_CHECKS
6926 dnl ========================================================
6928 dnl Should be smarter and check that the compiler does indeed have rtti
6929 dnl ========================================================
6930 MOZ_ARG_ENABLE_BOOL(cpp-rtti,
6931 [ --enable-cpp-rtti Enable C++ RTTI ],
6932 [ _MOZ_USE_RTTI=1 ],
6935 if test "$_MOZ_USE_RTTI"; then
6936 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
6938 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
6941 AC_SUBST(_MOZ_RTTI_FLAGS_ON)
6943 dnl ========================================================
6944 dnl C++ exceptions (g++/egcs only - for now)
6945 dnl Should be smarter and check that the compiler does indeed have exceptions
6946 dnl ========================================================
6947 MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
6948 [ --enable-cpp-exceptions Enable C++ exceptions ],
6949 [ _MOZ_CPP_EXCEPTIONS=1 ],
6950 [ _MOZ_CPP_EXCEPTIONS= ])
6952 if test "$_MOZ_CPP_EXCEPTIONS"; then
6953 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_ON
6955 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_OFF
6958 # Irix & OSF native compilers do not like exception declarations
6959 # when exceptions are disabled
6960 if test -n "$MIPSPRO_CXX" -o -n "$COMPAQ_CXX" -o -n "$VACPP"; then
6961 AC_DEFINE(CPP_THROW_NEW, [])
6963 AC_DEFINE(CPP_THROW_NEW, [throw()])
6967 dnl ========================================================
6969 dnl = Build depencency options
6971 dnl ========================================================
6972 MOZ_ARG_HEADER(Build dependencies)
6974 dnl ========================================================
6975 dnl = Do not auto generate dependency info
6976 dnl ========================================================
6978 MOZ_ARG_DISABLE_BOOL(auto-deps,
6979 [ --disable-auto-deps Do not automatically generate dependency info],
6983 if test -n "$MOZ_AUTO_DEPS"; then
6984 dnl ========================================================
6985 dnl = Use mkdepend instead of $CC -MD for dependency generation
6986 dnl ========================================================
6988 MOZ_ARG_DISABLE_BOOL(md,
6989 [ --disable-md Do not use compiler-based dependencies ],
6992 [dnl Default is to turn on -MD if using GNU-compatible compilers
6993 if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
6996 dnl Default is to use -xM if using Sun Studio on Solaris
6997 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
7000 if test "$_cpp_md_flag"; then
7002 if test "$OS_ARCH" = "OpenVMS"; then
7003 _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(*F).pp))'
7005 _DEPEND_CFLAGS='$(filter-out %/.pp,-Wp,-MD,$(MDDEPDIR)/$(*F).pp)'
7007 dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7008 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
7013 _USE_CPP_INCLUDE_FLAG=
7014 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7015 _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7019 AC_SUBST(MOZ_AUTO_DEPS)
7020 AC_SUBST(COMPILER_DEPEND)
7024 dnl ========================================================
7026 dnl = Static Build Options
7028 dnl ========================================================
7029 MOZ_ARG_HEADER(Static build options)
7031 MOZ_ARG_ENABLE_BOOL(static,
7032 [ --enable-static Enable building of internal static libs],
7033 BUILD_STATIC_LIBS=1,
7036 dnl Disable libxul in debug builds, but not for xulrunner.
7037 if test -n "$MOZ_DEBUG" -a "$MOZ_BUILD_APP" != "xulrunner"; then
7041 MOZ_ARG_ENABLE_BOOL(libxul,
7042 [ --enable-libxul Enable building of libxul],
7043 MOZ_ENABLE_LIBXUL=1,
7046 if test -n "$MOZ_ENABLE_LIBXUL" -a -n "$BUILD_STATIC_LIBS"; then
7047 AC_MSG_ERROR([--enable-libxul is not compatible with --enable-static])
7050 if test -n "$MOZ_ENABLE_LIBXUL" -a -z "$MOZ_XUL_APP"; then
7051 AC_MSG_ERROR([--enable-libxul is only compatible with toolkit XUL applications.])
7054 if test -n "$MOZ_ENABLE_LIBXUL"; then
7055 XPCOM_LIBS="$LIBXUL_LIBS"
7056 AC_DEFINE(MOZ_ENABLE_LIBXUL)
7058 if test -n "$BUILD_STATIC_LIBS"; then
7059 AC_DEFINE(MOZ_STATIC_BUILD)
7061 XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS"
7064 dnl ========================================================
7065 dnl = Force JS to be a static lib
7066 dnl ========================================================
7067 MOZ_ARG_ENABLE_BOOL(js-static-build,
7068 [ --enable-js-static-build Force js to be a static lib],
7072 AC_SUBST(JS_STATIC_BUILD)
7074 if test -n "$JS_STATIC_BUILD"; then
7075 AC_DEFINE(EXPORT_JS_API)
7077 if test -z "$BUILD_STATIC_LIBS"; then
7078 AC_MSG_ERROR([--enable-js-static-build is only compatible with --enable-static])
7083 dnl Disable static mail in debug builds, but not with libxul sdk.
7084 if test -n "$MOZ_DEBUG" -a -z "$LIBXUL_SDK"; then
7085 MOZ_STATIC_MAIL_BUILD=
7087 MOZ_ARG_ENABLE_BOOL(static-mail,
7088 [ --enable-static-mail Enable static mail build support],
7089 MOZ_STATIC_MAIL_BUILD=1,
7090 MOZ_STATIC_MAIL_BUILD= )
7092 if test "$MOZ_STATIC_MAIL_BUILD"; then
7093 AC_DEFINE(MOZ_STATIC_MAIL_BUILD)
7096 AC_SUBST(MOZ_STATIC_MAIL_BUILD)
7098 dnl ========================================================
7100 dnl = Standalone module options
7102 dnl ========================================================
7103 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7105 dnl Check for GLib and libIDL.
7106 dnl ========================================================
7107 case "$target_os" in
7108 msvc*|mks*|cygwin*|mingw*|wince*)
7109 SKIP_IDL_CHECK="yes"
7116 if test -z "$COMPILE_ENVIRONMENT"; then
7117 SKIP_IDL_CHECK="yes"
7120 dnl = Allow users to disable libIDL checking for standalone modules
7121 MOZ_ARG_WITHOUT_BOOL(libIDL,
7122 [ --without-libIDL Skip check for libIDL (standalone modules only)],
7123 SKIP_IDL_CHECK="yes")
7125 if test "$SKIP_IDL_CHECK" = "no"
7128 if test "$MACOS_SDK_DIR"; then
7129 dnl xpidl, and therefore libIDL, is only needed on the build host.
7130 dnl Don't build it against the SDK, as that causes problems.
7131 _MACSAVE_CFLAGS="$CFLAGS"
7132 _MACSAVE_LIBS="$LIBS"
7133 _MACSAVE_LDFLAGS="$LDFLAGS"
7134 _MACSAVE_NEXT_ROOT="$NEXT_ROOT"
7136 CFLAGS=`echo $CFLAGS|sed -E -e "s%((-I|-isystem )${MACOS_SDK_DIR}/usr/(include|lib/gcc)[^ ]*)|-F${MACOS_SDK_DIR}(/System)?/Library/Frameworks[^ ]*|-nostdinc[^ ]*|-isysroot ${MACOS_SDK_DIR}%%g"`
7137 LIBS=`echo $LIBS|sed -e "s?-L${MACOS_SDK_DIR}/usr/lib[^ ]*??g"`
7138 LDFLAGS=`echo $LDFLAGS|sed -e "s?-Wl,-syslibroot,${MACOS_SDK_DIR}??g"`
7143 if test "$MOZ_ENABLE_GTK2"; then
7144 PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0 glib-2.0 gobject-2.0, _LIBIDL_FOUND=1,_LIBIDL_FOUND=)
7146 dnl if no gtk/libIDL1 or gtk2/libIDL2 combination was found, fall back
7147 dnl to either libIDL1 or libIDL2.
7148 if test -z "$_LIBIDL_FOUND"; then
7149 AM_PATH_LIBIDL($LIBIDL_VERSION,_LIBIDL_FOUND=1)
7150 if test -z "$_LIBIDL_FOUND"; then
7151 PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0,_LIBIDL_FOUND=1)
7155 dnl If we don't have a libIDL config program & not cross-compiling,
7156 dnl look for orbit-config instead.
7158 if test -z "$_LIBIDL_FOUND" && test -z "$CROSS_COMPILE"; then
7159 AC_PATH_PROGS(ORBIT_CONFIG, $ORBIT_CONFIG orbit-config)
7160 if test -n "$ORBIT_CONFIG"; then
7161 AC_MSG_CHECKING([for ORBit libIDL usability])
7162 _ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags`
7163 _ORBIT_LIBS=`${ORBIT_CONFIG} client --libs`
7164 _ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}`
7165 _ORBIT_LIB_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-L/); } }' -- ${_ORBIT_LIBS}`
7166 LIBIDL_CFLAGS="$_ORBIT_INC_PATH"
7167 LIBIDL_LIBS="$_ORBIT_LIB_PATH -lIDL -lglib"
7169 _SAVE_CFLAGS="$CFLAGS"
7171 CFLAGS="$LIBIDL_CFLAGS $CFLAGS"
7172 LIBS="$LIBIDL_LIBS $LIBS"
7175 #include <libIDL/IDL.h>
7178 s=strdup(IDL_get_libver_string());
7191 AC_MSG_RESULT($result)
7192 CFLAGS="$_SAVE_CFLAGS"
7196 if test -z "$_LIBIDL_FOUND"; then
7197 AC_MSG_ERROR([libIDL not found.
7198 libIDL $LIBIDL_VERSION or higher is required.])
7200 if test "$MACOS_SDK_DIR"; then
7201 CFLAGS="$_MACSAVE_CFLAGS"
7202 LIBS="$_MACSAVE_LIBS"
7203 LDFLAGS="$_MACSAVE_LDFLAGS"
7204 if test -n "$_MACSAVE_NEXT_ROOT" ; then
7205 export NEXT_ROOT="$_MACSAVE_NEXT_ROOT"
7210 if test -n "$CROSS_COMPILE"; then
7211 if test -z "$HOST_LIBIDL_CONFIG"; then
7212 HOST_LIBIDL_CONFIG="$LIBIDL_CONFIG"
7214 if test -n "$HOST_LIBIDL_CONFIG" && test "$HOST_LIBIDL_CONFIG" != "no"; then
7215 HOST_LIBIDL_CFLAGS=`${HOST_LIBIDL_CONFIG} --cflags`
7216 HOST_LIBIDL_LIBS=`${HOST_LIBIDL_CONFIG} --libs`
7218 HOST_LIBIDL_CFLAGS="$LIBIDL_CFLAGS"
7219 HOST_LIBIDL_LIBS="$LIBIDL_LIBS"
7223 if test -z "$SKIP_PATH_CHECKS"; then
7224 if test -z "${GLIB_CFLAGS}" || test -z "${GLIB_LIBS}" ; then
7225 if test "$MOZ_ENABLE_GTK2"; then
7226 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
7228 AM_PATH_GLIB(${GLIB_VERSION})
7233 if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then
7234 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
7237 AC_SUBST(LIBIDL_CFLAGS)
7238 AC_SUBST(LIBIDL_LIBS)
7239 AC_SUBST(STATIC_LIBIDL)
7240 AC_SUBST(GLIB_CFLAGS)
7242 AC_SUBST(GLIB_GMODULE_LIBS)
7243 AC_SUBST(HOST_LIBIDL_CONFIG)
7244 AC_SUBST(HOST_LIBIDL_CFLAGS)
7245 AC_SUBST(HOST_LIBIDL_LIBS)
7247 dnl ========================================================
7248 dnl Check for libart
7249 dnl ========================================================
7250 if test "$MOZ_SVG_RENDERER_LIBART"; then
7251 if test ! -f $topsrcdir/other-licenses/libart_lgpl/Makefile.in; then
7252 AC_MSG_ERROR([You must check out the mozilla version of libart. Use
7253 mk_add_options MOZ_CO_MODULE=mozilla/other-licenses/libart_lgpl])
7256 dnl libart's configure hasn't been run yet, but we know what the
7257 dnl answer should be anyway
7258 MOZ_LIBART_CFLAGS='-I${DIST}/include/libart_lgpl'
7259 case "$target_os" in
7260 msvc*|mks*|cygwin*|mingw*|wince*)
7261 MOZ_LIBART_LIBS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)moz_art_lgpl.$(IMPORT_LIB_SUFFIX)'
7264 MOZ_LIBART_LIBS='-lmoz_art -lm'
7267 MOZ_LIBART_LIBS='-lmoz_art_lgpl -lroot -lbe'
7270 MOZ_LIBART_LIBS='-lmoz_art_lgpl -lm'
7276 AC_SUBST(MOZ_LIBART_CFLAGS)
7277 AC_SUBST(MOZ_LIBART_LIBS)
7279 dnl ========================================================
7281 dnl ========================================================
7282 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
7285 MOZ_ARG_ENABLE_BOOL(system-cairo,
7286 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
7290 # Check for headers defining standard int types.
7291 AC_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
7293 if test "$MOZ_TREE_CAIRO"; then
7294 AC_DEFINE(MOZ_TREE_CAIRO)
7296 # For now we assume that we will have a uint64_t available through
7297 # one of the above headers or mozstdint.h.
7298 AC_DEFINE(HAVE_UINT64_T)
7300 # Define macros for cairo-features.h
7301 if test "$MOZ_X11"; then
7302 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
7303 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
7304 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
7305 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7306 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7307 MOZ_ENABLE_CAIRO_FT=1
7308 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
7310 if test "$MOZ_WIDGET_TOOLKIT" = "mac" -o "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
7311 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
7312 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
7313 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
7315 if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
7316 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
7317 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
7318 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7320 if test "$MOZ_WIDGET_TOOLKIT" = "os2"; then
7321 OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
7322 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7323 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7324 MOZ_ENABLE_CAIRO_FT=1
7325 CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
7326 CAIRO_FT_LIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
7328 if test "$MOZ_ENABLE_GLITZ"; then
7329 GLITZ_SURFACE_FEATURE="#define CAIRO_HAS_GLITZ_SURFACE 1"
7331 if test "$MOZ_WIDGET_TOOLKIT" = "beos"; then
7332 PKG_CHECK_MODULES(CAIRO_FT, fontconfig freetype2)
7333 BEOS_SURFACE_FEATURE="#define CAIRO_HAS_BEOS_SURFACE 1"
7334 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7335 MOZ_ENABLE_CAIRO_FT=1
7337 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
7338 AC_SUBST(CAIRO_FT_CFLAGS)
7340 if test "$MOZ_DEBUG"; then
7341 SANITY_CHECKING_FEATURE="#define CAIRO_DO_SANITY_CHECKING 1"
7343 SANITY_CHECKING_FEATURE="#undef CAIRO_DO_SANITY_CHECKING"
7346 PNG_FUNCTIONS_FEATURE="#define CAIRO_HAS_PNG_FUNCTIONS 1"
7348 AC_SUBST(PS_SURFACE_FEATURE)
7349 AC_SUBST(PDF_SURFACE_FEATURE)
7350 AC_SUBST(SVG_SURFACE_FEATURE)
7351 AC_SUBST(XLIB_SURFACE_FEATURE)
7352 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
7353 AC_SUBST(QUARTZ_SURFACE_FEATURE)
7354 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
7355 AC_SUBST(XCB_SURFACE_FEATURE)
7356 AC_SUBST(WIN32_SURFACE_FEATURE)
7357 AC_SUBST(OS2_SURFACE_FEATURE)
7358 AC_SUBST(BEOS_SURFACE_FEATURE)
7359 AC_SUBST(GLITZ_SURFACE_FEATURE)
7360 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
7361 AC_SUBST(FT_FONT_FEATURE)
7362 AC_SUBST(WIN32_FONT_FEATURE)
7363 AC_SUBST(QUARTZ_FONT_FEATURE)
7364 AC_SUBST(PNG_FUNCTIONS_FEATURE)
7366 if test "$_WIN32_MSVC"; then
7367 MOZ_CAIRO_LIBS='$(DEPTH)/gfx/cairo/cairo/src/mozcairo.lib $(DEPTH)/gfx/cairo/libpixman/src/mozlibpixman.lib'
7368 if test "$MOZ_ENABLE_GLITZ"; then
7369 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'$(DEPTH)/gfx/cairo/glitz/src/mozglitz.lib $(DEPTH)/gfx/cairo/glitz/src/wgl/mozglitzwgl.lib'
7372 MOZ_CAIRO_LIBS='$(DEPTH)/gfx/cairo/cairo/src/$(LIB_PREFIX)mozcairo.$(LIB_SUFFIX) $(DEPTH)/gfx/cairo/libpixman/src/$(LIB_PREFIX)mozlibpixman.$(LIB_SUFFIX)'" $CAIRO_FT_LIBS"
7374 if test "$MOZ_X11"; then
7375 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS -lXrender -lfreetype -lfontconfig"
7378 if test "$MOZ_ENABLE_GLITZ"; then
7379 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src -lmozglitz'
7380 if test "$MOZ_X11"; then
7381 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src/glx -lmozglitzglx -lGL'
7383 if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
7384 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src/wgl -lmozglitzwgl'
7389 PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION freetype2 fontconfig)
7390 MOZ_CAIRO_CFLAGS=$CAIRO_CFLAGS
7391 MOZ_CAIRO_LIBS=$CAIRO_LIBS
7392 if test "$MOZ_X11"; then
7393 PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
7394 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
7395 MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
7399 AC_SUBST(MOZ_TREE_CAIRO)
7400 AC_SUBST(MOZ_CAIRO_CFLAGS)
7401 AC_SUBST(MOZ_CAIRO_LIBS)
7403 dnl ========================================================
7405 dnl ========================================================
7408 MOZ_ARG_ENABLE_BOOL(system-lcms,
7409 [ --enable-system-lcms Use system lcms (located with pkgconfig)],
7413 if test -z "$MOZ_NATIVE_LCMS"
7416 if test "$_WIN32_MSVC"; then
7417 if test -z "$BUILD_STATIC_LIBS" -a -z "$MOZ_ENABLE_LIBXUL"; then
7418 LCMS_CFLAGS=-DLCMS_DLL
7420 LCMS_LIBS='$(LIBXUL_DIST)/lib/mozlcms.lib'
7422 LCMS_LIBS='-L$(LIBXUL_DIST)/bin -lmozlcms'
7425 PKG_CHECK_MODULES(LCMS, lcms >= $LCMS_VERSION)
7428 AC_SUBST(MOZ_NATIVE_LCMS)
7429 AC_SUBST(LCMS_CFLAGS)
7432 dnl ========================================================
7434 dnl ========================================================
7435 MOZ_ARG_DISABLE_BOOL(xul,
7436 [ --disable-xul Disable XUL],
7438 if test "$MOZ_XUL"; then
7441 dnl remove extensions that require XUL
7442 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
7447 dnl ========================================================
7448 dnl Two ways to enable Python support:
7449 dnl --enable-extensions=python # select all available.
7450 dnl (MOZ_PYTHON_EXTENSIONS contains the list of extensions)
7452 dnl --enable-extensions=python/xpcom,... # select individual ones
7454 dnl If either is used, we locate the Python to use.
7455 dnl ========================================================
7457 dnl If 'python' appears anywhere in the extensions list, go lookin'...
7458 if test `echo "$MOZ_EXTENSIONS" | grep -c python` -ne 0; then
7459 dnl Allow PYTHON to point to the Python interpreter to use
7460 dnl (note that it must be the python executable - which we
7461 dnl run to locate the relevant paths etc)
7462 dnl If not set, we use whatever Python we can find.
7464 dnl Ask Python what its version number is
7466 MOZ_PYTHON_VER=`$PYTHON -c "import sys;print '%d%d' % sys.version_info[0:2]"`
7467 MOZ_PYTHON_VER_DOTTED=`$PYTHON -c "import sys;print '%d.%d' % sys.version_info[0:2]"`
7469 dnl Ask for the Python "prefix" (ie, home/source dir)
7470 MOZ_PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
7471 dnl Setup the include and library directories.
7472 if test "$OS_ARCH" = "WINNT"; then
7473 MOZ_PYTHON_PREFIX=`$CYGPATH_W $MOZ_PYTHON_PREFIX | $CYGPATH_S`
7474 dnl Source trees have "include" and "PC" for .h, and "PCbuild" for .lib
7475 dnl Binary trees have "include" for .h, and "libs" for .lib
7476 dnl We add 'em both - along with quotes, to handle spaces.
7477 MOZ_PYTHON_DLL_SUFFIX=.pyd
7478 MOZ_PYTHON_INCLUDES="\"-I$MOZ_PYTHON_PREFIX/include\" \"-I$MOZ_PYTHON_PREFIX/PC\""
7479 MOZ_PYTHON_LIBS="\"/libpath:$MOZ_PYTHON_PREFIX/PCBuild\" \"/libpath:$MOZ_PYTHON_PREFIX/libs\""
7481 dnl Non-Windows include and libs
7482 MOZ_PYTHON_DLL_SUFFIX=$DLL_SUFFIX
7483 MOZ_PYTHON_INCLUDES="-I$MOZ_PYTHON_PREFIX/include/python$MOZ_PYTHON_VER_DOTTED"
7484 dnl Check for dynamic Python lib
7485 dnl - A static Python is no good - multiple dynamic libraries (xpcom
7486 dnl - core, xpcom loader, pydom etc) all need to share Python.
7487 dnl - Python 2.3's std --enable-shared configure option will
7488 dnl create a libpython2.3.so.1.0. We should first try this
7489 dnl dotted versioned .so file because this is the one that
7490 dnl the PyXPCOM build mechanics tries to link to.
7491 dnl XXX Should find a better way than hardcoding "1.0".
7492 dnl - Python developement tree dir layouts are NOT allowed here
7493 dnl because the PyXPCOM build just dies on it later anyway.
7494 dnl - Fixes to the above by Python/*nix knowledgable people welcome!
7495 if test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7496 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7497 elif test -f "$MOZ_PYTHON_PREFIX/lib64/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7498 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib64 -lpython$MOZ_PYTHON_VER_DOTTED"
7499 elif test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7500 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7501 elif test -f "$MOZ_PYTHON_PREFIX/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7502 dnl Don't Python development tree directory layout.
7503 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX -lpython$MOZ_PYTHON_VER_DOTTED"
7504 AC_MSG_ERROR([The Python at $MOZ_PYTHON_PREFIX looks like a dev tree. The PyXPCOM build cannot handle this yet. You must 'make install' Python and use the installed tree.])
7505 elif test "$OS_ARCH" = "Darwin"; then
7506 dnl We do Darwin last, so if a custom non-framework build of
7507 dnl python is used on OSX, then it will be picked up first by
7508 dnl the logic above.
7509 MOZ_PYTHON_LIBS="-framework Python"
7511 AC_MSG_ERROR([Could not find build shared libraries for Python at $MOZ_PYTHON_PREFIX. This is required for PyXPCOM.])
7513 if test "$OS_ARCH" = "Linux"; then
7514 MOZ_PYTHON_LIBS="$MOZ_PYTHON_LIBS -lutil"
7517 dnl Handle "_d" on Windows
7518 if test "$OS_ARCH" = "WINNT" && test -n "$MOZ_DEBUG"; then
7519 MOZ_PYTHON_DEBUG_SUFFIX="_d"
7521 MOZ_PYTHON_DEBUG_SUFFIX=
7523 AC_MSG_RESULT(Building Python extensions using python-$MOZ_PYTHON_VER_DOTTED from $MOZ_PYTHON_PREFIX)
7526 dnl If the user asks for the 'python' extension, then we add
7527 dnl MOZ_PYTHON_EXTENSIONS to MOZ_EXTENSIONS - but with the leading 'python/'
7528 dnl Note the careful regex - it must match 'python' followed by anything
7529 dnl other than a '/', including the end-of-string.
7530 if test `echo "$MOZ_EXTENSIONS" | grep -c 'python\([[^/]]\|$\)'` -ne 0; then
7531 for pyext in $MOZ_PYTHON_EXTENSIONS; do
7532 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS python/$pyext`
7535 dnl Later we may allow MOZ_PYTHON_EXTENSIONS to be specified on the
7536 dnl command-line, but not yet
7537 AC_SUBST(MOZ_PYTHON_EXTENSIONS)
7538 AC_SUBST(MOZ_PYTHON)
7539 AC_SUBST(MOZ_PYTHON_PREFIX)
7540 AC_SUBST(MOZ_PYTHON_INCLUDES)
7541 AC_SUBST(MOZ_PYTHON_LIBS)
7542 AC_SUBST(MOZ_PYTHON_VER)
7543 AC_SUBST(MOZ_PYTHON_VER_DOTTED)
7544 AC_SUBST(MOZ_PYTHON_DEBUG_SUFFIX)
7545 AC_SUBST(MOZ_PYTHON_DLL_SUFFIX)
7547 dnl ========================================================
7548 dnl disable profile sharing
7549 dnl ========================================================
7550 MOZ_ARG_DISABLE_BOOL(profilesharing,
7551 [ --disable-profilesharing Disable profile sharing],
7552 MOZ_PROFILESHARING=,
7553 MOZ_PROFILESHARING=1 )
7554 if test "$MOZ_PROFILESHARING"; then
7556 AC_DEFINE(MOZ_PROFILESHARING)
7559 dnl ========================================================
7561 dnl ========================================================
7562 MOZ_ARG_ENABLE_BOOL(ipcd,
7563 [ --enable-ipcd Enable IPC daemon],
7567 dnl ========================================================
7568 dnl disable profile locking
7569 dnl do no use this in applications that can have more than
7570 dnl one process accessing the profile directory.
7571 dnl ========================================================
7572 MOZ_ARG_DISABLE_BOOL(profilelocking,
7573 [ --disable-profilelocking Disable profile locking],
7574 MOZ_PROFILELOCKING=,
7575 MOZ_PROFILELOCKING=1 )
7576 if test "$MOZ_PROFILELOCKING"; then
7577 AC_DEFINE(MOZ_PROFILELOCKING)
7580 dnl ========================================================
7581 dnl disable rdf services
7582 dnl ========================================================
7583 MOZ_ARG_DISABLE_BOOL(rdf,
7584 [ --disable-rdf Disable RDF],
7586 if test "$MOZ_RDF"; then
7592 dnl ========================================================
7593 dnl necko configuration options
7594 dnl ========================================================
7597 dnl option to disable various necko protocols
7599 MOZ_ARG_ENABLE_STRING(necko-protocols,
7600 [ --enable-necko-protocols[={http,ftp,default,all,none}]
7601 Enable/disable specific protocol handlers],
7602 [ for option in `echo $enableval | sed 's/,/ /g'`; do
7603 if test "$option" = "yes" || test "$option" = "all"; then
7604 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7605 elif test "$option" = "no" || test "$option" = "none"; then
7607 elif test "$option" = "default"; then
7608 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7609 elif test `echo "$option" | grep -c \^-` != 0; then
7610 option=`echo $option | sed 's/^-//'`
7611 NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
7613 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
7616 NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
7618 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
7619 AC_SUBST(NECKO_PROTOCOLS)
7620 for p in $NECKO_PROTOCOLS; do
7621 AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
7625 dnl option to disable necko's disk cache
7627 MOZ_ARG_DISABLE_BOOL(necko-disk-cache,
7628 [ --disable-necko-disk-cache
7629 Disable necko disk cache],
7632 AC_SUBST(NECKO_DISK_CACHE)
7633 if test "$NECKO_DISK_CACHE"; then
7634 AC_DEFINE(NECKO_DISK_CACHE)
7638 dnl option to minimize size of necko's i/o buffers
7640 MOZ_ARG_ENABLE_BOOL(necko-small-buffers,
7641 [ --enable-necko-small-buffers
7642 Minimize size of necko's i/o buffers],
7643 NECKO_SMALL_BUFFERS=1,
7644 NECKO_SMALL_BUFFERS=)
7645 AC_SUBST(NECKO_SMALL_BUFFERS)
7646 if test "$NECKO_SMALL_BUFFERS"; then
7647 AC_DEFINE(NECKO_SMALL_BUFFERS)
7651 dnl option to disable cookies
7653 MOZ_ARG_DISABLE_BOOL(cookies,
7654 [ --disable-cookies Disable cookie support],
7657 AC_SUBST(NECKO_COOKIES)
7658 if test "$NECKO_COOKIES"; then
7659 AC_DEFINE(NECKO_COOKIES)
7662 dnl NECKO_ configuration options are not global
7663 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_"
7665 dnl ========================================================
7666 dnl string api compatibility
7667 dnl ========================================================
7668 MOZ_ARG_DISABLE_BOOL(v1-string-abi,
7669 [ --disable-v1-string-abi Disable binary compatibility layer for strings],
7671 MOZ_V1_STRING_ABI=1)
7672 AC_SUBST(MOZ_V1_STRING_ABI)
7673 if test "$MOZ_V1_STRING_ABI"; then
7674 AC_DEFINE(MOZ_V1_STRING_ABI)
7677 dnl Only build Mork if it's required
7679 if test "$MOZ_MORK"; then
7683 dnl Build the lightweight Mork reader if required
7684 AC_SUBST(MOZ_MORKREADER)
7685 if test "$MOZ_MORKREADER"; then
7686 AC_DEFINE(MOZ_MORKREADER)
7689 dnl ========================================================
7690 if test "$MOZ_DEBUG" || test "$NS_TRACE_MALLOC"; then
7691 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7694 if test "$MOZ_LDAP_XPCOM"; then
7695 LDAP_CFLAGS='-I${DIST}/public/ldap'
7696 if test "$OS_ARCH" = "WINNT"; then
7697 if test -n "$GNU_CC"; then
7698 LDAP_LIBS='-L$(DIST)/lib -lnsldap32v60 -lnsldappr32v60 -lnsldif32v60'
7700 LDAP_LIBS='$(DIST)/lib/$(LIB_PREFIX)nsldap32v60.${IMPORT_LIB_SUFFIX} $(DIST)/lib/$(LIB_PREFIX)nsldappr32v60.${IMPORT_LIB_SUFFIX} $(DIST)/lib/$(LIB_PREFIX)nsldif32v60.${IMPORT_LIB_SUFFIX}'
7702 elif test "$OS_ARCH" = "OS2"; then
7703 LDAP_LIBS='$(DIST)/lib/$(LIB_PREFIX)ldap60.${IMPORT_LIB_SUFFIX} $(DIST)/lib/$(LIB_PREFIX)prldap60.${IMPORT_LIB_SUFFIX} $(DIST)/lib/$(LIB_PREFIX)ldif60.${IMPORT_LIB_SUFFIX}'
7705 LDAP_LIBS='-L${DIST}/bin -L${DIST}/lib -lldap60 -lprldap60 -lldif60'
7709 if test "$COMPILE_ENVIRONMENT"; then
7710 if test "$SUNCTL"; then
7711 dnl older versions of glib do not seem to have gmodule which ctl needs
7712 _SAVE_CFLAGS=$CFLAGS
7713 CFLAGS="$CFLAGS $GLIB_CFLAGS"
7716 AC_TRY_COMPILE([#include <gmodule.h>],
7717 [ int x = 1; x++; ],,
7718 [AC_MSG_ERROR([Cannot build ctl without gmodule support in glib.])])
7720 CFLAGS=$_SAVE_CFLAGS
7723 fi # COMPILE_ENVIRONMENT
7725 dnl ========================================================
7727 dnl = Maintainer debug option (no --enable equivalent)
7729 dnl ========================================================
7734 AC_SUBST(AR_EXTRACT)
7738 AC_SUBST(AS_DASH_C_FLAG)
7743 AC_SUBST(USE_SHORT_LIBNAME)
7747 AC_SUBST(NS_USE_NATIVE)
7748 AC_SUBST(MOZ_WIDGET_TOOLKIT)
7749 AC_SUBST(MOZ_GFX_TOOLKIT)
7750 AC_SUBST(MOZ_UPDATE_XTERM)
7752 AC_SUBST(MOZ_AUTH_EXTENSION)
7753 AC_SUBST(MOZ_MATHML)
7754 AC_SUBST(MOZ_PERMISSIONS)
7756 AC_SUBST(MOZ_XMLEXTRAS)
7757 AC_SUBST(MOZ_NO_INSPECTOR_APIS)
7758 AC_SUBST(MOZ_WEBSERVICES)
7759 AC_SUBST(MOZ_PREF_EXTENSIONS)
7761 AC_SUBST(MOZ_SVG_FOREIGNOBJECT)
7762 AC_SUBST(MOZ_XSLT_STANDALONE)
7763 AC_SUBST(MOZ_JS_LIBS)
7766 AC_SUBST(MOZ_DEBUG_MODULES)
7767 AC_SUBST(MOZ_PROFILE_MODULES)
7768 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
7769 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
7770 AC_SUBST(MOZ_DEBUG_FLAGS)
7771 AC_SUBST(MOZ_DEBUG_LDFLAGS)
7772 AC_SUBST(WARNINGS_AS_ERRORS)
7773 AC_SUBST(MOZ_DBGRINFO_MODULES)
7774 AC_SUBST(MOZ_EXTENSIONS)
7775 AC_SUBST(MOZ_IMG_DECODERS)
7776 AC_SUBST(MOZ_IMG_ENCODERS)
7777 AC_SUBST(MOZ_JSDEBUGGER)
7779 AC_SUBST(MOZ_NO_XPCOM_OBSOLETE)
7780 AC_SUBST(MOZ_PLUGINS)
7781 AC_SUBST(ENABLE_EAZEL_PROFILER)
7782 AC_SUBST(EAZEL_PROFILER_CFLAGS)
7783 AC_SUBST(EAZEL_PROFILER_LIBS)
7784 AC_SUBST(MOZ_PERF_METRICS)
7785 AC_SUBST(GC_LEAK_DETECTOR)
7786 AC_SUBST(MOZ_LOG_REFCNT)
7790 AC_SUBST(MOZ_XPCTOOLS)
7791 AC_SUBST(MOZ_JSLOADER)
7792 AC_SUBST(MOZ_USE_NATIVE_UCONV)
7793 AC_SUBST(MOZ_INSURE)
7794 AC_SUBST(MOZ_INSURE_DIRS)
7795 AC_SUBST(MOZ_INSURE_EXCLUDE_DIRS)
7796 AC_SUBST(MOZ_QUANTIFY)
7797 AC_SUBST(MOZ_INSURIFYING)
7798 AC_SUBST(MOZ_LDAP_XPCOM)
7799 AC_SUBST(MOZ_LDAP_XPCOM_EXPERIMENTAL)
7800 AC_SUBST(LDAP_CFLAGS)
7803 AC_SUBST(MOZ_PLACES)
7804 AC_SUBST(MOZ_PLACES_BOOKMARKS)
7805 AC_SUBST(MOZ_STORAGE)
7807 AC_SUBST(NS_PRINTING)
7809 AC_SUBST(MOZ_JAVAXPCOM)
7810 AC_SUBST(JAVA_INCLUDE_PATH)
7815 AC_SUBST(MOZ_PROFILESHARING)
7816 AC_SUBST(MOZ_PROFILELOCKING)
7821 AC_SUBST(MOZ_XIE_LIBS)
7822 AC_SUBST(MOZ_ENABLE_POSTSCRIPT)
7824 AC_SUBST(XPCOM_USE_LEA)
7825 AC_SUBST(BUILD_STATIC_LIBS)
7826 AC_SUBST(MOZ_ENABLE_LIBXUL)
7827 AC_SUBST(ENABLE_TESTS)
7830 AC_SUBST(MOZ_UNIVERSALCHARDET)
7831 AC_SUBST(ACCESSIBILITY)
7832 AC_SUBST(MOZ_XPINSTALL)
7833 AC_SUBST(MOZ_VIEW_SOURCE)
7834 AC_SUBST(MOZ_SPELLCHECK)
7835 AC_SUBST(MOZ_XPFE_COMPONENTS)
7836 AC_SUBST(MOZ_USER_DIR)
7837 AC_SUBST(MOZ_CRASHREPORTER)
7838 AC_SUBST(MOZ_MOCHITEST)
7840 AC_SUBST(ENABLE_STRIP)
7841 AC_SUBST(PKG_SKIP_STRIP)
7842 AC_SUBST(USE_ELF_DYNSTR_GC)
7843 AC_SUBST(USE_PREBINDING)
7844 AC_SUBST(INCREMENTAL_LINKER)
7845 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
7846 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
7847 AC_SUBST(MOZ_XPCOM_OBSOLETE_LIBS)
7849 AC_SUBST(MOZ_FIX_LINK_PATHS)
7850 AC_SUBST(XPCOM_LIBS)
7851 AC_SUBST(XPCOM_FROZEN_LDOPTS)
7852 AC_SUBST(XPCOM_GLUE_LDOPTS)
7853 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
7855 AC_SUBST(USE_DEPENDENT_LIBS)
7857 AC_SUBST(MOZ_BUILD_ROOT)
7858 AC_SUBST(MOZ_OS2_TOOLS)
7859 AC_SUBST(MOZ_OS2_USE_DECLSPEC)
7861 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
7862 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
7863 AC_SUBST(MOZ_TIMELINE)
7865 AC_SUBST(TARGET_DEVICE)
7867 AC_SUBST(MOZ_APP_NAME)
7868 AC_SUBST(MOZ_APP_DISPLAYNAME)
7869 AC_SUBST(MOZ_APP_VERSION)
7870 AC_SUBST(FIREFOX_VERSION)
7871 AC_SUBST(THUNDERBIRD_VERSION)
7872 AC_SUBST(SUNBIRD_VERSION)
7873 AC_SUBST(SEAMONKEY_VERSION)
7875 AC_SUBST(MOZ_PKG_SPECIAL)
7877 AC_SUBST(MOZILLA_OFFICIAL)
7878 AC_SUBST(BUILD_OFFICIAL)
7879 AC_SUBST(MOZ_MILESTONE_RELEASE)
7882 AC_SUBST(MOZ_PROFILE)
7883 AC_SUBST(MOZ_DEBUG_SYMBOLS)
7884 AC_SUBST(MOZ_MAPINFO)
7885 AC_SUBST(MOZ_BROWSE_INFO)
7886 AC_SUBST(MOZ_TOOLS_DIR)
7887 AC_SUBST(CYGWIN_WRAPPER)
7889 AC_SUBST(WIN32_REDIST_DIR)
7892 dnl Echo the CFLAGS to remove extra whitespace.
7899 $_MOZ_EXCEPTIONS_FLAGS \
7900 $_WARNINGS_CXXFLAGS \
7903 COMPILE_CFLAGS=`echo \
7908 COMPILE_CXXFLAGS=`echo \
7909 $_DEFINES_CXXFLAGS \
7913 AC_SUBST(SYSTEM_MAKEDEPEND)
7914 AC_SUBST(SYSTEM_JPEG)
7915 AC_SUBST(SYSTEM_PNG)
7916 AC_SUBST(SYSTEM_ZLIB)
7917 AC_SUBST(SYSTEM_BZ2)
7919 AC_SUBST(JPEG_CFLAGS)
7921 AC_SUBST(ZLIB_CFLAGS)
7923 AC_SUBST(BZ2_CFLAGS)
7925 AC_SUBST(PNG_CFLAGS)
7928 AC_SUBST(MOZ_JPEG_CFLAGS)
7929 AC_SUBST(MOZ_JPEG_LIBS)
7930 AC_SUBST(MOZ_ZLIB_CFLAGS)
7931 AC_SUBST(MOZ_ZLIB_LIBS)
7932 AC_SUBST(MOZ_BZ2_CFLAGS)
7933 AC_SUBST(MOZ_BZ2_LIBS)
7934 AC_SUBST(MOZ_PNG_CFLAGS)
7935 AC_SUBST(MOZ_PNG_LIBS)
7937 AC_SUBST(NSPR_CFLAGS)
7939 AC_SUBST(MOZ_NATIVE_NSPR)
7941 AC_SUBST(NSS_CFLAGS)
7943 AC_SUBST(NSS_DEP_LIBS)
7944 AC_SUBST(MOZ_NATIVE_NSS)
7949 AC_SUBST(COMPILE_CFLAGS)
7950 AC_SUBST(COMPILE_CXXFLAGS)
7953 AC_SUBST(CROSS_COMPILE)
7957 AC_SUBST(HOST_CFLAGS)
7958 AC_SUBST(HOST_CXXFLAGS)
7959 AC_SUBST(HOST_OPTIMIZE_FLAGS)
7961 AC_SUBST(HOST_AR_FLAGS)
7963 AC_SUBST(HOST_RANLIB)
7964 AC_SUBST(HOST_NSPR_MDCPUCFG)
7965 AC_SUBST(HOST_BIN_SUFFIX)
7966 AC_SUBST(HOST_OS_ARCH)
7968 AC_SUBST(TARGET_CPU)
7969 AC_SUBST(TARGET_VENDOR)
7971 AC_SUBST(TARGET_NSPR_MDCPUCFG)
7972 AC_SUBST(TARGET_MD_ARCH)
7973 AC_SUBST(TARGET_XPCOM_ABI)
7976 AC_SUBST(OS_RELEASE)
7979 AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
7980 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
7982 AC_SUBST(WRAP_MALLOC_CFLAGS)
7983 AC_SUBST(WRAP_MALLOC_LIB)
7986 AC_SUBST(MKSHLIB_FORCE_ALL)
7987 AC_SUBST(MKSHLIB_UNFORCE_ALL)
7988 AC_SUBST(DSO_CFLAGS)
7989 AC_SUBST(DSO_PIC_CFLAGS)
7990 AC_SUBST(DSO_LDOPTS)
7991 AC_SUBST(LIB_PREFIX)
7992 AC_SUBST(DLL_PREFIX)
7993 AC_SUBST(DLL_SUFFIX)
7994 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
7995 AC_SUBST(LIB_SUFFIX)
7996 AC_SUBST(OBJ_SUFFIX)
7997 AC_SUBST(BIN_SUFFIX)
7998 AC_SUBST(ASM_SUFFIX)
7999 AC_SUBST(IMPORT_LIB_SUFFIX)
8001 AC_SUBST(CC_VERSION)
8002 AC_SUBST(CXX_VERSION)
8003 AC_SUBST(MSMANIFEST_TOOL)
8005 if test "$USING_HCC"; then
8006 CC='${topsrcdir}/build/hcc'
8008 CXX='${topsrcdir}/build/hcpp'
8009 CXX="$CXX '$_OLDCXX'"
8014 dnl Check for missing components
8015 if test "$COMPILE_ENVIRONMENT"; then
8016 if test "$MOZ_X11"; then
8017 dnl ====================================================
8018 dnl = Check if X headers exist
8019 dnl ====================================================
8020 _SAVE_CFLAGS=$CFLAGS
8021 CFLAGS="$CFLAGS $XCFLAGS"
8025 #include <X11/Xlib.h>
8026 #include <X11/Intrinsic.h>
8030 if ((dpy = XOpenDisplay(NULL)) == NULL) {
8031 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8035 [ AC_MSG_ERROR([Could not compile basic X program.]) ])
8036 CFLAGS="$_SAVE_CFLAGS"
8038 if test ! -z "$MISSING_X"; then
8039 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8043 fi # COMPILE_ENVIRONMENT
8045 dnl Set various defines and substitutions
8046 dnl ========================================================
8048 if test "$OS_ARCH" = "OS2" -a "$VACPP" = "yes"; then
8049 LIBS='so32dll.lib tcp32dll.lib'
8050 elif test "$OS_ARCH" = "BeOS"; then
8053 elif test "$OS_ARCH" = "Darwin"; then
8055 AC_DEFINE(UNIX_ASYNC_DNS)
8057 elif test "$OS_ARCH" = "OpenVMS"; then
8059 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
8061 AC_DEFINE(UNIX_ASYNC_DNS)
8064 AC_SUBST(MOZ_MOVEMAIL)
8066 AC_DEFINE(JS_THREADSAFE)
8068 if test "$MOZ_DEBUG"; then
8069 AC_DEFINE(MOZ_REFLOW_PERF)
8070 AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8073 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
8074 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8075 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8076 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8077 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8078 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8079 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8080 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8081 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8084 # Used for LD_LIBRARY_PATH of run_viewer target
8086 for lib_arg in $NSPR_LIBS $TK_LIBS; do
8088 -L* ) LIBS_PATH="${LIBS_PATH:+$LIBS_PATH:}"`expr $lib_arg : "-L\(.*\)"` ;;
8094 dnl ========================================================
8095 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
8096 dnl ========================================================
8099 WIN_TOP_SRC=`cd $srcdir; pwd -W`
8102 HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
8103 HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
8104 CC="\$(CYGWIN_WRAPPER) $CC"
8105 CXX="\$(CYGWIN_WRAPPER) $CXX"
8106 CPP="\$(CYGWIN_WRAPPER) $CPP"
8107 LD="\$(CYGWIN_WRAPPER) $LD"
8108 AS="\$(CYGWIN_WRAPPER) $AS"
8109 RC="\$(CYGWIN_WRAPPER) $RC"
8110 MIDL="\$(CYGWIN_WRAPPER) $MIDL"
8111 CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
8112 WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
8116 AC_SUBST(CYGDRIVE_MOUNT)
8117 AC_SUBST(WIN_TOP_SRC)
8119 AC_SUBST(MOZILLA_VERSION)
8121 . ${srcdir}/config/chrome-versions.sh
8122 AC_DEFINE_UNQUOTED(MOZILLA_LOCALE_VERSION,"$MOZILLA_LOCALE_VERSION")
8123 AC_DEFINE_UNQUOTED(MOZILLA_REGION_VERSION,"$MOZILLA_REGION_VERSION")
8124 AC_DEFINE_UNQUOTED(MOZILLA_SKIN_VERSION,"$MOZILLA_SKIN_VERSION")
8126 AC_SUBST(ac_configure_args)
8128 dnl Spit out some output
8129 dnl ========================================================
8131 dnl The following defines are used by xpcom
8132 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8134 HAVE_CPP_2BYTE_WCHAR_T
8135 HAVE_CPP_ACCESS_CHANGING_USING
8136 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8138 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8140 HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
8141 HAVE_CPP_NAMESPACE_STD
8143 HAVE_CPP_PARTIAL_SPECIALIZATION
8144 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8146 HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL
8148 NEED_CPP_UNUSED_IMPLEMENTATIONS
8152 HAVE_ICONV_WITH_CONST_INPUT
8161 netwerk/necko-config.h
8162 xpcom/xpcom-config.h
8163 xpcom/xpcom-private.h
8166 # Save the defines header file before autoconf removes it.
8167 # (Do not add AC_DEFINE calls after this line.)
8168 _CONFIG_TMP=confdefs-tmp.h
8169 _CONFIG_DEFS_H=mozilla-config.h
8171 cat > $_CONFIG_TMP <<\EOF
8172 /* List of defines generated by configure. Included with preprocessor flag,
8173 * -include, to avoid long list of -D defines on the compile command-line.
8177 #ifndef _MOZILLA_CONFIG_H_
8178 #define _MOZILLA_CONFIG_H_
8181 _EGREP_PATTERN='^#define ('
8182 if test -n "$_NON_GLOBAL_ACDEFINES"; then
8183 for f in $_NON_GLOBAL_ACDEFINES; do
8184 _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
8187 _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
8189 sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
8191 cat >> $_CONFIG_TMP <<\EOF
8193 #endif /* _MOZILLA_CONFIG_H_ */
8197 # Only write mozilla-config.h when something changes (or it doesn't exist)
8198 if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
8201 AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
8202 mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
8204 echo ==== $_CONFIG_DEFS_H =================================
8208 dnl Probably shouldn't call this manually but we always want the output of DEFS
8209 rm -f confdefs.h.save
8210 mv confdefs.h confdefs.h.save
8211 egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
8212 AC_OUTPUT_MAKE_DEFS()
8214 AC_SUBST(MOZ_DEFINES)
8216 mv confdefs.h.save confdefs.h
8218 dnl Load the list of Makefiles to generate.
8219 dnl To add new Makefiles, edit allmakefiles.sh.
8220 dnl allmakefiles.sh sets the variable, MAKEFILES.
8221 . ${srcdir}/allmakefiles.sh
8223 dnl Run a perl script to quickly create the makefiles.
8224 dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
8225 dnl for the files it cannot handle correctly. This way, config.status
8226 dnl will handle these files.
8227 dnl If it fails, nothing is set and config.status will run as usual.
8229 dnl This does not change the $MAKEFILES variable.
8231 dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
8233 if test -z "${AS_PERL}"; then
8234 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
8236 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
8241 echo $MAKEFILES > unallmakefiles
8243 AC_OUTPUT($MAKEFILES)
8245 dnl ========================================================
8246 dnl = Setup a nice relatively clean build environment for
8247 dnl = sub-configures.
8248 dnl ========================================================
8251 CFLAGS="$_SUBDIR_CFLAGS"
8252 CPPFLAGS="$_SUBDIR_CPPFLAGS"
8253 CXXFLAGS="$_SUBDIR_CXXFLAGS"
8254 LDFLAGS="$_SUBDIR_LDFLAGS"
8255 HOST_CC="$_SUBDIR_HOST_CC"
8256 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
8257 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
8263 if test "$COMPILE_ENVIRONMENT"; then
8264 if test -z "$MOZ_NATIVE_NSPR" || test "$MOZ_LDAP_XPCOM"; then
8265 ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
8266 if test -z "$MOZ_DEBUG"; then
8267 ac_configure_args="$ac_configure_args --disable-debug"
8269 if test "$MOZ_OPTIMIZE" = "1"; then
8270 ac_configure_args="$ac_configure_args --enable-optimize"
8272 if test "$OS_ARCH" = "WINNT" && test "$NS_TRACE_MALLOC"; then
8273 ac_configure_args="$ac_configure_args --enable-debug --disable-optimize"
8275 if test -n "$HAVE_64BIT_OS"; then
8276 ac_configure_args="$ac_configure_args --enable-64bit"
8278 AC_OUTPUT_SUBDIRS(nsprpub)
8279 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8282 if test -z "$MOZ_NATIVE_NSPR"; then
8283 # Hack to deal with the fact that we use NSPR_CFLAGS everywhere
8284 AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
8285 if test ! "$VACPP" && test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE"; then
8286 _libs=`./nsprpub/config/nspr-config --prefix=$\(LIBXUL_DIST\) --exec-prefix=$\(DIST\) --libdir=$\(LIBXUL_DIST\)/lib --libs`
8287 $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $_libs'" config/autoconf.mk
8289 if test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE" ; then
8290 _cflags=`./nsprpub/config/nspr-config --prefix=$\(LIBXUL_DIST\) --exec-prefix=$\(DIST\) --includedir=$\(LIBXUL_DIST\)/include/nspr --cflags`
8291 $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $_cflags'" config/autoconf.mk
8293 rm -f config/autoconf.mk.bak
8296 # if we're building the LDAP XPCOM component, we need to build
8299 if test "$MOZ_LDAP_XPCOM"; then
8301 # these subdirs may not yet have been created in the build tree.
8302 # don't use the "-p" switch to mkdir, since not all platforms have it
8304 if test ! -d "directory"; then
8307 if test ! -d "directory/c-sdk"; then
8308 mkdir "directory/c-sdk"
8310 if test ! -d "directory/c-sdk/ldap"; then
8311 mkdir "directory/c-sdk/ldap"
8314 ac_configure_args="$_SUBDIR_CONFIG_ARGS --prefix=$MOZ_BUILD_ROOT/dist --with-dist-prefix=$MOZ_BUILD_ROOT/dist --without-nss --with-mozilla"
8315 if test -z "$MOZ_DEBUG"; then
8316 ac_configure_args="$ac_configure_args --disable-debug"
8318 if test "$MOZ_OPTIMIZE" = "1"; then
8319 ac_configure_args="$ac_configure_args --enable-optimize"
8321 if test -n "$HAVE_64BIT_OS"; then
8322 ac_configure_args="$ac_configure_args --enable-64bit"
8324 AC_OUTPUT_SUBDIRS(directory/c-sdk)
8325 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8327 fi # COMPILE_ENVIRONMENT