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}"
73 MOZ_DEB_TIMESTAMP=`date +"%a, %d %b %Y %T %z" 2>&1`
74 AC_SUBST(MOZ_DEB_TIMESTAMP)
76 dnl ========================================================
78 dnl = Don't change the following two lines. Doing so breaks:
80 dnl = CFLAGS="-foo" ./configure
82 dnl ========================================================
84 CPPFLAGS="${CPPFLAGS=}"
85 CXXFLAGS="${CXXFLAGS=}"
87 HOST_CFLAGS="${HOST_CFLAGS=}"
88 HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
89 HOST_LDFLAGS="${HOST_LDFLAGS=}"
91 dnl ========================================================
92 dnl = Preserve certain environment flags passed to configure
93 dnl = We want sub projects to receive the same flags
94 dnl = untainted by this configure script
95 dnl ========================================================
98 _SUBDIR_CFLAGS="$CFLAGS"
99 _SUBDIR_CPPFLAGS="$CPPFLAGS"
100 _SUBDIR_CXXFLAGS="$CXXFLAGS"
101 _SUBDIR_LDFLAGS="$LDFLAGS"
102 _SUBDIR_HOST_CC="$HOST_CC"
103 _SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
104 _SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
105 _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
106 _SUBDIR_CONFIG_ARGS="$ac_configure_args"
108 dnl Set the version number of the libs included with mozilla
109 dnl ========================================================
116 dnl Set the minimum version of toolkit libs used by mozilla
117 dnl ========================================================
125 WINDRES_VERSION=2.14.90
128 GNOMEUI_VERSION=2.2.0
131 STARTUP_NOTIFICATION_VERSION=0.8
134 LIBNOTIFY_VERSION=0.4
138 dnl Set various checks
139 dnl ========================================================
143 dnl Initialize the Pthread test variables early so they can be
144 dnl overridden by each platform.
145 dnl ========================================================
149 dnl Do not allow a separate objdir build if a srcdir build exists.
150 dnl ==============================================================
151 _topsrcdir=`cd \`dirname $0\`; pwd`
154 if test "$_topsrcdir" != "$_objdir"
156 # Check for a couple representative files in the source tree
158 for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
159 if test -f $file; then
160 _conflict_files="$_conflict_files $file"
163 if test "$_conflict_files"; then
165 echo "* Your source tree contains these files:"
166 for file in $_conflict_files; do
170 * This indicates that you previously built in the source tree.
171 * A source tree build can confuse the separate objdir build.
173 * To clean up the source tree:
184 dnl Default to MSVC for win32 and gcc-4.2 for darwin
185 dnl ==============================================================
186 if test -z "$CROSS_COMPILE"; then
188 *-cygwin*|*-mingw*|*-msvc*|*-mks*)
189 if test -z "$CC"; then CC=cl; fi
190 if test -z "$CXX"; then CXX=cl; fi
191 if test -z "$CPP"; then CPP="cl -E -nologo"; fi
192 if test -z "$CXXCPP"; then CXXCPP="cl -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
193 if test -z "$LD"; then LD=link; fi
194 if test -z "$AS"; then
195 case "${target_cpu}" in
204 if test -z "$MIDL"; then MIDL=midl; fi
207 if test -z "$CC"; then CC=gcc-4.2; fi
208 if test -z "$CXX"; then CXX=g++-4.2; fi
213 COMPILE_ENVIRONMENT=1
214 MOZ_ARG_DISABLE_BOOL(compile-environment,
215 [ --disable-compile-environment
216 Disable compiler/library checks.],
217 COMPILE_ENVIRONMENT= )
218 AC_SUBST(COMPILE_ENVIRONMENT)
220 MOZ_ARG_WITH_STRING(l10n-base,
221 [ --with-l10n-base=DIR path to l10n repositories],
222 L10NBASEDIR=$withval)
223 if test ! -z "$L10NBASEDIR"; then
224 if test "$L10NBASEDIR" = "yes" -o "$L10NBASEDIR" = "no"; then
225 AC_MSG_ERROR([--with-l10n-base must specify a path])
226 elif test -d "$L10NBASEDIR"; then
227 L10NBASEDIR=`cd "$L10NBASEDIR" && pwd`
229 AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
232 AC_SUBST(L10NBASEDIR)
234 dnl Check for Perl first -- needed for win32 SDK checks
235 MOZ_PATH_PROGS(PERL, $PERL perl5 perl )
236 if test -z "$PERL" -o "$PERL" = ":"; then
237 AC_MSG_ERROR([perl not found in \$PATH])
240 dnl ========================================================
241 dnl = Android uses a very custom (hacky) toolchain; we need to do this
242 dnl = here, so that the compiler checks can succeed
243 dnl ========================================================
245 MOZ_ARG_WITH_STRING(android-ndk,
246 [ --with-android-ndk=DIR
247 location where the Android NDK can be found],
248 android_ndk=$withval)
250 MOZ_ARG_WITH_STRING(android-toolchain,
251 [ --with-android-toolchain=DIR
252 location of the android toolchain, default NDK/build/prebuilt/HOST/arm-eabi-4.4.0],
253 android_toolchain=$withval)
256 MOZ_ARG_WITH_STRING(android-version,
257 [ --with-android-version=VER
258 android platform version, default 5],
259 android_version=$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 if test "$target" = "arm-android-eabi" ; then
268 if test -z "$android_ndk" ; then
269 AC_MSG_ERROR([You must specify --with-android-ndk=/path/to/ndk when targeting Android.])
272 if test -z "$android_sdk" ; then
273 AC_MSG_ERROR([You must specify --with-android-sdk=/path/to/sdk when targeting Android.])
276 android_platform_tools="$android_sdk"/../../platform-tools
277 if test ! -d "$android_platform_tools" ; then
278 android_platform_tools="$android_sdk"/tools # SDK Tools < r8
281 if test -z "$android_toolchain" ; then
282 android_toolchain="$android_ndk"/build/prebuilt/`uname -s | tr "[[:upper:]]" "[[:lower:]]"`-x86/arm-eabi-4.4.0
285 if test -z "$android_platform" ; then
286 android_platform="$android_ndk"/build/platforms/android-"$android_version"/arch-"$target_cpu"
290 AS="$android_toolchain"/bin/arm-eabi-as
291 CC="$android_toolchain"/bin/arm-eabi-gcc
292 CXX="$android_toolchain"/bin/arm-eabi-g++
293 CPP="$android_toolchain"/bin/arm-eabi-cpp
294 LD="$android_toolchain"/bin/arm-eabi-ld
295 AR="$android_toolchain"/bin/arm-eabi-ar
296 RANLIB="$android_toolchain"/bin/arm-eabi-ranlib
297 STRIP="$android_toolchain"/bin/arm-eabi-strip
299 CPPFLAGS="-I$android_platform/usr/include $CPPFLAGS"
300 CFLAGS="-mandroid -I$android_platform/usr/include -msoft-float -fno-short-enums -fno-exceptions $CFLAGS"
301 CXXFLAGS="-mandroid -I$android_platform/usr/include -msoft-float -fno-short-enums -fno-exceptions $CXXFLAGS"
303 dnl Add -llog by default, since we use it all over the place.
304 dnl Add --allow-shlib-undefined, because libGLESv2 links to an
305 dnl undefined symbol (present on the hardware, just not in the
307 LDFLAGS="-mandroid -L$android_platform/usr/lib -Wl,-rpath-link=$android_platform/usr/lib --sysroot=$android_platform -llog -Wl,--allow-shlib-undefined $LDFLAGS"
309 dnl prevent cross compile section from using these flags as host flags
310 if test -z "$HOST_CPPFLAGS" ; then
313 if test -z "$HOST_CFLAGS" ; then
316 if test -z "$HOST_CXXFLAGS" ; then
319 if test -z "$HOST_LDFLAGS" ; then
323 ANDROID_NDK="${android_ndk}"
324 ANDROID_TOOLCHAIN="{android_toolchain}"
325 ANDROID_PLATFORM="{android_platform}"
326 ANDROID_SDK="${android_sdk}"
327 ANDROID_PLATFORM_TOOLS="${android_platform_tools}"
328 ANDROID_VERSION="${android_version}"
329 if test -z "$ANDROID_PACKAGE_NAME" ; then
330 ANDROID_PACKAGE_NAME='org.mozilla.$(MOZ_APP_NAME)'
334 AC_DEFINE_UNQUOTED(ANDROID_VERSION, $android_version)
335 AC_SUBST(ANDROID_VERSION)
337 MOZ_CHROME_FILE_FORMAT=omni
341 AC_SUBST(ANDROID_NDK)
342 AC_SUBST(ANDROID_TOOLCHAIN)
343 AC_SUBST(ANDROID_PLATFORM)
344 AC_SUBST(ANDROID_SDK)
345 AC_SUBST(ANDROID_PLATFORM_TOOLS)
346 AC_SUBST(ANDROID_PACKAGE_NAME)
348 dnl ========================================================
349 dnl Checks for compilers.
350 dnl ========================================================
351 dnl Set CROSS_COMPILE in the environment when running configure
352 dnl to use the cross-compile setup for now
353 dnl ========================================================
355 dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269)
358 if test "$COMPILE_ENVIRONMENT"; then
360 dnl Do some special WinCE toolchain stuff
364 MOZ_ARG_WITH_STRING(wince-sdk,
365 [ --with-wince-sdk=WINCE_SDK_DIR
366 The path to the Windows CE SDK],
367 WINCE_SDK_DIR=$withval)
369 MOZ_ARG_WITH_STRING(ogles-sdk,
370 [ --with-ogles-sdk=OGLES_SDK_DIR
371 The path to the OGLES SDK],
372 OGLES_SDK_DIR=$withval)
378 echo -----------------------------------------------------------------------------
379 echo Building Windows CE Shunt Library and Tool Chain
386 _topsrcdirwin=`cd \`dirname $0\`; pwd -W`
387 make OGLES_SDK_DIR="$OGLES_SDK_DIR" WINCE_SDK_DIR="$WINCE_SDK_DIR" \
388 TOPSRCDIR="$_topsrcdirwin" OBJDIR="$_pwd" target="$target" \
389 -C $srcdir/build/wince/tools
391 CC="$_pwd/dist/sdk/bin/$target-gcc.exe"
392 CXX="$_pwd/dist/sdk/bin/$target-gcc.exe"
393 CPP="$_pwd/dist/sdk/bin/$target-gcc.exe -E -nologo"
394 CXXCPP="$_pwd/dist/sdk/bin/$target-gcc.exe -TP -E -nologo"
395 LD="$_pwd/dist/sdk/bin/$target-link.exe"
396 AR="$_pwd/dist/sdk/bin/$target-lib.exe"
397 AS="$_pwd/dist/sdk/bin/$target-as.exe"
398 RC="$_pwd/dist/sdk/bin/$target-res.exe"
401 echo -----------------------------------------------------------------------------
406 if test -n "$CROSS_COMPILE" -a "$target" != "$host"; then
407 echo "cross compiling from $host to $target"
411 _SAVE_CFLAGS="$CFLAGS"
412 _SAVE_LDFLAGS="$LDFLAGS"
414 AC_MSG_CHECKING([for host c compiler])
415 AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
416 if test -z "$HOST_CC"; then
417 AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
419 AC_MSG_RESULT([$HOST_CC])
420 AC_MSG_CHECKING([for host c++ compiler])
421 AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
422 if test -z "$HOST_CXX"; then
423 AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
425 AC_MSG_RESULT([$HOST_CXX])
427 if test -z "$HOST_CFLAGS"; then
428 HOST_CFLAGS="$CFLAGS"
430 if test -z "$HOST_CXXFLAGS"; then
431 HOST_CXXFLAGS="$CXXFLAGS"
433 if test -z "$HOST_LDFLAGS"; then
434 HOST_LDFLAGS="$LDFLAGS"
436 if test -z "$HOST_AR_FLAGS"; then
437 HOST_AR_FLAGS="$AR_FLAGS"
439 AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
440 AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
442 CFLAGS="$HOST_CFLAGS"
443 LDFLAGS="$HOST_LDFLAGS"
445 AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
446 AC_TRY_COMPILE([], [return(0);],
447 [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
448 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
451 CFLAGS="$HOST_CXXFLAGS"
453 AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
454 AC_TRY_COMPILE([], [return(0);],
455 [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
456 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
460 LDFLAGS=$_SAVE_LDFLAGS
462 case "$build:$target" in
463 powerpc-apple-darwin8*:i?86-apple-darwin*)
464 dnl The Darwin cross compiler doesn't necessarily point itself at a
465 dnl root that has libraries for the proper architecture, it defaults
466 dnl to the system root. The libraries in the system root on current
467 dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
468 dnl checks will fail. Fake a working SDK in that case.
470 _SAVE_CXXFLAGS=$CXXLAGS
471 CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk $CFLAGS"
472 CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk $CXXFLAGS"
476 AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
479 AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
483 case "$build:$target" in
484 powerpc-apple-darwin8*:i?86-apple-darwin*)
485 dnl Revert the changes made above. From this point on, the target
486 dnl compiler will never be used without applying the SDK to CFLAGS
487 dnl (see --with-macos-sdk below).
489 CXXFLAGS=$_SAVE_CXXFLAGS
493 AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
494 AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
495 MOZ_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
496 AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
497 AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
498 AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
499 AC_DEFINE(CROSS_COMPILE)
504 MOZ_PATH_PROGS(AS, $AS as, $CC)
505 AC_CHECK_PROGS(AR, ar, :)
506 AC_CHECK_PROGS(LD, ld, :)
507 AC_CHECK_PROGS(STRIP, strip, :)
508 AC_CHECK_PROGS(WINDRES, windres, :)
509 if test -z "$HOST_CC"; then
512 if test -z "$HOST_CFLAGS"; then
513 HOST_CFLAGS='$(CFLAGS)'
515 if test -z "$HOST_CXX"; then
518 if test -z "$HOST_CXXFLAGS"; then
519 HOST_CXXFLAGS='$(CXXFLAGS)'
521 if test -z "$HOST_LDFLAGS"; then
522 HOST_LDFLAGS='$(LDFLAGS)'
524 if test -z "$HOST_RANLIB"; then
525 HOST_RANLIB='$(RANLIB)'
527 if test -z "$HOST_AR"; then
530 if test -z "$HOST_AR_FLAGS"; then
531 HOST_AR_FLAGS='$(AR_FLAGS)'
541 if test "$GCC" = "yes"; then
543 CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
545 if test "$GXX" = "yes"; then
547 CXX_VERSION=`$CXX -v 2>&1 | grep 'gcc version'`
549 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
552 if test "`echo | $LD -v 2>&1 | grep -c GNU`" != "0"; then
555 if test "$GNU_CC"; then
556 if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
563 if test "$GCC" = yes; then
564 if test "`$CC -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
569 if test "$GXX" = yes; then
570 if test "`$CXX -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
575 dnl Special win32 checks
576 dnl ========================================================
584 dnl Target the Windows 7 SDK by default
589 MOZ_ARG_WITH_STRING(windows-version,
590 [ --with-windows-version=WINSDK_TARGETVER
591 Highest Windows version to target using this SDK
592 502: Windows Server 2003
595 WINSDK_TARGETVER=$withval)
597 case "$WINSDK_TARGETVER" in
599 MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000
603 AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER), must be 502, 600 or 601]);
608 if test -n "$COMPILE_ENVIRONMENT"; then
609 if test "$MOZ_WINSDK_TARGETVER" -lt "06000000"; then
610 # We can't build parental controls either
611 MOZ_DISABLE_PARENTAL_CONTROLS=1
616 *-cygwin*|*-mingw*|*-msvc*|*-mks*|*-wince|*-winmo)
617 if test "$GCC" != "yes"; then
618 # Check to see if we are really running in a msvc environemnt
620 AC_CHECK_PROGS(MIDL, midl)
622 # Make sure compilers are valid
623 CFLAGS="$CFLAGS -TC -nologo"
624 CXXFLAGS="$CXXFLAGS -TP -nologo"
627 AC_TRY_COMPILE([#include <stdio.h>],
628 [ printf("Hello World\n"); ],,
629 AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
632 AC_TRY_COMPILE([#include <new.h>],
633 [ unsigned *test = new unsigned(42); ],,
634 AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
638 _MSVC_VER_FILTER='s|.* ([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
641 # Determine compiler version
642 CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
643 _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
644 _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
645 _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
646 _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
647 _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
649 CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
650 _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
652 if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
653 AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
656 if test "$_CC_MAJOR_VERSION" = "14"; then
657 dnl Require VC8SP1 or newer.
658 dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762.
659 if test "$_CC_RELEASE" -lt 50727 -o \
660 \( "$_CC_RELEASE" -eq 50727 -a "$_CC_BUILD" -lt 762 \); then
661 AC_MSG_ERROR([This version ($CC_VERSION) of the MSVC compiler is unsupported. You probably need to install Service Pack 1 of Visual Studio 2005. See https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
665 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
666 AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
667 AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
668 elif test "$_CC_MAJOR_VERSION" = "15"; then
670 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
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 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
677 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
679 AC_MSG_ERROR([This version ($CC_VERSION) of the MSVC compiler is unsupported. See https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
682 _MOZ_RTTI_FLAGS_ON='-GR'
683 _MOZ_RTTI_FLAGS_OFF='-GR-'
684 _MOZ_EXCEPTIONS_FLAGS_ON='-EHsc'
685 _MOZ_EXCEPTIONS_FLAGS_OFF=''
686 AC_DEFINE(HAVE_SEH_EXCEPTIONS)
688 if test -n "$WIN32_REDIST_DIR"; then
689 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
692 dnl Ensure that mt.exe is 'Microsoft (R) Manifest Tool',
693 dnl not something else like "magnetic tape manipulation utility".
694 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
695 if test -z "$MSMT_TOOL"; then
696 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
700 _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
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.])
710 # Check linker version
711 _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
712 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
713 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
714 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
720 _MIDL_FULL_VERSION=`"${MIDL}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
721 _MIDL_MAJOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
722 _MIDL_MINOR_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
723 _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
724 # Add flags if necessary
725 AC_MSG_CHECKING([for midl flags])
728 if test \( "$_MIDL_MAJOR_VERSION" = "7" -a "$_MIDL_MINOR_VERSION" = "00" -a "$_MIDL_REV_VERSION" = "0499" \); then
729 # MIDL version 7.00.0499 defaults /env win64 on x64 platforms.
730 # MIDL version 7.00.0500 or later has no problem.
731 MIDL_FLAGS="${MIDL_FLAGS} -env win32"
732 AC_MSG_RESULT([need -env win32])
734 AC_MSG_RESULT([none needed])
738 MIDL_FLAGS="${MIDL_FLAGS} -env x64"
741 AC_MSG_RESULT([none needed])
745 # Identify which version of the SDK we're building with
746 # Windows Server 2008 and newer SDKs have WinSDKVer.h, get the version
748 AC_CHECK_HEADERS([winsdkver.h])
749 if test "$ac_cv_header_winsdkver_h" = "yes"; then
750 # Get the highest _WIN32_WINNT and NTDDI versions supported
751 # Take the higher of the two
752 # This is done because the Windows 7 beta SDK reports its
753 # NTDDI_MAXVER to be 0x06000100 instead of 0x06010000, as it should
754 AC_CACHE_CHECK(for highest Windows version supported by this SDK,
756 [cat > conftest.h <<EOF
757 #include <winsdkver.h>
758 #include <sdkddkver.h>
760 #if (NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER) > NTDDI_MAXVER)
761 #define WINSDK_MAXVER NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER)
763 #define WINSDK_MAXVER NTDDI_MAXVER
768 ac_cv_winsdk_maxver=`$CPP conftest.h 2>/dev/null | tail -n1`
771 MOZ_WINSDK_MAXVER=${ac_cv_winsdk_maxver}
773 # The Vista SDK is the only one to have sdkddkver.h but not
775 AC_CHECK_HEADERS([sdkddkver.h])
776 if test "$ac_cv_header_sdkddkver_h" = "yes"; then
777 MOZ_WINSDK_MAXVER=0x06000000
779 # Assume the Server 2003 Platform SDK
780 MOZ_WINSDK_MAXVER=0x05020000
784 unset _MSVC_VER_FILTER
786 AC_CACHE_CHECK(for std::_Throw, ac_cv_have_std__Throw,
790 _SAVE_CXXFLAGS="$CXXFLAGS"
791 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
792 AC_TRY_COMPILE([#include <exception>],
793 [std::_Throw(std::exception()); return 0;],
794 ac_cv_have_std__Throw="yes",
795 ac_cv_have_std__Throw="no")
796 CXXFLAGS="$_SAVE_CXXFLAGS"
800 if test "$ac_cv_have_std__Throw" = "yes"; then
801 AC_CACHE_CHECK(for |class __declspec(dllimport) exception| bug,
802 ac_cv_have_dllimport_exception_bug,
806 _SAVE_CXXFLAGS="$CXXFLAGS"
807 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
808 AC_TRY_LINK([#include <vector>],
809 [std::vector<int> v; return v.at(1);],
810 ac_cv_have_dllimport_exception_bug="no",
811 ac_cv_have_dllimport_exception_bug="yes")
812 CXXFLAGS="$_SAVE_CXXFLAGS"
815 if test "$ac_cv_have_dllimport_exception_bug" = "no"; then
817 MOZ_MSVC_STL_WRAP__Throw=1
818 AC_DEFINE(MOZ_MSVC_STL_WRAP__Throw)
821 AC_CACHE_CHECK(for overridable _RAISE,
826 _SAVE_CXXFLAGS="$CXXFLAGS"
827 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
828 AC_TRY_COMPILE([#include <xstddef>
830 #define _RAISE(x) externallyDefinedFunction((x).what())
833 [std::vector<int> v; return v.at(1);],
834 ac_cv_have__RAISE="no",
835 ac_cv_have__RAISE="yes")
836 CXXFLAGS="$_SAVE_CXXFLAGS"
839 if test "$ac_cv_have__RAISE" = "yes"; then
841 MOZ_MSVC_STL_WRAP__RAISE=1
842 AC_DEFINE(MOZ_MSVC_STL_WRAP__RAISE)
844 AC_MSG_ERROR([Gecko exception wrapping doesn't understand your your MSVC/SDK. Please file a bug describing this error and your build configuration.])
848 if test "$WRAP_STL_INCLUDES" = "1"; then
849 STL_FLAGS='-D_HAS_EXCEPTIONS=0 -I$(DIST)/stl_wrappers'
852 # Check w32api version
853 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
854 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
855 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
856 AC_TRY_COMPILE([#include <w32api.h>],
857 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
858 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
859 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
860 #error "test failed."
862 , [ res=yes ], [ res=no ])
863 AC_MSG_RESULT([$res])
864 if test "$res" != "yes"; then
865 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
867 # Check windres version
868 AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
869 _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
870 AC_MSG_RESULT([$_WINDRES_VERSION])
871 _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
872 _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
873 _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
874 WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
875 WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
876 WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
877 if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
878 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
879 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
880 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
881 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
882 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
884 AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
887 # Server 2003 is the highest version supported
888 MOZ_WINSDK_MAXVER=0x05020000
891 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
892 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
893 # Require OS features provided by IE 5.0
894 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0500)
896 # If the maximum version supported by this SDK is lower than the target
898 AC_MSG_CHECKING([for Windows SDK being recent enough])
899 if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then
903 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. Alternatively, try running the Windows SDK Configuration Tool and selecting a newer SDK. See https://developer.mozilla.org/En/Windows_SDK_versions for more details on fixing this.])
906 AC_DEFINE_UNQUOTED(MOZ_WINSDK_TARGETVER,0x$MOZ_WINSDK_TARGETVER)
907 # Definitions matching sdkddkver.h
908 AC_DEFINE_UNQUOTED(MOZ_NTDDI_WS03, 0x05020000)
909 AC_DEFINE_UNQUOTED(MOZ_NTDDI_LONGHORN, 0x06000000)
910 AC_DEFINE_UNQUOTED(MOZ_NTDDI_WIN7, 0x06010000)
914 dnl Test breaks icc on OS/2 && MSVC
915 if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
917 if grep "NO_MINUS_C_MINUS_O 1" ./confdefs.h >/dev/null; then
921 CC="${srcdir}/build/hcc '$CC'"
922 CXX="${srcdir}/build/hcpp '$CXX'"
929 if test -n "$_WIN32_MSVC"; then
931 SKIP_COMPILER_CHECKS=1
932 SKIP_LIBRARY_CHECKS=1
934 # Since we're skipping compiler and library checks, hard-code
941 AC_DEFINE(HAVE_SETBUF)
942 AC_DEFINE(HAVE_ISATTY)
947 fi # COMPILE_ENVIRONMENT
960 AC_SUBST(WRAP_STL_INCLUDES)
961 AC_SUBST(MOZ_MSVC_STL_WRAP__Throw)
962 AC_SUBST(MOZ_MSVC_STL_WRAP__RAISE)
964 dnl ========================================================
965 dnl Checks for programs.
966 dnl ========================================================
970 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
971 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
972 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
974 AC_MSG_RESULT([$_perl_version])
976 if test "$_perl_res" != 0; then
977 AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
981 AC_MSG_CHECKING([for full perl installation])
982 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
984 if test "$_perl_res" != 0; then
986 AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
991 MOZ_PATH_PROGS(PYTHON, $PYTHON python2.7 python2.6 python2.5 python)
992 if test -z "$PYTHON"; then
993 AC_MSG_ERROR([python was not found in \$PATH])
996 if test -z "$COMPILE_ENVIRONMENT"; then
997 NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
999 AC_SUBST(NSINSTALL_BIN)
1001 MOZ_PATH_PROG(DOXYGEN, doxygen, :)
1002 MOZ_PATH_PROG(AUTOCONF, autoconf, :)
1003 MOZ_PATH_PROG(UNZIP, unzip, :)
1004 MOZ_PATH_PROGS(ZIP, zip)
1005 if test -z "$ZIP" -o "$ZIP" = ":"; then
1006 AC_MSG_ERROR([zip not found in \$PATH])
1008 MOZ_PATH_PROG(SYSTEM_MAKEDEPEND, makedepend)
1009 MOZ_PATH_PROG(XARGS, xargs)
1010 if test -z "$XARGS" -o "$XARGS" = ":"; then
1011 AC_MSG_ERROR([xargs not found in \$PATH .])
1014 if test "$COMPILE_ENVIRONMENT"; then
1016 dnl ========================================================
1017 dnl = Mac OS X toolchain support
1018 dnl ========================================================
1020 case "$target_os" in
1022 dnl Current known valid versions for GCC_VERSION are 2.95.2 3.1 3.3 4.0.
1023 dnl 4.0 identifies itself as 4.0.x, so strip the decidecimal for
1024 dnl the environment and includedir purposes (when using an SDK, below),
1025 dnl but remember the full version number for the libdir (SDK).
1027 GCC_VERSION_FULL=`echo $CXX_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
1028 GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
1030 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
1031 dnl Bug 280479, but this keeps popping up in bug 292530 too because
1032 dnl 4.0.0/4061 is the default compiler in Tiger.
1034 GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
1036 if test "$GCC_BUILD" = "4061" ; then
1037 AC_MSG_ERROR([You are attempting to use Apple gcc 4.0 build 4061.
1038 This compiler was supplied with Xcode 2.0, and contains bugs that prevent it
1039 from building Mozilla. Upgrade to Xcode 2.1 or later.])
1043 dnl xcodebuild needs GCC_VERSION defined in the environment, since it
1044 dnl doesn't respect the CC/CXX setting. With GCC_VERSION set, it will use
1045 dnl /usr/bin/g(cc|++)-$GCC_VERSION.
1046 MOZ_PATH_PROGS(PBBUILD, pbbuild xcodebuild pbxbuild)
1051 XCODEBUILD_VERSION=`$PBBUILD -version 2>/dev/null | xargs | sed -e 's/.*DevToolsCore-\([0-9]*\).*/\1/'`
1053 if test -n "$XCODEBUILD_VERSION" && test "$XCODEBUILD_VERSION" -ge 620 ; then
1059 dnl sdp was formerly in /Developer/Tools. As of Mac OS X 10.4 (Darwin 8),
1060 dnl it has moved into /usr/bin.
1061 MOZ_PATH_PROG(SDP, sdp, :, [$PATH:/usr/bin:/Developer/Tools])
1065 AC_SUBST(GCC_VERSION)
1066 AC_SUBST(XCODEBUILD_VERSION)
1067 AC_SUBST(HAS_XCODE_2_1)
1069 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
1070 dnl that a universal binary is being produced.
1071 AC_SUBST(UNIVERSAL_BINARY)
1073 dnl ========================================================
1074 dnl Check for MacOS deployment target version
1075 dnl ========================================================
1077 MOZ_ARG_ENABLE_STRING(macos-target,
1078 [ --enable-macos-target=VER (default=10.5)
1079 Set the minimum MacOS version needed at runtime],
1080 [_MACOSX_DEPLOYMENT_TARGET=$enableval])
1084 if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
1085 dnl Use the specified value
1086 export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
1087 AC_DEFINE_UNQUOTED(__ENVIRONMENT_MAC_OS_X_VERION_MIN_REQUIRED__,$_MACOSX_DEPLOYMENT_TARGET)
1089 dnl No value specified on the command line or in the environment,
1090 dnl use architecture minimum.
1091 case "${target_cpu}" in
1093 export MACOSX_DEPLOYMENT_TARGET=10.5
1096 export MACOSX_DEPLOYMENT_TARGET=10.5
1099 export MACOSX_DEPLOYMENT_TARGET=10.6
1106 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
1108 dnl ========================================================
1109 dnl = Mac OS X SDK support
1110 dnl ========================================================
1113 MOZ_ARG_WITH_STRING(macos-sdk,
1114 [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
1115 MACOS_SDK_DIR=$withval)
1117 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
1118 dnl NEXT_ROOT will be set and exported only if it's needed.
1119 AC_SUBST(MACOS_SDK_DIR)
1122 if test "$MACOS_SDK_DIR"; then
1123 dnl Sync this section with the ones in NSPR and NSS.
1124 dnl Changes to the cross environment here need to be accounted for in
1125 dnl the libIDL checks (below) and xpidl build.
1127 if test ! -d "$MACOS_SDK_DIR"; then
1128 AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
1129 specify a valid SDK. SDKs are installed when the optional cross-development
1130 tools are selected during the Xcode/Developer Tools installation.])
1133 GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
1134 if test "$GCC_VERSION_MAJOR" -lt "4" ; then
1135 AC_MSG_ERROR([You need to upgrade the compiler version to 4.x])
1137 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
1138 CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
1140 dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
1141 CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
1142 CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
1144 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
1145 dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
1146 dnl that supports -syslibroot. Don't set NEXT_ROOT because it will
1147 dnl be ignored and cause warnings when -syslibroot is specified.
1148 dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
1149 dnl the -isysroot it receives, so this is only needed with 4.0.0.
1150 LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
1155 AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
1157 AC_TRY_COMPILE([#include <new>
1158 int main() { return 0; }],
1162 AC_MSG_RESULT($result)
1164 if test "$result" = "no" ; then
1165 AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
1169 fi # COMPILE_ENVIRONMENT
1171 if test -n "$MAKE"; then
1172 if test `echo $MAKE | grep -c make.py` != 1; then
1178 cygwin*|mingw*|mks*|msvc*)
1179 MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :)
1182 MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :)
1185 if test "$GMAKE" = ":"; then
1186 AC_MSG_ERROR([GNU make not found])
1190 if test "$COMPILE_ENVIRONMENT"; then
1196 fi # COMPILE_ENVIRONMENT
1198 dnl ========================================================
1199 dnl set the defaults first
1200 dnl ========================================================
1203 AR_EXTRACT='$(AR) x'
1218 MOZ_USER_DIR=".mozilla"
1221 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/jpeg)'
1223 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,$(DEPTH)/modules/zlib/src)'
1225 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
1227 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,mozpng,$(DEPTH)/modules/libimg/png)'
1229 MOZ_JS_STATIC_LIBS='-L$(LIBXUL_DIST)/bin -ljs_static'
1230 MOZ_JS_SHARED_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs'
1231 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/bin -lxpcom -lxpcom_core -lmozalloc'
1232 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
1233 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/bin -lxpcom -lmozalloc'
1234 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) -lxul'
1235 XPCOM_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) $(XPCOM_FROZEN_LDOPTS)'
1236 XPCOM_STANDALONE_GLUE_LDOPTS='$(LIBXUL_DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)'
1240 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
1242 USE_DEPENDENT_LIBS=1
1244 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
1246 if test -n "$CROSS_COMPILE"; then
1247 OS_TARGET="${target_os}"
1248 OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
1250 case "${target_os}" in
1251 linux*) OS_ARCH=Linux OS_TARGET=Linux ;;
1252 kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
1253 gnu*) OS_ARCH=GNU ;;
1254 solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
1255 mingw*) OS_ARCH=WINNT ;;
1256 wince*) OS_ARCH=WINCE ;;
1257 winmo*) OS_ARCH=WINCE ;;
1258 darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;;
1261 arm-android-eabi) OS_ARCH=Linux OS_TARGET=Android ;;
1264 OS_TARGET=`uname -s`
1265 OS_ARCH=`uname -s | sed -e 's|/|_|g'`
1266 OS_RELEASE=`uname -r`
1269 # Before this used `uname -m` when not cross compiling
1270 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1271 OS_TEST="${target_cpu}"
1275 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1277 #######################################################################
1278 # Master "Core Components" macros for getting the OS target #
1279 #######################################################################
1282 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1283 # cross-compilation.
1287 # Define and override various archtecture-specific variables, including
1296 case "$HOST_OS_ARCH" in
1297 cygwin*|mingw*|mks*|msvc*)
1310 if test -z "$GNU_CC"; then
1311 if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then
1316 if test -z "$GNU_CXX"; then
1317 if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then
1318 SOLARIS_SUNPRO_CXX=1
1321 AC_SUBST(SOLARIS_SUNPRO_CC)
1322 AC_SUBST(SOLARIS_SUNPRO_CXX)
1334 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1337 HOST_OS_ARCH=UNIXWARE
1349 HOST_OS_ARCH=OpenVMS
1359 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1363 HOST_OS_ARCH=UNIXWARE
1369 if test -z "$CROSS_COMPILE" ; then
1375 # If uname -s returns "Windows_NT", we assume that we are using
1376 # the uname.exe in MKS toolkit.
1378 # The -r option of MKS uname only returns the major version number.
1379 # So we need to use its -v option to get the minor version number.
1380 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1384 OS_MINOR_RELEASE=`uname -v`
1385 if test "$OS_MINOR_RELEASE" = "00"; then
1388 OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1390 CYGWIN32_NT|CYGWIN_NT*|MINGW*_NT*)
1392 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
1393 # the uname.exe in the Cygwin tools.
1394 # Prior to the Beta 20 release, Cygwin was called GNU-Win32.
1395 # If uname -s returns "CYGWIN32/NT", we assume that we are using
1396 # the uname.exe in the GNU-Win32 tools.
1397 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1398 # the uname.exe in the MSYS tools.
1400 OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1405 OS_RELEASE=`uname -v`.`uname -r`
1406 OS_TEST=${target_cpu}
1418 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1422 OS_RELEASE=`uname -v`
1446 OS_RELEASE=`uname -v`
1452 OS_RELEASE=`uname -v`
1455 if test "$OS_TARGET" != "NTO"; then
1457 OS_RELEASE=`uname -v | sed 's/^\([0-9]\)\([0-9]*\)$/\1.\2/'`
1466 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1472 OS_RELEASE=`uname -v`
1476 case "${target_os}" in
1479 WINCE_WINDOWS_MOBILE=1
1480 AC_DEFINE(WINCE_WINDOWS_MOBILE)
1488 case "${target_cpu}" in
1499 if test -z "$CROSS_COMPILE" ; then
1507 if test "$OS_ARCH" = "NCR"; then
1509 OS_RELEASE=`awk '{print $3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$/\2.\3/'`
1513 # Only set CPU_ARCH if we recognize the value of OS_TEST
1524 powerpc | ppc | rs6000)
1528 Alpha | alpha | ALPHA)
1561 if test -z "$OS_TARGET"; then
1564 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1566 dnl Set INTEL_ARCHITECTURE if we're compiling for x86-32 or x86-64.
1567 dnl ===============================================================
1571 INTEL_ARCHITECTURE=1
1574 dnl ========================================================
1575 dnl GNU specific defaults
1576 dnl ========================================================
1577 if test "$GNU_CC"; then
1578 # FIXME: Let us build with strict aliasing. bug 414641.
1579 CFLAGS="$CFLAGS -fno-strict-aliasing"
1580 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1581 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1582 DSO_LDOPTS='-shared'
1583 if test "$GCC_USE_GNU_LD"; then
1584 # Don't allow undefined symbols in libraries
1585 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1587 WARNINGS_AS_ERRORS='-Werror'
1589 DSO_PIC_CFLAGS='-fPIC'
1590 ASFLAGS="$ASFLAGS -fPIC"
1591 _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
1592 _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
1593 _MOZ_EXCEPTIONS_FLAGS_ON='-fexceptions'
1594 _MOZ_EXCEPTIONS_FLAGS_OFF='-fno-exceptions'
1596 # Turn on GNU specific features
1597 # -Wall - turn on all warnings
1598 # -pedantic - make compiler warn about non-ANSI stuff, and
1599 # be a little bit stricter
1600 # Warnings slamm took out for now (these were giving more noise than help):
1601 # -Wbad-function-cast - warns when casting a function to a new return type
1602 # -Wshadow - removed because it generates more noise than help --pete
1603 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
1604 if test -z "$INTEL_CC"; then
1605 # Don't use -Wcast-align with ICC
1607 # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1608 hppa | ia64 | sparc | arm)
1611 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1616 dnl Turn pedantic on but disable the warnings for long long
1619 if test -z "$INTEL_CC"; then
1620 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
1623 _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1624 _USE_CPP_INCLUDE_FLAG=1
1625 elif test "$SOLARIS_SUNPRO_CC"; then
1627 if test "$CPU_ARCH" = "sparc"; then
1628 # for Sun Studio on Solaris/SPARC
1629 DSO_PIC_CFLAGS='-xcode=pic32'
1631 DSO_PIC_CFLAGS='-KPIC'
1633 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1635 MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1636 MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1638 DSO_LDOPTS='-shared'
1639 if test "$GNU_LD"; then
1640 # Don't allow undefined symbols in libraries
1641 DSO_LDOPTS="$DSO_LDOPTS -z defs"
1645 DSO_PIC_CFLAGS='-KPIC'
1646 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1649 if test "$GNU_CXX"; then
1650 # FIXME: Let us build with strict aliasing. bug 414641.
1651 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
1652 # Turn on GNU specific features
1653 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
1654 if test -z "$INTEL_CC"; then
1655 # Don't use -Wcast-align with ICC
1657 # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1658 hppa | ia64 | sparc | arm)
1661 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1666 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1667 _USE_CPP_INCLUDE_FLAG=1
1669 AC_CACHE_CHECK(whether the compiler supports -Wno-invalid-offsetof,
1670 ac_has_wno_invalid_offsetof,
1674 _SAVE_CXXFLAGS="$CXXFLAGS"
1675 CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1678 ac_has_wno_invalid_offsetof="yes",
1679 ac_has_wno_invalid_offsetof="no")
1680 CXXFLAGS="$_SAVE_CXXFLAGS"
1683 if test "$ac_has_wno_invalid_offsetof" = "yes"; then
1684 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1687 AC_CACHE_CHECK(whether the compiler supports -Wno-variadic-macros,
1688 ac_has_wno_variadic_macros,
1692 _SAVE_CXXFLAGS="$CXXFLAGS"
1693 CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-variadic-macros"
1696 ac_has_wno_variadic_macros="yes",
1697 ac_has_wno_variadic_macros="no")
1698 CXXFLAGS="$_SAVE_CXXFLAGS"
1701 if test "$ac_has_wno_variadic_macros" = "yes"; then
1702 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-variadic-macros"
1705 AC_CACHE_CHECK(whether the compiler supports -Werror=return-type,
1706 ac_has_werror_return_type,
1710 _SAVE_CXXFLAGS="$CXXFLAGS"
1711 CXXFLAGS="$CXXFLAGS -Werror=return-type"
1714 ac_has_werror_return_type="yes",
1715 ac_has_werror_return_type="no")
1716 CXXFLAGS="$_SAVE_CXXFLAGS"
1719 if test "$ac_has_werror_return_type" = "yes"; then
1720 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Werror=return-type"
1724 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1727 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1728 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1729 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1730 dnl normal behavior.
1731 dnl ========================================================
1733 MKSHLIB_UNFORCE_ALL=
1735 if test "$COMPILE_ENVIRONMENT"; then
1736 if test "$GNU_CC"; then
1737 AC_MSG_CHECKING(whether ld has archive extraction flags)
1738 AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1739 [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1740 ac_cv_mkshlib_force_and_unforce="no"
1741 exec 3<&0 <<LOOP_INPUT
1742 force="-Wl,--whole-archive"; unforce="-Wl,--no-whole-archive"
1743 force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1744 force="-Wl,-all"; unforce="-Wl,-none"
1751 AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1754 LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1756 if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1760 eval $ac_cv_mkshlib_force_and_unforce
1761 MKSHLIB_FORCE_ALL=$force
1762 MKSHLIB_UNFORCE_ALL=$unforce
1765 fi # COMPILE_ENVIRONMENT
1767 dnl =================================================================
1768 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1769 dnl which is bad when cross compiling.
1770 dnl =================================================================
1771 if test "$COMPILE_ENVIRONMENT"; then
1772 configure_static_assert_macros='
1773 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1774 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1775 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1778 dnl test that the macros actually work:
1779 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1780 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1783 ac_cv_static_assertion_macros_work="yes"
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",
1793 AC_TRY_COMPILE([$configure_static_assert_macros],
1794 [CONFIGURE_STATIC_ASSERT(1)],
1796 ac_cv_static_assertion_macros_work="no")
1797 AC_TRY_COMPILE([$configure_static_assert_macros],
1798 [CONFIGURE_STATIC_ASSERT(0)],
1799 ac_cv_static_assertion_macros_work="no",
1803 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1804 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1805 AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1807 fi # COMPILE_ENVIRONMENT
1809 dnl ========================================================
1810 dnl Checking for 64-bit OS
1811 dnl ========================================================
1812 if test "$COMPILE_ENVIRONMENT"; then
1815 AC_MSG_CHECKING(for 64-bit OS)
1816 AC_TRY_COMPILE([$configure_static_assert_macros],
1817 [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)],
1818 result="yes", result="no")
1819 AC_MSG_RESULT("$result")
1820 if test "$result" = "yes"; then
1821 AC_DEFINE(HAVE_64BIT_OS)
1824 AC_SUBST(HAVE_64BIT_OS)
1826 fi # COMPILE_ENVIRONMENT
1828 dnl ========================================================
1829 dnl Enable high-memory support on OS/2 by default.
1830 dnl ========================================================
1831 MOZ_OS2_HIGH_MEMORY=1
1832 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1833 [ --disable-os2-high-mem Disable high-memory support on OS/2],
1834 MOZ_OS2_HIGH_MEMORY=,
1835 MOZ_OS2_HIGH_MEMORY=1 )
1836 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1838 dnl ========================================================
1839 dnl = Use profiling compile flags
1840 dnl ========================================================
1841 MOZ_ARG_ENABLE_BOOL(profiling,
1842 [ --enable-profiling Set compile flags necessary for using sampling profilers (e.g. shark, perf)],
1846 dnl ========================================================
1847 dnl System overrides of the defaults for host
1848 dnl ========================================================
1851 HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
1852 HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
1853 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1856 *cygwin*|*mingw*|*mks*|*msvc*|*wince|*winmo)
1857 if test -n "$_WIN32_MSVC"; then
1859 HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1860 HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1861 HOST_RANLIB='echo ranlib'
1863 HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
1865 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
1866 HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1867 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1868 HOST_BIN_SUFFIX=.exe
1871 dnl MinGW/MSYS does not need CYGWIN_WRAPPER
1872 PERL="/bin/sh ${_topsrcdir}/build/msys-perl-wrapper"
1875 CYGWIN_WRAPPER="${srcdir}/build/cygwin-wrapper"
1876 if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
1878 CYGWIN_WRAPPER="${_pwd}/${srcdir}/build/cygwin-wrapper"
1880 if test "`${PERL} -v | grep -c cygwin 2>/dev/null`" = 0; then
1882 PERL="${CYGWIN_WRAPPER} $PERL"
1885 if test "`${PYTHON} -c 'import sys; print sys.platform;'`" != "cygwin"; then
1886 PYTHON="${CYGWIN_WRAPPER} $PYTHON"
1891 case "${host_cpu}" in
1893 HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
1899 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1900 HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1901 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1904 *-linux*|*-kfreebsd*-gnu|*-gnu*)
1905 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1906 HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1907 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1911 HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1912 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1913 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1914 HOST_BIN_SUFFIX=.exe
1919 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1920 HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
1921 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1925 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1926 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1930 dnl We require version 2.5 or newer of Python to build.
1931 AC_MSG_CHECKING([for Python version >= $PYTHON_VERSION but not 3.x])
1933 $PYTHON -c "import sys; sys.exit(sys.version[:3] < sys.argv[1] or sys.version[:2] != '2.')" $PYTHON_VERSION
1936 if test "$_python_res" != 0; then
1937 AC_MSG_ERROR([Python $PYTHON_VERSION or higher (but not Python 3.x) is required.])
1939 AC_MSG_RESULT([yes])
1941 dnl Get mozilla version from central milestone file
1942 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1944 dnl Get version of various core apps from the version files.
1945 FIREFOX_VERSION=`cat $topsrcdir/browser/config/version.txt`
1947 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1948 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1950 dnl ========================================================
1951 dnl System overrides of the defaults for target
1952 dnl ========================================================
1957 if test ! "$GNU_CC"; then
1958 if test ! "$HAVE_64BIT_OS"; then
1959 # Compiling with Visual Age C++ object model compat is the
1960 # default. To compile with object model ibm, add
1961 # AIX_OBJMODEL=ibm to .mozconfig.
1962 if test "$AIX_OBJMODEL" = "ibm"; then
1963 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1970 AC_SUBST(AIX_OBJMODEL)
1971 DSO_LDOPTS='-qmkshrobj=1'
1972 DSO_CFLAGS='-qflag=w:w'
1974 LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1975 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
1977 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1978 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1979 if test "$COMPILE_ENVIRONMENT"; then
1982 AC_MSG_CHECKING([for VisualAge C++ compiler version >= 6.0.0.3])
1984 [#if (__IBMCPP__ < 600)
1985 #error "Bad compiler"
1987 _BAD_COMPILER=,_BAD_COMPILER=1)
1988 if test -n "$_BAD_COMPILER"; then
1990 AC_MSG_ERROR([VisualAge C++ version 6.0.0.3 or higher is required to build.])
1992 AC_MSG_RESULT([yes])
1995 TARGET_COMPILER_ABI="ibmc"
1996 CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1997 CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
2000 case "${target_os}" in
2005 if test "$COMPILE_ENVIRONMENT"; then
2006 AC_CHECK_HEADERS(sys/inttypes.h)
2008 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2013 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
2014 _PLATFORM_DEFAULT_TOOLKIT="cairo-beos"
2015 DSO_LDOPTS='-nostart'
2016 TK_LIBS='-lbe -lroot'
2018 if test "$COMPILE_ENVIRONMENT"; then
2019 AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
2020 AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
2022 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
2023 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
2026 MOZ_USER_DIR="Mozilla"
2030 dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
2039 _WARNINGS_CFLAGS="-Wall"
2040 _WARNINGS_CXXFLAGS="-Wall"
2041 # The test above doesn't work properly, at least on 3.1.
2042 MKSHLIB_FORCE_ALL=''
2043 MKSHLIB_UNFORCE_ALL=''
2049 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2050 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2051 # If we're building with --enable-profiling, we need a frame pointer.
2052 if test -z "$MOZ_PROFILING"; then
2053 MOZ_OPTIMIZE_FLAGS="-O3 -fomit-frame-pointer"
2055 MOZ_OPTIMIZE_FLAGS="-O3 -fno-omit-frame-pointer"
2058 CFLAGS="$CFLAGS -fpascal-strings -fno-common"
2059 CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
2062 STRIP="$STRIP -x -S"
2063 _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
2064 TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
2065 # The ExceptionHandling framework is needed for Objective-C exception
2066 # logging code in nsObjCExceptions.h. Currently we only use that in debug
2068 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"
2070 dnl DTrace and -dead_strip don't interact well. See bug 403132.
2071 dnl ===================================================================
2072 if test "x$enable_dtrace" = "xyes"; then
2073 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
2075 dnl check for the presence of the -dead_strip linker flag
2076 AC_MSG_CHECKING([for -dead_strip option to ld])
2077 _SAVE_LDFLAGS=$LDFLAGS
2078 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
2079 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
2080 if test -n "$_HAVE_DEAD_STRIP" ; then
2081 AC_MSG_RESULT([yes])
2082 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
2087 LDFLAGS=$_SAVE_LDFLAGS
2089 MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
2093 if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` != "elf"; then
2094 DLL_SUFFIX=".so.1.0"
2095 DSO_LDOPTS="-shared"
2097 if test ! "$GNU_CC"; then
2098 DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
2104 if test ! "$GNU_CC"; then
2108 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@'
2109 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@'
2110 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2113 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2114 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2118 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2119 AC_DEFINE(_LARGEFILE64_SOURCE)
2124 if test ! "$GNU_CC"; then
2125 DSO_LDOPTS='-b -Wl,+s'
2128 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
2129 MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
2130 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2132 DSO_LDOPTS='-b -E +s'
2133 MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2134 MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2136 MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
2137 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2142 DSO_LDOPTS='-elf -shared'
2144 if test "$GNU_CC"; then
2145 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2146 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2147 MKSHLIB_FORCE_ALL='-Wl,-all'
2148 MKSHLIB_UNFORCE_ALL='-Wl,-none'
2149 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
2151 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2152 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2153 MKSHLIB_FORCE_ALL='-all'
2154 MKSHLIB_UNFORCE_ALL='-none'
2160 dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must*
2161 dnl compile and link using -n32
2163 TARGET_COMPILER_ABI=n32
2164 DSO_LDOPTS='-elf -shared'
2165 MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2166 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2167 _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
2168 _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
2169 if test "$GNU_CC"; then
2170 MKSHLIB_FORCE_ALL='-Wl,-all'
2171 MKSHLIB_UNFORCE_ALL='-Wl,-none'
2172 _WARNINGS_CFLAGS="-Wall"
2173 _WARNINGS_CXXFLAGS="-Wall"
2174 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
2176 MKSHLIB_FORCE_ALL='-all'
2177 MKSHLIB_UNFORCE_ALL='-none'
2183 CFLAGS="$CFLAGS -woff 3262 -G 4"
2184 CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
2185 if test -n "$USE_N32"; then
2186 ASFLAGS="$ASFLAGS -n32"
2187 CFLAGS="$CFLAGS -n32"
2188 CXXFLAGS="$CXXFLAGS -n32"
2189 LDFLAGS="$LDFLAGS -n32"
2191 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2192 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
2195 if test -z "$GNU_CXX"; then
2201 # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
2202 # Similarly for GNU_CXX and INTEL_CXX.
2203 if test "$INTEL_CC" -o "$INTEL_CXX"; then
2204 # -Os has been broken on Intel's C/C++ compilers for quite a
2205 # while; Intel recommends against using it.
2206 MOZ_OPTIMIZE_FLAGS="-O2"
2207 MOZ_DEBUG_FLAGS="-g"
2208 elif test "$GNU_CC" -o "$GNU_CXX"; then
2209 GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
2210 case $GCC_VERSION in
2212 # -Os is broken on gcc 4.1.x 4.2.x, 4.5.x we need to tweak it to get good results.
2213 MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
2215 # If we're building with --enable-profiling, we need a frame pointer.
2216 if test -z "$MOZ_PROFILING"; then
2217 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fomit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK"
2219 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-omit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK"
2221 MOZ_DEBUG_FLAGS="-g"
2224 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2228 case "${target_cpu}" in
2230 CFLAGS="$CFLAGS -mieee"
2231 CXXFLAGS="$CXXFLAGS -mieee"
2237 MOZ_DEBUG_FLAGS="-g" # We want inlining
2243 TARGET_COMPILER_ABI=msvc
2244 _PLATFORM_DEFAULT_TOOLKIT=cairo-windows
2245 MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2246 MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2248 AR_EXTRACT="$AR -extract"
2250 AR_FLAGS='-OUT:"$@"'
2254 ac_configure_args="$ac_configure_args --enable-win32-target=WINCE"
2256 if test "$AS_BIN"; then
2263 if test -z "$RC"; then
2266 # certain versions of cygwin's makedepend barf on the
2267 # #include <string> vs -I./dist/include/string issue so don't use it
2273 HOST_AR='lib -OUT:$@'
2274 HOST_RANLIB='echo ranlib'
2275 HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
2278 WARNINGS_AS_ERRORS='-WX'
2279 MOZ_OPTIMIZE_FLAGS='-Ox'
2280 AR_FLAGS='-NOLOGO -OUT:"$@"'
2282 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2283 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2286 DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
2287 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2289 IMPORT_LIB_SUFFIX=lib
2290 dnl Need to force-link against mozalloc because it's used in the shunt
2291 LIBS="$LIBS \$(LIBXUL_DIST)/lib/mozalloc.lib"
2292 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2295 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
2296 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
2298 MKSHLIB_UNFORCE_ALL=
2299 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2300 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2301 MOZ_DEBUG_FLAGS='-Zi'
2302 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2304 MOZ_JS_STATIC_LIBS='$(LIBXUL_DIST)/lib/js_static.lib'
2305 MOZ_JS_SHARED_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2307 RANLIB='echo not_ranlib'
2308 STRIP='echo not_strip'
2309 TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
2312 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2316 AC_DEFINE(HAVE_SNPRINTF)
2321 AC_DEFINE(HW_THREADS)
2322 AC_DEFINE(STDC_HEADERS)
2323 AC_DEFINE(NEW_H, <new>)
2324 AC_DEFINE(WIN32_LEAN_AND_MEAN)
2325 AC_DEFINE(HAVE_LOCALTIME_R)
2327 TARGET_MD_ARCH=win32
2328 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2330 MOZ_USER_DIR="Mozilla"
2332 MOZ_GFX_OPTIMIZE_MOBILE=1
2334 # Sanity check for WINCE_WINDOWS_MOBILE
2335 # XXX disabled until we can fix the mobile tinderbox
2336 ##if test "$WINCE_WINDOWS_MOBILE"; then
2337 ## AC_CHECK_HEADER(tpcshell.h, [],
2338 ## AC_MSG_ERROR([Can't find tpcshell.h in your SDK; are you sure you don't need --disable-windows-mobile-components?]))
2343 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2348 # certain versions of cygwin's makedepend barf on the
2349 # #include <string> vs -I./dist/include/string issue so don't use it
2351 if test -n "$GNU_CC"; then
2352 CC="$CC -mno-cygwin"
2353 CXX="$CXX -mno-cygwin"
2354 CPP="$CPP -mno-cygwin"
2355 CFLAGS="$CFLAGS -mms-bitfields"
2356 CXXFLAGS="$CXXFLAGS -mms-bitfields"
2357 DSO_LDOPTS='-shared'
2358 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
2359 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2361 # Use temp file for windres (bug 213281)
2362 RCFLAGS='-O coff --use-temp-file'
2363 # mingw doesn't require kernel32, user32, and advapi32 explicitly
2364 LIBS="$LIBS -luuid -lgdi32 -lwinmm -lwsock32"
2365 MOZ_JS_STATIC_LIBS='-L$(LIBXUL_DIST)/bin -ljs_static'
2366 MOZ_JS_SHARED_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs'
2368 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core -lmozalloc'
2369 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom -lmozalloc'
2371 IMPORT_LIB_SUFFIX=dll.a
2372 GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
2374 TARGET_COMPILER_ABI=msvc
2378 if test "$AS_BIN"; then
2379 AS="$(basename "$AS_BIN")"
2381 AR='lib -NOLOGO -OUT:"$@"'
2383 RANLIB='echo not_ranlib'
2384 STRIP='echo not_strip'
2390 GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
2396 IMPORT_LIB_SUFFIX=lib
2397 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2398 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2400 MKSHLIB_UNFORCE_ALL=
2401 DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2402 _USE_CPP_INCLUDE_FLAG=1
2403 _DEFINES_CFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2404 _DEFINES_CXXFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2405 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2406 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2407 CXXFLAGS="$CXXFLAGS -wd4800" # disable warning "forcing value to bool"
2408 LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
2409 MOZ_DEBUG_FLAGS='-Zi'
2410 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2411 WARNINGS_AS_ERRORS='-WX'
2412 # If we're building with --enable-profiling, we need -Oy-, which forces a frame pointer.
2413 if test -z "$MOZ_PROFILING"; then
2414 MOZ_OPTIMIZE_FLAGS='-O1'
2416 MOZ_OPTIMIZE_FLAGS='-O1 -Oy-'
2418 MOZ_JS_STATIC_LIBS='$(LIBXUL_DIST)/lib/js_static.lib'
2419 MOZ_JS_SHARED_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2421 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2422 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2423 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2424 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2425 if test $_MSC_VER -ge 1400; then
2426 LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE -NXCOMPAT"
2427 dnl For profile-guided optimization
2428 PROFILE_GEN_CFLAGS="-GL"
2429 PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2430 dnl XXX: PGO builds can fail with warnings treated as errors,
2431 dnl specifically "no profile data available" appears to be
2432 dnl treated as an error sometimes. This might be a consequence
2433 dnl of using WARNINGS_AS_ERRORS in some modules, combined
2434 dnl with the linker doing most of the work in the whole-program
2435 dnl optimization/PGO case. I think it's probably a compiler bug,
2436 dnl but we work around it here.
2437 PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2438 dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2439 dnl Probably also a compiler bug, but what can you do?
2440 PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2441 LDFLAGS="$LDFLAGS -DYNAMICBASE"
2444 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,jpeg32$(VERSION_NUMBER),$(DEPTH)/jpeg)'
2445 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,png,$(DEPTH)/modules/libimg/png)'
2446 AC_DEFINE(HAVE_SNPRINTF)
2451 AC_DEFINE(HW_THREADS)
2452 AC_DEFINE(STDC_HEADERS)
2453 AC_DEFINE(NEW_H, <new>)
2454 AC_DEFINE(WIN32_LEAN_AND_MEAN)
2455 TARGET_MD_ARCH=win32
2456 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2458 MOZ_USER_DIR="Mozilla"
2460 dnl Hardcode to win95 for now - cls
2461 TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2463 dnl set NO_X11 defines here as the general check is skipped on win32
2467 dnl MinGW/MSYS doesn't provide or need cygpath
2472 MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2474 *-cygwin*|*-msvc*|*-mks*)
2475 CYGPATH_W="cygpath -a -w"
2476 CYGPATH_S="sed -e s|\\\\|/|g"
2477 MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
2481 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2483 if test -z "$MOZ_TOOLS"; then
2484 AC_MSG_ERROR([MOZ_TOOLS is not set])
2487 MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2488 if test "$?" != "0" -o -z "$MOZ_TOOLS_DIR"; then
2489 AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2491 MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
2492 if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
2493 AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2495 MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
2502 AC_MSG_WARN([Using a cygwin build environment is unsupported. Configure cannot check for the presence of necessary headers. Please upgrade to MozillaBuild; see https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
2506 AC_CHECK_HEADERS(oleacc.idl)
2510 AC_CHECK_HEADERS(atlbase.h)
2517 if test "$HAVE_64BIT_OS"; then
2518 AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
2521 if test $_MSC_VER -ge 1400; then
2522 LDFLAGS="$LDFLAGS -SAFESEH"
2525 if test -n "$GNU_CC"; then
2526 CFLAGS="$CFLAGS -mstackrealign"
2527 CXXFLAGS="$CXXFLAGS -mstackrealign"
2530 AC_CHECK_HEADERS(mmintrin.h)
2543 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2547 if test "$HAVE_64BIT_OS"; then
2554 CFLAGS="$CFLAGS -Dunix"
2555 CXXFLAGS="$CXXFLAGS -Dunix"
2556 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2558 DSO_PIC_CFLAGS='-fPIC -DPIC'
2559 DSO_LDOPTS='-shared'
2560 BIN_FLAGS='-Wl,--export-dynamic'
2562 DSO_PIC_CFLAGS='-fPIC -DPIC'
2563 DLL_SUFFIX=".so.1.0"
2564 DSO_LDOPTS='-shared'
2566 # This will fail on a.out systems prior to 1.5.1_ALPHA.
2567 MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2568 MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2569 if test "$LIBRUNPATH"; then
2570 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2572 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2573 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2578 AC_DEFINE(_QNX_SOURCE)
2581 WARNINGS_AS_ERRORS=''
2582 MOZ_OPTIMIZE_FLAGS="-O"
2583 MOZ_DEBUG_FLAGS="-gstabs"
2586 LIBS="$LIBS -lsocket -lstdc++"
2587 _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
2588 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h -D_POSIX_C_SOURCE=199506'
2589 if test "$with_x" != "yes"
2591 _PLATFORM_DEFAULT_TOOLKIT="photon"
2592 TK_CFLAGS='-I/usr/include/photon'
2595 case "${target_cpu}" in
2597 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
2600 case "${host_cpu}" in
2608 DLL_SUFFIX=".so.1.0"
2610 DSO_PIC_CFLAGS='-fPIC'
2611 DSO_LDOPTS='-shared -fPIC'
2612 if test "$LIBRUNPATH"; then
2613 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2618 AC_DEFINE(NO_PW_GECOS)
2619 AC_DEFINE(NO_UDSOCK)
2620 AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
2622 MKSHLIB_FORCE_ALL='-all'
2623 MKSHLIB_UNFORCE_ALL='-none'
2625 AS_DASH_C_FLAG='-Wc/names=as_is'
2627 DSO_LDOPTS='-shared -auto_symvec'
2629 MOZ_DEBUG_LDFLAGS='-g'
2631 CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
2632 CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
2637 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2638 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2641 AC_DEFINE(OS2EMX_PLAIN_CHAR)
2642 AC_DEFINE(TCPV40HDRS)
2648 IMPORT_LIB_SUFFIX=lib
2652 CFLAGS="$CFLAGS -Zomf"
2653 CXXFLAGS="$CXXFLAGS -Zomf"
2655 BIN_FLAGS='-Zlinker /ST:0x100000'
2659 WARNINGS_AS_ERRORS='-Werror'
2660 MOZ_DEBUG_FLAGS="-g -fno-inline"
2661 MOZ_OPTIMIZE_FLAGS="-O2"
2662 MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2663 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2664 LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2666 _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2669 MOZ_USER_DIR="Mozilla"
2671 if test "$MOZTOOLS"; then
2672 MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2674 AC_MSG_ERROR([MOZTOOLS is not set])
2676 if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2677 DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2678 LDFLAGS="$LDFLAGS -Zhigh-mem"
2679 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2680 AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2683 # GCC for OS/2 currently predefines these, but we don't want them
2684 _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2685 _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2687 AC_CACHE_CHECK(for __declspec(dllexport),
2689 [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2691 ac_os2_declspec="yes",
2692 ac_os2_declspec="no")])
2693 if test "$ac_os2_declspec" != "yes"; then
2694 AC_MSG_ERROR([Compiler does not support __declspec(dllexport), install GCC-4.3.2 or newer])
2699 if test "$GNU_CC"; then
2700 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2701 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2704 MOZ_DEBUG_FLAGS='-g'
2705 ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
2706 CFLAGS="$CFLAGS -ieee"
2707 CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee -ptr $(DIST)/cxx_repository'
2708 DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
2711 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2712 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2713 MKSHLIB_FORCE_ALL='-all'
2714 MKSHLIB_UNFORCE_ALL='-none'
2715 dnl Might fix the libxpcom.so breakage on this platform as well....
2716 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2717 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2719 if test -z "$GNU_CXX"; then
2722 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2726 DIRENT_INO=d_stat.st_ino
2727 dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
2728 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2729 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2730 dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
2731 AC_DEFINE(STDC_HEADERS)
2732 if test "$no_x" = "yes"; then
2733 _PLATFORM_DEFAULT_TOOLKIT='photon'
2734 TK_CFLAGS='-I/usr/nto/include/photon'
2735 TK_LIBS='-lphoton -lphrender'
2740 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2741 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2742 CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
2743 if test ! "$GNU_CC"; then
2750 TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2753 # $ORIGIN/.. is for shared libraries under components/ to locate shared
2754 # libraries one level up (e.g. libnspr4.so)
2755 if test "$SOLARIS_SUNPRO_CC"; then
2756 LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..' -z lazyload -z combreloc -z muldefs"
2757 LIBS="-lCrun -lCstd -lc $LIBS"
2759 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2760 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__"
2761 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions -norunpath -D__FUNCTION__=__func__ -template=no%extdef"
2762 _MOZ_EXCEPTIONS_FLAGS_ON='-features=except'
2763 _MOZ_EXCEPTIONS_FLAGS_OFF='-features=no%except'
2764 LDFLAGS="-xildoff $LDFLAGS"
2765 if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then
2766 _SAVE_LDFLAGS=$LDFLAGS
2767 LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2768 AC_TRY_LINK([#include <stdio.h>],
2769 [printf("Hello World\n");],
2771 [LDFLAGS=$_SAVE_LDFLAGS])
2773 WARNINGS_AS_ERRORS='-Werror'
2774 MOZ_OPTIMIZE_FLAGS="-xO4"
2775 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2776 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2777 MKSHLIB_FORCE_ALL='-z allextract'
2778 MKSHLIB_UNFORCE_ALL='-z defaultextract'
2785 AS='/usr/ccs/bin/as'
2786 ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2788 TARGET_COMPILER_ABI="sunc"
2789 CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2790 CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2791 AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
2795 [#if (__SUNPRO_CC < 0x590)
2798 _BAD_COMPILER=,_BAD_COMPILER=1)
2799 if test -n "$_BAD_COMPILER"; then
2801 AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
2806 [#if (__SUNPRO_CC >= 0x5100)
2807 #error "Sun C++ 5.10 or above"
2809 _ABOVE_SS12U1=,_ABOVE_SS12U1=1)
2810 if test "$_ABOVE_SS12U1"; then
2812 CXXFLAGS="$CXXFLAGS -xannotate=no"
2814 AC_MSG_RESULT([$_res])
2817 LDFLAGS="$LDFLAGS -Wl,-z,ignore -Wl,-R,'\$\$ORIGIN:\$\$ORIGIN/..' -Wl,-z,lazyload -Wl,-z,combreloc -Wl,-z,muldefs"
2819 MKSHLIB_FORCE_ALL='-Wl,-z -Wl,allextract'
2820 MKSHLIB_UNFORCE_ALL='-Wl,-z -Wl,defaultextract'
2821 ASFLAGS="$ASFLAGS -fPIC"
2822 DSO_LDOPTS='-shared'
2824 _WARNINGS_CXXFLAGS=''
2825 if test "$OS_RELEASE" = "5.3"; then
2826 AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2829 if test "$OS_RELEASE" = "5.5.1"; then
2830 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2835 DSO_LDOPTS='-Bdynamic'
2836 MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2837 MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2839 AC_DEFINE(SPRINTF_RETURNS_STRING)
2840 case "$(target_os)" in
2842 DLL_SUFFIX='.so.1.0'
2848 NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2852 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2856 AC_DEFINE(NO_PW_GECOS)
2858 _PLATFORM_DEFAULT_TOOLKIT=cairo-android
2859 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2861 MOZ_GFX_OPTIMIZE_MOBILE=1
2862 # If we're building with --enable-profiling, we need a frame pointer.
2863 if test -z "$MOZ_PROFILING"; then
2864 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions -fomit-frame-pointer"
2866 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions -fno-omit-frame-pointer"
2872 dnl Only one oddball right now (QNX), but this gives us flexibility
2873 dnl if any other platforms need to override this in the future.
2874 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2876 dnl ========================================================
2877 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2878 dnl by now will not have any way to link most binaries (tests
2879 dnl as well as viewer, apprunner, etc.), because some symbols
2880 dnl will be left out of the "composite" .so's by ld as unneeded.
2881 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2882 dnl they can link in the static libs that provide the missing
2884 dnl ========================================================
2885 NO_LD_ARCHIVE_FLAGS=
2886 if test -z "$MKSHLIB_FORCE_ALL" -o -z "$MKSHLIB_UNFORCE_ALL"; then
2887 NO_LD_ARCHIVE_FLAGS=1
2891 NO_LD_ARCHIVE_FLAGS=
2894 NO_LD_ARCHIVE_FLAGS=
2897 NO_LD_ARCHIVE_FLAGS=
2899 *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince|*-winmo)
2900 if test -z "$GNU_CC"; then
2901 NO_LD_ARCHIVE_FLAGS=
2905 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2907 dnl ========================================================
2908 dnl = Flags to strip unused symbols from .so components and
2909 dnl = to export jemalloc symbols when linking a program
2910 dnl ========================================================
2912 *-linux*|*-kfreebsd*-gnu|*-gnu*)
2913 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2914 MOZ_JEMALLOC_STANDALONE_GLUE_LDOPTS='-rdynamic -Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/jemalloc-standalone-linkage-version-script'
2917 if test -z "$GNU_CC"; then
2918 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2920 if test -z "$GCC_USE_GNU_LD"; then
2921 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2923 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2928 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2931 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2933 *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince|*-winmo)
2934 if test -n "$GNU_CC"; then
2935 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2940 if test -z "$COMPILE_ENVIRONMENT"; then
2941 SKIP_COMPILER_CHECKS=1
2942 SKIP_LIBRARY_CHECKS=1
2945 if test -z "$SKIP_COMPILER_CHECKS"; then
2946 dnl Checks for typedefs, structures, and compiler characteristics.
2947 dnl ========================================================
2955 AC_MSG_CHECKING(for __stdcall)
2956 AC_CACHE_VAL(ac_cv___stdcall,
2957 [AC_TRY_COMPILE([template <typename Method> struct foo;
2958 template <> struct foo<void (*)()> {};
2959 template <> struct foo<void (__stdcall*)()> {};],
2961 [ac_cv___stdcall=true],
2962 [ac_cv___stdcall=false])])
2963 if test "$ac_cv___stdcall" = true ; then
2964 AC_DEFINE(HAVE_STDCALL)
2970 AC_MSG_CHECKING(for ssize_t)
2971 AC_CACHE_VAL(ac_cv_type_ssize_t,
2972 [AC_TRY_COMPILE([#include <stdio.h>
2973 #include <sys/types.h>],
2975 [ac_cv_type_ssize_t=true],
2976 [ac_cv_type_ssize_t=false])])
2977 if test "$ac_cv_type_ssize_t" = true ; then
2978 AC_DEFINE(HAVE_SSIZE_T)
2983 AC_STRUCT_ST_BLKSIZE
2984 AC_MSG_CHECKING(for siginfo_t)
2985 AC_CACHE_VAL(ac_cv_siginfo_t,
2986 [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2987 #include <signal.h>],
2989 [ac_cv_siginfo_t=true],
2990 [ac_cv_siginfo_t=false])])
2991 if test "$ac_cv_siginfo_t" = true ; then
2992 AC_DEFINE(HAVE_SIGINFO_T)
2998 dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
2999 dnl ========================================================
3000 AC_MSG_CHECKING(for int16_t)
3001 AC_CACHE_VAL(ac_cv_int16_t,
3002 [AC_TRY_COMPILE([#include <stdio.h>
3003 #include <sys/types.h>],
3005 [ac_cv_int16_t=true],
3006 [ac_cv_int16_t=false])])
3007 if test "$ac_cv_int16_t" = true ; then
3008 AC_DEFINE(HAVE_INT16_T)
3013 AC_MSG_CHECKING(for int32_t)
3014 AC_CACHE_VAL(ac_cv_int32_t,
3015 [AC_TRY_COMPILE([#include <stdio.h>
3016 #include <sys/types.h>],
3018 [ac_cv_int32_t=true],
3019 [ac_cv_int32_t=false])])
3020 if test "$ac_cv_int32_t" = true ; then
3021 AC_DEFINE(HAVE_INT32_T)
3026 AC_MSG_CHECKING(for int64_t)
3027 AC_CACHE_VAL(ac_cv_int64_t,
3028 [AC_TRY_COMPILE([#include <stdio.h>
3029 #include <sys/types.h>],
3031 [ac_cv_int64_t=true],
3032 [ac_cv_int64_t=false])])
3033 if test "$ac_cv_int64_t" = true ; then
3034 AC_DEFINE(HAVE_INT64_T)
3039 AC_MSG_CHECKING(for int64)
3040 AC_CACHE_VAL(ac_cv_int64,
3041 [AC_TRY_COMPILE([#include <stdio.h>
3042 #include <sys/types.h>],
3045 [ac_cv_int64=false])])
3046 if test "$ac_cv_int64" = true ; then
3047 AC_DEFINE(HAVE_INT64)
3052 AC_MSG_CHECKING(for uint)
3053 AC_CACHE_VAL(ac_cv_uint,
3054 [AC_TRY_COMPILE([#include <stdio.h>
3055 #include <sys/types.h>],
3058 [ac_cv_uint=false])])
3059 if test "$ac_cv_uint" = true ; then
3060 AC_DEFINE(HAVE_UINT)
3065 AC_MSG_CHECKING(for uint_t)
3066 AC_CACHE_VAL(ac_cv_uint_t,
3067 [AC_TRY_COMPILE([#include <stdio.h>
3068 #include <sys/types.h>],
3070 [ac_cv_uint_t=true],
3071 [ac_cv_uint_t=false])])
3072 if test "$ac_cv_uint_t" = true ; then
3073 AC_DEFINE(HAVE_UINT_T)
3078 AC_MSG_CHECKING(for uint16_t)
3079 AC_CACHE_VAL(ac_cv_uint16_t,
3080 [AC_TRY_COMPILE([#include <stdio.h>
3081 #include <sys/types.h>],
3082 [uint16_t foo = 0;],
3083 [ac_cv_uint16_t=true],
3084 [ac_cv_uint16_t=false])])
3085 if test "$ac_cv_uint16_t" = true ; then
3086 AC_DEFINE(HAVE_UINT16_T)
3092 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
3093 dnl are defined when compiling C++ but not C. Since the result of this
3094 dnl test is used only in C++, do it in C++.
3097 AC_MSG_CHECKING(for uname.domainname)
3098 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
3099 [AC_TRY_COMPILE([#include <sys/utsname.h>],
3100 [ struct utsname *res; char *domain;
3101 (void)uname(res); if (res != 0) { domain = res->domainname; } ],
3102 [ac_cv_have_uname_domainname_field=true],
3103 [ac_cv_have_uname_domainname_field=false])])
3105 if test "$ac_cv_have_uname_domainname_field" = "true"; then
3106 AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
3112 AC_MSG_CHECKING(for uname.__domainname)
3113 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
3114 [AC_TRY_COMPILE([#include <sys/utsname.h>],
3115 [ struct utsname *res; char *domain;
3116 (void)uname(res); if (res != 0) { domain = res->__domainname; } ],
3117 [ac_cv_have_uname_us_domainname_field=true],
3118 [ac_cv_have_uname_us_domainname_field=false])])
3120 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
3121 AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
3129 dnl Check for usable char16_t (2 bytes, unsigned)
3130 dnl (we might not need the unsignedness check anymore)
3131 AC_CACHE_CHECK(for usable char16_t (2 bytes, unsigned),
3132 ac_cv_have_usable_char16_t,
3133 [AC_TRY_COMPILE([$configure_static_assert_macros],
3134 [CONFIGURE_STATIC_ASSERT(sizeof(char16_t) == 2);
3135 CONFIGURE_STATIC_ASSERT(char16_t(-1) > char16_t(0));
3136 CONFIGURE_STATIC_ASSERT(sizeof((u"hello")[0]) == 2);
3137 CONFIGURE_STATIC_ASSERT(sizeof(u'a') == 2);
3138 CONFIGURE_STATIC_ASSERT(u'\xFFFF' > u'\x0')],
3139 ac_cv_have_usable_char16_t="yes",
3140 ac_cv_have_usable_char16_t="no")])
3141 if test "$ac_cv_have_usable_char16_t" = "yes"; then
3142 AC_DEFINE(HAVE_CPP_CHAR16_T)
3146 dnl Check for usable wchar_t (2 bytes, unsigned)
3147 dnl (we really don't need the unsignedness check anymore)
3148 dnl ========================================================
3150 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
3151 ac_cv_have_usable_wchar_v2,
3152 [AC_TRY_COMPILE([#include <stddef.h>
3153 $configure_static_assert_macros],
3154 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
3155 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
3156 ac_cv_have_usable_wchar_v2="yes",
3157 ac_cv_have_usable_wchar_v2="no")])
3158 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
3159 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
3160 HAVE_CPP_2BYTE_WCHAR_T=1
3161 elif test "$ac_cv_have_usable_char16_t" != "yes"; then
3162 dnl This is really gcc-only
3163 dnl Do this test using CXX only since some versions of gcc
3164 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
3165 dnl only have short-wchar support for c++.
3166 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
3168 _SAVE_CXXFLAGS=$CXXFLAGS
3169 CXXFLAGS="$CXXFLAGS -fshort-wchar"
3171 AC_CACHE_CHECK(for compiler -fshort-wchar option,
3172 ac_cv_have_usable_wchar_option_v2,
3173 [AC_TRY_LINK([#include <stddef.h>
3174 $configure_static_assert_macros],
3175 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
3176 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
3177 ac_cv_have_usable_wchar_option_v2="yes",
3178 ac_cv_have_usable_wchar_option_v2="no")])
3180 if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
3181 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
3182 HAVE_CPP_2BYTE_WCHAR_T=1
3183 if test "$OS_TARGET" = Android; then
3184 WCHAR_CFLAGS="-fshort-wchar -Wl,--no-wchar-size-warning"
3185 CXXFLAGS="$CXXFLAGS -Wl,--no-wchar-size-warning"
3186 CFLAGS="$CFLAGS -Wl,--no-wchar-size-warning"
3187 DSO_LDOPTS="$DSO_LDOPTS -Wl,--no-wchar-size-warning"
3189 WCHAR_CFLAGS="-fshort-wchar"
3192 CXXFLAGS=$_SAVE_CXXFLAGS
3198 dnl Check for .hidden assembler directive and visibility attribute.
3199 dnl Borrowed from glibc configure.in
3200 dnl ===============================================================
3201 if test "$GNU_CC"; then
3202 AC_CACHE_CHECK(for visibility(hidden) attribute,
3203 ac_cv_visibility_hidden,
3204 [cat > conftest.c <<EOF
3205 int foo __attribute__ ((visibility ("hidden"))) = 1;
3207 ac_cv_visibility_hidden=no
3208 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3209 if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
3210 ac_cv_visibility_hidden=yes
3215 if test "$ac_cv_visibility_hidden" = "yes"; then
3216 AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
3218 AC_CACHE_CHECK(for visibility(default) attribute,
3219 ac_cv_visibility_default,
3220 [cat > conftest.c <<EOF
3221 int foo __attribute__ ((visibility ("default"))) = 1;
3223 ac_cv_visibility_default=no
3224 if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3225 if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
3226 ac_cv_visibility_default=yes
3231 if test "$ac_cv_visibility_default" = "yes"; then
3232 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
3234 AC_CACHE_CHECK(for visibility pragma support,
3235 ac_cv_visibility_pragma,
3236 [cat > conftest.c <<EOF
3237 #pragma GCC visibility push(hidden)
3239 #pragma GCC visibility push(default)
3240 int foo_default = 1;
3242 ac_cv_visibility_pragma=no
3243 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3244 if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
3245 if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
3246 ac_cv_visibility_pragma=yes
3252 if test "$ac_cv_visibility_pragma" = "yes"; then
3253 AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
3254 ac_cv_have_visibility_class_bug,
3255 [cat > conftest.c <<EOF
3256 #pragma GCC visibility push(hidden)
3257 struct __attribute__ ((visibility ("default"))) TestStruct {
3260 __attribute__ ((visibility ("default"))) void TestFunc() {
3264 ac_cv_have_visibility_class_bug=no
3265 if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
3266 ac_cv_have_visibility_class_bug=yes
3268 if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
3269 ac_cv_have_visibility_class_bug=yes
3272 rm -rf conftest.{c,S}
3275 AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
3276 ac_cv_have_visibility_builtin_bug,
3277 [cat > conftest.c <<EOF
3278 #pragma GCC visibility push(hidden)
3279 #pragma GCC visibility push(default)
3281 #pragma GCC visibility pop
3283 __attribute__ ((visibility ("default"))) void Func() {
3285 memset(c, 0, sizeof(c));
3288 ac_cv_have_visibility_builtin_bug=no
3289 if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
3290 ac_cv_have_visibility_builtin_bug=yes
3292 if test `grep -c "@PLT" conftest.S` = 0; then
3293 ac_cv_visibility_builtin_bug=yes
3296 rm -f conftest.{c,S}
3298 if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
3299 "$ac_cv_have_visibility_class_bug" = "no"; then
3300 VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
3301 WRAP_SYSTEM_INCLUDES=1
3302 STL_FLAGS='-I$(DIST)/stl_wrappers'
3305 VISIBILITY_FLAGS='-fvisibility=hidden'
3306 fi # have visibility pragma bug
3307 fi # have visibility pragma
3308 fi # have visibility(default) attribute
3309 fi # have visibility(hidden) attribute
3312 # visibility hidden flag for Sun Studio on Solaris
3313 if test "$SOLARIS_SUNPRO_CC"; then
3314 VISIBILITY_FLAGS='-xldscope=hidden'
3315 fi # Sun Studio on Solaris
3317 AC_SUBST(WRAP_SYSTEM_INCLUDES)
3318 AC_SUBST(VISIBILITY_FLAGS)
3320 dnl Check for __force_align_arg_pointer__ for SSE2 on gcc
3321 dnl ========================================================
3322 if test "$GNU_CC"; then
3323 CFLAGS_save="${CFLAGS}"
3324 CFLAGS="${CFLAGS} -Werror"
3325 AC_CACHE_CHECK(for __force_align_arg_pointer__ attribute,
3326 ac_cv_force_align_arg_pointer,
3327 [AC_TRY_COMPILE([__attribute__ ((__force_align_arg_pointer__)) void test() {}],
3329 ac_cv_force_align_arg_pointer="yes",
3330 ac_cv_force_align_arg_pointer="no")])
3331 CFLAGS="${CFLAGS_save}"
3332 if test "$ac_cv_force_align_arg_pointer" = "yes"; then
3333 HAVE_GCC_ALIGN_ARG_POINTER=1
3335 HAVE_GCC_ALIGN_ARG_POINTER=
3338 AC_SUBST(HAVE_GCC_ALIGN_ARG_POINTER)
3340 dnl Checks for header files.
3341 dnl ========================================================
3343 case "$target_os" in
3345 # for stuff like -lXshm
3346 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
3349 AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
3350 AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
3351 AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
3352 AC_CHECK_HEADERS(malloc.h)
3353 AC_CHECK_HEADERS(X11/XKBlib.h)
3354 AC_CHECK_HEADERS(io.h)
3356 dnl These are all the places some variant of statfs can be hiding.
3357 AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
3360 AC_CHECK_HEADERS(sys/quota.h)
3361 AC_CHECK_HEADERS(linux/quota.h)
3363 dnl Try for MMX support
3364 dnl NB - later gcc versions require -mmmx for this header to be successfully
3365 dnl included (or another option which implies it, such as -march=pentium-mmx)
3366 AC_CHECK_HEADERS(mmintrin.h)
3368 dnl Check whether the compiler supports the new-style C++ standard
3369 dnl library headers (i.e. <new>) or needs the old "new.h"
3372 AC_CHECK_HEADER(new, [NEW_H=new])
3373 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
3376 AC_ARG_ENABLE(dtrace,
3377 [ --enable-dtrace build with dtrace support if available (default=no)],
3378 [enable_dtrace="yes"],)
3379 if test "x$enable_dtrace" = "xyes"; then
3380 AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
3381 if test -n "$HAVE_DTRACE"; then
3382 AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
3384 AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
3387 AC_SUBST(HAVE_DTRACE)
3393 AC_CHECK_HEADERS(sys/cdefs.h)
3397 dnl Checks for libraries.
3398 dnl ========================================================
3403 AC_CHECK_LIB(c_r, gethostbyname_r)
3407 dnl We don't want to link with libdl even if it's present on OS X, since
3408 dnl it's not used and not part of the default installation.
3409 dnl The same goes for BeOS. OS/2 has dlfcn in libc.
3410 dnl We don't want to link against libm or libpthread on Darwin since
3411 dnl they both are just symlinks to libSystem and explicitly linking
3412 dnl against libSystem causes issues when debugging (see bug 299601).
3421 AC_SEARCH_LIBS(dlopen, dl,
3422 AC_CHECK_HEADER(dlfcn.h,
3423 AC_DEFINE(HAVE_DLOPEN)))
3427 _SAVE_CFLAGS="$CFLAGS"
3428 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3429 AC_CHECK_FUNCS(dladdr)
3430 CFLAGS="$_SAVE_CFLAGS"
3432 if test ! "$GNU_CXX"; then
3436 AC_CHECK_LIB(C_r, demangle)
3439 AC_CHECK_LIB(C, demangle)
3444 dnl OS/2 has socket in libc.
3449 AC_CHECK_LIB(socket, socket)
3452 dnl ========================================================
3453 dnl Check whether we can compile code for Core Text
3454 dnl (available on Mac OS X 10.5 or later)
3455 dnl ========================================================
3458 AC_MSG_CHECKING([for Core Text])
3459 AC_TRY_COMPILE([#include <ApplicationServices/ApplicationServices.h>],
3460 [CTLineRef lineRef;],
3461 ac_cv_have_core_text="yes",
3462 ac_cv_have_core_text="no")
3463 AC_MSG_RESULT([$ac_cv_have_core_text])
3465 if test "$ac_cv_have_core_text" = "no"; then
3466 AC_MSG_ERROR([Core Text is required (available on Mac OS X 10.5 or later).])
3472 XLIBS="$X_EXTRA_LIBS"
3474 dnl ========================================================
3475 dnl Checks for X libraries.
3476 dnl Ordering is important.
3477 dnl Xt is dependent upon SM as of X11R6
3478 dnl ========================================================
3479 if test "$no_x" = "yes"; then
3482 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3483 XLIBS="-lX11 $XLIBS"
3484 _SAVE_LDFLAGS="$LDFLAGS"
3485 LDFLAGS="$XLDFLAGS $LDFLAGS"
3486 AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3487 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3488 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3489 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3491 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3492 unset ac_cv_lib_Xt_XtFree
3493 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3494 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
3495 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3496 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3499 # AIX needs the motif library linked before libXt to prevent
3500 # crashes in plugins linked against Motif - Bug #98892
3501 case "${target_os}" in
3503 XT_LIBS="-lXm $XT_LIBS"
3507 dnl ========================================================
3508 dnl = Check for XShm
3509 dnl ========================================================
3510 AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3512 AC_CHECK_HEADER(X11/extensions/XShm.h)
3513 if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" &&
3514 test -n "$_HAVE_XSHM_XEXT"; then
3515 AC_DEFINE(HAVE_XSHM)
3518 dnl ========================================================
3520 dnl ========================================================
3521 AC_CHECK_HEADER(X11/extensions/scrnsaver.h,
3522 AC_CHECK_LIB(Xss, XScreenSaverQueryInfo,
3523 [XSS_LIBS="-lXss $XEXT_LIBS $XLIBS"
3524 AC_DEFINE(HAVE_LIBXSS)],, $XEXT_LIBS $XLIBS))
3526 dnl ========================================================
3528 dnl ========================================================
3529 AC_CHECK_LIB(XIE, XieFloGeometry, [MOZ_XIE_LIBS="-lXIE"],,
3531 AC_CHECK_HEADER(X11/extensions/XIElib.h)
3533 if test "$MOZ_XIE_LIBS"; then
3534 dnl ====================================================
3535 dnl = If XIE is present and is desired, turn it on
3536 dnl ====================================================
3546 LDFLAGS="$_SAVE_LDFLAGS"
3548 dnl ========================================================
3549 dnl = Check for freetype2 and its functionality
3550 dnl ========================================================
3551 AC_CHECK_FT2(6.1.0, [_HAVE_FREETYPE2=1], [_HAVE_FREETYPE2=])
3553 if test "$_HAVE_FREETYPE2"; then
3555 _SAVE_CFLAGS="$CFLAGS"
3556 LIBS="$LIBS $FT2_LIBS"
3557 CFLAGS="$CFLAGS $FT2_CFLAGS"
3559 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
3560 ac_cv_member_FT_Bitmap_Size_y_ppem,
3561 [AC_TRY_COMPILE([#include <ft2build.h>
3562 #include FT_FREETYPE_H],
3564 if (sizeof s.y_ppem) return 0;
3566 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
3567 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
3568 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
3569 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
3571 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
3573 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
3574 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
3575 [FT_Bitmap_Size structure includes y_ppem field])
3577 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
3580 CFLAGS="$_SAVE_CFLAGS"
3592 AC_MSG_CHECKING(for ARM SIMD support in compiler)
3594 [asm("uqadd8 r1, r1, r2");],
3595 result="yes", result="no")
3596 AC_MSG_RESULT("$result")
3597 if test "$result" = "yes"; then
3598 AC_DEFINE(HAVE_ARM_SIMD)
3601 AC_SUBST(HAVE_ARM_SIMD)
3603 AC_MSG_CHECKING(for ARM NEON support in compiler)
3604 _SAVE_CFLAGS="$CFLAGS"
3605 if test "$GNU_CC"; then
3606 # gcc needs -mfpu=neon to recognize NEON instructions
3607 CFLAGS="$CFLAGS -mfpu=neon -mfloat-abi=softfp"
3610 [asm("vadd.i8 d0, d0, d0");],
3611 result="yes", result="no")
3612 AC_MSG_RESULT("$result")
3613 if test "$result" = "yes"; then
3614 AC_DEFINE(HAVE_ARM_NEON)
3617 CFLAGS="$_SAVE_CFLAGS"
3618 AC_SUBST(HAVE_ARM_NEON)
3620 dnl ========================================================
3621 dnl = pthread support
3622 dnl = Start by checking whether the system support pthreads
3623 dnl ========================================================
3624 case "$target_os" in
3629 MOZ_CHECK_PTHREADS(pthreads,
3630 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3631 MOZ_CHECK_PTHREADS(pthread,
3632 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3633 MOZ_CHECK_PTHREADS(c_r,
3634 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3635 MOZ_CHECK_PTHREADS(c,
3644 dnl ========================================================
3645 dnl Check the command line for --with-pthreads
3646 dnl ========================================================
3647 MOZ_ARG_WITH_BOOL(pthreads,
3648 [ --with-pthreads Force use of system pthread library with NSPR ],
3649 [ if test "$USE_PTHREADS"x = x; then
3650 AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3656 dnl ========================================================
3657 dnl Do the platform specific pthread hackery
3658 dnl ========================================================
3659 if test "$USE_PTHREADS"x != x
3662 dnl See if -pthread is supported.
3665 ac_cv_have_dash_pthread=no
3666 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3667 echo 'int main() { return 0; }' | cat > conftest.c
3668 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3669 if test $? -eq 0; then
3670 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3671 ac_cv_have_dash_pthread=yes
3672 case "$target_os" in
3674 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3677 CFLAGS="$CFLAGS -pthread"
3678 CXXFLAGS="$CXXFLAGS -pthread"
3684 AC_MSG_RESULT($ac_cv_have_dash_pthread)
3687 dnl See if -pthreads is supported.
3689 ac_cv_have_dash_pthreads=no
3690 if test "$ac_cv_have_dash_pthread" = "no"; then
3691 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3692 echo 'int main() { return 0; }' | cat > conftest.c
3693 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3694 if test $? -eq 0; then
3695 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3696 ac_cv_have_dash_pthreads=yes
3697 CFLAGS="$CFLAGS -pthreads"
3698 CXXFLAGS="$CXXFLAGS -pthreads"
3702 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3707 AC_DEFINE(_REENTRANT)
3708 AC_DEFINE(_THREAD_SAFE)
3709 dnl -pthread links in -lc_r, so don't specify it explicitly.
3710 if test "$ac_cv_have_dash_pthread" = "yes"; then
3711 _PTHREAD_LDFLAGS="-pthread"
3713 _PTHREAD_LDFLAGS="-lc_r"
3717 *-*-openbsd*|*-*-bsdi*)
3718 AC_DEFINE(_REENTRANT)
3719 AC_DEFINE(_THREAD_SAFE)
3720 dnl -pthread links in -lc_r, so don't specify it explicitly.
3721 if test "$ac_cv_have_dash_pthread" = "yes"; then
3722 _PTHREAD_LDFLAGS="-pthread"
3726 *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
3727 AC_DEFINE(_REENTRANT)
3731 AC_DEFINE(_REENTRANT)
3735 AC_DEFINE(_REENTRANT)
3739 AC_DEFINE(_REENTRANT)
3743 AC_DEFINE(_REENTRANT)
3747 AC_DEFINE(_REENTRANT)
3748 if test "$SOLARIS_SUNPRO_CC"; then
3749 CFLAGS="$CFLAGS -mt"
3750 CXXFLAGS="$CXXFLAGS -mt"
3754 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3757 dnl ========================================================
3758 dnl See if mmap sees writes
3759 dnl For cross compiling, just define it as no, which is a safe default
3760 dnl ========================================================
3761 AC_MSG_CHECKING(whether mmap() sees write()s)
3767 #include <sys/mman.h>
3768 #include <sys/types.h>
3769 #include <sys/stat.h>
3772 char fname[] = "conftest.file";
3773 char zbuff[1024]; /* Fractional page is probably worst case */
3780 fd = open(fname, O_RDWR | O_CREAT, 0660);
3783 write(fd, zbuff, sizeof(zbuff));
3784 lseek(fd, 0, SEEK_SET);
3785 map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
3786 if(map==(char*)-1) return 2;
3787 for(i=0; fname[i]; i++) {
3788 int rc = write(fd, &fname[i], 1);
3789 if(map[i]!=fname[i]) return 4;
3796 AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
3798 AC_MSG_RESULT("$result")
3800 if test "$result" = "no"; then
3801 AC_DEFINE(MMAP_MISSES_WRITES)
3805 dnl Checks for library functions.
3806 dnl ========================================================
3807 AC_PROG_GCC_TRADITIONAL
3809 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 truncate64 statvfs64 setbuf isatty)
3810 AC_CHECK_FUNCS(flockfile getpagesize)
3811 AC_CHECK_FUNCS(localtime_r strtok_r)
3813 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock, and -lrt
3814 _SAVE_LDFLAGS=$LDFLAGS
3815 LDFLAGS="$LDFLAGS -lrt"
3816 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC) and -lrt,
3817 ac_cv_have_clock_monotonic,
3818 [AC_TRY_LINK([#include <time.h>],
3819 [ struct timespec ts;
3820 clock_gettime(CLOCK_MONOTONIC, &ts); ],
3821 ac_cv_have_clock_monotonic=yes,
3822 ac_cv_have_clock_monotonic=no)])
3823 LDFLAGS=$_SAVE_LDFLAGS
3824 if test "$ac_cv_have_clock_monotonic" = "yes"; then
3825 HAVE_CLOCK_MONOTONIC=1
3827 AC_DEFINE(HAVE_CLOCK_MONOTONIC)
3828 AC_SUBST(HAVE_CLOCK_MONOTONIC)
3829 AC_SUBST(REALTIME_LIBS)
3832 dnl check for wcrtomb/mbrtowc
3833 dnl =======================================================================
3834 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3837 AC_CACHE_CHECK(for wcrtomb,
3839 [AC_TRY_LINK([#include <wchar.h>],
3840 [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3841 ac_cv_have_wcrtomb="yes",
3842 ac_cv_have_wcrtomb="no")])
3843 if test "$ac_cv_have_wcrtomb" = "yes"; then
3844 AC_DEFINE(HAVE_WCRTOMB)
3846 AC_CACHE_CHECK(for mbrtowc,
3848 [AC_TRY_LINK([#include <wchar.h>],
3849 [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3850 ac_cv_have_mbrtowc="yes",
3851 ac_cv_have_mbrtowc="no")])
3852 if test "$ac_cv_have_mbrtowc" = "yes"; then
3853 AC_DEFINE(HAVE_MBRTOWC)
3860 ac_cv_func_res_ninit,
3863 #define _BSD_SOURCE 1
3867 [int foo = res_ninit(&_res);],
3868 [ac_cv_func_res_ninit=yes],
3869 [ac_cv_func_res_ninit=no])
3872 if test "$ac_cv_func_res_ninit" = "yes"; then
3873 AC_DEFINE(HAVE_RES_NINIT)
3874 dnl must add the link line we do something as foolish as this... dougt
3876 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3877 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3882 [for gnu_get_libc_version()],
3883 ac_cv_func_gnu_get_libc_version,
3885 #ifdef HAVE_GNU_LIBC_VERSION_H
3886 #include <gnu/libc-version.h>
3889 [const char *glibc_version = gnu_get_libc_version();],
3890 [ac_cv_func_gnu_get_libc_version=yes],
3891 [ac_cv_func_gnu_get_libc_version=no]
3895 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3896 AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3900 os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|winmo*|beos*)
3904 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3905 AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3906 AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3908 LIBS="$LIBS $_ICONV_LIBS"
3917 iconv_t h = iconv_open("", "");
3918 iconv(h, NULL, NULL, NULL, NULL);
3921 [ac_cv_func_iconv=yes],
3922 [ac_cv_func_iconv=no]
3925 if test "$ac_cv_func_iconv" = "yes"; then
3926 AC_DEFINE(HAVE_ICONV)
3927 DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3928 LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3929 LIBICONV="$_ICONV_LIBS"
3931 [for iconv() with const input],
3932 ac_cv_func_const_iconv,
3938 const char *input = "testing";
3939 iconv_t h = iconv_open("", "");
3940 iconv(h, &input, NULL, NULL, NULL);
3943 [ac_cv_func_const_iconv=yes],
3944 [ac_cv_func_const_iconv=no]
3947 if test "$ac_cv_func_const_iconv" = "yes"; then
3948 AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3960 dnl **********************
3961 dnl *** va_copy checks ***
3962 dnl **********************
3963 dnl we currently check for all three va_copy possibilities, so we get
3964 dnl all results in config.log for bug reports.
3965 AC_MSG_CHECKING(for an implementation of va_copy())
3966 AC_CACHE_VAL(ac_cv_va_copy,[
3969 void f (int i, ...) {
3970 va_list args1, args2;
3971 va_start (args1, i);
3972 va_copy (args2, args1);
3973 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3975 va_end (args1); va_end (args2);
3977 int main() { f (0, 42); return 0; }],
3983 AC_MSG_RESULT($ac_cv_va_copy)
3984 AC_MSG_CHECKING(for an implementation of __va_copy())
3985 AC_CACHE_VAL(ac_cv___va_copy,[
3988 void f (int i, ...) {
3989 va_list args1, args2;
3990 va_start (args1, i);
3991 __va_copy (args2, args1);
3992 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3994 va_end (args1); va_end (args2);
3996 int main() { f (0, 42); return 0; }],
3997 ac_cv___va_copy=yes,
4002 AC_MSG_RESULT($ac_cv___va_copy)
4003 AC_MSG_CHECKING(whether va_lists can be copied by value)
4004 AC_CACHE_VAL(ac_cv_va_val_copy,[
4007 void f (int i, ...) {
4008 va_list args1, args2;
4009 va_start (args1, i);
4011 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
4013 va_end (args1); va_end (args2);
4015 int main() { f (0, 42); return 0; }],
4016 ac_cv_va_val_copy=yes,
4017 ac_cv_va_val_copy=no,
4018 ac_cv_va_val_copy=yes
4021 if test "x$ac_cv_va_copy" = "xyes"; then
4022 AC_DEFINE(VA_COPY, va_copy)
4023 AC_DEFINE(HAVE_VA_COPY)
4024 elif test "x$ac_cv___va_copy" = "xyes"; then
4025 AC_DEFINE(VA_COPY, __va_copy)
4026 AC_DEFINE(HAVE_VA_COPY)
4029 if test "x$ac_cv_va_val_copy" = "xno"; then
4030 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
4032 AC_MSG_RESULT($ac_cv_va_val_copy)
4034 dnl Check for dll-challenged libc's.
4035 dnl This check is apparently only needed for Linux.
4038 dnl ===================================================================
4041 rm -rf conftest* _conftest
4043 cat >> conftest.C <<\EOF
4048 void __dump_link_map(void) {
4049 struct link_map *map = _dl_loaded;
4050 while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
4053 dlopen("./conftest1.so",RTLD_LAZY);
4054 dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
4055 dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
4056 dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
4060 /* _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).*/
4061 int main() { printf("./conftest1.so\n"); }
4065 $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
4067 cat >> conftest1.C <<\EOF
4069 void foo(void) {printf("foo in dll called\n");}
4071 ${CXX-g++} -fPIC -c -g conftest1.C
4072 ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
4073 ${CXX-g++} -g conftest.C -o conftest -ldl
4074 cp -f conftest1.so conftest _conftest
4076 if test `./conftest | grep conftest1.so | wc -l` -gt 1
4079 echo "*** Your libc has a bug that can result in loading the same dynamic"
4080 echo "*** library multiple times. This bug is known to be fixed in glibc-2.0.7-32"
4081 echo "*** or later. However, if you choose not to upgrade, the only effect"
4082 echo "*** will be excessive memory usage at runtime."
4086 rm -rf conftest* _conftest
4087 dnl ===================================================================
4091 dnl ===================================================================
4092 dnl ========================================================
4093 dnl Put your C++ language/feature checks below
4094 dnl ========================================================
4099 if test "$GNU_CC"; then
4100 if test "$CPU_ARCH" = "arm" ; then
4101 AC_CACHE_CHECK(for ARM EABI,
4105 #if defined(__ARM_EABI__)
4108 #error Not ARM EABI.
4111 ac_cv_gcc_arm_eabi="yes",
4112 ac_cv_gcc_arm_eabi="no")])
4113 if test "$ac_cv_gcc_arm_eabi" = "yes"; then
4115 ARM_ABI_PREFIX=eabi-
4117 ARM_ABI_PREFIX=oabi-
4121 AC_CACHE_CHECK(for gcc 3.0 ABI,
4122 ac_cv_gcc_three_abi,
4125 #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
4131 ac_cv_gcc_three_abi="yes",
4132 ac_cv_gcc_three_abi="no")])
4133 if test "$ac_cv_gcc_three_abi" = "yes"; then
4134 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
4137 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc2}"
4140 AC_SUBST(HAVE_GCC3_ABI)
4143 AC_CACHE_CHECK(for C++ \"explicit\" keyword,
4145 [AC_TRY_COMPILE(class X {
4146 public: explicit X(int i) : i_(i) {}
4150 ac_cv_cpp_explicit=yes,
4151 ac_cv_cpp_explicit=no)])
4152 if test "$ac_cv_cpp_explicit" = yes ; then
4153 AC_DEFINE(HAVE_CPP_EXPLICIT)
4156 AC_CACHE_CHECK(for C++ \"typename\" keyword,
4158 [AC_TRY_COMPILE(class param {
4160 typedef unsigned long num_type;
4163 template <class T> class tplt {
4165 typedef typename T::num_type t_num_type;
4166 t_num_type foo(typename T::num_type num) {
4172 ac_cv_cpp_typename=yes,
4173 ac_cv_cpp_typename=no)])
4174 if test "$ac_cv_cpp_typename" = yes ; then
4175 AC_DEFINE(HAVE_CPP_TYPENAME)
4178 dnl Check for support of modern template specialization syntax
4179 dnl Test code and requirement from scc@netscape.com.
4180 dnl Autoconf cut-and-paste job by waterson@netscape.com
4181 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
4182 ac_cv_cpp_modern_specialize_template_syntax,
4183 [AC_TRY_COMPILE(template <class T> struct X { int a; };
4185 template <> struct X<Y> { double a; };,
4188 ac_cv_cpp_modern_specialize_template_syntax=yes,
4189 ac_cv_cpp_modern_specialize_template_syntax=no)])
4190 if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
4191 AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
4195 dnl Some compilers support only full specialization, and some don't.
4196 AC_CACHE_CHECK(whether partial template specialization works,
4197 ac_cv_cpp_partial_specialization,
4198 [AC_TRY_COMPILE(template <class T> class Foo {};
4199 template <class T> class Foo<T*> {};,
4201 ac_cv_cpp_partial_specialization=yes,
4202 ac_cv_cpp_partial_specialization=no)])
4203 if test "$ac_cv_cpp_partial_specialization" = yes ; then
4204 AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
4207 dnl Some compilers have limited support for operators with templates;
4208 dnl specifically, it is necessary to define derived operators when a base
4209 dnl class's operator declaration should suffice.
4210 AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
4211 ac_cv_need_derived_template_operators,
4212 [AC_TRY_COMPILE([template <class T> class Base { };
4214 Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
4215 template <class T> class Derived : public Base<T> { };],
4216 [Derived<char> a, b;
4217 Base<char> c = a + b;
4219 ac_cv_need_derived_template_operators=no,
4220 ac_cv_need_derived_template_operators=yes)])
4221 if test "$ac_cv_need_derived_template_operators" = yes ; then
4222 AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
4226 dnl Some compilers have trouble detecting that a template class
4227 dnl that derives from another template is actually an instance
4228 dnl of the base class. This test checks for that.
4229 AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
4230 ac_cv_need_cpp_template_cast_to_base,
4231 [AC_TRY_COMPILE([template <class T> class Base { };
4232 template <class T> class Derived : public Base<T> { };
4233 template <class T> int foo(const Base<T>&) { return 0; }],
4234 [Derived<char> bar; return foo(bar);],
4235 ac_cv_need_cpp_template_cast_to_base=no,
4236 ac_cv_need_cpp_template_cast_to_base=yes)])
4237 if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
4238 AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
4241 dnl Some compilers have trouble resolving the ambiguity between two
4242 dnl functions whose arguments differ only by cv-qualifications.
4243 AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
4244 ac_cv_can_resolve_const_ambiguity,
4246 template <class T> class ptrClass {
4250 template <class T> T* a(ptrClass<T> *arg) {
4255 const T* a(const ptrClass<T> *arg) {
4261 ac_cv_can_resolve_const_ambiguity=yes,
4262 ac_cv_can_resolve_const_ambiguity=no)])
4263 if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
4264 AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
4268 dnl We don't do exceptions on unix. The only reason this used to be here
4269 dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses
4270 dnl exceptions. But, we turn exceptions off by default and this test breaks.
4271 dnl So im commenting this out until someone writes some artificial
4272 dnl intelligence to detect not only if the compiler has exceptions, but if
4273 dnl they are enabled as well.
4275 dnl AC_CACHE_CHECK(for C++ \"exceptions\",
4276 dnl ac_cv_cpp_exceptions,
4277 dnl [AC_TRY_COMPILE(class X { public: X() {} };
4278 dnl static void F() { throw X(); },
4279 dnl try { F(); } catch(X & e) { },
4280 dnl ac_cv_cpp_exceptions=yes,
4281 dnl ac_cv_cpp_exceptions=no)])
4282 dnl if test $ac_cv_cpp_exceptions = yes ; then
4283 dnl AC_DEFINE(HAVE_CPP_EXCEPTIONS)
4286 dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
4287 dnl supports it well enough to allow us to use it to change access, but not
4288 dnl to resolve ambiguity. The next two tests determine how well the |using|
4289 dnl keyword is supported.
4291 dnl Check to see if we can change access with |using|. Test both a
4292 dnl legal and an illegal example.
4293 AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
4294 ac_cv_cpp_access_changing_using2,
4296 class A { protected: int foo() { return 0; } };
4297 class B : public A { public: using A::foo; };,
4298 B b; return b.foo();,
4300 class A { public: int foo() { return 1; } };
4301 class B : public A { private: using A::foo; };,
4302 B b; return b.foo();,
4303 ac_cv_cpp_access_changing_using2=no,
4304 ac_cv_cpp_access_changing_using2=yes)],
4305 ac_cv_cpp_access_changing_using2=no)])
4306 if test "$ac_cv_cpp_access_changing_using2" = yes ; then
4307 AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
4310 dnl Check to see if we can resolve ambiguity with |using|.
4311 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
4312 ac_cv_cpp_ambiguity_resolving_using,
4313 [AC_TRY_COMPILE(class X {
4314 public: int go(const X&) {return 3;}
4315 int jo(const X&) {return 3;}
4317 class Y : public X {
4318 public: int go(int) {return 2;}
4319 int jo(int) {return 2;}
4321 private: using X::go;
4324 ac_cv_cpp_ambiguity_resolving_using=yes,
4325 ac_cv_cpp_ambiguity_resolving_using=no)])
4326 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
4327 AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
4330 dnl Check to see if the |std| namespace is supported. If so, we'll want
4331 dnl to qualify any standard library calls with "std::" to ensure that
4332 dnl those functions can be resolved.
4333 AC_CACHE_CHECK(for \"std::\" namespace,
4334 ac_cv_cpp_namespace_std,
4335 [AC_TRY_COMPILE([#include <algorithm>],
4336 [return std::min(0, 1);],
4337 ac_cv_cpp_namespace_std=yes,
4338 ac_cv_cpp_namespace_std=no)])
4339 if test "$ac_cv_cpp_namespace_std" = yes ; then
4340 AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
4343 dnl Older compilers are overly ambitious with respect to using the standard
4344 dnl template library's |operator!=()| when |operator==()| is defined. In
4345 dnl which case, defining |operator!=()| in addition to |operator==()| causes
4346 dnl ambiguity at compile-time. This test checks for that case.
4347 AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
4348 ac_cv_cpp_unambiguous_std_notequal,
4349 [AC_TRY_COMPILE([#include <algorithm>
4351 int operator==(const T1&, const T1&) { return 0; }
4352 int operator!=(const T1&, const T1&) { return 0; }],
4353 [T1 a,b; return a != b;],
4354 ac_cv_cpp_unambiguous_std_notequal=unambiguous,
4355 ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
4356 if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
4357 AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
4361 AC_CACHE_CHECK(for C++ reinterpret_cast,
4362 ac_cv_cpp_reinterpret_cast,
4363 [AC_TRY_COMPILE(struct X { int i; };
4364 struct Y { int i; };,
4365 X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
4366 ac_cv_cpp_reinterpret_cast=yes,
4367 ac_cv_cpp_reinterpret_cast=no)])
4368 if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
4369 AC_DEFINE(HAVE_CPP_NEW_CASTS)
4372 dnl See if a dynamic_cast to void* gives the most derived object.
4373 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
4374 ac_cv_cpp_dynamic_cast_void_ptr,
4375 [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
4376 class Y { int j; public: virtual ~Y() { } };
4377 class Z : public X, public Y { int k; };
4383 return !((((void*)&mdo != (void*)subx) &&
4384 ((void*)&mdo == dynamic_cast<void*>(subx))) ||
4385 (((void*)&mdo != (void*)suby) &&
4386 ((void*)&mdo == dynamic_cast<void*>(suby))));
4388 ac_cv_cpp_dynamic_cast_void_ptr=yes,
4389 ac_cv_cpp_dynamic_cast_void_ptr=no,
4390 ac_cv_cpp_dynamic_cast_void_ptr=no)])
4391 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
4392 AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
4396 dnl note that this one is reversed - if the test fails, then
4397 dnl we require implementations of unused virtual methods. Which
4398 dnl really blows because it means we'll have useless vtable
4400 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
4401 ac_cv_cpp_unused_required,
4402 [AC_TRY_LINK(class X {private: virtual void never_called();};,
4404 ac_cv_cpp_unused_required=no,
4405 ac_cv_cpp_unused_required=yes)])
4406 if test "$ac_cv_cpp_unused_required" = yes ; then
4407 AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
4411 dnl Some compilers have trouble comparing a constant reference to a templatized
4412 dnl class to zero, and require an explicit operator==() to be defined that takes
4413 dnl an int. This test separates the strong from the weak.
4415 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
4416 ac_cv_trouble_comparing_to_zero,
4417 [AC_TRY_COMPILE([#include <algorithm>
4418 template <class T> class Foo {};
4420 template <class T> int operator==(const T2*, const T&) { return 0; }
4421 template <class T> int operator!=(const T2*, const T&) { return 0; }],
4422 [Foo<int> f; return (0 != f);],
4423 ac_cv_trouble_comparing_to_zero=no,
4424 ac_cv_trouble_comparing_to_zero=yes)])
4425 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
4426 AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
4429 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
4430 _SAVE_LDFLAGS=$LDFLAGS
4431 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS"
4432 AC_CACHE_CHECK(for __thread keyword for TLS variables,
4433 ac_cv_thread_keyword,
4434 [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
4435 [return tlsIsMainThread;],
4436 ac_cv_thread_keyword=yes,
4437 ac_cv_thread_keyword=no)])
4438 LDFLAGS=$_SAVE_LDFLAGS
4439 if test "$ac_cv_thread_keyword" = yes; then
4440 # mips builds fail with TLS variables because of a binutils bug.
4450 AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
4455 dnl Check for the existence of various allocation headers/functions
4458 AC_CHECK_HEADER(malloc.h, [MALLOC_H=malloc.h])
4459 if test "$MALLOC_H" = ""; then
4460 AC_CHECK_HEADER(malloc/malloc.h, [MALLOC_H=malloc/malloc.h])
4461 if test "$MALLOC_H" = ""; then
4462 AC_CHECK_HEADER(sys/malloc.h, [MALLOC_H=sys/malloc.h])
4465 if test "$MALLOC_H" != ""; then
4466 AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
4469 MOZ_ALLOCATING_FUNCS="strndup posix_memalign memalign valloc"
4470 AC_CHECK_FUNCS(strndup posix_memalign memalign valloc)
4472 dnl See if compiler supports some gcc-style attributes
4474 AC_CACHE_CHECK(for __attribute__((always_inline)),
4475 ac_cv_attribute_always_inline,
4477 [inline void f(void) __attribute__((always_inline));],
4478 ac_cv_attribute_always_inline=yes,
4479 ac_cv_attribute_always_inline=no)])
4481 AC_CACHE_CHECK(for __attribute__((malloc)),
4482 ac_cv_attribute_malloc,
4484 [void* f(int) __attribute__((malloc));],
4485 ac_cv_attribute_malloc=yes,
4486 ac_cv_attribute_malloc=no)])
4488 AC_CACHE_CHECK(for __attribute__((warn_unused_result)),
4489 ac_cv_attribute_warn_unused,
4491 [int f(void) __attribute__((warn_unused_result));],
4492 ac_cv_attribute_warn_unused=yes,
4493 ac_cv_attribute_warn_unused=no)])
4495 AC_CACHE_CHECK(for __attribute__((noreturn)),
4496 ac_cv_attribute_noreturn,
4498 [void f(void) __attribute__((noreturn));],
4499 ac_cv_attribute_noreturn=yes,
4500 ac_cv_attribute_noreturn=no)])
4502 dnl End of C++ language/feature checks
4505 dnl ========================================================
4506 dnl = Internationalization checks
4507 dnl ========================================================
4509 dnl Internationalization and Locale support is different
4510 dnl on various UNIX platforms. Checks for specific i18n
4511 dnl features go here.
4513 dnl check for LC_MESSAGES
4514 AC_CACHE_CHECK(for LC_MESSAGES,
4515 ac_cv_i18n_lc_messages,
4516 [AC_TRY_COMPILE([#include <locale.h>],
4517 [int category = LC_MESSAGES;],
4518 ac_cv_i18n_lc_messages=yes,
4519 ac_cv_i18n_lc_messages=no)])
4520 if test "$ac_cv_i18n_lc_messages" = yes; then
4521 AC_DEFINE(HAVE_I18N_LC_MESSAGES)
4524 AC_HAVE_FUNCS(localeconv)
4526 fi # SKIP_COMPILER_CHECKS
4529 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
4530 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
4533 dnl Mozilla specific options
4534 dnl ========================================================
4535 dnl The macros used for command line options
4536 dnl are defined in build/autoconf/altoptions.m4.
4538 dnl If the compiler supports these attributes, define them as
4539 dnl convenience macros.
4540 if test "$ac_cv_attribute_always_inline" = yes ; then
4541 AC_DEFINE(NS_ALWAYS_INLINE, [__attribute__((always_inline))])
4543 AC_DEFINE(NS_ALWAYS_INLINE,)
4546 if test "$ac_cv_attribute_malloc" = yes ; then
4547 AC_DEFINE(NS_ATTR_MALLOC, [__attribute__((malloc))])
4549 AC_DEFINE(NS_ATTR_MALLOC,)
4552 if test "$ac_cv_attribute_warn_unused" = yes ; then
4553 AC_DEFINE(NS_WARN_UNUSED_RESULT, [__attribute__((warn_unused_result))])
4555 AC_DEFINE(NS_WARN_UNUSED_RESULT,)
4558 if test "$ac_cv_attribute_noreturn" = yes ; then
4559 AC_DEFINE(NS_NORETURN, [__attribute__((noreturn))])
4561 AC_DEFINE(NS_NORETURN,)
4564 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
4565 dnl features that Windows actually does support.
4567 if test -n "$SKIP_COMPILER_CHECKS"; then
4568 dnl Windows has malloc.h
4569 AC_DEFINE(MALLOC_H, [<malloc.h>])
4570 AC_DEFINE(HAVE_FORCEINLINE)
4571 AC_DEFINE(HAVE_LOCALECONV)
4572 fi # SKIP_COMPILER_CHECKS
4574 dnl ========================================================
4576 dnl = Check for external package dependencies
4578 dnl ========================================================
4579 MOZ_ARG_HEADER(External Packages)
4583 MOZ_ARG_WITH_STRING(libxul-sdk,
4584 [ --with-libxul-sdk=PFX Use the libXUL SDK at <PFX>],
4585 LIBXUL_SDK_DIR=$withval)
4587 if test "$LIBXUL_SDK_DIR" = "yes"; then
4588 AC_MSG_ERROR([--with-libxul-sdk must specify a path])
4589 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
4590 LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
4592 if test ! -f "$LIBXUL_SDK/include/xpcom-config.h"; then
4593 AC_MSG_ERROR([$LIBXUL_SDK/include/xpcom-config.h doesn't exist])
4598 AC_SUBST(LIBXUL_SDK)
4600 if test -n "$LIBXUL_SDK"; then
4601 LIBXUL_DIST="$LIBXUL_SDK"
4603 LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
4605 AC_SUBST(LIBXUL_DIST)
4609 MOZ_ARG_WITH_BOOL(system-libxul,
4610 [ --with-system-libxul Use system installed libxul SDK],
4613 if test -n "$SYSTEM_LIBXUL" -a -z "$MOZ_ENABLE_LIBXUL"; then
4614 AC_MSG_ERROR([--with-system-libxul needs --with-libxul-sdk])
4617 dnl ========================================================
4618 dnl = If NSPR was not detected in the system,
4619 dnl = use the one in the source tree (mozilla/nsprpub)
4620 dnl ========================================================
4621 MOZ_ARG_WITH_BOOL(system-nspr,
4622 [ --with-system-nspr Use system installed NSPR],
4623 _USE_SYSTEM_NSPR=1 )
4625 if test -n "$_USE_SYSTEM_NSPR"; then
4626 AM_PATH_NSPR(4.8.7, [MOZ_NATIVE_NSPR=1], [AC_MSG_ERROR([your don't have NSPR installed or your version is too old])])
4629 if test -n "$MOZ_NATIVE_NSPR"; then
4630 _SAVE_CFLAGS=$CFLAGS
4631 CFLAGS="$CFLAGS $NSPR_CFLAGS"
4632 AC_TRY_COMPILE([#include "prtypes.h"],
4633 [#ifndef PR_STATIC_ASSERT
4634 #error PR_STATIC_ASSERT not defined or requires including prlog.h
4636 [MOZ_NATIVE_NSPR=1],
4637 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT or including prtypes.h does not provide it]))
4638 CFLAGS=$_SAVE_CFLAGS
4640 if test "$OS_ARCH" = "WINCE"; then
4641 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4642 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4643 elif test "$OS_ARCH" = "WINNT"; then
4644 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4645 if test -n "$GNU_CC"; then
4646 NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
4648 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4651 NSPR_CFLAGS='`$(LIBXUL_DIST)/sdk/bin/nspr-config --prefix='${LIBXUL_DIST}' --includedir='${LIBXUL_DIST}'/include/nspr --cflags`'
4652 NSPR_LIBS='`$(LIBXUL_DIST)/sdk/bin/nspr-config --prefix='${LIBXUL_DIST}' --libdir='${LIBXUL_DIST}'/lib --libs`'
4656 dnl system libevent Support
4657 dnl ========================================================
4658 MOZ_ARG_WITH_STRING(system-libevent,
4659 [ --with-system-libevent=[PFX]
4660 Use system libevent [installed at prefix PFX]],
4661 LIBEVENT_DIR=$withval)
4663 _SAVE_CFLAGS=$CFLAGS
4664 _SAVE_LDFLAGS=$LDFLAGS
4666 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
4667 MOZ_NATIVE_LIBEVENT=
4669 if test "${LIBEVENT_DIR}" = "yes"; then
4672 CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
4673 LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
4674 AC_CHECK_HEADER(event.h,
4675 [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
4676 AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
4678 AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
4679 AC_CHECK_LIB(event, event_init,
4680 [MOZ_NATIVE_LIBEVENT=1
4681 MOZ_LIBEVENT_INCLUDES="${LIBEVENT_DIR}/include"
4682 MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
4683 [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_INCLUDES= MOZ_LIBEVENT_LIBS=])
4685 CFLAGS=$_SAVE_CFLAGS
4686 LDFLAGS=$_SAVE_LDFLAGS
4689 AC_SUBST(MOZ_NATIVE_LIBEVENT)
4690 AC_SUBST(MOZ_LIBEVENT_INCLUDES)
4691 AC_SUBST(MOZ_LIBEVENT_LIBS)
4693 dnl ========================================================
4694 dnl = If NSS was not detected in the system,
4695 dnl = use the one in the source tree (mozilla/security/nss)
4696 dnl ========================================================
4698 MOZ_ARG_WITH_BOOL(system-nss,
4699 [ --with-system-nss Use system installed NSS],
4702 if test -n "$_USE_SYSTEM_NSS"; then
4703 AM_PATH_NSS(3.12.9, [MOZ_NATIVE_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
4706 if test -n "$MOZ_NATIVE_NSS"; then
4707 NSS_LIBS="$NSS_LIBS -lcrmf"
4709 NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4711 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4712 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4713 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4714 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4715 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX)"
4717 if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "WINCE" -o "$OS_ARCH" = "OS2"; then
4719 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4720 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(LIB_SUFFIX) \
4721 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(LIB_SUFFIX) \
4722 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(LIB_SUFFIX) \
4723 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(LIB_SUFFIX)"
4725 NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION"
4729 dnl ======================
4731 dnl ======================
4733 AC_MSG_CHECKING([for YASM assembler])
4734 AC_CHECK_PROGS(YASM, yasm, "")
4736 if test -n "$YASM"; then
4737 dnl Pull out yasm's version string
4739 _YASM_VER_FILTER='s|.* \([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\).*|\1|p'
4742 YASM_VERSION=`yasm --version | sed -ne "$_YASM_VER_FILTER"`
4743 _YASM_MAJOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $1 }'`
4744 _YASM_MINOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $2 }'`
4745 _YASM_RELEASE=` echo ${YASM_VERSION} | $AWK -F\. '{ print $3 }'`
4746 _YASM_BUILD=` echo ${YASM_VERSION} | $AWK -F\. '{ print $4 }'`
4749 if test -z "$SKIP_LIBRARY_CHECKS"; then
4750 dnl system JPEG support
4751 dnl ========================================================
4752 MOZ_ARG_WITH_STRING(system-jpeg,
4753 [ --with-system-jpeg[=PFX]
4754 Use system libjpeg [installed at prefix PFX]],
4757 _SAVE_CFLAGS=$CFLAGS
4758 _SAVE_LDFLAGS=$LDFLAGS
4760 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4761 CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4762 LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4764 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4767 AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS)
4770 if test "$SYSTEM_JPEG" = 1; then
4771 LIBS="$JPEG_LIBS $LIBS"
4772 AC_TRY_COMPILE([ #include <stdio.h>
4773 #include <sys/types.h>
4774 #include <jpeglib.h> ],
4775 [ #if JPEG_LIB_VERSION < $MOZJPEG
4776 #error "Insufficient JPEG library version ($MOZJPEG required)."
4779 [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=])
4781 CFLAGS=$_SAVE_CFLAGS
4782 LDFLAGS=$_SAVE_LDFLAGS
4785 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$SYSTEM_JPEG" = 1; then
4786 JPEG_CFLAGS="-I${JPEG_DIR}/include"
4787 JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
4790 dnl system ZLIB support
4791 dnl ========================================================
4792 MOZ_ARG_WITH_STRING(system-zlib,
4793 [ --with-system-zlib[=PFX]
4794 Use system libz [installed at prefix PFX]],
4797 _SAVE_CFLAGS=$CFLAGS
4798 _SAVE_LDFLAGS=$LDFLAGS
4800 if test -n "${ZLIB_DIR}" -a "${ZLIB_DIR}" != "yes"; then
4801 CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
4802 LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
4804 if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
4807 AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"],
4808 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
4810 if test "$SYSTEM_ZLIB" = 1; then
4811 LIBS="$ZLIB_LIBS $LIBS"
4812 AC_TRY_COMPILE([ #include <stdio.h>
4814 #include <zlib.h> ],
4815 [ #if ZLIB_VERNUM < $MOZZLIB
4816 #error "Insufficient zlib version ($MOZZLIB required)."
4819 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=])
4821 CFLAGS=$_SAVE_CFLAGS
4822 LDFLAGS=$_SAVE_LDFLAGS
4825 if test "${ZLIB_DIR}" -a -d "${ZLIB_DIR}" -a "$SYSTEM_ZLIB" = 1; then
4826 ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
4827 ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
4830 dnl system BZIP2 Support
4831 dnl ========================================================
4832 MOZ_ARG_WITH_STRING(system-bz2,
4833 [ --with-system-bz2[=PFX]
4834 Use system libbz2 [installed at prefix PFX]],
4837 _SAVE_CFLAGS=$CFLAGS
4838 _SAVE_LDFLAGS=$LDFLAGS
4840 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4841 CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4842 LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4844 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4847 AC_CHECK_LIB(bz2, BZ2_bzread, [SYSTEM_BZ2=1 BZ2_LIBS="-lbz2"],
4848 [SYSTEM_BZ2= BZ2_CFLAGS= BZ2_LIBS=])
4850 CFLAGS=$_SAVE_CFLAGS
4851 LDFLAGS=$_SAVE_LDFLAGS
4854 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$SYSTEM_BZ2" = 1; then
4855 BZ2_CFLAGS="-I${BZ2_DIR}/include"
4856 BZ2_LIBS="-L${BZ2_DIR}/lib ${BZ2_LIBS}"
4859 dnl system PNG Support
4860 dnl ========================================================
4861 MOZ_ARG_WITH_STRING(system-png,
4862 [ --with-system-png[=PFX]
4863 Use system libpng [installed at prefix PFX]],
4866 _SAVE_CFLAGS=$CFLAGS
4867 _SAVE_LDFLAGS=$LDFLAGS
4869 CFLAGS="$ZLIB_CFLAGS $CFLAGS"
4870 LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
4871 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4872 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4873 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4875 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4878 _SAVE_PNG_LIBS=$PNG_LIBS
4879 AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"],
4880 AC_MSG_ERROR([--with-system-png requested but no working libpng found]),
4882 AC_CHECK_LIB(png, png_get_acTL, ,
4883 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]),
4886 if test "$SYSTEM_PNG" = 1; then
4887 LIBS="$PNG_LIBS $LIBS"
4888 AC_TRY_COMPILE([ #include <stdio.h>
4889 #include <sys/types.h>
4891 [ #if PNG_LIBPNG_VER < $MOZPNG
4892 #error "Insufficient libpng version ($MOZPNG required)."
4894 #ifndef PNG_UINT_31_MAX
4895 #error "Insufficient libpng version."
4898 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4900 CFLAGS=$_SAVE_CFLAGS
4901 LDFLAGS=$_SAVE_LDFLAGS
4904 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
4905 PNG_CFLAGS="-I${PNG_DIR}/include"
4906 PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
4909 fi # SKIP_LIBRARY_CHECKS
4911 dnl system HunSpell Support
4912 dnl ========================================================
4913 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4914 [ --enable-system-hunspell
4915 Use system hunspell (located with pkgconfig)],
4918 if test -n "$SYSTEM_HUNSPELL"; then
4919 PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4922 AC_SUBST(SYSTEM_HUNSPELL)
4924 dnl ========================================================
4925 dnl Java SDK support
4926 dnl ========================================================
4928 MOZ_ARG_WITH_STRING(java-include-path,
4929 [ --with-java-include-path=dir
4930 Location of Java SDK headers],
4931 JAVA_INCLUDE_PATH=$withval)
4934 MOZ_ARG_WITH_STRING(java-bin-path,
4935 [ --with-java-bin-path=dir
4936 Location of Java binaries (java, javac, jar)],
4937 JAVA_BIN_PATH=$withval)
4939 dnl ========================================================
4943 dnl ========================================================
4945 MOZ_ARG_HEADER(Application)
4949 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4950 MOZ_BRANDING_DIRECTORY=
4951 MOZ_OFFICIAL_BRANDING=
4961 MOZ_AUTH_EXTENSION=1
4962 MOZ_NO_ACTIVEX_SUPPORT=1
4982 MOZ_PLAINTEXT_EDITOR_ONLY=
4984 MOZ_PREF_EXTENSIONS=1
4985 MOZ_PROFILELOCKING=1
4998 MOZ_TOOLKIT_SEARCH=1
5000 MOZ_UNIVERSALCHARDET=1
5002 MOZ_USE_NATIVE_UCONV=
5004 MOZ_XSLT_STANDALONE=
5010 MOZ_DISABLE_DOMCRYPTO=
5015 NECKO_PROTOCOLS_DEFAULT="about data file ftp http res viewsource wyciwyg"
5018 XPC_IDISPATCH_SUPPORT=
5022 *android*|*darwin*|*wince*|*winmo*)
5030 case "$target_os" in
5031 msvc*|mks*|cygwin*|mingw*)
5033 if test -z "$GNU_CC"; then
5034 if test "$MOZ_WINSDK_TARGETVER" -lt "06000000"; then
5038 if test -n "$NS_ENABLE_TSF"; then
5039 AC_DEFINE(NS_ENABLE_TSF)
5051 MOZ_THEME_FASTSTRIPE=1
5057 MOZ_ARG_ENABLE_STRING(application,
5058 [ --enable-application=APP
5062 content/xslt (Standalone Transformiix XSLT)
5063 netwerk (Standalone Necko)
5064 tools/update-packaging (AUS-related packaging tools)
5065 standalone (use this for standalone
5066 xpcom/xpconnect or to manually drive a build)],
5067 [ MOZ_BUILD_APP=$enableval ] )
5069 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
5070 [ --with-xulrunner-stub-name=appname Create the xulrunner stub with the given name],
5071 XULRUNNER_STUB_NAME=$withval)
5073 if test -z "$XULRUNNER_STUB_NAME"; then
5074 case "$target_os" in
5076 XULRUNNER_STUB_NAME=xulrunner
5079 XULRUNNER_STUB_NAME=xulrunner-stub
5082 AC_SUBST(XULRUNNER_STUB_NAME)
5084 if test -z "$MOZ_BUILD_APP"; then
5085 AC_MSG_ERROR([--enable-application=APP was not specified and is required.])
5087 # We have a valid application only if it has a build.mk file in its top
5089 if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
5090 AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
5094 # Allow the application to influence configure with a confvars.sh script.
5096 AC_MSG_CHECKING([if app-specific confvars.sh exists])
5097 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
5098 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
5099 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
5104 # Now is a good time to test for logic errors, define mismatches, etc.
5105 case "$MOZ_BUILD_APP" in
5107 if test "$LIBXUL_SDK"; then
5108 AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
5113 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
5114 # that haven't made a confvars.sh yet. Don't add new stuff here, use
5116 case "$MOZ_BUILD_APP" in
5118 AC_DEFINE(MOZ_PHOENIX)
5122 AC_DEFINE(MOZ_XULRUNNER)
5130 MOZ_APP_NAME=mozilla
5131 MOZ_APP_DISPLAYNAME=Mozilla
5132 MOZ_APP_VERSION=$MOZILLA_VERSION
5137 AC_SUBST(MOZ_BUILD_APP)
5138 AC_SUBST(MOZ_PHOENIX)
5139 AC_SUBST(MOZ_XULRUNNER)
5141 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
5143 dnl ========================================================
5145 dnl = Toolkit Options
5147 dnl ========================================================
5148 MOZ_ARG_HEADER(Toolkit Options)
5150 dnl ========================================================
5151 dnl = Select the default toolkit
5152 dnl ========================================================
5153 MOZ_ARG_ENABLE_STRING(default-toolkit,
5154 [ --enable-default-toolkit=TK
5155 Select default toolkit
5156 Platform specific defaults:
5158 Mac OS X - cairo-cocoa
5159 Neutrino/QNX - photon
5161 Win32/WinCE - cairo-windows
5162 Gtk2 with DirectFB - cairo-gtk2-dfb
5165 [ _DEFAULT_TOOLKIT=$enableval ],
5166 [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
5168 if test "$_DEFAULT_TOOLKIT" = "photon" \
5169 -o "$_DEFAULT_TOOLKIT" = "cairo-windows" \
5170 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
5171 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-dfb" \
5172 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
5173 -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
5174 -o "$_DEFAULT_TOOLKIT" = "cairo-beos" \
5175 -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
5176 -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa" \
5177 -o "$_DEFAULT_TOOLKIT" = "cairo-android"
5179 dnl nglayout only supports building with one toolkit,
5180 dnl so ignore everything after the first comma (",").
5181 MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
5183 AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
5186 dnl ========================================================
5187 dnl = Enable the toolkit as needed =
5188 dnl ========================================================
5190 case "$MOZ_WIDGET_TOOLKIT" in
5193 AC_DEFINE(MOZ_WIDGET_PHOTON)
5197 MOZ_WIDGET_TOOLKIT=windows
5207 cairo-gtk2|cairo-gtk2-x11)
5208 MOZ_WIDGET_TOOLKIT=gtk2
5210 MOZ_ENABLE_XREMOTE=1
5218 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
5219 TK_LIBS='$(MOZ_GTK2_LIBS)'
5220 AC_DEFINE(MOZ_WIDGET_GTK2)
5225 MOZ_WIDGET_TOOLKIT=gtk2
5232 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
5233 TK_LIBS='$(MOZ_GTK2_LIBS)'
5234 AC_DEFINE(MOZ_WIDGET_GTK2)
5235 if test "$no_x" != "yes"; then
5236 AC_MSG_WARN([Disabling X when DirectFB is specified.])
5243 MOZ_WIDGET_TOOLKIT=qt
5245 MOZ_ENABLE_XREMOTE=1
5254 TK_CFLAGS='$(MOZ_QT_CFLAGS)'
5255 TK_LIBS='$(MOZ_QT_LIBS)'
5256 AC_DEFINE(MOZ_WIDGET_QT)
5261 MOZ_WIDGET_TOOLKIT=beos
5263 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
5264 TK_LIBS='$(MOZ_CAIRO_LIBS)'
5268 MOZ_WIDGET_TOOLKIT=os2
5270 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
5271 TK_LIBS='$(MOZ_CAIRO_LIBS)'
5276 MOZ_WIDGET_TOOLKIT=cocoa
5277 AC_DEFINE(MOZ_WIDGET_COCOA)
5278 MOZ_USER_DIR="Mozilla"
5279 AC_DEFINE(XP_MACOSX)
5280 TK_LIBS='-framework QuartzCore -framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook -framework OpenGL'
5281 TK_CFLAGS="-DNO_X11"
5282 LDFLAGS="$LDFLAGS -framework Cocoa -lobjc"
5283 CFLAGS="$CFLAGS $TK_CFLAGS"
5284 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
5285 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL'
5286 MOZ_FS_LAYOUT=bundle
5291 AC_DEFINE(MOZ_WIDGET_ANDROID)
5292 MOZ_WIDGET_TOOLKIT=android
5293 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
5294 TK_LIBS='$(MOZ_CAIRO_LIBS)'
5301 AC_SUBST(MOZ_PDF_PRINTING)
5302 if test "$MOZ_PDF_PRINTING"; then
5303 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
5304 AC_DEFINE(MOZ_PDF_PRINTING)
5307 if test "$MOZ_ENABLE_XREMOTE"; then
5308 AC_DEFINE(MOZ_ENABLE_XREMOTE)
5311 if test "$COMPILE_ENVIRONMENT"; then
5312 if test "$MOZ_ENABLE_GTK2"; then
5313 if test "$MOZ_X11"; then
5314 GDK_PACKAGES=gdk-x11-2.0
5315 elif test "$MOZ_DFB"; then
5316 PKG_CHECK_MODULES(MOZ_DFB, directfb >= 1.1.0)
5317 GDK_PACKAGES=directfb
5320 PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
5323 fi # COMPILE_ENVIRONMENT
5325 AC_SUBST(MOZ_FS_LAYOUT)
5327 dnl ========================================================
5328 dnl Use ARM userspace kernel helpers; tell NSPR to enable
5329 dnl their usage and use them in spidermonkey.
5330 dnl ========================================================
5331 MOZ_ARG_WITH_BOOL(arm-kuser,
5332 [ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
5334 if test -n "$USE_ARM_KUSER"; then
5335 AC_DEFINE(USE_ARM_KUSER)
5338 dnl ========================================================
5339 dnl = startup-notification support module
5340 dnl ========================================================
5342 if test "$MOZ_ENABLE_GTK2"
5344 MOZ_ENABLE_STARTUP_NOTIFICATION=
5346 MOZ_ARG_ENABLE_BOOL(startup-notification,
5347 [ --enable-startup-notification
5348 Enable startup-notification support (default: disabled) ],
5349 MOZ_ENABLE_STARTUP_NOTIFICATION=force,
5350 MOZ_ENABLE_STARTUP_NOTIFICATION=)
5351 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
5353 PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
5354 libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
5355 [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
5356 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
5358 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
5360 MOZ_ENABLE_STARTUP_NOTIFICATION=
5364 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
5365 AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
5368 TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
5370 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
5371 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
5372 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
5374 dnl ========================================================
5376 dnl ========================================================
5377 if test "$MOZ_ENABLE_QT"
5379 MOZ_ARG_WITH_STRING(qtdir,
5380 [ --with-qtdir=\$dir Specify Qt directory ],
5383 if test -z "$QTDIR"; then
5384 PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtCore QtOpenGL)
5385 AC_CHECK_PROGS(HOST_MOC, $MOC moc, "")
5387 MOZ_QT_LIBS="-L$QTDIR/lib/ -lQtGui -lQtNetwork -lQtCore -lQtDBus -lQtXml -lQtOpenGL"
5389 MOZ_QT_CFLAGS="-DQT_SHARED"
5390 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include"
5391 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/Qt"
5392 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui"
5393 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtCore"
5394 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtNetwork"
5395 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtDBus"
5396 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtXml"
5397 HOST_MOC="$QTDIR/bin/moc"
5399 if test -z "$HOST_MOC"; then
5400 AC_MSG_ERROR([No acceptable moc preprocessor found. Qt SDK is not installed or --with-qt is
5405 MOZ_ENABLE_QTNETWORK=
5406 PKG_CHECK_MODULES(_QTNETWORK, QtNetwork >= 4.7,
5407 MOZ_ENABLE_QTNETWORK=1,
5408 MOZ_ENABLE_QTNETWORK=)
5410 if test "$MOZ_ENABLE_QTNETWORK"; then
5411 MOZ_ENABLE_QTNETWORK=1
5412 AC_DEFINE(MOZ_ENABLE_QTNETWORK)
5416 AC_SUBST(GTK_CONFIG)
5420 AC_SUBST(MOZ_ENABLE_GTK2)
5421 AC_SUBST(MOZ_ENABLE_PHOTON)
5422 AC_SUBST(MOZ_ENABLE_QT)
5423 AC_SUBST(MOZ_ENABLE_QTNETWORK)
5424 AC_SUBST(MOZ_ENABLE_XREMOTE)
5425 AC_SUBST(MOZ_GTK2_CFLAGS)
5426 AC_SUBST(MOZ_GTK2_LIBS)
5427 AC_SUBST(MOZ_QT_CFLAGS)
5428 AC_SUBST(MOZ_QT_LIBS)
5435 dnl ========================================================
5437 dnl = Components & Features
5439 dnl ========================================================
5440 MOZ_ARG_HEADER(Components and Features)
5442 dnl ========================================================
5444 dnl ========================================================
5445 MOZ_ARG_ENABLE_STRING(ui-locale,
5446 [ --enable-ui-locale=ab-CD
5447 Select the user interface locale (default: en-US)],
5448 MOZ_UI_LOCALE=$enableval )
5449 AC_SUBST(MOZ_UI_LOCALE)
5451 dnl ========================================================
5452 dnl = Trademarked Branding
5453 dnl ========================================================
5454 MOZ_ARG_ENABLE_BOOL(official-branding,
5455 [ --enable-official-branding
5456 Enable Official mozilla.org Branding
5457 Do not distribute builds with
5458 --enable-official-branding unless you have
5459 permission to use trademarks per
5460 http://www.mozilla.org/foundation/trademarks/ .],
5462 if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
5463 AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
5465 MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
5466 MOZ_OFFICIAL_BRANDING=1
5468 ], MOZ_OFFICIAL_BRANDING=)
5470 AC_SUBST(MOZ_OFFICIAL_BRANDING)
5471 if test -n "$MOZ_OFFICIAL_BRANDING"; then
5472 AC_DEFINE(MOZ_OFFICIAL_BRANDING)
5475 MOZ_ARG_WITH_STRING(branding,
5476 [ --with-branding=dir Use branding from the specified directory.],
5477 MOZ_BRANDING_DIRECTORY=$withval)
5479 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
5480 if test -z "$REAL_BRANDING_DIRECTORY"; then
5481 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
5484 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
5485 . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
5488 AC_SUBST(MOZ_BRANDING_DIRECTORY)
5490 dnl ========================================================
5491 dnl = Distribution ID
5492 dnl ========================================================
5493 MOZ_ARG_WITH_STRING(distribution-id,
5494 [ --with-distribution-id=ID
5495 Set distribution-specific id (default=org.mozilla)],
5496 [ val=`echo $withval`
5497 MOZ_DISTRIBUTION_ID="$val"])
5499 if test -z "$MOZ_DISTRIBUTION_ID"; then
5500 MOZ_DISTRIBUTION_ID="org.mozilla"
5503 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
5504 AC_SUBST(MOZ_DISTRIBUTION_ID)
5507 dnl ========================================================
5508 dnl complex text support off by default
5509 dnl ========================================================
5510 MOZ_ARG_DISABLE_BOOL(pango,
5511 [ --disable-pango Disable usage of Pango ],
5515 dnl ========================================================
5517 dnl ========================================================
5518 if test "$MOZ_ENABLE_GTK2"
5522 PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
5524 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION pangocairo >= $PANGO_VERSION)
5525 AC_SUBST(MOZ_PANGO_CFLAGS)
5526 AC_SUBST(MOZ_PANGO_LIBS)
5527 if test "$MOZ_PANGO"
5529 AC_DEFINE(MOZ_PANGO)
5531 PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0 fontconfig)
5532 AC_SUBST(FT2_CFLAGS)
5537 if test "$MOZ_ENABLE_QT"
5539 if test "$MOZ_PANGO"
5541 PKG_CHECK_MODULES(MOZ_PANGO, [pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION pangocairo >= $PANGO_VERSION],
5543 AC_SUBST(MOZ_PANGO_CFLAGS)
5544 AC_SUBST(MOZ_PANGO_LIBS)
5545 AC_DEFINE(MOZ_PANGO)
5548 echo "Pango library not found, will use FT2 font engine"
5555 dnl ========================================================
5556 dnl = GnomeVFS, GIO and GConf support module
5557 dnl ========================================================
5561 dnl build the gnomevfs extension by default only when the
5562 dnl GTK2 toolkit is in use.
5563 if test "$MOZ_ENABLE_GTK2"
5565 MOZ_ENABLE_GNOMEVFS=1
5569 dnl ========================================================
5570 dnl = GnomeVFS support module
5571 dnl ========================================================
5572 MOZ_ARG_DISABLE_BOOL(gnomevfs,
5573 [ --disable-gnomevfs Disable GnomeVFS support ],
5574 MOZ_ENABLE_GNOMEVFS=,
5575 MOZ_ENABLE_GNOMEVFS=force)
5577 if test "$MOZ_ENABLE_GNOMEVFS"
5579 PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
5580 MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
5581 MOZ_ENABLE_GNOMEVFS=1
5582 AC_DEFINE(MOZ_ENABLE_GNOMEVFS)
5584 if test "$MOZ_ENABLE_GNOMEVFS" = "force"
5586 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
5588 MOZ_ENABLE_GNOMEVFS=
5591 if test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
5592 PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
5593 MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
5598 AC_SUBST(MOZ_ENABLE_GNOMEVFS)
5599 AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
5600 AC_SUBST(MOZ_GNOMEVFS_LIBS)
5602 dnl ========================================================
5603 dnl = GIO support module
5604 dnl ========================================================
5605 MOZ_ARG_ENABLE_BOOL(gio,
5606 [ --enable-gio Enable GIO support (default: disabled)],
5607 MOZ_ENABLE_GIO=force,
5610 if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK2"
5612 PKG_CHECK_MODULES(MOZ_GIO, gio-2.0 >= $GIO_VERSION,[
5613 MOZ_GIO_LIBS=`echo $MOZ_GIO_LIBS | sed 's/-llinc\>//'`
5615 AC_DEFINE(MOZ_ENABLE_GIO)
5617 if test "$MOZ_ENABLE_GIO" = "force"
5619 AC_MSG_ERROR([* * * Could not find gio-2.0 >= $GIO_VERSION])
5625 AC_SUBST(MOZ_ENABLE_GIO)
5626 AC_SUBST(MOZ_GIO_CFLAGS)
5627 AC_SUBST(MOZ_GIO_LIBS)
5629 dnl ========================================================
5630 dnl = GConf support module
5631 dnl ========================================================
5632 if test "$MOZ_ENABLE_GCONF"
5634 PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION gobject-2.0 ,[
5635 MOZ_GCONF_LIBS=`echo $MOZ_GCONF_LIBS | sed 's/-llinc\>//'`
5638 if test "$MOZ_ENABLE_GCONF" = "force"
5640 AC_MSG_ERROR([* * * Could not find gconf-2.0 ])
5646 if test "$MOZ_ENABLE_GCONF"; then
5647 AC_DEFINE(MOZ_ENABLE_GCONF)
5650 AC_SUBST(MOZ_ENABLE_GCONF)
5651 AC_SUBST(MOZ_GCONF_CFLAGS)
5652 AC_SUBST(MOZ_GCONF_LIBS)
5655 dnl ========================================================
5656 dnl = libproxy support
5657 dnl ========================================================
5659 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
5661 MOZ_ENABLE_LIBPROXY=
5663 MOZ_ARG_ENABLE_BOOL(libproxy,
5664 [ --enable-libproxy Enable libproxy support ],
5665 MOZ_ENABLE_LIBPROXY=1,
5666 MOZ_ENABLE_LIBPROXY=)
5668 if test "$MOZ_ENABLE_LIBPROXY"
5670 PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
5671 AC_DEFINE(MOZ_ENABLE_LIBPROXY)
5674 AC_SUBST(MOZ_ENABLE_LIBPROXY)
5675 AC_SUBST(MOZ_LIBPROXY_CFLAGS)
5676 AC_SUBST(MOZ_LIBPROXY_LIBS)
5678 dnl ========================================================
5679 dnl = libnotify support
5680 dnl ========================================================
5682 if test "$MOZ_ENABLE_GTK2"
5684 MOZ_ENABLE_LIBNOTIFY=1
5686 MOZ_ARG_DISABLE_BOOL(libnotify,
5687 [ --disable-libnotify Disable libnotify support ],
5688 MOZ_ENABLE_LIBNOTIFY=,
5689 MOZ_ENABLE_LIBNOTIFY=1)
5691 if test "$MOZ_ENABLE_LIBNOTIFY"
5693 AC_DEFINE(MOZ_ENABLE_LIBNOTIFY)
5697 if test -z "$SKIP_LIBRARY_CHECKS"
5699 if test "$MOZ_ENABLE_GTK2"
5701 if test "$MOZ_ENABLE_LIBNOTIFY"
5703 PKG_CHECK_MODULES(MOZ_LIBNOTIFY, libnotify >= $LIBNOTIFY_VERSION)
5707 AC_SUBST(MOZ_ENABLE_LIBNOTIFY)
5708 AC_SUBST(MOZ_LIBNOTIFY_CFLAGS)
5709 AC_SUBST(MOZ_LIBNOTIFY_LIBS)
5711 dnl ========================================================
5712 dnl = GNOME component (mozgnome)
5713 dnl ========================================================
5715 # The GNOME component is built if one of
5716 # gnome-vfs, gio, gconf or libnotify is available.
5717 if test "$MOZ_ENABLE_GCONF" -o \
5718 "$MOZ_ENABLE_GNOMEVFS" -o \
5719 "$MOZ_ENABLE_GIO" -o \
5720 "$MOZ_ENABLE_LIBNOTIFY"; then
5721 MOZ_ENABLE_GNOME_COMPONENT=1
5723 MOZ_ENABLE_GNOME_COMPONENT=
5725 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5727 dnl ========================================================
5728 dnl = libgnomeui support module
5729 dnl ========================================================
5731 if test "$MOZ_ENABLE_GTK2"
5733 MOZ_ENABLE_GNOMEUI=1
5735 MOZ_ARG_DISABLE_BOOL(gnomeui,
5736 [ --disable-gnomeui Disable libgnomeui support (default: auto, optional at runtime) ],
5737 MOZ_ENABLE_GNOMEUI=,
5738 MOZ_ENABLE_GNOMEUI=force)
5740 if test "$MOZ_ENABLE_GNOMEUI"
5742 PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5744 MOZ_GNOMEUI_LIBS=`echo $MOZ_GNOMEUI_LIBS | sed 's/-llinc\>//'`
5745 MOZ_ENABLE_GNOMEUI=1
5747 if test "$MOZ_ENABLE_GNOMEUI" = "force"
5749 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5755 if test "$MOZ_ENABLE_GNOMEUI"; then
5756 AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5760 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5761 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5762 AC_SUBST(MOZ_GNOMEUI_LIBS)
5764 dnl ========================================================
5766 dnl ========================================================
5768 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
5772 MOZ_ARG_DISABLE_BOOL(dbus,
5773 [ --disable-dbus Disable dbus support ],
5777 if test "$MOZ_ENABLE_DBUS"
5779 PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
5780 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5781 AC_DEFINE(MOZ_ENABLE_DBUS)
5784 AC_SUBST(MOZ_ENABLE_DBUS)
5785 AC_SUBST(MOZ_DBUS_CFLAGS)
5786 AC_SUBST(MOZ_DBUS_LIBS)
5787 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5788 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5790 dnl ========================================================
5791 dnl = Build Personal Security Manager
5792 dnl ========================================================
5793 MOZ_ARG_DISABLE_BOOL(crypto,
5794 [ --disable-crypto Disable crypto support (Personal Security Manager)],
5798 dnl ========================================================
5799 dnl = JS Debugger XPCOM component (js/jsd)
5800 dnl ========================================================
5801 MOZ_ARG_DISABLE_BOOL(jsd,
5802 [ --disable-jsd Disable JavaScript debug library],
5807 dnl ========================================================
5808 dnl = Disable IPC support for tabs and plugins
5809 dnl ========================================================
5810 MOZ_ARG_DISABLE_BOOL(ipc,
5811 [ --disable-ipc Disable IPC supports for tabs and plugins],
5815 if test -n "$MOZ_IPC"; then
5821 dnl ========================================================
5822 dnl = Enable IPDL's "expensive" unit tests
5823 dnl ========================================================
5826 MOZ_ARG_ENABLE_BOOL(ipdl-tests,
5827 [ --enable-ipdl-tests Enable expensive IPDL tests],
5831 if test -z "$MOZ_IPC" -a -n "$MOZ_IPDL_TESTS"; then
5832 AC_MSG_ERROR([--enable-ipdl-tests requires --enable-ipc])
5835 if test -n "$MOZ_IPDL_TESTS"; then
5836 AC_DEFINE(MOZ_IPDL_TESTS)
5839 AC_SUBST(MOZ_IPDL_TESTS)
5841 dnl ========================================================
5842 dnl = Disable plugin support
5843 dnl ========================================================
5844 MOZ_ARG_DISABLE_BOOL(plugins,
5845 [ --disable-plugins Disable plugins support],
5849 dnl ========================================================
5850 dnl = Disable building dbm
5851 dnl ========================================================
5852 MOZ_ARG_DISABLE_BOOL(dbm,
5853 [ --disable-dbm Disable building dbm],
5857 dnl bi-directional support always on
5861 dnl ========================================================
5862 dnl view source support on by default
5863 dnl ========================================================
5864 if test "$MOZ_VIEW_SOURCE"; then
5865 AC_DEFINE(MOZ_VIEW_SOURCE)
5868 dnl ========================================================
5869 dnl accessibility support on by default on all platforms
5871 dnl ========================================================
5872 MOZ_ARG_DISABLE_BOOL(accessibility,
5873 [ --disable-accessibility Disable accessibility support (off by default on OS X)],
5876 if test "$ACCESSIBILITY"; then
5877 AC_DEFINE(ACCESSIBILITY)
5880 if test -n "$ACCESSIBILITY" -a "$COMPILE_ENVIRONMENT" = "1"; then
5882 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5883 if test "$ac_cv_header_atlbase_h" = "no"; then
5884 AC_MSG_ERROR([System header atlbase.h is not available. See http://developer.mozilla.org/en/docs/atlbase.h for details on fixing this problem.])
5886 if test "$ac_cv_header_oleacc_idl" = "no"; then
5887 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.])
5893 dnl ========================================================
5894 dnl xpcom js loader support on by default
5895 dnl ========================================================
5896 if test "$MOZ_JSLOADER"; then
5897 AC_DEFINE(MOZ_JSLOADER)
5900 dnl ========================================================
5901 dnl Disable printing
5902 dnl ========================================================
5903 MOZ_ARG_DISABLE_BOOL(printing,
5904 [ --disable-printing Disable printing support],
5908 if test "$NS_PRINTING"; then
5909 AC_DEFINE(NS_PRINTING)
5910 AC_DEFINE(NS_PRINT_PREVIEW)
5912 dnl ========================================================
5913 dnl use native unicode converters
5914 dnl ========================================================
5915 MOZ_ARG_ENABLE_BOOL(native-uconv,
5916 [ --enable-native-uconv Enable iconv support],
5917 MOZ_USE_NATIVE_UCONV=1,
5918 MOZ_USE_NATIVE_UCONV= )
5919 if test "$MOZ_USE_NATIVE_UCONV"; then
5920 AC_DEFINE(MOZ_USE_NATIVE_UCONV)
5922 if test "$OS_ARCH" != "WINCE" -a "$OS_ARCH" != "WINNT" -a "$MOZ_USE_NATIVE_UCONV" -a "$ac_cv_func_iconv" != "yes"; then
5923 AC_MSG_ERROR([iconv() not found. Cannot enable native uconv support.])
5927 dnl ========================================================
5928 dnl Libeditor can be build as plaintext-only,
5929 dnl or as a full html and text editing component.
5930 dnl We build both by default.
5931 dnl ========================================================
5932 MOZ_ARG_ENABLE_BOOL(plaintext-editor-only,
5933 [ --enable-plaintext-editor-only
5934 Allow only plaintext editing],
5935 MOZ_PLAINTEXT_EDITOR_ONLY=1,
5936 MOZ_PLAINTEXT_EDITOR_ONLY= )
5937 dnl Note the #define is MOZILLA, not MOZ, for compat with the Mac build.
5938 AC_SUBST(MOZ_PLAINTEXT_EDITOR_ONLY)
5940 dnl ========================================================
5941 dnl = Disable Fast Load
5942 dnl ========================================================
5943 MOZ_ARG_DISABLE_BOOL(xpcom-fastload,
5944 [ --disable-xpcom-fastload
5945 Disable XPCOM fastload support],
5949 AC_SUBST(MOZ_NO_FAST_LOAD)
5951 if test -n "$MOZ_NO_FAST_LOAD"; then
5952 AC_DEFINE(MOZ_NO_FAST_LOAD)
5955 dnl ========================================================
5956 dnl = Enable Raw Codecs
5957 dnl ========================================================
5958 MOZ_ARG_ENABLE_BOOL(raw,
5959 [ --enable-raw Enable support for RAW media],
5963 if test -n "$MOZ_RAW"; then
5970 dnl ========================================================
5971 dnl = Disable Ogg Codecs
5972 dnl ========================================================
5973 MOZ_ARG_DISABLE_BOOL(ogg,
5974 [ --disable-ogg Disable support for OGG media (Theora video and Vorbis audio)],
5978 if test -n "$MOZ_OGG"; then
5982 case "$target_cpu" in
5991 dnl Checks for __attribute__(aligned()) directive
5992 AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
5993 [ac_cv_c_attribute_aligned],
5994 [ac_cv_c_attribute_aligned=0
5995 CFLAGS_save="${CFLAGS}"
5996 CFLAGS="${CFLAGS} -Werror"
5997 for ac_cv_c_attr_align_try in 64 32 16 8; do
5998 echo "trying $ac_cv_c_attr_align_try"
6000 [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
6001 [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
6002 if test "$ac_cv_c_attribute_aligned" != 0; then
6006 CFLAGS="${CFLAGS_save}"])
6007 if test "${ac_cv_c_attribute_aligned}" != "0"; then
6008 AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
6009 [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
6013 dnl ========================================================
6014 dnl = Disable VP8 decoder support
6015 dnl ========================================================
6016 MOZ_ARG_DISABLE_BOOL(webm,
6017 [ --disable-webm Disable support for WebM media (VP8 video and Vorbis audio)],
6021 dnl system libvpx Support
6022 dnl ========================================================
6023 MOZ_ARG_WITH_STRING(system-libvpx,
6024 [ --with-system-libvpx=[PFX]
6025 Use system libvpx [installed at prefix PFX]],
6026 LIBVPX_DIR=$withval)
6029 MOZ_LIBVPX_INCLUDES=
6032 if test -n "$MOZ_WEBM"; then
6035 if test -n "$LIBVPX_DIR" -a "$LIBVPX_DIR" != no; then
6036 _SAVE_CFLAGS=$CFLAGS
6037 _SAVE_LDFLAGS=$LDFLAGS
6039 if test "${LIBVPX_DIR}" = "yes"; then
6042 CFLAGS="-I${LIBVPX_DIR}/include $CFLAGS"
6043 LDFLAGS="-L${LIBVPX_DIR}/lib $LDFLAGS"
6044 AC_CHECK_HEADER(vpx/vpx_decoder.h,
6045 [if test ! -f "${LIBVPX_DIR}/include/vpx/vpx_decoder.h"; then
6046 AC_MSG_ERROR([vpx/vpx_decoder.h found, but is not in ${LIBVPX_DIR}/include])
6048 AC_MSG_ERROR([--with-system-libvpx requested but vpx/vpx_decoder.h not found]))
6049 AC_CHECK_LIB(vpx, vpx_codec_dec_init_ver,
6050 [MOZ_NATIVE_LIBVPX=1
6051 MOZ_LIBVPX_INCLUDES="-I${LIBVPX_DIR}/include"
6052 MOZ_LIBVPX_LIBS="-L${LIBVPX_DIR}/lib -lvpx"],
6053 ([--with-system-libvpx requested but symbol vpx_codec_dec_init_ver not found]))
6054 CFLAGS=$_SAVE_CFLAGS
6055 LDFLAGS=$_SAVE_LDFLAGS
6060 AC_SUBST(MOZ_NATIVE_LIBVPX)
6061 AC_SUBST(MOZ_LIBVPX_INCLUDES)
6062 AC_SUBST(MOZ_LIBVPX_LIBS)
6064 if test -n "$MOZ_WEBM" -a -z "$MOZ_NATIVE_LIBVPX"; then
6067 case "$target_cpu" in
6077 dnl Detect if we can use an assembler to compile optimized assembly for libvpx.
6078 dnl We currently require yasm on all x86 platforms and require yasm 1.1.0 on Win32.
6079 dnl We currently require gcc on all arm platforms.
6083 dnl See if we have assembly on this platform.
6084 case "$OS_ARCH:$CPU_ARCH" in
6086 VPX_ASFLAGS="-f elf32 -rnasm -pnasm"
6090 VPX_ASFLAGS="-f elf64 -rnasm -pnasm -DPIC"
6094 VPX_ASFLAGS="-f elf32 -rnasm -pnasm"
6098 VPX_ASFLAGS="-f elf64 -rnasm -pnasm -DPIC"
6102 VPX_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC"
6106 VPX_ASFLAGS="-f macho64 -rnasm -pnasm -DPIC"
6110 if test -z "$GNU_CC"; then
6111 VPX_ASFLAGS="-f x64 -rnasm -pnasm"
6116 if test -z "$GNU_CC"; then
6117 dnl Check for yasm 1.1 or greater.
6118 if test -n "$COMPILE_ENVIRONMENT" -a -z "$YASM"; then
6119 AC_MSG_ERROR([yasm 1.1 or greater is required to build libvpx on Win32, but it appears not to be installed. Install it (included in MozillaBuild 1.5.1 and newer) or configure with --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
6120 elif test -n "$COMPILE_ENVIRONMENT" -a "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
6121 AC_MSG_ERROR([yasm 1.1 or greater is required to build libvpx on Win32, but you appear to have version $_YASM_MAJOR_VERSION.$_YASM_MINOR_VERSION. Upgrade to the newest version (included in MozillaBuild 1.5.1 and newer) or configure with --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
6123 VPX_ASFLAGS="-f win32 -rnasm -pnasm -DPIC"
6129 if test -n "$GNU_AS" ; then
6131 dnl These flags are a lie; they're just used to enable the requisite
6132 dnl opcodes; actual arch detection is done at runtime.
6133 VPX_ASFLAGS="-march=armv7-a -mfpu=neon"
6134 VPX_DASH_C_FLAG="-c"
6135 VPX_AS_CONVERSION='$(PERL) $(topsrcdir)/media/libvpx/build/make/ads2gas.pl'
6136 VPX_ASM_SUFFIX="$ASM_SUFFIX"
6141 if test -n "$COMPILE_ENVIRONMENT" -a -n "$VPX_X86_ASM" -a -z "$VPX_AS"; then
6142 AC_MSG_ERROR([yasm is a required build tool for this architecture when webm is enabled. You may either install yasm or --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
6145 if test -n "$VPX_X86_ASM"; then
6146 AC_DEFINE(VPX_X86_ASM)
6147 elif test -n "$VPX_ARM_ASM"; then
6148 AC_DEFINE(VPX_ARM_ASM)
6150 AC_MSG_WARN([No assembler or assembly support for libvpx. Using unoptimized C routines.])
6154 dnl ========================================================
6155 dnl = Disable Wave decoder support
6156 dnl ========================================================
6157 MOZ_ARG_DISABLE_BOOL(wave,
6158 [ --disable-wave Disable Wave decoder support],
6162 if test -n "$MOZ_WAVE"; then
6168 dnl ========================================================
6169 dnl = Handle dependent SYDNEYAUDIO and MEDIA defines
6170 dnl ========================================================
6172 if test -n "$MOZ_SYDNEYAUDIO"; then
6173 AC_DEFINE(MOZ_SYDNEYAUDIO)
6176 if test -n "$MOZ_MEDIA"; then
6177 AC_DEFINE(MOZ_MEDIA)
6180 if test -n "$MOZ_VORBIS" -a -n "$MOZ_TREMOR"; then
6181 AC_MSG_ERROR([MOZ_VORBIS and MOZ_TREMOR are mutually exclusive! The build system should not allow them both to be set, but they are. Please file a bug at https://bugzilla.mozilla.org/])
6184 if test -n "$MOZ_VORBIS"; then
6185 AC_DEFINE(MOZ_VORBIS)
6188 if test -n "$MOZ_TREMOR"; then
6189 AC_DEFINE(MOZ_TREMOR)
6192 dnl ========================================================
6193 dnl = Check alsa availability on Linux if using sydneyaudio
6194 dnl ========================================================
6196 dnl If using sydneyaudio with Linux, ensure that the alsa library is available
6197 if test -n "$MOZ_SYDNEYAUDIO"; then
6198 case "$target_os" in
6200 PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
6201 [echo "$MOZ_ALSA_PKG_ERRORS"
6202 AC_MSG_ERROR([Need alsa for Ogg, Wave or WebM decoding on Linux. Disable with --disable-ogg --disable-wave --disable-webm. (On Ubuntu, you might try installing the package libasound2-dev.)])])
6207 dnl ========================================================
6209 dnl ========================================================
6210 AC_ARG_ENABLE(splashscreen,
6211 [ --enable-splashscreen display splashscreen while loading (default=no)],
6212 [enable_splash="yes"],[enable_splash=""])
6213 if test "x$enable_splash" = "xyes"; then
6215 AC_DEFINE(MOZ_SPLASHSCREEN)
6217 AC_SUBST(MOZ_SPLASHSCREEN)
6219 dnl ========================================================
6220 dnl Permissions System
6221 dnl ========================================================
6222 MOZ_ARG_DISABLE_BOOL(permissions,
6223 [ --disable-permissions Disable permissions (popup and cookie blocking)],
6228 dnl ========================================================
6230 dnl ========================================================
6231 MOZ_ARG_DISABLE_BOOL(negotiateauth,
6232 [ --disable-negotiateauth Disable GSS-API negotiation ],
6233 MOZ_AUTH_EXTENSION=,
6234 MOZ_AUTH_EXTENSION=1 )
6236 dnl ========================================================
6238 dnl ========================================================
6239 MOZ_ARG_DISABLE_BOOL(xtf,
6240 [ --disable-xtf Disable XTF (pluggable xml tags) support],
6243 if test "$MOZ_XTF"; then
6247 dnl ========================================================
6248 dnl Pref extensions (autoconfig and system-pref)
6249 dnl ========================================================
6250 MOZ_ARG_DISABLE_BOOL(pref-extensions,
6251 [ --disable-pref-extensions
6252 Disable pref extensions such as autoconfig and
6254 MOZ_PREF_EXTENSIONS=,
6255 MOZ_PREF_EXTENSIONS=1 )
6257 dnl ========================================================
6258 dnl = Universalchardet
6259 dnl ========================================================
6260 MOZ_ARG_DISABLE_BOOL(universalchardet,
6261 [ --disable-universalchardet
6262 Disable universal encoding detection],
6263 MOZ_UNIVERSALCHARDET=,
6264 MOZ_UNIVERSALCHARDET=1 )
6266 dnl ========================================================
6268 dnl ========================================================
6275 MOZ_ARG_ENABLE_BOOL(javaxpcom,
6276 [ --enable-javaxpcom
6277 Enable Java-XPCOM bridge],
6283 if test -n "$JAVA_HOME"; then
6284 JAVA_HOME=`cygpath -u \`cygpath -m -s "$JAVA_HOME"\``
6288 if test -n "$JAVA_HOME"; then
6289 JAVA_HOME=`cd "$JAVA_HOME" && pwd`
6294 if test -n "${JAVA_BIN_PATH}"; then
6295 dnl Look for javac and jar in the specified path.
6296 JAVA_PATH="$JAVA_BIN_PATH"
6298 dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
6299 JAVA_PATH="$JAVA_HOME/bin:$PATH"
6302 MOZ_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
6303 MOZ_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
6304 MOZ_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
6306 if test -n "${JAVA_BIN_PATH}" -o "$OS_TARGET" = Android; then
6307 if test -z "$JAVA" -o "$JAVA" = ":" -o -z "$JAVAC" -o "$JAVAC" = ":" -o -z "$JAR" -o "$JAR" = ":"; then
6308 AC_MSG_ERROR([The programs java, javac and jar were not found. Set \$JAVA_HOME to your java sdk directory or use --with-java-bin-path={java-bin-dir}])
6312 if test -n "${MOZ_JAVAXPCOM}"; then
6313 if test -n "${JAVA_INCLUDE_PATH}"; then
6314 dnl Make sure jni.h exists in the given include path.
6315 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
6316 AC_MSG_ERROR([jni.h was not found in given include path $JAVA_INCLUDE_PATH.])
6319 case "$target_os" in
6321 dnl Default to java system location
6322 JAVA_INCLUDE_PATH=/System/Library/Frameworks/JavaVM.framework/Headers
6326 JAVA_INCLUDE_PATH="$JAVA_HOME/include"
6329 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
6330 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.])
6335 dnl ========================================================
6336 dnl = ANGLE OpenGL->D3D translator for WebGL
6337 dnl = * only applies to win32
6338 dnl = * enabled by default (shipping build); requires explicit --disable to disable
6339 dnl ========================================================
6341 MOZ_DIRECTX_SDK_PATH=
6342 case "$target_os" in
6343 *msvc*|*mks*|*cygwin*|*mingw*)
6348 if test -n "$MOZ_ANGLE"; then
6349 MOZ_ARG_DISABLE_BOOL(angle,
6350 [ --disable-angle Disable building of ANGLE for WebGL->D3D translation],
6354 if test -n "$MOZ_ANGLE"; then
6355 if test -z "$_WIN32_MSVC"; then
6356 AC_MSG_ERROR([Building ANGLE requires MSVC. To build without ANGLE, reconfigure with --disable-angle.])
6359 # Get the SDK path from the registry.
6360 MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK' | head -n 1`
6361 MOZ_DIRECTX_SDK_PATH=`reg query "$MOZ_DIRECTX_SDK_REG_KEY" //v InstallPath | grep REG_SZ | sed 's, *, ,g' | cut -d' ' -f4-`
6365 if test -n "$MOZ_DIRECTX_SDK_PATH" ; then
6366 if test -f "$MOZ_DIRECTX_SDK_PATH"/include/d3dx9.h && test -f "$MOZ_DIRECTX_SDK_PATH"/lib/x86/dxguid.lib ; then
6367 AC_MSG_RESULT([Found DirectX SDK via DXSDK_DIR, using $MOZ_DIRECTX_SDK_PATH])
6372 if test -z "$MOZ_ANGLE" ; then
6373 AC_MSG_WARN([Couldn't find the DirectX SDK, needed for ANGLE. Please install it (February 2010 or newer). To explicitly build without ANGLE, reconfigure with --disable-angle.])
6374 AC_MSG_WARN([This will become an error in the future.])
6379 dnl ========================================================
6380 dnl = Breakpad crash reporting (on by default on supported platforms)
6381 dnl ========================================================
6384 i?86-*-mingw*|x86_64-*-mingw*)
6387 i?86-apple-darwin*|powerpc-apple-darwin*|x86_64-apple-darwin*)
6390 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
6391 if test "$MOZ_ENABLE_GTK2"; then
6403 MOZ_ARG_DISABLE_BOOL(crashreporter,
6404 [ --disable-crashreporter Disable breakpad crash reporting],
6406 MOZ_CRASHREPORTER=1)
6408 if test -n "$MOZ_CRASHREPORTER"; then
6409 AC_DEFINE(MOZ_CRASHREPORTER)
6411 if (test "$OS_TARGET" = "Linux" -o "$OS_ARCH" = "SunOS") && \
6412 test -z "$SKIP_LIBRARY_CHECKS"; then
6413 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
6414 AC_SUBST(MOZ_GTHREAD_CFLAGS)
6415 AC_SUBST(MOZ_GTHREAD_LIBS)
6417 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.])])
6421 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
6422 [ --with-crashreporter-enable-percent=NN
6423 Enable sending crash reports by default on NN% of users. (default=100)],
6424 [ val=`echo $withval | sed 's/[^0-9]//g'`
6425 MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
6427 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
6428 MOZ_CRASHREPORTER_ENABLE_PERCENT=100
6430 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
6432 dnl ========================================================
6433 dnl = Enable compilation of specific extension modules
6434 dnl ========================================================
6436 MOZ_ARG_ENABLE_STRING(extensions,
6437 [ --enable-extensions Enable extensions],
6438 [ for option in `echo $enableval | sed 's/,/ /g'`; do
6439 if test "$option" = "yes" -o "$option" = "all"; then
6440 AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
6441 elif test "$option" = "no" -o "$option" = "none"; then
6443 elif test "$option" = "default"; then
6444 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
6445 elif test `echo "$option" | grep -c \^-` != 0; then
6446 option=`echo $option | sed 's/^-//'`
6447 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
6449 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
6452 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
6454 if test -z "$MOZ_ENABLE_GNOMEVFS" -a -z "$MOZ_GNOMEVFS_LIBS" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6455 # Suppress warning on non-X11 platforms
6456 if test -n "$MOZ_X11"; then
6457 AC_MSG_WARN([Cannot build gnomevfs without required libraries. Removing gnomevfs from MOZ_EXTENSIONS.])
6459 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6462 dnl Do not build gnomevfs with libxul based apps
6463 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6464 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6467 if test -z "$MOZ_ENABLE_GIO" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6468 # Suppress warning on non-X11 platforms
6469 if test -n "$MOZ_X11"; then
6470 AC_MSG_WARN([Cannot build gio without required libraries. Removing gio from MOZ_EXTENSIONS.])
6472 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6475 dnl Do not build gio with libxul based apps
6476 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6477 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6480 if test -z "$MOZ_JSDEBUGGER" -a `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
6481 AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
6482 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
6485 dnl This might be temporary: build tridentprofile only on Windows
6486 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0 && test "$OS_ARCH" != "WINNT"; then
6487 AC_MSG_WARN([tridentprofile extension works only on Windows at this time. Removing tridentprofile from MOZ_EXTENSIONS.])
6488 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
6491 dnl cookie must be built before tridentprofile. put it at list's end.
6492 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0; then
6493 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
6494 MOZ_EXTENSIONS="$MOZ_EXTENSIONS tridentprofile"
6497 dnl xforms requires xtf
6498 if test -z "$MOZ_XTF" -a `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
6499 AC_MSG_WARN([Cannot build XForms without XTF support. Removing XForms from MOZ_EXTENSIONS.])
6500 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
6503 if test `echo "$MOZ_EXTENSIONS" | grep -c auth` -ne 0; then
6504 AC_MSG_WARN([auth is no longer an extension, use --disable-negotiateauth to disable.])
6505 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|auth||g'`
6508 if test `echo "$MOZ_EXTENSIONS" | grep -c 'cookie\|permissions'` -ne 0; then
6509 AC_MSG_WARN([cookie and permissions are no longer extensions, use --disable-permissions to disable.])
6510 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|cookie||g; s|permissions||g'`
6513 if test `echo "$MOZ_EXTENSIONS" | grep -c pref` -ne 0; then
6514 AC_MSG_WARN([pref is no longer an extension, use --disable-pref-extensions to disable.])
6515 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|pref||g'`
6518 if test `echo "$MOZ_EXTENSIONS" | grep -c universalchardet` -ne 0; then
6519 AC_MSG_WARN([universalchardet is no longer an extension, use --disable-universalchardet to disable.])
6520 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|universalchardet||g'`
6523 if test `echo "$MOZ_EXTENSIONS" | grep -c java` -ne 0; then
6524 AC_MSG_WARN([java is no longer an extension, use --enable-javaxpcom to enable.])
6525 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|java||g'`
6528 if test `echo "$MOZ_EXTENSIONS" | grep -c spellcheck` -ne 0; then
6529 AC_MSG_WARN([spellcheck is no longer an extension.])
6530 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|spellcheck||g'`
6534 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
6536 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
6537 dnl when trying to build a nonexistent extension.
6538 for extension in $MOZ_EXTENSIONS; do
6539 if test ! -d "${srcdir}/extensions/${extension}"; then
6540 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
6544 dnl ========================================================
6545 dnl MathML on by default
6546 dnl ========================================================
6547 MOZ_ARG_DISABLE_BOOL(mathml,
6548 [ --disable-mathml Disable MathML support],
6551 if test "$MOZ_MATHML"; then
6552 AC_DEFINE(MOZ_MATHML)
6555 dnl ========================================================
6556 dnl Keeping AC_DEFINE(MOZ_SVG) for the moment in case of something needs it.
6557 dnl ========================================================
6560 dnl ========================================================
6562 dnl ========================================================
6564 MOZ_ARG_DISABLE_BOOL(smil,
6565 [ --disable-smil Disable SMIL animation support],
6568 if test -n "$MOZ_SMIL"; then
6572 dnl ========================================================
6573 dnl Build Freetype in the tree
6574 dnl ========================================================
6575 MOZ_ARG_ENABLE_BOOL(tree-freetype,
6576 [ --enable-tree-freetype Enable Tree FreeType],
6577 MOZ_TREE_FREETYPE=1,
6578 MOZ_TREE_FREETYPE= )
6579 if test -n "$MOZ_TREE_FREETYPE"; then
6580 if test -n "$_WIN32_MSVC"; then
6581 AC_ERROR("building with in-tree freetype is not supported on MSVC")
6583 AC_DEFINE(MOZ_TREE_FREETYPE)
6584 AC_SUBST(MOZ_TREE_FREETYPE)
6585 MOZ_ENABLE_CAIRO_FT=1
6586 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
6587 FT2_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6588 CAIRO_FT_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6589 FT2_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6590 CAIRO_FT_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6591 AC_DEFINE(HAVE_FT_BITMAP_SIZE_Y_PPEM)
6592 AC_DEFINE(HAVE_FT_GLYPHSLOT_EMBOLDEN)
6593 AC_DEFINE(HAVE_FT_LOAD_SFNT_TABLE)
6594 AC_SUBST(CAIRO_FT_CFLAGS)
6598 dnl ========================================================
6600 dnl ========================================================
6601 case "$target_os" in
6602 aix*|solaris*|linux*|msvc*|mks*|cygwin*|mingw*|os2*|wince*|winmo*)
6607 MOZ_ARG_DISABLE_BOOL(installer,
6608 [ --disable-installer Disable building of installer],
6611 if test -n "$MOZ_INSTALLER" -a "$OS_ARCH" = "WINNT"; then
6612 # Disable installer for Windows builds that use the new toolkit if the
6613 # required major version and minimum minor version of Unicode NSIS isn't in
6615 REQ_NSIS_MAJOR_VER=2
6616 MIN_NSIS_MINOR_VER=33
6617 MOZ_PATH_PROGS(MAKENSISU, $MAKENSISU makensisu-2.46 makensisu makensis)
6618 if test -z "$MAKENSISU" -o "$MAKENSISU" = ":"; then
6619 AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or Unicode NSIS with a major version of $REQ_NSIS_MAJOR_VER and a minimum minor version of $MIN_NSIS_MINOR_VER in your path. To build without the installer reconfigure using --disable-installer.])
6622 MAKENSISU_VER=`"$MAKENSISU" -version 2>/dev/null | sed -e '/-Unicode/!s/.*//g' -e 's/^v\([0-9]\+\.[0-9]\+\)\-Unicode$/\1/g'`
6624 if test ! "$MAKENSISU_VER" = ""; then
6625 MAKENSISU_MAJOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $1 }'`
6626 MAKENSISU_MINOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $2 }'`
6628 AC_MSG_CHECKING([for Unicode NSIS with major version == $REQ_NSIS_MAJOR_VER and minor version >= $MIN_NSIS_MINOR_VER])
6629 if test "$MAKENSISU_VER" = "" ||
6630 test ! "$MAKENSISU_MAJOR_VER" = "$REQ_NSIS_MAJOR_VER" -o \
6631 ! "$MAKENSISU_MINOR_VER" -ge $MIN_NSIS_MINOR_VER; then
6633 AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or Unicode NSIS with a major version of $REQ_NSIS_MAJOR_VER and a minimum minor version of $MIN_NSIS_MINOR_VER in your path. To build without the installer reconfigure using --disable-installer.])
6635 AC_MSG_RESULT([yes])
6636 MAKENSISU="${CYGWIN_WRAPPER} $MAKENSISU"
6639 AC_SUBST(MOZ_INSTALLER)
6641 AC_MSG_CHECKING([for tar archiver])
6642 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
6643 if test -z "$TAR"; then
6644 AC_MSG_ERROR([no tar archiver found in \$PATH])
6646 AC_MSG_RESULT([$TAR])
6649 AC_MSG_CHECKING([for wget])
6650 AC_CHECK_PROGS(WGET, wget, "")
6651 AC_MSG_RESULT([$WGET])
6654 dnl ========================================================
6656 dnl ========================================================
6658 MOZ_ARG_DISABLE_BOOL(updater,
6659 [ --disable-updater Disable building of updater],
6663 if test -n "$MOZ_UPDATER"; then
6664 AC_DEFINE(MOZ_UPDATER)
6667 # app update channel is 'default' when not supplied.
6668 MOZ_ARG_ENABLE_STRING([update-channel],
6669 [ --enable-update-channel=CHANNEL
6670 Select application update channel (default=default)],
6671 MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
6673 if test -z "$MOZ_UPDATE_CHANNEL"; then
6674 MOZ_UPDATE_CHANNEL=default
6676 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
6677 AC_SUBST(MOZ_UPDATE_CHANNEL)
6679 # tools/update-packaging is not checked out by default.
6680 MOZ_ARG_ENABLE_BOOL(update-packaging,
6681 [ --enable-update-packaging
6682 Enable tools/update-packaging],
6683 MOZ_UPDATE_PACKAGING=1,
6684 MOZ_UPDATE_PACKAGING= )
6685 AC_SUBST(MOZ_UPDATE_PACKAGING)
6687 dnl ========================================================
6689 dnl ========================================================
6691 MOZ_ARG_DISABLE_BOOL(xpconnect-idispatch,
6692 [ --disable-xpconnect-idispatch
6693 Disable building of xpconnect support for IDispatch
6695 XPC_IDISPATCH_SUPPORT=,
6696 XPC_IDISPATCH_SUPPORT=1)
6697 AC_SUBST(XPC_IDISPATCH_SUPPORT)
6699 MOZ_ARG_DISABLE_BOOL(activex,
6700 [ --disable-activex Disable building of ActiveX control (win32 only)],
6701 MOZ_NO_ACTIVEX_SUPPORT=1,
6702 MOZ_NO_ACTIVEX_SUPPORT= )
6703 AC_SUBST(MOZ_NO_ACTIVEX_SUPPORT)
6705 MOZ_ARG_ENABLE_BOOL(activex-scripting,
6706 [ --enable-activex-scripting
6707 Enable building of ActiveX scripting support (win32)],
6708 MOZ_ACTIVEX_SCRIPTING_SUPPORT=1,
6709 MOZ_ACTIVEX_SCRIPTING_SUPPORT=)
6710 AC_SUBST(MOZ_ACTIVEX_SCRIPTING_SUPPORT)
6712 if test -n "$MOZ_NO_ACTIVEX_SUPPORT" -a -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT";
6714 AC_MSG_ERROR([Cannot enable ActiveX scripting support when ActiveX support is disabled.])
6717 if test "$COMPILE_ENVIRONMENT" = "1"; then
6718 if test -n "$XPC_IDISPATCH_SUPPORT" -o -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
6720 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
6721 if test "$ac_cv_header_atlbase_h" = "no"; then
6722 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.])
6729 dnl ========================================================
6731 dnl ========================================================
6732 MOZ_ARG_ENABLE_BOOL(leaky,
6733 [ --enable-leaky Build leaky memory tool],
6738 dnl ========================================================
6739 dnl build the tests by default
6740 dnl ========================================================
6741 MOZ_ARG_DISABLE_BOOL(tests,
6742 [ --disable-tests Do not build test libraries & programs],
6746 dnl ========================================================
6747 dnl parental controls (for Windows Vista)
6748 dnl ========================================================
6749 MOZ_ARG_DISABLE_BOOL(parental-controls,
6750 [ --disable-parental-controls
6751 Do not build parental controls],
6752 MOZ_DISABLE_PARENTAL_CONTROLS=1,
6753 MOZ_DISABLE_PARENTAL_CONTROLS=)
6754 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
6755 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
6758 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
6760 dnl ========================================================
6761 dnl = Disable DOMCrypto
6762 dnl ========================================================
6763 if test -n "$MOZ_DISABLE_DOMCRYPTO"; then
6764 AC_DEFINE(MOZ_DISABLE_DOMCRYPTO)
6767 dnl ========================================================
6769 dnl = Module specific options
6771 dnl ========================================================
6772 MOZ_ARG_HEADER(Individual module options)
6774 dnl ========================================================
6775 dnl = Disable feed handling components
6776 dnl ========================================================
6777 MOZ_ARG_DISABLE_BOOL(feeds,
6778 [ --disable-feeds Disable feed handling and processing components],
6781 if test -n "$MOZ_FEEDS"; then
6782 AC_DEFINE(MOZ_FEEDS)
6784 if test "$MOZ_BUILD_APP" = "browser"; then
6785 AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
6789 dnl ========================================================
6790 dnl = Enable mozStorage
6791 dnl ========================================================
6792 dnl Implicitly enabled by default if building calendar or places
6793 MOZ_ARG_ENABLE_BOOL(storage,
6794 [ --enable-storage Enable mozStorage module and related components],
6797 if test -n "$MOZ_STORAGE"; then
6798 AC_DEFINE(MOZ_STORAGE)
6801 dnl ========================================================
6802 dnl Check for sqlite
6803 dnl ========================================================
6806 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6807 [ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
6808 MOZ_NATIVE_SQLITE=1,
6809 MOZ_NATIVE_SQLITE= )
6811 if test -z "$MOZ_NATIVE_SQLITE"
6814 SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,mozsqlite3,$(DIST)/lib)'
6816 dnl ============================
6817 dnl === SQLite Version check ===
6818 dnl ============================
6819 dnl Check to see if the system SQLite package is new enough.
6820 PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6822 dnl ==================================
6823 dnl === SQLITE_SECURE_DELETE check ===
6824 dnl ==================================
6825 dnl Check to see if the system SQLite package is compiled with
6826 dnl SQLITE_SECURE_DELETE enabled.
6827 AC_MSG_CHECKING(for SQLITE_SECURE_DELETE support in system SQLite)
6828 _SAVE_CFLAGS="$CFLAGS"
6829 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6831 LIBS="$LIBS $SQLITE_LIBS"
6832 AC_CACHE_VAL(ac_cv_sqlite_secure_delete,[
6834 #include "sqlite3.h"
6836 int main(int argc, char **argv){
6837 return !sqlite3_compileoption_used("SQLITE_SECURE_DELETE");
6839 ac_cv_sqlite_secure_delete=yes,
6840 ac_cv_sqlite_secure_delete=no,
6841 ac_cv_sqlite_secure_delete=no
6844 AC_MSG_RESULT($ac_cv_sqlite_secure_delete)
6845 CFLAGS="$_SAVE_CFLAGS"
6847 if test "x$ac_cv_sqlite_secure_delete" = "xno"; then
6848 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_SECURE_DELETE.])
6851 dnl ===============================
6852 dnl === SQLITE_THREADSAFE check ===
6853 dnl ===============================
6854 dnl Check to see if the system SQLite package is compiled with
6855 dnl SQLITE_THREADSAFE enabled.
6856 AC_MSG_CHECKING(for SQLITE_THREADSAFE support in system SQLite)
6857 _SAVE_CFLAGS="$CFLAGS"
6858 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6860 LIBS="$LIBS $SQLITE_LIBS"
6861 AC_CACHE_VAL(ac_cv_sqlite_threadsafe,[
6863 #include "sqlite3.h"
6865 int main(int argc, char **argv){
6866 return !sqlite3_compileoption_used("SQLITE_THREADSAFE=1");
6868 ac_cv_sqlite_threadsafe=yes,
6869 ac_cv_sqlite_threadsafe=no,
6870 ac_cv_sqlite_threadsafe=no
6873 AC_MSG_RESULT($ac_cv_sqlite_threadsafe)
6874 CFLAGS="$_SAVE_CFLAGS"
6876 if test "x$ac_cv_sqlite_threadsafe" = "xno"; then
6877 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_THREADSAFE.])
6880 dnl ================================
6881 dnl === SQLITE_ENABLE_FTS3 check ===
6882 dnl ================================
6883 dnl check to see if the system SQLite package is compiled with
6884 dnl SQLITE_ENABLE_FTS3 enabled.
6885 AC_MSG_CHECKING(for SQLITE_ENABLE_FTS3 support in system SQLite)
6886 _SAVE_CFLAGS="$CFLAGS"
6887 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6889 LIBS="$LIBS $SQLITE_LIBS"
6890 AC_CACHE_VAL(ac_cv_sqlite_enable_fts3,[
6892 #include "sqlite3.h"
6894 int main(int argc, char **argv){
6895 return !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3");
6897 ac_cv_sqlite_enable_fts3=yes,
6898 ac_cv_sqlite_enable_fts3=no,
6899 ac_cv_sqlite_enable_fts3=no
6902 AC_MSG_RESULT($ac_cv_sqlite_enable_fts3)
6903 CFLAGS="$_SAVE_CFLAGS"
6905 if test "x$ac_cv_sqlite_enable_fts3" = "xno"; then
6906 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_FTS3.])
6909 dnl =========================================
6910 dnl === SQLITE_ENABLE_UNLOCK_NOTIFY check ===
6911 dnl =========================================
6912 dnl check to see if the system SQLite package is compiled with
6913 dnl SQLITE_ENABLE_UNLOCK_NOTIFY enabled.
6914 AC_MSG_CHECKING(for SQLITE_ENABLE_UNLOCK_NOTIFY support in system SQLite)
6915 _SAVE_CFLAGS="$CFLAGS"
6916 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6918 LIBS="$LIBS $SQLITE_LIBS"
6919 AC_CACHE_VAL(ac_cv_sqlite_enable_unlock_notify,[
6921 #include "sqlite3.h"
6923 int main(int argc, char **argv){
6924 return !sqlite3_compileoption_used("SQLITE_ENABLE_UNLOCK_NOTIFY");
6926 ac_cv_sqlite_enable_unlock_notify=yes,
6927 ac_cv_sqlite_enable_unlock_notify=no,
6928 ac_cv_sqlite_enable_unlock_notify=no
6931 AC_MSG_RESULT($ac_cv_sqlite_enable_unlock_notify)
6932 CFLAGS="$_SAVE_CFLAGS"
6934 if test "x$ac_cv_sqlite_enable_unlock_notify" = "xno"; then
6935 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_UNLOCK_NOTIFY.])
6939 AC_SUBST(MOZ_NATIVE_SQLITE)
6941 dnl ========================================================
6942 dnl = Enable help viewer (off by default)
6943 dnl ========================================================
6944 if test -n "$MOZ_HELP_VIEWER"; then
6945 dnl Do this if defined in confvars.sh
6946 AC_DEFINE(MOZ_HELP_VIEWER)
6949 dnl ========================================================
6950 dnl = Enable safe browsing (anti-phishing)
6951 dnl ========================================================
6952 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6953 [ --enable-safe-browsing Enable safe browsing (anti-phishing) implementation],
6954 MOZ_SAFE_BROWSING=1,
6955 MOZ_SAFE_BROWSING= )
6956 if test -n "$MOZ_SAFE_BROWSING"; then
6957 AC_DEFINE(MOZ_SAFE_BROWSING)
6959 AC_SUBST(MOZ_SAFE_BROWSING)
6961 dnl ========================================================
6962 dnl = Enable faststart component
6963 dnl ========================================================
6964 MOZ_ARG_ENABLE_BOOL(faststart,
6965 [ --enable-faststart Enable the faststart component],
6968 if test -n "$MOZ_FASTSTART"; then
6969 AC_DEFINE(MOZ_FASTSTART)
6971 AC_SUBST(MOZ_FASTSTART)
6973 dnl ========================================================
6974 dnl = Enable url-classifier
6975 dnl ========================================================
6976 dnl Implicitly enabled by default if building with safe-browsing
6977 if test -n "$MOZ_SAFE_BROWSING"; then
6978 MOZ_URL_CLASSIFIER=1
6980 MOZ_ARG_ENABLE_BOOL(url-classifier,
6981 [ --enable-url-classifier Enable url classifier module],
6982 MOZ_URL_CLASSIFIER=1,
6983 MOZ_URL_CLASSIFIER= )
6984 if test -n "$MOZ_URL_CLASSIFIER"; then
6985 AC_DEFINE(MOZ_URL_CLASSIFIER)
6987 AC_SUBST(MOZ_URL_CLASSIFIER)
6989 dnl ========================================================
6990 dnl = Disable zipwriter
6991 dnl ========================================================
6992 MOZ_ARG_DISABLE_BOOL(zipwriter,
6993 [ --disable-zipwriter Disable zipwriter component],
6996 AC_SUBST(MOZ_ZIPWRITER)
6998 dnl ========================================================
7000 dnl ========================================================
7001 dnl superseded by QtNetwork starting from 4.7
7002 MOZ_ENABLE_LIBCONIC=1
7004 if test -n "$MOZ_ENABLE_QT"; then
7005 if test "$MOZ_ENABLE_QTNETWORK"; then
7006 MOZ_ENABLE_LIBCONIC=
7010 MOZ_ARG_DISABLE_BOOL(libconic,
7011 [ --disable-libconic Disable libconic],
7012 MOZ_ENABLE_LIBCONIC=,
7013 MOZ_ENABLE_LIBCONIC=1 )
7015 if test -n "$MOZ_ENABLE_LIBCONIC"; then
7016 PKG_CHECK_MODULES(LIBCONIC, conic,
7017 MOZ_ENABLE_LIBCONIC=1,
7018 MOZ_ENABLE_LIBCONIC=)
7020 if test "$MOZ_ENABLE_LIBCONIC"; then
7021 AC_DEFINE(MOZ_ENABLE_LIBCONIC)
7024 AC_SUBST(MOZ_ENABLE_LIBCONIC)
7025 AC_SUBST(LIBCONIC_CFLAGS)
7026 AC_SUBST(LIBCONIC_LIBS)
7028 dnl ========================================================
7030 dnl ========================================================
7032 MAEMO_SDK_TARGET_VER=-1
7034 MOZ_ARG_WITH_STRING(maemo-version,
7035 [ --with-maemo-version=MAEMO_SDK_TARGET_VER
7037 MAEMO_SDK_TARGET_VER=$withval)
7039 case "$MAEMO_SDK_TARGET_VER" in
7041 MOZ_PLATFORM_MAEMO=5
7045 MOZ_PLATFORM_MAEMO=6
7049 dnl We aren't compiling for Maemo, move on.
7052 AC_MSG_ERROR([Unknown Maemo Version. Try setting --with-maemo-version to 5 or 6.])
7056 if test $MOZ_PLATFORM_MAEMO; then
7057 AC_DEFINE_UNQUOTED([MOZ_PLATFORM_MAEMO], $MOZ_PLATFORM_MAEMO)
7059 if test -z "$MOZ_ENABLE_DBUS"; then
7060 AC_MSG_ERROR([DBus is required when building for Maemo])
7063 MOZ_GFX_OPTIMIZE_MOBILE=1
7065 MOZ_MAEMO_LIBLOCATION=
7067 if test $MOZ_PLATFORM_MAEMO = 5; then
7068 dnl if we have Xcomposite we should also have Xdamage and Xfixes
7069 AC_CHECK_HEADERS([X11/extensions/Xdamage.h], [],
7070 [AC_MSG_ERROR([Couldn't find X11/extensions/Xdamage.h which is required for composited plugins.])])
7071 AC_CHECK_LIB(Xcomposite, XCompositeRedirectWindow, [XCOMPOSITE_LIBS="-lXcomposite -lXdamage -lXfixes"],
7072 [MISSING_X="$MISSING_X -lXcomposite"], $XLIBS)
7074 AC_SUBST(XCOMPOSITE_LIBS)
7076 PKG_CHECK_MODULES(LIBHILDONMIME,libhildonmime, _LIB_FOUND=1, _LIB_FOUND=)
7077 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONMIME_LIBS"
7078 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONMIME_CFLAGS"
7079 if test -z "$_LIB_FOUND"; then
7080 AC_MSG_ERROR([Hildon Mime is required when building for Maemo])
7084 PKG_CHECK_MODULES(LIBOSSO,libosso, _LIB_FOUND=1, _LIB_FOUND=)
7085 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBOSSO_LIBS"
7086 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBOSSO_CFLAGS"
7087 if test -z "$_LIB_FOUND"; then
7088 AC_MSG_ERROR([LibOSSO is required when building for Maemo])
7091 PKG_CHECK_MODULES(LIBHILDONFM,hildon-fm-2, _LIB_FOUND=1, _LIB_FOUND=)
7092 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONFM_LIBS"
7093 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONFM_CFLAGS"
7094 if test -z "$_LIB_FOUND"; then
7095 AC_MSG_ERROR([Hildon FM-2 is required when building for Maemo])
7099 if test $MOZ_PLATFORM_MAEMO = 6; then
7100 dnl ========================================================
7101 dnl = Enable meego libcontentaction
7102 dnl ========================================================
7103 MOZ_ARG_ENABLE_BOOL(meegocontentaction,
7104 [ --enable-meegocontentaction Enable meegocontentaction support],
7105 MOZ_MEEGOCONTENTACTION=1,
7106 MOZ_MEEGOCONTENTACTION=)
7108 if test -n "$MOZ_MEEGOCONTENTACTION"; then
7110 PKG_CHECK_MODULES(LIBCONTENTACTION, contentaction-0.1, _LIB_FOUND=1, _LIB_FOUND=)
7111 if test "$_LIB_FOUND"; then
7112 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBCONTENTACTION_LIBS"
7113 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBCONTENTACTION_CFLAGS"
7114 MOZ_ENABLE_CONTENTACTION=1
7115 AC_DEFINE(MOZ_ENABLE_CONTENTACTION)
7116 AC_SUBST(MOZ_ENABLE_CONTENTACTION)
7123 PKG_CHECK_MODULES(LIBLOCATION,liblocation, _LIB_FOUND=1, _LIB_FOUND=)
7124 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBLOCATION_LIBS"
7125 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBLOCATION_CFLAGS"
7126 if test "$_LIB_FOUND"; then
7127 MOZ_MAEMO_LIBLOCATION=1
7128 AC_DEFINE(MOZ_MAEMO_LIBLOCATION)
7130 AC_MSG_WARN([Cannot liblocation-dev. Disabling Maemo geolocation.])
7132 AC_SUBST(MOZ_MAEMO_LIBLOCATION)
7134 PKG_CHECK_MODULES(LIBMEEGOTOUCHSHARE, ShareUiInterface-maemo-meegotouch >= 0.3.31 mdatauri, _LIB_FOUND=1, _LIB_FOUND=)
7135 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBMEEGOTOUCHSHARE_LIBS"
7136 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBMEEGOTOUCHSHARE_CFLAGS"
7137 if test "$_LIB_FOUND"; then
7138 MOZ_ENABLE_MEEGOTOUCHSHARE=1
7139 AC_DEFINE(MOZ_ENABLE_MEEGOTOUCHSHARE)
7141 AC_MSG_WARN([Cannot find maemo-meegotouch-interfaces-dev or libmdatauri-dev. Disabling meegotouch share ui.])
7143 AC_SUBST(MOZ_ENABLE_MEEGOTOUCHSHARE)
7145 AC_SUBST(MOZ_PLATFORM_MAEMO_LIBS)
7146 AC_SUBST(MOZ_PLATFORM_MAEMO_CFLAGS)
7149 dnl Setup default CPU arch for arm target
7150 case "$target_cpu" in
7155 dnl ========================================================
7156 dnl = Enable building the Thumb2 instruction set
7157 dnl ========================================================
7158 MOZ_ARG_ENABLE_BOOL(thumb2,
7159 [ --enable-thumb2 Enable Thumb2 instruction set (implies ARMv7)],
7162 if test -n "$MOZ_THUMB2"; then
7166 dnl ========================================================
7167 dnl = Enable building for ARM specific CPU features
7168 dnl ========================================================
7169 MOZ_ARG_WITH_STRING(cpu-arch,
7170 [ --with-cpu-arch=arch Use specific arm architecture CPU features, default armv7],
7171 MOZ_ARM_ARCH=$withval)
7173 if test -n "$MOZ_THUMB2"; then
7174 case "$target_cpu" in
7176 if test "$MOZ_ARM_ARCH" != "armv7"; then
7177 AC_MSG_ERROR([--enable-thumb2 is not compatible with cpu-arch=$MOZ_ARM_ARCH])
7179 if test "$GNU_CC"; then
7180 AC_DEFINE(MOZ_THUMB2)
7181 AC_DEFINE(MOZ_ARM_ARCH)
7182 CFLAGS="$CFLAGS -march=armv7-a -mthumb -Wa, -march=armv7-a -Wa, -mthumb"
7183 CXXFLAGS="$CXXFLAGS -march=armv7-a -mthumb -Wa, -march=armv7-a -Wa, -mthumb"
7184 ASFLAGS="$ASFLAGS -march=armv7-a -mthumb"
7186 AC_MSG_ERROR([--enable-thumb2 is not supported for non-GNU toolchains])
7190 AC_MSG_ERROR([--enable-thumb2 is not supported for non-ARM CPU architectures])
7193 elif test "$MOZ_ARM_ARCH" = "armv7"; then
7194 case "$target_cpu" in
7196 if test "$GNU_CC"; then
7197 AC_DEFINE(MOZ_ARM_ARCH)
7198 CFLAGS="$CFLAGS -march=armv7-a -marm -Wa, -march=armv7-a -Wa, -marm"
7199 CXXFLAGS="$CXXFLAGS -march=armv7-a -marm -Wa, -march=armv7-a -Wa, -marm"
7200 ASFLAGS="$ASFLAGS -march=armv7-a -marm"
7202 AC_MSG_ERROR([--with-cpu-arch=armv7 is not supported for non-GNU toolchains])
7206 AC_MSG_ERROR([--with-cpu-arch=armv7 is not supported for non-ARM CPU architectures])
7210 case "$target_cpu" in
7212 if test "$GNU_CC"; then
7213 CFLAGS="$CFLAGS -march=armv5te -mthumb-interwork -Wa, -march=armv5te -Wa, -mthumb-interwork"
7214 CXXFLAGS="$CXXFLAGS -march=armv5te -mthumb-interwork -Wa, -march=armv5te -Wa, -mthumb-interwork"
7215 ASFLAGS="$ASFLAGS -march=armv5te -mthumb-interwork"
7221 AC_SUBST(MOZ_THUMB2)
7222 AC_SUBST(MOZ_ARM_ARCH)
7224 dnl ========================================================
7225 dnl = faststripe theme
7226 dnl ========================================================
7227 MOZ_ARG_ENABLE_BOOL(faststripe,
7228 [ --enable-faststripe Use faststripe theme],
7229 MOZ_THEME_FASTSTRIPE=1,
7230 MOZ_THEME_FASTSTRIPE= )
7231 AC_SUBST(MOZ_THEME_FASTSTRIPE)
7233 dnl ========================================================
7235 dnl = Feature options that require extra sources to be pulled
7237 dnl ========================================================
7238 dnl MOZ_ARG_HEADER(Features that require extra sources)
7240 dnl ========================================================
7242 dnl = Debugging Options
7244 dnl ========================================================
7245 MOZ_ARG_HEADER(Debugging and Optimizations)
7247 dnl ========================================================
7248 dnl = Disable building with debug info.
7249 dnl = Debugging is OFF by default
7250 dnl ========================================================
7251 if test -z "$MOZ_DEBUG_FLAGS"; then
7252 MOZ_DEBUG_FLAGS="-g"
7255 MOZ_ARG_ENABLE_STRING(debug,
7256 [ --enable-debug[=DBG] Enable building with developer debug info
7257 (using compiler flags DBG)],
7258 [ if test "$enableval" != "no"; then
7260 if test -n "$enableval" -a "$enableval" != "yes"; then
7261 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
7262 _MOZ_DEBUG_FLAGS_SET=1
7269 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG -DTRACING"
7270 MOZ_ARG_WITH_STRING(debug-label,
7271 [ --with-debug-label=LABELS
7272 Define DEBUG_<value> for each comma-separated
7274 [ for option in `echo $withval | sed 's/,/ /g'`; do
7275 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${option}"
7278 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
7280 if test -n "$MOZ_DEBUG"; then
7281 AC_MSG_CHECKING([for valid debug flags])
7282 _SAVE_CFLAGS=$CFLAGS
7283 CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
7284 AC_TRY_COMPILE([#include <stdio.h>],
7285 [printf("Hello World\n");],
7288 AC_MSG_RESULT([$_results])
7289 if test "$_results" = "no"; then
7290 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
7292 CFLAGS=$_SAVE_CFLAGS
7295 dnl ========================================================
7296 dnl enable mobile optimizations
7297 dnl ========================================================
7298 MOZ_ARG_ENABLE_BOOL(mobile-optimize,
7299 [ --enable-mobile-optimize
7300 Enable mobile optimizations],
7301 MOZ_GFX_OPTIMIZE_MOBILE=1)
7303 AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
7305 if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
7306 AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
7309 dnl ========================================================
7310 dnl = Enable code optimization. ON by default.
7311 dnl ========================================================
7312 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
7313 MOZ_OPTIMIZE_FLAGS="-O"
7316 MOZ_ARG_ENABLE_STRING(optimize,
7317 [ --disable-optimize Disable compiler optimization
7318 --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
7319 [ if test "$enableval" != "no"; then
7321 if test -n "$enableval" -a "$enableval" != "yes"; then
7322 MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
7327 fi ], MOZ_OPTIMIZE=1)
7329 if test "$COMPILE_ENVIRONMENT"; then
7330 if test -n "$MOZ_OPTIMIZE"; then
7331 AC_MSG_CHECKING([for valid optimization flags])
7332 _SAVE_CFLAGS=$CFLAGS
7333 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
7334 AC_TRY_COMPILE([#include <stdio.h>],
7335 [printf("Hello World\n");],
7338 AC_MSG_RESULT([$_results])
7339 if test "$_results" = "no"; then
7340 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
7342 CFLAGS=$_SAVE_CFLAGS
7344 fi # COMPILE_ENVIRONMENT
7346 AC_SUBST(MOZ_OPTIMIZE)
7347 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
7348 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
7349 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
7351 dnl ========================================================
7352 dnl = (Deprecated) generation of debugger info for specific modules
7353 dnl ========================================================
7354 MOZ_ARG_ENABLE_STRING(debugger-info-modules,
7355 [ --enable-debugger-info-modules
7356 Enable/disable debugger info for specific modules],
7357 [ if test "$enableval" != "no"; then
7358 AC_MSG_WARN([--enable-debugger-info-modules is deprecated, use --enable-debug-symbols instead])
7362 dnl ========================================================
7363 dnl = Enable generation of debug symbols
7364 dnl ========================================================
7365 MOZ_ARG_ENABLE_STRING(debug-symbols,
7366 [ --enable-debug-symbols[=DBG]
7367 Enable debugging symbols (using compiler flags DBG)],
7368 [ if test "$enableval" != "no"; then
7370 if test -n "$enableval" -a "$enableval" != "yes"; then
7371 if test -z "$_MOZ_DEBUG_FLAGS_SET"; then
7372 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
7374 AC_MSG_ERROR([--enable-debug-symbols flags cannot be used with --enable-debug flags])
7379 if test -n "$MOZ_DEBUG" -o -n "$MOZ_DEBUG_SYMBOLS"; then
7380 AC_DEFINE(MOZ_DEBUG_SYMBOLS)
7381 export MOZ_DEBUG_SYMBOLS
7384 dnl ========================================================
7385 dnl = Disable any treating of compile warnings as errors
7386 dnl ========================================================
7387 MOZ_ARG_DISABLE_BOOL(warnings-as-errors,
7388 [ --disable-warnings-as-errors
7389 Disable treating of warnings as errors],
7390 MOZ_DISABLE_WARNINGS_AS_ERRORS=1,
7391 MOZ_DISABLE_WARNINGS_AS_ERRORS= )
7392 if test "$MOZ_DISABLE_WARNINGS_AS_ERRORS"; then
7393 WARNINGS_AS_ERRORS=''
7396 dnl ========================================================
7397 dnl = Disable runtime logging checks
7398 dnl ========================================================
7399 MOZ_ARG_DISABLE_BOOL(logging,
7400 [ --disable-logging Disable logging facilities],
7401 NS_DISABLE_LOGGING=1,
7402 NS_DISABLE_LOGGING= )
7403 if test "$NS_DISABLE_LOGGING"; then
7404 AC_DEFINE(NS_DISABLE_LOGGING)
7406 AC_DEFINE(MOZ_LOGGING)
7409 dnl ========================================================
7410 dnl = This will enable logging of addref, release, ctor, dtor.
7411 dnl ========================================================
7412 _ENABLE_LOGREFCNT=42
7413 MOZ_ARG_ENABLE_BOOL(logrefcnt,
7414 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
7415 _ENABLE_LOGREFCNT=1,
7416 _ENABLE_LOGREFCNT= )
7417 if test "$_ENABLE_LOGREFCNT" = "1"; then
7418 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
7419 elif test -z "$_ENABLE_LOGREFCNT"; then
7420 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
7423 dnl ========================================================
7424 dnl = Enable trace malloc
7425 dnl ========================================================
7426 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
7427 MOZ_ARG_ENABLE_BOOL(trace-malloc,
7428 [ --enable-trace-malloc Enable malloc tracing],
7431 if test "$NS_TRACE_MALLOC"; then
7432 # Please, Mr. Linker Man, don't take away our symbol names
7433 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7435 AC_DEFINE(NS_TRACE_MALLOC)
7437 AC_SUBST(NS_TRACE_MALLOC)
7439 dnl ========================================================
7440 dnl = Enable jemalloc
7441 dnl ========================================================
7442 MOZ_ARG_ENABLE_BOOL(jemalloc,
7443 [ --enable-jemalloc Replace memory allocator with jemalloc],
7447 if test "$NS_TRACE_MALLOC"; then
7451 if test "$MOZ_MEMORY"; then
7453 dnl Don't try to run compiler tests on Windows
7454 if test "$OS_ARCH" = "WINNT"; then
7455 if test -z "$HAVE_64BIT_OS"; then
7456 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7458 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7461 AC_CHECK_SIZEOF([int *], [4])
7462 case "${ac_cv_sizeof_int_p}" in
7464 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7467 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7470 AC_MSG_ERROR([Unexpected pointer size])
7475 AC_DEFINE(MOZ_MEMORY)
7476 if test "x$MOZ_DEBUG" = "x1"; then
7477 AC_DEFINE(MOZ_MEMORY_DEBUG)
7479 dnl The generic feature tests that determine how to compute ncpus are long and
7480 dnl complicated. Therefore, simply define special cpp variables for the
7481 dnl platforms we have special knowledge of.
7484 AC_DEFINE(MOZ_MEMORY_DARWIN)
7487 AC_DEFINE(MOZ_MEMORY_BSD)
7490 AC_DEFINE(MOZ_MEMORY_LINUX)
7493 AC_DEFINE(MOZ_MEMORY_BSD)
7496 AC_DEFINE(MOZ_MEMORY_SOLARIS)
7498 *-msvc*|*-mks*|*-cygwin*|*-mingw*)
7499 AC_DEFINE(MOZ_MEMORY_WINDOWS)
7500 dnl This is sort of awful. Will revisit if we add support for more versions
7501 if test "$CC_VERSION" != "14.00.50727.762" -a "$CC_VERSION" != "15.00.30729.01"; then
7502 AC_MSG_ERROR([Building jemalloc requires exactly Visual C++ 2005 SP1 or 2008 SP1 currently.])
7504 if test -z "$WIN32_CRT_SRC_DIR"; then
7505 if test -z "$VCINSTALLDIR" -o ! -d "$VCINSTALLDIR"; then
7506 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).])
7508 WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src"
7512 case "${target_cpu}" in
7514 MOZ_CRT_CPU_ARCH=intel
7517 MOZ_CRT_CPU_ARCH=amd64
7520 AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7524 AC_SUBST(MOZ_CRT_CPU_ARCH)
7526 if test ! -d "$WIN32_CRT_SRC_DIR"; then
7527 AC_MSG_ERROR([Invalid Win32 CRT source directory: ${WIN32_CRT_SRC_DIR}])
7529 WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd -W`
7530 _objdir_win=`pwd -W`
7531 WIN32_CUSTOM_CRT_DIR="$_objdir_win/memory/jemalloc/crtsrc/build/$MOZ_CRT_CPU_ARCH"
7532 MOZ_MEMORY_LDFLAGS="-MANIFEST:NO -LIBPATH:\"$WIN32_CUSTOM_CRT_DIR\" -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt19 -DEFAULTLIB:mozcpp19"
7533 dnl Also pass this to NSPR/NSS
7534 DLLFLAGS="$DLLFLAGS $MOZ_MEMORY_LDFLAGS"
7538 AC_DEFINE(MOZ_MEMORY_WINCE)
7539 AC_DEFINE(MOZ_MEMORY_WINDOWS)
7540 if test -z "$WINCE_WINDOWS_MOBILE"; then
7541 AC_DEFINE(MOZ_MEMORY_WINCE6)
7545 AC_DEFINE(MOZ_MEMORY_WINCE)
7546 AC_DEFINE(MOZ_MEMORY_WINDOWS)
7549 AC_DEFINE(MOZ_MEMORY_LINUX)
7550 AC_DEFINE(MOZ_MEMORY_ANDROID)
7552 export WRAP_MALLOC_LIB="-L$_objdir/dist/lib -lmozalloc -lmozutils"
7553 WRAP_MALLOC_CFLAGS="-Wl,--wrap=dlopen -Wl,--wrap=dlclose -Wl,--wrap=dlerror -Wl,--wrap=dlsym -Wl,--wrap=dladdr"
7556 AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7560 if test "$OS_ARCH" != "Darwin"; then
7561 dnl NB: this must be kept in sync with jemalloc.h
7562 AC_DEFINE(HAVE_JEMALLOC_VALLOC)
7563 AC_DEFINE(HAVE_JEMALLOC_POSIX_MEMALIGN)
7564 AC_DEFINE(HAVE_JEMALLOC_MEMALIGN)
7567 AC_SUBST(MOZ_MEMORY)
7568 AC_SUBST(MOZ_MEMORY_LDFLAGS)
7569 AC_SUBST(WIN32_CRT_SRC_DIR)
7570 dnl Need to set this for make because NSS doesn't have configure
7573 dnl ========================================================
7574 dnl = Use malloc wrapper lib
7575 dnl ========================================================
7576 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
7577 [ --enable-wrap-malloc Wrap malloc calls (gnu linker only)],
7581 if test -n "$_WRAP_MALLOC"; then
7582 if test "$GNU_CC"; then
7583 WRAP_MALLOC_CFLAGS="${LDFLAGS} ${WRAP_MALLOC_CFLAGS} -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 -Wl,--wrap -Wl,posix_memalign"
7584 MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) $(WRAP_MALLOC_LIB) -o $@'
7585 MKCSHLIB='$(CC) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) $(WRAP_MALLOC_LIB) -o $@'
7589 dnl ========================================================
7590 dnl = Location of malloc wrapper lib
7591 dnl ========================================================
7592 MOZ_ARG_WITH_STRING(wrap-malloc,
7593 [ --with-wrap-malloc=DIR Location of malloc wrapper library],
7594 WRAP_MALLOC_LIB=$withval)
7596 dnl ========================================================
7597 dnl = Use JS Call tracing
7598 dnl ========================================================
7599 MOZ_ARG_ENABLE_BOOL(trace-jscalls,
7600 [ --enable-trace-jscalls Enable JS call enter/exit callback (default=no)],
7601 MOZ_TRACE_JSCALLS=1,
7602 MOZ_TRACE_JSCALLS= )
7603 if test -n "$MOZ_TRACE_JSCALLS"; then
7604 AC_DEFINE(MOZ_TRACE_JSCALLS)
7607 dnl ========================================================
7609 dnl ========================================================
7610 MOZ_ARG_ENABLE_BOOL(tracevis,
7611 [ --enable-tracevis Enable TraceVis tracing tool (default=no)],
7614 if test -n "$MOZ_TRACEVIS"; then
7615 AC_DEFINE(MOZ_TRACEVIS)
7618 dnl ========================================================
7620 dnl ========================================================
7621 MOZ_ARG_ENABLE_BOOL(gctimer,
7622 [ --enable-gctimer Enable GC timer (default=no)],
7625 if test -n "$MOZ_GCTIMER"; then
7626 AC_DEFINE(MOZ_GCTIMER)
7629 dnl ========================================================
7631 dnl ========================================================
7632 MOZ_ARG_ENABLE_BOOL(valgrind,
7633 [ --enable-valgrind Enable Valgrind integration hooks (default=no)],
7636 if test -n "$MOZ_VALGRIND"; then
7637 AC_CHECK_HEADER([valgrind/valgrind.h], [],
7639 [--enable-valgrind specified but Valgrind is not installed]))
7640 AC_DEFINE(MOZ_VALGRIND)
7643 dnl ========================================================
7645 dnl ========================================================
7646 MOZ_ARG_ENABLE_BOOL(jprof,
7647 [ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof). Implies --enable-profiling.],
7650 if test -n "$MOZ_JPROF"; then
7652 AC_DEFINE(MOZ_JPROF)
7655 dnl ========================================================
7657 dnl ========================================================
7658 MOZ_ARG_ENABLE_BOOL(shark,
7659 [ --enable-shark Enable shark remote profiling. Implies --enable-profiling.],
7662 if test -n "$MOZ_SHARK"; then
7664 AC_DEFINE(MOZ_SHARK)
7667 dnl ========================================================
7669 dnl ========================================================
7670 MOZ_ARG_ENABLE_BOOL(callgrind,
7671 [ --enable-callgrind Enable callgrind profiling],
7674 if test -n "$MOZ_CALLGRIND"; then
7675 AC_DEFINE(MOZ_CALLGRIND)
7678 dnl ========================================================
7680 dnl ========================================================
7681 MOZ_ARG_ENABLE_BOOL(vtune,
7682 [ --enable-vtune Enable vtune profiling. Implies --enable-profiling.],
7685 if test -n "$MOZ_VTUNE"; then
7687 AC_DEFINE(MOZ_VTUNE)
7690 dnl ========================================================
7692 dnl ========================================================
7693 if test -n "$MOZ_PROFILING"; then
7694 AC_DEFINE(MOZ_PROFILING)
7697 dnl ========================================================
7698 dnl Zealous JavaScript GC
7699 dnl ========================================================
7700 MOZ_ARG_ENABLE_BOOL(gczeal,
7701 [ --enable-gczeal Enable zealous JavaScript GCing],
7704 if test -n "$JS_GC_ZEAL"; then
7705 AC_DEFINE(JS_GC_ZEAL)
7708 dnl ======================================================
7709 dnl = Enable compiling with ccache
7710 dnl ======================================================
7711 MOZ_ARG_WITH_STRING(ccache,
7712 [ --with-ccache[=path/to/ccache]
7713 Enable compiling with ccache],
7714 CCACHE=$withval, CCACHE="no")
7716 if test "$CCACHE" != "no"; then
7717 if test -z "$CCACHE" -o "$CCACHE" = "yes"; then
7720 if test ! -e "$CCACHE"; then
7721 AC_MSG_ERROR([$CCACHE not found])
7724 MOZ_PATH_PROGS(CCACHE, $CCACHE ccache)
7725 if test -z "$CCACHE" -o "$CCACHE" = ":"; then
7726 AC_MSG_ERROR([ccache not found])
7727 elif test -x "$CCACHE"; then
7731 AC_MSG_ERROR([$CCACHE is not executable])
7735 dnl ========================================================
7736 dnl = Enable static checking using gcc-dehydra
7737 dnl ========================================================
7739 MOZ_ARG_WITH_STRING(static-checking,
7740 [ --with-static-checking=path/to/gcc_dehydra.so
7741 Enable static checking of code using GCC-dehydra],
7742 DEHYDRA_PATH=$withval,
7745 if test -n "$DEHYDRA_PATH"; then
7746 if test ! -f "$DEHYDRA_PATH"; then
7747 AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
7749 AC_DEFINE(NS_STATIC_CHECKING)
7751 AC_SUBST(DEHYDRA_PATH)
7753 dnl ========================================================
7754 dnl = Enable stripping of libs & executables
7755 dnl ========================================================
7756 MOZ_ARG_ENABLE_BOOL(strip,
7757 [ --enable-strip Enable stripping of libs & executables ],
7761 dnl ========================================================
7762 dnl = Enable stripping of libs & executables when packaging
7763 dnl ========================================================
7764 MOZ_ARG_ENABLE_BOOL(install-strip,
7765 [ --enable-install-strip Enable stripping of libs & executables when packaging ],
7769 dnl ========================================================
7770 dnl = --enable-elf-dynstr-gc
7771 dnl ========================================================
7772 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
7773 [ --enable-elf-dynstr-gc Enable elf dynstr garbage collector (opt builds only)],
7774 USE_ELF_DYNSTR_GC=1,
7775 USE_ELF_DYNSTR_GC= )
7777 dnl ========================================================
7778 dnl = --disable-elf-hack
7779 dnl ========================================================
7782 MOZ_ARG_DISABLE_BOOL(elf-hack,
7783 [ --disable-elf-hack Disable elf hacks],
7787 dnl ========================================================
7789 dnl = Profiling and Instrumenting
7791 dnl ========================================================
7792 MOZ_ARG_HEADER(Profiling and Instrumenting)
7794 dnl ========================================================
7795 dnl = Enable timeline service, which provides lightweight
7796 dnl = instrumentation of mozilla for performance measurement.
7797 dnl = Timeline is off by default.
7798 dnl ========================================================
7799 MOZ_ARG_ENABLE_BOOL(timeline,
7800 [ --enable-timeline Enable timeline services ],
7803 if test -n "$MOZ_TIMELINE"; then
7804 AC_DEFINE(MOZ_TIMELINE)
7807 dnl ========================================================
7808 dnl = Enable NS_FUNCTION_TIMER, which provides Function
7809 dnl = timing for identifying code bottlenecks
7810 dnl = NS_FUNCTION_TIMER is off by default.
7811 dnl ========================================================
7812 MOZ_ARG_ENABLE_BOOL(functiontimer,
7813 [ --enable-functiontimer Enable NS_FUNCTION_TIMER ],
7814 NS_FUNCTION_TIMER=1,
7815 NS_FUNCTION_TIMER= )
7816 if test -n "$NS_FUNCTION_TIMER"; then
7817 AC_DEFINE(NS_FUNCTION_TIMER)
7820 dnl ========================================================
7821 dnl Turn on reflow counting
7822 dnl ========================================================
7823 MOZ_ARG_ENABLE_BOOL(reflow-perf,
7824 [ --enable-reflow-perf Enable reflow performance tracing],
7827 if test -n "$MOZ_REFLOW_PERF"; then
7828 AC_DEFINE(MOZ_REFLOW_PERF)
7831 dnl ========================================================
7832 dnl Enable code size metrics.
7833 dnl ========================================================
7834 MOZ_ARG_ENABLE_BOOL(codesighs,
7835 [ --enable-codesighs Enable code size analysis tools],
7836 _ENABLE_CODESIGHS=1,
7837 _ENABLE_CODESIGHS= )
7838 if test -n "$_ENABLE_CODESIGHS"; then
7839 if test -d $srcdir/tools/codesighs; then
7842 AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
7846 dnl ========================================================
7847 dnl = Support for Quantify (Windows)
7848 dnl ========================================================
7849 MOZ_ARG_ENABLE_BOOL(quantify,
7850 [ --enable-quantify Enable Quantify support (Windows only) ],
7854 dnl ========================================================
7855 dnl = Support for demangling undefined symbols
7856 dnl ========================================================
7857 if test -z "$SKIP_LIBRARY_CHECKS"; then
7860 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
7864 # Demangle only for debug or trace-malloc builds
7865 MOZ_DEMANGLE_SYMBOLS=
7866 if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
7867 MOZ_DEMANGLE_SYMBOLS=1
7868 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
7870 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
7872 dnl ========================================================
7873 dnl = Support for gcc stack unwinding (from gcc 3.3)
7874 dnl ========================================================
7875 if test "$HAVE_GCC3_ABI" -a -z "$SKIP_LIBRARY_CHECKS"; then
7876 AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
7879 dnl ========================================================
7883 dnl ========================================================
7884 MOZ_ARG_HEADER(Misc. Options)
7886 dnl ========================================================
7887 dnl update xterm title
7888 dnl ========================================================
7889 MOZ_ARG_ENABLE_BOOL(xterm-updates,
7890 [ --enable-xterm-updates Update XTERM titles with current command.],
7894 dnl =========================================================
7896 dnl =========================================================
7897 MOZ_ARG_ENABLE_STRING([chrome-format],
7898 [ --enable-chrome-format=jar|flat|both|symlink|omni
7899 Select FORMAT of chrome files (default=jar)],
7900 MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
7902 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
7903 MOZ_CHROME_FILE_FORMAT=jar
7906 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
7907 test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
7908 test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
7909 test "$MOZ_CHROME_FILE_FORMAT" != "both" &&
7910 test "$MOZ_CHROME_FILE_FORMAT" != "omni"; then
7911 AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, symlink, or omni])
7914 dnl =========================================================
7915 dnl Omnijar packaging (bug 552121)
7916 dnl =========================================================
7917 dnl Omnijar packaging is compatible with flat packaging.
7918 dnl In unpackaged builds, omnijar looks for files as if
7919 dnl things were flat packaged. After packaging, all files
7920 dnl are loaded from a single jar. MOZ_CHROME_FILE_FORMAT
7921 dnl is set to flat since putting files into jars is only
7922 dnl done during packaging with omnijar.
7923 if test "$MOZ_CHROME_FILE_FORMAT" = "omni"; then
7925 AC_DEFINE(MOZ_OMNIJAR)
7926 MOZ_CHROME_FILE_FORMAT=flat
7927 elif test "$MOZ_CHROME_FILE_FORMAT" = "jar"; then
7928 AC_DEFINE(MOZ_CHROME_FILE_FORMAT_JAR)
7931 AC_SUBST(MOZ_OMNIJAR)
7933 dnl ========================================================
7934 dnl = Define default location for MOZILLA_FIVE_HOME
7935 dnl ========================================================
7936 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
7937 [ --with-default-mozilla-five-home
7938 Set the default value for MOZILLA_FIVE_HOME],
7939 [ val=`echo $withval`
7940 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
7942 dnl ========================================================
7943 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
7944 dnl ========================================================
7945 MOZ_ARG_WITH_STRING(user-appdir,
7946 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
7947 [ val=`echo $withval`
7948 if echo "$val" | grep "\/" >/dev/null; then
7949 AC_MSG_ERROR("Homedir must be single relative path.")
7954 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
7956 dnl ========================================================
7957 dnl = Doxygen configuration
7958 dnl ========================================================
7959 dnl Use commas to specify multiple dirs to this arg
7960 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
7961 MOZ_ARG_WITH_STRING(doc-input-dirs,
7962 [ --with-doc-input-dirs=DIRS
7963 Header/idl dirs to create docs from],
7964 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7965 AC_SUBST(MOZ_DOC_INPUT_DIRS)
7967 dnl Use commas to specify multiple dirs to this arg
7968 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
7969 MOZ_ARG_WITH_STRING(doc-include-dirs,
7970 [ --with-doc-include-dirs=DIRS
7971 Include dirs to preprocess doc headers],
7972 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7973 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
7975 MOZ_DOC_OUTPUT_DIR='./dist/docs'
7976 MOZ_ARG_WITH_STRING(doc-output-dir,
7977 [ --with-doc-output-dir=DIR
7978 Dir to generate docs into],
7979 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
7980 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
7982 if test -z "$SKIP_COMPILER_CHECKS"; then
7983 dnl ========================================================
7985 dnl = Compiler Options
7987 dnl ========================================================
7988 MOZ_ARG_HEADER(Compiler Options)
7990 dnl ========================================================
7991 dnl Check for gcc -pipe support
7992 dnl ========================================================
7993 AC_MSG_CHECKING([for gcc -pipe support])
7994 if test -n "$GNU_CC" -a -n "$GNU_CXX" -a -n "$GNU_AS"; then
7995 echo '#include <stdio.h>' > dummy-hello.c
7996 echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
7997 ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
7998 cat dummy-hello.s 2> /dev/null | ${AS_BIN} -o dummy-hello.S - 2>&5
7999 if test $? = 0; then
8004 if test "$_res_as_stdin" = "yes"; then
8005 _SAVE_CFLAGS=$CFLAGS
8006 CFLAGS="$CFLAGS -pipe"
8007 AC_TRY_COMPILE( [ #include <stdio.h> ],
8008 [printf("Hello World\n");],
8009 [_res_gcc_pipe="yes"],
8010 [_res_gcc_pipe="no"] )
8011 CFLAGS=$_SAVE_CFLAGS
8013 if test "$_res_as_stdin" = "yes" -a "$_res_gcc_pipe" = "yes"; then
8015 CFLAGS="$CFLAGS -pipe"
8016 CXXFLAGS="$CXXFLAGS -pipe"
8020 rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
8021 AC_MSG_RESULT([$_res])
8026 dnl ========================================================
8027 dnl Profile guided optimization
8028 dnl ========================================================
8029 dnl Test for profiling options
8030 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
8032 dnl Provide a switch to disable PGO even when called via profiledbuild.
8033 MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
8034 [ --disable-profile-guided-optimization
8035 Don't build with PGO even if called via make profiledbuild],
8036 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
8037 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
8039 AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
8041 _SAVE_CFLAGS="$CFLAGS"
8042 CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
8044 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
8045 AC_TRY_COMPILE([], [return 0;],
8046 [ PROFILE_GEN_CFLAGS="-fprofile-generate"
8047 result="yes" ], result="no")
8048 AC_MSG_RESULT([$result])
8050 if test $result = "yes"; then
8051 PROFILE_GEN_LDFLAGS="-fprofile-generate"
8052 PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch -freorder-blocks-and-partition"
8053 PROFILE_USE_LDFLAGS="-fprofile-use"
8056 CFLAGS="$_SAVE_CFLAGS"
8058 if test -n "$INTEL_CC"; then
8059 PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
8060 PROFILE_GEN_LDFLAGS=
8061 PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
8062 PROFILE_USE_LDFLAGS=
8065 dnl Sun Studio on Solaris
8066 if test "$SOLARIS_SUNPRO_CC"; then
8067 PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
8068 PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
8069 PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
8070 PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
8073 AC_SUBST(PROFILE_GEN_CFLAGS)
8074 AC_SUBST(PROFILE_GEN_LDFLAGS)
8075 AC_SUBST(PROFILE_USE_CFLAGS)
8076 AC_SUBST(PROFILE_USE_LDFLAGS)
8080 dnl ========================================================
8081 dnl Test for -pedantic bustage
8082 dnl ========================================================
8083 MOZ_ARG_DISABLE_BOOL(pedantic,
8084 [ --disable-pedantic Issue all warnings demanded by strict ANSI C ],
8086 if test "$_PEDANTIC"; then
8087 _SAVE_CXXFLAGS=$CXXFLAGS
8088 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
8089 AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
8090 AC_TRY_COMPILE([$configure_static_assert_macros],
8091 [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
8092 result="no", result="yes" )
8093 AC_MSG_RESULT([$result])
8094 CXXFLAGS="$_SAVE_CXXFLAGS"
8098 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
8099 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
8102 AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic. Reconfigure using --disable-pedantic. ])
8107 dnl ========================================================
8108 dnl Test for correct temporary object destruction order
8109 dnl ========================================================
8110 dnl We want to make sure the compiler follows the C++ spec here as
8111 dnl xpcom and the string classes depend on it (bug 235381).
8112 AC_MSG_CHECKING([for correct temporary object destruction order])
8113 AC_TRY_RUN([ class A {
8114 public: A(int& x) : mValue(x) {}
8116 operator char**() { return 0; }
8117 private: int& mValue;
8119 void func(char **arg) {}
8130 result="yes", result="no", result="maybe")
8131 AC_MSG_RESULT([$result])
8133 if test "$result" = "no"; then
8134 AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
8137 dnl ========================================================
8138 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
8139 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
8140 dnl raw pointers in nsCOMPtr.h. (VC++ has the same bug.)
8141 dnl ========================================================
8142 _SAVE_CXXFLAGS=$CXXFLAGS
8143 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
8144 AC_CACHE_CHECK(for correct overload resolution with const and templates,
8145 ac_nscap_nonconst_opeq_bug,
8154 template <class T, class U>
8155 int operator==(const Pointer<T>& rhs, U* lhs)
8157 return rhs.myPtr == lhs;
8160 template <class T, class U>
8161 int operator==(const Pointer<T>& rhs, const U* lhs)
8163 return rhs.myPtr == lhs;
8171 ac_nscap_nonconst_opeq_bug="no",
8172 ac_nscap_nonconst_opeq_bug="yes")])
8173 CXXFLAGS="$_SAVE_CXXFLAGS"
8175 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
8176 AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
8178 fi # SKIP_COMPILER_CHECKS
8180 dnl ========================================================
8182 dnl Should be smarter and check that the compiler does indeed have rtti
8183 dnl ========================================================
8185 MOZ_ARG_ENABLE_BOOL(cpp-rtti,
8186 [ --enable-cpp-rtti Enable C++ RTTI ],
8187 [ _MOZ_USE_RTTI=1 ],
8190 if test "$_MOZ_USE_RTTI"; then
8191 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
8193 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
8196 AC_SUBST(_MOZ_RTTI_FLAGS_ON)
8198 dnl ========================================================
8199 dnl C++ exceptions (g++/VC/irix6/Sun only - for now)
8200 dnl Should be smarter and check that the compiler does indeed have exceptions
8201 dnl ========================================================
8202 MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
8203 [ --enable-cpp-exceptions Enable C++ exceptions ],
8204 [ _MOZ_CPP_EXCEPTIONS=1 ],
8205 [ _MOZ_CPP_EXCEPTIONS= ])
8207 if test "$_MOZ_CPP_EXCEPTIONS"; then
8208 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_ON
8209 AC_DEFINE(MOZ_CPP_EXCEPTIONS)
8211 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_OFF
8214 AC_SUBST(_MOZ_EXCEPTIONS_FLAGS_ON)
8216 # Irix & OSF native compilers do not like exception declarations
8217 # when exceptions are disabled
8218 if test -n "$MIPSPRO_CXX" -o -n "$COMPAQ_CXX" -o -n "$VACPP"; then
8219 AC_DEFINE(CPP_THROW_NEW, [])
8221 AC_DEFINE(CPP_THROW_NEW, [throw()])
8225 dnl ========================================================
8227 dnl = Build depencency options
8229 dnl ========================================================
8230 MOZ_ARG_HEADER(Build dependencies)
8232 dnl ========================================================
8233 dnl = Do not auto generate dependency info
8234 dnl ========================================================
8236 MOZ_ARG_DISABLE_BOOL(auto-deps,
8237 [ --disable-auto-deps Do not automatically generate dependency info],
8241 if test -n "$MOZ_AUTO_DEPS"; then
8242 dnl ========================================================
8243 dnl = Use mkdepend instead of $CC -MD for dependency generation
8244 dnl ========================================================
8246 MOZ_ARG_DISABLE_BOOL(md,
8247 [ --disable-md Do not use compiler-based dependencies ],
8250 [dnl Default is to turn on -MD if using GNU-compatible compilers
8251 if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
8254 dnl Default is to use -xM if using Sun Studio on Solaris
8255 if test "$SOLARIS_SUNPRO_CC"; then
8258 if test "$_cpp_md_flag"; then
8260 if test "$OS_ARCH" = "OpenVMS"; then
8261 _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(basename $(@F)).pp))'
8263 _DEPEND_CFLAGS='$(filter-out %/.pp,-MD -MF $(MDDEPDIR)/$(basename $(@F)).pp)'
8265 dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
8266 if test "$SOLARIS_SUNPRO_CC"; then
8271 dnl Don't override this for MSVC
8272 if test -z "$_WIN32_MSVC"; then
8273 _USE_CPP_INCLUDE_FLAG=
8274 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
8275 _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
8277 echo '#include <stdio.h>' > dummy-hello.c
8279 CL_INCLUDES_PREFIX=`"${CC}" -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/^\([^:]*:[^:]*:\).*stdio.h$/\1/p'`
8281 if test -z "$CL_INCLUDES_PREFIX"; then
8282 AC_MSG_ERROR([Cannot find cl -showIncludes prefix.])
8284 AC_SUBST(CL_INCLUDES_PREFIX)
8286 _topsrcdirwin=`cd \`dirname $0\`; pwd -W`
8287 dnl cl.py provides dependency generation for MSVC
8288 CC_WRAPPER="$PYTHON -O $_topsrcdirwin/build/cl.py"
8289 CXX_WRAPPER="$PYTHON -O $_topsrcdirwin/build/cl.py"
8295 AC_SUBST(MOZ_AUTO_DEPS)
8296 AC_SUBST(COMPILER_DEPEND)
8298 AC_SUBST(CC_WRAPPER)
8299 AC_SUBST(CXX_WRAPPER)
8302 dnl ========================================================
8304 dnl = Static Build Options
8306 dnl ========================================================
8307 MOZ_ARG_HEADER(Static build options)
8309 MOZ_ARG_ENABLE_BOOL(static,
8310 [ --enable-static Enable building of internal static libs],
8311 BUILD_STATIC_LIBS=1,
8314 MOZ_ARG_ENABLE_BOOL(libxul,
8315 [ --enable-libxul Enable building of libxul],
8316 MOZ_ENABLE_LIBXUL=1,
8319 # split JS out by default to avoid VS2005 PGO crash (bug 591836).
8320 if test "$OS_ARCH" = "WINNT"; then
8324 MOZ_ARG_ENABLE_BOOL(shared-js,
8325 [ --enable-shared-js
8326 Create a shared JavaScript library.],
8330 if test -z "$MOZ_ENABLE_LIBXUL"; then
8331 dnl --disable-libxul implies shared js
8335 if test -n "$ENABLE_SHARED_JS"; then
8337 MOZ_JS_LIBS=$MOZ_JS_SHARED_LIBS
8339 MOZ_JS_LIBS=$MOZ_JS_STATIC_LIBS
8340 AC_DEFINE(MOZ_STATIC_JS)
8342 AC_SUBST(JS_SHARED_LIBRARY)
8344 if test -n "$MOZ_STATIC_BUILD_UNSUPPORTED" -a -n "$BUILD_STATIC_LIBS"; then
8345 AC_MSG_ERROR([--enable-static is not supported for building $MOZ_APP_NAME. You probably want --enable-libxul.])
8348 if test -n "$MOZ_ENABLE_LIBXUL" -a -n "$BUILD_STATIC_LIBS"; then
8349 AC_MSG_ERROR([--enable-libxul is not compatible with --enable-static])
8352 if test -n "$MOZ_IPC" -a -z "$MOZ_ENABLE_LIBXUL"; then
8353 AC_MSG_ERROR([--enable-ipc requires --enable-libxul])
8356 if test -z "$MOZ_ENABLE_LIBXUL" -a -n "$MOZ_OMNIJAR"; then
8357 AC_MSG_ERROR([Omnijar packaging is incompatible with --disable-libxul. Please either --enable-libxul or --enable-chrome-format=jar|flat|symlink]);
8360 AC_SUBST(LIBXUL_LIBS)
8362 if test -n "$MOZ_ENABLE_LIBXUL"; then
8363 XPCOM_LIBS="$LIBXUL_LIBS"
8364 AC_DEFINE(MOZ_ENABLE_LIBXUL)
8366 if test -n "$BUILD_STATIC_LIBS"; then
8367 AC_DEFINE(MOZ_STATIC_BUILD)
8369 XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS"
8372 dnl ========================================================
8374 dnl = Standalone module options
8376 dnl ========================================================
8377 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
8379 dnl Check for GLib and libIDL.
8380 dnl ========================================================
8383 if test -z "$COMPILE_ENVIRONMENT"; then
8384 SKIP_IDL_CHECK="yes"
8387 dnl = Allow users to disable libIDL checking for standalone modules
8388 MOZ_ARG_WITHOUT_BOOL(libIDL,
8389 [ --without-libIDL Skip check for libIDL (standalone modules only)],
8390 SKIP_IDL_CHECK="yes")
8392 if test -z "$CROSS_COMPILE"; then
8393 if test -z "$HOST_LIBIDL_CONFIG"; then
8394 HOST_LIBIDL_CONFIG="$LIBIDL_CONFIG"
8396 if test -z "$HOST_LIBIDL_PREFIX"; then
8397 HOST_LIBIDL_PREFIX="$LIBIDL_PREFIX"
8401 if test "$SKIP_IDL_CHECK" = "no"
8405 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
8406 if test -n "$GLIB_PREFIX"; then
8407 _GLIB_PREFIX_DIR=`cd $GLIB_PREFIX && pwd -W`
8408 if test "$?" = "0"; then
8409 if test `echo ${PATH}: | grep -ic "$_GLIB_PREFIX_DIR/bin:"` = 0; then
8410 AC_MSG_ERROR([GLIB_PREFIX must be in your \$PATH.])
8412 _GLIB_PREFIX_DIR=`$CYGPATH_W $_GLIB_PREFIX_DIR | $CYGPATH_S`
8414 AC_MSG_ERROR([GLIB_PREFIX is set but "${GLIB_PREFIX}" is not a directory.])
8417 _GLIB_PREFIX_DIR=$MOZ_TOOLS_DIR
8419 if test ! -f "${_GLIB_PREFIX_DIR}/include/glib.h"; then
8420 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/include/glib.h .])
8422 GLIB_CFLAGS="-I${_GLIB_PREFIX_DIR}/include"
8423 if test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"; then
8424 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"
8425 elif test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"; then
8426 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"
8428 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/lib/glib-1.2.lib or $_GLIB_PREFIX_DIR/lib/glib-1.2_s.lib])
8431 if test -n "$HOST_LIBIDL_PREFIX"; then
8432 _LIBIDL_PREFIX_DIR=`cd $HOST_LIBIDL_PREFIX && pwd -W`
8433 if test "$?" = "0"; then
8434 if test `echo ${PATH}: | grep -ic "$_LIBIDL_PREFIX_DIR/bin:"` = 0; then
8435 AC_MSG_ERROR([LIBIDL_PREFIX must be in your \$PATH.])
8437 _LIBIDL_PREFIX_DIR=`$CYGPATH_W $_LIBIDL_PREFIX_DIR | $CYGPATH_S`
8439 AC_MSG_ERROR([LIBIDL_PREFIX is set but "${LIBIDL_PREFIX}" is not a directory.])
8442 _LIBIDL_PREFIX_DIR=$MOZ_TOOLS_DIR
8444 if test ! -f "${_LIBIDL_PREFIX_DIR}/include/libIDL/IDL.h"; then
8445 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/include/libIDL/IDL.h .])
8447 HOST_LIBIDL_CFLAGS="-I${_LIBIDL_PREFIX_DIR}/include ${GLIB_CFLAGS}"
8448 if test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"; then
8449 HOST_LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"
8451 elif test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"; then
8452 HOST_LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"
8454 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/lib/libidl-0.6.lib or $_LIBIDL_PREFIX_DIR/lib/libidl-0.6_s.lib])
8456 HOST_LIBIDL_LIBS="${HOST_LIBIDL_LIBS} ${GLIB_LIBS}"
8461 if test -z "$_LIBIDL_FOUND"; then
8462 if test "$MACOS_SDK_DIR"; then
8463 dnl xpidl, and therefore libIDL, is only needed on the build host.
8464 dnl Don't build it against the SDK, as that causes problems.
8465 _MACSAVE_CFLAGS="$CFLAGS"
8466 _MACSAVE_LIBS="$LIBS"
8467 _MACSAVE_LDFLAGS="$LDFLAGS"
8468 _MACSAVE_NEXT_ROOT="$NEXT_ROOT"
8470 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"`
8471 LIBS=`echo $LIBS|sed -e "s?-L${MACOS_SDK_DIR}/usr/lib[^ ]*??g"`
8472 LDFLAGS=`echo $LDFLAGS|sed -e "s?-Wl,-syslibroot,${MACOS_SDK_DIR}??g"`
8477 PKG_CHECK_MODULES(HOST_LIBIDL, libIDL-2.0 >= 0.8.0 glib-2.0 gobject-2.0, _LIBIDL_FOUND=1,_LIBIDL_FOUND=)
8480 dnl if no gtk/libIDL1 or gtk2/libIDL2 combination was found, fall back
8481 dnl to either libIDL1 or libIDL2.
8482 if test -z "$_LIBIDL_FOUND"; then
8483 AM_PATH_LIBIDL($LIBIDL_VERSION,_LIBIDL_FOUND=1)
8484 if test -z "$_LIBIDL_FOUND"; then
8485 PKG_CHECK_MODULES(HOST_LIBIDL, libIDL-2.0 >= 0.8.0,_LIBIDL_FOUND=1)
8489 dnl If we don't have a libIDL config program & not cross-compiling,
8490 dnl look for orbit-config instead.
8492 if test -z "$_LIBIDL_FOUND" -a -z "$CROSS_COMPILE"; then
8493 MOZ_PATH_PROGS(ORBIT_CONFIG, $ORBIT_CONFIG orbit-config)
8494 if test -n "$ORBIT_CONFIG"; then
8495 AC_MSG_CHECKING([for ORBit libIDL usability])
8496 _ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags`
8497 _ORBIT_LIBS=`${ORBIT_CONFIG} client --libs`
8498 _ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}`
8499 _ORBIT_LIB_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-L/); } }' -- ${_ORBIT_LIBS}`
8500 HOST_LIBIDL_CFLAGS="$_ORBIT_INC_PATH"
8501 HOST_LIBIDL_LIBS="$_ORBIT_LIB_PATH -lIDL -lglib"
8503 _SAVE_CFLAGS="$CFLAGS"
8505 CFLAGS="$HOST_LIBIDL_CFLAGS $CFLAGS"
8506 LIBS="$HOST_LIBIDL_LIBS $LIBS"
8509 #include <libIDL/IDL.h>
8512 s=strdup(IDL_get_libver_string());
8520 [HOST_LIBIDL_CFLAGS=
8525 AC_MSG_RESULT($result)
8526 CFLAGS="$_SAVE_CFLAGS"
8530 if test -z "$_LIBIDL_FOUND"; then
8531 AC_MSG_ERROR([libIDL not found.
8532 libIDL $LIBIDL_VERSION or higher is required.])
8534 if test "$MACOS_SDK_DIR"; then
8535 CFLAGS="$_MACSAVE_CFLAGS"
8536 LIBS="$_MACSAVE_LIBS"
8537 LDFLAGS="$_MACSAVE_LDFLAGS"
8538 if test -n "$_MACSAVE_NEXT_ROOT" ; then
8539 export NEXT_ROOT="$_MACSAVE_NEXT_ROOT"
8544 if test -n "$CROSS_COMPILE"; then
8546 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
8547 if test -n "$GLIB_PREFIX"; then
8548 GLIB_CFLAGS="-I${GLIB_PREFIX}/include"
8549 if test -f "${GLIB_PREFIX}/lib/glib-1.2_s.lib"; then
8550 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2_s.lib"
8551 elif test -f "${GLIB_PREFIX}/lib/glib-1.2.lib"; then
8552 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2.lib"
8554 AC_MSG_ERROR([Cannot find $GLIB_PREFIX/lib/glib-1.2.lib or $GLIB_PREFIX/lib/glib-1.2_s.lib])
8558 if test -n "$LIBIDL_PREFIX"; then
8559 LIBIDL_CFLAGS="-I${LIBIDL_PREFIX}/include ${GLIB_CFLAGS}"
8560 if test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"; then
8561 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"
8563 elif test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"; then
8564 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"
8566 AC_MSG_ERROR([Cannot find $LIBIDL_PREFIX/lib/libIDL-0.6.lib or $LIBIDL_PREFIX/lib/libIDL-0.6_s.lib])
8569 LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
8572 if test -n "LIBIDL_CONFIG" -a "LIBIDL_CONFIG" != "no"; then
8573 LIBIDL_CFLAGS=`${LIBIDL_CONFIG} --cflags`
8574 LIBIDL_LIBS=`${LIBIDL_CONFIG} --libs`
8579 LIBIDL_CFLAGS="$HOST_LIBIDL_CFLAGS"
8580 LIBIDL_LIBS="$HOST_LIBIDL_LIBS"
8583 if test -z "$SKIP_PATH_CHECKS"; then
8584 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
8585 if test "$MOZ_ENABLE_GTK2" -o "$USE_ELF_DYNSTR_GC" ; then
8586 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
8588 AM_PATH_GLIB(${GLIB_VERSION})
8593 if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then
8594 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
8597 AC_SUBST(LIBIDL_CFLAGS)
8598 AC_SUBST(LIBIDL_LIBS)
8599 AC_SUBST(STATIC_LIBIDL)
8600 AC_SUBST(GLIB_CFLAGS)
8602 AC_SUBST(GLIB_GMODULE_LIBS)
8603 AC_SUBST(HOST_LIBIDL_CONFIG)
8604 AC_SUBST(HOST_LIBIDL_CFLAGS)
8605 AC_SUBST(HOST_LIBIDL_LIBS)
8607 dnl ========================================================
8609 dnl ========================================================
8610 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
8613 MOZ_ARG_ENABLE_BOOL(system-cairo,
8614 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
8619 MOZ_ARG_ENABLE_BOOL(system-pixman,
8620 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
8624 # Check for headers defining standard int types.
8625 AC_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
8627 if test "$MOZ_TREE_CAIRO"; then
8628 AC_DEFINE(MOZ_TREE_CAIRO)
8630 # For now we assume that we will have a uint64_t available through
8631 # one of the above headers or mozstdint.h.
8632 AC_DEFINE(HAVE_UINT64_T)
8634 # Define macros for cairo-features.h
8635 if test "$MOZ_X11"; then
8636 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
8637 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
8638 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
8639 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8640 MOZ_ENABLE_CAIRO_FT=1
8641 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
8643 if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
8644 QT_SURFACE_FEATURE="#define CAIRO_HAS_QT_SURFACE 1"
8646 if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
8647 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
8648 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
8649 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
8651 if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
8652 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
8653 if test -z "$WINCE"; then
8654 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
8655 if test "$MOZ_WINSDK_TARGETVER" -ge "06010000"; then
8656 WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
8657 WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1"
8658 MOZ_ENABLE_D2D_SURFACE=1
8659 MOZ_ENABLE_DWRITE_FONT=1
8661 WIN32_DWRITE_FONT_FEATURE=
8662 WIN32_D2D_SURFACE_FEATURE=
8666 WIN32_DWRITE_FONT_FEATURE=
8667 WIN32_D2D_SURFACE_FEATURE=
8670 AC_CHECK_HEADER(d3d9.h, MOZ_ENABLE_D3D9_LAYER=1)
8672 dnl D3D10 Layers depend on D2D Surfaces.
8673 if test -n "$WIN32_D2D_SURFACE_FEATURE"; then
8674 AC_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
8678 if test "$MOZ_WIDGET_TOOLKIT" = "os2"; then
8679 OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
8680 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8681 MOZ_ENABLE_CAIRO_FT=1
8682 CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
8683 CAIRO_FT_LIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
8685 if test "$MOZ_WIDGET_TOOLKIT" = "beos"; then
8686 PKG_CHECK_MODULES(CAIRO_FT, fontconfig freetype2)
8687 BEOS_SURFACE_FEATURE="#define CAIRO_HAS_BEOS_SURFACE 1"
8688 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8689 MOZ_ENABLE_CAIRO_FT=1
8691 if test "$USE_FC_FREETYPE"; then
8692 FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
8694 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
8695 AC_SUBST(MOZ_ENABLE_DWRITE_FONT)
8696 AC_SUBST(MOZ_ENABLE_D2D_SURFACE)
8697 AC_SUBST(MOZ_ENABLE_D3D9_LAYER)
8698 AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
8699 AC_SUBST(CAIRO_FT_CFLAGS)
8702 if test "$MOZ_DEBUG"; then
8703 SANITY_CHECKING_FEATURE="#define CAIRO_DO_SANITY_CHECKING 1"
8705 SANITY_CHECKING_FEATURE="#undef CAIRO_DO_SANITY_CHECKING"
8708 PNG_FUNCTIONS_FEATURE="#define CAIRO_HAS_PNG_FUNCTIONS 1"
8710 AC_SUBST(PS_SURFACE_FEATURE)
8711 AC_SUBST(PDF_SURFACE_FEATURE)
8712 AC_SUBST(SVG_SURFACE_FEATURE)
8713 AC_SUBST(XLIB_SURFACE_FEATURE)
8714 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
8715 AC_SUBST(QUARTZ_SURFACE_FEATURE)
8716 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
8717 AC_SUBST(XCB_SURFACE_FEATURE)
8718 AC_SUBST(WIN32_SURFACE_FEATURE)
8719 AC_SUBST(OS2_SURFACE_FEATURE)
8720 AC_SUBST(BEOS_SURFACE_FEATURE)
8721 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
8722 AC_SUBST(FT_FONT_FEATURE)
8723 AC_SUBST(FC_FONT_FEATURE)
8724 AC_SUBST(WIN32_FONT_FEATURE)
8725 AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
8726 AC_SUBST(WIN32_D2D_SURFACE_FEATURE)
8727 AC_SUBST(QUARTZ_FONT_FEATURE)
8728 AC_SUBST(PNG_FUNCTIONS_FEATURE)
8729 AC_SUBST(QT_SURFACE_FEATURE)
8731 MOZ_CAIRO_LIBS='$(call EXPAND_LIBNAME_PATH,mozcairo,$(DEPTH)/gfx/cairo/cairo/src)'" $CAIRO_FT_LIBS"
8733 if test "$MOZ_TREE_PIXMAN"; then
8734 AC_DEFINE(MOZ_TREE_PIXMAN)
8735 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS"' $(call EXPAND_LIBNAME_PATH,mozlibpixman,$(DEPTH)/gfx/cairo/libpixman/src)'
8737 PKG_CHECK_MODULES(PIXMAN, pixman-1 >= 0.19.2)
8738 MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $PIXMAN_CFLAGS"
8739 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $PIXMAN_LIBS"
8742 if test "$MOZ_X11"; then
8743 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS -lXrender -lfreetype -lfontconfig"
8746 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
8747 mv -f $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig 2> /dev/null
8750 PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION pixman-1 freetype2 fontconfig)
8751 MOZ_CAIRO_CFLAGS=$CAIRO_CFLAGS
8752 MOZ_CAIRO_LIBS=$CAIRO_LIBS
8753 if test "$MOZ_X11"; then
8754 PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
8755 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
8756 MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
8760 AC_SUBST(MOZ_TREE_CAIRO)
8761 AC_SUBST(MOZ_CAIRO_CFLAGS)
8762 AC_SUBST(MOZ_CAIRO_LIBS)
8763 AC_SUBST(MOZ_TREE_PIXMAN)
8765 dnl ========================================================
8767 dnl ========================================================
8769 QCMS_LIBS='$(call EXPAND_LIBNAME_PATH,mozqcms,$(DEPTH)/gfx/qcms)'
8772 dnl ========================================================
8774 dnl ========================================================
8775 MOZ_HARFBUZZ_LIBS='$(DEPTH)/gfx/harfbuzz/src/$(LIB_PREFIX)mozharfbuzz.$(LIB_SUFFIX)'
8776 AC_SUBST(MOZ_HARFBUZZ_LIBS)
8778 dnl ========================================================
8780 dnl ========================================================
8781 MOZ_OTS_LIBS='$(DEPTH)/gfx/ots/src/$(LIB_PREFIX)mozots.$(LIB_SUFFIX)'
8782 AC_SUBST(MOZ_OTS_LIBS)
8784 dnl ========================================================
8786 dnl ========================================================
8787 MOZ_ARG_DISABLE_BOOL(xul,
8788 [ --disable-xul Disable XUL],
8790 if test "$MOZ_XUL"; then
8793 dnl remove extensions that require XUL
8794 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
8799 dnl ========================================================
8800 dnl disable profile locking
8801 dnl do no use this in applications that can have more than
8802 dnl one process accessing the profile directory.
8803 dnl ========================================================
8804 MOZ_ARG_DISABLE_BOOL(profilelocking,
8805 [ --disable-profilelocking
8806 Disable profile locking],
8807 MOZ_PROFILELOCKING=,
8808 MOZ_PROFILELOCKING=1 )
8809 if test "$MOZ_PROFILELOCKING"; then
8810 AC_DEFINE(MOZ_PROFILELOCKING)
8813 dnl ========================================================
8814 dnl disable rdf services
8815 dnl ========================================================
8816 MOZ_ARG_DISABLE_BOOL(rdf,
8817 [ --disable-rdf Disable RDF],
8819 if test "$MOZ_RDF"; then
8825 dnl ========================================================
8826 dnl necko configuration options
8827 dnl ========================================================
8830 dnl option to disable various necko protocols
8832 MOZ_ARG_ENABLE_STRING(necko-protocols,
8833 [ --enable-necko-protocols[={http,ftp,default,all,none}]
8834 Enable/disable specific protocol handlers],
8835 [ for option in `echo $enableval | sed 's/,/ /g'`; do
8836 if test "$option" = "yes" -o "$option" = "all"; then
8837 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8838 elif test "$option" = "no" -o "$option" = "none"; then
8840 elif test "$option" = "default"; then
8841 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8842 elif test `echo "$option" | grep -c \^-` != 0; then
8843 option=`echo $option | sed 's/^-//'`
8844 NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
8846 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
8849 NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
8851 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
8852 AC_SUBST(NECKO_PROTOCOLS)
8853 for p in $NECKO_PROTOCOLS; do
8854 AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
8858 dnl option to disable necko's disk cache
8860 MOZ_ARG_DISABLE_BOOL(necko-disk-cache,
8861 [ --disable-necko-disk-cache
8862 Disable necko disk cache],
8865 AC_SUBST(NECKO_DISK_CACHE)
8866 if test "$NECKO_DISK_CACHE"; then
8867 AC_DEFINE(NECKO_DISK_CACHE)
8871 dnl option to disable necko's wifi scanner
8873 MOZ_ARG_DISABLE_BOOL(necko-wifi,
8874 [ --disable-necko-wifi Disable necko wifi scanner],
8878 if test "$OS_ARCH" = "OS2"; then
8879 dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566
8882 if test "$NECKO_WIFI" -a \
8883 "$OS_ARCH" != "Linux" -a \
8884 "$OS_ARCH" != "Darwin" -a \
8885 "$OS_ARCH" != "SunOS" -a \
8886 "$OS_ARCH" != "WINNT" -a \
8887 "$OS_ARCH" != "WINCE"; then
8888 AC_MSG_ERROR([Necko WiFi scanning not supported on your platform, use --disable-necko-wifi])
8891 if test -z "$SKIP_LIBRARY_CHECKS" -a "$NECKO_WIFI" -a "$OS_ARCH" = "Linux"
8893 AC_CHECK_HEADER([iwlib.h])
8894 if test "$ac_cv_header_iwlib_h" != "yes"; then
8895 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])
8899 if test "$NECKO_WIFI"; then
8900 AC_DEFINE(NECKO_WIFI)
8902 AC_SUBST(NECKO_WIFI)
8905 dnl option to disable cookies
8907 MOZ_ARG_DISABLE_BOOL(cookies,
8908 [ --disable-cookies Disable cookie support],
8911 AC_SUBST(NECKO_COOKIES)
8912 if test "$NECKO_COOKIES"; then
8913 AC_DEFINE(NECKO_COOKIES)
8917 dnl Build jsctypes on the platforms we can, unless it's explicitly disabled.
8919 MOZ_ARG_DISABLE_BOOL(ctypes,
8920 [ --disable-ctypes Disable js-ctypes],
8923 AC_SUBST(BUILD_CTYPES)
8924 if test "$BUILD_CTYPES"; then
8925 if test "$OS_ARCH" = "WINCE" -a `echo $OS_TEST | grep -ic arm` = 1; then
8926 # Disable ctypes for arm/wince.
8929 AC_DEFINE(BUILD_CTYPES)
8933 dnl NECKO_ configuration options are not global
8934 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_"
8936 dnl Only build Mork if it's required
8938 if test "$MOZ_MORK"; then
8942 dnl Build the lightweight Mork reader if required
8943 AC_SUBST(MOZ_MORKREADER)
8944 if test "$MOZ_MORKREADER"; then
8945 AC_DEFINE(MOZ_MORKREADER)
8948 dnl Build Places if required
8949 if test "$MOZ_PLACES"; then
8950 AC_DEFINE(MOZ_PLACES)
8953 dnl Build Sync Services if required
8954 AC_SUBST(MOZ_SERVICES_SYNC)
8955 if test -n "$MOZ_SERVICES_SYNC"; then
8956 AC_DEFINE(MOZ_SERVICES_SYNC)
8959 dnl ========================================================
8960 if test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
8961 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
8964 if test "$MOZ_APP_COMPONENT_INCLUDE"; then
8965 AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_INCLUDE, "$MOZ_APP_COMPONENT_INCLUDE")
8968 dnl ========================================================
8970 dnl = Maintainer debug option (no --enable equivalent)
8972 dnl ========================================================
8977 AC_SUBST(AR_EXTRACT)
8981 AC_SUBST(AS_DASH_C_FLAG)
8989 AC_SUBST(NS_USE_NATIVE)
8990 AC_SUBST(MOZ_WIDGET_TOOLKIT)
8991 AC_SUBST(MOZ_UPDATE_XTERM)
8993 AC_SUBST(MOZ_PLATFORM_MAEMO)
8994 AC_SUBST(MOZ_AUTH_EXTENSION)
8995 AC_SUBST(MOZ_MATHML)
8996 AC_SUBST(MOZ_PERMISSIONS)
8998 AC_SUBST(MOZ_PREF_EXTENSIONS)
9001 AC_SUBST(MOZ_XSLT_STANDALONE)
9002 AC_SUBST(MOZ_JS_LIBS)
9005 AC_SUBST(MOZ_DEBUG_SYMBOLS)
9006 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
9007 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
9008 AC_SUBST(MOZ_DEBUG_FLAGS)
9009 AC_SUBST(MOZ_DEBUG_LDFLAGS)
9010 AC_SUBST(WARNINGS_AS_ERRORS)
9011 AC_SUBST(MOZ_EXTENSIONS)
9012 AC_SUBST(MOZ_JSDEBUGGER)
9013 AC_SUBST(MOZ_PLUGINS)
9014 AC_SUBST(MOZ_LOG_REFCNT)
9018 AC_SUBST(MOZ_CALLGRIND)
9020 AC_SUBST(MOZ_PROFILING)
9021 AC_SUBST(MOZ_JSLOADER)
9022 AC_SUBST(MOZ_USE_NATIVE_UCONV)
9023 AC_SUBST(MOZ_QUANTIFY)
9025 AC_SUBST(MOZ_PLACES)
9026 AC_SUBST(MOZ_PLACES_BOOKMARKS)
9027 AC_SUBST(MOZ_STORAGE)
9028 AC_SUBST(MOZ_TOOLKIT_SEARCH)
9030 AC_SUBST(NS_PRINTING)
9032 AC_SUBST(MOZ_HELP_VIEWER)
9034 AC_SUBST(MOZ_JAVAXPCOM)
9035 AC_SUBST(JAVA_INCLUDE_PATH)
9040 AC_SUBST(MOZ_PROFILELOCKING)
9043 AC_SUBST(MOZ_XIE_LIBS)
9045 AC_SUBST(BUILD_STATIC_LIBS)
9046 AC_SUBST(MOZ_ENABLE_LIBXUL)
9047 AC_SUBST(ENABLE_TESTS)
9049 AC_SUBST(MOZ_UNIVERSALCHARDET)
9050 AC_SUBST(ACCESSIBILITY)
9051 AC_SUBST(MOZ_VIEW_SOURCE)
9052 AC_SUBST(MOZ_SPELLCHECK)
9053 AC_SUBST(MOZ_USER_DIR)
9054 AC_SUBST(MOZ_CRASHREPORTER)
9055 AC_SUBST(MOZ_UPDATER)
9057 AC_SUBST(MOZ_DIRECTX_SDK_PATH)
9059 AC_SUBST(ENABLE_STRIP)
9060 AC_SUBST(PKG_SKIP_STRIP)
9061 AC_SUBST(USE_ELF_DYNSTR_GC)
9062 AC_SUBST(USE_ELF_HACK)
9063 AC_SUBST(INCREMENTAL_LINKER)
9064 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
9065 AC_SUBST(MOZ_JEMALLOC_STANDALONE_GLUE_LDOPTS)
9066 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
9068 AC_SUBST(MOZ_FIX_LINK_PATHS)
9069 AC_SUBST(XPCOM_LIBS)
9070 AC_SUBST(XPCOM_FROZEN_LDOPTS)
9071 AC_SUBST(XPCOM_GLUE_LDOPTS)
9072 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
9074 AC_SUBST(USE_DEPENDENT_LIBS)
9076 AC_SUBST(MOZ_BUILD_ROOT)
9077 AC_SUBST(MOZ_OS2_TOOLS)
9079 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
9080 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
9081 AC_SUBST(MOZ_TIMELINE)
9082 AC_SUBST(OGLES_SDK_DIR)
9084 AC_SUBST(MOZ_APP_NAME)
9085 AC_SUBST(MOZ_APP_DISPLAYNAME)
9086 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
9087 AC_SUBST(MOZ_APP_UA_NAME)
9088 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
9089 AC_SUBST(MOZ_APP_VERSION)
9090 AC_DEFINE_UNQUOTED(MOZ_UA_FIREFOX_VERSION, "$FIREFOX_VERSION")
9091 AC_SUBST(MOZ_UA_FIREFOX_VERSION)
9092 AC_SUBST(FIREFOX_VERSION)
9093 AC_DEFINE_UNQUOTED(MOZ_UA_BUILDID, "$MOZ_UA_BUILDID")
9094 AC_SUBST(MOZ_UA_BUILDID)
9096 AC_SUBST(MOZ_PKG_SPECIAL)
9098 AC_SUBST(MOZILLA_OFFICIAL)
9101 AC_SUBST(MOZ_MAPINFO)
9102 AC_SUBST(MOZ_BROWSE_INFO)
9103 AC_SUBST(MOZ_TOOLS_DIR)
9104 AC_SUBST(CYGWIN_WRAPPER)
9106 AC_SUBST(WIN32_REDIST_DIR)
9111 AC_SUBST(WINCE_SDK_DIR)
9112 AC_SUBST(WINCE_WINDOWS_MOBILE)
9114 dnl Echo the CFLAGS to remove extra whitespace.
9121 $_MOZ_EXCEPTIONS_FLAGS \
9122 $_WARNINGS_CXXFLAGS \
9125 COMPILE_CFLAGS=`echo \
9130 COMPILE_CXXFLAGS=`echo \
9131 $_DEFINES_CXXFLAGS \
9135 AC_SUBST(SYSTEM_MAKEDEPEND)
9136 AC_SUBST(SYSTEM_LIBXUL)
9137 AC_SUBST(SYSTEM_JPEG)
9138 AC_SUBST(SYSTEM_PNG)
9139 AC_SUBST(SYSTEM_ZLIB)
9140 AC_SUBST(SYSTEM_BZ2)
9142 AC_SUBST(JPEG_CFLAGS)
9144 AC_SUBST(ZLIB_CFLAGS)
9146 AC_SUBST(BZ2_CFLAGS)
9148 AC_SUBST(PNG_CFLAGS)
9151 AC_SUBST(MOZ_JPEG_CFLAGS)
9152 AC_SUBST(MOZ_JPEG_LIBS)
9153 AC_SUBST(MOZ_ZLIB_CFLAGS)
9154 AC_SUBST(MOZ_ZLIB_LIBS)
9155 AC_SUBST(MOZ_BZ2_CFLAGS)
9156 AC_SUBST(MOZ_BZ2_LIBS)
9157 AC_SUBST(MOZ_PNG_CFLAGS)
9158 AC_SUBST(MOZ_PNG_LIBS)
9160 AC_SUBST(NSPR_CFLAGS)
9162 AC_SUBST(MOZ_NATIVE_NSPR)
9164 AC_SUBST(NSS_CFLAGS)
9166 AC_SUBST(NSS_DEP_LIBS)
9167 AC_SUBST(MOZ_NATIVE_NSS)
9168 AC_SUBST(NSS_DISABLE_DBM)
9173 AC_SUBST(COMPILE_CFLAGS)
9174 AC_SUBST(COMPILE_CXXFLAGS)
9177 AC_SUBST(CROSS_COMPILE)
9178 AC_SUBST(WCHAR_CFLAGS)
9182 AC_SUBST(HOST_CFLAGS)
9183 AC_SUBST(HOST_CXXFLAGS)
9184 AC_SUBST(HOST_LDFLAGS)
9185 AC_SUBST(HOST_OPTIMIZE_FLAGS)
9187 AC_SUBST(HOST_AR_FLAGS)
9189 AC_SUBST(HOST_RANLIB)
9190 AC_SUBST(HOST_NSPR_MDCPUCFG)
9191 AC_SUBST(HOST_BIN_SUFFIX)
9192 AC_SUBST(HOST_OS_ARCH)
9194 AC_SUBST(TARGET_CPU)
9195 AC_SUBST(TARGET_VENDOR)
9197 AC_SUBST(TARGET_NSPR_MDCPUCFG)
9198 AC_SUBST(TARGET_MD_ARCH)
9199 AC_SUBST(TARGET_XPCOM_ABI)
9202 AC_SUBST(OS_RELEASE)
9205 AC_SUBST(INTEL_ARCHITECTURE)
9207 AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
9208 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
9210 AC_SUBST(WRAP_MALLOC_CFLAGS)
9211 AC_SUBST(WRAP_MALLOC_LIB)
9214 AC_SUBST(MKSHLIB_FORCE_ALL)
9215 AC_SUBST(MKSHLIB_UNFORCE_ALL)
9216 AC_SUBST(DSO_CFLAGS)
9217 AC_SUBST(DSO_PIC_CFLAGS)
9218 AC_SUBST(DSO_LDOPTS)
9219 AC_SUBST(LIB_PREFIX)
9220 AC_SUBST(DLL_PREFIX)
9221 AC_SUBST(DLL_SUFFIX)
9222 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
9223 AC_SUBST(LIB_SUFFIX)
9224 AC_SUBST(OBJ_SUFFIX)
9225 AC_SUBST(BIN_SUFFIX)
9226 AC_SUBST(ASM_SUFFIX)
9227 AC_SUBST(IMPORT_LIB_SUFFIX)
9229 AC_SUBST(CC_VERSION)
9230 AC_SUBST(CXX_VERSION)
9231 AC_SUBST(MSMANIFEST_TOOL)
9232 AC_SUBST(NS_ENABLE_TSF)
9233 AC_SUBST(MOZ_NSS_PATCH)
9234 AC_SUBST(MOZ_APP_COMPONENT_LIBS)
9235 AC_SUBST(MOZ_APP_EXTRA_LIBS)
9238 AC_SUBST(MOZ_SYDNEYAUDIO)
9240 AC_SUBST(MOZ_VORBIS)
9241 AC_SUBST(MOZ_TREMOR)
9244 AC_SUBST(MOZ_ALSA_LIBS)
9246 AC_SUBST(VPX_ASFLAGS)
9247 AC_SUBST(VPX_DASH_C_FLAG)
9248 AC_SUBST(VPX_AS_CONVERSION)
9249 AC_SUBST(VPX_ASM_SUFFIX)
9250 AC_SUBST(VPX_X86_ASM)
9251 AC_SUBST(VPX_ARM_ASM)
9253 if test "$USING_HCC"; then
9254 CC='${topsrcdir}/build/hcc'
9256 CXX='${topsrcdir}/build/hcpp'
9257 CXX="$CXX '$_OLDCXX'"
9262 AC_MSG_CHECKING([for posix_fallocate])
9263 AC_TRY_LINK([#define _XOPEN_SOURCE 600
9264 #include <fcntl.h>],
9265 [posix_fallocate(0, 0, 0);],
9266 [ac_cv___posix_fallocate=true],
9267 [ac_cv___posix_fallocate=false])
9269 if test "$ac_cv___posix_fallocate" = true ; then
9270 AC_DEFINE(HAVE_POSIX_FALLOCATE)
9276 dnl Check for missing components
9277 if test "$COMPILE_ENVIRONMENT"; then
9278 if test "$MOZ_X11"; then
9279 dnl ====================================================
9280 dnl = Check if X headers exist
9281 dnl ====================================================
9282 _SAVE_CFLAGS=$CFLAGS
9283 CFLAGS="$CFLAGS $XCFLAGS"
9287 #include <X11/Xlib.h>
9288 #include <X11/Intrinsic.h>
9292 if ((dpy = XOpenDisplay(NULL)) == NULL) {
9293 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
9297 [ AC_MSG_ERROR([Could not compile basic X program.]) ])
9298 CFLAGS="$_SAVE_CFLAGS"
9300 if test ! -z "$MISSING_X"; then
9301 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
9306 dnl Check for headers, etc. needed by WebGL.
9307 if test -n "$MOZ_WEBGL_GLX"; then
9308 AC_CHECK_HEADER(GL/glx.h)
9309 if test "$ac_cv_header_GL_glx_h" != "yes"; then
9310 AC_MSG_ERROR([Can't find header GL/glx.h for WebGL (install mesa-common-dev (Ubuntu), mesa-libGL-devel (Fedora), or Mesa (SuSE))])
9313 fi # COMPILE_ENVIRONMENT
9315 if test "$USE_FC_FREETYPE"; then
9316 if test "$COMPILE_ENVIRONMENT"; then
9317 _SAVE_CPPFLAGS="$CPPFLAGS"
9318 CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
9319 AC_CHECK_HEADERS(fontconfig/fcfreetype.h, ,
9320 [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)])
9321 CPPFLAGS="$_SAVE_CPPFLAGS"
9323 AC_DEFINE(HAVE_FONTCONFIG_FCFREETYPE_H)
9327 dnl Set various defines and substitutions
9328 dnl ========================================================
9330 if test "$OS_ARCH" = "BeOS"; then
9332 elif test "$OS_ARCH" = "Darwin"; then
9334 AC_DEFINE(UNIX_ASYNC_DNS)
9335 elif test "$OS_ARCH" = "OpenVMS"; then
9337 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
9339 AC_DEFINE(UNIX_ASYNC_DNS)
9342 if test "$MOZ_DEBUG"; then
9343 AC_DEFINE(MOZ_REFLOW_PERF)
9344 AC_DEFINE(MOZ_REFLOW_PERF_DSP)
9347 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
9348 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
9349 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
9350 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
9351 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
9352 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
9353 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
9354 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
9355 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
9358 dnl ========================================================
9359 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
9360 dnl ========================================================
9363 WIN_TOP_SRC=`cd $srcdir; pwd -W`
9366 HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
9367 HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
9368 CC="\$(CYGWIN_WRAPPER) $CC"
9369 CXX="\$(CYGWIN_WRAPPER) $CXX"
9370 CPP="\$(CYGWIN_WRAPPER) $CPP"
9371 LD="\$(CYGWIN_WRAPPER) $LD"
9372 AS="\$(CYGWIN_WRAPPER) $AS"
9373 RC="\$(CYGWIN_WRAPPER) $RC"
9374 MIDL="\$(CYGWIN_WRAPPER) $MIDL"
9375 CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
9376 WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
9380 AC_SUBST(CYGDRIVE_MOUNT)
9381 AC_SUBST(WIN_TOP_SRC)
9383 AC_SUBST(MOZILLA_VERSION)
9385 AC_SUBST(ac_configure_args)
9387 dnl Spit out some output
9388 dnl ========================================================
9390 dnl The following defines are used by xpcom
9391 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
9393 HAVE_CPP_2BYTE_WCHAR_T
9394 HAVE_CPP_ACCESS_CHANGING_USING
9395 HAVE_CPP_AMBIGUITY_RESOLVING_USING
9398 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
9400 HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
9401 HAVE_CPP_NAMESPACE_STD
9403 HAVE_CPP_PARTIAL_SPECIALIZATION
9404 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
9406 HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL
9408 NEED_CPP_UNUSED_IMPLEMENTATIONS
9412 HAVE_ICONV_WITH_CONST_INPUT
9420 netwerk/necko-config.h
9421 xpcom/xpcom-config.h
9422 xpcom/xpcom-private.h
9425 # Save the defines header file before autoconf removes it.
9426 # (Do not add AC_DEFINE calls after this line.)
9427 _CONFIG_TMP=confdefs-tmp.h
9428 _CONFIG_DEFS_H=mozilla-config.h
9430 cat > $_CONFIG_TMP <<\EOF
9431 /* List of defines generated by configure. Included with preprocessor flag,
9432 * -include, to avoid long list of -D defines on the compile command-line.
9436 #ifndef _MOZILLA_CONFIG_H_
9437 #define _MOZILLA_CONFIG_H_
9440 _EGREP_PATTERN='^#define ('
9441 if test -n "$_NON_GLOBAL_ACDEFINES"; then
9442 for f in $_NON_GLOBAL_ACDEFINES; do
9443 _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
9446 _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
9448 sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
9450 cat >> $_CONFIG_TMP <<\EOF
9452 #endif /* _MOZILLA_CONFIG_H_ */
9456 # Only write mozilla-config.h when something changes (or it doesn't exist)
9457 if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
9460 AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
9461 mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
9463 echo ==== $_CONFIG_DEFS_H =================================
9467 dnl Probably shouldn't call this manually but we always want the output of DEFS
9468 rm -f confdefs.h.save
9469 mv confdefs.h confdefs.h.save
9470 egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
9471 AC_OUTPUT_MAKE_DEFS()
9473 AC_SUBST(MOZ_DEFINES)
9475 mv confdefs.h.save confdefs.h
9477 dnl Load the list of Makefiles to generate.
9478 dnl To add new Makefiles, edit allmakefiles.sh.
9479 dnl allmakefiles.sh sets the variable, MAKEFILES.
9480 . ${srcdir}/allmakefiles.sh
9482 dnl Run a perl script to quickly create the makefiles.
9483 dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
9484 dnl for the files it cannot handle correctly. This way, config.status
9485 dnl will handle these files.
9486 dnl If it fails, nothing is set and config.status will run as usual.
9488 dnl This does not change the $MAKEFILES variable.
9490 dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
9492 if test -z "${AS_PERL}"; then
9493 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
9495 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
9500 echo $MAKEFILES > unallmakefiles
9502 mv -f config/autoconf.mk config/autoconf.mk.orig 2> /dev/null
9504 AC_OUTPUT($MAKEFILES)
9506 dnl Prevent the regeneration of cairo-features.h forcing rebuilds of gfx stuff
9507 if test "$CAIRO_FEATURES_H"; then
9508 if cmp -s $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig; then
9509 echo "$CAIRO_FEATURES_H is unchanged"
9510 mv -f "$CAIRO_FEATURES_H".orig "$CAIRO_FEATURES_H" 2> /dev/null
9512 rm -f "$CAIRO_FEATURES_H".orig 2> /dev/null
9516 # Run freetype configure script
9518 if test "$MOZ_TREE_FREETYPE"; then
9519 export CFLAGS="$CFLAGS -std=c99"
9520 export CPPFLAGS="$CPPFLAGS"
9521 export CXXFLAGS="$CXXFLAGS"
9522 export LDFLAGS="$LDFLAGS"
9523 export CONFIG_FILES="unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config freetype2.pc:freetype2.in"
9524 ac_configure_args="$ac_configure_args --host=$target --disable-shared --with-pic=yes"
9525 AC_OUTPUT_SUBDIRS(modules/freetype2)
9528 dnl ========================================================
9529 dnl = Setup a nice relatively clean build environment for
9530 dnl = sub-configures.
9531 dnl ========================================================
9534 CFLAGS="$_SUBDIR_CFLAGS"
9535 CPPFLAGS="$_SUBDIR_CPPFLAGS"
9536 CXXFLAGS="$_SUBDIR_CXXFLAGS"
9537 LDFLAGS="$_SUBDIR_LDFLAGS"
9538 HOST_CC="$_SUBDIR_HOST_CC"
9539 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9540 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9546 # No need to run subconfigures when building with LIBXUL_SDK_DIR
9547 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
9549 if test -n "$MOZ_THUMB2"; then
9550 _SUBDIR_CONFIG_ARGS="$_SUBDIR_CONFIG_ARGS --enable-thumb2"
9552 if test -n "$MOZ_ARM_ARCH"; then
9553 _SUBDIR_CONFIG_ARGS="$_SUBDIR_CONFIG_ARGS --with-cpu-arch=$MOZ_ARM_ARCH"
9555 if test -n "$_WRAP_MALLOC"; then
9556 _SUBDIR_CONFIG_ARGS="$_SUBDIR_CONFIG_ARGS --enable-wrap-malloc"
9559 if test -z "$MOZ_NATIVE_NSPR"; then
9560 ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
9561 if test -z "$MOZ_DEBUG"; then
9562 ac_configure_args="$ac_configure_args --disable-debug"
9564 if test "$MOZ_OPTIMIZE" = "1"; then
9565 ac_configure_args="$ac_configure_args --enable-optimize"
9567 if test "$OS_ARCH" = "WINNT" -a "$NS_TRACE_MALLOC"; then
9568 ac_configure_args="$ac_configure_args --enable-debug --disable-optimize"
9570 if test -n "$HAVE_64BIT_OS"; then
9571 ac_configure_args="$ac_configure_args --enable-64bit"
9573 if test -n "$USE_ARM_KUSER"; then
9574 ac_configure_args="$ac_configure_args --with-arm-kuser"
9576 AC_OUTPUT_SUBDIRS(nsprpub)
9577 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9580 if test -z "$MOZ_NATIVE_NSPR"; then
9581 # Hack to deal with the fact that we use NSPR_CFLAGS everywhere
9582 AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
9583 if test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
9584 NSPR_LIBS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --libdir=$LIBXUL_DIST/lib --libs`
9585 $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $NSPR_LIBS'" config/autoconf.mk
9586 NSPR_CFLAGS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --includedir=$LIBXUL_DIST/include/nspr --cflags`
9587 $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $NSPR_CFLAGS'" config/autoconf.mk
9589 rm -f config/autoconf.mk.bak
9592 # Run the SpiderMonkey 'configure' script.
9593 dist=$MOZ_BUILD_ROOT/dist
9594 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9595 ac_configure_args="$ac_configure_args --enable-threadsafe"
9596 if test "$BUILD_CTYPES"; then
9597 # Build js-ctypes on the platforms we can.
9598 ac_configure_args="$ac_configure_args --enable-ctypes"
9600 if test -z "$JS_SHARED_LIBRARY" ; then
9601 ac_configure_args="$ac_configure_args --disable-shared-js"
9603 if test -z "$MOZ_NATIVE_NSPR"; then
9604 ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
9605 ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
9607 ac_configure_args="$ac_configure_args --with-dist-dir=../../dist"
9608 ac_configure_args="$ac_configure_args --prefix=$dist"
9609 ac_configure_args="$ac_configure_args --with-sync-build-files=$_topsrcdir"
9610 if test "$MOZ_MEMORY"; then
9611 ac_configure_args="$ac_configure_args --enable-jemalloc"
9612 if test -n "$MOZ_MEMORY_LDFLAGS"; then
9613 export MOZ_MEMORY_LDFLAGS
9616 AC_OUTPUT_SUBDIRS(js/src)
9617 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9619 fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR
9621 dnl Prevent the regeneration of autoconf.mk forcing rebuilds of the world
9622 dnl Needs to be at the end to respect possible changes from NSPR configure
9623 if cmp -s config/autoconf.mk config/autoconf.mk.orig; then
9624 echo "config/autoconf.mk is unchanged"
9625 mv -f config/autoconf.mk.orig config/autoconf.mk 2> /dev/null
9627 rm -f config/autoconf.mk.orig 2> /dev/null