1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*-
2 dnl vi: set tabstop=4 shiftwidth=4 expandtab:
3 dnl ***** BEGIN LICENSE BLOCK *****
4 dnl Version: MPL 1.1/GPL 2.0/LGPL 2.1
6 dnl The contents of this file are subject to the Mozilla Public License Version
7 dnl 1.1 (the "License"); you may not use this file except in compliance with
8 dnl the License. You may obtain a copy of the License at
9 dnl http://www.mozilla.org/MPL/
11 dnl Software distributed under the License is distributed on an "AS IS" basis,
12 dnl WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13 dnl for the specific language governing rights and limitations under the
16 dnl The Original Code is this file as it was released upon August 6, 1998.
18 dnl The Initial Developer of the Original Code is
19 dnl Christopher Seawood.
20 dnl Portions created by the Initial Developer are Copyright (C) 1998-2001
21 dnl the Initial Developer. All Rights Reserved.
24 dnl Jamie Zawinski <jwz@jwz.org>
25 dnl gettimeofday args check
26 dnl Christopher Blizzard <blizzard@appliedtheory.com>
27 dnl gnomefe update & enable-pthreads
28 dnl Ramiro Estrugo <ramiro@netscape.com>
29 dnl X11 makedepend support
31 dnl Henry Sobotka <sobotka@axess.com>
33 dnl Dan Mosedale <dmose@mozilla.org>
35 dnl Seth Spitzer <sspitzer@netscape.com>
37 dnl Benjamin Smedberg <benjamin@smedbergs.us>
38 dnl Howard Chu <hyc@symas.com>
40 dnl Mark Mentovai <mark@moxienet.com>:
41 dnl Mac OS X 10.4 support
42 dnl Giorgio Maone <g.maone@informaction.com>
43 dnl MSVC l10n compatible version check
44 dnl Ben Turner <mozilla@songbirdnest.com>
46 dnl Alternatively, the contents of this file may be used under the terms of
47 dnl either the GNU General Public License Version 2 or later (the "GPL"), or
48 dnl the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
49 dnl in which case the provisions of the GPL or the LGPL are applicable instead
50 dnl of those above. If you wish to allow use of your version of this file only
51 dnl under the terms of either the GPL or the LGPL, and not to allow others to
52 dnl use your version of this file under the terms of the MPL, indicate your
53 dnl decision by deleting the provisions above and replace them with the notice
54 dnl and other provisions required by the GPL or the LGPL. If you do not delete
55 dnl the provisions above, a recipient may use your version of this file under
56 dnl the terms of any one of the MPL, the GPL or the LGPL.
58 dnl ***** END LICENSE BLOCK *****
60 dnl Process this file with autoconf to produce a configure script.
61 dnl ========================================================
64 AC_INIT(config/config.mk)
65 AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
67 TARGET_CPU="${target_cpu}"
68 TARGET_VENDOR="${target_vendor}"
69 TARGET_OS="${target_os}"
72 MOZ_DEB_TIMESTAMP=`date +"%a, %d %b %Y %T %z" 2>&1`
73 AC_SUBST(MOZ_DEB_TIMESTAMP)
76 dnl ========================================================
78 dnl = Don't change the following two lines. Doing so breaks:
80 dnl = CFLAGS="-foo" ./configure
82 dnl ========================================================
84 CPPFLAGS="${CPPFLAGS=}"
85 CXXFLAGS="${CXXFLAGS=}"
87 HOST_CFLAGS="${HOST_CFLAGS=}"
88 HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
89 HOST_LDFLAGS="${HOST_LDFLAGS=}"
91 dnl ========================================================
92 dnl = Preserve certain environment flags passed to configure
93 dnl = We want sub projects to receive the same flags
94 dnl = untainted by this configure script
95 dnl ========================================================
98 _SUBDIR_CFLAGS="$CFLAGS"
99 _SUBDIR_CPPFLAGS="$CPPFLAGS"
100 _SUBDIR_CXXFLAGS="$CXXFLAGS"
101 _SUBDIR_LDFLAGS="$LDFLAGS"
102 _SUBDIR_HOST_CC="$HOST_CC"
103 _SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
104 _SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
105 _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
106 _SUBDIR_CONFIG_ARGS="$ac_configure_args"
108 dnl Set the version number of the libs included with mozilla
109 dnl ========================================================
116 dnl Set the minimum version of toolkit libs used by mozilla
117 dnl ========================================================
127 WINDRES_VERSION=2.14.90
130 GNOMEUI_VERSION=2.2.0
133 STARTUP_NOTIFICATION_VERSION=0.8
140 dnl Set various checks
141 dnl ========================================================
145 dnl Initialize the Pthread test variables early so they can be
146 dnl overridden by each platform.
147 dnl ========================================================
151 dnl Do not allow a separate objdir build if a srcdir build exists.
152 dnl ==============================================================
153 _topsrcdir=`cd \`dirname $0\`; pwd`
156 if test "$_topsrcdir" != "$_objdir"
158 # Check for a couple representative files in the source tree
160 for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
161 if test -f $file; then
162 _conflict_files="$_conflict_files $file"
165 if test "$_conflict_files"; then
167 echo "* Your source tree contains these files:"
168 for file in $_conflict_files; do
172 * This indicates that you previously built in the source tree.
173 * A source tree build can confuse the separate objdir build.
175 * To clean up the source tree:
186 dnl Default to MSVC for win32
187 dnl ==============================================================
188 if test -z "$CROSS_COMPILE"; then
190 *-cygwin*|*-mingw*|*-msvc*|*-mks*)
192 if test -z "$CC"; then CC=cl; fi
193 if test -z "$CXX"; then CXX=cl; fi
194 if test -z "$CPP"; then CPP="cl -E -nologo"; fi
195 if test -z "$CXXCPP"; then CXXCPP="cl -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
196 if test -z "$LD"; then LD=link; fi
197 if test -z "$AS"; then AS=ml; fi
198 if test -z "$MIDL"; then MIDL=midl; fi
203 COMPILE_ENVIRONMENT=1
204 MOZ_ARG_ENABLE_BOOL(compile-environment,
205 [ --disable-compile-environment
206 Disable compiler/library checks.],
207 COMPILE_ENVIRONMENT=1,
208 COMPILE_ENVIRONMENT= )
210 MOZ_ARG_WITH_STRING(l10n-base,
211 [ --with-l10n-base=DIR path to l10n repositories],
212 L10NBASEDIR=$withval)
213 if test ! -z "$L10NBASEDIR"; then
214 if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then
215 AC_MSG_ERROR([--with-l10n-base must specify a path])
216 elif test -d "$L10NBASEDIR"; then
217 L10NBASEDIR=`cd "$L10NBASEDIR" && pwd`
219 AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
222 AC_SUBST(L10NBASEDIR)
224 dnl ========================================================
225 dnl Checks for compilers.
226 dnl ========================================================
227 dnl Set CROSS_COMPILE in the environment when running configure
228 dnl to use the cross-compile setup for now
229 dnl ========================================================
231 if test "$COMPILE_ENVIRONMENT"; then
233 dnl Do some special WinCE toolchain stuff
236 echo -----------------------------------------------------------------------------
237 echo Building Windows CE Shunt Library and Tool Chain
238 echo -----------------------------------------------------------------------------
242 echo -n "#define TOPSRCDIR \"" > $srcdir/build/wince/tools/topsrcdir.h
243 echo `cd "$_topsrcdir" && pwd -W | tr '\n' '\"'` >> $srcdir/build/wince/tools/topsrcdir.h
244 make -C $srcdir/build/wince/tools
245 echo -----------------------------------------------------------------------------
249 if test -n "$CROSS_COMPILE" && test "$target" != "$host"; then
250 echo "cross compiling from $host to $target"
254 _SAVE_CFLAGS="$CFLAGS"
255 _SAVE_LDFLAGS="$LDFLAGS"
257 AC_MSG_CHECKING([for host c compiler])
258 AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
259 if test -z "$HOST_CC"; then
260 AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
262 AC_MSG_RESULT([$HOST_CC])
263 AC_MSG_CHECKING([for host c++ compiler])
264 AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
265 if test -z "$HOST_CXX"; then
266 AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
268 AC_MSG_RESULT([$HOST_CXX])
270 if test -z "$HOST_CFLAGS"; then
271 HOST_CFLAGS="$CFLAGS"
273 if test -z "$HOST_CXXFLAGS"; then
274 HOST_CXXFLAGS="$CXXFLAGS"
276 if test -z "$HOST_LDFLAGS"; then
277 HOST_LDFLAGS="$LDFLAGS"
279 AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
280 AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
282 CFLAGS="$HOST_CFLAGS"
283 LDFLAGS="$HOST_LDFLAGS"
285 AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
286 AC_TRY_COMPILE([], [return(0);],
287 [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
288 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
291 CFLAGS="$HOST_CXXFLAGS"
293 AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
294 AC_TRY_COMPILE([], [return(0);],
295 [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
296 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
300 LDFLAGS=$_SAVE_LDFLAGS
302 case "$build:$target" in
303 powerpc-apple-darwin8*:i?86-apple-darwin*)
304 dnl The Darwin cross compiler doesn't necessarily point itself at a
305 dnl root that has libraries for the proper architecture, it defaults
306 dnl to the system root. The libraries in the system root on current
307 dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
308 dnl checks will fail. Fake a working SDK in that case.
310 _SAVE_CXXFLAGS=$CXXLAGS
311 CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CFLAGS"
312 CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CXXFLAGS"
316 AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
319 AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
323 case "$build:$target" in
324 powerpc-apple-darwin8*:i?86-apple-darwin*)
325 dnl Revert the changes made above. From this point on, the target
326 dnl compiler will never be used without applying the SDK to CFLAGS
327 dnl (see --with-macos-sdk below).
329 CXXFLAGS=$_SAVE_CXXFLAGS
333 AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
334 AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
335 AC_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
336 AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
337 AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
338 AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
339 AC_DEFINE(CROSS_COMPILE)
344 AC_PATH_PROGS(AS, $AS as, $CC)
345 AC_CHECK_PROGS(AR, ar, :)
346 AC_CHECK_PROGS(LD, ld, :)
347 AC_CHECK_PROGS(STRIP, strip, :)
348 AC_CHECK_PROGS(WINDRES, windres, :)
349 if test -z "$HOST_CC"; then
352 if test -z "$HOST_CFLAGS"; then
353 HOST_CFLAGS="$CFLAGS"
355 if test -z "$HOST_CXX"; then
358 if test -z "$HOST_CXXFLAGS"; then
359 HOST_CXXFLAGS="$CXXFLAGS"
361 if test -z "$HOST_LDFLAGS"; then
362 HOST_LDFLAGS="$LDFLAGS"
364 if test -z "$HOST_RANLIB"; then
365 HOST_RANLIB="$RANLIB"
367 if test -z "$HOST_AR"; then
378 if test "$GCC" = "yes"; then
380 CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
382 if test "$GXX" = "yes"; then
384 CXX_VERSION=`$CXX -v 2>&1 | grep 'gcc version'`
386 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
389 if test "`echo | $LD -v 2>&1 | grep -c GNU`" != "0"; then
392 if test "$GNU_CC"; then
393 if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
400 if test "$GCC" = yes; then
401 if test "`$CC -help 2>&1 | grep -c 'Intel(R) C Compiler'`" != "0"; then
406 if test "$GXX" = yes; then
407 if test "`$CXX -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
412 dnl Special win32 checks
413 dnl ========================================================
419 if test -n "$GNU_CC"; then
427 MOZ_ARG_WITH_STRING(windows-version,
428 [ --with-windows-version=WINVER
429 Minimum Windows version (WINVER) to support
440 AC_MSG_ERROR([Invalid value --with-windows-version, must be 400, 500 or 501]);
446 *-cygwin*|*-mingw*|*-msvc*|*-mks*|*-wince)
447 if test "$GCC" != "yes"; then
448 # Check to see if we are really running in a msvc environemnt
450 AC_CHECK_PROGS(MIDL, midl)
452 # Make sure compilers are valid
453 CFLAGS="$CFLAGS -TC -nologo"
454 CXXFLAGS="$CXXFLAGS -TP -nologo"
457 AC_TRY_COMPILE([#include <stdio.h>],
458 [ printf("Hello World\n"); ],,
459 AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
462 AC_TRY_COMPILE([#include <new.h>],
463 [ unsigned *test = new unsigned(42); ],,
464 AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
468 _MSVC_VER_FILTER='s|.* ([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
471 # Determine compiler version
472 CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
473 _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
474 _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
475 _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
476 _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
477 _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
479 CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
480 _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
482 if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
483 AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
485 if test "$_CC_MAJOR_VERSION" = "12"; then
487 elif test "$_CC_MAJOR_VERSION" = "13"; then
489 elif test "$_CC_MAJOR_VERSION" = "14"; then
491 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
492 dnl -DYNAMICBASE is only supported on VC8SP1 or newer,
493 dnl so be very specific here!
494 dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762
495 if test $_CC_RELEASE -gt 50727; then
497 elif test $_CC_BUILD -ge 762; then
500 AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
501 AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
502 elif test "$_CC_MAJOR_VERSION" = "15"; then
504 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
505 LDFLAGS="$LDFLAGS -MANIFESTUAC:NO"
507 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
508 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
510 AC_MSG_ERROR([This version of the MSVC compiler, $CC_VERSION , is unsupported.])
513 _MOZ_RTTI_FLAGS_ON='-GR'
514 _MOZ_RTTI_FLAGS_OFF='-GR-'
515 _MOZ_EXCEPTIONS_FLAGS_ON='-EHsc'
516 _MOZ_EXCEPTIONS_FLAGS_OFF=''
518 if test -n "$WIN32_REDIST_DIR"; then
519 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
523 # ensure that mt.exe is Microsoft (R) Manifest Tool and not magnetic tape manipulation utility (or something else)
524 if test "$_CC_SUITE" -ge "8"; then
526 _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
529 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
530 if test -n "$MSMT_TOOL"; then
531 MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
532 if test -z "$MSMANIFEST_TOOL_VERSION"; then
533 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
538 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
542 # Check linker version
543 _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
544 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
545 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
546 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
551 _MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
552 _MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
553 _MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
554 _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
555 # Add flags if necessary
556 AC_MSG_CHECKING([for midl flags])
557 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
558 # Starting with MIDL version 6.0.359, the MIDL compiler
559 # generates /Oicf /robust stubs by default, which is not
560 # compatible with versions of Windows older than Win2k.
561 # This switches us back to the old behaviour. When we drop
562 # support for Windows older than Win2k, we should remove
564 MIDL_FLAGS="${MIDL_FLAGS} -no_robust"
565 AC_MSG_RESULT([need -no_robust])
567 MIDL_FLAGS="${MIDL_FLAGS}"
568 AC_MSG_RESULT([none needed])
571 unset _MSVC_VER_FILTER
574 # Check w32api version
575 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
576 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
577 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
578 AC_TRY_COMPILE([#include <w32api.h>],
579 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
580 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
581 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
582 #error "test failed."
584 , [ res=yes ], [ res=no ])
585 AC_MSG_RESULT([$res])
586 if test "$res" != "yes"; then
587 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
589 # Check windres version
590 AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
591 _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
592 AC_MSG_RESULT([$_WINDRES_VERSION])
593 _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
594 _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
595 _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
596 WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
597 WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
598 WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
599 if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
600 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
601 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
602 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
603 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
604 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
606 AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
610 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
611 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
612 # Require OS features provided by IE 5.0
613 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0500)
617 dnl Test breaks icc on OS/2 && MSVC
618 if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
620 if grep "NO_MINUS_C_MINUS_O 1" ./confdefs.h >/dev/null; then
624 CC="${srcdir}/build/hcc '$CC'"
625 CXX="${srcdir}/build/hcpp '$CXX'"
632 if test -n "$_WIN32_MSVC"; then
634 SKIP_COMPILER_CHECKS=1
635 SKIP_LIBRARY_CHECKS=1
638 fi # COMPILE_ENVIRONMENT
650 dnl ========================================================
651 dnl Checks for programs.
652 dnl ========================================================
655 AC_PATH_PROGS(PERL, $PERL perl5 perl )
656 if test -z "$PERL" || test "$PERL" = ":"; then
657 AC_MSG_ERROR([perl not found in \$PATH])
660 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
661 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
662 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
664 AC_MSG_RESULT([$_perl_version])
666 if test "$_perl_res" != 0; then
667 AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
671 AC_MSG_CHECKING([for full perl installation])
672 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
674 if test "$_perl_res" != 0; then
676 AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
681 AC_PATH_PROGS(PYTHON, $PYTHON python)
682 if test -z "$PYTHON"; then
683 AC_MSG_ERROR([python was not found in \$PATH])
685 echo PYTHON="$PYTHON"
687 AC_PATH_PROGS(NSINSTALL_BIN, nsinstall )
688 if test -z "$COMPILE_ENVIRONMENT"; then
689 if test -z "$NSINSTALL_BIN" || test "$NSINSTALL_BIN" = ":"; then
690 NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
693 AC_SUBST(NSINSTALL_BIN)
695 AC_PATH_PROG(DOXYGEN, doxygen, :)
696 AC_PATH_PROG(WHOAMI, whoami, :)
697 AC_PATH_PROG(AUTOCONF, autoconf, :)
698 AC_PATH_PROG(UNZIP, unzip, :)
699 AC_PATH_PROGS(ZIP, zip)
700 if test -z "$ZIP" || test "$ZIP" = ":"; then
701 AC_MSG_ERROR([zip not found in \$PATH])
703 AC_PATH_PROG(SYSTEM_MAKEDEPEND, makedepend)
704 AC_PATH_PROG(XARGS, xargs)
705 if test -z "$XARGS" || test "$XARGS" = ":"; then
706 AC_MSG_ERROR([xargs not found in \$PATH .])
709 if test "$COMPILE_ENVIRONMENT"; then
711 dnl ========================================================
712 dnl = Mac OS X toolchain support
713 dnl ========================================================
717 dnl Current known valid versions for GCC_VERSION are 2.95.2 3.1 3.3 4.0.
718 dnl 4.0 identifies itself as 4.0.x, so strip the decidecimal for
719 dnl the environment and includedir purposes (when using an SDK, below),
720 dnl but remember the full version number for the libdir (SDK).
722 GCC_VERSION_FULL=`echo $CXX_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
723 GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
725 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
726 dnl Bug 280479, but this keeps popping up in bug 292530 too because
727 dnl 4.0.0/4061 is the default compiler in Tiger.
729 GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
731 if test "$GCC_BUILD" = "4061" ; then
732 AC_MSG_ERROR([You are attempting to use Apple gcc 4.0 build 4061.
733 This compiler was supplied with Xcode 2.0, and contains bugs that prevent it
734 from building Mozilla. Upgrade to Xcode 2.1 or later.])
738 dnl xcodebuild needs GCC_VERSION defined in the environment, since it
739 dnl doesn't respect the CC/CXX setting. With GCC_VERSION set, it will use
740 dnl /usr/bin/g(cc|++)-$GCC_VERSION.
741 AC_PATH_PROGS(PBBUILD, pbbuild xcodebuild pbxbuild)
746 XCODEBUILD_VERSION=`$PBBUILD -version 2>/dev/null | xargs | sed -e 's/.*DevToolsCore-\([0-9]*\).*/\1/'`
748 if test -n "$XCODEBUILD_VERSION" && test "$XCODEBUILD_VERSION" -ge 620 ; then
754 dnl sdp was formerly in /Developer/Tools. As of Mac OS X 10.4 (Darwin 8),
755 dnl it has moved into /usr/bin.
756 AC_PATH_PROG(SDP, sdp, :, [$PATH:/usr/bin:/Developer/Tools])
760 AC_SUBST(GCC_VERSION)
761 AC_SUBST(XCODEBUILD_VERSION)
762 AC_SUBST(HAS_XCODE_2_1)
764 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
765 dnl that a universal binary is being produced.
766 AC_SUBST(UNIVERSAL_BINARY)
768 dnl ========================================================
769 dnl Check for MacOS deployment target version
770 dnl ========================================================
772 MOZ_ARG_ENABLE_STRING(macos-target,
773 [ --enable-macos-target=VER (default=10.4)
774 Set the minimum MacOS version needed at runtime],
775 [_MACOSX_DEPLOYMENT_TARGET=$enableval])
779 if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
780 dnl Use the specified value
781 export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
782 AC_DEFINE_UNQUOTED(__ENVIRONMENT_MAC_OS_X_VERION_MIN_REQUIRED__,$_MACOSX_DEPLOYMENT_TARGET)
783 elif test -z "$MACOSX_DEPLOYMENT_TARGET" ; then
784 dnl No value specified on the command line or in the environment,
785 dnl use the lesser of the application's minimum or the architecture's
787 export MACOSX_DEPLOYMENT_TARGET=10.4
792 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
794 dnl ========================================================
795 dnl = Mac OS X SDK support
796 dnl ========================================================
799 MOZ_ARG_WITH_STRING(macos-sdk,
800 [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
801 MACOS_SDK_DIR=$withval)
803 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
804 dnl NEXT_ROOT will be set and exported only if it's needed.
805 AC_SUBST(MACOS_SDK_DIR)
808 if test "$MACOS_SDK_DIR"; then
809 dnl Sync this section with the ones in NSPR and NSS.
810 dnl Changes to the cross environment here need to be accounted for in
811 dnl the libIDL checks (below) and xpidl build.
813 if test ! -d "$MACOS_SDK_DIR"; then
814 AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
815 specify a valid SDK. SDKs are installed when the optional cross-development
816 tools are selected during the Xcode/Developer Tools installation.])
819 GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
820 if test "$GCC_VERSION_MAJOR" -lt "4" ; then
821 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"
822 if test -d "${MACOS_SDK_DIR}/Library/Frameworks" ; then
823 SDK_C_INCLUDE="$SDK_C_INCLUDE -F${MACOS_SDK_DIR}/Library/Frameworks"
825 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"
827 CFLAGS="$CFLAGS -nostdinc ${SDK_C_INCLUDE}"
828 CXXFLAGS="$CXXFLAGS -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
830 dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
831 CPP="$CPP -nostdinc ${SDK_C_INCLUDE}"
832 CXXCPP="$CXXCPP -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
834 dnl ld support for -syslibroot is compiler-agnostic, but only available
835 dnl on Tiger. Although it's possible to switch on the build host's
836 dnl OS release to use ld -syslibroot when available, ld -syslibroot will
837 dnl cause warnings as long as NEXT_ROOT is set. NEXT_ROOT should be
838 dnl set because both the compiler and linker use it.
839 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"
840 export NEXT_ROOT=$MACOS_SDK_DIR
842 if test -n "$CROSS_COMPILE" ; then
843 dnl NEXT_ROOT will be in the environment, but it shouldn't be set for
844 dnl the build host. HOST_CXX is presently unused.
845 HOST_CC="NEXT_ROOT= $HOST_CC"
846 HOST_CXX="NEXT_ROOT= $HOST_CXX"
849 dnl gcc >= 4.0 uses different paths than above, but knows how to find
851 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
852 CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
854 dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
855 CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
856 CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
858 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
859 dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
860 dnl that supports -syslibroot. Don't set NEXT_ROOT because it will
861 dnl be ignored and cause warnings when -syslibroot is specified.
862 dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
863 dnl the -isysroot it receives, so this is only needed with 4.0.0.
864 LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
869 AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
871 AC_TRY_COMPILE([#include <new>
872 int main() { return 0; }],
876 AC_MSG_RESULT($result)
878 if test "$result" = "no" ; then
879 AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
883 fi # COMPILE_ENVIRONMENT
885 dnl Be sure the make we use is GNU make.
886 dnl on win32, gmake.exe is the generally the wrong version
888 cygwin*|mingw*|mks*|msvc*)
889 AC_PATH_PROGS(MAKE, $MAKE make gmake, :)
892 AC_PATH_PROGS(MAKE, $MAKE gmake make, :)
895 _make_try=`$MAKE --version 2>/dev/null | grep GNU`
896 if test ! "$_make_try"
899 echo "*** $MAKE is not GNU Make. You will not be able to build Mozilla without GNU Make."
903 dnl Now exit if version if < MAKE_VERSION
905 echo 'all: ; @echo $(MAKE_VERSION)' > dummy.mk
906 _make_vers=`$MAKE --no-print-directory -f dummy.mk all 2>/dev/null`
908 _MAKE_MAJOR_VERSION=`echo $_make_vers | $AWK -F\. '{ print $1 }'`
909 _MAKE_MINOR_VERSION=`echo $_make_vers | $AWK -F\. '{ print $2 }'`
910 MAKE_MAJOR_VERSION=`echo $MAKE_VERSION | $AWK -F\. '{ print $1 }'`
911 MAKE_MINOR_VERSION=`echo $MAKE_VERSION | $AWK -F\. '{ print $2 }'`
912 if test "$_MAKE_MAJOR_VERSION" -lt "$MAKE_MAJOR_VERSION" || \
913 test "$_MAKE_MAJOR_VERSION" = "$MAKE_MAJOR_VERSION" -a \
914 "$_MAKE_MINOR_VERSION" -lt "$MAKE_MINOR_VERSION"; then
915 AC_MSG_ERROR([GNU Make $MAKE_VERSION or higher is required to build Mozilla.])
919 if test "$COMPILE_ENVIRONMENT"; then
923 dnl Check in X11 include directory too.
924 if test "$no_x" != "yes"; then
925 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
930 fi # COMPILE_ENVIRONMENT
932 dnl ========================================================
933 dnl set the defaults first
934 dnl ========================================================
953 MOZ_USER_DIR=".mozilla"
955 HOST_AR_FLAGS='$(AR_FLAGS)'
958 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/jpeg)'
960 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,$(DEPTH)/modules/zlib/src)'
962 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
964 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/modules/libimg/png)'
966 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs'
967 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxpcom -lxpcom_core'
968 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(PREFIX)/lib'
969 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxpcom'
970 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) -lxul'
971 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
972 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
974 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
975 MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom_compat'
979 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
980 MOZ_GFX_TOOLKIT='$(MOZ_WIDGET_TOOLKIT)'
982 MOZ_ENABLE_POSTSCRIPT=1
984 if test -n "$CROSS_COMPILE"; then
985 OS_TARGET="${target_os}"
986 OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
988 case "${target_os}" in
989 linux*) OS_ARCH=Linux OS_TARGET=Linux ;;
990 kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
991 solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
992 mingw*) OS_ARCH=WINNT ;;
993 wince*) OS_ARCH=WINCE ;;
994 darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;;
998 OS_ARCH=`uname -s | sed -e 's|/|_|g'`
999 OS_RELEASE=`uname -r`
1002 # Before this used `uname -m` when not cross compiling
1003 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1004 OS_TEST="${target_cpu}"
1008 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1010 #######################################################################
1011 # Master "Core Components" macros for getting the OS target #
1012 #######################################################################
1015 # Note: OS_TARGET should be specified on the command line for gmake.
1016 # When OS_TARGET=WIN95 is specified, then a Windows 95 target is built.
1017 # The difference between the Win95 target and the WinNT target is that
1018 # the WinNT target uses Windows NT specific features not available
1019 # in Windows 95. The Win95 target will run on Windows NT, but (supposedly)
1020 # at lesser performance (the Win95 target uses threads; the WinNT target
1023 # When OS_TARGET=WIN16 is specified, then a Windows 3.11 (16bit) target
1024 # is built. See: win16_3.11.mk for lots more about the Win16 target.
1026 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1027 # cross-compilation.
1031 # The following hack allows one to build on a WIN95 machine (as if
1032 # s/he were cross-compiling on a WINNT host for a WIN95 target).
1033 # It also accomodates for MKS's uname.exe. If you never intend
1034 # to do development on a WIN95 machine, you don't need this hack.
1049 CYGWIN_9*|CYGWIN_ME*)
1050 OS_ARCH='CYGWIN_NT-4.0'
1056 # Define and override various archtecture-specific variables, including
1065 case "$HOST_OS_ARCH" in
1066 cygwin*|mingw*|mks*|msvc*)
1085 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1088 HOST_OS_ARCH=UNIXWARE
1100 HOST_OS_ARCH=OpenVMS
1110 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1114 HOST_OS_ARCH=UNIXWARE
1124 # If uname -s returns "Windows_NT", we assume that we are using
1125 # the uname.exe in MKS toolkit.
1127 # The -r option of MKS uname only returns the major version number.
1128 # So we need to use its -v option to get the minor version number.
1129 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1133 OS_MINOR_RELEASE=`uname -v`
1134 if test "$OS_MINOR_RELEASE" = "00"; then
1137 OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1139 CYGWIN32_NT|CYGWIN_NT*|MINGW*_NT*)
1141 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
1142 # the uname.exe in the Cygwin tools.
1143 # Prior to the Beta 20 release, Cygwin was called GNU-Win32.
1144 # If uname -s returns "CYGWIN32/NT", we assume that we are using
1145 # the uname.exe in the GNU-Win32 tools.
1146 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1147 # the uname.exe in the MSYS tools.
1149 OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1154 OS_RELEASE=`uname -v`.`uname -r`
1167 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1171 OS_RELEASE=`uname -v`
1195 OS_RELEASE=`uname -v`
1201 OS_RELEASE=`uname -v`
1204 if test "$OS_TARGET" != "NTO"; then
1206 OS_RELEASE=`uname -v | sed 's/^\([0-9]\)\([0-9]*\)$/\1.\2/'`
1215 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1221 OS_RELEASE=`uname -v`
1228 case "${target_cpu}" in
1236 if test -z "$CROSS_COMPILE" ; then
1244 if test "$OS_ARCH" = "NCR"; then
1246 OS_RELEASE=`awk '{print $3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$/\2.\3/'`
1250 # Only set CPU_ARCH if we recognize the value of OS_TEST
1261 Alpha | alpha | ALPHA)
1278 if test -z "$OS_TARGET"; then
1281 if test "$OS_TARGET" = "WIN95"; then
1284 if test "$OS_TARGET" = "WIN16"; then
1287 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1289 dnl ========================================================
1290 dnl GNU specific defaults
1291 dnl ========================================================
1292 if test "$GNU_CC"; then
1293 # FIXME: Let us build with strict aliasing. bug 414641.
1294 CFLAGS="$CFLAGS -fno-strict-aliasing"
1295 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1296 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1297 DSO_LDOPTS='-shared'
1298 if test "$GCC_USE_GNU_LD"; then
1299 # Don't allow undefined symbols in libraries
1300 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1302 WARNINGS_AS_ERRORS='-Werror'
1304 DSO_PIC_CFLAGS='-fPIC'
1305 _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
1306 _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
1307 _MOZ_EXCEPTIONS_FLAGS_ON='-fhandle-exceptions'
1308 _MOZ_EXCEPTIONS_FLAGS_OFF='-fno-handle-exceptions'
1310 # Turn on GNU specific features
1311 # -Wall - turn on all warnings
1312 # -pedantic - make compiler warn about non-ANSI stuff, and
1313 # be a little bit stricter
1314 # Warnings slamm took out for now (these were giving more noise than help):
1315 # -Wbad-function-cast - warns when casting a function to a new return type
1316 # -Wshadow - removed because it generates more noise than help --pete
1317 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
1318 if test -z "$INTEL_CC"; then
1319 # Don't use -Wcast-align with ICC
1321 # And don't use it on hppa, ia64, sparc, since it's noisy there
1322 hppa | ia64 | sparc)
1325 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1330 dnl Turn pedantic on but disable the warnings for long long
1333 if test -z "$INTEL_CC"; then
1334 _IGNORE_LONG_LONG_WARNINGS=1
1335 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
1337 _IGNORE_LONG_LONG_WARNINGS=
1341 _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1342 _USE_CPP_INCLUDE_FLAG=1
1344 MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1345 MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1347 DSO_LDOPTS='-shared'
1348 if test "$GNU_LD"; then
1349 # Don't allow undefined symbols in libraries
1350 DSO_LDOPTS="$DSO_LDOPTS -z defs"
1354 DSO_PIC_CFLAGS='-KPIC'
1355 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1358 if test "$GNU_CXX"; then
1359 # FIXME: Let us build with strict aliasing. bug 414641.
1360 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
1361 # Turn on GNU specific features
1362 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
1363 if test -z "$INTEL_CC"; then
1364 # Don't use -Wcast-align with ICC
1366 # And don't use it on hppa, ia64, sparc, since it's noisy there
1367 hppa | ia64 | sparc)
1370 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1375 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1376 _USE_CPP_INCLUDE_FLAG=1
1378 AC_CACHE_CHECK(whether the compiler supports -Wno-invalid-offsetof,
1379 ac_has_wno_invalid_offsetof,
1383 _SAVE_CXXFLAGS="$CXXFLAGS"
1384 CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1387 ac_has_wno_invalid_offsetof="yes",
1388 ac_has_wno_invalid_offsetof="no")
1389 CXXFLAGS="$_SAVE_CXXFLAGS"
1392 if test "$ac_has_wno_invalid_offsetof" = "yes"; then
1393 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1396 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1399 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1400 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1401 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1402 dnl normal behavior.
1403 dnl ========================================================
1405 MKSHLIB_UNFORCE_ALL=
1407 if test "$COMPILE_ENVIRONMENT"; then
1408 if test "$GNU_CC"; then
1409 AC_MSG_CHECKING(whether ld has archive extraction flags)
1410 AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1411 [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1412 ac_cv_mkshlib_force_and_unforce="no"
1413 exec 3<&0 <<LOOP_INPUT
1414 force="-Wl,--whole-archive"; unforce="-Wl,--no-whole-archive"
1415 force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1416 force="-Wl,-all"; unforce="-Wl,-none"
1423 AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1426 LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1428 if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1432 eval $ac_cv_mkshlib_force_and_unforce
1433 MKSHLIB_FORCE_ALL=$force
1434 MKSHLIB_UNFORCE_ALL=$unforce
1437 fi # COMPILE_ENVIRONMENT
1439 dnl =================================================================
1440 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1441 dnl which is bad when cross compiling.
1442 dnl =================================================================
1443 if test "$COMPILE_ENVIRONMENT"; then
1444 configure_static_assert_macros='
1445 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1446 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1447 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1450 dnl test that the macros actually work:
1451 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1452 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1455 ac_cv_static_assertion_macros_work="yes"
1456 AC_TRY_COMPILE([$configure_static_assert_macros],
1457 [CONFIGURE_STATIC_ASSERT(1)],
1459 ac_cv_static_assertion_macros_work="no")
1460 AC_TRY_COMPILE([$configure_static_assert_macros],
1461 [CONFIGURE_STATIC_ASSERT(0)],
1462 ac_cv_static_assertion_macros_work="no",
1465 AC_TRY_COMPILE([$configure_static_assert_macros],
1466 [CONFIGURE_STATIC_ASSERT(1)],
1468 ac_cv_static_assertion_macros_work="no")
1469 AC_TRY_COMPILE([$configure_static_assert_macros],
1470 [CONFIGURE_STATIC_ASSERT(0)],
1471 ac_cv_static_assertion_macros_work="no",
1475 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1476 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1477 AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1479 fi # COMPILE_ENVIRONMENT
1481 dnl ========================================================
1482 dnl Checking for 64-bit OS
1483 dnl ========================================================
1484 if test "$COMPILE_ENVIRONMENT"; then
1487 AC_MSG_CHECKING(for 64-bit OS)
1488 AC_TRY_COMPILE([$configure_static_assert_macros],
1489 [CONFIGURE_STATIC_ASSERT(sizeof(long) == 8)],
1490 result="yes", result="no")
1491 AC_MSG_RESULT("$result")
1492 if test "$result" = "yes"; then
1493 AC_DEFINE(HAVE_64BIT_OS)
1496 AC_SUBST(HAVE_64BIT_OS)
1498 fi # COMPILE_ENVIRONMENT
1500 dnl ========================================================
1501 dnl Enable high-memory support on OS/2 by default.
1502 dnl ========================================================
1503 MOZ_OS2_HIGH_MEMORY=1
1504 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1505 [ --disable-os2-high-mem Disable high-memory support on OS/2],
1506 MOZ_OS2_HIGH_MEMORY=,
1507 MOZ_OS2_HIGH_MEMORY=1 )
1508 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1510 dnl ========================================================
1511 dnl System overrides of the defaults for host
1512 dnl ========================================================
1515 HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
1516 HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
1517 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1520 *cygwin*|*mingw*|*mks*|*msvc*|*wince)
1521 if test -n "$_WIN32_MSVC"; then
1523 HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1524 HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1525 HOST_RANLIB='echo ranlib'
1527 HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
1529 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
1530 HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1531 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1532 HOST_BIN_SUFFIX=.exe
1535 dnl MinGW/MSYS does not need CYGWIN_WRAPPER
1538 CYGWIN_WRAPPER="${srcdir}/build/cygwin-wrapper"
1539 if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
1541 CYGWIN_WRAPPER="${_pwd}/${srcdir}/build/cygwin-wrapper"
1543 if test "`${PERL} -v | grep -c cygwin 2>/dev/null`" = 0; then
1545 PERL="${CYGWIN_WRAPPER} $PERL"
1548 if test "`${PYTHON} -c 'import sys; print sys.platform;'`" != "cygwin"; then
1549 PYTHON="${CYGWIN_WRAPPER} $PYTHON"
1556 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1557 HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1558 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1559 MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
1560 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL -lobjc'
1563 *-linux*|*-kfreebsd*-gnu)
1564 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1565 HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1566 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1570 HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1571 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1572 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1573 HOST_BIN_SUFFIX=.exe
1578 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1579 HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
1580 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1584 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1585 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1589 dnl Get mozilla version from central milestone file
1590 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1592 dnl Get version of various core apps from the version files.
1593 FIREFOX_VERSION=`cat $topsrcdir/browser/config/version.txt`
1595 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1596 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1598 dnl ========================================================
1599 dnl System overrides of the defaults for target
1600 dnl ========================================================
1605 if test ! "$GNU_CC"; then
1606 if test ! "$HAVE_64BIT_OS"; then
1607 # Compiling with Visual Age C++ object model compat is the
1608 # default. To compile with object model ibm, add
1609 # AIX_OBJMODEL=ibm to .mozconfig.
1610 if test "$AIX_OBJMODEL" = "ibm"; then
1611 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1618 AC_SUBST(AIX_OBJMODEL)
1619 DSO_LDOPTS='-qmkshrobj=1'
1620 DSO_CFLAGS='-qflag=w:w'
1622 LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1623 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
1625 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1626 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1627 if test "$COMPILE_ENVIRONMENT"; then
1630 AC_MSG_CHECKING([for VisualAge C++ compiler version >= 5.0.2.0])
1632 [#if (__IBMCPP__ < 502)
1633 #error "Bad compiler"
1635 _BAD_COMPILER=,_BAD_COMPILER=1)
1636 if test -n "$_BAD_COMPILER"; then
1638 AC_MSG_ERROR([VisualAge C++ version 5.0.2.0 or higher is required to build.])
1640 AC_MSG_RESULT([yes])
1643 TARGET_COMPILER_ABI="ibmc"
1644 CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1645 CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1648 case "${target_os}" in
1653 if test "$COMPILE_ENVIRONMENT"; then
1654 AC_CHECK_HEADERS(sys/inttypes.h)
1656 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1661 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1662 _PLATFORM_DEFAULT_TOOLKIT="cairo-beos"
1663 DSO_LDOPTS='-nostart'
1664 TK_LIBS='-lbe -lroot'
1666 if test "$COMPILE_ENVIRONMENT"; then
1667 AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
1668 AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
1670 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
1671 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
1674 MOZ_USER_DIR="Mozilla"
1678 dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
1680 _IGNORE_LONG_LONG_WARNINGS=
1688 _WARNINGS_CFLAGS="-Wall"
1689 _WARNINGS_CXXFLAGS="-Wall"
1690 # The test above doesn't work properly, at least on 3.1.
1691 MKSHLIB_FORCE_ALL=''
1692 MKSHLIB_UNFORCE_ALL=''
1698 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1699 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1700 MOZ_OPTIMIZE_FLAGS="-O2"
1702 CFLAGS="$CFLAGS -fpascal-strings -fno-common"
1703 CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
1706 STRIP="$STRIP -x -S"
1707 _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1708 MOZ_ENABLE_POSTSCRIPT=
1709 TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1710 LDFLAGS="$LDFLAGS -framework Cocoa"
1711 # The ExceptionHandling framework is needed for Objective-C exception
1712 # logging code in nsObjCExceptions.h. Currently we only use that in debug
1714 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"
1715 # set MACOSX to generate lib/mac/MoreFiles/Makefile
1718 dnl DTrace and -dead_strip don't interact well. See bug 403132.
1719 dnl ===================================================================
1720 if test "x$enable_dtrace" = "xyes"; then
1721 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
1723 dnl check for the presence of the -dead_strip linker flag
1724 AC_MSG_CHECKING([for -dead_strip option to ld])
1725 _SAVE_LDFLAGS=$LDFLAGS
1726 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
1727 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
1728 if test -n "$_HAVE_DEAD_STRIP" ; then
1729 AC_MSG_RESULT([yes])
1730 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
1735 LDFLAGS=$_SAVE_LDFLAGS
1740 if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` != "elf"; then
1741 DLL_SUFFIX=".so.1.0"
1742 DSO_LDOPTS="-shared"
1744 if test ! "$GNU_CC"; then
1745 DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
1747 # Can't have force w/o an unforce.
1748 # # Hack for FreeBSD 2.2
1749 # if test -z "$MKSHLIB_FORCE_ALL"; then
1750 # MKSHLIB_FORCE_ALL='-Wl,-Bforcearchive'
1751 # MKSHLIB_UNFORCE_ALL=''
1757 if test ! "$GNU_CC"; then
1758 DSO_LDOPTS='-b -Wl,+s'
1761 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
1762 MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
1763 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1765 DSO_LDOPTS='-b -E +s'
1766 MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1767 MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1769 MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
1770 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1775 DSO_LDOPTS='-elf -shared'
1777 if test "$GNU_CC"; then
1778 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1779 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1780 MKSHLIB_FORCE_ALL='-Wl,-all'
1781 MKSHLIB_UNFORCE_ALL='-Wl,-none'
1782 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1784 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1785 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1786 MKSHLIB_FORCE_ALL='-all'
1787 MKSHLIB_UNFORCE_ALL='-none'
1793 dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must*
1794 dnl compile and link using -n32
1796 TARGET_COMPILER_ABI=n32
1797 DSO_LDOPTS='-elf -shared'
1798 MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1799 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1800 _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
1801 _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
1802 if test "$GNU_CC"; then
1803 MKSHLIB_FORCE_ALL='-Wl,-all'
1804 MKSHLIB_UNFORCE_ALL='-Wl,-none'
1805 _WARNINGS_CFLAGS="-Wall"
1806 _WARNINGS_CXXFLAGS="-Wall"
1807 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1809 MKSHLIB_FORCE_ALL='-all'
1810 MKSHLIB_UNFORCE_ALL='-none'
1816 CFLAGS="$CFLAGS -woff 3262 -G 4"
1817 CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
1818 if test -n "$USE_N32"; then
1819 ASFLAGS="$ASFLAGS -n32"
1820 CFLAGS="$CFLAGS -n32"
1821 CXXFLAGS="$CXXFLAGS -n32"
1822 LDFLAGS="$LDFLAGS -n32"
1824 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1825 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
1828 if test -z "$GNU_CXX"; then
1834 if test "$GNU_CC"; then
1835 GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
1836 case $GCC_VERSION in
1838 # -Os is broken on gcc 4.1.x and 4.2.x, we need to tweak it to get good results.
1839 MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
1843 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1844 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions $MOZ_OPTIMIZE_SIZE_TWEAK"
1845 MOZ_DEBUG_FLAGS="-g -fno-inline" # most people on linux use gcc/gdb,
1846 # and that combo is not yet good at
1847 # debugging inlined functions (even
1848 # when using DWARF2 as the debugging
1853 case "${target_cpu}" in
1855 CFLAGS="$CFLAGS -mieee"
1856 CXXFLAGS="$CXXFLAGS -mieee"
1860 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1
1863 CFLAGS="$CFLAGS -Wa,-xgot"
1864 CXXFLAGS="$CXXFLAGS -Wa,-xgot"
1871 MOZ_TOOLS_DIR=`echo $MOZ_TOOLS`
1873 AR_EXTRACT="$AR -extract"
1875 AR_FLAGS='-OUT:"$@"'
1877 if test -z "$AS_BIN"; then
1884 if test -z "$RC"; then
1887 # certain versions of cygwin's makedepend barf on the
1888 # #include <string> vs -I./dist/include/string issue so don't use it
1894 HOST_AR='lib -OUT:$@'
1895 HOST_RANLIB='echo ranlib'
1896 HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
1899 WARNINGS_AS_ERRORS='-WX'
1900 MOZ_OPTIMIZE_FLAGS='-O1'
1901 AR_FLAGS='-NOLOGO -OUT:"$@"'
1903 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1904 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1907 DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
1908 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
1910 IMPORT_LIB_SUFFIX=lib
1912 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
1915 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1916 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1918 MKSHLIB_UNFORCE_ALL=
1919 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1920 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1921 MOZ_DEBUG_FLAGS='-Zi'
1922 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
1924 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
1925 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
1927 RANLIB='echo not_ranlib'
1928 STRIP='echo not_strip'
1929 TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
1932 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
1934 LIBIDL_CFLAGS="-I$MOZ_TOOLS_DIR/include ${GLIB_CFLAGS}"
1935 LIBIDL_LIBS="$MOZ_TOOLS_DIR/lib/libidl-0.6_s.lib $MOZ_TOOLS_DIR/lib/glib-1.2_s.lib"
1938 AC_DEFINE(HAVE_SNPRINTF)
1944 AC_DEFINE(HW_THREADS)
1945 AC_DEFINE(STDC_HEADERS)
1946 AC_DEFINE(NEW_H, <new>)
1947 AC_DEFINE(WIN32_LEAN_AND_MEAN)
1949 TARGET_MD_ARCH=win32
1950 _PLATFORM_DEFAULT_TOOLKIT='windows'
1953 MOZ_ENABLE_POSTSCRIPT=
1954 MOZ_USER_DIR="Mozilla"
1958 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
1963 # certain versions of cygwin's makedepend barf on the
1964 # #include <string> vs -I./dist/include/string issue so don't use it
1966 if test -n "$GNU_CC"; then
1967 CC="$CC -mno-cygwin"
1968 CXX="$CXX -mno-cygwin"
1969 CPP="$CPP -mno-cygwin"
1970 CFLAGS="$CFLAGS -mms-bitfields"
1971 CXXFLAGS="$CXXFLAGS -mms-bitfields"
1972 DSO_LDOPTS='-shared'
1973 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1974 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1976 # Use temp file for windres (bug 213281)
1977 RCFLAGS='-O coff --use-temp-file'
1978 # mingw doesn't require kernel32, user32, and advapi32 explicitly
1979 LIBS="$LIBS -lgdi32 -lwinmm -lwsock32"
1980 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/lib -ljs$(MOZ_BITS)$(VERSION_NUMBER)'
1982 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core'
1983 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom'
1985 IMPORT_LIB_SUFFIX=dll.a
1987 TARGET_COMPILER_ABI=msvc
1991 AR='lib -NOLOGO -OUT:"$@"'
1993 RANLIB='echo not_ranlib'
1994 STRIP='echo not_strip'
1999 GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
2004 IMPORT_LIB_SUFFIX=lib
2005 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(PDBFILE) $(DSO_LDOPTS)'
2006 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(PDBFILE) $(DSO_LDOPTS)'
2008 MKSHLIB_UNFORCE_ALL=
2009 DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2010 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(PDBFILE)"
2011 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(PDBFILE)"
2012 LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
2013 MOZ_DEBUG_FLAGS='-Zi'
2014 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2015 WARNINGS_AS_ERRORS='-WX'
2016 MOZ_OPTIMIZE_FLAGS='-O1'
2017 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
2019 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
2020 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
2021 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2022 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2023 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
2024 if test $_MSC_VER -ge 1400; then
2025 LDFLAGS="$LDFLAGS -NXCOMPAT -SAFESEH"
2026 dnl For profile-guided optimization
2027 PROFILE_GEN_CFLAGS="-GL"
2028 PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2029 dnl XXX: PGO builds can fail with warnings treated as errors,
2030 dnl specifically "no profile data available" appears to be
2031 dnl treated as an error sometimes. This might be a consequence
2032 dnl of using WARNINGS_AS_ERRORS in some modules, combined
2033 dnl with the linker doing most of the work in the whole-program
2034 dnl optimization/PGO case. I think it's probably a compiler bug,
2035 dnl but we work around it here.
2036 PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2037 dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2038 dnl Probably also a compiler bug, but what can you do?
2039 PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2040 if test -n "$_USE_DYNAMICBASE"; then
2041 LDFLAGS="$LDFLAGS -DYNAMICBASE"
2045 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,jpeg$(MOZ_BITS)$(VERSION_NUMBER),$(DEPTH)/jpeg)'
2046 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,png,$(DEPTH)/modules/libimg/png)'
2047 AC_DEFINE(HAVE_SNPRINTF)
2053 AC_DEFINE(HW_THREADS)
2054 AC_DEFINE(STDC_HEADERS)
2055 AC_DEFINE(NEW_H, <new>)
2056 AC_DEFINE(WIN32_LEAN_AND_MEAN)
2057 TARGET_MD_ARCH=win32
2058 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2061 MOZ_ENABLE_POSTSCRIPT=
2062 MOZ_USER_DIR="Mozilla"
2064 dnl Hardcode to win95 for now - cls
2065 TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2067 dnl set NO_X11 defines here as the general check is skipped on win32
2071 dnl MinGW/MSYS doesn't provide or need cygpath
2076 MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2078 *-cygwin*|*-msvc*|*-mks*)
2079 CYGPATH_W="cygpath -a -w"
2080 CYGPATH_S="sed -e s|\\\\|/|g"
2081 MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
2085 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2087 if test -z "$MOZ_TOOLS"; then
2088 AC_MSG_ERROR([MOZ_TOOLS is not set])
2091 MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd`
2092 if test "$?" != "0" || test -z "$MOZ_TOOLS_DIR"; then
2093 AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2095 if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_DIR/bin:"` = 0; then
2096 AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2098 MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
2100 if test -n "$GLIB_PREFIX"; then
2101 _GLIB_PREFIX_DIR=`cd $GLIB_PREFIX && pwd`
2102 if test "$?" = "0"; then
2103 if test `echo ${PATH}: | grep -ic "$_GLIB_PREFIX_DIR/bin:"` = 0; then
2104 AC_MSG_ERROR([GLIB_PREFIX must be in your \$PATH.])
2106 _GLIB_PREFIX_DIR=`$CYGPATH_W $_GLIB_PREFIX_DIR | $CYGPATH_S`
2108 AC_MSG_ERROR([GLIB_PREFIX is set but "${GLIB_PREFIX}" is not a directory.])
2111 _GLIB_PREFIX_DIR=$MOZ_TOOLS_DIR
2113 if test ! -f "${_GLIB_PREFIX_DIR}/include/glib.h"; then
2114 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/include/glib.h .])
2116 GLIB_CFLAGS="-I${_GLIB_PREFIX_DIR}/include"
2117 if test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"; then
2118 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"
2119 elif test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"; then
2120 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"
2122 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/lib/glib-1.2.lib or $_GLIB_PREFIX_DIR/lib/glib-1.2_s.lib])
2125 if test -n "$LIBIDL_PREFIX"; then
2126 _LIBIDL_PREFIX_DIR=`cd $LIBIDL_PREFIX && pwd`
2127 if test "$?" = "0"; then
2128 if test `echo ${PATH}: | grep -ic "$_LIBIDL_PREFIX_DIR/bin:"` = 0; then
2129 AC_MSG_ERROR([LIBIDL_PREFIX must be in your \$PATH.])
2131 _LIBIDL_PREFIX_DIR=`$CYGPATH_W $_LIBIDL_PREFIX_DIR | $CYGPATH_S`
2133 AC_MSG_ERROR([LIBIDL_PREFIX is set but "${LIBIDL_PREFIX}" is not a directory.])
2136 _LIBIDL_PREFIX_DIR=$MOZ_TOOLS_DIR
2138 if test ! -f "${_LIBIDL_PREFIX_DIR}/include/libIDL/IDL.h"; then
2139 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/include/libIDL/IDL.h .])
2141 LIBIDL_CFLAGS="-I${_LIBIDL_PREFIX_DIR}/include ${GLIB_CFLAGS}"
2142 if test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"; then
2143 LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"
2145 elif test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"; then
2146 LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"
2148 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/lib/libidl-0.6.lib or $_LIBIDL_PREFIX_DIR/lib/libidl-0.6_s.lib])
2150 LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2153 *) # else cross-compiling
2154 if test -n "$GLIB_PREFIX"; then
2155 GLIB_CFLAGS="-I${GLIB_PREFIX}/include"
2156 if test -f "${GLIB_PREFIX}/lib/glib-1.2_s.lib"; then
2157 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2_s.lib"
2158 elif test -f "${GLIB_PREFIX}/lib/glib-1.2.lib"; then
2159 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2.lib"
2161 AC_MSG_ERROR([Cannot find $GLIB_PREFIX/lib/glib-1.2.lib or $GLIB_PREFIX/lib/glib-1.2_s.lib])
2164 if test -n "$LIBIDL_PREFIX"; then
2165 LIBIDL_CFLAGS="-I${LIBIDL_PREFIX}/include ${GLIB_CFLAGS}"
2166 if test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"; then
2167 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"
2169 elif test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"; then
2170 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"
2172 AC_MSG_ERROR([Cannot find $LIBIDL_PREFIX/lib/libIDL-0.6.lib or $LIBIDL_PREFIX/lib/libIDL-0.6_s.lib])
2175 LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2182 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])
2186 AC_CHECK_HEADERS(mmintrin.h oleacc.idl)
2190 AC_CHECK_HEADERS(atlbase.h wpcapi.h)
2206 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2213 CFLAGS="$CFLAGS -Dunix"
2214 CXXFLAGS="$CXXFLAGS -Dunix"
2215 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2217 DSO_PIC_CFLAGS='-fPIC -DPIC'
2218 DSO_LDOPTS='-shared'
2219 BIN_FLAGS='-Wl,--export-dynamic'
2221 DSO_PIC_CFLAGS='-fPIC -DPIC'
2222 DLL_SUFFIX=".so.1.0"
2223 DSO_LDOPTS='-shared'
2225 # This will fail on a.out systems prior to 1.5.1_ALPHA.
2226 MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2227 MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2228 if test "$LIBRUNPATH"; then
2229 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2231 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2232 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2237 AC_DEFINE(_QNX_SOURCE)
2240 WARNINGS_AS_ERRORS=''
2241 MOZ_OPTIMIZE_FLAGS="-O"
2242 MOZ_DEBUG_FLAGS="-gstabs"
2245 LIBS="$LIBS -lsocket -lstdc++"
2246 _DEFINES_CFLAGS='-Wp,-include -Wp,$(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
2247 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -Wp,-include -Wp,$(DEPTH)/mozilla-config.h -D_POSIX_C_SOURCE=199506'
2248 if test "$with_x" != "yes"
2250 _PLATFORM_DEFAULT_TOOLKIT="photon"
2251 TK_CFLAGS='-I/usr/include/photon'
2254 case "${target_cpu}" in
2256 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
2259 case "${host_cpu}" in
2267 DLL_SUFFIX=".so.1.0"
2269 DSO_PIC_CFLAGS='-fPIC'
2270 DSO_LDOPTS='-shared -fPIC'
2271 if test "$LIBRUNPATH"; then
2272 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2277 AC_DEFINE(NO_PW_GECOS)
2278 AC_DEFINE(NO_UDSOCK)
2279 AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
2281 MKSHLIB_FORCE_ALL='-all'
2282 MKSHLIB_UNFORCE_ALL='-none'
2284 AS_DASH_C_FLAG='-Wc/names=as_is'
2286 DSO_LDOPTS='-shared -auto_symvec'
2288 MOZ_DEBUG_LDFLAGS='-g'
2290 CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
2291 CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
2296 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2297 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2305 IMPORT_LIB_SUFFIX=lib
2308 _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2309 MOZ_ENABLE_POSTSCRIPT=
2312 MOZ_USER_DIR="Mozilla"
2314 if test "$MOZTOOLS"; then
2315 MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2317 AC_MSG_ERROR([MOZTOOLS is not set])
2321 if test -n "$GNU_CC"; then
2323 AC_DEFINE(XP_OS2_EMX)
2324 AC_DEFINE(OS2EMX_PLAIN_CHAR)
2325 AC_DEFINE(TCPV40HDRS)
2328 CFLAGS="$CFLAGS -Zomf"
2329 CXXFLAGS="$CXXFLAGS -Zomf"
2331 BIN_FLAGS='-Zlinker /ST:0x100000'
2335 WARNINGS_AS_ERRORS='-Werror'
2336 MOZ_DEBUG_FLAGS="-g -fno-inline"
2337 MOZ_OPTIMIZE_FLAGS="-O2"
2338 MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2339 MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcomct.lib'
2340 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
2341 LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2342 if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2343 DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2344 LDFLAGS="$LDFLAGS -Zhigh-mem"
2345 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2346 AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2349 # GCC for OS/2 currently predefines these, but we don't want them
2350 _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2351 _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2353 AC_CACHE_CHECK(for __declspec(dllexport),
2355 [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2357 ac_os2_declspec="yes",
2358 ac_os2_declspec="no")])
2359 if test "$ac_os2_declspec" = "yes"; then
2361 MOZ_OS2_USE_DECLSPEC='1'
2364 # Visual Age C++ build
2365 elif test "$VACPP" = "yes"; then
2366 MOZ_BUILD_ROOT=`pwd -D`
2369 AR_FLAGS='/NOL /NOI /O:$(subst /,\\,$@)'
2378 CFLAGS="/Q /qlibansi /Gm+ /Su4 /Mp /Tl9"
2379 CXXFLAGS="/Q /qlibansi /Gm+ /Su4 /Mp /Tl9 /Gx+"
2380 MOZ_DEBUG_FLAGS="/Ti+"
2381 WARNINGS_AS_ERRORS='-WX'
2382 MOZ_OPTIMIZE_FLAGS="/O+ /Gl+ /G5 /qarch=pentium"
2384 MOZ_DEBUG_LDFLAGS="/DE"
2385 MOZ_OPTIMIZE_LDFLAGS="/OPTFUNC /EXEPACK:2 /PACKCODE /PACKDATA"
2388 IMPLIB='implib /NOL /NOI'
2389 FILTER='cppfilt -q -B -P'
2390 AC_DEFINE(NO_ANSI_KEYWORDS)
2393 AC_DEFINE(XP_OS2_VACPP)
2394 AC_DEFINE(TCPV40HDRS)
2395 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2396 AC_DEFINE(STDC_HEADERS)
2397 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2398 MKSHLIB='$(LD) $(DSO_LDOPTS)'
2399 MKCSHLIB='$(LD) $(DSO_LDOPTS)'
2400 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2401 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcomct.lib'
2402 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
2403 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2408 if test "$GNU_CC"; then
2409 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2410 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2413 MOZ_DEBUG_FLAGS='-g'
2414 ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
2415 CFLAGS="$CFLAGS -ieee"
2416 CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee -ptr $(DIST)/cxx_repository'
2417 DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
2420 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2421 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2422 MKSHLIB_FORCE_ALL='-all'
2423 MKSHLIB_UNFORCE_ALL='-none'
2424 dnl Might fix the libxpcom.so breakage on this platform as well....
2425 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2426 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2428 if test -z "$GNU_CXX"; then
2431 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2435 DIRENT_INO=d_stat.st_ino
2436 dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
2437 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2438 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2439 dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
2440 AC_DEFINE(STDC_HEADERS)
2441 if test "$no_x" = "yes"; then
2442 _PLATFORM_DEFAULT_TOOLKIT='photon'
2443 TK_CFLAGS='-I/usr/nto/include/photon'
2444 TK_LIBS='-lphoton -lphrender'
2449 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2450 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2451 CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
2452 if test ! "$GNU_CC"; then
2457 dnl the qsort routine under solaris is faulty
2460 TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2462 # $ORIGIN/.. is for shared libraries under components/ to locate shared
2463 # libraries one level up (e.g. libnspr4.so)
2464 LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..'"
2465 LIBS="-lCrun -lCstd $LIBS"
2467 if test -z "$GNU_CC"; then
2470 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2472 if test "$CPU_ARCH" != "sparc"; then
2473 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all"
2474 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife -norunpath"
2476 # Do not use -xbuiltin on SPARC to get around a bug of compiler
2477 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%none"
2478 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%none -features=tmplife -norunpath"
2481 LDFLAGS="-xildoff -z lazyload -z combreloc $LDFLAGS"
2482 if test -z "$CROSS_COMPILE" && test -f /usr/lib/ld/map.noexstk; then
2483 _SAVE_LDFLAGS=$LDFLAGS
2484 LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2485 AC_TRY_LINK([#include <stdio.h>],
2486 [printf("Hello World\n");],
2488 [LDFLAGS=$_SAVE_LDFLAGS])
2490 WARNINGS_AS_ERRORS='-Werror'
2491 MOZ_OPTIMIZE_FLAGS="-xO4"
2492 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2493 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) -G -z muldefs -h $@ -o $@'
2494 MKSHLIB_FORCE_ALL='-z allextract'
2495 MKSHLIB_UNFORCE_ALL='-z defaultextract'
2496 DSO_LDOPTS='-G -z muldefs'
2502 AS='/usr/ccs/bin/as'
2503 ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2505 TARGET_COMPILER_ABI="sunc"
2506 CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2507 CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2508 AC_MSG_CHECKING([for Forte compiler version >= WS6U2])
2512 [#if (__SUNPRO_CC < 0x530)
2515 _BAD_COMPILER=,_BAD_COMPILER=1)
2516 if test -n "$_BAD_COMPILER"; then
2518 AC_MSG_ERROR([Forte version WS6U2 or higher is required to build. Your compiler version is $CC_VERSION .])
2522 AC_MSG_RESULT([$_res])
2525 ASFLAGS="$ASFLAGS -fPIC"
2528 _WARNINGS_CXXFLAGS=''
2529 if test "$OS_RELEASE" = "5.3"; then
2530 AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2533 if test "$OS_RELEASE" = "5.5.1"; then
2534 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2539 DSO_LDOPTS='-Bdynamic'
2540 MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2541 MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2543 AC_DEFINE(SPRINTF_RETURNS_STRING)
2544 case "$(target_os)" in
2546 DLL_SUFFIX='.so.1.0'
2552 NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2556 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2561 dnl Only one oddball right now (QNX), but this gives us flexibility
2562 dnl if any other platforms need to override this in the future.
2563 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2565 dnl ========================================================
2566 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2567 dnl by now will not have any way to link most binaries (tests
2568 dnl as well as viewer, apprunner, etc.), because some symbols
2569 dnl will be left out of the "composite" .so's by ld as unneeded.
2570 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2571 dnl they can link in the static libs that provide the missing
2573 dnl ========================================================
2574 NO_LD_ARCHIVE_FLAGS=
2575 if test -z "$MKSHLIB_FORCE_ALL" || test -z "$MKSHLIB_UNFORCE_ALL"; then
2576 NO_LD_ARCHIVE_FLAGS=1
2580 NO_LD_ARCHIVE_FLAGS=
2583 NO_LD_ARCHIVE_FLAGS=
2586 NO_LD_ARCHIVE_FLAGS=
2588 *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince)
2589 if test -z "$GNU_CC"; then
2590 NO_LD_ARCHIVE_FLAGS=
2594 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2597 dnl Indicate that platform requires special thread safe
2598 dnl locking when starting up the OJI JVM
2599 dnl (see mozilla/modules/oji/src/nsJVMManager.cpp)
2600 dnl ========================================================
2603 AC_DEFINE(MOZ_OJI_REQUIRE_THREAD_SAFE_ON_STARTUP)
2607 dnl ========================================================
2608 dnl = Flags to strip unused symbols from .so components
2609 dnl ========================================================
2611 *-linux*|*-kfreebsd*-gnu)
2612 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2615 if test -z "$GNU_CC"; then
2616 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2618 if test -z "$GCC_USE_GNU_LD"; then
2619 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2621 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2626 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2629 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2631 *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince)
2632 if test -n "$GNU_CC"; then
2633 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2638 if test -z "$COMPILE_ENVIRONMENT"; then
2639 SKIP_COMPILER_CHECKS=1
2640 SKIP_LIBRARY_CHECKS=1
2643 if test -z "$SKIP_COMPILER_CHECKS"; then
2644 dnl Checks for typedefs, structures, and compiler characteristics.
2645 dnl ========================================================
2653 AC_STRUCT_ST_BLKSIZE
2654 AC_MSG_CHECKING(for siginfo_t)
2655 AC_CACHE_VAL(ac_cv_siginfo_t,
2656 [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2657 #include <signal.h>],
2659 [ac_cv_siginfo_t=true],
2660 [ac_cv_siginfo_t=false])])
2661 if test "$ac_cv_siginfo_t" = true ; then
2662 AC_DEFINE(HAVE_SIGINFO_T)
2668 dnl Visual Age for os/2 also defines size_t and off_t in certain
2669 dnl header files. These defines make Visual Age use the mozilla
2671 if test "$VACPP" = "yes"; then
2676 dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
2677 dnl ========================================================
2678 AC_MSG_CHECKING(for int16_t)
2679 AC_CACHE_VAL(ac_cv_int16_t,
2680 [AC_TRY_COMPILE([#include <stdio.h>
2681 #include <sys/types.h>],
2683 [ac_cv_int16_t=true],
2684 [ac_cv_int16_t=false])])
2685 if test "$ac_cv_int16_t" = true ; then
2686 AC_DEFINE(HAVE_INT16_T)
2691 AC_MSG_CHECKING(for int32_t)
2692 AC_CACHE_VAL(ac_cv_int32_t,
2693 [AC_TRY_COMPILE([#include <stdio.h>
2694 #include <sys/types.h>],
2696 [ac_cv_int32_t=true],
2697 [ac_cv_int32_t=false])])
2698 if test "$ac_cv_int32_t" = true ; then
2699 AC_DEFINE(HAVE_INT32_T)
2704 AC_MSG_CHECKING(for int64_t)
2705 AC_CACHE_VAL(ac_cv_int64_t,
2706 [AC_TRY_COMPILE([#include <stdio.h>
2707 #include <sys/types.h>],
2709 [ac_cv_int64_t=true],
2710 [ac_cv_int64_t=false])])
2711 if test "$ac_cv_int64_t" = true ; then
2712 AC_DEFINE(HAVE_INT64_T)
2717 AC_MSG_CHECKING(for int64)
2718 AC_CACHE_VAL(ac_cv_int64,
2719 [AC_TRY_COMPILE([#include <stdio.h>
2720 #include <sys/types.h>],
2723 [ac_cv_int64=false])])
2724 if test "$ac_cv_int64" = true ; then
2725 AC_DEFINE(HAVE_INT64)
2730 AC_MSG_CHECKING(for uint)
2731 AC_CACHE_VAL(ac_cv_uint,
2732 [AC_TRY_COMPILE([#include <stdio.h>
2733 #include <sys/types.h>],
2736 [ac_cv_uint=false])])
2737 if test "$ac_cv_uint" = true ; then
2738 AC_DEFINE(HAVE_UINT)
2743 AC_MSG_CHECKING(for uint_t)
2744 AC_CACHE_VAL(ac_cv_uint_t,
2745 [AC_TRY_COMPILE([#include <stdio.h>
2746 #include <sys/types.h>],
2748 [ac_cv_uint_t=true],
2749 [ac_cv_uint_t=false])])
2750 if test "$ac_cv_uint_t" = true ; then
2751 AC_DEFINE(HAVE_UINT_T)
2756 AC_MSG_CHECKING(for uint16_t)
2757 AC_CACHE_VAL(ac_cv_uint16_t,
2758 [AC_TRY_COMPILE([#include <stdio.h>
2759 #include <sys/types.h>],
2760 [uint16_t foo = 0;],
2761 [ac_cv_uint16_t=true],
2762 [ac_cv_uint16_t=false])])
2763 if test "$ac_cv_uint16_t" = true ; then
2764 AC_DEFINE(HAVE_UINT16_T)
2770 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
2771 dnl are defined when compiling C++ but not C. Since the result of this
2772 dnl test is used only in C++, do it in C++.
2775 AC_MSG_CHECKING(for uname.domainname)
2776 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
2777 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2778 [ struct utsname *res; char *domain;
2779 (void)uname(res); if (res != 0) { domain = res->domainname; } ],
2780 [ac_cv_have_uname_domainname_field=true],
2781 [ac_cv_have_uname_domainname_field=false])])
2783 if test "$ac_cv_have_uname_domainname_field" = "true"; then
2784 AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
2790 AC_MSG_CHECKING(for uname.__domainname)
2791 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
2792 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2793 [ struct utsname *res; char *domain;
2794 (void)uname(res); if (res != 0) { domain = res->__domainname; } ],
2795 [ac_cv_have_uname_us_domainname_field=true],
2796 [ac_cv_have_uname_us_domainname_field=false])])
2798 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
2799 AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
2807 dnl Check for usable wchar_t (2 bytes, unsigned)
2808 dnl (we really don't need the unsignedness check anymore)
2809 dnl ========================================================
2811 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
2812 ac_cv_have_usable_wchar_v2,
2813 [AC_TRY_COMPILE([#include <stddef.h>
2814 $configure_static_assert_macros],
2815 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2816 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2817 ac_cv_have_usable_wchar_v2="yes",
2818 ac_cv_have_usable_wchar_v2="no")])
2819 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
2820 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2821 HAVE_CPP_2BYTE_WCHAR_T=1
2823 dnl This is really gcc-only
2824 dnl Do this test using CXX only since some versions of gcc
2825 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
2826 dnl only have short-wchar support for c++.
2827 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
2831 _SAVE_CXXFLAGS=$CXXFLAGS
2832 CXXFLAGS="$CXXFLAGS -fshort-wchar"
2834 AC_CACHE_CHECK(for compiler -fshort-wchar option,
2835 ac_cv_have_usable_wchar_option_v2,
2836 [AC_TRY_LINK([#include <stddef.h>
2837 $configure_static_assert_macros],
2838 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2839 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2840 ac_cv_have_usable_wchar_option_v2="yes",
2841 ac_cv_have_usable_wchar_option_v2="no")])
2843 if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
2844 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2845 HAVE_CPP_2BYTE_WCHAR_T=1
2847 CXXFLAGS=$_SAVE_CXXFLAGS
2852 dnl Check for .hidden assembler directive and visibility attribute.
2853 dnl Borrowed from glibc configure.in
2854 dnl ===============================================================
2855 if test "$GNU_CC"; then
2856 AC_CACHE_CHECK(for visibility(hidden) attribute,
2857 ac_cv_visibility_hidden,
2858 [cat > conftest.c <<EOF
2859 int foo __attribute__ ((visibility ("hidden"))) = 1;
2861 ac_cv_visibility_hidden=no
2862 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2863 if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2864 ac_cv_visibility_hidden=yes
2869 if test "$ac_cv_visibility_hidden" = "yes"; then
2870 AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2872 AC_CACHE_CHECK(for visibility(default) attribute,
2873 ac_cv_visibility_default,
2874 [cat > conftest.c <<EOF
2875 int foo __attribute__ ((visibility ("default"))) = 1;
2877 ac_cv_visibility_default=no
2878 if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2879 if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2880 ac_cv_visibility_default=yes
2885 if test "$ac_cv_visibility_default" = "yes"; then
2886 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2888 AC_CACHE_CHECK(for visibility pragma support,
2889 ac_cv_visibility_pragma,
2890 [cat > conftest.c <<EOF
2891 #pragma GCC visibility push(hidden)
2893 #pragma GCC visibility push(default)
2894 int foo_default = 1;
2896 ac_cv_visibility_pragma=no
2897 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2898 if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
2899 if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
2900 ac_cv_visibility_pragma=yes
2906 if test "$ac_cv_visibility_pragma" = "yes"; then
2907 AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
2908 ac_cv_have_visibility_class_bug,
2909 [cat > conftest.c <<EOF
2910 #pragma GCC visibility push(hidden)
2911 struct __attribute__ ((visibility ("default"))) TestStruct {
2914 __attribute__ ((visibility ("default"))) void TestFunc() {
2918 ac_cv_have_visibility_class_bug=no
2919 if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2920 ac_cv_have_visibility_class_bug=yes
2922 if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
2923 ac_cv_have_visibility_class_bug=yes
2926 rm -rf conftest.{c,S}
2929 AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
2930 ac_cv_have_visibility_builtin_bug,
2931 [cat > conftest.c <<EOF
2932 #pragma GCC visibility push(hidden)
2933 #pragma GCC visibility push(default)
2935 #pragma GCC visibility pop
2937 __attribute__ ((visibility ("default"))) void Func() {
2939 memset(c, 0, sizeof(c));
2942 ac_cv_have_visibility_builtin_bug=no
2943 if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2944 ac_cv_have_visibility_builtin_bug=yes
2946 if test `grep -c "@PLT" conftest.S` = 0; then
2947 ac_cv_visibility_builtin_bug=yes
2950 rm -f conftest.{c,S}
2952 if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
2953 "$ac_cv_have_visibility_class_bug" = "no"; then
2954 VISIBILITY_FLAGS='-I$(DIST)/include/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
2955 WRAP_SYSTEM_INCLUDES=1
2957 VISIBILITY_FLAGS='-fvisibility=hidden'
2958 fi # have visibility pragma bug
2959 fi # have visibility pragma
2960 fi # have visibility(default) attribute
2961 fi # have visibility(hidden) attribute
2964 # visibility hidden flag for Sun Studio on Solaris
2965 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
2966 VISIBILITY_FLAGS='-xldscope=hidden'
2967 fi # Sun Studio on Solaris
2969 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2970 AC_SUBST(VISIBILITY_FLAGS)
2972 dnl Checks for header files.
2973 dnl ========================================================
2975 case "$target_os" in
2977 # for stuff like -lXshm
2978 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2981 AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
2982 AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
2983 AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
2984 AC_CHECK_HEADERS(malloc.h)
2985 AC_CHECK_HEADERS(X11/XKBlib.h)
2987 dnl These are all the places some variant of statfs can be hiding.
2988 AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2990 dnl Try for MMX support
2991 dnl NB - later gcc versions require -mmmx for this header to be successfully
2992 dnl included (or another option which implies it, such as -march=pentium-mmx)
2993 AC_CHECK_HEADERS(mmintrin.h)
2995 AC_MSG_CHECKING(for ARM SIMD support)
2997 [asm("uqadd8 r1, r1, r2");],
2998 result="yes", result="no")
2999 AC_MSG_RESULT("$result")
3000 if test "$result" = "yes"; then
3001 AC_DEFINE(HAVE_ARM_SIMD)
3004 AC_SUBST(HAVE_ARM_SIMD)
3006 dnl Check whether the compiler supports the new-style C++ standard
3007 dnl library headers (i.e. <new>) or needs the old "new.h"
3010 AC_CHECK_HEADER(new, [NEW_H=new])
3011 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
3014 AC_ARG_ENABLE(dtrace,
3015 [ --enable-dtrace build with dtrace support if available (default=no)],
3016 [enable_dtrace="yes"],)
3017 if test "x$enable_dtrace" = "xyes"; then
3018 AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
3019 if test -n "$HAVE_DTRACE"; then
3020 AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
3022 AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
3025 AC_SUBST(HAVE_DTRACE)
3031 AC_CHECK_HEADERS(sys/cdefs.h)
3035 dnl Checks for libraries.
3036 dnl ========================================================
3041 AC_CHECK_LIB(c_r, gethostbyname_r)
3045 dnl We don't want to link with libdl even if it's present on OS X, since
3046 dnl it's not used and not part of the default installation.
3047 dnl The same goes for BeOS.
3048 dnl We don't want to link against libm or libpthread on Darwin since
3049 dnl they both are just symlinks to libSystem and explicitly linking
3050 dnl against libSystem causes issues when debugging (see bug 299601).
3057 AC_CHECK_LIB(m, atan)
3058 AC_CHECK_LIB(dl, dlopen,
3059 AC_CHECK_HEADER(dlfcn.h,
3061 AC_DEFINE(HAVE_LIBDL)))
3065 _SAVE_CFLAGS="$CFLAGS"
3066 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3067 AC_CHECK_FUNCS(dladdr)
3068 CFLAGS="$_SAVE_CFLAGS"
3070 if test ! "$GNU_CXX"; then
3074 AC_CHECK_LIB(C_r, demangle)
3077 AC_CHECK_LIB(C, demangle)
3081 AC_CHECK_LIB(socket, socket)
3084 XLIBS="$X_EXTRA_LIBS"
3086 dnl ========================================================
3087 dnl Checks for X libraries.
3088 dnl Ordering is important.
3089 dnl Xt is dependent upon SM as of X11R6
3090 dnl ========================================================
3091 if test "$no_x" = "yes"; then
3094 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3095 XLIBS="-lX11 $XLIBS"
3096 _SAVE_LDFLAGS="$LDFLAGS"
3097 LDFLAGS="$XLDFLAGS $LDFLAGS"
3098 AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3099 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3100 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3101 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3104 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3105 unset ac_cv_lib_Xt_XtFree
3106 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3107 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
3108 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3109 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3112 # AIX needs the motif library linked before libXt to prevent
3113 # crashes in plugins linked against Motif - Bug #98892
3114 case "${target_os}" in
3116 XT_LIBS="-lXm $XT_LIBS"
3120 dnl ========================================================
3121 dnl = Check for XShm
3122 dnl ========================================================
3123 AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3125 AC_CHECK_HEADER(X11/extensions/XShm.h)
3126 if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" &&
3127 test -n "$_HAVE_XSHM_XEXT"; then
3128 AC_DEFINE(HAVE_XSHM)
3131 dnl ========================================================
3133 dnl ========================================================
3134 AC_CHECK_LIB(XIE, XieFloGeometry, [MOZ_XIE_LIBS="-lXIE"],,
3136 AC_CHECK_HEADER(X11/extensions/XIElib.h)
3138 if test "$MOZ_XIE_LIBS"; then
3139 dnl ====================================================
3140 dnl = If XIE is present and is desired, turn it on
3141 dnl ====================================================
3151 LDFLAGS="$_SAVE_LDFLAGS"
3153 dnl ========================================================
3154 dnl = Check for freetype2 and its functionality
3155 dnl ========================================================
3156 AC_CHECK_FT2(6.1.0, [_HAVE_FREETYPE2=1], [_HAVE_FREETYPE2=])
3158 if test "$_HAVE_FREETYPE2"; then
3160 _SAVE_CFLAGS="$CFLAGS"
3161 LIBS="$LIBS $FT2_LIBS"
3162 CFLAGS="$CFLAGS $FT2_CFLAGS"
3164 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
3165 ac_cv_member_FT_Bitmap_Size_y_ppem,
3166 [AC_TRY_COMPILE([#include <ft2build.h>
3167 #include FT_FREETYPE_H],
3169 if (sizeof s.y_ppem) return 0;
3171 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
3172 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
3173 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
3174 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
3176 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
3178 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
3179 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
3180 [FT_Bitmap_Size structure includes y_ppem field])
3182 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
3185 CFLAGS="$_SAVE_CFLAGS"
3195 dnl ========================================================
3196 dnl = pthread support
3197 dnl = Start by checking whether the system support pthreads
3198 dnl ========================================================
3199 case "$target_os" in
3204 MOZ_CHECK_PTHREADS(pthreads,
3205 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3206 MOZ_CHECK_PTHREADS(pthread,
3207 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3208 MOZ_CHECK_PTHREADS(c_r,
3209 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3210 MOZ_CHECK_PTHREADS(c,
3219 dnl ========================================================
3220 dnl Check the command line for --with-pthreads
3221 dnl ========================================================
3222 MOZ_ARG_WITH_BOOL(pthreads,
3223 [ --with-pthreads Force use of system pthread library with NSPR ],
3224 [ if test "$USE_PTHREADS"x = x; then
3225 AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3231 dnl ========================================================
3232 dnl Do the platform specific pthread hackery
3233 dnl ========================================================
3234 if test "$USE_PTHREADS"x != x
3237 dnl See if -pthread is supported.
3240 ac_cv_have_dash_pthread=no
3241 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3242 echo 'int main() { return 0; }' | cat > conftest.c
3243 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3244 if test $? -eq 0; then
3245 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3246 ac_cv_have_dash_pthread=yes
3247 case "$target_os" in
3249 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3252 CFLAGS="$CFLAGS -pthread"
3253 CXXFLAGS="$CXXFLAGS -pthread"
3259 AC_MSG_RESULT($ac_cv_have_dash_pthread)
3262 dnl See if -pthreads is supported.
3264 ac_cv_have_dash_pthreads=no
3265 if test "$ac_cv_have_dash_pthread" = "no"; then
3266 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3267 echo 'int main() { return 0; }' | cat > conftest.c
3268 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3269 if test $? -eq 0; then
3270 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3271 ac_cv_have_dash_pthreads=yes
3272 CFLAGS="$CFLAGS -pthreads"
3273 CXXFLAGS="$CXXFLAGS -pthreads"
3277 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3282 AC_DEFINE(_REENTRANT)
3283 AC_DEFINE(_THREAD_SAFE)
3284 dnl -pthread links in -lc_r, so don't specify it explicitly.
3285 if test "$ac_cv_have_dash_pthread" = "yes"; then
3286 _PTHREAD_LDFLAGS="-pthread"
3288 _PTHREAD_LDFLAGS="-lc_r"
3292 *-*-openbsd*|*-*-bsdi*)
3293 AC_DEFINE(_REENTRANT)
3294 AC_DEFINE(_THREAD_SAFE)
3295 dnl -pthread links in -lc_r, so don't specify it explicitly.
3296 if test "$ac_cv_have_dash_pthread" = "yes"; then
3297 _PTHREAD_LDFLAGS="-pthread"
3301 *-*-linux*|*-*-kfreebsd*-gnu)
3302 AC_DEFINE(_REENTRANT)
3306 AC_DEFINE(_REENTRANT)
3310 AC_DEFINE(_REENTRANT)
3314 AC_DEFINE(_REENTRANT)
3318 AC_DEFINE(_REENTRANT)
3322 AC_DEFINE(_REENTRANT)
3323 if test ! "$GNU_CC"; then
3324 CFLAGS="$CFLAGS -mt"
3325 CXXFLAGS="$CXXFLAGS -mt"
3329 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3332 dnl ========================================================
3333 dnl See if mmap sees writes
3334 dnl For cross compiling, just define it as no, which is a safe default
3335 dnl ========================================================
3336 AC_MSG_CHECKING(whether mmap() sees write()s)
3342 #include <sys/mman.h>
3343 #include <sys/types.h>
3344 #include <sys/stat.h>
3347 char fname[] = "conftest.file";
3348 char zbuff[1024]; /* Fractional page is probably worst case */
3355 fd = open(fname, O_RDWR | O_CREAT, 0660);
3358 write(fd, zbuff, sizeof(zbuff));
3359 lseek(fd, 0, SEEK_SET);
3360 map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
3361 if(map==(char*)-1) return 2;
3362 for(i=0; fname[i]; i++) {
3363 int rc = write(fd, &fname[i], 1);
3364 if(map[i]!=fname[i]) return 4;
3371 AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
3373 AC_MSG_RESULT("$result")
3375 if test "$result" = "no"; then
3376 AC_DEFINE(MMAP_MISSES_WRITES)
3380 dnl Checks for library functions.
3381 dnl ========================================================
3382 AC_PROG_GCC_TRADITIONAL
3384 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 truncate64 statvfs64)
3385 AC_CHECK_FUNCS(flockfile getpagesize)
3387 dnl localtime_r and strtok_r are only present on MacOS version 10.2 and higher
3388 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100200"; then
3389 AC_CHECK_FUNCS(localtime_r strtok_r)
3392 dnl check for wcrtomb/mbrtowc
3393 dnl =======================================================================
3394 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3397 AC_CACHE_CHECK(for wcrtomb,
3399 [AC_TRY_LINK([#include <wchar.h>],
3400 [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3401 ac_cv_have_wcrtomb="yes",
3402 ac_cv_have_wcrtomb="no")])
3403 if test "$ac_cv_have_wcrtomb" = "yes"; then
3404 AC_DEFINE(HAVE_WCRTOMB)
3406 AC_CACHE_CHECK(for mbrtowc,
3408 [AC_TRY_LINK([#include <wchar.h>],
3409 [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3410 ac_cv_have_mbrtowc="yes",
3411 ac_cv_have_mbrtowc="no")])
3412 if test "$ac_cv_have_mbrtowc" = "yes"; then
3413 AC_DEFINE(HAVE_MBRTOWC)
3420 ac_cv_func_res_ninit,
3423 #define _BSD_SOURCE 1
3427 [int foo = res_ninit(&_res);],
3428 [ac_cv_func_res_ninit=yes],
3429 [ac_cv_func_res_ninit=no])
3432 if test "$ac_cv_func_res_ninit" = "yes"; then
3433 AC_DEFINE(HAVE_RES_NINIT)
3434 dnl must add the link line we do something as foolish as this... dougt
3436 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3437 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3442 [for gnu_get_libc_version()],
3443 ac_cv_func_gnu_get_libc_version,
3445 #ifdef HAVE_GNU_LIBC_VERSION_H
3446 #include <gnu/libc-version.h>
3449 [const char *glibc_version = gnu_get_libc_version();],
3450 [ac_cv_func_gnu_get_libc_version=yes],
3451 [ac_cv_func_gnu_get_libc_version=no]
3455 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3456 AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3460 os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|beos*)
3464 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3465 AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3466 AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3468 LIBS="$LIBS $_ICONV_LIBS"
3477 iconv_t h = iconv_open("", "");
3478 iconv(h, NULL, NULL, NULL, NULL);
3481 [ac_cv_func_iconv=yes],
3482 [ac_cv_func_iconv=no]
3485 if test "$ac_cv_func_iconv" = "yes"; then
3486 AC_DEFINE(HAVE_ICONV)
3487 DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3488 LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3489 LIBICONV="$_ICONV_LIBS"
3491 [for iconv() with const input],
3492 ac_cv_func_const_iconv,
3498 const char *input = "testing";
3499 iconv_t h = iconv_open("", "");
3500 iconv(h, &input, NULL, NULL, NULL);
3503 [ac_cv_func_const_iconv=yes],
3504 [ac_cv_func_const_iconv=no]
3507 if test "$ac_cv_func_const_iconv" = "yes"; then
3508 AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3520 dnl **********************
3521 dnl *** va_copy checks ***
3522 dnl **********************
3523 dnl we currently check for all three va_copy possibilities, so we get
3524 dnl all results in config.log for bug reports.
3525 AC_MSG_CHECKING(for an implementation of va_copy())
3526 AC_CACHE_VAL(ac_cv_va_copy,[
3529 void f (int i, ...) {
3530 va_list args1, args2;
3531 va_start (args1, i);
3532 va_copy (args2, args1);
3533 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3535 va_end (args1); va_end (args2);
3537 int main() { f (0, 42); return 0; }],
3543 AC_MSG_RESULT($ac_cv_va_copy)
3544 AC_MSG_CHECKING(for an implementation of __va_copy())
3545 AC_CACHE_VAL(ac_cv___va_copy,[
3548 void f (int i, ...) {
3549 va_list args1, args2;
3550 va_start (args1, i);
3551 __va_copy (args2, args1);
3552 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3554 va_end (args1); va_end (args2);
3556 int main() { f (0, 42); return 0; }],
3557 ac_cv___va_copy=yes,
3562 AC_MSG_RESULT($ac_cv___va_copy)
3563 AC_MSG_CHECKING(whether va_lists can be copied by value)
3564 AC_CACHE_VAL(ac_cv_va_val_copy,[
3567 void f (int i, ...) {
3568 va_list args1, args2;
3569 va_start (args1, i);
3571 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3573 va_end (args1); va_end (args2);
3575 int main() { f (0, 42); return 0; }],
3576 ac_cv_va_val_copy=yes,
3577 ac_cv_va_val_copy=no,
3578 ac_cv_va_val_copy=yes
3581 if test "x$ac_cv_va_copy" = "xyes"; then
3582 AC_DEFINE(VA_COPY, va_copy)
3583 AC_DEFINE(HAVE_VA_COPY)
3584 elif test "x$ac_cv___va_copy" = "xyes"; then
3585 AC_DEFINE(VA_COPY, __va_copy)
3586 AC_DEFINE(HAVE_VA_COPY)
3589 if test "x$ac_cv_va_val_copy" = "xno"; then
3590 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3592 AC_MSG_RESULT($ac_cv_va_val_copy)
3594 dnl Check for dll-challenged libc's.
3595 dnl This check is apparently only needed for Linux.
3598 dnl ===================================================================
3601 rm -rf conftest* _conftest
3603 cat >> conftest.C <<\EOF
3608 void __dump_link_map(void) {
3609 struct link_map *map = _dl_loaded;
3610 while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
3613 dlopen("./conftest1.so",RTLD_LAZY);
3614 dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
3615 dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
3616 dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
3620 /* _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).*/
3621 int main() { printf("./conftest1.so\n"); }
3625 $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
3627 cat >> conftest1.C <<\EOF
3629 void foo(void) {printf("foo in dll called\n");}
3631 ${CXX-g++} -fPIC -c -g conftest1.C
3632 ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
3633 ${CXX-g++} -g conftest.C -o conftest -ldl
3634 cp -f conftest1.so conftest _conftest
3636 if test `./conftest | grep conftest1.so | wc -l` -gt 1
3639 echo "*** Your libc has a bug that can result in loading the same dynamic"
3640 echo "*** library multiple times. This bug is known to be fixed in glibc-2.0.7-32"
3641 echo "*** or later. However, if you choose not to upgrade, the only effect"
3642 echo "*** will be excessive memory usage at runtime."
3646 rm -rf conftest* _conftest
3647 dnl ===================================================================
3651 dnl ===================================================================
3652 dnl ========================================================
3653 dnl By default, turn rtti and exceptions off on g++/egcs
3654 dnl ========================================================
3655 if test "$GNU_CXX"; then
3657 AC_MSG_CHECKING(for C++ exceptions flag)
3659 dnl They changed -f[no-]handle-exceptions to -f[no-]exceptions in g++ 2.8
3660 AC_CACHE_VAL(ac_cv_cxx_exceptions_flags,
3661 [echo "int main() { return 0; }" | cat > conftest.C
3663 ${CXX-g++} ${CXXFLAGS} -c -fno-handle-exceptions conftest.C > conftest.out 2>&1
3665 if egrep "warning.*renamed" conftest.out >/dev/null; then
3666 ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-exceptions
3668 ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-handle-exceptions
3673 AC_MSG_RESULT($ac_cv_cxx_exceptions_flags)
3674 _MOZ_EXCEPTIONS_FLAGS_OFF=$ac_cv_cxx_exceptions_flags
3675 _MOZ_EXCEPTIONS_FLAGS_ON=`echo $ac_cv_cxx_exceptions_flags | sed 's|no-||'`
3678 dnl ========================================================
3679 dnl Put your C++ language/feature checks below
3680 dnl ========================================================
3684 if test "$GNU_CC"; then
3685 AC_CACHE_CHECK(for gcc 3.0 ABI,
3686 ac_cv_gcc_three_abi,
3689 #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
3695 ac_cv_gcc_three_abi="yes",
3696 ac_cv_gcc_three_abi="no")])
3697 if test "$ac_cv_gcc_three_abi" = "yes"; then
3698 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc3}"
3701 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc2}"
3704 AC_SUBST(HAVE_GCC3_ABI)
3707 AC_CACHE_CHECK(for C++ \"explicit\" keyword,
3709 [AC_TRY_COMPILE(class X {
3710 public: explicit X(int i) : i_(i) {}
3714 ac_cv_cpp_explicit=yes,
3715 ac_cv_cpp_explicit=no)])
3716 if test "$ac_cv_cpp_explicit" = yes ; then
3717 AC_DEFINE(HAVE_CPP_EXPLICIT)
3720 AC_CACHE_CHECK(for C++ \"typename\" keyword,
3722 [AC_TRY_COMPILE(class param {
3724 typedef unsigned long num_type;
3727 template <class T> class tplt {
3729 typedef typename T::num_type t_num_type;
3730 t_num_type foo(typename T::num_type num) {
3736 ac_cv_cpp_typename=yes,
3737 ac_cv_cpp_typename=no)])
3738 if test "$ac_cv_cpp_typename" = yes ; then
3739 AC_DEFINE(HAVE_CPP_TYPENAME)
3742 dnl Check for support of modern template specialization syntax
3743 dnl Test code and requirement from scc@netscape.com.
3744 dnl Autoconf cut-and-paste job by waterson@netscape.com
3745 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
3746 ac_cv_cpp_modern_specialize_template_syntax,
3747 [AC_TRY_COMPILE(template <class T> struct X { int a; };
3749 template <> struct X<Y> { double a; };,
3752 ac_cv_cpp_modern_specialize_template_syntax=yes,
3753 ac_cv_cpp_modern_specialize_template_syntax=no)])
3754 if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
3755 AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
3759 dnl Some compilers support only full specialization, and some don't.
3760 AC_CACHE_CHECK(whether partial template specialization works,
3761 ac_cv_cpp_partial_specialization,
3762 [AC_TRY_COMPILE(template <class T> class Foo {};
3763 template <class T> class Foo<T*> {};,
3765 ac_cv_cpp_partial_specialization=yes,
3766 ac_cv_cpp_partial_specialization=no)])
3767 if test "$ac_cv_cpp_partial_specialization" = yes ; then
3768 AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
3771 dnl Some compilers have limited support for operators with templates;
3772 dnl specifically, it is necessary to define derived operators when a base
3773 dnl class's operator declaration should suffice.
3774 AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
3775 ac_cv_need_derived_template_operators,
3776 [AC_TRY_COMPILE([template <class T> class Base { };
3778 Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
3779 template <class T> class Derived : public Base<T> { };],
3780 [Derived<char> a, b;
3781 Base<char> c = a + b;
3783 ac_cv_need_derived_template_operators=no,
3784 ac_cv_need_derived_template_operators=yes)])
3785 if test "$ac_cv_need_derived_template_operators" = yes ; then
3786 AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
3790 dnl Some compilers have trouble detecting that a template class
3791 dnl that derives from another template is actually an instance
3792 dnl of the base class. This test checks for that.
3793 AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
3794 ac_cv_need_cpp_template_cast_to_base,
3795 [AC_TRY_COMPILE([template <class T> class Base { };
3796 template <class T> class Derived : public Base<T> { };
3797 template <class T> int foo(const Base<T>&) { return 0; }],
3798 [Derived<char> bar; return foo(bar);],
3799 ac_cv_need_cpp_template_cast_to_base=no,
3800 ac_cv_need_cpp_template_cast_to_base=yes)])
3801 if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
3802 AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
3805 dnl Some compilers have trouble resolving the ambiguity between two
3806 dnl functions whose arguments differ only by cv-qualifications.
3807 AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
3808 ac_cv_can_resolve_const_ambiguity,
3810 template <class T> class ptrClass {
3814 template <class T> T* a(ptrClass<T> *arg) {
3819 const T* a(const ptrClass<T> *arg) {
3825 ac_cv_can_resolve_const_ambiguity=yes,
3826 ac_cv_can_resolve_const_ambiguity=no)])
3827 if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
3828 AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
3832 dnl We don't do exceptions on unix. The only reason this used to be here
3833 dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses
3834 dnl exceptions. But, we turn exceptions off by default and this test breaks.
3835 dnl So im commenting this out until someone writes some artificial
3836 dnl intelligence to detect not only if the compiler has exceptions, but if
3837 dnl they are enabled as well.
3839 dnl AC_CACHE_CHECK(for C++ \"exceptions\",
3840 dnl ac_cv_cpp_exceptions,
3841 dnl [AC_TRY_COMPILE(class X { public: X() {} };
3842 dnl static void F() { throw X(); },
3843 dnl try { F(); } catch(X & e) { },
3844 dnl ac_cv_cpp_exceptions=yes,
3845 dnl ac_cv_cpp_exceptions=no)])
3846 dnl if test $ac_cv_cpp_exceptions = yes ; then
3847 dnl AC_DEFINE(HAVE_CPP_EXCEPTIONS)
3850 dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
3851 dnl supports it well enough to allow us to use it to change access, but not
3852 dnl to resolve ambiguity. The next two tests determine how well the |using|
3853 dnl keyword is supported.
3855 dnl Check to see if we can change access with |using|. Test both a
3856 dnl legal and an illegal example.
3857 AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
3858 ac_cv_cpp_access_changing_using2,
3860 class A { protected: int foo() { return 0; } };
3861 class B : public A { public: using A::foo; };,
3862 B b; return b.foo();,
3864 class A { public: int foo() { return 1; } };
3865 class B : public A { private: using A::foo; };,
3866 B b; return b.foo();,
3867 ac_cv_cpp_access_changing_using2=no,
3868 ac_cv_cpp_access_changing_using2=yes)],
3869 ac_cv_cpp_access_changing_using2=no)])
3870 if test "$ac_cv_cpp_access_changing_using2" = yes ; then
3871 AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
3874 dnl Check to see if we can resolve ambiguity with |using|.
3875 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3876 ac_cv_cpp_ambiguity_resolving_using,
3877 [AC_TRY_COMPILE(class X {
3878 public: int go(const X&) {return 3;}
3879 int jo(const X&) {return 3;}
3881 class Y : public X {
3882 public: int go(int) {return 2;}
3883 int jo(int) {return 2;}
3885 private: using X::go;
3888 ac_cv_cpp_ambiguity_resolving_using=yes,
3889 ac_cv_cpp_ambiguity_resolving_using=no)])
3890 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3891 AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3894 dnl Check to see if the |std| namespace is supported. If so, we'll want
3895 dnl to qualify any standard library calls with "std::" to ensure that
3896 dnl those functions can be resolved.
3897 AC_CACHE_CHECK(for \"std::\" namespace,
3898 ac_cv_cpp_namespace_std,
3899 [AC_TRY_COMPILE([#include <algorithm>],
3900 [return std::min(0, 1);],
3901 ac_cv_cpp_namespace_std=yes,
3902 ac_cv_cpp_namespace_std=no)])
3903 if test "$ac_cv_cpp_namespace_std" = yes ; then
3904 AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
3907 dnl Older compilers are overly ambitious with respect to using the standard
3908 dnl template library's |operator!=()| when |operator==()| is defined. In
3909 dnl which case, defining |operator!=()| in addition to |operator==()| causes
3910 dnl ambiguity at compile-time. This test checks for that case.
3911 AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
3912 ac_cv_cpp_unambiguous_std_notequal,
3913 [AC_TRY_COMPILE([#include <algorithm>
3915 int operator==(const T1&, const T1&) { return 0; }
3916 int operator!=(const T1&, const T1&) { return 0; }],
3917 [T1 a,b; return a != b;],
3918 ac_cv_cpp_unambiguous_std_notequal=unambiguous,
3919 ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
3920 if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
3921 AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
3925 AC_CACHE_CHECK(for C++ reinterpret_cast,
3926 ac_cv_cpp_reinterpret_cast,
3927 [AC_TRY_COMPILE(struct X { int i; };
3928 struct Y { int i; };,
3929 X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
3930 ac_cv_cpp_reinterpret_cast=yes,
3931 ac_cv_cpp_reinterpret_cast=no)])
3932 if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
3933 AC_DEFINE(HAVE_CPP_NEW_CASTS)
3936 dnl See if a dynamic_cast to void* gives the most derived object.
3937 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
3938 ac_cv_cpp_dynamic_cast_void_ptr,
3939 [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
3940 class Y { int j; public: virtual ~Y() { } };
3941 class Z : public X, public Y { int k; };
3947 return !((((void*)&mdo != (void*)subx) &&
3948 ((void*)&mdo == dynamic_cast<void*>(subx))) ||
3949 (((void*)&mdo != (void*)suby) &&
3950 ((void*)&mdo == dynamic_cast<void*>(suby))));
3952 ac_cv_cpp_dynamic_cast_void_ptr=yes,
3953 ac_cv_cpp_dynamic_cast_void_ptr=no,
3954 ac_cv_cpp_dynamic_cast_void_ptr=no)])
3955 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
3956 AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
3960 dnl note that this one is reversed - if the test fails, then
3961 dnl we require implementations of unused virtual methods. Which
3962 dnl really blows because it means we'll have useless vtable
3964 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
3965 ac_cv_cpp_unused_required,
3966 [AC_TRY_LINK(class X {private: virtual void never_called();};,
3968 ac_cv_cpp_unused_required=no,
3969 ac_cv_cpp_unused_required=yes)])
3970 if test "$ac_cv_cpp_unused_required" = yes ; then
3971 AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
3975 dnl Some compilers have trouble comparing a constant reference to a templatized
3976 dnl class to zero, and require an explicit operator==() to be defined that takes
3977 dnl an int. This test separates the strong from the weak.
3979 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
3980 ac_cv_trouble_comparing_to_zero,
3981 [AC_TRY_COMPILE([#include <algorithm>
3982 template <class T> class Foo {};
3984 template <class T> int operator==(const T2*, const T&) { return 0; }
3985 template <class T> int operator!=(const T2*, const T&) { return 0; }],
3986 [Foo<int> f; return (0 != f);],
3987 ac_cv_trouble_comparing_to_zero=no,
3988 ac_cv_trouble_comparing_to_zero=yes)])
3989 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
3990 AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
3995 dnl End of C++ language/feature checks
3998 dnl ========================================================
3999 dnl = Internationalization checks
4000 dnl ========================================================
4002 dnl Internationalization and Locale support is different
4003 dnl on various UNIX platforms. Checks for specific i18n
4004 dnl features go here.
4006 dnl check for LC_MESSAGES
4007 AC_CACHE_CHECK(for LC_MESSAGES,
4008 ac_cv_i18n_lc_messages,
4009 [AC_TRY_COMPILE([#include <locale.h>],
4010 [int category = LC_MESSAGES;],
4011 ac_cv_i18n_lc_messages=yes,
4012 ac_cv_i18n_lc_messages=no)])
4013 if test "$ac_cv_i18n_lc_messages" = yes; then
4014 AC_DEFINE(HAVE_I18N_LC_MESSAGES)
4017 fi # SKIP_COMPILER_CHECKS
4020 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
4021 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
4024 dnl Mozilla specific options
4025 dnl ========================================================
4026 dnl The macros used for command line options
4027 dnl are defined in build/autoconf/altoptions.m4.
4030 dnl ========================================================
4032 dnl = Check for external package dependencies
4034 dnl ========================================================
4035 MOZ_ARG_HEADER(External Packages)
4039 MOZ_ARG_WITH_STRING(libxul-sdk,
4040 [ --with-libxul-sdk=PFX Use the libXUL SDK at <PFX>],
4041 LIBXUL_SDK_DIR=$withval)
4043 if test "$LIBXUL_SDK_DIR" = "yes"; then
4044 AC_MSG_ERROR([--with-libxul-sdk must specify a path])
4045 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
4046 LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
4048 if test ! -f "$LIBXUL_SDK/sdk/include/xpcom-config.h"; then
4049 AC_MSG_ERROR([$LIBXUL_SDK/sdk/include/xpcom-config.h doesn't exist])
4054 AC_SUBST(LIBXUL_SDK)
4056 if test -n "$LIBXUL_SDK"; then
4057 LIBXUL_DIST="$LIBXUL_SDK"
4059 LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
4061 AC_SUBST(LIBXUL_DIST)
4063 dnl ========================================================
4064 dnl = If NSPR was not detected in the system,
4065 dnl = use the one in the source tree (mozilla/nsprpub)
4066 dnl ========================================================
4067 MOZ_ARG_WITH_BOOL(system-nspr,
4068 [ --with-system-nspr Use system installed NSPR],
4069 _USE_SYSTEM_NSPR=1 )
4071 if test -n "$_USE_SYSTEM_NSPR"; then
4072 AM_PATH_NSPR(4.7.0, [MOZ_NATIVE_NSPR=1], [MOZ_NATIVE_NSPR=])
4075 if test -n "$MOZ_NATIVE_NSPR"; then
4076 _SAVE_CFLAGS=$CFLAGS
4077 CFLAGS="$CFLAGS $NSPR_CFLAGS"
4078 AC_TRY_COMPILE([#include "prlog.h"],
4079 [#ifndef PR_STATIC_ASSERT
4080 #error PR_STATIC_ASSERT not defined
4082 [MOZ_NATIVE_NSPR=1],
4083 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT]))
4084 CFLAGS=$_SAVE_CFLAGS
4086 NSPR_CFLAGS='`$(DEPTH)/nsprpub/config/nspr-config --prefix='${LIBXUL_DIST}' --includedir='${LIBXUL_DIST}'/include/nspr --cflags`'
4087 # explicitly set libs for Visual Age C++ for OS/2
4088 if test "$OS_ARCH" = "OS2" -a "$VACPP" = "yes"; then
4089 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}"
4090 elif test "$OS_ARCH" = "WINCE"; then
4091 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4092 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4093 elif test "$OS_ARCH" = "WINNT"; then
4094 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4095 if test -n "$GNU_CC"; then
4096 NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
4098 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4101 NSPR_LIBS='`$(DEPTH)/nsprpub/config/nspr-config --prefix='${LIBXUL_DIST}' --libdir='${LIBXUL_DIST}'/lib --libs`'
4105 dnl ========================================================
4106 dnl = If NSS was not detected in the system,
4107 dnl = use the one in the source tree (mozilla/security/nss)
4108 dnl ========================================================
4110 MOZ_ARG_WITH_BOOL(system-nss,
4111 [ --with-system-nss Use system installed NSS],
4114 if test -n "$_USE_SYSTEM_NSS"; then
4115 AM_PATH_NSS(3.12.0, [MOZ_NATIVE_NSS=1], [MOZ_NATIVE_NSS=])
4118 if test -n "$MOZ_NATIVE_NSS"; then
4119 NSS_LIBS="$NSS_LIBS -lcrmf"
4121 NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4123 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4124 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4125 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4126 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4127 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX) \
4128 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)softokn$NSS_VERSION\$(DLL_SUFFIX)"
4130 if test -z "$GNU_CC" && test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "WINCE" -o "$OS_ARCH" = "OS2"; then
4132 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4133 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4134 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4135 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4136 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4137 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)softokn$NSS_VERSION.\$(IMPORT_LIB_SUFFIX)"
4139 NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION -lsoftokn$NSS_VERSION"
4143 if test -z "$SKIP_LIBRARY_CHECKS"; then
4144 dnl system JPEG support
4145 dnl ========================================================
4146 MOZ_ARG_WITH_STRING(system-jpeg,
4147 [ --with-system-jpeg[=PFX]
4148 Use system libjpeg [installed at prefix PFX]],
4151 _SAVE_CFLAGS=$CFLAGS
4152 _SAVE_LDFLAGS=$LDFLAGS
4154 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4155 CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4156 LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4158 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4161 AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS)
4164 if test "$SYSTEM_JPEG" = 1; then
4165 LIBS="$JPEG_LIBS $LIBS"
4166 AC_TRY_COMPILE([ #include <stdio.h>
4167 #include <sys/types.h>
4168 #include <jpeglib.h> ],
4169 [ #if JPEG_LIB_VERSION < $MOZJPEG
4170 #error "Insufficient JPEG library version ($MOZJPEG required)."
4173 [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=])
4175 CFLAGS=$_SAVE_CFLAGS
4176 LDFLAGS=$_SAVE_LDFLAGS
4179 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$SYSTEM_JPEG" = 1; then
4180 JPEG_CFLAGS="-I${JPEG_DIR}/include"
4181 JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
4184 dnl system ZLIB support
4185 dnl ========================================================
4186 MOZ_ARG_WITH_STRING(system-zlib,
4187 [ --with-system-zlib[=PFX]
4188 Use system libz [installed at prefix PFX]],
4191 _SAVE_CFLAGS=$CFLAGS
4192 _SAVE_LDFLAGS=$LDFLAGS
4194 if test -n "${ZLIB_DIR}" -a "${ZLIB_DIR}" != "yes"; then
4195 CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
4196 LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
4198 if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
4201 AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"],
4202 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
4204 if test "$SYSTEM_ZLIB" = 1; then
4205 LIBS="$ZLIB_LIBS $LIBS"
4206 AC_TRY_COMPILE([ #include <stdio.h>
4208 #include <zlib.h> ],
4209 [ #if ZLIB_VERNUM < $MOZZLIB
4210 #error "Insufficient zlib version ($MOZZLIB required)."
4213 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=])
4215 CFLAGS=$_SAVE_CFLAGS
4216 LDFLAGS=$_SAVE_LDFLAGS
4219 if test "${ZLIB_DIR}" -a -d "${ZLIB_DIR}" -a "$SYSTEM_ZLIB" = 1; then
4220 ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
4221 ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
4224 dnl system BZIP2 Support
4225 dnl ========================================================
4226 MOZ_ARG_WITH_STRING(system-bz2,
4227 [ --with-system-bz2[=PFX]
4228 Use system libbz2 [installed at prefix PFX]],
4231 _SAVE_CFLAGS=$CFLAGS
4232 _SAVE_LDFLAGS=$LDFLAGS
4234 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4235 CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4236 LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4238 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4241 AC_CHECK_LIB(bz2, BZ2_bzread, [SYSTEM_BZ2=1 BZ2_LIBS="-lbz2"],
4242 [SYSTEM_BZ2= BZ2_CFLAGS= BZ2_LIBS=], $BZ2_LIBS)
4244 CFLAGS=$_SAVE_CFLAGS
4245 LDFLAGS=$_SAVE_LDFLAGS
4248 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$SYSTEM_BZ2" = 1; then
4249 BZ2_CFLAGS="-I${BZ2_DIR}/include"
4250 BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
4253 dnl system PNG Support
4254 dnl ========================================================
4255 MOZ_ARG_WITH_STRING(system-png,
4256 [ --with-system-png[=PFX]
4257 Use system libpng [installed at prefix PFX]],
4260 _SAVE_CFLAGS=$CFLAGS
4261 _SAVE_LDFLAGS=$LDFLAGS
4263 CFLAGS="$ZLIB_CFLAGS $CFLAGS"
4264 LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
4265 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4266 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4267 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4269 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4272 _SAVE_PNG_LIBS=$PNG_LIBS
4273 AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"],
4274 AC_MSG_ERROR([--with-system-png requested but no working libpng found]),
4276 AC_CHECK_LIB(png, png_get_acTL, ,
4277 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]),
4280 if test "$SYSTEM_PNG" = 1; then
4281 LIBS="$PNG_LIBS $LIBS"
4282 AC_TRY_COMPILE([ #include <stdio.h>
4283 #include <sys/types.h>
4285 [ #if PNG_LIBPNG_VER < $MOZPNG
4286 #error "Insufficient libpng version ($MOZPNG required)."
4288 #ifndef PNG_UINT_31_MAX
4289 #error "Insufficient libpng version."
4292 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4294 CFLAGS=$_SAVE_CFLAGS
4295 LDFLAGS=$_SAVE_LDFLAGS
4298 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
4299 PNG_CFLAGS="-I${PNG_DIR}/include"
4300 PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
4303 fi # SKIP_LIBRARY_CHECKS
4305 dnl system HunSpell Support
4306 dnl ========================================================
4307 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4308 [ --enable-system-hunspell Use system hunspell (located with pkgconfig)],
4311 if test -n "$SYSTEM_HUNSPELL"; then
4312 PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4315 AC_SUBST(SYSTEM_HUNSPELL)
4317 dnl check whether to enable glitz
4318 dnl ========================================================
4319 MOZ_ARG_ENABLE_BOOL(glitz,
4320 [ --enable-glitz Enable Glitz for use with Cairo],
4323 if test "$MOZ_ENABLE_GLITZ"; then
4324 AC_DEFINE(MOZ_ENABLE_GLITZ)
4327 dnl ========================================================
4328 dnl Java SDK support
4329 dnl ========================================================
4331 MOZ_ARG_WITH_STRING(java-include-path,
4332 [ --with-java-include-path=dir Location of Java SDK headers],
4333 JAVA_INCLUDE_PATH=$withval)
4336 MOZ_ARG_WITH_STRING(java-bin-path,
4337 [ --with-java-bin-path=dir Location of Java binaries (java, javac, jar)],
4338 JAVA_BIN_PATH=$withval)
4340 dnl ========================================================
4341 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4342 dnl their usage and use them in spidermonkey.
4343 dnl ========================================================
4344 MOZ_ARG_WITH_BOOL(arm-kuser,
4345 [ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4348 if test -n "$USE_ARM_KUSER"; then
4349 AC_DEFINE(USE_ARM_KUSER)
4352 dnl ========================================================
4356 dnl ========================================================
4358 MOZ_ARG_HEADER(Application)
4362 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4363 MOZ_BRANDING_DIRECTORY=
4364 MOZ_DBGRINFO_MODULES=
4366 MOZ_EXTENSIONS_ALL=" wallet p3p venkman inspector irc typeaheadfind gnomevfs sroaming datetime finger cview layout-debug tasks sql xforms schema-validation reporter"
4368 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg bmp xbm icon"
4369 MOZ_IMG_ENCODERS_DEFAULT="png jpeg"
4379 MOZ_AUTH_EXTENSION=1
4380 MOZ_NO_ACTIVEX_SUPPORT=1
4381 MOZ_NO_INSPECTOR_APIS=
4382 MOZ_NO_XPCOM_OBSOLETE=
4389 MOZ_PLAINTEXT_EDITOR_ONLY=
4391 MOZ_PREF_EXTENSIONS=1
4392 MOZ_PROFILELOCKING=1
4393 MOZ_PROFILESHARING=1
4395 MOZ_PYTHON_EXTENSIONS="xpcom dom"
4397 MOZ_PYTHON_DEBUG_SUFFIX=
4398 MOZ_PYTHON_DLL_SUFFIX=
4399 MOZ_PYTHON_INCLUDES=
4403 MOZ_PYTHON_VER_DOTTED=
4409 MOZ_STATIC_MAIL_BUILD=
4414 MOZ_UNIVERSALCHARDET=1
4416 MOZ_USE_NATIVE_UCONV=
4418 MOZ_XPFE_COMPONENTS=1
4420 MOZ_XSLT_STANDALONE=
4428 NECKO_PROTOCOLS_DEFAULT="about data file ftp gopher http res viewsource"
4429 NECKO_SMALL_BUFFERS=
4431 XPC_IDISPATCH_SUPPORT=
4434 case "$target_os" in
4443 case "$target_os" in
4444 msvc*|mks*|cygwin*|mingw*)
4445 if test -z "$GNU_CC"; then
4446 XPC_IDISPATCH_SUPPORT=1
4447 MOZ_NO_ACTIVEX_SUPPORT=
4448 MOZ_ACTIVEX_SCRIPTING_SUPPORT=1
4453 MOZ_ARG_ENABLE_STRING(application,
4454 [ --enable-application=APP
4458 content/xslt (Standalone Transformiix XSLT)
4459 netwerk (Standalone Necko)
4460 tools/update-packaging (AUS-related packaging tools)
4461 standalone (use this for standalone
4462 xpcom/xpconnect or to manually drive a build)],
4463 [ MOZ_BUILD_APP=$enableval ] )
4465 MOZ_EMBEDDING_PROFILE=default
4466 MOZ_ARG_WITH_STRING(embedding-profile,
4467 [ --with-embedding-profile=default|basic|minimal
4468 see http://wiki.mozilla.org/Gecko:Small_Device_Support],
4469 [ MOZ_EMBEDDING_PROFILE=$withval ])
4471 case "$MOZ_EMBEDDING_PROFILE" in
4473 MOZ_EMBEDDING_LEVEL_DEFAULT=1
4474 MOZ_EMBEDDING_LEVEL_BASIC=1
4475 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4476 AC_DEFINE(MOZ_EMBEDDING_LEVEL_DEFAULT)
4477 AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4478 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4482 MOZ_EMBEDDING_LEVEL_DEFAULT=
4483 MOZ_EMBEDDING_LEVEL_BASIC=1
4484 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4485 AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4486 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4488 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4490 MOZ_ENABLE_POSTSCRIPT=
4491 MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4492 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4493 MOZ_IMG_ENCODERS_DEFAULT=
4499 MOZ_NO_ACTIVEX_SUPPORT=1
4500 MOZ_NO_INSPECTOR_APIS=1
4501 MOZ_NO_XPCOM_OBSOLETE=1
4504 MOZ_PLAINTEXT_EDITOR_ONLY=1
4506 MOZ_PREF_EXTENSIONS=
4511 MOZ_UNIVERSALCHARDET=
4513 MOZ_USE_NATIVE_UCONV=
4515 MOZ_XPFE_COMPONENTS=
4520 NECKO_PROTOCOLS_DEFAULT="about data http file res"
4521 NECKO_SMALL_BUFFERS=1
4522 NS_DISABLE_LOGGING=1
4528 MOZ_EMBEDDING_LEVEL_DEFAULT=
4529 MOZ_EMBEDDING_LEVEL_BASIC=
4530 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4531 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4533 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4535 MOZ_ENABLE_POSTSCRIPT=
4536 MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4537 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4538 MOZ_IMG_ENCODERS_DEFAULT=
4544 MOZ_NO_ACTIVEX_SUPPORT=1
4545 MOZ_NO_INSPECTOR_APIS=1
4546 MOZ_NO_XPCOM_OBSOLETE=1
4549 MOZ_PLAINTEXT_EDITOR_ONLY=1
4551 MOZ_PREF_EXTENSIONS=
4558 MOZ_UNIVERSALCHARDET=
4560 MOZ_USE_NATIVE_UCONV=1
4562 MOZ_XPFE_COMPONENTS=
4569 NECKO_PROTOCOLS_DEFAULT="about data http file res"
4570 NECKO_SMALL_BUFFERS=1
4571 NS_DISABLE_LOGGING=1
4577 AC_MSG_ERROR([Unrecognized value: --with-embedding-profile=$MOZ_EMBEDDING_PROFILE])
4581 AC_SUBST(MOZ_EMBEDDING_LEVEL_DEFAULT)
4582 AC_SUBST(MOZ_EMBEDDING_LEVEL_BASIC)
4583 AC_SUBST(MOZ_EMBEDDING_LEVEL_MINIMAL)
4585 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
4586 [ --with-xulrunner-stub-name=appname Create the xulrunner stub with the given name],
4587 XULRUNNER_STUB_NAME=$withval)
4589 if test -z "$XULRUNNER_STUB_NAME"; then
4590 case "$target_os" in
4592 XULRUNNER_STUB_NAME=xulrunner
4595 XULRUNNER_STUB_NAME=xulrunner-stub
4598 AC_SUBST(XULRUNNER_STUB_NAME)
4600 if test -z "$MOZ_BUILD_APP"; then
4601 AC_MSG_ERROR([--enable-application=APP was not specified and is required.])
4603 # We have a valid application only if it has a build.mk file in its top
4605 if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
4606 AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4610 # Allow the application to influence configure with a confvars.sh script.
4612 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4613 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4614 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4615 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4620 # Now is a good time to test for logic errors, define mismatches, etc.
4621 case "$MOZ_BUILD_APP" in
4623 if test "$LIBXUL_SDK"; then
4624 AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4628 # Fix this case for folks who forget. Warn them.
4629 if test -n "$LIBXUL_SDK" -a -z "$MOZ_XUL_APP"; then
4630 AC_MSG_WARN([Setting MOZ_XUL_APP since LIBXUL_SDK was set. Add to confvars.sh!])
4636 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4637 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4639 case "$MOZ_BUILD_APP" in
4641 AC_DEFINE(MOZ_PHOENIX)
4645 AC_DEFINE(MOZ_XULRUNNER)
4653 MOZ_APP_NAME=mozilla
4654 MOZ_APP_DISPLAYNAME=Mozilla
4655 MOZ_APP_VERSION=$MOZILLA_VERSION
4660 if test -z "$MOZ_XUL_APP"; then
4661 AC_MSG_ERROR([builds with unsetting MOZ_XUL_APP in confvars.sh are not supported.])
4664 AC_SUBST(MOZ_BUILD_APP)
4665 AC_SUBST(MOZ_XUL_APP)
4666 AC_SUBST(MOZ_PHOENIX)
4667 AC_SUBST(MOZ_XULRUNNER)
4669 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4671 if test "$MOZ_XUL_APP"; then
4673 AC_DEFINE(MOZ_XUL_APP)
4676 dnl ========================================================
4678 dnl = Toolkit Options
4680 dnl ========================================================
4681 MOZ_ARG_HEADER(Toolkit Options)
4683 dnl ========================================================
4684 dnl = Select the default toolkit
4685 dnl ========================================================
4686 MOZ_ARG_ENABLE_STRING(default-toolkit,
4687 [ --enable-default-toolkit=TK
4688 Select default toolkit
4689 Platform specific defaults:
4691 Mac OS X - cairo-cocoa
4692 Neutrino/QNX - photon
4694 Win32 - cairo-windows
4696 Gtk2 with DirectFB - cairo-gtk2-dfb
4699 [ _DEFAULT_TOOLKIT=$enableval ],
4700 [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4702 if test "$_DEFAULT_TOOLKIT" = "photon" \
4703 -o "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4704 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4705 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-dfb" \
4706 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
4707 -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
4708 -o "$_DEFAULT_TOOLKIT" = "cairo-beos" \
4709 -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
4710 -o "$_DEFAULT_TOOLKIT" = "cairo-mac" \
4711 -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa"
4713 dnl nglayout only supports building with one toolkit,
4714 dnl so ignore everything after the first comma (",").
4715 MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4717 AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
4720 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_TOOLKIT,"$MOZ_WIDGET_TOOLKIT")
4722 dnl ========================================================
4723 dnl = Enable the toolkit as needed =
4724 dnl ========================================================
4726 case "$MOZ_WIDGET_TOOLKIT" in
4729 AC_DEFINE(MOZ_WIDGET_PHOTON)
4733 MOZ_WIDGET_TOOLKIT=windows
4734 MOZ_GFX_TOOLKIT=cairo
4737 cairo-gtk2|cairo-gtk2-x11)
4738 MOZ_WIDGET_TOOLKIT=gtk2
4739 MOZ_GFX_TOOLKIT=cairo
4741 MOZ_ENABLE_XREMOTE=1
4746 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4747 TK_LIBS='$(MOZ_GTK2_LIBS)'
4748 AC_DEFINE(MOZ_WIDGET_GTK2)
4752 MOZ_WIDGET_TOOLKIT=gtk2
4753 MOZ_GFX_TOOLKIT=cairo
4759 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4760 TK_LIBS='$(MOZ_GTK2_LIBS)'
4761 AC_DEFINE(MOZ_WIDGET_GTK2)
4762 if test "$no_x" != "yes"; then
4763 AC_MSG_WARN([Disabling X when DirectFB is specified.])
4769 MOZ_WIDGET_TOOLKIT=qt
4770 MOZ_GFX_TOOLKIT=cairo
4772 MOZ_ENABLE_XREMOTE=1
4777 TK_CFLAGS='$(MOZ_QT_CFLAGS)'
4778 TK_LIBS='$(MOZ_QT_LIBS)'
4779 AC_DEFINE(MOZ_WIDGET_QT)
4783 MOZ_WIDGET_TOOLKIT=beos
4784 MOZ_GFX_TOOLKIT=cairo
4785 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4786 TK_LIBS='$(MOZ_CAIRO_LIBS)'
4790 MOZ_WIDGET_TOOLKIT=os2
4791 MOZ_GFX_TOOLKIT=cairo
4792 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4793 TK_LIBS='$(MOZ_CAIRO_LIBS)'
4796 cairo-mac|cairo-cocoa)
4797 if test "$MOZ_WIDGET_TOOLKIT" = "cairo-cocoa"; then
4798 MOZ_WIDGET_TOOLKIT=cocoa
4799 AC_DEFINE(MOZ_WIDGET_COCOA)
4802 MOZ_WIDGET_TOOLKIT=mac
4804 MOZ_GFX_TOOLKIT=cairo
4805 MOZ_USER_DIR="Mozilla"
4806 AC_DEFINE(XP_MACOSX)
4807 AC_DEFINE(TARGET_CARBON)
4808 AC_DEFINE(TARGET_API_MAC_CARBON)
4809 TK_LIBS='-framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook'
4810 TK_CFLAGS="-I${MACOS_SDK_DIR}/Developer/Headers/FlatCarbon"
4811 CFLAGS="$CFLAGS $TK_CFLAGS"
4812 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4816 if test "$MOZ_ENABLE_XREMOTE"; then
4817 AC_DEFINE(MOZ_ENABLE_XREMOTE)
4820 if test "$COMPILE_ENVIRONMENT"; then
4821 if test "$MOZ_ENABLE_GTK2"; then
4822 if test "$MOZ_X11"; then
4823 GDK_PACKAGES=gdk-x11-2.0
4824 elif test "$MOZ_DFB"; then
4825 PKG_CHECK_MODULES(MOZ_DFB, directfb >= 1.1.0)
4826 GDK_PACKAGES=directfb
4829 PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4832 fi # COMPILE_ENVIRONMENT
4834 AC_SUBST(MOZ_DEFAULT_TOOLKIT)
4836 dnl ========================================================
4837 dnl = startup-notification support module
4838 dnl ========================================================
4840 if test "$MOZ_ENABLE_GTK2"
4842 MOZ_ENABLE_STARTUP_NOTIFICATION=
4844 MOZ_ARG_ENABLE_BOOL(startup-notification,
4845 [ --enable-startup-notification Enable startup-notification support (default: disabled) ],
4846 MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4847 MOZ_ENABLE_STARTUP_NOTIFICATION=)
4848 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4850 PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4851 libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4852 [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4853 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4855 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4857 MOZ_ENABLE_STARTUP_NOTIFICATION=
4861 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4862 AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4865 TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4867 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4868 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4869 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4871 dnl ========================================================
4873 dnl ========================================================
4874 if test "$MOZ_ENABLE_QT"
4876 PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtUiTools QtCore)
4877 AC_SUBST(MOZ_QT_CFLAGS)
4878 AC_SUBST(MOZ_QT_LIBS)
4880 MOZ_ARG_WITH_STRING(qtdir,
4881 [ --with-qtdir=\$dir Specify Qt directory ],
4884 if test -z "$QTDIR"; then
4887 QTINCDIR="/include/qt"
4888 if test ! -d "$QTDIR$QTINCDIR"; then
4889 QTINCDIR="/include/X11/qt"
4891 if test ! -d "$QTDIR$QTINCDIR"; then
4895 if test -x "$QTDIR/bin/moc-qt4"; then
4896 HOST_MOC="$QTDIR/bin/moc-qt4"
4898 if test -x "$QTDIR/bin/moc"; then
4899 HOST_MOC="$QTDIR/bin/moc"
4901 AC_CHECK_PROGS(HOST_MOC, moc, "")
4904 if test -z "$HOST_MOC"; then
4905 AC_MSG_ERROR([no acceptable moc preprocessor found])
4910 AC_SUBST(GTK_CONFIG)
4914 AC_SUBST(MOZ_ENABLE_GTK2)
4915 AC_SUBST(MOZ_ENABLE_PHOTON)
4916 AC_SUBST(MOZ_ENABLE_COCOA)
4917 AC_SUBST(MOZ_ENABLE_GLITZ)
4918 AC_SUBST(MOZ_ENABLE_QT)
4919 AC_SUBST(MOZ_ENABLE_XREMOTE)
4920 AC_SUBST(MOZ_GTK2_CFLAGS)
4921 AC_SUBST(MOZ_GTK2_LIBS)
4922 AC_SUBST(MOZ_QT_CFLAGS)
4923 AC_SUBST(MOZ_QT_LIBS)
4930 dnl ========================================================
4932 dnl = Components & Features
4934 dnl ========================================================
4935 MOZ_ARG_HEADER(Components and Features)
4937 dnl ========================================================
4939 dnl ========================================================
4940 MOZ_ARG_ENABLE_STRING(ui-locale,
4941 [ --enable-ui-locale=ab-CD
4942 Select the user interface locale (default: en-US)],
4943 MOZ_UI_LOCALE=$enableval )
4944 AC_SUBST(MOZ_UI_LOCALE)
4946 dnl ========================================================
4947 dnl = Trademarked Branding
4948 dnl ========================================================
4949 MOZ_ARG_ENABLE_BOOL(official-branding,
4950 [ --enable-official-branding Enable Official mozilla.org Branding
4951 Do not distribute builds with
4952 --enable-official-branding unless you have
4953 permission to use trademarks per
4954 http://www.mozilla.org/foundation/trademarks/ .],
4955 [case "$MOZ_BUILD_APP" in
4957 MOZ_BRANDING_DIRECTORY=other-licenses/branding/firefox
4958 MOZ_APP_DISPLAYNAME=Firefox
4962 AC_MSG_ERROR([Official branding is only available for Firefox.])
4966 MOZ_ARG_WITH_STRING(branding,
4967 [ --with-branding=dir Use branding from the specified directory.],
4968 MOZ_BRANDING_DIRECTORY=$withval)
4970 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4971 if test -z "$REAL_BRANDING_DIRECTORY"; then
4972 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
4975 if test -f "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"; then
4976 . "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"
4979 AC_SUBST(MOZ_BRANDING_DIRECTORY)
4981 dnl ========================================================
4982 dnl = Distribution ID
4983 dnl ========================================================
4984 MOZ_ARG_WITH_STRING(distribution-id,
4985 [ --with-distribution-id=ID Set distribution-specific id (default=org.mozilla)],
4986 [ val=`echo $withval`
4987 MOZ_DISTRIBUTION_ID="$val"])
4989 if test -z "$MOZ_DISTRIBUTION_ID"; then
4990 MOZ_DISTRIBUTION_ID="org.mozilla"
4993 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
4994 AC_SUBST(MOZ_DISTRIBUTION_ID)
4997 dnl ========================================================
4998 dnl complex text support off by default
4999 dnl ========================================================
5001 MOZ_ARG_DISABLE_BOOL(pango,
5002 [ --disable-pango Disable usage of Pango ],
5007 dnl ========================================================
5009 dnl ========================================================
5010 if test "$MOZ_ENABLE_GTK2"
5014 PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
5016 if test "$MOZ_PANGO"
5018 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
5019 AC_SUBST(MOZ_PANGO_CFLAGS)
5020 AC_SUBST(MOZ_PANGO_LIBS)
5021 AC_DEFINE(MOZ_PANGO)
5023 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
5024 AC_SUBST(MOZ_PANGO_CFLAGS)
5025 AC_SUBST(MOZ_PANGO_LIBS)
5027 PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0 fontconfig)
5028 AC_SUBST(FT2_CFLAGS)
5033 dnl ========================================================
5034 dnl = PostScript print module
5035 dnl ========================================================
5036 MOZ_ARG_DISABLE_BOOL(postscript,
5037 [ --disable-postscript Disable PostScript printing support ],
5038 MOZ_ENABLE_POSTSCRIPT=,
5039 MOZ_ENABLE_POSTSCRIPT=1 )
5041 dnl ========================================================
5042 dnl = GnomeVFS support module
5043 dnl ========================================================
5047 dnl build the gnomevfs extension by default only when the
5048 dnl GTK2 toolkit is in use.
5049 if test "$MOZ_ENABLE_GTK2"
5051 MOZ_ENABLE_GNOMEVFS=1
5053 MOZ_ENABLE_LIBGNOME=1
5056 MOZ_ARG_DISABLE_BOOL(gnomevfs,
5057 [ --disable-gnomevfs Disable GnomeVFS support ],
5058 MOZ_ENABLE_GNOMEVFS=,
5059 MOZ_ENABLE_GNOMEVFS=force)
5061 if test "$MOZ_ENABLE_GNOMEVFS"
5063 PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
5064 MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
5065 MOZ_ENABLE_GNOMEVFS=1
5067 if test "$MOZ_ENABLE_GNOMEVFS" = "force"
5069 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
5071 MOZ_ENABLE_GNOMEVFS=
5075 AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
5076 AC_SUBST(MOZ_GNOMEVFS_LIBS)
5078 if test "$MOZ_ENABLE_GCONF"
5080 PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION,[
5081 MOZ_GCONF_LIBS=`echo $MOZ_GCONF_LIBS | sed 's/-llinc\>//'`
5088 if test "$MOZ_ENABLE_GCONF"; then
5089 AC_DEFINE(MOZ_ENABLE_GCONF)
5092 AC_SUBST(MOZ_ENABLE_GCONF)
5093 AC_SUBST(MOZ_GCONF_CFLAGS)
5094 AC_SUBST(MOZ_GCONF_LIBS)
5096 if test "$MOZ_ENABLE_LIBGNOME"
5098 PKG_CHECK_MODULES(MOZ_LIBGNOME, libgnome-2.0 >= $LIBGNOME_VERSION,[
5099 MOZ_LIBGNOME_LIBS=`echo $MOZ_LIBGNOME_LIBS | sed 's/-llinc\>//'`
5100 MOZ_ENABLE_LIBGNOME=1
5102 MOZ_ENABLE_LIBGNOME=
5106 AC_SUBST(MOZ_LIBGNOME_CFLAGS)
5107 AC_SUBST(MOZ_LIBGNOME_LIBS)
5109 # The GNOME component is built if gtk2, gconf, gnome-vfs, and libgnome
5110 # are all available.
5112 if test "$MOZ_ENABLE_GTK2" -a "$MOZ_ENABLE_GCONF" -a \
5113 "$MOZ_ENABLE_GNOMEVFS" -a "$MOZ_ENABLE_LIBGNOME"; then
5114 MOZ_ENABLE_GNOME_COMPONENT=1
5116 MOZ_ENABLE_GNOME_COMPONENT=
5119 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5122 dnl ========================================================
5123 dnl = libgnomeui support module
5124 dnl ========================================================
5126 if test "$MOZ_ENABLE_GTK2"
5128 MOZ_ENABLE_GNOMEUI=1
5130 MOZ_ARG_DISABLE_BOOL(gnomeui,
5131 [ --disable-gnomeui Disable libgnomeui support (default: auto, optional at runtime) ],
5132 MOZ_ENABLE_GNOMEUI=,
5133 MOZ_ENABLE_GNOMEUI=force)
5135 if test "$MOZ_ENABLE_GNOMEUI"
5137 PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5139 MOZ_GNOMEUI_LIBS=`echo $MOZ_GNOMEUI_LIBS | sed 's/-llinc\>//'`
5140 MOZ_ENABLE_GNOMEUI=1
5142 if test "$MOZ_ENABLE_GNOMEUI" = "force"
5144 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5150 if test "$MOZ_ENABLE_GNOMEUI"; then
5151 AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5154 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5155 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5156 AC_SUBST(MOZ_GNOMEUI_LIBS)
5158 dnl ========================================================
5160 dnl ========================================================
5162 if test "$MOZ_ENABLE_GTK2" || "$MOZ_ENABLE_QT"
5166 MOZ_ARG_DISABLE_BOOL(dbus,
5167 [ --disable-dbus Disable dbus support ],
5171 if test "$MOZ_ENABLE_DBUS"
5173 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5174 AC_DEFINE(MOZ_ENABLE_DBUS)
5177 AC_SUBST(MOZ_ENABLE_DBUS)
5178 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5179 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5181 dnl ========================================================
5182 dnl = Build Personal Security Manager
5183 dnl ========================================================
5184 MOZ_ARG_DISABLE_BOOL(crypto,
5185 [ --disable-crypto Disable crypto support (Personal Security Manager)],
5189 dnl ========================================================
5190 dnl = JS Debugger XPCOM component (js/jsd)
5191 dnl ========================================================
5192 MOZ_ARG_DISABLE_BOOL(jsd,
5193 [ --disable-jsd Disable JavaScript debug library],
5198 dnl ========================================================
5199 dnl = Disable plugin support
5200 dnl ========================================================
5201 MOZ_ARG_DISABLE_BOOL(plugins,
5202 [ --disable-plugins Disable plugins support],
5206 dnl ========================================================
5207 dnl = Open JVM Interface (OJI) support
5208 dnl ========================================================
5209 MOZ_ARG_DISABLE_BOOL(oji,
5210 [ --disable-oji Disable Open JVM Integration support],
5213 if test -n "$MOZ_OJI"; then
5217 dnl bi-directional support always on
5221 dnl ========================================================
5222 dnl view source support on by default
5223 dnl ========================================================
5224 MOZ_ARG_DISABLE_BOOL(view-source,
5225 [ --disable-view-source Disable view source support],
5228 if test "$MOZ_VIEW_SOURCE"; then
5229 AC_DEFINE(MOZ_VIEW_SOURCE)
5233 dnl ========================================================
5234 dnl accessibility support on by default on all platforms
5236 dnl ========================================================
5237 MOZ_ARG_DISABLE_BOOL(accessibility,
5238 [ --disable-accessibility Disable accessibility support (off by default on OS X)],
5241 if test "$ACCESSIBILITY"; then
5242 AC_DEFINE(ACCESSIBILITY)
5245 if test -n "$ACCESSIBILITY"; then
5247 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5248 if test "$ac_cv_header_atlbase_h" = "no"; then
5249 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.])
5251 if test "$ac_cv_header_oleacc_idl" = "no"; then
5252 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.])
5258 dnl ========================================================
5259 dnl xpfe/components on by default
5260 dnl ========================================================
5261 MOZ_ARG_DISABLE_BOOL(xpfe-components,
5262 [ --disable-xpfe-components
5263 Disable xpfe components],
5264 MOZ_XPFE_COMPONENTS=,
5265 MOZ_XPFE_COMPONENTS=1 )
5267 dnl ========================================================
5268 dnl xpinstall support on by default
5269 dnl ========================================================
5270 MOZ_ARG_DISABLE_BOOL(xpinstall,
5271 [ --disable-xpinstall Disable xpinstall support],
5274 if test "$MOZ_XPINSTALL"; then
5275 AC_DEFINE(MOZ_XPINSTALL)
5278 dnl ========================================================
5279 dnl xpcom js loader support on by default
5280 dnl ========================================================
5281 MOZ_ARG_DISABLE_BOOL(jsloader,
5282 [ --disable-jsloader Disable xpcom js loader support],
5285 if test "$MOZ_JSLOADER"; then
5286 AC_DEFINE(MOZ_JSLOADER)
5289 dnl ========================================================
5290 dnl Disable printing
5291 dnl ========================================================
5292 MOZ_ARG_DISABLE_BOOL(printing,
5293 [ --disable-printing Disable printing support],
5297 if test "$NS_PRINTING"; then
5298 AC_DEFINE(NS_PRINTING)
5299 AC_DEFINE(NS_PRINT_PREVIEW)
5302 dnl ========================================================
5303 dnl use native unicode converters
5304 dnl ========================================================
5305 MOZ_ARG_ENABLE_BOOL(native-uconv,
5306 [ --enable-native-uconv Enable iconv support],
5307 MOZ_USE_NATIVE_UCONV=1,
5308 MOZ_USE_NATIVE_UCONV= )
5309 if test "$MOZ_USE_NATIVE_UCONV"; then
5310 AC_DEFINE(MOZ_USE_NATIVE_UCONV)
5312 if test "$OS_ARCH" != "WINCE" -a "$OS_ARCH" != "WINNT" -a "$MOZ_USE_NATIVE_UCONV" -a "$ac_cv_func_iconv" != "yes"; then
5313 AC_MSG_ERROR([iconv() not found. Cannot enable native uconv support.])
5317 dnl ========================================================
5318 dnl Libeditor can be build as plaintext-only,
5319 dnl or as a full html and text editing component.
5320 dnl We build both by default.
5321 dnl ========================================================
5322 MOZ_ARG_ENABLE_BOOL(plaintext-editor-only,
5323 [ --enable-plaintext-editor-only
5324 Allow only plaintext editing],
5325 MOZ_PLAINTEXT_EDITOR_ONLY=1,
5326 MOZ_PLAINTEXT_EDITOR_ONLY= )
5327 dnl Note the #define is MOZILLA, not MOZ, for compat with the Mac build.
5328 AC_SUBST(MOZ_PLAINTEXT_EDITOR_ONLY)
5330 dnl ========================================================
5331 dnl = Drop XPCOM Obsolete library
5332 dnl ========================================================
5333 MOZ_ARG_DISABLE_BOOL(xpcom-obsolete,
5334 [ --disable-xpcom-obsolete Disable XPCOM Obsolete Library],
5335 MOZ_NO_XPCOM_OBSOLETE=1,
5336 MOZ_NO_XPCOM_OBSOLETE=)
5338 if test -n "$MOZ_NO_XPCOM_OBSOLETE"; then
5339 AC_DEFINE(MOZ_NO_XPCOM_OBSOLETE)
5342 dnl ========================================================
5343 dnl = Disable Fast Load
5344 dnl ========================================================
5345 MOZ_ARG_DISABLE_BOOL(xpcom-fastload,
5346 [ --disable-xpcom-fastload Disable XPCOM fastload support],
5350 AC_SUBST(MOZ_NO_FAST_LOAD)
5352 if test -n "$MOZ_NO_FAST_LOAD"; then
5353 AC_DEFINE(MOZ_NO_FAST_LOAD)
5356 dnl ========================================================
5357 dnl = Enable Ogg Codecs
5358 dnl ========================================================
5359 MOZ_ARG_DISABLE_BOOL(ogg,
5360 [ --disable-ogg Disable Ogg Codec support],
5366 if test -n "$MOZ_OGG"; then
5373 if test -n "$MOZ_MEDIA"; then
5374 AC_DEFINE(MOZ_MEDIA)
5377 dnl If using Ogg with Linux, ensure that the alsa library is available
5378 if test -n "$MOZ_OGG"; then
5379 case "$target_os" in
5381 AC_CHECK_LIB(asound, snd_pcm_open,,AC_MSG_ERROR([Ogg support on Linux requires the alsa library]))
5386 dnl ========================================================
5387 dnl Permissions System
5388 dnl ========================================================
5389 MOZ_ARG_DISABLE_BOOL(permissions,
5390 [ --disable-permissions Disable permissions (popup and cookie blocking)],
5395 dnl ========================================================
5397 dnl ========================================================
5398 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5399 [ --disable-negotiateauth Disable GSS-API negotiation ],
5400 MOZ_AUTH_EXTENSION=,
5401 MOZ_AUTH_EXTENSION=1 )
5403 dnl ========================================================
5405 dnl ========================================================
5406 MOZ_ARG_DISABLE_BOOL(xtf,
5407 [ --disable-xtf Disable XTF (pluggable xml tags) support],
5410 if test "$MOZ_XTF"; then
5414 dnl ========================================================
5416 dnl ========================================================
5417 MOZ_ARG_DISABLE_BOOL(inspector-apis,
5418 [ --disable-inspector-apis Disable the DOM inspection APIs ],
5419 MOZ_NO_INSPECTOR_APIS=1,
5420 MOZ_NO_INSPECTOR_APIS= )
5422 dnl ========================================================
5423 dnl Pref extensions (autoconfig and system-pref)
5424 dnl ========================================================
5425 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5426 [ --disable-pref-extensions
5427 Disable pref extensions such as autoconfig and
5429 MOZ_PREF_EXTENSIONS=,
5430 MOZ_PREF_EXTENSIONS=1 )
5432 dnl ========================================================
5433 dnl = Universalchardet
5434 dnl ========================================================
5435 MOZ_ARG_DISABLE_BOOL(universalchardet,
5436 [ --disable-universalchardet
5437 Disable universal encoding detection],
5438 MOZ_UNIVERSALCHARDET=,
5439 MOZ_UNIVERSALCHARDET=1 )
5441 dnl ========================================================
5443 dnl ========================================================
5444 MOZ_ARG_ENABLE_BOOL(javaxpcom,
5445 [ --enable-javaxpcom
5446 Enable Java-XPCOM bridge],
5450 if test -n "${MOZ_JAVAXPCOM}"; then
5453 if test -n "$JAVA_HOME"; then
5454 JAVA_HOME=`cygpath -u \`cygpath -m -s "$JAVA_HOME"\``
5458 if test -n "$JAVA_HOME"; then
5459 JAVA_HOME=`cd "$JAVA_HOME" && pwd`
5464 if test -n "${JAVA_INCLUDE_PATH}"; then
5465 dnl Make sure jni.h exists in the given include path.
5466 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5467 AC_MSG_ERROR([jni.h was not found in given include path $JAVA_INCLUDE_PATH.])
5470 case "$target_os" in
5472 dnl Default to java system location
5473 JAVA_INCLUDE_PATH=/System/Library/Frameworks/JavaVM.framework/Headers
5477 JAVA_INCLUDE_PATH="$JAVA_HOME/include"
5480 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5481 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.])
5485 if test -n "${JAVA_BIN_PATH}"; then
5486 dnl Look for javac and jar in the specified path.
5487 JAVA_PATH="$JAVA_BIN_PATH"
5489 dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5490 JAVA_PATH="$JAVA_HOME/bin:$PATH"
5493 AC_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5494 AC_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5495 AC_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5496 if test -z "$JAVA" || test "$JAVA" = ":" || test -z "$JAVAC" || test "$JAVAC" = ":" || test -z "$JAR" || test "$JAR" = ":"; then
5497 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.])
5501 dnl ========================================================
5502 dnl = Breakpad crash reporting (on by default on supported platforms)
5503 dnl ========================================================
5505 if (test "$OS_ARCH" = "WINNT" -a -z "$GNU_CC" \
5506 || test "$OS_ARCH" = "Darwin" \
5507 || test "$OS_ARCH" = "Linux" -a "$CPU_ARCH" = "x86" \
5508 || test "$OS_ARCH" = "SunOS") \
5509 && test -z "$HAVE_64BIT_OS"; then
5513 MOZ_ARG_DISABLE_BOOL(crashreporter,
5514 [ --disable-crashreporter Disable breakpad crash reporting],
5516 MOZ_CRASHREPORTER=1)
5518 if test -n "$MOZ_CRASHREPORTER"; then
5519 AC_DEFINE(MOZ_CRASHREPORTER)
5521 if (test "$OS_ARCH" = "Linux" || test "$OS_ARCH" = "SunOS") && \
5522 test -z "$SKIP_LIBRARY_CHECKS"; then
5523 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
5524 AC_SUBST(MOZ_GTHREAD_CFLAGS)
5525 AC_SUBST(MOZ_GTHREAD_LIBS)
5527 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.])])
5531 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
5532 [ --with-crashreporter-enable-percent=NN Enable sending crash reports by default on NN% of users. (default=100)],
5533 [ val=`echo $withval | sed 's/[^0-9]//g'`
5534 MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
5536 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
5537 MOZ_CRASHREPORTER_ENABLE_PERCENT=100
5539 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
5541 dnl ========================================================
5542 dnl = Enable compilation of specific extension modules
5543 dnl ========================================================
5545 MOZ_ARG_ENABLE_STRING(extensions,
5546 [ --enable-extensions Enable extensions],
5547 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5548 if test "$option" = "yes" || test "$option" = "all"; then
5549 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_ALL"
5550 elif test "$option" = "no" || test "$option" = "none"; then
5552 elif test "$option" = "default"; then
5553 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
5554 elif test `echo "$option" | grep -c \^-` != 0; then
5555 option=`echo $option | sed 's/^-//'`
5556 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
5558 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
5561 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
5563 if test -z "$MOZ_ENABLE_GNOMEVFS" && test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
5564 # Suppress warning on non-X11 platforms
5565 if test -n "$MOZ_X11"; then
5566 AC_MSG_WARN([Cannot build gnomevfs without required libraries. Removing gnomevfs from MOZ_EXTENSIONS.])
5568 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
5571 if test -z "$MOZ_JSDEBUGGER" && test `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
5572 AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
5573 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
5576 dnl This might be temporary: build tridentprofile only on Windows
5577 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0 && test "$OS_ARCH" != "WINNT"; then
5578 AC_MSG_WARN([tridentprofile extension works only on Windows at this time. Removing tridentprofile from MOZ_EXTENSIONS.])
5579 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5582 dnl cookie must be built before tridentprofile. put it at list's end.
5583 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0; then
5584 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5585 MOZ_EXTENSIONS="$MOZ_EXTENSIONS tridentprofile"
5588 dnl xforms requires xtf and schema-validation
5589 if test -z "$MOZ_XTF" && test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
5590 AC_MSG_WARN([Cannot build XForms without XTF support. Removing XForms from MOZ_EXTENSIONS.])
5591 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5593 if test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0 && test `echo "$MOZ_EXTENSIONS" | grep -c schema-validation` -eq 0; then
5594 AC_MSG_WARN([Cannot build XForms without schema validation. Removing XForms from MOZ_EXTENSIONS.])
5595 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5598 if test `echo "$MOZ_EXTENSIONS" | grep -c auth` -ne 0; then
5599 AC_MSG_WARN([auth is no longer an extension, use --disable-negotiateauth to disable.])
5600 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|auth||g'`
5603 if test `echo "$MOZ_EXTENSIONS" | grep -c 'cookie\|permissions'` -ne 0; then
5604 AC_MSG_WARN([cookie and permissions are no longer extensions, use --disable-permissions to disable.])
5605 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|cookie||g; s|permissions||g'`
5608 if test `echo "$MOZ_EXTENSIONS" | grep -c pref` -ne 0; then
5609 AC_MSG_WARN([pref is no longer an extension, use --disable-pref-extensions to disable.])
5610 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|pref||g'`
5613 if test `echo "$MOZ_EXTENSIONS" | grep -c universalchardet` -ne 0; then
5614 AC_MSG_WARN([universalchardet is no longer an extension, use --disable-universalchardet to disable.])
5615 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|universalchardet||g'`
5618 if test `echo "$MOZ_EXTENSIONS" | grep -c java` -ne 0; then
5619 AC_MSG_WARN([java is no longer an extension, use --enable-javaxpcom to enable.])
5620 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|java||g'`
5623 if test `echo "$MOZ_EXTENSIONS" | grep -c spellcheck` -ne 0; then
5624 AC_MSG_WARN([spellcheck is no longer an extension.])
5625 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|spellcheck||g'`
5628 if test -n "$MOZ_NO_XPCOM_OBSOLETE" && test `echo "$MOZ_EXTENSIONS" | grep -c sroaming` -ne 0; then
5629 AC_MSG_WARN([Cannot currently build sroaming without xpcom obsolete -- bug 249343. Removing sroaming from MOZ_EXTENSIONS.])
5630 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|sroaming||'`
5634 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
5636 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
5637 dnl when trying to build a non-existent extension.
5638 for extension in $MOZ_EXTENSIONS; do
5639 if test ! -d "${srcdir}/extensions/${extension}"; then
5640 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
5645 dnl ========================================================
5647 dnl ========================================================
5648 case "$MOZ_WIDGET_TOOLKIT" in
5649 beos|windows|os2|mac|cocoa)
5652 if test -z "$MOZ_ENABLE_GTK2" && test -z "$MOZ_ENABLE_QT"; then
5653 MOZ_IMG_DECODERS_DEFAULT=`echo $MOZ_IMG_DECODERS_DEFAULT | sed -e 's|icon||'`
5658 MOZ_ARG_ENABLE_STRING(image-decoders,
5659 [ --enable-image-decoders[={mod1,mod2,default,all,none}]
5660 Enable specific image decoders],
5661 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5662 if test "$option" = "yes" || test "$option" = "all"; then
5663 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5664 elif test "$option" = "no" || test "$option" = "none"; then
5666 elif test "$option" = "default"; then
5667 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5668 elif test `echo "$option" | grep -c \^-` != 0; then
5669 option=`echo $option | sed 's/^-//'`
5670 MOZ_IMG_DECODERS=`echo "$MOZ_IMG_DECODERS" | sed "s/ ${option}//"`
5672 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $option"
5675 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS_DEFAULT")
5677 dnl Dupes are removed in the encoder section because it will also add decoders
5679 dnl ========================================================
5681 dnl ========================================================
5682 MOZ_ARG_ENABLE_STRING(image-encoders,
5683 [ --enable-image-encoders[={mod1,mod2,default,all,none}]
5684 Enable specific image encoders],
5685 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5686 if test "$option" = "yes" || test "$option" = "all"; then
5687 addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5688 elif test "$option" = "no" || test "$option" = "none"; then
5691 elif test "$option" = "default"; then
5692 addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5693 elif test `echo "$option" | grep -c \^-` != 0; then
5694 option=`echo $option | sed 's/^-//'`
5695 addencoder=`echo "$MOZ_IMG_ENCODERS" | sed "s/ ${option}//"`
5697 addencoder="$option"
5699 MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS $addencoder"
5701 MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS_DEFAULT")
5704 MOZ_IMG_DECODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_DECODERS}`
5705 MOZ_IMG_ENCODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_ENCODERS}`
5707 dnl ========================================================
5708 dnl MathML on by default
5709 dnl ========================================================
5710 MOZ_ARG_DISABLE_BOOL(mathml,
5711 [ --disable-mathml Disable MathML support],
5714 if test "$MOZ_MATHML"; then
5715 AC_DEFINE(MOZ_MATHML)
5718 dnl ========================================================
5720 dnl ========================================================
5721 MOZ_ARG_DISABLE_BOOL(canvas,
5722 [ --disable-canvas Disable html:canvas feature],
5724 MOZ_ENABLE_CANVAS=1 )
5725 if test -n "$MOZ_ENABLE_CANVAS"; then
5726 AC_DEFINE(MOZ_ENABLE_CANVAS)
5728 AC_SUBST(MOZ_ENABLE_CANVAS)
5730 dnl ========================================================
5732 dnl ========================================================
5733 MOZ_ARG_DISABLE_BOOL(svg,
5734 [ --disable-svg Disable SVG support],
5737 if test -n "$MOZ_SVG"; then
5741 dnl ========================================================
5743 dnl ========================================================
5744 case "$target_os" in
5745 aix*|solaris*|linux*|msvc*|mks*|cygwin*|mingw*|os2*|wince*)
5750 MOZ_ARG_DISABLE_BOOL(installer,
5751 [ --disable-installer Disable building of installer],
5754 if test -n "$MOZ_INSTALLER" -a -n "$MOZ_XUL_APP" -a "$OS_ARCH" = "WINNT"; then
5755 # Disable installer for Windows builds that use the new toolkit if NSIS
5756 # isn't in the path.
5757 AC_PATH_PROGS(MAKENSIS, makensis)
5758 if test -z "$MAKENSIS" || test "$MAKENSIS" = ":"; then
5759 AC_MSG_ERROR([To build the installer makensis is required in your path. To build without the installer reconfigure using --disable-installer.])
5761 # The Windows build for NSIS requires the iconv command line utility to
5762 # convert the charset of the locale files.
5763 AC_PATH_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5764 if test -z "$HOST_ICONV"; then
5765 AC_MSG_ERROR([To build the installer iconv is required in your path. To build without the installer reconfigure using --disable-installer.])
5769 # Automatically disable installer if xpinstall isn't built
5770 if test -z "$MOZ_XPINSTALL"; then
5773 AC_SUBST(MOZ_INSTALLER)
5775 AC_MSG_CHECKING([for tar archiver])
5776 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
5777 if test -z "$TAR"; then
5778 AC_MSG_ERROR([no tar archiver found in \$PATH])
5780 AC_MSG_RESULT([$TAR])
5783 AC_MSG_CHECKING([for wget])
5784 AC_CHECK_PROGS(WGET, wget, "")
5785 AC_MSG_RESULT([$WGET])
5788 dnl ========================================================
5790 dnl ========================================================
5792 MOZ_ARG_DISABLE_BOOL(updater,
5793 [ --disable-updater Disable building of updater],
5796 # The Windows build requires the iconv command line utility
5797 # in order to build the updater.
5798 case "$target_os" in
5799 msvc*|mks*|cygwin*|mingw*|wince*)
5800 if test -n "$MOZ_UPDATER"; then
5801 AC_MSG_CHECKING([for iconv])
5802 AC_CHECK_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5803 if test -z "$HOST_ICONV"; then
5804 AC_MSG_ERROR([iconv not found in \$PATH])
5809 AC_SUBST(MOZ_UPDATER)
5811 # app update channel is 'default' when not supplied.
5812 MOZ_ARG_ENABLE_STRING([update-channel],
5813 [ --enable-update-channel=CHANNEL
5814 Select application update channel (default=default)],
5815 MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
5817 if test -z "$MOZ_UPDATE_CHANNEL"; then
5818 MOZ_UPDATE_CHANNEL=default
5820 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
5822 # tools/update-packaging is not checked out by default.
5823 MOZ_ARG_ENABLE_BOOL(update-packaging,
5824 [ --enable-update-packaging
5825 Enable tools/update-packaging],
5826 MOZ_UPDATE_PACKAGING=1,
5827 MOZ_UPDATE_PACKAGING= )
5828 AC_SUBST(MOZ_UPDATE_PACKAGING)
5830 dnl ========================================================
5832 dnl ========================================================
5834 MOZ_ARG_DISABLE_BOOL(xpconnect-idispatch,
5835 [ --disable-xpconnect-idispatch
5836 Disable building of xpconnect support for IDispatch
5838 XPC_IDISPATCH_SUPPORT=,
5839 XPC_IDISPATCH_SUPPORT=1)
5840 AC_SUBST(XPC_IDISPATCH_SUPPORT)
5842 MOZ_ARG_DISABLE_BOOL(activex,
5843 [ --disable-activex Disable building of ActiveX control (win32 only)],
5844 MOZ_NO_ACTIVEX_SUPPORT=1,
5845 MOZ_NO_ACTIVEX_SUPPORT= )
5846 AC_SUBST(MOZ_NO_ACTIVEX_SUPPORT)
5848 MOZ_ARG_DISABLE_BOOL(activex-scripting,
5849 [ --disable-activex-scripting
5850 Disable building of ActiveX scripting support (win32)],
5851 MOZ_ACTIVEX_SCRIPTING_SUPPORT=,
5852 MOZ_ACTIVEX_SCRIPTING_SUPPORT=1)
5853 AC_SUBST(MOZ_ACTIVEX_SCRIPTING_SUPPORT)
5855 if test -n "$MOZ_NO_ACTIVEX_SUPPORT" -a -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT";
5857 AC_MSG_ERROR([Cannot enable ActiveX scripting support when ActiveX support is disabled.])
5860 if test -n "$XPC_IDISPATCH_SUPPORT" -o -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
5862 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5863 if test "$ac_cv_header_atlbase_h" = "no"; then
5864 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.])
5870 dnl ========================================================
5872 dnl ========================================================
5873 MOZ_ARG_ENABLE_BOOL(leaky,
5874 [ --enable-leaky Build leaky memory tool],
5879 dnl ========================================================
5881 dnl ========================================================
5882 MOZ_ARG_ENABLE_BOOL(xpctools,
5883 [ --enable-xpctools Build JS profiling tool],
5888 dnl ========================================================
5889 dnl build the tests by default
5890 dnl ========================================================
5891 MOZ_ARG_DISABLE_BOOL(tests,
5892 [ --disable-tests Do not build test libraries & programs],
5896 dnl ========================================================
5897 dnl parental controls (for Windows Vista)
5898 dnl ========================================================
5899 MOZ_ARG_DISABLE_BOOL(parental-controls,
5900 [ --disable-parental-controls
5901 Do not build parental controls],
5902 MOZ_DISABLE_PARENTAL_CONTROLS=1,
5903 MOZ_DISABLE_PARENTAL_CONTROLS=)
5904 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5905 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5908 dnl ========================================================
5909 dnl Vista SDK specific api
5910 dnl ========================================================
5911 MOZ_ARG_DISABLE_BOOL(vista-sdk-requirements,
5912 [ --disable-vista-sdk-requirements
5913 Do not build Vista SDK specific code],
5914 MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=1,
5915 MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=)
5916 if test -n "$MOZ_DISABLE_VISTA_SDK_REQUIREMENTS"; then
5917 AC_MSG_WARN([Resulting builds will not be compatible with Windows Vista. (bug 428970)])
5918 AC_DEFINE(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
5919 if test -z "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5920 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5922 MOZ_DISABLE_PARENTAL_CONTROLS=1
5925 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5926 if test "$ac_cv_header_wpcapi_h" = "no"; then
5927 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.])
5932 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
5933 AC_SUBST(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
5935 dnl ========================================================
5937 dnl = Module specific options
5939 dnl ========================================================
5940 MOZ_ARG_HEADER(Individual module options)
5942 dnl ========================================================
5943 dnl = Enable Lea malloc in xpcom. OFF by default.
5944 dnl ========================================================
5945 MOZ_ARG_ENABLE_BOOL(xpcom-lea,
5946 [ --enable-xpcom-lea Use Lea malloc in xpcom ],
5949 if test -n "$XPCOM_USE_LEA"; then
5950 AC_DEFINE(XPCOM_USE_LEA)
5953 dnl ========================================================
5954 dnl = Enable places (new history/bookmarks)
5955 dnl ========================================================
5956 MOZ_ARG_ENABLE_BOOL(places,
5957 [ --enable-places Enable 'places' bookmark/history implementation],
5960 if test -n "$MOZ_PLACES"; then
5961 AC_DEFINE(MOZ_PLACES)
5962 if test -z "$MOZ_MAIL_NEWS"; then
5967 if test "$MOZ_BUILD_APP" = "browser"; then
5968 AC_MSG_ERROR([Cannot build Firefox with --disable-places.])
5972 dnl ========================================================
5973 dnl = Disable feed handling components
5974 dnl ========================================================
5975 MOZ_ARG_DISABLE_BOOL(feeds,
5976 [ --disable-feeds Disable feed handling and processing components],
5979 if test -n "$MOZ_FEEDS"; then
5980 AC_DEFINE(MOZ_FEEDS)
5982 if test "$MOZ_BUILD_APP" = "browser"; then
5983 AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
5987 dnl ========================================================
5988 dnl = Enable mozStorage
5989 dnl ========================================================
5990 dnl Implicitly enabled by default if building calendar or places
5991 MOZ_ARG_ENABLE_BOOL(storage,
5992 [ --enable-storage Enable mozStorage module and related components],
5995 if test -n "$MOZ_STORAGE"; then
5996 AC_DEFINE(MOZ_STORAGE)
5999 dnl ========================================================
6000 dnl Check for sqlite
6001 dnl ========================================================
6004 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6005 [ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
6006 MOZ_NATIVE_SQLITE=1,
6007 MOZ_NATIVE_SQLITE= )
6009 if test -z "$MOZ_NATIVE_SQLITE"
6012 SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,sqlite3,$(DIST)/lib)'
6014 PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6017 AC_SUBST(MOZ_NATIVE_SQLITE)
6019 dnl ========================================================
6020 dnl = Enable help viewer (off by default)
6021 dnl ========================================================
6022 MOZ_ARG_ENABLE_BOOL(help-viewer,
6023 [ --enable-help-viewer Enable help viewer],
6026 if test -n "$MOZ_HELP_VIEWER"; then
6027 AC_DEFINE(MOZ_HELP_VIEWER)
6029 AC_SUBST(MOZ_HELP_VIEWER)
6030 if test "$MOZ_BUILD_APP" = "browser" -a -n "$MOZ_HELP_VIEWER"; then
6031 AC_MSG_ERROR([Cannot build Firefox with --enable-help-viewer.])
6034 dnl ========================================================
6035 dnl = Enable safe browsing (anti-phishing)
6036 dnl ========================================================
6037 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6038 [ --enable-safe-browsing Enable safe browsing (anti-phishing) implementation],
6039 MOZ_SAFE_BROWSING=1,
6040 MOZ_SAFE_BROWSING= )
6041 if test -n "$MOZ_SAFE_BROWSING"; then
6042 AC_DEFINE(MOZ_SAFE_BROWSING)
6044 AC_SUBST(MOZ_SAFE_BROWSING)
6046 dnl ========================================================
6047 dnl = Enable url-classifier
6048 dnl ========================================================
6049 dnl Implicitly enabled by default if building with safe-browsing
6050 if test -n "$MOZ_SAFE_BROWSING"; then
6051 MOZ_URL_CLASSIFIER=1
6053 MOZ_ARG_ENABLE_BOOL(url-classifier,
6054 [ --enable-url-classifier Enable url classifier module],
6055 MOZ_URL_CLASSIFIER=1,
6056 MOZ_URL_CLASSIFIER= )
6057 if test -n "$MOZ_URL_CLASSIFIER"; then
6058 AC_DEFINE(MOZ_URL_CLASSIFIER)
6060 AC_SUBST(MOZ_URL_CLASSIFIER)
6062 dnl ========================================================
6063 dnl = Disable zipwriter
6064 dnl ========================================================
6065 MOZ_ARG_DISABLE_BOOL(zipwriter,
6066 [ --disable-zipwriter Disable zipwriter component],
6069 AC_SUBST(MOZ_ZIPWRITER)
6071 dnl ========================================================
6072 dnl = Enable Ultrasparc specific optimizations for JS
6073 dnl ========================================================
6074 MOZ_ARG_ENABLE_BOOL(js-ultrasparc,
6075 [ --enable-js-ultrasparc Use UltraSPARC optimizations in JS],
6076 JS_ULTRASPARC_OPTS=1,
6077 JS_ULTRASPARC_OPTS= )
6079 dnl only enable option for ultrasparcs
6080 if test `echo "$target_os" | grep -c \^solaris 2>/dev/null` = 0 -o \
6081 "$OS_TEST" != "sun4u"; then
6084 AC_SUBST(JS_ULTRASPARC_OPTS)
6086 dnl ========================================================
6087 dnl = Hildon and OSSO checks
6088 dnl ========================================================
6089 PKG_CHECK_MODULES(LIBHILDONMIME,libhildonmime,
6090 MOZ_PLATFORM_HILDON=1,
6091 MOZ_PLATFORM_HILDON=)
6092 if test $MOZ_PLATFORM_HILDON; then
6093 AC_DEFINE(MOZ_PLATFORM_HILDON)
6095 AC_SUBST(LIBHILDONMIME_CFLAGS)
6096 AC_SUBST(LIBHILDONMIME_LIBS)
6098 PKG_CHECK_MODULES(LIBOSSO,libosso,
6102 if test $NS_OSSO; then
6103 if test -z "$MOZ_ENABLE_DBUS"; then
6104 AC_MSG_ERROR([DBus is required when building for OSSO])
6108 AC_SUBST(LIBOSSO_CFLAGS)
6109 AC_SUBST(LIBOSSO_LIBS)
6111 PKG_CHECK_MODULES(MOZ_LOCATION, [liblocation gpsbt],
6112 NS_MAEMO_LOCATION=1,
6115 if test $NS_MAEMO_LOCATION; then
6116 AC_DEFINE(NS_MAEMO_LOCATION)
6119 AC_SUBST(MOZ_LOCATION_CFLAGS)
6120 AC_SUBST(MOZ_LOCATION_LIBS)
6122 dnl ========================================================
6124 dnl = Feature options that require extra sources to be pulled
6126 dnl ========================================================
6127 dnl MOZ_ARG_HEADER(Features that require extra sources)
6129 dnl ========================================================
6131 dnl = Debugging Options
6133 dnl ========================================================
6134 MOZ_ARG_HEADER(Debugging and Optimizations)
6136 dnl ========================================================
6137 dnl = Disable building with debug info.
6138 dnl = Debugging is OFF by default
6139 dnl ========================================================
6140 if test -z "$MOZ_DEBUG_FLAGS"
6144 if test "$GNU_CC"; then
6145 GCC_VERSION=`$CC -v 2>&1 | awk '/version/ { print $3 }'`
6146 case "$GCC_VERSION" in
6151 MOZ_DEBUG_FLAGS="-g"
6155 MOZ_DEBUG_FLAGS="-g"
6159 MOZ_DEBUG_FLAGS="-g"
6164 MOZ_ARG_ENABLE_STRING(debug,
6165 [ --enable-debug[=DBG] Enable building with developer debug info
6166 (Using compiler flags DBG)],
6167 [ if test "$enableval" != "no"; then
6169 if test -n "$enableval" && test "$enableval" != "yes"; then
6170 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6177 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG"
6178 case "${target_os}" in
6180 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${USER}"
6182 msvc*|mks*|cygwin*|mingw*|os2*|wince*)
6183 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
6186 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`$WHOAMI`"
6189 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DTRACING"
6191 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
6193 if test -n "$MOZ_DEBUG"; then
6194 AC_MSG_CHECKING([for valid debug flags])
6195 _SAVE_CFLAGS=$CFLAGS
6196 CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
6197 AC_TRY_COMPILE([#include <stdio.h>],
6198 [printf("Hello World\n");],
6201 AC_MSG_RESULT([$_results])
6202 if test "$_results" = "no"; then
6203 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
6205 CFLAGS=$_SAVE_CFLAGS
6208 dnl ========================================================
6209 dnl = Enable code optimization. ON by default.
6210 dnl ========================================================
6211 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6212 MOZ_OPTIMIZE_FLAGS="-O"
6215 MOZ_ARG_ENABLE_STRING(optimize,
6216 [ --disable-optimize Disable compiler optimization
6217 --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6218 [ if test "$enableval" != "no"; then
6220 if test -n "$enableval" && test "$enableval" != "yes"; then
6221 MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6226 fi ], MOZ_OPTIMIZE=1)
6228 if test "$COMPILE_ENVIRONMENT"; then
6229 if test -n "$MOZ_OPTIMIZE"; then
6230 AC_MSG_CHECKING([for valid optimization flags])
6231 _SAVE_CFLAGS=$CFLAGS
6232 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6233 AC_TRY_COMPILE([#include <stdio.h>],
6234 [printf("Hello World\n");],
6237 AC_MSG_RESULT([$_results])
6238 if test "$_results" = "no"; then
6239 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6241 CFLAGS=$_SAVE_CFLAGS
6243 fi # COMPILE_ENVIRONMENT
6245 AC_SUBST(MOZ_OPTIMIZE)
6246 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6247 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6248 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6250 dnl ========================================================
6251 dnl = Enable/disable debug for specific modules only
6252 dnl = module names beginning with ^ will be disabled
6253 dnl ========================================================
6254 MOZ_ARG_ENABLE_STRING(debug-modules,
6255 [ --enable-debug-modules Enable/disable debug info for specific modules],
6256 [ MOZ_DEBUG_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6258 dnl ========================================================
6259 dnl = Enable/disable generation of debugger info for specific modules only
6260 dnl = the special module name ALL_MODULES can be used to denote all modules
6261 dnl = module names beginning with ^ will be disabled
6262 dnl ========================================================
6263 MOZ_ARG_ENABLE_STRING(debugger-info-modules,
6264 [ --enable-debugger-info-modules
6265 Enable/disable debugger info for specific modules],
6266 [ for i in `echo $enableval | sed 's/,/ /g'`; do
6267 dnl note that the list of module names is reversed as it is copied
6268 dnl this is important, as it will allow config.mk to interpret stuff like
6269 dnl "^ALL_MODULES xpcom" properly
6270 if test "$i" = "no"; then
6273 if test "$i" = "yes"; then
6276 MOZ_DBGRINFO_MODULES="$i $MOZ_DBGRINFO_MODULES";
6279 dnl ========================================================
6280 dnl Enable garbage collector
6281 dnl ========================================================
6282 MOZ_ARG_ENABLE_BOOL(boehm,
6283 [ --enable-boehm Enable the Boehm Garbage Collector],
6286 if test -n "$GC_LEAK_DETECTOR"; then
6287 AC_DEFINE(GC_LEAK_DETECTOR)
6290 dnl ========================================================
6291 dnl Disable runtime logging checks
6292 dnl ========================================================
6293 MOZ_ARG_DISABLE_BOOL(logging,
6294 [ --disable-logging Disable logging facilities],
6295 NS_DISABLE_LOGGING=1,
6296 NS_DISABLE_LOGGING= )
6297 if test "$NS_DISABLE_LOGGING"; then
6298 AC_DEFINE(NS_DISABLE_LOGGING)
6300 AC_DEFINE(MOZ_LOGGING)
6303 dnl ========================================================
6304 dnl = dnl This will enable logging of addref, release, ctor, dtor.
6305 dnl ========================================================
6306 _ENABLE_LOGREFCNT=42
6307 MOZ_ARG_ENABLE_BOOL(logrefcnt,
6308 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
6309 _ENABLE_LOGREFCNT=1,
6310 _ENABLE_LOGREFCNT= )
6311 if test "$_ENABLE_LOGREFCNT" = "1"; then
6312 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
6313 elif test -z "$_ENABLE_LOGREFCNT"; then
6314 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
6317 dnl ========================================================
6318 dnl = Enable trace malloc
6319 dnl ========================================================
6320 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
6321 MOZ_ARG_ENABLE_BOOL(trace-malloc,
6322 [ --enable-trace-malloc Enable malloc tracing],
6325 if test "$NS_TRACE_MALLOC"; then
6326 # Please, Mr. Linker Man, don't take away our symbol names
6327 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6329 AC_DEFINE(NS_TRACE_MALLOC)
6331 AC_SUBST(NS_TRACE_MALLOC)
6333 dnl ========================================================
6334 dnl = Enable jemalloc
6335 dnl ========================================================
6336 MOZ_ARG_ENABLE_BOOL(jemalloc,
6337 [ --enable-jemalloc Replace memory allocator with jemalloc],
6341 if test "$NS_TRACE_MALLOC"; then
6345 if test "$MOZ_MEMORY"; then
6347 dnl Don't try to run compiler tests on Windows
6348 if test "$OS_ARCH" = "WINNT"; then
6349 if test -z "$HAVE_64BIT_OS"; then
6350 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6352 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6355 AC_CHECK_SIZEOF([int *], [4])
6356 case "${ac_cv_sizeof_int_p}" in
6358 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6361 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6364 AC_MSG_ERROR([Unexpected pointer size])
6369 AC_DEFINE(MOZ_MEMORY)
6370 if test "x$MOZ_DEBUG" = "x1"; then
6371 AC_DEFINE(MOZ_MEMORY_DEBUG)
6373 dnl The generic feature tests that determine how to compute ncpus are long and
6374 dnl complicated. Therefore, simply define special cpp variables for the
6375 dnl platforms we have special knowledge of.
6376 case "${target_os}" in
6378 AC_DEFINE(MOZ_MEMORY_DARWIN)
6381 AC_DEFINE(MOZ_MEMORY_BSD)
6384 AC_DEFINE(MOZ_MEMORY_LINUX)
6387 AC_DEFINE(MOZ_MEMORY_BSD)
6390 AC_DEFINE(MOZ_MEMORY_SOLARIS)
6392 msvc*|mks*|cygwin*|mingw*)
6393 AC_DEFINE(MOZ_MEMORY_WINDOWS)
6394 dnl XXX: should test for vc8sp1 here, otherwise patching the crt src
6395 dnl will fail miserably
6396 if test "$_CC_SUITE" -lt "8"; then
6397 AC_MSG_ERROR([Building jemalloc requires Visual C++ 2005 or better])
6399 if test -z "$WIN32_CRT_SRC_DIR" -a -z "$WIN32_CUSTOM_CRT_DIR"; then
6400 if test -z "$VCINSTALLDIR" -o ! -d "$VCINSTALLDIR"; then
6401 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.])
6403 WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src"
6406 if test -z "$WIN32_CRT_SRC_DIR"; then
6408 WIN32_CUSTOM_CRT_DIR=`cd "$WIN32_CUSTOM_CRT_DIR" && pwd`
6409 _WIN_UNIX_CRT_PATH="$WIN32_CUSTOM_CRT_DIR"
6411 # CRT source directory
6412 WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd`
6413 _CRT_BASE_DIR=`basename "$WIN32_CRT_SRC_DIR"`
6414 _WIN_UNIX_CRT_PATH="$_objdir/memory/jemalloc/$_CRT_BASE_DIR/build/intel"
6416 dnl need win32 paths in LIB, hence this python abuse. extra brackets
6418 _WIN_CRT_PATH=[`$PYTHON -c 'import sys, os.path; print os.path.normpath(sys.argv[1])' "$_WIN_UNIX_CRT_PATH"`]
6419 MOZ_LIB="$_WIN_CRT_PATH;$LIB"
6420 dnl Needs to be in PATH too, since our tools will wind up linked against it.
6421 dnl This needs to be unix style.
6422 MOZ_PATH="$PATH:$_WIN_UNIX_CRT_PATH"
6423 dnl Statically link the C++ stdlib. We only use this for Breakpad anyway.
6424 AC_DEFINE(_STATIC_CPPLIB)
6425 dnl Don't generate a manifest, since we're linking to a custom CRT.
6426 LDFLAGS="$LDFLAGS -MANIFEST:NO"
6427 dnl Also pass this to NSPR/NSS
6428 DLLFLAGS="$DLLFLAGS -MANIFEST:NO"
6432 AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
6436 AC_ARG_WITH([valgrind],
6437 [ --with-valgrind Enable valgrind integration hooks],
6438 [enable_valgrind="yes"], [enable_valgrind="no"])
6439 AC_CHECK_HEADER([valgrind/valgrind.h], [], [enable_valgrind="no"])
6440 if test "x$enable_valgrind" = "xyes" ; then
6441 AC_DEFINE(MOZ_VALGRIND)
6444 AC_SUBST(MOZ_MEMORY)
6445 AC_SUBST(WIN32_CRT_SRC_DIR)
6446 AC_SUBST(WIN32_CUSTOM_CRT_DIR)
6449 dnl Need to set this for make because NSS doesn't have configure
6452 dnl ========================================================
6453 dnl = Use malloc wrapper lib
6454 dnl ========================================================
6455 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
6456 [ --enable-wrap-malloc Wrap malloc calls (gnu linker only)],
6460 if test -n "$_WRAP_MALLOC"; then
6461 if test "$GNU_CC"; then
6462 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"
6463 MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) -o $@'
6467 dnl ========================================================
6468 dnl = Location of malloc wrapper lib
6469 dnl ========================================================
6470 MOZ_ARG_WITH_STRING(wrap-malloc,
6471 [ --with-wrap-malloc=DIR Location of malloc wrapper library],
6472 WRAP_MALLOC_LIB=$withval)
6474 dnl ========================================================
6475 dnl = Use Electric Fence
6476 dnl ========================================================
6477 MOZ_ARG_ENABLE_BOOL(efence,
6478 [ --enable-efence Link with Electric Fence],
6481 if test -n "$_ENABLE_EFENCE"; then
6482 AC_CHECK_LIB(efence,malloc)
6485 dnl ========================================================
6487 dnl ========================================================
6488 MOZ_ARG_ENABLE_BOOL(jprof,
6489 [ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof)],
6492 if test -n "$MOZ_JPROF"; then
6493 AC_DEFINE(MOZ_JPROF)
6496 dnl ========================================================
6498 dnl ========================================================
6499 MOZ_ARG_ENABLE_BOOL(shark,
6500 [ --enable-shark Enable shark remote profiling (needs CHUD framework)],
6503 if test -n "$MOZ_SHARK"; then
6504 AC_DEFINE(MOZ_SHARK)
6507 dnl ========================================================
6509 dnl ========================================================
6510 MOZ_ARG_ENABLE_BOOL(callgrind,
6511 [ --enable-callgrind Enable callgrind profiling],
6514 if test -n "$MOZ_CALLGRIND"; then
6515 AC_DEFINE(MOZ_CALLGRIND)
6518 dnl ========================================================
6520 dnl ========================================================
6521 MOZ_ARG_ENABLE_BOOL(vtune,
6522 [ --enable-vtune Enable vtune profiling],
6525 if test -n "$MOZ_VTUNE"; then
6526 AC_DEFINE(MOZ_VTUNE)
6529 dnl ========================================================
6530 dnl = Enable static checking using gcc-dehydra
6531 dnl ========================================================
6533 MOZ_ARG_WITH_STRING(static-checking,
6534 [ --with-static-checking=path/to/gcc_dehydra.so
6535 Enable static checking of code using GCC-dehydra],
6536 DEHYDRA_PATH=$withval,
6539 if test -n "$DEHYDRA_PATH"; then
6540 if ! test -f "$DEHYDRA_PATH"; then
6541 AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
6543 AC_DEFINE(NS_STATIC_CHECKING)
6545 AC_SUBST(DEHYDRA_PATH)
6547 dnl ========================================================
6548 dnl = Enable stripping of libs & executables
6549 dnl ========================================================
6550 MOZ_ARG_ENABLE_BOOL(strip,
6551 [ --enable-strip Enable stripping of libs & executables ],
6555 dnl ========================================================
6556 dnl = Enable stripping of libs & executables when packaging
6557 dnl ========================================================
6558 MOZ_ARG_ENABLE_BOOL(install-strip,
6559 [ --enable-install-strip Enable stripping of libs & executables when packaging ],
6563 dnl ========================================================
6564 dnl = --enable-elf-dynstr-gc
6565 dnl ========================================================
6566 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
6567 [ --enable-elf-dynstr-gc Enable elf dynstr garbage collector (opt builds only)],
6568 USE_ELF_DYNSTR_GC=1,
6569 USE_ELF_DYNSTR_GC= )
6571 dnl ========================================================
6572 dnl = --enable-old-abi-compat-wrappers
6573 dnl ========================================================
6574 dnl on x86 linux, the current builds of some popular plugins (notably
6575 dnl flashplayer and real) expect a few builtin symbols from libgcc
6576 dnl which were available in some older versions of gcc. However,
6577 dnl they're _NOT_ available in newer versions of gcc (eg 3.1), so if
6578 dnl we want those plugin to work with a gcc-3.1 built binary, we need
6579 dnl to provide these symbols. MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS defaults
6580 dnl to true on x86 linux, and false everywhere else.
6583 MOZ_ARG_ENABLE_BOOL(old-abi-compat-wrappers,
6584 [ --enable-old-abi-compat-wrappers
6585 Support old GCC ABI symbols to ease the pain
6586 of the linux compiler change],
6587 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1,
6588 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS= )
6589 if test "$COMPILE_ENVIRONMENT"; then
6590 if test "$MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS"; then
6593 AC_CHECK_FUNCS(__builtin_vec_new __builtin_vec_delete __builtin_new __builtin_delete __pure_virtual)
6595 AC_DEFINE(MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS)
6597 fi # COMPILE_ENVIRONMENT
6599 dnl ========================================================
6600 dnl = --enable-prebinding
6601 dnl ========================================================
6602 MOZ_ARG_ENABLE_BOOL(prebinding,
6603 [ --enable-prebinding Enable prebinding (Mac OS X only)],
6607 dnl ========================================================
6609 dnl = Profiling and Instrumenting
6611 dnl ========================================================
6612 MOZ_ARG_HEADER(Profiling and Instrumenting)
6614 dnl ========================================================
6615 dnl = Enable timeline service, which provides lightweight
6616 dnl = instrumentation of mozilla for performance measurement.
6617 dnl = Timeline is off by default.
6618 dnl ========================================================
6619 MOZ_ARG_ENABLE_BOOL(timeline,
6620 [ --enable-timeline Enable timeline services ],
6623 if test -n "$MOZ_TIMELINE"; then
6624 AC_DEFINE(MOZ_TIMELINE)
6627 dnl ========================================================
6628 dnl Turn on reflow counting
6629 dnl ========================================================
6630 MOZ_ARG_ENABLE_BOOL(reflow-perf,
6631 [ --enable-reflow-perf Enable reflow performance tracing],
6634 if test -n "$MOZ_REFLOW_PREF"; then
6635 AC_DEFINE(MOZ_REFLOW_PREF)
6637 AC_SUBST(MOZ_REFLOW_PERF)
6639 dnl ========================================================
6640 dnl Enable performance metrics.
6641 dnl ========================================================
6642 MOZ_ARG_ENABLE_BOOL(perf-metrics,
6643 [ --enable-perf-metrics Enable performance metrics],
6646 if test -n "$MOZ_PERF_METRICS"; then
6647 AC_DEFINE(MOZ_PERF_METRICS)
6650 dnl ========================================================
6651 dnl Enable code size metrics.
6652 dnl ========================================================
6653 MOZ_ARG_ENABLE_BOOL(codesighs,
6654 [ --enable-codesighs Enable code size analysis tools],
6655 _ENABLE_CODESIGHS=1,
6656 _ENABLE_CODESIGHS= )
6657 if test -n "$_ENABLE_CODESIGHS"; then
6658 if test -d $srcdir/tools/codesighs; then
6661 AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
6665 dnl ========================================================
6666 dnl = Add support for Eazel profiler
6667 dnl ========================================================
6668 MOZ_ARG_ENABLE_BOOL(eazel-profiler-support,
6669 [ --enable-eazel-profiler-support
6670 Enable Corel/Eazel profiler support],
6671 ENABLE_EAZEL_PROFILER=1,
6672 ENABLE_EAZEL_PROFILER= )
6673 if test -n "$ENABLE_EAZEL_PROFILER"; then
6674 AC_DEFINE(ENABLE_EAZEL_PROFILER)
6676 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6677 EAZEL_PROFILER_CFLAGS="-g -O -gdwarf-2 -finstrument-functions -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
6678 EAZEL_PROFILER_LIBS="-lprofiler -lpthread"
6681 MOZ_ARG_ENABLE_STRING(profile-modules,
6682 [ --enable-profile-modules
6683 Enable/disable profiling for specific modules],
6684 [ MOZ_PROFILE_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6686 MOZ_ARG_ENABLE_BOOL(insure,
6687 [ --enable-insure Enable insure++ instrumentation (linux only)],
6690 if test -n "$_ENABLE_INSURE"; then
6694 MOZ_INSURE_EXCLUDE_DIRS="config"
6697 MOZ_ARG_WITH_STRING(insure-dirs,
6698 [ --with-insure-dirs=DIRS
6699 Dirs to instrument with insure ],
6700 MOZ_INSURE_DIRS=$withval )
6702 MOZ_ARG_WITH_STRING(insure-exclude-dirs,
6703 [ --with-insure-exclude-dirs=DIRS
6704 Dirs to not instrument with insure ],
6705 MOZ_INSURE_EXCLUDE_DIRS="config $withval" )
6707 dnl ========================================================
6708 dnl = Support for Quantify (Windows)
6709 dnl ========================================================
6710 MOZ_ARG_ENABLE_BOOL(quantify,
6711 [ --enable-quantify Enable Quantify support (Windows only) ],
6715 dnl ========================================================
6716 dnl = Support for demangling undefined symbols
6717 dnl ========================================================
6718 if test -z "$SKIP_LIBRARY_CHECKS"; then
6721 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
6725 # Demangle only for debug or trace-malloc builds
6726 MOZ_DEMANGLE_SYMBOLS=
6727 if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
6728 MOZ_DEMANGLE_SYMBOLS=1
6729 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
6731 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
6733 dnl ========================================================
6734 dnl = Support for gcc stack unwinding (from gcc 3.3)
6735 dnl ========================================================
6736 if test "$HAVE_GCC3_ABI" && test -z "$SKIP_LIBRARY_CHECKS"; then
6737 AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
6740 dnl ========================================================
6744 dnl ========================================================
6745 MOZ_ARG_HEADER(Misc. Options)
6747 dnl ========================================================
6748 dnl update xterm title
6749 dnl ========================================================
6750 MOZ_ARG_ENABLE_BOOL(xterm-updates,
6751 [ --enable-xterm-updates Update XTERM titles with current command.],
6755 dnl =========================================================
6757 dnl =========================================================
6758 MOZ_ARG_ENABLE_STRING([chrome-format],
6759 [ --enable-chrome-format=jar|flat|both|symlink
6760 Select FORMAT of chrome files (default=jar)],
6761 MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
6763 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
6764 MOZ_CHROME_FILE_FORMAT=jar
6767 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
6768 test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
6769 test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
6770 test "$MOZ_CHROME_FILE_FORMAT" != "both"; then
6771 AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, or symlink])
6774 dnl ========================================================
6775 dnl = Define default location for MOZILLA_FIVE_HOME
6776 dnl ========================================================
6777 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
6778 [ --with-default-mozilla-five-home
6779 Set the default value for MOZILLA_FIVE_HOME],
6780 [ val=`echo $withval`
6781 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
6783 dnl ========================================================
6784 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
6785 dnl ========================================================
6786 MOZ_ARG_WITH_STRING(user-appdir,
6787 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
6788 [ val=`echo $withval`
6789 if echo "$val" | grep "\/" >/dev/null; then
6790 AC_MSG_ERROR("Homedir must be single relative path.")
6795 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
6797 dnl ========================================================
6798 dnl = Doxygen configuration
6799 dnl ========================================================
6800 dnl Use commas to specify multiple dirs to this arg
6801 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
6802 MOZ_ARG_WITH_STRING(doc-input-dirs,
6803 [ --with-doc-input-dirs=DIRS
6804 Header/idl dirs to create docs from],
6805 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6806 AC_SUBST(MOZ_DOC_INPUT_DIRS)
6808 dnl Use commas to specify multiple dirs to this arg
6809 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
6810 MOZ_ARG_WITH_STRING(doc-include-dirs,
6811 [ --with-doc-include-dirs=DIRS
6812 Include dirs to preprocess doc headers],
6813 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6814 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
6816 MOZ_DOC_OUTPUT_DIR='./dist/docs'
6817 MOZ_ARG_WITH_STRING(doc-output-dir,
6818 [ --with-doc-output-dir=DIR
6819 Dir to generate docs into],
6820 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
6821 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
6823 if test -z "$SKIP_COMPILER_CHECKS"; then
6824 dnl ========================================================
6826 dnl = Compiler Options
6828 dnl ========================================================
6829 MOZ_ARG_HEADER(Compiler Options)
6831 dnl ========================================================
6832 dnl Check for gcc -pipe support
6833 dnl ========================================================
6834 AC_MSG_CHECKING([for gcc -pipe support])
6835 if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
6836 echo '#include <stdio.h>' > dummy-hello.c
6837 echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
6838 ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
6839 cat dummy-hello.s | ${AS_BIN} -o dummy-hello.S - 2>&5
6840 if test $? = 0; then
6845 if test "$_res_as_stdin" = "yes"; then
6846 _SAVE_CFLAGS=$CFLAGS
6847 CFLAGS="$CFLAGS -pipe"
6848 AC_TRY_COMPILE( [ #include <stdio.h> ],
6849 [printf("Hello World\n");],
6850 [_res_gcc_pipe="yes"],
6851 [_res_gcc_pipe="no"] )
6852 CFLAGS=$_SAVE_CFLAGS
6854 if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then
6856 CFLAGS="$CFLAGS -pipe"
6857 CXXFLAGS="$CXXFLAGS -pipe"
6861 rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
6862 AC_MSG_RESULT([$_res])
6867 dnl pass -Wno-long-long to the compiler
6868 MOZ_ARG_ENABLE_BOOL(long-long-warning,
6869 [ --enable-long-long-warning
6870 Warn about use of non-ANSI long long type],
6871 _IGNORE_LONG_LONG_WARNINGS=,
6872 _IGNORE_LONG_LONG_WARNINGS=1)
6874 if test "$_IGNORE_LONG_LONG_WARNINGS"; then
6875 _SAVE_CFLAGS="$CFLAGS"
6876 CFLAGS="$CFLAGS ${_COMPILER_PREFIX}-Wno-long-long"
6877 AC_MSG_CHECKING([whether compiler supports -Wno-long-long])
6878 AC_TRY_COMPILE([], [return(0);],
6879 [ _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6880 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6881 result="yes" ], result="no")
6882 AC_MSG_RESULT([$result])
6883 CFLAGS="$_SAVE_CFLAGS"
6886 dnl ========================================================
6887 dnl Profile guided optimization
6888 dnl ========================================================
6889 dnl Test for profiling options
6890 dnl Under gcc 3.3, use -fprofile-arcs/-fbranch-probabilities
6891 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
6893 dnl Provide a switch to disable PGO even when called via profiledbuild.
6894 MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
6895 [ --disable-profile-guided-optimization
6896 Don't build with PGO even if called via make profiledbuild],
6897 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
6898 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
6900 AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
6902 _SAVE_CFLAGS="$CFLAGS"
6903 CFLAGS="$CFLAGS -fprofile-generate"
6905 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
6906 AC_TRY_COMPILE([], [return 0;],
6907 [ PROFILE_GEN_CFLAGS="-fprofile-generate"
6908 result="yes" ], result="no")
6909 AC_MSG_RESULT([$result])
6911 if test $result = "yes"; then
6912 PROFILE_GEN_LDFLAGS="-fprofile-generate"
6913 PROFILE_USE_CFLAGS="-fprofile-use"
6914 PROFILE_USE_LDFLAGS="-fprofile-use"
6916 CFLAGS="$_SAVE_CFLAGS -fprofile-arcs"
6917 AC_MSG_CHECKING([whether C compiler supports -fprofile-arcs])
6918 AC_TRY_COMPILE([], [return 0;],
6919 [ PROFILE_GEN_CFLAGS="-fprofile-arcs"
6920 result="yes" ], result="no")
6921 AC_MSG_RESULT([$result])
6922 if test $result = "yes"; then
6923 PROFILE_USE_CFLAGS="-fbranch-probabilities"
6925 # don't really care, this is an old GCC
6926 PROFILE_GEN_LDFLAGS=
6927 PROFILE_USE_LDFLAGS=
6930 CFLAGS="$_SAVE_CFLAGS"
6932 if test -n "$INTEL_CC"; then
6933 PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
6934 PROFILE_GEN_LDFLAGS=
6935 PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
6936 PROFILE_USE_LDFLAGS=
6939 dnl Sun Studio on Solaris
6940 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
6941 PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
6942 PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
6943 if test "$CPU_ARCH" != "sparc"; then
6944 PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
6945 PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
6947 PROFILE_USE_CFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
6948 PROFILE_USE_LDFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
6952 AC_SUBST(PROFILE_GEN_CFLAGS)
6953 AC_SUBST(PROFILE_GEN_LDFLAGS)
6954 AC_SUBST(PROFILE_USE_CFLAGS)
6955 AC_SUBST(PROFILE_USE_LDFLAGS)
6959 dnl ========================================================
6960 dnl Test for -pedantic bustage
6961 dnl ========================================================
6962 MOZ_ARG_DISABLE_BOOL(pedantic,
6963 [ --disable-pedantic Issue all warnings demanded by strict ANSI C ],
6965 if test "$_PEDANTIC"; then
6966 _SAVE_CXXFLAGS=$CXXFLAGS
6967 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
6968 AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
6969 AC_TRY_COMPILE([$configure_static_assert_macros],
6970 [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
6971 result="no", result="yes" )
6972 AC_MSG_RESULT([$result])
6973 CXXFLAGS="$_SAVE_CXXFLAGS"
6977 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic"
6978 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
6981 AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic. Reconfigure using --disable-pedantic. ])
6986 dnl ========================================================
6987 dnl Test for correct temporary object destruction order
6988 dnl ========================================================
6989 dnl We want to make sure the compiler follows the C++ spec here as
6990 dnl xpcom and the string classes depend on it (bug 235381).
6991 AC_MSG_CHECKING([for correct temporary object destruction order])
6992 AC_TRY_RUN([ class A {
6993 public: A(int& x) : mValue(x) {}
6995 operator char**() { return 0; }
6996 private: int& mValue;
6998 void func(char **arg) {}
7009 result="yes", result="no", result="maybe")
7010 AC_MSG_RESULT([$result])
7012 if test "$result" = "no"; then
7013 AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
7016 dnl ========================================================
7017 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
7018 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
7019 dnl raw pointers in nsCOMPtr.h. (VC++ has the same bug.)
7020 dnl ========================================================
7021 _SAVE_CXXFLAGS=$CXXFLAGS
7022 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
7023 AC_CACHE_CHECK(for correct overload resolution with const and templates,
7024 ac_nscap_nonconst_opeq_bug,
7033 template <class T, class U>
7034 int operator==(const Pointer<T>& rhs, U* lhs)
7036 return rhs.myPtr == lhs;
7039 template <class T, class U>
7040 int operator==(const Pointer<T>& rhs, const U* lhs)
7042 return rhs.myPtr == lhs;
7050 ac_nscap_nonconst_opeq_bug="no",
7051 ac_nscap_nonconst_opeq_bug="yes")])
7052 CXXFLAGS="$_SAVE_CXXFLAGS"
7054 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
7055 AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
7057 fi # SKIP_COMPILER_CHECKS
7059 dnl ========================================================
7061 dnl Should be smarter and check that the compiler does indeed have rtti
7062 dnl ========================================================
7063 MOZ_ARG_ENABLE_BOOL(cpp-rtti,
7064 [ --enable-cpp-rtti Enable C++ RTTI ],
7065 [ _MOZ_USE_RTTI=1 ],
7068 if test "$_MOZ_USE_RTTI"; then
7069 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
7071 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
7074 AC_SUBST(_MOZ_RTTI_FLAGS_ON)
7076 dnl ========================================================
7077 dnl C++ exceptions (g++/egcs only - for now)
7078 dnl Should be smarter and check that the compiler does indeed have exceptions
7079 dnl ========================================================
7080 MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
7081 [ --enable-cpp-exceptions Enable C++ exceptions ],
7082 [ _MOZ_CPP_EXCEPTIONS=1 ],
7083 [ _MOZ_CPP_EXCEPTIONS= ])
7085 if test "$_MOZ_CPP_EXCEPTIONS"; then
7086 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_ON
7088 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_OFF
7091 # Irix & OSF native compilers do not like exception declarations
7092 # when exceptions are disabled
7093 if test -n "$MIPSPRO_CXX" -o -n "$COMPAQ_CXX" -o -n "$VACPP"; then
7094 AC_DEFINE(CPP_THROW_NEW, [])
7096 AC_DEFINE(CPP_THROW_NEW, [throw()])
7100 dnl ========================================================
7102 dnl = Build depencency options
7104 dnl ========================================================
7105 MOZ_ARG_HEADER(Build dependencies)
7107 dnl ========================================================
7108 dnl = Do not auto generate dependency info
7109 dnl ========================================================
7111 MOZ_ARG_DISABLE_BOOL(auto-deps,
7112 [ --disable-auto-deps Do not automatically generate dependency info],
7116 if test -n "$MOZ_AUTO_DEPS"; then
7117 dnl ========================================================
7118 dnl = Use mkdepend instead of $CC -MD for dependency generation
7119 dnl ========================================================
7121 MOZ_ARG_DISABLE_BOOL(md,
7122 [ --disable-md Do not use compiler-based dependencies ],
7125 [dnl Default is to turn on -MD if using GNU-compatible compilers
7126 if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
7129 dnl Default is to use -xM if using Sun Studio on Solaris
7130 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
7133 if test "$_cpp_md_flag"; then
7135 if test "$OS_ARCH" = "OpenVMS"; then
7136 _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(basename $(@F)).pp))'
7138 _DEPEND_CFLAGS='$(filter-out %/.pp,-Wp,-MD,$(MDDEPDIR)/$(basename $(@F)).pp)'
7140 dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7141 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
7146 _USE_CPP_INCLUDE_FLAG=
7147 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7148 _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7152 AC_SUBST(MOZ_AUTO_DEPS)
7153 AC_SUBST(COMPILER_DEPEND)
7157 dnl ========================================================
7159 dnl = Static Build Options
7161 dnl ========================================================
7162 MOZ_ARG_HEADER(Static build options)
7164 MOZ_ARG_ENABLE_BOOL(static,
7165 [ --enable-static Enable building of internal static libs],
7166 BUILD_STATIC_LIBS=1,
7169 dnl Disable libxul in debug builds, but not for xulrunner.
7170 if test -n "$MOZ_DEBUG" -a "$MOZ_BUILD_APP" != "xulrunner"; then
7174 MOZ_ARG_ENABLE_BOOL(libxul,
7175 [ --enable-libxul Enable building of libxul],
7176 MOZ_ENABLE_LIBXUL=1,
7179 if test -n "$MOZ_STATIC_BUILD_UNSUPPORTED" -a -n "$BUILD_STATIC_LIBS"; then
7180 AC_MSG_ERROR([--enable-static is not supported for building $MOZ_APP_NAME. You probably want --enable-libxul.])
7183 if test -n "$MOZ_ENABLE_LIBXUL" -a -n "$BUILD_STATIC_LIBS"; then
7184 AC_MSG_ERROR([--enable-libxul is not compatible with --enable-static])
7187 if test -n "$MOZ_ENABLE_LIBXUL" -a -z "$MOZ_XUL_APP"; then
7188 AC_MSG_ERROR([--enable-libxul is only compatible with toolkit XUL applications.])
7191 if test -n "$MOZ_ENABLE_LIBXUL"; then
7192 XPCOM_LIBS="$LIBXUL_LIBS"
7193 AC_DEFINE(MOZ_ENABLE_LIBXUL)
7195 if test -n "$BUILD_STATIC_LIBS"; then
7196 AC_DEFINE(MOZ_STATIC_BUILD)
7198 XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS"
7201 dnl ========================================================
7202 dnl = Force JS to be a static lib
7203 dnl ========================================================
7204 MOZ_ARG_ENABLE_BOOL(js-static-build,
7205 [ --enable-js-static-build Force js to be a static lib],
7209 AC_SUBST(JS_STATIC_BUILD)
7211 if test -n "$JS_STATIC_BUILD"; then
7212 AC_DEFINE(EXPORT_JS_API)
7214 if test -z "$BUILD_STATIC_LIBS"; then
7215 AC_MSG_ERROR([--enable-js-static-build is only compatible with --enable-static])
7220 dnl ========================================================
7222 dnl = Standalone module options
7224 dnl ========================================================
7225 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7227 dnl Check for GLib and libIDL.
7228 dnl ========================================================
7229 case "$target_os" in
7230 msvc*|mks*|cygwin*|mingw*|wince*)
7231 SKIP_IDL_CHECK="yes"
7238 if test -z "$COMPILE_ENVIRONMENT"; then
7239 SKIP_IDL_CHECK="yes"
7242 dnl = Allow users to disable libIDL checking for standalone modules
7243 MOZ_ARG_WITHOUT_BOOL(libIDL,
7244 [ --without-libIDL Skip check for libIDL (standalone modules only)],
7245 SKIP_IDL_CHECK="yes")
7247 if test "$SKIP_IDL_CHECK" = "no"
7250 if test "$MACOS_SDK_DIR"; then
7251 dnl xpidl, and therefore libIDL, is only needed on the build host.
7252 dnl Don't build it against the SDK, as that causes problems.
7253 _MACSAVE_CFLAGS="$CFLAGS"
7254 _MACSAVE_LIBS="$LIBS"
7255 _MACSAVE_LDFLAGS="$LDFLAGS"
7256 _MACSAVE_NEXT_ROOT="$NEXT_ROOT"
7258 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"`
7259 LIBS=`echo $LIBS|sed -e "s?-L${MACOS_SDK_DIR}/usr/lib[^ ]*??g"`
7260 LDFLAGS=`echo $LDFLAGS|sed -e "s?-Wl,-syslibroot,${MACOS_SDK_DIR}??g"`
7265 if test "$MOZ_ENABLE_GTK2"; then
7266 PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0 glib-2.0 gobject-2.0, _LIBIDL_FOUND=1,_LIBIDL_FOUND=)
7268 dnl if no gtk/libIDL1 or gtk2/libIDL2 combination was found, fall back
7269 dnl to either libIDL1 or libIDL2.
7270 if test -z "$_LIBIDL_FOUND"; then
7271 AM_PATH_LIBIDL($LIBIDL_VERSION,_LIBIDL_FOUND=1)
7272 if test -z "$_LIBIDL_FOUND"; then
7273 PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0,_LIBIDL_FOUND=1)
7277 dnl If we don't have a libIDL config program & not cross-compiling,
7278 dnl look for orbit-config instead.
7280 if test -z "$_LIBIDL_FOUND" && test -z "$CROSS_COMPILE"; then
7281 AC_PATH_PROGS(ORBIT_CONFIG, $ORBIT_CONFIG orbit-config)
7282 if test -n "$ORBIT_CONFIG"; then
7283 AC_MSG_CHECKING([for ORBit libIDL usability])
7284 _ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags`
7285 _ORBIT_LIBS=`${ORBIT_CONFIG} client --libs`
7286 _ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}`
7287 _ORBIT_LIB_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-L/); } }' -- ${_ORBIT_LIBS}`
7288 LIBIDL_CFLAGS="$_ORBIT_INC_PATH"
7289 LIBIDL_LIBS="$_ORBIT_LIB_PATH -lIDL -lglib"
7291 _SAVE_CFLAGS="$CFLAGS"
7293 CFLAGS="$LIBIDL_CFLAGS $CFLAGS"
7294 LIBS="$LIBIDL_LIBS $LIBS"
7297 #include <libIDL/IDL.h>
7300 s=strdup(IDL_get_libver_string());
7313 AC_MSG_RESULT($result)
7314 CFLAGS="$_SAVE_CFLAGS"
7318 if test -z "$_LIBIDL_FOUND"; then
7319 AC_MSG_ERROR([libIDL not found.
7320 libIDL $LIBIDL_VERSION or higher is required.])
7322 if test "$MACOS_SDK_DIR"; then
7323 CFLAGS="$_MACSAVE_CFLAGS"
7324 LIBS="$_MACSAVE_LIBS"
7325 LDFLAGS="$_MACSAVE_LDFLAGS"
7326 if test -n "$_MACSAVE_NEXT_ROOT" ; then
7327 export NEXT_ROOT="$_MACSAVE_NEXT_ROOT"
7332 if test -n "$CROSS_COMPILE"; then
7333 if test -z "$HOST_LIBIDL_CONFIG"; then
7334 HOST_LIBIDL_CONFIG="$LIBIDL_CONFIG"
7336 if test -n "$HOST_LIBIDL_CONFIG" && test "$HOST_LIBIDL_CONFIG" != "no"; then
7337 HOST_LIBIDL_CFLAGS=`${HOST_LIBIDL_CONFIG} --cflags`
7338 HOST_LIBIDL_LIBS=`${HOST_LIBIDL_CONFIG} --libs`
7340 HOST_LIBIDL_CFLAGS="$LIBIDL_CFLAGS"
7341 HOST_LIBIDL_LIBS="$LIBIDL_LIBS"
7345 if test -z "$SKIP_PATH_CHECKS"; then
7346 if test -z "${GLIB_CFLAGS}" || test -z "${GLIB_LIBS}" ; then
7347 if test "$MOZ_ENABLE_GTK2"; then
7348 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
7350 AM_PATH_GLIB(${GLIB_VERSION})
7355 if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then
7356 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
7359 AC_SUBST(LIBIDL_CFLAGS)
7360 AC_SUBST(LIBIDL_LIBS)
7361 AC_SUBST(STATIC_LIBIDL)
7362 AC_SUBST(GLIB_CFLAGS)
7364 AC_SUBST(GLIB_GMODULE_LIBS)
7365 AC_SUBST(HOST_LIBIDL_CONFIG)
7366 AC_SUBST(HOST_LIBIDL_CFLAGS)
7367 AC_SUBST(HOST_LIBIDL_LIBS)
7369 dnl ========================================================
7370 dnl Check for libart
7371 dnl ========================================================
7372 if test "$MOZ_SVG_RENDERER_LIBART"; then
7373 if test ! -f $topsrcdir/other-licenses/libart_lgpl/Makefile.in; then
7374 AC_MSG_ERROR([You must check out the mozilla version of libart. Use
7375 mk_add_options MOZ_CO_MODULE=mozilla/other-licenses/libart_lgpl])
7378 dnl libart's configure hasn't been run yet, but we know what the
7379 dnl answer should be anyway
7380 MOZ_LIBART_CFLAGS='-I${DIST}/include/libart_lgpl'
7381 case "$target_os" in
7382 msvc*|mks*|cygwin*|mingw*|wince*)
7383 MOZ_LIBART_LIBS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)moz_art_lgpl.$(IMPORT_LIB_SUFFIX)'
7386 MOZ_LIBART_LIBS='-lmoz_art -lm'
7389 MOZ_LIBART_LIBS='-lmoz_art_lgpl -lroot -lbe'
7392 MOZ_LIBART_LIBS='-lmoz_art_lgpl -lm'
7398 AC_SUBST(MOZ_LIBART_CFLAGS)
7399 AC_SUBST(MOZ_LIBART_LIBS)
7401 dnl ========================================================
7403 dnl ========================================================
7404 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
7407 MOZ_ARG_ENABLE_BOOL(system-cairo,
7408 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
7412 # Check for headers defining standard int types.
7413 AC_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
7415 if test "$MOZ_TREE_CAIRO"; then
7416 AC_DEFINE(MOZ_TREE_CAIRO)
7418 # For now we assume that we will have a uint64_t available through
7419 # one of the above headers or mozstdint.h.
7420 AC_DEFINE(HAVE_UINT64_T)
7422 # Define macros for cairo-features.h
7423 if test "$MOZ_X11"; then
7424 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
7425 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
7426 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
7427 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7428 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7429 MOZ_ENABLE_CAIRO_FT=1
7430 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
7432 if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
7433 QPAINTER_SURFACE_FEATURE="#define CAIRO_HAS_QPAINTER_SURFACE 1"
7435 if test "$MOZ_WIDGET_TOOLKIT" = "mac" -o "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
7436 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
7437 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
7438 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
7440 if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
7441 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
7442 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
7443 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7445 if test "$MOZ_WIDGET_TOOLKIT" = "os2"; then
7446 OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
7447 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7448 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7449 MOZ_ENABLE_CAIRO_FT=1
7450 CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
7451 CAIRO_FT_LIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
7453 if test "$MOZ_ENABLE_GLITZ"; then
7454 GLITZ_SURFACE_FEATURE="#define CAIRO_HAS_GLITZ_SURFACE 1"
7456 if test "$MOZ_WIDGET_TOOLKIT" = "beos"; then
7457 PKG_CHECK_MODULES(CAIRO_FT, fontconfig freetype2)
7458 BEOS_SURFACE_FEATURE="#define CAIRO_HAS_BEOS_SURFACE 1"
7459 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7460 MOZ_ENABLE_CAIRO_FT=1
7462 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
7463 AC_SUBST(CAIRO_FT_CFLAGS)
7465 if test "$MOZ_DEBUG"; then
7466 SANITY_CHECKING_FEATURE="#define CAIRO_DO_SANITY_CHECKING 1"
7468 SANITY_CHECKING_FEATURE="#undef CAIRO_DO_SANITY_CHECKING"
7471 PNG_FUNCTIONS_FEATURE="#define CAIRO_HAS_PNG_FUNCTIONS 1"
7473 AC_SUBST(PS_SURFACE_FEATURE)
7474 AC_SUBST(PDF_SURFACE_FEATURE)
7475 AC_SUBST(SVG_SURFACE_FEATURE)
7476 AC_SUBST(XLIB_SURFACE_FEATURE)
7477 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
7478 AC_SUBST(QUARTZ_SURFACE_FEATURE)
7479 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
7480 AC_SUBST(XCB_SURFACE_FEATURE)
7481 AC_SUBST(WIN32_SURFACE_FEATURE)
7482 AC_SUBST(OS2_SURFACE_FEATURE)
7483 AC_SUBST(BEOS_SURFACE_FEATURE)
7484 AC_SUBST(GLITZ_SURFACE_FEATURE)
7485 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
7486 AC_SUBST(FT_FONT_FEATURE)
7487 AC_SUBST(WIN32_FONT_FEATURE)
7488 AC_SUBST(QUARTZ_FONT_FEATURE)
7489 AC_SUBST(PNG_FUNCTIONS_FEATURE)
7490 AC_SUBST(QPAINTER_SURFACE_FEATURE)
7492 if test "$_WIN32_MSVC"; then
7493 MOZ_CAIRO_LIBS='$(DEPTH)/gfx/cairo/cairo/src/mozcairo.lib $(DEPTH)/gfx/cairo/libpixman/src/mozlibpixman.lib'
7494 if test "$MOZ_ENABLE_GLITZ"; then
7495 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'$(DEPTH)/gfx/cairo/glitz/src/mozglitz.lib $(DEPTH)/gfx/cairo/glitz/src/wgl/mozglitzwgl.lib'
7498 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"
7500 if test "$MOZ_X11"; then
7501 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS -lXrender -lfreetype -lfontconfig"
7504 if test "$MOZ_ENABLE_GLITZ"; then
7505 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src -lmozglitz'
7506 if test "$MOZ_X11"; then
7507 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src/glx -lmozglitzglx -lGL'
7509 if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
7510 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src/wgl -lmozglitzwgl'
7515 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
7516 mv -f $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig 2> /dev/null
7519 PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION freetype2 fontconfig)
7520 MOZ_CAIRO_CFLAGS=$CAIRO_CFLAGS
7521 MOZ_CAIRO_LIBS=$CAIRO_LIBS
7522 if test "$MOZ_X11"; then
7523 PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
7524 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
7525 MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
7529 AC_SUBST(MOZ_TREE_CAIRO)
7530 AC_SUBST(MOZ_CAIRO_CFLAGS)
7531 AC_SUBST(MOZ_CAIRO_LIBS)
7533 dnl ========================================================
7535 dnl ========================================================
7538 MOZ_ARG_ENABLE_BOOL(system-lcms,
7539 [ --enable-system-lcms Use system lcms (located with pkgconfig)],
7543 if test -z "$MOZ_NATIVE_LCMS"
7546 if test "$_WIN32_MSVC"; then
7547 if test -z "$BUILD_STATIC_LIBS" -a -z "$MOZ_ENABLE_LIBXUL"; then
7548 LCMS_CFLAGS=-DLCMS_DLL
7550 LCMS_LIBS='$(LIBXUL_DIST)/lib/mozlcms.lib'
7552 LCMS_LIBS='-L$(LIBXUL_DIST)/bin -lmozlcms'
7555 PKG_CHECK_MODULES(LCMS, lcms >= $LCMS_VERSION)
7558 AC_SUBST(MOZ_NATIVE_LCMS)
7559 AC_SUBST(LCMS_CFLAGS)
7562 dnl ========================================================
7564 dnl ========================================================
7565 MOZ_ARG_DISABLE_BOOL(xul,
7566 [ --disable-xul Disable XUL],
7568 if test "$MOZ_XUL"; then
7571 dnl remove extensions that require XUL
7572 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
7577 dnl ========================================================
7578 dnl Two ways to enable Python support:
7579 dnl --enable-extensions=python # select all available.
7580 dnl (MOZ_PYTHON_EXTENSIONS contains the list of extensions)
7582 dnl --enable-extensions=python/xpcom,... # select individual ones
7584 dnl If either is used, we locate the Python to use.
7585 dnl ========================================================
7587 dnl If 'python' appears anywhere in the extensions list, go lookin'...
7588 if test `echo "$MOZ_EXTENSIONS" | grep -c python` -ne 0; then
7589 dnl Allow PYTHON to point to the Python interpreter to use
7590 dnl (note that it must be the python executable - which we
7591 dnl run to locate the relevant paths etc)
7592 dnl If not set, we use whatever Python we can find.
7594 dnl Ask Python what its version number is
7596 MOZ_PYTHON_VER=`$PYTHON -c "import sys;print '%d%d' % sys.version_info[0:2]"`
7597 MOZ_PYTHON_VER_DOTTED=`$PYTHON -c "import sys;print '%d.%d' % sys.version_info[0:2]"`
7599 dnl Ask for the Python "prefix" (ie, home/source dir)
7600 MOZ_PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
7601 dnl Setup the include and library directories.
7602 if test "$OS_ARCH" = "WINNT"; then
7603 MOZ_PYTHON_PREFIX=`$CYGPATH_W $MOZ_PYTHON_PREFIX | $CYGPATH_S`
7604 dnl Source trees have "include" and "PC" for .h, and "PCbuild" for .lib
7605 dnl Binary trees have "include" for .h, and "libs" for .lib
7606 dnl We add 'em both - along with quotes, to handle spaces.
7607 MOZ_PYTHON_DLL_SUFFIX=.pyd
7608 MOZ_PYTHON_INCLUDES="\"-I$MOZ_PYTHON_PREFIX/include\" \"-I$MOZ_PYTHON_PREFIX/PC\""
7609 MOZ_PYTHON_LIBS="\"/libpath:$MOZ_PYTHON_PREFIX/PCBuild\" \"/libpath:$MOZ_PYTHON_PREFIX/libs\""
7611 dnl Non-Windows include and libs
7612 MOZ_PYTHON_DLL_SUFFIX=$DLL_SUFFIX
7613 MOZ_PYTHON_INCLUDES="-I$MOZ_PYTHON_PREFIX/include/python$MOZ_PYTHON_VER_DOTTED"
7614 dnl Check for dynamic Python lib
7615 dnl - A static Python is no good - multiple dynamic libraries (xpcom
7616 dnl - core, xpcom loader, pydom etc) all need to share Python.
7617 dnl - Python 2.3's std --enable-shared configure option will
7618 dnl create a libpython2.3.so.1.0. We should first try this
7619 dnl dotted versioned .so file because this is the one that
7620 dnl the PyXPCOM build mechanics tries to link to.
7621 dnl XXX Should find a better way than hardcoding "1.0".
7622 dnl - Python developement tree dir layouts are NOT allowed here
7623 dnl because the PyXPCOM build just dies on it later anyway.
7624 dnl - Fixes to the above by Python/*nix knowledgable people welcome!
7625 if test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7626 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7627 elif test -f "$MOZ_PYTHON_PREFIX/lib64/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7628 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib64 -lpython$MOZ_PYTHON_VER_DOTTED"
7629 elif test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7630 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7631 elif test -f "$MOZ_PYTHON_PREFIX/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7632 dnl Don't Python development tree directory layout.
7633 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX -lpython$MOZ_PYTHON_VER_DOTTED"
7634 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.])
7635 elif test "$OS_ARCH" = "Darwin"; then
7636 dnl We do Darwin last, so if a custom non-framework build of
7637 dnl python is used on OSX, then it will be picked up first by
7638 dnl the logic above.
7639 MOZ_PYTHON_LIBS="-framework Python"
7641 AC_MSG_ERROR([Could not find build shared libraries for Python at $MOZ_PYTHON_PREFIX. This is required for PyXPCOM.])
7643 if test "$OS_ARCH" = "Linux"; then
7644 MOZ_PYTHON_LIBS="$MOZ_PYTHON_LIBS -lutil"
7647 dnl Handle "_d" on Windows
7648 if test "$OS_ARCH" = "WINNT" && test -n "$MOZ_DEBUG"; then
7649 MOZ_PYTHON_DEBUG_SUFFIX="_d"
7651 MOZ_PYTHON_DEBUG_SUFFIX=
7653 AC_MSG_RESULT(Building Python extensions using python-$MOZ_PYTHON_VER_DOTTED from $MOZ_PYTHON_PREFIX)
7656 dnl If the user asks for the 'python' extension, then we add
7657 dnl MOZ_PYTHON_EXTENSIONS to MOZ_EXTENSIONS - but with the leading 'python/'
7658 dnl Note the careful regex - it must match 'python' followed by anything
7659 dnl other than a '/', including the end-of-string.
7660 if test `echo "$MOZ_EXTENSIONS" | grep -c 'python\([[^/]]\|$\)'` -ne 0; then
7661 for pyext in $MOZ_PYTHON_EXTENSIONS; do
7662 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS python/$pyext`
7665 dnl Later we may allow MOZ_PYTHON_EXTENSIONS to be specified on the
7666 dnl command-line, but not yet
7667 AC_SUBST(MOZ_PYTHON_EXTENSIONS)
7668 AC_SUBST(MOZ_PYTHON)
7669 AC_SUBST(MOZ_PYTHON_PREFIX)
7670 AC_SUBST(MOZ_PYTHON_INCLUDES)
7671 AC_SUBST(MOZ_PYTHON_LIBS)
7672 AC_SUBST(MOZ_PYTHON_VER)
7673 AC_SUBST(MOZ_PYTHON_VER_DOTTED)
7674 AC_SUBST(MOZ_PYTHON_DEBUG_SUFFIX)
7675 AC_SUBST(MOZ_PYTHON_DLL_SUFFIX)
7677 dnl ========================================================
7678 dnl disable profile sharing
7679 dnl ========================================================
7680 MOZ_ARG_DISABLE_BOOL(profilesharing,
7681 [ --disable-profilesharing Disable profile sharing],
7682 MOZ_PROFILESHARING=,
7683 MOZ_PROFILESHARING=1 )
7684 if test "$MOZ_PROFILESHARING"; then
7686 AC_DEFINE(MOZ_PROFILESHARING)
7689 dnl ========================================================
7691 dnl ========================================================
7692 MOZ_ARG_ENABLE_BOOL(ipcd,
7693 [ --enable-ipcd Enable IPC daemon],
7697 dnl ========================================================
7698 dnl disable profile locking
7699 dnl do no use this in applications that can have more than
7700 dnl one process accessing the profile directory.
7701 dnl ========================================================
7702 MOZ_ARG_DISABLE_BOOL(profilelocking,
7703 [ --disable-profilelocking Disable profile locking],
7704 MOZ_PROFILELOCKING=,
7705 MOZ_PROFILELOCKING=1 )
7706 if test "$MOZ_PROFILELOCKING"; then
7707 AC_DEFINE(MOZ_PROFILELOCKING)
7710 dnl ========================================================
7711 dnl disable rdf services
7712 dnl ========================================================
7713 MOZ_ARG_DISABLE_BOOL(rdf,
7714 [ --disable-rdf Disable RDF],
7716 if test "$MOZ_RDF"; then
7722 dnl ========================================================
7723 dnl necko configuration options
7724 dnl ========================================================
7727 dnl option to disable various necko protocols
7729 MOZ_ARG_ENABLE_STRING(necko-protocols,
7730 [ --enable-necko-protocols[={http,ftp,default,all,none}]
7731 Enable/disable specific protocol handlers],
7732 [ for option in `echo $enableval | sed 's/,/ /g'`; do
7733 if test "$option" = "yes" || test "$option" = "all"; then
7734 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7735 elif test "$option" = "no" || test "$option" = "none"; then
7737 elif test "$option" = "default"; then
7738 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7739 elif test `echo "$option" | grep -c \^-` != 0; then
7740 option=`echo $option | sed 's/^-//'`
7741 NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
7743 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
7746 NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
7748 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
7749 AC_SUBST(NECKO_PROTOCOLS)
7750 for p in $NECKO_PROTOCOLS; do
7751 AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
7755 dnl option to disable necko's disk cache
7757 MOZ_ARG_DISABLE_BOOL(necko-disk-cache,
7758 [ --disable-necko-disk-cache
7759 Disable necko disk cache],
7762 AC_SUBST(NECKO_DISK_CACHE)
7763 if test "$NECKO_DISK_CACHE"; then
7764 AC_DEFINE(NECKO_DISK_CACHE)
7768 dnl option to minimize size of necko's i/o buffers
7770 MOZ_ARG_ENABLE_BOOL(necko-small-buffers,
7771 [ --enable-necko-small-buffers
7772 Minimize size of necko's i/o buffers],
7773 NECKO_SMALL_BUFFERS=1,
7774 NECKO_SMALL_BUFFERS=)
7775 AC_SUBST(NECKO_SMALL_BUFFERS)
7776 if test "$NECKO_SMALL_BUFFERS"; then
7777 AC_DEFINE(NECKO_SMALL_BUFFERS)
7781 dnl option to disable cookies
7783 MOZ_ARG_DISABLE_BOOL(cookies,
7784 [ --disable-cookies Disable cookie support],
7787 AC_SUBST(NECKO_COOKIES)
7788 if test "$NECKO_COOKIES"; then
7789 AC_DEFINE(NECKO_COOKIES)
7792 dnl NECKO_ configuration options are not global
7793 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_"
7795 dnl Only build Mork if it's required
7797 if test "$MOZ_MORK"; then
7801 dnl Build the lightweight Mork reader if required
7802 AC_SUBST(MOZ_MORKREADER)
7803 if test "$MOZ_MORKREADER"; then
7804 AC_DEFINE(MOZ_MORKREADER)
7807 dnl ========================================================
7808 if test "$MOZ_DEBUG" || test "$NS_TRACE_MALLOC"; then
7809 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7812 dnl ========================================================
7814 dnl = Maintainer debug option (no --enable equivalent)
7816 dnl ========================================================
7821 AC_SUBST(AR_EXTRACT)
7825 AC_SUBST(AS_DASH_C_FLAG)
7830 AC_SUBST(USE_SHORT_LIBNAME)
7834 AC_SUBST(NS_USE_NATIVE)
7835 AC_SUBST(MOZ_WIDGET_TOOLKIT)
7836 AC_SUBST(MOZ_GFX_TOOLKIT)
7837 AC_SUBST(MOZ_UPDATE_XTERM)
7839 AC_SUBST(MOZ_PLATFORM_HILDON)
7841 AC_SUBST(NS_MAEMO_LOCATION)
7842 AC_SUBST(MOZ_AUTH_EXTENSION)
7843 AC_SUBST(MOZ_MATHML)
7844 AC_SUBST(MOZ_PERMISSIONS)
7846 AC_SUBST(MOZ_NO_INSPECTOR_APIS)
7847 AC_SUBST(MOZ_PREF_EXTENSIONS)
7849 AC_SUBST(MOZ_XSLT_STANDALONE)
7850 AC_SUBST(MOZ_JS_LIBS)
7853 AC_SUBST(MOZ_DEBUG_MODULES)
7854 AC_SUBST(MOZ_PROFILE_MODULES)
7855 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
7856 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
7857 AC_SUBST(MOZ_DEBUG_FLAGS)
7858 AC_SUBST(MOZ_DEBUG_LDFLAGS)
7859 AC_SUBST(WARNINGS_AS_ERRORS)
7860 AC_SUBST(MOZ_DBGRINFO_MODULES)
7861 AC_SUBST(MOZ_EXTENSIONS)
7862 AC_SUBST(MOZ_IMG_DECODERS)
7863 AC_SUBST(MOZ_IMG_ENCODERS)
7864 AC_SUBST(MOZ_JSDEBUGGER)
7866 AC_SUBST(MOZ_NO_XPCOM_OBSOLETE)
7867 AC_SUBST(MOZ_PLUGINS)
7868 AC_SUBST(ENABLE_EAZEL_PROFILER)
7869 AC_SUBST(EAZEL_PROFILER_CFLAGS)
7870 AC_SUBST(EAZEL_PROFILER_LIBS)
7871 AC_SUBST(MOZ_PERF_METRICS)
7872 AC_SUBST(GC_LEAK_DETECTOR)
7873 AC_SUBST(MOZ_LOG_REFCNT)
7877 AC_SUBST(MOZ_CALLGRIND)
7879 AC_SUBST(MOZ_XPCTOOLS)
7880 AC_SUBST(MOZ_JSLOADER)
7881 AC_SUBST(MOZ_USE_NATIVE_UCONV)
7882 AC_SUBST(MOZ_INSURE)
7883 AC_SUBST(MOZ_INSURE_DIRS)
7884 AC_SUBST(MOZ_INSURE_EXCLUDE_DIRS)
7885 AC_SUBST(MOZ_QUANTIFY)
7886 AC_SUBST(MOZ_INSURIFYING)
7888 AC_SUBST(MOZ_PLACES)
7889 AC_SUBST(MOZ_PLACES_BOOKMARKS)
7890 AC_SUBST(MOZ_STORAGE)
7892 AC_SUBST(NS_PRINTING)
7894 AC_SUBST(MOZ_JAVAXPCOM)
7895 AC_SUBST(JAVA_INCLUDE_PATH)
7900 AC_SUBST(MOZ_PROFILESHARING)
7901 AC_SUBST(MOZ_PROFILELOCKING)
7906 AC_SUBST(MOZ_XIE_LIBS)
7907 AC_SUBST(MOZ_ENABLE_POSTSCRIPT)
7909 AC_SUBST(XPCOM_USE_LEA)
7910 AC_SUBST(BUILD_STATIC_LIBS)
7911 AC_SUBST(MOZ_ENABLE_LIBXUL)
7912 AC_SUBST(ENABLE_TESTS)
7914 AC_SUBST(MOZ_UNIVERSALCHARDET)
7915 AC_SUBST(ACCESSIBILITY)
7916 AC_SUBST(MOZ_XPINSTALL)
7917 AC_SUBST(MOZ_VIEW_SOURCE)
7918 AC_SUBST(MOZ_SPELLCHECK)
7919 AC_SUBST(MOZ_XPFE_COMPONENTS)
7920 AC_SUBST(MOZ_USER_DIR)
7921 AC_SUBST(MOZ_CRASHREPORTER)
7923 AC_SUBST(ENABLE_STRIP)
7924 AC_SUBST(PKG_SKIP_STRIP)
7925 AC_SUBST(USE_ELF_DYNSTR_GC)
7926 AC_SUBST(USE_PREBINDING)
7927 AC_SUBST(INCREMENTAL_LINKER)
7928 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
7929 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
7930 AC_SUBST(MOZ_XPCOM_OBSOLETE_LIBS)
7932 AC_SUBST(MOZ_FIX_LINK_PATHS)
7933 AC_SUBST(XPCOM_LIBS)
7934 AC_SUBST(XPCOM_FROZEN_LDOPTS)
7935 AC_SUBST(XPCOM_GLUE_LDOPTS)
7936 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
7938 AC_SUBST(USE_DEPENDENT_LIBS)
7940 AC_SUBST(MOZ_BUILD_ROOT)
7941 AC_SUBST(MOZ_OS2_TOOLS)
7942 AC_SUBST(MOZ_OS2_USE_DECLSPEC)
7944 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
7945 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
7946 AC_SUBST(MOZ_TIMELINE)
7948 AC_SUBST(TARGET_DEVICE)
7950 AC_SUBST(MOZ_APP_NAME)
7951 AC_SUBST(MOZ_APP_DISPLAYNAME)
7952 AC_SUBST(MOZ_APP_VERSION)
7953 AC_SUBST(FIREFOX_VERSION)
7955 AC_SUBST(MOZ_PKG_SPECIAL)
7957 AC_SUBST(MOZILLA_OFFICIAL)
7958 AC_SUBST(BUILD_OFFICIAL)
7959 AC_SUBST(MOZ_MILESTONE_RELEASE)
7962 AC_SUBST(MOZ_PROFILE)
7963 AC_SUBST(MOZ_DEBUG_SYMBOLS)
7964 AC_SUBST(MOZ_MAPINFO)
7965 AC_SUBST(MOZ_BROWSE_INFO)
7966 AC_SUBST(MOZ_TOOLS_DIR)
7967 AC_SUBST(CYGWIN_WRAPPER)
7969 AC_SUBST(WIN32_REDIST_DIR)
7972 dnl Echo the CFLAGS to remove extra whitespace.
7979 $_MOZ_EXCEPTIONS_FLAGS \
7980 $_WARNINGS_CXXFLAGS \
7983 COMPILE_CFLAGS=`echo \
7988 COMPILE_CXXFLAGS=`echo \
7989 $_DEFINES_CXXFLAGS \
7993 AC_SUBST(SYSTEM_MAKEDEPEND)
7994 AC_SUBST(SYSTEM_JPEG)
7995 AC_SUBST(SYSTEM_PNG)
7996 AC_SUBST(SYSTEM_ZLIB)
7997 AC_SUBST(SYSTEM_BZ2)
7999 AC_SUBST(JPEG_CFLAGS)
8001 AC_SUBST(ZLIB_CFLAGS)
8003 AC_SUBST(BZ2_CFLAGS)
8005 AC_SUBST(PNG_CFLAGS)
8008 AC_SUBST(MOZ_JPEG_CFLAGS)
8009 AC_SUBST(MOZ_JPEG_LIBS)
8010 AC_SUBST(MOZ_ZLIB_CFLAGS)
8011 AC_SUBST(MOZ_ZLIB_LIBS)
8012 AC_SUBST(MOZ_BZ2_CFLAGS)
8013 AC_SUBST(MOZ_BZ2_LIBS)
8014 AC_SUBST(MOZ_PNG_CFLAGS)
8015 AC_SUBST(MOZ_PNG_LIBS)
8017 AC_SUBST(NSPR_CFLAGS)
8019 AC_SUBST(MOZ_NATIVE_NSPR)
8021 AC_SUBST(NSS_CFLAGS)
8023 AC_SUBST(NSS_DEP_LIBS)
8024 AC_SUBST(MOZ_NATIVE_NSS)
8029 AC_SUBST(COMPILE_CFLAGS)
8030 AC_SUBST(COMPILE_CXXFLAGS)
8033 AC_SUBST(CROSS_COMPILE)
8037 AC_SUBST(HOST_CFLAGS)
8038 AC_SUBST(HOST_CXXFLAGS)
8039 AC_SUBST(HOST_OPTIMIZE_FLAGS)
8041 AC_SUBST(HOST_AR_FLAGS)
8043 AC_SUBST(HOST_RANLIB)
8044 AC_SUBST(HOST_NSPR_MDCPUCFG)
8045 AC_SUBST(HOST_BIN_SUFFIX)
8046 AC_SUBST(HOST_OS_ARCH)
8048 AC_SUBST(TARGET_CPU)
8049 AC_SUBST(TARGET_VENDOR)
8051 AC_SUBST(TARGET_NSPR_MDCPUCFG)
8052 AC_SUBST(TARGET_MD_ARCH)
8053 AC_SUBST(TARGET_XPCOM_ABI)
8056 AC_SUBST(OS_RELEASE)
8059 AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
8060 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8062 AC_SUBST(WRAP_MALLOC_CFLAGS)
8063 AC_SUBST(WRAP_MALLOC_LIB)
8066 AC_SUBST(MKSHLIB_FORCE_ALL)
8067 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8068 AC_SUBST(DSO_CFLAGS)
8069 AC_SUBST(DSO_PIC_CFLAGS)
8070 AC_SUBST(DSO_LDOPTS)
8071 AC_SUBST(LIB_PREFIX)
8072 AC_SUBST(DLL_PREFIX)
8073 AC_SUBST(DLL_SUFFIX)
8074 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8075 AC_SUBST(LIB_SUFFIX)
8076 AC_SUBST(OBJ_SUFFIX)
8077 AC_SUBST(BIN_SUFFIX)
8078 AC_SUBST(ASM_SUFFIX)
8079 AC_SUBST(IMPORT_LIB_SUFFIX)
8081 AC_SUBST(CC_VERSION)
8082 AC_SUBST(CXX_VERSION)
8083 AC_SUBST(MSMANIFEST_TOOL)
8085 if test "$USING_HCC"; then
8086 CC='${topsrcdir}/build/hcc'
8088 CXX='${topsrcdir}/build/hcpp'
8089 CXX="$CXX '$_OLDCXX'"
8094 dnl Check for missing components
8095 if test "$COMPILE_ENVIRONMENT"; then
8096 if test "$MOZ_X11"; then
8097 dnl ====================================================
8098 dnl = Check if X headers exist
8099 dnl ====================================================
8100 _SAVE_CFLAGS=$CFLAGS
8101 CFLAGS="$CFLAGS $XCFLAGS"
8105 #include <X11/Xlib.h>
8106 #include <X11/Intrinsic.h>
8110 if ((dpy = XOpenDisplay(NULL)) == NULL) {
8111 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8115 [ AC_MSG_ERROR([Could not compile basic X program.]) ])
8116 CFLAGS="$_SAVE_CFLAGS"
8118 if test ! -z "$MISSING_X"; then
8119 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8123 fi # COMPILE_ENVIRONMENT
8125 dnl Set various defines and substitutions
8126 dnl ========================================================
8128 if test "$OS_ARCH" = "OS2" -a "$VACPP" = "yes"; then
8129 LIBS='so32dll.lib tcp32dll.lib'
8130 elif test "$OS_ARCH" = "BeOS"; then
8133 elif test "$OS_ARCH" = "Darwin"; then
8135 AC_DEFINE(UNIX_ASYNC_DNS)
8137 elif test "$OS_ARCH" = "OpenVMS"; then
8139 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
8141 AC_DEFINE(UNIX_ASYNC_DNS)
8144 AC_SUBST(MOZ_MOVEMAIL)
8146 AC_DEFINE(JS_THREADSAFE)
8148 if test "$MOZ_DEBUG"; then
8149 AC_DEFINE(MOZ_REFLOW_PERF)
8150 AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8153 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
8154 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8155 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8156 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8157 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8158 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8159 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8160 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8161 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8164 # Used for LD_LIBRARY_PATH of run_viewer target
8166 for lib_arg in $NSPR_LIBS $TK_LIBS; do
8168 -L* ) LIBS_PATH="${LIBS_PATH:+$LIBS_PATH:}"`expr $lib_arg : "-L\(.*\)"` ;;
8174 dnl ========================================================
8175 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
8176 dnl ========================================================
8179 WIN_TOP_SRC=`cd $srcdir; pwd -W`
8182 HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
8183 HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
8184 CC="\$(CYGWIN_WRAPPER) $CC"
8185 CXX="\$(CYGWIN_WRAPPER) $CXX"
8186 CPP="\$(CYGWIN_WRAPPER) $CPP"
8187 LD="\$(CYGWIN_WRAPPER) $LD"
8188 AS="\$(CYGWIN_WRAPPER) $AS"
8189 RC="\$(CYGWIN_WRAPPER) $RC"
8190 MIDL="\$(CYGWIN_WRAPPER) $MIDL"
8191 CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
8192 WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
8196 AC_SUBST(CYGDRIVE_MOUNT)
8197 AC_SUBST(WIN_TOP_SRC)
8199 AC_SUBST(MOZILLA_VERSION)
8201 AC_SUBST(ac_configure_args)
8203 dnl Spit out some output
8204 dnl ========================================================
8206 dnl The following defines are used by xpcom
8207 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8209 HAVE_CPP_2BYTE_WCHAR_T
8210 HAVE_CPP_ACCESS_CHANGING_USING
8211 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8213 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8215 HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
8216 HAVE_CPP_NAMESPACE_STD
8218 HAVE_CPP_PARTIAL_SPECIALIZATION
8219 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8221 HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL
8223 NEED_CPP_UNUSED_IMPLEMENTATIONS
8227 HAVE_ICONV_WITH_CONST_INPUT
8235 netwerk/necko-config.h
8236 xpcom/xpcom-config.h
8237 xpcom/xpcom-private.h
8240 # Save the defines header file before autoconf removes it.
8241 # (Do not add AC_DEFINE calls after this line.)
8242 _CONFIG_TMP=confdefs-tmp.h
8243 _CONFIG_DEFS_H=mozilla-config.h
8245 cat > $_CONFIG_TMP <<\EOF
8246 /* List of defines generated by configure. Included with preprocessor flag,
8247 * -include, to avoid long list of -D defines on the compile command-line.
8251 #ifndef _MOZILLA_CONFIG_H_
8252 #define _MOZILLA_CONFIG_H_
8255 _EGREP_PATTERN='^#define ('
8256 if test -n "$_NON_GLOBAL_ACDEFINES"; then
8257 for f in $_NON_GLOBAL_ACDEFINES; do
8258 _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
8261 _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
8263 sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
8265 cat >> $_CONFIG_TMP <<\EOF
8267 #endif /* _MOZILLA_CONFIG_H_ */
8271 # Only write mozilla-config.h when something changes (or it doesn't exist)
8272 if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
8275 AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
8276 mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
8278 echo ==== $_CONFIG_DEFS_H =================================
8282 dnl Probably shouldn't call this manually but we always want the output of DEFS
8283 rm -f confdefs.h.save
8284 mv confdefs.h confdefs.h.save
8285 egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
8286 AC_OUTPUT_MAKE_DEFS()
8288 AC_SUBST(MOZ_DEFINES)
8290 mv confdefs.h.save confdefs.h
8292 dnl Load the list of Makefiles to generate.
8293 dnl To add new Makefiles, edit allmakefiles.sh.
8294 dnl allmakefiles.sh sets the variable, MAKEFILES.
8295 . ${srcdir}/allmakefiles.sh
8297 dnl Run a perl script to quickly create the makefiles.
8298 dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
8299 dnl for the files it cannot handle correctly. This way, config.status
8300 dnl will handle these files.
8301 dnl If it fails, nothing is set and config.status will run as usual.
8303 dnl This does not change the $MAKEFILES variable.
8305 dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
8307 if test -z "${AS_PERL}"; then
8308 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
8310 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
8315 echo $MAKEFILES > unallmakefiles
8317 AC_OUTPUT($MAKEFILES)
8319 dnl Prevent the regeneration of cairo-features.h forcing rebuilds of gfx stuff
8320 if test "$CAIRO_FEATURES_H"; then
8321 if cmp -s $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig; then
8322 mv -f "$CAIRO_FEATURES_H".orig "$CAIRO_FEATURES_H" 2> /dev/null
8324 rm -f "$CAIRO_FEATURES_H".orig 2> /dev/null
8328 dnl ========================================================
8329 dnl = Setup a nice relatively clean build environment for
8330 dnl = sub-configures.
8331 dnl ========================================================
8334 CFLAGS="$_SUBDIR_CFLAGS"
8335 CPPFLAGS="$_SUBDIR_CPPFLAGS"
8336 CXXFLAGS="$_SUBDIR_CXXFLAGS"
8337 LDFLAGS="$_SUBDIR_LDFLAGS"
8338 HOST_CC="$_SUBDIR_HOST_CC"
8339 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
8340 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
8346 if test "$COMPILE_ENVIRONMENT"; then
8347 if test -z "$MOZ_NATIVE_NSPR"; then
8348 ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
8349 if test -z "$MOZ_DEBUG"; then
8350 ac_configure_args="$ac_configure_args --disable-debug"
8352 if test "$MOZ_OPTIMIZE" = "1"; then
8353 ac_configure_args="$ac_configure_args --enable-optimize"
8355 if test "$OS_ARCH" = "WINNT" && test "$NS_TRACE_MALLOC"; then
8356 ac_configure_args="$ac_configure_args --enable-debug --disable-optimize"
8358 if test -n "$HAVE_64BIT_OS"; then
8359 ac_configure_args="$ac_configure_args --enable-64bit"
8361 if test -n "$USE_ARM_KUSER"; then
8362 ac_configure_args="$ac_configure_args --with-arm-kuser"
8364 AC_OUTPUT_SUBDIRS(nsprpub)
8365 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8368 if test -z "$MOZ_NATIVE_NSPR"; then
8369 # Hack to deal with the fact that we use NSPR_CFLAGS everywhere
8370 AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
8371 if test ! "$VACPP" && test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE"; then
8372 NSPR_LIBS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --libdir=$LIBXUL_DIST/lib --libs`
8373 $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $NSPR_LIBS'" config/autoconf.mk
8375 if test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE" ; then
8376 NSPR_CFLAGS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --includedir=$LIBXUL_DIST/include/nspr --cflags`
8377 $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $NSPR_CFLAGS'" config/autoconf.mk
8379 rm -f config/autoconf.mk.bak
8382 fi # COMPILE_ENVIRONMENT