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>
45 dnl Windows x64 support
46 dnl Makoto Kato <m_kato@ga2.so-net.ne.jp>
48 dnl Alternatively, the contents of this file may be used under the terms of
49 dnl either the GNU General Public License Version 2 or later (the "GPL"), or
50 dnl the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
51 dnl in which case the provisions of the GPL or the LGPL are applicable instead
52 dnl of those above. If you wish to allow use of your version of this file only
53 dnl under the terms of either the GPL or the LGPL, and not to allow others to
54 dnl use your version of this file under the terms of the MPL, indicate your
55 dnl decision by deleting the provisions above and replace them with the notice
56 dnl and other provisions required by the GPL or the LGPL. If you do not delete
57 dnl the provisions above, a recipient may use your version of this file under
58 dnl the terms of any one of the MPL, the GPL or the LGPL.
60 dnl ***** END LICENSE BLOCK *****
62 dnl Process this file with autoconf to produce a configure script.
63 dnl ========================================================
66 AC_INIT(config/config.mk)
67 AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
69 TARGET_CPU="${target_cpu}"
70 TARGET_VENDOR="${target_vendor}"
71 TARGET_OS="${target_os}"
74 MOZ_DEB_TIMESTAMP=`date +"%a, %d %b %Y %T %z" 2>&1`
75 AC_SUBST(MOZ_DEB_TIMESTAMP)
78 dnl ========================================================
80 dnl = Don't change the following two lines. Doing so breaks:
82 dnl = CFLAGS="-foo" ./configure
84 dnl ========================================================
86 CPPFLAGS="${CPPFLAGS=}"
87 CXXFLAGS="${CXXFLAGS=}"
89 HOST_CFLAGS="${HOST_CFLAGS=}"
90 HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
91 HOST_LDFLAGS="${HOST_LDFLAGS=}"
93 dnl ========================================================
94 dnl = Preserve certain environment flags passed to configure
95 dnl = We want sub projects to receive the same flags
96 dnl = untainted by this configure script
97 dnl ========================================================
100 _SUBDIR_CFLAGS="$CFLAGS"
101 _SUBDIR_CPPFLAGS="$CPPFLAGS"
102 _SUBDIR_CXXFLAGS="$CXXFLAGS"
103 _SUBDIR_LDFLAGS="$LDFLAGS"
104 _SUBDIR_HOST_CC="$HOST_CC"
105 _SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
106 _SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
107 _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
108 _SUBDIR_CONFIG_ARGS="$ac_configure_args"
110 dnl Set the version number of the libs included with mozilla
111 dnl ========================================================
118 dnl Set the minimum version of toolkit libs used by mozilla
119 dnl ========================================================
127 WINDRES_VERSION=2.14.90
130 GNOMEUI_VERSION=2.2.0
133 STARTUP_NOTIFICATION_VERSION=0.8
135 SQLITE_VERSION=3.6.23.1
136 LIBNOTIFY_VERSION=0.4
140 dnl Set various checks
141 dnl ========================================================
145 dnl Initialize the Pthread test variables early so they can be
146 dnl overridden by each platform.
147 dnl ========================================================
151 dnl Do not allow a separate objdir build if a srcdir build exists.
152 dnl ==============================================================
153 _topsrcdir=`cd \`dirname $0\`; pwd`
156 if test "$_topsrcdir" != "$_objdir"
158 # Check for a couple representative files in the source tree
160 for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
161 if test -f $file; then
162 _conflict_files="$_conflict_files $file"
165 if test "$_conflict_files"; then
167 echo "* Your source tree contains these files:"
168 for file in $_conflict_files; do
172 * This indicates that you previously built in the source tree.
173 * A source tree build can confuse the separate objdir build.
175 * To clean up the source tree:
186 dnl Default to MSVC for win32 and gcc-4.2 for darwin
187 dnl ==============================================================
188 if test -z "$CROSS_COMPILE"; then
190 *-cygwin*|*-mingw*|*-msvc*|*-mks*)
191 if test -z "$CC"; then CC=cl; fi
192 if test -z "$CXX"; then CXX=cl; fi
193 if test -z "$CPP"; then CPP="cl -E -nologo"; fi
194 if test -z "$CXXCPP"; then CXXCPP="cl -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
195 if test -z "$LD"; then LD=link; fi
196 if test -z "$AS"; then
197 case "${target_cpu}" in
206 if test -z "$MIDL"; then MIDL=midl; fi
209 if test -z "$CC"; then CC=gcc-4.2; fi
210 if test -z "$CXX"; then CXX=g++-4.2; fi
215 COMPILE_ENVIRONMENT=1
216 MOZ_ARG_DISABLE_BOOL(compile-environment,
217 [ --disable-compile-environment
218 Disable compiler/library checks.],
219 COMPILE_ENVIRONMENT= )
220 AC_SUBST(COMPILE_ENVIRONMENT)
222 MOZ_ARG_WITH_STRING(l10n-base,
223 [ --with-l10n-base=DIR path to l10n repositories],
224 L10NBASEDIR=$withval)
225 if test ! -z "$L10NBASEDIR"; then
226 if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then
227 AC_MSG_ERROR([--with-l10n-base must specify a path])
228 elif test -d "$L10NBASEDIR"; then
229 L10NBASEDIR=`cd "$L10NBASEDIR" && pwd`
231 AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
234 AC_SUBST(L10NBASEDIR)
236 dnl Check for Perl first -- needed for win32 SDK checks
237 MOZ_PATH_PROGS(PERL, $PERL perl5 perl )
238 if test -z "$PERL" || test "$PERL" = ":"; then
239 AC_MSG_ERROR([perl not found in \$PATH])
242 dnl ========================================================
243 dnl = Android uses a very custom (hacky) toolchain; we need to do this
244 dnl = here, so that the compiler checks can succeed
245 dnl ========================================================
247 MOZ_ARG_WITH_STRING(android-ndk,
248 [ --with-android-ndk=DIR
249 location where the Android NDK can be found],
250 android_ndk=$withval)
252 MOZ_ARG_WITH_STRING(android-toolchain,
253 [ --with-android-toolchain=DIR
254 location of the android toolchain, default NDK/build/prebuilt/HOST/arm-eabi-4.4.0],
255 android_toolchain=$withval)
257 MOZ_ARG_WITH_STRING(android-platform,
258 [ --with-android-platform=DIR
259 location of NDK platform dir, default NDK/build/platforms/android-5/arch-arm],
260 android_platform=$withval)
262 MOZ_ARG_WITH_STRING(android-sdk,
263 [ --with-android-sdk=DIR
264 location where the Android SDK can be found (base directory, e.g. .../android/platforms/android-6)],
265 android_sdk=$withval)
267 MOZ_ARG_WITH_STRING(android-tools,
268 [ --with-android-tools=DIR
269 location where the Android Tools can be found (base directory, e.g. .../android/tools)],
270 android_tools=$withval)
272 if test "$target" = "arm-android-eabi" ; then
273 if test -z "$android_ndk" ; then
274 AC_MSG_ERROR([You must specify --with-android-ndk=/path/to/ndk when targeting Android.])
277 if test -z "$android_sdk" ; then
278 AC_MSG_ERROR([You must specify --with-android-sdk=/path/to/sdk when targeting Android.])
281 if test -z "$android_tools" ; then
282 AC_MSG_ERROR([You must specify --with-android-tools=/path/to/sdk/tools when targeting Android.])
285 if test -z "$android_toolchain" ; then
286 android_toolchain="$android_ndk"/build/prebuilt/`uname -s | tr "[[:upper:]]" "[[:lower:]]"`-x86/arm-eabi-4.4.0
289 if test -z "$android_platform" ; then
290 android_platform="$android_ndk"/build/platforms/android-5/arch-arm
294 AS="$android_toolchain"/bin/arm-eabi-as
295 CC="$android_toolchain"/bin/arm-eabi-gcc
296 CXX="$android_toolchain"/bin/arm-eabi-g++
297 CPP="$android_toolchain"/bin/arm-eabi-cpp
298 LD="$android_toolchain"/bin/arm-eabi-ld
299 AR="$android_toolchain"/bin/arm-eabi-ar
300 RANLIB="$android_toolchain"/bin/arm-eabi-ranlib
301 STRIP="$android_toolchain"/bin/arm-eabi-strip
303 CPPFLAGS="-I$android_platform/usr/include $CPPFLAGS"
304 CFLAGS="-mandroid -I$android_platform/usr/include -msoft-float -fno-short-enums -fno-exceptions -march=armv5te -mthumb-interwork $CFLAGS"
305 CXXFLAGS="-mandroid -I$android_platform/usr/include -msoft-float -fno-short-enums -fno-exceptions -march=armv5te -mthumb-interwork $CXXFLAGS"
307 dnl Add -llog by default, since we use it all over the place.
308 dnl Add --allow-shlib-undefined, because libGLESv2 links to an
309 dnl undefined symbol (present on the hardware, just not in the
311 LDFLAGS="-mandroid -L$android_platform/usr/lib -Wl,-rpath-link=$android_platform/usr/lib --sysroot=$android_platform -llog -Wl,--allow-shlib-undefined $LDFLAGS"
313 dnl prevent cross compile section from using these flags as host flags
314 if test -z "$HOST_CPPFLAGS" ; then
317 if test -z "$HOST_CFLAGS" ; then
320 if test -z "$HOST_CXXFLAGS" ; then
323 if test -z "$HOST_LDFLAGS" ; then
327 ANDROID_NDK="${android_ndk}"
328 ANDROID_TOOLCHAIN="{android_toolchain}"
329 ANDROID_PLATFORM="{android_platform}"
330 ANDROID_SDK="${android_sdk}"
331 ANDROID_TOOLS="${android_tools}"
335 MOZ_CHROME_FILE_FORMAT=omni
338 AC_SUBST(ANDROID_NDK)
339 AC_SUBST(ANDROID_TOOLCHAIN)
340 AC_SUBST(ANDROID_PLATFORM)
341 AC_SUBST(ANDROID_SDK)
342 AC_SUBST(ANDROID_TOOLS)
344 dnl ========================================================
345 dnl Checks for compilers.
346 dnl ========================================================
347 dnl Set CROSS_COMPILE in the environment when running configure
348 dnl to use the cross-compile setup for now
349 dnl ========================================================
351 dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269)
354 if test "$COMPILE_ENVIRONMENT"; then
356 dnl Do some special WinCE toolchain stuff
360 MOZ_ARG_WITH_STRING(wince-sdk,
361 [ --with-wince-sdk=WINCE_SDK_DIR
362 The path to the Windows CE SDK],
363 WINCE_SDK_DIR=$withval)
365 MOZ_ARG_WITH_STRING(ogles-sdk,
366 [ --with-ogles-sdk=OGLES_SDK_DIR
367 The path to the OGLES SDK],
368 OGLES_SDK_DIR=$withval)
374 echo -----------------------------------------------------------------------------
375 echo Building Windows CE Shunt Library and Tool Chain
382 _topsrcdirwin=`cd \`dirname $0\`; pwd -W`
383 make OGLES_SDK_DIR="$OGLES_SDK_DIR" WINCE_SDK_DIR="$WINCE_SDK_DIR" \
384 TOPSRCDIR="$_topsrcdirwin" OBJDIR="$_pwd" target="$target" \
385 -C $srcdir/build/wince/tools
387 CC="$_pwd/dist/sdk/bin/$target-gcc.exe"
388 CXX="$_pwd/dist/sdk/bin/$target-gcc.exe"
389 CPP="$_pwd/dist/sdk/bin/$target-gcc.exe -E -nologo"
390 CXXCPP="$_pwd/dist/sdk/bin/$target-gcc.exe -TP -E -nologo"
391 LD="$_pwd/dist/sdk/bin/$target-link.exe"
392 AR="$_pwd/dist/sdk/bin/$target-lib.exe"
393 AS="$_pwd/dist/sdk/bin/$target-as.exe"
394 RC="$_pwd/dist/sdk/bin/$target-res.exe"
397 echo -----------------------------------------------------------------------------
402 if test -n "$CROSS_COMPILE" && test "$target" != "$host"; then
403 echo "cross compiling from $host to $target"
407 _SAVE_CFLAGS="$CFLAGS"
408 _SAVE_LDFLAGS="$LDFLAGS"
410 AC_MSG_CHECKING([for host c compiler])
411 AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
412 if test -z "$HOST_CC"; then
413 AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
415 AC_MSG_RESULT([$HOST_CC])
416 AC_MSG_CHECKING([for host c++ compiler])
417 AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
418 if test -z "$HOST_CXX"; then
419 AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
421 AC_MSG_RESULT([$HOST_CXX])
423 if test -z "$HOST_CFLAGS"; then
424 HOST_CFLAGS="$CFLAGS"
426 if test -z "$HOST_CXXFLAGS"; then
427 HOST_CXXFLAGS="$CXXFLAGS"
429 if test -z "$HOST_LDFLAGS"; then
430 HOST_LDFLAGS="$LDFLAGS"
432 if test -z "$HOST_AR_FLAGS"; then
433 HOST_AR_FLAGS="$AR_FLAGS"
435 AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
436 AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
438 CFLAGS="$HOST_CFLAGS"
439 LDFLAGS="$HOST_LDFLAGS"
441 AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
442 AC_TRY_COMPILE([], [return(0);],
443 [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
444 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
447 CFLAGS="$HOST_CXXFLAGS"
449 AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
450 AC_TRY_COMPILE([], [return(0);],
451 [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
452 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
456 LDFLAGS=$_SAVE_LDFLAGS
458 case "$build:$target" in
459 powerpc-apple-darwin8*:i?86-apple-darwin*)
460 dnl The Darwin cross compiler doesn't necessarily point itself at a
461 dnl root that has libraries for the proper architecture, it defaults
462 dnl to the system root. The libraries in the system root on current
463 dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
464 dnl checks will fail. Fake a working SDK in that case.
466 _SAVE_CXXFLAGS=$CXXLAGS
467 CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk $CFLAGS"
468 CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk $CXXFLAGS"
472 AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
475 AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
479 case "$build:$target" in
480 powerpc-apple-darwin8*:i?86-apple-darwin*)
481 dnl Revert the changes made above. From this point on, the target
482 dnl compiler will never be used without applying the SDK to CFLAGS
483 dnl (see --with-macos-sdk below).
485 CXXFLAGS=$_SAVE_CXXFLAGS
489 AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
490 AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
491 MOZ_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
492 AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
493 AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
494 AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
495 AC_DEFINE(CROSS_COMPILE)
500 MOZ_PATH_PROGS(AS, $AS as, $CC)
501 AC_CHECK_PROGS(AR, ar, :)
502 AC_CHECK_PROGS(LD, ld, :)
503 AC_CHECK_PROGS(STRIP, strip, :)
504 AC_CHECK_PROGS(WINDRES, windres, :)
505 if test -z "$HOST_CC"; then
508 if test -z "$HOST_CFLAGS"; then
509 HOST_CFLAGS='$(CFLAGS)'
511 if test -z "$HOST_CXX"; then
514 if test -z "$HOST_CXXFLAGS"; then
515 HOST_CXXFLAGS='$(CXXFLAGS)'
517 if test -z "$HOST_LDFLAGS"; then
518 HOST_LDFLAGS='$(LDFLAGS)'
520 if test -z "$HOST_RANLIB"; then
521 HOST_RANLIB='$(RANLIB)'
523 if test -z "$HOST_AR"; then
526 if test -z "$HOST_AR_FLAGS"; then
527 HOST_AR_FLAGS='$(AR_FLAGS)'
537 if test "$GCC" = "yes"; then
539 CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
541 if test "$GXX" = "yes"; then
543 CXX_VERSION=`$CXX -v 2>&1 | grep 'gcc version'`
545 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
548 if test "`echo | $LD -v 2>&1 | grep -c GNU`" != "0"; then
551 if test "$GNU_CC"; then
552 if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
559 if test "$GCC" = yes; then
560 if test "`$CC -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
565 if test "$GXX" = yes; then
566 if test "`$CXX -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
571 dnl Special win32 checks
572 dnl ========================================================
580 dnl Target the Windows 7 SDK by default
585 MOZ_ARG_WITH_STRING(windows-version,
586 [ --with-windows-version=WINSDK_TARGETVER
587 Highest Windows version to target using this SDK
588 502: Windows Server 2003
591 WINSDK_TARGETVER=$withval)
593 case "$WINSDK_TARGETVER" in
595 MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000
599 AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER), must be 502, 600 or 601]);
604 if test -n "$COMPILE_ENVIRONMENT"; then
605 if test "$MOZ_WINSDK_TARGETVER" -lt "06000000"; then
606 # We can't build parental controls either
607 MOZ_DISABLE_PARENTAL_CONTROLS=1
612 *-cygwin*|*-mingw*|*-msvc*|*-mks*|*-wince|*-winmo)
613 if test "$GCC" != "yes"; then
614 # Check to see if we are really running in a msvc environemnt
616 AC_CHECK_PROGS(MIDL, midl)
618 # Make sure compilers are valid
619 CFLAGS="$CFLAGS -TC -nologo"
620 CXXFLAGS="$CXXFLAGS -TP -nologo"
623 AC_TRY_COMPILE([#include <stdio.h>],
624 [ printf("Hello World\n"); ],,
625 AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
628 AC_TRY_COMPILE([#include <new.h>],
629 [ unsigned *test = new unsigned(42); ],,
630 AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
634 _MSVC_VER_FILTER='s|.* ([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
637 # Determine compiler version
638 CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
639 _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
640 _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
641 _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
642 _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
643 _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
645 CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
646 _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
648 if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
649 AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
651 if test "$_CC_MAJOR_VERSION" = "13"; then
653 elif test "$_CC_MAJOR_VERSION" = "14"; then
655 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
656 dnl -DYNAMICBASE is only supported on VC8SP1 or newer,
657 dnl so be very specific here!
658 dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762
659 if test $_CC_RELEASE -gt 50727; then
661 elif test $_CC_BUILD -ge 762; then
664 AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
665 AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
666 elif test "$_CC_MAJOR_VERSION" = "15"; then
668 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
669 LDFLAGS="$LDFLAGS -MANIFESTUAC:NO"
671 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
672 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
673 elif test "$_CC_MAJOR_VERSION" = "16"; then
675 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
676 LDFLAGS="$LDFLAGS -MANIFESTUAC:NO"
678 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
679 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
681 AC_MSG_ERROR([This version of the MSVC compiler, $CC_VERSION , is unsupported.])
684 _MOZ_RTTI_FLAGS_ON='-GR'
685 _MOZ_RTTI_FLAGS_OFF='-GR-'
686 _MOZ_EXCEPTIONS_FLAGS_ON='-EHsc'
687 _MOZ_EXCEPTIONS_FLAGS_OFF=''
689 if test -n "$WIN32_REDIST_DIR"; then
690 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
694 # ensure that mt.exe is Microsoft (R) Manifest Tool and not magnetic tape manipulation utility (or something else)
695 if test "$_CC_SUITE" -ge "8"; then
697 _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
700 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
701 if test -n "$MSMT_TOOL"; then
702 MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
703 if test -z "$MSMANIFEST_TOOL_VERSION"; then
704 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
709 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
713 # Check linker version
714 _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
715 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
716 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
717 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
722 _MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
723 _MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
724 _MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
725 _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
726 # Add flags if necessary
727 AC_MSG_CHECKING([for midl flags])
730 if test \( "$_MIDL_MAJOR_VERSION" = "7" -a "$_MIDL_MINOR_VERSION" = "00" -a "$_MIDL_REV_VERSION" = "0499" \); then
731 # MIDL version 7.00.0499 defaults /env win64 on x64 platforms.
732 # MIDL version 7.00.0500 or later has no problem.
733 MIDL_FLAGS="${MIDL_FLAGS} -env win32"
734 AC_MSG_RESULT([need -env win32])
736 AC_MSG_RESULT([none needed])
740 MIDL_FLAGS="${MIDL_FLAGS} -env x64"
743 AC_MSG_RESULT([none needed])
747 # Identify which version of the SDK we're building with
748 # Windows Server 2008 and newer SDKs have WinSDKVer.h, get the version
750 AC_CHECK_HEADERS([winsdkver.h])
751 if test "$ac_cv_header_winsdkver_h" = "yes"; then
752 # Get the highest _WIN32_WINNT and NTDDI versions supported
753 # Take the higher of the two
754 # This is done because the Windows 7 beta SDK reports its
755 # NTDDI_MAXVER to be 0x06000100 instead of 0x06010000, as it should
756 AC_CACHE_CHECK(for highest Windows version supported by this SDK,
758 [cat > conftest.h <<EOF
759 #include <winsdkver.h>
760 #include <sdkddkver.h>
762 #if (NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER) > NTDDI_MAXVER)
763 #define WINSDK_MAXVER NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER)
765 #define WINSDK_MAXVER NTDDI_MAXVER
770 ac_cv_winsdk_maxver=`$CPP conftest.h 2>/dev/null | tail -n1`
773 MOZ_WINSDK_MAXVER=${ac_cv_winsdk_maxver}
775 # The Vista SDK is the only one to have sdkddkver.h but not
777 AC_CHECK_HEADERS([sdkddkver.h])
778 if test "$ac_cv_header_sdkddkver_h" = "yes"; then
779 MOZ_WINSDK_MAXVER=0x06000000
781 # Assume the Server 2003 Platform SDK
782 MOZ_WINSDK_MAXVER=0x05020000
786 unset _MSVC_VER_FILTER
788 AC_CACHE_CHECK(for std::_Throw, ac_cv_have_std__Throw,
792 _SAVE_CXXFLAGS="$CXXFLAGS"
793 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
794 AC_TRY_COMPILE([#include <exception>],
795 [std::_Throw(std::exception()); return 0;],
796 ac_cv_have_std__Throw="yes",
797 ac_cv_have_std__Throw="no")
798 CXXFLAGS="$_SAVE_CXXFLAGS"
802 if test "$ac_cv_have_std__Throw" == "yes"; then
803 AC_CACHE_CHECK(for |class __declspec(dllimport) exception| bug,
804 ac_cv_have_dllimport_exception_bug,
808 _SAVE_CXXFLAGS="$CXXFLAGS"
809 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
810 AC_TRY_LINK([#include <vector>],
811 [std::vector<int> v; return v.at(1);],
812 ac_cv_have_dllimport_exception_bug="no",
813 ac_cv_have_dllimport_exception_bug="yes")
814 CXXFLAGS="$_SAVE_CXXFLAGS"
817 if test "$ac_cv_have_dllimport_exception_bug" = "no"; then
819 MOZ_MSVC_STL_WRAP__Throw=1
820 AC_DEFINE(MOZ_MSVC_STL_WRAP__Throw)
823 AC_CACHE_CHECK(for overridable _RAISE,
828 _SAVE_CXXFLAGS="$CXXFLAGS"
829 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
830 AC_TRY_COMPILE([#include <xstddef>
832 #define _RAISE(x) externallyDefinedFunction((x).what())
835 [std::vector<int> v; return v.at(1);],
836 ac_cv_have__RAISE="no",
837 ac_cv_have__RAISE="yes")
838 CXXFLAGS="$_SAVE_CXXFLAGS"
841 if test "$ac_cv_have__RAISE" = "yes"; then
843 MOZ_MSVC_STL_WRAP__RAISE=1
844 AC_DEFINE(MOZ_MSVC_STL_WRAP__RAISE)
846 AC_MSG_ERROR([Gecko exception wrapping doesn't understand your your MSVC/SDK. Please file a bug describing this error and your build configuration.])
850 if test "$WRAP_STL_INCLUDES" = "1"; then
851 STL_FLAGS='-D_HAS_EXCEPTIONS=0 -I$(DIST)/stl_wrappers'
854 # Check w32api version
855 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
856 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
857 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
858 AC_TRY_COMPILE([#include <w32api.h>],
859 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
860 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
861 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
862 #error "test failed."
864 , [ res=yes ], [ res=no ])
865 AC_MSG_RESULT([$res])
866 if test "$res" != "yes"; then
867 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
869 # Check windres version
870 AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
871 _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
872 AC_MSG_RESULT([$_WINDRES_VERSION])
873 _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
874 _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
875 _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
876 WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
877 WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
878 WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
879 if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
880 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
881 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
882 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
883 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
884 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
886 AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
889 # Server 2003 is the highest version supported
890 MOZ_WINSDK_MAXVER=0x05020000
893 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
894 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
895 # Require OS features provided by IE 5.0
896 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0500)
898 # If the maximum version supported by this SDK is lower than the target
900 AC_MSG_CHECKING([for Windows SDK being recent enough])
901 if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then
905 AC_MSG_ERROR([You are targeting Windows version 0x$MOZ_WINSDK_TARGETVER, but your SDK only supports up to version $MOZ_WINSDK_MAXVER. Install and use an updated SDK, or target a lower version using --with-windows-version. See https://developer.mozilla.org/En/Windows_SDK_versions for more details on fixing this.])
908 AC_DEFINE_UNQUOTED(MOZ_WINSDK_TARGETVER,0x$MOZ_WINSDK_TARGETVER)
909 # Definitions matching sdkddkver.h
910 AC_DEFINE_UNQUOTED(MOZ_NTDDI_WS03, 0x05020000)
911 AC_DEFINE_UNQUOTED(MOZ_NTDDI_LONGHORN, 0x06000000)
912 AC_DEFINE_UNQUOTED(MOZ_NTDDI_WIN7, 0x06010000)
916 dnl Test breaks icc on OS/2 && MSVC
917 if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
919 if grep "NO_MINUS_C_MINUS_O 1" ./confdefs.h >/dev/null; then
923 CC="${srcdir}/build/hcc '$CC'"
924 CXX="${srcdir}/build/hcpp '$CXX'"
931 if test -n "$_WIN32_MSVC"; then
933 SKIP_COMPILER_CHECKS=1
934 SKIP_LIBRARY_CHECKS=1
936 # Since we're skipping compiler and library checks, hard-code
943 AC_DEFINE(HAVE_SETBUF)
944 AC_DEFINE(HAVE_ISATTY)
949 fi # COMPILE_ENVIRONMENT
962 AC_SUBST(WRAP_STL_INCLUDES)
963 AC_SUBST(MOZ_MSVC_STL_WRAP__Throw)
964 AC_SUBST(MOZ_MSVC_STL_WRAP__RAISE)
966 dnl ========================================================
967 dnl Checks for programs.
968 dnl ========================================================
972 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
973 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
974 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
976 AC_MSG_RESULT([$_perl_version])
978 if test "$_perl_res" != 0; then
979 AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
983 AC_MSG_CHECKING([for full perl installation])
984 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
986 if test "$_perl_res" != 0; then
988 AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
993 MOZ_PATH_PROGS(PYTHON, $PYTHON python2.6 python2.5 python2.4 python)
994 if test -z "$PYTHON"; then
995 AC_MSG_ERROR([python was not found in \$PATH])
998 if test -z "$COMPILE_ENVIRONMENT"; then
999 NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
1001 AC_SUBST(NSINSTALL_BIN)
1003 MOZ_PATH_PROG(DOXYGEN, doxygen, :)
1004 MOZ_PATH_PROG(WHOAMI, whoami, :)
1005 MOZ_PATH_PROG(AUTOCONF, autoconf, :)
1006 MOZ_PATH_PROG(UNZIP, unzip, :)
1007 MOZ_PATH_PROGS(ZIP, zip)
1008 if test -z "$ZIP" || test "$ZIP" = ":"; then
1009 AC_MSG_ERROR([zip not found in \$PATH])
1011 MOZ_PATH_PROG(SYSTEM_MAKEDEPEND, makedepend)
1012 MOZ_PATH_PROG(XARGS, xargs)
1013 if test -z "$XARGS" || test "$XARGS" = ":"; then
1014 AC_MSG_ERROR([xargs not found in \$PATH .])
1017 if test "$COMPILE_ENVIRONMENT"; then
1019 dnl ========================================================
1020 dnl = Mac OS X toolchain support
1021 dnl ========================================================
1023 case "$target_os" in
1025 dnl Current known valid versions for GCC_VERSION are 2.95.2 3.1 3.3 4.0.
1026 dnl 4.0 identifies itself as 4.0.x, so strip the decidecimal for
1027 dnl the environment and includedir purposes (when using an SDK, below),
1028 dnl but remember the full version number for the libdir (SDK).
1030 GCC_VERSION_FULL=`echo $CXX_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
1031 GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
1033 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
1034 dnl Bug 280479, but this keeps popping up in bug 292530 too because
1035 dnl 4.0.0/4061 is the default compiler in Tiger.
1037 GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
1039 if test "$GCC_BUILD" = "4061" ; then
1040 AC_MSG_ERROR([You are attempting to use Apple gcc 4.0 build 4061.
1041 This compiler was supplied with Xcode 2.0, and contains bugs that prevent it
1042 from building Mozilla. Upgrade to Xcode 2.1 or later.])
1046 dnl xcodebuild needs GCC_VERSION defined in the environment, since it
1047 dnl doesn't respect the CC/CXX setting. With GCC_VERSION set, it will use
1048 dnl /usr/bin/g(cc|++)-$GCC_VERSION.
1049 MOZ_PATH_PROGS(PBBUILD, pbbuild xcodebuild pbxbuild)
1054 XCODEBUILD_VERSION=`$PBBUILD -version 2>/dev/null | xargs | sed -e 's/.*DevToolsCore-\([0-9]*\).*/\1/'`
1056 if test -n "$XCODEBUILD_VERSION" && test "$XCODEBUILD_VERSION" -ge 620 ; then
1062 dnl sdp was formerly in /Developer/Tools. As of Mac OS X 10.4 (Darwin 8),
1063 dnl it has moved into /usr/bin.
1064 MOZ_PATH_PROG(SDP, sdp, :, [$PATH:/usr/bin:/Developer/Tools])
1068 AC_SUBST(GCC_VERSION)
1069 AC_SUBST(XCODEBUILD_VERSION)
1070 AC_SUBST(HAS_XCODE_2_1)
1072 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
1073 dnl that a universal binary is being produced.
1074 AC_SUBST(UNIVERSAL_BINARY)
1076 dnl ========================================================
1077 dnl Check for MacOS deployment target version
1078 dnl ========================================================
1080 MOZ_ARG_ENABLE_STRING(macos-target,
1081 [ --enable-macos-target=VER (default=10.5)
1082 Set the minimum MacOS version needed at runtime],
1083 [_MACOSX_DEPLOYMENT_TARGET=$enableval])
1087 if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
1088 dnl Use the specified value
1089 export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
1090 AC_DEFINE_UNQUOTED(__ENVIRONMENT_MAC_OS_X_VERION_MIN_REQUIRED__,$_MACOSX_DEPLOYMENT_TARGET)
1091 elif test -z "$MACOSX_DEPLOYMENT_TARGET" ; then
1092 dnl No value specified on the command line or in the environment,
1093 dnl use architecture minimum.
1094 export MACOSX_DEPLOYMENT_TARGET=10.5
1099 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
1101 dnl ========================================================
1102 dnl = Mac OS X SDK support
1103 dnl ========================================================
1106 MOZ_ARG_WITH_STRING(macos-sdk,
1107 [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
1108 MACOS_SDK_DIR=$withval)
1110 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
1111 dnl NEXT_ROOT will be set and exported only if it's needed.
1112 AC_SUBST(MACOS_SDK_DIR)
1115 if test "$MACOS_SDK_DIR"; then
1116 dnl Sync this section with the ones in NSPR and NSS.
1117 dnl Changes to the cross environment here need to be accounted for in
1118 dnl the libIDL checks (below) and xpidl build.
1120 if test ! -d "$MACOS_SDK_DIR"; then
1121 AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
1122 specify a valid SDK. SDKs are installed when the optional cross-development
1123 tools are selected during the Xcode/Developer Tools installation.])
1126 GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
1127 if test "$GCC_VERSION_MAJOR" -lt "4" ; then
1128 AC_MSG_ERROR([You need to upgrade the compiler version to 4.x])
1130 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
1131 CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
1133 dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
1134 CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
1135 CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
1137 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
1138 dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
1139 dnl that supports -syslibroot. Don't set NEXT_ROOT because it will
1140 dnl be ignored and cause warnings when -syslibroot is specified.
1141 dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
1142 dnl the -isysroot it receives, so this is only needed with 4.0.0.
1143 LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
1148 AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
1150 AC_TRY_COMPILE([#include <new>
1151 int main() { return 0; }],
1155 AC_MSG_RESULT($result)
1157 if test "$result" = "no" ; then
1158 AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
1162 fi # COMPILE_ENVIRONMENT
1164 if test -n "$MAKE"; then
1165 if test `echo $MAKE | grep -c make.py` != 1; then
1171 cygwin*|mingw*|mks*|msvc*)
1172 MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :)
1175 MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :)
1178 if test "$GMAKE" = ":"; then
1179 AC_MSG_ERROR([GNU make not found])
1183 if test "$COMPILE_ENVIRONMENT"; then
1189 fi # COMPILE_ENVIRONMENT
1191 dnl ========================================================
1192 dnl set the defaults first
1193 dnl ========================================================
1196 AR_EXTRACT='$(AR) x'
1211 MOZ_USER_DIR=".mozilla"
1214 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/jpeg)'
1216 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,$(DEPTH)/modules/zlib/src)'
1218 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
1220 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/modules/libimg/png)'
1222 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs'
1223 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxpcom -lxpcom_core -lmozalloc'
1224 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
1225 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxpcom -lmozalloc'
1226 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) -lxul'
1227 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
1228 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
1232 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
1234 USE_DEPENDENT_LIBS=1
1236 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
1238 MOZ_ENABLE_POSTSCRIPT=1
1240 if test -n "$CROSS_COMPILE"; then
1241 OS_TARGET="${target_os}"
1242 OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
1244 case "${target_os}" in
1245 linux*) OS_ARCH=Linux OS_TARGET=Linux ;;
1246 kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
1247 gnu*) OS_ARCH=GNU ;;
1248 solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
1249 mingw*) OS_ARCH=WINNT ;;
1250 wince*) OS_ARCH=WINCE ;;
1251 winmo*) OS_ARCH=WINCE ;;
1252 darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;;
1255 arm-android-eabi) OS_ARCH=Linux OS_TARGET=Android ;;
1258 OS_TARGET=`uname -s`
1259 OS_ARCH=`uname -s | sed -e 's|/|_|g'`
1260 OS_RELEASE=`uname -r`
1263 # Before this used `uname -m` when not cross compiling
1264 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1265 OS_TEST="${target_cpu}"
1269 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1271 #######################################################################
1272 # Master "Core Components" macros for getting the OS target #
1273 #######################################################################
1276 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1277 # cross-compilation.
1281 # Define and override various archtecture-specific variables, including
1290 case "$HOST_OS_ARCH" in
1291 cygwin*|mingw*|mks*|msvc*)
1304 if test -z "$GNU_CC"; then
1305 if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then
1310 if test -z "$GNU_CXX"; then
1311 if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then
1312 SOLARIS_SUNPRO_CXX=1
1315 AC_SUBST(SOLARIS_SUNPRO_CC)
1316 AC_SUBST(SOLARIS_SUNPRO_CXX)
1328 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1331 HOST_OS_ARCH=UNIXWARE
1343 HOST_OS_ARCH=OpenVMS
1353 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1357 HOST_OS_ARCH=UNIXWARE
1363 if test -z "$CROSS_COMPILE" ; then
1369 # If uname -s returns "Windows_NT", we assume that we are using
1370 # the uname.exe in MKS toolkit.
1372 # The -r option of MKS uname only returns the major version number.
1373 # So we need to use its -v option to get the minor version number.
1374 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1378 OS_MINOR_RELEASE=`uname -v`
1379 if test "$OS_MINOR_RELEASE" = "00"; then
1382 OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1384 CYGWIN32_NT|CYGWIN_NT*|MINGW*_NT*)
1386 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
1387 # the uname.exe in the Cygwin tools.
1388 # Prior to the Beta 20 release, Cygwin was called GNU-Win32.
1389 # If uname -s returns "CYGWIN32/NT", we assume that we are using
1390 # the uname.exe in the GNU-Win32 tools.
1391 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1392 # the uname.exe in the MSYS tools.
1394 OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1399 OS_RELEASE=`uname -v`.`uname -r`
1400 OS_TEST=${target_cpu}
1412 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1416 OS_RELEASE=`uname -v`
1440 OS_RELEASE=`uname -v`
1446 OS_RELEASE=`uname -v`
1449 if test "$OS_TARGET" != "NTO"; then
1451 OS_RELEASE=`uname -v | sed 's/^\([0-9]\)\([0-9]*\)$/\1.\2/'`
1460 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1466 OS_RELEASE=`uname -v`
1470 case "${target_os}" in
1473 WINCE_WINDOWS_MOBILE=1
1474 AC_DEFINE(WINCE_WINDOWS_MOBILE)
1482 case "${target_cpu}" in
1493 if test -z "$CROSS_COMPILE" ; then
1501 if test "$OS_ARCH" = "NCR"; then
1503 OS_RELEASE=`awk '{print $3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$/\2.\3/'`
1507 # Only set CPU_ARCH if we recognize the value of OS_TEST
1518 powerpc | ppc | rs6000)
1522 Alpha | alpha | ALPHA)
1551 if test -z "$OS_TARGET"; then
1554 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1556 dnl ========================================================
1557 dnl GNU specific defaults
1558 dnl ========================================================
1559 if test "$GNU_CC"; then
1560 # FIXME: Let us build with strict aliasing. bug 414641.
1561 CFLAGS="$CFLAGS -fno-strict-aliasing"
1562 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1563 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1564 DSO_LDOPTS='-shared'
1565 if test "$GCC_USE_GNU_LD"; then
1566 # Don't allow undefined symbols in libraries
1567 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1569 WARNINGS_AS_ERRORS='-Werror'
1571 DSO_PIC_CFLAGS='-fPIC'
1572 ASFLAGS="$ASFLAGS -fPIC"
1573 _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
1574 _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
1575 _MOZ_EXCEPTIONS_FLAGS_ON='-fhandle-exceptions'
1576 _MOZ_EXCEPTIONS_FLAGS_OFF='-fno-handle-exceptions'
1578 # Turn on GNU specific features
1579 # -Wall - turn on all warnings
1580 # -pedantic - make compiler warn about non-ANSI stuff, and
1581 # be a little bit stricter
1582 # Warnings slamm took out for now (these were giving more noise than help):
1583 # -Wbad-function-cast - warns when casting a function to a new return type
1584 # -Wshadow - removed because it generates more noise than help --pete
1585 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
1586 if test -z "$INTEL_CC"; then
1587 # Don't use -Wcast-align with ICC
1589 # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1590 hppa | ia64 | sparc | arm)
1593 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1598 dnl Turn pedantic on but disable the warnings for long long
1601 if test -z "$INTEL_CC"; then
1602 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
1605 _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1606 _USE_CPP_INCLUDE_FLAG=1
1607 elif test "$SOLARIS_SUNPRO_CC"; then
1608 MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1609 MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1611 DSO_LDOPTS='-shared'
1612 if test "$GNU_LD"; then
1613 # Don't allow undefined symbols in libraries
1614 DSO_LDOPTS="$DSO_LDOPTS -z defs"
1618 if test "$CPU_ARCH" = "sparc"; then
1619 # for Sun Studio on Solaris/SPARC
1620 DSO_PIC_CFLAGS='-xcode=pic32'
1622 DSO_PIC_CFLAGS='-KPIC'
1624 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1626 MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1627 MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1629 DSO_LDOPTS='-shared'
1630 if test "$GNU_LD"; then
1631 # Don't allow undefined symbols in libraries
1632 DSO_LDOPTS="$DSO_LDOPTS -z defs"
1636 DSO_PIC_CFLAGS='-KPIC'
1637 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1640 if test "$GNU_CXX"; then
1641 # FIXME: Let us build with strict aliasing. bug 414641.
1642 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
1643 # Turn on GNU specific features
1644 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
1645 if test -z "$INTEL_CC"; then
1646 # Don't use -Wcast-align with ICC
1648 # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1649 hppa | ia64 | sparc | arm)
1652 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1657 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1658 _USE_CPP_INCLUDE_FLAG=1
1660 AC_CACHE_CHECK(whether the compiler supports -Wno-invalid-offsetof,
1661 ac_has_wno_invalid_offsetof,
1665 _SAVE_CXXFLAGS="$CXXFLAGS"
1666 CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1669 ac_has_wno_invalid_offsetof="yes",
1670 ac_has_wno_invalid_offsetof="no")
1671 CXXFLAGS="$_SAVE_CXXFLAGS"
1674 if test "$ac_has_wno_invalid_offsetof" = "yes"; then
1675 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1678 AC_CACHE_CHECK(whether the compiler supports -Wno-variadic-macros,
1679 ac_has_wno_variadic_macros,
1683 _SAVE_CXXFLAGS="$CXXFLAGS"
1684 CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-variadic-macros"
1687 ac_has_wno_variadic_macros="yes",
1688 ac_has_wno_variadic_macros="no")
1689 CXXFLAGS="$_SAVE_CXXFLAGS"
1692 if test "$ac_has_wno_variadic_macros" = "yes"; then
1693 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-variadic-macros"
1696 AC_CACHE_CHECK(whether the compiler supports -Werror=return-type,
1697 ac_has_werror_return_type,
1701 _SAVE_CXXFLAGS="$CXXFLAGS"
1702 CXXFLAGS="$CXXFLAGS -Werror=return-type"
1705 ac_has_werror_return_type="yes",
1706 ac_has_werror_return_type="no")
1707 CXXFLAGS="$_SAVE_CXXFLAGS"
1710 if test "$ac_has_werror_return_type" = "yes"; then
1711 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Werror=return-type"
1715 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1718 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1719 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1720 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1721 dnl normal behavior.
1722 dnl ========================================================
1724 MKSHLIB_UNFORCE_ALL=
1726 if test "$COMPILE_ENVIRONMENT"; then
1727 if test "$GNU_CC"; then
1728 AC_MSG_CHECKING(whether ld has archive extraction flags)
1729 AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1730 [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1731 ac_cv_mkshlib_force_and_unforce="no"
1732 exec 3<&0 <<LOOP_INPUT
1733 force="-Wl,--whole-archive"; unforce="-Wl,--no-whole-archive"
1734 force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1735 force="-Wl,-all"; unforce="-Wl,-none"
1742 AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1745 LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1747 if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1751 eval $ac_cv_mkshlib_force_and_unforce
1752 MKSHLIB_FORCE_ALL=$force
1753 MKSHLIB_UNFORCE_ALL=$unforce
1756 fi # COMPILE_ENVIRONMENT
1758 dnl =================================================================
1759 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1760 dnl which is bad when cross compiling.
1761 dnl =================================================================
1762 if test "$COMPILE_ENVIRONMENT"; then
1763 configure_static_assert_macros='
1764 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1765 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1766 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1769 dnl test that the macros actually work:
1770 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1771 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1774 ac_cv_static_assertion_macros_work="yes"
1775 AC_TRY_COMPILE([$configure_static_assert_macros],
1776 [CONFIGURE_STATIC_ASSERT(1)],
1778 ac_cv_static_assertion_macros_work="no")
1779 AC_TRY_COMPILE([$configure_static_assert_macros],
1780 [CONFIGURE_STATIC_ASSERT(0)],
1781 ac_cv_static_assertion_macros_work="no",
1784 AC_TRY_COMPILE([$configure_static_assert_macros],
1785 [CONFIGURE_STATIC_ASSERT(1)],
1787 ac_cv_static_assertion_macros_work="no")
1788 AC_TRY_COMPILE([$configure_static_assert_macros],
1789 [CONFIGURE_STATIC_ASSERT(0)],
1790 ac_cv_static_assertion_macros_work="no",
1794 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1795 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1796 AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1798 fi # COMPILE_ENVIRONMENT
1800 dnl ========================================================
1801 dnl Checking for 64-bit OS
1802 dnl ========================================================
1803 if test "$COMPILE_ENVIRONMENT"; then
1806 AC_MSG_CHECKING(for 64-bit OS)
1807 AC_TRY_COMPILE([$configure_static_assert_macros],
1808 [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)],
1809 result="yes", result="no")
1810 AC_MSG_RESULT("$result")
1811 if test "$result" = "yes"; then
1812 AC_DEFINE(HAVE_64BIT_OS)
1815 AC_SUBST(HAVE_64BIT_OS)
1817 fi # COMPILE_ENVIRONMENT
1819 dnl ========================================================
1820 dnl Enable high-memory support on OS/2 by default.
1821 dnl ========================================================
1822 MOZ_OS2_HIGH_MEMORY=1
1823 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1824 [ --disable-os2-high-mem Disable high-memory support on OS/2],
1825 MOZ_OS2_HIGH_MEMORY=,
1826 MOZ_OS2_HIGH_MEMORY=1 )
1827 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1829 dnl ========================================================
1830 dnl System overrides of the defaults for host
1831 dnl ========================================================
1834 HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
1835 HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
1836 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1839 *cygwin*|*mingw*|*mks*|*msvc*|*wince|*winmo)
1840 # we need Python 2.5 on Windows
1842 if test -n "$_WIN32_MSVC"; then
1844 HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1845 HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1846 HOST_RANLIB='echo ranlib'
1848 HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
1850 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
1851 HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1852 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1853 HOST_BIN_SUFFIX=.exe
1856 dnl MinGW/MSYS does not need CYGWIN_WRAPPER
1857 PERL="/bin/sh ${_topsrcdir}/build/msys-perl-wrapper"
1860 CYGWIN_WRAPPER="${srcdir}/build/cygwin-wrapper"
1861 if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
1863 CYGWIN_WRAPPER="${_pwd}/${srcdir}/build/cygwin-wrapper"
1865 if test "`${PERL} -v | grep -c cygwin 2>/dev/null`" = 0; then
1867 PERL="${CYGWIN_WRAPPER} $PERL"
1870 if test "`${PYTHON} -c 'import sys; print sys.platform;'`" != "cygwin"; then
1871 PYTHON="${CYGWIN_WRAPPER} $PYTHON"
1876 case "${host_cpu}" in
1878 HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
1884 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1885 HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1886 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1889 *-linux*|*-kfreebsd*-gnu|*-gnu*)
1890 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1891 HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1892 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1896 HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1897 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1898 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1899 HOST_BIN_SUFFIX=.exe
1904 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1905 HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
1906 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1910 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1911 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1915 dnl We require version 2.4 or newer of Python to build,
1916 dnl and 2.5 or newer on Windows.
1917 AC_MSG_CHECKING([for minimum required Python version >= $PYTHON_VERSION])
1919 $PYTHON -c "import sys; sys.exit(sys.version[:3] < sys.argv[1])" $PYTHON_VERSION
1922 if test "$_python_res" != 0; then
1923 AC_MSG_ERROR([Python $PYTHON_VERSION or higher is required.])
1925 AC_MSG_RESULT([yes])
1927 dnl Get mozilla version from central milestone file
1928 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1930 dnl Get version of various core apps from the version files.
1931 FIREFOX_VERSION=`cat $topsrcdir/browser/config/version.txt`
1933 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1934 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1936 dnl ========================================================
1937 dnl System overrides of the defaults for target
1938 dnl ========================================================
1943 if test ! "$GNU_CC"; then
1944 if test ! "$HAVE_64BIT_OS"; then
1945 # Compiling with Visual Age C++ object model compat is the
1946 # default. To compile with object model ibm, add
1947 # AIX_OBJMODEL=ibm to .mozconfig.
1948 if test "$AIX_OBJMODEL" = "ibm"; then
1949 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1956 AC_SUBST(AIX_OBJMODEL)
1957 DSO_LDOPTS='-qmkshrobj=1'
1958 DSO_CFLAGS='-qflag=w:w'
1960 LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1961 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
1963 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1964 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1965 if test "$COMPILE_ENVIRONMENT"; then
1968 AC_MSG_CHECKING([for VisualAge C++ compiler version >= 6.0.0.3])
1970 [#if (__IBMCPP__ < 600)
1971 #error "Bad compiler"
1973 _BAD_COMPILER=,_BAD_COMPILER=1)
1974 if test -n "$_BAD_COMPILER"; then
1976 AC_MSG_ERROR([VisualAge C++ version 6.0.0.3 or higher is required to build.])
1978 AC_MSG_RESULT([yes])
1981 TARGET_COMPILER_ABI="ibmc"
1982 CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1983 CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1986 case "${target_os}" in
1991 if test "$COMPILE_ENVIRONMENT"; then
1992 AC_CHECK_HEADERS(sys/inttypes.h)
1994 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1999 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
2000 _PLATFORM_DEFAULT_TOOLKIT="cairo-beos"
2001 DSO_LDOPTS='-nostart'
2002 TK_LIBS='-lbe -lroot'
2004 if test "$COMPILE_ENVIRONMENT"; then
2005 AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
2006 AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
2008 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
2009 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
2012 MOZ_USER_DIR="Mozilla"
2016 dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
2025 _WARNINGS_CFLAGS="-Wall"
2026 _WARNINGS_CXXFLAGS="-Wall"
2027 # The test above doesn't work properly, at least on 3.1.
2028 MKSHLIB_FORCE_ALL=''
2029 MKSHLIB_UNFORCE_ALL=''
2035 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2036 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2037 MOZ_OPTIMIZE_FLAGS="-O3"
2039 CFLAGS="$CFLAGS -fpascal-strings -fno-common"
2040 CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
2043 STRIP="$STRIP -x -S"
2044 _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
2045 MOZ_ENABLE_POSTSCRIPT=
2046 TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
2047 # The ExceptionHandling framework is needed for Objective-C exception
2048 # logging code in nsObjCExceptions.h. Currently we only use that in debug
2050 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"
2052 dnl DTrace and -dead_strip don't interact well. See bug 403132.
2053 dnl ===================================================================
2054 if test "x$enable_dtrace" = "xyes"; then
2055 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
2057 dnl check for the presence of the -dead_strip linker flag
2058 AC_MSG_CHECKING([for -dead_strip option to ld])
2059 _SAVE_LDFLAGS=$LDFLAGS
2060 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
2061 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
2062 if test -n "$_HAVE_DEAD_STRIP" ; then
2063 AC_MSG_RESULT([yes])
2064 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
2069 LDFLAGS=$_SAVE_LDFLAGS
2071 MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
2075 if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` != "elf"; then
2076 DLL_SUFFIX=".so.1.0"
2077 DSO_LDOPTS="-shared"
2079 if test ! "$GNU_CC"; then
2080 DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
2082 # Can't have force w/o an unforce.
2083 # # Hack for FreeBSD 2.2
2084 # if test -z "$MKSHLIB_FORCE_ALL"; then
2085 # MKSHLIB_FORCE_ALL='-Wl,-Bforcearchive'
2086 # MKSHLIB_UNFORCE_ALL=''
2092 if test ! "$GNU_CC"; then
2096 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@'
2097 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@'
2098 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2101 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2102 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2106 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2107 AC_DEFINE(_LARGEFILE64_SOURCE)
2112 if test ! "$GNU_CC"; then
2113 DSO_LDOPTS='-b -Wl,+s'
2116 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
2117 MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
2118 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2120 DSO_LDOPTS='-b -E +s'
2121 MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2122 MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2124 MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
2125 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2130 DSO_LDOPTS='-elf -shared'
2132 if test "$GNU_CC"; then
2133 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2134 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2135 MKSHLIB_FORCE_ALL='-Wl,-all'
2136 MKSHLIB_UNFORCE_ALL='-Wl,-none'
2137 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
2139 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2140 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2141 MKSHLIB_FORCE_ALL='-all'
2142 MKSHLIB_UNFORCE_ALL='-none'
2148 dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must*
2149 dnl compile and link using -n32
2151 TARGET_COMPILER_ABI=n32
2152 DSO_LDOPTS='-elf -shared'
2153 MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2154 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2155 _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
2156 _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
2157 if test "$GNU_CC"; then
2158 MKSHLIB_FORCE_ALL='-Wl,-all'
2159 MKSHLIB_UNFORCE_ALL='-Wl,-none'
2160 _WARNINGS_CFLAGS="-Wall"
2161 _WARNINGS_CXXFLAGS="-Wall"
2162 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
2164 MKSHLIB_FORCE_ALL='-all'
2165 MKSHLIB_UNFORCE_ALL='-none'
2171 CFLAGS="$CFLAGS -woff 3262 -G 4"
2172 CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
2173 if test -n "$USE_N32"; then
2174 ASFLAGS="$ASFLAGS -n32"
2175 CFLAGS="$CFLAGS -n32"
2176 CXXFLAGS="$CXXFLAGS -n32"
2177 LDFLAGS="$LDFLAGS -n32"
2179 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2180 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
2183 if test -z "$GNU_CXX"; then
2189 # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
2190 # Similarly for GNU_CXX and INTEL_CXX.
2191 if test "$INTEL_CC" || test "$INTEL_CXX"; then
2192 # -Os has been broken on Intel's C/C++ compilers for quite a
2193 # while; Intel recommends against using it.
2194 MOZ_OPTIMIZE_FLAGS="-O2"
2195 MOZ_DEBUG_FLAGS="-g"
2196 elif test "$GNU_CC" || test "$GNU_CXX"; then
2197 GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
2198 case $GCC_VERSION in
2200 # -Os is broken on gcc 4.1.x and 4.2.x, we need to tweak it to get good results.
2201 MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
2203 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fomit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK"
2204 MOZ_DEBUG_FLAGS="-g"
2207 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2211 case "${target_cpu}" in
2213 CFLAGS="$CFLAGS -mieee"
2214 CXXFLAGS="$CXXFLAGS -mieee"
2220 MOZ_DEBUG_FLAGS="-g" # We want inlining
2226 TARGET_COMPILER_ABI=msvc
2227 _PLATFORM_DEFAULT_TOOLKIT=cairo-windows
2228 MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2229 MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2231 AR_EXTRACT="$AR -extract"
2233 AR_FLAGS='-OUT:"$@"'
2237 ac_configure_args="$ac_configure_args --enable-win32-target=WINCE"
2239 if test "$AS_BIN"; then
2246 if test -z "$RC"; then
2249 # certain versions of cygwin's makedepend barf on the
2250 # #include <string> vs -I./dist/include/string issue so don't use it
2256 HOST_AR='lib -OUT:$@'
2257 HOST_RANLIB='echo ranlib'
2258 HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
2261 WARNINGS_AS_ERRORS='-WX'
2262 MOZ_OPTIMIZE_FLAGS='-Ox'
2263 AR_FLAGS='-NOLOGO -OUT:"$@"'
2265 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2266 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2269 DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
2270 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2272 IMPORT_LIB_SUFFIX=lib
2273 dnl Need to force-link against mozalloc because it's used in the shunt
2274 LIBS="$LIBS \$(LIBXUL_DIST)/lib/mozalloc.lib"
2275 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2278 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
2279 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
2281 MKSHLIB_UNFORCE_ALL=
2282 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2283 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2284 MOZ_DEBUG_FLAGS='-Zi'
2285 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2287 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2289 RANLIB='echo not_ranlib'
2290 STRIP='echo not_strip'
2291 TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
2294 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2296 LIBIDL_CFLAGS="-I$MOZ_TOOLS_DIR/include ${GLIB_CFLAGS}"
2297 LIBIDL_LIBS="$MOZ_TOOLS_DIR/lib/libidl-0.6_s.lib $MOZ_TOOLS_DIR/lib/glib-1.2_s.lib"
2301 AC_DEFINE(HAVE_SNPRINTF)
2306 AC_DEFINE(HW_THREADS)
2307 AC_DEFINE(STDC_HEADERS)
2308 AC_DEFINE(NEW_H, <new>)
2309 AC_DEFINE(WIN32_LEAN_AND_MEAN)
2310 AC_DEFINE(HAVE_LOCALTIME_R)
2312 TARGET_MD_ARCH=win32
2313 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2315 MOZ_ENABLE_POSTSCRIPT=
2316 MOZ_USER_DIR="Mozilla"
2318 MOZ_GFX_OPTIMIZE_MOBILE=1
2320 # Sanity check for WINCE_WINDOWS_MOBILE
2321 # XXX disabled until we can fix the mobile tinderbox
2322 ##if test "$WINCE_WINDOWS_MOBILE"; then
2323 ## AC_CHECK_HEADER(tpcshell.h, [],
2324 ## AC_MSG_ERROR([Can't find tpcshell.h in your SDK; are you sure you don't need --disable-windows-mobile-components?]))
2329 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2334 # certain versions of cygwin's makedepend barf on the
2335 # #include <string> vs -I./dist/include/string issue so don't use it
2337 if test -n "$GNU_CC"; then
2338 CC="$CC -mno-cygwin"
2339 CXX="$CXX -mno-cygwin"
2340 CPP="$CPP -mno-cygwin"
2341 CFLAGS="$CFLAGS -mms-bitfields"
2342 CXXFLAGS="$CXXFLAGS -mms-bitfields"
2343 DSO_LDOPTS='-shared'
2344 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
2345 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2347 # Use temp file for windres (bug 213281)
2348 RCFLAGS='-O coff --use-temp-file'
2349 # mingw doesn't require kernel32, user32, and advapi32 explicitly
2350 LIBS="$LIBS -luuid -lgdi32 -lwinmm -lwsock32"
2351 MOZ_JS_LIBS='-L$(LIBXUL_DIST)/lib -lmozjs'
2353 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core -lmozalloc'
2354 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom -lmozalloc'
2356 IMPORT_LIB_SUFFIX=dll.a
2357 GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
2359 TARGET_COMPILER_ABI=msvc
2363 if test "$AS_BIN"; then
2364 AS="$(basename "$AS_BIN")"
2366 AR='lib -NOLOGO -OUT:"$@"'
2368 RANLIB='echo not_ranlib'
2369 STRIP='echo not_strip'
2374 GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
2380 IMPORT_LIB_SUFFIX=lib
2381 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2382 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2384 MKSHLIB_UNFORCE_ALL=
2385 DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2386 _USE_CPP_INCLUDE_FLAG=1
2387 _DEFINES_CFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2388 _DEFINES_CXXFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2389 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2390 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2391 CXXFLAGS="$CXXFLAGS -wd4800" # disable warning "forcing value to bool"
2392 LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
2393 MOZ_DEBUG_FLAGS='-Zi'
2394 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2395 WARNINGS_AS_ERRORS='-WX'
2396 MOZ_OPTIMIZE_FLAGS='-O1'
2397 MOZ_JS_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2399 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2400 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2401 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2402 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2403 if test $_MSC_VER -ge 1400; then
2404 LDFLAGS="$LDFLAGS -NXCOMPAT"
2405 dnl For profile-guided optimization
2406 PROFILE_GEN_CFLAGS="-GL"
2407 PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2408 dnl XXX: PGO builds can fail with warnings treated as errors,
2409 dnl specifically "no profile data available" appears to be
2410 dnl treated as an error sometimes. This might be a consequence
2411 dnl of using WARNINGS_AS_ERRORS in some modules, combined
2412 dnl with the linker doing most of the work in the whole-program
2413 dnl optimization/PGO case. I think it's probably a compiler bug,
2414 dnl but we work around it here.
2415 PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2416 dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2417 dnl Probably also a compiler bug, but what can you do?
2418 PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2419 if test -n "$_USE_DYNAMICBASE"; then
2420 LDFLAGS="$LDFLAGS -DYNAMICBASE"
2424 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,jpeg32$(VERSION_NUMBER),$(DEPTH)/jpeg)'
2425 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,png,$(DEPTH)/modules/libimg/png)'
2426 AC_DEFINE(HAVE_SNPRINTF)
2431 AC_DEFINE(HW_THREADS)
2432 AC_DEFINE(STDC_HEADERS)
2433 AC_DEFINE(NEW_H, <new>)
2434 AC_DEFINE(WIN32_LEAN_AND_MEAN)
2435 TARGET_MD_ARCH=win32
2436 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2438 MOZ_ENABLE_POSTSCRIPT=
2439 MOZ_USER_DIR="Mozilla"
2441 dnl Hardcode to win95 for now - cls
2442 TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2444 dnl set NO_X11 defines here as the general check is skipped on win32
2448 dnl MinGW/MSYS doesn't provide or need cygpath
2453 MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2455 *-cygwin*|*-msvc*|*-mks*)
2456 CYGPATH_W="cygpath -a -w"
2457 CYGPATH_S="sed -e s|\\\\|/|g"
2458 MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
2462 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2464 if test -z "$MOZ_TOOLS"; then
2465 AC_MSG_ERROR([MOZ_TOOLS is not set])
2468 MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2469 if test "$?" != "0" || test -z "$MOZ_TOOLS_DIR"; then
2470 AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2472 MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
2473 if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
2474 AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2476 MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
2478 if test -n "$GLIB_PREFIX"; then
2479 _GLIB_PREFIX_DIR=`cd $GLIB_PREFIX && pwd -W`
2480 if test "$?" = "0"; then
2481 if test `echo ${PATH}: | grep -ic "$_GLIB_PREFIX_DIR/bin:"` = 0; then
2482 AC_MSG_ERROR([GLIB_PREFIX must be in your \$PATH.])
2484 _GLIB_PREFIX_DIR=`$CYGPATH_W $_GLIB_PREFIX_DIR | $CYGPATH_S`
2486 AC_MSG_ERROR([GLIB_PREFIX is set but "${GLIB_PREFIX}" is not a directory.])
2489 _GLIB_PREFIX_DIR=$MOZ_TOOLS_DIR
2491 if test ! -f "${_GLIB_PREFIX_DIR}/include/glib.h"; then
2492 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/include/glib.h .])
2494 GLIB_CFLAGS="-I${_GLIB_PREFIX_DIR}/include"
2495 if test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"; then
2496 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"
2497 elif test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"; then
2498 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"
2500 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/lib/glib-1.2.lib or $_GLIB_PREFIX_DIR/lib/glib-1.2_s.lib])
2503 if test -n "$LIBIDL_PREFIX"; then
2504 _LIBIDL_PREFIX_DIR=`cd $LIBIDL_PREFIX && pwd -W`
2505 if test "$?" = "0"; then
2506 if test `echo ${PATH}: | grep -ic "$_LIBIDL_PREFIX_DIR/bin:"` = 0; then
2507 AC_MSG_ERROR([LIBIDL_PREFIX must be in your \$PATH.])
2509 _LIBIDL_PREFIX_DIR=`$CYGPATH_W $_LIBIDL_PREFIX_DIR | $CYGPATH_S`
2511 AC_MSG_ERROR([LIBIDL_PREFIX is set but "${LIBIDL_PREFIX}" is not a directory.])
2514 _LIBIDL_PREFIX_DIR=$MOZ_TOOLS_DIR
2516 if test ! -f "${_LIBIDL_PREFIX_DIR}/include/libIDL/IDL.h"; then
2517 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/include/libIDL/IDL.h .])
2519 LIBIDL_CFLAGS="-I${_LIBIDL_PREFIX_DIR}/include ${GLIB_CFLAGS}"
2520 if test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"; then
2521 LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"
2523 elif test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"; then
2524 LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"
2526 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/lib/libidl-0.6.lib or $_LIBIDL_PREFIX_DIR/lib/libidl-0.6_s.lib])
2528 LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2531 *) # else cross-compiling
2532 if test -n "$GLIB_PREFIX"; then
2533 GLIB_CFLAGS="-I${GLIB_PREFIX}/include"
2534 if test -f "${GLIB_PREFIX}/lib/glib-1.2_s.lib"; then
2535 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2_s.lib"
2536 elif test -f "${GLIB_PREFIX}/lib/glib-1.2.lib"; then
2537 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2.lib"
2539 AC_MSG_ERROR([Cannot find $GLIB_PREFIX/lib/glib-1.2.lib or $GLIB_PREFIX/lib/glib-1.2_s.lib])
2542 if test -n "$LIBIDL_PREFIX"; then
2543 LIBIDL_CFLAGS="-I${LIBIDL_PREFIX}/include ${GLIB_CFLAGS}"
2544 if test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"; then
2545 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"
2547 elif test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"; then
2548 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"
2550 AC_MSG_ERROR([Cannot find $LIBIDL_PREFIX/lib/libIDL-0.6.lib or $LIBIDL_PREFIX/lib/libIDL-0.6_s.lib])
2553 LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
2560 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])
2564 AC_CHECK_HEADERS(oleacc.idl)
2568 AC_CHECK_HEADERS(atlbase.h)
2575 if test "$HAVE_64BIT_OS"; then
2576 AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
2579 if test $_MSC_VER -ge 1400; then
2580 LDFLAGS="$LDFLAGS -SAFESEH"
2582 AC_CHECK_HEADERS(mmintrin.h)
2595 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2599 if test "$HAVE_64BIT_OS"; then
2606 CFLAGS="$CFLAGS -Dunix"
2607 CXXFLAGS="$CXXFLAGS -Dunix"
2608 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2610 DSO_PIC_CFLAGS='-fPIC -DPIC'
2611 DSO_LDOPTS='-shared'
2612 BIN_FLAGS='-Wl,--export-dynamic'
2614 DSO_PIC_CFLAGS='-fPIC -DPIC'
2615 DLL_SUFFIX=".so.1.0"
2616 DSO_LDOPTS='-shared'
2618 # This will fail on a.out systems prior to 1.5.1_ALPHA.
2619 MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2620 MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2621 if test "$LIBRUNPATH"; then
2622 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2624 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2625 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2630 AC_DEFINE(_QNX_SOURCE)
2633 WARNINGS_AS_ERRORS=''
2634 MOZ_OPTIMIZE_FLAGS="-O"
2635 MOZ_DEBUG_FLAGS="-gstabs"
2638 LIBS="$LIBS -lsocket -lstdc++"
2639 _DEFINES_CFLAGS='-Wp,-include -Wp,$(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
2640 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -Wp,-include -Wp,$(DEPTH)/mozilla-config.h -D_POSIX_C_SOURCE=199506'
2641 if test "$with_x" != "yes"
2643 _PLATFORM_DEFAULT_TOOLKIT="photon"
2644 TK_CFLAGS='-I/usr/include/photon'
2647 case "${target_cpu}" in
2649 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
2652 case "${host_cpu}" in
2660 DLL_SUFFIX=".so.1.0"
2662 DSO_PIC_CFLAGS='-fPIC'
2663 DSO_LDOPTS='-shared -fPIC'
2664 if test "$LIBRUNPATH"; then
2665 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2670 AC_DEFINE(NO_PW_GECOS)
2671 AC_DEFINE(NO_UDSOCK)
2672 AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
2674 MKSHLIB_FORCE_ALL='-all'
2675 MKSHLIB_UNFORCE_ALL='-none'
2677 AS_DASH_C_FLAG='-Wc/names=as_is'
2679 DSO_LDOPTS='-shared -auto_symvec'
2681 MOZ_DEBUG_LDFLAGS='-g'
2683 CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
2684 CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
2689 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2690 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2693 AC_DEFINE(OS2EMX_PLAIN_CHAR)
2694 AC_DEFINE(TCPV40HDRS)
2700 IMPORT_LIB_SUFFIX=lib
2704 CFLAGS="$CFLAGS -Zomf"
2705 CXXFLAGS="$CXXFLAGS -Zomf"
2707 BIN_FLAGS='-Zlinker /ST:0x100000'
2711 WARNINGS_AS_ERRORS='-Werror'
2712 MOZ_DEBUG_FLAGS="-g -fno-inline"
2713 MOZ_OPTIMIZE_FLAGS="-O2"
2714 MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2715 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2716 LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2718 _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2719 MOZ_ENABLE_POSTSCRIPT=
2722 MOZ_USER_DIR="Mozilla"
2724 if test "$MOZTOOLS"; then
2725 MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2727 AC_MSG_ERROR([MOZTOOLS is not set])
2729 if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2730 DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2731 LDFLAGS="$LDFLAGS -Zhigh-mem"
2732 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2733 AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2736 # GCC for OS/2 currently predefines these, but we don't want them
2737 _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2738 _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2740 AC_CACHE_CHECK(for __declspec(dllexport),
2742 [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2744 ac_os2_declspec="yes",
2745 ac_os2_declspec="no")])
2746 if test "$ac_os2_declspec" = "yes"; then
2748 MOZ_OS2_USE_DECLSPEC='1'
2753 if test "$GNU_CC"; then
2754 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2755 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2758 MOZ_DEBUG_FLAGS='-g'
2759 ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
2760 CFLAGS="$CFLAGS -ieee"
2761 CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee -ptr $(DIST)/cxx_repository'
2762 DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
2765 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2766 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2767 MKSHLIB_FORCE_ALL='-all'
2768 MKSHLIB_UNFORCE_ALL='-none'
2769 dnl Might fix the libxpcom.so breakage on this platform as well....
2770 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2771 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2773 if test -z "$GNU_CXX"; then
2776 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2780 DIRENT_INO=d_stat.st_ino
2781 dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
2782 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2783 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2784 dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
2785 AC_DEFINE(STDC_HEADERS)
2786 if test "$no_x" = "yes"; then
2787 _PLATFORM_DEFAULT_TOOLKIT='photon'
2788 TK_CFLAGS='-I/usr/nto/include/photon'
2789 TK_LIBS='-lphoton -lphrender'
2794 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2795 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2796 CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
2797 if test ! "$GNU_CC"; then
2804 TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2806 # $ORIGIN/.. is for shared libraries under components/ to locate shared
2807 # libraries one level up (e.g. libnspr4.so)
2808 LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..'"
2809 if test "$SOLARIS_SUNPRO_CC"; then
2810 LIBS="-lCrun -lCstd $LIBS"
2813 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2814 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all"
2815 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic -norunpath"
2816 _MOZ_EXCEPTIONS_FLAGS_ON='-features=except'
2817 _MOZ_EXCEPTIONS_FLAGS_OFF='-features=no%except'
2818 LDFLAGS="-xildoff -z lazyload -z combreloc $LDFLAGS"
2819 if test -z "$CROSS_COMPILE" && test -f /usr/lib/ld/map.noexstk; then
2820 _SAVE_LDFLAGS=$LDFLAGS
2821 LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2822 AC_TRY_LINK([#include <stdio.h>],
2823 [printf("Hello World\n");],
2825 [LDFLAGS=$_SAVE_LDFLAGS])
2827 WARNINGS_AS_ERRORS='-Werror'
2828 MOZ_OPTIMIZE_FLAGS="-xO4"
2829 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2830 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) -G -z muldefs -h $@ -o $@'
2831 MKSHLIB_FORCE_ALL='-z allextract'
2832 MKSHLIB_UNFORCE_ALL='-z defaultextract'
2833 DSO_LDOPTS='-G -z muldefs'
2839 AS='/usr/ccs/bin/as'
2840 ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2842 TARGET_COMPILER_ABI="sunc"
2843 CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2844 CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2845 AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
2849 [#if (__SUNPRO_CC < 0x590)
2852 _BAD_COMPILER=,_BAD_COMPILER=1)
2853 if test -n "$_BAD_COMPILER"; then
2855 AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
2859 AC_MSG_RESULT([$_res])
2862 ASFLAGS="$ASFLAGS -fPIC"
2865 _WARNINGS_CXXFLAGS=''
2866 if test "$OS_RELEASE" = "5.3"; then
2867 AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2870 if test "$OS_RELEASE" = "5.5.1"; then
2871 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2876 DSO_LDOPTS='-Bdynamic'
2877 MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2878 MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2880 AC_DEFINE(SPRINTF_RETURNS_STRING)
2881 case "$(target_os)" in
2883 DLL_SUFFIX='.so.1.0'
2889 NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2893 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2897 AC_DEFINE(NO_PW_GECOS)
2899 _PLATFORM_DEFAULT_TOOLKIT=cairo-android
2900 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2902 MOZ_GFX_OPTIMIZE_MOBILE=1
2903 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions -fomit-frame-pointer"
2910 dnl Only one oddball right now (QNX), but this gives us flexibility
2911 dnl if any other platforms need to override this in the future.
2912 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2914 dnl ========================================================
2915 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2916 dnl by now will not have any way to link most binaries (tests
2917 dnl as well as viewer, apprunner, etc.), because some symbols
2918 dnl will be left out of the "composite" .so's by ld as unneeded.
2919 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2920 dnl they can link in the static libs that provide the missing
2922 dnl ========================================================
2923 NO_LD_ARCHIVE_FLAGS=
2924 if test -z "$MKSHLIB_FORCE_ALL" || test -z "$MKSHLIB_UNFORCE_ALL"; then
2925 NO_LD_ARCHIVE_FLAGS=1
2929 NO_LD_ARCHIVE_FLAGS=
2932 NO_LD_ARCHIVE_FLAGS=
2935 NO_LD_ARCHIVE_FLAGS=
2937 *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince|*-winmo)
2938 if test -z "$GNU_CC"; then
2939 NO_LD_ARCHIVE_FLAGS=
2943 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2945 dnl ========================================================
2946 dnl = Flags to strip unused symbols from .so components
2947 dnl ========================================================
2949 *-linux*|*-kfreebsd*-gnu|*-gnu*)
2950 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2953 if test -z "$GNU_CC"; then
2954 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2956 if test -z "$GCC_USE_GNU_LD"; then
2957 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2959 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2964 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2967 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2969 *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince|*-winmo)
2970 if test -n "$GNU_CC"; then
2971 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2976 if test -z "$COMPILE_ENVIRONMENT"; then
2977 SKIP_COMPILER_CHECKS=1
2978 SKIP_LIBRARY_CHECKS=1
2981 if test -z "$SKIP_COMPILER_CHECKS"; then
2982 dnl Checks for typedefs, structures, and compiler characteristics.
2983 dnl ========================================================
2991 AC_MSG_CHECKING(for __stdcall)
2992 AC_CACHE_VAL(ac_cv___stdcall,
2994 [void foo(); void __stdcall foo();],
2995 [ac_cv___stdcall=true],
2996 [ac_cv___stdcall=false])])
2997 if test "$ac_cv___stdcall" = true ; then
2998 AC_DEFINE(HAVE_STDCALL)
3003 AC_MSG_CHECKING(for ssize_t)
3004 AC_CACHE_VAL(ac_cv_type_ssize_t,
3005 [AC_TRY_COMPILE([#include <stdio.h>
3006 #include <sys/types.h>],
3008 [ac_cv_type_ssize_t=true],
3009 [ac_cv_type_ssize_t=false])])
3010 if test "$ac_cv_type_ssize_t" = true ; then
3011 AC_DEFINE(HAVE_SSIZE_T)
3016 AC_STRUCT_ST_BLKSIZE
3017 AC_MSG_CHECKING(for siginfo_t)
3018 AC_CACHE_VAL(ac_cv_siginfo_t,
3019 [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
3020 #include <signal.h>],
3022 [ac_cv_siginfo_t=true],
3023 [ac_cv_siginfo_t=false])])
3024 if test "$ac_cv_siginfo_t" = true ; then
3025 AC_DEFINE(HAVE_SIGINFO_T)
3031 dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
3032 dnl ========================================================
3033 AC_MSG_CHECKING(for int16_t)
3034 AC_CACHE_VAL(ac_cv_int16_t,
3035 [AC_TRY_COMPILE([#include <stdio.h>
3036 #include <sys/types.h>],
3038 [ac_cv_int16_t=true],
3039 [ac_cv_int16_t=false])])
3040 if test "$ac_cv_int16_t" = true ; then
3041 AC_DEFINE(HAVE_INT16_T)
3046 AC_MSG_CHECKING(for int32_t)
3047 AC_CACHE_VAL(ac_cv_int32_t,
3048 [AC_TRY_COMPILE([#include <stdio.h>
3049 #include <sys/types.h>],
3051 [ac_cv_int32_t=true],
3052 [ac_cv_int32_t=false])])
3053 if test "$ac_cv_int32_t" = true ; then
3054 AC_DEFINE(HAVE_INT32_T)
3059 AC_MSG_CHECKING(for int64_t)
3060 AC_CACHE_VAL(ac_cv_int64_t,
3061 [AC_TRY_COMPILE([#include <stdio.h>
3062 #include <sys/types.h>],
3064 [ac_cv_int64_t=true],
3065 [ac_cv_int64_t=false])])
3066 if test "$ac_cv_int64_t" = true ; then
3067 AC_DEFINE(HAVE_INT64_T)
3072 AC_MSG_CHECKING(for int64)
3073 AC_CACHE_VAL(ac_cv_int64,
3074 [AC_TRY_COMPILE([#include <stdio.h>
3075 #include <sys/types.h>],
3078 [ac_cv_int64=false])])
3079 if test "$ac_cv_int64" = true ; then
3080 AC_DEFINE(HAVE_INT64)
3085 AC_MSG_CHECKING(for uint)
3086 AC_CACHE_VAL(ac_cv_uint,
3087 [AC_TRY_COMPILE([#include <stdio.h>
3088 #include <sys/types.h>],
3091 [ac_cv_uint=false])])
3092 if test "$ac_cv_uint" = true ; then
3093 AC_DEFINE(HAVE_UINT)
3098 AC_MSG_CHECKING(for uint_t)
3099 AC_CACHE_VAL(ac_cv_uint_t,
3100 [AC_TRY_COMPILE([#include <stdio.h>
3101 #include <sys/types.h>],
3103 [ac_cv_uint_t=true],
3104 [ac_cv_uint_t=false])])
3105 if test "$ac_cv_uint_t" = true ; then
3106 AC_DEFINE(HAVE_UINT_T)
3111 AC_MSG_CHECKING(for uint16_t)
3112 AC_CACHE_VAL(ac_cv_uint16_t,
3113 [AC_TRY_COMPILE([#include <stdio.h>
3114 #include <sys/types.h>],
3115 [uint16_t foo = 0;],
3116 [ac_cv_uint16_t=true],
3117 [ac_cv_uint16_t=false])])
3118 if test "$ac_cv_uint16_t" = true ; then
3119 AC_DEFINE(HAVE_UINT16_T)
3125 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
3126 dnl are defined when compiling C++ but not C. Since the result of this
3127 dnl test is used only in C++, do it in C++.
3130 AC_MSG_CHECKING(for uname.domainname)
3131 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
3132 [AC_TRY_COMPILE([#include <sys/utsname.h>],
3133 [ struct utsname *res; char *domain;
3134 (void)uname(res); if (res != 0) { domain = res->domainname; } ],
3135 [ac_cv_have_uname_domainname_field=true],
3136 [ac_cv_have_uname_domainname_field=false])])
3138 if test "$ac_cv_have_uname_domainname_field" = "true"; then
3139 AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
3145 AC_MSG_CHECKING(for uname.__domainname)
3146 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
3147 [AC_TRY_COMPILE([#include <sys/utsname.h>],
3148 [ struct utsname *res; char *domain;
3149 (void)uname(res); if (res != 0) { domain = res->__domainname; } ],
3150 [ac_cv_have_uname_us_domainname_field=true],
3151 [ac_cv_have_uname_us_domainname_field=false])])
3153 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
3154 AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
3162 dnl Check for usable char16_t (2 bytes, unsigned)
3163 dnl (we might not need the unsignedness check anymore)
3164 AC_CACHE_CHECK(for usable char16_t (2 bytes, unsigned),
3165 ac_cv_have_usable_char16_t,
3166 [AC_TRY_COMPILE([$configure_static_assert_macros],
3167 [CONFIGURE_STATIC_ASSERT(sizeof(char16_t) == 2);
3168 CONFIGURE_STATIC_ASSERT(char16_t(-1) > char16_t(0));
3169 CONFIGURE_STATIC_ASSERT(sizeof((u"hello")[0]) == 2);
3170 CONFIGURE_STATIC_ASSERT(sizeof(u'a') == 2);
3171 CONFIGURE_STATIC_ASSERT(u'\xFFFF' > u'\x0')],
3172 ac_cv_have_usable_char16_t="yes",
3173 ac_cv_have_usable_char16_t="no")])
3174 if test "$ac_cv_have_usable_char16_t" = "yes"; then
3175 AC_DEFINE(HAVE_CPP_CHAR16_T)
3179 dnl Check for usable wchar_t (2 bytes, unsigned)
3180 dnl (we really don't need the unsignedness check anymore)
3181 dnl ========================================================
3183 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
3184 ac_cv_have_usable_wchar_v2,
3185 [AC_TRY_COMPILE([#include <stddef.h>
3186 $configure_static_assert_macros],
3187 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
3188 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
3189 ac_cv_have_usable_wchar_v2="yes",
3190 ac_cv_have_usable_wchar_v2="no")])
3191 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
3192 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
3193 HAVE_CPP_2BYTE_WCHAR_T=1
3194 elif test "$ac_cv_have_usable_char16_t" != "yes"; then
3195 dnl This is really gcc-only
3196 dnl Do this test using CXX only since some versions of gcc
3197 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
3198 dnl only have short-wchar support for c++.
3199 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
3201 _SAVE_CXXFLAGS=$CXXFLAGS
3202 CXXFLAGS="$CXXFLAGS -fshort-wchar"
3204 AC_CACHE_CHECK(for compiler -fshort-wchar option,
3205 ac_cv_have_usable_wchar_option_v2,
3206 [AC_TRY_LINK([#include <stddef.h>
3207 $configure_static_assert_macros],
3208 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
3209 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
3210 ac_cv_have_usable_wchar_option_v2="yes",
3211 ac_cv_have_usable_wchar_option_v2="no")])
3213 if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
3214 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
3215 HAVE_CPP_2BYTE_WCHAR_T=1
3216 WCHAR_CFLAGS="-fshort-wchar"
3218 CXXFLAGS=$_SAVE_CXXFLAGS
3224 dnl Check for .hidden assembler directive and visibility attribute.
3225 dnl Borrowed from glibc configure.in
3226 dnl ===============================================================
3227 if test "$GNU_CC"; then
3228 AC_CACHE_CHECK(for visibility(hidden) attribute,
3229 ac_cv_visibility_hidden,
3230 [cat > conftest.c <<EOF
3231 int foo __attribute__ ((visibility ("hidden"))) = 1;
3233 ac_cv_visibility_hidden=no
3234 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3235 if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
3236 ac_cv_visibility_hidden=yes
3241 if test "$ac_cv_visibility_hidden" = "yes"; then
3242 AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
3244 AC_CACHE_CHECK(for visibility(default) attribute,
3245 ac_cv_visibility_default,
3246 [cat > conftest.c <<EOF
3247 int foo __attribute__ ((visibility ("default"))) = 1;
3249 ac_cv_visibility_default=no
3250 if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3251 if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
3252 ac_cv_visibility_default=yes
3257 if test "$ac_cv_visibility_default" = "yes"; then
3258 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
3260 AC_CACHE_CHECK(for visibility pragma support,
3261 ac_cv_visibility_pragma,
3262 [cat > conftest.c <<EOF
3263 #pragma GCC visibility push(hidden)
3265 #pragma GCC visibility push(default)
3266 int foo_default = 1;
3268 ac_cv_visibility_pragma=no
3269 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3270 if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
3271 if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
3272 ac_cv_visibility_pragma=yes
3278 if test "$ac_cv_visibility_pragma" = "yes"; then
3279 AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
3280 ac_cv_have_visibility_class_bug,
3281 [cat > conftest.c <<EOF
3282 #pragma GCC visibility push(hidden)
3283 struct __attribute__ ((visibility ("default"))) TestStruct {
3286 __attribute__ ((visibility ("default"))) void TestFunc() {
3290 ac_cv_have_visibility_class_bug=no
3291 if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
3292 ac_cv_have_visibility_class_bug=yes
3294 if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
3295 ac_cv_have_visibility_class_bug=yes
3298 rm -rf conftest.{c,S}
3301 AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
3302 ac_cv_have_visibility_builtin_bug,
3303 [cat > conftest.c <<EOF
3304 #pragma GCC visibility push(hidden)
3305 #pragma GCC visibility push(default)
3307 #pragma GCC visibility pop
3309 __attribute__ ((visibility ("default"))) void Func() {
3311 memset(c, 0, sizeof(c));
3314 ac_cv_have_visibility_builtin_bug=no
3315 if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
3316 ac_cv_have_visibility_builtin_bug=yes
3318 if test `grep -c "@PLT" conftest.S` = 0; then
3319 ac_cv_visibility_builtin_bug=yes
3322 rm -f conftest.{c,S}
3324 if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
3325 "$ac_cv_have_visibility_class_bug" = "no"; then
3326 VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
3327 WRAP_SYSTEM_INCLUDES=1
3328 STL_FLAGS='-I$(DIST)/stl_wrappers'
3331 VISIBILITY_FLAGS='-fvisibility=hidden'
3332 fi # have visibility pragma bug
3333 fi # have visibility pragma
3334 fi # have visibility(default) attribute
3335 fi # have visibility(hidden) attribute
3338 # visibility hidden flag for Sun Studio on Solaris
3339 if test "$SOLARIS_SUNPRO_CC"; then
3340 VISIBILITY_FLAGS='-xldscope=hidden'
3341 fi # Sun Studio on Solaris
3343 AC_SUBST(WRAP_SYSTEM_INCLUDES)
3344 AC_SUBST(VISIBILITY_FLAGS)
3346 dnl Check for __force_align_arg_pointer__ for SSE2 on gcc
3347 dnl ========================================================
3348 if test "$GNU_CC"; then
3349 CFLAGS_save="${CFLAGS}"
3350 CFLAGS="${CFLAGS} -Werror"
3351 AC_CACHE_CHECK(for __force_align_arg_pointer__ attribute,
3352 ac_cv_force_align_arg_pointer,
3353 [AC_TRY_COMPILE([__attribute__ ((__force_align_arg_pointer__)) void test() {}],
3355 ac_cv_force_align_arg_pointer="yes",
3356 ac_cv_force_align_arg_pointer="no")])
3357 CFLAGS="${CFLAGS_save}"
3358 if test "$ac_cv_force_align_arg_pointer" = "yes"; then
3359 HAVE_GCC_ALIGN_ARG_POINTER=1
3361 HAVE_GCC_ALIGN_ARG_POINTER=
3364 AC_SUBST(HAVE_GCC_ALIGN_ARG_POINTER)
3366 dnl Checks for header files.
3367 dnl ========================================================
3369 case "$target_os" in
3371 # for stuff like -lXshm
3372 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
3375 AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
3376 AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
3377 AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
3378 AC_CHECK_HEADERS(malloc.h)
3379 AC_CHECK_HEADERS(X11/XKBlib.h)
3380 AC_CHECK_HEADERS(io.h)
3382 dnl These are all the places some variant of statfs can be hiding.
3383 AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
3386 AC_CHECK_HEADERS(sys/quota.h)
3388 dnl Try for MMX support
3389 dnl NB - later gcc versions require -mmmx for this header to be successfully
3390 dnl included (or another option which implies it, such as -march=pentium-mmx)
3391 AC_CHECK_HEADERS(mmintrin.h)
3393 dnl Check whether the compiler supports the new-style C++ standard
3394 dnl library headers (i.e. <new>) or needs the old "new.h"
3397 AC_CHECK_HEADER(new, [NEW_H=new])
3398 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
3401 AC_ARG_ENABLE(dtrace,
3402 [ --enable-dtrace build with dtrace support if available (default=no)],
3403 [enable_dtrace="yes"],)
3404 if test "x$enable_dtrace" = "xyes"; then
3405 AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
3406 if test -n "$HAVE_DTRACE"; then
3407 AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
3409 AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
3412 AC_SUBST(HAVE_DTRACE)
3418 AC_CHECK_HEADERS(sys/cdefs.h)
3422 dnl Checks for libraries.
3423 dnl ========================================================
3428 AC_CHECK_LIB(c_r, gethostbyname_r)
3432 dnl We don't want to link with libdl even if it's present on OS X, since
3433 dnl it's not used and not part of the default installation.
3434 dnl The same goes for BeOS. OS/2 has dlfcn in libc.
3435 dnl We don't want to link against libm or libpthread on Darwin since
3436 dnl they both are just symlinks to libSystem and explicitly linking
3437 dnl against libSystem causes issues when debugging (see bug 299601).
3446 AC_CHECK_LIB(m, atan)
3447 AC_CHECK_LIB(dl, dlopen,
3448 AC_CHECK_HEADER(dlfcn.h,
3450 AC_DEFINE(HAVE_LIBDL)))
3454 _SAVE_CFLAGS="$CFLAGS"
3455 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3456 AC_CHECK_FUNCS(dladdr)
3457 CFLAGS="$_SAVE_CFLAGS"
3459 if test ! "$GNU_CXX"; then
3463 AC_CHECK_LIB(C_r, demangle)
3466 AC_CHECK_LIB(C, demangle)
3471 dnl OS/2 has socket in libc.
3476 AC_CHECK_LIB(socket, socket)
3479 dnl ========================================================
3480 dnl Check whether we can compile code for Core Text
3481 dnl (available on Mac OS X 10.5 or later)
3482 dnl ========================================================
3485 AC_MSG_CHECKING([for Core Text])
3486 AC_TRY_COMPILE([#include <ApplicationServices/ApplicationServices.h>],
3487 [CTLineRef lineRef;],
3488 ac_cv_have_core_text="yes",
3489 ac_cv_have_core_text="no")
3490 AC_MSG_RESULT([$ac_cv_have_core_text])
3492 if test "$ac_cv_have_core_text" = "no"; then
3493 AC_MSG_ERROR([Core Text is required (available on Mac OS X 10.5 or later).])
3499 XLIBS="$X_EXTRA_LIBS"
3501 dnl ========================================================
3502 dnl Checks for X libraries.
3503 dnl Ordering is important.
3504 dnl Xt is dependent upon SM as of X11R6
3505 dnl ========================================================
3506 if test "$no_x" = "yes"; then
3509 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3510 XLIBS="-lX11 $XLIBS"
3511 _SAVE_LDFLAGS="$LDFLAGS"
3512 LDFLAGS="$XLDFLAGS $LDFLAGS"
3513 AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3514 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3515 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3516 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3518 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3519 unset ac_cv_lib_Xt_XtFree
3520 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3521 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
3522 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3523 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3526 # AIX needs the motif library linked before libXt to prevent
3527 # crashes in plugins linked against Motif - Bug #98892
3528 case "${target_os}" in
3530 XT_LIBS="-lXm $XT_LIBS"
3534 dnl ========================================================
3535 dnl = Check for XShm
3536 dnl ========================================================
3537 AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3539 AC_CHECK_HEADER(X11/extensions/XShm.h)
3540 if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" &&
3541 test -n "$_HAVE_XSHM_XEXT"; then
3542 AC_DEFINE(HAVE_XSHM)
3545 dnl ========================================================
3547 dnl ========================================================
3548 AC_CHECK_LIB(XIE, XieFloGeometry, [MOZ_XIE_LIBS="-lXIE"],,
3550 AC_CHECK_HEADER(X11/extensions/XIElib.h)
3552 if test "$MOZ_XIE_LIBS"; then
3553 dnl ====================================================
3554 dnl = If XIE is present and is desired, turn it on
3555 dnl ====================================================
3565 LDFLAGS="$_SAVE_LDFLAGS"
3567 dnl ========================================================
3568 dnl = Check for freetype2 and its functionality
3569 dnl ========================================================
3570 AC_CHECK_FT2(6.1.0, [_HAVE_FREETYPE2=1], [_HAVE_FREETYPE2=])
3572 if test "$_HAVE_FREETYPE2"; then
3574 _SAVE_CFLAGS="$CFLAGS"
3575 LIBS="$LIBS $FT2_LIBS"
3576 CFLAGS="$CFLAGS $FT2_CFLAGS"
3578 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
3579 ac_cv_member_FT_Bitmap_Size_y_ppem,
3580 [AC_TRY_COMPILE([#include <ft2build.h>
3581 #include FT_FREETYPE_H],
3583 if (sizeof s.y_ppem) return 0;
3585 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
3586 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
3587 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
3588 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
3590 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
3592 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
3593 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
3594 [FT_Bitmap_Size structure includes y_ppem field])
3596 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
3599 CFLAGS="$_SAVE_CFLAGS"
3610 AC_MSG_CHECKING(for ARM SIMD support in compiler)
3612 [asm("uqadd8 r1, r1, r2");],
3613 result="yes", result="no")
3614 AC_MSG_RESULT("$result")
3615 if test "$result" = "yes"; then
3616 AC_DEFINE(HAVE_ARM_SIMD)
3619 AC_SUBST(HAVE_ARM_SIMD)
3621 AC_MSG_CHECKING(for ARM NEON support in compiler)
3622 _SAVE_CFLAGS="$CFLAGS"
3623 if test "$GNU_CC"; then
3624 # gcc needs -mfpu=neon to recognize NEON instructions
3625 CFLAGS="$CFLAGS -mfpu=neon -mfloat-abi=softfp"
3628 [asm("vadd.i8 d0, d0, d0");],
3629 result="yes", result="no")
3630 AC_MSG_RESULT("$result")
3631 if test "$result" = "yes"; then
3632 AC_DEFINE(HAVE_ARM_NEON)
3635 CFLAGS="$_SAVE_CFLAGS"
3636 AC_SUBST(HAVE_ARM_NEON)
3638 dnl ========================================================
3639 dnl = pthread support
3640 dnl = Start by checking whether the system support pthreads
3641 dnl ========================================================
3642 case "$target_os" in
3647 MOZ_CHECK_PTHREADS(pthreads,
3648 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3649 MOZ_CHECK_PTHREADS(pthread,
3650 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3651 MOZ_CHECK_PTHREADS(c_r,
3652 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3653 MOZ_CHECK_PTHREADS(c,
3662 dnl ========================================================
3663 dnl Check the command line for --with-pthreads
3664 dnl ========================================================
3665 MOZ_ARG_WITH_BOOL(pthreads,
3666 [ --with-pthreads Force use of system pthread library with NSPR ],
3667 [ if test "$USE_PTHREADS"x = x; then
3668 AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3674 dnl ========================================================
3675 dnl Do the platform specific pthread hackery
3676 dnl ========================================================
3677 if test "$USE_PTHREADS"x != x
3680 dnl See if -pthread is supported.
3683 ac_cv_have_dash_pthread=no
3684 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3685 echo 'int main() { return 0; }' | cat > conftest.c
3686 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3687 if test $? -eq 0; then
3688 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3689 ac_cv_have_dash_pthread=yes
3690 case "$target_os" in
3692 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3695 CFLAGS="$CFLAGS -pthread"
3696 CXXFLAGS="$CXXFLAGS -pthread"
3702 AC_MSG_RESULT($ac_cv_have_dash_pthread)
3705 dnl See if -pthreads is supported.
3707 ac_cv_have_dash_pthreads=no
3708 if test "$ac_cv_have_dash_pthread" = "no"; then
3709 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3710 echo 'int main() { return 0; }' | cat > conftest.c
3711 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3712 if test $? -eq 0; then
3713 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3714 ac_cv_have_dash_pthreads=yes
3715 CFLAGS="$CFLAGS -pthreads"
3716 CXXFLAGS="$CXXFLAGS -pthreads"
3720 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3725 AC_DEFINE(_REENTRANT)
3726 AC_DEFINE(_THREAD_SAFE)
3727 dnl -pthread links in -lc_r, so don't specify it explicitly.
3728 if test "$ac_cv_have_dash_pthread" = "yes"; then
3729 _PTHREAD_LDFLAGS="-pthread"
3731 _PTHREAD_LDFLAGS="-lc_r"
3735 *-*-openbsd*|*-*-bsdi*)
3736 AC_DEFINE(_REENTRANT)
3737 AC_DEFINE(_THREAD_SAFE)
3738 dnl -pthread links in -lc_r, so don't specify it explicitly.
3739 if test "$ac_cv_have_dash_pthread" = "yes"; then
3740 _PTHREAD_LDFLAGS="-pthread"
3744 *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
3745 AC_DEFINE(_REENTRANT)
3749 AC_DEFINE(_REENTRANT)
3753 AC_DEFINE(_REENTRANT)
3757 AC_DEFINE(_REENTRANT)
3761 AC_DEFINE(_REENTRANT)
3765 AC_DEFINE(_REENTRANT)
3766 if test "$SOLARIS_SUNPRO_CC"; then
3767 CFLAGS="$CFLAGS -mt"
3768 CXXFLAGS="$CXXFLAGS -mt"
3772 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3775 dnl ========================================================
3776 dnl See if mmap sees writes
3777 dnl For cross compiling, just define it as no, which is a safe default
3778 dnl ========================================================
3779 AC_MSG_CHECKING(whether mmap() sees write()s)
3785 #include <sys/mman.h>
3786 #include <sys/types.h>
3787 #include <sys/stat.h>
3790 char fname[] = "conftest.file";
3791 char zbuff[1024]; /* Fractional page is probably worst case */
3798 fd = open(fname, O_RDWR | O_CREAT, 0660);
3801 write(fd, zbuff, sizeof(zbuff));
3802 lseek(fd, 0, SEEK_SET);
3803 map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
3804 if(map==(char*)-1) return 2;
3805 for(i=0; fname[i]; i++) {
3806 int rc = write(fd, &fname[i], 1);
3807 if(map[i]!=fname[i]) return 4;
3814 AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
3816 AC_MSG_RESULT("$result")
3818 if test "$result" = "no"; then
3819 AC_DEFINE(MMAP_MISSES_WRITES)
3823 dnl Checks for library functions.
3824 dnl ========================================================
3825 AC_PROG_GCC_TRADITIONAL
3827 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 truncate64 statvfs64 setbuf isatty)
3828 AC_CHECK_FUNCS(flockfile getpagesize)
3829 AC_CHECK_FUNCS(localtime_r strtok_r)
3831 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock, and -lrt
3832 _SAVE_LDFLAGS=$LDFLAGS
3833 LDFLAGS="$LDFLAGS -lrt"
3834 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC) and -lrt,
3835 ac_cv_have_clock_monotonic,
3836 [AC_TRY_LINK([#include <time.h>],
3837 [ struct timespec ts;
3838 clock_gettime(CLOCK_MONOTONIC, &ts); ],
3839 ac_cv_have_clock_monotonic=yes,
3840 ac_cv_have_clock_monotonic=no)])
3841 LDFLAGS=$_SAVE_LDFLAGS
3842 if test "$ac_cv_have_clock_monotonic" = "yes"; then
3843 HAVE_CLOCK_MONOTONIC=1
3845 AC_DEFINE(HAVE_CLOCK_MONOTONIC)
3846 AC_SUBST(HAVE_CLOCK_MONOTONIC)
3847 AC_SUBST(REALTIME_LIBS)
3850 dnl check for wcrtomb/mbrtowc
3851 dnl =======================================================================
3852 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3855 AC_CACHE_CHECK(for wcrtomb,
3857 [AC_TRY_LINK([#include <wchar.h>],
3858 [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3859 ac_cv_have_wcrtomb="yes",
3860 ac_cv_have_wcrtomb="no")])
3861 if test "$ac_cv_have_wcrtomb" = "yes"; then
3862 AC_DEFINE(HAVE_WCRTOMB)
3864 AC_CACHE_CHECK(for mbrtowc,
3866 [AC_TRY_LINK([#include <wchar.h>],
3867 [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3868 ac_cv_have_mbrtowc="yes",
3869 ac_cv_have_mbrtowc="no")])
3870 if test "$ac_cv_have_mbrtowc" = "yes"; then
3871 AC_DEFINE(HAVE_MBRTOWC)
3878 ac_cv_func_res_ninit,
3881 #define _BSD_SOURCE 1
3885 [int foo = res_ninit(&_res);],
3886 [ac_cv_func_res_ninit=yes],
3887 [ac_cv_func_res_ninit=no])
3890 if test "$ac_cv_func_res_ninit" = "yes"; then
3891 AC_DEFINE(HAVE_RES_NINIT)
3892 dnl must add the link line we do something as foolish as this... dougt
3894 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3895 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3900 [for gnu_get_libc_version()],
3901 ac_cv_func_gnu_get_libc_version,
3903 #ifdef HAVE_GNU_LIBC_VERSION_H
3904 #include <gnu/libc-version.h>
3907 [const char *glibc_version = gnu_get_libc_version();],
3908 [ac_cv_func_gnu_get_libc_version=yes],
3909 [ac_cv_func_gnu_get_libc_version=no]
3913 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3914 AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3918 os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|winmo*|beos*)
3922 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3923 AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3924 AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3926 LIBS="$LIBS $_ICONV_LIBS"
3935 iconv_t h = iconv_open("", "");
3936 iconv(h, NULL, NULL, NULL, NULL);
3939 [ac_cv_func_iconv=yes],
3940 [ac_cv_func_iconv=no]
3943 if test "$ac_cv_func_iconv" = "yes"; then
3944 AC_DEFINE(HAVE_ICONV)
3945 DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3946 LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3947 LIBICONV="$_ICONV_LIBS"
3949 [for iconv() with const input],
3950 ac_cv_func_const_iconv,
3956 const char *input = "testing";
3957 iconv_t h = iconv_open("", "");
3958 iconv(h, &input, NULL, NULL, NULL);
3961 [ac_cv_func_const_iconv=yes],
3962 [ac_cv_func_const_iconv=no]
3965 if test "$ac_cv_func_const_iconv" = "yes"; then
3966 AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3978 dnl **********************
3979 dnl *** va_copy checks ***
3980 dnl **********************
3981 dnl we currently check for all three va_copy possibilities, so we get
3982 dnl all results in config.log for bug reports.
3983 AC_MSG_CHECKING(for an implementation of va_copy())
3984 AC_CACHE_VAL(ac_cv_va_copy,[
3987 void f (int i, ...) {
3988 va_list args1, args2;
3989 va_start (args1, i);
3990 va_copy (args2, args1);
3991 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3993 va_end (args1); va_end (args2);
3995 int main() { f (0, 42); return 0; }],
4001 AC_MSG_RESULT($ac_cv_va_copy)
4002 AC_MSG_CHECKING(for an implementation of __va_copy())
4003 AC_CACHE_VAL(ac_cv___va_copy,[
4006 void f (int i, ...) {
4007 va_list args1, args2;
4008 va_start (args1, i);
4009 __va_copy (args2, args1);
4010 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
4012 va_end (args1); va_end (args2);
4014 int main() { f (0, 42); return 0; }],
4015 ac_cv___va_copy=yes,
4020 AC_MSG_RESULT($ac_cv___va_copy)
4021 AC_MSG_CHECKING(whether va_lists can be copied by value)
4022 AC_CACHE_VAL(ac_cv_va_val_copy,[
4025 void f (int i, ...) {
4026 va_list args1, args2;
4027 va_start (args1, i);
4029 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
4031 va_end (args1); va_end (args2);
4033 int main() { f (0, 42); return 0; }],
4034 ac_cv_va_val_copy=yes,
4035 ac_cv_va_val_copy=no,
4036 ac_cv_va_val_copy=yes
4039 if test "x$ac_cv_va_copy" = "xyes"; then
4040 AC_DEFINE(VA_COPY, va_copy)
4041 AC_DEFINE(HAVE_VA_COPY)
4042 elif test "x$ac_cv___va_copy" = "xyes"; then
4043 AC_DEFINE(VA_COPY, __va_copy)
4044 AC_DEFINE(HAVE_VA_COPY)
4047 if test "x$ac_cv_va_val_copy" = "xno"; then
4048 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
4050 AC_MSG_RESULT($ac_cv_va_val_copy)
4052 dnl Check for dll-challenged libc's.
4053 dnl This check is apparently only needed for Linux.
4056 dnl ===================================================================
4059 rm -rf conftest* _conftest
4061 cat >> conftest.C <<\EOF
4066 void __dump_link_map(void) {
4067 struct link_map *map = _dl_loaded;
4068 while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
4071 dlopen("./conftest1.so",RTLD_LAZY);
4072 dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
4073 dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
4074 dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
4078 /* _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).*/
4079 int main() { printf("./conftest1.so\n"); }
4083 $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
4085 cat >> conftest1.C <<\EOF
4087 void foo(void) {printf("foo in dll called\n");}
4089 ${CXX-g++} -fPIC -c -g conftest1.C
4090 ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
4091 ${CXX-g++} -g conftest.C -o conftest -ldl
4092 cp -f conftest1.so conftest _conftest
4094 if test `./conftest | grep conftest1.so | wc -l` -gt 1
4097 echo "*** Your libc has a bug that can result in loading the same dynamic"
4098 echo "*** library multiple times. This bug is known to be fixed in glibc-2.0.7-32"
4099 echo "*** or later. However, if you choose not to upgrade, the only effect"
4100 echo "*** will be excessive memory usage at runtime."
4104 rm -rf conftest* _conftest
4105 dnl ===================================================================
4109 dnl ===================================================================
4110 dnl ========================================================
4111 dnl By default, turn rtti and exceptions off on g++/egcs
4112 dnl ========================================================
4113 if test "$GNU_CXX"; then
4115 AC_MSG_CHECKING(for C++ exceptions flag)
4117 dnl They changed -f[no-]handle-exceptions to -f[no-]exceptions in g++ 2.8
4118 AC_CACHE_VAL(ac_cv_cxx_exceptions_flags,
4119 [echo "int main() { return 0; }" | cat > conftest.C
4121 ${CXX-g++} ${CXXFLAGS} -c -fno-handle-exceptions conftest.C > conftest.out 2>&1
4123 if egrep "warning.*renamed" conftest.out >/dev/null; then
4124 ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-exceptions
4126 ac_cv_cxx_exceptions_flags=${_COMPILER_PREFIX}-fno-handle-exceptions
4131 AC_MSG_RESULT($ac_cv_cxx_exceptions_flags)
4132 _MOZ_EXCEPTIONS_FLAGS_OFF=$ac_cv_cxx_exceptions_flags
4133 _MOZ_EXCEPTIONS_FLAGS_ON=`echo $ac_cv_cxx_exceptions_flags | sed 's|no-||'`
4136 dnl ========================================================
4137 dnl Put your C++ language/feature checks below
4138 dnl ========================================================
4143 if test "$GNU_CC"; then
4144 if test "$CPU_ARCH" = "arm" ; then
4145 AC_CACHE_CHECK(for ARM EABI,
4149 #if defined(__ARM_EABI__)
4152 #error Not ARM EABI.
4155 ac_cv_gcc_arm_eabi="yes",
4156 ac_cv_gcc_arm_eabi="no")])
4157 if test "$ac_cv_gcc_arm_eabi" = "yes"; then
4159 ARM_ABI_PREFIX=eabi-
4161 ARM_ABI_PREFIX=oabi-
4165 AC_CACHE_CHECK(for gcc 3.0 ABI,
4166 ac_cv_gcc_three_abi,
4169 #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
4175 ac_cv_gcc_three_abi="yes",
4176 ac_cv_gcc_three_abi="no")])
4177 if test "$ac_cv_gcc_three_abi" = "yes"; then
4178 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
4181 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc2}"
4184 AC_SUBST(HAVE_GCC3_ABI)
4187 AC_CACHE_CHECK(for C++ \"explicit\" keyword,
4189 [AC_TRY_COMPILE(class X {
4190 public: explicit X(int i) : i_(i) {}
4194 ac_cv_cpp_explicit=yes,
4195 ac_cv_cpp_explicit=no)])
4196 if test "$ac_cv_cpp_explicit" = yes ; then
4197 AC_DEFINE(HAVE_CPP_EXPLICIT)
4200 AC_CACHE_CHECK(for C++ \"typename\" keyword,
4202 [AC_TRY_COMPILE(class param {
4204 typedef unsigned long num_type;
4207 template <class T> class tplt {
4209 typedef typename T::num_type t_num_type;
4210 t_num_type foo(typename T::num_type num) {
4216 ac_cv_cpp_typename=yes,
4217 ac_cv_cpp_typename=no)])
4218 if test "$ac_cv_cpp_typename" = yes ; then
4219 AC_DEFINE(HAVE_CPP_TYPENAME)
4222 dnl Check for support of modern template specialization syntax
4223 dnl Test code and requirement from scc@netscape.com.
4224 dnl Autoconf cut-and-paste job by waterson@netscape.com
4225 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
4226 ac_cv_cpp_modern_specialize_template_syntax,
4227 [AC_TRY_COMPILE(template <class T> struct X { int a; };
4229 template <> struct X<Y> { double a; };,
4232 ac_cv_cpp_modern_specialize_template_syntax=yes,
4233 ac_cv_cpp_modern_specialize_template_syntax=no)])
4234 if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
4235 AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
4239 dnl Some compilers support only full specialization, and some don't.
4240 AC_CACHE_CHECK(whether partial template specialization works,
4241 ac_cv_cpp_partial_specialization,
4242 [AC_TRY_COMPILE(template <class T> class Foo {};
4243 template <class T> class Foo<T*> {};,
4245 ac_cv_cpp_partial_specialization=yes,
4246 ac_cv_cpp_partial_specialization=no)])
4247 if test "$ac_cv_cpp_partial_specialization" = yes ; then
4248 AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
4251 dnl Some compilers have limited support for operators with templates;
4252 dnl specifically, it is necessary to define derived operators when a base
4253 dnl class's operator declaration should suffice.
4254 AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
4255 ac_cv_need_derived_template_operators,
4256 [AC_TRY_COMPILE([template <class T> class Base { };
4258 Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
4259 template <class T> class Derived : public Base<T> { };],
4260 [Derived<char> a, b;
4261 Base<char> c = a + b;
4263 ac_cv_need_derived_template_operators=no,
4264 ac_cv_need_derived_template_operators=yes)])
4265 if test "$ac_cv_need_derived_template_operators" = yes ; then
4266 AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
4270 dnl Some compilers have trouble detecting that a template class
4271 dnl that derives from another template is actually an instance
4272 dnl of the base class. This test checks for that.
4273 AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
4274 ac_cv_need_cpp_template_cast_to_base,
4275 [AC_TRY_COMPILE([template <class T> class Base { };
4276 template <class T> class Derived : public Base<T> { };
4277 template <class T> int foo(const Base<T>&) { return 0; }],
4278 [Derived<char> bar; return foo(bar);],
4279 ac_cv_need_cpp_template_cast_to_base=no,
4280 ac_cv_need_cpp_template_cast_to_base=yes)])
4281 if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
4282 AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
4285 dnl Some compilers have trouble resolving the ambiguity between two
4286 dnl functions whose arguments differ only by cv-qualifications.
4287 AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
4288 ac_cv_can_resolve_const_ambiguity,
4290 template <class T> class ptrClass {
4294 template <class T> T* a(ptrClass<T> *arg) {
4299 const T* a(const ptrClass<T> *arg) {
4305 ac_cv_can_resolve_const_ambiguity=yes,
4306 ac_cv_can_resolve_const_ambiguity=no)])
4307 if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
4308 AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
4312 dnl We don't do exceptions on unix. The only reason this used to be here
4313 dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses
4314 dnl exceptions. But, we turn exceptions off by default and this test breaks.
4315 dnl So im commenting this out until someone writes some artificial
4316 dnl intelligence to detect not only if the compiler has exceptions, but if
4317 dnl they are enabled as well.
4319 dnl AC_CACHE_CHECK(for C++ \"exceptions\",
4320 dnl ac_cv_cpp_exceptions,
4321 dnl [AC_TRY_COMPILE(class X { public: X() {} };
4322 dnl static void F() { throw X(); },
4323 dnl try { F(); } catch(X & e) { },
4324 dnl ac_cv_cpp_exceptions=yes,
4325 dnl ac_cv_cpp_exceptions=no)])
4326 dnl if test $ac_cv_cpp_exceptions = yes ; then
4327 dnl AC_DEFINE(HAVE_CPP_EXCEPTIONS)
4330 dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
4331 dnl supports it well enough to allow us to use it to change access, but not
4332 dnl to resolve ambiguity. The next two tests determine how well the |using|
4333 dnl keyword is supported.
4335 dnl Check to see if we can change access with |using|. Test both a
4336 dnl legal and an illegal example.
4337 AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
4338 ac_cv_cpp_access_changing_using2,
4340 class A { protected: int foo() { return 0; } };
4341 class B : public A { public: using A::foo; };,
4342 B b; return b.foo();,
4344 class A { public: int foo() { return 1; } };
4345 class B : public A { private: using A::foo; };,
4346 B b; return b.foo();,
4347 ac_cv_cpp_access_changing_using2=no,
4348 ac_cv_cpp_access_changing_using2=yes)],
4349 ac_cv_cpp_access_changing_using2=no)])
4350 if test "$ac_cv_cpp_access_changing_using2" = yes ; then
4351 AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
4354 dnl Check to see if we can resolve ambiguity with |using|.
4355 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
4356 ac_cv_cpp_ambiguity_resolving_using,
4357 [AC_TRY_COMPILE(class X {
4358 public: int go(const X&) {return 3;}
4359 int jo(const X&) {return 3;}
4361 class Y : public X {
4362 public: int go(int) {return 2;}
4363 int jo(int) {return 2;}
4365 private: using X::go;
4368 ac_cv_cpp_ambiguity_resolving_using=yes,
4369 ac_cv_cpp_ambiguity_resolving_using=no)])
4370 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
4371 AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
4374 dnl Check to see if the |std| namespace is supported. If so, we'll want
4375 dnl to qualify any standard library calls with "std::" to ensure that
4376 dnl those functions can be resolved.
4377 AC_CACHE_CHECK(for \"std::\" namespace,
4378 ac_cv_cpp_namespace_std,
4379 [AC_TRY_COMPILE([#include <algorithm>],
4380 [return std::min(0, 1);],
4381 ac_cv_cpp_namespace_std=yes,
4382 ac_cv_cpp_namespace_std=no)])
4383 if test "$ac_cv_cpp_namespace_std" = yes ; then
4384 AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
4387 dnl Older compilers are overly ambitious with respect to using the standard
4388 dnl template library's |operator!=()| when |operator==()| is defined. In
4389 dnl which case, defining |operator!=()| in addition to |operator==()| causes
4390 dnl ambiguity at compile-time. This test checks for that case.
4391 AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
4392 ac_cv_cpp_unambiguous_std_notequal,
4393 [AC_TRY_COMPILE([#include <algorithm>
4395 int operator==(const T1&, const T1&) { return 0; }
4396 int operator!=(const T1&, const T1&) { return 0; }],
4397 [T1 a,b; return a != b;],
4398 ac_cv_cpp_unambiguous_std_notequal=unambiguous,
4399 ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
4400 if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
4401 AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
4405 AC_CACHE_CHECK(for C++ reinterpret_cast,
4406 ac_cv_cpp_reinterpret_cast,
4407 [AC_TRY_COMPILE(struct X { int i; };
4408 struct Y { int i; };,
4409 X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
4410 ac_cv_cpp_reinterpret_cast=yes,
4411 ac_cv_cpp_reinterpret_cast=no)])
4412 if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
4413 AC_DEFINE(HAVE_CPP_NEW_CASTS)
4416 dnl See if a dynamic_cast to void* gives the most derived object.
4417 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
4418 ac_cv_cpp_dynamic_cast_void_ptr,
4419 [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
4420 class Y { int j; public: virtual ~Y() { } };
4421 class Z : public X, public Y { int k; };
4427 return !((((void*)&mdo != (void*)subx) &&
4428 ((void*)&mdo == dynamic_cast<void*>(subx))) ||
4429 (((void*)&mdo != (void*)suby) &&
4430 ((void*)&mdo == dynamic_cast<void*>(suby))));
4432 ac_cv_cpp_dynamic_cast_void_ptr=yes,
4433 ac_cv_cpp_dynamic_cast_void_ptr=no,
4434 ac_cv_cpp_dynamic_cast_void_ptr=no)])
4435 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
4436 AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
4440 dnl note that this one is reversed - if the test fails, then
4441 dnl we require implementations of unused virtual methods. Which
4442 dnl really blows because it means we'll have useless vtable
4444 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
4445 ac_cv_cpp_unused_required,
4446 [AC_TRY_LINK(class X {private: virtual void never_called();};,
4448 ac_cv_cpp_unused_required=no,
4449 ac_cv_cpp_unused_required=yes)])
4450 if test "$ac_cv_cpp_unused_required" = yes ; then
4451 AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
4455 dnl Some compilers have trouble comparing a constant reference to a templatized
4456 dnl class to zero, and require an explicit operator==() to be defined that takes
4457 dnl an int. This test separates the strong from the weak.
4459 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
4460 ac_cv_trouble_comparing_to_zero,
4461 [AC_TRY_COMPILE([#include <algorithm>
4462 template <class T> class Foo {};
4464 template <class T> int operator==(const T2*, const T&) { return 0; }
4465 template <class T> int operator!=(const T2*, const T&) { return 0; }],
4466 [Foo<int> f; return (0 != f);],
4467 ac_cv_trouble_comparing_to_zero=no,
4468 ac_cv_trouble_comparing_to_zero=yes)])
4469 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
4470 AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
4473 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
4474 _SAVE_LDFLAGS=$LDFLAGS
4475 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS"
4476 AC_CACHE_CHECK(for __thread keyword for TLS variables,
4477 ac_cv_thread_keyword,
4478 [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
4479 [return tlsIsMainThread;],
4480 ac_cv_thread_keyword=yes,
4481 ac_cv_thread_keyword=no)])
4482 LDFLAGS=$_SAVE_LDFLAGS
4483 if test "$ac_cv_thread_keyword" = yes; then
4484 # mips builds fail with TLS variables because of a binutils bug.
4494 AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
4499 dnl Check for the existence of various allocation headers/functions
4502 AC_CHECK_HEADER(malloc.h, [MALLOC_H=malloc.h])
4503 if test "$MALLOC_H" = ""; then
4504 AC_CHECK_HEADER(malloc/malloc.h, [MALLOC_H=malloc/malloc.h])
4505 if test "$MALLOC_H" = ""; then
4506 AC_CHECK_HEADER(sys/malloc.h, [MALLOC_H=sys/malloc.h])
4509 if test "$MALLOC_H" != ""; then
4510 AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
4513 MOZ_ALLOCATING_FUNCS="strndup posix_memalign memalign valloc"
4514 AC_CHECK_FUNCS(strndup posix_memalign memalign valloc)
4516 dnl See if compiler supports some gcc-style attributes
4518 AC_CACHE_CHECK(for __attribute__((always_inline)),
4519 ac_cv_attribute_always_inline,
4521 [inline void f(void) __attribute__((always_inline));],
4522 ac_cv_attribute_always_inline=yes,
4523 ac_cv_attribute_always_inline=no)])
4525 AC_CACHE_CHECK(for __attribute__((malloc)),
4526 ac_cv_attribute_malloc,
4528 [void* f(int) __attribute__((malloc));],
4529 ac_cv_attribute_malloc=yes,
4530 ac_cv_attribute_malloc=no)])
4532 AC_CACHE_CHECK(for __attribute__((warn_unused_result)),
4533 ac_cv_attribute_warn_unused,
4535 [int f(void) __attribute__((warn_unused_result));],
4536 ac_cv_attribute_warn_unused=yes,
4537 ac_cv_attribute_warn_unused=no)])
4539 AC_CACHE_CHECK(for __attribute__((noreturn)),
4540 ac_cv_attribute_noreturn,
4542 [void f(void) __attribute__((noreturn));],
4543 ac_cv_attribute_noreturn=yes,
4544 ac_cv_attribute_noreturn=no)])
4546 dnl End of C++ language/feature checks
4549 dnl ========================================================
4550 dnl = Internationalization checks
4551 dnl ========================================================
4553 dnl Internationalization and Locale support is different
4554 dnl on various UNIX platforms. Checks for specific i18n
4555 dnl features go here.
4557 dnl check for LC_MESSAGES
4558 AC_CACHE_CHECK(for LC_MESSAGES,
4559 ac_cv_i18n_lc_messages,
4560 [AC_TRY_COMPILE([#include <locale.h>],
4561 [int category = LC_MESSAGES;],
4562 ac_cv_i18n_lc_messages=yes,
4563 ac_cv_i18n_lc_messages=no)])
4564 if test "$ac_cv_i18n_lc_messages" = yes; then
4565 AC_DEFINE(HAVE_I18N_LC_MESSAGES)
4568 AC_HAVE_FUNCS(localeconv)
4570 fi # SKIP_COMPILER_CHECKS
4573 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
4574 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
4577 dnl Mozilla specific options
4578 dnl ========================================================
4579 dnl The macros used for command line options
4580 dnl are defined in build/autoconf/altoptions.m4.
4582 dnl If the compiler supports these attributes, define them as
4583 dnl convenience macros.
4584 if test "$ac_cv_attribute_always_inline" = yes ; then
4585 AC_DEFINE(NS_ALWAYS_INLINE, [__attribute__((always_inline))])
4587 AC_DEFINE(NS_ALWAYS_INLINE,)
4590 if test "$ac_cv_attribute_malloc" = yes ; then
4591 AC_DEFINE(NS_ATTR_MALLOC, [__attribute__((malloc))])
4593 AC_DEFINE(NS_ATTR_MALLOC,)
4596 if test "$ac_cv_attribute_warn_unused" = yes ; then
4597 AC_DEFINE(NS_WARN_UNUSED_RESULT, [__attribute__((warn_unused_result))])
4599 AC_DEFINE(NS_WARN_UNUSED_RESULT,)
4602 if test "$ac_cv_attribute_noreturn" = yes ; then
4603 AC_DEFINE(NS_NORETURN, [__attribute__((noreturn))])
4605 AC_DEFINE(NS_NORETURN,)
4608 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
4609 dnl features that Windows actually does support.
4611 if test -n "$SKIP_COMPILER_CHECKS"; then
4612 dnl Windows has malloc.h
4613 AC_DEFINE(MALLOC_H, [<malloc.h>])
4614 AC_DEFINE(HAVE_FORCEINLINE)
4615 AC_DEFINE(HAVE_LOCALECONV)
4616 fi # SKIP_COMPILER_CHECKS
4618 dnl ========================================================
4620 dnl = Check for external package dependencies
4622 dnl ========================================================
4623 MOZ_ARG_HEADER(External Packages)
4627 MOZ_ARG_WITH_STRING(libxul-sdk,
4628 [ --with-libxul-sdk=PFX Use the libXUL SDK at <PFX>],
4629 LIBXUL_SDK_DIR=$withval)
4631 if test "$LIBXUL_SDK_DIR" = "yes"; then
4632 AC_MSG_ERROR([--with-libxul-sdk must specify a path])
4633 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
4634 LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
4636 if test ! -f "$LIBXUL_SDK/include/xpcom-config.h"; then
4637 AC_MSG_ERROR([$LIBXUL_SDK/include/xpcom-config.h doesn't exist])
4642 AC_SUBST(LIBXUL_SDK)
4644 if test -n "$LIBXUL_SDK"; then
4645 LIBXUL_DIST="$LIBXUL_SDK"
4647 LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
4649 AC_SUBST(LIBXUL_DIST)
4653 MOZ_ARG_WITH_BOOL(system-libxul,
4654 [ --with-system-libxul Use system installed libxul SDK],
4657 if test -n "$SYSTEM_LIBXUL" && test -z "$MOZ_ENABLE_LIBXUL"; then
4658 AC_MSG_ERROR([--with-system-libxul needs --with-libxul-sdk])
4661 dnl ========================================================
4662 dnl = If NSPR was not detected in the system,
4663 dnl = use the one in the source tree (mozilla/nsprpub)
4664 dnl ========================================================
4665 MOZ_ARG_WITH_BOOL(system-nspr,
4666 [ --with-system-nspr Use system installed NSPR],
4667 _USE_SYSTEM_NSPR=1 )
4669 if test -n "$_USE_SYSTEM_NSPR"; then
4670 AM_PATH_NSPR(4.8.0, [MOZ_NATIVE_NSPR=1], [MOZ_NATIVE_NSPR=])
4673 if test -n "$MOZ_NATIVE_NSPR"; then
4674 _SAVE_CFLAGS=$CFLAGS
4675 CFLAGS="$CFLAGS $NSPR_CFLAGS"
4676 AC_TRY_COMPILE([#include "prtypes.h"],
4677 [#ifndef PR_STATIC_ASSERT
4678 #error PR_STATIC_ASSERT not defined or requires including prlog.h
4680 [MOZ_NATIVE_NSPR=1],
4681 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT or including prtypes.h does not provide it]))
4682 CFLAGS=$_SAVE_CFLAGS
4684 if test "$OS_ARCH" = "WINCE"; then
4685 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4686 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4687 elif test "$OS_ARCH" = "WINNT"; then
4688 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4689 if test -n "$GNU_CC"; then
4690 NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
4692 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4695 NSPR_CFLAGS='`$(LIBXUL_DIST)/bin/nspr-config --prefix='${LIBXUL_DIST}' --includedir='${LIBXUL_DIST}'/include/nspr --cflags`'
4696 NSPR_LIBS='`$(LIBXUL_DIST)/bin/nspr-config --prefix='${LIBXUL_DIST}' --libdir='${LIBXUL_DIST}'/lib --libs`'
4700 dnl system libevent Support
4701 dnl ========================================================
4702 MOZ_ARG_WITH_STRING(system-libevent,
4703 [ --with-system-libevent=[PFX]
4704 Use system libevent [installed at prefix PFX]],
4705 LIBEVENT_DIR=$withval)
4707 _SAVE_CFLAGS=$CFLAGS
4708 _SAVE_LDFLAGS=$LDFLAGS
4710 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
4711 MOZ_NATIVE_LIBEVENT=
4713 if test "${LIBEVENT_DIR}" = "yes"; then
4716 CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
4717 LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
4718 AC_CHECK_HEADER(event.h,
4719 [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
4720 AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
4722 AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
4723 AC_CHECK_LIB(event, event_init,
4724 [MOZ_NATIVE_LIBEVENT=1
4725 MOZ_LIBEVENT_INCLUDES="${LIBEVENT_DIR}/include"
4726 MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
4727 [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_INCLUDES= MOZ_LIBEVENT_LIBS=])
4729 CFLAGS=$_SAVE_CFLAGS
4730 LDFLAGS=$_SAVE_LDFLAGS
4733 AC_SUBST(MOZ_NATIVE_LIBEVENT)
4734 AC_SUBST(MOZ_LIBEVENT_INCLUDES)
4735 AC_SUBST(MOZ_LIBEVENT_LIBS)
4737 dnl ========================================================
4738 dnl = If NSS was not detected in the system,
4739 dnl = use the one in the source tree (mozilla/security/nss)
4740 dnl ========================================================
4742 MOZ_ARG_WITH_BOOL(system-nss,
4743 [ --with-system-nss Use system installed NSS],
4746 if test -n "$_USE_SYSTEM_NSS"; then
4747 AM_PATH_NSS(3.12.6, [MOZ_NATIVE_NSS=1], [MOZ_NATIVE_NSS=])
4750 if test -n "$MOZ_NATIVE_NSS"; then
4751 NSS_LIBS="$NSS_LIBS -lcrmf"
4753 NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4755 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4756 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4757 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4758 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4759 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX)"
4761 if test -z "$GNU_CC" && test "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "WINCE" -o "$OS_ARCH" = "OS2"; then
4763 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4764 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(LIB_SUFFIX) \
4765 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(LIB_SUFFIX) \
4766 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(LIB_SUFFIX) \
4767 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(LIB_SUFFIX)"
4769 NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION"
4773 if test -z "$SKIP_LIBRARY_CHECKS"; then
4774 dnl system JPEG support
4775 dnl ========================================================
4776 MOZ_ARG_WITH_STRING(system-jpeg,
4777 [ --with-system-jpeg[=PFX]
4778 Use system libjpeg [installed at prefix PFX]],
4781 _SAVE_CFLAGS=$CFLAGS
4782 _SAVE_LDFLAGS=$LDFLAGS
4784 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4785 CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4786 LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4788 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4791 AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS)
4794 if test "$SYSTEM_JPEG" = 1; then
4795 LIBS="$JPEG_LIBS $LIBS"
4796 AC_TRY_COMPILE([ #include <stdio.h>
4797 #include <sys/types.h>
4798 #include <jpeglib.h> ],
4799 [ #if JPEG_LIB_VERSION < $MOZJPEG
4800 #error "Insufficient JPEG library version ($MOZJPEG required)."
4803 [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=])
4805 CFLAGS=$_SAVE_CFLAGS
4806 LDFLAGS=$_SAVE_LDFLAGS
4809 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$SYSTEM_JPEG" = 1; then
4810 JPEG_CFLAGS="-I${JPEG_DIR}/include"
4811 JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
4814 dnl system ZLIB support
4815 dnl ========================================================
4816 MOZ_ARG_WITH_STRING(system-zlib,
4817 [ --with-system-zlib[=PFX]
4818 Use system libz [installed at prefix PFX]],
4821 _SAVE_CFLAGS=$CFLAGS
4822 _SAVE_LDFLAGS=$LDFLAGS
4824 if test -n "${ZLIB_DIR}" -a "${ZLIB_DIR}" != "yes"; then
4825 CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
4826 LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
4828 if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
4831 AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"],
4832 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
4834 if test "$SYSTEM_ZLIB" = 1; then
4835 LIBS="$ZLIB_LIBS $LIBS"
4836 AC_TRY_COMPILE([ #include <stdio.h>
4838 #include <zlib.h> ],
4839 [ #if ZLIB_VERNUM < $MOZZLIB
4840 #error "Insufficient zlib version ($MOZZLIB required)."
4843 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=])
4845 CFLAGS=$_SAVE_CFLAGS
4846 LDFLAGS=$_SAVE_LDFLAGS
4849 if test "${ZLIB_DIR}" -a -d "${ZLIB_DIR}" -a "$SYSTEM_ZLIB" = 1; then
4850 ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
4851 ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
4854 dnl system BZIP2 Support
4855 dnl ========================================================
4856 MOZ_ARG_WITH_STRING(system-bz2,
4857 [ --with-system-bz2[=PFX]
4858 Use system libbz2 [installed at prefix PFX]],
4861 _SAVE_CFLAGS=$CFLAGS
4862 _SAVE_LDFLAGS=$LDFLAGS
4864 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4865 CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4866 LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4868 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4871 AC_CHECK_LIB(bz2, BZ2_bzread, [SYSTEM_BZ2=1 BZ2_LIBS="-lbz2"],
4872 [SYSTEM_BZ2= BZ2_CFLAGS= BZ2_LIBS=])
4874 CFLAGS=$_SAVE_CFLAGS
4875 LDFLAGS=$_SAVE_LDFLAGS
4878 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$SYSTEM_BZ2" = 1; then
4879 BZ2_CFLAGS="-I${BZ2_DIR}/include"
4880 BZ2_LIBS="-L${BZ2_DIR}/lib ${BZ2_LIBS}"
4883 dnl system PNG Support
4884 dnl ========================================================
4885 MOZ_ARG_WITH_STRING(system-png,
4886 [ --with-system-png[=PFX]
4887 Use system libpng [installed at prefix PFX]],
4890 _SAVE_CFLAGS=$CFLAGS
4891 _SAVE_LDFLAGS=$LDFLAGS
4893 CFLAGS="$ZLIB_CFLAGS $CFLAGS"
4894 LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
4895 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4896 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4897 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4899 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4902 _SAVE_PNG_LIBS=$PNG_LIBS
4903 AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"],
4904 AC_MSG_ERROR([--with-system-png requested but no working libpng found]),
4906 AC_CHECK_LIB(png, png_get_acTL, ,
4907 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]),
4910 if test "$SYSTEM_PNG" = 1; then
4911 LIBS="$PNG_LIBS $LIBS"
4912 AC_TRY_COMPILE([ #include <stdio.h>
4913 #include <sys/types.h>
4915 [ #if PNG_LIBPNG_VER < $MOZPNG
4916 #error "Insufficient libpng version ($MOZPNG required)."
4918 #ifndef PNG_UINT_31_MAX
4919 #error "Insufficient libpng version."
4922 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4924 CFLAGS=$_SAVE_CFLAGS
4925 LDFLAGS=$_SAVE_LDFLAGS
4928 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
4929 PNG_CFLAGS="-I${PNG_DIR}/include"
4930 PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
4933 fi # SKIP_LIBRARY_CHECKS
4935 dnl system HunSpell Support
4936 dnl ========================================================
4937 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4938 [ --enable-system-hunspell Use system hunspell (located with pkgconfig)],
4941 if test -n "$SYSTEM_HUNSPELL"; then
4942 PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4945 AC_SUBST(SYSTEM_HUNSPELL)
4947 dnl ========================================================
4948 dnl Java SDK support
4949 dnl ========================================================
4951 MOZ_ARG_WITH_STRING(java-include-path,
4952 [ --with-java-include-path=dir Location of Java SDK headers],
4953 JAVA_INCLUDE_PATH=$withval)
4956 MOZ_ARG_WITH_STRING(java-bin-path,
4957 [ --with-java-bin-path=dir Location of Java binaries (java, javac, jar)],
4958 JAVA_BIN_PATH=$withval)
4960 dnl ========================================================
4961 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4962 dnl their usage and use them in spidermonkey.
4963 dnl ========================================================
4964 MOZ_ARG_WITH_BOOL(arm-kuser,
4965 [ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4968 if test -n "$USE_ARM_KUSER"; then
4969 AC_DEFINE(USE_ARM_KUSER)
4972 dnl ========================================================
4976 dnl ========================================================
4978 MOZ_ARG_HEADER(Application)
4982 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4983 MOZ_BRANDING_DIRECTORY=
4984 MOZ_OFFICIAL_BRANDING=
4986 MOZ_IMG_DECODERS_DEFAULT="png gif jpeg bmp icon"
4987 MOZ_IMG_ENCODERS_DEFAULT="png jpeg"
4995 MOZ_AUTH_EXTENSION=1
4996 MOZ_NO_ACTIVEX_SUPPORT=1
4997 MOZ_NO_INSPECTOR_APIS=
5006 MOZ_PLAINTEXT_EDITOR_ONLY=
5008 MOZ_PREF_EXTENSIONS=1
5009 MOZ_PROFILELOCKING=1
5022 MOZ_TOOLKIT_SEARCH=1
5024 MOZ_UNIVERSALCHARDET=1
5026 MOZ_USE_NATIVE_UCONV=
5028 MOZ_XSLT_STANDALONE=
5036 NECKO_PROTOCOLS_DEFAULT="about data file ftp gopher http res viewsource"
5038 XPC_IDISPATCH_SUPPORT=
5041 case "$target_os" in
5042 darwin*|*wince*|*winmo*)
5050 case "$target_os" in
5051 msvc*|mks*|cygwin*|mingw*)
5053 if test -z "$GNU_CC"; then
5054 if test "$MOZ_WINSDK_TARGETVER" -lt "06000000"; then
5057 XPC_IDISPATCH_SUPPORT=1
5058 MOZ_NO_ACTIVEX_SUPPORT=
5060 if test -n "$NS_ENABLE_TSF"; then
5061 AC_DEFINE(NS_ENABLE_TSF)
5066 MOZ_ARG_ENABLE_STRING(application,
5067 [ --enable-application=APP
5071 content/xslt (Standalone Transformiix XSLT)
5072 netwerk (Standalone Necko)
5073 tools/update-packaging (AUS-related packaging tools)
5074 standalone (use this for standalone
5075 xpcom/xpconnect or to manually drive a build)],
5076 [ MOZ_BUILD_APP=$enableval ] )
5078 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
5079 [ --with-xulrunner-stub-name=appname Create the xulrunner stub with the given name],
5080 XULRUNNER_STUB_NAME=$withval)
5082 if test -z "$XULRUNNER_STUB_NAME"; then
5083 case "$target_os" in
5085 XULRUNNER_STUB_NAME=xulrunner
5088 XULRUNNER_STUB_NAME=xulrunner-stub
5091 AC_SUBST(XULRUNNER_STUB_NAME)
5093 if test -z "$MOZ_BUILD_APP"; then
5094 AC_MSG_ERROR([--enable-application=APP was not specified and is required.])
5096 # We have a valid application only if it has a build.mk file in its top
5098 if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
5099 AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
5103 # Allow the application to influence configure with a confvars.sh script.
5105 AC_MSG_CHECKING([if app-specific confvars.sh exists])
5106 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
5107 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
5108 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
5113 # Now is a good time to test for logic errors, define mismatches, etc.
5114 case "$MOZ_BUILD_APP" in
5116 if test "$LIBXUL_SDK"; then
5117 AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
5122 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
5123 # that haven't made a confvars.sh yet. Don't add new stuff here, use
5125 case "$MOZ_BUILD_APP" in
5127 AC_DEFINE(MOZ_PHOENIX)
5131 AC_DEFINE(MOZ_XULRUNNER)
5139 MOZ_APP_NAME=mozilla
5140 MOZ_APP_DISPLAYNAME=Mozilla
5141 MOZ_APP_VERSION=$MOZILLA_VERSION
5146 AC_SUBST(MOZ_BUILD_APP)
5147 AC_SUBST(MOZ_PHOENIX)
5148 AC_SUBST(MOZ_XULRUNNER)
5150 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
5152 dnl ========================================================
5154 dnl = Toolkit Options
5156 dnl ========================================================
5157 MOZ_ARG_HEADER(Toolkit Options)
5159 dnl ========================================================
5160 dnl = Select the default toolkit
5161 dnl ========================================================
5162 MOZ_ARG_ENABLE_STRING(default-toolkit,
5163 [ --enable-default-toolkit=TK
5164 Select default toolkit
5165 Platform specific defaults:
5167 Mac OS X - cairo-cocoa
5168 Neutrino/QNX - photon
5170 Win32/WinCE - cairo-windows
5171 Gtk2 with DirectFB - cairo-gtk2-dfb
5174 [ _DEFAULT_TOOLKIT=$enableval ],
5175 [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
5177 if test "$_DEFAULT_TOOLKIT" = "photon" \
5178 -o "$_DEFAULT_TOOLKIT" = "cairo-windows" \
5179 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
5180 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-dfb" \
5181 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
5182 -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
5183 -o "$_DEFAULT_TOOLKIT" = "cairo-beos" \
5184 -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
5185 -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa" \
5186 -o "$_DEFAULT_TOOLKIT" = "cairo-android"
5188 dnl nglayout only supports building with one toolkit,
5189 dnl so ignore everything after the first comma (",").
5190 MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
5192 AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
5195 dnl ========================================================
5196 dnl = Enable the toolkit as needed =
5197 dnl ========================================================
5199 case "$MOZ_WIDGET_TOOLKIT" in
5202 AC_DEFINE(MOZ_WIDGET_PHOTON)
5206 MOZ_WIDGET_TOOLKIT=windows
5215 cairo-gtk2|cairo-gtk2-x11)
5216 MOZ_WIDGET_TOOLKIT=gtk2
5218 MOZ_ENABLE_XREMOTE=1
5226 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
5227 TK_LIBS='$(MOZ_GTK2_LIBS)'
5228 AC_DEFINE(MOZ_WIDGET_GTK2)
5232 MOZ_WIDGET_TOOLKIT=gtk2
5239 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
5240 TK_LIBS='$(MOZ_GTK2_LIBS)'
5241 AC_DEFINE(MOZ_WIDGET_GTK2)
5242 if test "$no_x" != "yes"; then
5243 AC_MSG_WARN([Disabling X when DirectFB is specified.])
5249 MOZ_WIDGET_TOOLKIT=qt
5251 MOZ_ENABLE_XREMOTE=1
5261 TK_CFLAGS='$(MOZ_QT_CFLAGS)'
5262 TK_LIBS='$(MOZ_QT_LIBS)'
5263 AC_DEFINE(MOZ_WIDGET_QT)
5267 MOZ_WIDGET_TOOLKIT=beos
5269 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
5270 TK_LIBS='$(MOZ_CAIRO_LIBS)'
5274 MOZ_WIDGET_TOOLKIT=os2
5276 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
5277 TK_LIBS='$(MOZ_CAIRO_LIBS)'
5281 MOZ_WIDGET_TOOLKIT=cocoa
5282 AC_DEFINE(MOZ_WIDGET_COCOA)
5283 MOZ_USER_DIR="Mozilla"
5284 AC_DEFINE(XP_MACOSX)
5285 TK_LIBS='-framework QuartzCore -framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook -framework OpenGL'
5286 TK_CFLAGS="-DNO_X11"
5287 LDFLAGS="$LDFLAGS -framework Cocoa -lobjc"
5288 CFLAGS="$CFLAGS $TK_CFLAGS"
5289 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
5290 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL'
5291 MOZ_FS_LAYOUT=bundle
5296 AC_DEFINE(MOZ_WIDGET_ANDROID)
5297 MOZ_WIDGET_TOOLKIT=android
5303 if test "$MOZ_ENABLE_XREMOTE"; then
5304 AC_DEFINE(MOZ_ENABLE_XREMOTE)
5307 if test "$COMPILE_ENVIRONMENT"; then
5308 if test "$MOZ_ENABLE_GTK2"; then
5309 if test "$MOZ_X11"; then
5310 GDK_PACKAGES=gdk-x11-2.0
5311 elif test "$MOZ_DFB"; then
5312 PKG_CHECK_MODULES(MOZ_DFB, directfb >= 1.1.0)
5313 GDK_PACKAGES=directfb
5316 PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
5319 fi # COMPILE_ENVIRONMENT
5321 AC_SUBST(MOZ_FS_LAYOUT)
5323 dnl ========================================================
5324 dnl = startup-notification support module
5325 dnl ========================================================
5327 if test "$MOZ_ENABLE_GTK2"
5329 MOZ_ENABLE_STARTUP_NOTIFICATION=
5331 MOZ_ARG_ENABLE_BOOL(startup-notification,
5332 [ --enable-startup-notification Enable startup-notification support (default: disabled) ],
5333 MOZ_ENABLE_STARTUP_NOTIFICATION=force,
5334 MOZ_ENABLE_STARTUP_NOTIFICATION=)
5335 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
5337 PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
5338 libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
5339 [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
5340 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
5342 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
5344 MOZ_ENABLE_STARTUP_NOTIFICATION=
5348 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
5349 AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
5352 TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
5354 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
5355 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
5356 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
5358 dnl ========================================================
5360 dnl ========================================================
5361 if test "$MOZ_ENABLE_QT"
5363 MOZ_ARG_WITH_STRING(qtdir,
5364 [ --with-qtdir=\$dir Specify Qt directory ],
5367 if test -z "$QTDIR"; then
5368 PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtCore QtOpenGL)
5369 AC_CHECK_PROGS(HOST_MOC, moc, "")
5371 MOZ_QT_LIBS="-L$QTDIR/lib/ -lQtGui -lQtNetwork -lQtCore -lQtDBus -lQtXml -lQtOpenGL"
5373 MOZ_QT_CFLAGS="-DQT_SHARED"
5374 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include"
5375 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/Qt"
5376 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui"
5377 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtCore"
5378 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtNetwork"
5379 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtDBus"
5380 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtXml"
5381 HOST_MOC="$QTDIR/bin/moc"
5383 if test -z "$HOST_MOC"; then
5384 AC_MSG_ERROR([No acceptable moc preprocessor found. Qt SDK is not installed or --with-qt is
5390 AC_SUBST(GTK_CONFIG)
5394 AC_SUBST(MOZ_ENABLE_GTK2)
5395 AC_SUBST(MOZ_ENABLE_PHOTON)
5396 AC_SUBST(MOZ_ENABLE_QT)
5397 AC_SUBST(MOZ_ENABLE_XREMOTE)
5398 AC_SUBST(MOZ_GTK2_CFLAGS)
5399 AC_SUBST(MOZ_GTK2_LIBS)
5400 AC_SUBST(MOZ_QT_CFLAGS)
5401 AC_SUBST(MOZ_QT_LIBS)
5408 dnl ========================================================
5410 dnl = Components & Features
5412 dnl ========================================================
5413 MOZ_ARG_HEADER(Components and Features)
5415 dnl ========================================================
5417 dnl ========================================================
5418 MOZ_ARG_ENABLE_STRING(ui-locale,
5419 [ --enable-ui-locale=ab-CD
5420 Select the user interface locale (default: en-US)],
5421 MOZ_UI_LOCALE=$enableval )
5422 AC_SUBST(MOZ_UI_LOCALE)
5424 dnl ========================================================
5425 dnl = Trademarked Branding
5426 dnl ========================================================
5427 MOZ_ARG_ENABLE_BOOL(official-branding,
5428 [ --enable-official-branding Enable Official mozilla.org Branding
5429 Do not distribute builds with
5430 --enable-official-branding unless you have
5431 permission to use trademarks per
5432 http://www.mozilla.org/foundation/trademarks/ .],
5434 if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
5435 AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
5437 MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
5438 MOZ_OFFICIAL_BRANDING=1
5440 ], MOZ_OFFICIAL_BRANDING=)
5442 AC_SUBST(MOZ_OFFICIAL_BRANDING)
5443 if test -n "$MOZ_OFFICIAL_BRANDING"; then
5444 AC_DEFINE(MOZ_OFFICIAL_BRANDING)
5447 MOZ_ARG_WITH_STRING(branding,
5448 [ --with-branding=dir Use branding from the specified directory.],
5449 MOZ_BRANDING_DIRECTORY=$withval)
5451 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
5452 if test -z "$REAL_BRANDING_DIRECTORY"; then
5453 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
5456 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
5457 . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
5460 AC_SUBST(MOZ_BRANDING_DIRECTORY)
5462 dnl ========================================================
5463 dnl = Distribution ID
5464 dnl ========================================================
5465 MOZ_ARG_WITH_STRING(distribution-id,
5466 [ --with-distribution-id=ID Set distribution-specific id (default=org.mozilla)],
5467 [ val=`echo $withval`
5468 MOZ_DISTRIBUTION_ID="$val"])
5470 if test -z "$MOZ_DISTRIBUTION_ID"; then
5471 MOZ_DISTRIBUTION_ID="org.mozilla"
5474 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
5475 AC_SUBST(MOZ_DISTRIBUTION_ID)
5478 dnl ========================================================
5479 dnl complex text support off by default
5480 dnl ========================================================
5481 MOZ_ARG_DISABLE_BOOL(pango,
5482 [ --disable-pango Disable usage of Pango ],
5486 dnl ========================================================
5488 dnl ========================================================
5489 if test "$MOZ_ENABLE_GTK2"
5493 PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
5495 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION)
5496 AC_SUBST(MOZ_PANGO_CFLAGS)
5497 AC_SUBST(MOZ_PANGO_LIBS)
5498 if test "$MOZ_PANGO"
5500 AC_DEFINE(MOZ_PANGO)
5502 PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0 fontconfig)
5503 AC_SUBST(FT2_CFLAGS)
5508 if test "$MOZ_ENABLE_QT"
5510 if test "$MOZ_PANGO"
5512 PKG_CHECK_MODULES(MOZ_PANGO, [pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION],
5514 AC_SUBST(MOZ_PANGO_CFLAGS)
5515 AC_SUBST(MOZ_PANGO_LIBS)
5516 AC_DEFINE(MOZ_PANGO)
5519 echo "Pango library not found, will use FT2 font engine"
5526 dnl ========================================================
5527 dnl = GnomeVFS, GIO and GConf support module
5528 dnl ========================================================
5532 dnl build the gnomevfs extension by default only when the
5533 dnl GTK2 toolkit is in use.
5534 if test "$MOZ_ENABLE_GTK2"
5536 MOZ_ENABLE_GNOMEVFS=1
5540 dnl ========================================================
5541 dnl = GnomeVFS support module
5542 dnl ========================================================
5543 MOZ_ARG_DISABLE_BOOL(gnomevfs,
5544 [ --disable-gnomevfs Disable GnomeVFS support ],
5545 MOZ_ENABLE_GNOMEVFS=,
5546 MOZ_ENABLE_GNOMEVFS=force)
5548 if test "$MOZ_ENABLE_GNOMEVFS"
5550 PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
5551 MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
5552 MOZ_ENABLE_GNOMEVFS=1
5553 AC_DEFINE(MOZ_ENABLE_GNOMEVFS)
5555 if test "$MOZ_ENABLE_GNOMEVFS" = "force"
5557 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
5559 MOZ_ENABLE_GNOMEVFS=
5562 if test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
5563 PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
5564 MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
5569 AC_SUBST(MOZ_ENABLE_GNOMEVFS)
5570 AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
5571 AC_SUBST(MOZ_GNOMEVFS_LIBS)
5573 dnl ========================================================
5574 dnl = GIO support module
5575 dnl ========================================================
5576 MOZ_ARG_ENABLE_BOOL(gio,
5577 [ --enable-gio Enable GIO support (default: disabled)],
5578 MOZ_ENABLE_GIO=force,
5581 if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK2"
5583 PKG_CHECK_MODULES(MOZ_GIO, gio-2.0 >= $GIO_VERSION,[
5584 MOZ_GIO_LIBS=`echo $MOZ_GIO_LIBS | sed 's/-llinc\>//'`
5586 AC_DEFINE(MOZ_ENABLE_GIO)
5588 if test "$MOZ_ENABLE_GIO" = "force"
5590 AC_MSG_ERROR([* * * Could not find gio-2.0 >= $GIO_VERSION])
5596 AC_SUBST(MOZ_ENABLE_GIO)
5597 AC_SUBST(MOZ_GIO_CFLAGS)
5598 AC_SUBST(MOZ_GIO_LIBS)
5600 dnl ========================================================
5601 dnl = GConf support module
5602 dnl ========================================================
5603 if test "$MOZ_ENABLE_GCONF"
5605 PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION gobject-2.0 ,[
5606 MOZ_GCONF_LIBS=`echo $MOZ_GCONF_LIBS | sed 's/-llinc\>//'`
5609 if test "$MOZ_ENABLE_GCONF" = "force"
5611 AC_MSG_ERROR([* * * Could not find gconf-2.0 ])
5617 if test "$MOZ_ENABLE_GCONF"; then
5618 AC_DEFINE(MOZ_ENABLE_GCONF)
5621 AC_SUBST(MOZ_ENABLE_GCONF)
5622 AC_SUBST(MOZ_GCONF_CFLAGS)
5623 AC_SUBST(MOZ_GCONF_LIBS)
5626 dnl ========================================================
5627 dnl = libnotify support
5628 dnl ========================================================
5630 if test "$MOZ_ENABLE_GTK2"
5632 MOZ_ENABLE_LIBNOTIFY=1
5634 MOZ_ARG_DISABLE_BOOL(libnotify,
5635 [ --disable-libnotify Disable libnotify support ],
5636 MOZ_ENABLE_LIBNOTIFY=,
5637 MOZ_ENABLE_LIBNOTIFY=1)
5639 if test "$MOZ_ENABLE_LIBNOTIFY"
5641 AC_DEFINE(MOZ_ENABLE_LIBNOTIFY)
5645 if test -z "$SKIP_LIBRARY_CHECKS"
5647 if test "$MOZ_ENABLE_GTK2"
5649 if test "$MOZ_ENABLE_LIBNOTIFY"
5651 PKG_CHECK_MODULES(MOZ_LIBNOTIFY, libnotify >= $LIBNOTIFY_VERSION)
5655 AC_SUBST(MOZ_ENABLE_LIBNOTIFY)
5656 AC_SUBST(MOZ_LIBNOTIFY_CFLAGS)
5657 AC_SUBST(MOZ_LIBNOTIFY_LIBS)
5659 dnl ========================================================
5660 dnl = GNOME component (mozgnome)
5661 dnl ========================================================
5663 # The GNOME component is built if one of
5664 # gnome-vfs, gio, gconf or libnotify is available.
5665 if test "$MOZ_ENABLE_GCONF" || \
5666 test "$MOZ_ENABLE_GNOMEVFS" || \
5667 test "$MOZ_ENABLE_GIO" || \
5668 test "$MOZ_ENABLE_LIBNOTIFY"; then
5669 MOZ_ENABLE_GNOME_COMPONENT=1
5671 MOZ_ENABLE_GNOME_COMPONENT=
5673 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5675 dnl ========================================================
5676 dnl = libgnomeui support module
5677 dnl ========================================================
5679 if test "$MOZ_ENABLE_GTK2"
5681 MOZ_ENABLE_GNOMEUI=1
5683 MOZ_ARG_DISABLE_BOOL(gnomeui,
5684 [ --disable-gnomeui Disable libgnomeui support (default: auto, optional at runtime) ],
5685 MOZ_ENABLE_GNOMEUI=,
5686 MOZ_ENABLE_GNOMEUI=force)
5688 if test "$MOZ_ENABLE_GNOMEUI"
5690 PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5692 MOZ_GNOMEUI_LIBS=`echo $MOZ_GNOMEUI_LIBS | sed 's/-llinc\>//'`
5693 MOZ_ENABLE_GNOMEUI=1
5695 if test "$MOZ_ENABLE_GNOMEUI" = "force"
5697 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5703 if test "$MOZ_ENABLE_GNOMEUI"; then
5704 AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5708 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5709 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5710 AC_SUBST(MOZ_GNOMEUI_LIBS)
5712 dnl ========================================================
5714 dnl ========================================================
5716 if test "$MOZ_ENABLE_GTK2" || test "$MOZ_ENABLE_QT"
5720 MOZ_ARG_DISABLE_BOOL(dbus,
5721 [ --disable-dbus Disable dbus support ],
5725 if test "$MOZ_ENABLE_DBUS"
5727 PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
5728 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5729 AC_DEFINE(MOZ_ENABLE_DBUS)
5732 AC_SUBST(MOZ_ENABLE_DBUS)
5733 AC_SUBST(MOZ_DBUS_CFLAGS)
5734 AC_SUBST(MOZ_DBUS_LIBS)
5735 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5736 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5738 dnl ========================================================
5739 dnl = Build Personal Security Manager
5740 dnl ========================================================
5741 MOZ_ARG_DISABLE_BOOL(crypto,
5742 [ --disable-crypto Disable crypto support (Personal Security Manager)],
5746 dnl ========================================================
5747 dnl = JS Debugger XPCOM component (js/jsd)
5748 dnl ========================================================
5749 MOZ_ARG_DISABLE_BOOL(jsd,
5750 [ --disable-jsd Disable JavaScript debug library],
5755 dnl ========================================================
5756 dnl = Disable IPC support for tabs and plugins
5757 dnl ========================================================
5759 *-wince*|*-android*)
5764 MOZ_ARG_DISABLE_BOOL(ipc,
5765 [ --disable-ipc Disable IPC supports for tabs and plugins],
5769 if test -n "$MOZ_IPC"; then
5775 dnl ========================================================
5776 dnl = Enable IPDL's "expensive" unit tests
5777 dnl ========================================================
5780 MOZ_ARG_ENABLE_BOOL(ipdl-tests,
5781 [ --enable-ipdl-tests Enable expensive IPDL tests],
5785 if test -z "$MOZ_IPC" -a -n "$MOZ_IPDL_TESTS"; then
5786 AC_MSG_ERROR([--enable-ipdl-tests requires --enable-ipc])
5789 if test -n "$MOZ_IPDL_TESTS"; then
5790 AC_DEFINE(MOZ_IPDL_TESTS)
5793 AC_SUBST(MOZ_IPDL_TESTS)
5795 dnl ========================================================
5796 dnl = Disable plugin support
5797 dnl ========================================================
5798 MOZ_ARG_DISABLE_BOOL(plugins,
5799 [ --disable-plugins Disable plugins support],
5803 dnl ========================================================
5804 dnl = Disable building dbm
5805 dnl ========================================================
5806 MOZ_ARG_DISABLE_BOOL(dbm,
5807 [ --disable-dbm Disable building dbm],
5811 dnl bi-directional support always on
5815 dnl ========================================================
5816 dnl view source support on by default
5817 dnl ========================================================
5818 if test "$MOZ_VIEW_SOURCE"; then
5819 AC_DEFINE(MOZ_VIEW_SOURCE)
5822 dnl ========================================================
5823 dnl accessibility support on by default on all platforms
5825 dnl ========================================================
5826 MOZ_ARG_DISABLE_BOOL(accessibility,
5827 [ --disable-accessibility Disable accessibility support (off by default on OS X)],
5830 if test "$ACCESSIBILITY"; then
5831 AC_DEFINE(ACCESSIBILITY)
5834 if test -n "$ACCESSIBILITY" -a "$COMPILE_ENVIRONMENT" = "1"; then
5836 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5837 if test "$ac_cv_header_atlbase_h" = "no"; then
5838 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.])
5840 if test "$ac_cv_header_oleacc_idl" = "no"; then
5841 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.])
5847 dnl ========================================================
5848 dnl xpcom js loader support on by default
5849 dnl ========================================================
5850 if test "$MOZ_JSLOADER"; then
5851 AC_DEFINE(MOZ_JSLOADER)
5854 dnl ========================================================
5855 dnl Disable printing
5856 dnl ========================================================
5857 MOZ_ARG_DISABLE_BOOL(printing,
5858 [ --disable-printing Disable printing support],
5862 if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
5863 AC_MSG_WARN([Printing does not work with Qt at this time. Omitting printing support.])
5867 if test "$NS_PRINTING"; then
5868 AC_DEFINE(NS_PRINTING)
5869 AC_DEFINE(NS_PRINT_PREVIEW)
5872 dnl ========================================================
5873 dnl use native unicode converters
5874 dnl ========================================================
5875 MOZ_ARG_ENABLE_BOOL(native-uconv,
5876 [ --enable-native-uconv Enable iconv support],
5877 MOZ_USE_NATIVE_UCONV=1,
5878 MOZ_USE_NATIVE_UCONV= )
5879 if test "$MOZ_USE_NATIVE_UCONV"; then
5880 AC_DEFINE(MOZ_USE_NATIVE_UCONV)
5882 if test "$OS_ARCH" != "WINCE" -a "$OS_ARCH" != "WINNT" -a "$MOZ_USE_NATIVE_UCONV" -a "$ac_cv_func_iconv" != "yes"; then
5883 AC_MSG_ERROR([iconv() not found. Cannot enable native uconv support.])
5887 dnl ========================================================
5888 dnl Libeditor can be build as plaintext-only,
5889 dnl or as a full html and text editing component.
5890 dnl We build both by default.
5891 dnl ========================================================
5892 MOZ_ARG_ENABLE_BOOL(plaintext-editor-only,
5893 [ --enable-plaintext-editor-only
5894 Allow only plaintext editing],
5895 MOZ_PLAINTEXT_EDITOR_ONLY=1,
5896 MOZ_PLAINTEXT_EDITOR_ONLY= )
5897 dnl Note the #define is MOZILLA, not MOZ, for compat with the Mac build.
5898 AC_SUBST(MOZ_PLAINTEXT_EDITOR_ONLY)
5900 dnl ========================================================
5901 dnl = Disable Fast Load
5902 dnl ========================================================
5903 MOZ_ARG_DISABLE_BOOL(xpcom-fastload,
5904 [ --disable-xpcom-fastload Disable XPCOM fastload support],
5908 AC_SUBST(MOZ_NO_FAST_LOAD)
5910 if test -n "$MOZ_NO_FAST_LOAD"; then
5911 AC_DEFINE(MOZ_NO_FAST_LOAD)
5914 dnl ========================================================
5915 dnl = Disable Ogg Codecs
5916 dnl ========================================================
5917 MOZ_ARG_DISABLE_BOOL(ogg,
5918 [ --disable-ogg Disable Ogg Codec support],
5924 if test -n "$MOZ_OGG"; then
5929 dnl Checks for __attribute__(aligned()) directive
5930 AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
5931 [ac_cv_c_attribute_aligned],
5932 [ac_cv_c_attribute_aligned=0
5933 CFLAGS_save="${CFLAGS}"
5934 CFLAGS="${CFLAGS} -Werror"
5935 for ac_cv_c_attr_align_try in 64 32 16 8; do
5936 echo "trying $ac_cv_c_attr_align_try"
5938 [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
5939 [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
5940 if test "$ac_cv_c_attribute_aligned" != 0; then
5944 CFLAGS="${CFLAGS_save}"])
5945 if test "${ac_cv_c_attribute_aligned}" != "0"; then
5946 AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
5947 [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
5951 dnl ========================================================
5952 dnl = Disable Wave decoder support
5953 dnl ========================================================
5954 MOZ_ARG_DISABLE_BOOL(wave,
5955 [ --disable-wave Disable Wave decoder support],
5961 if test -n "$MOZ_WAVE"; then
5967 dnl ========================================================
5968 dnl = Handle dependent SYDNEYAUDIO and MEDIA defines
5969 dnl ========================================================
5971 AC_SUBST(MOZ_SYDNEYAUDIO)
5973 if test -n "$MOZ_SYDNEYAUDIO"; then
5974 AC_DEFINE(MOZ_SYDNEYAUDIO)
5979 if test -n "$MOZ_MEDIA"; then
5980 AC_DEFINE(MOZ_MEDIA)
5983 dnl ========================================================
5984 dnl = Check alsa availability on Linux if using sydneyaudio
5985 dnl ========================================================
5987 dnl If using sydneyaudio with Linux, ensure that the alsa library is available
5988 if test -n "$MOZ_SYDNEYAUDIO"; then
5989 case "$target_os" in
5991 PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
5992 [echo "$MOZ_ALSA_PKG_ERRORS"
5993 AC_MSG_ERROR([Need alsa for Ogg or Wave decoding on Linux. Disable with --disable-ogg --disable-wave.])])
5997 AC_SUBST(MOZ_ALSA_LIBS)
5999 dnl ========================================================
6001 dnl ========================================================
6002 AC_ARG_ENABLE(splashscreen,
6003 [ --enable-splashscreen display splashscreen while loading (default=no)],
6004 [enable_splash="yes"],[enable_splash=""])
6005 if test "x$enable_splash" = "xyes"; then
6007 AC_DEFINE(MOZ_SPLASHSCREEN)
6009 AC_SUBST(MOZ_SPLASHSCREEN)
6011 dnl ========================================================
6012 dnl Permissions System
6013 dnl ========================================================
6014 MOZ_ARG_DISABLE_BOOL(permissions,
6015 [ --disable-permissions Disable permissions (popup and cookie blocking)],
6020 dnl ========================================================
6022 dnl ========================================================
6023 MOZ_ARG_DISABLE_BOOL(negotiateauth,
6024 [ --disable-negotiateauth Disable GSS-API negotiation ],
6025 MOZ_AUTH_EXTENSION=,
6026 MOZ_AUTH_EXTENSION=1 )
6028 dnl ========================================================
6030 dnl ========================================================
6031 MOZ_ARG_DISABLE_BOOL(xtf,
6032 [ --disable-xtf Disable XTF (pluggable xml tags) support],
6035 if test "$MOZ_XTF"; then
6039 dnl ========================================================
6040 dnl Pref extensions (autoconfig and system-pref)
6041 dnl ========================================================
6042 MOZ_ARG_DISABLE_BOOL(pref-extensions,
6043 [ --disable-pref-extensions
6044 Disable pref extensions such as autoconfig and
6046 MOZ_PREF_EXTENSIONS=,
6047 MOZ_PREF_EXTENSIONS=1 )
6049 dnl ========================================================
6050 dnl = Universalchardet
6051 dnl ========================================================
6052 MOZ_ARG_DISABLE_BOOL(universalchardet,
6053 [ --disable-universalchardet
6054 Disable universal encoding detection],
6055 MOZ_UNIVERSALCHARDET=,
6056 MOZ_UNIVERSALCHARDET=1 )
6058 dnl ========================================================
6060 dnl ========================================================
6067 MOZ_ARG_ENABLE_BOOL(javaxpcom,
6068 [ --enable-javaxpcom
6069 Enable Java-XPCOM bridge],
6073 if test -n "${MOZ_JAVAXPCOM}"; then
6076 if test -n "$JAVA_HOME"; then
6077 JAVA_HOME=`cygpath -u \`cygpath -m -s "$JAVA_HOME"\``
6081 if test -n "$JAVA_HOME"; then
6082 JAVA_HOME=`cd "$JAVA_HOME" && pwd`
6087 if test -n "${JAVA_INCLUDE_PATH}"; then
6088 dnl Make sure jni.h exists in the given include path.
6089 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
6090 AC_MSG_ERROR([jni.h was not found in given include path $JAVA_INCLUDE_PATH.])
6093 case "$target_os" in
6095 dnl Default to java system location
6096 JAVA_INCLUDE_PATH=/System/Library/Frameworks/JavaVM.framework/Headers
6100 JAVA_INCLUDE_PATH="$JAVA_HOME/include"
6103 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
6104 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.])
6108 if test -n "${JAVA_BIN_PATH}"; then
6109 dnl Look for javac and jar in the specified path.
6110 JAVA_PATH="$JAVA_BIN_PATH"
6112 dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
6113 JAVA_PATH="$JAVA_HOME/bin:$PATH"
6116 MOZ_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
6117 MOZ_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
6118 MOZ_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
6119 if test -z "$JAVA" || test "$JAVA" = ":" || test -z "$JAVAC" || test "$JAVAC" = ":" || test -z "$JAR" || test "$JAR" = ":"; then
6120 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.])
6124 dnl ========================================================
6125 dnl = Breakpad crash reporting (on by default on supported platforms)
6126 dnl ========================================================
6132 i?86-apple-darwin*|powerpc-apple-darwin*)
6135 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
6143 MOZ_ARG_DISABLE_BOOL(crashreporter,
6144 [ --disable-crashreporter Disable breakpad crash reporting],
6146 MOZ_CRASHREPORTER=1)
6148 if test -n "$MOZ_CRASHREPORTER"; then
6149 AC_DEFINE(MOZ_CRASHREPORTER)
6151 if (test "$OS_ARCH" = "Linux" || test "$OS_ARCH" = "SunOS") && \
6152 test -z "$SKIP_LIBRARY_CHECKS"; then
6153 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
6154 AC_SUBST(MOZ_GTHREAD_CFLAGS)
6155 AC_SUBST(MOZ_GTHREAD_LIBS)
6157 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.])])
6161 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
6162 [ --with-crashreporter-enable-percent=NN Enable sending crash reports by default on NN% of users. (default=100)],
6163 [ val=`echo $withval | sed 's/[^0-9]//g'`
6164 MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
6166 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
6167 MOZ_CRASHREPORTER_ENABLE_PERCENT=100
6169 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
6171 dnl ========================================================
6172 dnl = Enable compilation of specific extension modules
6173 dnl ========================================================
6175 MOZ_ARG_ENABLE_STRING(extensions,
6176 [ --enable-extensions Enable extensions],
6177 [ for option in `echo $enableval | sed 's/,/ /g'`; do
6178 if test "$option" = "yes" || test "$option" = "all"; then
6179 AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
6180 elif test "$option" = "no" || test "$option" = "none"; then
6182 elif test "$option" = "default"; then
6183 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
6184 elif test `echo "$option" | grep -c \^-` != 0; then
6185 option=`echo $option | sed 's/^-//'`
6186 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
6188 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
6191 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
6193 if test -z "$MOZ_ENABLE_GNOMEVFS" && test -z "$MOZ_GNOMEVFS_LIBS" && test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6194 # Suppress warning on non-X11 platforms
6195 if test -n "$MOZ_X11"; then
6196 AC_MSG_WARN([Cannot build gnomevfs without required libraries. Removing gnomevfs from MOZ_EXTENSIONS.])
6198 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6201 dnl Do not build gnomevfs with libxul based apps
6202 if test -n "$LIBXUL_SDK_DIR" && test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6203 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6206 if test -z "$MOZ_ENABLE_GIO" && test `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6207 # Suppress warning on non-X11 platforms
6208 if test -n "$MOZ_X11"; then
6209 AC_MSG_WARN([Cannot build gio without required libraries. Removing gio from MOZ_EXTENSIONS.])
6211 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6214 dnl Do not build gio with libxul based apps
6215 if test -n "$LIBXUL_SDK_DIR" && test `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6216 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6219 if test -z "$MOZ_JSDEBUGGER" && test `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
6220 AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
6221 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
6224 dnl This might be temporary: build tridentprofile only on Windows
6225 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0 && test "$OS_ARCH" != "WINNT"; then
6226 AC_MSG_WARN([tridentprofile extension works only on Windows at this time. Removing tridentprofile from MOZ_EXTENSIONS.])
6227 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
6230 dnl cookie must be built before tridentprofile. put it at list's end.
6231 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0; then
6232 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
6233 MOZ_EXTENSIONS="$MOZ_EXTENSIONS tridentprofile"
6236 dnl xforms requires xtf and schema-validation
6237 if test -z "$MOZ_XTF" && test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
6238 AC_MSG_WARN([Cannot build XForms without XTF support. Removing XForms from MOZ_EXTENSIONS.])
6239 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
6241 if test `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0 && test `echo "$MOZ_EXTENSIONS" | grep -c schema-validation` -eq 0; then
6242 AC_MSG_WARN([Cannot build XForms without schema validation. Removing XForms from MOZ_EXTENSIONS.])
6243 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
6246 if test `echo "$MOZ_EXTENSIONS" | grep -c auth` -ne 0; then
6247 AC_MSG_WARN([auth is no longer an extension, use --disable-negotiateauth to disable.])
6248 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|auth||g'`
6251 if test `echo "$MOZ_EXTENSIONS" | grep -c 'cookie\|permissions'` -ne 0; then
6252 AC_MSG_WARN([cookie and permissions are no longer extensions, use --disable-permissions to disable.])
6253 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|cookie||g; s|permissions||g'`
6256 if test `echo "$MOZ_EXTENSIONS" | grep -c pref` -ne 0; then
6257 AC_MSG_WARN([pref is no longer an extension, use --disable-pref-extensions to disable.])
6258 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|pref||g'`
6261 if test `echo "$MOZ_EXTENSIONS" | grep -c universalchardet` -ne 0; then
6262 AC_MSG_WARN([universalchardet is no longer an extension, use --disable-universalchardet to disable.])
6263 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|universalchardet||g'`
6266 if test `echo "$MOZ_EXTENSIONS" | grep -c java` -ne 0; then
6267 AC_MSG_WARN([java is no longer an extension, use --enable-javaxpcom to enable.])
6268 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|java||g'`
6271 if test `echo "$MOZ_EXTENSIONS" | grep -c spellcheck` -ne 0; then
6272 AC_MSG_WARN([spellcheck is no longer an extension.])
6273 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|spellcheck||g'`
6277 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
6279 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
6280 dnl when trying to build a nonexistent extension.
6281 for extension in $MOZ_EXTENSIONS; do
6282 if test ! -d "${srcdir}/extensions/${extension}"; then
6283 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
6288 dnl ========================================================
6290 dnl ========================================================
6291 case "$MOZ_WIDGET_TOOLKIT" in
6292 beos|windows|os2|mac|cocoa)
6295 if test -z "$MOZ_ENABLE_GTK2" && test -z "$MOZ_ENABLE_QT"; then
6296 MOZ_IMG_DECODERS_DEFAULT=`echo $MOZ_IMG_DECODERS_DEFAULT | sed -e 's|icon||'`
6301 MOZ_ARG_ENABLE_STRING(image-decoders,
6302 [ --enable-image-decoders[={mod1,mod2,default,all,none}]
6303 Enable specific image decoders],
6304 [ for option in `echo $enableval | sed 's/,/ /g'`; do
6305 if test "$option" = "yes" || test "$option" = "all"; then
6306 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
6307 elif test "$option" = "no" || test "$option" = "none"; then
6309 elif test "$option" = "default"; then
6310 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $MOZ_IMG_DECODERS_DEFAULT"
6311 elif test `echo "$option" | grep -c \^-` != 0; then
6312 option=`echo $option | sed 's/^-//'`
6313 MOZ_IMG_DECODERS=`echo "$MOZ_IMG_DECODERS" | sed "s/ ${option}//"`
6315 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS $option"
6318 MOZ_IMG_DECODERS="$MOZ_IMG_DECODERS_DEFAULT")
6320 dnl Dupes are removed in the encoder section because it will also add decoders
6322 dnl ========================================================
6324 dnl ========================================================
6325 MOZ_ARG_ENABLE_STRING(image-encoders,
6326 [ --enable-image-encoders[={mod1,mod2,default,all,none}]
6327 Enable specific image encoders],
6328 [ for option in `echo $enableval | sed 's/,/ /g'`; do
6329 if test "$option" = "yes" || test "$option" = "all"; then
6330 addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
6331 elif test "$option" = "no" || test "$option" = "none"; then
6334 elif test "$option" = "default"; then
6335 addencoder="$MOZ_IMG_ENCODERS_DEFAULT"
6336 elif test `echo "$option" | grep -c \^-` != 0; then
6337 option=`echo $option | sed 's/^-//'`
6338 addencoder=`echo "$MOZ_IMG_ENCODERS" | sed "s/ ${option}//"`
6340 addencoder="$option"
6342 MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS $addencoder"
6344 MOZ_IMG_ENCODERS="$MOZ_IMG_ENCODERS_DEFAULT")
6347 MOZ_IMG_DECODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_DECODERS}`
6348 MOZ_IMG_ENCODERS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_IMG_ENCODERS}`
6350 dnl ========================================================
6351 dnl MathML on by default
6352 dnl ========================================================
6353 MOZ_ARG_DISABLE_BOOL(mathml,
6354 [ --disable-mathml Disable MathML support],
6357 if test "$MOZ_MATHML"; then
6358 AC_DEFINE(MOZ_MATHML)
6361 dnl ========================================================
6363 dnl ========================================================
6364 MOZ_ARG_DISABLE_BOOL(svg,
6365 [ --disable-svg Disable SVG support],
6368 if test -n "$MOZ_SVG"; then
6372 dnl ========================================================
6374 dnl ========================================================
6376 MOZ_ARG_DISABLE_BOOL(smil,
6377 [ --disable-smil Disable SMIL animation support],
6380 # Automatically disable SMIL if SVG is disabled
6381 if test -z "$MOZ_SVG"; then
6384 if test -n "$MOZ_SMIL"; then
6388 dnl ========================================================
6389 dnl Build Freetype in the tree
6390 dnl ========================================================
6391 MOZ_ARG_ENABLE_BOOL(tree-freetype,
6392 [ --enable-tree-freetype Enable Tree FreeType],
6393 MOZ_TREE_FREETYPE=1,
6394 MOZ_TREE_FREETYPE= )
6395 if test -n "$MOZ_TREE_FREETYPE"; then
6396 AC_DEFINE(MOZ_TREE_FREETYPE)
6397 AC_SUBST(MOZ_TREE_FREETYPE)
6398 MOZ_ENABLE_CAIRO_FT=1
6399 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
6400 FT2_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6401 CAIRO_FT_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6402 FT2_LIBS='$(call EXPAND_LIBNAME_PATH,freetype2,$(LIBXUL_DIST)/lib)'
6403 CAIRO_FT_LIBS='$(call EXPAND_LIBNAME_PATH,freetype2,$(LIBXUL_DIST)/lib)'
6404 AC_DEFINE(HAVE_FT_BITMAP_SIZE_Y_PPEM)
6405 AC_DEFINE(HAVE_FT_GLYPHSLOT_EMBOLDEN)
6406 AC_DEFINE(HAVE_FT_LOAD_SFNT_TABLE)
6407 AC_SUBST(CAIRO_FT_CFLAGS)
6411 dnl ========================================================
6413 dnl ========================================================
6414 case "$target_os" in
6415 aix*|solaris*|linux*|msvc*|mks*|cygwin*|mingw*|os2*|wince*|winmo*)
6420 MOZ_ARG_DISABLE_BOOL(installer,
6421 [ --disable-installer Disable building of installer],
6424 if test -n "$MOZ_INSTALLER" -a "$OS_ARCH" = "WINNT"; then
6425 # Disable installer for Windows builds that use the new toolkit if NSIS
6426 # isn't in the path.
6427 MOZ_PATH_PROGS(MAKENSIS, makensis)
6428 if test -z "$MAKENSIS" || test "$MAKENSIS" = ":"; then
6429 AC_MSG_ERROR([To build the installer makensis is required in your path. To build without the installer reconfigure using --disable-installer.])
6431 # The Windows build for NSIS requires the iconv command line utility to
6432 # convert the charset of the locale files.
6433 MOZ_PATH_PROGS(HOST_ICONV, $HOST_ICONV "iconv", "")
6434 if test -z "$HOST_ICONV"; then
6435 AC_MSG_ERROR([To build the installer iconv is required in your path. To build without the installer reconfigure using --disable-installer.])
6439 AC_SUBST(MOZ_INSTALLER)
6441 AC_MSG_CHECKING([for tar archiver])
6442 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
6443 if test -z "$TAR"; then
6444 AC_MSG_ERROR([no tar archiver found in \$PATH])
6446 AC_MSG_RESULT([$TAR])
6449 AC_MSG_CHECKING([for wget])
6450 AC_CHECK_PROGS(WGET, wget, "")
6451 AC_MSG_RESULT([$WGET])
6454 dnl ========================================================
6456 dnl ========================================================
6458 MOZ_ARG_DISABLE_BOOL(updater,
6459 [ --disable-updater Disable building of updater],
6462 AC_SUBST(MOZ_UPDATER)
6464 # app update channel is 'default' when not supplied.
6465 MOZ_ARG_ENABLE_STRING([update-channel],
6466 [ --enable-update-channel=CHANNEL
6467 Select application update channel (default=default)],
6468 MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
6470 if test -z "$MOZ_UPDATE_CHANNEL"; then
6471 MOZ_UPDATE_CHANNEL=default
6473 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
6475 # tools/update-packaging is not checked out by default.
6476 MOZ_ARG_ENABLE_BOOL(update-packaging,
6477 [ --enable-update-packaging
6478 Enable tools/update-packaging],
6479 MOZ_UPDATE_PACKAGING=1,
6480 MOZ_UPDATE_PACKAGING= )
6481 AC_SUBST(MOZ_UPDATE_PACKAGING)
6483 dnl ========================================================
6485 dnl ========================================================
6487 MOZ_ARG_DISABLE_BOOL(xpconnect-idispatch,
6488 [ --disable-xpconnect-idispatch
6489 Disable building of xpconnect support for IDispatch
6491 XPC_IDISPATCH_SUPPORT=,
6492 XPC_IDISPATCH_SUPPORT=1)
6493 AC_SUBST(XPC_IDISPATCH_SUPPORT)
6495 MOZ_ARG_DISABLE_BOOL(activex,
6496 [ --disable-activex Disable building of ActiveX control (win32 only)],
6497 MOZ_NO_ACTIVEX_SUPPORT=1,
6498 MOZ_NO_ACTIVEX_SUPPORT= )
6499 AC_SUBST(MOZ_NO_ACTIVEX_SUPPORT)
6501 MOZ_ARG_ENABLE_BOOL(activex-scripting,
6502 [ --enable-activex-scripting
6503 Enable building of ActiveX scripting support (win32)],
6504 MOZ_ACTIVEX_SCRIPTING_SUPPORT=1,
6505 MOZ_ACTIVEX_SCRIPTING_SUPPORT=)
6506 AC_SUBST(MOZ_ACTIVEX_SCRIPTING_SUPPORT)
6508 if test -n "$MOZ_NO_ACTIVEX_SUPPORT" -a -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT";
6510 AC_MSG_ERROR([Cannot enable ActiveX scripting support when ActiveX support is disabled.])
6513 if test "$COMPILE_ENVIRONMENT" = "1"; then
6514 if test -n "$XPC_IDISPATCH_SUPPORT" -o -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
6516 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
6517 if test "$ac_cv_header_atlbase_h" = "no"; then
6518 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.])
6525 dnl ========================================================
6527 dnl ========================================================
6528 MOZ_ARG_ENABLE_BOOL(leaky,
6529 [ --enable-leaky Build leaky memory tool],
6534 dnl ========================================================
6535 dnl build the tests by default
6536 dnl ========================================================
6537 MOZ_ARG_DISABLE_BOOL(tests,
6538 [ --disable-tests Do not build test libraries & programs],
6542 dnl ========================================================
6543 dnl parental controls (for Windows Vista)
6544 dnl ========================================================
6545 MOZ_ARG_DISABLE_BOOL(parental-controls,
6546 [ --disable-parental-controls
6547 Do not build parental controls],
6548 MOZ_DISABLE_PARENTAL_CONTROLS=1,
6549 MOZ_DISABLE_PARENTAL_CONTROLS=)
6550 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
6551 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
6554 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
6556 dnl ========================================================
6558 dnl = Module specific options
6560 dnl ========================================================
6561 MOZ_ARG_HEADER(Individual module options)
6563 dnl ========================================================
6564 dnl = Disable feed handling components
6565 dnl ========================================================
6566 MOZ_ARG_DISABLE_BOOL(feeds,
6567 [ --disable-feeds Disable feed handling and processing components],
6570 if test -n "$MOZ_FEEDS"; then
6571 AC_DEFINE(MOZ_FEEDS)
6573 if test "$MOZ_BUILD_APP" = "browser"; then
6574 AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
6578 dnl ========================================================
6579 dnl = Enable mozStorage
6580 dnl ========================================================
6581 dnl Implicitly enabled by default if building calendar or places
6582 MOZ_ARG_ENABLE_BOOL(storage,
6583 [ --enable-storage Enable mozStorage module and related components],
6586 if test -n "$MOZ_STORAGE"; then
6587 AC_DEFINE(MOZ_STORAGE)
6590 dnl ========================================================
6591 dnl Check for sqlite
6592 dnl ========================================================
6595 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6596 [ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
6597 MOZ_NATIVE_SQLITE=1,
6598 MOZ_NATIVE_SQLITE= )
6600 if test -z "$MOZ_NATIVE_SQLITE"
6603 SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,mozsqlite3,$(DIST)/lib)'
6605 dnl ============================
6606 dnl === SQLite Version check ===
6607 dnl ============================
6608 dnl Check to see if the system SQLite package is new enough.
6609 PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6611 dnl ==================================
6612 dnl === SQLITE_SECURE_DELETE check ===
6613 dnl ==================================
6614 dnl Check to see if the system SQLite package is compiled with
6615 dnl SQLITE_SECURE_DELETE enabled.
6616 AC_MSG_CHECKING(for SQLITE_SECURE_DELETE support in system SQLite)
6617 _SAVE_CFLAGS="$CFLAGS"
6618 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6620 LIBS="$LIBS $SQLITE_LIBS"
6621 AC_CACHE_VAL(ac_cv_sqlite_secure_delete,[
6623 #include "sqlite3.h"
6625 int main(int argc, char **argv){
6626 return !sqlite3_compileoption_used("SQLITE_SECURE_DELETE");
6628 ac_cv_sqlite_secure_delete=yes,
6629 ac_cv_sqlite_secure_delete=no,
6630 ac_cv_sqlite_secure_delete=no
6633 AC_MSG_RESULT($ac_cv_sqlite_secure_delete)
6634 CFLAGS="$_SAVE_CFLAGS"
6636 if test "x$ac_cv_sqlite_secure_delete" = "xno"; then
6637 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_SECURE_DELETE.])
6640 dnl ===============================
6641 dnl === SQLITE_THREADSAFE check ===
6642 dnl ===============================
6643 dnl Check to see if the system SQLite package is compiled with
6644 dnl SQLITE_THREADSAFE enabled.
6645 AC_MSG_CHECKING(for SQLITE_THREADSAFE support in system SQLite)
6646 _SAVE_CFLAGS="$CFLAGS"
6647 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6649 LIBS="$LIBS $SQLITE_LIBS"
6650 AC_CACHE_VAL(ac_cv_sqlite_threadsafe,[
6652 #include "sqlite3.h"
6654 int main(int argc, char **argv){
6655 return !sqlite3_compileoption_used("SQLITE_THREADSAFE=1");
6657 ac_cv_sqlite_threadsafe=yes,
6658 ac_cv_sqlite_threadsafe=no,
6659 ac_cv_sqlite_threadsafe=no
6662 AC_MSG_RESULT($ac_cv_sqlite_threadsafe)
6663 CFLAGS="$_SAVE_CFLAGS"
6665 if test "x$ac_cv_sqlite_threadsafe" = "xno"; then
6666 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_THREADSAFE.])
6669 dnl ================================
6670 dnl === SQLITE_ENABLE_FTS3 check ===
6671 dnl ================================
6672 dnl check to see if the system SQLite package is compiled with
6673 dnl SQLITE_THREADSAFE enabled.
6674 AC_MSG_CHECKING(for SQLITE_ENABLE_FTS3 support in system SQLite)
6675 _SAVE_CFLAGS="$CFLAGS"
6676 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6678 LIBS="$LIBS $SQLITE_LIBS"
6679 AC_CACHE_VAL(ac_cv_sqlite_enable_fts3,[
6681 #include "sqlite3.h"
6683 int main(int argc, char **argv){
6684 return !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3");
6686 ac_cv_sqlite_enable_fts3=yes,
6687 ac_cv_sqlite_enable_fts3=no,
6688 ac_cv_sqlite_enable_fts3=no
6691 AC_MSG_RESULT($ac_cv_sqlite_enable_fts3)
6692 CFLAGS="$_SAVE_CFLAGS"
6694 if test "x$ac_cv_sqlite_enable_fts3" = "xno"; then
6695 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_FTS3.])
6699 AC_SUBST(MOZ_NATIVE_SQLITE)
6701 dnl ========================================================
6702 dnl = Enable help viewer (off by default)
6703 dnl ========================================================
6704 if test -n "$MOZ_HELP_VIEWER"; then
6705 dnl Do this if defined in confvars.sh
6706 AC_DEFINE(MOZ_HELP_VIEWER)
6709 dnl ========================================================
6710 dnl = Enable safe browsing (anti-phishing)
6711 dnl ========================================================
6712 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6713 [ --enable-safe-browsing Enable safe browsing (anti-phishing) implementation],
6714 MOZ_SAFE_BROWSING=1,
6715 MOZ_SAFE_BROWSING= )
6716 if test -n "$MOZ_SAFE_BROWSING"; then
6717 AC_DEFINE(MOZ_SAFE_BROWSING)
6719 AC_SUBST(MOZ_SAFE_BROWSING)
6721 dnl ========================================================
6722 dnl = Enable faststart component
6723 dnl ========================================================
6724 MOZ_ARG_ENABLE_BOOL(faststart,
6725 [ --enable-faststart Enable the faststart component],
6728 if test -n "$MOZ_FASTSTART"; then
6729 AC_DEFINE(MOZ_FASTSTART)
6731 AC_SUBST(MOZ_FASTSTART)
6733 dnl ========================================================
6734 dnl = Enable url-classifier
6735 dnl ========================================================
6736 dnl Implicitly enabled by default if building with safe-browsing
6737 if test -n "$MOZ_SAFE_BROWSING"; then
6738 MOZ_URL_CLASSIFIER=1
6740 MOZ_ARG_ENABLE_BOOL(url-classifier,
6741 [ --enable-url-classifier Enable url classifier module],
6742 MOZ_URL_CLASSIFIER=1,
6743 MOZ_URL_CLASSIFIER= )
6744 if test -n "$MOZ_URL_CLASSIFIER"; then
6745 AC_DEFINE(MOZ_URL_CLASSIFIER)
6747 AC_SUBST(MOZ_URL_CLASSIFIER)
6749 dnl ========================================================
6750 dnl = Disable zipwriter
6751 dnl ========================================================
6752 MOZ_ARG_DISABLE_BOOL(zipwriter,
6753 [ --disable-zipwriter Disable zipwriter component],
6756 AC_SUBST(MOZ_ZIPWRITER)
6758 dnl ========================================================
6759 dnl = Disable libconic
6760 dnl ========================================================
6761 MOZ_ENABLE_LIBCONIC=1
6762 MOZ_ARG_DISABLE_BOOL(libconic,
6763 [ --disable-libconic Disable libconic],
6764 MOZ_ENABLE_LIBCONIC=,
6765 MOZ_ENABLE_LIBCONIC=1 )
6767 if test -n "$MOZ_ENABLE_LIBCONIC"; then
6768 PKG_CHECK_MODULES(LIBCONIC, conic,
6769 MOZ_ENABLE_LIBCONIC=1,
6770 MOZ_ENABLE_LIBCONIC=)
6772 if test "$MOZ_ENABLE_LIBCONIC"; then
6773 AC_DEFINE(MOZ_ENABLE_LIBCONIC)
6776 AC_SUBST(MOZ_ENABLE_LIBCONIC)
6777 AC_SUBST(LIBCONIC_CFLAGS)
6778 AC_SUBST(LIBCONIC_LIBS)
6780 dnl ========================================================
6782 dnl ========================================================
6784 MAEMO_SDK_TARGET_VER=-1
6786 MOZ_ARG_WITH_STRING(maemo-version,
6787 [ --with-maemo-version=MAEMO_SDK_TARGET_VER
6789 MAEMO_SDK_TARGET_VER=$withval)
6791 case "$MAEMO_SDK_TARGET_VER" in
6793 MOZ_PLATFORM_MAEMO=5
6797 MOZ_PLATFORM_MAEMO=6
6801 dnl We aren't compiling for Maemo, move on.
6804 AC_MSG_ERROR([Unknown Maemo Version. Try setting --with-maemo-version to 5 or 6.])
6808 if test $MOZ_PLATFORM_MAEMO; then
6809 AC_DEFINE_UNQUOTED([MOZ_PLATFORM_MAEMO], $MOZ_PLATFORM_MAEMO)
6811 if test -z "$MOZ_ENABLE_DBUS"; then
6812 AC_MSG_ERROR([DBus is required when building for Maemo])
6815 MOZ_GFX_OPTIMIZE_MOBILE=1
6817 MOZ_MAEMO_LIBLOCATION=
6819 if test $MOZ_PLATFORM_MAEMO = 5; then
6820 dnl if we have Xcomposite we should also have Xdamage and Xfixes
6821 AC_CHECK_HEADERS([X11/extensions/Xdamage.h], [],
6822 [AC_MSG_ERROR([Couldn't find X11/extensions/Xdamage.h which is required for composited plugins.])])
6823 AC_CHECK_LIB(Xcomposite, XCompositeRedirectWindow, [XCOMPOSITE_LIBS="-lXcomposite -lXdamage -lXfixes"],
6824 [MISSING_X="$MISSING_X -lXcomposite"], $XLIBS)
6826 AC_SUBST(XCOMPOSITE_LIBS)
6828 PKG_CHECK_MODULES(LIBHILDONMIME,libhildonmime, _LIB_FOUND=1, _LIB_FOUND=)
6829 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONMIME_LIBS"
6830 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONMIME_CFLAGS"
6831 if test -z "$_LIB_FOUND"; then
6832 AC_MSG_ERROR([Hildon Mime is required when building for Maemo])
6836 PKG_CHECK_MODULES(LIBOSSO,libosso, _LIB_FOUND=1, _LIB_FOUND=)
6837 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBOSSO_LIBS"
6838 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBOSSO_CFLAGS"
6839 if test -z "$_LIB_FOUND"; then
6840 AC_MSG_ERROR([LibOSSO is required when building for Maemo])
6843 PKG_CHECK_MODULES(LIBHILDONFM,hildon-fm-2, _LIB_FOUND=1, _LIB_FOUND=)
6844 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONFM_LIBS"
6845 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONFM_CFLAGS"
6846 if test -z "$_LIB_FOUND"; then
6847 AC_MSG_ERROR([Hildon FM-2 is required when building for Maemo])
6852 if test "$MOZ_PLATFORM_MAEMO" -gt 5; then
6856 PKG_CHECK_MODULES(LIBLOCATION,liblocation, _LIB_FOUND=1, _LIB_FOUND=)
6857 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBLOCATION_LIBS"
6858 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBLOCATION_CFLAGS"
6859 if test "$_LIB_FOUND"; then
6860 MOZ_MAEMO_LIBLOCATION=1
6861 AC_DEFINE(MOZ_MAEMO_LIBLOCATION)
6863 AC_MSG_WARN([Cannot liblocation-dev. Disabling Maemo geolocation.])
6865 AC_SUBST(MOZ_MAEMO_LIBLOCATION)
6867 AC_SUBST(MOZ_PLATFORM_MAEMO_LIBS)
6868 AC_SUBST(MOZ_PLATFORM_MAEMO_CFLAGS)
6871 dnl ========================================================
6872 dnl = Enable building the Thumb2 instruction set
6873 dnl ========================================================
6874 MOZ_ARG_ENABLE_BOOL(thumb2,
6875 [ --enable-thumb2 Enable Thumb2 instruction set],
6879 if test -n "$MOZ_THUMB2"; then
6880 case "$target_cpu" in
6882 if test "$GNU_CC"; then
6883 CFLAGS="$CFLAGS -march=armv7-a -mthumb -Wa, -march=armv7-a -Wa, -mthumb"
6884 CXXFLAGS="$CXXFLAGS -march=armv7-a -mthumb -Wa, -march=armv7-a -Wa, -mthumb"
6885 ASFLAGS="$ASFLAGS -march=armv7-a -mthumb"
6887 AC_MSG_ERROR([--enable-thumb2 is not supported for non-GNU toolchains])
6891 AC_MSG_ERROR([--enable-thumb2 is not supported for non-ARM CPU architectures])
6896 dnl ========================================================
6897 dnl = faststripe theme
6898 dnl ========================================================
6899 MOZ_ARG_ENABLE_BOOL(faststripe,
6900 [ --enable-faststripe Use faststripe theme],
6901 MOZ_THEME_FASTSTRIPE=1,
6902 MOZ_THEME_FASTSTRIPE= )
6903 AC_SUBST(MOZ_THEME_FASTSTRIPE)
6905 dnl ========================================================
6907 dnl = Feature options that require extra sources to be pulled
6909 dnl ========================================================
6910 dnl MOZ_ARG_HEADER(Features that require extra sources)
6912 dnl ========================================================
6914 dnl = Debugging Options
6916 dnl ========================================================
6917 MOZ_ARG_HEADER(Debugging and Optimizations)
6919 dnl ========================================================
6920 dnl = Disable building with debug info.
6921 dnl = Debugging is OFF by default
6922 dnl ========================================================
6923 if test -z "$MOZ_DEBUG_FLAGS"
6927 if test "$GNU_CC"; then
6928 GCC_VERSION=`$CC -v 2>&1 | awk '/version/ { print $3 }'`
6929 case "$GCC_VERSION" in
6934 MOZ_DEBUG_FLAGS="-g"
6938 MOZ_DEBUG_FLAGS="-g"
6942 MOZ_DEBUG_FLAGS="-g"
6947 MOZ_ARG_ENABLE_STRING(debug,
6948 [ --enable-debug[=DBG] Enable building with developer debug info
6949 (using compiler flags DBG)],
6950 [ if test "$enableval" != "no"; then
6952 if test -n "$enableval" -a "$enableval" != "yes"; then
6953 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
6954 _MOZ_DEBUG_FLAGS_SET=1
6961 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG"
6962 MOZ_ARG_WITH_STRING(debug-label,
6963 [ --with-debug-label=LABELS
6964 Define DEBUG_<value> for each comma-separated
6966 [ for option in `echo $withval | sed 's/,/ /g'`; do
6967 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${option}"
6970 case "${target_os}" in
6972 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${USER}"
6974 msvc*|mks*|cygwin*|mingw*|os2*|wince*|winmo*)
6975 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
6978 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_`$WHOAMI`"
6981 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DTRACING"
6983 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
6985 if test -n "$MOZ_DEBUG"; then
6986 AC_MSG_CHECKING([for valid debug flags])
6987 _SAVE_CFLAGS=$CFLAGS
6988 CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
6989 AC_TRY_COMPILE([#include <stdio.h>],
6990 [printf("Hello World\n");],
6993 AC_MSG_RESULT([$_results])
6994 if test "$_results" = "no"; then
6995 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
6997 CFLAGS=$_SAVE_CFLAGS
7000 dnl ========================================================
7001 dnl enable mobile optimizations
7002 dnl ========================================================
7003 MOZ_ARG_ENABLE_BOOL(mobile-optimize,
7004 [ --enable-mobile-optimize Enable mobile optimizations],
7005 MOZ_GFX_OPTIMIZE_MOBILE=1)
7007 AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
7009 if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
7010 AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
7013 dnl ========================================================
7014 dnl = Enable code optimization. ON by default.
7015 dnl ========================================================
7016 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
7017 MOZ_OPTIMIZE_FLAGS="-O"
7020 MOZ_ARG_ENABLE_STRING(optimize,
7021 [ --disable-optimize Disable compiler optimization
7022 --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
7023 [ if test "$enableval" != "no"; then
7025 if test -n "$enableval" && test "$enableval" != "yes"; then
7026 MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
7031 fi ], MOZ_OPTIMIZE=1)
7033 if test "$COMPILE_ENVIRONMENT"; then
7034 if test -n "$MOZ_OPTIMIZE"; then
7035 AC_MSG_CHECKING([for valid optimization flags])
7036 _SAVE_CFLAGS=$CFLAGS
7037 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
7038 AC_TRY_COMPILE([#include <stdio.h>],
7039 [printf("Hello World\n");],
7042 AC_MSG_RESULT([$_results])
7043 if test "$_results" = "no"; then
7044 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
7046 CFLAGS=$_SAVE_CFLAGS
7048 fi # COMPILE_ENVIRONMENT
7050 AC_SUBST(MOZ_OPTIMIZE)
7051 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
7052 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
7053 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
7055 dnl ========================================================
7056 dnl = (Deprecated) generation of debugger info for specific modules
7057 dnl ========================================================
7058 MOZ_ARG_ENABLE_STRING(debugger-info-modules,
7059 [ --enable-debugger-info-modules
7060 Enable/disable debugger info for specific modules],
7061 [ if test "$enableval" != "no"; then
7062 AC_MSG_WARN([--enable-debugger-info-modules is deprecated, use --enable-debug-symbols instead])
7066 dnl ========================================================
7067 dnl = Enable generation of debug symbols
7068 dnl ========================================================
7069 MOZ_ARG_ENABLE_STRING(debug-symbols,
7070 [ --enable-debug-symbols[=DBG] Enable debugging symbols
7071 (using compiler flags DBG)],
7072 [ if test "$enableval" != "no"; then
7074 if test -n "$enableval" -a "$enableval" != "yes"; then
7075 if test -z "$_MOZ_DEBUG_FLAGS_SET"; then
7076 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
7078 AC_MSG_ERROR([--enable-debug-symbols flags cannot be used with --enable-debug flags])
7083 if test -n "$MOZ_DEBUG" -o -n "$MOZ_DEBUG_SYMBOLS"; then
7084 AC_DEFINE(MOZ_DEBUG_SYMBOLS)
7085 export MOZ_DEBUG_SYMBOLS
7088 dnl ========================================================
7089 dnl = Disable any treating of compile warnings as errors
7090 dnl ========================================================
7091 MOZ_ARG_DISABLE_BOOL(warnings-as-errors,
7092 [ --disable-warnings-as-errors Disable treating of warnings as errors],
7093 MOZ_DISABLE_WARNINGS_AS_ERRORS=1,
7094 MOZ_DISABLE_WARNINGS_AS_ERRORS= )
7095 if test "$MOZ_DISABLE_WARNINGS_AS_ERRORS"; then
7096 WARNINGS_AS_ERRORS=''
7099 dnl ========================================================
7100 dnl = Disable runtime logging checks
7101 dnl ========================================================
7102 MOZ_ARG_DISABLE_BOOL(logging,
7103 [ --disable-logging Disable logging facilities],
7104 NS_DISABLE_LOGGING=1,
7105 NS_DISABLE_LOGGING= )
7106 if test "$NS_DISABLE_LOGGING"; then
7107 AC_DEFINE(NS_DISABLE_LOGGING)
7109 AC_DEFINE(MOZ_LOGGING)
7112 dnl ========================================================
7113 dnl = This will enable logging of addref, release, ctor, dtor.
7114 dnl ========================================================
7115 _ENABLE_LOGREFCNT=42
7116 MOZ_ARG_ENABLE_BOOL(logrefcnt,
7117 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
7118 _ENABLE_LOGREFCNT=1,
7119 _ENABLE_LOGREFCNT= )
7120 if test "$_ENABLE_LOGREFCNT" = "1"; then
7121 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
7122 elif test -z "$_ENABLE_LOGREFCNT"; then
7123 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
7126 dnl ========================================================
7127 dnl = Enable trace malloc
7128 dnl ========================================================
7129 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
7130 MOZ_ARG_ENABLE_BOOL(trace-malloc,
7131 [ --enable-trace-malloc Enable malloc tracing],
7134 if test "$NS_TRACE_MALLOC"; then
7135 # Please, Mr. Linker Man, don't take away our symbol names
7136 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7138 AC_DEFINE(NS_TRACE_MALLOC)
7140 AC_SUBST(NS_TRACE_MALLOC)
7142 dnl ========================================================
7143 dnl = Enable jemalloc
7144 dnl ========================================================
7145 MOZ_ARG_ENABLE_BOOL(jemalloc,
7146 [ --enable-jemalloc Replace memory allocator with jemalloc],
7150 if test "$NS_TRACE_MALLOC"; then
7154 if test "$MOZ_MEMORY"; then
7156 dnl Don't try to run compiler tests on Windows
7157 if test "$OS_ARCH" = "WINNT"; then
7158 if test -z "$HAVE_64BIT_OS"; then
7159 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7161 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7164 AC_CHECK_SIZEOF([int *], [4])
7165 case "${ac_cv_sizeof_int_p}" in
7167 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7170 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7173 AC_MSG_ERROR([Unexpected pointer size])
7178 AC_DEFINE(MOZ_MEMORY)
7179 if test "x$MOZ_DEBUG" = "x1"; then
7180 AC_DEFINE(MOZ_MEMORY_DEBUG)
7182 dnl The generic feature tests that determine how to compute ncpus are long and
7183 dnl complicated. Therefore, simply define special cpp variables for the
7184 dnl platforms we have special knowledge of.
7187 AC_DEFINE(MOZ_MEMORY_DARWIN)
7190 AC_DEFINE(MOZ_MEMORY_BSD)
7193 AC_DEFINE(MOZ_MEMORY_LINUX)
7196 AC_DEFINE(MOZ_MEMORY_BSD)
7199 AC_DEFINE(MOZ_MEMORY_SOLARIS)
7201 *-msvc*|*-mks*|*-cygwin*|*-mingw*)
7202 AC_DEFINE(MOZ_MEMORY_WINDOWS)
7203 dnl This is sort of awful. Will revisit if we add support for more versions
7204 if test "$CC_VERSION" != "14.00.50727.762" -a "$CC_VERSION" != "15.00.30729.01"; then
7205 AC_MSG_ERROR([Building jemalloc requires exactly Visual C++ 2005 SP1 or 2008 SP1 currently.])
7207 if test -z "$WIN32_CRT_SRC_DIR"; then
7208 if test -z "$VCINSTALLDIR" -o ! -d "$VCINSTALLDIR"; then
7209 AC_MSG_ERROR([When building jemalloc, set WIN32_CRT_SRC_DIR to the path to the Visual C++ CRT source (usually VCINSTALLDIR\crt\src, but VCINSTALLDIR is not set, so I can't autodetect it for you).])
7211 WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src"
7215 case "${target_cpu}" in
7217 _WIN32_CRT_CPU=intel
7220 AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7224 if test ! -d "$WIN32_CRT_SRC_DIR"; then
7225 AC_MSG_ERROR([Invalid Win32 CRT source directory: ${WIN32_CRT_SRC_DIR}])
7227 WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd -W`
7228 _objdir_win=`pwd -W`
7229 WIN32_CUSTOM_CRT_DIR="$_objdir_win/memory/jemalloc/crtsrc/build/$_WIN32_CRT_CPU"
7230 MOZ_MEMORY_LDFLAGS="-MANIFEST:NO -LIBPATH:\"$WIN32_CUSTOM_CRT_DIR\" -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt19 -DEFAULTLIB:mozcpp19"
7231 dnl Also pass this to NSPR/NSS
7232 DLLFLAGS="$DLLFLAGS $MOZ_MEMORY_LDFLAGS"
7236 AC_DEFINE(MOZ_MEMORY_WINCE)
7237 AC_DEFINE(MOZ_MEMORY_WINDOWS)
7238 if test -z "$WINCE_WINDOWS_MOBILE"; then
7239 AC_DEFINE(MOZ_MEMORY_WINCE6)
7243 AC_DEFINE(MOZ_MEMORY_WINCE)
7244 AC_DEFINE(MOZ_MEMORY_WINDOWS)
7247 AC_DEFINE(MOZ_MEMORY_LINUX)
7248 AC_DEFINE(MOZ_MEMORY_ANDROID)
7251 AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7255 if test "$OS_ARCH" != "Darwin"; then
7256 dnl NB: this must be kept in sync with jemalloc.h
7257 AC_DEFINE(HAVE_JEMALLOC_VALLOC)
7258 AC_DEFINE(HAVE_JEMALLOC_POSIX_MEMALIGN)
7259 AC_DEFINE(HAVE_JEMALLOC_MEMALIGN)
7262 AC_SUBST(MOZ_MEMORY)
7263 AC_SUBST(MOZ_MEMORY_LDFLAGS)
7264 AC_SUBST(WIN32_CRT_SRC_DIR)
7265 dnl Need to set this for make because NSS doesn't have configure
7268 dnl ========================================================
7269 dnl = Use malloc wrapper lib
7270 dnl ========================================================
7271 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
7272 [ --enable-wrap-malloc Wrap malloc calls (gnu linker only)],
7276 if test -n "$_WRAP_MALLOC"; then
7277 if test "$GNU_CC"; then
7278 WRAP_MALLOC_CFLAGS="${LDFLAGS} -Wl,--wrap -Wl,malloc -Wl,--wrap -Wl,calloc -Wl,--wrap -Wl,valloc -Wl,--wrap -Wl,free -Wl,--wrap -Wl,realloc -Wl,--wrap -Wl,memalign -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 -Wl,--wrap -Wl,strdup -Wl,--wrap -Wl,strndup"
7279 MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) $(WRAP_MALLOC_LIB) -o $@'
7283 dnl ========================================================
7284 dnl = Location of malloc wrapper lib
7285 dnl ========================================================
7286 MOZ_ARG_WITH_STRING(wrap-malloc,
7287 [ --with-wrap-malloc=DIR Location of malloc wrapper library],
7288 WRAP_MALLOC_LIB=$withval)
7290 dnl ========================================================
7292 dnl ========================================================
7293 MOZ_ARG_ENABLE_BOOL(tracevis,
7294 [ --enable-tracevis Enable TraceVis tracing tool (default=no)],
7297 if test -n "$MOZ_TRACEVIS"; then
7298 AC_DEFINE(MOZ_TRACEVIS)
7301 dnl ========================================================
7303 dnl ========================================================
7304 MOZ_ARG_ENABLE_BOOL(gctimer,
7305 [ --enable-gctimer Enable GC timer (default=no)],
7308 if test -n "$MOZ_GCTIMER"; then
7309 AC_DEFINE(MOZ_GCTIMER)
7312 dnl ========================================================
7314 dnl ========================================================
7315 MOZ_ARG_ENABLE_BOOL(valgrind,
7316 [ --enable-valgrind Enable Valgrind integration hooks (default=no)],
7319 if test -n "$MOZ_VALGRIND"; then
7320 AC_CHECK_HEADER([valgrind/valgrind.h], [],
7322 [--enable-valgrind specified but Valgrind is not installed]))
7323 AC_DEFINE(MOZ_VALGRIND)
7326 dnl ========================================================
7328 dnl ========================================================
7329 MOZ_ARG_ENABLE_BOOL(jprof,
7330 [ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof)],
7333 if test -n "$MOZ_JPROF"; then
7334 AC_DEFINE(MOZ_JPROF)
7337 dnl ========================================================
7339 dnl ========================================================
7340 MOZ_ARG_ENABLE_BOOL(shark,
7341 [ --enable-shark Enable shark remote profiling (needs CHUD framework)],
7344 if test -n "$MOZ_SHARK"; then
7345 AC_DEFINE(MOZ_SHARK)
7348 dnl ========================================================
7350 dnl ========================================================
7351 MOZ_ARG_ENABLE_BOOL(callgrind,
7352 [ --enable-callgrind Enable callgrind profiling],
7355 if test -n "$MOZ_CALLGRIND"; then
7356 AC_DEFINE(MOZ_CALLGRIND)
7359 dnl ========================================================
7361 dnl ========================================================
7362 MOZ_ARG_ENABLE_BOOL(vtune,
7363 [ --enable-vtune Enable vtune profiling],
7366 if test -n "$MOZ_VTUNE"; then
7367 AC_DEFINE(MOZ_VTUNE)
7370 dnl ========================================================
7371 dnl Zealous JavaScript GC
7372 dnl ========================================================
7373 MOZ_ARG_ENABLE_BOOL(gczeal,
7374 [ --enable-gczeal Enable zealous JavaScript GCing],
7377 if test -n "$JS_GC_ZEAL"; then
7378 AC_DEFINE(JS_GC_ZEAL)
7381 dnl ========================================================
7382 dnl = Enable static checking using gcc-dehydra
7383 dnl ========================================================
7385 MOZ_ARG_WITH_STRING(static-checking,
7386 [ --with-static-checking=path/to/gcc_dehydra.so
7387 Enable static checking of code using GCC-dehydra],
7388 DEHYDRA_PATH=$withval,
7391 if test -n "$DEHYDRA_PATH"; then
7392 if test ! -f "$DEHYDRA_PATH"; then
7393 AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
7395 AC_DEFINE(NS_STATIC_CHECKING)
7397 AC_SUBST(DEHYDRA_PATH)
7399 dnl ========================================================
7400 dnl = Enable stripping of libs & executables
7401 dnl ========================================================
7402 MOZ_ARG_ENABLE_BOOL(strip,
7403 [ --enable-strip Enable stripping of libs & executables ],
7407 dnl ========================================================
7408 dnl = Enable stripping of libs & executables when packaging
7409 dnl ========================================================
7410 MOZ_ARG_ENABLE_BOOL(install-strip,
7411 [ --enable-install-strip Enable stripping of libs & executables when packaging ],
7415 dnl ========================================================
7416 dnl = --enable-elf-dynstr-gc
7417 dnl ========================================================
7418 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
7419 [ --enable-elf-dynstr-gc Enable elf dynstr garbage collector (opt builds only)],
7420 USE_ELF_DYNSTR_GC=1,
7421 USE_ELF_DYNSTR_GC= )
7423 dnl ========================================================
7425 dnl = Profiling and Instrumenting
7427 dnl ========================================================
7428 MOZ_ARG_HEADER(Profiling and Instrumenting)
7430 dnl ========================================================
7431 dnl = Enable timeline service, which provides lightweight
7432 dnl = instrumentation of mozilla for performance measurement.
7433 dnl = Timeline is off by default.
7434 dnl ========================================================
7435 MOZ_ARG_ENABLE_BOOL(timeline,
7436 [ --enable-timeline Enable timeline services ],
7439 if test -n "$MOZ_TIMELINE"; then
7440 AC_DEFINE(MOZ_TIMELINE)
7443 dnl ========================================================
7444 dnl = Enable NS_FUNCTION_TIMER, which provides Function
7445 dnl = timing for identifying code bottlenecks
7446 dnl = NS_FUNCTION_TIMER is off by default.
7447 dnl ========================================================
7448 MOZ_ARG_ENABLE_BOOL(functiontimer,
7449 [ --enable-functiontimer Enable NS_FUNCTION_TIMER ],
7450 NS_FUNCTION_TIMER=1,
7451 NS_FUNCTION_TIMER= )
7452 if test -n "$NS_FUNCTION_TIMER"; then
7453 AC_DEFINE(NS_FUNCTION_TIMER)
7456 dnl ========================================================
7457 dnl Turn on reflow counting
7458 dnl ========================================================
7459 MOZ_ARG_ENABLE_BOOL(reflow-perf,
7460 [ --enable-reflow-perf Enable reflow performance tracing],
7463 if test -n "$MOZ_REFLOW_PERF"; then
7464 AC_DEFINE(MOZ_REFLOW_PERF)
7467 dnl ========================================================
7468 dnl Enable code size metrics.
7469 dnl ========================================================
7470 MOZ_ARG_ENABLE_BOOL(codesighs,
7471 [ --enable-codesighs Enable code size analysis tools],
7472 _ENABLE_CODESIGHS=1,
7473 _ENABLE_CODESIGHS= )
7474 if test -n "$_ENABLE_CODESIGHS"; then
7475 if test -d $srcdir/tools/codesighs; then
7478 AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
7482 dnl ========================================================
7483 dnl = Support for Quantify (Windows)
7484 dnl ========================================================
7485 MOZ_ARG_ENABLE_BOOL(quantify,
7486 [ --enable-quantify Enable Quantify support (Windows only) ],
7490 dnl ========================================================
7491 dnl = Support for demangling undefined symbols
7492 dnl ========================================================
7493 if test -z "$SKIP_LIBRARY_CHECKS"; then
7496 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
7500 # Demangle only for debug or trace-malloc builds
7501 MOZ_DEMANGLE_SYMBOLS=
7502 if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
7503 MOZ_DEMANGLE_SYMBOLS=1
7504 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
7506 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
7508 dnl ========================================================
7509 dnl = Support for gcc stack unwinding (from gcc 3.3)
7510 dnl ========================================================
7511 if test "$HAVE_GCC3_ABI" && test -z "$SKIP_LIBRARY_CHECKS"; then
7512 AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
7515 dnl ========================================================
7519 dnl ========================================================
7520 MOZ_ARG_HEADER(Misc. Options)
7522 dnl ========================================================
7523 dnl update xterm title
7524 dnl ========================================================
7525 MOZ_ARG_ENABLE_BOOL(xterm-updates,
7526 [ --enable-xterm-updates Update XTERM titles with current command.],
7530 dnl =========================================================
7532 dnl =========================================================
7533 MOZ_ARG_ENABLE_STRING([chrome-format],
7534 [ --enable-chrome-format=jar|flat|both|symlink|omni
7535 Select FORMAT of chrome files (default=jar)],
7536 MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
7538 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
7539 MOZ_CHROME_FILE_FORMAT=jar
7542 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
7543 test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
7544 test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
7545 test "$MOZ_CHROME_FILE_FORMAT" != "both" &&
7546 test "$MOZ_CHROME_FILE_FORMAT" != "omni"; then
7547 AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, symlink, or omni])
7550 dnl =========================================================
7551 dnl Omnijar packaging (bug 552121)
7552 dnl =========================================================
7553 dnl Omnijar packaging is compatible with flat packaging.
7554 dnl In unpackaged builds, omnijar looks for files as if
7555 dnl things were flat packaged. After packaging, all files
7556 dnl are loaded from a single jar. MOZ_CHROME_FILE_FORMAT
7557 dnl is set to flat since putting files into jars is only
7558 dnl done during packaging with omnijar.
7559 if test "$MOZ_CHROME_FILE_FORMAT" = "omni"; then
7561 AC_DEFINE(MOZ_OMNIJAR)
7562 MOZ_CHROME_FILE_FORMAT=flat
7563 elif test "$MOZ_CHROME_FILE_FORMAT" = "jar"; then
7564 AC_DEFINE(MOZ_CHROME_FILE_FORMAT_JAR)
7567 AC_SUBST(MOZ_OMNIJAR)
7569 dnl ========================================================
7570 dnl = Define default location for MOZILLA_FIVE_HOME
7571 dnl ========================================================
7572 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
7573 [ --with-default-mozilla-five-home
7574 Set the default value for MOZILLA_FIVE_HOME],
7575 [ val=`echo $withval`
7576 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
7578 dnl ========================================================
7579 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
7580 dnl ========================================================
7581 MOZ_ARG_WITH_STRING(user-appdir,
7582 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
7583 [ val=`echo $withval`
7584 if echo "$val" | grep "\/" >/dev/null; then
7585 AC_MSG_ERROR("Homedir must be single relative path.")
7590 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
7592 dnl ========================================================
7593 dnl = Doxygen configuration
7594 dnl ========================================================
7595 dnl Use commas to specify multiple dirs to this arg
7596 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
7597 MOZ_ARG_WITH_STRING(doc-input-dirs,
7598 [ --with-doc-input-dirs=DIRS
7599 Header/idl dirs to create docs from],
7600 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7601 AC_SUBST(MOZ_DOC_INPUT_DIRS)
7603 dnl Use commas to specify multiple dirs to this arg
7604 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
7605 MOZ_ARG_WITH_STRING(doc-include-dirs,
7606 [ --with-doc-include-dirs=DIRS
7607 Include dirs to preprocess doc headers],
7608 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7609 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
7611 MOZ_DOC_OUTPUT_DIR='./dist/docs'
7612 MOZ_ARG_WITH_STRING(doc-output-dir,
7613 [ --with-doc-output-dir=DIR
7614 Dir to generate docs into],
7615 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
7616 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
7618 if test -z "$SKIP_COMPILER_CHECKS"; then
7619 dnl ========================================================
7621 dnl = Compiler Options
7623 dnl ========================================================
7624 MOZ_ARG_HEADER(Compiler Options)
7626 dnl ========================================================
7627 dnl Check for gcc -pipe support
7628 dnl ========================================================
7629 AC_MSG_CHECKING([for gcc -pipe support])
7630 if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
7631 echo '#include <stdio.h>' > dummy-hello.c
7632 echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
7633 ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
7634 cat dummy-hello.s 2> /dev/null | ${AS_BIN} -o dummy-hello.S - 2>&5
7635 if test $? = 0; then
7640 if test "$_res_as_stdin" = "yes"; then
7641 _SAVE_CFLAGS=$CFLAGS
7642 CFLAGS="$CFLAGS -pipe"
7643 AC_TRY_COMPILE( [ #include <stdio.h> ],
7644 [printf("Hello World\n");],
7645 [_res_gcc_pipe="yes"],
7646 [_res_gcc_pipe="no"] )
7647 CFLAGS=$_SAVE_CFLAGS
7649 if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then
7651 CFLAGS="$CFLAGS -pipe"
7652 CXXFLAGS="$CXXFLAGS -pipe"
7656 rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
7657 AC_MSG_RESULT([$_res])
7662 dnl ========================================================
7663 dnl Profile guided optimization
7664 dnl ========================================================
7665 dnl Test for profiling options
7666 dnl Under gcc 3.3, use -fprofile-arcs/-fbranch-probabilities
7667 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
7669 dnl Provide a switch to disable PGO even when called via profiledbuild.
7670 MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
7671 [ --disable-profile-guided-optimization
7672 Don't build with PGO even if called via make profiledbuild],
7673 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
7674 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
7676 AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
7678 _SAVE_CFLAGS="$CFLAGS"
7679 CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
7681 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
7682 AC_TRY_COMPILE([], [return 0;],
7683 [ PROFILE_GEN_CFLAGS="-fprofile-generate"
7684 result="yes" ], result="no")
7685 AC_MSG_RESULT([$result])
7687 if test $result = "yes"; then
7688 PROFILE_GEN_LDFLAGS="-fprofile-generate"
7689 PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch -freorder-blocks-and-partition"
7690 PROFILE_USE_LDFLAGS="-fprofile-use"
7692 CFLAGS="$_SAVE_CFLAGS -fprofile-arcs"
7693 AC_MSG_CHECKING([whether C compiler supports -fprofile-arcs])
7694 AC_TRY_COMPILE([], [return 0;],
7695 [ PROFILE_GEN_CFLAGS="-fprofile-arcs"
7696 result="yes" ], result="no")
7697 AC_MSG_RESULT([$result])
7698 if test $result = "yes"; then
7699 PROFILE_USE_CFLAGS="-fbranch-probabilities"
7701 # don't really care, this is an old GCC
7702 PROFILE_GEN_LDFLAGS=
7703 PROFILE_USE_LDFLAGS=
7706 CFLAGS="$_SAVE_CFLAGS"
7708 if test -n "$INTEL_CC"; then
7709 PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
7710 PROFILE_GEN_LDFLAGS=
7711 PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
7712 PROFILE_USE_LDFLAGS=
7715 dnl Sun Studio on Solaris
7716 if test "$SOLARIS_SUNPRO_CC"; then
7717 PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
7718 PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
7719 PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
7720 PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
7723 AC_SUBST(PROFILE_GEN_CFLAGS)
7724 AC_SUBST(PROFILE_GEN_LDFLAGS)
7725 AC_SUBST(PROFILE_USE_CFLAGS)
7726 AC_SUBST(PROFILE_USE_LDFLAGS)
7730 dnl ========================================================
7731 dnl Test for -pedantic bustage
7732 dnl ========================================================
7733 MOZ_ARG_DISABLE_BOOL(pedantic,
7734 [ --disable-pedantic Issue all warnings demanded by strict ANSI C ],
7736 if test "$_PEDANTIC"; then
7737 _SAVE_CXXFLAGS=$CXXFLAGS
7738 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
7739 AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
7740 AC_TRY_COMPILE([$configure_static_assert_macros],
7741 [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
7742 result="no", result="yes" )
7743 AC_MSG_RESULT([$result])
7744 CXXFLAGS="$_SAVE_CXXFLAGS"
7748 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
7749 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
7752 AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic. Reconfigure using --disable-pedantic. ])
7757 dnl ========================================================
7758 dnl Test for correct temporary object destruction order
7759 dnl ========================================================
7760 dnl We want to make sure the compiler follows the C++ spec here as
7761 dnl xpcom and the string classes depend on it (bug 235381).
7762 AC_MSG_CHECKING([for correct temporary object destruction order])
7763 AC_TRY_RUN([ class A {
7764 public: A(int& x) : mValue(x) {}
7766 operator char**() { return 0; }
7767 private: int& mValue;
7769 void func(char **arg) {}
7780 result="yes", result="no", result="maybe")
7781 AC_MSG_RESULT([$result])
7783 if test "$result" = "no"; then
7784 AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
7787 dnl ========================================================
7788 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
7789 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
7790 dnl raw pointers in nsCOMPtr.h. (VC++ has the same bug.)
7791 dnl ========================================================
7792 _SAVE_CXXFLAGS=$CXXFLAGS
7793 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
7794 AC_CACHE_CHECK(for correct overload resolution with const and templates,
7795 ac_nscap_nonconst_opeq_bug,
7804 template <class T, class U>
7805 int operator==(const Pointer<T>& rhs, U* lhs)
7807 return rhs.myPtr == lhs;
7810 template <class T, class U>
7811 int operator==(const Pointer<T>& rhs, const U* lhs)
7813 return rhs.myPtr == lhs;
7821 ac_nscap_nonconst_opeq_bug="no",
7822 ac_nscap_nonconst_opeq_bug="yes")])
7823 CXXFLAGS="$_SAVE_CXXFLAGS"
7825 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
7826 AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
7828 fi # SKIP_COMPILER_CHECKS
7830 dnl ========================================================
7832 dnl Should be smarter and check that the compiler does indeed have rtti
7833 dnl ========================================================
7835 MOZ_ARG_ENABLE_BOOL(cpp-rtti,
7836 [ --enable-cpp-rtti Enable C++ RTTI ],
7837 [ _MOZ_USE_RTTI=1 ],
7840 if test "$_MOZ_USE_RTTI"; then
7841 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
7843 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
7846 AC_SUBST(_MOZ_RTTI_FLAGS_ON)
7848 dnl ========================================================
7849 dnl C++ exceptions (g++/VC/irix6/Sun only - for now)
7850 dnl Should be smarter and check that the compiler does indeed have exceptions
7851 dnl ========================================================
7852 MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
7853 [ --enable-cpp-exceptions Enable C++ exceptions ],
7854 [ _MOZ_CPP_EXCEPTIONS=1 ],
7855 [ _MOZ_CPP_EXCEPTIONS= ])
7857 if test "$_MOZ_CPP_EXCEPTIONS"; then
7858 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_ON
7859 AC_DEFINE(MOZ_CPP_EXCEPTIONS)
7861 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_OFF
7864 AC_SUBST(_MOZ_EXCEPTIONS_FLAGS_ON)
7866 # Irix & OSF native compilers do not like exception declarations
7867 # when exceptions are disabled
7868 if test -n "$MIPSPRO_CXX" -o -n "$COMPAQ_CXX" -o -n "$VACPP"; then
7869 AC_DEFINE(CPP_THROW_NEW, [])
7871 AC_DEFINE(CPP_THROW_NEW, [throw()])
7875 dnl ========================================================
7877 dnl = Build depencency options
7879 dnl ========================================================
7880 MOZ_ARG_HEADER(Build dependencies)
7882 dnl ========================================================
7883 dnl = Do not auto generate dependency info
7884 dnl ========================================================
7886 MOZ_ARG_DISABLE_BOOL(auto-deps,
7887 [ --disable-auto-deps Do not automatically generate dependency info],
7891 if test -n "$MOZ_AUTO_DEPS"; then
7892 dnl ========================================================
7893 dnl = Use mkdepend instead of $CC -MD for dependency generation
7894 dnl ========================================================
7896 MOZ_ARG_DISABLE_BOOL(md,
7897 [ --disable-md Do not use compiler-based dependencies ],
7900 [dnl Default is to turn on -MD if using GNU-compatible compilers
7901 if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
7904 dnl Default is to use -xM if using Sun Studio on Solaris
7905 if test "$SOLARIS_SUNPRO_CC"; then
7908 if test "$_cpp_md_flag"; then
7910 if test "$OS_ARCH" = "OpenVMS"; then
7911 _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(basename $(@F)).pp))'
7913 _DEPEND_CFLAGS='$(filter-out %/.pp,-Wp,-MD,$(MDDEPDIR)/$(basename $(@F)).pp)'
7915 dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
7916 if test "$SOLARIS_SUNPRO_CC"; then
7921 dnl Don't override this for MSVC
7922 if test -z "$_WIN32_MSVC"; then
7923 _USE_CPP_INCLUDE_FLAG=
7924 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7925 _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
7930 AC_SUBST(MOZ_AUTO_DEPS)
7931 AC_SUBST(COMPILER_DEPEND)
7935 dnl ========================================================
7937 dnl = Static Build Options
7939 dnl ========================================================
7940 MOZ_ARG_HEADER(Static build options)
7942 MOZ_ARG_ENABLE_BOOL(static,
7943 [ --enable-static Enable building of internal static libs],
7944 BUILD_STATIC_LIBS=1,
7947 MOZ_ARG_ENABLE_BOOL(libxul,
7948 [ --enable-libxul Enable building of libxul],
7949 MOZ_ENABLE_LIBXUL=1,
7952 if test -n "$MOZ_STATIC_BUILD_UNSUPPORTED" -a -n "$BUILD_STATIC_LIBS"; then
7953 AC_MSG_ERROR([--enable-static is not supported for building $MOZ_APP_NAME. You probably want --enable-libxul.])
7956 if test -n "$MOZ_ENABLE_LIBXUL" -a -n "$BUILD_STATIC_LIBS"; then
7957 AC_MSG_ERROR([--enable-libxul is not compatible with --enable-static])
7960 if test -n "$MOZ_IPC" -a -z "$MOZ_ENABLE_LIBXUL"; then
7961 AC_MSG_ERROR([--enable-ipc requires --enable-libxul])
7964 AC_SUBST(LIBXUL_LIBS)
7966 if test -n "$MOZ_ENABLE_LIBXUL"; then
7967 XPCOM_LIBS="$LIBXUL_LIBS"
7968 AC_DEFINE(MOZ_ENABLE_LIBXUL)
7970 if test -n "$BUILD_STATIC_LIBS"; then
7971 AC_DEFINE(MOZ_STATIC_BUILD)
7973 XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS"
7976 dnl ========================================================
7978 dnl = Standalone module options
7980 dnl ========================================================
7981 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
7983 dnl Check for GLib and libIDL.
7984 dnl ========================================================
7985 case "$target_os" in
7986 msvc*|mks*|cygwin*|mingw*|wince*|winmo*)
7987 SKIP_IDL_CHECK="yes"
7994 if test -z "$COMPILE_ENVIRONMENT"; then
7995 SKIP_IDL_CHECK="yes"
7998 dnl = Allow users to disable libIDL checking for standalone modules
7999 MOZ_ARG_WITHOUT_BOOL(libIDL,
8000 [ --without-libIDL Skip check for libIDL (standalone modules only)],
8001 SKIP_IDL_CHECK="yes")
8003 if test "$SKIP_IDL_CHECK" = "no"
8006 if test "$MACOS_SDK_DIR"; then
8007 dnl xpidl, and therefore libIDL, is only needed on the build host.
8008 dnl Don't build it against the SDK, as that causes problems.
8009 _MACSAVE_CFLAGS="$CFLAGS"
8010 _MACSAVE_LIBS="$LIBS"
8011 _MACSAVE_LDFLAGS="$LDFLAGS"
8012 _MACSAVE_NEXT_ROOT="$NEXT_ROOT"
8014 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"`
8015 LIBS=`echo $LIBS|sed -e "s?-L${MACOS_SDK_DIR}/usr/lib[^ ]*??g"`
8016 LDFLAGS=`echo $LDFLAGS|sed -e "s?-Wl,-syslibroot,${MACOS_SDK_DIR}??g"`
8021 if test "$MOZ_ENABLE_GTK2"; then
8022 PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0 glib-2.0 gobject-2.0, _LIBIDL_FOUND=1,_LIBIDL_FOUND=)
8024 dnl if no gtk/libIDL1 or gtk2/libIDL2 combination was found, fall back
8025 dnl to either libIDL1 or libIDL2.
8026 if test -z "$_LIBIDL_FOUND"; then
8027 AM_PATH_LIBIDL($LIBIDL_VERSION,_LIBIDL_FOUND=1)
8028 if test -z "$_LIBIDL_FOUND"; then
8029 PKG_CHECK_MODULES(LIBIDL, libIDL-2.0 >= 0.8.0,_LIBIDL_FOUND=1)
8033 dnl If we don't have a libIDL config program & not cross-compiling,
8034 dnl look for orbit-config instead.
8036 if test -z "$_LIBIDL_FOUND" && test -z "$CROSS_COMPILE"; then
8037 MOZ_PATH_PROGS(ORBIT_CONFIG, $ORBIT_CONFIG orbit-config)
8038 if test -n "$ORBIT_CONFIG"; then
8039 AC_MSG_CHECKING([for ORBit libIDL usability])
8040 _ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags`
8041 _ORBIT_LIBS=`${ORBIT_CONFIG} client --libs`
8042 _ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}`
8043 _ORBIT_LIB_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-L/); } }' -- ${_ORBIT_LIBS}`
8044 LIBIDL_CFLAGS="$_ORBIT_INC_PATH"
8045 LIBIDL_LIBS="$_ORBIT_LIB_PATH -lIDL -lglib"
8047 _SAVE_CFLAGS="$CFLAGS"
8049 CFLAGS="$LIBIDL_CFLAGS $CFLAGS"
8050 LIBS="$LIBIDL_LIBS $LIBS"
8053 #include <libIDL/IDL.h>
8056 s=strdup(IDL_get_libver_string());
8069 AC_MSG_RESULT($result)
8070 CFLAGS="$_SAVE_CFLAGS"
8074 if test -z "$_LIBIDL_FOUND"; then
8075 AC_MSG_ERROR([libIDL not found.
8076 libIDL $LIBIDL_VERSION or higher is required.])
8078 if test "$MACOS_SDK_DIR"; then
8079 CFLAGS="$_MACSAVE_CFLAGS"
8080 LIBS="$_MACSAVE_LIBS"
8081 LDFLAGS="$_MACSAVE_LDFLAGS"
8082 if test -n "$_MACSAVE_NEXT_ROOT" ; then
8083 export NEXT_ROOT="$_MACSAVE_NEXT_ROOT"
8088 if test -n "$CROSS_COMPILE"; then
8089 if test -z "$HOST_LIBIDL_CONFIG"; then
8090 HOST_LIBIDL_CONFIG="$LIBIDL_CONFIG"
8092 if test -n "$HOST_LIBIDL_CONFIG" && test "$HOST_LIBIDL_CONFIG" != "no"; then
8093 HOST_LIBIDL_CFLAGS=`${HOST_LIBIDL_CONFIG} --cflags`
8094 HOST_LIBIDL_LIBS=`${HOST_LIBIDL_CONFIG} --libs`
8096 HOST_LIBIDL_CFLAGS="$LIBIDL_CFLAGS"
8097 HOST_LIBIDL_LIBS="$LIBIDL_LIBS"
8101 if test -z "$SKIP_PATH_CHECKS"; then
8102 if test -z "${GLIB_CFLAGS}" || test -z "${GLIB_LIBS}" ; then
8103 if test "$MOZ_ENABLE_GTK2" || test "$USE_ELF_DYNSTR_GC" ; then
8104 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
8106 AM_PATH_GLIB(${GLIB_VERSION})
8111 if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then
8112 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
8115 AC_SUBST(LIBIDL_CFLAGS)
8116 AC_SUBST(LIBIDL_LIBS)
8117 AC_SUBST(STATIC_LIBIDL)
8118 AC_SUBST(GLIB_CFLAGS)
8120 AC_SUBST(GLIB_GMODULE_LIBS)
8121 AC_SUBST(HOST_LIBIDL_CONFIG)
8122 AC_SUBST(HOST_LIBIDL_CFLAGS)
8123 AC_SUBST(HOST_LIBIDL_LIBS)
8125 dnl ========================================================
8127 dnl ========================================================
8128 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
8131 MOZ_ARG_ENABLE_BOOL(system-cairo,
8132 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
8136 # Check for headers defining standard int types.
8137 AC_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
8139 if test "$MOZ_TREE_CAIRO"; then
8140 AC_DEFINE(MOZ_TREE_CAIRO)
8142 # For now we assume that we will have a uint64_t available through
8143 # one of the above headers or mozstdint.h.
8144 AC_DEFINE(HAVE_UINT64_T)
8146 # Define macros for cairo-features.h
8147 if test "$MOZ_X11"; then
8148 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
8149 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
8150 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
8151 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
8152 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8153 MOZ_ENABLE_CAIRO_FT=1
8154 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
8156 if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
8157 QT_SURFACE_FEATURE="#define CAIRO_HAS_QT_SURFACE 1"
8159 if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
8160 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
8161 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
8162 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
8164 if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
8165 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
8166 if test -z "$WINCE"; then
8167 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
8168 if test "$MOZ_WINSDK_TARGETVER" -ge "06010000"; then
8169 WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
8170 WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1"
8171 MOZ_ENABLE_D2D_SURFACE=1
8172 MOZ_ENABLE_DWRITE_FONT=1
8174 WIN32_DWRITE_FONT_FEATURE=
8175 WIN32_D2D_SURFACE_FEATURE=
8179 WIN32_DWRITE_FONT_FEATURE=
8180 WIN32_D2D_SURFACE_FEATURE=
8183 AC_TRY_COMPILE([#include <ddraw.h>], [int foo = DDLOCK_WAITNOTBUSY;], HAS_DDRAW=1, HAS_DDRAW=)
8184 if test -z "$HAS_DDRAW"; then
8185 AC_MSG_WARN([DirectDraw ddraw.h header not found or it's missing DDLOCK_WAITNOTBUSY, disabling DirectDraw surface. If you have an older SDK (such as the CE5 SDK), try copying in ddraw.lib and ddraw.h from the WM6 SDK.])
8186 DDRAW_SURFACE_FEATURE=
8188 DDRAW_SURFACE_FEATURE="#define CAIRO_HAS_DDRAW_SURFACE 1"
8191 if test -z "$OGLES_SDK_DIR"; then
8192 OGLES_SURFACE_FEATURE=
8195 #include <EGL/egl.h>
8196 #include <EGL/eglext.h>
8197 #include <GLES2/gl2.h>
8198 #include <GLES2/gl2ext.h>
8199 ], [ EGLDisplay _cairo_ddraw_egl_dpy = EGL_NO_DISPLAY;], HAS_OGLES=1, HAS_OGLES=)
8200 if test -z "$HAS_OGLES"; then
8201 AC_MSG_WARN([OpenGL ES2 headers not found, disabling OpenGL acceleration surfaces.])
8202 OGLES_SURFACE_FEATURE=
8204 OGLES_SURFACE_FEATURE="#define CAIRO_DDRAW_USE_GL 1"
8208 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
8210 if test "$MOZ_WIDGET_TOOLKIT" = "os2"; then
8211 OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
8212 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8213 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
8214 MOZ_ENABLE_CAIRO_FT=1
8215 CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
8216 CAIRO_FT_LIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
8218 if test "$MOZ_WIDGET_TOOLKIT" = "beos"; then
8219 PKG_CHECK_MODULES(CAIRO_FT, fontconfig freetype2)
8220 BEOS_SURFACE_FEATURE="#define CAIRO_HAS_BEOS_SURFACE 1"
8221 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8222 MOZ_ENABLE_CAIRO_FT=1
8224 if test "$USE_FC_FREETYPE"; then
8225 FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
8227 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
8228 AC_SUBST(MOZ_ENABLE_DWRITE_FONT)
8229 AC_SUBST(MOZ_ENABLE_D2D_SURFACE)
8230 AC_SUBST(CAIRO_FT_CFLAGS)
8233 if test "$MOZ_DEBUG"; then
8234 SANITY_CHECKING_FEATURE="#define CAIRO_DO_SANITY_CHECKING 1"
8236 SANITY_CHECKING_FEATURE="#undef CAIRO_DO_SANITY_CHECKING"
8239 PNG_FUNCTIONS_FEATURE="#define CAIRO_HAS_PNG_FUNCTIONS 1"
8241 AC_SUBST(PS_SURFACE_FEATURE)
8242 AC_SUBST(PDF_SURFACE_FEATURE)
8243 AC_SUBST(SVG_SURFACE_FEATURE)
8244 AC_SUBST(XLIB_SURFACE_FEATURE)
8245 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
8246 AC_SUBST(QUARTZ_SURFACE_FEATURE)
8247 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
8248 AC_SUBST(XCB_SURFACE_FEATURE)
8249 AC_SUBST(WIN32_SURFACE_FEATURE)
8250 AC_SUBST(DDRAW_SURFACE_FEATURE)
8251 AC_SUBST(OGLES_SURFACE_FEATURE)
8252 AC_SUBST(OS2_SURFACE_FEATURE)
8253 AC_SUBST(BEOS_SURFACE_FEATURE)
8254 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
8255 AC_SUBST(FT_FONT_FEATURE)
8256 AC_SUBST(FC_FONT_FEATURE)
8257 AC_SUBST(WIN32_FONT_FEATURE)
8258 AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
8259 AC_SUBST(WIN32_D2D_SURFACE_FEATURE)
8260 AC_SUBST(QUARTZ_FONT_FEATURE)
8261 AC_SUBST(PNG_FUNCTIONS_FEATURE)
8262 AC_SUBST(QT_SURFACE_FEATURE)
8264 if test "$_WIN32_MSVC"; then
8265 MOZ_CAIRO_LIBS='$(DEPTH)/gfx/cairo/cairo/src/mozcairo.lib $(DEPTH)/gfx/cairo/libpixman/src/mozlibpixman.lib'
8267 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"
8269 if test "$MOZ_X11"; then
8270 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS -lXrender -lfreetype -lfontconfig"
8274 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
8275 mv -f $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig 2> /dev/null
8278 PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION pixman-1 freetype2 fontconfig)
8279 MOZ_CAIRO_CFLAGS=$CAIRO_CFLAGS
8280 MOZ_CAIRO_LIBS=$CAIRO_LIBS
8281 if test "$MOZ_X11"; then
8282 PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
8283 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
8284 MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
8288 AC_SUBST(MOZ_TREE_CAIRO)
8289 AC_SUBST(MOZ_CAIRO_CFLAGS)
8290 AC_SUBST(MOZ_CAIRO_LIBS)
8293 dnl ========================================================
8295 QCMS_LIBS='$(DEPTH)/gfx/qcms/$(LIB_PREFIX)mozqcms.$(LIB_SUFFIX)'
8298 dnl ========================================================
8300 dnl ========================================================
8301 MOZ_ARG_DISABLE_BOOL(xul,
8302 [ --disable-xul Disable XUL],
8304 if test "$MOZ_XUL"; then
8307 dnl remove extensions that require XUL
8308 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
8313 dnl ========================================================
8314 dnl disable profile locking
8315 dnl do no use this in applications that can have more than
8316 dnl one process accessing the profile directory.
8317 dnl ========================================================
8318 MOZ_ARG_DISABLE_BOOL(profilelocking,
8319 [ --disable-profilelocking Disable profile locking],
8320 MOZ_PROFILELOCKING=,
8321 MOZ_PROFILELOCKING=1 )
8322 if test "$MOZ_PROFILELOCKING"; then
8323 AC_DEFINE(MOZ_PROFILELOCKING)
8326 dnl ========================================================
8327 dnl disable rdf services
8328 dnl ========================================================
8329 MOZ_ARG_DISABLE_BOOL(rdf,
8330 [ --disable-rdf Disable RDF],
8332 if test "$MOZ_RDF"; then
8338 dnl ========================================================
8339 dnl necko configuration options
8340 dnl ========================================================
8343 dnl option to disable various necko protocols
8345 MOZ_ARG_ENABLE_STRING(necko-protocols,
8346 [ --enable-necko-protocols[={http,ftp,default,all,none}]
8347 Enable/disable specific protocol handlers],
8348 [ for option in `echo $enableval | sed 's/,/ /g'`; do
8349 if test "$option" = "yes" || test "$option" = "all"; then
8350 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8351 elif test "$option" = "no" || test "$option" = "none"; then
8353 elif test "$option" = "default"; then
8354 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8355 elif test `echo "$option" | grep -c \^-` != 0; then
8356 option=`echo $option | sed 's/^-//'`
8357 NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
8359 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
8362 NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
8364 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
8365 AC_SUBST(NECKO_PROTOCOLS)
8366 for p in $NECKO_PROTOCOLS; do
8367 AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
8371 dnl option to disable necko's disk cache
8373 MOZ_ARG_DISABLE_BOOL(necko-disk-cache,
8374 [ --disable-necko-disk-cache
8375 Disable necko disk cache],
8378 AC_SUBST(NECKO_DISK_CACHE)
8379 if test "$NECKO_DISK_CACHE"; then
8380 AC_DEFINE(NECKO_DISK_CACHE)
8384 dnl option to disable necko's wifi scanner
8386 MOZ_ARG_DISABLE_BOOL(necko-wifi,
8387 [ --disable-necko-wifi Disable necko wifi scanner],
8392 if test "$OS_ARCH" = "OS2"; then
8393 dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566
8396 if test "$NECKO_WIFI" -a \
8397 "$OS_ARCH" != "Linux" -a \
8398 "$OS_ARCH" != "Darwin" -a \
8399 "$OS_ARCH" != "SunOS" -a \
8400 "$OS_ARCH" != "WINNT" -a \
8401 "$OS_ARCH" != "WINCE"; then
8402 AC_MSG_ERROR([Necko WiFi scanning not supported on your platform, use --disable-necko-wifi])
8405 if test -z "$SKIP_LIBRARY_CHECKS" -a "$NECKO_WIFI" -a "$OS_ARCH" = "Linux"
8407 AC_CHECK_HEADER([iwlib.h])
8408 if test "$ac_cv_header_iwlib_h" != "yes"; then
8409 AC_MSG_ERROR([Can't find header iwlib.h for Necko WiFi scanning (might be in package libiw-dev (Ubuntu) or wireless-tools-devel (Fedora)); use --disable-necko-wifi to disable])
8413 if test "$NECKO_WIFI"; then
8414 AC_DEFINE(NECKO_WIFI)
8416 AC_SUBST(NECKO_WIFI)
8419 dnl option to disable cookies
8421 MOZ_ARG_DISABLE_BOOL(cookies,
8422 [ --disable-cookies Disable cookie support],
8425 AC_SUBST(NECKO_COOKIES)
8426 if test "$NECKO_COOKIES"; then
8427 AC_DEFINE(NECKO_COOKIES)
8431 dnl Build jsctypes on the platforms we can, unless it's explicitly disabled.
8433 MOZ_ARG_DISABLE_BOOL(ctypes,
8434 [ --disable-ctypes Disable js-ctypes],
8437 AC_SUBST(BUILD_CTYPES)
8438 if test "$BUILD_CTYPES"; then
8439 if test "$OS_ARCH" = "WINCE" -a `echo $OS_TEST | grep -ic arm` = 1; then
8440 # Disable ctypes for arm/wince.
8443 AC_DEFINE(BUILD_CTYPES)
8447 dnl NECKO_ configuration options are not global
8448 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_"
8450 dnl Only build Mork if it's required
8452 if test "$MOZ_MORK"; then
8456 dnl Build the lightweight Mork reader if required
8457 AC_SUBST(MOZ_MORKREADER)
8458 if test "$MOZ_MORKREADER"; then
8459 AC_DEFINE(MOZ_MORKREADER)
8462 dnl Build Places if required
8463 if test "$MOZ_PLACES"; then
8464 AC_DEFINE(MOZ_PLACES)
8467 dnl ========================================================
8468 if test "$MOZ_DEBUG" || test "$NS_TRACE_MALLOC"; then
8469 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
8472 dnl ========================================================
8474 dnl = Maintainer debug option (no --enable equivalent)
8476 dnl ========================================================
8481 AC_SUBST(AR_EXTRACT)
8485 AC_SUBST(AS_DASH_C_FLAG)
8493 AC_SUBST(NS_USE_NATIVE)
8494 AC_SUBST(MOZ_WIDGET_TOOLKIT)
8495 AC_SUBST(MOZ_UPDATE_XTERM)
8497 AC_SUBST(MOZ_PLATFORM_MAEMO)
8498 AC_SUBST(MOZ_AUTH_EXTENSION)
8499 AC_SUBST(MOZ_MATHML)
8500 AC_SUBST(MOZ_PERMISSIONS)
8502 AC_SUBST(MOZ_NO_INSPECTOR_APIS)
8503 AC_SUBST(MOZ_PREF_EXTENSIONS)
8506 AC_SUBST(MOZ_XSLT_STANDALONE)
8507 AC_SUBST(MOZ_JS_LIBS)
8510 AC_SUBST(MOZ_DEBUG_SYMBOLS)
8511 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
8512 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
8513 AC_SUBST(MOZ_DEBUG_FLAGS)
8514 AC_SUBST(MOZ_DEBUG_LDFLAGS)
8515 AC_SUBST(WARNINGS_AS_ERRORS)
8516 AC_SUBST(MOZ_EXTENSIONS)
8517 AC_SUBST(MOZ_IMG_DECODERS)
8518 AC_SUBST(MOZ_IMG_ENCODERS)
8519 AC_SUBST(MOZ_JSDEBUGGER)
8520 AC_SUBST(MOZ_PLUGINS)
8521 AC_SUBST(MOZ_LOG_REFCNT)
8525 AC_SUBST(MOZ_CALLGRIND)
8527 AC_SUBST(MOZ_JSLOADER)
8528 AC_SUBST(MOZ_USE_NATIVE_UCONV)
8529 AC_SUBST(MOZ_QUANTIFY)
8531 AC_SUBST(MOZ_PLACES)
8532 AC_SUBST(MOZ_PLACES_BOOKMARKS)
8533 AC_SUBST(MOZ_STORAGE)
8534 AC_SUBST(MOZ_TOOLKIT_SEARCH)
8536 AC_SUBST(NS_PRINTING)
8538 AC_SUBST(MOZ_HELP_VIEWER)
8540 AC_SUBST(MOZ_JAVAXPCOM)
8541 AC_SUBST(JAVA_INCLUDE_PATH)
8546 AC_SUBST(MOZ_PROFILELOCKING)
8549 AC_SUBST(MOZ_XIE_LIBS)
8550 AC_SUBST(MOZ_ENABLE_POSTSCRIPT)
8552 AC_SUBST(BUILD_STATIC_LIBS)
8553 AC_SUBST(MOZ_ENABLE_LIBXUL)
8554 AC_SUBST(ENABLE_TESTS)
8556 AC_SUBST(MOZ_UNIVERSALCHARDET)
8557 AC_SUBST(ACCESSIBILITY)
8558 AC_SUBST(MOZ_VIEW_SOURCE)
8559 AC_SUBST(MOZ_SPELLCHECK)
8560 AC_SUBST(MOZ_USER_DIR)
8561 AC_SUBST(MOZ_CRASHREPORTER)
8563 AC_SUBST(ENABLE_STRIP)
8564 AC_SUBST(PKG_SKIP_STRIP)
8565 AC_SUBST(USE_ELF_DYNSTR_GC)
8566 AC_SUBST(INCREMENTAL_LINKER)
8567 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
8568 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
8570 AC_SUBST(MOZ_FIX_LINK_PATHS)
8571 AC_SUBST(XPCOM_LIBS)
8572 AC_SUBST(XPCOM_FROZEN_LDOPTS)
8573 AC_SUBST(XPCOM_GLUE_LDOPTS)
8574 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
8576 AC_SUBST(USE_DEPENDENT_LIBS)
8578 AC_SUBST(MOZ_BUILD_ROOT)
8579 AC_SUBST(MOZ_OS2_TOOLS)
8580 AC_SUBST(MOZ_OS2_USE_DECLSPEC)
8582 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
8583 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
8584 AC_SUBST(MOZ_TIMELINE)
8585 AC_SUBST(OGLES_SDK_DIR)
8587 AC_SUBST(MOZ_APP_NAME)
8588 AC_SUBST(MOZ_APP_DISPLAYNAME)
8589 AC_SUBST(MOZ_APP_VERSION)
8590 AC_SUBST(MOZ_APP_UA_EXTRA)
8591 AC_SUBST(FIREFOX_VERSION)
8593 AC_SUBST(MOZ_PKG_SPECIAL)
8595 AC_SUBST(MOZILLA_OFFICIAL)
8598 AC_SUBST(MOZ_MAPINFO)
8599 AC_SUBST(MOZ_BROWSE_INFO)
8600 AC_SUBST(MOZ_TOOLS_DIR)
8601 AC_SUBST(CYGWIN_WRAPPER)
8603 AC_SUBST(WIN32_REDIST_DIR)
8607 AC_SUBST(WINCE_SDK_DIR)
8608 AC_SUBST(WINCE_WINDOWS_MOBILE)
8610 dnl Echo the CFLAGS to remove extra whitespace.
8617 $_MOZ_EXCEPTIONS_FLAGS \
8618 $_WARNINGS_CXXFLAGS \
8621 COMPILE_CFLAGS=`echo \
8626 COMPILE_CXXFLAGS=`echo \
8627 $_DEFINES_CXXFLAGS \
8631 AC_SUBST(SYSTEM_MAKEDEPEND)
8632 AC_SUBST(SYSTEM_LIBXUL)
8633 AC_SUBST(SYSTEM_JPEG)
8634 AC_SUBST(SYSTEM_PNG)
8635 AC_SUBST(SYSTEM_ZLIB)
8636 AC_SUBST(SYSTEM_BZ2)
8638 AC_SUBST(JPEG_CFLAGS)
8640 AC_SUBST(ZLIB_CFLAGS)
8642 AC_SUBST(BZ2_CFLAGS)
8644 AC_SUBST(PNG_CFLAGS)
8647 AC_SUBST(MOZ_JPEG_CFLAGS)
8648 AC_SUBST(MOZ_JPEG_LIBS)
8649 AC_SUBST(MOZ_ZLIB_CFLAGS)
8650 AC_SUBST(MOZ_ZLIB_LIBS)
8651 AC_SUBST(MOZ_BZ2_CFLAGS)
8652 AC_SUBST(MOZ_BZ2_LIBS)
8653 AC_SUBST(MOZ_PNG_CFLAGS)
8654 AC_SUBST(MOZ_PNG_LIBS)
8656 AC_SUBST(NSPR_CFLAGS)
8658 AC_SUBST(MOZ_NATIVE_NSPR)
8660 AC_SUBST(NSS_CFLAGS)
8662 AC_SUBST(NSS_DEP_LIBS)
8663 AC_SUBST(MOZ_NATIVE_NSS)
8664 AC_SUBST(NSS_DISABLE_DBM)
8669 AC_SUBST(COMPILE_CFLAGS)
8670 AC_SUBST(COMPILE_CXXFLAGS)
8673 AC_SUBST(CROSS_COMPILE)
8674 AC_SUBST(WCHAR_CFLAGS)
8678 AC_SUBST(HOST_CFLAGS)
8679 AC_SUBST(HOST_CXXFLAGS)
8680 AC_SUBST(HOST_OPTIMIZE_FLAGS)
8682 AC_SUBST(HOST_AR_FLAGS)
8684 AC_SUBST(HOST_RANLIB)
8685 AC_SUBST(HOST_NSPR_MDCPUCFG)
8686 AC_SUBST(HOST_BIN_SUFFIX)
8687 AC_SUBST(HOST_OS_ARCH)
8689 AC_SUBST(TARGET_CPU)
8690 AC_SUBST(TARGET_VENDOR)
8692 AC_SUBST(TARGET_NSPR_MDCPUCFG)
8693 AC_SUBST(TARGET_MD_ARCH)
8694 AC_SUBST(TARGET_XPCOM_ABI)
8697 AC_SUBST(OS_RELEASE)
8700 AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
8701 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
8703 AC_SUBST(WRAP_MALLOC_CFLAGS)
8704 AC_SUBST(WRAP_MALLOC_LIB)
8707 AC_SUBST(MKSHLIB_FORCE_ALL)
8708 AC_SUBST(MKSHLIB_UNFORCE_ALL)
8709 AC_SUBST(DSO_CFLAGS)
8710 AC_SUBST(DSO_PIC_CFLAGS)
8711 AC_SUBST(DSO_LDOPTS)
8712 AC_SUBST(LIB_PREFIX)
8713 AC_SUBST(DLL_PREFIX)
8714 AC_SUBST(DLL_SUFFIX)
8715 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
8716 AC_SUBST(LIB_SUFFIX)
8717 AC_SUBST(OBJ_SUFFIX)
8718 AC_SUBST(BIN_SUFFIX)
8719 AC_SUBST(ASM_SUFFIX)
8720 AC_SUBST(IMPORT_LIB_SUFFIX)
8722 AC_SUBST(CC_VERSION)
8723 AC_SUBST(CXX_VERSION)
8724 AC_SUBST(MSMANIFEST_TOOL)
8725 AC_SUBST(NS_ENABLE_TSF)
8726 AC_SUBST(MOZ_NSS_PATCH)
8728 if test "$USING_HCC"; then
8729 CC='${topsrcdir}/build/hcc'
8731 CXX='${topsrcdir}/build/hcpp'
8732 CXX="$CXX '$_OLDCXX'"
8737 dnl Check for missing components
8738 if test "$COMPILE_ENVIRONMENT"; then
8739 if test "$MOZ_X11"; then
8740 dnl ====================================================
8741 dnl = Check if X headers exist
8742 dnl ====================================================
8743 _SAVE_CFLAGS=$CFLAGS
8744 CFLAGS="$CFLAGS $XCFLAGS"
8748 #include <X11/Xlib.h>
8749 #include <X11/Intrinsic.h>
8753 if ((dpy = XOpenDisplay(NULL)) == NULL) {
8754 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
8758 [ AC_MSG_ERROR([Could not compile basic X program.]) ])
8759 CFLAGS="$_SAVE_CFLAGS"
8761 if test ! -z "$MISSING_X"; then
8762 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
8767 dnl Check for headers, etc. needed by WebGL.
8768 if test -n "$MOZ_WEBGL_GLX"; then
8769 AC_CHECK_HEADER(GL/glx.h)
8770 if test "$ac_cv_header_GL_glx_h" != "yes"; then
8771 AC_MSG_ERROR([Can't find header GL/glx.h for WebGL (install mesa-common-dev (Ubuntu), mesa-libGL-devel (Fedora), or Mesa (SuSE))])
8774 fi # COMPILE_ENVIRONMENT
8776 if test "$USE_FC_FREETYPE"; then
8777 if test "$COMPILE_ENVIRONMENT"; then
8778 _SAVE_CPPFLAGS="$CPPFLAGS"
8779 CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
8780 AC_CHECK_HEADERS(fontconfig/fcfreetype.h, ,
8781 [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)])
8782 CPPFLAGS="$_SAVE_CPPFLAGS"
8784 AC_DEFINE(HAVE_FONTCONFIG_FCFREETYPE_H)
8788 dnl Set various defines and substitutions
8789 dnl ========================================================
8791 if test "$OS_ARCH" = "BeOS"; then
8793 elif test "$OS_ARCH" = "Darwin"; then
8795 AC_DEFINE(UNIX_ASYNC_DNS)
8796 elif test "$OS_ARCH" = "OpenVMS"; then
8798 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
8800 AC_DEFINE(UNIX_ASYNC_DNS)
8803 if test "$MOZ_DEBUG"; then
8804 AC_DEFINE(MOZ_REFLOW_PERF)
8805 AC_DEFINE(MOZ_REFLOW_PERF_DSP)
8808 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
8809 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
8810 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
8811 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
8812 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
8813 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
8814 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
8815 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
8816 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
8819 dnl ========================================================
8820 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
8821 dnl ========================================================
8824 WIN_TOP_SRC=`cd $srcdir; pwd -W`
8827 HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
8828 HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
8829 CC="\$(CYGWIN_WRAPPER) $CC"
8830 CXX="\$(CYGWIN_WRAPPER) $CXX"
8831 CPP="\$(CYGWIN_WRAPPER) $CPP"
8832 LD="\$(CYGWIN_WRAPPER) $LD"
8833 AS="\$(CYGWIN_WRAPPER) $AS"
8834 RC="\$(CYGWIN_WRAPPER) $RC"
8835 MIDL="\$(CYGWIN_WRAPPER) $MIDL"
8836 CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
8837 WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
8841 AC_SUBST(CYGDRIVE_MOUNT)
8842 AC_SUBST(WIN_TOP_SRC)
8844 AC_SUBST(MOZILLA_VERSION)
8846 AC_SUBST(ac_configure_args)
8848 dnl Spit out some output
8849 dnl ========================================================
8851 dnl The following defines are used by xpcom
8852 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
8854 HAVE_CPP_2BYTE_WCHAR_T
8855 HAVE_CPP_ACCESS_CHANGING_USING
8856 HAVE_CPP_AMBIGUITY_RESOLVING_USING
8859 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
8861 HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
8862 HAVE_CPP_NAMESPACE_STD
8864 HAVE_CPP_PARTIAL_SPECIALIZATION
8865 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
8867 HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL
8869 NEED_CPP_UNUSED_IMPLEMENTATIONS
8873 HAVE_ICONV_WITH_CONST_INPUT
8881 netwerk/necko-config.h
8882 xpcom/xpcom-config.h
8883 xpcom/xpcom-private.h
8886 # Save the defines header file before autoconf removes it.
8887 # (Do not add AC_DEFINE calls after this line.)
8888 _CONFIG_TMP=confdefs-tmp.h
8889 _CONFIG_DEFS_H=mozilla-config.h
8891 cat > $_CONFIG_TMP <<\EOF
8892 /* List of defines generated by configure. Included with preprocessor flag,
8893 * -include, to avoid long list of -D defines on the compile command-line.
8897 #ifndef _MOZILLA_CONFIG_H_
8898 #define _MOZILLA_CONFIG_H_
8901 _EGREP_PATTERN='^#define ('
8902 if test -n "$_NON_GLOBAL_ACDEFINES"; then
8903 for f in $_NON_GLOBAL_ACDEFINES; do
8904 _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
8907 _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
8909 sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
8911 cat >> $_CONFIG_TMP <<\EOF
8913 #endif /* _MOZILLA_CONFIG_H_ */
8917 # Only write mozilla-config.h when something changes (or it doesn't exist)
8918 if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
8921 AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
8922 mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
8924 echo ==== $_CONFIG_DEFS_H =================================
8928 dnl Probably shouldn't call this manually but we always want the output of DEFS
8929 rm -f confdefs.h.save
8930 mv confdefs.h confdefs.h.save
8931 egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
8932 AC_OUTPUT_MAKE_DEFS()
8934 AC_SUBST(MOZ_DEFINES)
8936 mv confdefs.h.save confdefs.h
8938 dnl Load the list of Makefiles to generate.
8939 dnl To add new Makefiles, edit allmakefiles.sh.
8940 dnl allmakefiles.sh sets the variable, MAKEFILES.
8941 . ${srcdir}/allmakefiles.sh
8943 dnl Run a perl script to quickly create the makefiles.
8944 dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
8945 dnl for the files it cannot handle correctly. This way, config.status
8946 dnl will handle these files.
8947 dnl If it fails, nothing is set and config.status will run as usual.
8949 dnl This does not change the $MAKEFILES variable.
8951 dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
8953 if test -z "${AS_PERL}"; then
8954 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
8956 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
8961 echo $MAKEFILES > unallmakefiles
8963 mv -f config/autoconf.mk config/autoconf.mk.orig 2> /dev/null
8965 AC_OUTPUT($MAKEFILES)
8967 dnl Prevent the regeneration of cairo-features.h forcing rebuilds of gfx stuff
8968 if test "$CAIRO_FEATURES_H"; then
8969 if cmp -s $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig; then
8970 echo "$CAIRO_FEATURES_H is unchanged"
8971 mv -f "$CAIRO_FEATURES_H".orig "$CAIRO_FEATURES_H" 2> /dev/null
8973 rm -f "$CAIRO_FEATURES_H".orig 2> /dev/null
8977 dnl ========================================================
8978 dnl = Setup a nice relatively clean build environment for
8979 dnl = sub-configures.
8980 dnl ========================================================
8983 CFLAGS="$_SUBDIR_CFLAGS"
8984 CPPFLAGS="$_SUBDIR_CPPFLAGS"
8985 CXXFLAGS="$_SUBDIR_CXXFLAGS"
8986 LDFLAGS="$_SUBDIR_LDFLAGS"
8987 HOST_CC="$_SUBDIR_HOST_CC"
8988 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
8989 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
8995 # No need to run subconfigures when building with LIBXUL_SDK_DIR
8996 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
8998 if test -z "$MOZ_NATIVE_NSPR"; then
8999 ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
9000 if test -z "$MOZ_DEBUG"; then
9001 ac_configure_args="$ac_configure_args --disable-debug"
9003 if test "$MOZ_OPTIMIZE" = "1"; then
9004 ac_configure_args="$ac_configure_args --enable-optimize"
9006 if test "$OS_ARCH" = "WINNT" && test "$NS_TRACE_MALLOC"; then
9007 ac_configure_args="$ac_configure_args --enable-debug --disable-optimize"
9009 if test -n "$HAVE_64BIT_OS"; then
9010 ac_configure_args="$ac_configure_args --enable-64bit"
9012 if test -n "$USE_ARM_KUSER"; then
9013 ac_configure_args="$ac_configure_args --with-arm-kuser"
9015 if test -n "$MOZ_THUMB2"; then
9016 ac_configure_args="$ac_configure_args --enable-thumb2"
9018 AC_OUTPUT_SUBDIRS(nsprpub)
9019 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9022 if test -z "$MOZ_NATIVE_NSPR"; then
9023 # Hack to deal with the fact that we use NSPR_CFLAGS everywhere
9024 AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
9025 if test "$OS_ARCH" != "WINNT" && test "$OS_ARCH" != "WINCE"; then
9026 NSPR_LIBS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --libdir=$LIBXUL_DIST/lib --libs`
9027 $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $NSPR_LIBS'" config/autoconf.mk
9028 NSPR_CFLAGS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --includedir=$LIBXUL_DIST/include/nspr --cflags`
9029 $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $NSPR_CFLAGS'" config/autoconf.mk
9031 rm -f config/autoconf.mk.bak
9034 # Run the SpiderMonkey 'configure' script.
9035 dist=$MOZ_BUILD_ROOT/dist
9036 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9037 ac_configure_args="$ac_configure_args --enable-threadsafe"
9038 if test "$BUILD_CTYPES"; then
9039 # Build js-ctypes on the platforms we can.
9040 ac_configure_args="$ac_configure_args --enable-ctypes"
9042 if test -z "$MOZ_NATIVE_NSPR"; then
9043 ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
9044 ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
9046 ac_configure_args="$ac_configure_args --with-dist-dir=../../dist"
9047 ac_configure_args="$ac_configure_args --prefix=$dist"
9048 ac_configure_args="$ac_configure_args --with-sync-build-files=$_topsrcdir"
9049 if test "$MOZ_MEMORY"; then
9050 ac_configure_args="$ac_configure_args --enable-jemalloc"
9051 if test -n "$MOZ_MEMORY_LDFLAGS"; then
9052 export MOZ_MEMORY_LDFLAGS
9055 AC_OUTPUT_SUBDIRS(js/src)
9056 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9058 fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR
9060 dnl Prevent the regeneration of autoconf.mk forcing rebuilds of the world
9061 dnl Needs to be at the end to respect possible changes from NSPR configure
9062 if cmp -s config/autoconf.mk config/autoconf.mk.orig; then
9063 echo "config/autoconf.mk is unchanged"
9064 mv -f config/autoconf.mk.orig config/autoconf.mk 2> /dev/null
9066 rm -f config/autoconf.mk.orig 2> /dev/null