1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*-
2 dnl vi: set tabstop=4 shiftwidth=4 expandtab:
3 dnl ***** BEGIN LICENSE BLOCK *****
4 dnl Version: MPL 1.1/GPL 2.0/LGPL 2.1
6 dnl The contents of this file are subject to the Mozilla Public License Version
7 dnl 1.1 (the "License"); you may not use this file except in compliance with
8 dnl the License. You may obtain a copy of the License at
9 dnl http://www.mozilla.org/MPL/
11 dnl Software distributed under the License is distributed on an "AS IS" basis,
12 dnl WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13 dnl for the specific language governing rights and limitations under the
16 dnl The Original Code is this file as it was released upon August 6, 1998.
18 dnl The Initial Developer of the Original Code is
19 dnl Christopher Seawood.
20 dnl Portions created by the Initial Developer are Copyright (C) 1998-2001
21 dnl the Initial Developer. All Rights Reserved.
24 dnl Jamie Zawinski <jwz@jwz.org>
25 dnl gettimeofday args check
26 dnl Christopher Blizzard <blizzard@appliedtheory.com>
27 dnl gnomefe update & enable-pthreads
28 dnl Ramiro Estrugo <ramiro@netscape.com>
29 dnl X11 makedepend support
31 dnl Henry Sobotka <sobotka@axess.com>
33 dnl Dan Mosedale <dmose@mozilla.org>
35 dnl Seth Spitzer <sspitzer@netscape.com>
37 dnl Benjamin Smedberg <benjamin@smedbergs.us>
38 dnl Howard Chu <hyc@symas.com>
40 dnl Mark Mentovai <mark@moxienet.com>:
41 dnl Mac OS X 10.4 support
42 dnl Giorgio Maone <g.maone@informaction.com>
43 dnl MSVC l10n compatible version check
44 dnl Ben Turner <mozilla@songbirdnest.com>
46 dnl Alternatively, the contents of this file may be used under the terms of
47 dnl either the GNU General Public License Version 2 or later (the "GPL"), or
48 dnl the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
49 dnl in which case the provisions of the GPL or the LGPL are applicable instead
50 dnl of those above. If you wish to allow use of your version of this file only
51 dnl under the terms of either the GPL or the LGPL, and not to allow others to
52 dnl use your version of this file under the terms of the MPL, indicate your
53 dnl decision by deleting the provisions above and replace them with the notice
54 dnl and other provisions required by the GPL or the LGPL. If you do not delete
55 dnl the provisions above, a recipient may use your version of this file under
56 dnl the terms of any one of the MPL, the GPL or the LGPL.
58 dnl ***** END LICENSE BLOCK *****
60 dnl Process this file with autoconf to produce a configure script.
61 dnl ========================================================
64 AC_INIT(config/config.mk)
65 AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
67 TARGET_CPU="${target_cpu}"
68 TARGET_VENDOR="${target_vendor}"
69 TARGET_OS="${target_os}"
72 MOZ_DEB_TIMESTAMP=`date +"%a, %d %b %Y %T %z" 2>&1`
73 AC_SUBST(MOZ_DEB_TIMESTAMP)
76 dnl ========================================================
78 dnl = Don't change the following two lines. Doing so breaks:
80 dnl = CFLAGS="-foo" ./configure
82 dnl ========================================================
84 CPPFLAGS="${CPPFLAGS=}"
85 CXXFLAGS="${CXXFLAGS=}"
87 HOST_CFLAGS="${HOST_CFLAGS=}"
88 HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
89 HOST_LDFLAGS="${HOST_LDFLAGS=}"
91 dnl ========================================================
92 dnl = Preserve certain environment flags passed to configure
93 dnl = We want sub projects to receive the same flags
94 dnl = untainted by this configure script
95 dnl ========================================================
98 _SUBDIR_CFLAGS="$CFLAGS"
99 _SUBDIR_CPPFLAGS="$CPPFLAGS"
100 _SUBDIR_CXXFLAGS="$CXXFLAGS"
101 _SUBDIR_LDFLAGS="$LDFLAGS"
102 _SUBDIR_HOST_CC="$HOST_CC"
103 _SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
104 _SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
105 _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
106 _SUBDIR_CONFIG_ARGS="$ac_configure_args"
108 dnl Set the version number of the libs included with mozilla
109 dnl ========================================================
116 dnl Set the minimum version of toolkit libs used by mozilla
117 dnl ========================================================
126 WINDRES_VERSION=2.14.90
129 GNOMEUI_VERSION=2.2.0
132 STARTUP_NOTIFICATION_VERSION=0.8
136 LIBNOTIFY_VERSION=0.4
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
237 MOZ_ARG_WITH_STRING(wince-sdk,
238 [ --with-wince-sdk=WINCE_SDK
239 The path to the windows mobile sdk],
243 mk_add_options WINCE=1
245 echo -----------------------------------------------------------------------------
246 echo Building Windows CE Shunt Library and Tool Chain
253 rm -f $srcdir/build/wince/shunt/include/windows.h
255 echo -n "#define TOPSRCDIR \"" > $srcdir/build/wince/tools/topsrcdir.h
256 echo `cd "$_topsrcdir" && pwd -W | tr '\n' '\"'` >> $srcdir/build/wince/tools/topsrcdir.h
257 make -C $srcdir/build/wince/tools
259 echo "#include \"$WINCE_SDK/windows.h\"" > $srcdir/build/wince/shunt/include/windows.h
260 echo "#define GetProcAddress GetProcAddressA" >> $srcdir/build/wince/shunt/include/windows.h
261 echo -----------------------------------------------------------------------------
266 if test -n "$CROSS_COMPILE" && test "$target" != "$host"; then
267 echo "cross compiling from $host to $target"
271 _SAVE_CFLAGS="$CFLAGS"
272 _SAVE_LDFLAGS="$LDFLAGS"
274 AC_MSG_CHECKING([for host c compiler])
275 AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
276 if test -z "$HOST_CC"; then
277 AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
279 AC_MSG_RESULT([$HOST_CC])
280 AC_MSG_CHECKING([for host c++ compiler])
281 AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
282 if test -z "$HOST_CXX"; then
283 AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
285 AC_MSG_RESULT([$HOST_CXX])
287 if test -z "$HOST_CFLAGS"; then
288 HOST_CFLAGS="$CFLAGS"
290 if test -z "$HOST_CXXFLAGS"; then
291 HOST_CXXFLAGS="$CXXFLAGS"
293 if test -z "$HOST_LDFLAGS"; then
294 HOST_LDFLAGS="$LDFLAGS"
296 AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
297 AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
299 CFLAGS="$HOST_CFLAGS"
300 LDFLAGS="$HOST_LDFLAGS"
302 AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
303 AC_TRY_COMPILE([], [return(0);],
304 [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
305 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
308 CFLAGS="$HOST_CXXFLAGS"
310 AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
311 AC_TRY_COMPILE([], [return(0);],
312 [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
313 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
317 LDFLAGS=$_SAVE_LDFLAGS
319 case "$build:$target" in
320 powerpc-apple-darwin8*:i?86-apple-darwin*)
321 dnl The Darwin cross compiler doesn't necessarily point itself at a
322 dnl root that has libraries for the proper architecture, it defaults
323 dnl to the system root. The libraries in the system root on current
324 dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
325 dnl checks will fail. Fake a working SDK in that case.
327 _SAVE_CXXFLAGS=$CXXLAGS
328 CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CFLAGS"
329 CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CXXFLAGS"
333 AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
336 AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
340 case "$build:$target" in
341 powerpc-apple-darwin8*:i?86-apple-darwin*)
342 dnl Revert the changes made above. From this point on, the target
343 dnl compiler will never be used without applying the SDK to CFLAGS
344 dnl (see --with-macos-sdk below).
346 CXXFLAGS=$_SAVE_CXXFLAGS
350 AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
351 AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
352 AC_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
353 AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
354 AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
355 AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
356 AC_DEFINE(CROSS_COMPILE)
361 AC_PATH_PROGS(AS, $AS as, $CC)
362 AC_CHECK_PROGS(AR, ar, :)
363 AC_CHECK_PROGS(LD, ld, :)
364 AC_CHECK_PROGS(STRIP, strip, :)
365 AC_CHECK_PROGS(WINDRES, windres, :)
366 if test -z "$HOST_CC"; then
369 if test -z "$HOST_CFLAGS"; then
370 HOST_CFLAGS="$CFLAGS"
372 if test -z "$HOST_CXX"; then
375 if test -z "$HOST_CXXFLAGS"; then
376 HOST_CXXFLAGS="$CXXFLAGS"
378 if test -z "$HOST_LDFLAGS"; then
379 HOST_LDFLAGS="$LDFLAGS"
381 if test -z "$HOST_RANLIB"; then
382 HOST_RANLIB="$RANLIB"
384 if test -z "$HOST_AR"; then
395 if test "$GCC" = "yes"; then
397 CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
399 if test "$GXX" = "yes"; then
401 CXX_VERSION=`$CXX -v 2>&1 | grep 'gcc version'`
403 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
406 if test "`echo | $LD -v 2>&1 | grep -c GNU`" != "0"; then
409 if test "$GNU_CC"; then
410 if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
417 if test "$GCC" = yes; then
418 if test "`$CC -help 2>&1 | grep -c 'Intel(R) C Compiler'`" != "0"; then
423 if test "$GXX" = yes; then
424 if test "`$CXX -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
429 dnl Special win32 checks
430 dnl ========================================================
436 if test -n "$GNU_CC"; then
444 MOZ_ARG_WITH_STRING(windows-version,
445 [ --with-windows-version=WINVER
446 Minimum Windows version (WINVER) to support
457 AC_MSG_ERROR([Invalid value --with-windows-version, must be 400, 500 or 501]);
463 *-cygwin*|*-mingw*|*-msvc*|*-mks*|*-wince)
464 if test "$GCC" != "yes"; then
465 # Check to see if we are really running in a msvc environemnt
467 AC_CHECK_PROGS(MIDL, midl)
469 # Make sure compilers are valid
470 CFLAGS="$CFLAGS -TC -nologo"
471 CXXFLAGS="$CXXFLAGS -TP -nologo"
474 AC_TRY_COMPILE([#include <stdio.h>],
475 [ printf("Hello World\n"); ],,
476 AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
479 AC_TRY_COMPILE([#include <new.h>],
480 [ unsigned *test = new unsigned(42); ],,
481 AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
485 _MSVC_VER_FILTER='s|.* ([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
488 # Determine compiler version
489 CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
490 _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
491 _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
492 _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
493 _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
494 _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
496 CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
497 _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
499 if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
500 AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
502 if test "$_CC_MAJOR_VERSION" = "12"; then
504 elif test "$_CC_MAJOR_VERSION" = "13"; then
506 elif test "$_CC_MAJOR_VERSION" = "14"; then
508 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
509 dnl -DYNAMICBASE is only supported on VC8SP1 or newer,
510 dnl so be very specific here!
511 dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762
512 if test $_CC_RELEASE -gt 50727; then
514 elif test $_CC_BUILD -ge 762; then
517 AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
518 AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
519 elif test "$_CC_MAJOR_VERSION" = "15"; then
521 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
522 LDFLAGS="$LDFLAGS -MANIFESTUAC:NO"
524 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
525 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
527 AC_MSG_ERROR([This version of the MSVC compiler, $CC_VERSION , is unsupported.])
530 _MOZ_RTTI_FLAGS_ON='-GR'
531 _MOZ_RTTI_FLAGS_OFF='-GR-'
532 _MOZ_EXCEPTIONS_FLAGS_ON='-EHsc'
533 _MOZ_EXCEPTIONS_FLAGS_OFF=''
535 if test -n "$WIN32_REDIST_DIR"; then
536 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
540 # ensure that mt.exe is Microsoft (R) Manifest Tool and not magnetic tape manipulation utility (or something else)
541 if test "$_CC_SUITE" -ge "8"; then
543 _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
546 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
547 if test -n "$MSMT_TOOL"; then
548 MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
549 if test -z "$MSMANIFEST_TOOL_VERSION"; then
550 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
555 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
559 # Check linker version
560 _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
561 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
562 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
563 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
568 _MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
569 _MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
570 _MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
571 _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
572 # Add flags if necessary
573 AC_MSG_CHECKING([for midl flags])
574 if test -n "$_MIDL_MAJOR_VERSION"; then
575 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
576 # Starting with MIDL version 6.0.359, the MIDL compiler
577 # generates /Oicf /robust stubs by default, which is not
578 # compatible with versions of Windows older than Win2k.
579 # This switches us back to the old behaviour. When we drop
580 # support for Windows older than Win2k, we should remove
582 MIDL_FLAGS="${MIDL_FLAGS} -no_robust"
583 AC_MSG_RESULT([need -no_robust])
585 MIDL_FLAGS="${MIDL_FLAGS}"
586 AC_MSG_RESULT([none needed])
589 MIDL_FLAGS="${MIDL_FLAGS}"
590 AC_MSG_RESULT([none needed])
593 unset _MSVC_VER_FILTER
596 # Check w32api version
597 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
598 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
599 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
600 AC_TRY_COMPILE([#include <w32api.h>],
601 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
602 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
603 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
604 #error "test failed."
606 , [ res=yes ], [ res=no ])
607 AC_MSG_RESULT([$res])
608 if test "$res" != "yes"; then
609 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
611 # Check windres version
612 AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
613 _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
614 AC_MSG_RESULT([$_WINDRES_VERSION])
615 _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
616 _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
617 _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
618 WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
619 WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
620 WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
621 if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
622 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
623 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
624 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
625 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
626 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
628 AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
632 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
633 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
634 # Require OS features provided by IE 5.0
635 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0500)
639 dnl Test breaks icc on OS/2 && MSVC
640 if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
642 if grep "NO_MINUS_C_MINUS_O 1" ./confdefs.h >/dev/null; then
646 CC="${srcdir}/build/hcc '$CC'"
647 CXX="${srcdir}/build/hcpp '$CXX'"
654 if test -n "$_WIN32_MSVC"; then
656 SKIP_COMPILER_CHECKS=1
657 SKIP_LIBRARY_CHECKS=1
660 fi # COMPILE_ENVIRONMENT
672 dnl ========================================================
673 dnl Checks for programs.
674 dnl ========================================================
677 AC_PATH_PROGS(PERL, $PERL perl5 perl )
678 if test -z "$PERL" || test "$PERL" = ":"; then
679 AC_MSG_ERROR([perl not found in \$PATH])
682 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
683 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
684 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
686 AC_MSG_RESULT([$_perl_version])
688 if test "$_perl_res" != 0; then
689 AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
693 AC_MSG_CHECKING([for full perl installation])
694 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
696 if test "$_perl_res" != 0; then
698 AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
703 AC_PATH_PROGS(PYTHON, $PYTHON python)
704 if test -z "$PYTHON"; then
705 AC_MSG_ERROR([python was not found in \$PATH])
708 AC_PATH_PROGS(NSINSTALL_BIN, nsinstall )
709 if test -z "$COMPILE_ENVIRONMENT"; then
710 if test -z "$NSINSTALL_BIN" || test "$NSINSTALL_BIN" = ":"; then
711 NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
714 AC_SUBST(NSINSTALL_BIN)
716 AC_PATH_PROG(DOXYGEN, doxygen, :)
717 AC_PATH_PROG(WHOAMI, whoami, :)
718 AC_PATH_PROG(AUTOCONF, autoconf, :)
719 AC_PATH_PROG(UNZIP, unzip, :)
720 AC_PATH_PROGS(ZIP, zip)
721 if test -z "$ZIP" || test "$ZIP" = ":"; then
722 AC_MSG_ERROR([zip not found in \$PATH])
724 AC_PATH_PROG(SYSTEM_MAKEDEPEND, makedepend)
725 AC_PATH_PROG(XARGS, xargs)
726 if test -z "$XARGS" || test "$XARGS" = ":"; then
727 AC_MSG_ERROR([xargs not found in \$PATH .])
730 if test "$COMPILE_ENVIRONMENT"; then
732 dnl ========================================================
733 dnl = Mac OS X toolchain support
734 dnl ========================================================
738 dnl Current known valid versions for GCC_VERSION are 2.95.2 3.1 3.3 4.0.
739 dnl 4.0 identifies itself as 4.0.x, so strip the decidecimal for
740 dnl the environment and includedir purposes (when using an SDK, below),
741 dnl but remember the full version number for the libdir (SDK).
743 GCC_VERSION_FULL=`echo $CXX_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
744 GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
746 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
747 dnl Bug 280479, but this keeps popping up in bug 292530 too because
748 dnl 4.0.0/4061 is the default compiler in Tiger.
750 GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
752 if test "$GCC_BUILD" = "4061" ; then
753 AC_MSG_ERROR([You are attempting to use Apple gcc 4.0 build 4061.
754 This compiler was supplied with Xcode 2.0, and contains bugs that prevent it
755 from building Mozilla. Upgrade to Xcode 2.1 or later.])
759 dnl xcodebuild needs GCC_VERSION defined in the environment, since it
760 dnl doesn't respect the CC/CXX setting. With GCC_VERSION set, it will use
761 dnl /usr/bin/g(cc|++)-$GCC_VERSION.
762 AC_PATH_PROGS(PBBUILD, pbbuild xcodebuild pbxbuild)
767 XCODEBUILD_VERSION=`$PBBUILD -version 2>/dev/null | xargs | sed -e 's/.*DevToolsCore-\([0-9]*\).*/\1/'`
769 if test -n "$XCODEBUILD_VERSION" && test "$XCODEBUILD_VERSION" -ge 620 ; then
775 dnl sdp was formerly in /Developer/Tools. As of Mac OS X 10.4 (Darwin 8),
776 dnl it has moved into /usr/bin.
777 AC_PATH_PROG(SDP, sdp, :, [$PATH:/usr/bin:/Developer/Tools])
781 AC_SUBST(GCC_VERSION)
782 AC_SUBST(XCODEBUILD_VERSION)
783 AC_SUBST(HAS_XCODE_2_1)
785 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
786 dnl that a universal binary is being produced.
787 AC_SUBST(UNIVERSAL_BINARY)
789 dnl ========================================================
790 dnl Check for MacOS deployment target version
791 dnl ========================================================
793 MOZ_ARG_ENABLE_STRING(macos-target,
794 [ --enable-macos-target=VER (default=10.4)
795 Set the minimum MacOS version needed at runtime],
796 [_MACOSX_DEPLOYMENT_TARGET=$enableval])
800 if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
801 dnl Use the specified value
802 export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
803 AC_DEFINE_UNQUOTED(__ENVIRONMENT_MAC_OS_X_VERION_MIN_REQUIRED__,$_MACOSX_DEPLOYMENT_TARGET)
804 elif test -z "$MACOSX_DEPLOYMENT_TARGET" ; then
805 dnl No value specified on the command line or in the environment,
806 dnl use the lesser of the application's minimum or the architecture's
808 export MACOSX_DEPLOYMENT_TARGET=10.4
813 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
815 dnl ========================================================
816 dnl = Mac OS X SDK support
817 dnl ========================================================
820 MOZ_ARG_WITH_STRING(macos-sdk,
821 [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
822 MACOS_SDK_DIR=$withval)
824 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
825 dnl NEXT_ROOT will be set and exported only if it's needed.
826 AC_SUBST(MACOS_SDK_DIR)
829 if test "$MACOS_SDK_DIR"; then
830 dnl Sync this section with the ones in NSPR and NSS.
831 dnl Changes to the cross environment here need to be accounted for in
832 dnl the libIDL checks (below) and xpidl build.
834 if test ! -d "$MACOS_SDK_DIR"; then
835 AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
836 specify a valid SDK. SDKs are installed when the optional cross-development
837 tools are selected during the Xcode/Developer Tools installation.])
840 GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
841 if test "$GCC_VERSION_MAJOR" -lt "4" ; then
842 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"
843 if test -d "${MACOS_SDK_DIR}/Library/Frameworks" ; then
844 SDK_C_INCLUDE="$SDK_C_INCLUDE -F${MACOS_SDK_DIR}/Library/Frameworks"
846 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"
848 CFLAGS="$CFLAGS -nostdinc ${SDK_C_INCLUDE}"
849 CXXFLAGS="$CXXFLAGS -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
851 dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
852 CPP="$CPP -nostdinc ${SDK_C_INCLUDE}"
853 CXXCPP="$CXXCPP -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
855 dnl ld support for -syslibroot is compiler-agnostic, but only available
856 dnl on Tiger. Although it's possible to switch on the build host's
857 dnl OS release to use ld -syslibroot when available, ld -syslibroot will
858 dnl cause warnings as long as NEXT_ROOT is set. NEXT_ROOT should be
859 dnl set because both the compiler and linker use it.
860 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"
861 export NEXT_ROOT=$MACOS_SDK_DIR
863 if test -n "$CROSS_COMPILE" ; then
864 dnl NEXT_ROOT will be in the environment, but it shouldn't be set for
865 dnl the build host. HOST_CXX is presently unused.
866 HOST_CC="NEXT_ROOT= $HOST_CC"
867 HOST_CXX="NEXT_ROOT= $HOST_CXX"
870 dnl gcc >= 4.0 uses different paths than above, but knows how to find
872 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
873 CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
875 dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
876 CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
877 CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
879 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
880 dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
881 dnl that supports -syslibroot. Don't set NEXT_ROOT because it will
882 dnl be ignored and cause warnings when -syslibroot is specified.
883 dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
884 dnl the -isysroot it receives, so this is only needed with 4.0.0.
885 LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
890 AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
892 AC_TRY_COMPILE([#include <new>
893 int main() { return 0; }],
897 AC_MSG_RESULT($result)
899 if test "$result" = "no" ; then
900 AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
904 fi # COMPILE_ENVIRONMENT
906 dnl Be sure the make we use is GNU make.
907 dnl on win32, gmake.exe is the generally the wrong version
909 cygwin*|mingw*|mks*|msvc*)
910 AC_PATH_PROGS(MAKE, $MAKE make gmake, :)
913 AC_PATH_PROGS(MAKE, $MAKE gmake make, :)
916 _make_try=`$MAKE --version 2>/dev/null | grep GNU`
917 if test ! "$_make_try"
920 echo "*** $MAKE is not GNU Make. You will not be able to build Mozilla without GNU Make."
924 dnl Now exit if version if < MAKE_VERSION
926 echo 'all: ; @echo $(MAKE_VERSION)' > dummy.mk
927 _make_vers=`$MAKE --no-print-directory -f dummy.mk all 2>/dev/null`
929 _MAKE_MAJOR_VERSION=`echo $_make_vers | $AWK -F\. '{ print $1 }'`
930 _MAKE_MINOR_VERSION=`echo $_make_vers | $AWK -F\. '{ print $2 }'`
931 MAKE_MAJOR_VERSION=`echo $MAKE_VERSION | $AWK -F\. '{ print $1 }'`
932 MAKE_MINOR_VERSION=`echo $MAKE_VERSION | $AWK -F\. '{ print $2 }'`
933 if test "$_MAKE_MAJOR_VERSION" -lt "$MAKE_MAJOR_VERSION" || \
934 test "$_MAKE_MAJOR_VERSION" = "$MAKE_MAJOR_VERSION" -a \
935 "$_MAKE_MINOR_VERSION" -lt "$MAKE_MINOR_VERSION"; then
936 AC_MSG_ERROR([GNU Make $MAKE_VERSION or higher is required to build Mozilla.])
940 if test "$COMPILE_ENVIRONMENT"; then
944 dnl Check in X11 include directory too.
945 if test "$no_x" != "yes"; then
946 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
951 fi # COMPILE_ENVIRONMENT
953 dnl ========================================================
954 dnl set the defaults first
955 dnl ========================================================
974 MOZ_USER_DIR=".mozilla"
976 HOST_AR_FLAGS='$(AR_FLAGS)'
979 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/jpeg)'
981 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,$(DEPTH)/modules/zlib/src)'
983 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
985 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/modules/libimg/png)'
987 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs'
988 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxpcom -lxpcom_core'
989 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
990 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxpcom'
991 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) -lxul'
992 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
993 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
995 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
996 MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom_compat'
1000 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
1001 MOZ_GFX_TOOLKIT='$(MOZ_WIDGET_TOOLKIT)'
1003 MOZ_ENABLE_POSTSCRIPT=1
1005 if test -n "$CROSS_COMPILE"; then
1006 OS_TARGET="${target_os}"
1007 OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
1009 case "${target_os}" in
1010 linux*) OS_ARCH=Linux OS_TARGET=Linux ;;
1011 kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
1012 solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
1013 mingw*) OS_ARCH=WINNT ;;
1014 wince*) OS_ARCH=WINCE ;;
1015 darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;;
1018 OS_TARGET=`uname -s`
1019 OS_ARCH=`uname -s | sed -e 's|/|_|g'`
1020 OS_RELEASE=`uname -r`
1023 # Before this used `uname -m` when not cross compiling
1024 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1025 OS_TEST="${target_cpu}"
1029 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1031 #######################################################################
1032 # Master "Core Components" macros for getting the OS target #
1033 #######################################################################
1036 # Note: OS_TARGET should be specified on the command line for gmake.
1037 # When OS_TARGET=WIN95 is specified, then a Windows 95 target is built.
1038 # The difference between the Win95 target and the WinNT target is that
1039 # the WinNT target uses Windows NT specific features not available
1040 # in Windows 95. The Win95 target will run on Windows NT, but (supposedly)
1041 # at lesser performance (the Win95 target uses threads; the WinNT target
1044 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1045 # cross-compilation.
1049 # The following hack allows one to build on a WIN95 machine (as if
1050 # s/he were cross-compiling on a WINNT host for a WIN95 target).
1051 # It also accomodates for MKS's uname.exe. If you never intend
1052 # to do development on a WIN95 machine, you don't need this hack.
1067 CYGWIN_9*|CYGWIN_ME*)
1068 OS_ARCH='CYGWIN_NT-4.0'
1074 # Define and override various archtecture-specific variables, including
1083 case "$HOST_OS_ARCH" in
1084 cygwin*|mingw*|mks*|msvc*)
1103 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1106 HOST_OS_ARCH=UNIXWARE
1118 HOST_OS_ARCH=OpenVMS
1128 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1132 HOST_OS_ARCH=UNIXWARE
1142 # If uname -s returns "Windows_NT", we assume that we are using
1143 # the uname.exe in MKS toolkit.
1145 # The -r option of MKS uname only returns the major version number.
1146 # So we need to use its -v option to get the minor version number.
1147 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1151 OS_MINOR_RELEASE=`uname -v`
1152 if test "$OS_MINOR_RELEASE" = "00"; then
1155 OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1157 CYGWIN32_NT|CYGWIN_NT*|MINGW*_NT*)
1159 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
1160 # the uname.exe in the Cygwin tools.
1161 # Prior to the Beta 20 release, Cygwin was called GNU-Win32.
1162 # If uname -s returns "CYGWIN32/NT", we assume that we are using
1163 # the uname.exe in the GNU-Win32 tools.
1164 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1165 # the uname.exe in the MSYS tools.
1167 OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1172 OS_RELEASE=`uname -v`.`uname -r`
1173 OS_TEST=${target_cpu}
1185 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1189 OS_RELEASE=`uname -v`
1213 OS_RELEASE=`uname -v`
1219 OS_RELEASE=`uname -v`
1222 if test "$OS_TARGET" != "NTO"; then
1224 OS_RELEASE=`uname -v | sed 's/^\([0-9]\)\([0-9]*\)$/\1.\2/'`
1233 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1239 OS_RELEASE=`uname -v`
1246 case "${target_cpu}" in
1257 if test -z "$CROSS_COMPILE" ; then
1265 if test "$OS_ARCH" = "NCR"; then
1267 OS_RELEASE=`awk '{print $3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$/\2.\3/'`
1271 # Only set CPU_ARCH if we recognize the value of OS_TEST
1278 powerpc* | ppc | rs6000)
1282 Alpha | alpha | ALPHA)
1299 if test -z "$OS_TARGET"; then
1302 if test "$OS_TARGET" = "WIN95"; then
1305 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1307 dnl ========================================================
1308 dnl GNU specific defaults
1309 dnl ========================================================
1310 if test "$GNU_CC"; then
1311 # FIXME: Let us build with strict aliasing. bug 414641.
1312 CFLAGS="$CFLAGS -fno-strict-aliasing"
1313 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1314 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1315 DSO_LDOPTS='-shared'
1316 if test "$GCC_USE_GNU_LD"; then
1317 # Don't allow undefined symbols in libraries
1318 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1320 WARNINGS_AS_ERRORS='-Werror'
1322 DSO_PIC_CFLAGS='-fPIC'
1323 ASFLAGS="$ASFLAGS -fPIC"
1324 _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
1325 _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
1326 _MOZ_EXCEPTIONS_FLAGS_ON='-fhandle-exceptions'
1327 _MOZ_EXCEPTIONS_FLAGS_OFF='-fno-handle-exceptions'
1329 # Turn on GNU specific features
1330 # -Wall - turn on all warnings
1331 # -pedantic - make compiler warn about non-ANSI stuff, and
1332 # be a little bit stricter
1333 # Warnings slamm took out for now (these were giving more noise than help):
1334 # -Wbad-function-cast - warns when casting a function to a new return type
1335 # -Wshadow - removed because it generates more noise than help --pete
1336 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
1337 if test -z "$INTEL_CC"; then
1338 # Don't use -Wcast-align with ICC
1340 # And don't use it on hppa, ia64, sparc, since it's noisy there
1341 hppa | ia64 | sparc)
1344 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1349 dnl Turn pedantic on but disable the warnings for long long
1352 if test -z "$INTEL_CC"; then
1353 _IGNORE_LONG_LONG_WARNINGS=1
1354 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
1356 _IGNORE_LONG_LONG_WARNINGS=
1360 _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1361 _USE_CPP_INCLUDE_FLAG=1
1363 MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1364 MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1366 DSO_LDOPTS='-shared'
1367 if test "$GNU_LD"; then
1368 # Don't allow undefined symbols in libraries
1369 DSO_LDOPTS="$DSO_LDOPTS -z defs"
1373 DSO_PIC_CFLAGS='-KPIC'
1374 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1377 if test "$GNU_CXX"; then
1378 # FIXME: Let us build with strict aliasing. bug 414641.
1379 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
1380 # Turn on GNU specific features
1381 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
1382 if test -z "$INTEL_CC"; then
1383 # Don't use -Wcast-align with ICC
1385 # And don't use it on hppa, ia64, sparc, since it's noisy there
1386 hppa | ia64 | sparc)
1389 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1394 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1395 _USE_CPP_INCLUDE_FLAG=1
1397 AC_CACHE_CHECK(whether the compiler supports -Wno-invalid-offsetof,
1398 ac_has_wno_invalid_offsetof,
1402 _SAVE_CXXFLAGS="$CXXFLAGS"
1403 CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1406 ac_has_wno_invalid_offsetof="yes",
1407 ac_has_wno_invalid_offsetof="no")
1408 CXXFLAGS="$_SAVE_CXXFLAGS"
1411 if test "$ac_has_wno_invalid_offsetof" = "yes"; then
1412 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1415 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1418 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1419 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1420 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1421 dnl normal behavior.
1422 dnl ========================================================
1424 MKSHLIB_UNFORCE_ALL=
1426 if test "$COMPILE_ENVIRONMENT"; then
1427 if test "$GNU_CC"; then
1428 AC_MSG_CHECKING(whether ld has archive extraction flags)
1429 AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1430 [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1431 ac_cv_mkshlib_force_and_unforce="no"
1432 exec 3<&0 <<LOOP_INPUT
1433 force="-Wl,--whole-archive"; unforce="-Wl,--no-whole-archive"
1434 force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1435 force="-Wl,-all"; unforce="-Wl,-none"
1442 AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1445 LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1447 if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1451 eval $ac_cv_mkshlib_force_and_unforce
1452 MKSHLIB_FORCE_ALL=$force
1453 MKSHLIB_UNFORCE_ALL=$unforce
1456 fi # COMPILE_ENVIRONMENT
1458 dnl =================================================================
1459 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1460 dnl which is bad when cross compiling.
1461 dnl =================================================================
1462 if test "$COMPILE_ENVIRONMENT"; then
1463 configure_static_assert_macros='
1464 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1465 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1466 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1469 dnl test that the macros actually work:
1470 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1471 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1474 ac_cv_static_assertion_macros_work="yes"
1475 AC_TRY_COMPILE([$configure_static_assert_macros],
1476 [CONFIGURE_STATIC_ASSERT(1)],
1478 ac_cv_static_assertion_macros_work="no")
1479 AC_TRY_COMPILE([$configure_static_assert_macros],
1480 [CONFIGURE_STATIC_ASSERT(0)],
1481 ac_cv_static_assertion_macros_work="no",
1484 AC_TRY_COMPILE([$configure_static_assert_macros],
1485 [CONFIGURE_STATIC_ASSERT(1)],
1487 ac_cv_static_assertion_macros_work="no")
1488 AC_TRY_COMPILE([$configure_static_assert_macros],
1489 [CONFIGURE_STATIC_ASSERT(0)],
1490 ac_cv_static_assertion_macros_work="no",
1494 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1495 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1496 AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1498 fi # COMPILE_ENVIRONMENT
1500 dnl ========================================================
1501 dnl Checking for 64-bit OS
1502 dnl ========================================================
1503 if test "$COMPILE_ENVIRONMENT"; then
1506 AC_MSG_CHECKING(for 64-bit OS)
1507 AC_TRY_COMPILE([$configure_static_assert_macros],
1508 [CONFIGURE_STATIC_ASSERT(sizeof(long) == 8)],
1509 result="yes", result="no")
1510 AC_MSG_RESULT("$result")
1511 if test "$result" = "yes"; then
1512 AC_DEFINE(HAVE_64BIT_OS)
1515 AC_SUBST(HAVE_64BIT_OS)
1517 fi # COMPILE_ENVIRONMENT
1519 dnl ========================================================
1520 dnl Enable high-memory support on OS/2 by default.
1521 dnl ========================================================
1522 MOZ_OS2_HIGH_MEMORY=1
1523 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1524 [ --disable-os2-high-mem Disable high-memory support on OS/2],
1525 MOZ_OS2_HIGH_MEMORY=,
1526 MOZ_OS2_HIGH_MEMORY=1 )
1527 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1529 dnl ========================================================
1530 dnl System overrides of the defaults for host
1531 dnl ========================================================
1534 HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
1535 HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
1536 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1539 *cygwin*|*mingw*|*mks*|*msvc*|*wince)
1540 if test -n "$_WIN32_MSVC"; then
1542 HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1543 HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1544 HOST_RANLIB='echo ranlib'
1546 HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
1548 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
1549 HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1550 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1551 HOST_BIN_SUFFIX=.exe
1554 dnl MinGW/MSYS does not need CYGWIN_WRAPPER
1557 CYGWIN_WRAPPER="${srcdir}/build/cygwin-wrapper"
1558 if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
1560 CYGWIN_WRAPPER="${_pwd}/${srcdir}/build/cygwin-wrapper"
1562 if test "`${PERL} -v | grep -c cygwin 2>/dev/null`" = 0; then
1564 PERL="${CYGWIN_WRAPPER} $PERL"
1567 if test "`${PYTHON} -c 'import sys; print sys.platform;'`" != "cygwin"; then
1568 PYTHON="${CYGWIN_WRAPPER} $PYTHON"
1575 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1576 HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1577 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1578 MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
1579 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL -lobjc'
1582 *-linux*|*-kfreebsd*-gnu)
1583 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1584 HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1585 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1589 HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1590 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1591 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1592 HOST_BIN_SUFFIX=.exe
1597 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1598 HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
1599 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1603 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1604 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1608 dnl Get mozilla version from central milestone file
1609 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1611 dnl Get version of various core apps from the version files.
1612 FIREFOX_VERSION=`cat $topsrcdir/browser/config/version.txt`
1614 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1615 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1617 dnl ========================================================
1618 dnl System overrides of the defaults for target
1619 dnl ========================================================
1624 if test ! "$GNU_CC"; then
1625 if test ! "$HAVE_64BIT_OS"; then
1626 # Compiling with Visual Age C++ object model compat is the
1627 # default. To compile with object model ibm, add
1628 # AIX_OBJMODEL=ibm to .mozconfig.
1629 if test "$AIX_OBJMODEL" = "ibm"; then
1630 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1637 AC_SUBST(AIX_OBJMODEL)
1638 DSO_LDOPTS='-qmkshrobj=1'
1639 DSO_CFLAGS='-qflag=w:w'
1641 LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1642 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
1644 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1645 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1646 if test "$COMPILE_ENVIRONMENT"; then
1649 AC_MSG_CHECKING([for VisualAge C++ compiler version >= 6.0.0.3])
1651 [#if (__IBMCPP__ < 600)
1652 #error "Bad compiler"
1654 _BAD_COMPILER=,_BAD_COMPILER=1)
1655 if test -n "$_BAD_COMPILER"; then
1657 AC_MSG_ERROR([VisualAge C++ version 6.0.0.3 or higher is required to build.])
1659 AC_MSG_RESULT([yes])
1662 TARGET_COMPILER_ABI="ibmc"
1663 CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1664 CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1667 case "${target_os}" in
1672 if test "$COMPILE_ENVIRONMENT"; then
1673 AC_CHECK_HEADERS(sys/inttypes.h)
1675 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1680 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1681 _PLATFORM_DEFAULT_TOOLKIT="cairo-beos"
1682 DSO_LDOPTS='-nostart'
1683 TK_LIBS='-lbe -lroot'
1685 if test "$COMPILE_ENVIRONMENT"; then
1686 AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
1687 AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
1689 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
1690 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
1693 MOZ_USER_DIR="Mozilla"
1697 dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
1699 _IGNORE_LONG_LONG_WARNINGS=
1707 _WARNINGS_CFLAGS="-Wall"
1708 _WARNINGS_CXXFLAGS="-Wall"
1709 # The test above doesn't work properly, at least on 3.1.
1710 MKSHLIB_FORCE_ALL=''
1711 MKSHLIB_UNFORCE_ALL=''
1717 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1718 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1719 MOZ_OPTIMIZE_FLAGS="-O2"
1721 CFLAGS="$CFLAGS -fpascal-strings -fno-common"
1722 CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
1725 STRIP="$STRIP -x -S"
1726 _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1727 MOZ_ENABLE_POSTSCRIPT=
1728 TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1729 LDFLAGS="$LDFLAGS -framework Cocoa"
1730 # The ExceptionHandling framework is needed for Objective-C exception
1731 # logging code in nsObjCExceptions.h. Currently we only use that in debug
1733 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"
1734 # set MACOSX to generate lib/mac/MoreFiles/Makefile
1737 dnl DTrace and -dead_strip don't interact well. See bug 403132.
1738 dnl ===================================================================
1739 if test "x$enable_dtrace" = "xyes"; then
1740 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
1742 dnl check for the presence of the -dead_strip linker flag
1743 AC_MSG_CHECKING([for -dead_strip option to ld])
1744 _SAVE_LDFLAGS=$LDFLAGS
1745 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
1746 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
1747 if test -n "$_HAVE_DEAD_STRIP" ; then
1748 AC_MSG_RESULT([yes])
1749 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
1754 LDFLAGS=$_SAVE_LDFLAGS
1759 if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` != "elf"; then
1760 DLL_SUFFIX=".so.1.0"
1761 DSO_LDOPTS="-shared"
1763 if test ! "$GNU_CC"; then
1764 DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
1766 # Can't have force w/o an unforce.
1767 # # Hack for FreeBSD 2.2
1768 # if test -z "$MKSHLIB_FORCE_ALL"; then
1769 # MKSHLIB_FORCE_ALL='-Wl,-Bforcearchive'
1770 # MKSHLIB_UNFORCE_ALL=''
1776 if test ! "$GNU_CC"; then
1777 DSO_LDOPTS='-b -Wl,+s'
1780 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
1781 MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
1782 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1784 DSO_LDOPTS='-b -E +s'
1785 MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1786 MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1788 MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
1789 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1794 DSO_LDOPTS='-elf -shared'
1796 if test "$GNU_CC"; then
1797 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1798 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1799 MKSHLIB_FORCE_ALL='-Wl,-all'
1800 MKSHLIB_UNFORCE_ALL='-Wl,-none'
1801 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1803 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1804 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1805 MKSHLIB_FORCE_ALL='-all'
1806 MKSHLIB_UNFORCE_ALL='-none'
1812 dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must*
1813 dnl compile and link using -n32
1815 TARGET_COMPILER_ABI=n32
1816 DSO_LDOPTS='-elf -shared'
1817 MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1818 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1819 _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
1820 _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
1821 if test "$GNU_CC"; then
1822 MKSHLIB_FORCE_ALL='-Wl,-all'
1823 MKSHLIB_UNFORCE_ALL='-Wl,-none'
1824 _WARNINGS_CFLAGS="-Wall"
1825 _WARNINGS_CXXFLAGS="-Wall"
1826 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1828 MKSHLIB_FORCE_ALL='-all'
1829 MKSHLIB_UNFORCE_ALL='-none'
1835 CFLAGS="$CFLAGS -woff 3262 -G 4"
1836 CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
1837 if test -n "$USE_N32"; then
1838 ASFLAGS="$ASFLAGS -n32"
1839 CFLAGS="$CFLAGS -n32"
1840 CXXFLAGS="$CXXFLAGS -n32"
1841 LDFLAGS="$LDFLAGS -n32"
1843 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1844 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
1847 if test -z "$GNU_CXX"; then
1853 # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
1854 # Similarly for GNU_CXX and INTEL_CXX.
1855 if test "$INTEL_CC" || test "$INTEL_CXX"; then
1856 # -Os has been broken on Intel's C/C++ compilers for quite a
1857 # while; Intel recommends against using it.
1858 MOZ_OPTIMIZE_FLAGS="-O2"
1859 MOZ_DEBUG_FLAGS="-g -fno-inline"
1860 elif test "$GNU_CC" || test "$GNU_CXX"; then
1861 GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
1862 case $GCC_VERSION in
1864 # -Os is broken on gcc 4.1.x and 4.2.x, we need to tweak it to get good results.
1865 MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
1867 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions $MOZ_OPTIMIZE_SIZE_TWEAK"
1868 MOZ_DEBUG_FLAGS="-g -fno-inline" # most people on linux use gcc/gdb,
1869 # and that combo is not yet good at
1870 # debugging inlined functions (even
1871 # when using DWARF2 as the debugging
1875 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1879 case "${target_cpu}" in
1881 CFLAGS="$CFLAGS -mieee"
1882 CXXFLAGS="$CXXFLAGS -mieee"
1886 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1
1889 MOZ_DEBUG_FLAGS="-g" # We want inlining
1896 MOZ_TOOLS_DIR=`echo $MOZ_TOOLS`
1898 AR_EXTRACT="$AR -extract"
1900 AR_FLAGS='-OUT:"$@"'
1902 if test -z "$AS_BIN"; then
1909 if test -z "$RC"; then
1912 # certain versions of cygwin's makedepend barf on the
1913 # #include <string> vs -I./dist/include/string issue so don't use it
1919 HOST_AR='lib -OUT:$@'
1920 HOST_RANLIB='echo ranlib'
1921 HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
1924 WARNINGS_AS_ERRORS='-WX'
1925 MOZ_OPTIMIZE_FLAGS='-O1'
1926 AR_FLAGS='-NOLOGO -OUT:"$@"'
1928 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
1929 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
1932 DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
1933 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
1935 IMPORT_LIB_SUFFIX=lib
1937 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
1940 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1941 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1943 MKSHLIB_UNFORCE_ALL=
1944 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1945 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1946 MOZ_DEBUG_FLAGS='-Zi'
1947 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
1949 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
1950 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
1952 RANLIB='echo not_ranlib'
1953 STRIP='echo not_strip'
1954 TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
1957 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
1959 LIBIDL_CFLAGS="-I$MOZ_TOOLS_DIR/include ${GLIB_CFLAGS}"
1960 LIBIDL_LIBS="$MOZ_TOOLS_DIR/lib/libidl-0.6_s.lib $MOZ_TOOLS_DIR/lib/glib-1.2_s.lib"
1963 AC_DEFINE(HAVE_SNPRINTF)
1969 AC_DEFINE(HW_THREADS)
1970 AC_DEFINE(STDC_HEADERS)
1971 AC_DEFINE(NEW_H, <new>)
1972 AC_DEFINE(WIN32_LEAN_AND_MEAN)
1974 TARGET_MD_ARCH=win32
1975 _PLATFORM_DEFAULT_TOOLKIT='windows'
1978 MOZ_ENABLE_POSTSCRIPT=
1979 MOZ_USER_DIR="Mozilla"
1983 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
1988 # certain versions of cygwin's makedepend barf on the
1989 # #include <string> vs -I./dist/include/string issue so don't use it
1991 if test -n "$GNU_CC"; then
1992 CC="$CC -mno-cygwin"
1993 CXX="$CXX -mno-cygwin"
1994 CPP="$CPP -mno-cygwin"
1995 CFLAGS="$CFLAGS -mms-bitfields"
1996 CXXFLAGS="$CXXFLAGS -mms-bitfields"
1997 DSO_LDOPTS='-shared'
1998 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1999 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2001 # Use temp file for windres (bug 213281)
2002 RCFLAGS='-O coff --use-temp-file'
2003 # mingw doesn't require kernel32, user32, and advapi32 explicitly
2004 LIBS="$LIBS -lgdi32 -lwinmm -lwsock32"
2005 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/lib -ljs$(MOZ_BITS)$(VERSION_NUMBER)'
2007 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core'
2008 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom'
2010 IMPORT_LIB_SUFFIX=dll.a
2012 TARGET_COMPILER_ABI=msvc
2016 AR='lib -NOLOGO -OUT:"$@"'
2018 RANLIB='echo not_ranlib'
2019 STRIP='echo not_strip'
2024 GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
2029 IMPORT_LIB_SUFFIX=lib
2030 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2031 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2033 MKSHLIB_UNFORCE_ALL=
2034 DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2035 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2036 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2037 LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
2038 MOZ_DEBUG_FLAGS='-Zi'
2039 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2040 WARNINGS_AS_ERRORS='-WX'
2041 MOZ_OPTIMIZE_FLAGS='-O1'
2042 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
2044 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
2045 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
2046 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2047 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2048 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
2049 if test $_MSC_VER -ge 1400; then
2050 LDFLAGS="$LDFLAGS -NXCOMPAT -SAFESEH"
2051 dnl For profile-guided optimization
2052 PROFILE_GEN_CFLAGS="-GL"
2053 PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2054 dnl XXX: PGO builds can fail with warnings treated as errors,
2055 dnl specifically "no profile data available" appears to be
2056 dnl treated as an error sometimes. This might be a consequence
2057 dnl of using WARNINGS_AS_ERRORS in some modules, combined
2058 dnl with the linker doing most of the work in the whole-program
2059 dnl optimization/PGO case. I think it's probably a compiler bug,
2060 dnl but we work around it here.
2061 PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2062 dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2063 dnl Probably also a compiler bug, but what can you do?
2064 PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2065 if test -n "$_USE_DYNAMICBASE"; then
2066 LDFLAGS="$LDFLAGS -DYNAMICBASE"
2070 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,jpeg$(MOZ_BITS)$(VERSION_NUMBER),$(DEPTH)/jpeg)'
2071 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,png,$(DEPTH)/modules/libimg/png)'
2072 AC_DEFINE(HAVE_SNPRINTF)
2078 AC_DEFINE(HW_THREADS)
2079 AC_DEFINE(STDC_HEADERS)
2080 AC_DEFINE(NEW_H, <new>)
2081 AC_DEFINE(WIN32_LEAN_AND_MEAN)
2082 TARGET_MD_ARCH=win32
2083 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2086 MOZ_ENABLE_POSTSCRIPT=
2087 MOZ_USER_DIR="Mozilla"
2089 dnl Hardcode to win95 for now - cls
2090 TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2092 dnl set NO_X11 defines here as the general check is skipped on win32
2096 dnl MinGW/MSYS doesn't provide or need cygpath
2101 MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2103 *-cygwin*|*-msvc*|*-mks*)
2104 CYGPATH_W="cygpath -a -w"
2105 CYGPATH_S="sed -e s|\\\\|/|g"
2106 MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
2110 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2112 if test -z "$MOZ_TOOLS"; then
2113 AC_MSG_ERROR([MOZ_TOOLS is not set])
2116 MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd`
2117 if test "$?" != "0" || test -z "$MOZ_TOOLS_DIR"; then
2118 AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2120 if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_DIR/bin:"` = 0; then
2121 AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2123 MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
2125 if test -n "$GLIB_PREFIX"; then
2126 _GLIB_PREFIX_DIR=`cd $GLIB_PREFIX && pwd`
2127 if test "$?" = "0"; then
2128 if test `echo ${PATH}: | grep -ic "$_GLIB_PREFIX_DIR/bin:"` = 0; then
2129 AC_MSG_ERROR([GLIB_PREFIX must be in your \$PATH.])
2131 _GLIB_PREFIX_DIR=`$CYGPATH_W $_GLIB_PREFIX_DIR | $CYGPATH_S`
2133 AC_MSG_ERROR([GLIB_PREFIX is set but "${GLIB_PREFIX}" is not a directory.])
2136 _GLIB_PREFIX_DIR=$MOZ_TOOLS_DIR
2138 if test ! -f "${_GLIB_PREFIX_DIR}/include/glib.h"; then
2139 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/include/glib.h .])
2141 GLIB_CFLAGS="-I${_GLIB_PREFIX_DIR}/include"
2142 if test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"; then
2143 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"
2144 elif test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"; then
2145 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"
2147 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/lib/glib-1.2.lib or $_GLIB_PREFIX_DIR/lib/glib-1.2_s.lib])
2150 if test -n "$LIBIDL_PREFIX"; then
2151 _LIBIDL_PREFIX_DIR=`cd $LIBIDL_PREFIX && pwd`
2152 if test "$?" = "0"; then
2153 if test `echo ${PATH}: | grep -ic "$_LIBIDL_PREFIX_DIR/bin:"` = 0; then
2154 AC_MSG_ERROR([LIBIDL_PREFIX must be in your \$PATH.])
2156 _LIBIDL_PREFIX_DIR=`$CYGPATH_W $_LIBIDL_PREFIX_DIR | $CYGPATH_S`
2158 AC_MSG_ERROR([LIBIDL_PREFIX is set but "${LIBIDL_PREFIX}" is not a directory.])
2161 _LIBIDL_PREFIX_DIR=$MOZ_TOOLS_DIR
2163 if test ! -f "${_LIBIDL_PREFIX_DIR}/include/libIDL/IDL.h"; then
2164 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/include/libIDL/IDL.h .])
2166 LIBIDL_CFLAGS="-I${_LIBIDL_PREFIX_DIR}/include ${GLIB_CFLAGS}"
2167 if test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"; then
2168 LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"
2170 elif test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"; then
2171 LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"
2173 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/lib/libidl-0.6.lib or $_LIBIDL_PREFIX_DIR/lib/libidl-0.6_s.lib])
2175 LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2178 *) # else cross-compiling
2179 if test -n "$GLIB_PREFIX"; then
2180 GLIB_CFLAGS="-I${GLIB_PREFIX}/include"
2181 if test -f "${GLIB_PREFIX}/lib/glib-1.2_s.lib"; then
2182 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2_s.lib"
2183 elif test -f "${GLIB_PREFIX}/lib/glib-1.2.lib"; then
2184 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2.lib"
2186 AC_MSG_ERROR([Cannot find $GLIB_PREFIX/lib/glib-1.2.lib or $GLIB_PREFIX/lib/glib-1.2_s.lib])
2189 if test -n "$LIBIDL_PREFIX"; then
2190 LIBIDL_CFLAGS="-I${LIBIDL_PREFIX}/include ${GLIB_CFLAGS}"
2191 if test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"; then
2192 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"
2194 elif test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"; then
2195 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"
2197 AC_MSG_ERROR([Cannot find $LIBIDL_PREFIX/lib/libIDL-0.6.lib or $LIBIDL_PREFIX/lib/libIDL-0.6_s.lib])
2200 LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2207 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])
2211 AC_CHECK_HEADERS(mmintrin.h oleacc.idl)
2215 AC_CHECK_HEADERS(atlbase.h wpcapi.h)
2231 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2238 CFLAGS="$CFLAGS -Dunix"
2239 CXXFLAGS="$CXXFLAGS -Dunix"
2240 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2242 DSO_PIC_CFLAGS='-fPIC -DPIC'
2243 DSO_LDOPTS='-shared'
2244 BIN_FLAGS='-Wl,--export-dynamic'
2246 DSO_PIC_CFLAGS='-fPIC -DPIC'
2247 DLL_SUFFIX=".so.1.0"
2248 DSO_LDOPTS='-shared'
2250 # This will fail on a.out systems prior to 1.5.1_ALPHA.
2251 MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2252 MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2253 if test "$LIBRUNPATH"; then
2254 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2256 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2257 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2262 AC_DEFINE(_QNX_SOURCE)
2265 WARNINGS_AS_ERRORS=''
2266 MOZ_OPTIMIZE_FLAGS="-O"
2267 MOZ_DEBUG_FLAGS="-gstabs"
2270 LIBS="$LIBS -lsocket -lstdc++"
2271 _DEFINES_CFLAGS='-Wp,-include -Wp,$(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
2272 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -Wp,-include -Wp,$(DEPTH)/mozilla-config.h -D_POSIX_C_SOURCE=199506'
2273 if test "$with_x" != "yes"
2275 _PLATFORM_DEFAULT_TOOLKIT="photon"
2276 TK_CFLAGS='-I/usr/include/photon'
2279 case "${target_cpu}" in
2281 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
2284 case "${host_cpu}" in
2292 DLL_SUFFIX=".so.1.0"
2294 DSO_PIC_CFLAGS='-fPIC'
2295 DSO_LDOPTS='-shared -fPIC'
2296 if test "$LIBRUNPATH"; then
2297 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2302 AC_DEFINE(NO_PW_GECOS)
2303 AC_DEFINE(NO_UDSOCK)
2304 AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
2306 MKSHLIB_FORCE_ALL='-all'
2307 MKSHLIB_UNFORCE_ALL='-none'
2309 AS_DASH_C_FLAG='-Wc/names=as_is'
2311 DSO_LDOPTS='-shared -auto_symvec'
2313 MOZ_DEBUG_LDFLAGS='-g'
2315 CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
2316 CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
2321 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2322 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2325 AC_DEFINE(OS2EMX_PLAIN_CHAR)
2326 AC_DEFINE(TCPV40HDRS)
2333 IMPORT_LIB_SUFFIX=lib
2337 CFLAGS="$CFLAGS -Zomf"
2338 CXXFLAGS="$CXXFLAGS -Zomf"
2340 BIN_FLAGS='-Zlinker /ST:0x100000'
2344 WARNINGS_AS_ERRORS='-Werror'
2345 MOZ_DEBUG_FLAGS="-g -fno-inline"
2346 MOZ_OPTIMIZE_FLAGS="-O2"
2347 MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2348 MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcomct.lib'
2349 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
2350 LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2352 _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2353 MOZ_ENABLE_POSTSCRIPT=
2356 MOZ_USER_DIR="Mozilla"
2358 if test "$MOZTOOLS"; then
2359 MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2361 AC_MSG_ERROR([MOZTOOLS is not set])
2363 if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2364 DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2365 LDFLAGS="$LDFLAGS -Zhigh-mem"
2366 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2367 AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2370 # GCC for OS/2 currently predefines these, but we don't want them
2371 _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2372 _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2374 AC_CACHE_CHECK(for __declspec(dllexport),
2376 [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2378 ac_os2_declspec="yes",
2379 ac_os2_declspec="no")])
2380 if test "$ac_os2_declspec" = "yes"; then
2382 MOZ_OS2_USE_DECLSPEC='1'
2387 if test "$GNU_CC"; then
2388 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2389 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2392 MOZ_DEBUG_FLAGS='-g'
2393 ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
2394 CFLAGS="$CFLAGS -ieee"
2395 CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee -ptr $(DIST)/cxx_repository'
2396 DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
2399 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2400 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2401 MKSHLIB_FORCE_ALL='-all'
2402 MKSHLIB_UNFORCE_ALL='-none'
2403 dnl Might fix the libxpcom.so breakage on this platform as well....
2404 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2405 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2407 if test -z "$GNU_CXX"; then
2410 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2414 DIRENT_INO=d_stat.st_ino
2415 dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
2416 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2417 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2418 dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
2419 AC_DEFINE(STDC_HEADERS)
2420 if test "$no_x" = "yes"; then
2421 _PLATFORM_DEFAULT_TOOLKIT='photon'
2422 TK_CFLAGS='-I/usr/nto/include/photon'
2423 TK_LIBS='-lphoton -lphrender'
2428 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2429 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2430 CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
2431 if test ! "$GNU_CC"; then
2436 dnl the qsort routine under solaris is faulty
2439 TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2441 # $ORIGIN/.. is for shared libraries under components/ to locate shared
2442 # libraries one level up (e.g. libnspr4.so)
2443 LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..'"
2444 LIBS="-lCrun -lCstd $LIBS"
2446 if test -z "$GNU_CC"; then
2449 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2451 if test "$CPU_ARCH" != "sparc"; then
2452 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all"
2453 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife -norunpath"
2455 # Do not use -xbuiltin on SPARC to get around a bug of compiler
2456 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%none"
2457 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%none -features=tmplife -norunpath"
2460 LDFLAGS="-xildoff -z lazyload -z combreloc $LDFLAGS"
2461 if test -z "$CROSS_COMPILE" && test -f /usr/lib/ld/map.noexstk; then
2462 _SAVE_LDFLAGS=$LDFLAGS
2463 LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2464 AC_TRY_LINK([#include <stdio.h>],
2465 [printf("Hello World\n");],
2467 [LDFLAGS=$_SAVE_LDFLAGS])
2469 WARNINGS_AS_ERRORS='-Werror'
2470 MOZ_OPTIMIZE_FLAGS="-xO4"
2471 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2472 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) -G -z muldefs -h $@ -o $@'
2473 MKSHLIB_FORCE_ALL='-z allextract'
2474 MKSHLIB_UNFORCE_ALL='-z defaultextract'
2475 DSO_LDOPTS='-G -z muldefs'
2481 AS='/usr/ccs/bin/as'
2482 ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2484 TARGET_COMPILER_ABI="sunc"
2485 CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2486 CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2487 AC_MSG_CHECKING([for Forte compiler version >= WS6U2])
2491 [#if (__SUNPRO_CC < 0x530)
2494 _BAD_COMPILER=,_BAD_COMPILER=1)
2495 if test -n "$_BAD_COMPILER"; then
2497 AC_MSG_ERROR([Forte version WS6U2 or higher is required to build. Your compiler version is $CC_VERSION .])
2501 AC_MSG_RESULT([$_res])
2504 ASFLAGS="$ASFLAGS -fPIC"
2507 _WARNINGS_CXXFLAGS=''
2508 if test "$OS_RELEASE" = "5.3"; then
2509 AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2512 if test "$OS_RELEASE" = "5.5.1"; then
2513 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2518 DSO_LDOPTS='-Bdynamic'
2519 MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2520 MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2522 AC_DEFINE(SPRINTF_RETURNS_STRING)
2523 case "$(target_os)" in
2525 DLL_SUFFIX='.so.1.0'
2531 NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2535 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2540 dnl Only one oddball right now (QNX), but this gives us flexibility
2541 dnl if any other platforms need to override this in the future.
2542 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2544 dnl ========================================================
2545 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2546 dnl by now will not have any way to link most binaries (tests
2547 dnl as well as viewer, apprunner, etc.), because some symbols
2548 dnl will be left out of the "composite" .so's by ld as unneeded.
2549 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2550 dnl they can link in the static libs that provide the missing
2552 dnl ========================================================
2553 NO_LD_ARCHIVE_FLAGS=
2554 if test -z "$MKSHLIB_FORCE_ALL" || test -z "$MKSHLIB_UNFORCE_ALL"; then
2555 NO_LD_ARCHIVE_FLAGS=1
2559 NO_LD_ARCHIVE_FLAGS=
2562 NO_LD_ARCHIVE_FLAGS=
2565 NO_LD_ARCHIVE_FLAGS=
2567 *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince)
2568 if test -z "$GNU_CC"; then
2569 NO_LD_ARCHIVE_FLAGS=
2573 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2576 dnl Indicate that platform requires special thread safe
2577 dnl locking when starting up the OJI JVM
2578 dnl (see mozilla/modules/oji/src/nsJVMManager.cpp)
2579 dnl ========================================================
2582 AC_DEFINE(MOZ_OJI_REQUIRE_THREAD_SAFE_ON_STARTUP)
2586 dnl ========================================================
2587 dnl = Flags to strip unused symbols from .so components
2588 dnl ========================================================
2590 *-linux*|*-kfreebsd*-gnu)
2591 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2594 if test -z "$GNU_CC"; then
2595 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2597 if test -z "$GCC_USE_GNU_LD"; then
2598 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2600 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2605 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2608 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2610 *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince)
2611 if test -n "$GNU_CC"; then
2612 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2617 if test -z "$COMPILE_ENVIRONMENT"; then
2618 SKIP_COMPILER_CHECKS=1
2619 SKIP_LIBRARY_CHECKS=1
2622 if test -z "$SKIP_COMPILER_CHECKS"; then
2623 dnl Checks for typedefs, structures, and compiler characteristics.
2624 dnl ========================================================
2632 AC_STRUCT_ST_BLKSIZE
2633 AC_MSG_CHECKING(for siginfo_t)
2634 AC_CACHE_VAL(ac_cv_siginfo_t,
2635 [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2636 #include <signal.h>],
2638 [ac_cv_siginfo_t=true],
2639 [ac_cv_siginfo_t=false])])
2640 if test "$ac_cv_siginfo_t" = true ; then
2641 AC_DEFINE(HAVE_SIGINFO_T)
2647 dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
2648 dnl ========================================================
2649 AC_MSG_CHECKING(for int16_t)
2650 AC_CACHE_VAL(ac_cv_int16_t,
2651 [AC_TRY_COMPILE([#include <stdio.h>
2652 #include <sys/types.h>],
2654 [ac_cv_int16_t=true],
2655 [ac_cv_int16_t=false])])
2656 if test "$ac_cv_int16_t" = true ; then
2657 AC_DEFINE(HAVE_INT16_T)
2662 AC_MSG_CHECKING(for int32_t)
2663 AC_CACHE_VAL(ac_cv_int32_t,
2664 [AC_TRY_COMPILE([#include <stdio.h>
2665 #include <sys/types.h>],
2667 [ac_cv_int32_t=true],
2668 [ac_cv_int32_t=false])])
2669 if test "$ac_cv_int32_t" = true ; then
2670 AC_DEFINE(HAVE_INT32_T)
2675 AC_MSG_CHECKING(for int64_t)
2676 AC_CACHE_VAL(ac_cv_int64_t,
2677 [AC_TRY_COMPILE([#include <stdio.h>
2678 #include <sys/types.h>],
2680 [ac_cv_int64_t=true],
2681 [ac_cv_int64_t=false])])
2682 if test "$ac_cv_int64_t" = true ; then
2683 AC_DEFINE(HAVE_INT64_T)
2688 AC_MSG_CHECKING(for int64)
2689 AC_CACHE_VAL(ac_cv_int64,
2690 [AC_TRY_COMPILE([#include <stdio.h>
2691 #include <sys/types.h>],
2694 [ac_cv_int64=false])])
2695 if test "$ac_cv_int64" = true ; then
2696 AC_DEFINE(HAVE_INT64)
2701 AC_MSG_CHECKING(for uint)
2702 AC_CACHE_VAL(ac_cv_uint,
2703 [AC_TRY_COMPILE([#include <stdio.h>
2704 #include <sys/types.h>],
2707 [ac_cv_uint=false])])
2708 if test "$ac_cv_uint" = true ; then
2709 AC_DEFINE(HAVE_UINT)
2714 AC_MSG_CHECKING(for uint_t)
2715 AC_CACHE_VAL(ac_cv_uint_t,
2716 [AC_TRY_COMPILE([#include <stdio.h>
2717 #include <sys/types.h>],
2719 [ac_cv_uint_t=true],
2720 [ac_cv_uint_t=false])])
2721 if test "$ac_cv_uint_t" = true ; then
2722 AC_DEFINE(HAVE_UINT_T)
2727 AC_MSG_CHECKING(for uint16_t)
2728 AC_CACHE_VAL(ac_cv_uint16_t,
2729 [AC_TRY_COMPILE([#include <stdio.h>
2730 #include <sys/types.h>],
2731 [uint16_t foo = 0;],
2732 [ac_cv_uint16_t=true],
2733 [ac_cv_uint16_t=false])])
2734 if test "$ac_cv_uint16_t" = true ; then
2735 AC_DEFINE(HAVE_UINT16_T)
2741 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
2742 dnl are defined when compiling C++ but not C. Since the result of this
2743 dnl test is used only in C++, do it in C++.
2746 AC_MSG_CHECKING(for uname.domainname)
2747 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
2748 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2749 [ struct utsname *res; char *domain;
2750 (void)uname(res); if (res != 0) { domain = res->domainname; } ],
2751 [ac_cv_have_uname_domainname_field=true],
2752 [ac_cv_have_uname_domainname_field=false])])
2754 if test "$ac_cv_have_uname_domainname_field" = "true"; then
2755 AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
2761 AC_MSG_CHECKING(for uname.__domainname)
2762 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
2763 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2764 [ struct utsname *res; char *domain;
2765 (void)uname(res); if (res != 0) { domain = res->__domainname; } ],
2766 [ac_cv_have_uname_us_domainname_field=true],
2767 [ac_cv_have_uname_us_domainname_field=false])])
2769 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
2770 AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
2778 dnl Check for usable wchar_t (2 bytes, unsigned)
2779 dnl (we really don't need the unsignedness check anymore)
2780 dnl ========================================================
2782 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
2783 ac_cv_have_usable_wchar_v2,
2784 [AC_TRY_COMPILE([#include <stddef.h>
2785 $configure_static_assert_macros],
2786 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2787 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2788 ac_cv_have_usable_wchar_v2="yes",
2789 ac_cv_have_usable_wchar_v2="no")])
2790 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
2791 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2792 HAVE_CPP_2BYTE_WCHAR_T=1
2794 dnl This is really gcc-only
2795 dnl Do this test using CXX only since some versions of gcc
2796 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
2797 dnl only have short-wchar support for c++.
2798 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
2802 _SAVE_CXXFLAGS=$CXXFLAGS
2803 CXXFLAGS="$CXXFLAGS -fshort-wchar"
2805 AC_CACHE_CHECK(for compiler -fshort-wchar option,
2806 ac_cv_have_usable_wchar_option_v2,
2807 [AC_TRY_LINK([#include <stddef.h>
2808 $configure_static_assert_macros],
2809 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2810 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2811 ac_cv_have_usable_wchar_option_v2="yes",
2812 ac_cv_have_usable_wchar_option_v2="no")])
2814 if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
2815 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2816 HAVE_CPP_2BYTE_WCHAR_T=1
2817 WCHAR_CFLAGS="-fshort-wchar"
2819 CXXFLAGS=$_SAVE_CXXFLAGS
2824 dnl Check for .hidden assembler directive and visibility attribute.
2825 dnl Borrowed from glibc configure.in
2826 dnl ===============================================================
2827 if test "$GNU_CC"; then
2828 AC_CACHE_CHECK(for visibility(hidden) attribute,
2829 ac_cv_visibility_hidden,
2830 [cat > conftest.c <<EOF
2831 int foo __attribute__ ((visibility ("hidden"))) = 1;
2833 ac_cv_visibility_hidden=no
2834 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2835 if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2836 ac_cv_visibility_hidden=yes
2841 if test "$ac_cv_visibility_hidden" = "yes"; then
2842 AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2844 AC_CACHE_CHECK(for visibility(default) attribute,
2845 ac_cv_visibility_default,
2846 [cat > conftest.c <<EOF
2847 int foo __attribute__ ((visibility ("default"))) = 1;
2849 ac_cv_visibility_default=no
2850 if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2851 if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2852 ac_cv_visibility_default=yes
2857 if test "$ac_cv_visibility_default" = "yes"; then
2858 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2860 AC_CACHE_CHECK(for visibility pragma support,
2861 ac_cv_visibility_pragma,
2862 [cat > conftest.c <<EOF
2863 #pragma GCC visibility push(hidden)
2865 #pragma GCC visibility push(default)
2866 int foo_default = 1;
2868 ac_cv_visibility_pragma=no
2869 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2870 if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
2871 if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
2872 ac_cv_visibility_pragma=yes
2878 if test "$ac_cv_visibility_pragma" = "yes"; then
2879 AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
2880 ac_cv_have_visibility_class_bug,
2881 [cat > conftest.c <<EOF
2882 #pragma GCC visibility push(hidden)
2883 struct __attribute__ ((visibility ("default"))) TestStruct {
2886 __attribute__ ((visibility ("default"))) void TestFunc() {
2890 ac_cv_have_visibility_class_bug=no
2891 if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2892 ac_cv_have_visibility_class_bug=yes
2894 if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
2895 ac_cv_have_visibility_class_bug=yes
2898 rm -rf conftest.{c,S}
2901 AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
2902 ac_cv_have_visibility_builtin_bug,
2903 [cat > conftest.c <<EOF
2904 #pragma GCC visibility push(hidden)
2905 #pragma GCC visibility push(default)
2907 #pragma GCC visibility pop
2909 __attribute__ ((visibility ("default"))) void Func() {
2911 memset(c, 0, sizeof(c));
2914 ac_cv_have_visibility_builtin_bug=no
2915 if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2916 ac_cv_have_visibility_builtin_bug=yes
2918 if test `grep -c "@PLT" conftest.S` = 0; then
2919 ac_cv_visibility_builtin_bug=yes
2922 rm -f conftest.{c,S}
2924 if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
2925 "$ac_cv_have_visibility_class_bug" = "no"; then
2926 VISIBILITY_FLAGS='-I$(DIST)/include/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
2927 WRAP_SYSTEM_INCLUDES=1
2929 VISIBILITY_FLAGS='-fvisibility=hidden'
2930 fi # have visibility pragma bug
2931 fi # have visibility pragma
2932 fi # have visibility(default) attribute
2933 fi # have visibility(hidden) attribute
2936 # visibility hidden flag for Sun Studio on Solaris
2937 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
2938 VISIBILITY_FLAGS='-xldscope=hidden'
2939 fi # Sun Studio on Solaris
2941 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2942 AC_SUBST(VISIBILITY_FLAGS)
2944 dnl Checks for header files.
2945 dnl ========================================================
2947 case "$target_os" in
2949 # for stuff like -lXshm
2950 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2953 AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
2954 AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
2955 AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
2956 AC_CHECK_HEADERS(malloc.h)
2957 AC_CHECK_HEADERS(X11/XKBlib.h)
2959 dnl These are all the places some variant of statfs can be hiding.
2960 AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2962 dnl Try for MMX support
2963 dnl NB - later gcc versions require -mmmx for this header to be successfully
2964 dnl included (or another option which implies it, such as -march=pentium-mmx)
2965 AC_CHECK_HEADERS(mmintrin.h)
2967 dnl Check whether the compiler supports the new-style C++ standard
2968 dnl library headers (i.e. <new>) or needs the old "new.h"
2971 AC_CHECK_HEADER(new, [NEW_H=new])
2972 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
2975 AC_ARG_ENABLE(dtrace,
2976 [ --enable-dtrace build with dtrace support if available (default=no)],
2977 [enable_dtrace="yes"],)
2978 if test "x$enable_dtrace" = "xyes"; then
2979 AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
2980 if test -n "$HAVE_DTRACE"; then
2981 AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
2983 AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
2986 AC_SUBST(HAVE_DTRACE)
2992 AC_CHECK_HEADERS(sys/cdefs.h)
2996 dnl Checks for libraries.
2997 dnl ========================================================
3002 AC_CHECK_LIB(c_r, gethostbyname_r)
3006 dnl We don't want to link with libdl even if it's present on OS X, since
3007 dnl it's not used and not part of the default installation.
3008 dnl The same goes for BeOS.
3009 dnl We don't want to link against libm or libpthread on Darwin since
3010 dnl they both are just symlinks to libSystem and explicitly linking
3011 dnl against libSystem causes issues when debugging (see bug 299601).
3018 AC_CHECK_LIB(m, atan)
3019 AC_CHECK_LIB(dl, dlopen,
3020 AC_CHECK_HEADER(dlfcn.h,
3022 AC_DEFINE(HAVE_LIBDL)))
3026 _SAVE_CFLAGS="$CFLAGS"
3027 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3028 AC_CHECK_FUNCS(dladdr)
3029 CFLAGS="$_SAVE_CFLAGS"
3031 if test ! "$GNU_CXX"; then
3035 AC_CHECK_LIB(C_r, demangle)
3038 AC_CHECK_LIB(C, demangle)
3042 AC_CHECK_LIB(socket, socket)
3045 XLIBS="$X_EXTRA_LIBS"
3047 dnl ========================================================
3048 dnl Checks for X libraries.
3049 dnl Ordering is important.
3050 dnl Xt is dependent upon SM as of X11R6
3051 dnl ========================================================
3052 if test "$no_x" = "yes"; then
3055 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3056 XLIBS="-lX11 $XLIBS"
3057 _SAVE_LDFLAGS="$LDFLAGS"
3058 LDFLAGS="$XLDFLAGS $LDFLAGS"
3059 AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3060 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3061 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3062 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3065 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3066 unset ac_cv_lib_Xt_XtFree
3067 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3068 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
3069 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3070 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3073 # AIX needs the motif library linked before libXt to prevent
3074 # crashes in plugins linked against Motif - Bug #98892
3075 case "${target_os}" in
3077 XT_LIBS="-lXm $XT_LIBS"
3081 dnl ========================================================
3082 dnl = Check for XShm
3083 dnl ========================================================
3084 AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3086 AC_CHECK_HEADER(X11/extensions/XShm.h)
3087 if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" &&
3088 test -n "$_HAVE_XSHM_XEXT"; then
3089 AC_DEFINE(HAVE_XSHM)
3092 dnl ========================================================
3094 dnl ========================================================
3095 AC_CHECK_LIB(XIE, XieFloGeometry, [MOZ_XIE_LIBS="-lXIE"],,
3097 AC_CHECK_HEADER(X11/extensions/XIElib.h)
3099 if test "$MOZ_XIE_LIBS"; then
3100 dnl ====================================================
3101 dnl = If XIE is present and is desired, turn it on
3102 dnl ====================================================
3112 LDFLAGS="$_SAVE_LDFLAGS"
3114 dnl ========================================================
3115 dnl = Check for freetype2 and its functionality
3116 dnl ========================================================
3117 AC_CHECK_FT2(6.1.0, [_HAVE_FREETYPE2=1], [_HAVE_FREETYPE2=])
3119 if test "$_HAVE_FREETYPE2"; then
3121 _SAVE_CFLAGS="$CFLAGS"
3122 LIBS="$LIBS $FT2_LIBS"
3123 CFLAGS="$CFLAGS $FT2_CFLAGS"
3125 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
3126 ac_cv_member_FT_Bitmap_Size_y_ppem,
3127 [AC_TRY_COMPILE([#include <ft2build.h>
3128 #include FT_FREETYPE_H],
3130 if (sizeof s.y_ppem) return 0;
3132 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
3133 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
3134 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
3135 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
3137 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
3139 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
3140 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
3141 [FT_Bitmap_Size structure includes y_ppem field])
3143 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
3146 CFLAGS="$_SAVE_CFLAGS"
3156 AC_MSG_CHECKING(for ARM SIMD support)
3158 [asm("uqadd8 r1, r1, r2");],
3159 result="yes", result="no")
3160 AC_MSG_RESULT("$result")
3161 if test "$result" = "yes"; then
3162 AC_DEFINE(HAVE_ARM_SIMD)
3165 AC_SUBST(HAVE_ARM_SIMD)
3167 dnl ========================================================
3168 dnl = pthread support
3169 dnl = Start by checking whether the system support pthreads
3170 dnl ========================================================
3171 case "$target_os" in
3176 MOZ_CHECK_PTHREADS(pthreads,
3177 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3178 MOZ_CHECK_PTHREADS(pthread,
3179 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3180 MOZ_CHECK_PTHREADS(c_r,
3181 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3182 MOZ_CHECK_PTHREADS(c,
3191 dnl ========================================================
3192 dnl Check the command line for --with-pthreads
3193 dnl ========================================================
3194 MOZ_ARG_WITH_BOOL(pthreads,
3195 [ --with-pthreads Force use of system pthread library with NSPR ],
3196 [ if test "$USE_PTHREADS"x = x; then
3197 AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3203 dnl ========================================================
3204 dnl Do the platform specific pthread hackery
3205 dnl ========================================================
3206 if test "$USE_PTHREADS"x != x
3209 dnl See if -pthread is supported.
3212 ac_cv_have_dash_pthread=no
3213 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3214 echo 'int main() { return 0; }' | cat > conftest.c
3215 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3216 if test $? -eq 0; then
3217 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3218 ac_cv_have_dash_pthread=yes
3219 case "$target_os" in
3221 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3224 CFLAGS="$CFLAGS -pthread"
3225 CXXFLAGS="$CXXFLAGS -pthread"
3231 AC_MSG_RESULT($ac_cv_have_dash_pthread)
3234 dnl See if -pthreads is supported.
3236 ac_cv_have_dash_pthreads=no
3237 if test "$ac_cv_have_dash_pthread" = "no"; then
3238 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3239 echo 'int main() { return 0; }' | cat > conftest.c
3240 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3241 if test $? -eq 0; then
3242 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3243 ac_cv_have_dash_pthreads=yes
3244 CFLAGS="$CFLAGS -pthreads"
3245 CXXFLAGS="$CXXFLAGS -pthreads"
3249 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3254 AC_DEFINE(_REENTRANT)
3255 AC_DEFINE(_THREAD_SAFE)
3256 dnl -pthread links in -lc_r, so don't specify it explicitly.
3257 if test "$ac_cv_have_dash_pthread" = "yes"; then
3258 _PTHREAD_LDFLAGS="-pthread"
3260 _PTHREAD_LDFLAGS="-lc_r"
3264 *-*-openbsd*|*-*-bsdi*)
3265 AC_DEFINE(_REENTRANT)
3266 AC_DEFINE(_THREAD_SAFE)
3267 dnl -pthread links in -lc_r, so don't specify it explicitly.
3268 if test "$ac_cv_have_dash_pthread" = "yes"; then
3269 _PTHREAD_LDFLAGS="-pthread"
3273 *-*-linux*|*-*-kfreebsd*-gnu)
3274 AC_DEFINE(_REENTRANT)
3278 AC_DEFINE(_REENTRANT)
3282 AC_DEFINE(_REENTRANT)
3286 AC_DEFINE(_REENTRANT)
3290 AC_DEFINE(_REENTRANT)
3294 AC_DEFINE(_REENTRANT)
3295 if test ! "$GNU_CC"; then
3296 CFLAGS="$CFLAGS -mt"
3297 CXXFLAGS="$CXXFLAGS -mt"
3301 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3304 dnl ========================================================
3305 dnl See if mmap sees writes
3306 dnl For cross compiling, just define it as no, which is a safe default
3307 dnl ========================================================
3308 AC_MSG_CHECKING(whether mmap() sees write()s)
3314 #include <sys/mman.h>
3315 #include <sys/types.h>
3316 #include <sys/stat.h>
3319 char fname[] = "conftest.file";
3320 char zbuff[1024]; /* Fractional page is probably worst case */
3327 fd = open(fname, O_RDWR | O_CREAT, 0660);
3330 write(fd, zbuff, sizeof(zbuff));
3331 lseek(fd, 0, SEEK_SET);
3332 map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
3333 if(map==(char*)-1) return 2;
3334 for(i=0; fname[i]; i++) {
3335 int rc = write(fd, &fname[i], 1);
3336 if(map[i]!=fname[i]) return 4;
3343 AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
3345 AC_MSG_RESULT("$result")
3347 if test "$result" = "no"; then
3348 AC_DEFINE(MMAP_MISSES_WRITES)
3352 dnl Checks for library functions.
3353 dnl ========================================================
3354 AC_PROG_GCC_TRADITIONAL
3356 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 truncate64 statvfs64)
3357 AC_CHECK_FUNCS(flockfile getpagesize)
3358 AC_CHECK_FUNCS(localtime_r strtok_r)
3360 dnl check for wcrtomb/mbrtowc
3361 dnl =======================================================================
3362 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3365 AC_CACHE_CHECK(for wcrtomb,
3367 [AC_TRY_LINK([#include <wchar.h>],
3368 [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3369 ac_cv_have_wcrtomb="yes",
3370 ac_cv_have_wcrtomb="no")])
3371 if test "$ac_cv_have_wcrtomb" = "yes"; then
3372 AC_DEFINE(HAVE_WCRTOMB)
3374 AC_CACHE_CHECK(for mbrtowc,
3376 [AC_TRY_LINK([#include <wchar.h>],
3377 [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3378 ac_cv_have_mbrtowc="yes",
3379 ac_cv_have_mbrtowc="no")])
3380 if test "$ac_cv_have_mbrtowc" = "yes"; then
3381 AC_DEFINE(HAVE_MBRTOWC)
3388 ac_cv_func_res_ninit,
3391 #define _BSD_SOURCE 1
3395 [int foo = res_ninit(&_res);],
3396 [ac_cv_func_res_ninit=yes],
3397 [ac_cv_func_res_ninit=no])
3400 if test "$ac_cv_func_res_ninit" = "yes"; then
3401 AC_DEFINE(HAVE_RES_NINIT)
3402 dnl must add the link line we do something as foolish as this... dougt
3404 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3405 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3410 [for gnu_get_libc_version()],
3411 ac_cv_func_gnu_get_libc_version,
3413 #ifdef HAVE_GNU_LIBC_VERSION_H
3414 #include <gnu/libc-version.h>
3417 [const char *glibc_version = gnu_get_libc_version();],
3418 [ac_cv_func_gnu_get_libc_version=yes],
3419 [ac_cv_func_gnu_get_libc_version=no]
3423 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3424 AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3428 os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|beos*)
3432 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3433 AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3434 AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3436 LIBS="$LIBS $_ICONV_LIBS"
3445 iconv_t h = iconv_open("", "");
3446 iconv(h, NULL, NULL, NULL, NULL);
3449 [ac_cv_func_iconv=yes],
3450 [ac_cv_func_iconv=no]
3453 if test "$ac_cv_func_iconv" = "yes"; then
3454 AC_DEFINE(HAVE_ICONV)
3455 DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3456 LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3457 LIBICONV="$_ICONV_LIBS"
3459 [for iconv() with const input],
3460 ac_cv_func_const_iconv,
3466 const char *input = "testing";
3467 iconv_t h = iconv_open("", "");
3468 iconv(h, &input, NULL, NULL, NULL);
3471 [ac_cv_func_const_iconv=yes],
3472 [ac_cv_func_const_iconv=no]
3475 if test "$ac_cv_func_const_iconv" = "yes"; then
3476 AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3488 dnl **********************
3489 dnl *** va_copy checks ***
3490 dnl **********************
3491 dnl we currently check for all three va_copy possibilities, so we get
3492 dnl all results in config.log for bug reports.
3493 AC_MSG_CHECKING(for an implementation of va_copy())
3494 AC_CACHE_VAL(ac_cv_va_copy,[
3497 void f (int i, ...) {
3498 va_list args1, args2;
3499 va_start (args1, i);
3500 va_copy (args2, args1);
3501 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3503 va_end (args1); va_end (args2);
3505 int main() { f (0, 42); return 0; }],
3511 AC_MSG_RESULT($ac_cv_va_copy)
3512 AC_MSG_CHECKING(for an implementation of __va_copy())
3513 AC_CACHE_VAL(ac_cv___va_copy,[
3516 void f (int i, ...) {
3517 va_list args1, args2;
3518 va_start (args1, i);
3519 __va_copy (args2, args1);
3520 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3522 va_end (args1); va_end (args2);
3524 int main() { f (0, 42); return 0; }],
3525 ac_cv___va_copy=yes,
3530 AC_MSG_RESULT($ac_cv___va_copy)
3531 AC_MSG_CHECKING(whether va_lists can be copied by value)
3532 AC_CACHE_VAL(ac_cv_va_val_copy,[
3535 void f (int i, ...) {
3536 va_list args1, args2;
3537 va_start (args1, i);
3539 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3541 va_end (args1); va_end (args2);
3543 int main() { f (0, 42); return 0; }],
3544 ac_cv_va_val_copy=yes,
3545 ac_cv_va_val_copy=no,
3546 ac_cv_va_val_copy=yes
3549 if test "x$ac_cv_va_copy" = "xyes"; then
3550 AC_DEFINE(VA_COPY, va_copy)
3551 AC_DEFINE(HAVE_VA_COPY)
3552 elif test "x$ac_cv___va_copy" = "xyes"; then
3553 AC_DEFINE(VA_COPY, __va_copy)
3554 AC_DEFINE(HAVE_VA_COPY)
3557 if test "x$ac_cv_va_val_copy" = "xno"; then
3558 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3560 AC_MSG_RESULT($ac_cv_va_val_copy)
3562 dnl Check for dll-challenged libc's.
3563 dnl This check is apparently only needed for Linux.
3566 dnl ===================================================================
3569 rm -rf conftest* _conftest
3571 cat >> conftest.C <<\EOF
3576 void __dump_link_map(void) {
3577 struct link_map *map = _dl_loaded;
3578 while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
3581 dlopen("./conftest1.so",RTLD_LAZY);
3582 dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
3583 dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
3584 dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
3588 /* _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).*/
3589 int main() { printf("./conftest1.so\n"); }
3593 $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
3595 cat >> conftest1.C <<\EOF
3597 void foo(void) {printf("foo in dll called\n");}
3599 ${CXX-g++} -fPIC -c -g conftest1.C
3600 ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
3601 ${CXX-g++} -g conftest.C -o conftest -ldl
3602 cp -f conftest1.so conftest _conftest
3604 if test `./conftest | grep conftest1.so | wc -l` -gt 1
3607 echo "*** Your libc has a bug that can result in loading the same dynamic"
3608 echo "*** library multiple times. This bug is known to be fixed in glibc-2.0.7-32"
3609 echo "*** or later. However, if you choose not to upgrade, the only effect"
3610 echo "*** will be excessive memory usage at runtime."
3614 rm -rf conftest* _conftest
3615 dnl ===================================================================
3619 dnl ===================================================================
3620 dnl ========================================================
3621 dnl By default, turn rtti and exceptions off on g++/egcs
3622 dnl ========================================================
3623 if test "$GNU_CXX"; then
3625 AC_MSG_CHECKING(for C++ exceptions flag)
3627 dnl They changed -f[no-]handle-exceptions to -f[no-]exceptions in g++ 2.8
3628 AC_CACHE_VAL(ac_cv_cxx_exceptions_flags,
3629 [echo "int main() { return 0; }" | cat > conftest.C
3631 ${CXX-g++} ${CXXFLAGS} -c -fno-handle-exceptions conftest.C > conftest.out 2>&1
3633 if egrep "warning.*renamed" conftest.out >/dev/null; then
3634 ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-exceptions
3636 ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-handle-exceptions
3641 AC_MSG_RESULT($ac_cv_cxx_exceptions_flags)
3642 _MOZ_EXCEPTIONS_FLAGS_OFF=$ac_cv_cxx_exceptions_flags
3643 _MOZ_EXCEPTIONS_FLAGS_ON=`echo $ac_cv_cxx_exceptions_flags | sed 's|no-||'`
3646 dnl ========================================================
3647 dnl Put your C++ language/feature checks below
3648 dnl ========================================================
3652 if test "$GNU_CC"; then
3653 AC_CACHE_CHECK(for gcc 3.0 ABI,
3654 ac_cv_gcc_three_abi,
3657 #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
3663 ac_cv_gcc_three_abi="yes",
3664 ac_cv_gcc_three_abi="no")])
3665 if test "$ac_cv_gcc_three_abi" = "yes"; then
3666 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc3}"
3669 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc2}"
3672 AC_SUBST(HAVE_GCC3_ABI)
3675 AC_CACHE_CHECK(for C++ \"explicit\" keyword,
3677 [AC_TRY_COMPILE(class X {
3678 public: explicit X(int i) : i_(i) {}
3682 ac_cv_cpp_explicit=yes,
3683 ac_cv_cpp_explicit=no)])
3684 if test "$ac_cv_cpp_explicit" = yes ; then
3685 AC_DEFINE(HAVE_CPP_EXPLICIT)
3688 AC_CACHE_CHECK(for C++ \"typename\" keyword,
3690 [AC_TRY_COMPILE(class param {
3692 typedef unsigned long num_type;
3695 template <class T> class tplt {
3697 typedef typename T::num_type t_num_type;
3698 t_num_type foo(typename T::num_type num) {
3704 ac_cv_cpp_typename=yes,
3705 ac_cv_cpp_typename=no)])
3706 if test "$ac_cv_cpp_typename" = yes ; then
3707 AC_DEFINE(HAVE_CPP_TYPENAME)
3710 dnl Check for support of modern template specialization syntax
3711 dnl Test code and requirement from scc@netscape.com.
3712 dnl Autoconf cut-and-paste job by waterson@netscape.com
3713 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
3714 ac_cv_cpp_modern_specialize_template_syntax,
3715 [AC_TRY_COMPILE(template <class T> struct X { int a; };
3717 template <> struct X<Y> { double a; };,
3720 ac_cv_cpp_modern_specialize_template_syntax=yes,
3721 ac_cv_cpp_modern_specialize_template_syntax=no)])
3722 if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
3723 AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
3727 dnl Some compilers support only full specialization, and some don't.
3728 AC_CACHE_CHECK(whether partial template specialization works,
3729 ac_cv_cpp_partial_specialization,
3730 [AC_TRY_COMPILE(template <class T> class Foo {};
3731 template <class T> class Foo<T*> {};,
3733 ac_cv_cpp_partial_specialization=yes,
3734 ac_cv_cpp_partial_specialization=no)])
3735 if test "$ac_cv_cpp_partial_specialization" = yes ; then
3736 AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
3739 dnl Some compilers have limited support for operators with templates;
3740 dnl specifically, it is necessary to define derived operators when a base
3741 dnl class's operator declaration should suffice.
3742 AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
3743 ac_cv_need_derived_template_operators,
3744 [AC_TRY_COMPILE([template <class T> class Base { };
3746 Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
3747 template <class T> class Derived : public Base<T> { };],
3748 [Derived<char> a, b;
3749 Base<char> c = a + b;
3751 ac_cv_need_derived_template_operators=no,
3752 ac_cv_need_derived_template_operators=yes)])
3753 if test "$ac_cv_need_derived_template_operators" = yes ; then
3754 AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
3758 dnl Some compilers have trouble detecting that a template class
3759 dnl that derives from another template is actually an instance
3760 dnl of the base class. This test checks for that.
3761 AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
3762 ac_cv_need_cpp_template_cast_to_base,
3763 [AC_TRY_COMPILE([template <class T> class Base { };
3764 template <class T> class Derived : public Base<T> { };
3765 template <class T> int foo(const Base<T>&) { return 0; }],
3766 [Derived<char> bar; return foo(bar);],
3767 ac_cv_need_cpp_template_cast_to_base=no,
3768 ac_cv_need_cpp_template_cast_to_base=yes)])
3769 if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
3770 AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
3773 dnl Some compilers have trouble resolving the ambiguity between two
3774 dnl functions whose arguments differ only by cv-qualifications.
3775 AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
3776 ac_cv_can_resolve_const_ambiguity,
3778 template <class T> class ptrClass {
3782 template <class T> T* a(ptrClass<T> *arg) {
3787 const T* a(const ptrClass<T> *arg) {
3793 ac_cv_can_resolve_const_ambiguity=yes,
3794 ac_cv_can_resolve_const_ambiguity=no)])
3795 if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
3796 AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
3800 dnl We don't do exceptions on unix. The only reason this used to be here
3801 dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses
3802 dnl exceptions. But, we turn exceptions off by default and this test breaks.
3803 dnl So im commenting this out until someone writes some artificial
3804 dnl intelligence to detect not only if the compiler has exceptions, but if
3805 dnl they are enabled as well.
3807 dnl AC_CACHE_CHECK(for C++ \"exceptions\",
3808 dnl ac_cv_cpp_exceptions,
3809 dnl [AC_TRY_COMPILE(class X { public: X() {} };
3810 dnl static void F() { throw X(); },
3811 dnl try { F(); } catch(X & e) { },
3812 dnl ac_cv_cpp_exceptions=yes,
3813 dnl ac_cv_cpp_exceptions=no)])
3814 dnl if test $ac_cv_cpp_exceptions = yes ; then
3815 dnl AC_DEFINE(HAVE_CPP_EXCEPTIONS)
3818 dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
3819 dnl supports it well enough to allow us to use it to change access, but not
3820 dnl to resolve ambiguity. The next two tests determine how well the |using|
3821 dnl keyword is supported.
3823 dnl Check to see if we can change access with |using|. Test both a
3824 dnl legal and an illegal example.
3825 AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
3826 ac_cv_cpp_access_changing_using2,
3828 class A { protected: int foo() { return 0; } };
3829 class B : public A { public: using A::foo; };,
3830 B b; return b.foo();,
3832 class A { public: int foo() { return 1; } };
3833 class B : public A { private: using A::foo; };,
3834 B b; return b.foo();,
3835 ac_cv_cpp_access_changing_using2=no,
3836 ac_cv_cpp_access_changing_using2=yes)],
3837 ac_cv_cpp_access_changing_using2=no)])
3838 if test "$ac_cv_cpp_access_changing_using2" = yes ; then
3839 AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
3842 dnl Check to see if we can resolve ambiguity with |using|.
3843 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3844 ac_cv_cpp_ambiguity_resolving_using,
3845 [AC_TRY_COMPILE(class X {
3846 public: int go(const X&) {return 3;}
3847 int jo(const X&) {return 3;}
3849 class Y : public X {
3850 public: int go(int) {return 2;}
3851 int jo(int) {return 2;}
3853 private: using X::go;
3856 ac_cv_cpp_ambiguity_resolving_using=yes,
3857 ac_cv_cpp_ambiguity_resolving_using=no)])
3858 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3859 AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3862 dnl Check to see if the |std| namespace is supported. If so, we'll want
3863 dnl to qualify any standard library calls with "std::" to ensure that
3864 dnl those functions can be resolved.
3865 AC_CACHE_CHECK(for \"std::\" namespace,
3866 ac_cv_cpp_namespace_std,
3867 [AC_TRY_COMPILE([#include <algorithm>],
3868 [return std::min(0, 1);],
3869 ac_cv_cpp_namespace_std=yes,
3870 ac_cv_cpp_namespace_std=no)])
3871 if test "$ac_cv_cpp_namespace_std" = yes ; then
3872 AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
3875 dnl Older compilers are overly ambitious with respect to using the standard
3876 dnl template library's |operator!=()| when |operator==()| is defined. In
3877 dnl which case, defining |operator!=()| in addition to |operator==()| causes
3878 dnl ambiguity at compile-time. This test checks for that case.
3879 AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
3880 ac_cv_cpp_unambiguous_std_notequal,
3881 [AC_TRY_COMPILE([#include <algorithm>
3883 int operator==(const T1&, const T1&) { return 0; }
3884 int operator!=(const T1&, const T1&) { return 0; }],
3885 [T1 a,b; return a != b;],
3886 ac_cv_cpp_unambiguous_std_notequal=unambiguous,
3887 ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
3888 if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
3889 AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
3893 AC_CACHE_CHECK(for C++ reinterpret_cast,
3894 ac_cv_cpp_reinterpret_cast,
3895 [AC_TRY_COMPILE(struct X { int i; };
3896 struct Y { int i; };,
3897 X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
3898 ac_cv_cpp_reinterpret_cast=yes,
3899 ac_cv_cpp_reinterpret_cast=no)])
3900 if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
3901 AC_DEFINE(HAVE_CPP_NEW_CASTS)
3904 dnl See if a dynamic_cast to void* gives the most derived object.
3905 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
3906 ac_cv_cpp_dynamic_cast_void_ptr,
3907 [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
3908 class Y { int j; public: virtual ~Y() { } };
3909 class Z : public X, public Y { int k; };
3915 return !((((void*)&mdo != (void*)subx) &&
3916 ((void*)&mdo == dynamic_cast<void*>(subx))) ||
3917 (((void*)&mdo != (void*)suby) &&
3918 ((void*)&mdo == dynamic_cast<void*>(suby))));
3920 ac_cv_cpp_dynamic_cast_void_ptr=yes,
3921 ac_cv_cpp_dynamic_cast_void_ptr=no,
3922 ac_cv_cpp_dynamic_cast_void_ptr=no)])
3923 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
3924 AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
3928 dnl note that this one is reversed - if the test fails, then
3929 dnl we require implementations of unused virtual methods. Which
3930 dnl really blows because it means we'll have useless vtable
3932 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
3933 ac_cv_cpp_unused_required,
3934 [AC_TRY_LINK(class X {private: virtual void never_called();};,
3936 ac_cv_cpp_unused_required=no,
3937 ac_cv_cpp_unused_required=yes)])
3938 if test "$ac_cv_cpp_unused_required" = yes ; then
3939 AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
3943 dnl Some compilers have trouble comparing a constant reference to a templatized
3944 dnl class to zero, and require an explicit operator==() to be defined that takes
3945 dnl an int. This test separates the strong from the weak.
3947 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
3948 ac_cv_trouble_comparing_to_zero,
3949 [AC_TRY_COMPILE([#include <algorithm>
3950 template <class T> class Foo {};
3952 template <class T> int operator==(const T2*, const T&) { return 0; }
3953 template <class T> int operator!=(const T2*, const T&) { return 0; }],
3954 [Foo<int> f; return (0 != f);],
3955 ac_cv_trouble_comparing_to_zero=no,
3956 ac_cv_trouble_comparing_to_zero=yes)])
3957 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
3958 AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
3963 dnl End of C++ language/feature checks
3966 dnl ========================================================
3967 dnl = Internationalization checks
3968 dnl ========================================================
3970 dnl Internationalization and Locale support is different
3971 dnl on various UNIX platforms. Checks for specific i18n
3972 dnl features go here.
3974 dnl check for LC_MESSAGES
3975 AC_CACHE_CHECK(for LC_MESSAGES,
3976 ac_cv_i18n_lc_messages,
3977 [AC_TRY_COMPILE([#include <locale.h>],
3978 [int category = LC_MESSAGES;],
3979 ac_cv_i18n_lc_messages=yes,
3980 ac_cv_i18n_lc_messages=no)])
3981 if test "$ac_cv_i18n_lc_messages" = yes; then
3982 AC_DEFINE(HAVE_I18N_LC_MESSAGES)
3985 fi # SKIP_COMPILER_CHECKS
3988 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
3989 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
3992 dnl Mozilla specific options
3993 dnl ========================================================
3994 dnl The macros used for command line options
3995 dnl are defined in build/autoconf/altoptions.m4.
3998 dnl ========================================================
4000 dnl = Check for external package dependencies
4002 dnl ========================================================
4003 MOZ_ARG_HEADER(External Packages)
4007 MOZ_ARG_WITH_STRING(libxul-sdk,
4008 [ --with-libxul-sdk=PFX Use the libXUL SDK at <PFX>],
4009 LIBXUL_SDK_DIR=$withval)
4011 if test "$LIBXUL_SDK_DIR" = "yes"; then
4012 AC_MSG_ERROR([--with-libxul-sdk must specify a path])
4013 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
4014 LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
4016 if test ! -f "$LIBXUL_SDK/sdk/include/xpcom-config.h"; then
4017 AC_MSG_ERROR([$LIBXUL_SDK/sdk/include/xpcom-config.h doesn't exist])
4022 AC_SUBST(LIBXUL_SDK)
4024 if test -n "$LIBXUL_SDK"; then
4025 LIBXUL_DIST="$LIBXUL_SDK"
4027 LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
4029 AC_SUBST(LIBXUL_DIST)
4031 dnl ========================================================
4032 dnl = If NSPR was not detected in the system,
4033 dnl = use the one in the source tree (mozilla/nsprpub)
4034 dnl ========================================================
4035 MOZ_ARG_WITH_BOOL(system-nspr,
4036 [ --with-system-nspr Use system installed NSPR],
4037 _USE_SYSTEM_NSPR=1 )
4039 if test -n "$_USE_SYSTEM_NSPR"; then
4040 AM_PATH_NSPR(4.7.0, [MOZ_NATIVE_NSPR=1], [MOZ_NATIVE_NSPR=])
4043 if test -n "$MOZ_NATIVE_NSPR"; then
4044 _SAVE_CFLAGS=$CFLAGS
4045 CFLAGS="$CFLAGS $NSPR_CFLAGS"
4046 AC_TRY_COMPILE([#include "prlog.h"],
4047 [#ifndef PR_STATIC_ASSERT
4048 #error PR_STATIC_ASSERT not defined
4050 [MOZ_NATIVE_NSPR=1],
4051 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT]))
4052 CFLAGS=$_SAVE_CFLAGS
4054 NSPR_CFLAGS='`$(DEPTH)/nsprpub/config/nspr-config --prefix='${LIBXUL_DIST}' --includedir='${LIBXUL_DIST}'/include/nspr --cflags`'
4055 if test "$OS_ARCH" = "WINCE"; then
4056 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4057 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4058 elif test "$OS_ARCH" = "WINNT"; then
4059 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4060 if test -n "$GNU_CC"; then
4061 NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
4063 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4066 NSPR_LIBS='`$(DEPTH)/nsprpub/config/nspr-config --prefix='${LIBXUL_DIST}' --libdir='${LIBXUL_DIST}'/lib --libs`'
4070 dnl ========================================================
4071 dnl = If NSS was not detected in the system,
4072 dnl = use the one in the source tree (mozilla/security/nss)
4073 dnl ========================================================
4075 MOZ_ARG_WITH_BOOL(system-nss,
4076 [ --with-system-nss Use system installed NSS],
4079 if test -n "$_USE_SYSTEM_NSS"; then
4080 AM_PATH_NSS(3.12.0, [MOZ_NATIVE_NSS=1], [MOZ_NATIVE_NSS=])
4083 if test -n "$MOZ_NATIVE_NSS"; then
4084 NSS_LIBS="$NSS_LIBS -lcrmf"
4086 NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4088 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4089 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4090 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4091 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4092 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX) \
4093 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)softokn$NSS_VERSION\$(DLL_SUFFIX)"
4095 if test -z "$GNU_CC" && test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "WINCE" -o "$OS_ARCH" = "OS2"; then
4097 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4098 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4099 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4100 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4101 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4102 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)softokn$NSS_VERSION.\$(IMPORT_LIB_SUFFIX)"
4104 NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION -lsoftokn$NSS_VERSION"
4108 if test -z "$SKIP_LIBRARY_CHECKS"; then
4109 dnl system JPEG support
4110 dnl ========================================================
4111 MOZ_ARG_WITH_STRING(system-jpeg,
4112 [ --with-system-jpeg[=PFX]
4113 Use system libjpeg [installed at prefix PFX]],
4116 _SAVE_CFLAGS=$CFLAGS
4117 _SAVE_LDFLAGS=$LDFLAGS
4119 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4120 CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4121 LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4123 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4126 AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS)
4129 if test "$SYSTEM_JPEG" = 1; then
4130 LIBS="$JPEG_LIBS $LIBS"
4131 AC_TRY_COMPILE([ #include <stdio.h>
4132 #include <sys/types.h>
4133 #include <jpeglib.h> ],
4134 [ #if JPEG_LIB_VERSION < $MOZJPEG
4135 #error "Insufficient JPEG library version ($MOZJPEG required)."
4138 [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=])
4140 CFLAGS=$_SAVE_CFLAGS
4141 LDFLAGS=$_SAVE_LDFLAGS
4144 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$SYSTEM_JPEG" = 1; then
4145 JPEG_CFLAGS="-I${JPEG_DIR}/include"
4146 JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
4149 dnl system ZLIB support
4150 dnl ========================================================
4151 MOZ_ARG_WITH_STRING(system-zlib,
4152 [ --with-system-zlib[=PFX]
4153 Use system libz [installed at prefix PFX]],
4156 _SAVE_CFLAGS=$CFLAGS
4157 _SAVE_LDFLAGS=$LDFLAGS
4159 if test -n "${ZLIB_DIR}" -a "${ZLIB_DIR}" != "yes"; then
4160 CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
4161 LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
4163 if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
4166 AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"],
4167 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
4169 if test "$SYSTEM_ZLIB" = 1; then
4170 LIBS="$ZLIB_LIBS $LIBS"
4171 AC_TRY_COMPILE([ #include <stdio.h>
4173 #include <zlib.h> ],
4174 [ #if ZLIB_VERNUM < $MOZZLIB
4175 #error "Insufficient zlib version ($MOZZLIB required)."
4178 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=])
4180 CFLAGS=$_SAVE_CFLAGS
4181 LDFLAGS=$_SAVE_LDFLAGS
4184 if test "${ZLIB_DIR}" -a -d "${ZLIB_DIR}" -a "$SYSTEM_ZLIB" = 1; then
4185 ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
4186 ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
4189 dnl system BZIP2 Support
4190 dnl ========================================================
4191 MOZ_ARG_WITH_STRING(system-bz2,
4192 [ --with-system-bz2[=PFX]
4193 Use system libbz2 [installed at prefix PFX]],
4196 _SAVE_CFLAGS=$CFLAGS
4197 _SAVE_LDFLAGS=$LDFLAGS
4199 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4200 CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4201 LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4203 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4206 AC_CHECK_LIB(bz2, BZ2_bzread, [SYSTEM_BZ2=1 BZ2_LIBS="-lbz2"],
4207 [SYSTEM_BZ2= BZ2_CFLAGS= BZ2_LIBS=], $BZ2_LIBS)
4209 CFLAGS=$_SAVE_CFLAGS
4210 LDFLAGS=$_SAVE_LDFLAGS
4213 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$SYSTEM_BZ2" = 1; then
4214 BZ2_CFLAGS="-I${BZ2_DIR}/include"
4215 BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
4218 dnl system PNG Support
4219 dnl ========================================================
4220 MOZ_ARG_WITH_STRING(system-png,
4221 [ --with-system-png[=PFX]
4222 Use system libpng [installed at prefix PFX]],
4225 _SAVE_CFLAGS=$CFLAGS
4226 _SAVE_LDFLAGS=$LDFLAGS
4228 CFLAGS="$ZLIB_CFLAGS $CFLAGS"
4229 LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
4230 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4231 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4232 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4234 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4237 _SAVE_PNG_LIBS=$PNG_LIBS
4238 AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"],
4239 AC_MSG_ERROR([--with-system-png requested but no working libpng found]),
4241 AC_CHECK_LIB(png, png_get_acTL, ,
4242 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]),
4245 if test "$SYSTEM_PNG" = 1; then
4246 LIBS="$PNG_LIBS $LIBS"
4247 AC_TRY_COMPILE([ #include <stdio.h>
4248 #include <sys/types.h>
4250 [ #if PNG_LIBPNG_VER < $MOZPNG
4251 #error "Insufficient libpng version ($MOZPNG required)."
4253 #ifndef PNG_UINT_31_MAX
4254 #error "Insufficient libpng version."
4257 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4259 CFLAGS=$_SAVE_CFLAGS
4260 LDFLAGS=$_SAVE_LDFLAGS
4263 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
4264 PNG_CFLAGS="-I${PNG_DIR}/include"
4265 PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
4268 fi # SKIP_LIBRARY_CHECKS
4270 dnl system HunSpell Support
4271 dnl ========================================================
4272 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4273 [ --enable-system-hunspell Use system hunspell (located with pkgconfig)],
4276 if test -n "$SYSTEM_HUNSPELL"; then
4277 PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4280 AC_SUBST(SYSTEM_HUNSPELL)
4282 dnl ========================================================
4283 dnl Java SDK support
4284 dnl ========================================================
4286 MOZ_ARG_WITH_STRING(java-include-path,
4287 [ --with-java-include-path=dir Location of Java SDK headers],
4288 JAVA_INCLUDE_PATH=$withval)
4291 MOZ_ARG_WITH_STRING(java-bin-path,
4292 [ --with-java-bin-path=dir Location of Java binaries (java, javac, jar)],
4293 JAVA_BIN_PATH=$withval)
4295 dnl ========================================================
4296 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4297 dnl their usage and use them in spidermonkey.
4298 dnl ========================================================
4299 MOZ_ARG_WITH_BOOL(arm-kuser,
4300 [ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4303 if test -n "$USE_ARM_KUSER"; then
4304 AC_DEFINE(USE_ARM_KUSER)
4307 dnl ========================================================
4311 dnl ========================================================
4313 MOZ_ARG_HEADER(Application)
4317 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4318 MOZ_BRANDING_DIRECTORY=
4319 MOZ_DBGRINFO_MODULES=
4322 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg bmp xbm icon"
4323 MOZ_IMG_ENCODERS_DEFAULT="png jpeg"
4332 MOZ_AUTH_EXTENSION=1
4333 MOZ_NO_ACTIVEX_SUPPORT=1
4334 MOZ_NO_INSPECTOR_APIS=
4335 MOZ_NO_XPCOM_OBSOLETE=
4344 MOZ_PLAINTEXT_EDITOR_ONLY=
4346 MOZ_PREF_EXTENSIONS=1
4347 MOZ_PROFILELOCKING=1
4349 MOZ_PYTHON_EXTENSIONS="xpcom dom"
4351 MOZ_PYTHON_DEBUG_SUFFIX=
4352 MOZ_PYTHON_DLL_SUFFIX=
4353 MOZ_PYTHON_INCLUDES=
4357 MOZ_PYTHON_VER_DOTTED=
4363 MOZ_STATIC_MAIL_BUILD=
4368 MOZ_UNIVERSALCHARDET=1
4370 MOZ_USE_NATIVE_UCONV=
4372 MOZ_XPFE_COMPONENTS=1
4374 MOZ_XSLT_STANDALONE=
4382 NECKO_PROTOCOLS_DEFAULT="about data file ftp gopher http res viewsource"
4383 NECKO_SMALL_BUFFERS=
4384 XPC_IDISPATCH_SUPPORT=
4387 case "$target_os" in
4396 case "$target_os" in
4397 msvc*|mks*|cygwin*|mingw*)
4398 if test -z "$GNU_CC"; then
4399 XPC_IDISPATCH_SUPPORT=1
4400 MOZ_NO_ACTIVEX_SUPPORT=
4401 MOZ_ACTIVEX_SCRIPTING_SUPPORT=1
4406 MOZ_ARG_ENABLE_STRING(application,
4407 [ --enable-application=APP
4411 content/xslt (Standalone Transformiix XSLT)
4412 netwerk (Standalone Necko)
4413 tools/update-packaging (AUS-related packaging tools)
4414 standalone (use this for standalone
4415 xpcom/xpconnect or to manually drive a build)],
4416 [ MOZ_BUILD_APP=$enableval ] )
4418 MOZ_EMBEDDING_PROFILE=default
4419 MOZ_ARG_WITH_STRING(embedding-profile,
4420 [ --with-embedding-profile=default|basic|minimal
4421 see http://wiki.mozilla.org/Gecko:Small_Device_Support],
4422 [ MOZ_EMBEDDING_PROFILE=$withval ])
4424 case "$MOZ_EMBEDDING_PROFILE" in
4426 MOZ_EMBEDDING_LEVEL_DEFAULT=1
4427 MOZ_EMBEDDING_LEVEL_BASIC=1
4428 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4429 AC_DEFINE(MOZ_EMBEDDING_LEVEL_DEFAULT)
4430 AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4431 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4435 MOZ_EMBEDDING_LEVEL_DEFAULT=
4436 MOZ_EMBEDDING_LEVEL_BASIC=1
4437 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4438 AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4439 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4441 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4443 MOZ_ENABLE_POSTSCRIPT=
4444 MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4445 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4446 MOZ_IMG_ENCODERS_DEFAULT=
4452 MOZ_NO_ACTIVEX_SUPPORT=1
4453 MOZ_NO_INSPECTOR_APIS=1
4454 MOZ_NO_XPCOM_OBSOLETE=1
4457 MOZ_PLAINTEXT_EDITOR_ONLY=1
4459 MOZ_PREF_EXTENSIONS=
4463 MOZ_UNIVERSALCHARDET=
4465 MOZ_USE_NATIVE_UCONV=
4467 MOZ_XPFE_COMPONENTS=
4472 NECKO_PROTOCOLS_DEFAULT="about data http file res"
4473 NECKO_SMALL_BUFFERS=1
4474 NS_DISABLE_LOGGING=1
4479 MOZ_EMBEDDING_LEVEL_DEFAULT=
4480 MOZ_EMBEDDING_LEVEL_BASIC=
4481 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4482 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4484 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4486 MOZ_ENABLE_POSTSCRIPT=
4487 MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4488 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4489 MOZ_IMG_ENCODERS_DEFAULT=
4495 MOZ_NO_ACTIVEX_SUPPORT=1
4496 MOZ_NO_INSPECTOR_APIS=1
4497 MOZ_NO_XPCOM_OBSOLETE=1
4500 MOZ_PLAINTEXT_EDITOR_ONLY=1
4502 MOZ_PREF_EXTENSIONS=
4508 MOZ_UNIVERSALCHARDET=
4510 MOZ_USE_NATIVE_UCONV=1
4512 MOZ_XPFE_COMPONENTS=
4519 NECKO_PROTOCOLS_DEFAULT="about data http file res"
4520 NECKO_SMALL_BUFFERS=1
4521 NS_DISABLE_LOGGING=1
4526 AC_MSG_ERROR([Unrecognized value: --with-embedding-profile=$MOZ_EMBEDDING_PROFILE])
4530 AC_SUBST(MOZ_EMBEDDING_LEVEL_DEFAULT)
4531 AC_SUBST(MOZ_EMBEDDING_LEVEL_BASIC)
4532 AC_SUBST(MOZ_EMBEDDING_LEVEL_MINIMAL)
4534 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
4535 [ --with-xulrunner-stub-name=appname Create the xulrunner stub with the given name],
4536 XULRUNNER_STUB_NAME=$withval)
4538 if test -z "$XULRUNNER_STUB_NAME"; then
4539 case "$target_os" in
4541 XULRUNNER_STUB_NAME=xulrunner
4544 XULRUNNER_STUB_NAME=xulrunner-stub
4547 AC_SUBST(XULRUNNER_STUB_NAME)
4549 if test -z "$MOZ_BUILD_APP"; then
4550 AC_MSG_ERROR([--enable-application=APP was not specified and is required.])
4552 # We have a valid application only if it has a build.mk file in its top
4554 if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
4555 AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4559 # Allow the application to influence configure with a confvars.sh script.
4561 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4562 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4563 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4564 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4569 # Now is a good time to test for logic errors, define mismatches, etc.
4570 case "$MOZ_BUILD_APP" in
4572 if test "$LIBXUL_SDK"; then
4573 AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4577 # Fix this case for folks who forget. Warn them.
4578 if test -n "$LIBXUL_SDK" -a -z "$MOZ_XUL_APP"; then
4579 AC_MSG_WARN([Setting MOZ_XUL_APP since LIBXUL_SDK was set. Add to confvars.sh!])
4585 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4586 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4588 case "$MOZ_BUILD_APP" in
4590 AC_DEFINE(MOZ_PHOENIX)
4594 AC_DEFINE(MOZ_XULRUNNER)
4602 MOZ_APP_NAME=mozilla
4603 MOZ_APP_DISPLAYNAME=Mozilla
4604 MOZ_APP_VERSION=$MOZILLA_VERSION
4609 if test -z "$MOZ_XUL_APP"; then
4610 AC_MSG_ERROR([builds with unsetting MOZ_XUL_APP in confvars.sh are not supported.])
4613 AC_SUBST(MOZ_BUILD_APP)
4614 AC_SUBST(MOZ_XUL_APP)
4615 AC_SUBST(MOZ_PHOENIX)
4616 AC_SUBST(MOZ_XULRUNNER)
4618 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4620 if test "$MOZ_XUL_APP"; then
4621 AC_DEFINE(MOZ_XUL_APP)
4624 dnl ========================================================
4626 dnl = Toolkit Options
4628 dnl ========================================================
4629 MOZ_ARG_HEADER(Toolkit Options)
4631 dnl ========================================================
4632 dnl = Select the default toolkit
4633 dnl ========================================================
4634 MOZ_ARG_ENABLE_STRING(default-toolkit,
4635 [ --enable-default-toolkit=TK
4636 Select default toolkit
4637 Platform specific defaults:
4639 Mac OS X - cairo-cocoa
4640 Neutrino/QNX - photon
4642 Win32 - cairo-windows
4644 Gtk2 with DirectFB - cairo-gtk2-dfb
4647 [ _DEFAULT_TOOLKIT=$enableval ],
4648 [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4650 if test "$_DEFAULT_TOOLKIT" = "photon" \
4651 -o "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4652 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4653 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-dfb" \
4654 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
4655 -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
4656 -o "$_DEFAULT_TOOLKIT" = "cairo-beos" \
4657 -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
4658 -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa"
4660 dnl nglayout only supports building with one toolkit,
4661 dnl so ignore everything after the first comma (",").
4662 MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4664 AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
4667 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_TOOLKIT,"$MOZ_WIDGET_TOOLKIT")
4669 dnl ========================================================
4670 dnl = Enable the toolkit as needed =
4671 dnl ========================================================
4673 case "$MOZ_WIDGET_TOOLKIT" in
4676 AC_DEFINE(MOZ_WIDGET_PHOTON)
4680 MOZ_WIDGET_TOOLKIT=windows
4681 MOZ_GFX_TOOLKIT=cairo
4684 cairo-gtk2|cairo-gtk2-x11)
4685 MOZ_WIDGET_TOOLKIT=gtk2
4686 MOZ_GFX_TOOLKIT=cairo
4688 MOZ_ENABLE_XREMOTE=1
4693 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4694 TK_LIBS='$(MOZ_GTK2_LIBS)'
4695 AC_DEFINE(MOZ_WIDGET_GTK2)
4699 MOZ_WIDGET_TOOLKIT=gtk2
4700 MOZ_GFX_TOOLKIT=cairo
4706 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4707 TK_LIBS='$(MOZ_GTK2_LIBS)'
4708 AC_DEFINE(MOZ_WIDGET_GTK2)
4709 if test "$no_x" != "yes"; then
4710 AC_MSG_WARN([Disabling X when DirectFB is specified.])
4716 MOZ_WIDGET_TOOLKIT=qt
4717 MOZ_GFX_TOOLKIT=cairo
4719 MOZ_ENABLE_XREMOTE=1
4726 TK_CFLAGS='$(MOZ_QT_CFLAGS)'
4727 TK_LIBS='$(MOZ_QT_LIBS)'
4728 AC_DEFINE(MOZ_WIDGET_QT)
4732 MOZ_WIDGET_TOOLKIT=beos
4733 MOZ_GFX_TOOLKIT=cairo
4734 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4735 TK_LIBS='$(MOZ_CAIRO_LIBS)'
4739 MOZ_WIDGET_TOOLKIT=os2
4740 MOZ_GFX_TOOLKIT=cairo
4741 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4742 TK_LIBS='$(MOZ_CAIRO_LIBS)'
4746 MOZ_WIDGET_TOOLKIT=cocoa
4747 AC_DEFINE(MOZ_WIDGET_COCOA)
4749 MOZ_GFX_TOOLKIT=cairo
4750 MOZ_USER_DIR="Mozilla"
4751 AC_DEFINE(XP_MACOSX)
4752 AC_DEFINE(TARGET_CARBON)
4753 AC_DEFINE(TARGET_API_MAC_CARBON)
4754 TK_LIBS='-framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook'
4755 TK_CFLAGS="-I${MACOS_SDK_DIR}/Developer/Headers/FlatCarbon"
4756 CFLAGS="$CFLAGS $TK_CFLAGS"
4757 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4761 if test "$MOZ_ENABLE_XREMOTE"; then
4762 AC_DEFINE(MOZ_ENABLE_XREMOTE)
4765 if test "$COMPILE_ENVIRONMENT"; then
4766 if test "$MOZ_ENABLE_GTK2"; then
4767 if test "$MOZ_X11"; then
4768 GDK_PACKAGES=gdk-x11-2.0
4769 elif test "$MOZ_DFB"; then
4770 PKG_CHECK_MODULES(MOZ_DFB, directfb >= 1.1.0)
4771 GDK_PACKAGES=directfb
4774 PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4777 fi # COMPILE_ENVIRONMENT
4779 AC_SUBST(MOZ_DEFAULT_TOOLKIT)
4781 dnl ========================================================
4782 dnl = startup-notification support module
4783 dnl ========================================================
4785 if test "$MOZ_ENABLE_GTK2"
4787 MOZ_ENABLE_STARTUP_NOTIFICATION=
4789 MOZ_ARG_ENABLE_BOOL(startup-notification,
4790 [ --enable-startup-notification Enable startup-notification support (default: disabled) ],
4791 MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4792 MOZ_ENABLE_STARTUP_NOTIFICATION=)
4793 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4795 PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4796 libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4797 [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4798 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4800 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4802 MOZ_ENABLE_STARTUP_NOTIFICATION=
4806 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4807 AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4810 TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4812 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4813 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4814 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4816 dnl ========================================================
4818 dnl ========================================================
4819 if test "$MOZ_ENABLE_QT"
4821 PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtUiTools QtCore)
4822 AC_SUBST(MOZ_QT_CFLAGS)
4823 AC_SUBST(MOZ_QT_LIBS)
4825 MOZ_ARG_WITH_STRING(qtdir,
4826 [ --with-qtdir=\$dir Specify Qt directory ],
4829 if test -z "$QTDIR"; then
4832 QTINCDIR="/include/qt"
4833 if test ! -d "$QTDIR$QTINCDIR"; then
4834 QTINCDIR="/include/X11/qt"
4836 if test ! -d "$QTDIR$QTINCDIR"; then
4840 if test -x "$QTDIR/bin/moc-qt4"; then
4841 HOST_MOC="$QTDIR/bin/moc-qt4"
4843 if test -x "$QTDIR/bin/moc"; then
4844 HOST_MOC="$QTDIR/bin/moc"
4846 AC_CHECK_PROGS(HOST_MOC, moc, "")
4849 if test -z "$HOST_MOC"; then
4850 AC_MSG_ERROR([no acceptable moc preprocessor found])
4855 AC_SUBST(GTK_CONFIG)
4859 AC_SUBST(MOZ_ENABLE_GTK2)
4860 AC_SUBST(MOZ_ENABLE_PHOTON)
4861 AC_SUBST(MOZ_ENABLE_COCOA)
4862 AC_SUBST(MOZ_ENABLE_QT)
4863 AC_SUBST(MOZ_ENABLE_XREMOTE)
4864 AC_SUBST(MOZ_GTK2_CFLAGS)
4865 AC_SUBST(MOZ_GTK2_LIBS)
4866 AC_SUBST(MOZ_QT_CFLAGS)
4867 AC_SUBST(MOZ_QT_LIBS)
4874 dnl ========================================================
4876 dnl = Components & Features
4878 dnl ========================================================
4879 MOZ_ARG_HEADER(Components and Features)
4881 dnl ========================================================
4883 dnl ========================================================
4884 MOZ_ARG_ENABLE_STRING(ui-locale,
4885 [ --enable-ui-locale=ab-CD
4886 Select the user interface locale (default: en-US)],
4887 MOZ_UI_LOCALE=$enableval )
4888 AC_SUBST(MOZ_UI_LOCALE)
4890 dnl ========================================================
4891 dnl = Trademarked Branding
4892 dnl ========================================================
4893 MOZ_ARG_ENABLE_BOOL(official-branding,
4894 [ --enable-official-branding Enable Official mozilla.org Branding
4895 Do not distribute builds with
4896 --enable-official-branding unless you have
4897 permission to use trademarks per
4898 http://www.mozilla.org/foundation/trademarks/ .],
4899 [case "$MOZ_BUILD_APP" in
4901 MOZ_BRANDING_DIRECTORY=other-licenses/branding/firefox
4902 MOZ_APP_DISPLAYNAME=Firefox
4906 AC_MSG_ERROR([Official branding is only available for Firefox.])
4910 MOZ_ARG_WITH_STRING(branding,
4911 [ --with-branding=dir Use branding from the specified directory.],
4912 MOZ_BRANDING_DIRECTORY=$withval)
4914 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4915 if test -z "$REAL_BRANDING_DIRECTORY"; then
4916 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
4919 if test -f "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"; then
4920 . "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"
4923 AC_SUBST(MOZ_BRANDING_DIRECTORY)
4925 dnl ========================================================
4926 dnl = Distribution ID
4927 dnl ========================================================
4928 MOZ_ARG_WITH_STRING(distribution-id,
4929 [ --with-distribution-id=ID Set distribution-specific id (default=org.mozilla)],
4930 [ val=`echo $withval`
4931 MOZ_DISTRIBUTION_ID="$val"])
4933 if test -z "$MOZ_DISTRIBUTION_ID"; then
4934 MOZ_DISTRIBUTION_ID="org.mozilla"
4937 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
4938 AC_SUBST(MOZ_DISTRIBUTION_ID)
4941 dnl ========================================================
4942 dnl complex text support off by default
4943 dnl ========================================================
4945 MOZ_ARG_DISABLE_BOOL(pango,
4946 [ --disable-pango Disable usage of Pango ],
4951 dnl ========================================================
4953 dnl ========================================================
4954 if test "$MOZ_ENABLE_GTK2"
4958 PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
4960 if test "$MOZ_PANGO"
4962 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
4963 AC_SUBST(MOZ_PANGO_CFLAGS)
4964 AC_SUBST(MOZ_PANGO_LIBS)
4965 AC_DEFINE(MOZ_PANGO)
4967 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
4968 AC_SUBST(MOZ_PANGO_CFLAGS)
4969 AC_SUBST(MOZ_PANGO_LIBS)
4971 PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0 fontconfig)
4972 AC_SUBST(FT2_CFLAGS)
4977 dnl ========================================================
4978 dnl = PostScript print module
4979 dnl ========================================================
4980 MOZ_ARG_DISABLE_BOOL(postscript,
4981 [ --disable-postscript Disable PostScript printing support ],
4982 MOZ_ENABLE_POSTSCRIPT=,
4983 MOZ_ENABLE_POSTSCRIPT=1 )
4985 dnl ========================================================
4986 dnl = GnomeVFS support module
4987 dnl ========================================================
4991 dnl build the gnomevfs extension by default only when the
4992 dnl GTK2 toolkit is in use.
4993 if test "$MOZ_ENABLE_GTK2"
4995 MOZ_ENABLE_GNOMEVFS=1
4997 MOZ_ENABLE_LIBGNOME=1
5000 MOZ_ARG_DISABLE_BOOL(gnomevfs,
5001 [ --disable-gnomevfs Disable GnomeVFS support ],
5002 MOZ_ENABLE_GNOMEVFS=,
5003 MOZ_ENABLE_GNOMEVFS=force)
5005 if test "$MOZ_ENABLE_GNOMEVFS"
5007 PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
5008 MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
5009 MOZ_ENABLE_GNOMEVFS=1
5011 if test "$MOZ_ENABLE_GNOMEVFS" = "force"
5013 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
5015 MOZ_ENABLE_GNOMEVFS=
5019 AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
5020 AC_SUBST(MOZ_GNOMEVFS_LIBS)
5022 if test "$MOZ_ENABLE_GCONF"
5024 PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION,[
5025 MOZ_GCONF_LIBS=`echo $MOZ_GCONF_LIBS | sed 's/-llinc\>//'`
5032 if test "$MOZ_ENABLE_GCONF"; then
5033 AC_DEFINE(MOZ_ENABLE_GCONF)
5036 AC_SUBST(MOZ_ENABLE_GCONF)
5037 AC_SUBST(MOZ_GCONF_CFLAGS)
5038 AC_SUBST(MOZ_GCONF_LIBS)
5040 if test "$MOZ_ENABLE_LIBGNOME"
5042 PKG_CHECK_MODULES(MOZ_LIBGNOME, libgnome-2.0 >= $LIBGNOME_VERSION,[
5043 MOZ_LIBGNOME_LIBS=`echo $MOZ_LIBGNOME_LIBS | sed 's/-llinc\>//'`
5044 MOZ_ENABLE_LIBGNOME=1
5046 MOZ_ENABLE_LIBGNOME=
5050 AC_SUBST(MOZ_LIBGNOME_CFLAGS)
5051 AC_SUBST(MOZ_LIBGNOME_LIBS)
5053 # The GNOME component is built if gtk2, gconf, gnome-vfs, and libgnome
5054 # are all available.
5056 if test "$MOZ_ENABLE_GTK2" -a "$MOZ_ENABLE_GCONF" -a \
5057 "$MOZ_ENABLE_GNOMEVFS" -a "$MOZ_ENABLE_LIBGNOME"; then
5058 MOZ_ENABLE_GNOME_COMPONENT=1
5060 MOZ_ENABLE_GNOME_COMPONENT=
5063 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5066 dnl ========================================================
5067 dnl = libgnomeui support module
5068 dnl ========================================================
5070 if test "$MOZ_ENABLE_GTK2"
5072 MOZ_ENABLE_GNOMEUI=1
5074 MOZ_ARG_DISABLE_BOOL(gnomeui,
5075 [ --disable-gnomeui Disable libgnomeui support (default: auto, optional at runtime) ],
5076 MOZ_ENABLE_GNOMEUI=,
5077 MOZ_ENABLE_GNOMEUI=force)
5079 if test "$MOZ_ENABLE_GNOMEUI"
5081 PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5083 MOZ_GNOMEUI_LIBS=`echo $MOZ_GNOMEUI_LIBS | sed 's/-llinc\>//'`
5084 MOZ_ENABLE_GNOMEUI=1
5086 if test "$MOZ_ENABLE_GNOMEUI" = "force"
5088 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5094 if test "$MOZ_ENABLE_GNOMEUI"; then
5095 AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5098 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5099 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5100 AC_SUBST(MOZ_GNOMEUI_LIBS)
5102 dnl ========================================================
5104 dnl ========================================================
5106 if test "$MOZ_ENABLE_GTK2" || test "$MOZ_ENABLE_QT"
5110 MOZ_ARG_DISABLE_BOOL(dbus,
5111 [ --disable-dbus Disable dbus support ],
5115 if test "$MOZ_ENABLE_DBUS"
5117 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5118 AC_DEFINE(MOZ_ENABLE_DBUS)
5121 AC_SUBST(MOZ_ENABLE_DBUS)
5122 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5123 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5125 dnl ========================================================
5126 dnl = libnotify support
5127 dnl ========================================================
5129 MOZ_ARG_ENABLE_BOOL(libnotify,
5130 [ --enable-libnotify Enable libnotify support ],
5131 MOZ_ENABLE_LIBNOTIFY=1,
5132 MOZ_ENABLE_LIBNOTIFY=)
5134 if test "$MOZ_ENABLE_GTK2"
5136 if test "$MOZ_ENABLE_LIBNOTIFY"
5138 AC_DEFINE(MOZ_ENABLE_LIBNOTIFY)
5142 if test -z "$SKIP_LIBRARY_CHECKS"
5144 if test "$MOZ_ENABLE_GTK2"
5146 if test "$MOZ_ENABLE_LIBNOTIFY"
5148 PKG_CHECK_MODULES(MOZ_LIBNOTIFY, libnotify >= $LIBNOTIFY_VERSION)
5152 AC_SUBST(MOZ_ENABLE_LIBNOTIFY)
5153 AC_SUBST(MOZ_LIBNOTIFY_CFLAGS)
5154 AC_SUBST(MOZ_LIBNOTIFY_LIBS)
5156 dnl ========================================================
5157 dnl = Build Personal Security Manager
5158 dnl ========================================================
5159 MOZ_ARG_DISABLE_BOOL(crypto,
5160 [ --disable-crypto Disable crypto support (Personal Security Manager)],
5164 dnl ========================================================
5165 dnl = JS Debugger XPCOM component (js/jsd)
5166 dnl ========================================================
5167 MOZ_ARG_DISABLE_BOOL(jsd,
5168 [ --disable-jsd Disable JavaScript debug library],
5173 dnl ========================================================
5174 dnl = Disable plugin support
5175 dnl ========================================================
5176 MOZ_ARG_DISABLE_BOOL(plugins,
5177 [ --disable-plugins Disable plugins support],
5181 dnl ========================================================
5182 dnl = Disable building dbm
5183 dnl ========================================================
5184 MOZ_ARG_DISABLE_BOOL(dbm,
5185 [ --disable-dbm Disable building dbm],
5189 dnl ========================================================
5190 dnl = Open JVM Interface (OJI) support
5191 dnl ========================================================
5192 MOZ_ARG_DISABLE_BOOL(oji,
5193 [ --disable-oji Disable Open JVM Integration support],
5196 if test -n "$MOZ_OJI"; then
5200 dnl bi-directional support always on
5204 dnl ========================================================
5205 dnl view source support on by default
5206 dnl ========================================================
5207 MOZ_ARG_DISABLE_BOOL(view-source,
5208 [ --disable-view-source Disable view source support],
5211 if test "$MOZ_VIEW_SOURCE"; then
5212 AC_DEFINE(MOZ_VIEW_SOURCE)
5216 dnl ========================================================
5217 dnl accessibility support on by default on all platforms
5219 dnl ========================================================
5220 MOZ_ARG_DISABLE_BOOL(accessibility,
5221 [ --disable-accessibility Disable accessibility support (off by default on OS X)],
5224 if test "$ACCESSIBILITY"; then
5225 AC_DEFINE(ACCESSIBILITY)
5228 if test -n "$ACCESSIBILITY" -a "$COMPILE_ENVIRONMENT" = "1"; then
5230 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5231 if test "$ac_cv_header_atlbase_h" = "no"; then
5232 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.])
5234 if test "$ac_cv_header_oleacc_idl" = "no"; then
5235 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.])
5241 dnl ========================================================
5242 dnl xpfe/components on by default
5243 dnl ========================================================
5244 MOZ_ARG_DISABLE_BOOL(xpfe-components,
5245 [ --disable-xpfe-components
5246 Disable xpfe components],
5247 MOZ_XPFE_COMPONENTS=,
5248 MOZ_XPFE_COMPONENTS=1 )
5250 dnl ========================================================
5251 dnl xpinstall support on by default
5252 dnl ========================================================
5253 MOZ_ARG_DISABLE_BOOL(xpinstall,
5254 [ --disable-xpinstall Disable xpinstall support],
5257 if test "$MOZ_XPINSTALL"; then
5258 AC_DEFINE(MOZ_XPINSTALL)
5261 dnl ========================================================
5262 dnl xpcom js loader support on by default
5263 dnl ========================================================
5264 MOZ_ARG_DISABLE_BOOL(jsloader,
5265 [ --disable-jsloader Disable xpcom js loader support],
5268 if test "$MOZ_JSLOADER"; then
5269 AC_DEFINE(MOZ_JSLOADER)
5272 dnl ========================================================
5273 dnl Disable printing
5274 dnl ========================================================
5275 MOZ_ARG_DISABLE_BOOL(printing,
5276 [ --disable-printing Disable printing support],
5280 if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
5281 AC_MSG_WARN([Printing does not work with Qt at this time. Omitting printing support.])
5285 if test "$NS_PRINTING"; then
5286 AC_DEFINE(NS_PRINTING)
5287 AC_DEFINE(NS_PRINT_PREVIEW)
5290 dnl ========================================================
5291 dnl use native unicode converters
5292 dnl ========================================================
5293 MOZ_ARG_ENABLE_BOOL(native-uconv,
5294 [ --enable-native-uconv Enable iconv support],
5295 MOZ_USE_NATIVE_UCONV=1,
5296 MOZ_USE_NATIVE_UCONV= )
5297 if test "$MOZ_USE_NATIVE_UCONV"; then
5298 AC_DEFINE(MOZ_USE_NATIVE_UCONV)
5300 if test "$OS_ARCH" != "WINCE" -a "$OS_ARCH" != "WINNT" -a "$MOZ_USE_NATIVE_UCONV" -a "$ac_cv_func_iconv" != "yes"; then
5301 AC_MSG_ERROR([iconv() not found. Cannot enable native uconv support.])
5305 dnl ========================================================
5306 dnl Libeditor can be build as plaintext-only,
5307 dnl or as a full html and text editing component.
5308 dnl We build both by default.
5309 dnl ========================================================
5310 MOZ_ARG_ENABLE_BOOL(plaintext-editor-only,
5311 [ --enable-plaintext-editor-only
5312 Allow only plaintext editing],
5313 MOZ_PLAINTEXT_EDITOR_ONLY=1,
5314 MOZ_PLAINTEXT_EDITOR_ONLY= )
5315 dnl Note the #define is MOZILLA, not MOZ, for compat with the Mac build.
5316 AC_SUBST(MOZ_PLAINTEXT_EDITOR_ONLY)
5318 dnl ========================================================
5319 dnl = Drop XPCOM Obsolete library
5320 dnl ========================================================
5321 MOZ_ARG_DISABLE_BOOL(xpcom-obsolete,
5322 [ --disable-xpcom-obsolete Disable XPCOM Obsolete Library],
5323 MOZ_NO_XPCOM_OBSOLETE=1,
5324 MOZ_NO_XPCOM_OBSOLETE=)
5326 if test -n "$MOZ_NO_XPCOM_OBSOLETE"; then
5327 AC_DEFINE(MOZ_NO_XPCOM_OBSOLETE)
5330 dnl ========================================================
5331 dnl = Disable Fast Load
5332 dnl ========================================================
5333 MOZ_ARG_DISABLE_BOOL(xpcom-fastload,
5334 [ --disable-xpcom-fastload Disable XPCOM fastload support],
5338 AC_SUBST(MOZ_NO_FAST_LOAD)
5340 if test -n "$MOZ_NO_FAST_LOAD"; then
5341 AC_DEFINE(MOZ_NO_FAST_LOAD)
5344 dnl ========================================================
5345 dnl = Disable Ogg Codecs
5346 dnl ========================================================
5347 MOZ_ARG_DISABLE_BOOL(ogg,
5348 [ --disable-ogg Disable Ogg Codec support],
5354 if test -n "$MOZ_OGG"; then
5360 dnl ========================================================
5361 dnl = Disable Wave decoder support
5362 dnl ========================================================
5363 MOZ_ARG_DISABLE_BOOL(wave,
5364 [ --disable-wave Disable Wave decoder support],
5370 if test -n "$MOZ_WAVE"; then
5376 dnl ========================================================
5377 dnl = Handle dependent SYDNEYAUDIO and MEDIA defines
5378 dnl ========================================================
5380 AC_SUBST(MOZ_SYDNEYAUDIO)
5382 if test -n "$MOZ_SYDNEYAUDIO"; then
5383 AC_DEFINE(MOZ_SYDNEYAUDIO)
5388 if test -n "$MOZ_MEDIA"; then
5389 AC_DEFINE(MOZ_MEDIA)
5392 dnl ========================================================
5393 dnl = Check alsa availability on Linux if using sydneyaudio
5394 dnl ========================================================
5396 dnl If using sydneyaudio with Linux, ensure that the alsa library is available
5397 if test "$COMPILE_ENVIRONMENT"; then
5398 if test -n "$MOZ_SYDNEYAUDIO"; then
5399 case "$target_os" in
5401 AC_CHECK_LIB(asound, snd_pcm_open,,AC_MSG_ERROR([Ogg support on Linux requires the alsa library]))
5407 dnl ========================================================
5408 dnl Permissions System
5409 dnl ========================================================
5410 MOZ_ARG_DISABLE_BOOL(permissions,
5411 [ --disable-permissions Disable permissions (popup and cookie blocking)],
5416 dnl ========================================================
5418 dnl ========================================================
5419 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5420 [ --disable-negotiateauth Disable GSS-API negotiation ],
5421 MOZ_AUTH_EXTENSION=,
5422 MOZ_AUTH_EXTENSION=1 )
5424 dnl ========================================================
5426 dnl ========================================================
5427 MOZ_ARG_DISABLE_BOOL(xtf,
5428 [ --disable-xtf Disable XTF (pluggable xml tags) support],
5431 if test "$MOZ_XTF"; then
5435 dnl ========================================================
5437 dnl ========================================================
5438 MOZ_ARG_DISABLE_BOOL(inspector-apis,
5439 [ --disable-inspector-apis Disable the DOM inspection APIs ],
5440 MOZ_NO_INSPECTOR_APIS=1,
5441 MOZ_NO_INSPECTOR_APIS= )
5443 dnl ========================================================
5444 dnl Pref extensions (autoconfig and system-pref)
5445 dnl ========================================================
5446 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5447 [ --disable-pref-extensions
5448 Disable pref extensions such as autoconfig and
5450 MOZ_PREF_EXTENSIONS=,
5451 MOZ_PREF_EXTENSIONS=1 )
5453 dnl ========================================================
5454 dnl = Universalchardet
5455 dnl ========================================================
5456 MOZ_ARG_DISABLE_BOOL(universalchardet,
5457 [ --disable-universalchardet
5458 Disable universal encoding detection],
5459 MOZ_UNIVERSALCHARDET=,
5460 MOZ_UNIVERSALCHARDET=1 )
5462 dnl ========================================================
5464 dnl ========================================================
5465 MOZ_ARG_ENABLE_BOOL(javaxpcom,
5466 [ --enable-javaxpcom
5467 Enable Java-XPCOM bridge],
5471 if test -n "${MOZ_JAVAXPCOM}"; then
5474 if test -n "$JAVA_HOME"; then
5475 JAVA_HOME=`cygpath -u \`cygpath -m -s "$JAVA_HOME"\``
5479 if test -n "$JAVA_HOME"; then
5480 JAVA_HOME=`cd "$JAVA_HOME" && pwd`
5485 if test -n "${JAVA_INCLUDE_PATH}"; then
5486 dnl Make sure jni.h exists in the given include path.
5487 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5488 AC_MSG_ERROR([jni.h was not found in given include path $JAVA_INCLUDE_PATH.])
5491 case "$target_os" in
5493 dnl Default to java system location
5494 JAVA_INCLUDE_PATH=/System/Library/Frameworks/JavaVM.framework/Headers
5498 JAVA_INCLUDE_PATH="$JAVA_HOME/include"
5501 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5502 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.])
5506 if test -n "${JAVA_BIN_PATH}"; then
5507 dnl Look for javac and jar in the specified path.
5508 JAVA_PATH="$JAVA_BIN_PATH"
5510 dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5511 JAVA_PATH="$JAVA_HOME/bin:$PATH"
5514 AC_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5515 AC_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5516 AC_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5517 if test -z "$JAVA" || test "$JAVA" = ":" || test -z "$JAVAC" || test "$JAVAC" = ":" || test -z "$JAR" || test "$JAR" = ":"; then
5518 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.])
5522 dnl ========================================================
5523 dnl = Breakpad crash reporting (on by default on supported platforms)
5524 dnl ========================================================
5526 if (test "$OS_ARCH" = "WINNT" -a -z "$GNU_CC" \
5527 || test "$OS_ARCH" = "Darwin" \
5528 || test "$OS_ARCH" = "Linux" -a "$CPU_ARCH" = "x86" \
5529 || test "$OS_ARCH" = "SunOS") \
5530 && test -z "$HAVE_64BIT_OS"; then
5534 MOZ_ARG_DISABLE_BOOL(crashreporter,
5535 [ --disable-crashreporter Disable breakpad crash reporting],
5537 MOZ_CRASHREPORTER=1)
5539 if test -n "$MOZ_CRASHREPORTER"; then
5540 AC_DEFINE(MOZ_CRASHREPORTER)
5542 if (test "$OS_ARCH" = "Linux" || test "$OS_ARCH" = "SunOS") && \
5543 test -z "$SKIP_LIBRARY_CHECKS"; then
5544 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
5545 AC_SUBST(MOZ_GTHREAD_CFLAGS)
5546 AC_SUBST(MOZ_GTHREAD_LIBS)
5548 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.])])
5552 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
5553 [ --with-crashreporter-enable-percent=NN Enable sending crash reports by default on NN% of users. (default=100)],
5554 [ val=`echo $withval | sed 's/[^0-9]//g'`
5555 MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
5557 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
5558 MOZ_CRASHREPORTER_ENABLE_PERCENT=100
5560 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
5562 dnl ========================================================
5563 dnl = Enable compilation of specific extension modules
5564 dnl ========================================================
5566 MOZ_ARG_ENABLE_STRING(extensions,
5567 [ --enable-extensions Enable extensions],
5568 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5569 if test "$option" = "yes" || test "$option" = "all"; then
5570 AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
5571 elif test "$option" = "no" || test "$option" = "none"; then
5573 elif test "$option" = "default"; then
5574 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
5575 elif test `echo "$option" | grep -c \^-` != 0; then
5576 option=`echo $option | sed 's/^-//'`
5577 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
5579 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
5582 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
5584 if test -z "$MOZ_ENABLE_GNOMEVFS" && test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
5585 # Suppress warning on non-X11 platforms
5586 if test -n "$MOZ_X11"; then
5587 AC_MSG_WARN([Cannot build gnomevfs without required libraries. Removing gnomevfs from MOZ_EXTENSIONS.])
5589 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
5592 if test -z "$MOZ_JSDEBUGGER" && test `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
5593 AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
5594 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
5597 dnl This might be temporary: build tridentprofile only on Windows
5598 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0 && test "$OS_ARCH" != "WINNT"; then
5599 AC_MSG_WARN([tridentprofile extension works only on Windows at this time. Removing tridentprofile from MOZ_EXTENSIONS.])
5600 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5603 dnl cookie must be built before tridentprofile. put it at list's end.
5604 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0; then
5605 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5606 MOZ_EXTENSIONS="$MOZ_EXTENSIONS tridentprofile"
5609 dnl xforms requires xtf and schema-validation
5610 if test -z "$MOZ_XTF" && test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
5611 AC_MSG_WARN([Cannot build XForms without XTF support. Removing XForms from MOZ_EXTENSIONS.])
5612 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5614 if test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0 && test `echo "$MOZ_EXTENSIONS" | grep -c schema-validation` -eq 0; then
5615 AC_MSG_WARN([Cannot build XForms without schema validation. Removing XForms from MOZ_EXTENSIONS.])
5616 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5619 if test `echo "$MOZ_EXTENSIONS" | grep -c auth` -ne 0; then
5620 AC_MSG_WARN([auth is no longer an extension, use --disable-negotiateauth to disable.])
5621 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|auth||g'`
5624 if test `echo "$MOZ_EXTENSIONS" | grep -c 'cookie\|permissions'` -ne 0; then
5625 AC_MSG_WARN([cookie and permissions are no longer extensions, use --disable-permissions to disable.])
5626 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|cookie||g; s|permissions||g'`
5629 if test `echo "$MOZ_EXTENSIONS" | grep -c pref` -ne 0; then
5630 AC_MSG_WARN([pref is no longer an extension, use --disable-pref-extensions to disable.])
5631 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|pref||g'`
5634 if test `echo "$MOZ_EXTENSIONS" | grep -c universalchardet` -ne 0; then
5635 AC_MSG_WARN([universalchardet is no longer an extension, use --disable-universalchardet to disable.])
5636 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|universalchardet||g'`
5639 if test `echo "$MOZ_EXTENSIONS" | grep -c java` -ne 0; then
5640 AC_MSG_WARN([java is no longer an extension, use --enable-javaxpcom to enable.])
5641 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|java||g'`
5644 if test `echo "$MOZ_EXTENSIONS" | grep -c spellcheck` -ne 0; then
5645 AC_MSG_WARN([spellcheck is no longer an extension.])
5646 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|spellcheck||g'`
5649 if test -n "$MOZ_NO_XPCOM_OBSOLETE" && test `echo "$MOZ_EXTENSIONS" | grep -c sroaming` -ne 0; then
5650 AC_MSG_WARN([Cannot currently build sroaming without xpcom obsolete -- bug 249343. Removing sroaming from MOZ_EXTENSIONS.])
5651 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|sroaming||'`
5655 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
5657 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
5658 dnl when trying to build a non-existent extension.
5659 for extension in $MOZ_EXTENSIONS; do
5660 if test ! -d "${srcdir}/extensions/${extension}"; then
5661 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
5666 dnl ========================================================
5668 dnl ========================================================
5669 case "$MOZ_WIDGET_TOOLKIT" in
5670 beos|windows|os2|mac|cocoa)
5673 if test -z "$MOZ_ENABLE_GTK2" && test -z "$MOZ_ENABLE_QT"; then
5674 MOZ_IMG_DECODERS_DEFAULT=`echo $MOZ_IMG_DECODERS_DEFAULT | sed -e 's|icon||'`
5679 MOZ_ARG_ENABLE_STRING(image-decoders,
5680 [ --enable-image-decoders[={mod1,mod2,default,all,none}]
5681 Enable specific image decoders],
5682 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5683 if test "$option" = "yes" || test "$option" = "all"; then
5684 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5685 elif test "$option" = "no" || test "$option" = "none"; then
5687 elif test "$option" = "default"; then
5688 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5689 elif test `echo "$option" | grep -c \^-` != 0; then
5690 option=`echo $option | sed 's/^-//'`
5691 MOZ_IMG_DECODERS=`echo "$MOZ_IMG_DECODERS" | sed "s/ ${option}//"`
5693 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $option"
5696 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS_DEFAULT")
5698 dnl Dupes are removed in the encoder section because it will also add decoders
5700 dnl ========================================================
5702 dnl ========================================================
5703 MOZ_ARG_ENABLE_STRING(image-encoders,
5704 [ --enable-image-encoders[={mod1,mod2,default,all,none}]
5705 Enable specific image encoders],
5706 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5707 if test "$option" = "yes" || test "$option" = "all"; then
5708 addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5709 elif test "$option" = "no" || test "$option" = "none"; then
5712 elif test "$option" = "default"; then
5713 addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5714 elif test `echo "$option" | grep -c \^-` != 0; then
5715 option=`echo $option | sed 's/^-//'`
5716 addencoder=`echo "$MOZ_IMG_ENCODERS" | sed "s/ ${option}//"`
5718 addencoder="$option"
5720 MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS $addencoder"
5722 MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS_DEFAULT")
5725 MOZ_IMG_DECODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_DECODERS}`
5726 MOZ_IMG_ENCODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_ENCODERS}`
5728 dnl ========================================================
5729 dnl MathML on by default
5730 dnl ========================================================
5731 MOZ_ARG_DISABLE_BOOL(mathml,
5732 [ --disable-mathml Disable MathML support],
5735 if test "$MOZ_MATHML"; then
5736 AC_DEFINE(MOZ_MATHML)
5739 dnl ========================================================
5741 dnl ========================================================
5742 MOZ_ARG_DISABLE_BOOL(canvas,
5743 [ --disable-canvas Disable html:canvas feature],
5745 MOZ_ENABLE_CANVAS=1 )
5746 if test -n "$MOZ_ENABLE_CANVAS"; then
5747 AC_DEFINE(MOZ_ENABLE_CANVAS)
5749 AC_SUBST(MOZ_ENABLE_CANVAS)
5751 dnl ========================================================
5753 dnl ========================================================
5754 MOZ_ARG_DISABLE_BOOL(svg,
5755 [ --disable-svg Disable SVG support],
5758 if test -n "$MOZ_SVG"; then
5762 dnl ========================================================
5764 dnl ========================================================
5765 MOZ_ARG_ENABLE_BOOL(smil,
5766 [ --enable-smil Enable SMIL animation support],
5769 if test -n "$MOZ_SMIL"; then
5773 dnl ========================================================
5775 dnl ========================================================
5776 case "$target_os" in
5777 aix*|solaris*|linux*|msvc*|mks*|cygwin*|mingw*|os2*|wince*)
5782 MOZ_ARG_DISABLE_BOOL(installer,
5783 [ --disable-installer Disable building of installer],
5786 if test -n "$MOZ_INSTALLER" -a -n "$MOZ_XUL_APP" -a "$OS_ARCH" = "WINNT"; then
5787 # Disable installer for Windows builds that use the new toolkit if NSIS
5788 # isn't in the path.
5789 AC_PATH_PROGS(MAKENSIS, makensis)
5790 if test -z "$MAKENSIS" || test "$MAKENSIS" = ":"; then
5791 AC_MSG_ERROR([To build the installer makensis is required in your path. To build without the installer reconfigure using --disable-installer.])
5793 # The Windows build for NSIS requires the iconv command line utility to
5794 # convert the charset of the locale files.
5795 AC_PATH_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5796 if test -z "$HOST_ICONV"; then
5797 AC_MSG_ERROR([To build the installer iconv is required in your path. To build without the installer reconfigure using --disable-installer.])
5801 # Automatically disable installer if xpinstall isn't built
5802 if test -z "$MOZ_XPINSTALL"; then
5805 AC_SUBST(MOZ_INSTALLER)
5807 AC_MSG_CHECKING([for tar archiver])
5808 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
5809 if test -z "$TAR"; then
5810 AC_MSG_ERROR([no tar archiver found in \$PATH])
5812 AC_MSG_RESULT([$TAR])
5815 AC_MSG_CHECKING([for wget])
5816 AC_CHECK_PROGS(WGET, wget, "")
5817 AC_MSG_RESULT([$WGET])
5820 dnl ========================================================
5822 dnl ========================================================
5824 MOZ_ARG_DISABLE_BOOL(updater,
5825 [ --disable-updater Disable building of updater],
5828 AC_SUBST(MOZ_UPDATER)
5830 # app update channel is 'default' when not supplied.
5831 MOZ_ARG_ENABLE_STRING([update-channel],
5832 [ --enable-update-channel=CHANNEL
5833 Select application update channel (default=default)],
5834 MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
5836 if test -z "$MOZ_UPDATE_CHANNEL"; then
5837 MOZ_UPDATE_CHANNEL=default
5839 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
5841 # tools/update-packaging is not checked out by default.
5842 MOZ_ARG_ENABLE_BOOL(update-packaging,
5843 [ --enable-update-packaging
5844 Enable tools/update-packaging],
5845 MOZ_UPDATE_PACKAGING=1,
5846 MOZ_UPDATE_PACKAGING= )
5847 AC_SUBST(MOZ_UPDATE_PACKAGING)
5849 dnl ========================================================
5851 dnl ========================================================
5853 MOZ_ARG_DISABLE_BOOL(xpconnect-idispatch,
5854 [ --disable-xpconnect-idispatch
5855 Disable building of xpconnect support for IDispatch
5857 XPC_IDISPATCH_SUPPORT=,
5858 XPC_IDISPATCH_SUPPORT=1)
5859 AC_SUBST(XPC_IDISPATCH_SUPPORT)
5861 MOZ_ARG_DISABLE_BOOL(activex,
5862 [ --disable-activex Disable building of ActiveX control (win32 only)],
5863 MOZ_NO_ACTIVEX_SUPPORT=1,
5864 MOZ_NO_ACTIVEX_SUPPORT= )
5865 AC_SUBST(MOZ_NO_ACTIVEX_SUPPORT)
5867 MOZ_ARG_DISABLE_BOOL(activex-scripting,
5868 [ --disable-activex-scripting
5869 Disable building of ActiveX scripting support (win32)],
5870 MOZ_ACTIVEX_SCRIPTING_SUPPORT=,
5871 MOZ_ACTIVEX_SCRIPTING_SUPPORT=1)
5872 AC_SUBST(MOZ_ACTIVEX_SCRIPTING_SUPPORT)
5874 if test -n "$MOZ_NO_ACTIVEX_SUPPORT" -a -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT";
5876 AC_MSG_ERROR([Cannot enable ActiveX scripting support when ActiveX support is disabled.])
5879 if test "$COMPILE_ENVIRONMENT" = "1"; then
5880 if test -n "$XPC_IDISPATCH_SUPPORT" -o -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
5882 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5883 if test "$ac_cv_header_atlbase_h" = "no"; then
5884 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.])
5891 dnl ========================================================
5893 dnl ========================================================
5894 MOZ_ARG_ENABLE_BOOL(leaky,
5895 [ --enable-leaky Build leaky memory tool],
5900 dnl ========================================================
5902 dnl ========================================================
5903 MOZ_ARG_ENABLE_BOOL(xpctools,
5904 [ --enable-xpctools Build JS profiling tool],
5909 dnl ========================================================
5910 dnl build the tests by default
5911 dnl ========================================================
5912 MOZ_ARG_DISABLE_BOOL(tests,
5913 [ --disable-tests Do not build test libraries & programs],
5917 dnl ========================================================
5918 dnl parental controls (for Windows Vista)
5919 dnl ========================================================
5920 MOZ_ARG_DISABLE_BOOL(parental-controls,
5921 [ --disable-parental-controls
5922 Do not build parental controls],
5923 MOZ_DISABLE_PARENTAL_CONTROLS=1,
5924 MOZ_DISABLE_PARENTAL_CONTROLS=)
5925 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5926 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5929 dnl ========================================================
5930 dnl Vista SDK specific api
5931 dnl ========================================================
5932 MOZ_ARG_DISABLE_BOOL(vista-sdk-requirements,
5933 [ --disable-vista-sdk-requirements
5934 Do not build Vista SDK specific code],
5935 MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=1,
5936 MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=)
5937 if test -n "$COMPILE_ENVIRONMENT"; then
5938 if test -n "$MOZ_DISABLE_VISTA_SDK_REQUIREMENTS"; then
5939 AC_MSG_WARN([Resulting builds will not be compatible with Windows Vista. (bug 428970)])
5940 AC_DEFINE(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
5941 if test -z "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5942 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5944 MOZ_DISABLE_PARENTAL_CONTROLS=1
5947 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5948 if test "$ac_cv_header_wpcapi_h" = "no"; then
5949 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.])
5955 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
5956 AC_SUBST(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
5958 dnl ========================================================
5960 dnl = Module specific options
5962 dnl ========================================================
5963 MOZ_ARG_HEADER(Individual module options)
5965 dnl ========================================================
5966 dnl = Enable Lea malloc in xpcom. OFF by default.
5967 dnl ========================================================
5968 MOZ_ARG_ENABLE_BOOL(xpcom-lea,
5969 [ --enable-xpcom-lea Use Lea malloc in xpcom ],
5972 if test -n "$XPCOM_USE_LEA"; then
5973 AC_DEFINE(XPCOM_USE_LEA)
5976 dnl ========================================================
5977 dnl = Enable places (new history/bookmarks)
5978 dnl ========================================================
5979 MOZ_ARG_ENABLE_BOOL(places,
5980 [ --enable-places Enable 'places' bookmark/history implementation],
5983 if test -n "$MOZ_PLACES"; then
5984 AC_DEFINE(MOZ_PLACES)
5985 if test -z "$MOZ_MAIL_NEWS"; then
5990 if test "$MOZ_BUILD_APP" = "browser"; then
5991 AC_MSG_ERROR([Cannot build Firefox with --disable-places.])
5995 dnl ========================================================
5996 dnl = Disable feed handling components
5997 dnl ========================================================
5998 MOZ_ARG_DISABLE_BOOL(feeds,
5999 [ --disable-feeds Disable feed handling and processing components],
6002 if test -n "$MOZ_FEEDS"; then
6003 AC_DEFINE(MOZ_FEEDS)
6005 if test "$MOZ_BUILD_APP" = "browser"; then
6006 AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
6010 dnl ========================================================
6011 dnl = Enable mozStorage
6012 dnl ========================================================
6013 dnl Implicitly enabled by default if building calendar or places
6014 MOZ_ARG_ENABLE_BOOL(storage,
6015 [ --enable-storage Enable mozStorage module and related components],
6018 if test -n "$MOZ_STORAGE"; then
6019 AC_DEFINE(MOZ_STORAGE)
6022 dnl ========================================================
6023 dnl Check for sqlite
6024 dnl ========================================================
6027 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6028 [ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
6029 MOZ_NATIVE_SQLITE=1,
6030 MOZ_NATIVE_SQLITE= )
6032 if test -z "$MOZ_NATIVE_SQLITE"
6035 SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,sqlite3,$(DIST)/lib)'
6037 PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6040 AC_SUBST(MOZ_NATIVE_SQLITE)
6042 dnl ========================================================
6043 dnl = Enable help viewer (off by default)
6044 dnl ========================================================
6045 MOZ_ARG_ENABLE_BOOL(help-viewer,
6046 [ --enable-help-viewer Enable help viewer],
6049 if test -n "$MOZ_HELP_VIEWER"; then
6050 AC_DEFINE(MOZ_HELP_VIEWER)
6052 AC_SUBST(MOZ_HELP_VIEWER)
6053 if test "$MOZ_BUILD_APP" = "browser" -a -n "$MOZ_HELP_VIEWER"; then
6054 AC_MSG_ERROR([Cannot build Firefox with --enable-help-viewer.])
6057 dnl ========================================================
6058 dnl = Enable safe browsing (anti-phishing)
6059 dnl ========================================================
6060 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6061 [ --enable-safe-browsing Enable safe browsing (anti-phishing) implementation],
6062 MOZ_SAFE_BROWSING=1,
6063 MOZ_SAFE_BROWSING= )
6064 if test -n "$MOZ_SAFE_BROWSING"; then
6065 AC_DEFINE(MOZ_SAFE_BROWSING)
6067 AC_SUBST(MOZ_SAFE_BROWSING)
6069 dnl ========================================================
6070 dnl = Enable url-classifier
6071 dnl ========================================================
6072 dnl Implicitly enabled by default if building with safe-browsing
6073 if test -n "$MOZ_SAFE_BROWSING"; then
6074 MOZ_URL_CLASSIFIER=1
6076 MOZ_ARG_ENABLE_BOOL(url-classifier,
6077 [ --enable-url-classifier Enable url classifier module],
6078 MOZ_URL_CLASSIFIER=1,
6079 MOZ_URL_CLASSIFIER= )
6080 if test -n "$MOZ_URL_CLASSIFIER"; then
6081 AC_DEFINE(MOZ_URL_CLASSIFIER)
6083 AC_SUBST(MOZ_URL_CLASSIFIER)
6085 dnl ========================================================
6086 dnl = Disable zipwriter
6087 dnl ========================================================
6088 MOZ_ARG_DISABLE_BOOL(zipwriter,
6089 [ --disable-zipwriter Disable zipwriter component],
6092 AC_SUBST(MOZ_ZIPWRITER)
6094 dnl ========================================================
6095 dnl = Enable Ultrasparc specific optimizations for JS
6096 dnl ========================================================
6097 MOZ_ARG_ENABLE_BOOL(js-ultrasparc,
6098 [ --enable-js-ultrasparc Use UltraSPARC optimizations in JS],
6099 JS_ULTRASPARC_OPTS=1,
6100 JS_ULTRASPARC_OPTS= )
6102 dnl only enable option for ultrasparcs
6103 if test `echo "$target_os" | grep -c \^solaris 2>/dev/null` = 0 -o \
6104 "$OS_TEST" != "sun4u"; then
6107 AC_SUBST(JS_ULTRASPARC_OPTS)
6109 dnl ========================================================
6110 dnl = Hildon and OSSO checks
6111 dnl ========================================================
6112 PKG_CHECK_MODULES(LIBHILDONMIME,libhildonmime,
6113 MOZ_PLATFORM_HILDON=1,
6114 MOZ_PLATFORM_HILDON=)
6115 if test $MOZ_PLATFORM_HILDON; then
6116 AC_DEFINE(MOZ_PLATFORM_HILDON)
6118 AC_SUBST(LIBHILDONMIME_CFLAGS)
6119 AC_SUBST(LIBHILDONMIME_LIBS)
6121 PKG_CHECK_MODULES(LIBOSSO,libosso,
6125 if test $NS_OSSO; then
6126 if test -z "$MOZ_ENABLE_DBUS"; then
6127 AC_MSG_ERROR([DBus is required when building for OSSO])
6130 dnl XXX this should go somewhere else; it's not just for OSSO
6131 AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
6133 AC_SUBST(LIBOSSO_CFLAGS)
6134 AC_SUBST(LIBOSSO_LIBS)
6136 PKG_CHECK_MODULES(MOZ_LOCATION, [liblocation gpsbt],
6137 NS_MAEMO_LOCATION=1,
6140 if test $NS_MAEMO_LOCATION; then
6141 AC_DEFINE(NS_MAEMO_LOCATION)
6144 AC_SUBST(MOZ_LOCATION_CFLAGS)
6145 AC_SUBST(MOZ_LOCATION_LIBS)
6147 dnl ========================================================
6149 dnl = Feature options that require extra sources to be pulled
6151 dnl ========================================================
6152 dnl MOZ_ARG_HEADER(Features that require extra sources)
6154 dnl ========================================================
6156 dnl = Debugging Options
6158 dnl ========================================================
6159 MOZ_ARG_HEADER(Debugging and Optimizations)
6161 dnl ========================================================
6162 dnl = Disable building with debug info.
6163 dnl = Debugging is OFF by default
6164 dnl ========================================================
6165 if test -z "$MOZ_DEBUG_FLAGS"
6169 if test "$GNU_CC"; then
6170 GCC_VERSION=`$CC -v 2>&1 | awk '/version/ { print $3 }'`
6171 case "$GCC_VERSION" in
6176 MOZ_DEBUG_FLAGS="-g"
6180 MOZ_DEBUG_FLAGS="-g"
6184 MOZ_DEBUG_FLAGS="-g"
6189 MOZ_ARG_ENABLE_STRING(debug,
6190 [ --enable-debug[=DBG] Enable building with developer debug info
6191 (Using compiler flags DBG)],
6192 [ if test "$enableval" != "no"; then
6194 if test -n "$enableval" && test "$enableval" != "yes"; then
6195 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6202 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG"
6203 case "${target_os}" in
6205 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${USER}"
6207 msvc*|mks*|cygwin*|mingw*|os2*|wince*)
6208 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
6211 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`$WHOAMI`"
6214 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DTRACING"
6216 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
6218 if test -n "$MOZ_DEBUG"; then
6219 AC_MSG_CHECKING([for valid debug flags])
6220 _SAVE_CFLAGS=$CFLAGS
6221 CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
6222 AC_TRY_COMPILE([#include <stdio.h>],
6223 [printf("Hello World\n");],
6226 AC_MSG_RESULT([$_results])
6227 if test "$_results" = "no"; then
6228 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
6230 CFLAGS=$_SAVE_CFLAGS
6233 dnl ========================================================
6234 dnl = Enable code optimization. ON by default.
6235 dnl ========================================================
6236 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6237 MOZ_OPTIMIZE_FLAGS="-O"
6240 MOZ_ARG_ENABLE_STRING(optimize,
6241 [ --disable-optimize Disable compiler optimization
6242 --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6243 [ if test "$enableval" != "no"; then
6245 if test -n "$enableval" && test "$enableval" != "yes"; then
6246 MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6251 fi ], MOZ_OPTIMIZE=1)
6253 if test "$COMPILE_ENVIRONMENT"; then
6254 if test -n "$MOZ_OPTIMIZE"; then
6255 AC_MSG_CHECKING([for valid optimization flags])
6256 _SAVE_CFLAGS=$CFLAGS
6257 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6258 AC_TRY_COMPILE([#include <stdio.h>],
6259 [printf("Hello World\n");],
6262 AC_MSG_RESULT([$_results])
6263 if test "$_results" = "no"; then
6264 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6266 CFLAGS=$_SAVE_CFLAGS
6268 fi # COMPILE_ENVIRONMENT
6270 AC_SUBST(MOZ_OPTIMIZE)
6271 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6272 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6273 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6275 dnl ========================================================
6276 dnl = Enable/disable debug for specific modules only
6277 dnl = module names beginning with ^ will be disabled
6278 dnl ========================================================
6279 MOZ_ARG_ENABLE_STRING(debug-modules,
6280 [ --enable-debug-modules Enable/disable debug info for specific modules],
6281 [ MOZ_DEBUG_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6283 dnl ========================================================
6284 dnl = Enable/disable generation of debugger info for specific modules only
6285 dnl = the special module name ALL_MODULES can be used to denote all modules
6286 dnl = module names beginning with ^ will be disabled
6287 dnl ========================================================
6288 MOZ_ARG_ENABLE_STRING(debugger-info-modules,
6289 [ --enable-debugger-info-modules
6290 Enable/disable debugger info for specific modules],
6291 [ for i in `echo $enableval | sed 's/,/ /g'`; do
6292 dnl note that the list of module names is reversed as it is copied
6293 dnl this is important, as it will allow config.mk to interpret stuff like
6294 dnl "^ALL_MODULES xpcom" properly
6295 if test "$i" = "no"; then
6298 if test "$i" = "yes"; then
6301 MOZ_DBGRINFO_MODULES="$i $MOZ_DBGRINFO_MODULES";
6304 dnl ========================================================
6305 dnl Enable garbage collector
6306 dnl ========================================================
6307 MOZ_ARG_ENABLE_BOOL(boehm,
6308 [ --enable-boehm Enable the Boehm Garbage Collector],
6311 if test -n "$GC_LEAK_DETECTOR"; then
6312 AC_DEFINE(GC_LEAK_DETECTOR)
6315 dnl ========================================================
6316 dnl Disable runtime logging checks
6317 dnl ========================================================
6318 MOZ_ARG_DISABLE_BOOL(logging,
6319 [ --disable-logging Disable logging facilities],
6320 NS_DISABLE_LOGGING=1,
6321 NS_DISABLE_LOGGING= )
6322 if test "$NS_DISABLE_LOGGING"; then
6323 AC_DEFINE(NS_DISABLE_LOGGING)
6325 AC_DEFINE(MOZ_LOGGING)
6328 dnl ========================================================
6329 dnl = dnl This will enable logging of addref, release, ctor, dtor.
6330 dnl ========================================================
6331 _ENABLE_LOGREFCNT=42
6332 MOZ_ARG_ENABLE_BOOL(logrefcnt,
6333 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
6334 _ENABLE_LOGREFCNT=1,
6335 _ENABLE_LOGREFCNT= )
6336 if test "$_ENABLE_LOGREFCNT" = "1"; then
6337 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
6338 elif test -z "$_ENABLE_LOGREFCNT"; then
6339 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
6342 dnl ========================================================
6343 dnl = Enable trace malloc
6344 dnl ========================================================
6345 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
6346 MOZ_ARG_ENABLE_BOOL(trace-malloc,
6347 [ --enable-trace-malloc Enable malloc tracing],
6350 if test "$NS_TRACE_MALLOC"; then
6351 # Please, Mr. Linker Man, don't take away our symbol names
6352 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6354 AC_DEFINE(NS_TRACE_MALLOC)
6356 AC_SUBST(NS_TRACE_MALLOC)
6358 dnl ========================================================
6359 dnl = Enable jemalloc
6360 dnl ========================================================
6361 MOZ_ARG_ENABLE_BOOL(jemalloc,
6362 [ --enable-jemalloc Replace memory allocator with jemalloc],
6366 if test "$NS_TRACE_MALLOC"; then
6370 if test "$MOZ_MEMORY"; then
6372 dnl Don't try to run compiler tests on Windows
6373 if test "$OS_ARCH" = "WINNT"; then
6374 if test -z "$HAVE_64BIT_OS"; then
6375 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6377 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6380 AC_CHECK_SIZEOF([int *], [4])
6381 case "${ac_cv_sizeof_int_p}" in
6383 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6386 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6389 AC_MSG_ERROR([Unexpected pointer size])
6394 AC_DEFINE(MOZ_MEMORY)
6395 if test "x$MOZ_DEBUG" = "x1"; then
6396 AC_DEFINE(MOZ_MEMORY_DEBUG)
6398 dnl The generic feature tests that determine how to compute ncpus are long and
6399 dnl complicated. Therefore, simply define special cpp variables for the
6400 dnl platforms we have special knowledge of.
6401 case "${target_os}" in
6403 AC_DEFINE(MOZ_MEMORY_DARWIN)
6406 AC_DEFINE(MOZ_MEMORY_BSD)
6409 AC_DEFINE(MOZ_MEMORY_LINUX)
6412 AC_DEFINE(MOZ_MEMORY_BSD)
6415 AC_DEFINE(MOZ_MEMORY_SOLARIS)
6417 msvc*|mks*|cygwin*|mingw*)
6418 AC_DEFINE(MOZ_MEMORY_WINDOWS)
6419 dnl XXX: should test for vc8sp1 here, otherwise patching the crt src
6420 dnl will fail miserably
6421 if test "$_CC_SUITE" -lt "8"; then
6422 AC_MSG_ERROR([Building jemalloc requires Visual C++ 2005 or better])
6424 if test -z "$WIN32_CRT_SRC_DIR" -a -z "$WIN32_CUSTOM_CRT_DIR"; then
6425 if test -z "$VCINSTALLDIR" -o ! -d "$VCINSTALLDIR"; then
6426 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.])
6428 WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src"
6431 if test -z "$WIN32_CRT_SRC_DIR"; then
6433 WIN32_CUSTOM_CRT_DIR=`cd "$WIN32_CUSTOM_CRT_DIR" && pwd`
6434 _WIN_UNIX_CRT_PATH="$WIN32_CUSTOM_CRT_DIR"
6436 # CRT source directory
6437 WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd`
6438 _CRT_BASE_DIR=`basename "$WIN32_CRT_SRC_DIR"`
6439 _WIN_UNIX_CRT_PATH="$_objdir/memory/jemalloc/$_CRT_BASE_DIR/build/intel"
6441 dnl need win32 paths in LIB, hence this python abuse. extra brackets
6443 _WIN_CRT_PATH=[`$PYTHON -c 'import sys, os.path; print os.path.normpath(sys.argv[1])' "$_WIN_UNIX_CRT_PATH"`]
6444 MOZ_LIB="$_WIN_CRT_PATH;$LIB"
6445 dnl Needs to be in PATH too, since our tools will wind up linked against it.
6446 dnl This needs to be unix style.
6447 MOZ_PATH="$PATH:$_WIN_UNIX_CRT_PATH"
6448 dnl Statically link the C++ stdlib. We only use this for Breakpad anyway.
6449 AC_DEFINE(_STATIC_CPPLIB)
6450 dnl Don't generate a manifest, since we're linking to a custom CRT.
6451 LDFLAGS="$LDFLAGS -MANIFEST:NO"
6452 dnl Also pass this to NSPR/NSS
6453 DLLFLAGS="$DLLFLAGS -MANIFEST:NO"
6457 AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
6461 AC_ARG_WITH([valgrind],
6462 [ --with-valgrind Enable valgrind integration hooks],
6463 [enable_valgrind="yes"], [enable_valgrind="no"])
6464 AC_CHECK_HEADER([valgrind/valgrind.h], [], [enable_valgrind="no"])
6465 if test "x$enable_valgrind" = "xyes" ; then
6466 AC_DEFINE(MOZ_VALGRIND)
6469 AC_SUBST(MOZ_MEMORY)
6470 AC_SUBST(WIN32_CRT_SRC_DIR)
6471 AC_SUBST(WIN32_CUSTOM_CRT_DIR)
6474 dnl Need to set this for make because NSS doesn't have configure
6477 dnl ========================================================
6478 dnl = Use malloc wrapper lib
6479 dnl ========================================================
6480 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
6481 [ --enable-wrap-malloc Wrap malloc calls (gnu linker only)],
6485 if test -n "$_WRAP_MALLOC"; then
6486 if test "$GNU_CC"; then
6487 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"
6488 MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) -o $@'
6492 dnl ========================================================
6493 dnl = Location of malloc wrapper lib
6494 dnl ========================================================
6495 MOZ_ARG_WITH_STRING(wrap-malloc,
6496 [ --with-wrap-malloc=DIR Location of malloc wrapper library],
6497 WRAP_MALLOC_LIB=$withval)
6499 dnl ========================================================
6500 dnl = Use Electric Fence
6501 dnl ========================================================
6502 MOZ_ARG_ENABLE_BOOL(efence,
6503 [ --enable-efence Link with Electric Fence],
6506 if test -n "$_ENABLE_EFENCE"; then
6507 AC_CHECK_LIB(efence,malloc)
6510 dnl ========================================================
6512 dnl ========================================================
6513 MOZ_ARG_ENABLE_BOOL(jprof,
6514 [ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof)],
6517 if test -n "$MOZ_JPROF"; then
6518 AC_DEFINE(MOZ_JPROF)
6521 dnl ========================================================
6523 dnl ========================================================
6524 MOZ_ARG_ENABLE_BOOL(shark,
6525 [ --enable-shark Enable shark remote profiling (needs CHUD framework)],
6528 if test -n "$MOZ_SHARK"; then
6529 AC_DEFINE(MOZ_SHARK)
6532 dnl ========================================================
6534 dnl ========================================================
6535 MOZ_ARG_ENABLE_BOOL(callgrind,
6536 [ --enable-callgrind Enable callgrind profiling],
6539 if test -n "$MOZ_CALLGRIND"; then
6540 AC_DEFINE(MOZ_CALLGRIND)
6543 dnl ========================================================
6545 dnl ========================================================
6546 MOZ_ARG_ENABLE_BOOL(vtune,
6547 [ --enable-vtune Enable vtune profiling],
6550 if test -n "$MOZ_VTUNE"; then
6551 AC_DEFINE(MOZ_VTUNE)
6554 dnl ========================================================
6555 dnl Zealous JavaScript GC
6556 dnl ========================================================
6557 MOZ_ARG_ENABLE_BOOL(gczeal,
6558 [ --enable-gczeal Enable zealous JavaScript GCing],
6561 if test -n "$JS_GC_ZEAL"; then
6562 AC_DEFINE(JS_GC_ZEAL)
6565 dnl ========================================================
6566 dnl = Enable static checking using gcc-dehydra
6567 dnl ========================================================
6569 MOZ_ARG_WITH_STRING(static-checking,
6570 [ --with-static-checking=path/to/gcc_dehydra.so
6571 Enable static checking of code using GCC-dehydra],
6572 DEHYDRA_PATH=$withval,
6575 if test -n "$DEHYDRA_PATH"; then
6576 if ! test -f "$DEHYDRA_PATH"; then
6577 AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
6579 AC_DEFINE(NS_STATIC_CHECKING)
6581 AC_SUBST(DEHYDRA_PATH)
6583 dnl ========================================================
6584 dnl = Enable stripping of libs & executables
6585 dnl ========================================================
6586 MOZ_ARG_ENABLE_BOOL(strip,
6587 [ --enable-strip Enable stripping of libs & executables ],
6591 dnl ========================================================
6592 dnl = Enable stripping of libs & executables when packaging
6593 dnl ========================================================
6594 MOZ_ARG_ENABLE_BOOL(install-strip,
6595 [ --enable-install-strip Enable stripping of libs & executables when packaging ],
6599 dnl ========================================================
6600 dnl = --enable-elf-dynstr-gc
6601 dnl ========================================================
6602 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
6603 [ --enable-elf-dynstr-gc Enable elf dynstr garbage collector (opt builds only)],
6604 USE_ELF_DYNSTR_GC=1,
6605 USE_ELF_DYNSTR_GC= )
6607 dnl ========================================================
6608 dnl = --enable-old-abi-compat-wrappers
6609 dnl ========================================================
6610 dnl on x86 linux, the current builds of some popular plugins (notably
6611 dnl flashplayer and real) expect a few builtin symbols from libgcc
6612 dnl which were available in some older versions of gcc. However,
6613 dnl they're _NOT_ available in newer versions of gcc (eg 3.1), so if
6614 dnl we want those plugin to work with a gcc-3.1 built binary, we need
6615 dnl to provide these symbols. MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS defaults
6616 dnl to true on x86 linux, and false everywhere else.
6619 MOZ_ARG_ENABLE_BOOL(old-abi-compat-wrappers,
6620 [ --enable-old-abi-compat-wrappers
6621 Support old GCC ABI symbols to ease the pain
6622 of the linux compiler change],
6623 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1,
6624 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS= )
6625 if test "$COMPILE_ENVIRONMENT"; then
6626 if test "$MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS"; then
6629 AC_CHECK_FUNCS(__builtin_vec_new __builtin_vec_delete __builtin_new __builtin_delete __pure_virtual)
6631 AC_DEFINE(MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS)
6633 fi # COMPILE_ENVIRONMENT
6635 dnl ========================================================
6637 dnl = Profiling and Instrumenting
6639 dnl ========================================================
6640 MOZ_ARG_HEADER(Profiling and Instrumenting)
6642 dnl ========================================================
6643 dnl = Enable timeline service, which provides lightweight
6644 dnl = instrumentation of mozilla for performance measurement.
6645 dnl = Timeline is off by default.
6646 dnl ========================================================
6647 MOZ_ARG_ENABLE_BOOL(timeline,
6648 [ --enable-timeline Enable timeline services ],
6651 if test -n "$MOZ_TIMELINE"; then
6652 AC_DEFINE(MOZ_TIMELINE)
6655 dnl ========================================================
6656 dnl Turn on reflow counting
6657 dnl ========================================================
6658 MOZ_ARG_ENABLE_BOOL(reflow-perf,
6659 [ --enable-reflow-perf Enable reflow performance tracing],
6662 if test -n "$MOZ_REFLOW_PREF"; then
6663 AC_DEFINE(MOZ_REFLOW_PREF)
6665 AC_SUBST(MOZ_REFLOW_PERF)
6667 dnl ========================================================
6668 dnl Enable performance metrics.
6669 dnl ========================================================
6670 MOZ_ARG_ENABLE_BOOL(perf-metrics,
6671 [ --enable-perf-metrics Enable performance metrics],
6674 if test -n "$MOZ_PERF_METRICS"; then
6675 AC_DEFINE(MOZ_PERF_METRICS)
6678 dnl ========================================================
6679 dnl Enable code size metrics.
6680 dnl ========================================================
6681 MOZ_ARG_ENABLE_BOOL(codesighs,
6682 [ --enable-codesighs Enable code size analysis tools],
6683 _ENABLE_CODESIGHS=1,
6684 _ENABLE_CODESIGHS= )
6685 if test -n "$_ENABLE_CODESIGHS"; then
6686 if test -d $srcdir/tools/codesighs; then
6689 AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
6693 dnl ========================================================
6694 dnl = Add support for Eazel profiler
6695 dnl ========================================================
6696 MOZ_ARG_ENABLE_BOOL(eazel-profiler-support,
6697 [ --enable-eazel-profiler-support
6698 Enable Corel/Eazel profiler support],
6699 ENABLE_EAZEL_PROFILER=1,
6700 ENABLE_EAZEL_PROFILER= )
6701 if test -n "$ENABLE_EAZEL_PROFILER"; then
6702 AC_DEFINE(ENABLE_EAZEL_PROFILER)
6704 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6705 EAZEL_PROFILER_CFLAGS="-g -O -gdwarf-2 -finstrument-functions -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
6706 EAZEL_PROFILER_LIBS="-lprofiler -lpthread"
6709 MOZ_ARG_ENABLE_STRING(profile-modules,
6710 [ --enable-profile-modules
6711 Enable/disable profiling for specific modules],
6712 [ MOZ_PROFILE_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6714 MOZ_ARG_ENABLE_BOOL(insure,
6715 [ --enable-insure Enable insure++ instrumentation (linux only)],
6718 if test -n "$_ENABLE_INSURE"; then
6722 MOZ_INSURE_EXCLUDE_DIRS="config"
6725 MOZ_ARG_WITH_STRING(insure-dirs,
6726 [ --with-insure-dirs=DIRS
6727 Dirs to instrument with insure ],
6728 MOZ_INSURE_DIRS=$withval )
6730 MOZ_ARG_WITH_STRING(insure-exclude-dirs,
6731 [ --with-insure-exclude-dirs=DIRS
6732 Dirs to not instrument with insure ],
6733 MOZ_INSURE_EXCLUDE_DIRS="config $withval" )
6735 dnl ========================================================
6736 dnl = Support for Quantify (Windows)
6737 dnl ========================================================
6738 MOZ_ARG_ENABLE_BOOL(quantify,
6739 [ --enable-quantify Enable Quantify support (Windows only) ],
6743 dnl ========================================================
6744 dnl = Support for demangling undefined symbols
6745 dnl ========================================================
6746 if test -z "$SKIP_LIBRARY_CHECKS"; then
6749 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
6753 # Demangle only for debug or trace-malloc builds
6754 MOZ_DEMANGLE_SYMBOLS=
6755 if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
6756 MOZ_DEMANGLE_SYMBOLS=1
6757 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
6759 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
6761 dnl ========================================================
6762 dnl = Support for gcc stack unwinding (from gcc 3.3)
6763 dnl ========================================================
6764 if test "$HAVE_GCC3_ABI" && test -z "$SKIP_LIBRARY_CHECKS"; then
6765 AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
6768 dnl ========================================================
6772 dnl ========================================================
6773 MOZ_ARG_HEADER(Misc. Options)
6775 dnl ========================================================
6776 dnl update xterm title
6777 dnl ========================================================
6778 MOZ_ARG_ENABLE_BOOL(xterm-updates,
6779 [ --enable-xterm-updates Update XTERM titles with current command.],
6783 dnl =========================================================
6785 dnl =========================================================
6786 MOZ_ARG_ENABLE_STRING([chrome-format],
6787 [ --enable-chrome-format=jar|flat|both|symlink
6788 Select FORMAT of chrome files (default=jar)],
6789 MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
6791 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
6792 MOZ_CHROME_FILE_FORMAT=jar
6795 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
6796 test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
6797 test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
6798 test "$MOZ_CHROME_FILE_FORMAT" != "both"; then
6799 AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, or symlink])
6802 dnl ========================================================
6803 dnl = Define default location for MOZILLA_FIVE_HOME
6804 dnl ========================================================
6805 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
6806 [ --with-default-mozilla-five-home
6807 Set the default value for MOZILLA_FIVE_HOME],
6808 [ val=`echo $withval`
6809 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
6811 dnl ========================================================
6812 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
6813 dnl ========================================================
6814 MOZ_ARG_WITH_STRING(user-appdir,
6815 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
6816 [ val=`echo $withval`
6817 if echo "$val" | grep "\/" >/dev/null; then
6818 AC_MSG_ERROR("Homedir must be single relative path.")
6823 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
6825 dnl ========================================================
6826 dnl = Doxygen configuration
6827 dnl ========================================================
6828 dnl Use commas to specify multiple dirs to this arg
6829 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
6830 MOZ_ARG_WITH_STRING(doc-input-dirs,
6831 [ --with-doc-input-dirs=DIRS
6832 Header/idl dirs to create docs from],
6833 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6834 AC_SUBST(MOZ_DOC_INPUT_DIRS)
6836 dnl Use commas to specify multiple dirs to this arg
6837 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
6838 MOZ_ARG_WITH_STRING(doc-include-dirs,
6839 [ --with-doc-include-dirs=DIRS
6840 Include dirs to preprocess doc headers],
6841 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6842 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
6844 MOZ_DOC_OUTPUT_DIR='./dist/docs'
6845 MOZ_ARG_WITH_STRING(doc-output-dir,
6846 [ --with-doc-output-dir=DIR
6847 Dir to generate docs into],
6848 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
6849 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
6851 if test -z "$SKIP_COMPILER_CHECKS"; then
6852 dnl ========================================================
6854 dnl = Compiler Options
6856 dnl ========================================================
6857 MOZ_ARG_HEADER(Compiler Options)
6859 dnl ========================================================
6860 dnl Check for gcc -pipe support
6861 dnl ========================================================
6862 AC_MSG_CHECKING([for gcc -pipe support])
6863 if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
6864 echo '#include <stdio.h>' > dummy-hello.c
6865 echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
6866 ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
6867 cat dummy-hello.s | ${AS_BIN} -o dummy-hello.S - 2>&5
6868 if test $? = 0; then
6873 if test "$_res_as_stdin" = "yes"; then
6874 _SAVE_CFLAGS=$CFLAGS
6875 CFLAGS="$CFLAGS -pipe"
6876 AC_TRY_COMPILE( [ #include <stdio.h> ],
6877 [printf("Hello World\n");],
6878 [_res_gcc_pipe="yes"],
6879 [_res_gcc_pipe="no"] )
6880 CFLAGS=$_SAVE_CFLAGS
6882 if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then
6884 CFLAGS="$CFLAGS -pipe"
6885 CXXFLAGS="$CXXFLAGS -pipe"
6889 rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
6890 AC_MSG_RESULT([$_res])
6895 dnl pass -Wno-long-long to the compiler
6896 MOZ_ARG_ENABLE_BOOL(long-long-warning,
6897 [ --enable-long-long-warning
6898 Warn about use of non-ANSI long long type],
6899 _IGNORE_LONG_LONG_WARNINGS=,
6900 _IGNORE_LONG_LONG_WARNINGS=1)
6902 if test "$_IGNORE_LONG_LONG_WARNINGS"; then
6903 _SAVE_CFLAGS="$CFLAGS"
6904 CFLAGS="$CFLAGS ${_COMPILER_PREFIX}-Wno-long-long"
6905 AC_MSG_CHECKING([whether compiler supports -Wno-long-long])
6906 AC_TRY_COMPILE([], [return(0);],
6907 [ _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6908 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6909 result="yes" ], result="no")
6910 AC_MSG_RESULT([$result])
6911 CFLAGS="$_SAVE_CFLAGS"
6914 dnl ========================================================
6915 dnl Profile guided optimization
6916 dnl ========================================================
6917 dnl Test for profiling options
6918 dnl Under gcc 3.3, use -fprofile-arcs/-fbranch-probabilities
6919 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
6921 dnl Provide a switch to disable PGO even when called via profiledbuild.
6922 MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
6923 [ --disable-profile-guided-optimization
6924 Don't build with PGO even if called via make profiledbuild],
6925 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
6926 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
6928 AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
6930 _SAVE_CFLAGS="$CFLAGS"
6931 CFLAGS="$CFLAGS -fprofile-generate"
6933 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
6934 AC_TRY_COMPILE([], [return 0;],
6935 [ PROFILE_GEN_CFLAGS="-fprofile-generate"
6936 result="yes" ], result="no")
6937 AC_MSG_RESULT([$result])
6939 if test $result = "yes"; then
6940 PROFILE_GEN_LDFLAGS="-fprofile-generate"
6941 PROFILE_USE_CFLAGS="-fprofile-use"
6942 PROFILE_USE_LDFLAGS="-fprofile-use"
6944 CFLAGS="$_SAVE_CFLAGS -fprofile-arcs"
6945 AC_MSG_CHECKING([whether C compiler supports -fprofile-arcs])
6946 AC_TRY_COMPILE([], [return 0;],
6947 [ PROFILE_GEN_CFLAGS="-fprofile-arcs"
6948 result="yes" ], result="no")
6949 AC_MSG_RESULT([$result])
6950 if test $result = "yes"; then
6951 PROFILE_USE_CFLAGS="-fbranch-probabilities"
6953 # don't really care, this is an old GCC
6954 PROFILE_GEN_LDFLAGS=
6955 PROFILE_USE_LDFLAGS=
6958 CFLAGS="$_SAVE_CFLAGS"
6960 if test -n "$INTEL_CC"; then
6961 PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
6962 PROFILE_GEN_LDFLAGS=
6963 PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
6964 PROFILE_USE_LDFLAGS=
6967 dnl Sun Studio on Solaris
6968 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
6969 PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
6970 PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
6971 if test "$CPU_ARCH" != "sparc"; then
6972 PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
6973 PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
6975 PROFILE_USE_CFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
6976 PROFILE_USE_LDFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
6980 AC_SUBST(PROFILE_GEN_CFLAGS)
6981 AC_SUBST(PROFILE_GEN_LDFLAGS)
6982 AC_SUBST(PROFILE_USE_CFLAGS)
6983 AC_SUBST(PROFILE_USE_LDFLAGS)
6987 dnl ========================================================
6988 dnl Test for -pedantic bustage
6989 dnl ========================================================
6990 MOZ_ARG_DISABLE_BOOL(pedantic,
6991 [ --disable-pedantic Issue all warnings demanded by strict ANSI C ],
6993 if test "$_PEDANTIC"; then
6994 _SAVE_CXXFLAGS=$CXXFLAGS
6995 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
6996 AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
6997 AC_TRY_COMPILE([$configure_static_assert_macros],
6998 [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
6999 result="no", result="yes" )
7000 AC_MSG_RESULT([$result])
7001 CXXFLAGS="$_SAVE_CXXFLAGS"
7005 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic"
7006 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
7009 AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic. Reconfigure using --disable-pedantic. ])
7014 dnl ========================================================
7015 dnl Test for correct temporary object destruction order
7016 dnl ========================================================
7017 dnl We want to make sure the compiler follows the C++ spec here as
7018 dnl xpcom and the string classes depend on it (bug 235381).
7019 AC_MSG_CHECKING([for correct temporary object destruction order])
7020 AC_TRY_RUN([ class A {
7021 public: A(int& x) : mValue(x) {}
7023 operator char**() { return 0; }
7024 private: int& mValue;
7026 void func(char **arg) {}
7037 result="yes", result="no", result="maybe")
7038 AC_MSG_RESULT([$result])
7040 if test "$result" = "no"; then
7041 AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
7044 dnl ========================================================
7045 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
7046 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
7047 dnl raw pointers in nsCOMPtr.h. (VC++ has the same bug.)
7048 dnl ========================================================
7049 _SAVE_CXXFLAGS=$CXXFLAGS
7050 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
7051 AC_CACHE_CHECK(for correct overload resolution with const and templates,
7052 ac_nscap_nonconst_opeq_bug,
7061 template <class T, class U>
7062 int operator==(const Pointer<T>& rhs, U* lhs)
7064 return rhs.myPtr == lhs;
7067 template <class T, class U>
7068 int operator==(const Pointer<T>& rhs, const U* lhs)
7070 return rhs.myPtr == lhs;
7078 ac_nscap_nonconst_opeq_bug="no",
7079 ac_nscap_nonconst_opeq_bug="yes")])
7080 CXXFLAGS="$_SAVE_CXXFLAGS"
7082 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
7083 AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
7085 fi # SKIP_COMPILER_CHECKS
7087 dnl ========================================================
7089 dnl Should be smarter and check that the compiler does indeed have rtti
7090 dnl ========================================================
7091 MOZ_ARG_ENABLE_BOOL(cpp-rtti,
7092 [ --enable-cpp-rtti Enable C++ RTTI ],
7093 [ _MOZ_USE_RTTI=1 ],
7096 if test "$_MOZ_USE_RTTI"; then
7097 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
7099 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
7102 AC_SUBST(_MOZ_RTTI_FLAGS_ON)
7104 dnl ========================================================
7105 dnl C++ exceptions (g++/egcs only - for now)
7106 dnl Should be smarter and check that the compiler does indeed have exceptions
7107 dnl ========================================================
7108 MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
7109 [ --enable-cpp-exceptions Enable C++ exceptions ],
7110 [ _MOZ_CPP_EXCEPTIONS=1 ],
7111 [ _MOZ_CPP_EXCEPTIONS= ])
7113 if test "$_MOZ_CPP_EXCEPTIONS"; then
7114 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_ON
7116 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_OFF
7119 # Irix & OSF native compilers do not like exception declarations
7120 # when exceptions are disabled
7121 if test -n "$MIPSPRO_CXX" -o -n "$COMPAQ_CXX" -o -n "$VACPP"; then
7122 AC_DEFINE(CPP_THROW_NEW, [])
7124 AC_DEFINE(CPP_THROW_NEW, [throw()])
7128 dnl ========================================================
7130 dnl = Build depencency options
7132 dnl ========================================================
7133 MOZ_ARG_HEADER(Build dependencies)
7135 dnl ========================================================
7136 dnl = Do not auto generate dependency info
7137 dnl ========================================================
7139 MOZ_ARG_DISABLE_BOOL(auto-deps,
7140 [ --disable-auto-deps Do not automatically generate dependency info],
7144 if test -n "$MOZ_AUTO_DEPS"; then
7145 dnl ========================================================
7146 dnl = Use mkdepend instead of $CC -MD for dependency generation
7147 dnl ========================================================
7149 MOZ_ARG_DISABLE_BOOL(md,
7150 [ --disable-md Do not use compiler-based dependencies ],
7153 [dnl Default is to turn on -MD if using GNU-compatible compilers
7154 if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
7157 dnl Default is to use -xM if using Sun Studio on Solaris
7158 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
7161 if test "$_cpp_md_flag"; then
7163 if test "$OS_ARCH" = "OpenVMS"; then
7164 _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(basename $(@F)).pp))'
7166 _DEPEND_CFLAGS='$(filter-out %/.pp,-Wp,-MD,$(MDDEPDIR)/$(basename $(@F)).pp)'
7168 dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7169 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
7174 _USE_CPP_INCLUDE_FLAG=
7175 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7176 _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7180 AC_SUBST(MOZ_AUTO_DEPS)
7181 AC_SUBST(COMPILER_DEPEND)
7185 dnl ========================================================
7187 dnl = Static Build Options
7189 dnl ========================================================
7190 MOZ_ARG_HEADER(Static build options)
7192 MOZ_ARG_ENABLE_BOOL(static,
7193 [ --enable-static Enable building of internal static libs],
7194 BUILD_STATIC_LIBS=1,
7197 dnl Disable libxul in debug builds, but not for xulrunner.
7198 if test -n "$MOZ_DEBUG" -a "$MOZ_BUILD_APP" != "xulrunner"; then
7202 MOZ_ARG_ENABLE_BOOL(libxul,
7203 [ --enable-libxul Enable building of libxul],
7204 MOZ_ENABLE_LIBXUL=1,
7207 if test -n "$MOZ_STATIC_BUILD_UNSUPPORTED" -a -n "$BUILD_STATIC_LIBS"; then
7208 AC_MSG_ERROR([--enable-static is not supported for building $MOZ_APP_NAME. You probably want --enable-libxul.])
7211 if test -n "$MOZ_ENABLE_LIBXUL" -a -n "$BUILD_STATIC_LIBS"; then
7212 AC_MSG_ERROR([--enable-libxul is not compatible with --enable-static])
7215 if test -n "$MOZ_ENABLE_LIBXUL" -a -z "$MOZ_XUL_APP"; then
7216 AC_MSG_ERROR([--enable-libxul is only compatible with toolkit XUL applications.])
7219 if test -n "$MOZ_ENABLE_LIBXUL"; then
7220 XPCOM_LIBS="$LIBXUL_LIBS"
7221 AC_DEFINE(MOZ_ENABLE_LIBXUL)
7223 if test -n "$BUILD_STATIC_LIBS"; then
7224 AC_DEFINE(MOZ_STATIC_BUILD)
7226 XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS"
7229 dnl ========================================================
7231 dnl = Standalone module options
7233 dnl ========================================================
7234 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7236 dnl Check for GLib and libIDL.
7237 dnl ========================================================
7238 case "$target_os" in
7239 msvc*|mks*|cygwin*|mingw*|wince*)
7240 SKIP_IDL_CHECK="yes"
7247 if test -z "$COMPILE_ENVIRONMENT"; then
7248 SKIP_IDL_CHECK="yes"
7251 dnl = Allow users to disable libIDL checking for standalone modules
7252 MOZ_ARG_WITHOUT_BOOL(libIDL,
7253 [ --without-libIDL Skip check for libIDL (standalone modules only)],
7254 SKIP_IDL_CHECK="yes")
7256 if test "$SKIP_IDL_CHECK" = "no"
7259 if test "$MACOS_SDK_DIR"; then
7260 dnl xpidl, and therefore libIDL, is only needed on the build host.
7261 dnl Don't build it against the SDK, as that causes problems.
7262 _MACSAVE_CFLAGS="$CFLAGS"
7263 _MACSAVE_LIBS="$LIBS"
7264 _MACSAVE_LDFLAGS="$LDFLAGS"
7265 _MACSAVE_NEXT_ROOT="$NEXT_ROOT"
7267 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"`
7268 LIBS=`echo $LIBS|sed -e "s?-L${MACOS_SDK_DIR}/usr/lib[^ ]*??g"`
7269 LDFLAGS=`echo $LDFLAGS|sed -e "s?-Wl,-syslibroot,${MACOS_SDK_DIR}??g"`
7274 if test "$MOZ_ENABLE_GTK2"; then
7275 PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0 glib-2.0 gobject-2.0, _LIBIDL_FOUND=1,_LIBIDL_FOUND=)
7277 dnl if no gtk/libIDL1 or gtk2/libIDL2 combination was found, fall back
7278 dnl to either libIDL1 or libIDL2.
7279 if test -z "$_LIBIDL_FOUND"; then
7280 AM_PATH_LIBIDL($LIBIDL_VERSION,_LIBIDL_FOUND=1)
7281 if test -z "$_LIBIDL_FOUND"; then
7282 PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0,_LIBIDL_FOUND=1)
7286 dnl If we don't have a libIDL config program & not cross-compiling,
7287 dnl look for orbit-config instead.
7289 if test -z "$_LIBIDL_FOUND" && test -z "$CROSS_COMPILE"; then
7290 AC_PATH_PROGS(ORBIT_CONFIG, $ORBIT_CONFIG orbit-config)
7291 if test -n "$ORBIT_CONFIG"; then
7292 AC_MSG_CHECKING([for ORBit libIDL usability])
7293 _ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags`
7294 _ORBIT_LIBS=`${ORBIT_CONFIG} client --libs`
7295 _ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}`
7296 _ORBIT_LIB_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-L/); } }' -- ${_ORBIT_LIBS}`
7297 LIBIDL_CFLAGS="$_ORBIT_INC_PATH"
7298 LIBIDL_LIBS="$_ORBIT_LIB_PATH -lIDL -lglib"
7300 _SAVE_CFLAGS="$CFLAGS"
7302 CFLAGS="$LIBIDL_CFLAGS $CFLAGS"
7303 LIBS="$LIBIDL_LIBS $LIBS"
7306 #include <libIDL/IDL.h>
7309 s=strdup(IDL_get_libver_string());
7322 AC_MSG_RESULT($result)
7323 CFLAGS="$_SAVE_CFLAGS"
7327 if test -z "$_LIBIDL_FOUND"; then
7328 AC_MSG_ERROR([libIDL not found.
7329 libIDL $LIBIDL_VERSION or higher is required.])
7331 if test "$MACOS_SDK_DIR"; then
7332 CFLAGS="$_MACSAVE_CFLAGS"
7333 LIBS="$_MACSAVE_LIBS"
7334 LDFLAGS="$_MACSAVE_LDFLAGS"
7335 if test -n "$_MACSAVE_NEXT_ROOT" ; then
7336 export NEXT_ROOT="$_MACSAVE_NEXT_ROOT"
7341 if test -n "$CROSS_COMPILE"; then
7342 if test -z "$HOST_LIBIDL_CONFIG"; then
7343 HOST_LIBIDL_CONFIG="$LIBIDL_CONFIG"
7345 if test -n "$HOST_LIBIDL_CONFIG" && test "$HOST_LIBIDL_CONFIG" != "no"; then
7346 HOST_LIBIDL_CFLAGS=`${HOST_LIBIDL_CONFIG} --cflags`
7347 HOST_LIBIDL_LIBS=`${HOST_LIBIDL_CONFIG} --libs`
7349 HOST_LIBIDL_CFLAGS="$LIBIDL_CFLAGS"
7350 HOST_LIBIDL_LIBS="$LIBIDL_LIBS"
7354 if test -z "$SKIP_PATH_CHECKS"; then
7355 if test -z "${GLIB_CFLAGS}" || test -z "${GLIB_LIBS}" ; then
7356 if test "$MOZ_ENABLE_GTK2" || test "$USE_ELF_DYNSTR_GC" ; then
7357 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
7359 AM_PATH_GLIB(${GLIB_VERSION})
7364 if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then
7365 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
7368 AC_SUBST(LIBIDL_CFLAGS)
7369 AC_SUBST(LIBIDL_LIBS)
7370 AC_SUBST(STATIC_LIBIDL)
7371 AC_SUBST(GLIB_CFLAGS)
7373 AC_SUBST(GLIB_GMODULE_LIBS)
7374 AC_SUBST(HOST_LIBIDL_CONFIG)
7375 AC_SUBST(HOST_LIBIDL_CFLAGS)
7376 AC_SUBST(HOST_LIBIDL_LIBS)
7378 dnl ========================================================
7379 dnl Check for libart
7380 dnl ========================================================
7381 if test "$MOZ_SVG_RENDERER_LIBART"; then
7382 if test ! -f $topsrcdir/other-licenses/libart_lgpl/Makefile.in; then
7383 AC_MSG_ERROR([You must check out the mozilla version of libart. Use
7384 mk_add_options MOZ_CO_MODULE=mozilla/other-licenses/libart_lgpl])
7387 dnl libart's configure hasn't been run yet, but we know what the
7388 dnl answer should be anyway
7389 MOZ_LIBART_CFLAGS='-I${DIST}/include/libart_lgpl'
7390 case "$target_os" in
7391 msvc*|mks*|cygwin*|mingw*|wince*)
7392 MOZ_LIBART_LIBS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)moz_art_lgpl.$(IMPORT_LIB_SUFFIX)'
7395 MOZ_LIBART_LIBS='-lmoz_art -lm'
7398 MOZ_LIBART_LIBS='-lmoz_art_lgpl -lroot -lbe'
7401 MOZ_LIBART_LIBS='-lmoz_art_lgpl -lm'
7407 AC_SUBST(MOZ_LIBART_CFLAGS)
7408 AC_SUBST(MOZ_LIBART_LIBS)
7410 dnl ========================================================
7412 dnl ========================================================
7413 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
7416 MOZ_ARG_ENABLE_BOOL(system-cairo,
7417 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
7421 # Check for headers defining standard int types.
7422 AC_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
7424 if test "$MOZ_TREE_CAIRO"; then
7425 AC_DEFINE(MOZ_TREE_CAIRO)
7427 # For now we assume that we will have a uint64_t available through
7428 # one of the above headers or mozstdint.h.
7429 AC_DEFINE(HAVE_UINT64_T)
7431 # Define macros for cairo-features.h
7432 if test "$MOZ_X11"; then
7433 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
7434 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
7435 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
7436 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7437 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7438 MOZ_ENABLE_CAIRO_FT=1
7439 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
7441 if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
7442 QPAINTER_SURFACE_FEATURE="#define CAIRO_HAS_QPAINTER_SURFACE 1"
7444 if test "$MOZ_WIDGET_TOOLKIT" = "mac" -o "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
7445 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
7446 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
7447 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
7449 if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
7450 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
7451 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
7452 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7454 if test "$MOZ_WIDGET_TOOLKIT" = "os2"; then
7455 OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
7456 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7457 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7458 MOZ_ENABLE_CAIRO_FT=1
7459 CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
7460 CAIRO_FT_LIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
7462 if test "$MOZ_WIDGET_TOOLKIT" = "beos"; then
7463 PKG_CHECK_MODULES(CAIRO_FT, fontconfig freetype2)
7464 BEOS_SURFACE_FEATURE="#define CAIRO_HAS_BEOS_SURFACE 1"
7465 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7466 MOZ_ENABLE_CAIRO_FT=1
7468 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
7469 AC_SUBST(CAIRO_FT_CFLAGS)
7471 if test "$MOZ_DEBUG"; then
7472 SANITY_CHECKING_FEATURE="#define CAIRO_DO_SANITY_CHECKING 1"
7474 SANITY_CHECKING_FEATURE="#undef CAIRO_DO_SANITY_CHECKING"
7477 PNG_FUNCTIONS_FEATURE="#define CAIRO_HAS_PNG_FUNCTIONS 1"
7479 AC_SUBST(PS_SURFACE_FEATURE)
7480 AC_SUBST(PDF_SURFACE_FEATURE)
7481 AC_SUBST(SVG_SURFACE_FEATURE)
7482 AC_SUBST(XLIB_SURFACE_FEATURE)
7483 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
7484 AC_SUBST(QUARTZ_SURFACE_FEATURE)
7485 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
7486 AC_SUBST(XCB_SURFACE_FEATURE)
7487 AC_SUBST(WIN32_SURFACE_FEATURE)
7488 AC_SUBST(OS2_SURFACE_FEATURE)
7489 AC_SUBST(BEOS_SURFACE_FEATURE)
7490 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
7491 AC_SUBST(FT_FONT_FEATURE)
7492 AC_SUBST(WIN32_FONT_FEATURE)
7493 AC_SUBST(QUARTZ_FONT_FEATURE)
7494 AC_SUBST(PNG_FUNCTIONS_FEATURE)
7495 AC_SUBST(QPAINTER_SURFACE_FEATURE)
7497 if test "$_WIN32_MSVC"; then
7498 MOZ_CAIRO_LIBS='$(DEPTH)/gfx/cairo/cairo/src/mozcairo.lib $(DEPTH)/gfx/cairo/libpixman/src/mozlibpixman.lib'
7500 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"
7502 if test "$MOZ_X11"; then
7503 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS -lXrender -lfreetype -lfontconfig"
7507 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
7508 mv -f $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig 2> /dev/null
7511 PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION freetype2 fontconfig)
7512 MOZ_CAIRO_CFLAGS=$CAIRO_CFLAGS
7513 MOZ_CAIRO_LIBS=$CAIRO_LIBS
7514 if test "$MOZ_X11"; then
7515 PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
7516 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
7517 MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
7521 AC_SUBST(MOZ_TREE_CAIRO)
7522 AC_SUBST(MOZ_CAIRO_CFLAGS)
7523 AC_SUBST(MOZ_CAIRO_LIBS)
7525 dnl ========================================================
7527 dnl ========================================================
7530 MOZ_ARG_ENABLE_BOOL(system-lcms,
7531 [ --enable-system-lcms Use system lcms (located with pkgconfig)],
7535 if test -z "$MOZ_NATIVE_LCMS"
7538 if test "$_WIN32_MSVC"; then
7539 if test -z "$BUILD_STATIC_LIBS" -a -z "$MOZ_ENABLE_LIBXUL"; then
7540 LCMS_CFLAGS=-DLCMS_DLL
7542 LCMS_LIBS='$(LIBXUL_DIST)/lib/mozlcms.lib'
7544 LCMS_LIBS='-L$(LIBXUL_DIST)/bin -lmozlcms'
7547 PKG_CHECK_MODULES(LCMS, lcms >= $LCMS_VERSION)
7550 AC_SUBST(MOZ_NATIVE_LCMS)
7551 AC_SUBST(LCMS_CFLAGS)
7554 dnl ========================================================
7556 dnl ========================================================
7557 MOZ_ARG_DISABLE_BOOL(xul,
7558 [ --disable-xul Disable XUL],
7560 if test "$MOZ_XUL"; then
7563 dnl remove extensions that require XUL
7564 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
7569 dnl ========================================================
7570 dnl Two ways to enable Python support:
7571 dnl --enable-extensions=python # select all available.
7572 dnl (MOZ_PYTHON_EXTENSIONS contains the list of extensions)
7574 dnl --enable-extensions=python/xpcom,... # select individual ones
7576 dnl If either is used, we locate the Python to use.
7577 dnl ========================================================
7579 dnl If 'python' appears anywhere in the extensions list, go lookin'...
7580 if test `echo "$MOZ_EXTENSIONS" | grep -c python` -ne 0; then
7581 dnl Allow PYTHON to point to the Python interpreter to use
7582 dnl (note that it must be the python executable - which we
7583 dnl run to locate the relevant paths etc)
7584 dnl If not set, we use whatever Python we can find.
7586 dnl Ask Python what its version number is
7588 MOZ_PYTHON_VER=`$PYTHON -c "import sys;print '%d%d' % sys.version_info[0:2]"`
7589 MOZ_PYTHON_VER_DOTTED=`$PYTHON -c "import sys;print '%d.%d' % sys.version_info[0:2]"`
7591 dnl Ask for the Python "prefix" (ie, home/source dir)
7592 MOZ_PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
7593 dnl Setup the include and library directories.
7594 if test "$OS_ARCH" = "WINNT"; then
7595 MOZ_PYTHON_PREFIX=`$CYGPATH_W $MOZ_PYTHON_PREFIX | $CYGPATH_S`
7596 dnl Source trees have "include" and "PC" for .h, and "PCbuild" for .lib
7597 dnl Binary trees have "include" for .h, and "libs" for .lib
7598 dnl We add 'em both - along with quotes, to handle spaces.
7599 MOZ_PYTHON_DLL_SUFFIX=.pyd
7600 MOZ_PYTHON_INCLUDES="\"-I$MOZ_PYTHON_PREFIX/include\" \"-I$MOZ_PYTHON_PREFIX/PC\""
7601 MOZ_PYTHON_LIBS="\"/libpath:$MOZ_PYTHON_PREFIX/PCBuild\" \"/libpath:$MOZ_PYTHON_PREFIX/libs\""
7603 dnl Non-Windows include and libs
7604 MOZ_PYTHON_DLL_SUFFIX=$DLL_SUFFIX
7605 MOZ_PYTHON_INCLUDES="-I$MOZ_PYTHON_PREFIX/include/python$MOZ_PYTHON_VER_DOTTED"
7606 dnl Check for dynamic Python lib
7607 dnl - A static Python is no good - multiple dynamic libraries (xpcom
7608 dnl - core, xpcom loader, pydom etc) all need to share Python.
7609 dnl - Python 2.3's std --enable-shared configure option will
7610 dnl create a libpython2.3.so.1.0. We should first try this
7611 dnl dotted versioned .so file because this is the one that
7612 dnl the PyXPCOM build mechanics tries to link to.
7613 dnl XXX Should find a better way than hardcoding "1.0".
7614 dnl - Python developement tree dir layouts are NOT allowed here
7615 dnl because the PyXPCOM build just dies on it later anyway.
7616 dnl - Fixes to the above by Python/*nix knowledgable people welcome!
7617 if test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7618 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7619 elif test -f "$MOZ_PYTHON_PREFIX/lib64/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7620 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib64 -lpython$MOZ_PYTHON_VER_DOTTED"
7621 elif test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7622 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7623 elif test -f "$MOZ_PYTHON_PREFIX/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7624 dnl Don't Python development tree directory layout.
7625 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX -lpython$MOZ_PYTHON_VER_DOTTED"
7626 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.])
7627 elif test "$OS_ARCH" = "Darwin"; then
7628 dnl We do Darwin last, so if a custom non-framework build of
7629 dnl python is used on OSX, then it will be picked up first by
7630 dnl the logic above.
7631 MOZ_PYTHON_LIBS="-framework Python"
7633 AC_MSG_ERROR([Could not find build shared libraries for Python at $MOZ_PYTHON_PREFIX. This is required for PyXPCOM.])
7635 if test "$OS_ARCH" = "Linux"; then
7636 MOZ_PYTHON_LIBS="$MOZ_PYTHON_LIBS -lutil"
7639 dnl Handle "_d" on Windows
7640 if test "$OS_ARCH" = "WINNT" && test -n "$MOZ_DEBUG"; then
7641 MOZ_PYTHON_DEBUG_SUFFIX="_d"
7643 MOZ_PYTHON_DEBUG_SUFFIX=
7645 AC_MSG_RESULT(Building Python extensions using python-$MOZ_PYTHON_VER_DOTTED from $MOZ_PYTHON_PREFIX)
7648 dnl If the user asks for the 'python' extension, then we add
7649 dnl MOZ_PYTHON_EXTENSIONS to MOZ_EXTENSIONS - but with the leading 'python/'
7650 dnl Note the careful regex - it must match 'python' followed by anything
7651 dnl other than a '/', including the end-of-string.
7652 if test `echo "$MOZ_EXTENSIONS" | grep -c 'python\([[^/]]\|$\)'` -ne 0; then
7653 for pyext in $MOZ_PYTHON_EXTENSIONS; do
7654 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS python/$pyext`
7657 dnl Later we may allow MOZ_PYTHON_EXTENSIONS to be specified on the
7658 dnl command-line, but not yet
7659 AC_SUBST(MOZ_PYTHON_EXTENSIONS)
7660 AC_SUBST(MOZ_PYTHON)
7661 AC_SUBST(MOZ_PYTHON_PREFIX)
7662 AC_SUBST(MOZ_PYTHON_INCLUDES)
7663 AC_SUBST(MOZ_PYTHON_LIBS)
7664 AC_SUBST(MOZ_PYTHON_VER)
7665 AC_SUBST(MOZ_PYTHON_VER_DOTTED)
7666 AC_SUBST(MOZ_PYTHON_DEBUG_SUFFIX)
7667 AC_SUBST(MOZ_PYTHON_DLL_SUFFIX)
7669 dnl ========================================================
7670 dnl disable profile locking
7671 dnl do no use this in applications that can have more than
7672 dnl one process accessing the profile directory.
7673 dnl ========================================================
7674 MOZ_ARG_DISABLE_BOOL(profilelocking,
7675 [ --disable-profilelocking Disable profile locking],
7676 MOZ_PROFILELOCKING=,
7677 MOZ_PROFILELOCKING=1 )
7678 if test "$MOZ_PROFILELOCKING"; then
7679 AC_DEFINE(MOZ_PROFILELOCKING)
7682 dnl ========================================================
7683 dnl disable rdf services
7684 dnl ========================================================
7685 MOZ_ARG_DISABLE_BOOL(rdf,
7686 [ --disable-rdf Disable RDF],
7688 if test "$MOZ_RDF"; then
7694 dnl ========================================================
7695 dnl necko configuration options
7696 dnl ========================================================
7699 dnl option to disable various necko protocols
7701 MOZ_ARG_ENABLE_STRING(necko-protocols,
7702 [ --enable-necko-protocols[={http,ftp,default,all,none}]
7703 Enable/disable specific protocol handlers],
7704 [ for option in `echo $enableval | sed 's/,/ /g'`; do
7705 if test "$option" = "yes" || test "$option" = "all"; then
7706 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7707 elif test "$option" = "no" || test "$option" = "none"; then
7709 elif test "$option" = "default"; then
7710 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7711 elif test `echo "$option" | grep -c \^-` != 0; then
7712 option=`echo $option | sed 's/^-//'`
7713 NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
7715 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
7718 NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
7720 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
7721 AC_SUBST(NECKO_PROTOCOLS)
7722 for p in $NECKO_PROTOCOLS; do
7723 AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
7727 dnl option to disable necko's disk cache
7729 MOZ_ARG_DISABLE_BOOL(necko-disk-cache,
7730 [ --disable-necko-disk-cache
7731 Disable necko disk cache],
7734 AC_SUBST(NECKO_DISK_CACHE)
7735 if test "$NECKO_DISK_CACHE"; then
7736 AC_DEFINE(NECKO_DISK_CACHE)
7740 dnl option to minimize size of necko's i/o buffers
7742 MOZ_ARG_ENABLE_BOOL(necko-small-buffers,
7743 [ --enable-necko-small-buffers
7744 Minimize size of necko's i/o buffers],
7745 NECKO_SMALL_BUFFERS=1,
7746 NECKO_SMALL_BUFFERS=)
7747 AC_SUBST(NECKO_SMALL_BUFFERS)
7748 if test "$NECKO_SMALL_BUFFERS"; then
7749 AC_DEFINE(NECKO_SMALL_BUFFERS)
7753 dnl option to disable cookies
7755 MOZ_ARG_DISABLE_BOOL(cookies,
7756 [ --disable-cookies Disable cookie support],
7759 AC_SUBST(NECKO_COOKIES)
7760 if test "$NECKO_COOKIES"; then
7761 AC_DEFINE(NECKO_COOKIES)
7764 dnl NECKO_ configuration options are not global
7765 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_"
7767 dnl Only build Mork if it's required
7769 if test "$MOZ_MORK"; then
7773 dnl Build the lightweight Mork reader if required
7774 AC_SUBST(MOZ_MORKREADER)
7775 if test "$MOZ_MORKREADER"; then
7776 AC_DEFINE(MOZ_MORKREADER)
7779 dnl ========================================================
7780 if test "$MOZ_DEBUG" || test "$NS_TRACE_MALLOC"; then
7781 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7784 dnl ========================================================
7786 dnl = Maintainer debug option (no --enable equivalent)
7788 dnl ========================================================
7793 AC_SUBST(AR_EXTRACT)
7797 AC_SUBST(AS_DASH_C_FLAG)
7802 AC_SUBST(USE_SHORT_LIBNAME)
7806 AC_SUBST(NS_USE_NATIVE)
7807 AC_SUBST(MOZ_WIDGET_TOOLKIT)
7808 AC_SUBST(MOZ_GFX_TOOLKIT)
7809 AC_SUBST(MOZ_UPDATE_XTERM)
7811 AC_SUBST(MOZ_PLATFORM_HILDON)
7813 AC_SUBST(NS_MAEMO_LOCATION)
7814 AC_SUBST(MOZ_AUTH_EXTENSION)
7815 AC_SUBST(MOZ_MATHML)
7816 AC_SUBST(MOZ_PERMISSIONS)
7818 AC_SUBST(MOZ_NO_INSPECTOR_APIS)
7819 AC_SUBST(MOZ_PREF_EXTENSIONS)
7822 AC_SUBST(MOZ_XSLT_STANDALONE)
7823 AC_SUBST(MOZ_JS_LIBS)
7826 AC_SUBST(MOZ_DEBUG_MODULES)
7827 AC_SUBST(MOZ_PROFILE_MODULES)
7828 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
7829 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
7830 AC_SUBST(MOZ_DEBUG_FLAGS)
7831 AC_SUBST(MOZ_DEBUG_LDFLAGS)
7832 AC_SUBST(WARNINGS_AS_ERRORS)
7833 AC_SUBST(MOZ_DBGRINFO_MODULES)
7834 AC_SUBST(MOZ_EXTENSIONS)
7835 AC_SUBST(MOZ_IMG_DECODERS)
7836 AC_SUBST(MOZ_IMG_ENCODERS)
7837 AC_SUBST(MOZ_JSDEBUGGER)
7839 AC_SUBST(MOZ_NO_XPCOM_OBSOLETE)
7840 AC_SUBST(MOZ_PLUGINS)
7841 AC_SUBST(ENABLE_EAZEL_PROFILER)
7842 AC_SUBST(EAZEL_PROFILER_CFLAGS)
7843 AC_SUBST(EAZEL_PROFILER_LIBS)
7844 AC_SUBST(MOZ_PERF_METRICS)
7845 AC_SUBST(GC_LEAK_DETECTOR)
7846 AC_SUBST(MOZ_LOG_REFCNT)
7850 AC_SUBST(MOZ_CALLGRIND)
7852 AC_SUBST(MOZ_XPCTOOLS)
7853 AC_SUBST(MOZ_JSLOADER)
7854 AC_SUBST(MOZ_USE_NATIVE_UCONV)
7855 AC_SUBST(MOZ_INSURE)
7856 AC_SUBST(MOZ_INSURE_DIRS)
7857 AC_SUBST(MOZ_INSURE_EXCLUDE_DIRS)
7858 AC_SUBST(MOZ_QUANTIFY)
7859 AC_SUBST(MOZ_INSURIFYING)
7861 AC_SUBST(MOZ_PLACES)
7862 AC_SUBST(MOZ_PLACES_BOOKMARKS)
7863 AC_SUBST(MOZ_STORAGE)
7865 AC_SUBST(NS_PRINTING)
7867 AC_SUBST(MOZ_JAVAXPCOM)
7868 AC_SUBST(JAVA_INCLUDE_PATH)
7873 AC_SUBST(MOZ_PROFILELOCKING)
7876 AC_SUBST(MOZ_XIE_LIBS)
7877 AC_SUBST(MOZ_ENABLE_POSTSCRIPT)
7879 AC_SUBST(XPCOM_USE_LEA)
7880 AC_SUBST(BUILD_STATIC_LIBS)
7881 AC_SUBST(MOZ_ENABLE_LIBXUL)
7882 AC_SUBST(ENABLE_TESTS)
7884 AC_SUBST(MOZ_UNIVERSALCHARDET)
7885 AC_SUBST(ACCESSIBILITY)
7886 AC_SUBST(MOZ_XPINSTALL)
7887 AC_SUBST(MOZ_VIEW_SOURCE)
7888 AC_SUBST(MOZ_SPELLCHECK)
7889 AC_SUBST(MOZ_XPFE_COMPONENTS)
7890 AC_SUBST(MOZ_USER_DIR)
7891 AC_SUBST(MOZ_CRASHREPORTER)
7893 AC_SUBST(ENABLE_STRIP)
7894 AC_SUBST(PKG_SKIP_STRIP)
7895 AC_SUBST(USE_ELF_DYNSTR_GC)
7896 AC_SUBST(INCREMENTAL_LINKER)
7897 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
7898 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
7899 AC_SUBST(MOZ_XPCOM_OBSOLETE_LIBS)
7901 AC_SUBST(MOZ_FIX_LINK_PATHS)
7902 AC_SUBST(XPCOM_LIBS)
7903 AC_SUBST(XPCOM_FROZEN_LDOPTS)
7904 AC_SUBST(XPCOM_GLUE_LDOPTS)
7905 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
7907 AC_SUBST(USE_DEPENDENT_LIBS)
7909 AC_SUBST(MOZ_BUILD_ROOT)
7910 AC_SUBST(MOZ_OS2_TOOLS)
7911 AC_SUBST(MOZ_OS2_USE_DECLSPEC)
7913 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
7914 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
7915 AC_SUBST(MOZ_TIMELINE)
7918 AC_SUBST(TARGET_DEVICE)
7920 AC_SUBST(MOZ_APP_NAME)
7921 AC_SUBST(MOZ_APP_DISPLAYNAME)
7922 AC_SUBST(MOZ_APP_VERSION)
7923 AC_SUBST(FIREFOX_VERSION)
7925 AC_SUBST(MOZ_PKG_SPECIAL)
7927 AC_SUBST(MOZILLA_OFFICIAL)
7928 AC_SUBST(BUILD_OFFICIAL)
7929 AC_SUBST(MOZ_MILESTONE_RELEASE)
7932 AC_SUBST(MOZ_PROFILE)
7933 AC_SUBST(MOZ_DEBUG_SYMBOLS)
7934 AC_SUBST(MOZ_MAPINFO)
7935 AC_SUBST(MOZ_BROWSE_INFO)
7936 AC_SUBST(MOZ_TOOLS_DIR)
7937 AC_SUBST(CYGWIN_WRAPPER)
7939 AC_SUBST(WIN32_REDIST_DIR)
7942 dnl Echo the CFLAGS to remove extra whitespace.
7949 $_MOZ_EXCEPTIONS_FLAGS \
7950 $_WARNINGS_CXXFLAGS \
7953 COMPILE_CFLAGS=`echo \
7958 COMPILE_CXXFLAGS=`echo \
7959 $_DEFINES_CXXFLAGS \
7963 AC_SUBST(SYSTEM_MAKEDEPEND)
7964 AC_SUBST(SYSTEM_JPEG)
7965 AC_SUBST(SYSTEM_PNG)
7966 AC_SUBST(SYSTEM_ZLIB)
7967 AC_SUBST(SYSTEM_BZ2)
7969 AC_SUBST(JPEG_CFLAGS)
7971 AC_SUBST(ZLIB_CFLAGS)
7973 AC_SUBST(BZ2_CFLAGS)
7975 AC_SUBST(PNG_CFLAGS)
7978 AC_SUBST(MOZ_JPEG_CFLAGS)
7979 AC_SUBST(MOZ_JPEG_LIBS)
7980 AC_SUBST(MOZ_ZLIB_CFLAGS)
7981 AC_SUBST(MOZ_ZLIB_LIBS)
7982 AC_SUBST(MOZ_BZ2_CFLAGS)
7983 AC_SUBST(MOZ_BZ2_LIBS)
7984 AC_SUBST(MOZ_PNG_CFLAGS)
7985 AC_SUBST(MOZ_PNG_LIBS)
7987 AC_SUBST(NSPR_CFLAGS)
7989 AC_SUBST(MOZ_NATIVE_NSPR)
7991 AC_SUBST(NSS_CFLAGS)
7993 AC_SUBST(NSS_DEP_LIBS)
7994 AC_SUBST(MOZ_NATIVE_NSS)
7995 AC_SUBST(NSS_DISABLE_DBM)
8000 AC_SUBST(COMPILE_CFLAGS)
8001 AC_SUBST(COMPILE_CXXFLAGS)
8004 AC_SUBST(CROSS_COMPILE)
8005 AC_SUBST(WCHAR_CFLAGS)
8009 AC_SUBST(HOST_CFLAGS)
8010 AC_SUBST(HOST_CXXFLAGS)
8011 AC_SUBST(HOST_OPTIMIZE_FLAGS)
8013 AC_SUBST(HOST_AR_FLAGS)
8015 AC_SUBST(HOST_RANLIB)
8016 AC_SUBST(HOST_NSPR_MDCPUCFG)
8017 AC_SUBST(HOST_BIN_SUFFIX)
8018 AC_SUBST(HOST_OS_ARCH)
8020 AC_SUBST(TARGET_CPU)
8021 AC_SUBST(TARGET_VENDOR)
8023 AC_SUBST(TARGET_NSPR_MDCPUCFG)
8024 AC_SUBST(TARGET_MD_ARCH)
8025 AC_SUBST(TARGET_XPCOM_ABI)
8028 AC_SUBST(OS_RELEASE)
8031 AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
8032 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8034 AC_SUBST(WRAP_MALLOC_CFLAGS)
8035 AC_SUBST(WRAP_MALLOC_LIB)
8038 AC_SUBST(MKSHLIB_FORCE_ALL)
8039 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8040 AC_SUBST(DSO_CFLAGS)
8041 AC_SUBST(DSO_PIC_CFLAGS)
8042 AC_SUBST(DSO_LDOPTS)
8043 AC_SUBST(LIB_PREFIX)
8044 AC_SUBST(DLL_PREFIX)
8045 AC_SUBST(DLL_SUFFIX)
8046 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8047 AC_SUBST(LIB_SUFFIX)
8048 AC_SUBST(OBJ_SUFFIX)
8049 AC_SUBST(BIN_SUFFIX)
8050 AC_SUBST(ASM_SUFFIX)
8051 AC_SUBST(IMPORT_LIB_SUFFIX)
8053 AC_SUBST(CC_VERSION)
8054 AC_SUBST(CXX_VERSION)
8055 AC_SUBST(MSMANIFEST_TOOL)
8057 if test "$USING_HCC"; then
8058 CC='${topsrcdir}/build/hcc'
8060 CXX='${topsrcdir}/build/hcpp'
8061 CXX="$CXX '$_OLDCXX'"
8066 dnl Check for missing components
8067 if test "$COMPILE_ENVIRONMENT"; then
8068 if test "$MOZ_X11"; then
8069 dnl ====================================================
8070 dnl = Check if X headers exist
8071 dnl ====================================================
8072 _SAVE_CFLAGS=$CFLAGS
8073 CFLAGS="$CFLAGS $XCFLAGS"
8077 #include <X11/Xlib.h>
8078 #include <X11/Intrinsic.h>
8082 if ((dpy = XOpenDisplay(NULL)) == NULL) {
8083 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8087 [ AC_MSG_ERROR([Could not compile basic X program.]) ])
8088 CFLAGS="$_SAVE_CFLAGS"
8090 if test ! -z "$MISSING_X"; then
8091 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8095 fi # COMPILE_ENVIRONMENT
8097 dnl Set various defines and substitutions
8098 dnl ========================================================
8100 if test "$OS_ARCH" = "BeOS"; then
8103 elif test "$OS_ARCH" = "Darwin"; then
8105 AC_DEFINE(UNIX_ASYNC_DNS)
8107 elif test "$OS_ARCH" = "OpenVMS"; then
8109 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
8111 AC_DEFINE(UNIX_ASYNC_DNS)
8114 AC_SUBST(MOZ_MOVEMAIL)
8116 if test "$MOZ_DEBUG"; then
8117 AC_DEFINE(MOZ_REFLOW_PERF)
8118 AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8121 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
8122 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8123 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8124 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8125 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8126 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8127 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8128 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8129 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8132 # Used for LD_LIBRARY_PATH of run_viewer target
8134 for lib_arg in $NSPR_LIBS $TK_LIBS; do
8136 -L* ) LIBS_PATH="${LIBS_PATH:+$LIBS_PATH:}"`expr $lib_arg : "-L\(.*\)"` ;;
8142 dnl ========================================================
8143 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
8144 dnl ========================================================
8147 WIN_TOP_SRC=`cd $srcdir; pwd -W`
8150 HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
8151 HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
8152 CC="\$(CYGWIN_WRAPPER) $CC"
8153 CXX="\$(CYGWIN_WRAPPER) $CXX"
8154 CPP="\$(CYGWIN_WRAPPER) $CPP"
8155 LD="\$(CYGWIN_WRAPPER) $LD"
8156 AS="\$(CYGWIN_WRAPPER) $AS"
8157 RC="\$(CYGWIN_WRAPPER) $RC"
8158 MIDL="\$(CYGWIN_WRAPPER) $MIDL"
8159 CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
8160 WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
8164 AC_SUBST(CYGDRIVE_MOUNT)
8165 AC_SUBST(WIN_TOP_SRC)
8167 AC_SUBST(MOZILLA_VERSION)
8169 AC_SUBST(ac_configure_args)
8171 dnl Spit out some output
8172 dnl ========================================================
8174 dnl The following defines are used by xpcom
8175 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8177 HAVE_CPP_2BYTE_WCHAR_T
8178 HAVE_CPP_ACCESS_CHANGING_USING
8179 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8181 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8183 HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
8184 HAVE_CPP_NAMESPACE_STD
8186 HAVE_CPP_PARTIAL_SPECIALIZATION
8187 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8189 HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL
8191 NEED_CPP_UNUSED_IMPLEMENTATIONS
8195 HAVE_ICONV_WITH_CONST_INPUT
8203 netwerk/necko-config.h
8204 xpcom/xpcom-config.h
8205 xpcom/xpcom-private.h
8208 # Save the defines header file before autoconf removes it.
8209 # (Do not add AC_DEFINE calls after this line.)
8210 _CONFIG_TMP=confdefs-tmp.h
8211 _CONFIG_DEFS_H=mozilla-config.h
8213 cat > $_CONFIG_TMP <<\EOF
8214 /* List of defines generated by configure. Included with preprocessor flag,
8215 * -include, to avoid long list of -D defines on the compile command-line.
8219 #ifndef _MOZILLA_CONFIG_H_
8220 #define _MOZILLA_CONFIG_H_
8223 _EGREP_PATTERN='^#define ('
8224 if test -n "$_NON_GLOBAL_ACDEFINES"; then
8225 for f in $_NON_GLOBAL_ACDEFINES; do
8226 _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
8229 _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
8231 sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
8233 cat >> $_CONFIG_TMP <<\EOF
8235 #endif /* _MOZILLA_CONFIG_H_ */
8239 # Only write mozilla-config.h when something changes (or it doesn't exist)
8240 if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
8243 AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
8244 mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
8246 echo ==== $_CONFIG_DEFS_H =================================
8250 dnl Probably shouldn't call this manually but we always want the output of DEFS
8251 rm -f confdefs.h.save
8252 mv confdefs.h confdefs.h.save
8253 egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
8254 AC_OUTPUT_MAKE_DEFS()
8256 AC_SUBST(MOZ_DEFINES)
8258 mv confdefs.h.save confdefs.h
8260 dnl Load the list of Makefiles to generate.
8261 dnl To add new Makefiles, edit allmakefiles.sh.
8262 dnl allmakefiles.sh sets the variable, MAKEFILES.
8263 . ${srcdir}/allmakefiles.sh
8265 dnl Run a perl script to quickly create the makefiles.
8266 dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
8267 dnl for the files it cannot handle correctly. This way, config.status
8268 dnl will handle these files.
8269 dnl If it fails, nothing is set and config.status will run as usual.
8271 dnl This does not change the $MAKEFILES variable.
8273 dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
8275 if test -z "${AS_PERL}"; then
8276 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
8278 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
8283 echo $MAKEFILES > unallmakefiles
8285 AC_OUTPUT($MAKEFILES)
8287 dnl Prevent the regeneration of cairo-features.h forcing rebuilds of gfx stuff
8288 if test "$CAIRO_FEATURES_H"; then
8289 if cmp -s $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig; then
8290 mv -f "$CAIRO_FEATURES_H".orig "$CAIRO_FEATURES_H" 2> /dev/null
8292 rm -f "$CAIRO_FEATURES_H".orig 2> /dev/null
8296 dnl ========================================================
8297 dnl = Setup a nice relatively clean build environment for
8298 dnl = sub-configures.
8299 dnl ========================================================
8302 CFLAGS="$_SUBDIR_CFLAGS"
8303 CPPFLAGS="$_SUBDIR_CPPFLAGS"
8304 CXXFLAGS="$_SUBDIR_CXXFLAGS"
8305 LDFLAGS="$_SUBDIR_LDFLAGS"
8306 HOST_CC="$_SUBDIR_HOST_CC"
8307 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
8308 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
8314 # No need to run subconfigures when building with LIBXUL_SDK_DIR
8315 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
8317 if test -z "$MOZ_NATIVE_NSPR"; then
8318 ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
8319 if test -z "$MOZ_DEBUG"; then
8320 ac_configure_args="$ac_configure_args --disable-debug"
8322 if test "$MOZ_OPTIMIZE" = "1"; then
8323 ac_configure_args="$ac_configure_args --enable-optimize"
8325 if test "$OS_ARCH" = "WINNT" && test "$NS_TRACE_MALLOC"; then
8326 ac_configure_args="$ac_configure_args --enable-debug --disable-optimize"
8328 if test -n "$HAVE_64BIT_OS"; then
8329 ac_configure_args="$ac_configure_args --enable-64bit"
8331 if test -n "$USE_ARM_KUSER"; then
8332 ac_configure_args="$ac_configure_args --with-arm-kuser"
8334 AC_OUTPUT_SUBDIRS(nsprpub)
8335 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8338 if test -z "$MOZ_NATIVE_NSPR"; then
8339 # Hack to deal with the fact that we use NSPR_CFLAGS everywhere
8340 AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
8341 if test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE"; then
8342 NSPR_LIBS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --libdir=$LIBXUL_DIST/lib --libs`
8343 $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $NSPR_LIBS'" config/autoconf.mk
8344 NSPR_CFLAGS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --includedir=$LIBXUL_DIST/include/nspr --cflags`
8345 $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $NSPR_CFLAGS'" config/autoconf.mk
8347 rm -f config/autoconf.mk.bak
8350 # Run the SpiderMonkey 'configure' script.
8351 dist=$MOZ_BUILD_ROOT/dist
8352 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8353 ac_configure_args="$ac_configure_args --enable-threadsafe"
8354 if test -z "$MOZ_NATIVE_NSPR"; then
8355 ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
8356 ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
8358 ac_configure_args="$ac_configure_args --with-dist-dir=../../dist"
8359 ac_configure_args="$ac_configure_args --includedir=$dist/include"
8360 ac_configure_args="$ac_configure_args --bindir=$dist/bin"
8361 ac_configure_args="$ac_configure_args --libdir=$dist/lib"
8362 ac_configure_args="$ac_configure_args --with-sync-build-files=$_topsrcdir"
8363 if test "$MOZ_MEMORY"; then
8364 ac_configure_args="$ac_configure_args --enable-jemalloc"
8366 AC_OUTPUT_SUBDIRS(js/src)
8367 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8369 fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR