1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*-
2 dnl vi: set tabstop=4 shiftwidth=4 expandtab:
3 dnl ***** BEGIN LICENSE BLOCK *****
4 dnl Version: MPL 1.1/GPL 2.0/LGPL 2.1
6 dnl The contents of this file are subject to the Mozilla Public License Version
7 dnl 1.1 (the "License"); you may not use this file except in compliance with
8 dnl the License. You may obtain a copy of the License at
9 dnl http://www.mozilla.org/MPL/
11 dnl Software distributed under the License is distributed on an "AS IS" basis,
12 dnl WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13 dnl for the specific language governing rights and limitations under the
16 dnl The Original Code is this file as it was released upon August 6, 1998.
18 dnl The Initial Developer of the Original Code is
19 dnl Christopher Seawood.
20 dnl Portions created by the Initial Developer are Copyright (C) 1998-2001
21 dnl the Initial Developer. All Rights Reserved.
24 dnl Jamie Zawinski <jwz@jwz.org>
25 dnl gettimeofday args check
26 dnl Christopher Blizzard <blizzard@appliedtheory.com>
27 dnl gnomefe update & enable-pthreads
28 dnl Ramiro Estrugo <ramiro@netscape.com>
29 dnl X11 makedepend support
31 dnl Henry Sobotka <sobotka@axess.com>
33 dnl Dan Mosedale <dmose@mozilla.org>
35 dnl Seth Spitzer <sspitzer@netscape.com>
37 dnl Benjamin Smedberg <benjamin@smedbergs.us>
38 dnl Howard Chu <hyc@symas.com>
40 dnl Mark Mentovai <mark@moxienet.com>:
41 dnl Mac OS X 10.4 support
42 dnl Giorgio Maone <g.maone@informaction.com>
43 dnl MSVC l10n compatible version check
44 dnl Ben Turner <mozilla@songbirdnest.com>
46 dnl Alternatively, the contents of this file may be used under the terms of
47 dnl either the GNU General Public License Version 2 or later (the "GPL"), or
48 dnl the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
49 dnl in which case the provisions of the GPL or the LGPL are applicable instead
50 dnl of those above. If you wish to allow use of your version of this file only
51 dnl under the terms of either the GPL or the LGPL, and not to allow others to
52 dnl use your version of this file under the terms of the MPL, indicate your
53 dnl decision by deleting the provisions above and replace them with the notice
54 dnl and other provisions required by the GPL or the LGPL. If you do not delete
55 dnl the provisions above, a recipient may use your version of this file under
56 dnl the terms of any one of the MPL, the GPL or the LGPL.
58 dnl ***** END LICENSE BLOCK *****
60 dnl Process this file with autoconf to produce a configure script.
61 dnl ========================================================
64 AC_INIT(config/config.mk)
65 AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
67 TARGET_CPU="${target_cpu}"
68 TARGET_VENDOR="${target_vendor}"
69 TARGET_OS="${target_os}"
72 MOZ_DEB_TIMESTAMP=`date +"%a, %d %b %Y %T %z" 2>&1`
73 AC_SUBST(MOZ_DEB_TIMESTAMP)
76 dnl ========================================================
78 dnl = Don't change the following two lines. Doing so breaks:
80 dnl = CFLAGS="-foo" ./configure
82 dnl ========================================================
84 CPPFLAGS="${CPPFLAGS=}"
85 CXXFLAGS="${CXXFLAGS=}"
87 HOST_CFLAGS="${HOST_CFLAGS=}"
88 HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
89 HOST_LDFLAGS="${HOST_LDFLAGS=}"
91 dnl ========================================================
92 dnl = Preserve certain environment flags passed to configure
93 dnl = We want sub projects to receive the same flags
94 dnl = untainted by this configure script
95 dnl ========================================================
98 _SUBDIR_CFLAGS="$CFLAGS"
99 _SUBDIR_CPPFLAGS="$CPPFLAGS"
100 _SUBDIR_CXXFLAGS="$CXXFLAGS"
101 _SUBDIR_LDFLAGS="$LDFLAGS"
102 _SUBDIR_HOST_CC="$HOST_CC"
103 _SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
104 _SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
105 _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
106 _SUBDIR_CONFIG_ARGS="$ac_configure_args"
108 dnl Set the version number of the libs included with mozilla
109 dnl ========================================================
116 dnl Set the minimum version of toolkit libs used by mozilla
117 dnl ========================================================
127 WINDRES_VERSION=2.14.90
130 GNOMEUI_VERSION=2.2.0
133 STARTUP_NOTIFICATION_VERSION=0.8
140 dnl Set various checks
141 dnl ========================================================
145 dnl Initialize the Pthread test variables early so they can be
146 dnl overridden by each platform.
147 dnl ========================================================
151 dnl Do not allow a separate objdir build if a srcdir build exists.
152 dnl ==============================================================
153 _topsrcdir=`cd \`dirname $0\`; pwd`
156 if test "$_topsrcdir" != "$_objdir"
158 # Check for a couple representative files in the source tree
160 for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
161 if test -f $file; then
162 _conflict_files="$_conflict_files $file"
165 if test "$_conflict_files"; then
167 echo "* Your source tree contains these files:"
168 for file in $_conflict_files; do
172 * This indicates that you previously built in the source tree.
173 * A source tree build can confuse the separate objdir build.
175 * To clean up the source tree:
186 dnl Default to MSVC for win32
187 dnl ==============================================================
188 if test -z "$CROSS_COMPILE"; then
190 *-cygwin*|*-mingw*|*-msvc*|*-mks*)
192 if test -z "$CC"; then CC=cl; fi
193 if test -z "$CXX"; then CXX=cl; fi
194 if test -z "$CPP"; then CPP="cl -E -nologo"; fi
195 if test -z "$CXXCPP"; then CXXCPP="cl -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
196 if test -z "$LD"; then LD=link; fi
197 if test -z "$AS"; then AS=ml; fi
198 if test -z "$MIDL"; then MIDL=midl; fi
203 COMPILE_ENVIRONMENT=1
204 MOZ_ARG_ENABLE_BOOL(compile-environment,
205 [ --disable-compile-environment
206 Disable compiler/library checks.],
207 COMPILE_ENVIRONMENT=1,
208 COMPILE_ENVIRONMENT= )
210 MOZ_ARG_WITH_STRING(l10n-base,
211 [ --with-l10n-base=DIR path to l10n repositories],
212 L10NBASEDIR=$withval)
213 if test ! -z "$L10NBASEDIR"; then
214 if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then
215 AC_MSG_ERROR([--with-l10n-base must specify a path])
216 elif test -d "$L10NBASEDIR"; then
217 L10NBASEDIR=`cd "$L10NBASEDIR" && pwd`
219 AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
222 AC_SUBST(L10NBASEDIR)
224 dnl ========================================================
225 dnl Checks for compilers.
226 dnl ========================================================
227 dnl Set CROSS_COMPILE in the environment when running configure
228 dnl to use the cross-compile setup for now
229 dnl ========================================================
231 if test "$COMPILE_ENVIRONMENT"; then
233 dnl Do some special WinCE toolchain stuff
236 echo -----------------------------------------------------------------------------
237 echo Building Windows CE Shunt Library and Tool Chain
238 echo -----------------------------------------------------------------------------
242 echo -n "#define TOPSRCDIR \"" > $srcdir/build/wince/tools/topsrcdir.h
243 echo `cd "$_topsrcdir" && pwd -W | tr '\n' '\"'` >> $srcdir/build/wince/tools/topsrcdir.h
244 make -C $srcdir/build/wince/tools
245 echo -----------------------------------------------------------------------------
249 if test -n "$CROSS_COMPILE" && test "$target" != "$host"; then
250 echo "cross compiling from $host to $target"
254 _SAVE_CFLAGS="$CFLAGS"
255 _SAVE_LDFLAGS="$LDFLAGS"
257 AC_MSG_CHECKING([for host c compiler])
258 AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
259 if test -z "$HOST_CC"; then
260 AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
262 AC_MSG_RESULT([$HOST_CC])
263 AC_MSG_CHECKING([for host c++ compiler])
264 AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
265 if test -z "$HOST_CXX"; then
266 AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
268 AC_MSG_RESULT([$HOST_CXX])
270 if test -z "$HOST_CFLAGS"; then
271 HOST_CFLAGS="$CFLAGS"
273 if test -z "$HOST_CXXFLAGS"; then
274 HOST_CXXFLAGS="$CXXFLAGS"
276 if test -z "$HOST_LDFLAGS"; then
277 HOST_LDFLAGS="$LDFLAGS"
279 AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
280 AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
282 CFLAGS="$HOST_CFLAGS"
283 LDFLAGS="$HOST_LDFLAGS"
285 AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
286 AC_TRY_COMPILE([], [return(0);],
287 [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
288 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
291 CFLAGS="$HOST_CXXFLAGS"
293 AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
294 AC_TRY_COMPILE([], [return(0);],
295 [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
296 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
300 LDFLAGS=$_SAVE_LDFLAGS
302 case "$build:$target" in
303 powerpc-apple-darwin8*:i?86-apple-darwin*)
304 dnl The Darwin cross compiler doesn't necessarily point itself at a
305 dnl root that has libraries for the proper architecture, it defaults
306 dnl to the system root. The libraries in the system root on current
307 dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
308 dnl checks will fail. Fake a working SDK in that case.
310 _SAVE_CXXFLAGS=$CXXLAGS
311 CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CFLAGS"
312 CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CXXFLAGS"
316 AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
319 AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
323 case "$build:$target" in
324 powerpc-apple-darwin8*:i?86-apple-darwin*)
325 dnl Revert the changes made above. From this point on, the target
326 dnl compiler will never be used without applying the SDK to CFLAGS
327 dnl (see --with-macos-sdk below).
329 CXXFLAGS=$_SAVE_CXXFLAGS
333 AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
334 AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
335 AC_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
336 AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
337 AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
338 AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
339 AC_DEFINE(CROSS_COMPILE)
344 AC_PATH_PROGS(AS, $AS as, $CC)
345 AC_CHECK_PROGS(AR, ar, :)
346 AC_CHECK_PROGS(LD, ld, :)
347 AC_CHECK_PROGS(STRIP, strip, :)
348 AC_CHECK_PROGS(WINDRES, windres, :)
349 if test -z "$HOST_CC"; then
352 if test -z "$HOST_CFLAGS"; then
353 HOST_CFLAGS="$CFLAGS"
355 if test -z "$HOST_CXX"; then
358 if test -z "$HOST_CXXFLAGS"; then
359 HOST_CXXFLAGS="$CXXFLAGS"
361 if test -z "$HOST_LDFLAGS"; then
362 HOST_LDFLAGS="$LDFLAGS"
364 if test -z "$HOST_RANLIB"; then
365 HOST_RANLIB="$RANLIB"
367 if test -z "$HOST_AR"; then
378 if test "$GCC" = "yes"; then
380 CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
382 if test "$GXX" = "yes"; then
384 CXX_VERSION=`$CXX -v 2>&1 | grep 'gcc version'`
386 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
389 if test "`echo | $LD -v 2>&1 | grep -c GNU`" != "0"; then
392 if test "$GNU_CC"; then
393 if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
400 if test "$GCC" = yes; then
401 if test "`$CC -help 2>&1 | grep -c 'Intel(R) C Compiler'`" != "0"; then
406 if test "$GXX" = yes; then
407 if test "`$CXX -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
412 dnl Special win32 checks
413 dnl ========================================================
419 if test -n "$GNU_CC"; then
427 MOZ_ARG_WITH_STRING(windows-version,
428 [ --with-windows-version=WINVER
429 Minimum Windows version (WINVER) to support
440 AC_MSG_ERROR([Invalid value --with-windows-version, must be 400, 500 or 501]);
446 *-cygwin*|*-mingw*|*-msvc*|*-mks*|*-wince)
447 if test "$GCC" != "yes"; then
448 # Check to see if we are really running in a msvc environemnt
450 AC_CHECK_PROGS(MIDL, midl)
452 # Make sure compilers are valid
453 CFLAGS="$CFLAGS -TC -nologo"
454 CXXFLAGS="$CXXFLAGS -TP -nologo"
457 AC_TRY_COMPILE([#include <stdio.h>],
458 [ printf("Hello World\n"); ],,
459 AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
462 AC_TRY_COMPILE([#include <new.h>],
463 [ unsigned *test = new unsigned(42); ],,
464 AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
468 _MSVC_VER_FILTER='s|.* ([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
471 # Determine compiler version
472 CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
473 _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
474 _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
475 _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
476 _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
477 _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
479 CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
480 _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
482 if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
483 AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
485 if test "$_CC_MAJOR_VERSION" = "12"; then
487 elif test "$_CC_MAJOR_VERSION" = "13"; then
489 elif test "$_CC_MAJOR_VERSION" = "14"; then
491 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
492 dnl -DYNAMICBASE is only supported on VC8SP1 or newer,
493 dnl so be very specific here!
494 dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762
495 if test $_CC_RELEASE -gt 50727; then
497 elif test $_CC_BUILD -ge 762; then
500 AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
501 AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
502 elif test "$_CC_MAJOR_VERSION" = "15"; then
504 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
505 LDFLAGS="$LDFLAGS -MANIFESTUAC:NO"
507 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
508 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
510 AC_MSG_ERROR([This version of the MSVC compiler, $CC_VERSION , is unsupported.])
513 _MOZ_RTTI_FLAGS_ON='-GR'
514 _MOZ_RTTI_FLAGS_OFF='-GR-'
515 _MOZ_EXCEPTIONS_FLAGS_ON='-EHsc'
516 _MOZ_EXCEPTIONS_FLAGS_OFF=''
518 if test -n "$WIN32_REDIST_DIR"; then
519 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
523 # ensure that mt.exe is Microsoft (R) Manifest Tool and not magnetic tape manipulation utility (or something else)
524 if test "$_CC_SUITE" -ge "8"; then
526 _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
529 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
530 if test -n "$MSMT_TOOL"; then
531 MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
532 if test -z "$MSMANIFEST_TOOL_VERSION"; then
533 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
538 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
542 # Check linker version
543 _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
544 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
545 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
546 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
551 _MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
552 _MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
553 _MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
554 _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
555 # Add flags if necessary
556 AC_MSG_CHECKING([for midl flags])
557 if test \( "$_MIDL_MAJOR_VERSION" -gt "6" \) -o \( "$_MIDL_MAJOR_VERSION" = "6" -a "$_MIDL_MINOR_VERSION" -gt "0" \) -o \( "$_MIDL_MAJOR_VERSION" = "6" -a "$_MIDL_MINOR_VERSION" = "00" -a "$_MIDL_REV_VERSION" -gt "359" \); then
558 # Starting with MIDL version 6.0.359, the MIDL compiler
559 # generates /Oicf /robust stubs by default, which is not
560 # compatible with versions of Windows older than Win2k.
561 # This switches us back to the old behaviour. When we drop
562 # support for Windows older than Win2k, we should remove
564 MIDL_FLAGS="${MIDL_FLAGS} -no_robust"
565 AC_MSG_RESULT([need -no_robust])
567 MIDL_FLAGS="${MIDL_FLAGS}"
568 AC_MSG_RESULT([none needed])
571 unset _MSVC_VER_FILTER
574 # Check w32api version
575 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
576 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
577 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
578 AC_TRY_COMPILE([#include <w32api.h>],
579 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
580 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
581 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
582 #error "test failed."
584 , [ res=yes ], [ res=no ])
585 AC_MSG_RESULT([$res])
586 if test "$res" != "yes"; then
587 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
589 # Check windres version
590 AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
591 _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
592 AC_MSG_RESULT([$_WINDRES_VERSION])
593 _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
594 _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
595 _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
596 WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
597 WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
598 WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
599 if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
600 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
601 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
602 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
603 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
604 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
606 AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
610 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
611 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
612 # Require OS features provided by IE 5.0
613 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0500)
617 dnl Test breaks icc on OS/2 && MSVC
618 if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
620 if grep "NO_MINUS_C_MINUS_O 1" ./confdefs.h >/dev/null; then
624 CC="${srcdir}/build/hcc '$CC'"
625 CXX="${srcdir}/build/hcpp '$CXX'"
632 if test -n "$_WIN32_MSVC"; then
634 SKIP_COMPILER_CHECKS=1
635 SKIP_LIBRARY_CHECKS=1
638 fi # COMPILE_ENVIRONMENT
650 dnl ========================================================
651 dnl Checks for programs.
652 dnl ========================================================
655 AC_PATH_PROGS(PERL, $PERL perl5 perl )
656 if test -z "$PERL" || test "$PERL" = ":"; then
657 AC_MSG_ERROR([perl not found in \$PATH])
660 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
661 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
662 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
664 AC_MSG_RESULT([$_perl_version])
666 if test "$_perl_res" != 0; then
667 AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
671 AC_MSG_CHECKING([for full perl installation])
672 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
674 if test "$_perl_res" != 0; then
676 AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
681 AC_PATH_PROGS(PYTHON, $PYTHON python)
682 if test -z "$PYTHON"; then
683 AC_MSG_ERROR([python was not found in \$PATH])
685 echo PYTHON="$PYTHON"
687 AC_PATH_PROGS(NSINSTALL_BIN, nsinstall )
688 if test -z "$COMPILE_ENVIRONMENT"; then
689 if test -z "$NSINSTALL_BIN" || test "$NSINSTALL_BIN" = ":"; then
690 NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
693 AC_SUBST(NSINSTALL_BIN)
695 AC_PATH_PROG(DOXYGEN, doxygen, :)
696 AC_PATH_PROG(WHOAMI, whoami, :)
697 AC_PATH_PROG(AUTOCONF, autoconf, :)
698 AC_PATH_PROG(UNZIP, unzip, :)
699 AC_PATH_PROGS(ZIP, zip)
700 if test -z "$ZIP" || test "$ZIP" = ":"; then
701 AC_MSG_ERROR([zip not found in \$PATH])
703 AC_PATH_PROG(SYSTEM_MAKEDEPEND, makedepend)
704 AC_PATH_PROG(XARGS, xargs)
705 if test -z "$XARGS" || test "$XARGS" = ":"; then
706 AC_MSG_ERROR([xargs not found in \$PATH .])
709 if test "$COMPILE_ENVIRONMENT"; then
711 dnl ========================================================
712 dnl = Mac OS X toolchain support
713 dnl ========================================================
717 dnl Current known valid versions for GCC_VERSION are 2.95.2 3.1 3.3 4.0.
718 dnl 4.0 identifies itself as 4.0.x, so strip the decidecimal for
719 dnl the environment and includedir purposes (when using an SDK, below),
720 dnl but remember the full version number for the libdir (SDK).
722 GCC_VERSION_FULL=`echo $CXX_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
723 GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
725 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
726 dnl Bug 280479, but this keeps popping up in bug 292530 too because
727 dnl 4.0.0/4061 is the default compiler in Tiger.
729 GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
731 if test "$GCC_BUILD" = "4061" ; then
732 AC_MSG_ERROR([You are attempting to use Apple gcc 4.0 build 4061.
733 This compiler was supplied with Xcode 2.0, and contains bugs that prevent it
734 from building Mozilla. Upgrade to Xcode 2.1 or later.])
738 dnl xcodebuild needs GCC_VERSION defined in the environment, since it
739 dnl doesn't respect the CC/CXX setting. With GCC_VERSION set, it will use
740 dnl /usr/bin/g(cc|++)-$GCC_VERSION.
741 AC_PATH_PROGS(PBBUILD, pbbuild xcodebuild pbxbuild)
746 XCODEBUILD_VERSION=`$PBBUILD -version 2>/dev/null | xargs | sed -e 's/.*DevToolsCore-\([0-9]*\).*/\1/'`
748 if test -n "$XCODEBUILD_VERSION" && test "$XCODEBUILD_VERSION" -ge 620 ; then
754 dnl sdp was formerly in /Developer/Tools. As of Mac OS X 10.4 (Darwin 8),
755 dnl it has moved into /usr/bin.
756 AC_PATH_PROG(SDP, sdp, :, [$PATH:/usr/bin:/Developer/Tools])
760 AC_SUBST(GCC_VERSION)
761 AC_SUBST(XCODEBUILD_VERSION)
762 AC_SUBST(HAS_XCODE_2_1)
764 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
765 dnl that a universal binary is being produced.
766 AC_SUBST(UNIVERSAL_BINARY)
768 dnl ========================================================
769 dnl Check for MacOS deployment target version
770 dnl ========================================================
772 MOZ_ARG_ENABLE_STRING(macos-target,
773 [ --enable-macos-target=VER (default=10.4)
774 Set the minimum MacOS version needed at runtime],
775 [_MACOSX_DEPLOYMENT_TARGET=$enableval])
779 if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
780 dnl Use the specified value
781 export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
782 AC_DEFINE_UNQUOTED(__ENVIRONMENT_MAC_OS_X_VERION_MIN_REQUIRED__,$_MACOSX_DEPLOYMENT_TARGET)
783 elif test -z "$MACOSX_DEPLOYMENT_TARGET" ; then
784 dnl No value specified on the command line or in the environment,
785 dnl use the lesser of the application's minimum or the architecture's
787 export MACOSX_DEPLOYMENT_TARGET=10.4
792 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
794 dnl ========================================================
795 dnl = Mac OS X SDK support
796 dnl ========================================================
799 MOZ_ARG_WITH_STRING(macos-sdk,
800 [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
801 MACOS_SDK_DIR=$withval)
803 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
804 dnl NEXT_ROOT will be set and exported only if it's needed.
805 AC_SUBST(MACOS_SDK_DIR)
808 if test "$MACOS_SDK_DIR"; then
809 dnl Sync this section with the ones in NSPR and NSS.
810 dnl Changes to the cross environment here need to be accounted for in
811 dnl the libIDL checks (below) and xpidl build.
813 if test ! -d "$MACOS_SDK_DIR"; then
814 AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
815 specify a valid SDK. SDKs are installed when the optional cross-development
816 tools are selected during the Xcode/Developer Tools installation.])
819 GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
820 if test "$GCC_VERSION_MAJOR" -lt "4" ; then
821 SDK_C_INCLUDE="-isystem ${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION} -isystem ${MACOS_SDK_DIR}/usr/include -F${MACOS_SDK_DIR}/System/Library/Frameworks"
822 if test -d "${MACOS_SDK_DIR}/Library/Frameworks" ; then
823 SDK_C_INCLUDE="$SDK_C_INCLUDE -F${MACOS_SDK_DIR}/Library/Frameworks"
825 SDK_CXX_INCLUDE="-I${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION}/c++ -I${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION}/c++/ppc-darwin -I${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION}/c++/backward"
827 CFLAGS="$CFLAGS -nostdinc ${SDK_C_INCLUDE}"
828 CXXFLAGS="$CXXFLAGS -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
830 dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
831 CPP="$CPP -nostdinc ${SDK_C_INCLUDE}"
832 CXXCPP="$CXXCPP -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
834 dnl ld support for -syslibroot is compiler-agnostic, but only available
835 dnl on Tiger. Although it's possible to switch on the build host's
836 dnl OS release to use ld -syslibroot when available, ld -syslibroot will
837 dnl cause warnings as long as NEXT_ROOT is set. NEXT_ROOT should be
838 dnl set because both the compiler and linker use it.
839 LIBS="-L${MACOS_SDK_DIR}/usr/lib/gcc/darwin -L${MACOS_SDK_DIR}/usr/lib/gcc/darwin/${GCC_VERSION_FULL} -L${MACOS_SDK_DIR}/usr/lib $LIBS"
840 export NEXT_ROOT=$MACOS_SDK_DIR
842 if test -n "$CROSS_COMPILE" ; then
843 dnl NEXT_ROOT will be in the environment, but it shouldn't be set for
844 dnl the build host. HOST_CXX is presently unused.
845 HOST_CC="NEXT_ROOT= $HOST_CC"
846 HOST_CXX="NEXT_ROOT= $HOST_CXX"
849 dnl gcc >= 4.0 uses different paths than above, but knows how to find
851 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
852 CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
854 dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
855 CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
856 CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
858 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
859 dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
860 dnl that supports -syslibroot. Don't set NEXT_ROOT because it will
861 dnl be ignored and cause warnings when -syslibroot is specified.
862 dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
863 dnl the -isysroot it receives, so this is only needed with 4.0.0.
864 LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
869 AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
871 AC_TRY_COMPILE([#include <new>
872 int main() { return 0; }],
876 AC_MSG_RESULT($result)
878 if test "$result" = "no" ; then
879 AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
883 fi # COMPILE_ENVIRONMENT
885 dnl Be sure the make we use is GNU make.
886 dnl on win32, gmake.exe is the generally the wrong version
888 cygwin*|mingw*|mks*|msvc*)
889 AC_PATH_PROGS(MAKE, $MAKE make gmake, :)
892 AC_PATH_PROGS(MAKE, $MAKE gmake make, :)
895 _make_try=`$MAKE --version 2>/dev/null | grep GNU`
896 if test ! "$_make_try"
899 echo "*** $MAKE is not GNU Make. You will not be able to build Mozilla without GNU Make."
903 dnl Now exit if version if < MAKE_VERSION
905 echo 'all: ; @echo $(MAKE_VERSION)' > dummy.mk
906 _make_vers=`$MAKE --no-print-directory -f dummy.mk all 2>/dev/null`
908 _MAKE_MAJOR_VERSION=`echo $_make_vers | $AWK -F\. '{ print $1 }'`
909 _MAKE_MINOR_VERSION=`echo $_make_vers | $AWK -F\. '{ print $2 }'`
910 MAKE_MAJOR_VERSION=`echo $MAKE_VERSION | $AWK -F\. '{ print $1 }'`
911 MAKE_MINOR_VERSION=`echo $MAKE_VERSION | $AWK -F\. '{ print $2 }'`
912 if test "$_MAKE_MAJOR_VERSION" -lt "$MAKE_MAJOR_VERSION" || \
913 test "$_MAKE_MAJOR_VERSION" = "$MAKE_MAJOR_VERSION" -a \
914 "$_MAKE_MINOR_VERSION" -lt "$MAKE_MINOR_VERSION"; then
915 AC_MSG_ERROR([GNU Make $MAKE_VERSION or higher is required to build Mozilla.])
919 if test "$COMPILE_ENVIRONMENT"; then
923 dnl Check in X11 include directory too.
924 if test "$no_x" != "yes"; then
925 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
930 fi # COMPILE_ENVIRONMENT
932 dnl ========================================================
933 dnl set the defaults first
934 dnl ========================================================
953 MOZ_USER_DIR=".mozilla"
955 HOST_AR_FLAGS='$(AR_FLAGS)'
958 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/jpeg)'
960 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,$(DEPTH)/modules/zlib/src)'
962 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
964 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/modules/libimg/png)'
966 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs'
967 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxpcom -lxpcom_core'
968 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(PREFIX)/lib'
969 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxpcom'
970 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) -lxul'
971 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
972 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
974 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
975 MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom_compat'
979 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
980 MOZ_GFX_TOOLKIT='$(MOZ_WIDGET_TOOLKIT)'
982 MOZ_ENABLE_POSTSCRIPT=1
984 if test -n "$CROSS_COMPILE"; then
985 OS_TARGET="${target_os}"
986 OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
988 case "${target_os}" in
989 linux*) OS_ARCH=Linux OS_TARGET=Linux ;;
990 kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
991 solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
992 mingw*) OS_ARCH=WINNT ;;
993 wince*) OS_ARCH=WINCE ;;
994 darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;;
998 OS_ARCH=`uname -s | sed -e 's|/|_|g'`
999 OS_RELEASE=`uname -r`
1002 # Before this used `uname -m` when not cross compiling
1003 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1004 OS_TEST="${target_cpu}"
1008 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1010 #######################################################################
1011 # Master "Core Components" macros for getting the OS target #
1012 #######################################################################
1015 # Note: OS_TARGET should be specified on the command line for gmake.
1016 # When OS_TARGET=WIN95 is specified, then a Windows 95 target is built.
1017 # The difference between the Win95 target and the WinNT target is that
1018 # the WinNT target uses Windows NT specific features not available
1019 # in Windows 95. The Win95 target will run on Windows NT, but (supposedly)
1020 # at lesser performance (the Win95 target uses threads; the WinNT target
1023 # When OS_TARGET=WIN16 is specified, then a Windows 3.11 (16bit) target
1024 # is built. See: win16_3.11.mk for lots more about the Win16 target.
1026 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1027 # cross-compilation.
1031 # The following hack allows one to build on a WIN95 machine (as if
1032 # s/he were cross-compiling on a WINNT host for a WIN95 target).
1033 # It also accomodates for MKS's uname.exe. If you never intend
1034 # to do development on a WIN95 machine, you don't need this hack.
1049 CYGWIN_9*|CYGWIN_ME*)
1050 OS_ARCH='CYGWIN_NT-4.0'
1056 # Define and override various archtecture-specific variables, including
1065 case "$HOST_OS_ARCH" in
1066 cygwin*|mingw*|mks*|msvc*)
1085 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1088 HOST_OS_ARCH=UNIXWARE
1100 HOST_OS_ARCH=OpenVMS
1110 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1114 HOST_OS_ARCH=UNIXWARE
1124 # If uname -s returns "Windows_NT", we assume that we are using
1125 # the uname.exe in MKS toolkit.
1127 # The -r option of MKS uname only returns the major version number.
1128 # So we need to use its -v option to get the minor version number.
1129 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1133 OS_MINOR_RELEASE=`uname -v`
1134 if test "$OS_MINOR_RELEASE" = "00"; then
1137 OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1139 CYGWIN32_NT|CYGWIN_NT*|MINGW*_NT*)
1141 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
1142 # the uname.exe in the Cygwin tools.
1143 # Prior to the Beta 20 release, Cygwin was called GNU-Win32.
1144 # If uname -s returns "CYGWIN32/NT", we assume that we are using
1145 # the uname.exe in the GNU-Win32 tools.
1146 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1147 # the uname.exe in the MSYS tools.
1149 OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1154 OS_RELEASE=`uname -v`.`uname -r`
1167 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1171 OS_RELEASE=`uname -v`
1195 OS_RELEASE=`uname -v`
1201 OS_RELEASE=`uname -v`
1204 if test "$OS_TARGET" != "NTO"; then
1206 OS_RELEASE=`uname -v | sed 's/^\([0-9]\)\([0-9]*\)$/\1.\2/'`
1215 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1221 OS_RELEASE=`uname -v`
1228 case "${target_cpu}" in
1236 if test -z "$CROSS_COMPILE" ; then
1244 if test "$OS_ARCH" = "NCR"; then
1246 OS_RELEASE=`awk '{print $3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$/\2.\3/'`
1250 # Only set CPU_ARCH if we recognize the value of OS_TEST
1261 Alpha | alpha | ALPHA)
1278 if test -z "$OS_TARGET"; then
1281 if test "$OS_TARGET" = "WIN95"; then
1284 if test "$OS_TARGET" = "WIN16"; then
1287 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1289 dnl ========================================================
1290 dnl GNU specific defaults
1291 dnl ========================================================
1292 if test "$GNU_CC"; then
1293 # FIXME: Let us build with strict aliasing. bug 414641.
1294 CFLAGS="$CFLAGS -fno-strict-aliasing"
1295 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1296 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1297 DSO_LDOPTS='-shared'
1298 if test "$GCC_USE_GNU_LD"; then
1299 # Don't allow undefined symbols in libraries
1300 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1302 WARNINGS_AS_ERRORS='-Werror'
1304 DSO_PIC_CFLAGS='-fPIC'
1305 _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
1306 _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
1307 _MOZ_EXCEPTIONS_FLAGS_ON='-fhandle-exceptions'
1308 _MOZ_EXCEPTIONS_FLAGS_OFF='-fno-handle-exceptions'
1310 # Turn on GNU specific features
1311 # -Wall - turn on all warnings
1312 # -pedantic - make compiler warn about non-ANSI stuff, and
1313 # be a little bit stricter
1314 # Warnings slamm took out for now (these were giving more noise than help):
1315 # -Wbad-function-cast - warns when casting a function to a new return type
1316 # -Wshadow - removed because it generates more noise than help --pete
1317 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
1318 if test -z "$INTEL_CC"; then
1319 # Don't use -Wcast-align with ICC
1321 # And don't use it on hppa, ia64, sparc, since it's noisy there
1322 hppa | ia64 | sparc)
1325 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1330 dnl Turn pedantic on but disable the warnings for long long
1333 if test -z "$INTEL_CC"; then
1334 _IGNORE_LONG_LONG_WARNINGS=1
1335 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
1337 _IGNORE_LONG_LONG_WARNINGS=
1341 _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1342 _USE_CPP_INCLUDE_FLAG=1
1344 MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1345 MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1347 DSO_LDOPTS='-shared'
1348 if test "$GNU_LD"; then
1349 # Don't allow undefined symbols in libraries
1350 DSO_LDOPTS="$DSO_LDOPTS -z defs"
1354 DSO_PIC_CFLAGS='-KPIC'
1355 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1358 if test "$GNU_CXX"; then
1359 # FIXME: Let us build with strict aliasing. bug 414641.
1360 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
1361 # Turn on GNU specific features
1362 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
1363 if test -z "$INTEL_CC"; then
1364 # Don't use -Wcast-align with ICC
1366 # And don't use it on hppa, ia64, sparc, since it's noisy there
1367 hppa | ia64 | sparc)
1370 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1375 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1376 _USE_CPP_INCLUDE_FLAG=1
1378 AC_CACHE_CHECK(whether the compiler supports -Wno-invalid-offsetof,
1379 ac_has_wno_invalid_offsetof,
1383 _SAVE_CXXFLAGS="$CXXFLAGS"
1384 CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1387 ac_has_wno_invalid_offsetof="yes",
1388 ac_has_wno_invalid_offsetof="no")
1389 CXXFLAGS="$_SAVE_CXXFLAGS"
1392 if test "$ac_has_wno_invalid_offsetof" = "yes"; then
1393 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1396 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1399 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1400 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1401 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1402 dnl normal behavior.
1403 dnl ========================================================
1405 MKSHLIB_UNFORCE_ALL=
1407 if test "$COMPILE_ENVIRONMENT"; then
1408 if test "$GNU_CC"; then
1409 AC_MSG_CHECKING(whether ld has archive extraction flags)
1410 AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1411 [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1412 ac_cv_mkshlib_force_and_unforce="no"
1413 exec 3<&0 <<LOOP_INPUT
1414 force="-Wl,--whole-archive"; unforce="-Wl,--no-whole-archive"
1415 force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1416 force="-Wl,-all"; unforce="-Wl,-none"
1423 AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1426 LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1428 if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1432 eval $ac_cv_mkshlib_force_and_unforce
1433 MKSHLIB_FORCE_ALL=$force
1434 MKSHLIB_UNFORCE_ALL=$unforce
1437 fi # COMPILE_ENVIRONMENT
1439 dnl =================================================================
1440 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1441 dnl which is bad when cross compiling.
1442 dnl =================================================================
1443 if test "$COMPILE_ENVIRONMENT"; then
1444 configure_static_assert_macros='
1445 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1446 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1447 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1450 dnl test that the macros actually work:
1451 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1452 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1455 ac_cv_static_assertion_macros_work="yes"
1456 AC_TRY_COMPILE([$configure_static_assert_macros],
1457 [CONFIGURE_STATIC_ASSERT(1)],
1459 ac_cv_static_assertion_macros_work="no")
1460 AC_TRY_COMPILE([$configure_static_assert_macros],
1461 [CONFIGURE_STATIC_ASSERT(0)],
1462 ac_cv_static_assertion_macros_work="no",
1465 AC_TRY_COMPILE([$configure_static_assert_macros],
1466 [CONFIGURE_STATIC_ASSERT(1)],
1468 ac_cv_static_assertion_macros_work="no")
1469 AC_TRY_COMPILE([$configure_static_assert_macros],
1470 [CONFIGURE_STATIC_ASSERT(0)],
1471 ac_cv_static_assertion_macros_work="no",
1475 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1476 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1477 AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1479 fi # COMPILE_ENVIRONMENT
1481 dnl ========================================================
1482 dnl Checking for 64-bit OS
1483 dnl ========================================================
1484 if test "$COMPILE_ENVIRONMENT"; then
1487 AC_MSG_CHECKING(for 64-bit OS)
1488 AC_TRY_COMPILE([$configure_static_assert_macros],
1489 [CONFIGURE_STATIC_ASSERT(sizeof(long) == 8)],
1490 result="yes", result="no")
1491 AC_MSG_RESULT("$result")
1492 if test "$result" = "yes"; then
1493 AC_DEFINE(HAVE_64BIT_OS)
1496 AC_SUBST(HAVE_64BIT_OS)
1498 fi # COMPILE_ENVIRONMENT
1500 dnl ========================================================
1501 dnl Enable high-memory support on OS/2 by default.
1502 dnl ========================================================
1503 MOZ_OS2_HIGH_MEMORY=1
1504 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1505 [ --disable-os2-high-mem Disable high-memory support on OS/2],
1506 MOZ_OS2_HIGH_MEMORY=,
1507 MOZ_OS2_HIGH_MEMORY=1 )
1508 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1510 dnl ========================================================
1511 dnl System overrides of the defaults for host
1512 dnl ========================================================
1515 HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
1516 HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
1517 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1520 *cygwin*|*mingw*|*mks*|*msvc*|*wince)
1521 if test -n "$_WIN32_MSVC"; then
1523 HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1524 HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1525 HOST_RANLIB='echo ranlib'
1527 HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
1529 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
1530 HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1531 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1532 HOST_BIN_SUFFIX=.exe
1535 dnl MinGW/MSYS does not need CYGWIN_WRAPPER
1538 CYGWIN_WRAPPER="${srcdir}/build/cygwin-wrapper"
1539 if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
1541 CYGWIN_WRAPPER="${_pwd}/${srcdir}/build/cygwin-wrapper"
1543 if test "`${PERL} -v | grep -c cygwin 2>/dev/null`" = 0; then
1545 PERL="${CYGWIN_WRAPPER} $PERL"
1548 if test "`${PYTHON} -c 'import sys; print sys.platform;'`" != "cygwin"; then
1549 PYTHON="${CYGWIN_WRAPPER} $PYTHON"
1556 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1557 HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1558 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1559 MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
1560 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL -lobjc'
1563 *-linux*|*-kfreebsd*-gnu)
1564 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1565 HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1566 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1570 HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1571 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1572 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1573 HOST_BIN_SUFFIX=.exe
1578 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1579 HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
1580 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1584 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1585 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1589 dnl Get mozilla version from central milestone file
1590 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1592 dnl Get version of various core apps from the version files.
1593 FIREFOX_VERSION=`cat $topsrcdir/browser/config/version.txt`
1595 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1596 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1598 dnl ========================================================
1599 dnl System overrides of the defaults for target
1600 dnl ========================================================
1605 if test ! "$GNU_CC"; then
1606 if test ! "$HAVE_64BIT_OS"; then
1607 # Compiling with Visual Age C++ object model compat is the
1608 # default. To compile with object model ibm, add
1609 # AIX_OBJMODEL=ibm to .mozconfig.
1610 if test "$AIX_OBJMODEL" = "ibm"; then
1611 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1618 AC_SUBST(AIX_OBJMODEL)
1619 DSO_LDOPTS='-qmkshrobj=1'
1620 DSO_CFLAGS='-qflag=w:w'
1622 LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1623 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
1625 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1626 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1627 if test "$COMPILE_ENVIRONMENT"; then
1630 AC_MSG_CHECKING([for VisualAge C++ compiler version >= 5.0.2.0])
1632 [#if (__IBMCPP__ < 502)
1633 #error "Bad compiler"
1635 _BAD_COMPILER=,_BAD_COMPILER=1)
1636 if test -n "$_BAD_COMPILER"; then
1638 AC_MSG_ERROR([VisualAge C++ version 5.0.2.0 or higher is required to build.])
1640 AC_MSG_RESULT([yes])
1643 TARGET_COMPILER_ABI="ibmc"
1644 CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1645 CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1648 case "${target_os}" in
1653 if test "$COMPILE_ENVIRONMENT"; then
1654 AC_CHECK_HEADERS(sys/inttypes.h)
1656 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1661 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1662 _PLATFORM_DEFAULT_TOOLKIT="cairo-beos"
1663 DSO_LDOPTS='-nostart'
1664 TK_LIBS='-lbe -lroot'
1666 if test "$COMPILE_ENVIRONMENT"; then
1667 AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
1668 AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
1670 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
1671 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
1674 MOZ_USER_DIR="Mozilla"
1678 dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
1680 _IGNORE_LONG_LONG_WARNINGS=
1688 _WARNINGS_CFLAGS="-Wall"
1689 _WARNINGS_CXXFLAGS="-Wall"
1690 # The test above doesn't work properly, at least on 3.1.
1691 MKSHLIB_FORCE_ALL=''
1692 MKSHLIB_UNFORCE_ALL=''
1698 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1699 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1700 MOZ_OPTIMIZE_FLAGS="-O2"
1702 CFLAGS="$CFLAGS -fpascal-strings -fno-common"
1703 CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
1706 STRIP="$STRIP -x -S"
1707 _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1708 MOZ_ENABLE_POSTSCRIPT=
1709 TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1710 LDFLAGS="$LDFLAGS -framework Cocoa"
1711 # The ExceptionHandling framework is needed for Objective-C exception
1712 # logging code in nsObjCExceptions.h. Currently we only use that in debug
1714 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"
1715 # set MACOSX to generate lib/mac/MoreFiles/Makefile
1718 dnl DTrace and -dead_strip don't interact well. See bug 403132.
1719 dnl ===================================================================
1720 if test "x$enable_dtrace" = "xyes"; then
1721 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
1723 dnl check for the presence of the -dead_strip linker flag
1724 AC_MSG_CHECKING([for -dead_strip option to ld])
1725 _SAVE_LDFLAGS=$LDFLAGS
1726 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
1727 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
1728 if test -n "$_HAVE_DEAD_STRIP" ; then
1729 AC_MSG_RESULT([yes])
1730 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
1735 LDFLAGS=$_SAVE_LDFLAGS
1740 if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` != "elf"; then
1741 DLL_SUFFIX=".so.1.0"
1742 DSO_LDOPTS="-shared"
1744 if test ! "$GNU_CC"; then
1745 DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
1747 # Can't have force w/o an unforce.
1748 # # Hack for FreeBSD 2.2
1749 # if test -z "$MKSHLIB_FORCE_ALL"; then
1750 # MKSHLIB_FORCE_ALL='-Wl,-Bforcearchive'
1751 # MKSHLIB_UNFORCE_ALL=''
1757 if test ! "$GNU_CC"; then
1758 DSO_LDOPTS='-b -Wl,+s'
1761 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
1762 MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
1763 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1765 DSO_LDOPTS='-b -E +s'
1766 MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1767 MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1769 MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
1770 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1775 DSO_LDOPTS='-elf -shared'
1777 if test "$GNU_CC"; then
1778 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1779 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1780 MKSHLIB_FORCE_ALL='-Wl,-all'
1781 MKSHLIB_UNFORCE_ALL='-Wl,-none'
1782 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1784 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1785 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1786 MKSHLIB_FORCE_ALL='-all'
1787 MKSHLIB_UNFORCE_ALL='-none'
1793 dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must*
1794 dnl compile and link using -n32
1796 TARGET_COMPILER_ABI=n32
1797 DSO_LDOPTS='-elf -shared'
1798 MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1799 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1800 _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
1801 _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
1802 if test "$GNU_CC"; then
1803 MKSHLIB_FORCE_ALL='-Wl,-all'
1804 MKSHLIB_UNFORCE_ALL='-Wl,-none'
1805 _WARNINGS_CFLAGS="-Wall"
1806 _WARNINGS_CXXFLAGS="-Wall"
1807 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1809 MKSHLIB_FORCE_ALL='-all'
1810 MKSHLIB_UNFORCE_ALL='-none'
1816 CFLAGS="$CFLAGS -woff 3262 -G 4"
1817 CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
1818 if test -n "$USE_N32"; then
1819 ASFLAGS="$ASFLAGS -n32"
1820 CFLAGS="$CFLAGS -n32"
1821 CXXFLAGS="$CXXFLAGS -n32"
1822 LDFLAGS="$LDFLAGS -n32"
1824 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1825 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
1828 if test -z "$GNU_CXX"; then
1834 if test "$GNU_CC"; then
1835 GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
1836 case $GCC_VERSION in
1838 # -Os is broken on gcc 4.1.x and 4.2.x, we need to tweak it to get good results.
1839 MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
1843 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1844 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions $MOZ_OPTIMIZE_SIZE_TWEAK"
1845 MOZ_DEBUG_FLAGS="-g -fno-inline" # most people on linux use gcc/gdb,
1846 # and that combo is not yet good at
1847 # debugging inlined functions (even
1848 # when using DWARF2 as the debugging
1853 case "${target_cpu}" in
1855 CFLAGS="$CFLAGS -mieee"
1856 CXXFLAGS="$CXXFLAGS -mieee"
1860 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1
1863 CFLAGS="$CFLAGS -Wa,-xgot"
1864 CXXFLAGS="$CXXFLAGS -Wa,-xgot"
1871 MOZ_TOOLS_DIR=`echo $MOZ_TOOLS`
1873 AR_EXTRACT="$AR -extract"
1875 AR_FLAGS='-OUT:"$@"'
1882 # certain versions of cygwin's makedepend barf on the
1883 # #include <string> vs -I./dist/include/string issue so don't use it
1889 HOST_AR='lib -OUT:$@'
1890 HOST_RANLIB='echo ranlib'
1891 HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
1894 WARNINGS_AS_ERRORS='-WX'
1895 MOZ_OPTIMIZE_FLAGS='-O1'
1896 AR_FLAGS='-NOLOGO -OUT:"$@"'
1898 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1899 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(PDBFILE)"
1902 DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
1903 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
1905 IMPORT_LIB_SUFFIX=lib
1907 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
1910 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1911 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1913 MKSHLIB_UNFORCE_ALL=
1914 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1915 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1916 MOZ_DEBUG_FLAGS='-Zi'
1917 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
1919 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
1920 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
1922 RANLIB='echo not_ranlib'
1923 STRIP='echo not_strip'
1924 TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
1927 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
1929 LIBIDL_CFLAGS="-I$MOZ_TOOLS_DIR/include ${GLIB_CFLAGS}"
1930 LIBIDL_LIBS="$MOZ_TOOLS_DIR/lib/libidl-0.6_s.lib $MOZ_TOOLS_DIR/lib/glib-1.2_s.lib"
1933 AC_DEFINE(HAVE_SNPRINTF)
1939 AC_DEFINE(HW_THREADS)
1940 AC_DEFINE(STDC_HEADERS)
1941 AC_DEFINE(NEW_H, <new>)
1942 AC_DEFINE(WIN32_LEAN_AND_MEAN)
1944 TARGET_MD_ARCH=win32
1945 _PLATFORM_DEFAULT_TOOLKIT='windows'
1948 MOZ_ENABLE_POSTSCRIPT=
1949 MOZ_USER_DIR="Mozilla"
1953 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
1958 # certain versions of cygwin's makedepend barf on the
1959 # #include <string> vs -I./dist/include/string issue so don't use it
1961 if test -n "$GNU_CC"; then
1962 CC="$CC -mno-cygwin"
1963 CXX="$CXX -mno-cygwin"
1964 CPP="$CPP -mno-cygwin"
1965 CFLAGS="$CFLAGS -mms-bitfields"
1966 CXXFLAGS="$CXXFLAGS -mms-bitfields"
1967 DSO_LDOPTS='-shared'
1968 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1969 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1971 # Use temp file for windres (bug 213281)
1972 RCFLAGS='-O coff --use-temp-file'
1973 # mingw doesn't require kernel32, user32, and advapi32 explicitly
1974 LIBS="$LIBS -lgdi32 -lwinmm -lwsock32"
1975 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/lib -ljs$(MOZ_BITS)$(VERSION_NUMBER)'
1977 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core'
1978 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom'
1980 IMPORT_LIB_SUFFIX=dll.a
1982 TARGET_COMPILER_ABI=msvc
1986 AR='lib -NOLOGO -OUT:"$@"'
1988 RANLIB='echo not_ranlib'
1989 STRIP='echo not_strip'
1994 GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
1999 IMPORT_LIB_SUFFIX=lib
2000 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(PDBFILE) $(DSO_LDOPTS)'
2001 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(PDBFILE) $(DSO_LDOPTS)'
2003 MKSHLIB_UNFORCE_ALL=
2004 DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2005 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(PDBFILE)"
2006 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(PDBFILE)"
2007 LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
2008 MOZ_DEBUG_FLAGS='-Zi'
2009 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2010 WARNINGS_AS_ERRORS='-WX'
2011 MOZ_OPTIMIZE_FLAGS='-O1'
2012 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
2014 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
2015 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
2016 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2017 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2018 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
2019 if test $_MSC_VER -ge 1400; then
2020 LDFLAGS="$LDFLAGS -NXCOMPAT -SAFESEH"
2021 dnl For profile-guided optimization
2022 PROFILE_GEN_CFLAGS="-GL"
2023 PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2024 dnl XXX: PGO builds can fail with warnings treated as errors,
2025 dnl specifically "no profile data available" appears to be
2026 dnl treated as an error sometimes. This might be a consequence
2027 dnl of using WARNINGS_AS_ERRORS in some modules, combined
2028 dnl with the linker doing most of the work in the whole-program
2029 dnl optimization/PGO case. I think it's probably a compiler bug,
2030 dnl but we work around it here.
2031 PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2032 dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2033 dnl Probably also a compiler bug, but what can you do?
2034 PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2035 if test -n "$_USE_DYNAMICBASE"; then
2036 LDFLAGS="$LDFLAGS -DYNAMICBASE"
2040 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,jpeg$(MOZ_BITS)$(VERSION_NUMBER),$(DEPTH)/jpeg)'
2041 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,png,$(DEPTH)/modules/libimg/png)'
2042 AC_DEFINE(HAVE_SNPRINTF)
2048 AC_DEFINE(HW_THREADS)
2049 AC_DEFINE(STDC_HEADERS)
2050 AC_DEFINE(NEW_H, <new>)
2051 AC_DEFINE(WIN32_LEAN_AND_MEAN)
2052 TARGET_MD_ARCH=win32
2053 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2056 MOZ_ENABLE_POSTSCRIPT=
2057 MOZ_USER_DIR="Mozilla"
2059 dnl Hardcode to win95 for now - cls
2060 TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2062 dnl set NO_X11 defines here as the general check is skipped on win32
2066 dnl MinGW/MSYS doesn't provide or need cygpath
2071 MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2073 *-cygwin*|*-msvc*|*-mks*)
2074 CYGPATH_W="cygpath -a -w"
2075 CYGPATH_S="sed -e s|\\\\|/|g"
2076 MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
2080 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2082 if test -z "$MOZ_TOOLS"; then
2083 AC_MSG_ERROR([MOZ_TOOLS is not set])
2086 MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd`
2087 if test "$?" != "0" || test -z "$MOZ_TOOLS_DIR"; then
2088 AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2090 if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_DIR/bin:"` = 0; then
2091 AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2093 MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
2095 if test -n "$GLIB_PREFIX"; then
2096 _GLIB_PREFIX_DIR=`cd $GLIB_PREFIX && pwd`
2097 if test "$?" = "0"; then
2098 if test `echo ${PATH}: | grep -ic "$_GLIB_PREFIX_DIR/bin:"` = 0; then
2099 AC_MSG_ERROR([GLIB_PREFIX must be in your \$PATH.])
2101 _GLIB_PREFIX_DIR=`$CYGPATH_W $_GLIB_PREFIX_DIR | $CYGPATH_S`
2103 AC_MSG_ERROR([GLIB_PREFIX is set but "${GLIB_PREFIX}" is not a directory.])
2106 _GLIB_PREFIX_DIR=$MOZ_TOOLS_DIR
2108 if test ! -f "${_GLIB_PREFIX_DIR}/include/glib.h"; then
2109 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/include/glib.h .])
2111 GLIB_CFLAGS="-I${_GLIB_PREFIX_DIR}/include"
2112 if test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"; then
2113 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"
2114 elif test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"; then
2115 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"
2117 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/lib/glib-1.2.lib or $_GLIB_PREFIX_DIR/lib/glib-1.2_s.lib])
2120 if test -n "$LIBIDL_PREFIX"; then
2121 _LIBIDL_PREFIX_DIR=`cd $LIBIDL_PREFIX && pwd`
2122 if test "$?" = "0"; then
2123 if test `echo ${PATH}: | grep -ic "$_LIBIDL_PREFIX_DIR/bin:"` = 0; then
2124 AC_MSG_ERROR([LIBIDL_PREFIX must be in your \$PATH.])
2126 _LIBIDL_PREFIX_DIR=`$CYGPATH_W $_LIBIDL_PREFIX_DIR | $CYGPATH_S`
2128 AC_MSG_ERROR([LIBIDL_PREFIX is set but "${LIBIDL_PREFIX}" is not a directory.])
2131 _LIBIDL_PREFIX_DIR=$MOZ_TOOLS_DIR
2133 if test ! -f "${_LIBIDL_PREFIX_DIR}/include/libIDL/IDL.h"; then
2134 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/include/libIDL/IDL.h .])
2136 LIBIDL_CFLAGS="-I${_LIBIDL_PREFIX_DIR}/include ${GLIB_CFLAGS}"
2137 if test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"; then
2138 LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"
2140 elif test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"; then
2141 LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"
2143 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/lib/libidl-0.6.lib or $_LIBIDL_PREFIX_DIR/lib/libidl-0.6_s.lib])
2145 LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2148 *) # else cross-compiling
2149 if test -n "$GLIB_PREFIX"; then
2150 GLIB_CFLAGS="-I${GLIB_PREFIX}/include"
2151 if test -f "${GLIB_PREFIX}/lib/glib-1.2_s.lib"; then
2152 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2_s.lib"
2153 elif test -f "${GLIB_PREFIX}/lib/glib-1.2.lib"; then
2154 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2.lib"
2156 AC_MSG_ERROR([Cannot find $GLIB_PREFIX/lib/glib-1.2.lib or $GLIB_PREFIX/lib/glib-1.2_s.lib])
2159 if test -n "$LIBIDL_PREFIX"; then
2160 LIBIDL_CFLAGS="-I${LIBIDL_PREFIX}/include ${GLIB_CFLAGS}"
2161 if test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"; then
2162 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"
2164 elif test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"; then
2165 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"
2167 AC_MSG_ERROR([Cannot find $LIBIDL_PREFIX/lib/libIDL-0.6.lib or $LIBIDL_PREFIX/lib/libIDL-0.6_s.lib])
2170 LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2177 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])
2181 AC_CHECK_HEADERS(mmintrin.h oleacc.idl)
2185 AC_CHECK_HEADERS(atlbase.h wpcapi.h)
2201 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2208 CFLAGS="$CFLAGS -Dunix"
2209 CXXFLAGS="$CXXFLAGS -Dunix"
2210 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2212 DSO_PIC_CFLAGS='-fPIC -DPIC'
2213 DSO_LDOPTS='-shared'
2214 BIN_FLAGS='-Wl,--export-dynamic'
2216 DSO_PIC_CFLAGS='-fPIC -DPIC'
2217 DLL_SUFFIX=".so.1.0"
2218 DSO_LDOPTS='-shared'
2220 # This will fail on a.out systems prior to 1.5.1_ALPHA.
2221 MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2222 MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2223 if test "$LIBRUNPATH"; then
2224 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2226 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2227 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2232 AC_DEFINE(_QNX_SOURCE)
2235 WARNINGS_AS_ERRORS=''
2236 MOZ_OPTIMIZE_FLAGS="-O"
2237 MOZ_DEBUG_FLAGS="-gstabs"
2240 LIBS="$LIBS -lsocket -lstdc++"
2241 _DEFINES_CFLAGS='-Wp,-include -Wp,$(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
2242 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -Wp,-include -Wp,$(DEPTH)/mozilla-config.h -D_POSIX_C_SOURCE=199506'
2243 if test "$with_x" != "yes"
2245 _PLATFORM_DEFAULT_TOOLKIT="photon"
2246 TK_CFLAGS='-I/usr/include/photon'
2249 case "${target_cpu}" in
2251 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
2254 case "${host_cpu}" in
2262 DLL_SUFFIX=".so.1.0"
2264 DSO_PIC_CFLAGS='-fPIC'
2265 DSO_LDOPTS='-shared -fPIC'
2266 if test "$LIBRUNPATH"; then
2267 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2272 AC_DEFINE(NO_PW_GECOS)
2273 AC_DEFINE(NO_UDSOCK)
2274 AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
2276 MKSHLIB_FORCE_ALL='-all'
2277 MKSHLIB_UNFORCE_ALL='-none'
2279 AS_DASH_C_FLAG='-Wc/names=as_is'
2281 DSO_LDOPTS='-shared -auto_symvec'
2283 MOZ_DEBUG_LDFLAGS='-g'
2285 CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
2286 CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
2291 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2292 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2300 IMPORT_LIB_SUFFIX=lib
2303 _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2304 MOZ_ENABLE_POSTSCRIPT=
2307 MOZ_USER_DIR="Mozilla"
2309 if test "$MOZTOOLS"; then
2310 MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2312 AC_MSG_ERROR([MOZTOOLS is not set])
2316 if test -n "$GNU_CC"; then
2318 AC_DEFINE(XP_OS2_EMX)
2319 AC_DEFINE(OS2EMX_PLAIN_CHAR)
2320 AC_DEFINE(TCPV40HDRS)
2323 CFLAGS="$CFLAGS -Zomf"
2324 CXXFLAGS="$CXXFLAGS -Zomf"
2326 BIN_FLAGS='-Zlinker /ST:0x100000'
2330 WARNINGS_AS_ERRORS='-Werror'
2331 MOZ_DEBUG_FLAGS="-g -fno-inline"
2332 MOZ_OPTIMIZE_FLAGS="-O2"
2333 MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2334 MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcomct.lib'
2335 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
2336 LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2337 if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2338 DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2339 LDFLAGS="$LDFLAGS -Zhigh-mem"
2340 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2341 AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2344 # GCC for OS/2 currently predefines these, but we don't want them
2345 _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2346 _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2348 AC_CACHE_CHECK(for __declspec(dllexport),
2350 [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2352 ac_os2_declspec="yes",
2353 ac_os2_declspec="no")])
2354 if test "$ac_os2_declspec" = "yes"; then
2356 MOZ_OS2_USE_DECLSPEC='1'
2359 # Visual Age C++ build
2360 elif test "$VACPP" = "yes"; then
2361 MOZ_BUILD_ROOT=`pwd -D`
2364 AR_FLAGS='/NOL /NOI /O:$(subst /,\\,$@)'
2373 CFLAGS="/Q /qlibansi /Gm+ /Su4 /Mp /Tl9"
2374 CXXFLAGS="/Q /qlibansi /Gm+ /Su4 /Mp /Tl9 /Gx+"
2375 MOZ_DEBUG_FLAGS="/Ti+"
2376 WARNINGS_AS_ERRORS='-WX'
2377 MOZ_OPTIMIZE_FLAGS="/O+ /Gl+ /G5 /qarch=pentium"
2379 MOZ_DEBUG_LDFLAGS="/DE"
2380 MOZ_OPTIMIZE_LDFLAGS="/OPTFUNC /EXEPACK:2 /PACKCODE /PACKDATA"
2383 IMPLIB='implib /NOL /NOI'
2384 FILTER='cppfilt -q -B -P'
2385 AC_DEFINE(NO_ANSI_KEYWORDS)
2388 AC_DEFINE(XP_OS2_VACPP)
2389 AC_DEFINE(TCPV40HDRS)
2390 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2391 AC_DEFINE(STDC_HEADERS)
2392 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2393 MKSHLIB='$(LD) $(DSO_LDOPTS)'
2394 MKCSHLIB='$(LD) $(DSO_LDOPTS)'
2395 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2396 MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcomct.lib'
2397 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
2398 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2403 if test "$GNU_CC"; then
2404 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2405 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2408 MOZ_DEBUG_FLAGS='-g'
2409 ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
2410 CFLAGS="$CFLAGS -ieee"
2411 CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee -ptr $(DIST)/cxx_repository'
2412 DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
2415 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2416 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2417 MKSHLIB_FORCE_ALL='-all'
2418 MKSHLIB_UNFORCE_ALL='-none'
2419 dnl Might fix the libxpcom.so breakage on this platform as well....
2420 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2421 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2423 if test -z "$GNU_CXX"; then
2426 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2430 DIRENT_INO=d_stat.st_ino
2431 dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
2432 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2433 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2434 dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
2435 AC_DEFINE(STDC_HEADERS)
2436 if test "$no_x" = "yes"; then
2437 _PLATFORM_DEFAULT_TOOLKIT='photon'
2438 TK_CFLAGS='-I/usr/nto/include/photon'
2439 TK_LIBS='-lphoton -lphrender'
2444 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2445 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2446 CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
2447 if test ! "$GNU_CC"; then
2452 dnl the qsort routine under solaris is faulty
2455 TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2457 # $ORIGIN/.. is for shared libraries under components/ to locate shared
2458 # libraries one level up (e.g. libnspr4.so)
2459 LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..'"
2461 if test -z "$GNU_CC"; then
2463 MOZ_FIX_LINK_PATHS='-R $(LIBXUL_DIST)/bin'
2464 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2466 if test "$CPU_ARCH" != "sparc"; then
2467 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all"
2468 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife -norunpath"
2470 # Do not use -xbuiltin on SPARC to get around a bug of compiler
2471 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%none"
2472 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%none -features=tmplife -norunpath"
2475 LDFLAGS="-xildoff -z lazyload -z combreloc $LDFLAGS"
2476 if test -z "$CROSS_COMPILE" && test -f /usr/lib/ld/map.noexstk; then
2477 _SAVE_LDFLAGS=$LDFLAGS
2478 LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2479 AC_TRY_LINK([#include <stdio.h>],
2480 [printf("Hello World\n");],
2482 [LDFLAGS=$_SAVE_LDFLAGS])
2484 WARNINGS_AS_ERRORS='-Werror'
2485 MOZ_OPTIMIZE_FLAGS="-xO4"
2486 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2487 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) -G -z muldefs -h $@ -o $@'
2488 MKSHLIB_FORCE_ALL='-z allextract'
2489 MKSHLIB_UNFORCE_ALL='-z defaultextract'
2490 DSO_LDOPTS='-G -z muldefs'
2496 AS='/usr/ccs/bin/as'
2497 ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2499 TARGET_COMPILER_ABI="sunc"
2500 CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2501 CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2502 AC_MSG_CHECKING([for Forte compiler version >= WS6U2])
2506 [#if (__SUNPRO_CC < 0x530)
2509 _BAD_COMPILER=,_BAD_COMPILER=1)
2510 if test -n "$_BAD_COMPILER"; then
2512 AC_MSG_ERROR([Forte version WS6U2 or higher is required to build. Your compiler version is $CC_VERSION .])
2516 AC_MSG_RESULT([$_res])
2519 ASFLAGS="$ASFLAGS -fPIC"
2522 _WARNINGS_CXXFLAGS=''
2523 if test "$OS_RELEASE" = "5.3"; then
2524 AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2527 if test "$OS_RELEASE" = "5.5.1"; then
2528 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2533 DSO_LDOPTS='-Bdynamic'
2534 MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2535 MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2537 AC_DEFINE(SPRINTF_RETURNS_STRING)
2538 case "$(target_os)" in
2540 DLL_SUFFIX='.so.1.0'
2546 NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2550 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2555 dnl Only one oddball right now (QNX), but this gives us flexibility
2556 dnl if any other platforms need to override this in the future.
2557 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2559 dnl ========================================================
2560 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2561 dnl by now will not have any way to link most binaries (tests
2562 dnl as well as viewer, apprunner, etc.), because some symbols
2563 dnl will be left out of the "composite" .so's by ld as unneeded.
2564 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2565 dnl they can link in the static libs that provide the missing
2567 dnl ========================================================
2568 NO_LD_ARCHIVE_FLAGS=
2569 if test -z "$MKSHLIB_FORCE_ALL" || test -z "$MKSHLIB_UNFORCE_ALL"; then
2570 NO_LD_ARCHIVE_FLAGS=1
2574 NO_LD_ARCHIVE_FLAGS=
2577 NO_LD_ARCHIVE_FLAGS=
2580 NO_LD_ARCHIVE_FLAGS=
2582 *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince)
2583 if test -z "$GNU_CC"; then
2584 NO_LD_ARCHIVE_FLAGS=
2588 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2591 dnl Indicate that platform requires special thread safe
2592 dnl locking when starting up the OJI JVM
2593 dnl (see mozilla/modules/oji/src/nsJVMManager.cpp)
2594 dnl ========================================================
2597 AC_DEFINE(MOZ_OJI_REQUIRE_THREAD_SAFE_ON_STARTUP)
2601 dnl ========================================================
2602 dnl = Flags to strip unused symbols from .so components
2603 dnl ========================================================
2605 *-linux*|*-kfreebsd*-gnu)
2606 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2609 if test -z "$GNU_CC"; then
2610 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2612 if test -z "$GCC_USE_GNU_LD"; then
2613 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2615 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2620 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2623 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2625 *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince)
2626 if test -n "$GNU_CC"; then
2627 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2632 if test -z "$COMPILE_ENVIRONMENT"; then
2633 SKIP_COMPILER_CHECKS=1
2634 SKIP_LIBRARY_CHECKS=1
2637 if test -z "$SKIP_COMPILER_CHECKS"; then
2638 dnl Checks for typedefs, structures, and compiler characteristics.
2639 dnl ========================================================
2647 AC_STRUCT_ST_BLKSIZE
2648 AC_MSG_CHECKING(for siginfo_t)
2649 AC_CACHE_VAL(ac_cv_siginfo_t,
2650 [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2651 #include <signal.h>],
2653 [ac_cv_siginfo_t=true],
2654 [ac_cv_siginfo_t=false])])
2655 if test "$ac_cv_siginfo_t" = true ; then
2656 AC_DEFINE(HAVE_SIGINFO_T)
2662 dnl Visual Age for os/2 also defines size_t and off_t in certain
2663 dnl header files. These defines make Visual Age use the mozilla
2665 if test "$VACPP" = "yes"; then
2670 dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
2671 dnl ========================================================
2672 AC_MSG_CHECKING(for int16_t)
2673 AC_CACHE_VAL(ac_cv_int16_t,
2674 [AC_TRY_COMPILE([#include <stdio.h>
2675 #include <sys/types.h>],
2677 [ac_cv_int16_t=true],
2678 [ac_cv_int16_t=false])])
2679 if test "$ac_cv_int16_t" = true ; then
2680 AC_DEFINE(HAVE_INT16_T)
2685 AC_MSG_CHECKING(for int32_t)
2686 AC_CACHE_VAL(ac_cv_int32_t,
2687 [AC_TRY_COMPILE([#include <stdio.h>
2688 #include <sys/types.h>],
2690 [ac_cv_int32_t=true],
2691 [ac_cv_int32_t=false])])
2692 if test "$ac_cv_int32_t" = true ; then
2693 AC_DEFINE(HAVE_INT32_T)
2698 AC_MSG_CHECKING(for int64_t)
2699 AC_CACHE_VAL(ac_cv_int64_t,
2700 [AC_TRY_COMPILE([#include <stdio.h>
2701 #include <sys/types.h>],
2703 [ac_cv_int64_t=true],
2704 [ac_cv_int64_t=false])])
2705 if test "$ac_cv_int64_t" = true ; then
2706 AC_DEFINE(HAVE_INT64_T)
2711 AC_MSG_CHECKING(for int64)
2712 AC_CACHE_VAL(ac_cv_int64,
2713 [AC_TRY_COMPILE([#include <stdio.h>
2714 #include <sys/types.h>],
2717 [ac_cv_int64=false])])
2718 if test "$ac_cv_int64" = true ; then
2719 AC_DEFINE(HAVE_INT64)
2724 AC_MSG_CHECKING(for uint)
2725 AC_CACHE_VAL(ac_cv_uint,
2726 [AC_TRY_COMPILE([#include <stdio.h>
2727 #include <sys/types.h>],
2730 [ac_cv_uint=false])])
2731 if test "$ac_cv_uint" = true ; then
2732 AC_DEFINE(HAVE_UINT)
2737 AC_MSG_CHECKING(for uint_t)
2738 AC_CACHE_VAL(ac_cv_uint_t,
2739 [AC_TRY_COMPILE([#include <stdio.h>
2740 #include <sys/types.h>],
2742 [ac_cv_uint_t=true],
2743 [ac_cv_uint_t=false])])
2744 if test "$ac_cv_uint_t" = true ; then
2745 AC_DEFINE(HAVE_UINT_T)
2750 AC_MSG_CHECKING(for uint16_t)
2751 AC_CACHE_VAL(ac_cv_uint16_t,
2752 [AC_TRY_COMPILE([#include <stdio.h>
2753 #include <sys/types.h>],
2754 [uint16_t foo = 0;],
2755 [ac_cv_uint16_t=true],
2756 [ac_cv_uint16_t=false])])
2757 if test "$ac_cv_uint16_t" = true ; then
2758 AC_DEFINE(HAVE_UINT16_T)
2764 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
2765 dnl are defined when compiling C++ but not C. Since the result of this
2766 dnl test is used only in C++, do it in C++.
2769 AC_MSG_CHECKING(for uname.domainname)
2770 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
2771 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2772 [ struct utsname *res; char *domain;
2773 (void)uname(res); if (res != 0) { domain = res->domainname; } ],
2774 [ac_cv_have_uname_domainname_field=true],
2775 [ac_cv_have_uname_domainname_field=false])])
2777 if test "$ac_cv_have_uname_domainname_field" = "true"; then
2778 AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
2784 AC_MSG_CHECKING(for uname.__domainname)
2785 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
2786 [AC_TRY_COMPILE([#include <sys/utsname.h>],
2787 [ struct utsname *res; char *domain;
2788 (void)uname(res); if (res != 0) { domain = res->__domainname; } ],
2789 [ac_cv_have_uname_us_domainname_field=true],
2790 [ac_cv_have_uname_us_domainname_field=false])])
2792 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
2793 AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
2801 dnl Check for usable wchar_t (2 bytes, unsigned)
2802 dnl (we really don't need the unsignedness check anymore)
2803 dnl ========================================================
2805 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
2806 ac_cv_have_usable_wchar_v2,
2807 [AC_TRY_COMPILE([#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_v2="yes",
2812 ac_cv_have_usable_wchar_v2="no")])
2813 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
2814 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2815 HAVE_CPP_2BYTE_WCHAR_T=1
2817 dnl This is really gcc-only
2818 dnl Do this test using CXX only since some versions of gcc
2819 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
2820 dnl only have short-wchar support for c++.
2821 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
2825 _SAVE_CXXFLAGS=$CXXFLAGS
2826 CXXFLAGS="$CXXFLAGS -fshort-wchar"
2828 AC_CACHE_CHECK(for compiler -fshort-wchar option,
2829 ac_cv_have_usable_wchar_option_v2,
2830 [AC_TRY_LINK([#include <stddef.h>
2831 $configure_static_assert_macros],
2832 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
2833 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
2834 ac_cv_have_usable_wchar_option_v2="yes",
2835 ac_cv_have_usable_wchar_option_v2="no")])
2837 if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
2838 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
2839 HAVE_CPP_2BYTE_WCHAR_T=1
2841 CXXFLAGS=$_SAVE_CXXFLAGS
2846 dnl Check for .hidden assembler directive and visibility attribute.
2847 dnl Borrowed from glibc configure.in
2848 dnl ===============================================================
2849 if test "$GNU_CC"; then
2850 AC_CACHE_CHECK(for visibility(hidden) attribute,
2851 ac_cv_visibility_hidden,
2852 [cat > conftest.c <<EOF
2853 int foo __attribute__ ((visibility ("hidden"))) = 1;
2855 ac_cv_visibility_hidden=no
2856 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2857 if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2858 ac_cv_visibility_hidden=yes
2863 if test "$ac_cv_visibility_hidden" = "yes"; then
2864 AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2866 AC_CACHE_CHECK(for visibility(default) attribute,
2867 ac_cv_visibility_default,
2868 [cat > conftest.c <<EOF
2869 int foo __attribute__ ((visibility ("default"))) = 1;
2871 ac_cv_visibility_default=no
2872 if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2873 if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2874 ac_cv_visibility_default=yes
2879 if test "$ac_cv_visibility_default" = "yes"; then
2880 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2882 AC_CACHE_CHECK(for visibility pragma support,
2883 ac_cv_visibility_pragma,
2884 [cat > conftest.c <<EOF
2885 #pragma GCC visibility push(hidden)
2887 #pragma GCC visibility push(default)
2888 int foo_default = 1;
2890 ac_cv_visibility_pragma=no
2891 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2892 if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
2893 if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
2894 ac_cv_visibility_pragma=yes
2900 if test "$ac_cv_visibility_pragma" = "yes"; then
2901 AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
2902 ac_cv_have_visibility_class_bug,
2903 [cat > conftest.c <<EOF
2904 #pragma GCC visibility push(hidden)
2905 struct __attribute__ ((visibility ("default"))) TestStruct {
2908 __attribute__ ((visibility ("default"))) void TestFunc() {
2912 ac_cv_have_visibility_class_bug=no
2913 if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2914 ac_cv_have_visibility_class_bug=yes
2916 if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
2917 ac_cv_have_visibility_class_bug=yes
2920 rm -rf conftest.{c,S}
2923 AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
2924 ac_cv_have_visibility_builtin_bug,
2925 [cat > conftest.c <<EOF
2926 #pragma GCC visibility push(hidden)
2927 #pragma GCC visibility push(default)
2929 #pragma GCC visibility pop
2931 __attribute__ ((visibility ("default"))) void Func() {
2933 memset(c, 0, sizeof(c));
2936 ac_cv_have_visibility_builtin_bug=no
2937 if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2938 ac_cv_have_visibility_builtin_bug=yes
2940 if test `grep -c "@PLT" conftest.S` = 0; then
2941 ac_cv_visibility_builtin_bug=yes
2944 rm -f conftest.{c,S}
2946 if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
2947 "$ac_cv_have_visibility_class_bug" = "no"; then
2948 VISIBILITY_FLAGS='-I$(DIST)/include/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
2949 WRAP_SYSTEM_INCLUDES=1
2951 VISIBILITY_FLAGS='-fvisibility=hidden'
2952 fi # have visibility pragma bug
2953 fi # have visibility pragma
2954 fi # have visibility(default) attribute
2955 fi # have visibility(hidden) attribute
2958 # visibility hidden flag for Sun Studio on Solaris
2959 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
2960 VISIBILITY_FLAGS='-xldscope=hidden'
2961 fi # Sun Studio on Solaris
2963 AC_SUBST(WRAP_SYSTEM_INCLUDES)
2964 AC_SUBST(VISIBILITY_FLAGS)
2966 dnl Checks for header files.
2967 dnl ========================================================
2969 case "$target_os" in
2971 # for stuff like -lXshm
2972 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2975 AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
2976 AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
2977 AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
2978 AC_CHECK_HEADERS(malloc.h)
2979 AC_CHECK_HEADERS(X11/XKBlib.h)
2981 dnl These are all the places some variant of statfs can be hiding.
2982 AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2984 dnl Try for MMX support
2985 dnl NB - later gcc versions require -mmmx for this header to be successfully
2986 dnl included (or another option which implies it, such as -march=pentium-mmx)
2987 AC_CHECK_HEADERS(mmintrin.h)
2989 dnl Check whether the compiler supports the new-style C++ standard
2990 dnl library headers (i.e. <new>) or needs the old "new.h"
2993 AC_CHECK_HEADER(new, [NEW_H=new])
2994 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
2997 AC_ARG_ENABLE(dtrace,
2998 [ --enable-dtrace build with dtrace support if available (default=no)],
2999 [enable_dtrace="yes"],)
3000 if test "x$enable_dtrace" = "xyes"; then
3001 AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
3002 if test -n "$HAVE_DTRACE"; then
3003 AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
3005 AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
3008 AC_SUBST(HAVE_DTRACE)
3014 AC_CHECK_HEADERS(sys/cdefs.h)
3018 dnl Checks for libraries.
3019 dnl ========================================================
3024 AC_CHECK_LIB(c_r, gethostbyname_r)
3028 dnl We don't want to link with libdl even if it's present on OS X, since
3029 dnl it's not used and not part of the default installation.
3030 dnl The same goes for BeOS.
3031 dnl We don't want to link against libm or libpthread on Darwin since
3032 dnl they both are just symlinks to libSystem and explicitly linking
3033 dnl against libSystem causes issues when debugging (see bug 299601).
3040 AC_CHECK_LIB(m, atan)
3041 AC_CHECK_LIB(dl, dlopen,
3042 AC_CHECK_HEADER(dlfcn.h,
3044 AC_DEFINE(HAVE_LIBDL)))
3048 _SAVE_CFLAGS="$CFLAGS"
3049 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3050 AC_CHECK_FUNCS(dladdr)
3051 CFLAGS="$_SAVE_CFLAGS"
3053 if test ! "$GNU_CXX"; then
3057 AC_CHECK_LIB(C_r, demangle)
3060 AC_CHECK_LIB(C, demangle)
3064 AC_CHECK_LIB(socket, socket)
3067 XLIBS="$X_EXTRA_LIBS"
3069 dnl ========================================================
3070 dnl Checks for X libraries.
3071 dnl Ordering is important.
3072 dnl Xt is dependent upon SM as of X11R6
3073 dnl ========================================================
3074 if test "$no_x" = "yes"; then
3077 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3078 XLIBS="-lX11 $XLIBS"
3079 _SAVE_LDFLAGS="$LDFLAGS"
3080 LDFLAGS="$XLDFLAGS $LDFLAGS"
3081 AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3082 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3083 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3084 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3087 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3088 unset ac_cv_lib_Xt_XtFree
3089 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3090 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
3091 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3092 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3095 # AIX needs the motif library linked before libXt to prevent
3096 # crashes in plugins linked against Motif - Bug #98892
3097 case "${target_os}" in
3099 XT_LIBS="-lXm $XT_LIBS"
3103 dnl ========================================================
3104 dnl = Check for XShm
3105 dnl ========================================================
3106 AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3108 AC_CHECK_HEADER(X11/extensions/XShm.h)
3109 if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" &&
3110 test -n "$_HAVE_XSHM_XEXT"; then
3111 AC_DEFINE(HAVE_XSHM)
3114 dnl ========================================================
3116 dnl ========================================================
3117 AC_CHECK_LIB(XIE, XieFloGeometry, [MOZ_XIE_LIBS="-lXIE"],,
3119 AC_CHECK_HEADER(X11/extensions/XIElib.h)
3121 if test "$MOZ_XIE_LIBS"; then
3122 dnl ====================================================
3123 dnl = If XIE is present and is desired, turn it on
3124 dnl ====================================================
3134 LDFLAGS="$_SAVE_LDFLAGS"
3136 dnl ========================================================
3137 dnl = Check for freetype2 and its functionality
3138 dnl ========================================================
3139 AC_CHECK_FT2(6.1.0, [_HAVE_FREETYPE2=1], [_HAVE_FREETYPE2=])
3141 if test "$_HAVE_FREETYPE2"; then
3143 _SAVE_CFLAGS="$CFLAGS"
3144 LIBS="$LIBS $FT2_LIBS"
3145 CFLAGS="$CFLAGS $FT2_CFLAGS"
3147 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
3148 ac_cv_member_FT_Bitmap_Size_y_ppem,
3149 [AC_TRY_COMPILE([#include <ft2build.h>
3150 #include FT_FREETYPE_H],
3152 if (sizeof s.y_ppem) return 0;
3154 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
3155 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
3156 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
3157 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
3159 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
3161 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
3162 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
3163 [FT_Bitmap_Size structure includes y_ppem field])
3165 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
3168 CFLAGS="$_SAVE_CFLAGS"
3178 dnl ========================================================
3179 dnl = pthread support
3180 dnl = Start by checking whether the system support pthreads
3181 dnl ========================================================
3182 case "$target_os" in
3187 MOZ_CHECK_PTHREADS(pthreads,
3188 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3189 MOZ_CHECK_PTHREADS(pthread,
3190 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3191 MOZ_CHECK_PTHREADS(c_r,
3192 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3193 MOZ_CHECK_PTHREADS(c,
3202 dnl ========================================================
3203 dnl Check the command line for --with-pthreads
3204 dnl ========================================================
3205 MOZ_ARG_WITH_BOOL(pthreads,
3206 [ --with-pthreads Force use of system pthread library with NSPR ],
3207 [ if test "$USE_PTHREADS"x = x; then
3208 AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3214 dnl ========================================================
3215 dnl Do the platform specific pthread hackery
3216 dnl ========================================================
3217 if test "$USE_PTHREADS"x != x
3220 dnl See if -pthread is supported.
3223 ac_cv_have_dash_pthread=no
3224 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3225 echo 'int main() { return 0; }' | cat > conftest.c
3226 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3227 if test $? -eq 0; then
3228 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3229 ac_cv_have_dash_pthread=yes
3230 case "$target_os" in
3232 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3235 CFLAGS="$CFLAGS -pthread"
3236 CXXFLAGS="$CXXFLAGS -pthread"
3242 AC_MSG_RESULT($ac_cv_have_dash_pthread)
3245 dnl See if -pthreads is supported.
3247 ac_cv_have_dash_pthreads=no
3248 if test "$ac_cv_have_dash_pthread" = "no"; then
3249 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3250 echo 'int main() { return 0; }' | cat > conftest.c
3251 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3252 if test $? -eq 0; then
3253 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3254 ac_cv_have_dash_pthreads=yes
3255 CFLAGS="$CFLAGS -pthreads"
3256 CXXFLAGS="$CXXFLAGS -pthreads"
3260 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
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"
3271 _PTHREAD_LDFLAGS="-lc_r"
3275 *-*-openbsd*|*-*-bsdi*)
3276 AC_DEFINE(_REENTRANT)
3277 AC_DEFINE(_THREAD_SAFE)
3278 dnl -pthread links in -lc_r, so don't specify it explicitly.
3279 if test "$ac_cv_have_dash_pthread" = "yes"; then
3280 _PTHREAD_LDFLAGS="-pthread"
3284 *-*-linux*|*-*-kfreebsd*-gnu)
3285 AC_DEFINE(_REENTRANT)
3289 AC_DEFINE(_REENTRANT)
3293 AC_DEFINE(_REENTRANT)
3297 AC_DEFINE(_REENTRANT)
3301 AC_DEFINE(_REENTRANT)
3305 AC_DEFINE(_REENTRANT)
3306 if test ! "$GNU_CC"; then
3307 CFLAGS="$CFLAGS -mt"
3308 CXXFLAGS="$CXXFLAGS -mt"
3312 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3315 dnl ========================================================
3316 dnl See if mmap sees writes
3317 dnl For cross compiling, just define it as no, which is a safe default
3318 dnl ========================================================
3319 AC_MSG_CHECKING(whether mmap() sees write()s)
3325 #include <sys/mman.h>
3326 #include <sys/types.h>
3327 #include <sys/stat.h>
3330 char fname[] = "conftest.file";
3331 char zbuff[1024]; /* Fractional page is probably worst case */
3338 fd = open(fname, O_RDWR | O_CREAT, 0660);
3341 write(fd, zbuff, sizeof(zbuff));
3342 lseek(fd, 0, SEEK_SET);
3343 map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
3344 if(map==(char*)-1) return 2;
3345 for(i=0; fname[i]; i++) {
3346 int rc = write(fd, &fname[i], 1);
3347 if(map[i]!=fname[i]) return 4;
3354 AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
3356 AC_MSG_RESULT("$result")
3358 if test "$result" = "no"; then
3359 AC_DEFINE(MMAP_MISSES_WRITES)
3363 dnl Checks for library functions.
3364 dnl ========================================================
3365 AC_PROG_GCC_TRADITIONAL
3367 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 truncate64 statvfs64)
3368 AC_CHECK_FUNCS(flockfile getpagesize)
3370 dnl localtime_r and strtok_r are only present on MacOS version 10.2 and higher
3371 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100200"; then
3372 AC_CHECK_FUNCS(localtime_r strtok_r)
3375 dnl check for wcrtomb/mbrtowc
3376 dnl =======================================================================
3377 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3380 AC_CACHE_CHECK(for wcrtomb,
3382 [AC_TRY_LINK([#include <wchar.h>],
3383 [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3384 ac_cv_have_wcrtomb="yes",
3385 ac_cv_have_wcrtomb="no")])
3386 if test "$ac_cv_have_wcrtomb" = "yes"; then
3387 AC_DEFINE(HAVE_WCRTOMB)
3389 AC_CACHE_CHECK(for mbrtowc,
3391 [AC_TRY_LINK([#include <wchar.h>],
3392 [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3393 ac_cv_have_mbrtowc="yes",
3394 ac_cv_have_mbrtowc="no")])
3395 if test "$ac_cv_have_mbrtowc" = "yes"; then
3396 AC_DEFINE(HAVE_MBRTOWC)
3403 ac_cv_func_res_ninit,
3406 #define _BSD_SOURCE 1
3410 [int foo = res_ninit(&_res);],
3411 [ac_cv_func_res_ninit=yes],
3412 [ac_cv_func_res_ninit=no])
3415 if test "$ac_cv_func_res_ninit" = "yes"; then
3416 AC_DEFINE(HAVE_RES_NINIT)
3417 dnl must add the link line we do something as foolish as this... dougt
3419 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3420 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3425 [for gnu_get_libc_version()],
3426 ac_cv_func_gnu_get_libc_version,
3428 #ifdef HAVE_GNU_LIBC_VERSION_H
3429 #include <gnu/libc-version.h>
3432 [const char *glibc_version = gnu_get_libc_version();],
3433 [ac_cv_func_gnu_get_libc_version=yes],
3434 [ac_cv_func_gnu_get_libc_version=no]
3438 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3439 AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3443 os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|beos*)
3447 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3448 AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3449 AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3451 LIBS="$LIBS $_ICONV_LIBS"
3460 iconv_t h = iconv_open("", "");
3461 iconv(h, NULL, NULL, NULL, NULL);
3464 [ac_cv_func_iconv=yes],
3465 [ac_cv_func_iconv=no]
3468 if test "$ac_cv_func_iconv" = "yes"; then
3469 AC_DEFINE(HAVE_ICONV)
3470 DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3471 LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3472 LIBICONV="$_ICONV_LIBS"
3474 [for iconv() with const input],
3475 ac_cv_func_const_iconv,
3481 const char *input = "testing";
3482 iconv_t h = iconv_open("", "");
3483 iconv(h, &input, NULL, NULL, NULL);
3486 [ac_cv_func_const_iconv=yes],
3487 [ac_cv_func_const_iconv=no]
3490 if test "$ac_cv_func_const_iconv" = "yes"; then
3491 AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3503 dnl **********************
3504 dnl *** va_copy checks ***
3505 dnl **********************
3506 dnl we currently check for all three va_copy possibilities, so we get
3507 dnl all results in config.log for bug reports.
3508 AC_MSG_CHECKING(for an implementation of va_copy())
3509 AC_CACHE_VAL(ac_cv_va_copy,[
3512 void f (int i, ...) {
3513 va_list args1, args2;
3514 va_start (args1, i);
3515 va_copy (args2, args1);
3516 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3518 va_end (args1); va_end (args2);
3520 int main() { f (0, 42); return 0; }],
3526 AC_MSG_RESULT($ac_cv_va_copy)
3527 AC_MSG_CHECKING(for an implementation of __va_copy())
3528 AC_CACHE_VAL(ac_cv___va_copy,[
3531 void f (int i, ...) {
3532 va_list args1, args2;
3533 va_start (args1, i);
3534 __va_copy (args2, args1);
3535 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3537 va_end (args1); va_end (args2);
3539 int main() { f (0, 42); return 0; }],
3540 ac_cv___va_copy=yes,
3545 AC_MSG_RESULT($ac_cv___va_copy)
3546 AC_MSG_CHECKING(whether va_lists can be copied by value)
3547 AC_CACHE_VAL(ac_cv_va_val_copy,[
3550 void f (int i, ...) {
3551 va_list args1, args2;
3552 va_start (args1, i);
3554 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3556 va_end (args1); va_end (args2);
3558 int main() { f (0, 42); return 0; }],
3559 ac_cv_va_val_copy=yes,
3560 ac_cv_va_val_copy=no,
3561 ac_cv_va_val_copy=yes
3564 if test "x$ac_cv_va_copy" = "xyes"; then
3565 AC_DEFINE(VA_COPY, va_copy)
3566 AC_DEFINE(HAVE_VA_COPY)
3567 elif test "x$ac_cv___va_copy" = "xyes"; then
3568 AC_DEFINE(VA_COPY, __va_copy)
3569 AC_DEFINE(HAVE_VA_COPY)
3572 if test "x$ac_cv_va_val_copy" = "xno"; then
3573 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3575 AC_MSG_RESULT($ac_cv_va_val_copy)
3577 dnl Check for dll-challenged libc's.
3578 dnl This check is apparently only needed for Linux.
3581 dnl ===================================================================
3584 rm -rf conftest* _conftest
3586 cat >> conftest.C <<\EOF
3591 void __dump_link_map(void) {
3592 struct link_map *map = _dl_loaded;
3593 while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
3596 dlopen("./conftest1.so",RTLD_LAZY);
3597 dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
3598 dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
3599 dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
3603 /* _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).*/
3604 int main() { printf("./conftest1.so\n"); }
3608 $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
3610 cat >> conftest1.C <<\EOF
3612 void foo(void) {printf("foo in dll called\n");}
3614 ${CXX-g++} -fPIC -c -g conftest1.C
3615 ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
3616 ${CXX-g++} -g conftest.C -o conftest -ldl
3617 cp -f conftest1.so conftest _conftest
3619 if test `./conftest | grep conftest1.so | wc -l` -gt 1
3622 echo "*** Your libc has a bug that can result in loading the same dynamic"
3623 echo "*** library multiple times. This bug is known to be fixed in glibc-2.0.7-32"
3624 echo "*** or later. However, if you choose not to upgrade, the only effect"
3625 echo "*** will be excessive memory usage at runtime."
3629 rm -rf conftest* _conftest
3630 dnl ===================================================================
3634 dnl ===================================================================
3635 dnl ========================================================
3636 dnl By default, turn rtti and exceptions off on g++/egcs
3637 dnl ========================================================
3638 if test "$GNU_CXX"; then
3640 AC_MSG_CHECKING(for C++ exceptions flag)
3642 dnl They changed -f[no-]handle-exceptions to -f[no-]exceptions in g++ 2.8
3643 AC_CACHE_VAL(ac_cv_cxx_exceptions_flags,
3644 [echo "int main() { return 0; }" | cat > conftest.C
3646 ${CXX-g++} ${CXXFLAGS} -c -fno-handle-exceptions conftest.C > conftest.out 2>&1
3648 if egrep "warning.*renamed" conftest.out >/dev/null; then
3649 ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-exceptions
3651 ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-handle-exceptions
3656 AC_MSG_RESULT($ac_cv_cxx_exceptions_flags)
3657 _MOZ_EXCEPTIONS_FLAGS_OFF=$ac_cv_cxx_exceptions_flags
3658 _MOZ_EXCEPTIONS_FLAGS_ON=`echo $ac_cv_cxx_exceptions_flags | sed 's|no-||'`
3661 dnl ========================================================
3662 dnl Put your C++ language/feature checks below
3663 dnl ========================================================
3667 if test "$GNU_CC"; then
3668 AC_CACHE_CHECK(for gcc 3.0 ABI,
3669 ac_cv_gcc_three_abi,
3672 #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
3678 ac_cv_gcc_three_abi="yes",
3679 ac_cv_gcc_three_abi="no")])
3680 if test "$ac_cv_gcc_three_abi" = "yes"; then
3681 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc3}"
3684 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-gcc2}"
3687 AC_SUBST(HAVE_GCC3_ABI)
3690 AC_CACHE_CHECK(for C++ \"explicit\" keyword,
3692 [AC_TRY_COMPILE(class X {
3693 public: explicit X(int i) : i_(i) {}
3697 ac_cv_cpp_explicit=yes,
3698 ac_cv_cpp_explicit=no)])
3699 if test "$ac_cv_cpp_explicit" = yes ; then
3700 AC_DEFINE(HAVE_CPP_EXPLICIT)
3703 AC_CACHE_CHECK(for C++ \"typename\" keyword,
3705 [AC_TRY_COMPILE(class param {
3707 typedef unsigned long num_type;
3710 template <class T> class tplt {
3712 typedef typename T::num_type t_num_type;
3713 t_num_type foo(typename T::num_type num) {
3719 ac_cv_cpp_typename=yes,
3720 ac_cv_cpp_typename=no)])
3721 if test "$ac_cv_cpp_typename" = yes ; then
3722 AC_DEFINE(HAVE_CPP_TYPENAME)
3725 dnl Check for support of modern template specialization syntax
3726 dnl Test code and requirement from scc@netscape.com.
3727 dnl Autoconf cut-and-paste job by waterson@netscape.com
3728 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
3729 ac_cv_cpp_modern_specialize_template_syntax,
3730 [AC_TRY_COMPILE(template <class T> struct X { int a; };
3732 template <> struct X<Y> { double a; };,
3735 ac_cv_cpp_modern_specialize_template_syntax=yes,
3736 ac_cv_cpp_modern_specialize_template_syntax=no)])
3737 if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
3738 AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
3742 dnl Some compilers support only full specialization, and some don't.
3743 AC_CACHE_CHECK(whether partial template specialization works,
3744 ac_cv_cpp_partial_specialization,
3745 [AC_TRY_COMPILE(template <class T> class Foo {};
3746 template <class T> class Foo<T*> {};,
3748 ac_cv_cpp_partial_specialization=yes,
3749 ac_cv_cpp_partial_specialization=no)])
3750 if test "$ac_cv_cpp_partial_specialization" = yes ; then
3751 AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
3754 dnl Some compilers have limited support for operators with templates;
3755 dnl specifically, it is necessary to define derived operators when a base
3756 dnl class's operator declaration should suffice.
3757 AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
3758 ac_cv_need_derived_template_operators,
3759 [AC_TRY_COMPILE([template <class T> class Base { };
3761 Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
3762 template <class T> class Derived : public Base<T> { };],
3763 [Derived<char> a, b;
3764 Base<char> c = a + b;
3766 ac_cv_need_derived_template_operators=no,
3767 ac_cv_need_derived_template_operators=yes)])
3768 if test "$ac_cv_need_derived_template_operators" = yes ; then
3769 AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
3773 dnl Some compilers have trouble detecting that a template class
3774 dnl that derives from another template is actually an instance
3775 dnl of the base class. This test checks for that.
3776 AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
3777 ac_cv_need_cpp_template_cast_to_base,
3778 [AC_TRY_COMPILE([template <class T> class Base { };
3779 template <class T> class Derived : public Base<T> { };
3780 template <class T> int foo(const Base<T>&) { return 0; }],
3781 [Derived<char> bar; return foo(bar);],
3782 ac_cv_need_cpp_template_cast_to_base=no,
3783 ac_cv_need_cpp_template_cast_to_base=yes)])
3784 if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
3785 AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
3788 dnl Some compilers have trouble resolving the ambiguity between two
3789 dnl functions whose arguments differ only by cv-qualifications.
3790 AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
3791 ac_cv_can_resolve_const_ambiguity,
3793 template <class T> class ptrClass {
3797 template <class T> T* a(ptrClass<T> *arg) {
3802 const T* a(const ptrClass<T> *arg) {
3808 ac_cv_can_resolve_const_ambiguity=yes,
3809 ac_cv_can_resolve_const_ambiguity=no)])
3810 if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
3811 AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
3815 dnl We don't do exceptions on unix. The only reason this used to be here
3816 dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses
3817 dnl exceptions. But, we turn exceptions off by default and this test breaks.
3818 dnl So im commenting this out until someone writes some artificial
3819 dnl intelligence to detect not only if the compiler has exceptions, but if
3820 dnl they are enabled as well.
3822 dnl AC_CACHE_CHECK(for C++ \"exceptions\",
3823 dnl ac_cv_cpp_exceptions,
3824 dnl [AC_TRY_COMPILE(class X { public: X() {} };
3825 dnl static void F() { throw X(); },
3826 dnl try { F(); } catch(X & e) { },
3827 dnl ac_cv_cpp_exceptions=yes,
3828 dnl ac_cv_cpp_exceptions=no)])
3829 dnl if test $ac_cv_cpp_exceptions = yes ; then
3830 dnl AC_DEFINE(HAVE_CPP_EXCEPTIONS)
3833 dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
3834 dnl supports it well enough to allow us to use it to change access, but not
3835 dnl to resolve ambiguity. The next two tests determine how well the |using|
3836 dnl keyword is supported.
3838 dnl Check to see if we can change access with |using|. Test both a
3839 dnl legal and an illegal example.
3840 AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
3841 ac_cv_cpp_access_changing_using2,
3843 class A { protected: int foo() { return 0; } };
3844 class B : public A { public: using A::foo; };,
3845 B b; return b.foo();,
3847 class A { public: int foo() { return 1; } };
3848 class B : public A { private: using A::foo; };,
3849 B b; return b.foo();,
3850 ac_cv_cpp_access_changing_using2=no,
3851 ac_cv_cpp_access_changing_using2=yes)],
3852 ac_cv_cpp_access_changing_using2=no)])
3853 if test "$ac_cv_cpp_access_changing_using2" = yes ; then
3854 AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
3857 dnl Check to see if we can resolve ambiguity with |using|.
3858 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
3859 ac_cv_cpp_ambiguity_resolving_using,
3860 [AC_TRY_COMPILE(class X {
3861 public: int go(const X&) {return 3;}
3862 int jo(const X&) {return 3;}
3864 class Y : public X {
3865 public: int go(int) {return 2;}
3866 int jo(int) {return 2;}
3868 private: using X::go;
3871 ac_cv_cpp_ambiguity_resolving_using=yes,
3872 ac_cv_cpp_ambiguity_resolving_using=no)])
3873 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
3874 AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
3877 dnl Check to see if the |std| namespace is supported. If so, we'll want
3878 dnl to qualify any standard library calls with "std::" to ensure that
3879 dnl those functions can be resolved.
3880 AC_CACHE_CHECK(for \"std::\" namespace,
3881 ac_cv_cpp_namespace_std,
3882 [AC_TRY_COMPILE([#include <algorithm>],
3883 [return std::min(0, 1);],
3884 ac_cv_cpp_namespace_std=yes,
3885 ac_cv_cpp_namespace_std=no)])
3886 if test "$ac_cv_cpp_namespace_std" = yes ; then
3887 AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
3890 dnl Older compilers are overly ambitious with respect to using the standard
3891 dnl template library's |operator!=()| when |operator==()| is defined. In
3892 dnl which case, defining |operator!=()| in addition to |operator==()| causes
3893 dnl ambiguity at compile-time. This test checks for that case.
3894 AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
3895 ac_cv_cpp_unambiguous_std_notequal,
3896 [AC_TRY_COMPILE([#include <algorithm>
3898 int operator==(const T1&, const T1&) { return 0; }
3899 int operator!=(const T1&, const T1&) { return 0; }],
3900 [T1 a,b; return a != b;],
3901 ac_cv_cpp_unambiguous_std_notequal=unambiguous,
3902 ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
3903 if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
3904 AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
3908 AC_CACHE_CHECK(for C++ reinterpret_cast,
3909 ac_cv_cpp_reinterpret_cast,
3910 [AC_TRY_COMPILE(struct X { int i; };
3911 struct Y { int i; };,
3912 X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
3913 ac_cv_cpp_reinterpret_cast=yes,
3914 ac_cv_cpp_reinterpret_cast=no)])
3915 if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
3916 AC_DEFINE(HAVE_CPP_NEW_CASTS)
3919 dnl See if a dynamic_cast to void* gives the most derived object.
3920 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
3921 ac_cv_cpp_dynamic_cast_void_ptr,
3922 [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
3923 class Y { int j; public: virtual ~Y() { } };
3924 class Z : public X, public Y { int k; };
3930 return !((((void*)&mdo != (void*)subx) &&
3931 ((void*)&mdo == dynamic_cast<void*>(subx))) ||
3932 (((void*)&mdo != (void*)suby) &&
3933 ((void*)&mdo == dynamic_cast<void*>(suby))));
3935 ac_cv_cpp_dynamic_cast_void_ptr=yes,
3936 ac_cv_cpp_dynamic_cast_void_ptr=no,
3937 ac_cv_cpp_dynamic_cast_void_ptr=no)])
3938 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
3939 AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
3943 dnl note that this one is reversed - if the test fails, then
3944 dnl we require implementations of unused virtual methods. Which
3945 dnl really blows because it means we'll have useless vtable
3947 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
3948 ac_cv_cpp_unused_required,
3949 [AC_TRY_LINK(class X {private: virtual void never_called();};,
3951 ac_cv_cpp_unused_required=no,
3952 ac_cv_cpp_unused_required=yes)])
3953 if test "$ac_cv_cpp_unused_required" = yes ; then
3954 AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
3958 dnl Some compilers have trouble comparing a constant reference to a templatized
3959 dnl class to zero, and require an explicit operator==() to be defined that takes
3960 dnl an int. This test separates the strong from the weak.
3962 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
3963 ac_cv_trouble_comparing_to_zero,
3964 [AC_TRY_COMPILE([#include <algorithm>
3965 template <class T> class Foo {};
3967 template <class T> int operator==(const T2*, const T&) { return 0; }
3968 template <class T> int operator!=(const T2*, const T&) { return 0; }],
3969 [Foo<int> f; return (0 != f);],
3970 ac_cv_trouble_comparing_to_zero=no,
3971 ac_cv_trouble_comparing_to_zero=yes)])
3972 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
3973 AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
3978 dnl End of C++ language/feature checks
3981 dnl ========================================================
3982 dnl = Internationalization checks
3983 dnl ========================================================
3985 dnl Internationalization and Locale support is different
3986 dnl on various UNIX platforms. Checks for specific i18n
3987 dnl features go here.
3989 dnl check for LC_MESSAGES
3990 AC_CACHE_CHECK(for LC_MESSAGES,
3991 ac_cv_i18n_lc_messages,
3992 [AC_TRY_COMPILE([#include <locale.h>],
3993 [int category = LC_MESSAGES;],
3994 ac_cv_i18n_lc_messages=yes,
3995 ac_cv_i18n_lc_messages=no)])
3996 if test "$ac_cv_i18n_lc_messages" = yes; then
3997 AC_DEFINE(HAVE_I18N_LC_MESSAGES)
4000 fi # SKIP_COMPILER_CHECKS
4003 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
4004 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
4007 dnl Mozilla specific options
4008 dnl ========================================================
4009 dnl The macros used for command line options
4010 dnl are defined in build/autoconf/altoptions.m4.
4013 dnl ========================================================
4015 dnl = Check for external package dependencies
4017 dnl ========================================================
4018 MOZ_ARG_HEADER(External Packages)
4022 MOZ_ARG_WITH_STRING(libxul-sdk,
4023 [ --with-libxul-sdk=PFX Use the libXUL SDK at <PFX>],
4024 LIBXUL_SDK_DIR=$withval)
4026 if test "$LIBXUL_SDK_DIR" = "yes"; then
4027 AC_MSG_ERROR([--with-libxul-sdk must specify a path])
4028 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
4029 LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
4031 if test ! -f "$LIBXUL_SDK/sdk/include/xpcom-config.h"; then
4032 AC_MSG_ERROR([$LIBXUL_SDK/sdk/include/xpcom-config.h doesn't exist])
4037 AC_SUBST(LIBXUL_SDK)
4039 if test -n "$LIBXUL_SDK"; then
4040 LIBXUL_DIST="$LIBXUL_SDK"
4042 LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
4044 AC_SUBST(LIBXUL_DIST)
4046 dnl ========================================================
4047 dnl = If NSPR was not detected in the system,
4048 dnl = use the one in the source tree (mozilla/nsprpub)
4049 dnl ========================================================
4050 MOZ_ARG_WITH_BOOL(system-nspr,
4051 [ --with-system-nspr Use system installed NSPR],
4052 _USE_SYSTEM_NSPR=1 )
4054 if test -n "$_USE_SYSTEM_NSPR"; then
4055 AM_PATH_NSPR(4.7.0, [MOZ_NATIVE_NSPR=1], [MOZ_NATIVE_NSPR=])
4058 if test -n "$MOZ_NATIVE_NSPR"; then
4059 _SAVE_CFLAGS=$CFLAGS
4060 CFLAGS="$CFLAGS $NSPR_CFLAGS"
4061 AC_TRY_COMPILE([#include "prlog.h"],
4062 [#ifndef PR_STATIC_ASSERT
4063 #error PR_STATIC_ASSERT not defined
4065 [MOZ_NATIVE_NSPR=1],
4066 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT]))
4067 CFLAGS=$_SAVE_CFLAGS
4069 NSPR_CFLAGS='`$(DEPTH)/nsprpub/config/nspr-config --prefix='${LIBXUL_DIST}' --includedir='${LIBXUL_DIST}'/include/nspr --cflags`'
4070 # explicitly set libs for Visual Age C++ for OS/2
4071 if test "$OS_ARCH" = "OS2" -a "$VACPP" = "yes"; then
4072 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib ${_PTHREAD_LDFLAGS}"
4073 elif test "$OS_ARCH" = "WINCE"; then
4074 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4075 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4076 elif test "$OS_ARCH" = "WINNT"; then
4077 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4078 if test -n "$GNU_CC"; then
4079 NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
4081 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4084 NSPR_LIBS='`$(DEPTH)/nsprpub/config/nspr-config --prefix='${LIBXUL_DIST}' --libdir='${LIBXUL_DIST}'/lib --libs`'
4088 dnl ========================================================
4089 dnl = If NSS was not detected in the system,
4090 dnl = use the one in the source tree (mozilla/security/nss)
4091 dnl ========================================================
4093 MOZ_ARG_WITH_BOOL(system-nss,
4094 [ --with-system-nss Use system installed NSS],
4097 if test -n "$_USE_SYSTEM_NSS"; then
4098 AM_PATH_NSS(3.12.0, [MOZ_NATIVE_NSS=1], [MOZ_NATIVE_NSS=])
4101 if test -n "$MOZ_NATIVE_NSS"; then
4102 NSS_LIBS="$NSS_LIBS -lcrmf"
4104 NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4106 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4107 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4108 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4109 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4110 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX) \
4111 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)softokn$NSS_VERSION\$(DLL_SUFFIX)"
4113 if test -z "$GNU_CC" && test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "WINCE" -o "$OS_ARCH" = "OS2"; then
4115 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4116 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4117 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4118 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4119 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(IMPORT_LIB_SUFFIX) \
4120 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)softokn$NSS_VERSION.\$(IMPORT_LIB_SUFFIX)"
4122 NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION -lsoftokn$NSS_VERSION"
4126 if test -z "$SKIP_LIBRARY_CHECKS"; then
4127 dnl system JPEG support
4128 dnl ========================================================
4129 MOZ_ARG_WITH_STRING(system-jpeg,
4130 [ --with-system-jpeg[=PFX]
4131 Use system libjpeg [installed at prefix PFX]],
4134 _SAVE_CFLAGS=$CFLAGS
4135 _SAVE_LDFLAGS=$LDFLAGS
4137 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4138 CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4139 LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4141 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4144 AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS)
4147 if test "$SYSTEM_JPEG" = 1; then
4148 LIBS="$JPEG_LIBS $LIBS"
4149 AC_TRY_COMPILE([ #include <stdio.h>
4150 #include <sys/types.h>
4151 #include <jpeglib.h> ],
4152 [ #if JPEG_LIB_VERSION < $MOZJPEG
4153 #error "Insufficient JPEG library version ($MOZJPEG required)."
4156 [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=])
4158 CFLAGS=$_SAVE_CFLAGS
4159 LDFLAGS=$_SAVE_LDFLAGS
4162 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$SYSTEM_JPEG" = 1; then
4163 JPEG_CFLAGS="-I${JPEG_DIR}/include"
4164 JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
4167 dnl system ZLIB support
4168 dnl ========================================================
4169 MOZ_ARG_WITH_STRING(system-zlib,
4170 [ --with-system-zlib[=PFX]
4171 Use system libz [installed at prefix PFX]],
4174 _SAVE_CFLAGS=$CFLAGS
4175 _SAVE_LDFLAGS=$LDFLAGS
4177 if test -n "${ZLIB_DIR}" -a "${ZLIB_DIR}" != "yes"; then
4178 CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
4179 LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
4181 if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
4184 AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"],
4185 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
4187 if test "$SYSTEM_ZLIB" = 1; then
4188 LIBS="$ZLIB_LIBS $LIBS"
4189 AC_TRY_COMPILE([ #include <stdio.h>
4191 #include <zlib.h> ],
4192 [ #if ZLIB_VERNUM < $MOZZLIB
4193 #error "Insufficient zlib version ($MOZZLIB required)."
4196 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=])
4198 CFLAGS=$_SAVE_CFLAGS
4199 LDFLAGS=$_SAVE_LDFLAGS
4202 if test "${ZLIB_DIR}" -a -d "${ZLIB_DIR}" -a "$SYSTEM_ZLIB" = 1; then
4203 ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
4204 ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
4207 dnl system BZIP2 Support
4208 dnl ========================================================
4209 MOZ_ARG_WITH_STRING(system-bz2,
4210 [ --with-system-bz2[=PFX]
4211 Use system libbz2 [installed at prefix PFX]],
4214 _SAVE_CFLAGS=$CFLAGS
4215 _SAVE_LDFLAGS=$LDFLAGS
4217 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4218 CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4219 LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4221 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4224 AC_CHECK_LIB(bz2, BZ2_bzread, [SYSTEM_BZ2=1 BZ2_LIBS="-lbz2"],
4225 [SYSTEM_BZ2= BZ2_CFLAGS= BZ2_LIBS=], $BZ2_LIBS)
4227 CFLAGS=$_SAVE_CFLAGS
4228 LDFLAGS=$_SAVE_LDFLAGS
4231 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$SYSTEM_BZ2" = 1; then
4232 BZ2_CFLAGS="-I${BZ2_DIR}/include"
4233 BZ2_LIBS="-L${BZ2_DIR}/lib ${MOZ_BZ2_LIBS}"
4236 dnl system PNG Support
4237 dnl ========================================================
4238 MOZ_ARG_WITH_STRING(system-png,
4239 [ --with-system-png[=PFX]
4240 Use system libpng [installed at prefix PFX]],
4243 _SAVE_CFLAGS=$CFLAGS
4244 _SAVE_LDFLAGS=$LDFLAGS
4246 CFLAGS="$ZLIB_CFLAGS $CFLAGS"
4247 LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
4248 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4249 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4250 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4252 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4255 _SAVE_PNG_LIBS=$PNG_LIBS
4256 AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"],
4257 AC_MSG_ERROR([--with-system-png requested but no working libpng found]),
4259 AC_CHECK_LIB(png, png_get_acTL, ,
4260 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]),
4263 if test "$SYSTEM_PNG" = 1; then
4264 LIBS="$PNG_LIBS $LIBS"
4265 AC_TRY_COMPILE([ #include <stdio.h>
4266 #include <sys/types.h>
4268 [ #if PNG_LIBPNG_VER < $MOZPNG
4269 #error "Insufficient libpng version ($MOZPNG required)."
4271 #ifndef PNG_UINT_31_MAX
4272 #error "Insufficient libpng version."
4275 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4277 CFLAGS=$_SAVE_CFLAGS
4278 LDFLAGS=$_SAVE_LDFLAGS
4281 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
4282 PNG_CFLAGS="-I${PNG_DIR}/include"
4283 PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
4286 fi # SKIP_LIBRARY_CHECKS
4288 dnl system HunSpell Support
4289 dnl ========================================================
4290 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4291 [ --enable-system-hunspell Use system hunspell (located with pkgconfig)],
4294 if test -n "$SYSTEM_HUNSPELL"; then
4295 PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4298 AC_SUBST(SYSTEM_HUNSPELL)
4300 dnl check whether to enable glitz
4301 dnl ========================================================
4302 MOZ_ARG_ENABLE_BOOL(glitz,
4303 [ --enable-glitz Enable Glitz for use with Cairo],
4306 if test "$MOZ_ENABLE_GLITZ"; then
4307 AC_DEFINE(MOZ_ENABLE_GLITZ)
4310 dnl ========================================================
4311 dnl Java SDK support
4312 dnl ========================================================
4314 MOZ_ARG_WITH_STRING(java-include-path,
4315 [ --with-java-include-path=dir Location of Java SDK headers],
4316 JAVA_INCLUDE_PATH=$withval)
4319 MOZ_ARG_WITH_STRING(java-bin-path,
4320 [ --with-java-bin-path=dir Location of Java binaries (java, javac, jar)],
4321 JAVA_BIN_PATH=$withval)
4323 dnl ========================================================
4324 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4325 dnl their usage and use them in spidermonkey.
4326 dnl ========================================================
4327 MOZ_ARG_WITH_BOOL(arm-kuser,
4328 [ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4331 if test -n "$USE_ARM_KUSER"; then
4332 AC_DEFINE(USE_ARM_KUSER)
4335 dnl ========================================================
4339 dnl ========================================================
4341 MOZ_ARG_HEADER(Application)
4345 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4346 MOZ_BRANDING_DIRECTORY=
4347 MOZ_DBGRINFO_MODULES=
4349 MOZ_EXTENSIONS_ALL=" wallet p3p venkman inspector irc typeaheadfind gnomevfs sroaming datetime finger cview layout-debug tasks sql xforms schema-validation reporter"
4351 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg bmp xbm icon"
4352 MOZ_IMG_ENCODERS_DEFAULT="png jpeg"
4362 MOZ_AUTH_EXTENSION=1
4363 MOZ_NO_ACTIVEX_SUPPORT=1
4364 MOZ_NO_INSPECTOR_APIS=
4365 MOZ_NO_XPCOM_OBSOLETE=
4372 MOZ_PLAINTEXT_EDITOR_ONLY=
4374 MOZ_PREF_EXTENSIONS=1
4375 MOZ_PROFILELOCKING=1
4376 MOZ_PROFILESHARING=1
4378 MOZ_PYTHON_EXTENSIONS="xpcom dom"
4380 MOZ_PYTHON_DEBUG_SUFFIX=
4381 MOZ_PYTHON_DLL_SUFFIX=
4382 MOZ_PYTHON_INCLUDES=
4386 MOZ_PYTHON_VER_DOTTED=
4392 MOZ_STATIC_MAIL_BUILD=
4397 MOZ_UNIVERSALCHARDET=1
4399 MOZ_USE_NATIVE_UCONV=
4402 MOZ_XPFE_COMPONENTS=1
4404 MOZ_XSLT_STANDALONE=
4412 NECKO_PROTOCOLS_DEFAULT="about data file ftp gopher http res viewsource"
4413 NECKO_SMALL_BUFFERS=
4415 XPC_IDISPATCH_SUPPORT=
4418 case "$target_os" in
4427 case "$target_os" in
4428 msvc*|mks*|cygwin*|mingw*)
4429 if test -z "$GNU_CC"; then
4430 XPC_IDISPATCH_SUPPORT=1
4431 MOZ_NO_ACTIVEX_SUPPORT=
4432 MOZ_ACTIVEX_SCRIPTING_SUPPORT=1
4437 MOZ_ARG_ENABLE_STRING(application,
4438 [ --enable-application=APP
4442 content/xslt (Standalone Transformiix XSLT)
4443 netwerk (Standalone Necko)
4444 tools/update-packaging (AUS-related packaging tools)
4445 standalone (use this for standalone
4446 xpcom/xpconnect or to manually drive a build)],
4447 [ MOZ_BUILD_APP=$enableval ] )
4449 MOZ_EMBEDDING_PROFILE=default
4450 MOZ_ARG_WITH_STRING(embedding-profile,
4451 [ --with-embedding-profile=default|basic|minimal
4452 see http://wiki.mozilla.org/Gecko:Small_Device_Support],
4453 [ MOZ_EMBEDDING_PROFILE=$withval ])
4455 case "$MOZ_EMBEDDING_PROFILE" in
4457 MOZ_EMBEDDING_LEVEL_DEFAULT=1
4458 MOZ_EMBEDDING_LEVEL_BASIC=1
4459 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4460 AC_DEFINE(MOZ_EMBEDDING_LEVEL_DEFAULT)
4461 AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4462 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4466 MOZ_EMBEDDING_LEVEL_DEFAULT=
4467 MOZ_EMBEDDING_LEVEL_BASIC=1
4468 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4469 AC_DEFINE(MOZ_EMBEDDING_LEVEL_BASIC)
4470 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4472 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4474 MOZ_ENABLE_POSTSCRIPT=
4475 MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4476 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4477 MOZ_IMG_ENCODERS_DEFAULT=
4483 MOZ_NO_ACTIVEX_SUPPORT=1
4484 MOZ_NO_INSPECTOR_APIS=1
4485 MOZ_NO_XPCOM_OBSOLETE=1
4488 MOZ_PLAINTEXT_EDITOR_ONLY=1
4490 MOZ_PREF_EXTENSIONS=
4495 MOZ_UNIVERSALCHARDET=
4497 MOZ_USE_NATIVE_UCONV=
4499 MOZ_XPFE_COMPONENTS=
4504 NECKO_PROTOCOLS_DEFAULT="about data http file res"
4505 NECKO_SMALL_BUFFERS=1
4506 NS_DISABLE_LOGGING=1
4512 MOZ_EMBEDDING_LEVEL_DEFAULT=
4513 MOZ_EMBEDDING_LEVEL_BASIC=
4514 MOZ_EMBEDDING_LEVEL_MINIMAL=1
4515 AC_DEFINE(MOZ_EMBEDDING_LEVEL_MINIMAL)
4517 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4519 MOZ_ENABLE_POSTSCRIPT=
4520 MOZ_EXTENSIONS_DEFAULT=" spatialnavigation"
4521 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg"
4522 MOZ_IMG_ENCODERS_DEFAULT=
4528 MOZ_NO_ACTIVEX_SUPPORT=1
4529 MOZ_NO_INSPECTOR_APIS=1
4530 MOZ_NO_XPCOM_OBSOLETE=1
4533 MOZ_PLAINTEXT_EDITOR_ONLY=1
4535 MOZ_PREF_EXTENSIONS=
4542 MOZ_UNIVERSALCHARDET=
4544 MOZ_USE_NATIVE_UCONV=1
4546 MOZ_XPFE_COMPONENTS=
4553 NECKO_PROTOCOLS_DEFAULT="about data http file res"
4554 NECKO_SMALL_BUFFERS=1
4555 NS_DISABLE_LOGGING=1
4561 AC_MSG_ERROR([Unrecognized value: --with-embedding-profile=$MOZ_EMBEDDING_PROFILE])
4565 AC_SUBST(MOZ_EMBEDDING_LEVEL_DEFAULT)
4566 AC_SUBST(MOZ_EMBEDDING_LEVEL_BASIC)
4567 AC_SUBST(MOZ_EMBEDDING_LEVEL_MINIMAL)
4569 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
4570 [ --with-xulrunner-stub-name=appname Create the xulrunner stub with the given name],
4571 XULRUNNER_STUB_NAME=$withval)
4573 if test -z "$XULRUNNER_STUB_NAME"; then
4574 case "$target_os" in
4576 XULRUNNER_STUB_NAME=xulrunner
4579 XULRUNNER_STUB_NAME=xulrunner-stub
4582 AC_SUBST(XULRUNNER_STUB_NAME)
4584 if test -z "$MOZ_BUILD_APP"; then
4585 AC_MSG_ERROR([--enable-application=APP was not specified and is required.])
4587 # We have a valid application only if it has a build.mk file in its top
4589 if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
4590 AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
4594 # Allow the application to influence configure with a confvars.sh script.
4596 AC_MSG_CHECKING([if app-specific confvars.sh exists])
4597 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
4598 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
4599 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
4604 # Now is a good time to test for logic errors, define mismatches, etc.
4605 case "$MOZ_BUILD_APP" in
4607 if test "$LIBXUL_SDK"; then
4608 AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
4612 # Fix this case for folks who forget. Warn them.
4613 if test -n "$LIBXUL_SDK" -a -z "$MOZ_XUL_APP"; then
4614 AC_MSG_WARN([Setting MOZ_XUL_APP since LIBXUL_SDK was set. Add to confvars.sh!])
4620 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
4621 # that haven't made a confvars.sh yet. Don't add new stuff here, use
4623 case "$MOZ_BUILD_APP" in
4625 AC_DEFINE(MOZ_PHOENIX)
4629 AC_DEFINE(MOZ_XULRUNNER)
4637 MOZ_APP_NAME=mozilla
4638 MOZ_APP_DISPLAYNAME=Mozilla
4639 MOZ_APP_VERSION=$MOZILLA_VERSION
4644 if test -z "$MOZ_XUL_APP"; then
4645 AC_MSG_ERROR([builds with unsetting MOZ_XUL_APP in confvars.sh are not supported.])
4648 AC_SUBST(MOZ_BUILD_APP)
4649 AC_SUBST(MOZ_XUL_APP)
4650 AC_SUBST(MOZ_PHOENIX)
4651 AC_SUBST(MOZ_XULRUNNER)
4653 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
4655 if test "$MOZ_XUL_APP"; then
4657 AC_DEFINE(MOZ_XUL_APP)
4660 dnl ========================================================
4662 dnl = Toolkit Options
4664 dnl ========================================================
4665 MOZ_ARG_HEADER(Toolkit Options)
4667 dnl ========================================================
4668 dnl = Select the default toolkit
4669 dnl ========================================================
4670 MOZ_ARG_ENABLE_STRING(default-toolkit,
4671 [ --enable-default-toolkit=TK
4672 Select default toolkit
4673 Platform specific defaults:
4675 Mac OS X - cairo-cocoa
4676 Neutrino/QNX - photon
4678 Win32 - cairo-windows
4680 Gtk2 with DirectFB - cairo-gtk2-dfb
4683 [ _DEFAULT_TOOLKIT=$enableval ],
4684 [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
4686 if test "$_DEFAULT_TOOLKIT" = "photon" \
4687 -o "$_DEFAULT_TOOLKIT" = "cairo-windows" \
4688 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
4689 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-dfb" \
4690 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
4691 -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
4692 -o "$_DEFAULT_TOOLKIT" = "cairo-beos" \
4693 -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
4694 -o "$_DEFAULT_TOOLKIT" = "cairo-mac" \
4695 -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa"
4697 dnl nglayout only supports building with one toolkit,
4698 dnl so ignore everything after the first comma (",").
4699 MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
4701 AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
4704 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_TOOLKIT,"$MOZ_WIDGET_TOOLKIT")
4706 dnl ========================================================
4707 dnl = Enable the toolkit as needed =
4708 dnl ========================================================
4710 case "$MOZ_WIDGET_TOOLKIT" in
4713 AC_DEFINE(MOZ_WIDGET_PHOTON)
4717 MOZ_WIDGET_TOOLKIT=windows
4718 MOZ_GFX_TOOLKIT=cairo
4721 cairo-gtk2|cairo-gtk2-x11)
4722 MOZ_WIDGET_TOOLKIT=gtk2
4723 MOZ_GFX_TOOLKIT=cairo
4725 MOZ_ENABLE_XREMOTE=1
4730 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4731 TK_LIBS='$(MOZ_GTK2_LIBS)'
4732 AC_DEFINE(MOZ_WIDGET_GTK2)
4736 MOZ_WIDGET_TOOLKIT=gtk2
4737 MOZ_GFX_TOOLKIT=cairo
4743 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
4744 TK_LIBS='$(MOZ_GTK2_LIBS)'
4745 AC_DEFINE(MOZ_WIDGET_GTK2)
4746 if test "$no_x" != "yes"; then
4747 AC_MSG_WARN([Disabling X when DirectFB is specified.])
4753 MOZ_WIDGET_TOOLKIT=qt
4754 MOZ_GFX_TOOLKIT=cairo
4756 MOZ_ENABLE_XREMOTE=1
4761 TK_CFLAGS='$(MOZ_QT_CFLAGS)'
4762 TK_LIBS='$(MOZ_QT_LIBS)'
4763 AC_DEFINE(MOZ_WIDGET_QT)
4767 MOZ_WIDGET_TOOLKIT=beos
4768 MOZ_GFX_TOOLKIT=cairo
4769 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4770 TK_LIBS='$(MOZ_CAIRO_LIBS)'
4774 MOZ_WIDGET_TOOLKIT=os2
4775 MOZ_GFX_TOOLKIT=cairo
4776 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
4777 TK_LIBS='$(MOZ_CAIRO_LIBS)'
4780 cairo-mac|cairo-cocoa)
4781 if test "$MOZ_WIDGET_TOOLKIT" = "cairo-cocoa"; then
4782 MOZ_WIDGET_TOOLKIT=cocoa
4783 AC_DEFINE(MOZ_WIDGET_COCOA)
4786 MOZ_WIDGET_TOOLKIT=mac
4788 MOZ_GFX_TOOLKIT=cairo
4789 MOZ_USER_DIR="Mozilla"
4790 AC_DEFINE(XP_MACOSX)
4791 AC_DEFINE(TARGET_CARBON)
4792 AC_DEFINE(TARGET_API_MAC_CARBON)
4793 TK_LIBS='-framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook'
4794 TK_CFLAGS="-I${MACOS_SDK_DIR}/Developer/Headers/FlatCarbon"
4795 CFLAGS="$CFLAGS $TK_CFLAGS"
4796 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
4800 if test "$MOZ_ENABLE_XREMOTE"; then
4801 AC_DEFINE(MOZ_ENABLE_XREMOTE)
4804 if test "$COMPILE_ENVIRONMENT"; then
4805 if test "$MOZ_ENABLE_GTK2"; then
4806 if test "$MOZ_X11"; then
4807 GDK_PACKAGES=gdk-x11-2.0
4808 elif test "$MOZ_DFB"; then
4809 PKG_CHECK_MODULES(MOZ_DFB, directfb >= 1.1.0)
4810 GDK_PACKAGES=directfb
4813 PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
4816 fi # COMPILE_ENVIRONMENT
4818 AC_SUBST(MOZ_DEFAULT_TOOLKIT)
4820 dnl ========================================================
4821 dnl = startup-notification support module
4822 dnl ========================================================
4824 if test "$MOZ_ENABLE_GTK2"
4826 MOZ_ENABLE_STARTUP_NOTIFICATION=
4828 MOZ_ARG_ENABLE_BOOL(startup-notification,
4829 [ --enable-startup-notification Enable startup-notification support (default: disabled) ],
4830 MOZ_ENABLE_STARTUP_NOTIFICATION=force,
4831 MOZ_ENABLE_STARTUP_NOTIFICATION=)
4832 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
4834 PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
4835 libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
4836 [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
4837 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
4839 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
4841 MOZ_ENABLE_STARTUP_NOTIFICATION=
4845 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
4846 AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
4849 TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
4851 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
4852 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
4853 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
4855 dnl ========================================================
4857 dnl ========================================================
4858 if test "$MOZ_ENABLE_QT"
4860 PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtUiTools QtCore)
4861 AC_SUBST(MOZ_QT_CFLAGS)
4862 AC_SUBST(MOZ_QT_LIBS)
4864 MOZ_ARG_WITH_STRING(qtdir,
4865 [ --with-qtdir=\$dir Specify Qt directory ],
4868 if test -z "$QTDIR"; then
4871 QTINCDIR="/include/qt"
4872 if test ! -d "$QTDIR$QTINCDIR"; then
4873 QTINCDIR="/include/X11/qt"
4875 if test ! -d "$QTDIR$QTINCDIR"; then
4879 if test -x "$QTDIR/bin/moc-qt4"; then
4880 HOST_MOC="$QTDIR/bin/moc-qt4"
4882 if test -x "$QTDIR/bin/moc"; then
4883 HOST_MOC="$QTDIR/bin/moc"
4885 AC_CHECK_PROGS(HOST_MOC, moc, "")
4888 if test -z "$HOST_MOC"; then
4889 AC_MSG_ERROR([no acceptable moc preprocessor found])
4894 AC_SUBST(GTK_CONFIG)
4898 AC_SUBST(MOZ_ENABLE_GTK2)
4899 AC_SUBST(MOZ_ENABLE_PHOTON)
4900 AC_SUBST(MOZ_ENABLE_COCOA)
4901 AC_SUBST(MOZ_ENABLE_GLITZ)
4902 AC_SUBST(MOZ_ENABLE_QT)
4903 AC_SUBST(MOZ_ENABLE_XREMOTE)
4904 AC_SUBST(MOZ_GTK2_CFLAGS)
4905 AC_SUBST(MOZ_GTK2_LIBS)
4906 AC_SUBST(MOZ_QT_CFLAGS)
4907 AC_SUBST(MOZ_QT_LIBS)
4914 dnl ========================================================
4916 dnl = Components & Features
4918 dnl ========================================================
4919 MOZ_ARG_HEADER(Components and Features)
4921 dnl ========================================================
4923 dnl ========================================================
4924 MOZ_ARG_ENABLE_STRING(ui-locale,
4925 [ --enable-ui-locale=ab-CD
4926 Select the user interface locale (default: en-US)],
4927 MOZ_UI_LOCALE=$enableval )
4928 AC_SUBST(MOZ_UI_LOCALE)
4930 dnl ========================================================
4931 dnl = Trademarked Branding
4932 dnl ========================================================
4933 MOZ_ARG_ENABLE_BOOL(official-branding,
4934 [ --enable-official-branding Enable Official mozilla.org Branding
4935 Do not distribute builds with
4936 --enable-official-branding unless you have
4937 permission to use trademarks per
4938 http://www.mozilla.org/foundation/trademarks/ .],
4939 [case "$MOZ_BUILD_APP" in
4941 MOZ_BRANDING_DIRECTORY=other-licenses/branding/firefox
4942 MOZ_APP_DISPLAYNAME=Firefox
4946 AC_MSG_ERROR([Official branding is only available for Firefox.])
4950 MOZ_ARG_WITH_STRING(branding,
4951 [ --with-branding=dir Use branding from the specified directory.],
4952 MOZ_BRANDING_DIRECTORY=$withval)
4954 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
4955 if test -z "$REAL_BRANDING_DIRECTORY"; then
4956 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
4959 if test -f "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"; then
4960 . "$topsrcdir/$REAL_BRANDING_DIRECTORY/configure.sh"
4963 AC_SUBST(MOZ_BRANDING_DIRECTORY)
4965 dnl ========================================================
4966 dnl = Distribution ID
4967 dnl ========================================================
4968 MOZ_ARG_WITH_STRING(distribution-id,
4969 [ --with-distribution-id=ID Set distribution-specific id (default=org.mozilla)],
4970 [ val=`echo $withval`
4971 MOZ_DISTRIBUTION_ID="$val"])
4973 if test -z "$MOZ_DISTRIBUTION_ID"; then
4974 MOZ_DISTRIBUTION_ID="org.mozilla"
4977 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
4978 AC_SUBST(MOZ_DISTRIBUTION_ID)
4981 dnl ========================================================
4982 dnl complex text support off by default
4983 dnl ========================================================
4985 MOZ_ARG_DISABLE_BOOL(pango,
4986 [ --disable-pango Disable usage of Pango ],
4991 dnl ========================================================
4993 dnl ========================================================
4994 if test "$MOZ_ENABLE_GTK2"
4996 if test "$MOZ_X11"; then
4997 PKG_CHECK_MODULES(MOZ_XFT, xft)
4998 AC_SUBST(MOZ_XFT_CFLAGS)
4999 AC_SUBST(MOZ_XFT_LIBS)
5004 PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
5006 if test "$MOZ_PANGO"
5008 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangocairo >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
5009 AC_SUBST(MOZ_PANGO_CFLAGS)
5010 AC_SUBST(MOZ_PANGO_LIBS)
5011 AC_DEFINE(MOZ_PANGO)
5013 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
5014 AC_SUBST(MOZ_PANGO_CFLAGS)
5015 AC_SUBST(MOZ_PANGO_LIBS)
5017 PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0 fontconfig)
5018 AC_SUBST(FT2_CFLAGS)
5023 dnl ========================================================
5024 dnl = PostScript print module
5025 dnl ========================================================
5026 MOZ_ARG_DISABLE_BOOL(postscript,
5027 [ --disable-postscript Disable PostScript printing support ],
5028 MOZ_ENABLE_POSTSCRIPT=,
5029 MOZ_ENABLE_POSTSCRIPT=1 )
5031 dnl ========================================================
5032 dnl = GnomeVFS support module
5033 dnl ========================================================
5037 dnl build the gnomevfs extension by default only when the
5038 dnl GTK2 toolkit is in use.
5039 if test "$MOZ_ENABLE_GTK2"
5041 MOZ_ENABLE_GNOMEVFS=1
5043 MOZ_ENABLE_LIBGNOME=1
5046 MOZ_ARG_DISABLE_BOOL(gnomevfs,
5047 [ --disable-gnomevfs Disable GnomeVFS support ],
5048 MOZ_ENABLE_GNOMEVFS=,
5049 MOZ_ENABLE_GNOMEVFS=force)
5051 if test "$MOZ_ENABLE_GNOMEVFS"
5053 PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
5054 MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
5055 MOZ_ENABLE_GNOMEVFS=1
5057 if test "$MOZ_ENABLE_GNOMEVFS" = "force"
5059 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
5061 MOZ_ENABLE_GNOMEVFS=
5065 AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
5066 AC_SUBST(MOZ_GNOMEVFS_LIBS)
5068 if test "$MOZ_ENABLE_GCONF"
5070 PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION,[
5071 MOZ_GCONF_LIBS=`echo $MOZ_GCONF_LIBS | sed 's/-llinc\>//'`
5078 if test "$MOZ_ENABLE_GCONF"; then
5079 AC_DEFINE(MOZ_ENABLE_GCONF)
5082 AC_SUBST(MOZ_ENABLE_GCONF)
5083 AC_SUBST(MOZ_GCONF_CFLAGS)
5084 AC_SUBST(MOZ_GCONF_LIBS)
5086 if test "$MOZ_ENABLE_LIBGNOME"
5088 PKG_CHECK_MODULES(MOZ_LIBGNOME, libgnome-2.0 >= $LIBGNOME_VERSION,[
5089 MOZ_LIBGNOME_LIBS=`echo $MOZ_LIBGNOME_LIBS | sed 's/-llinc\>//'`
5090 MOZ_ENABLE_LIBGNOME=1
5092 MOZ_ENABLE_LIBGNOME=
5096 AC_SUBST(MOZ_LIBGNOME_CFLAGS)
5097 AC_SUBST(MOZ_LIBGNOME_LIBS)
5099 # The GNOME component is built if gtk2, gconf, gnome-vfs, and libgnome
5100 # are all available.
5102 if test "$MOZ_ENABLE_GTK2" -a "$MOZ_ENABLE_GCONF" -a \
5103 "$MOZ_ENABLE_GNOMEVFS" -a "$MOZ_ENABLE_LIBGNOME"; then
5104 MOZ_ENABLE_GNOME_COMPONENT=1
5106 MOZ_ENABLE_GNOME_COMPONENT=
5109 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5112 dnl ========================================================
5113 dnl = libgnomeui support module
5114 dnl ========================================================
5116 if test "$MOZ_ENABLE_GTK2"
5118 MOZ_ENABLE_GNOMEUI=1
5120 MOZ_ARG_DISABLE_BOOL(gnomeui,
5121 [ --disable-gnomeui Disable libgnomeui support (default: auto, optional at runtime) ],
5122 MOZ_ENABLE_GNOMEUI=,
5123 MOZ_ENABLE_GNOMEUI=force)
5125 if test "$MOZ_ENABLE_GNOMEUI"
5127 PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5129 MOZ_GNOMEUI_LIBS=`echo $MOZ_GNOMEUI_LIBS | sed 's/-llinc\>//'`
5130 MOZ_ENABLE_GNOMEUI=1
5132 if test "$MOZ_ENABLE_GNOMEUI" = "force"
5134 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5140 if test "$MOZ_ENABLE_GNOMEUI"; then
5141 AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5144 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5145 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5146 AC_SUBST(MOZ_GNOMEUI_LIBS)
5148 dnl ========================================================
5150 dnl ========================================================
5152 if test "$MOZ_ENABLE_GTK2"
5156 MOZ_ARG_DISABLE_BOOL(dbus,
5157 [ --disable-dbus Disable dbus support ],
5161 if test "$MOZ_ENABLE_DBUS"
5163 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5164 AC_DEFINE(MOZ_ENABLE_DBUS)
5167 AC_SUBST(MOZ_ENABLE_DBUS)
5168 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5169 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5171 dnl ========================================================
5172 dnl = Build Personal Security Manager
5173 dnl ========================================================
5174 MOZ_ARG_DISABLE_BOOL(crypto,
5175 [ --disable-crypto Disable crypto support (Personal Security Manager)],
5179 dnl ========================================================
5180 dnl = JS Debugger XPCOM component (js/jsd)
5181 dnl ========================================================
5182 MOZ_ARG_DISABLE_BOOL(jsd,
5183 [ --disable-jsd Disable JavaScript debug library],
5188 dnl ========================================================
5189 dnl = Disable plugin support
5190 dnl ========================================================
5191 MOZ_ARG_DISABLE_BOOL(plugins,
5192 [ --disable-plugins Disable plugins support],
5196 dnl ========================================================
5197 dnl = Open JVM Interface (OJI) support
5198 dnl ========================================================
5199 MOZ_ARG_DISABLE_BOOL(oji,
5200 [ --disable-oji Disable Open JVM Integration support],
5203 if test -n "$MOZ_OJI"; then
5207 dnl bi-directional support always on
5211 dnl ========================================================
5212 dnl view source support on by default
5213 dnl ========================================================
5214 MOZ_ARG_DISABLE_BOOL(view-source,
5215 [ --disable-view-source Disable view source support],
5218 if test "$MOZ_VIEW_SOURCE"; then
5219 AC_DEFINE(MOZ_VIEW_SOURCE)
5223 dnl ========================================================
5224 dnl accessibility support on by default on all platforms
5226 dnl ========================================================
5227 MOZ_ARG_DISABLE_BOOL(accessibility,
5228 [ --disable-accessibility Disable accessibility support (off by default on OS X)],
5231 if test "$ACCESSIBILITY"; then
5232 AC_DEFINE(ACCESSIBILITY)
5235 if test -n "$ACCESSIBILITY"; then
5237 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5238 if test "$ac_cv_header_atlbase_h" = "no"; then
5239 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.])
5241 if test "$ac_cv_header_oleacc_idl" = "no"; then
5242 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.])
5248 dnl ========================================================
5249 dnl xpfe/components on by default
5250 dnl ========================================================
5251 MOZ_ARG_DISABLE_BOOL(xpfe-components,
5252 [ --disable-xpfe-components
5253 Disable xpfe components],
5254 MOZ_XPFE_COMPONENTS=,
5255 MOZ_XPFE_COMPONENTS=1 )
5257 dnl ========================================================
5258 dnl xpinstall support on by default
5259 dnl ========================================================
5260 MOZ_ARG_DISABLE_BOOL(xpinstall,
5261 [ --disable-xpinstall Disable xpinstall support],
5264 if test "$MOZ_XPINSTALL"; then
5265 AC_DEFINE(MOZ_XPINSTALL)
5268 dnl ========================================================
5269 dnl xpcom js loader support on by default
5270 dnl ========================================================
5271 MOZ_ARG_DISABLE_BOOL(jsloader,
5272 [ --disable-jsloader Disable xpcom js loader support],
5275 if test "$MOZ_JSLOADER"; then
5276 AC_DEFINE(MOZ_JSLOADER)
5279 dnl ========================================================
5280 dnl Disable printing
5281 dnl ========================================================
5282 MOZ_ARG_DISABLE_BOOL(printing,
5283 [ --disable-printing Disable printing support],
5287 if test "$NS_PRINTING"; then
5288 AC_DEFINE(NS_PRINTING)
5289 AC_DEFINE(NS_PRINT_PREVIEW)
5292 dnl ========================================================
5293 dnl use native unicode converters
5294 dnl ========================================================
5295 MOZ_ARG_ENABLE_BOOL(native-uconv,
5296 [ --enable-native-uconv Enable iconv support],
5297 MOZ_USE_NATIVE_UCONV=1,
5298 MOZ_USE_NATIVE_UCONV= )
5299 if test "$MOZ_USE_NATIVE_UCONV"; then
5300 AC_DEFINE(MOZ_USE_NATIVE_UCONV)
5302 if test "$OS_ARCH" != "WINCE" -a "$OS_ARCH" != "WINNT" -a "$MOZ_USE_NATIVE_UCONV" -a "$ac_cv_func_iconv" != "yes"; then
5303 AC_MSG_ERROR([iconv() not found. Cannot enable native uconv support.])
5307 dnl ========================================================
5308 dnl Libeditor can be build as plaintext-only,
5309 dnl or as a full html and text editing component.
5310 dnl We build both by default.
5311 dnl ========================================================
5312 MOZ_ARG_ENABLE_BOOL(plaintext-editor-only,
5313 [ --enable-plaintext-editor-only
5314 Allow only plaintext editing],
5315 MOZ_PLAINTEXT_EDITOR_ONLY=1,
5316 MOZ_PLAINTEXT_EDITOR_ONLY= )
5317 dnl Note the #define is MOZILLA, not MOZ, for compat with the Mac build.
5318 AC_SUBST(MOZ_PLAINTEXT_EDITOR_ONLY)
5320 dnl ========================================================
5321 dnl = Drop XPCOM Obsolete library
5322 dnl ========================================================
5323 MOZ_ARG_DISABLE_BOOL(xpcom-obsolete,
5324 [ --disable-xpcom-obsolete Disable XPCOM Obsolete Library],
5325 MOZ_NO_XPCOM_OBSOLETE=1,
5326 MOZ_NO_XPCOM_OBSOLETE=)
5328 if test -n "$MOZ_NO_XPCOM_OBSOLETE"; then
5329 AC_DEFINE(MOZ_NO_XPCOM_OBSOLETE)
5332 dnl ========================================================
5333 dnl = Disable Fast Load
5334 dnl ========================================================
5335 MOZ_ARG_DISABLE_BOOL(xpcom-fastload,
5336 [ --disable-xpcom-fastload Disable XPCOM fastload support],
5340 AC_SUBST(MOZ_NO_FAST_LOAD)
5342 if test -n "$MOZ_NO_FAST_LOAD"; then
5343 AC_DEFINE(MOZ_NO_FAST_LOAD)
5346 dnl ========================================================
5347 dnl = Enable Ogg Codecs
5348 dnl ========================================================
5349 MOZ_ARG_DISABLE_BOOL(ogg,
5350 [ --disable-ogg Disable Ogg Codec support],
5356 if test -n "$MOZ_OGG"; then
5363 if test -n "$MOZ_MEDIA"; then
5364 AC_DEFINE(MOZ_MEDIA)
5367 dnl If using Ogg with Linux, ensure that the alsa library is available
5368 if test -n "$MOZ_OGG"; then
5369 case "$target_os" in
5371 AC_CHECK_LIB(asound, snd_pcm_open,,AC_MSG_ERROR([Ogg support on Linux requires the alsa library]))
5376 dnl ========================================================
5377 dnl Permissions System
5378 dnl ========================================================
5379 MOZ_ARG_DISABLE_BOOL(permissions,
5380 [ --disable-permissions Disable permissions (popup and cookie blocking)],
5385 dnl ========================================================
5387 dnl ========================================================
5388 MOZ_ARG_DISABLE_BOOL(negotiateauth,
5389 [ --disable-negotiateauth Disable GSS-API negotiation ],
5390 MOZ_AUTH_EXTENSION=,
5391 MOZ_AUTH_EXTENSION=1 )
5393 dnl ========================================================
5395 dnl ========================================================
5396 MOZ_ARG_DISABLE_BOOL(xtf,
5397 [ --disable-xtf Disable XTF (pluggable xml tags) support],
5400 if test "$MOZ_XTF"; then
5404 dnl ========================================================
5406 dnl ========================================================
5407 MOZ_ARG_DISABLE_BOOL(inspector-apis,
5408 [ --disable-inspector-apis Disable the DOM inspection APIs ],
5409 MOZ_NO_INSPECTOR_APIS=1,
5410 MOZ_NO_INSPECTOR_APIS= )
5412 dnl ========================================================
5413 dnl Pref extensions (autoconfig and system-pref)
5414 dnl ========================================================
5415 MOZ_ARG_DISABLE_BOOL(pref-extensions,
5416 [ --disable-pref-extensions
5417 Disable pref extensions such as autoconfig and
5419 MOZ_PREF_EXTENSIONS=,
5420 MOZ_PREF_EXTENSIONS=1 )
5422 dnl ========================================================
5423 dnl = Universalchardet
5424 dnl ========================================================
5425 MOZ_ARG_DISABLE_BOOL(universalchardet,
5426 [ --disable-universalchardet
5427 Disable universal encoding detection],
5428 MOZ_UNIVERSALCHARDET=,
5429 MOZ_UNIVERSALCHARDET=1 )
5431 dnl ========================================================
5433 dnl ========================================================
5434 MOZ_ARG_ENABLE_BOOL(javaxpcom,
5435 [ --enable-javaxpcom
5436 Enable Java-XPCOM bridge],
5440 if test -n "${MOZ_JAVAXPCOM}"; then
5443 if test -n "$JAVA_HOME"; then
5444 JAVA_HOME=`cygpath -u \`cygpath -m -s "$JAVA_HOME"\``
5448 if test -n "$JAVA_HOME"; then
5449 JAVA_HOME=`cd "$JAVA_HOME" && pwd`
5454 if test -n "${JAVA_INCLUDE_PATH}"; then
5455 dnl Make sure jni.h exists in the given include path.
5456 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5457 AC_MSG_ERROR([jni.h was not found in given include path $JAVA_INCLUDE_PATH.])
5460 case "$target_os" in
5462 dnl Default to java system location
5463 JAVA_INCLUDE_PATH=/System/Library/Frameworks/JavaVM.framework/Headers
5467 JAVA_INCLUDE_PATH="$JAVA_HOME/include"
5470 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
5471 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.])
5475 if test -n "${JAVA_BIN_PATH}"; then
5476 dnl Look for javac and jar in the specified path.
5477 JAVA_PATH="$JAVA_BIN_PATH"
5479 dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
5480 JAVA_PATH="$JAVA_HOME/bin:$PATH"
5483 AC_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
5484 AC_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
5485 AC_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
5486 if test -z "$JAVA" || test "$JAVA" = ":" || test -z "$JAVAC" || test "$JAVAC" = ":" || test -z "$JAR" || test "$JAR" = ":"; then
5487 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.])
5491 dnl ========================================================
5492 dnl = Breakpad crash reporting (on by default on supported platforms)
5493 dnl ========================================================
5495 if (test "$OS_ARCH" = "WINNT" -a -z "$GNU_CC" \
5496 || test "$OS_ARCH" = "Darwin" \
5497 || test "$OS_ARCH" = "Linux" -a "$CPU_ARCH" = "x86" \
5498 || test "$OS_ARCH" = "SunOS") \
5499 && test -z "$HAVE_64BIT_OS"; then
5503 MOZ_ARG_DISABLE_BOOL(crashreporter,
5504 [ --disable-crashreporter Disable breakpad crash reporting],
5506 MOZ_CRASHREPORTER=1)
5508 if test -n "$MOZ_CRASHREPORTER"; then
5509 AC_DEFINE(MOZ_CRASHREPORTER)
5511 if (test "$OS_ARCH" = "Linux" || test "$OS_ARCH" = "SunOS") && \
5512 test -z "$SKIP_LIBRARY_CHECKS"; then
5513 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
5514 AC_SUBST(MOZ_GTHREAD_CFLAGS)
5515 AC_SUBST(MOZ_GTHREAD_LIBS)
5517 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.])])
5521 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
5522 [ --with-crashreporter-enable-percent=NN Enable sending crash reports by default on NN% of users. (default=100)],
5523 [ val=`echo $withval | sed 's/[^0-9]//g'`
5524 MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
5526 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
5527 MOZ_CRASHREPORTER_ENABLE_PERCENT=100
5529 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
5531 dnl ========================================================
5532 dnl = Enable compilation of specific extension modules
5533 dnl ========================================================
5535 MOZ_ARG_ENABLE_STRING(extensions,
5536 [ --enable-extensions Enable extensions],
5537 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5538 if test "$option" = "yes" || test "$option" = "all"; then
5539 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_ALL"
5540 elif test "$option" = "no" || test "$option" = "none"; then
5542 elif test "$option" = "default"; then
5543 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
5544 elif test `echo "$option" | grep -c \^-` != 0; then
5545 option=`echo $option | sed 's/^-//'`
5546 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
5548 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
5551 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
5553 if test -z "$MOZ_ENABLE_GNOMEVFS" && test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
5554 # Suppress warning on non-X11 platforms
5555 if test -n "$MOZ_X11"; then
5556 AC_MSG_WARN([Cannot build gnomevfs without required libraries. Removing gnomevfs from MOZ_EXTENSIONS.])
5558 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
5561 if test -z "$MOZ_JSDEBUGGER" && test `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
5562 AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
5563 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
5566 dnl This might be temporary: build tridentprofile only on Windows
5567 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0 && test "$OS_ARCH" != "WINNT"; then
5568 AC_MSG_WARN([tridentprofile extension works only on Windows at this time. Removing tridentprofile from MOZ_EXTENSIONS.])
5569 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5572 dnl cookie must be built before tridentprofile. put it at list's end.
5573 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0; then
5574 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
5575 MOZ_EXTENSIONS="$MOZ_EXTENSIONS tridentprofile"
5578 dnl xforms requires xtf and schema-validation
5579 if test -z "$MOZ_XTF" && test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
5580 AC_MSG_WARN([Cannot build XForms without XTF support. Removing XForms from MOZ_EXTENSIONS.])
5581 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5583 if test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0 && test `echo "$MOZ_EXTENSIONS" | grep -c schema-validation` -eq 0; then
5584 AC_MSG_WARN([Cannot build XForms without schema validation. Removing XForms from MOZ_EXTENSIONS.])
5585 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
5588 if test `echo "$MOZ_EXTENSIONS" | grep -c auth` -ne 0; then
5589 AC_MSG_WARN([auth is no longer an extension, use --disable-negotiateauth to disable.])
5590 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|auth||g'`
5593 if test `echo "$MOZ_EXTENSIONS" | grep -c 'cookie\|permissions'` -ne 0; then
5594 AC_MSG_WARN([cookie and permissions are no longer extensions, use --disable-permissions to disable.])
5595 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|cookie||g; s|permissions||g'`
5598 if test `echo "$MOZ_EXTENSIONS" | grep -c pref` -ne 0; then
5599 AC_MSG_WARN([pref is no longer an extension, use --disable-pref-extensions to disable.])
5600 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|pref||g'`
5603 if test `echo "$MOZ_EXTENSIONS" | grep -c universalchardet` -ne 0; then
5604 AC_MSG_WARN([universalchardet is no longer an extension, use --disable-universalchardet to disable.])
5605 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|universalchardet||g'`
5608 if test `echo "$MOZ_EXTENSIONS" | grep -c java` -ne 0; then
5609 AC_MSG_WARN([java is no longer an extension, use --enable-javaxpcom to enable.])
5610 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|java||g'`
5613 if test `echo "$MOZ_EXTENSIONS" | grep -c spellcheck` -ne 0; then
5614 AC_MSG_WARN([spellcheck is no longer an extension.])
5615 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|spellcheck||g'`
5618 if test -n "$MOZ_NO_XPCOM_OBSOLETE" && test `echo "$MOZ_EXTENSIONS" | grep -c sroaming` -ne 0; then
5619 AC_MSG_WARN([Cannot currently build sroaming without xpcom obsolete -- bug 249343. Removing sroaming from MOZ_EXTENSIONS.])
5620 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|sroaming||'`
5624 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
5626 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
5627 dnl when trying to build a non-existent extension.
5628 for extension in $MOZ_EXTENSIONS; do
5629 if test ! -d "${srcdir}/extensions/${extension}"; then
5630 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
5635 dnl ========================================================
5637 dnl ========================================================
5638 case "$MOZ_WIDGET_TOOLKIT" in
5639 beos|windows|os2|mac|cocoa)
5642 if test -z "$MOZ_ENABLE_GTK2"; then
5643 MOZ_IMG_DECODERS_DEFAULT=`echo $MOZ_IMG_DECODERS_DEFAULT | sed -e 's|icon||'`
5648 MOZ_ARG_ENABLE_STRING(image-decoders,
5649 [ --enable-image-decoders[={mod1,mod2,default,all,none}]
5650 Enable specific image decoders],
5651 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5652 if test "$option" = "yes" || test "$option" = "all"; then
5653 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5654 elif test "$option" = "no" || test "$option" = "none"; then
5656 elif test "$option" = "default"; then
5657 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
5658 elif test `echo "$option" | grep -c \^-` != 0; then
5659 option=`echo $option | sed 's/^-//'`
5660 MOZ_IMG_DECODERS=`echo "$MOZ_IMG_DECODERS" | sed "s/ ${option}//"`
5662 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $option"
5665 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS_DEFAULT")
5667 dnl Dupes are removed in the encoder section because it will also add decoders
5669 dnl ========================================================
5671 dnl ========================================================
5672 MOZ_ARG_ENABLE_STRING(image-encoders,
5673 [ --enable-image-encoders[={mod1,mod2,default,all,none}]
5674 Enable specific image encoders],
5675 [ for option in `echo $enableval | sed 's/,/ /g'`; do
5676 if test "$option" = "yes" || test "$option" = "all"; then
5677 addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5678 elif test "$option" = "no" || test "$option" = "none"; then
5681 elif test "$option" = "default"; then
5682 addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
5683 elif test `echo "$option" | grep -c \^-` != 0; then
5684 option=`echo $option | sed 's/^-//'`
5685 addencoder=`echo "$MOZ_IMG_ENCODERS" | sed "s/ ${option}//"`
5687 addencoder="$option"
5689 MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS $addencoder"
5691 MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS_DEFAULT")
5694 MOZ_IMG_DECODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_DECODERS}`
5695 MOZ_IMG_ENCODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_ENCODERS}`
5697 dnl ========================================================
5698 dnl MathML on by default
5699 dnl ========================================================
5700 MOZ_ARG_DISABLE_BOOL(mathml,
5701 [ --disable-mathml Disable MathML support],
5704 if test "$MOZ_MATHML"; then
5705 AC_DEFINE(MOZ_MATHML)
5708 dnl ========================================================
5710 dnl ========================================================
5711 MOZ_ARG_DISABLE_BOOL(canvas,
5712 [ --disable-canvas Disable html:canvas feature],
5714 MOZ_ENABLE_CANVAS=1 )
5715 if test -n "$MOZ_ENABLE_CANVAS"; then
5716 AC_DEFINE(MOZ_ENABLE_CANVAS)
5718 AC_SUBST(MOZ_ENABLE_CANVAS)
5720 dnl ========================================================
5722 dnl ========================================================
5723 MOZ_ARG_DISABLE_BOOL(svg,
5724 [ --disable-svg Disable SVG support],
5727 if test -n "$MOZ_SVG"; then
5731 dnl ========================================================
5733 dnl ========================================================
5734 case "$target_os" in
5735 aix*|solaris*|linux*|msvc*|mks*|cygwin*|mingw*|os2*|wince*)
5740 MOZ_ARG_DISABLE_BOOL(installer,
5741 [ --disable-installer Disable building of installer],
5744 if test -n "$MOZ_INSTALLER" -a -n "$MOZ_XUL_APP" -a "$OS_ARCH" = "WINNT"; then
5745 # Disable installer for Windows builds that use the new toolkit if NSIS
5746 # isn't in the path.
5747 AC_PATH_PROGS(MAKENSIS, makensis)
5748 if test -z "$MAKENSIS" || test "$MAKENSIS" = ":"; then
5749 AC_MSG_ERROR([To build the installer makensis is required in your path. To build without the installer reconfigure using --disable-installer.])
5751 # The Windows build for NSIS requires the iconv command line utility to
5752 # convert the charset of the locale files.
5753 AC_PATH_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5754 if test -z "$HOST_ICONV"; then
5755 AC_MSG_ERROR([To build the installer iconv is required in your path. To build without the installer reconfigure using --disable-installer.])
5759 # Automatically disable installer if xpinstall isn't built
5760 if test -z "$MOZ_XPINSTALL"; then
5763 AC_SUBST(MOZ_INSTALLER)
5765 AC_MSG_CHECKING([for tar archiver])
5766 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
5767 if test -z "$TAR"; then
5768 AC_MSG_ERROR([no tar archiver found in \$PATH])
5770 AC_MSG_RESULT([$TAR])
5773 AC_MSG_CHECKING([for wget])
5774 AC_CHECK_PROGS(WGET, wget, "")
5775 AC_MSG_RESULT([$WGET])
5778 dnl ========================================================
5780 dnl ========================================================
5782 MOZ_ARG_DISABLE_BOOL(updater,
5783 [ --disable-updater Disable building of updater],
5786 # The Windows build requires the iconv command line utility
5787 # in order to build the updater.
5788 case "$target_os" in
5789 msvc*|mks*|cygwin*|mingw*|wince*)
5790 if test -n "$MOZ_UPDATER"; then
5791 AC_MSG_CHECKING([for iconv])
5792 AC_CHECK_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
5793 if test -z "$HOST_ICONV"; then
5794 AC_MSG_ERROR([iconv not found in \$PATH])
5799 AC_SUBST(MOZ_UPDATER)
5801 # app update channel is 'default' when not supplied.
5802 MOZ_ARG_ENABLE_STRING([update-channel],
5803 [ --enable-update-channel=CHANNEL
5804 Select application update channel (default=default)],
5805 MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
5807 if test -z "$MOZ_UPDATE_CHANNEL"; then
5808 MOZ_UPDATE_CHANNEL=default
5810 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
5812 # tools/update-packaging is not checked out by default.
5813 MOZ_ARG_ENABLE_BOOL(update-packaging,
5814 [ --enable-update-packaging
5815 Enable tools/update-packaging],
5816 MOZ_UPDATE_PACKAGING=1,
5817 MOZ_UPDATE_PACKAGING= )
5818 AC_SUBST(MOZ_UPDATE_PACKAGING)
5820 dnl ========================================================
5822 dnl ========================================================
5824 MOZ_ARG_DISABLE_BOOL(xpconnect-idispatch,
5825 [ --disable-xpconnect-idispatch
5826 Disable building of xpconnect support for IDispatch
5828 XPC_IDISPATCH_SUPPORT=,
5829 XPC_IDISPATCH_SUPPORT=1)
5830 AC_SUBST(XPC_IDISPATCH_SUPPORT)
5832 MOZ_ARG_DISABLE_BOOL(activex,
5833 [ --disable-activex Disable building of ActiveX control (win32 only)],
5834 MOZ_NO_ACTIVEX_SUPPORT=1,
5835 MOZ_NO_ACTIVEX_SUPPORT= )
5836 AC_SUBST(MOZ_NO_ACTIVEX_SUPPORT)
5838 MOZ_ARG_DISABLE_BOOL(activex-scripting,
5839 [ --disable-activex-scripting
5840 Disable building of ActiveX scripting support (win32)],
5841 MOZ_ACTIVEX_SCRIPTING_SUPPORT=,
5842 MOZ_ACTIVEX_SCRIPTING_SUPPORT=1)
5843 AC_SUBST(MOZ_ACTIVEX_SCRIPTING_SUPPORT)
5845 if test -n "$MOZ_NO_ACTIVEX_SUPPORT" -a -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT";
5847 AC_MSG_ERROR([Cannot enable ActiveX scripting support when ActiveX support is disabled.])
5850 if test -n "$XPC_IDISPATCH_SUPPORT" -o -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
5852 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5853 if test "$ac_cv_header_atlbase_h" = "no"; then
5854 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.])
5860 dnl ========================================================
5862 dnl ========================================================
5863 MOZ_ARG_ENABLE_BOOL(leaky,
5864 [ --enable-leaky Build leaky memory tool],
5869 dnl ========================================================
5871 dnl ========================================================
5872 MOZ_ARG_ENABLE_BOOL(xpctools,
5873 [ --enable-xpctools Build JS profiling tool],
5878 dnl ========================================================
5879 dnl build the tests by default
5880 dnl ========================================================
5881 MOZ_ARG_DISABLE_BOOL(tests,
5882 [ --disable-tests Do not build test libraries & programs],
5886 dnl ========================================================
5887 dnl parental controls (for Windows Vista)
5888 dnl ========================================================
5889 MOZ_ARG_DISABLE_BOOL(parental-controls,
5890 [ --disable-parental-controls
5891 Do not build parental controls],
5892 MOZ_DISABLE_PARENTAL_CONTROLS=1,
5893 MOZ_DISABLE_PARENTAL_CONTROLS=)
5894 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5895 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5898 dnl ========================================================
5899 dnl Vista SDK specific api
5900 dnl ========================================================
5901 MOZ_ARG_DISABLE_BOOL(vista-sdk-requirements,
5902 [ --disable-vista-sdk-requirements
5903 Do not build Vista SDK specific code],
5904 MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=1,
5905 MOZ_DISABLE_VISTA_SDK_REQUIREMENTS=)
5906 if test -n "$MOZ_DISABLE_VISTA_SDK_REQUIREMENTS"; then
5907 AC_MSG_WARN([Resulting builds will not be compatible with Windows Vista. (bug 428970)])
5908 AC_DEFINE(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
5909 if test -z "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
5910 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
5912 MOZ_DISABLE_PARENTAL_CONTROLS=1
5915 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5916 if test "$ac_cv_header_wpcapi_h" = "no"; then
5917 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.])
5922 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
5923 AC_SUBST(MOZ_DISABLE_VISTA_SDK_REQUIREMENTS)
5925 dnl ========================================================
5927 dnl = Module specific options
5929 dnl ========================================================
5930 MOZ_ARG_HEADER(Individual module options)
5932 dnl ========================================================
5933 dnl = Enable Lea malloc in xpcom. OFF by default.
5934 dnl ========================================================
5935 MOZ_ARG_ENABLE_BOOL(xpcom-lea,
5936 [ --enable-xpcom-lea Use Lea malloc in xpcom ],
5939 if test -n "$XPCOM_USE_LEA"; then
5940 AC_DEFINE(XPCOM_USE_LEA)
5943 dnl ========================================================
5944 dnl = Enable places (new history/bookmarks)
5945 dnl ========================================================
5946 MOZ_ARG_ENABLE_BOOL(places,
5947 [ --enable-places Enable 'places' bookmark/history implementation],
5950 if test -n "$MOZ_PLACES"; then
5951 AC_DEFINE(MOZ_PLACES)
5952 if test -z "$MOZ_MAIL_NEWS"; then
5957 if test "$MOZ_BUILD_APP" = "browser"; then
5958 AC_MSG_ERROR([Cannot build Firefox with --disable-places.])
5962 dnl ========================================================
5963 dnl = Disable feed handling components
5964 dnl ========================================================
5965 MOZ_ARG_DISABLE_BOOL(feeds,
5966 [ --disable-feeds Disable feed handling and processing components],
5969 if test -n "$MOZ_FEEDS"; then
5970 AC_DEFINE(MOZ_FEEDS)
5972 if test "$MOZ_BUILD_APP" = "browser"; then
5973 AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
5977 dnl ========================================================
5978 dnl = Enable mozStorage
5979 dnl ========================================================
5980 dnl Implicitly enabled by default if building calendar or places
5981 MOZ_ARG_ENABLE_BOOL(storage,
5982 [ --enable-storage Enable mozStorage module and related components],
5985 if test -n "$MOZ_STORAGE"; then
5986 AC_DEFINE(MOZ_STORAGE)
5989 dnl ========================================================
5990 dnl Check for sqlite
5991 dnl ========================================================
5994 MOZ_ARG_ENABLE_BOOL(system-sqlite,
5995 [ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
5996 MOZ_NATIVE_SQLITE=1,
5997 MOZ_NATIVE_SQLITE= )
5999 if test -z "$MOZ_NATIVE_SQLITE"
6002 SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,sqlite3,$(DIST)/lib)'
6004 PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6007 AC_SUBST(MOZ_NATIVE_SQLITE)
6009 dnl ========================================================
6010 dnl = Enable help viewer (off by default)
6011 dnl ========================================================
6012 MOZ_ARG_ENABLE_BOOL(help-viewer,
6013 [ --enable-help-viewer Enable help viewer],
6016 if test -n "$MOZ_HELP_VIEWER"; then
6017 AC_DEFINE(MOZ_HELP_VIEWER)
6019 AC_SUBST(MOZ_HELP_VIEWER)
6020 if test "$MOZ_BUILD_APP" = "browser" -a -n "$MOZ_HELP_VIEWER"; then
6021 AC_MSG_ERROR([Cannot build Firefox with --enable-help-viewer.])
6024 dnl ========================================================
6025 dnl = Enable safe browsing (anti-phishing)
6026 dnl ========================================================
6027 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6028 [ --enable-safe-browsing Enable safe browsing (anti-phishing) implementation],
6029 MOZ_SAFE_BROWSING=1,
6030 MOZ_SAFE_BROWSING= )
6031 if test -n "$MOZ_SAFE_BROWSING"; then
6032 AC_DEFINE(MOZ_SAFE_BROWSING)
6034 AC_SUBST(MOZ_SAFE_BROWSING)
6036 dnl ========================================================
6037 dnl = Enable url-classifier
6038 dnl ========================================================
6039 dnl Implicitly enabled by default if building with safe-browsing
6040 if test -n "$MOZ_SAFE_BROWSING"; then
6041 MOZ_URL_CLASSIFIER=1
6043 MOZ_ARG_ENABLE_BOOL(url-classifier,
6044 [ --enable-url-classifier Enable url classifier module],
6045 MOZ_URL_CLASSIFIER=1,
6046 MOZ_URL_CLASSIFIER= )
6047 if test -n "$MOZ_URL_CLASSIFIER"; then
6048 AC_DEFINE(MOZ_URL_CLASSIFIER)
6050 AC_SUBST(MOZ_URL_CLASSIFIER)
6052 dnl ========================================================
6053 dnl = Disable zipwriter
6054 dnl ========================================================
6055 MOZ_ARG_DISABLE_BOOL(zipwriter,
6056 [ --disable-zipwriter Disable zipwriter component],
6059 AC_SUBST(MOZ_ZIPWRITER)
6061 dnl ========================================================
6062 dnl = Enable Ultrasparc specific optimizations for JS
6063 dnl ========================================================
6064 MOZ_ARG_ENABLE_BOOL(js-ultrasparc,
6065 [ --enable-js-ultrasparc Use UltraSPARC optimizations in JS],
6066 JS_ULTRASPARC_OPTS=1,
6067 JS_ULTRASPARC_OPTS= )
6069 dnl only enable option for ultrasparcs
6070 if test `echo "$target_os" | grep -c \^solaris 2>/dev/null` = 0 -o \
6071 "$OS_TEST" != "sun4u"; then
6074 AC_SUBST(JS_ULTRASPARC_OPTS)
6076 dnl ========================================================
6077 dnl = Hildon and OSSO checks
6078 dnl ========================================================
6079 PKG_CHECK_MODULES(LIBHILONMIME,libhildonmime,
6082 if test $NS_HILDON; then
6083 AC_DEFINE(NS_HILDON)
6086 PKG_CHECK_MODULES(LIBOSSO,libosso,
6090 if test $NS_OSSO; then
6091 if test -z "$MOZ_ENABLE_DBUS"; then
6092 AC_MSG_ERROR([DBus is required when building for OSSO])
6097 dnl ========================================================
6099 dnl = Feature options that require extra sources to be pulled
6101 dnl ========================================================
6102 dnl MOZ_ARG_HEADER(Features that require extra sources)
6104 dnl ========================================================
6106 dnl = Debugging Options
6108 dnl ========================================================
6109 MOZ_ARG_HEADER(Debugging and Optimizations)
6111 dnl ========================================================
6112 dnl = Disable building with debug info.
6113 dnl = Debugging is OFF by default
6114 dnl ========================================================
6115 if test -z "$MOZ_DEBUG_FLAGS"
6119 if test "$GNU_CC"; then
6120 GCC_VERSION=`$CC -v 2>&1 | awk '/version/ { print $3 }'`
6121 case "$GCC_VERSION" in
6126 MOZ_DEBUG_FLAGS="-g"
6130 MOZ_DEBUG_FLAGS="-g"
6134 MOZ_DEBUG_FLAGS="-g"
6139 MOZ_ARG_ENABLE_STRING(debug,
6140 [ --enable-debug[=DBG] Enable building with developer debug info
6141 (Using compiler flags DBG)],
6142 [ if test "$enableval" != "no"; then
6144 if test -n "$enableval" && test "$enableval" != "yes"; then
6145 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6152 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG"
6153 case "${target_os}" in
6155 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${USER}"
6157 msvc*|mks*|cygwin*|mingw*|os2*|wince*)
6158 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
6161 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`$WHOAMI`"
6164 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DTRACING"
6166 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
6168 if test -n "$MOZ_DEBUG"; then
6169 AC_MSG_CHECKING([for valid debug flags])
6170 _SAVE_CFLAGS=$CFLAGS
6171 CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
6172 AC_TRY_COMPILE([#include <stdio.h>],
6173 [printf("Hello World\n");],
6176 AC_MSG_RESULT([$_results])
6177 if test "$_results" = "no"; then
6178 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
6180 CFLAGS=$_SAVE_CFLAGS
6183 dnl ========================================================
6184 dnl = Enable code optimization. ON by default.
6185 dnl ========================================================
6186 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
6187 MOZ_OPTIMIZE_FLAGS="-O"
6190 MOZ_ARG_ENABLE_STRING(optimize,
6191 [ --disable-optimize Disable compiler optimization
6192 --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
6193 [ if test "$enableval" != "no"; then
6195 if test -n "$enableval" && test "$enableval" != "yes"; then
6196 MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
6201 fi ], MOZ_OPTIMIZE=1)
6203 if test "$COMPILE_ENVIRONMENT"; then
6204 if test -n "$MOZ_OPTIMIZE"; then
6205 AC_MSG_CHECKING([for valid optimization flags])
6206 _SAVE_CFLAGS=$CFLAGS
6207 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
6208 AC_TRY_COMPILE([#include <stdio.h>],
6209 [printf("Hello World\n");],
6212 AC_MSG_RESULT([$_results])
6213 if test "$_results" = "no"; then
6214 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
6216 CFLAGS=$_SAVE_CFLAGS
6218 fi # COMPILE_ENVIRONMENT
6220 AC_SUBST(MOZ_OPTIMIZE)
6221 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
6222 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
6223 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
6225 dnl ========================================================
6226 dnl = Enable/disable debug for specific modules only
6227 dnl = module names beginning with ^ will be disabled
6228 dnl ========================================================
6229 MOZ_ARG_ENABLE_STRING(debug-modules,
6230 [ --enable-debug-modules Enable/disable debug info for specific modules],
6231 [ MOZ_DEBUG_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6233 dnl ========================================================
6234 dnl = Enable/disable generation of debugger info for specific modules only
6235 dnl = the special module name ALL_MODULES can be used to denote all modules
6236 dnl = module names beginning with ^ will be disabled
6237 dnl ========================================================
6238 MOZ_ARG_ENABLE_STRING(debugger-info-modules,
6239 [ --enable-debugger-info-modules
6240 Enable/disable debugger info for specific modules],
6241 [ for i in `echo $enableval | sed 's/,/ /g'`; do
6242 dnl note that the list of module names is reversed as it is copied
6243 dnl this is important, as it will allow config.mk to interpret stuff like
6244 dnl "^ALL_MODULES xpcom" properly
6245 if test "$i" = "no"; then
6248 if test "$i" = "yes"; then
6251 MOZ_DBGRINFO_MODULES="$i $MOZ_DBGRINFO_MODULES";
6254 dnl ========================================================
6255 dnl Enable garbage collector
6256 dnl ========================================================
6257 MOZ_ARG_ENABLE_BOOL(boehm,
6258 [ --enable-boehm Enable the Boehm Garbage Collector],
6261 if test -n "$GC_LEAK_DETECTOR"; then
6262 AC_DEFINE(GC_LEAK_DETECTOR)
6265 dnl ========================================================
6266 dnl Disable runtime logging checks
6267 dnl ========================================================
6268 MOZ_ARG_DISABLE_BOOL(logging,
6269 [ --disable-logging Disable logging facilities],
6270 NS_DISABLE_LOGGING=1,
6271 NS_DISABLE_LOGGING= )
6272 if test "$NS_DISABLE_LOGGING"; then
6273 AC_DEFINE(NS_DISABLE_LOGGING)
6275 AC_DEFINE(MOZ_LOGGING)
6278 dnl ========================================================
6279 dnl = dnl This will enable logging of addref, release, ctor, dtor.
6280 dnl ========================================================
6281 _ENABLE_LOGREFCNT=42
6282 MOZ_ARG_ENABLE_BOOL(logrefcnt,
6283 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
6284 _ENABLE_LOGREFCNT=1,
6285 _ENABLE_LOGREFCNT= )
6286 if test "$_ENABLE_LOGREFCNT" = "1"; then
6287 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
6288 elif test -z "$_ENABLE_LOGREFCNT"; then
6289 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
6292 dnl ========================================================
6293 dnl = Enable trace malloc
6294 dnl ========================================================
6295 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
6296 MOZ_ARG_ENABLE_BOOL(trace-malloc,
6297 [ --enable-trace-malloc Enable malloc tracing],
6300 if test "$NS_TRACE_MALLOC"; then
6301 # Please, Mr. Linker Man, don't take away our symbol names
6302 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6304 AC_DEFINE(NS_TRACE_MALLOC)
6306 AC_SUBST(NS_TRACE_MALLOC)
6308 dnl ========================================================
6309 dnl = Enable jemalloc
6310 dnl ========================================================
6311 MOZ_ARG_ENABLE_BOOL(jemalloc,
6312 [ --enable-jemalloc Replace memory allocator with jemalloc],
6316 if test "$NS_TRACE_MALLOC"; then
6320 if test "$MOZ_MEMORY"; then
6322 dnl Don't try to run compiler tests on Windows
6323 if test "$OS_ARCH" = "WINNT"; then
6324 if test -z "$HAVE_64BIT_OS"; then
6325 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6327 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6330 AC_CHECK_SIZEOF([int *], [4])
6331 case "${ac_cv_sizeof_int_p}" in
6333 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
6336 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
6339 AC_MSG_ERROR([Unexpected pointer size])
6344 AC_DEFINE(MOZ_MEMORY)
6345 if test "x$MOZ_DEBUG" = "x1"; then
6346 AC_DEFINE(MOZ_MEMORY_DEBUG)
6348 dnl The generic feature tests that determine how to compute ncpus are long and
6349 dnl complicated. Therefore, simply define special cpp variables for the
6350 dnl platforms we have special knowledge of.
6351 case "${target_os}" in
6353 AC_DEFINE(MOZ_MEMORY_DARWIN)
6356 AC_DEFINE(MOZ_MEMORY_BSD)
6359 AC_DEFINE(MOZ_MEMORY_LINUX)
6362 AC_DEFINE(MOZ_MEMORY_BSD)
6365 AC_DEFINE(MOZ_MEMORY_SOLARIS)
6367 msvc*|mks*|cygwin*|mingw*)
6368 AC_DEFINE(MOZ_MEMORY_WINDOWS)
6369 dnl XXX: should test for vc8sp1 here, otherwise patching the crt src
6370 dnl will fail miserably
6371 if test "$_CC_SUITE" -lt "8"; then
6372 AC_MSG_ERROR([Building jemalloc requires Visual C++ 2005 or better])
6374 if test -z "$WIN32_CRT_SRC_DIR" -a -z "$WIN32_CUSTOM_CRT_DIR"; then
6375 if test -z "$VCINSTALLDIR" -o ! -d "$VCINSTALLDIR"; then
6376 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.])
6378 WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src"
6381 if test -z "$WIN32_CRT_SRC_DIR"; then
6383 WIN32_CUSTOM_CRT_DIR=`cd "$WIN32_CUSTOM_CRT_DIR" && pwd`
6384 _WIN_UNIX_CRT_PATH="$WIN32_CUSTOM_CRT_DIR"
6386 # CRT source directory
6387 WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd`
6388 _CRT_BASE_DIR=`basename "$WIN32_CRT_SRC_DIR"`
6389 _WIN_UNIX_CRT_PATH="$_objdir/memory/jemalloc/$_CRT_BASE_DIR/build/intel"
6391 dnl need win32 paths in LIB, hence this python abuse. extra brackets
6393 _WIN_CRT_PATH=[`$PYTHON -c 'import sys, os.path; print os.path.normpath(sys.argv[1])' "$_WIN_UNIX_CRT_PATH"`]
6394 MOZ_LIB="$_WIN_CRT_PATH;$LIB"
6395 dnl Needs to be in PATH too, since our tools will wind up linked against it.
6396 dnl This needs to be unix style.
6397 MOZ_PATH="$PATH:$_WIN_UNIX_CRT_PATH"
6398 dnl Statically link the C++ stdlib. We only use this for Breakpad anyway.
6399 AC_DEFINE(_STATIC_CPPLIB)
6400 dnl Don't generate a manifest, since we're linking to a custom CRT.
6401 LDFLAGS="$LDFLAGS -MANIFEST:NO"
6402 dnl Also pass this to NSPR/NSS
6403 DLLFLAGS="$DLLFLAGS -MANIFEST:NO"
6407 AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
6411 AC_ARG_WITH([valgrind],
6412 [ --with-valgrind Enable valgrind integration hooks],
6413 [enable_valgrind="yes"], [enable_valgrind="no"])
6414 AC_CHECK_HEADER([valgrind/valgrind.h], [], [enable_valgrind="no"])
6415 if test "x$enable_valgrind" = "xyes" ; then
6416 AC_DEFINE(MOZ_VALGRIND)
6419 AC_SUBST(MOZ_MEMORY)
6420 AC_SUBST(WIN32_CRT_SRC_DIR)
6421 AC_SUBST(WIN32_CUSTOM_CRT_DIR)
6424 dnl Need to set this for make because NSS doesn't have configure
6427 dnl ========================================================
6428 dnl = Use malloc wrapper lib
6429 dnl ========================================================
6430 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
6431 [ --enable-wrap-malloc Wrap malloc calls (gnu linker only)],
6435 if test -n "$_WRAP_MALLOC"; then
6436 if test "$GNU_CC"; then
6437 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"
6438 MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) -o $@'
6442 dnl ========================================================
6443 dnl = Location of malloc wrapper lib
6444 dnl ========================================================
6445 MOZ_ARG_WITH_STRING(wrap-malloc,
6446 [ --with-wrap-malloc=DIR Location of malloc wrapper library],
6447 WRAP_MALLOC_LIB=$withval)
6449 dnl ========================================================
6450 dnl = Use Electric Fence
6451 dnl ========================================================
6452 MOZ_ARG_ENABLE_BOOL(efence,
6453 [ --enable-efence Link with Electric Fence],
6456 if test -n "$_ENABLE_EFENCE"; then
6457 AC_CHECK_LIB(efence,malloc)
6460 dnl ========================================================
6462 dnl ========================================================
6463 MOZ_ARG_ENABLE_BOOL(jprof,
6464 [ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof)],
6467 if test -n "$MOZ_JPROF"; then
6468 AC_DEFINE(MOZ_JPROF)
6471 dnl ========================================================
6473 dnl ========================================================
6474 MOZ_ARG_ENABLE_BOOL(shark,
6475 [ --enable-shark Enable shark remote profiling (needs CHUD framework)],
6478 if test -n "$MOZ_SHARK"; then
6479 AC_DEFINE(MOZ_SHARK)
6482 dnl ========================================================
6484 dnl ========================================================
6485 MOZ_ARG_ENABLE_BOOL(callgrind,
6486 [ --enable-callgrind Enable callgrind profiling],
6489 if test -n "$MOZ_CALLGRIND"; then
6490 AC_DEFINE(MOZ_CALLGRIND)
6493 dnl ========================================================
6495 dnl ========================================================
6496 MOZ_ARG_ENABLE_BOOL(vtune,
6497 [ --enable-vtune Enable vtune profiling],
6500 if test -n "$MOZ_VTUNE"; then
6501 AC_DEFINE(MOZ_VTUNE)
6504 dnl ========================================================
6505 dnl = Enable static checking using gcc-dehydra
6506 dnl ========================================================
6508 MOZ_ARG_WITH_STRING(static-checking,
6509 [ --with-static-checking=path/to/gcc_dehydra.so
6510 Enable static checking of code using GCC-dehydra],
6511 DEHYDRA_PATH=$withval,
6514 if test -n "$DEHYDRA_PATH"; then
6515 if ! test -f "$DEHYDRA_PATH"; then
6516 AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
6518 AC_DEFINE(NS_STATIC_CHECKING)
6520 AC_SUBST(DEHYDRA_PATH)
6522 dnl ========================================================
6523 dnl = Enable stripping of libs & executables
6524 dnl ========================================================
6525 MOZ_ARG_ENABLE_BOOL(strip,
6526 [ --enable-strip Enable stripping of libs & executables ],
6530 dnl ========================================================
6531 dnl = Enable stripping of libs & executables when packaging
6532 dnl ========================================================
6533 MOZ_ARG_ENABLE_BOOL(install-strip,
6534 [ --enable-install-strip Enable stripping of libs & executables when packaging ],
6538 dnl ========================================================
6539 dnl = --enable-elf-dynstr-gc
6540 dnl ========================================================
6541 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
6542 [ --enable-elf-dynstr-gc Enable elf dynstr garbage collector (opt builds only)],
6543 USE_ELF_DYNSTR_GC=1,
6544 USE_ELF_DYNSTR_GC= )
6546 dnl ========================================================
6547 dnl = --enable-old-abi-compat-wrappers
6548 dnl ========================================================
6549 dnl on x86 linux, the current builds of some popular plugins (notably
6550 dnl flashplayer and real) expect a few builtin symbols from libgcc
6551 dnl which were available in some older versions of gcc. However,
6552 dnl they're _NOT_ available in newer versions of gcc (eg 3.1), so if
6553 dnl we want those plugin to work with a gcc-3.1 built binary, we need
6554 dnl to provide these symbols. MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS defaults
6555 dnl to true on x86 linux, and false everywhere else.
6558 MOZ_ARG_ENABLE_BOOL(old-abi-compat-wrappers,
6559 [ --enable-old-abi-compat-wrappers
6560 Support old GCC ABI symbols to ease the pain
6561 of the linux compiler change],
6562 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1,
6563 MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS= )
6564 if test "$COMPILE_ENVIRONMENT"; then
6565 if test "$MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS"; then
6568 AC_CHECK_FUNCS(__builtin_vec_new __builtin_vec_delete __builtin_new __builtin_delete __pure_virtual)
6570 AC_DEFINE(MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS)
6572 fi # COMPILE_ENVIRONMENT
6574 dnl ========================================================
6575 dnl = --enable-prebinding
6576 dnl ========================================================
6577 MOZ_ARG_ENABLE_BOOL(prebinding,
6578 [ --enable-prebinding Enable prebinding (Mac OS X only)],
6582 dnl ========================================================
6584 dnl = Profiling and Instrumenting
6586 dnl ========================================================
6587 MOZ_ARG_HEADER(Profiling and Instrumenting)
6589 dnl ========================================================
6590 dnl = Enable timeline service, which provides lightweight
6591 dnl = instrumentation of mozilla for performance measurement.
6592 dnl = Timeline is off by default.
6593 dnl ========================================================
6594 MOZ_ARG_ENABLE_BOOL(timeline,
6595 [ --enable-timeline Enable timeline services ],
6598 if test -n "$MOZ_TIMELINE"; then
6599 AC_DEFINE(MOZ_TIMELINE)
6602 dnl ========================================================
6603 dnl Turn on reflow counting
6604 dnl ========================================================
6605 MOZ_ARG_ENABLE_BOOL(reflow-perf,
6606 [ --enable-reflow-perf Enable reflow performance tracing],
6609 if test -n "$MOZ_REFLOW_PREF"; then
6610 AC_DEFINE(MOZ_REFLOW_PREF)
6612 AC_SUBST(MOZ_REFLOW_PERF)
6614 dnl ========================================================
6615 dnl Enable performance metrics.
6616 dnl ========================================================
6617 MOZ_ARG_ENABLE_BOOL(perf-metrics,
6618 [ --enable-perf-metrics Enable performance metrics],
6621 if test -n "$MOZ_PERF_METRICS"; then
6622 AC_DEFINE(MOZ_PERF_METRICS)
6625 dnl ========================================================
6626 dnl Enable code size metrics.
6627 dnl ========================================================
6628 MOZ_ARG_ENABLE_BOOL(codesighs,
6629 [ --enable-codesighs Enable code size analysis tools],
6630 _ENABLE_CODESIGHS=1,
6631 _ENABLE_CODESIGHS= )
6632 if test -n "$_ENABLE_CODESIGHS"; then
6633 if test -d $srcdir/tools/codesighs; then
6636 AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
6640 dnl ========================================================
6641 dnl = Add support for Eazel profiler
6642 dnl ========================================================
6643 MOZ_ARG_ENABLE_BOOL(eazel-profiler-support,
6644 [ --enable-eazel-profiler-support
6645 Enable Corel/Eazel profiler support],
6646 ENABLE_EAZEL_PROFILER=1,
6647 ENABLE_EAZEL_PROFILER= )
6648 if test -n "$ENABLE_EAZEL_PROFILER"; then
6649 AC_DEFINE(ENABLE_EAZEL_PROFILER)
6651 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
6652 EAZEL_PROFILER_CFLAGS="-g -O -gdwarf-2 -finstrument-functions -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
6653 EAZEL_PROFILER_LIBS="-lprofiler -lpthread"
6656 MOZ_ARG_ENABLE_STRING(profile-modules,
6657 [ --enable-profile-modules
6658 Enable/disable profiling for specific modules],
6659 [ MOZ_PROFILE_MODULES=`echo $enableval| sed 's/,/ /g'` ] )
6661 MOZ_ARG_ENABLE_BOOL(insure,
6662 [ --enable-insure Enable insure++ instrumentation (linux only)],
6665 if test -n "$_ENABLE_INSURE"; then
6669 MOZ_INSURE_EXCLUDE_DIRS="config"
6672 MOZ_ARG_WITH_STRING(insure-dirs,
6673 [ --with-insure-dirs=DIRS
6674 Dirs to instrument with insure ],
6675 MOZ_INSURE_DIRS=$withval )
6677 MOZ_ARG_WITH_STRING(insure-exclude-dirs,
6678 [ --with-insure-exclude-dirs=DIRS
6679 Dirs to not instrument with insure ],
6680 MOZ_INSURE_EXCLUDE_DIRS="config $withval" )
6682 dnl ========================================================
6683 dnl = Support for Quantify (Windows)
6684 dnl ========================================================
6685 MOZ_ARG_ENABLE_BOOL(quantify,
6686 [ --enable-quantify Enable Quantify support (Windows only) ],
6690 dnl ========================================================
6691 dnl = Support for demangling undefined symbols
6692 dnl ========================================================
6693 if test -z "$SKIP_LIBRARY_CHECKS"; then
6696 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
6700 # Demangle only for debug or trace-malloc builds
6701 MOZ_DEMANGLE_SYMBOLS=
6702 if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
6703 MOZ_DEMANGLE_SYMBOLS=1
6704 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
6706 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
6708 dnl ========================================================
6709 dnl = Support for gcc stack unwinding (from gcc 3.3)
6710 dnl ========================================================
6711 if test "$HAVE_GCC3_ABI" && test -z "$SKIP_LIBRARY_CHECKS"; then
6712 AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
6715 dnl ========================================================
6719 dnl ========================================================
6720 MOZ_ARG_HEADER(Misc. Options)
6722 dnl ========================================================
6723 dnl update xterm title
6724 dnl ========================================================
6725 MOZ_ARG_ENABLE_BOOL(xterm-updates,
6726 [ --enable-xterm-updates Update XTERM titles with current command.],
6730 dnl =========================================================
6732 dnl =========================================================
6733 MOZ_ARG_ENABLE_STRING([chrome-format],
6734 [ --enable-chrome-format=jar|flat|both|symlink
6735 Select FORMAT of chrome files (default=jar)],
6736 MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
6738 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
6739 MOZ_CHROME_FILE_FORMAT=jar
6742 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
6743 test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
6744 test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
6745 test "$MOZ_CHROME_FILE_FORMAT" != "both"; then
6746 AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, or symlink])
6749 dnl ========================================================
6750 dnl = Define default location for MOZILLA_FIVE_HOME
6751 dnl ========================================================
6752 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
6753 [ --with-default-mozilla-five-home
6754 Set the default value for MOZILLA_FIVE_HOME],
6755 [ val=`echo $withval`
6756 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
6758 dnl ========================================================
6759 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
6760 dnl ========================================================
6761 MOZ_ARG_WITH_STRING(user-appdir,
6762 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
6763 [ val=`echo $withval`
6764 if echo "$val" | grep "\/" >/dev/null; then
6765 AC_MSG_ERROR("Homedir must be single relative path.")
6770 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
6772 dnl ========================================================
6773 dnl = Doxygen configuration
6774 dnl ========================================================
6775 dnl Use commas to specify multiple dirs to this arg
6776 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
6777 MOZ_ARG_WITH_STRING(doc-input-dirs,
6778 [ --with-doc-input-dirs=DIRS
6779 Header/idl dirs to create docs from],
6780 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6781 AC_SUBST(MOZ_DOC_INPUT_DIRS)
6783 dnl Use commas to specify multiple dirs to this arg
6784 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
6785 MOZ_ARG_WITH_STRING(doc-include-dirs,
6786 [ --with-doc-include-dirs=DIRS
6787 Include dirs to preprocess doc headers],
6788 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
6789 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
6791 MOZ_DOC_OUTPUT_DIR='./dist/docs'
6792 MOZ_ARG_WITH_STRING(doc-output-dir,
6793 [ --with-doc-output-dir=DIR
6794 Dir to generate docs into],
6795 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
6796 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
6798 if test -z "$SKIP_COMPILER_CHECKS"; then
6799 dnl ========================================================
6801 dnl = Compiler Options
6803 dnl ========================================================
6804 MOZ_ARG_HEADER(Compiler Options)
6806 dnl ========================================================
6807 dnl Check for gcc -pipe support
6808 dnl ========================================================
6809 AC_MSG_CHECKING([for gcc -pipe support])
6810 if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
6811 echo '#include <stdio.h>' > dummy-hello.c
6812 echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
6813 ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
6814 cat dummy-hello.s | ${AS_BIN} -o dummy-hello.S - 2>&5
6815 if test $? = 0; then
6820 if test "$_res_as_stdin" = "yes"; then
6821 _SAVE_CFLAGS=$CFLAGS
6822 CFLAGS="$CFLAGS -pipe"
6823 AC_TRY_COMPILE( [ #include <stdio.h> ],
6824 [printf("Hello World\n");],
6825 [_res_gcc_pipe="yes"],
6826 [_res_gcc_pipe="no"] )
6827 CFLAGS=$_SAVE_CFLAGS
6829 if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then
6831 CFLAGS="$CFLAGS -pipe"
6832 CXXFLAGS="$CXXFLAGS -pipe"
6836 rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
6837 AC_MSG_RESULT([$_res])
6842 dnl pass -Wno-long-long to the compiler
6843 MOZ_ARG_ENABLE_BOOL(long-long-warning,
6844 [ --enable-long-long-warning
6845 Warn about use of non-ANSI long long type],
6846 _IGNORE_LONG_LONG_WARNINGS=,
6847 _IGNORE_LONG_LONG_WARNINGS=1)
6849 if test "$_IGNORE_LONG_LONG_WARNINGS"; then
6850 _SAVE_CFLAGS="$CFLAGS"
6851 CFLAGS="$CFLAGS ${_COMPILER_PREFIX}-Wno-long-long"
6852 AC_MSG_CHECKING([whether compiler supports -Wno-long-long])
6853 AC_TRY_COMPILE([], [return(0);],
6854 [ _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6855 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-long-long"
6856 result="yes" ], result="no")
6857 AC_MSG_RESULT([$result])
6858 CFLAGS="$_SAVE_CFLAGS"
6861 dnl ========================================================
6862 dnl Profile guided optimization
6863 dnl ========================================================
6864 dnl Test for profiling options
6865 dnl Under gcc 3.3, use -fprofile-arcs/-fbranch-probabilities
6866 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
6868 dnl Provide a switch to disable PGO even when called via profiledbuild.
6869 MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
6870 [ --disable-profile-guided-optimization
6871 Don't build with PGO even if called via make profiledbuild],
6872 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
6873 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
6875 AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
6877 _SAVE_CFLAGS="$CFLAGS"
6878 CFLAGS="$CFLAGS -fprofile-generate"
6880 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
6881 AC_TRY_COMPILE([], [return 0;],
6882 [ PROFILE_GEN_CFLAGS="-fprofile-generate"
6883 result="yes" ], result="no")
6884 AC_MSG_RESULT([$result])
6886 if test $result = "yes"; then
6887 PROFILE_GEN_LDFLAGS="-fprofile-generate"
6888 PROFILE_USE_CFLAGS="-fprofile-use"
6889 PROFILE_USE_LDFLAGS="-fprofile-use"
6891 CFLAGS="$_SAVE_CFLAGS -fprofile-arcs"
6892 AC_MSG_CHECKING([whether C compiler supports -fprofile-arcs])
6893 AC_TRY_COMPILE([], [return 0;],
6894 [ PROFILE_GEN_CFLAGS="-fprofile-arcs"
6895 result="yes" ], result="no")
6896 AC_MSG_RESULT([$result])
6897 if test $result = "yes"; then
6898 PROFILE_USE_CFLAGS="-fbranch-probabilities"
6900 # don't really care, this is an old GCC
6901 PROFILE_GEN_LDFLAGS=
6902 PROFILE_USE_LDFLAGS=
6905 CFLAGS="$_SAVE_CFLAGS"
6907 if test -n "$INTEL_CC"; then
6908 PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
6909 PROFILE_GEN_LDFLAGS=
6910 PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
6911 PROFILE_USE_LDFLAGS=
6914 dnl Sun Studio on Solaris
6915 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
6916 PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
6917 PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
6918 if test "$CPU_ARCH" != "sparc"; then
6919 PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
6920 PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
6922 PROFILE_USE_CFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
6923 PROFILE_USE_LDFLAGS="-xlinkopt=2 -xprofile=use:$_objdir/$enable_application"
6927 AC_SUBST(PROFILE_GEN_CFLAGS)
6928 AC_SUBST(PROFILE_GEN_LDFLAGS)
6929 AC_SUBST(PROFILE_USE_CFLAGS)
6930 AC_SUBST(PROFILE_USE_LDFLAGS)
6934 dnl ========================================================
6935 dnl Test for -pedantic bustage
6936 dnl ========================================================
6937 MOZ_ARG_DISABLE_BOOL(pedantic,
6938 [ --disable-pedantic Issue all warnings demanded by strict ANSI C ],
6940 if test "$_PEDANTIC"; then
6941 _SAVE_CXXFLAGS=$CXXFLAGS
6942 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
6943 AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
6944 AC_TRY_COMPILE([$configure_static_assert_macros],
6945 [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
6946 result="no", result="yes" )
6947 AC_MSG_RESULT([$result])
6948 CXXFLAGS="$_SAVE_CXXFLAGS"
6952 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic"
6953 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic"
6956 AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic. Reconfigure using --disable-pedantic. ])
6961 dnl ========================================================
6962 dnl Test for correct temporary object destruction order
6963 dnl ========================================================
6964 dnl We want to make sure the compiler follows the C++ spec here as
6965 dnl xpcom and the string classes depend on it (bug 235381).
6966 AC_MSG_CHECKING([for correct temporary object destruction order])
6967 AC_TRY_RUN([ class A {
6968 public: A(int& x) : mValue(x) {}
6970 operator char**() { return 0; }
6971 private: int& mValue;
6973 void func(char **arg) {}
6984 result="yes", result="no", result="maybe")
6985 AC_MSG_RESULT([$result])
6987 if test "$result" = "no"; then
6988 AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
6991 dnl ========================================================
6992 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
6993 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
6994 dnl raw pointers in nsCOMPtr.h. (VC++ has the same bug.)
6995 dnl ========================================================
6996 _SAVE_CXXFLAGS=$CXXFLAGS
6997 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
6998 AC_CACHE_CHECK(for correct overload resolution with const and templates,
6999 ac_nscap_nonconst_opeq_bug,
7008 template <class T, class U>
7009 int operator==(const Pointer<T>& rhs, U* lhs)
7011 return rhs.myPtr == lhs;
7014 template <class T, class U>
7015 int operator==(const Pointer<T>& rhs, const U* lhs)
7017 return rhs.myPtr == lhs;
7025 ac_nscap_nonconst_opeq_bug="no",
7026 ac_nscap_nonconst_opeq_bug="yes")])
7027 CXXFLAGS="$_SAVE_CXXFLAGS"
7029 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
7030 AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
7032 fi # SKIP_COMPILER_CHECKS
7034 dnl ========================================================
7036 dnl Should be smarter and check that the compiler does indeed have rtti
7037 dnl ========================================================
7038 MOZ_ARG_ENABLE_BOOL(cpp-rtti,
7039 [ --enable-cpp-rtti Enable C++ RTTI ],
7040 [ _MOZ_USE_RTTI=1 ],
7043 if test "$_MOZ_USE_RTTI"; then
7044 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
7046 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
7049 AC_SUBST(_MOZ_RTTI_FLAGS_ON)
7051 dnl ========================================================
7052 dnl C++ exceptions (g++/egcs only - for now)
7053 dnl Should be smarter and check that the compiler does indeed have exceptions
7054 dnl ========================================================
7055 MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
7056 [ --enable-cpp-exceptions Enable C++ exceptions ],
7057 [ _MOZ_CPP_EXCEPTIONS=1 ],
7058 [ _MOZ_CPP_EXCEPTIONS= ])
7060 if test "$_MOZ_CPP_EXCEPTIONS"; then
7061 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_ON
7063 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_OFF
7066 # Irix & OSF native compilers do not like exception declarations
7067 # when exceptions are disabled
7068 if test -n "$MIPSPRO_CXX" -o -n "$COMPAQ_CXX" -o -n "$VACPP"; then
7069 AC_DEFINE(CPP_THROW_NEW, [])
7071 AC_DEFINE(CPP_THROW_NEW, [throw()])
7075 dnl ========================================================
7077 dnl = Build depencency options
7079 dnl ========================================================
7080 MOZ_ARG_HEADER(Build dependencies)
7082 dnl ========================================================
7083 dnl = Do not auto generate dependency info
7084 dnl ========================================================
7086 MOZ_ARG_DISABLE_BOOL(auto-deps,
7087 [ --disable-auto-deps Do not automatically generate dependency info],
7091 if test -n "$MOZ_AUTO_DEPS"; then
7092 dnl ========================================================
7093 dnl = Use mkdepend instead of $CC -MD for dependency generation
7094 dnl ========================================================
7096 MOZ_ARG_DISABLE_BOOL(md,
7097 [ --disable-md Do not use compiler-based dependencies ],
7100 [dnl Default is to turn on -MD if using GNU-compatible compilers
7101 if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
7104 dnl Default is to use -xM if using Sun Studio on Solaris
7105 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
7108 if test "$_cpp_md_flag"; then
7110 if test "$OS_ARCH" = "OpenVMS"; then
7111 _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(*F).pp))'
7113 _DEPEND_CFLAGS='$(filter-out %/.pp,-Wp,-MD,$(MDDEPDIR)/$(*F).pp)'
7115 dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7116 if test -z "$GNU_CC" && test -z "$GNU_CXX" && test "$OS_ARCH" = "SunOS"; then
7121 _USE_CPP_INCLUDE_FLAG=
7122 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7123 _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7127 AC_SUBST(MOZ_AUTO_DEPS)
7128 AC_SUBST(COMPILER_DEPEND)
7132 dnl ========================================================
7134 dnl = Static Build Options
7136 dnl ========================================================
7137 MOZ_ARG_HEADER(Static build options)
7139 MOZ_ARG_ENABLE_BOOL(static,
7140 [ --enable-static Enable building of internal static libs],
7141 BUILD_STATIC_LIBS=1,
7144 dnl Disable libxul in debug builds, but not for xulrunner.
7145 if test -n "$MOZ_DEBUG" -a "$MOZ_BUILD_APP" != "xulrunner"; then
7149 MOZ_ARG_ENABLE_BOOL(libxul,
7150 [ --enable-libxul Enable building of libxul],
7151 MOZ_ENABLE_LIBXUL=1,
7154 if test -n "$MOZ_STATIC_BUILD_UNSUPPORTED" -a -n "$BUILD_STATIC_LIBS"; then
7155 AC_MSG_ERROR([--enable-static is not supported for building $MOZ_APP_NAME. You probably want --enable-libxul.])
7158 if test -n "$MOZ_ENABLE_LIBXUL" -a -n "$BUILD_STATIC_LIBS"; then
7159 AC_MSG_ERROR([--enable-libxul is not compatible with --enable-static])
7162 if test -n "$MOZ_ENABLE_LIBXUL" -a -z "$MOZ_XUL_APP"; then
7163 AC_MSG_ERROR([--enable-libxul is only compatible with toolkit XUL applications.])
7166 if test -n "$MOZ_ENABLE_LIBXUL"; then
7167 XPCOM_LIBS="$LIBXUL_LIBS"
7168 AC_DEFINE(MOZ_ENABLE_LIBXUL)
7170 if test -n "$BUILD_STATIC_LIBS"; then
7171 AC_DEFINE(MOZ_STATIC_BUILD)
7173 XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS"
7176 dnl ========================================================
7177 dnl = Force JS to be a static lib
7178 dnl ========================================================
7179 MOZ_ARG_ENABLE_BOOL(js-static-build,
7180 [ --enable-js-static-build Force js to be a static lib],
7184 AC_SUBST(JS_STATIC_BUILD)
7186 if test -n "$JS_STATIC_BUILD"; then
7187 AC_DEFINE(EXPORT_JS_API)
7189 if test -z "$BUILD_STATIC_LIBS"; then
7190 AC_MSG_ERROR([--enable-js-static-build is only compatible with --enable-static])
7195 dnl ========================================================
7197 dnl = Standalone module options
7199 dnl ========================================================
7200 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7202 dnl Check for GLib and libIDL.
7203 dnl ========================================================
7204 case "$target_os" in
7205 msvc*|mks*|cygwin*|mingw*|wince*)
7206 SKIP_IDL_CHECK="yes"
7213 if test -z "$COMPILE_ENVIRONMENT"; then
7214 SKIP_IDL_CHECK="yes"
7217 dnl = Allow users to disable libIDL checking for standalone modules
7218 MOZ_ARG_WITHOUT_BOOL(libIDL,
7219 [ --without-libIDL Skip check for libIDL (standalone modules only)],
7220 SKIP_IDL_CHECK="yes")
7222 if test "$SKIP_IDL_CHECK" = "no"
7225 if test "$MACOS_SDK_DIR"; then
7226 dnl xpidl, and therefore libIDL, is only needed on the build host.
7227 dnl Don't build it against the SDK, as that causes problems.
7228 _MACSAVE_CFLAGS="$CFLAGS"
7229 _MACSAVE_LIBS="$LIBS"
7230 _MACSAVE_LDFLAGS="$LDFLAGS"
7231 _MACSAVE_NEXT_ROOT="$NEXT_ROOT"
7233 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"`
7234 LIBS=`echo $LIBS|sed -e "s?-L${MACOS_SDK_DIR}/usr/lib[^ ]*??g"`
7235 LDFLAGS=`echo $LDFLAGS|sed -e "s?-Wl,-syslibroot,${MACOS_SDK_DIR}??g"`
7240 if test "$MOZ_ENABLE_GTK2"; then
7241 PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0 glib-2.0 gobject-2.0, _LIBIDL_FOUND=1,_LIBIDL_FOUND=)
7243 dnl if no gtk/libIDL1 or gtk2/libIDL2 combination was found, fall back
7244 dnl to either libIDL1 or libIDL2.
7245 if test -z "$_LIBIDL_FOUND"; then
7246 AM_PATH_LIBIDL($LIBIDL_VERSION,_LIBIDL_FOUND=1)
7247 if test -z "$_LIBIDL_FOUND"; then
7248 PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0,_LIBIDL_FOUND=1)
7252 dnl If we don't have a libIDL config program & not cross-compiling,
7253 dnl look for orbit-config instead.
7255 if test -z "$_LIBIDL_FOUND" && test -z "$CROSS_COMPILE"; then
7256 AC_PATH_PROGS(ORBIT_CONFIG, $ORBIT_CONFIG orbit-config)
7257 if test -n "$ORBIT_CONFIG"; then
7258 AC_MSG_CHECKING([for ORBit libIDL usability])
7259 _ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags`
7260 _ORBIT_LIBS=`${ORBIT_CONFIG} client --libs`
7261 _ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}`
7262 _ORBIT_LIB_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-L/); } }' -- ${_ORBIT_LIBS}`
7263 LIBIDL_CFLAGS="$_ORBIT_INC_PATH"
7264 LIBIDL_LIBS="$_ORBIT_LIB_PATH -lIDL -lglib"
7266 _SAVE_CFLAGS="$CFLAGS"
7268 CFLAGS="$LIBIDL_CFLAGS $CFLAGS"
7269 LIBS="$LIBIDL_LIBS $LIBS"
7272 #include <libIDL/IDL.h>
7275 s=strdup(IDL_get_libver_string());
7288 AC_MSG_RESULT($result)
7289 CFLAGS="$_SAVE_CFLAGS"
7293 if test -z "$_LIBIDL_FOUND"; then
7294 AC_MSG_ERROR([libIDL not found.
7295 libIDL $LIBIDL_VERSION or higher is required.])
7297 if test "$MACOS_SDK_DIR"; then
7298 CFLAGS="$_MACSAVE_CFLAGS"
7299 LIBS="$_MACSAVE_LIBS"
7300 LDFLAGS="$_MACSAVE_LDFLAGS"
7301 if test -n "$_MACSAVE_NEXT_ROOT" ; then
7302 export NEXT_ROOT="$_MACSAVE_NEXT_ROOT"
7307 if test -n "$CROSS_COMPILE"; then
7308 if test -z "$HOST_LIBIDL_CONFIG"; then
7309 HOST_LIBIDL_CONFIG="$LIBIDL_CONFIG"
7311 if test -n "$HOST_LIBIDL_CONFIG" && test "$HOST_LIBIDL_CONFIG" != "no"; then
7312 HOST_LIBIDL_CFLAGS=`${HOST_LIBIDL_CONFIG} --cflags`
7313 HOST_LIBIDL_LIBS=`${HOST_LIBIDL_CONFIG} --libs`
7315 HOST_LIBIDL_CFLAGS="$LIBIDL_CFLAGS"
7316 HOST_LIBIDL_LIBS="$LIBIDL_LIBS"
7320 if test -z "$SKIP_PATH_CHECKS"; then
7321 if test -z "${GLIB_CFLAGS}" || test -z "${GLIB_LIBS}" ; then
7322 if test "$MOZ_ENABLE_GTK2"; then
7323 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
7325 AM_PATH_GLIB(${GLIB_VERSION})
7330 if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then
7331 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
7334 AC_SUBST(LIBIDL_CFLAGS)
7335 AC_SUBST(LIBIDL_LIBS)
7336 AC_SUBST(STATIC_LIBIDL)
7337 AC_SUBST(GLIB_CFLAGS)
7339 AC_SUBST(GLIB_GMODULE_LIBS)
7340 AC_SUBST(HOST_LIBIDL_CONFIG)
7341 AC_SUBST(HOST_LIBIDL_CFLAGS)
7342 AC_SUBST(HOST_LIBIDL_LIBS)
7344 dnl ========================================================
7345 dnl Check for libart
7346 dnl ========================================================
7347 if test "$MOZ_SVG_RENDERER_LIBART"; then
7348 if test ! -f $topsrcdir/other-licenses/libart_lgpl/Makefile.in; then
7349 AC_MSG_ERROR([You must check out the mozilla version of libart. Use
7350 mk_add_options MOZ_CO_MODULE=mozilla/other-licenses/libart_lgpl])
7353 dnl libart's configure hasn't been run yet, but we know what the
7354 dnl answer should be anyway
7355 MOZ_LIBART_CFLAGS='-I${DIST}/include/libart_lgpl'
7356 case "$target_os" in
7357 msvc*|mks*|cygwin*|mingw*|wince*)
7358 MOZ_LIBART_LIBS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)moz_art_lgpl.$(IMPORT_LIB_SUFFIX)'
7361 MOZ_LIBART_LIBS='-lmoz_art -lm'
7364 MOZ_LIBART_LIBS='-lmoz_art_lgpl -lroot -lbe'
7367 MOZ_LIBART_LIBS='-lmoz_art_lgpl -lm'
7373 AC_SUBST(MOZ_LIBART_CFLAGS)
7374 AC_SUBST(MOZ_LIBART_LIBS)
7376 dnl ========================================================
7378 dnl ========================================================
7379 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
7382 MOZ_ARG_ENABLE_BOOL(system-cairo,
7383 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
7387 # Check for headers defining standard int types.
7388 AC_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
7390 if test "$MOZ_TREE_CAIRO"; then
7391 AC_DEFINE(MOZ_TREE_CAIRO)
7393 # For now we assume that we will have a uint64_t available through
7394 # one of the above headers or mozstdint.h.
7395 AC_DEFINE(HAVE_UINT64_T)
7397 # Define macros for cairo-features.h
7398 if test "$MOZ_X11"; then
7399 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
7400 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
7401 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
7402 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7403 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7404 MOZ_ENABLE_CAIRO_FT=1
7405 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
7407 if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
7408 QPAINTER_SURFACE_FEATURE="#define CAIRO_HAS_QPAINTER_SURFACE 1"
7410 if test "$MOZ_WIDGET_TOOLKIT" = "mac" -o "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
7411 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
7412 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
7413 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
7415 if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
7416 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
7417 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
7418 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7420 if test "$MOZ_WIDGET_TOOLKIT" = "os2"; then
7421 OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
7422 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7423 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
7424 MOZ_ENABLE_CAIRO_FT=1
7425 CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
7426 CAIRO_FT_LIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
7428 if test "$MOZ_ENABLE_GLITZ"; then
7429 GLITZ_SURFACE_FEATURE="#define CAIRO_HAS_GLITZ_SURFACE 1"
7431 if test "$MOZ_WIDGET_TOOLKIT" = "beos"; then
7432 PKG_CHECK_MODULES(CAIRO_FT, fontconfig freetype2)
7433 BEOS_SURFACE_FEATURE="#define CAIRO_HAS_BEOS_SURFACE 1"
7434 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
7435 MOZ_ENABLE_CAIRO_FT=1
7437 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
7438 AC_SUBST(CAIRO_FT_CFLAGS)
7440 if test "$MOZ_DEBUG"; then
7441 SANITY_CHECKING_FEATURE="#define CAIRO_DO_SANITY_CHECKING 1"
7443 SANITY_CHECKING_FEATURE="#undef CAIRO_DO_SANITY_CHECKING"
7446 PNG_FUNCTIONS_FEATURE="#define CAIRO_HAS_PNG_FUNCTIONS 1"
7448 AC_SUBST(PS_SURFACE_FEATURE)
7449 AC_SUBST(PDF_SURFACE_FEATURE)
7450 AC_SUBST(SVG_SURFACE_FEATURE)
7451 AC_SUBST(XLIB_SURFACE_FEATURE)
7452 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
7453 AC_SUBST(QUARTZ_SURFACE_FEATURE)
7454 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
7455 AC_SUBST(XCB_SURFACE_FEATURE)
7456 AC_SUBST(WIN32_SURFACE_FEATURE)
7457 AC_SUBST(OS2_SURFACE_FEATURE)
7458 AC_SUBST(BEOS_SURFACE_FEATURE)
7459 AC_SUBST(GLITZ_SURFACE_FEATURE)
7460 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
7461 AC_SUBST(FT_FONT_FEATURE)
7462 AC_SUBST(WIN32_FONT_FEATURE)
7463 AC_SUBST(QUARTZ_FONT_FEATURE)
7464 AC_SUBST(PNG_FUNCTIONS_FEATURE)
7465 AC_SUBST(QPAINTER_SURFACE_FEATURE)
7467 if test "$_WIN32_MSVC"; then
7468 MOZ_CAIRO_LIBS='$(DEPTH)/gfx/cairo/cairo/src/mozcairo.lib $(DEPTH)/gfx/cairo/libpixman/src/mozlibpixman.lib'
7469 if test "$MOZ_ENABLE_GLITZ"; then
7470 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'$(DEPTH)/gfx/cairo/glitz/src/mozglitz.lib $(DEPTH)/gfx/cairo/glitz/src/wgl/mozglitzwgl.lib'
7473 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"
7475 if test "$MOZ_X11"; then
7476 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS -lXrender -lfreetype -lfontconfig"
7479 if test "$MOZ_ENABLE_GLITZ"; then
7480 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src -lmozglitz'
7481 if test "$MOZ_X11"; then
7482 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src/glx -lmozglitzglx -lGL'
7484 if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
7485 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS "'-L$(DEPTH)/gfx/cairo/glitz/src/wgl -lmozglitzwgl'
7490 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
7491 mv -f $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig 2> /dev/null
7494 PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION freetype2 fontconfig)
7495 MOZ_CAIRO_CFLAGS=$CAIRO_CFLAGS
7496 MOZ_CAIRO_LIBS=$CAIRO_LIBS
7497 if test "$MOZ_X11"; then
7498 PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
7499 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
7500 MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
7504 AC_SUBST(MOZ_TREE_CAIRO)
7505 AC_SUBST(MOZ_CAIRO_CFLAGS)
7506 AC_SUBST(MOZ_CAIRO_LIBS)
7508 dnl ========================================================
7510 dnl ========================================================
7513 MOZ_ARG_ENABLE_BOOL(system-lcms,
7514 [ --enable-system-lcms Use system lcms (located with pkgconfig)],
7518 if test -z "$MOZ_NATIVE_LCMS"
7521 if test "$_WIN32_MSVC"; then
7522 if test -z "$BUILD_STATIC_LIBS" -a -z "$MOZ_ENABLE_LIBXUL"; then
7523 LCMS_CFLAGS=-DLCMS_DLL
7525 LCMS_LIBS='$(LIBXUL_DIST)/lib/mozlcms.lib'
7527 LCMS_LIBS='-L$(LIBXUL_DIST)/bin -lmozlcms'
7530 PKG_CHECK_MODULES(LCMS, lcms >= $LCMS_VERSION)
7533 AC_SUBST(MOZ_NATIVE_LCMS)
7534 AC_SUBST(LCMS_CFLAGS)
7537 dnl ========================================================
7539 dnl ========================================================
7540 MOZ_ARG_DISABLE_BOOL(xul,
7541 [ --disable-xul Disable XUL],
7543 if test "$MOZ_XUL"; then
7546 dnl remove extensions that require XUL
7547 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
7552 dnl ========================================================
7553 dnl Two ways to enable Python support:
7554 dnl --enable-extensions=python # select all available.
7555 dnl (MOZ_PYTHON_EXTENSIONS contains the list of extensions)
7557 dnl --enable-extensions=python/xpcom,... # select individual ones
7559 dnl If either is used, we locate the Python to use.
7560 dnl ========================================================
7562 dnl If 'python' appears anywhere in the extensions list, go lookin'...
7563 if test `echo "$MOZ_EXTENSIONS" | grep -c python` -ne 0; then
7564 dnl Allow PYTHON to point to the Python interpreter to use
7565 dnl (note that it must be the python executable - which we
7566 dnl run to locate the relevant paths etc)
7567 dnl If not set, we use whatever Python we can find.
7569 dnl Ask Python what its version number is
7571 MOZ_PYTHON_VER=`$PYTHON -c "import sys;print '%d%d' % sys.version_info[0:2]"`
7572 MOZ_PYTHON_VER_DOTTED=`$PYTHON -c "import sys;print '%d.%d' % sys.version_info[0:2]"`
7574 dnl Ask for the Python "prefix" (ie, home/source dir)
7575 MOZ_PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
7576 dnl Setup the include and library directories.
7577 if test "$OS_ARCH" = "WINNT"; then
7578 MOZ_PYTHON_PREFIX=`$CYGPATH_W $MOZ_PYTHON_PREFIX | $CYGPATH_S`
7579 dnl Source trees have "include" and "PC" for .h, and "PCbuild" for .lib
7580 dnl Binary trees have "include" for .h, and "libs" for .lib
7581 dnl We add 'em both - along with quotes, to handle spaces.
7582 MOZ_PYTHON_DLL_SUFFIX=.pyd
7583 MOZ_PYTHON_INCLUDES="\"-I$MOZ_PYTHON_PREFIX/include\" \"-I$MOZ_PYTHON_PREFIX/PC\""
7584 MOZ_PYTHON_LIBS="\"/libpath:$MOZ_PYTHON_PREFIX/PCBuild\" \"/libpath:$MOZ_PYTHON_PREFIX/libs\""
7586 dnl Non-Windows include and libs
7587 MOZ_PYTHON_DLL_SUFFIX=$DLL_SUFFIX
7588 MOZ_PYTHON_INCLUDES="-I$MOZ_PYTHON_PREFIX/include/python$MOZ_PYTHON_VER_DOTTED"
7589 dnl Check for dynamic Python lib
7590 dnl - A static Python is no good - multiple dynamic libraries (xpcom
7591 dnl - core, xpcom loader, pydom etc) all need to share Python.
7592 dnl - Python 2.3's std --enable-shared configure option will
7593 dnl create a libpython2.3.so.1.0. We should first try this
7594 dnl dotted versioned .so file because this is the one that
7595 dnl the PyXPCOM build mechanics tries to link to.
7596 dnl XXX Should find a better way than hardcoding "1.0".
7597 dnl - Python developement tree dir layouts are NOT allowed here
7598 dnl because the PyXPCOM build just dies on it later anyway.
7599 dnl - Fixes to the above by Python/*nix knowledgable people welcome!
7600 if test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7601 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7602 elif test -f "$MOZ_PYTHON_PREFIX/lib64/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
7603 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib64 -lpython$MOZ_PYTHON_VER_DOTTED"
7604 elif test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7605 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
7606 elif test -f "$MOZ_PYTHON_PREFIX/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
7607 dnl Don't Python development tree directory layout.
7608 MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX -lpython$MOZ_PYTHON_VER_DOTTED"
7609 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.])
7610 elif test "$OS_ARCH" = "Darwin"; then
7611 dnl We do Darwin last, so if a custom non-framework build of
7612 dnl python is used on OSX, then it will be picked up first by
7613 dnl the logic above.
7614 MOZ_PYTHON_LIBS="-framework Python"
7616 AC_MSG_ERROR([Could not find build shared libraries for Python at $MOZ_PYTHON_PREFIX. This is required for PyXPCOM.])
7618 if test "$OS_ARCH" = "Linux"; then
7619 MOZ_PYTHON_LIBS="$MOZ_PYTHON_LIBS -lutil"
7622 dnl Handle "_d" on Windows
7623 if test "$OS_ARCH" = "WINNT" && test -n "$MOZ_DEBUG"; then
7624 MOZ_PYTHON_DEBUG_SUFFIX="_d"
7626 MOZ_PYTHON_DEBUG_SUFFIX=
7628 AC_MSG_RESULT(Building Python extensions using python-$MOZ_PYTHON_VER_DOTTED from $MOZ_PYTHON_PREFIX)
7631 dnl If the user asks for the 'python' extension, then we add
7632 dnl MOZ_PYTHON_EXTENSIONS to MOZ_EXTENSIONS - but with the leading 'python/'
7633 dnl Note the careful regex - it must match 'python' followed by anything
7634 dnl other than a '/', including the end-of-string.
7635 if test `echo "$MOZ_EXTENSIONS" | grep -c 'python\([[^/]]\|$\)'` -ne 0; then
7636 for pyext in $MOZ_PYTHON_EXTENSIONS; do
7637 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS python/$pyext`
7640 dnl Later we may allow MOZ_PYTHON_EXTENSIONS to be specified on the
7641 dnl command-line, but not yet
7642 AC_SUBST(MOZ_PYTHON_EXTENSIONS)
7643 AC_SUBST(MOZ_PYTHON)
7644 AC_SUBST(MOZ_PYTHON_PREFIX)
7645 AC_SUBST(MOZ_PYTHON_INCLUDES)
7646 AC_SUBST(MOZ_PYTHON_LIBS)
7647 AC_SUBST(MOZ_PYTHON_VER)
7648 AC_SUBST(MOZ_PYTHON_VER_DOTTED)
7649 AC_SUBST(MOZ_PYTHON_DEBUG_SUFFIX)
7650 AC_SUBST(MOZ_PYTHON_DLL_SUFFIX)
7652 dnl ========================================================
7653 dnl disable profile sharing
7654 dnl ========================================================
7655 MOZ_ARG_DISABLE_BOOL(profilesharing,
7656 [ --disable-profilesharing Disable profile sharing],
7657 MOZ_PROFILESHARING=,
7658 MOZ_PROFILESHARING=1 )
7659 if test "$MOZ_PROFILESHARING"; then
7661 AC_DEFINE(MOZ_PROFILESHARING)
7664 dnl ========================================================
7666 dnl ========================================================
7667 MOZ_ARG_ENABLE_BOOL(ipcd,
7668 [ --enable-ipcd Enable IPC daemon],
7672 dnl ========================================================
7673 dnl disable profile locking
7674 dnl do no use this in applications that can have more than
7675 dnl one process accessing the profile directory.
7676 dnl ========================================================
7677 MOZ_ARG_DISABLE_BOOL(profilelocking,
7678 [ --disable-profilelocking Disable profile locking],
7679 MOZ_PROFILELOCKING=,
7680 MOZ_PROFILELOCKING=1 )
7681 if test "$MOZ_PROFILELOCKING"; then
7682 AC_DEFINE(MOZ_PROFILELOCKING)
7685 dnl ========================================================
7686 dnl disable rdf services
7687 dnl ========================================================
7688 MOZ_ARG_DISABLE_BOOL(rdf,
7689 [ --disable-rdf Disable RDF],
7691 if test "$MOZ_RDF"; then
7697 dnl ========================================================
7698 dnl necko configuration options
7699 dnl ========================================================
7702 dnl option to disable various necko protocols
7704 MOZ_ARG_ENABLE_STRING(necko-protocols,
7705 [ --enable-necko-protocols[={http,ftp,default,all,none}]
7706 Enable/disable specific protocol handlers],
7707 [ for option in `echo $enableval | sed 's/,/ /g'`; do
7708 if test "$option" = "yes" || test "$option" = "all"; then
7709 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7710 elif test "$option" = "no" || test "$option" = "none"; then
7712 elif test "$option" = "default"; then
7713 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
7714 elif test `echo "$option" | grep -c \^-` != 0; then
7715 option=`echo $option | sed 's/^-//'`
7716 NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
7718 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
7721 NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
7723 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
7724 AC_SUBST(NECKO_PROTOCOLS)
7725 for p in $NECKO_PROTOCOLS; do
7726 AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
7730 dnl option to disable necko's disk cache
7732 MOZ_ARG_DISABLE_BOOL(necko-disk-cache,
7733 [ --disable-necko-disk-cache
7734 Disable necko disk cache],
7737 AC_SUBST(NECKO_DISK_CACHE)
7738 if test "$NECKO_DISK_CACHE"; then
7739 AC_DEFINE(NECKO_DISK_CACHE)
7743 dnl option to minimize size of necko's i/o buffers
7745 MOZ_ARG_ENABLE_BOOL(necko-small-buffers,
7746 [ --enable-necko-small-buffers
7747 Minimize size of necko's i/o buffers],
7748 NECKO_SMALL_BUFFERS=1,
7749 NECKO_SMALL_BUFFERS=)
7750 AC_SUBST(NECKO_SMALL_BUFFERS)
7751 if test "$NECKO_SMALL_BUFFERS"; then
7752 AC_DEFINE(NECKO_SMALL_BUFFERS)
7756 dnl option to disable cookies
7758 MOZ_ARG_DISABLE_BOOL(cookies,
7759 [ --disable-cookies Disable cookie support],
7762 AC_SUBST(NECKO_COOKIES)
7763 if test "$NECKO_COOKIES"; then
7764 AC_DEFINE(NECKO_COOKIES)
7767 dnl NECKO_ configuration options are not global
7768 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_"
7770 dnl ========================================================
7771 dnl string api compatibility
7772 dnl ========================================================
7773 MOZ_ARG_DISABLE_BOOL(v1-string-abi,
7774 [ --disable-v1-string-abi Disable binary compatibility layer for strings],
7776 MOZ_V1_STRING_ABI=1)
7777 AC_SUBST(MOZ_V1_STRING_ABI)
7778 if test "$MOZ_V1_STRING_ABI"; then
7779 AC_DEFINE(MOZ_V1_STRING_ABI)
7782 dnl Only build Mork if it's required
7784 if test "$MOZ_MORK"; then
7788 dnl Build the lightweight Mork reader if required
7789 AC_SUBST(MOZ_MORKREADER)
7790 if test "$MOZ_MORKREADER"; then
7791 AC_DEFINE(MOZ_MORKREADER)
7794 dnl ========================================================
7795 if test "$MOZ_DEBUG" || test "$NS_TRACE_MALLOC"; then
7796 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7799 dnl ========================================================
7801 dnl = Maintainer debug option (no --enable equivalent)
7803 dnl ========================================================
7808 AC_SUBST(AR_EXTRACT)
7812 AC_SUBST(AS_DASH_C_FLAG)
7817 AC_SUBST(USE_SHORT_LIBNAME)
7821 AC_SUBST(NS_USE_NATIVE)
7822 AC_SUBST(MOZ_WIDGET_TOOLKIT)
7823 AC_SUBST(MOZ_GFX_TOOLKIT)
7824 AC_SUBST(MOZ_UPDATE_XTERM)
7828 AC_SUBST(MOZ_AUTH_EXTENSION)
7829 AC_SUBST(MOZ_MATHML)
7830 AC_SUBST(MOZ_PERMISSIONS)
7832 AC_SUBST(MOZ_NO_INSPECTOR_APIS)
7833 AC_SUBST(MOZ_PREF_EXTENSIONS)
7835 AC_SUBST(MOZ_XSLT_STANDALONE)
7836 AC_SUBST(MOZ_JS_LIBS)
7839 AC_SUBST(MOZ_DEBUG_MODULES)
7840 AC_SUBST(MOZ_PROFILE_MODULES)
7841 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
7842 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
7843 AC_SUBST(MOZ_DEBUG_FLAGS)
7844 AC_SUBST(MOZ_DEBUG_LDFLAGS)
7845 AC_SUBST(WARNINGS_AS_ERRORS)
7846 AC_SUBST(MOZ_DBGRINFO_MODULES)
7847 AC_SUBST(MOZ_EXTENSIONS)
7848 AC_SUBST(MOZ_IMG_DECODERS)
7849 AC_SUBST(MOZ_IMG_ENCODERS)
7850 AC_SUBST(MOZ_JSDEBUGGER)
7852 AC_SUBST(MOZ_NO_XPCOM_OBSOLETE)
7853 AC_SUBST(MOZ_PLUGINS)
7854 AC_SUBST(ENABLE_EAZEL_PROFILER)
7855 AC_SUBST(EAZEL_PROFILER_CFLAGS)
7856 AC_SUBST(EAZEL_PROFILER_LIBS)
7857 AC_SUBST(MOZ_PERF_METRICS)
7858 AC_SUBST(GC_LEAK_DETECTOR)
7859 AC_SUBST(MOZ_LOG_REFCNT)
7863 AC_SUBST(MOZ_CALLGRIND)
7865 AC_SUBST(MOZ_XPCTOOLS)
7866 AC_SUBST(MOZ_JSLOADER)
7867 AC_SUBST(MOZ_USE_NATIVE_UCONV)
7868 AC_SUBST(MOZ_INSURE)
7869 AC_SUBST(MOZ_INSURE_DIRS)
7870 AC_SUBST(MOZ_INSURE_EXCLUDE_DIRS)
7871 AC_SUBST(MOZ_QUANTIFY)
7872 AC_SUBST(MOZ_INSURIFYING)
7874 AC_SUBST(MOZ_PLACES)
7875 AC_SUBST(MOZ_PLACES_BOOKMARKS)
7876 AC_SUBST(MOZ_STORAGE)
7878 AC_SUBST(NS_PRINTING)
7880 AC_SUBST(MOZ_JAVAXPCOM)
7881 AC_SUBST(JAVA_INCLUDE_PATH)
7886 AC_SUBST(MOZ_PROFILESHARING)
7887 AC_SUBST(MOZ_PROFILELOCKING)
7892 AC_SUBST(MOZ_XIE_LIBS)
7893 AC_SUBST(MOZ_ENABLE_POSTSCRIPT)
7895 AC_SUBST(XPCOM_USE_LEA)
7896 AC_SUBST(BUILD_STATIC_LIBS)
7897 AC_SUBST(MOZ_ENABLE_LIBXUL)
7898 AC_SUBST(ENABLE_TESTS)
7900 AC_SUBST(MOZ_UNIVERSALCHARDET)
7901 AC_SUBST(ACCESSIBILITY)
7902 AC_SUBST(MOZ_XPINSTALL)
7903 AC_SUBST(MOZ_VIEW_SOURCE)
7904 AC_SUBST(MOZ_SPELLCHECK)
7905 AC_SUBST(MOZ_XPFE_COMPONENTS)
7906 AC_SUBST(MOZ_USER_DIR)
7907 AC_SUBST(MOZ_CRASHREPORTER)
7909 AC_SUBST(ENABLE_STRIP)
7910 AC_SUBST(PKG_SKIP_STRIP)
7911 AC_SUBST(USE_ELF_DYNSTR_GC)
7912 AC_SUBST(USE_PREBINDING)
7913 AC_SUBST(INCREMENTAL_LINKER)
7914 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
7915 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
7916 AC_SUBST(MOZ_XPCOM_OBSOLETE_LIBS)
7918 AC_SUBST(MOZ_FIX_LINK_PATHS)
7919 AC_SUBST(XPCOM_LIBS)
7920 AC_SUBST(XPCOM_FROZEN_LDOPTS)
7921 AC_SUBST(XPCOM_GLUE_LDOPTS)
7922 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
7924 AC_SUBST(USE_DEPENDENT_LIBS)
7926 AC_SUBST(MOZ_BUILD_ROOT)
7927 AC_SUBST(MOZ_OS2_TOOLS)
7928 AC_SUBST(MOZ_OS2_USE_DECLSPEC)
7930 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
7931 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
7932 AC_SUBST(MOZ_TIMELINE)
7934 AC_SUBST(TARGET_DEVICE)
7936 AC_SUBST(MOZ_APP_NAME)
7937 AC_SUBST(MOZ_APP_DISPLAYNAME)
7938 AC_SUBST(MOZ_APP_VERSION)
7939 AC_SUBST(FIREFOX_VERSION)
7941 AC_SUBST(MOZ_PKG_SPECIAL)
7943 AC_SUBST(MOZILLA_OFFICIAL)
7944 AC_SUBST(BUILD_OFFICIAL)
7945 AC_SUBST(MOZ_MILESTONE_RELEASE)
7948 AC_SUBST(MOZ_PROFILE)
7949 AC_SUBST(MOZ_DEBUG_SYMBOLS)
7950 AC_SUBST(MOZ_MAPINFO)
7951 AC_SUBST(MOZ_BROWSE_INFO)
7952 AC_SUBST(MOZ_TOOLS_DIR)
7953 AC_SUBST(CYGWIN_WRAPPER)
7955 AC_SUBST(WIN32_REDIST_DIR)
7958 dnl Echo the CFLAGS to remove extra whitespace.
7965 $_MOZ_EXCEPTIONS_FLAGS \
7966 $_WARNINGS_CXXFLAGS \
7969 COMPILE_CFLAGS=`echo \
7974 COMPILE_CXXFLAGS=`echo \
7975 $_DEFINES_CXXFLAGS \
7979 AC_SUBST(SYSTEM_MAKEDEPEND)
7980 AC_SUBST(SYSTEM_JPEG)
7981 AC_SUBST(SYSTEM_PNG)
7982 AC_SUBST(SYSTEM_ZLIB)
7983 AC_SUBST(SYSTEM_BZ2)
7985 AC_SUBST(JPEG_CFLAGS)
7987 AC_SUBST(ZLIB_CFLAGS)
7989 AC_SUBST(BZ2_CFLAGS)
7991 AC_SUBST(PNG_CFLAGS)
7994 AC_SUBST(MOZ_JPEG_CFLAGS)
7995 AC_SUBST(MOZ_JPEG_LIBS)
7996 AC_SUBST(MOZ_ZLIB_CFLAGS)
7997 AC_SUBST(MOZ_ZLIB_LIBS)
7998 AC_SUBST(MOZ_BZ2_CFLAGS)
7999 AC_SUBST(MOZ_BZ2_LIBS)
8000 AC_SUBST(MOZ_PNG_CFLAGS)
8001 AC_SUBST(MOZ_PNG_LIBS)
8003 AC_SUBST(NSPR_CFLAGS)
8005 AC_SUBST(MOZ_NATIVE_NSPR)
8007 AC_SUBST(NSS_CFLAGS)
8009 AC_SUBST(NSS_DEP_LIBS)
8010 AC_SUBST(MOZ_NATIVE_NSS)
8015 AC_SUBST(COMPILE_CFLAGS)
8016 AC_SUBST(COMPILE_CXXFLAGS)
8019 AC_SUBST(CROSS_COMPILE)
8023 AC_SUBST(HOST_CFLAGS)
8024 AC_SUBST(HOST_CXXFLAGS)
8025 AC_SUBST(HOST_OPTIMIZE_FLAGS)
8027 AC_SUBST(HOST_AR_FLAGS)
8029 AC_SUBST(HOST_RANLIB)
8030 AC_SUBST(HOST_NSPR_MDCPUCFG)
8031 AC_SUBST(HOST_BIN_SUFFIX)
8032 AC_SUBST(HOST_OS_ARCH)
8034 AC_SUBST(TARGET_CPU)
8035 AC_SUBST(TARGET_VENDOR)
8037 AC_SUBST(TARGET_NSPR_MDCPUCFG)
8038 AC_SUBST(TARGET_MD_ARCH)
8039 AC_SUBST(TARGET_XPCOM_ABI)
8042 AC_SUBST(OS_RELEASE)
8045 AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
8046 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8048 AC_SUBST(WRAP_MALLOC_CFLAGS)
8049 AC_SUBST(WRAP_MALLOC_LIB)
8052 AC_SUBST(MKSHLIB_FORCE_ALL)
8053 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8054 AC_SUBST(DSO_CFLAGS)
8055 AC_SUBST(DSO_PIC_CFLAGS)
8056 AC_SUBST(DSO_LDOPTS)
8057 AC_SUBST(LIB_PREFIX)
8058 AC_SUBST(DLL_PREFIX)
8059 AC_SUBST(DLL_SUFFIX)
8060 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8061 AC_SUBST(LIB_SUFFIX)
8062 AC_SUBST(OBJ_SUFFIX)
8063 AC_SUBST(BIN_SUFFIX)
8064 AC_SUBST(ASM_SUFFIX)
8065 AC_SUBST(IMPORT_LIB_SUFFIX)
8067 AC_SUBST(CC_VERSION)
8068 AC_SUBST(CXX_VERSION)
8069 AC_SUBST(MSMANIFEST_TOOL)
8071 if test "$USING_HCC"; then
8072 CC='${topsrcdir}/build/hcc'
8074 CXX='${topsrcdir}/build/hcpp'
8075 CXX="$CXX '$_OLDCXX'"
8080 dnl Check for missing components
8081 if test "$COMPILE_ENVIRONMENT"; then
8082 if test "$MOZ_X11"; then
8083 dnl ====================================================
8084 dnl = Check if X headers exist
8085 dnl ====================================================
8086 _SAVE_CFLAGS=$CFLAGS
8087 CFLAGS="$CFLAGS $XCFLAGS"
8091 #include <X11/Xlib.h>
8092 #include <X11/Intrinsic.h>
8096 if ((dpy = XOpenDisplay(NULL)) == NULL) {
8097 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8101 [ AC_MSG_ERROR([Could not compile basic X program.]) ])
8102 CFLAGS="$_SAVE_CFLAGS"
8104 if test ! -z "$MISSING_X"; then
8105 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8109 fi # COMPILE_ENVIRONMENT
8111 dnl Set various defines and substitutions
8112 dnl ========================================================
8114 if test "$OS_ARCH" = "OS2" -a "$VACPP" = "yes"; then
8115 LIBS='so32dll.lib tcp32dll.lib'
8116 elif test "$OS_ARCH" = "BeOS"; then
8119 elif test "$OS_ARCH" = "Darwin"; then
8121 AC_DEFINE(UNIX_ASYNC_DNS)
8123 elif test "$OS_ARCH" = "OpenVMS"; then
8125 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
8127 AC_DEFINE(UNIX_ASYNC_DNS)
8130 AC_SUBST(MOZ_MOVEMAIL)
8132 AC_DEFINE(JS_THREADSAFE)
8134 if test "$MOZ_DEBUG"; then
8135 AC_DEFINE(MOZ_REFLOW_PERF)
8136 AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8139 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
8140 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8141 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8142 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8143 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8144 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8145 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8146 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8147 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8150 # Used for LD_LIBRARY_PATH of run_viewer target
8152 for lib_arg in $NSPR_LIBS $TK_LIBS; do
8154 -L* ) LIBS_PATH="${LIBS_PATH:+$LIBS_PATH:}"`expr $lib_arg : "-L\(.*\)"` ;;
8160 dnl ========================================================
8161 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
8162 dnl ========================================================
8165 WIN_TOP_SRC=`cd $srcdir; pwd -W`
8168 HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
8169 HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
8170 CC="\$(CYGWIN_WRAPPER) $CC"
8171 CXX="\$(CYGWIN_WRAPPER) $CXX"
8172 CPP="\$(CYGWIN_WRAPPER) $CPP"
8173 LD="\$(CYGWIN_WRAPPER) $LD"
8174 AS="\$(CYGWIN_WRAPPER) $AS"
8175 RC="\$(CYGWIN_WRAPPER) $RC"
8176 MIDL="\$(CYGWIN_WRAPPER) $MIDL"
8177 CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
8178 WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
8182 AC_SUBST(CYGDRIVE_MOUNT)
8183 AC_SUBST(WIN_TOP_SRC)
8185 AC_SUBST(MOZILLA_VERSION)
8187 . ${srcdir}/config/chrome-versions.sh
8188 AC_DEFINE_UNQUOTED(MOZILLA_LOCALE_VERSION,"$MOZILLA_LOCALE_VERSION")
8189 AC_DEFINE_UNQUOTED(MOZILLA_REGION_VERSION,"$MOZILLA_REGION_VERSION")
8190 AC_DEFINE_UNQUOTED(MOZILLA_SKIN_VERSION,"$MOZILLA_SKIN_VERSION")
8192 AC_SUBST(ac_configure_args)
8194 dnl Spit out some output
8195 dnl ========================================================
8197 dnl The following defines are used by xpcom
8198 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8200 HAVE_CPP_2BYTE_WCHAR_T
8201 HAVE_CPP_ACCESS_CHANGING_USING
8202 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8204 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8206 HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
8207 HAVE_CPP_NAMESPACE_STD
8209 HAVE_CPP_PARTIAL_SPECIALIZATION
8210 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8212 HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL
8214 NEED_CPP_UNUSED_IMPLEMENTATIONS
8218 HAVE_ICONV_WITH_CONST_INPUT
8227 netwerk/necko-config.h
8228 xpcom/xpcom-config.h
8229 xpcom/xpcom-private.h
8232 # Save the defines header file before autoconf removes it.
8233 # (Do not add AC_DEFINE calls after this line.)
8234 _CONFIG_TMP=confdefs-tmp.h
8235 _CONFIG_DEFS_H=mozilla-config.h
8237 cat > $_CONFIG_TMP <<\EOF
8238 /* List of defines generated by configure. Included with preprocessor flag,
8239 * -include, to avoid long list of -D defines on the compile command-line.
8243 #ifndef _MOZILLA_CONFIG_H_
8244 #define _MOZILLA_CONFIG_H_
8247 _EGREP_PATTERN='^#define ('
8248 if test -n "$_NON_GLOBAL_ACDEFINES"; then
8249 for f in $_NON_GLOBAL_ACDEFINES; do
8250 _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
8253 _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
8255 sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
8257 cat >> $_CONFIG_TMP <<\EOF
8259 #endif /* _MOZILLA_CONFIG_H_ */
8263 # Only write mozilla-config.h when something changes (or it doesn't exist)
8264 if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
8267 AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
8268 mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
8270 echo ==== $_CONFIG_DEFS_H =================================
8274 dnl Probably shouldn't call this manually but we always want the output of DEFS
8275 rm -f confdefs.h.save
8276 mv confdefs.h confdefs.h.save
8277 egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
8278 AC_OUTPUT_MAKE_DEFS()
8280 AC_SUBST(MOZ_DEFINES)
8282 mv confdefs.h.save confdefs.h
8284 dnl Load the list of Makefiles to generate.
8285 dnl To add new Makefiles, edit allmakefiles.sh.
8286 dnl allmakefiles.sh sets the variable, MAKEFILES.
8287 . ${srcdir}/allmakefiles.sh
8289 dnl Run a perl script to quickly create the makefiles.
8290 dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
8291 dnl for the files it cannot handle correctly. This way, config.status
8292 dnl will handle these files.
8293 dnl If it fails, nothing is set and config.status will run as usual.
8295 dnl This does not change the $MAKEFILES variable.
8297 dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
8299 if test -z "${AS_PERL}"; then
8300 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
8302 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
8307 echo $MAKEFILES > unallmakefiles
8309 AC_OUTPUT($MAKEFILES)
8311 dnl Prevent the regeneration of cairo-features.h forcing rebuilds of gfx stuff
8312 if test "$CAIRO_FEATURES_H"; then
8313 if cmp -s $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig; then
8314 mv -f "$CAIRO_FEATURES_H".orig "$CAIRO_FEATURES_H" 2> /dev/null
8316 rm -f "$CAIRO_FEATURES_H".orig 2> /dev/null
8320 dnl ========================================================
8321 dnl = Setup a nice relatively clean build environment for
8322 dnl = sub-configures.
8323 dnl ========================================================
8326 CFLAGS="$_SUBDIR_CFLAGS"
8327 CPPFLAGS="$_SUBDIR_CPPFLAGS"
8328 CXXFLAGS="$_SUBDIR_CXXFLAGS"
8329 LDFLAGS="$_SUBDIR_LDFLAGS"
8330 HOST_CC="$_SUBDIR_HOST_CC"
8331 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
8332 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
8338 if test "$COMPILE_ENVIRONMENT"; then
8339 if test -z "$MOZ_NATIVE_NSPR"; then
8340 ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
8341 if test -z "$MOZ_DEBUG"; then
8342 ac_configure_args="$ac_configure_args --disable-debug"
8344 if test "$MOZ_OPTIMIZE" = "1"; then
8345 ac_configure_args="$ac_configure_args --enable-optimize"
8347 if test "$OS_ARCH" = "WINNT" && test "$NS_TRACE_MALLOC"; then
8348 ac_configure_args="$ac_configure_args --enable-debug --disable-optimize"
8350 if test -n "$HAVE_64BIT_OS"; then
8351 ac_configure_args="$ac_configure_args --enable-64bit"
8353 if test -n "$USE_ARM_KUSER"; then
8354 ac_configure_args="$ac_configure_args --with-arm-kuser"
8356 AC_OUTPUT_SUBDIRS(nsprpub)
8357 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
8360 if test -z "$MOZ_NATIVE_NSPR"; then
8361 # Hack to deal with the fact that we use NSPR_CFLAGS everywhere
8362 AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
8363 if test ! "$VACPP" && test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE"; then
8364 NSPR_LIBS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --libdir=$LIBXUL_DIST/lib --libs`
8365 $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $NSPR_LIBS'" config/autoconf.mk
8367 if test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE" ; then
8368 NSPR_CFLAGS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --includedir=$LIBXUL_DIST/include/nspr --cflags`
8369 $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $NSPR_CFLAGS'" config/autoconf.mk
8371 rm -f config/autoconf.mk.bak
8374 fi # COMPILE_ENVIRONMENT