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 ========================================================
1567 dnl GNU specific defaults
1568 dnl ========================================================
1569 if test "$GNU_CC"; then
1570 # FIXME: Let us build with strict aliasing. bug 414641.
1571 CFLAGS="$CFLAGS -fno-strict-aliasing"
1572 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1573 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1574 DSO_LDOPTS='-shared'
1575 if test "$GCC_USE_GNU_LD"; then
1576 # Don't allow undefined symbols in libraries
1577 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1579 WARNINGS_AS_ERRORS='-Werror'
1581 DSO_PIC_CFLAGS='-fPIC'
1582 ASFLAGS="$ASFLAGS -fPIC"
1583 _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
1584 _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
1585 _MOZ_EXCEPTIONS_FLAGS_ON='-fexceptions'
1586 _MOZ_EXCEPTIONS_FLAGS_OFF='-fno-exceptions'
1588 # Turn on GNU specific features
1589 # -Wall - turn on all warnings
1590 # -pedantic - make compiler warn about non-ANSI stuff, and
1591 # be a little bit stricter
1592 # Warnings slamm took out for now (these were giving more noise than help):
1593 # -Wbad-function-cast - warns when casting a function to a new return type
1594 # -Wshadow - removed because it generates more noise than help --pete
1595 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
1596 if test -z "$INTEL_CC"; then
1597 # Don't use -Wcast-align with ICC
1599 # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1600 hppa | ia64 | sparc | arm)
1603 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1608 dnl Turn pedantic on but disable the warnings for long long
1611 if test -z "$INTEL_CC"; then
1612 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
1615 _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1616 _USE_CPP_INCLUDE_FLAG=1
1617 elif test "$SOLARIS_SUNPRO_CC"; then
1619 if test "$CPU_ARCH" = "sparc"; then
1620 # for Sun Studio on Solaris/SPARC
1621 DSO_PIC_CFLAGS='-xcode=pic32'
1623 DSO_PIC_CFLAGS='-KPIC'
1625 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1627 MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1628 MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1630 DSO_LDOPTS='-shared'
1631 if test "$GNU_LD"; then
1632 # Don't allow undefined symbols in libraries
1633 DSO_LDOPTS="$DSO_LDOPTS -z defs"
1637 DSO_PIC_CFLAGS='-KPIC'
1638 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1641 if test "$GNU_CXX"; then
1642 # FIXME: Let us build with strict aliasing. bug 414641.
1643 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
1644 # Turn on GNU specific features
1645 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
1646 if test -z "$INTEL_CC"; then
1647 # Don't use -Wcast-align with ICC
1649 # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1650 hppa | ia64 | sparc | arm)
1653 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1658 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1659 _USE_CPP_INCLUDE_FLAG=1
1661 AC_CACHE_CHECK(whether the compiler supports -Wno-invalid-offsetof,
1662 ac_has_wno_invalid_offsetof,
1666 _SAVE_CXXFLAGS="$CXXFLAGS"
1667 CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1670 ac_has_wno_invalid_offsetof="yes",
1671 ac_has_wno_invalid_offsetof="no")
1672 CXXFLAGS="$_SAVE_CXXFLAGS"
1675 if test "$ac_has_wno_invalid_offsetof" = "yes"; then
1676 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1679 AC_CACHE_CHECK(whether the compiler supports -Wno-variadic-macros,
1680 ac_has_wno_variadic_macros,
1684 _SAVE_CXXFLAGS="$CXXFLAGS"
1685 CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-variadic-macros"
1688 ac_has_wno_variadic_macros="yes",
1689 ac_has_wno_variadic_macros="no")
1690 CXXFLAGS="$_SAVE_CXXFLAGS"
1693 if test "$ac_has_wno_variadic_macros" = "yes"; then
1694 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-variadic-macros"
1697 AC_CACHE_CHECK(whether the compiler supports -Werror=return-type,
1698 ac_has_werror_return_type,
1702 _SAVE_CXXFLAGS="$CXXFLAGS"
1703 CXXFLAGS="$CXXFLAGS -Werror=return-type"
1706 ac_has_werror_return_type="yes",
1707 ac_has_werror_return_type="no")
1708 CXXFLAGS="$_SAVE_CXXFLAGS"
1711 if test "$ac_has_werror_return_type" = "yes"; then
1712 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Werror=return-type"
1716 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1719 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1720 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1721 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1722 dnl normal behavior.
1723 dnl ========================================================
1725 MKSHLIB_UNFORCE_ALL=
1727 if test "$COMPILE_ENVIRONMENT"; then
1728 if test "$GNU_CC"; then
1729 AC_MSG_CHECKING(whether ld has archive extraction flags)
1730 AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1731 [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1732 ac_cv_mkshlib_force_and_unforce="no"
1733 exec 3<&0 <<LOOP_INPUT
1734 force="-Wl,--whole-archive"; unforce="-Wl,--no-whole-archive"
1735 force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1736 force="-Wl,-all"; unforce="-Wl,-none"
1743 AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1746 LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1748 if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1752 eval $ac_cv_mkshlib_force_and_unforce
1753 MKSHLIB_FORCE_ALL=$force
1754 MKSHLIB_UNFORCE_ALL=$unforce
1757 fi # COMPILE_ENVIRONMENT
1759 dnl =================================================================
1760 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1761 dnl which is bad when cross compiling.
1762 dnl =================================================================
1763 if test "$COMPILE_ENVIRONMENT"; then
1764 configure_static_assert_macros='
1765 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1766 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1767 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1770 dnl test that the macros actually work:
1771 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1772 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1775 ac_cv_static_assertion_macros_work="yes"
1776 AC_TRY_COMPILE([$configure_static_assert_macros],
1777 [CONFIGURE_STATIC_ASSERT(1)],
1779 ac_cv_static_assertion_macros_work="no")
1780 AC_TRY_COMPILE([$configure_static_assert_macros],
1781 [CONFIGURE_STATIC_ASSERT(0)],
1782 ac_cv_static_assertion_macros_work="no",
1785 AC_TRY_COMPILE([$configure_static_assert_macros],
1786 [CONFIGURE_STATIC_ASSERT(1)],
1788 ac_cv_static_assertion_macros_work="no")
1789 AC_TRY_COMPILE([$configure_static_assert_macros],
1790 [CONFIGURE_STATIC_ASSERT(0)],
1791 ac_cv_static_assertion_macros_work="no",
1795 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1796 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1797 AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1799 fi # COMPILE_ENVIRONMENT
1801 dnl ========================================================
1802 dnl Checking for 64-bit OS
1803 dnl ========================================================
1804 if test "$COMPILE_ENVIRONMENT"; then
1807 AC_MSG_CHECKING(for 64-bit OS)
1808 AC_TRY_COMPILE([$configure_static_assert_macros],
1809 [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)],
1810 result="yes", result="no")
1811 AC_MSG_RESULT("$result")
1812 if test "$result" = "yes"; then
1813 AC_DEFINE(HAVE_64BIT_OS)
1816 AC_SUBST(HAVE_64BIT_OS)
1818 fi # COMPILE_ENVIRONMENT
1820 dnl ========================================================
1821 dnl Enable high-memory support on OS/2 by default.
1822 dnl ========================================================
1823 MOZ_OS2_HIGH_MEMORY=1
1824 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1825 [ --disable-os2-high-mem Disable high-memory support on OS/2],
1826 MOZ_OS2_HIGH_MEMORY=,
1827 MOZ_OS2_HIGH_MEMORY=1 )
1828 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1830 dnl ========================================================
1831 dnl = Use profiling compile flags
1832 dnl ========================================================
1833 MOZ_ARG_ENABLE_BOOL(profiling,
1834 [ --enable-profiling Set compile flags necessary for using sampling profilers (e.g. shark, perf)],
1838 dnl ========================================================
1839 dnl System overrides of the defaults for host
1840 dnl ========================================================
1843 HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
1844 HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
1845 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1848 *cygwin*|*mingw*|*mks*|*msvc*|*wince|*winmo)
1849 if test -n "$_WIN32_MSVC"; then
1851 HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1852 HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1853 HOST_RANLIB='echo ranlib'
1855 HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
1857 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
1858 HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1859 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1860 HOST_BIN_SUFFIX=.exe
1863 dnl MinGW/MSYS does not need CYGWIN_WRAPPER
1864 PERL="/bin/sh ${_topsrcdir}/build/msys-perl-wrapper"
1867 CYGWIN_WRAPPER="${srcdir}/build/cygwin-wrapper"
1868 if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
1870 CYGWIN_WRAPPER="${_pwd}/${srcdir}/build/cygwin-wrapper"
1872 if test "`${PERL} -v | grep -c cygwin 2>/dev/null`" = 0; then
1874 PERL="${CYGWIN_WRAPPER} $PERL"
1877 if test "`${PYTHON} -c 'import sys; print sys.platform;'`" != "cygwin"; then
1878 PYTHON="${CYGWIN_WRAPPER} $PYTHON"
1883 case "${host_cpu}" in
1885 HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
1891 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1892 HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1893 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1896 *-linux*|*-kfreebsd*-gnu|*-gnu*)
1897 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1898 HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1899 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1903 HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1904 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1905 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1906 HOST_BIN_SUFFIX=.exe
1911 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1912 HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
1913 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1917 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1918 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1922 dnl We require version 2.5 or newer of Python to build.
1923 AC_MSG_CHECKING([for Python version >= $PYTHON_VERSION but not 3.x])
1925 $PYTHON -c "import sys; sys.exit(sys.version[:3] < sys.argv[1] or sys.version[:2] != '2.')" $PYTHON_VERSION
1928 if test "$_python_res" != 0; then
1929 AC_MSG_ERROR([Python $PYTHON_VERSION or higher (but not Python 3.x) is required.])
1931 AC_MSG_RESULT([yes])
1933 dnl Get mozilla version from central milestone file
1934 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1936 dnl Get version of various core apps from the version files.
1937 FIREFOX_VERSION=`cat $topsrcdir/browser/config/version.txt`
1939 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1940 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1942 dnl ========================================================
1943 dnl System overrides of the defaults for target
1944 dnl ========================================================
1949 if test ! "$GNU_CC"; then
1950 if test ! "$HAVE_64BIT_OS"; then
1951 # Compiling with Visual Age C++ object model compat is the
1952 # default. To compile with object model ibm, add
1953 # AIX_OBJMODEL=ibm to .mozconfig.
1954 if test "$AIX_OBJMODEL" = "ibm"; then
1955 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1962 AC_SUBST(AIX_OBJMODEL)
1963 DSO_LDOPTS='-qmkshrobj=1'
1964 DSO_CFLAGS='-qflag=w:w'
1966 LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1967 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
1969 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1970 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1971 if test "$COMPILE_ENVIRONMENT"; then
1974 AC_MSG_CHECKING([for VisualAge C++ compiler version >= 6.0.0.3])
1976 [#if (__IBMCPP__ < 600)
1977 #error "Bad compiler"
1979 _BAD_COMPILER=,_BAD_COMPILER=1)
1980 if test -n "$_BAD_COMPILER"; then
1982 AC_MSG_ERROR([VisualAge C++ version 6.0.0.3 or higher is required to build.])
1984 AC_MSG_RESULT([yes])
1987 TARGET_COMPILER_ABI="ibmc"
1988 CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1989 CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1992 case "${target_os}" in
1997 if test "$COMPILE_ENVIRONMENT"; then
1998 AC_CHECK_HEADERS(sys/inttypes.h)
2000 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2005 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
2006 _PLATFORM_DEFAULT_TOOLKIT="cairo-beos"
2007 DSO_LDOPTS='-nostart'
2008 TK_LIBS='-lbe -lroot'
2010 if test "$COMPILE_ENVIRONMENT"; then
2011 AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
2012 AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
2014 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
2015 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
2018 MOZ_USER_DIR="Mozilla"
2022 dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
2031 _WARNINGS_CFLAGS="-Wall"
2032 _WARNINGS_CXXFLAGS="-Wall"
2033 # The test above doesn't work properly, at least on 3.1.
2034 MKSHLIB_FORCE_ALL=''
2035 MKSHLIB_UNFORCE_ALL=''
2041 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2042 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2043 # If we're building with --enable-profiling, we need a frame pointer.
2044 if test -z "$MOZ_PROFILING"; then
2045 MOZ_OPTIMIZE_FLAGS="-O3 -fomit-frame-pointer"
2047 MOZ_OPTIMIZE_FLAGS="-O3 -fno-omit-frame-pointer"
2050 CFLAGS="$CFLAGS -fpascal-strings -fno-common"
2051 CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
2054 STRIP="$STRIP -x -S"
2055 _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
2056 TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
2057 # The ExceptionHandling framework is needed for Objective-C exception
2058 # logging code in nsObjCExceptions.h. Currently we only use that in debug
2060 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"
2062 dnl DTrace and -dead_strip don't interact well. See bug 403132.
2063 dnl ===================================================================
2064 if test "x$enable_dtrace" = "xyes"; then
2065 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
2067 dnl check for the presence of the -dead_strip linker flag
2068 AC_MSG_CHECKING([for -dead_strip option to ld])
2069 _SAVE_LDFLAGS=$LDFLAGS
2070 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
2071 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
2072 if test -n "$_HAVE_DEAD_STRIP" ; then
2073 AC_MSG_RESULT([yes])
2074 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
2079 LDFLAGS=$_SAVE_LDFLAGS
2081 MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
2085 if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` != "elf"; then
2086 DLL_SUFFIX=".so.1.0"
2087 DSO_LDOPTS="-shared"
2089 if test ! "$GNU_CC"; then
2090 DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
2096 if test ! "$GNU_CC"; then
2100 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@'
2101 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@'
2102 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2105 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2106 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2110 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2111 AC_DEFINE(_LARGEFILE64_SOURCE)
2116 if test ! "$GNU_CC"; then
2117 DSO_LDOPTS='-b -Wl,+s'
2120 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
2121 MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
2122 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2124 DSO_LDOPTS='-b -E +s'
2125 MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2126 MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2128 MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
2129 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2134 DSO_LDOPTS='-elf -shared'
2136 if test "$GNU_CC"; then
2137 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2138 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2139 MKSHLIB_FORCE_ALL='-Wl,-all'
2140 MKSHLIB_UNFORCE_ALL='-Wl,-none'
2141 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
2143 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2144 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2145 MKSHLIB_FORCE_ALL='-all'
2146 MKSHLIB_UNFORCE_ALL='-none'
2152 dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must*
2153 dnl compile and link using -n32
2155 TARGET_COMPILER_ABI=n32
2156 DSO_LDOPTS='-elf -shared'
2157 MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2158 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2159 _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
2160 _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
2161 if test "$GNU_CC"; then
2162 MKSHLIB_FORCE_ALL='-Wl,-all'
2163 MKSHLIB_UNFORCE_ALL='-Wl,-none'
2164 _WARNINGS_CFLAGS="-Wall"
2165 _WARNINGS_CXXFLAGS="-Wall"
2166 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
2168 MKSHLIB_FORCE_ALL='-all'
2169 MKSHLIB_UNFORCE_ALL='-none'
2175 CFLAGS="$CFLAGS -woff 3262 -G 4"
2176 CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
2177 if test -n "$USE_N32"; then
2178 ASFLAGS="$ASFLAGS -n32"
2179 CFLAGS="$CFLAGS -n32"
2180 CXXFLAGS="$CXXFLAGS -n32"
2181 LDFLAGS="$LDFLAGS -n32"
2183 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2184 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
2187 if test -z "$GNU_CXX"; then
2193 # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
2194 # Similarly for GNU_CXX and INTEL_CXX.
2195 if test "$INTEL_CC" -o "$INTEL_CXX"; then
2196 # -Os has been broken on Intel's C/C++ compilers for quite a
2197 # while; Intel recommends against using it.
2198 MOZ_OPTIMIZE_FLAGS="-O2"
2199 MOZ_DEBUG_FLAGS="-g"
2200 elif test "$GNU_CC" -o "$GNU_CXX"; then
2201 GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
2202 case $GCC_VERSION in
2204 # -Os is broken on gcc 4.1.x 4.2.x, 4.5.x we need to tweak it to get good results.
2205 MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
2207 # If we're building with --enable-profiling, we need a frame pointer.
2208 if test -z "$MOZ_PROFILING"; then
2209 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fomit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK"
2211 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-omit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK"
2213 MOZ_DEBUG_FLAGS="-g"
2216 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2220 case "${target_cpu}" in
2222 CFLAGS="$CFLAGS -mieee"
2223 CXXFLAGS="$CXXFLAGS -mieee"
2229 MOZ_DEBUG_FLAGS="-g" # We want inlining
2235 TARGET_COMPILER_ABI=msvc
2236 _PLATFORM_DEFAULT_TOOLKIT=cairo-windows
2237 MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2238 MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2240 AR_EXTRACT="$AR -extract"
2242 AR_FLAGS='-OUT:"$@"'
2246 ac_configure_args="$ac_configure_args --enable-win32-target=WINCE"
2248 if test "$AS_BIN"; then
2255 if test -z "$RC"; then
2258 # certain versions of cygwin's makedepend barf on the
2259 # #include <string> vs -I./dist/include/string issue so don't use it
2265 HOST_AR='lib -OUT:$@'
2266 HOST_RANLIB='echo ranlib'
2267 HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
2270 WARNINGS_AS_ERRORS='-WX'
2271 MOZ_OPTIMIZE_FLAGS='-Ox'
2272 AR_FLAGS='-NOLOGO -OUT:"$@"'
2274 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2275 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2278 DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
2279 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2281 IMPORT_LIB_SUFFIX=lib
2282 dnl Need to force-link against mozalloc because it's used in the shunt
2283 LIBS="$LIBS \$(LIBXUL_DIST)/lib/mozalloc.lib"
2284 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2287 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
2288 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
2290 MKSHLIB_UNFORCE_ALL=
2291 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2292 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2293 MOZ_DEBUG_FLAGS='-Zi'
2294 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2296 MOZ_JS_STATIC_LIBS='$(LIBXUL_DIST)/lib/js_static.lib'
2297 MOZ_JS_SHARED_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2299 RANLIB='echo not_ranlib'
2300 STRIP='echo not_strip'
2301 TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
2304 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2308 AC_DEFINE(HAVE_SNPRINTF)
2313 AC_DEFINE(HW_THREADS)
2314 AC_DEFINE(STDC_HEADERS)
2315 AC_DEFINE(NEW_H, <new>)
2316 AC_DEFINE(WIN32_LEAN_AND_MEAN)
2317 AC_DEFINE(HAVE_LOCALTIME_R)
2319 TARGET_MD_ARCH=win32
2320 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2322 MOZ_USER_DIR="Mozilla"
2324 MOZ_GFX_OPTIMIZE_MOBILE=1
2326 # Sanity check for WINCE_WINDOWS_MOBILE
2327 # XXX disabled until we can fix the mobile tinderbox
2328 ##if test "$WINCE_WINDOWS_MOBILE"; then
2329 ## AC_CHECK_HEADER(tpcshell.h, [],
2330 ## AC_MSG_ERROR([Can't find tpcshell.h in your SDK; are you sure you don't need --disable-windows-mobile-components?]))
2335 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2340 # certain versions of cygwin's makedepend barf on the
2341 # #include <string> vs -I./dist/include/string issue so don't use it
2343 if test -n "$GNU_CC"; then
2344 CC="$CC -mno-cygwin"
2345 CXX="$CXX -mno-cygwin"
2346 CPP="$CPP -mno-cygwin"
2347 CFLAGS="$CFLAGS -mms-bitfields"
2348 CXXFLAGS="$CXXFLAGS -mms-bitfields"
2349 DSO_LDOPTS='-shared'
2350 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
2351 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2353 # Use temp file for windres (bug 213281)
2354 RCFLAGS='-O coff --use-temp-file'
2355 # mingw doesn't require kernel32, user32, and advapi32 explicitly
2356 LIBS="$LIBS -luuid -lgdi32 -lwinmm -lwsock32"
2357 MOZ_JS_STATIC_LIBS='-L$(LIBXUL_DIST)/bin -ljs_static'
2358 MOZ_JS_SHARED_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs'
2360 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core -lmozalloc'
2361 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom -lmozalloc'
2363 IMPORT_LIB_SUFFIX=dll.a
2364 GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
2366 TARGET_COMPILER_ABI=msvc
2370 if test "$AS_BIN"; then
2371 AS="$(basename "$AS_BIN")"
2373 AR='lib -NOLOGO -OUT:"$@"'
2375 RANLIB='echo not_ranlib'
2376 STRIP='echo not_strip'
2382 GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
2388 IMPORT_LIB_SUFFIX=lib
2389 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2390 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2392 MKSHLIB_UNFORCE_ALL=
2393 DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2394 _USE_CPP_INCLUDE_FLAG=1
2395 _DEFINES_CFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2396 _DEFINES_CXXFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2397 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2398 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2399 CXXFLAGS="$CXXFLAGS -wd4800" # disable warning "forcing value to bool"
2400 LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
2401 MOZ_DEBUG_FLAGS='-Zi'
2402 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2403 WARNINGS_AS_ERRORS='-WX'
2404 # If we're building with --enable-profiling, we need -Oy-, which forces a frame pointer.
2405 if test -z "$MOZ_PROFILING"; then
2406 MOZ_OPTIMIZE_FLAGS='-O1'
2408 MOZ_OPTIMIZE_FLAGS='-O1 -Oy-'
2410 MOZ_JS_STATIC_LIBS='$(LIBXUL_DIST)/lib/js_static.lib'
2411 MOZ_JS_SHARED_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2413 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2414 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2415 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2416 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2417 if test $_MSC_VER -ge 1400; then
2418 LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE -NXCOMPAT"
2419 dnl For profile-guided optimization
2420 PROFILE_GEN_CFLAGS="-GL"
2421 PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2422 dnl XXX: PGO builds can fail with warnings treated as errors,
2423 dnl specifically "no profile data available" appears to be
2424 dnl treated as an error sometimes. This might be a consequence
2425 dnl of using WARNINGS_AS_ERRORS in some modules, combined
2426 dnl with the linker doing most of the work in the whole-program
2427 dnl optimization/PGO case. I think it's probably a compiler bug,
2428 dnl but we work around it here.
2429 PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2430 dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2431 dnl Probably also a compiler bug, but what can you do?
2432 PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2433 LDFLAGS="$LDFLAGS -DYNAMICBASE"
2436 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,jpeg32$(VERSION_NUMBER),$(DEPTH)/jpeg)'
2437 MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,png,$(DEPTH)/modules/libimg/png)'
2438 AC_DEFINE(HAVE_SNPRINTF)
2443 AC_DEFINE(HW_THREADS)
2444 AC_DEFINE(STDC_HEADERS)
2445 AC_DEFINE(NEW_H, <new>)
2446 AC_DEFINE(WIN32_LEAN_AND_MEAN)
2447 TARGET_MD_ARCH=win32
2448 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2450 MOZ_USER_DIR="Mozilla"
2452 dnl Hardcode to win95 for now - cls
2453 TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2455 dnl set NO_X11 defines here as the general check is skipped on win32
2459 dnl MinGW/MSYS doesn't provide or need cygpath
2464 MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2466 *-cygwin*|*-msvc*|*-mks*)
2467 CYGPATH_W="cygpath -a -w"
2468 CYGPATH_S="sed -e s|\\\\|/|g"
2469 MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
2473 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2475 if test -z "$MOZ_TOOLS"; then
2476 AC_MSG_ERROR([MOZ_TOOLS is not set])
2479 MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2480 if test "$?" != "0" -o -z "$MOZ_TOOLS_DIR"; then
2481 AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2483 MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
2484 if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
2485 AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2487 MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
2494 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.])
2498 AC_CHECK_HEADERS(oleacc.idl)
2502 AC_CHECK_HEADERS(atlbase.h)
2509 if test "$HAVE_64BIT_OS"; then
2510 AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
2513 if test $_MSC_VER -ge 1400; then
2514 LDFLAGS="$LDFLAGS -SAFESEH"
2516 AC_CHECK_HEADERS(mmintrin.h)
2529 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2533 if test "$HAVE_64BIT_OS"; then
2540 CFLAGS="$CFLAGS -Dunix"
2541 CXXFLAGS="$CXXFLAGS -Dunix"
2542 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2544 DSO_PIC_CFLAGS='-fPIC -DPIC'
2545 DSO_LDOPTS='-shared'
2546 BIN_FLAGS='-Wl,--export-dynamic'
2548 DSO_PIC_CFLAGS='-fPIC -DPIC'
2549 DLL_SUFFIX=".so.1.0"
2550 DSO_LDOPTS='-shared'
2552 # This will fail on a.out systems prior to 1.5.1_ALPHA.
2553 MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2554 MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2555 if test "$LIBRUNPATH"; then
2556 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2558 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2559 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2564 AC_DEFINE(_QNX_SOURCE)
2567 WARNINGS_AS_ERRORS=''
2568 MOZ_OPTIMIZE_FLAGS="-O"
2569 MOZ_DEBUG_FLAGS="-gstabs"
2572 LIBS="$LIBS -lsocket -lstdc++"
2573 _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
2574 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h -D_POSIX_C_SOURCE=199506'
2575 if test "$with_x" != "yes"
2577 _PLATFORM_DEFAULT_TOOLKIT="photon"
2578 TK_CFLAGS='-I/usr/include/photon'
2581 case "${target_cpu}" in
2583 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
2586 case "${host_cpu}" in
2594 DLL_SUFFIX=".so.1.0"
2596 DSO_PIC_CFLAGS='-fPIC'
2597 DSO_LDOPTS='-shared -fPIC'
2598 if test "$LIBRUNPATH"; then
2599 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2604 AC_DEFINE(NO_PW_GECOS)
2605 AC_DEFINE(NO_UDSOCK)
2606 AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
2608 MKSHLIB_FORCE_ALL='-all'
2609 MKSHLIB_UNFORCE_ALL='-none'
2611 AS_DASH_C_FLAG='-Wc/names=as_is'
2613 DSO_LDOPTS='-shared -auto_symvec'
2615 MOZ_DEBUG_LDFLAGS='-g'
2617 CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
2618 CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
2623 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2624 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2627 AC_DEFINE(OS2EMX_PLAIN_CHAR)
2628 AC_DEFINE(TCPV40HDRS)
2634 IMPORT_LIB_SUFFIX=lib
2638 CFLAGS="$CFLAGS -Zomf"
2639 CXXFLAGS="$CXXFLAGS -Zomf"
2641 BIN_FLAGS='-Zlinker /ST:0x100000'
2645 WARNINGS_AS_ERRORS='-Werror'
2646 MOZ_DEBUG_FLAGS="-g -fno-inline"
2647 MOZ_OPTIMIZE_FLAGS="-O2"
2648 MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2649 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2650 LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2652 _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2655 MOZ_USER_DIR="Mozilla"
2657 if test "$MOZTOOLS"; then
2658 MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2660 AC_MSG_ERROR([MOZTOOLS is not set])
2662 if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2663 DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2664 LDFLAGS="$LDFLAGS -Zhigh-mem"
2665 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2666 AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2669 # GCC for OS/2 currently predefines these, but we don't want them
2670 _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2671 _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2673 AC_CACHE_CHECK(for __declspec(dllexport),
2675 [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2677 ac_os2_declspec="yes",
2678 ac_os2_declspec="no")])
2679 if test "$ac_os2_declspec" != "yes"; then
2680 AC_MSG_ERROR([Compiler does not support __declspec(dllexport), install GCC-4.3.2 or newer])
2685 if test "$GNU_CC"; then
2686 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2687 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2690 MOZ_DEBUG_FLAGS='-g'
2691 ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
2692 CFLAGS="$CFLAGS -ieee"
2693 CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee -ptr $(DIST)/cxx_repository'
2694 DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
2697 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2698 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2699 MKSHLIB_FORCE_ALL='-all'
2700 MKSHLIB_UNFORCE_ALL='-none'
2701 dnl Might fix the libxpcom.so breakage on this platform as well....
2702 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2703 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2705 if test -z "$GNU_CXX"; then
2708 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2712 DIRENT_INO=d_stat.st_ino
2713 dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
2714 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2715 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2716 dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
2717 AC_DEFINE(STDC_HEADERS)
2718 if test "$no_x" = "yes"; then
2719 _PLATFORM_DEFAULT_TOOLKIT='photon'
2720 TK_CFLAGS='-I/usr/nto/include/photon'
2721 TK_LIBS='-lphoton -lphrender'
2726 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2727 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2728 CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
2729 if test ! "$GNU_CC"; then
2736 TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2739 # $ORIGIN/.. is for shared libraries under components/ to locate shared
2740 # libraries one level up (e.g. libnspr4.so)
2741 if test "$SOLARIS_SUNPRO_CC"; then
2742 LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..' -z lazyload -z combreloc -z muldefs"
2743 LIBS="-lCrun -lCstd -lc $LIBS"
2745 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2746 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__"
2747 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions -norunpath -D__FUNCTION__=__func__ -template=no%extdef"
2748 _MOZ_EXCEPTIONS_FLAGS_ON='-features=except'
2749 _MOZ_EXCEPTIONS_FLAGS_OFF='-features=no%except'
2750 LDFLAGS="-xildoff $LDFLAGS"
2751 if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then
2752 _SAVE_LDFLAGS=$LDFLAGS
2753 LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2754 AC_TRY_LINK([#include <stdio.h>],
2755 [printf("Hello World\n");],
2757 [LDFLAGS=$_SAVE_LDFLAGS])
2759 WARNINGS_AS_ERRORS='-Werror'
2760 MOZ_OPTIMIZE_FLAGS="-xO4"
2761 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2762 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2763 MKSHLIB_FORCE_ALL='-z allextract'
2764 MKSHLIB_UNFORCE_ALL='-z defaultextract'
2771 AS='/usr/ccs/bin/as'
2772 ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2774 TARGET_COMPILER_ABI="sunc"
2775 CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2776 CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2777 AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
2781 [#if (__SUNPRO_CC < 0x590)
2784 _BAD_COMPILER=,_BAD_COMPILER=1)
2785 if test -n "$_BAD_COMPILER"; then
2787 AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
2792 [#if (__SUNPRO_CC >= 0x5100)
2793 #error "Sun C++ 5.10 or above"
2795 _ABOVE_SS12U1=,_ABOVE_SS12U1=1)
2796 if test "$_ABOVE_SS12U1"; then
2798 CXXFLAGS="$CXXFLAGS -xannotate=no"
2800 AC_MSG_RESULT([$_res])
2803 LDFLAGS="$LDFLAGS -Wl,-z,ignore -Wl,-R,'\$\$ORIGIN:\$\$ORIGIN/..' -Wl,-z,lazyload -Wl,-z,combreloc -Wl,-z,muldefs"
2805 MKSHLIB_FORCE_ALL='-Wl,-z -Wl,allextract'
2806 MKSHLIB_UNFORCE_ALL='-Wl,-z -Wl,defaultextract'
2807 ASFLAGS="$ASFLAGS -fPIC"
2808 DSO_LDOPTS='-shared'
2810 _WARNINGS_CXXFLAGS=''
2811 if test "$OS_RELEASE" = "5.3"; then
2812 AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2815 if test "$OS_RELEASE" = "5.5.1"; then
2816 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2821 DSO_LDOPTS='-Bdynamic'
2822 MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2823 MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2825 AC_DEFINE(SPRINTF_RETURNS_STRING)
2826 case "$(target_os)" in
2828 DLL_SUFFIX='.so.1.0'
2834 NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2838 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2842 AC_DEFINE(NO_PW_GECOS)
2844 _PLATFORM_DEFAULT_TOOLKIT=cairo-android
2845 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2847 MOZ_GFX_OPTIMIZE_MOBILE=1
2848 # If we're building with --enable-profiling, we need a frame pointer.
2849 if test -z "$MOZ_PROFILING"; then
2850 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions -fomit-frame-pointer"
2852 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions -fno-omit-frame-pointer"
2858 dnl Only one oddball right now (QNX), but this gives us flexibility
2859 dnl if any other platforms need to override this in the future.
2860 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2862 dnl ========================================================
2863 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2864 dnl by now will not have any way to link most binaries (tests
2865 dnl as well as viewer, apprunner, etc.), because some symbols
2866 dnl will be left out of the "composite" .so's by ld as unneeded.
2867 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2868 dnl they can link in the static libs that provide the missing
2870 dnl ========================================================
2871 NO_LD_ARCHIVE_FLAGS=
2872 if test -z "$MKSHLIB_FORCE_ALL" -o -z "$MKSHLIB_UNFORCE_ALL"; then
2873 NO_LD_ARCHIVE_FLAGS=1
2877 NO_LD_ARCHIVE_FLAGS=
2880 NO_LD_ARCHIVE_FLAGS=
2883 NO_LD_ARCHIVE_FLAGS=
2885 *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince|*-winmo)
2886 if test -z "$GNU_CC"; then
2887 NO_LD_ARCHIVE_FLAGS=
2891 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2893 dnl ========================================================
2894 dnl = Flags to strip unused symbols from .so components and
2895 dnl = to export jemalloc symbols when linking a program
2896 dnl ========================================================
2898 *-linux*|*-kfreebsd*-gnu|*-gnu*)
2899 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2900 MOZ_JEMALLOC_STANDALONE_GLUE_LDOPTS='-rdynamic -Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/jemalloc-standalone-linkage-version-script'
2903 if test -z "$GNU_CC"; then
2904 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2906 if test -z "$GCC_USE_GNU_LD"; then
2907 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2909 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2914 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2917 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2919 *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince|*-winmo)
2920 if test -n "$GNU_CC"; then
2921 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2926 if test -z "$COMPILE_ENVIRONMENT"; then
2927 SKIP_COMPILER_CHECKS=1
2928 SKIP_LIBRARY_CHECKS=1
2931 if test -z "$SKIP_COMPILER_CHECKS"; then
2932 dnl Checks for typedefs, structures, and compiler characteristics.
2933 dnl ========================================================
2941 AC_MSG_CHECKING(for __stdcall)
2942 AC_CACHE_VAL(ac_cv___stdcall,
2943 [AC_TRY_COMPILE([template <typename Method> struct foo;
2944 template <> struct foo<void (*)()> {};
2945 template <> struct foo<void (__stdcall*)()> {};],
2947 [ac_cv___stdcall=true],
2948 [ac_cv___stdcall=false])])
2949 if test "$ac_cv___stdcall" = true ; then
2950 AC_DEFINE(HAVE_STDCALL)
2956 AC_MSG_CHECKING(for ssize_t)
2957 AC_CACHE_VAL(ac_cv_type_ssize_t,
2958 [AC_TRY_COMPILE([#include <stdio.h>
2959 #include <sys/types.h>],
2961 [ac_cv_type_ssize_t=true],
2962 [ac_cv_type_ssize_t=false])])
2963 if test "$ac_cv_type_ssize_t" = true ; then
2964 AC_DEFINE(HAVE_SSIZE_T)
2969 AC_STRUCT_ST_BLKSIZE
2970 AC_MSG_CHECKING(for siginfo_t)
2971 AC_CACHE_VAL(ac_cv_siginfo_t,
2972 [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2973 #include <signal.h>],
2975 [ac_cv_siginfo_t=true],
2976 [ac_cv_siginfo_t=false])])
2977 if test "$ac_cv_siginfo_t" = true ; then
2978 AC_DEFINE(HAVE_SIGINFO_T)
2984 dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
2985 dnl ========================================================
2986 AC_MSG_CHECKING(for int16_t)
2987 AC_CACHE_VAL(ac_cv_int16_t,
2988 [AC_TRY_COMPILE([#include <stdio.h>
2989 #include <sys/types.h>],
2991 [ac_cv_int16_t=true],
2992 [ac_cv_int16_t=false])])
2993 if test "$ac_cv_int16_t" = true ; then
2994 AC_DEFINE(HAVE_INT16_T)
2999 AC_MSG_CHECKING(for int32_t)
3000 AC_CACHE_VAL(ac_cv_int32_t,
3001 [AC_TRY_COMPILE([#include <stdio.h>
3002 #include <sys/types.h>],
3004 [ac_cv_int32_t=true],
3005 [ac_cv_int32_t=false])])
3006 if test "$ac_cv_int32_t" = true ; then
3007 AC_DEFINE(HAVE_INT32_T)
3012 AC_MSG_CHECKING(for int64_t)
3013 AC_CACHE_VAL(ac_cv_int64_t,
3014 [AC_TRY_COMPILE([#include <stdio.h>
3015 #include <sys/types.h>],
3017 [ac_cv_int64_t=true],
3018 [ac_cv_int64_t=false])])
3019 if test "$ac_cv_int64_t" = true ; then
3020 AC_DEFINE(HAVE_INT64_T)
3025 AC_MSG_CHECKING(for int64)
3026 AC_CACHE_VAL(ac_cv_int64,
3027 [AC_TRY_COMPILE([#include <stdio.h>
3028 #include <sys/types.h>],
3031 [ac_cv_int64=false])])
3032 if test "$ac_cv_int64" = true ; then
3033 AC_DEFINE(HAVE_INT64)
3038 AC_MSG_CHECKING(for uint)
3039 AC_CACHE_VAL(ac_cv_uint,
3040 [AC_TRY_COMPILE([#include <stdio.h>
3041 #include <sys/types.h>],
3044 [ac_cv_uint=false])])
3045 if test "$ac_cv_uint" = true ; then
3046 AC_DEFINE(HAVE_UINT)
3051 AC_MSG_CHECKING(for uint_t)
3052 AC_CACHE_VAL(ac_cv_uint_t,
3053 [AC_TRY_COMPILE([#include <stdio.h>
3054 #include <sys/types.h>],
3056 [ac_cv_uint_t=true],
3057 [ac_cv_uint_t=false])])
3058 if test "$ac_cv_uint_t" = true ; then
3059 AC_DEFINE(HAVE_UINT_T)
3064 AC_MSG_CHECKING(for uint16_t)
3065 AC_CACHE_VAL(ac_cv_uint16_t,
3066 [AC_TRY_COMPILE([#include <stdio.h>
3067 #include <sys/types.h>],
3068 [uint16_t foo = 0;],
3069 [ac_cv_uint16_t=true],
3070 [ac_cv_uint16_t=false])])
3071 if test "$ac_cv_uint16_t" = true ; then
3072 AC_DEFINE(HAVE_UINT16_T)
3078 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
3079 dnl are defined when compiling C++ but not C. Since the result of this
3080 dnl test is used only in C++, do it in C++.
3083 AC_MSG_CHECKING(for uname.domainname)
3084 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
3085 [AC_TRY_COMPILE([#include <sys/utsname.h>],
3086 [ struct utsname *res; char *domain;
3087 (void)uname(res); if (res != 0) { domain = res->domainname; } ],
3088 [ac_cv_have_uname_domainname_field=true],
3089 [ac_cv_have_uname_domainname_field=false])])
3091 if test "$ac_cv_have_uname_domainname_field" = "true"; then
3092 AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
3098 AC_MSG_CHECKING(for uname.__domainname)
3099 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
3100 [AC_TRY_COMPILE([#include <sys/utsname.h>],
3101 [ struct utsname *res; char *domain;
3102 (void)uname(res); if (res != 0) { domain = res->__domainname; } ],
3103 [ac_cv_have_uname_us_domainname_field=true],
3104 [ac_cv_have_uname_us_domainname_field=false])])
3106 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
3107 AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
3115 dnl Check for usable char16_t (2 bytes, unsigned)
3116 dnl (we might not need the unsignedness check anymore)
3117 AC_CACHE_CHECK(for usable char16_t (2 bytes, unsigned),
3118 ac_cv_have_usable_char16_t,
3119 [AC_TRY_COMPILE([$configure_static_assert_macros],
3120 [CONFIGURE_STATIC_ASSERT(sizeof(char16_t) == 2);
3121 CONFIGURE_STATIC_ASSERT(char16_t(-1) > char16_t(0));
3122 CONFIGURE_STATIC_ASSERT(sizeof((u"hello")[0]) == 2);
3123 CONFIGURE_STATIC_ASSERT(sizeof(u'a') == 2);
3124 CONFIGURE_STATIC_ASSERT(u'\xFFFF' > u'\x0')],
3125 ac_cv_have_usable_char16_t="yes",
3126 ac_cv_have_usable_char16_t="no")])
3127 if test "$ac_cv_have_usable_char16_t" = "yes"; then
3128 AC_DEFINE(HAVE_CPP_CHAR16_T)
3132 dnl Check for usable wchar_t (2 bytes, unsigned)
3133 dnl (we really don't need the unsignedness check anymore)
3134 dnl ========================================================
3136 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
3137 ac_cv_have_usable_wchar_v2,
3138 [AC_TRY_COMPILE([#include <stddef.h>
3139 $configure_static_assert_macros],
3140 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
3141 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
3142 ac_cv_have_usable_wchar_v2="yes",
3143 ac_cv_have_usable_wchar_v2="no")])
3144 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
3145 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
3146 HAVE_CPP_2BYTE_WCHAR_T=1
3147 elif test "$ac_cv_have_usable_char16_t" != "yes"; then
3148 dnl This is really gcc-only
3149 dnl Do this test using CXX only since some versions of gcc
3150 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
3151 dnl only have short-wchar support for c++.
3152 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
3154 _SAVE_CXXFLAGS=$CXXFLAGS
3155 CXXFLAGS="$CXXFLAGS -fshort-wchar"
3157 AC_CACHE_CHECK(for compiler -fshort-wchar option,
3158 ac_cv_have_usable_wchar_option_v2,
3159 [AC_TRY_LINK([#include <stddef.h>
3160 $configure_static_assert_macros],
3161 [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
3162 CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
3163 ac_cv_have_usable_wchar_option_v2="yes",
3164 ac_cv_have_usable_wchar_option_v2="no")])
3166 if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
3167 AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
3168 HAVE_CPP_2BYTE_WCHAR_T=1
3169 if test "$OS_TARGET" = Android; then
3170 WCHAR_CFLAGS="-fshort-wchar -Wl,--no-wchar-size-warning"
3171 CXXFLAGS="$CXXFLAGS -Wl,--no-wchar-size-warning"
3172 CFLAGS="$CFLAGS -Wl,--no-wchar-size-warning"
3173 DSO_LDOPTS="$DSO_LDOPTS -Wl,--no-wchar-size-warning"
3175 WCHAR_CFLAGS="-fshort-wchar"
3178 CXXFLAGS=$_SAVE_CXXFLAGS
3184 dnl Check for .hidden assembler directive and visibility attribute.
3185 dnl Borrowed from glibc configure.in
3186 dnl ===============================================================
3187 if test "$GNU_CC"; then
3188 AC_CACHE_CHECK(for visibility(hidden) attribute,
3189 ac_cv_visibility_hidden,
3190 [cat > conftest.c <<EOF
3191 int foo __attribute__ ((visibility ("hidden"))) = 1;
3193 ac_cv_visibility_hidden=no
3194 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3195 if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
3196 ac_cv_visibility_hidden=yes
3201 if test "$ac_cv_visibility_hidden" = "yes"; then
3202 AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
3204 AC_CACHE_CHECK(for visibility(default) attribute,
3205 ac_cv_visibility_default,
3206 [cat > conftest.c <<EOF
3207 int foo __attribute__ ((visibility ("default"))) = 1;
3209 ac_cv_visibility_default=no
3210 if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3211 if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
3212 ac_cv_visibility_default=yes
3217 if test "$ac_cv_visibility_default" = "yes"; then
3218 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
3220 AC_CACHE_CHECK(for visibility pragma support,
3221 ac_cv_visibility_pragma,
3222 [cat > conftest.c <<EOF
3223 #pragma GCC visibility push(hidden)
3225 #pragma GCC visibility push(default)
3226 int foo_default = 1;
3228 ac_cv_visibility_pragma=no
3229 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3230 if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
3231 if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
3232 ac_cv_visibility_pragma=yes
3238 if test "$ac_cv_visibility_pragma" = "yes"; then
3239 AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
3240 ac_cv_have_visibility_class_bug,
3241 [cat > conftest.c <<EOF
3242 #pragma GCC visibility push(hidden)
3243 struct __attribute__ ((visibility ("default"))) TestStruct {
3246 __attribute__ ((visibility ("default"))) void TestFunc() {
3250 ac_cv_have_visibility_class_bug=no
3251 if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
3252 ac_cv_have_visibility_class_bug=yes
3254 if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
3255 ac_cv_have_visibility_class_bug=yes
3258 rm -rf conftest.{c,S}
3261 AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
3262 ac_cv_have_visibility_builtin_bug,
3263 [cat > conftest.c <<EOF
3264 #pragma GCC visibility push(hidden)
3265 #pragma GCC visibility push(default)
3267 #pragma GCC visibility pop
3269 __attribute__ ((visibility ("default"))) void Func() {
3271 memset(c, 0, sizeof(c));
3274 ac_cv_have_visibility_builtin_bug=no
3275 if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
3276 ac_cv_have_visibility_builtin_bug=yes
3278 if test `grep -c "@PLT" conftest.S` = 0; then
3279 ac_cv_visibility_builtin_bug=yes
3282 rm -f conftest.{c,S}
3284 if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
3285 "$ac_cv_have_visibility_class_bug" = "no"; then
3286 VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
3287 WRAP_SYSTEM_INCLUDES=1
3288 STL_FLAGS='-I$(DIST)/stl_wrappers'
3291 VISIBILITY_FLAGS='-fvisibility=hidden'
3292 fi # have visibility pragma bug
3293 fi # have visibility pragma
3294 fi # have visibility(default) attribute
3295 fi # have visibility(hidden) attribute
3298 # visibility hidden flag for Sun Studio on Solaris
3299 if test "$SOLARIS_SUNPRO_CC"; then
3300 VISIBILITY_FLAGS='-xldscope=hidden'
3301 fi # Sun Studio on Solaris
3303 AC_SUBST(WRAP_SYSTEM_INCLUDES)
3304 AC_SUBST(VISIBILITY_FLAGS)
3306 dnl Check for __force_align_arg_pointer__ for SSE2 on gcc
3307 dnl ========================================================
3308 if test "$GNU_CC"; then
3309 CFLAGS_save="${CFLAGS}"
3310 CFLAGS="${CFLAGS} -Werror"
3311 AC_CACHE_CHECK(for __force_align_arg_pointer__ attribute,
3312 ac_cv_force_align_arg_pointer,
3313 [AC_TRY_COMPILE([__attribute__ ((__force_align_arg_pointer__)) void test() {}],
3315 ac_cv_force_align_arg_pointer="yes",
3316 ac_cv_force_align_arg_pointer="no")])
3317 CFLAGS="${CFLAGS_save}"
3318 if test "$ac_cv_force_align_arg_pointer" = "yes"; then
3319 HAVE_GCC_ALIGN_ARG_POINTER=1
3321 HAVE_GCC_ALIGN_ARG_POINTER=
3324 AC_SUBST(HAVE_GCC_ALIGN_ARG_POINTER)
3326 dnl Checks for header files.
3327 dnl ========================================================
3329 case "$target_os" in
3331 # for stuff like -lXshm
3332 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
3335 AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
3336 AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
3337 AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
3338 AC_CHECK_HEADERS(malloc.h)
3339 AC_CHECK_HEADERS(X11/XKBlib.h)
3340 AC_CHECK_HEADERS(io.h)
3342 dnl These are all the places some variant of statfs can be hiding.
3343 AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
3346 AC_CHECK_HEADERS(sys/quota.h)
3347 AC_CHECK_HEADERS(linux/quota.h)
3349 dnl Try for MMX support
3350 dnl NB - later gcc versions require -mmmx for this header to be successfully
3351 dnl included (or another option which implies it, such as -march=pentium-mmx)
3352 AC_CHECK_HEADERS(mmintrin.h)
3354 dnl Check whether the compiler supports the new-style C++ standard
3355 dnl library headers (i.e. <new>) or needs the old "new.h"
3358 AC_CHECK_HEADER(new, [NEW_H=new])
3359 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
3362 AC_ARG_ENABLE(dtrace,
3363 [ --enable-dtrace build with dtrace support if available (default=no)],
3364 [enable_dtrace="yes"],)
3365 if test "x$enable_dtrace" = "xyes"; then
3366 AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
3367 if test -n "$HAVE_DTRACE"; then
3368 AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
3370 AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
3373 AC_SUBST(HAVE_DTRACE)
3379 AC_CHECK_HEADERS(sys/cdefs.h)
3383 dnl Checks for libraries.
3384 dnl ========================================================
3389 AC_CHECK_LIB(c_r, gethostbyname_r)
3393 dnl We don't want to link with libdl even if it's present on OS X, since
3394 dnl it's not used and not part of the default installation.
3395 dnl The same goes for BeOS. OS/2 has dlfcn in libc.
3396 dnl We don't want to link against libm or libpthread on Darwin since
3397 dnl they both are just symlinks to libSystem and explicitly linking
3398 dnl against libSystem causes issues when debugging (see bug 299601).
3407 AC_SEARCH_LIBS(dlopen, dl,
3408 AC_CHECK_HEADER(dlfcn.h,
3409 AC_DEFINE(HAVE_DLOPEN)))
3413 _SAVE_CFLAGS="$CFLAGS"
3414 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3415 AC_CHECK_FUNCS(dladdr)
3416 CFLAGS="$_SAVE_CFLAGS"
3418 if test ! "$GNU_CXX"; then
3422 AC_CHECK_LIB(C_r, demangle)
3425 AC_CHECK_LIB(C, demangle)
3430 dnl OS/2 has socket in libc.
3435 AC_CHECK_LIB(socket, socket)
3438 dnl ========================================================
3439 dnl Check whether we can compile code for Core Text
3440 dnl (available on Mac OS X 10.5 or later)
3441 dnl ========================================================
3444 AC_MSG_CHECKING([for Core Text])
3445 AC_TRY_COMPILE([#include <ApplicationServices/ApplicationServices.h>],
3446 [CTLineRef lineRef;],
3447 ac_cv_have_core_text="yes",
3448 ac_cv_have_core_text="no")
3449 AC_MSG_RESULT([$ac_cv_have_core_text])
3451 if test "$ac_cv_have_core_text" = "no"; then
3452 AC_MSG_ERROR([Core Text is required (available on Mac OS X 10.5 or later).])
3458 XLIBS="$X_EXTRA_LIBS"
3460 dnl ========================================================
3461 dnl Checks for X libraries.
3462 dnl Ordering is important.
3463 dnl Xt is dependent upon SM as of X11R6
3464 dnl ========================================================
3465 if test "$no_x" = "yes"; then
3468 AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3469 XLIBS="-lX11 $XLIBS"
3470 _SAVE_LDFLAGS="$LDFLAGS"
3471 LDFLAGS="$XLDFLAGS $LDFLAGS"
3472 AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3473 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3474 AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3475 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3477 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3478 unset ac_cv_lib_Xt_XtFree
3479 AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3480 AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS)
3481 AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3482 [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3485 # AIX needs the motif library linked before libXt to prevent
3486 # crashes in plugins linked against Motif - Bug #98892
3487 case "${target_os}" in
3489 XT_LIBS="-lXm $XT_LIBS"
3493 dnl ========================================================
3494 dnl = Check for XShm
3495 dnl ========================================================
3496 AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3498 AC_CHECK_HEADER(X11/extensions/XShm.h)
3499 if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" &&
3500 test -n "$_HAVE_XSHM_XEXT"; then
3501 AC_DEFINE(HAVE_XSHM)
3504 dnl ========================================================
3506 dnl ========================================================
3507 AC_CHECK_HEADER(X11/extensions/scrnsaver.h,
3508 AC_CHECK_LIB(Xss, XScreenSaverQueryInfo,
3509 [XSS_LIBS="-lXss $XEXT_LIBS $XLIBS"
3510 AC_DEFINE(HAVE_LIBXSS)],, $XEXT_LIBS $XLIBS))
3512 dnl ========================================================
3514 dnl ========================================================
3515 AC_CHECK_LIB(XIE, XieFloGeometry, [MOZ_XIE_LIBS="-lXIE"],,
3517 AC_CHECK_HEADER(X11/extensions/XIElib.h)
3519 if test "$MOZ_XIE_LIBS"; then
3520 dnl ====================================================
3521 dnl = If XIE is present and is desired, turn it on
3522 dnl ====================================================
3532 LDFLAGS="$_SAVE_LDFLAGS"
3534 dnl ========================================================
3535 dnl = Check for freetype2 and its functionality
3536 dnl ========================================================
3537 AC_CHECK_FT2(6.1.0, [_HAVE_FREETYPE2=1], [_HAVE_FREETYPE2=])
3539 if test "$_HAVE_FREETYPE2"; then
3541 _SAVE_CFLAGS="$CFLAGS"
3542 LIBS="$LIBS $FT2_LIBS"
3543 CFLAGS="$CFLAGS $FT2_CFLAGS"
3545 AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
3546 ac_cv_member_FT_Bitmap_Size_y_ppem,
3547 [AC_TRY_COMPILE([#include <ft2build.h>
3548 #include FT_FREETYPE_H],
3550 if (sizeof s.y_ppem) return 0;
3552 ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
3553 ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
3554 if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
3555 HAVE_FT_BITMAP_SIZE_Y_PPEM=1
3557 HAVE_FT_BITMAP_SIZE_Y_PPEM=0
3559 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
3560 $HAVE_FT_BITMAP_SIZE_Y_PPEM,
3561 [FT_Bitmap_Size structure includes y_ppem field])
3563 AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
3566 CFLAGS="$_SAVE_CFLAGS"
3578 AC_MSG_CHECKING(for ARM SIMD support in compiler)
3580 [asm("uqadd8 r1, r1, r2");],
3581 result="yes", result="no")
3582 AC_MSG_RESULT("$result")
3583 if test "$result" = "yes"; then
3584 AC_DEFINE(HAVE_ARM_SIMD)
3587 AC_SUBST(HAVE_ARM_SIMD)
3589 AC_MSG_CHECKING(for ARM NEON support in compiler)
3590 _SAVE_CFLAGS="$CFLAGS"
3591 if test "$GNU_CC"; then
3592 # gcc needs -mfpu=neon to recognize NEON instructions
3593 CFLAGS="$CFLAGS -mfpu=neon -mfloat-abi=softfp"
3596 [asm("vadd.i8 d0, d0, d0");],
3597 result="yes", result="no")
3598 AC_MSG_RESULT("$result")
3599 if test "$result" = "yes"; then
3600 AC_DEFINE(HAVE_ARM_NEON)
3603 CFLAGS="$_SAVE_CFLAGS"
3604 AC_SUBST(HAVE_ARM_NEON)
3606 dnl ========================================================
3607 dnl = pthread support
3608 dnl = Start by checking whether the system support pthreads
3609 dnl ========================================================
3610 case "$target_os" in
3615 MOZ_CHECK_PTHREADS(pthreads,
3616 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3617 MOZ_CHECK_PTHREADS(pthread,
3618 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3619 MOZ_CHECK_PTHREADS(c_r,
3620 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3621 MOZ_CHECK_PTHREADS(c,
3630 dnl ========================================================
3631 dnl Check the command line for --with-pthreads
3632 dnl ========================================================
3633 MOZ_ARG_WITH_BOOL(pthreads,
3634 [ --with-pthreads Force use of system pthread library with NSPR ],
3635 [ if test "$USE_PTHREADS"x = x; then
3636 AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3642 dnl ========================================================
3643 dnl Do the platform specific pthread hackery
3644 dnl ========================================================
3645 if test "$USE_PTHREADS"x != x
3648 dnl See if -pthread is supported.
3651 ac_cv_have_dash_pthread=no
3652 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3653 echo 'int main() { return 0; }' | cat > conftest.c
3654 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3655 if test $? -eq 0; then
3656 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3657 ac_cv_have_dash_pthread=yes
3658 case "$target_os" in
3660 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3663 CFLAGS="$CFLAGS -pthread"
3664 CXXFLAGS="$CXXFLAGS -pthread"
3670 AC_MSG_RESULT($ac_cv_have_dash_pthread)
3673 dnl See if -pthreads is supported.
3675 ac_cv_have_dash_pthreads=no
3676 if test "$ac_cv_have_dash_pthread" = "no"; then
3677 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3678 echo 'int main() { return 0; }' | cat > conftest.c
3679 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3680 if test $? -eq 0; then
3681 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3682 ac_cv_have_dash_pthreads=yes
3683 CFLAGS="$CFLAGS -pthreads"
3684 CXXFLAGS="$CXXFLAGS -pthreads"
3688 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3693 AC_DEFINE(_REENTRANT)
3694 AC_DEFINE(_THREAD_SAFE)
3695 dnl -pthread links in -lc_r, so don't specify it explicitly.
3696 if test "$ac_cv_have_dash_pthread" = "yes"; then
3697 _PTHREAD_LDFLAGS="-pthread"
3699 _PTHREAD_LDFLAGS="-lc_r"
3703 *-*-openbsd*|*-*-bsdi*)
3704 AC_DEFINE(_REENTRANT)
3705 AC_DEFINE(_THREAD_SAFE)
3706 dnl -pthread links in -lc_r, so don't specify it explicitly.
3707 if test "$ac_cv_have_dash_pthread" = "yes"; then
3708 _PTHREAD_LDFLAGS="-pthread"
3712 *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
3713 AC_DEFINE(_REENTRANT)
3717 AC_DEFINE(_REENTRANT)
3721 AC_DEFINE(_REENTRANT)
3725 AC_DEFINE(_REENTRANT)
3729 AC_DEFINE(_REENTRANT)
3733 AC_DEFINE(_REENTRANT)
3734 if test "$SOLARIS_SUNPRO_CC"; then
3735 CFLAGS="$CFLAGS -mt"
3736 CXXFLAGS="$CXXFLAGS -mt"
3740 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3743 dnl ========================================================
3744 dnl See if mmap sees writes
3745 dnl For cross compiling, just define it as no, which is a safe default
3746 dnl ========================================================
3747 AC_MSG_CHECKING(whether mmap() sees write()s)
3753 #include <sys/mman.h>
3754 #include <sys/types.h>
3755 #include <sys/stat.h>
3758 char fname[] = "conftest.file";
3759 char zbuff[1024]; /* Fractional page is probably worst case */
3766 fd = open(fname, O_RDWR | O_CREAT, 0660);
3769 write(fd, zbuff, sizeof(zbuff));
3770 lseek(fd, 0, SEEK_SET);
3771 map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
3772 if(map==(char*)-1) return 2;
3773 for(i=0; fname[i]; i++) {
3774 int rc = write(fd, &fname[i], 1);
3775 if(map[i]!=fname[i]) return 4;
3782 AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
3784 AC_MSG_RESULT("$result")
3786 if test "$result" = "no"; then
3787 AC_DEFINE(MMAP_MISSES_WRITES)
3791 dnl Checks for library functions.
3792 dnl ========================================================
3793 AC_PROG_GCC_TRADITIONAL
3795 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 truncate64 statvfs64 setbuf isatty)
3796 AC_CHECK_FUNCS(flockfile getpagesize)
3797 AC_CHECK_FUNCS(localtime_r strtok_r)
3799 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock, and -lrt
3800 _SAVE_LDFLAGS=$LDFLAGS
3801 LDFLAGS="$LDFLAGS -lrt"
3802 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC) and -lrt,
3803 ac_cv_have_clock_monotonic,
3804 [AC_TRY_LINK([#include <time.h>],
3805 [ struct timespec ts;
3806 clock_gettime(CLOCK_MONOTONIC, &ts); ],
3807 ac_cv_have_clock_monotonic=yes,
3808 ac_cv_have_clock_monotonic=no)])
3809 LDFLAGS=$_SAVE_LDFLAGS
3810 if test "$ac_cv_have_clock_monotonic" = "yes"; then
3811 HAVE_CLOCK_MONOTONIC=1
3813 AC_DEFINE(HAVE_CLOCK_MONOTONIC)
3814 AC_SUBST(HAVE_CLOCK_MONOTONIC)
3815 AC_SUBST(REALTIME_LIBS)
3818 dnl check for wcrtomb/mbrtowc
3819 dnl =======================================================================
3820 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3823 AC_CACHE_CHECK(for wcrtomb,
3825 [AC_TRY_LINK([#include <wchar.h>],
3826 [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3827 ac_cv_have_wcrtomb="yes",
3828 ac_cv_have_wcrtomb="no")])
3829 if test "$ac_cv_have_wcrtomb" = "yes"; then
3830 AC_DEFINE(HAVE_WCRTOMB)
3832 AC_CACHE_CHECK(for mbrtowc,
3834 [AC_TRY_LINK([#include <wchar.h>],
3835 [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3836 ac_cv_have_mbrtowc="yes",
3837 ac_cv_have_mbrtowc="no")])
3838 if test "$ac_cv_have_mbrtowc" = "yes"; then
3839 AC_DEFINE(HAVE_MBRTOWC)
3846 ac_cv_func_res_ninit,
3849 #define _BSD_SOURCE 1
3853 [int foo = res_ninit(&_res);],
3854 [ac_cv_func_res_ninit=yes],
3855 [ac_cv_func_res_ninit=no])
3858 if test "$ac_cv_func_res_ninit" = "yes"; then
3859 AC_DEFINE(HAVE_RES_NINIT)
3860 dnl must add the link line we do something as foolish as this... dougt
3862 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3863 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3868 [for gnu_get_libc_version()],
3869 ac_cv_func_gnu_get_libc_version,
3871 #ifdef HAVE_GNU_LIBC_VERSION_H
3872 #include <gnu/libc-version.h>
3875 [const char *glibc_version = gnu_get_libc_version();],
3876 [ac_cv_func_gnu_get_libc_version=yes],
3877 [ac_cv_func_gnu_get_libc_version=no]
3881 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3882 AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3886 os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|winmo*|beos*)
3890 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3891 AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3892 AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3894 LIBS="$LIBS $_ICONV_LIBS"
3903 iconv_t h = iconv_open("", "");
3904 iconv(h, NULL, NULL, NULL, NULL);
3907 [ac_cv_func_iconv=yes],
3908 [ac_cv_func_iconv=no]
3911 if test "$ac_cv_func_iconv" = "yes"; then
3912 AC_DEFINE(HAVE_ICONV)
3913 DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3914 LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3915 LIBICONV="$_ICONV_LIBS"
3917 [for iconv() with const input],
3918 ac_cv_func_const_iconv,
3924 const char *input = "testing";
3925 iconv_t h = iconv_open("", "");
3926 iconv(h, &input, NULL, NULL, NULL);
3929 [ac_cv_func_const_iconv=yes],
3930 [ac_cv_func_const_iconv=no]
3933 if test "$ac_cv_func_const_iconv" = "yes"; then
3934 AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3946 dnl **********************
3947 dnl *** va_copy checks ***
3948 dnl **********************
3949 dnl we currently check for all three va_copy possibilities, so we get
3950 dnl all results in config.log for bug reports.
3951 AC_MSG_CHECKING(for an implementation of va_copy())
3952 AC_CACHE_VAL(ac_cv_va_copy,[
3955 void f (int i, ...) {
3956 va_list args1, args2;
3957 va_start (args1, i);
3958 va_copy (args2, args1);
3959 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3961 va_end (args1); va_end (args2);
3963 int main() { f (0, 42); return 0; }],
3969 AC_MSG_RESULT($ac_cv_va_copy)
3970 AC_MSG_CHECKING(for an implementation of __va_copy())
3971 AC_CACHE_VAL(ac_cv___va_copy,[
3974 void f (int i, ...) {
3975 va_list args1, args2;
3976 va_start (args1, i);
3977 __va_copy (args2, args1);
3978 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3980 va_end (args1); va_end (args2);
3982 int main() { f (0, 42); return 0; }],
3983 ac_cv___va_copy=yes,
3988 AC_MSG_RESULT($ac_cv___va_copy)
3989 AC_MSG_CHECKING(whether va_lists can be copied by value)
3990 AC_CACHE_VAL(ac_cv_va_val_copy,[
3993 void f (int i, ...) {
3994 va_list args1, args2;
3995 va_start (args1, i);
3997 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3999 va_end (args1); va_end (args2);
4001 int main() { f (0, 42); return 0; }],
4002 ac_cv_va_val_copy=yes,
4003 ac_cv_va_val_copy=no,
4004 ac_cv_va_val_copy=yes
4007 if test "x$ac_cv_va_copy" = "xyes"; then
4008 AC_DEFINE(VA_COPY, va_copy)
4009 AC_DEFINE(HAVE_VA_COPY)
4010 elif test "x$ac_cv___va_copy" = "xyes"; then
4011 AC_DEFINE(VA_COPY, __va_copy)
4012 AC_DEFINE(HAVE_VA_COPY)
4015 if test "x$ac_cv_va_val_copy" = "xno"; then
4016 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
4018 AC_MSG_RESULT($ac_cv_va_val_copy)
4020 dnl Check for dll-challenged libc's.
4021 dnl This check is apparently only needed for Linux.
4024 dnl ===================================================================
4027 rm -rf conftest* _conftest
4029 cat >> conftest.C <<\EOF
4034 void __dump_link_map(void) {
4035 struct link_map *map = _dl_loaded;
4036 while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
4039 dlopen("./conftest1.so",RTLD_LAZY);
4040 dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
4041 dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
4042 dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
4046 /* _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).*/
4047 int main() { printf("./conftest1.so\n"); }
4051 $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
4053 cat >> conftest1.C <<\EOF
4055 void foo(void) {printf("foo in dll called\n");}
4057 ${CXX-g++} -fPIC -c -g conftest1.C
4058 ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
4059 ${CXX-g++} -g conftest.C -o conftest -ldl
4060 cp -f conftest1.so conftest _conftest
4062 if test `./conftest | grep conftest1.so | wc -l` -gt 1
4065 echo "*** Your libc has a bug that can result in loading the same dynamic"
4066 echo "*** library multiple times. This bug is known to be fixed in glibc-2.0.7-32"
4067 echo "*** or later. However, if you choose not to upgrade, the only effect"
4068 echo "*** will be excessive memory usage at runtime."
4072 rm -rf conftest* _conftest
4073 dnl ===================================================================
4077 dnl ===================================================================
4078 dnl ========================================================
4079 dnl Put your C++ language/feature checks below
4080 dnl ========================================================
4085 if test "$GNU_CC"; then
4086 if test "$CPU_ARCH" = "arm" ; then
4087 AC_CACHE_CHECK(for ARM EABI,
4091 #if defined(__ARM_EABI__)
4094 #error Not ARM EABI.
4097 ac_cv_gcc_arm_eabi="yes",
4098 ac_cv_gcc_arm_eabi="no")])
4099 if test "$ac_cv_gcc_arm_eabi" = "yes"; then
4101 ARM_ABI_PREFIX=eabi-
4103 ARM_ABI_PREFIX=oabi-
4107 AC_CACHE_CHECK(for gcc 3.0 ABI,
4108 ac_cv_gcc_three_abi,
4111 #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
4117 ac_cv_gcc_three_abi="yes",
4118 ac_cv_gcc_three_abi="no")])
4119 if test "$ac_cv_gcc_three_abi" = "yes"; then
4120 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
4123 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc2}"
4126 AC_SUBST(HAVE_GCC3_ABI)
4129 AC_CACHE_CHECK(for C++ \"explicit\" keyword,
4131 [AC_TRY_COMPILE(class X {
4132 public: explicit X(int i) : i_(i) {}
4136 ac_cv_cpp_explicit=yes,
4137 ac_cv_cpp_explicit=no)])
4138 if test "$ac_cv_cpp_explicit" = yes ; then
4139 AC_DEFINE(HAVE_CPP_EXPLICIT)
4142 AC_CACHE_CHECK(for C++ \"typename\" keyword,
4144 [AC_TRY_COMPILE(class param {
4146 typedef unsigned long num_type;
4149 template <class T> class tplt {
4151 typedef typename T::num_type t_num_type;
4152 t_num_type foo(typename T::num_type num) {
4158 ac_cv_cpp_typename=yes,
4159 ac_cv_cpp_typename=no)])
4160 if test "$ac_cv_cpp_typename" = yes ; then
4161 AC_DEFINE(HAVE_CPP_TYPENAME)
4164 dnl Check for support of modern template specialization syntax
4165 dnl Test code and requirement from scc@netscape.com.
4166 dnl Autoconf cut-and-paste job by waterson@netscape.com
4167 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
4168 ac_cv_cpp_modern_specialize_template_syntax,
4169 [AC_TRY_COMPILE(template <class T> struct X { int a; };
4171 template <> struct X<Y> { double a; };,
4174 ac_cv_cpp_modern_specialize_template_syntax=yes,
4175 ac_cv_cpp_modern_specialize_template_syntax=no)])
4176 if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
4177 AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
4181 dnl Some compilers support only full specialization, and some don't.
4182 AC_CACHE_CHECK(whether partial template specialization works,
4183 ac_cv_cpp_partial_specialization,
4184 [AC_TRY_COMPILE(template <class T> class Foo {};
4185 template <class T> class Foo<T*> {};,
4187 ac_cv_cpp_partial_specialization=yes,
4188 ac_cv_cpp_partial_specialization=no)])
4189 if test "$ac_cv_cpp_partial_specialization" = yes ; then
4190 AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
4193 dnl Some compilers have limited support for operators with templates;
4194 dnl specifically, it is necessary to define derived operators when a base
4195 dnl class's operator declaration should suffice.
4196 AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
4197 ac_cv_need_derived_template_operators,
4198 [AC_TRY_COMPILE([template <class T> class Base { };
4200 Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
4201 template <class T> class Derived : public Base<T> { };],
4202 [Derived<char> a, b;
4203 Base<char> c = a + b;
4205 ac_cv_need_derived_template_operators=no,
4206 ac_cv_need_derived_template_operators=yes)])
4207 if test "$ac_cv_need_derived_template_operators" = yes ; then
4208 AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
4212 dnl Some compilers have trouble detecting that a template class
4213 dnl that derives from another template is actually an instance
4214 dnl of the base class. This test checks for that.
4215 AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
4216 ac_cv_need_cpp_template_cast_to_base,
4217 [AC_TRY_COMPILE([template <class T> class Base { };
4218 template <class T> class Derived : public Base<T> { };
4219 template <class T> int foo(const Base<T>&) { return 0; }],
4220 [Derived<char> bar; return foo(bar);],
4221 ac_cv_need_cpp_template_cast_to_base=no,
4222 ac_cv_need_cpp_template_cast_to_base=yes)])
4223 if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
4224 AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
4227 dnl Some compilers have trouble resolving the ambiguity between two
4228 dnl functions whose arguments differ only by cv-qualifications.
4229 AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
4230 ac_cv_can_resolve_const_ambiguity,
4232 template <class T> class ptrClass {
4236 template <class T> T* a(ptrClass<T> *arg) {
4241 const T* a(const ptrClass<T> *arg) {
4247 ac_cv_can_resolve_const_ambiguity=yes,
4248 ac_cv_can_resolve_const_ambiguity=no)])
4249 if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
4250 AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
4254 dnl We don't do exceptions on unix. The only reason this used to be here
4255 dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses
4256 dnl exceptions. But, we turn exceptions off by default and this test breaks.
4257 dnl So im commenting this out until someone writes some artificial
4258 dnl intelligence to detect not only if the compiler has exceptions, but if
4259 dnl they are enabled as well.
4261 dnl AC_CACHE_CHECK(for C++ \"exceptions\",
4262 dnl ac_cv_cpp_exceptions,
4263 dnl [AC_TRY_COMPILE(class X { public: X() {} };
4264 dnl static void F() { throw X(); },
4265 dnl try { F(); } catch(X & e) { },
4266 dnl ac_cv_cpp_exceptions=yes,
4267 dnl ac_cv_cpp_exceptions=no)])
4268 dnl if test $ac_cv_cpp_exceptions = yes ; then
4269 dnl AC_DEFINE(HAVE_CPP_EXCEPTIONS)
4272 dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
4273 dnl supports it well enough to allow us to use it to change access, but not
4274 dnl to resolve ambiguity. The next two tests determine how well the |using|
4275 dnl keyword is supported.
4277 dnl Check to see if we can change access with |using|. Test both a
4278 dnl legal and an illegal example.
4279 AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
4280 ac_cv_cpp_access_changing_using2,
4282 class A { protected: int foo() { return 0; } };
4283 class B : public A { public: using A::foo; };,
4284 B b; return b.foo();,
4286 class A { public: int foo() { return 1; } };
4287 class B : public A { private: using A::foo; };,
4288 B b; return b.foo();,
4289 ac_cv_cpp_access_changing_using2=no,
4290 ac_cv_cpp_access_changing_using2=yes)],
4291 ac_cv_cpp_access_changing_using2=no)])
4292 if test "$ac_cv_cpp_access_changing_using2" = yes ; then
4293 AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
4296 dnl Check to see if we can resolve ambiguity with |using|.
4297 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
4298 ac_cv_cpp_ambiguity_resolving_using,
4299 [AC_TRY_COMPILE(class X {
4300 public: int go(const X&) {return 3;}
4301 int jo(const X&) {return 3;}
4303 class Y : public X {
4304 public: int go(int) {return 2;}
4305 int jo(int) {return 2;}
4307 private: using X::go;
4310 ac_cv_cpp_ambiguity_resolving_using=yes,
4311 ac_cv_cpp_ambiguity_resolving_using=no)])
4312 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
4313 AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
4316 dnl Check to see if the |std| namespace is supported. If so, we'll want
4317 dnl to qualify any standard library calls with "std::" to ensure that
4318 dnl those functions can be resolved.
4319 AC_CACHE_CHECK(for \"std::\" namespace,
4320 ac_cv_cpp_namespace_std,
4321 [AC_TRY_COMPILE([#include <algorithm>],
4322 [return std::min(0, 1);],
4323 ac_cv_cpp_namespace_std=yes,
4324 ac_cv_cpp_namespace_std=no)])
4325 if test "$ac_cv_cpp_namespace_std" = yes ; then
4326 AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
4329 dnl Older compilers are overly ambitious with respect to using the standard
4330 dnl template library's |operator!=()| when |operator==()| is defined. In
4331 dnl which case, defining |operator!=()| in addition to |operator==()| causes
4332 dnl ambiguity at compile-time. This test checks for that case.
4333 AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
4334 ac_cv_cpp_unambiguous_std_notequal,
4335 [AC_TRY_COMPILE([#include <algorithm>
4337 int operator==(const T1&, const T1&) { return 0; }
4338 int operator!=(const T1&, const T1&) { return 0; }],
4339 [T1 a,b; return a != b;],
4340 ac_cv_cpp_unambiguous_std_notequal=unambiguous,
4341 ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
4342 if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
4343 AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
4347 AC_CACHE_CHECK(for C++ reinterpret_cast,
4348 ac_cv_cpp_reinterpret_cast,
4349 [AC_TRY_COMPILE(struct X { int i; };
4350 struct Y { int i; };,
4351 X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
4352 ac_cv_cpp_reinterpret_cast=yes,
4353 ac_cv_cpp_reinterpret_cast=no)])
4354 if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
4355 AC_DEFINE(HAVE_CPP_NEW_CASTS)
4358 dnl See if a dynamic_cast to void* gives the most derived object.
4359 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
4360 ac_cv_cpp_dynamic_cast_void_ptr,
4361 [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
4362 class Y { int j; public: virtual ~Y() { } };
4363 class Z : public X, public Y { int k; };
4369 return !((((void*)&mdo != (void*)subx) &&
4370 ((void*)&mdo == dynamic_cast<void*>(subx))) ||
4371 (((void*)&mdo != (void*)suby) &&
4372 ((void*)&mdo == dynamic_cast<void*>(suby))));
4374 ac_cv_cpp_dynamic_cast_void_ptr=yes,
4375 ac_cv_cpp_dynamic_cast_void_ptr=no,
4376 ac_cv_cpp_dynamic_cast_void_ptr=no)])
4377 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
4378 AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
4382 dnl note that this one is reversed - if the test fails, then
4383 dnl we require implementations of unused virtual methods. Which
4384 dnl really blows because it means we'll have useless vtable
4386 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
4387 ac_cv_cpp_unused_required,
4388 [AC_TRY_LINK(class X {private: virtual void never_called();};,
4390 ac_cv_cpp_unused_required=no,
4391 ac_cv_cpp_unused_required=yes)])
4392 if test "$ac_cv_cpp_unused_required" = yes ; then
4393 AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
4397 dnl Some compilers have trouble comparing a constant reference to a templatized
4398 dnl class to zero, and require an explicit operator==() to be defined that takes
4399 dnl an int. This test separates the strong from the weak.
4401 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
4402 ac_cv_trouble_comparing_to_zero,
4403 [AC_TRY_COMPILE([#include <algorithm>
4404 template <class T> class Foo {};
4406 template <class T> int operator==(const T2*, const T&) { return 0; }
4407 template <class T> int operator!=(const T2*, const T&) { return 0; }],
4408 [Foo<int> f; return (0 != f);],
4409 ac_cv_trouble_comparing_to_zero=no,
4410 ac_cv_trouble_comparing_to_zero=yes)])
4411 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
4412 AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
4415 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
4416 _SAVE_LDFLAGS=$LDFLAGS
4417 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS"
4418 AC_CACHE_CHECK(for __thread keyword for TLS variables,
4419 ac_cv_thread_keyword,
4420 [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
4421 [return tlsIsMainThread;],
4422 ac_cv_thread_keyword=yes,
4423 ac_cv_thread_keyword=no)])
4424 LDFLAGS=$_SAVE_LDFLAGS
4425 if test "$ac_cv_thread_keyword" = yes; then
4426 # mips builds fail with TLS variables because of a binutils bug.
4436 AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
4441 dnl Check for the existence of various allocation headers/functions
4444 AC_CHECK_HEADER(malloc.h, [MALLOC_H=malloc.h])
4445 if test "$MALLOC_H" = ""; then
4446 AC_CHECK_HEADER(malloc/malloc.h, [MALLOC_H=malloc/malloc.h])
4447 if test "$MALLOC_H" = ""; then
4448 AC_CHECK_HEADER(sys/malloc.h, [MALLOC_H=sys/malloc.h])
4451 if test "$MALLOC_H" != ""; then
4452 AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
4455 MOZ_ALLOCATING_FUNCS="strndup posix_memalign memalign valloc"
4456 AC_CHECK_FUNCS(strndup posix_memalign memalign valloc)
4458 dnl See if compiler supports some gcc-style attributes
4460 AC_CACHE_CHECK(for __attribute__((always_inline)),
4461 ac_cv_attribute_always_inline,
4463 [inline void f(void) __attribute__((always_inline));],
4464 ac_cv_attribute_always_inline=yes,
4465 ac_cv_attribute_always_inline=no)])
4467 AC_CACHE_CHECK(for __attribute__((malloc)),
4468 ac_cv_attribute_malloc,
4470 [void* f(int) __attribute__((malloc));],
4471 ac_cv_attribute_malloc=yes,
4472 ac_cv_attribute_malloc=no)])
4474 AC_CACHE_CHECK(for __attribute__((warn_unused_result)),
4475 ac_cv_attribute_warn_unused,
4477 [int f(void) __attribute__((warn_unused_result));],
4478 ac_cv_attribute_warn_unused=yes,
4479 ac_cv_attribute_warn_unused=no)])
4481 AC_CACHE_CHECK(for __attribute__((noreturn)),
4482 ac_cv_attribute_noreturn,
4484 [void f(void) __attribute__((noreturn));],
4485 ac_cv_attribute_noreturn=yes,
4486 ac_cv_attribute_noreturn=no)])
4488 dnl End of C++ language/feature checks
4491 dnl ========================================================
4492 dnl = Internationalization checks
4493 dnl ========================================================
4495 dnl Internationalization and Locale support is different
4496 dnl on various UNIX platforms. Checks for specific i18n
4497 dnl features go here.
4499 dnl check for LC_MESSAGES
4500 AC_CACHE_CHECK(for LC_MESSAGES,
4501 ac_cv_i18n_lc_messages,
4502 [AC_TRY_COMPILE([#include <locale.h>],
4503 [int category = LC_MESSAGES;],
4504 ac_cv_i18n_lc_messages=yes,
4505 ac_cv_i18n_lc_messages=no)])
4506 if test "$ac_cv_i18n_lc_messages" = yes; then
4507 AC_DEFINE(HAVE_I18N_LC_MESSAGES)
4510 AC_HAVE_FUNCS(localeconv)
4512 fi # SKIP_COMPILER_CHECKS
4515 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
4516 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
4519 dnl Mozilla specific options
4520 dnl ========================================================
4521 dnl The macros used for command line options
4522 dnl are defined in build/autoconf/altoptions.m4.
4524 dnl If the compiler supports these attributes, define them as
4525 dnl convenience macros.
4526 if test "$ac_cv_attribute_always_inline" = yes ; then
4527 AC_DEFINE(NS_ALWAYS_INLINE, [__attribute__((always_inline))])
4529 AC_DEFINE(NS_ALWAYS_INLINE,)
4532 if test "$ac_cv_attribute_malloc" = yes ; then
4533 AC_DEFINE(NS_ATTR_MALLOC, [__attribute__((malloc))])
4535 AC_DEFINE(NS_ATTR_MALLOC,)
4538 if test "$ac_cv_attribute_warn_unused" = yes ; then
4539 AC_DEFINE(NS_WARN_UNUSED_RESULT, [__attribute__((warn_unused_result))])
4541 AC_DEFINE(NS_WARN_UNUSED_RESULT,)
4544 if test "$ac_cv_attribute_noreturn" = yes ; then
4545 AC_DEFINE(NS_NORETURN, [__attribute__((noreturn))])
4547 AC_DEFINE(NS_NORETURN,)
4550 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
4551 dnl features that Windows actually does support.
4553 if test -n "$SKIP_COMPILER_CHECKS"; then
4554 dnl Windows has malloc.h
4555 AC_DEFINE(MALLOC_H, [<malloc.h>])
4556 AC_DEFINE(HAVE_FORCEINLINE)
4557 AC_DEFINE(HAVE_LOCALECONV)
4558 fi # SKIP_COMPILER_CHECKS
4560 dnl ========================================================
4562 dnl = Check for external package dependencies
4564 dnl ========================================================
4565 MOZ_ARG_HEADER(External Packages)
4569 MOZ_ARG_WITH_STRING(libxul-sdk,
4570 [ --with-libxul-sdk=PFX Use the libXUL SDK at <PFX>],
4571 LIBXUL_SDK_DIR=$withval)
4573 if test "$LIBXUL_SDK_DIR" = "yes"; then
4574 AC_MSG_ERROR([--with-libxul-sdk must specify a path])
4575 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
4576 LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
4578 if test ! -f "$LIBXUL_SDK/include/xpcom-config.h"; then
4579 AC_MSG_ERROR([$LIBXUL_SDK/include/xpcom-config.h doesn't exist])
4584 AC_SUBST(LIBXUL_SDK)
4586 if test -n "$LIBXUL_SDK"; then
4587 LIBXUL_DIST="$LIBXUL_SDK"
4589 LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
4591 AC_SUBST(LIBXUL_DIST)
4595 MOZ_ARG_WITH_BOOL(system-libxul,
4596 [ --with-system-libxul Use system installed libxul SDK],
4599 if test -n "$SYSTEM_LIBXUL" -a -z "$MOZ_ENABLE_LIBXUL"; then
4600 AC_MSG_ERROR([--with-system-libxul needs --with-libxul-sdk])
4603 dnl ========================================================
4604 dnl = If NSPR was not detected in the system,
4605 dnl = use the one in the source tree (mozilla/nsprpub)
4606 dnl ========================================================
4607 MOZ_ARG_WITH_BOOL(system-nspr,
4608 [ --with-system-nspr Use system installed NSPR],
4609 _USE_SYSTEM_NSPR=1 )
4611 if test -n "$_USE_SYSTEM_NSPR"; then
4612 AM_PATH_NSPR(4.8.7, [MOZ_NATIVE_NSPR=1], [MOZ_NATIVE_NSPR=])
4615 if test -n "$MOZ_NATIVE_NSPR"; then
4616 _SAVE_CFLAGS=$CFLAGS
4617 CFLAGS="$CFLAGS $NSPR_CFLAGS"
4618 AC_TRY_COMPILE([#include "prtypes.h"],
4619 [#ifndef PR_STATIC_ASSERT
4620 #error PR_STATIC_ASSERT not defined or requires including prlog.h
4622 [MOZ_NATIVE_NSPR=1],
4623 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT or including prtypes.h does not provide it]))
4624 CFLAGS=$_SAVE_CFLAGS
4626 if test "$OS_ARCH" = "WINCE"; then
4627 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4628 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4629 elif test "$OS_ARCH" = "WINNT"; then
4630 NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4631 if test -n "$GNU_CC"; then
4632 NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
4634 NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4637 NSPR_CFLAGS='`$(LIBXUL_DIST)/bin/nspr-config --prefix='${LIBXUL_DIST}' --includedir='${LIBXUL_DIST}'/include/nspr --cflags`'
4638 NSPR_LIBS='`$(LIBXUL_DIST)/bin/nspr-config --prefix='${LIBXUL_DIST}' --libdir='${LIBXUL_DIST}'/lib --libs`'
4642 dnl system libevent Support
4643 dnl ========================================================
4644 MOZ_ARG_WITH_STRING(system-libevent,
4645 [ --with-system-libevent=[PFX]
4646 Use system libevent [installed at prefix PFX]],
4647 LIBEVENT_DIR=$withval)
4649 _SAVE_CFLAGS=$CFLAGS
4650 _SAVE_LDFLAGS=$LDFLAGS
4652 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
4653 MOZ_NATIVE_LIBEVENT=
4655 if test "${LIBEVENT_DIR}" = "yes"; then
4658 CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
4659 LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
4660 AC_CHECK_HEADER(event.h,
4661 [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
4662 AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
4664 AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
4665 AC_CHECK_LIB(event, event_init,
4666 [MOZ_NATIVE_LIBEVENT=1
4667 MOZ_LIBEVENT_INCLUDES="${LIBEVENT_DIR}/include"
4668 MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
4669 [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_INCLUDES= MOZ_LIBEVENT_LIBS=])
4671 CFLAGS=$_SAVE_CFLAGS
4672 LDFLAGS=$_SAVE_LDFLAGS
4675 AC_SUBST(MOZ_NATIVE_LIBEVENT)
4676 AC_SUBST(MOZ_LIBEVENT_INCLUDES)
4677 AC_SUBST(MOZ_LIBEVENT_LIBS)
4679 dnl ========================================================
4680 dnl = If NSS was not detected in the system,
4681 dnl = use the one in the source tree (mozilla/security/nss)
4682 dnl ========================================================
4684 MOZ_ARG_WITH_BOOL(system-nss,
4685 [ --with-system-nss Use system installed NSS],
4688 if test -n "$_USE_SYSTEM_NSS"; then
4689 AM_PATH_NSS(3.12.9, [MOZ_NATIVE_NSS=1], [MOZ_NATIVE_NSS=])
4692 if test -n "$MOZ_NATIVE_NSS"; then
4693 NSS_LIBS="$NSS_LIBS -lcrmf"
4695 NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4697 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4698 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4699 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4700 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4701 \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX)"
4703 if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "WINCE" -o "$OS_ARCH" = "OS2"; then
4705 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4706 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(LIB_SUFFIX) \
4707 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(LIB_SUFFIX) \
4708 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(LIB_SUFFIX) \
4709 \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(LIB_SUFFIX)"
4711 NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION"
4715 dnl ======================
4717 dnl ======================
4719 AC_MSG_CHECKING([for YASM assembler])
4720 AC_CHECK_PROGS(YASM, yasm, "")
4722 if test -n "$YASM"; then
4723 dnl Pull out yasm's version string
4725 _YASM_VER_FILTER='s|.* \([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\).*|\1|p'
4728 YASM_VERSION=`yasm --version | sed -ne "$_YASM_VER_FILTER"`
4729 _YASM_MAJOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $1 }'`
4730 _YASM_MINOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $2 }'`
4731 _YASM_RELEASE=` echo ${YASM_VERSION} | $AWK -F\. '{ print $3 }'`
4732 _YASM_BUILD=` echo ${YASM_VERSION} | $AWK -F\. '{ print $4 }'`
4735 if test -z "$SKIP_LIBRARY_CHECKS"; then
4736 dnl system JPEG support
4737 dnl ========================================================
4738 MOZ_ARG_WITH_STRING(system-jpeg,
4739 [ --with-system-jpeg[=PFX]
4740 Use system libjpeg [installed at prefix PFX]],
4743 _SAVE_CFLAGS=$CFLAGS
4744 _SAVE_LDFLAGS=$LDFLAGS
4746 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4747 CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4748 LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4750 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4753 AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS)
4756 if test "$SYSTEM_JPEG" = 1; then
4757 LIBS="$JPEG_LIBS $LIBS"
4758 AC_TRY_COMPILE([ #include <stdio.h>
4759 #include <sys/types.h>
4760 #include <jpeglib.h> ],
4761 [ #if JPEG_LIB_VERSION < $MOZJPEG
4762 #error "Insufficient JPEG library version ($MOZJPEG required)."
4765 [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=])
4767 CFLAGS=$_SAVE_CFLAGS
4768 LDFLAGS=$_SAVE_LDFLAGS
4771 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$SYSTEM_JPEG" = 1; then
4772 JPEG_CFLAGS="-I${JPEG_DIR}/include"
4773 JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
4776 dnl system ZLIB support
4777 dnl ========================================================
4778 MOZ_ARG_WITH_STRING(system-zlib,
4779 [ --with-system-zlib[=PFX]
4780 Use system libz [installed at prefix PFX]],
4783 _SAVE_CFLAGS=$CFLAGS
4784 _SAVE_LDFLAGS=$LDFLAGS
4786 if test -n "${ZLIB_DIR}" -a "${ZLIB_DIR}" != "yes"; then
4787 CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
4788 LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
4790 if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
4793 AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"],
4794 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
4796 if test "$SYSTEM_ZLIB" = 1; then
4797 LIBS="$ZLIB_LIBS $LIBS"
4798 AC_TRY_COMPILE([ #include <stdio.h>
4800 #include <zlib.h> ],
4801 [ #if ZLIB_VERNUM < $MOZZLIB
4802 #error "Insufficient zlib version ($MOZZLIB required)."
4805 [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=])
4807 CFLAGS=$_SAVE_CFLAGS
4808 LDFLAGS=$_SAVE_LDFLAGS
4811 if test "${ZLIB_DIR}" -a -d "${ZLIB_DIR}" -a "$SYSTEM_ZLIB" = 1; then
4812 ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
4813 ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
4816 dnl system BZIP2 Support
4817 dnl ========================================================
4818 MOZ_ARG_WITH_STRING(system-bz2,
4819 [ --with-system-bz2[=PFX]
4820 Use system libbz2 [installed at prefix PFX]],
4823 _SAVE_CFLAGS=$CFLAGS
4824 _SAVE_LDFLAGS=$LDFLAGS
4826 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4827 CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4828 LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4830 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4833 AC_CHECK_LIB(bz2, BZ2_bzread, [SYSTEM_BZ2=1 BZ2_LIBS="-lbz2"],
4834 [SYSTEM_BZ2= BZ2_CFLAGS= BZ2_LIBS=])
4836 CFLAGS=$_SAVE_CFLAGS
4837 LDFLAGS=$_SAVE_LDFLAGS
4840 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$SYSTEM_BZ2" = 1; then
4841 BZ2_CFLAGS="-I${BZ2_DIR}/include"
4842 BZ2_LIBS="-L${BZ2_DIR}/lib ${BZ2_LIBS}"
4845 dnl system PNG Support
4846 dnl ========================================================
4847 MOZ_ARG_WITH_STRING(system-png,
4848 [ --with-system-png[=PFX]
4849 Use system libpng [installed at prefix PFX]],
4852 _SAVE_CFLAGS=$CFLAGS
4853 _SAVE_LDFLAGS=$LDFLAGS
4855 CFLAGS="$ZLIB_CFLAGS $CFLAGS"
4856 LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
4857 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4858 CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4859 LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4861 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4864 _SAVE_PNG_LIBS=$PNG_LIBS
4865 AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"],
4866 AC_MSG_ERROR([--with-system-png requested but no working libpng found]),
4868 AC_CHECK_LIB(png, png_get_acTL, ,
4869 AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]),
4872 if test "$SYSTEM_PNG" = 1; then
4873 LIBS="$PNG_LIBS $LIBS"
4874 AC_TRY_COMPILE([ #include <stdio.h>
4875 #include <sys/types.h>
4877 [ #if PNG_LIBPNG_VER < $MOZPNG
4878 #error "Insufficient libpng version ($MOZPNG required)."
4880 #ifndef PNG_UINT_31_MAX
4881 #error "Insufficient libpng version."
4884 AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4886 CFLAGS=$_SAVE_CFLAGS
4887 LDFLAGS=$_SAVE_LDFLAGS
4890 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
4891 PNG_CFLAGS="-I${PNG_DIR}/include"
4892 PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
4895 fi # SKIP_LIBRARY_CHECKS
4897 dnl system HunSpell Support
4898 dnl ========================================================
4899 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4900 [ --enable-system-hunspell
4901 Use system hunspell (located with pkgconfig)],
4904 if test -n "$SYSTEM_HUNSPELL"; then
4905 PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4908 AC_SUBST(SYSTEM_HUNSPELL)
4910 dnl ========================================================
4911 dnl Java SDK support
4912 dnl ========================================================
4914 MOZ_ARG_WITH_STRING(java-include-path,
4915 [ --with-java-include-path=dir
4916 Location of Java SDK headers],
4917 JAVA_INCLUDE_PATH=$withval)
4920 MOZ_ARG_WITH_STRING(java-bin-path,
4921 [ --with-java-bin-path=dir
4922 Location of Java binaries (java, javac, jar)],
4923 JAVA_BIN_PATH=$withval)
4925 dnl ========================================================
4929 dnl ========================================================
4931 MOZ_ARG_HEADER(Application)
4935 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4936 MOZ_BRANDING_DIRECTORY=
4937 MOZ_OFFICIAL_BRANDING=
4947 MOZ_AUTH_EXTENSION=1
4948 MOZ_NO_ACTIVEX_SUPPORT=1
4968 MOZ_PLAINTEXT_EDITOR_ONLY=
4970 MOZ_PREF_EXTENSIONS=1
4971 MOZ_PROFILELOCKING=1
4984 MOZ_TOOLKIT_SEARCH=1
4986 MOZ_UNIVERSALCHARDET=1
4988 MOZ_USE_NATIVE_UCONV=
4990 MOZ_XSLT_STANDALONE=
4996 MOZ_DISABLE_DOMCRYPTO=
5001 NECKO_PROTOCOLS_DEFAULT="about data file ftp http res viewsource wyciwyg"
5004 XPC_IDISPATCH_SUPPORT=
5008 *android*|*darwin*|*wince*|*winmo*)
5016 case "$target_os" in
5017 msvc*|mks*|cygwin*|mingw*)
5019 if test -z "$GNU_CC"; then
5020 if test "$MOZ_WINSDK_TARGETVER" -lt "06000000"; then
5024 if test -n "$NS_ENABLE_TSF"; then
5025 AC_DEFINE(NS_ENABLE_TSF)
5037 MOZ_THEME_FASTSTRIPE=1
5043 MOZ_ARG_ENABLE_STRING(application,
5044 [ --enable-application=APP
5048 content/xslt (Standalone Transformiix XSLT)
5049 netwerk (Standalone Necko)
5050 tools/update-packaging (AUS-related packaging tools)
5051 standalone (use this for standalone
5052 xpcom/xpconnect or to manually drive a build)],
5053 [ MOZ_BUILD_APP=$enableval ] )
5055 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
5056 [ --with-xulrunner-stub-name=appname Create the xulrunner stub with the given name],
5057 XULRUNNER_STUB_NAME=$withval)
5059 if test -z "$XULRUNNER_STUB_NAME"; then
5060 case "$target_os" in
5062 XULRUNNER_STUB_NAME=xulrunner
5065 XULRUNNER_STUB_NAME=xulrunner-stub
5068 AC_SUBST(XULRUNNER_STUB_NAME)
5070 if test -z "$MOZ_BUILD_APP"; then
5071 AC_MSG_ERROR([--enable-application=APP was not specified and is required.])
5073 # We have a valid application only if it has a build.mk file in its top
5075 if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
5076 AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
5080 # Allow the application to influence configure with a confvars.sh script.
5082 AC_MSG_CHECKING([if app-specific confvars.sh exists])
5083 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
5084 AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
5085 . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
5090 # Now is a good time to test for logic errors, define mismatches, etc.
5091 case "$MOZ_BUILD_APP" in
5093 if test "$LIBXUL_SDK"; then
5094 AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
5099 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
5100 # that haven't made a confvars.sh yet. Don't add new stuff here, use
5102 case "$MOZ_BUILD_APP" in
5104 AC_DEFINE(MOZ_PHOENIX)
5108 AC_DEFINE(MOZ_XULRUNNER)
5116 MOZ_APP_NAME=mozilla
5117 MOZ_APP_DISPLAYNAME=Mozilla
5118 MOZ_APP_VERSION=$MOZILLA_VERSION
5123 AC_SUBST(MOZ_BUILD_APP)
5124 AC_SUBST(MOZ_PHOENIX)
5125 AC_SUBST(MOZ_XULRUNNER)
5127 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
5129 dnl ========================================================
5131 dnl = Toolkit Options
5133 dnl ========================================================
5134 MOZ_ARG_HEADER(Toolkit Options)
5136 dnl ========================================================
5137 dnl = Select the default toolkit
5138 dnl ========================================================
5139 MOZ_ARG_ENABLE_STRING(default-toolkit,
5140 [ --enable-default-toolkit=TK
5141 Select default toolkit
5142 Platform specific defaults:
5144 Mac OS X - cairo-cocoa
5145 Neutrino/QNX - photon
5147 Win32/WinCE - cairo-windows
5148 Gtk2 with DirectFB - cairo-gtk2-dfb
5151 [ _DEFAULT_TOOLKIT=$enableval ],
5152 [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
5154 if test "$_DEFAULT_TOOLKIT" = "photon" \
5155 -o "$_DEFAULT_TOOLKIT" = "cairo-windows" \
5156 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
5157 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-dfb" \
5158 -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
5159 -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
5160 -o "$_DEFAULT_TOOLKIT" = "cairo-beos" \
5161 -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
5162 -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa" \
5163 -o "$_DEFAULT_TOOLKIT" = "cairo-android"
5165 dnl nglayout only supports building with one toolkit,
5166 dnl so ignore everything after the first comma (",").
5167 MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
5169 AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
5172 dnl ========================================================
5173 dnl = Enable the toolkit as needed =
5174 dnl ========================================================
5176 case "$MOZ_WIDGET_TOOLKIT" in
5179 AC_DEFINE(MOZ_WIDGET_PHOTON)
5183 MOZ_WIDGET_TOOLKIT=windows
5193 cairo-gtk2|cairo-gtk2-x11)
5194 MOZ_WIDGET_TOOLKIT=gtk2
5196 MOZ_ENABLE_XREMOTE=1
5204 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
5205 TK_LIBS='$(MOZ_GTK2_LIBS)'
5206 AC_DEFINE(MOZ_WIDGET_GTK2)
5211 MOZ_WIDGET_TOOLKIT=gtk2
5218 TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
5219 TK_LIBS='$(MOZ_GTK2_LIBS)'
5220 AC_DEFINE(MOZ_WIDGET_GTK2)
5221 if test "$no_x" != "yes"; then
5222 AC_MSG_WARN([Disabling X when DirectFB is specified.])
5229 MOZ_WIDGET_TOOLKIT=qt
5231 MOZ_ENABLE_XREMOTE=1
5240 TK_CFLAGS='$(MOZ_QT_CFLAGS)'
5241 TK_LIBS='$(MOZ_QT_LIBS)'
5242 AC_DEFINE(MOZ_WIDGET_QT)
5247 MOZ_WIDGET_TOOLKIT=beos
5249 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
5250 TK_LIBS='$(MOZ_CAIRO_LIBS)'
5254 MOZ_WIDGET_TOOLKIT=os2
5256 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
5257 TK_LIBS='$(MOZ_CAIRO_LIBS)'
5262 MOZ_WIDGET_TOOLKIT=cocoa
5263 AC_DEFINE(MOZ_WIDGET_COCOA)
5264 MOZ_USER_DIR="Mozilla"
5265 AC_DEFINE(XP_MACOSX)
5266 TK_LIBS='-framework QuartzCore -framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook -framework OpenGL'
5267 TK_CFLAGS="-DNO_X11"
5268 LDFLAGS="$LDFLAGS -framework Cocoa -lobjc"
5269 CFLAGS="$CFLAGS $TK_CFLAGS"
5270 CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
5271 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL'
5272 MOZ_FS_LAYOUT=bundle
5277 AC_DEFINE(MOZ_WIDGET_ANDROID)
5278 MOZ_WIDGET_TOOLKIT=android
5279 TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
5280 TK_LIBS='$(MOZ_CAIRO_LIBS)'
5287 AC_SUBST(MOZ_PDF_PRINTING)
5288 if test "$MOZ_PDF_PRINTING"; then
5289 PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
5290 AC_DEFINE(MOZ_PDF_PRINTING)
5293 if test "$MOZ_ENABLE_XREMOTE"; then
5294 AC_DEFINE(MOZ_ENABLE_XREMOTE)
5297 if test "$COMPILE_ENVIRONMENT"; then
5298 if test "$MOZ_ENABLE_GTK2"; then
5299 if test "$MOZ_X11"; then
5300 GDK_PACKAGES=gdk-x11-2.0
5301 elif test "$MOZ_DFB"; then
5302 PKG_CHECK_MODULES(MOZ_DFB, directfb >= 1.1.0)
5303 GDK_PACKAGES=directfb
5306 PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
5309 fi # COMPILE_ENVIRONMENT
5311 AC_SUBST(MOZ_FS_LAYOUT)
5313 dnl ========================================================
5314 dnl Use ARM userspace kernel helpers; tell NSPR to enable
5315 dnl their usage and use them in spidermonkey.
5316 dnl ========================================================
5317 MOZ_ARG_WITH_BOOL(arm-kuser,
5318 [ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
5320 if test -n "$USE_ARM_KUSER"; then
5321 AC_DEFINE(USE_ARM_KUSER)
5324 dnl ========================================================
5325 dnl = startup-notification support module
5326 dnl ========================================================
5328 if test "$MOZ_ENABLE_GTK2"
5330 MOZ_ENABLE_STARTUP_NOTIFICATION=
5332 MOZ_ARG_ENABLE_BOOL(startup-notification,
5333 [ --enable-startup-notification
5334 Enable startup-notification support (default: disabled) ],
5335 MOZ_ENABLE_STARTUP_NOTIFICATION=force,
5336 MOZ_ENABLE_STARTUP_NOTIFICATION=)
5337 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
5339 PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
5340 libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
5341 [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
5342 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
5344 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
5346 MOZ_ENABLE_STARTUP_NOTIFICATION=
5350 if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
5351 AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
5354 TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
5356 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
5357 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
5358 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
5360 dnl ========================================================
5362 dnl ========================================================
5363 if test "$MOZ_ENABLE_QT"
5365 MOZ_ARG_WITH_STRING(qtdir,
5366 [ --with-qtdir=\$dir Specify Qt directory ],
5369 if test -z "$QTDIR"; then
5370 PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtCore QtOpenGL)
5371 AC_CHECK_PROGS(HOST_MOC, $MOC moc, "")
5373 MOZ_QT_LIBS="-L$QTDIR/lib/ -lQtGui -lQtNetwork -lQtCore -lQtDBus -lQtXml -lQtOpenGL"
5375 MOZ_QT_CFLAGS="-DQT_SHARED"
5376 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include"
5377 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/Qt"
5378 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui"
5379 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtCore"
5380 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtNetwork"
5381 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtDBus"
5382 MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtXml"
5383 HOST_MOC="$QTDIR/bin/moc"
5385 if test -z "$HOST_MOC"; then
5386 AC_MSG_ERROR([No acceptable moc preprocessor found. Qt SDK is not installed or --with-qt is
5391 MOZ_ENABLE_QTNETWORK=
5392 PKG_CHECK_MODULES(_QTNETWORK, QtNetwork >= 4.7,
5393 MOZ_ENABLE_QTNETWORK=1,
5394 MOZ_ENABLE_QTNETWORK=)
5396 if test "$MOZ_ENABLE_QTNETWORK"; then
5397 MOZ_ENABLE_QTNETWORK=1
5398 AC_DEFINE(MOZ_ENABLE_QTNETWORK)
5402 AC_SUBST(GTK_CONFIG)
5406 AC_SUBST(MOZ_ENABLE_GTK2)
5407 AC_SUBST(MOZ_ENABLE_PHOTON)
5408 AC_SUBST(MOZ_ENABLE_QT)
5409 AC_SUBST(MOZ_ENABLE_QTNETWORK)
5410 AC_SUBST(MOZ_ENABLE_XREMOTE)
5411 AC_SUBST(MOZ_GTK2_CFLAGS)
5412 AC_SUBST(MOZ_GTK2_LIBS)
5413 AC_SUBST(MOZ_QT_CFLAGS)
5414 AC_SUBST(MOZ_QT_LIBS)
5415 AC_SUBST(MOZ_ENABLE_MEEGOTOUCH)
5422 dnl ========================================================
5424 dnl = Components & Features
5426 dnl ========================================================
5427 MOZ_ARG_HEADER(Components and Features)
5429 dnl ========================================================
5431 dnl ========================================================
5432 MOZ_ARG_ENABLE_STRING(ui-locale,
5433 [ --enable-ui-locale=ab-CD
5434 Select the user interface locale (default: en-US)],
5435 MOZ_UI_LOCALE=$enableval )
5436 AC_SUBST(MOZ_UI_LOCALE)
5438 dnl ========================================================
5439 dnl = Trademarked Branding
5440 dnl ========================================================
5441 MOZ_ARG_ENABLE_BOOL(official-branding,
5442 [ --enable-official-branding
5443 Enable Official mozilla.org Branding
5444 Do not distribute builds with
5445 --enable-official-branding unless you have
5446 permission to use trademarks per
5447 http://www.mozilla.org/foundation/trademarks/ .],
5449 if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
5450 AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
5452 MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
5453 MOZ_OFFICIAL_BRANDING=1
5455 ], MOZ_OFFICIAL_BRANDING=)
5457 AC_SUBST(MOZ_OFFICIAL_BRANDING)
5458 if test -n "$MOZ_OFFICIAL_BRANDING"; then
5459 AC_DEFINE(MOZ_OFFICIAL_BRANDING)
5462 MOZ_ARG_WITH_STRING(branding,
5463 [ --with-branding=dir Use branding from the specified directory.],
5464 MOZ_BRANDING_DIRECTORY=$withval)
5466 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
5467 if test -z "$REAL_BRANDING_DIRECTORY"; then
5468 REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
5471 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
5472 . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
5475 AC_SUBST(MOZ_BRANDING_DIRECTORY)
5477 dnl ========================================================
5478 dnl = Distribution ID
5479 dnl ========================================================
5480 MOZ_ARG_WITH_STRING(distribution-id,
5481 [ --with-distribution-id=ID
5482 Set distribution-specific id (default=org.mozilla)],
5483 [ val=`echo $withval`
5484 MOZ_DISTRIBUTION_ID="$val"])
5486 if test -z "$MOZ_DISTRIBUTION_ID"; then
5487 MOZ_DISTRIBUTION_ID="org.mozilla"
5490 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
5491 AC_SUBST(MOZ_DISTRIBUTION_ID)
5494 dnl ========================================================
5495 dnl complex text support off by default
5496 dnl ========================================================
5497 MOZ_ARG_DISABLE_BOOL(pango,
5498 [ --disable-pango Disable usage of Pango ],
5502 dnl ========================================================
5504 dnl ========================================================
5505 if test "$MOZ_ENABLE_GTK2"
5509 PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
5511 PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION pangocairo >= $PANGO_VERSION)
5512 AC_SUBST(MOZ_PANGO_CFLAGS)
5513 AC_SUBST(MOZ_PANGO_LIBS)
5514 if test "$MOZ_PANGO"
5516 AC_DEFINE(MOZ_PANGO)
5518 PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0 fontconfig)
5519 AC_SUBST(FT2_CFLAGS)
5524 if test "$MOZ_ENABLE_QT"
5526 if test "$MOZ_PANGO"
5528 PKG_CHECK_MODULES(MOZ_PANGO, [pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION pangocairo >= $PANGO_VERSION],
5530 AC_SUBST(MOZ_PANGO_CFLAGS)
5531 AC_SUBST(MOZ_PANGO_LIBS)
5532 AC_DEFINE(MOZ_PANGO)
5535 echo "Pango library not found, will use FT2 font engine"
5542 dnl ========================================================
5543 dnl = GnomeVFS, GIO and GConf support module
5544 dnl ========================================================
5548 dnl build the gnomevfs extension by default only when the
5549 dnl GTK2 toolkit is in use.
5550 if test "$MOZ_ENABLE_GTK2"
5552 MOZ_ENABLE_GNOMEVFS=1
5556 dnl ========================================================
5557 dnl = GnomeVFS support module
5558 dnl ========================================================
5559 MOZ_ARG_DISABLE_BOOL(gnomevfs,
5560 [ --disable-gnomevfs Disable GnomeVFS support ],
5561 MOZ_ENABLE_GNOMEVFS=,
5562 MOZ_ENABLE_GNOMEVFS=force)
5564 if test "$MOZ_ENABLE_GNOMEVFS"
5566 PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
5567 MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
5568 MOZ_ENABLE_GNOMEVFS=1
5569 AC_DEFINE(MOZ_ENABLE_GNOMEVFS)
5571 if test "$MOZ_ENABLE_GNOMEVFS" = "force"
5573 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
5575 MOZ_ENABLE_GNOMEVFS=
5578 if test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
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\>//'`
5585 AC_SUBST(MOZ_ENABLE_GNOMEVFS)
5586 AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
5587 AC_SUBST(MOZ_GNOMEVFS_LIBS)
5589 dnl ========================================================
5590 dnl = GIO support module
5591 dnl ========================================================
5592 MOZ_ARG_ENABLE_BOOL(gio,
5593 [ --enable-gio Enable GIO support (default: disabled)],
5594 MOZ_ENABLE_GIO=force,
5597 if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK2"
5599 PKG_CHECK_MODULES(MOZ_GIO, gio-2.0 >= $GIO_VERSION,[
5600 MOZ_GIO_LIBS=`echo $MOZ_GIO_LIBS | sed 's/-llinc\>//'`
5602 AC_DEFINE(MOZ_ENABLE_GIO)
5604 if test "$MOZ_ENABLE_GIO" = "force"
5606 AC_MSG_ERROR([* * * Could not find gio-2.0 >= $GIO_VERSION])
5612 AC_SUBST(MOZ_ENABLE_GIO)
5613 AC_SUBST(MOZ_GIO_CFLAGS)
5614 AC_SUBST(MOZ_GIO_LIBS)
5616 dnl ========================================================
5617 dnl = GConf support module
5618 dnl ========================================================
5619 if test "$MOZ_ENABLE_GCONF"
5621 PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION gobject-2.0 ,[
5622 MOZ_GCONF_LIBS=`echo $MOZ_GCONF_LIBS | sed 's/-llinc\>//'`
5625 if test "$MOZ_ENABLE_GCONF" = "force"
5627 AC_MSG_ERROR([* * * Could not find gconf-2.0 ])
5633 if test "$MOZ_ENABLE_GCONF"; then
5634 AC_DEFINE(MOZ_ENABLE_GCONF)
5637 AC_SUBST(MOZ_ENABLE_GCONF)
5638 AC_SUBST(MOZ_GCONF_CFLAGS)
5639 AC_SUBST(MOZ_GCONF_LIBS)
5642 dnl ========================================================
5643 dnl = libproxy support
5644 dnl ========================================================
5646 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
5648 MOZ_ENABLE_LIBPROXY=
5650 MOZ_ARG_ENABLE_BOOL(libproxy,
5651 [ --enable-libproxy Enable libproxy support ],
5652 MOZ_ENABLE_LIBPROXY=1,
5653 MOZ_ENABLE_LIBPROXY=)
5655 if test "$MOZ_ENABLE_LIBPROXY"
5657 PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
5658 AC_DEFINE(MOZ_ENABLE_LIBPROXY)
5661 AC_SUBST(MOZ_ENABLE_LIBPROXY)
5662 AC_SUBST(MOZ_LIBPROXY_CFLAGS)
5663 AC_SUBST(MOZ_LIBPROXY_LIBS)
5665 dnl ========================================================
5666 dnl = libnotify support
5667 dnl ========================================================
5669 if test "$MOZ_ENABLE_GTK2"
5671 MOZ_ENABLE_LIBNOTIFY=1
5673 MOZ_ARG_DISABLE_BOOL(libnotify,
5674 [ --disable-libnotify Disable libnotify support ],
5675 MOZ_ENABLE_LIBNOTIFY=,
5676 MOZ_ENABLE_LIBNOTIFY=1)
5678 if test "$MOZ_ENABLE_LIBNOTIFY"
5680 AC_DEFINE(MOZ_ENABLE_LIBNOTIFY)
5684 if test -z "$SKIP_LIBRARY_CHECKS"
5686 if test "$MOZ_ENABLE_GTK2"
5688 if test "$MOZ_ENABLE_LIBNOTIFY"
5690 PKG_CHECK_MODULES(MOZ_LIBNOTIFY, libnotify >= $LIBNOTIFY_VERSION)
5694 AC_SUBST(MOZ_ENABLE_LIBNOTIFY)
5695 AC_SUBST(MOZ_LIBNOTIFY_CFLAGS)
5696 AC_SUBST(MOZ_LIBNOTIFY_LIBS)
5698 dnl ========================================================
5699 dnl = GNOME component (mozgnome)
5700 dnl ========================================================
5702 # The GNOME component is built if one of
5703 # gnome-vfs, gio, gconf or libnotify is available.
5704 if test "$MOZ_ENABLE_GCONF" -o \
5705 "$MOZ_ENABLE_GNOMEVFS" -o \
5706 "$MOZ_ENABLE_GIO" -o \
5707 "$MOZ_ENABLE_LIBNOTIFY"; then
5708 MOZ_ENABLE_GNOME_COMPONENT=1
5710 MOZ_ENABLE_GNOME_COMPONENT=
5712 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5714 dnl ========================================================
5715 dnl = libgnomeui support module
5716 dnl ========================================================
5718 if test "$MOZ_ENABLE_GTK2"
5720 MOZ_ENABLE_GNOMEUI=1
5722 MOZ_ARG_DISABLE_BOOL(gnomeui,
5723 [ --disable-gnomeui Disable libgnomeui support (default: auto, optional at runtime) ],
5724 MOZ_ENABLE_GNOMEUI=,
5725 MOZ_ENABLE_GNOMEUI=force)
5727 if test "$MOZ_ENABLE_GNOMEUI"
5729 PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5731 MOZ_GNOMEUI_LIBS=`echo $MOZ_GNOMEUI_LIBS | sed 's/-llinc\>//'`
5732 MOZ_ENABLE_GNOMEUI=1
5734 if test "$MOZ_ENABLE_GNOMEUI" = "force"
5736 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5742 if test "$MOZ_ENABLE_GNOMEUI"; then
5743 AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5747 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5748 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5749 AC_SUBST(MOZ_GNOMEUI_LIBS)
5751 dnl ========================================================
5753 dnl ========================================================
5755 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
5759 MOZ_ARG_DISABLE_BOOL(dbus,
5760 [ --disable-dbus Disable dbus support ],
5764 if test "$MOZ_ENABLE_DBUS"
5766 PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
5767 PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5768 AC_DEFINE(MOZ_ENABLE_DBUS)
5771 AC_SUBST(MOZ_ENABLE_DBUS)
5772 AC_SUBST(MOZ_DBUS_CFLAGS)
5773 AC_SUBST(MOZ_DBUS_LIBS)
5774 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5775 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5777 dnl ========================================================
5778 dnl = Build Personal Security Manager
5779 dnl ========================================================
5780 MOZ_ARG_DISABLE_BOOL(crypto,
5781 [ --disable-crypto Disable crypto support (Personal Security Manager)],
5785 dnl ========================================================
5786 dnl = JS Debugger XPCOM component (js/jsd)
5787 dnl ========================================================
5788 MOZ_ARG_DISABLE_BOOL(jsd,
5789 [ --disable-jsd Disable JavaScript debug library],
5794 dnl ========================================================
5795 dnl = Disable IPC support for tabs and plugins
5796 dnl ========================================================
5797 MOZ_ARG_DISABLE_BOOL(ipc,
5798 [ --disable-ipc Disable IPC supports for tabs and plugins],
5802 if test -n "$MOZ_IPC"; then
5808 dnl ========================================================
5809 dnl = Enable IPDL's "expensive" unit tests
5810 dnl ========================================================
5813 MOZ_ARG_ENABLE_BOOL(ipdl-tests,
5814 [ --enable-ipdl-tests Enable expensive IPDL tests],
5818 if test -z "$MOZ_IPC" -a -n "$MOZ_IPDL_TESTS"; then
5819 AC_MSG_ERROR([--enable-ipdl-tests requires --enable-ipc])
5822 if test -n "$MOZ_IPDL_TESTS"; then
5823 AC_DEFINE(MOZ_IPDL_TESTS)
5826 AC_SUBST(MOZ_IPDL_TESTS)
5828 dnl ========================================================
5829 dnl = Disable plugin support
5830 dnl ========================================================
5831 MOZ_ARG_DISABLE_BOOL(plugins,
5832 [ --disable-plugins Disable plugins support],
5836 dnl ========================================================
5837 dnl = Disable building dbm
5838 dnl ========================================================
5839 MOZ_ARG_DISABLE_BOOL(dbm,
5840 [ --disable-dbm Disable building dbm],
5844 dnl bi-directional support always on
5848 dnl ========================================================
5849 dnl view source support on by default
5850 dnl ========================================================
5851 if test "$MOZ_VIEW_SOURCE"; then
5852 AC_DEFINE(MOZ_VIEW_SOURCE)
5855 dnl ========================================================
5856 dnl accessibility support on by default on all platforms
5858 dnl ========================================================
5859 MOZ_ARG_DISABLE_BOOL(accessibility,
5860 [ --disable-accessibility Disable accessibility support (off by default on OS X)],
5863 if test "$ACCESSIBILITY"; then
5864 AC_DEFINE(ACCESSIBILITY)
5867 if test -n "$ACCESSIBILITY" -a "$COMPILE_ENVIRONMENT" = "1"; then
5869 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5870 if test "$ac_cv_header_atlbase_h" = "no"; then
5871 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.])
5873 if test "$ac_cv_header_oleacc_idl" = "no"; then
5874 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.])
5880 dnl ========================================================
5881 dnl xpcom js loader support on by default
5882 dnl ========================================================
5883 if test "$MOZ_JSLOADER"; then
5884 AC_DEFINE(MOZ_JSLOADER)
5887 dnl ========================================================
5888 dnl Disable printing
5889 dnl ========================================================
5890 MOZ_ARG_DISABLE_BOOL(printing,
5891 [ --disable-printing Disable printing support],
5895 if test "$NS_PRINTING"; then
5896 AC_DEFINE(NS_PRINTING)
5897 AC_DEFINE(NS_PRINT_PREVIEW)
5899 dnl ========================================================
5900 dnl use native unicode converters
5901 dnl ========================================================
5902 MOZ_ARG_ENABLE_BOOL(native-uconv,
5903 [ --enable-native-uconv Enable iconv support],
5904 MOZ_USE_NATIVE_UCONV=1,
5905 MOZ_USE_NATIVE_UCONV= )
5906 if test "$MOZ_USE_NATIVE_UCONV"; then
5907 AC_DEFINE(MOZ_USE_NATIVE_UCONV)
5909 if test "$OS_ARCH" != "WINCE" -a "$OS_ARCH" != "WINNT" -a "$MOZ_USE_NATIVE_UCONV" -a "$ac_cv_func_iconv" != "yes"; then
5910 AC_MSG_ERROR([iconv() not found. Cannot enable native uconv support.])
5914 dnl ========================================================
5915 dnl Libeditor can be build as plaintext-only,
5916 dnl or as a full html and text editing component.
5917 dnl We build both by default.
5918 dnl ========================================================
5919 MOZ_ARG_ENABLE_BOOL(plaintext-editor-only,
5920 [ --enable-plaintext-editor-only
5921 Allow only plaintext editing],
5922 MOZ_PLAINTEXT_EDITOR_ONLY=1,
5923 MOZ_PLAINTEXT_EDITOR_ONLY= )
5924 dnl Note the #define is MOZILLA, not MOZ, for compat with the Mac build.
5925 AC_SUBST(MOZ_PLAINTEXT_EDITOR_ONLY)
5927 dnl ========================================================
5928 dnl = Disable Fast Load
5929 dnl ========================================================
5930 MOZ_ARG_DISABLE_BOOL(xpcom-fastload,
5931 [ --disable-xpcom-fastload
5932 Disable XPCOM fastload support],
5936 AC_SUBST(MOZ_NO_FAST_LOAD)
5938 if test -n "$MOZ_NO_FAST_LOAD"; then
5939 AC_DEFINE(MOZ_NO_FAST_LOAD)
5942 dnl ========================================================
5943 dnl = Enable Raw Codecs
5944 dnl ========================================================
5945 MOZ_ARG_ENABLE_BOOL(raw,
5946 [ --enable-raw Enable support for RAW media],
5950 if test -n "$MOZ_RAW"; then
5957 dnl ========================================================
5958 dnl = Disable Ogg Codecs
5959 dnl ========================================================
5960 MOZ_ARG_DISABLE_BOOL(ogg,
5961 [ --disable-ogg Disable support for OGG media (Theora video and Vorbis audio)],
5965 if test -n "$MOZ_OGG"; then
5969 case "$target_cpu" in
5978 dnl Checks for __attribute__(aligned()) directive
5979 AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
5980 [ac_cv_c_attribute_aligned],
5981 [ac_cv_c_attribute_aligned=0
5982 CFLAGS_save="${CFLAGS}"
5983 CFLAGS="${CFLAGS} -Werror"
5984 for ac_cv_c_attr_align_try in 64 32 16 8; do
5985 echo "trying $ac_cv_c_attr_align_try"
5987 [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
5988 [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
5989 if test "$ac_cv_c_attribute_aligned" != 0; then
5993 CFLAGS="${CFLAGS_save}"])
5994 if test "${ac_cv_c_attribute_aligned}" != "0"; then
5995 AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
5996 [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
6000 dnl ========================================================
6001 dnl = Disable VP8 decoder support
6002 dnl ========================================================
6003 MOZ_ARG_DISABLE_BOOL(webm,
6004 [ --disable-webm Disable support for WebM media (VP8 video and Vorbis audio)],
6008 dnl system libvpx Support
6009 dnl ========================================================
6010 MOZ_ARG_WITH_STRING(system-libvpx,
6011 [ --with-system-libvpx=[PFX]
6012 Use system libvpx [installed at prefix PFX]],
6013 LIBVPX_DIR=$withval)
6016 MOZ_LIBVPX_INCLUDES=
6019 if test -n "$MOZ_WEBM"; then
6022 if test -n "$LIBVPX_DIR" -a "$LIBVPX_DIR" != no; then
6023 _SAVE_CFLAGS=$CFLAGS
6024 _SAVE_LDFLAGS=$LDFLAGS
6026 if test "${LIBVPX_DIR}" = "yes"; then
6029 CFLAGS="-I${LIBVPX_DIR}/include $CFLAGS"
6030 LDFLAGS="-L${LIBVPX_DIR}/lib $LDFLAGS"
6031 AC_CHECK_HEADER(vpx/vpx_decoder.h,
6032 [if test ! -f "${LIBVPX_DIR}/include/vpx/vpx_decoder.h"; then
6033 AC_MSG_ERROR([vpx/vpx_decoder.h found, but is not in ${LIBVPX_DIR}/include])
6035 AC_MSG_ERROR([--with-system-libvpx requested but vpx/vpx_decoder.h not found]))
6036 AC_CHECK_LIB(vpx, vpx_codec_dec_init_ver,
6037 [MOZ_NATIVE_LIBVPX=1
6038 MOZ_LIBVPX_INCLUDES="-I${LIBVPX_DIR}/include"
6039 MOZ_LIBVPX_LIBS="-L${LIBVPX_DIR}/lib -lvpx"],
6040 ([--with-system-libvpx requested but symbol vpx_codec_dec_init_ver not found]))
6041 CFLAGS=$_SAVE_CFLAGS
6042 LDFLAGS=$_SAVE_LDFLAGS
6047 AC_SUBST(MOZ_NATIVE_LIBVPX)
6048 AC_SUBST(MOZ_LIBVPX_INCLUDES)
6049 AC_SUBST(MOZ_LIBVPX_LIBS)
6051 if test -n "$MOZ_WEBM" -a -z "$MOZ_NATIVE_LIBVPX"; then
6054 case "$target_cpu" in
6064 dnl Detect if we can use an assembler to compile optimized assembly for libvpx.
6065 dnl We currently require yasm on all x86 platforms and require yasm 1.1.0 on Win32.
6066 dnl We currently require gcc on all arm platforms.
6070 dnl See if we have assembly on this platform.
6071 case "$OS_ARCH:$CPU_ARCH" in
6073 VPX_ASFLAGS="-f elf32 -rnasm -pnasm"
6077 VPX_ASFLAGS="-f elf64 -rnasm -pnasm -DPIC"
6081 VPX_ASFLAGS="-f elf32 -rnasm -pnasm"
6085 VPX_ASFLAGS="-f elf64 -rnasm -pnasm -DPIC"
6089 VPX_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC"
6093 VPX_ASFLAGS="-f macho64 -rnasm -pnasm -DPIC"
6097 if test -z "$GNU_CC"; then
6098 VPX_ASFLAGS="-f x64 -rnasm -pnasm"
6103 if test -z "$GNU_CC"; then
6104 dnl Check for yasm 1.1 or greater.
6105 if test -n "$COMPILE_ENVIRONMENT" -a -z "$YASM"; then
6106 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.])
6107 elif test -n "$COMPILE_ENVIRONMENT" -a "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
6108 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.])
6110 VPX_ASFLAGS="-f win32 -rnasm -pnasm -DPIC"
6116 if test -n "$GNU_AS" ; then
6118 dnl These flags are a lie; they're just used to enable the requisite
6119 dnl opcodes; actual arch detection is done at runtime.
6120 VPX_ASFLAGS="-march=armv7-a -mfpu=neon"
6121 VPX_DASH_C_FLAG="-c"
6122 VPX_AS_CONVERSION='$(PERL) $(topsrcdir)/media/libvpx/build/make/ads2gas.pl'
6123 VPX_ASM_SUFFIX="$ASM_SUFFIX"
6128 if test -n "$COMPILE_ENVIRONMENT" -a -n "$VPX_X86_ASM" -a -z "$VPX_AS"; then
6129 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.])
6132 if test -n "$VPX_X86_ASM"; then
6133 AC_DEFINE(VPX_X86_ASM)
6134 elif test -n "$VPX_ARM_ASM"; then
6135 AC_DEFINE(VPX_ARM_ASM)
6137 AC_MSG_WARN([No assembler or assembly support for libvpx. Using unoptimized C routines.])
6141 dnl ========================================================
6142 dnl = Disable Wave decoder support
6143 dnl ========================================================
6144 MOZ_ARG_DISABLE_BOOL(wave,
6145 [ --disable-wave Disable Wave decoder support],
6149 if test -n "$MOZ_WAVE"; then
6155 dnl ========================================================
6156 dnl = Handle dependent SYDNEYAUDIO and MEDIA defines
6157 dnl ========================================================
6159 if test -n "$MOZ_SYDNEYAUDIO"; then
6160 AC_DEFINE(MOZ_SYDNEYAUDIO)
6163 if test -n "$MOZ_MEDIA"; then
6164 AC_DEFINE(MOZ_MEDIA)
6167 if test -n "$MOZ_VORBIS" -a -n "$MOZ_TREMOR"; then
6168 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/])
6171 if test -n "$MOZ_VORBIS"; then
6172 AC_DEFINE(MOZ_VORBIS)
6175 if test -n "$MOZ_TREMOR"; then
6176 AC_DEFINE(MOZ_TREMOR)
6179 dnl ========================================================
6180 dnl = Check alsa availability on Linux if using sydneyaudio
6181 dnl ========================================================
6183 dnl If using sydneyaudio with Linux, ensure that the alsa library is available
6184 if test -n "$MOZ_SYDNEYAUDIO"; then
6185 case "$target_os" in
6187 PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
6188 [echo "$MOZ_ALSA_PKG_ERRORS"
6189 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.)])])
6194 dnl ========================================================
6196 dnl ========================================================
6197 AC_ARG_ENABLE(splashscreen,
6198 [ --enable-splashscreen display splashscreen while loading (default=no)],
6199 [enable_splash="yes"],[enable_splash=""])
6200 if test "x$enable_splash" = "xyes"; then
6202 AC_DEFINE(MOZ_SPLASHSCREEN)
6204 AC_SUBST(MOZ_SPLASHSCREEN)
6206 dnl ========================================================
6207 dnl Permissions System
6208 dnl ========================================================
6209 MOZ_ARG_DISABLE_BOOL(permissions,
6210 [ --disable-permissions Disable permissions (popup and cookie blocking)],
6215 dnl ========================================================
6217 dnl ========================================================
6218 MOZ_ARG_DISABLE_BOOL(negotiateauth,
6219 [ --disable-negotiateauth Disable GSS-API negotiation ],
6220 MOZ_AUTH_EXTENSION=,
6221 MOZ_AUTH_EXTENSION=1 )
6223 dnl ========================================================
6225 dnl ========================================================
6226 MOZ_ARG_DISABLE_BOOL(xtf,
6227 [ --disable-xtf Disable XTF (pluggable xml tags) support],
6230 if test "$MOZ_XTF"; then
6234 dnl ========================================================
6235 dnl Pref extensions (autoconfig and system-pref)
6236 dnl ========================================================
6237 MOZ_ARG_DISABLE_BOOL(pref-extensions,
6238 [ --disable-pref-extensions
6239 Disable pref extensions such as autoconfig and
6241 MOZ_PREF_EXTENSIONS=,
6242 MOZ_PREF_EXTENSIONS=1 )
6244 dnl ========================================================
6245 dnl = Universalchardet
6246 dnl ========================================================
6247 MOZ_ARG_DISABLE_BOOL(universalchardet,
6248 [ --disable-universalchardet
6249 Disable universal encoding detection],
6250 MOZ_UNIVERSALCHARDET=,
6251 MOZ_UNIVERSALCHARDET=1 )
6253 dnl ========================================================
6255 dnl ========================================================
6262 MOZ_ARG_ENABLE_BOOL(javaxpcom,
6263 [ --enable-javaxpcom
6264 Enable Java-XPCOM bridge],
6270 if test -n "$JAVA_HOME"; then
6271 JAVA_HOME=`cygpath -u \`cygpath -m -s "$JAVA_HOME"\``
6275 if test -n "$JAVA_HOME"; then
6276 JAVA_HOME=`cd "$JAVA_HOME" && pwd`
6281 if test -n "${JAVA_BIN_PATH}"; then
6282 dnl Look for javac and jar in the specified path.
6283 JAVA_PATH="$JAVA_BIN_PATH"
6285 dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
6286 JAVA_PATH="$JAVA_HOME/bin:$PATH"
6289 MOZ_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
6290 MOZ_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
6291 MOZ_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
6293 if test -n "${JAVA_BIN_PATH}" -o "$OS_TARGET" = Android; then
6294 if test -z "$JAVA" -o "$JAVA" = ":" -o -z "$JAVAC" -o "$JAVAC" = ":" -o -z "$JAR" -o "$JAR" = ":"; then
6295 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}])
6299 if test -n "${MOZ_JAVAXPCOM}"; then
6300 if test -n "${JAVA_INCLUDE_PATH}"; then
6301 dnl Make sure jni.h exists in the given include path.
6302 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
6303 AC_MSG_ERROR([jni.h was not found in given include path $JAVA_INCLUDE_PATH.])
6306 case "$target_os" in
6308 dnl Default to java system location
6309 JAVA_INCLUDE_PATH=/System/Library/Frameworks/JavaVM.framework/Headers
6313 JAVA_INCLUDE_PATH="$JAVA_HOME/include"
6316 if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
6317 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.])
6322 dnl ========================================================
6323 dnl = ANGLE OpenGL->D3D translator for WebGL
6324 dnl = * only applies to win32
6325 dnl = * enabled by default (shipping build); requires explicit --disable to disable
6326 dnl ========================================================
6328 MOZ_DIRECTX_SDK_PATH=
6329 case "$target_os" in
6330 *msvc*|*mks*|*cygwin*|*mingw*)
6335 if test -n "$MOZ_ANGLE"; then
6336 MOZ_ARG_DISABLE_BOOL(angle,
6337 [ --disable-angle Disable building of ANGLE for WebGL->D3D translation],
6341 if test -n "$MOZ_ANGLE"; then
6342 if test -z "$_WIN32_MSVC"; then
6343 AC_MSG_ERROR([Building ANGLE requires MSVC. To build without ANGLE, reconfigure with --disable-angle.])
6346 AC_CHECK_HEADER(d3dx9.h, [], [MOZ_ANGLE=])
6348 if test -z "$MOZ_ANGLE"; then
6349 # Try again, but try to get the SDK path from the registry. We're going to hardcode
6350 # the February 2010 SDK, since that's the one that's installed on the tinderboxen.
6351 MOZ_DIRECTX_SDK_PATH=`reg query 'HKLM\Software\Microsoft\DirectX\Microsoft DirectX SDK (February 2010)' //v InstallPath | grep REG_SZ | sed 's, *, ,g' | cut -d' ' -f4-`
6352 if test -n "$MOZ_DIRECTX_SDK_PATH" ; then
6353 if test -f "$MOZ_DIRECTX_SDK_PATH"/include/d3dx9.h && test -f "$MOZ_DIRECTX_SDK_PATH"/lib/x86/dxguid.lib ; then
6354 AC_MSG_WARN([Found DirectX SDK in registry, using $MOZ_DIRECTX_SDK_PATH])
6360 if test -z "$MOZ_ANGLE"; then
6361 AC_MSG_WARN([Couldn't find d3dx9.h in your INCLUDE path, needed for ANGLE. Please install the February 2010 DirectX SDK, or make another version available in your LIB and INCLUDE path env variables. To explicitly build without ANGLE, reconfigure with --disable-angle.])
6362 AC_MSG_WARN([This will become an error in the future.])
6367 dnl ========================================================
6368 dnl = Breakpad crash reporting (on by default on supported platforms)
6369 dnl ========================================================
6372 i?86-*-mingw*|x86_64-*-mingw*)
6375 i?86-apple-darwin*|powerpc-apple-darwin*|x86_64-apple-darwin*)
6378 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
6389 MOZ_ARG_DISABLE_BOOL(crashreporter,
6390 [ --disable-crashreporter Disable breakpad crash reporting],
6392 MOZ_CRASHREPORTER=1)
6394 if test -n "$MOZ_CRASHREPORTER"; then
6395 AC_DEFINE(MOZ_CRASHREPORTER)
6397 if (test "$OS_TARGET" = "Linux" -o "$OS_ARCH" = "SunOS") && \
6398 test -z "$SKIP_LIBRARY_CHECKS"; then
6399 PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
6400 AC_SUBST(MOZ_GTHREAD_CFLAGS)
6401 AC_SUBST(MOZ_GTHREAD_LIBS)
6403 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.])])
6407 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
6408 [ --with-crashreporter-enable-percent=NN
6409 Enable sending crash reports by default on NN% of users. (default=100)],
6410 [ val=`echo $withval | sed 's/[^0-9]//g'`
6411 MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
6413 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
6414 MOZ_CRASHREPORTER_ENABLE_PERCENT=100
6416 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
6418 dnl ========================================================
6419 dnl = Enable compilation of specific extension modules
6420 dnl ========================================================
6422 MOZ_ARG_ENABLE_STRING(extensions,
6423 [ --enable-extensions Enable extensions],
6424 [ for option in `echo $enableval | sed 's/,/ /g'`; do
6425 if test "$option" = "yes" -o "$option" = "all"; then
6426 AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
6427 elif test "$option" = "no" -o "$option" = "none"; then
6429 elif test "$option" = "default"; then
6430 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
6431 elif test `echo "$option" | grep -c \^-` != 0; then
6432 option=`echo $option | sed 's/^-//'`
6433 MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
6435 MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
6438 MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
6440 if test -z "$MOZ_ENABLE_GNOMEVFS" -a -z "$MOZ_GNOMEVFS_LIBS" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6441 # Suppress warning on non-X11 platforms
6442 if test -n "$MOZ_X11"; then
6443 AC_MSG_WARN([Cannot build gnomevfs without required libraries. Removing gnomevfs from MOZ_EXTENSIONS.])
6445 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6448 dnl Do not build gnomevfs with libxul based apps
6449 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6450 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6453 if test -z "$MOZ_ENABLE_GIO" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6454 # Suppress warning on non-X11 platforms
6455 if test -n "$MOZ_X11"; then
6456 AC_MSG_WARN([Cannot build gio without required libraries. Removing gio from MOZ_EXTENSIONS.])
6458 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6461 dnl Do not build gio with libxul based apps
6462 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6463 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6466 if test -z "$MOZ_JSDEBUGGER" -a `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
6467 AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
6468 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
6471 dnl This might be temporary: build tridentprofile only on Windows
6472 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0 && test "$OS_ARCH" != "WINNT"; then
6473 AC_MSG_WARN([tridentprofile extension works only on Windows at this time. Removing tridentprofile from MOZ_EXTENSIONS.])
6474 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
6477 dnl cookie must be built before tridentprofile. put it at list's end.
6478 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0; then
6479 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
6480 MOZ_EXTENSIONS="$MOZ_EXTENSIONS tridentprofile"
6483 dnl xforms requires xtf
6484 if test -z "$MOZ_XTF" -a `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
6485 AC_MSG_WARN([Cannot build XForms without XTF support. Removing XForms from MOZ_EXTENSIONS.])
6486 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
6489 if test `echo "$MOZ_EXTENSIONS" | grep -c auth` -ne 0; then
6490 AC_MSG_WARN([auth is no longer an extension, use --disable-negotiateauth to disable.])
6491 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|auth||g'`
6494 if test `echo "$MOZ_EXTENSIONS" | grep -c 'cookie\|permissions'` -ne 0; then
6495 AC_MSG_WARN([cookie and permissions are no longer extensions, use --disable-permissions to disable.])
6496 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|cookie||g; s|permissions||g'`
6499 if test `echo "$MOZ_EXTENSIONS" | grep -c pref` -ne 0; then
6500 AC_MSG_WARN([pref is no longer an extension, use --disable-pref-extensions to disable.])
6501 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|pref||g'`
6504 if test `echo "$MOZ_EXTENSIONS" | grep -c universalchardet` -ne 0; then
6505 AC_MSG_WARN([universalchardet is no longer an extension, use --disable-universalchardet to disable.])
6506 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|universalchardet||g'`
6509 if test `echo "$MOZ_EXTENSIONS" | grep -c java` -ne 0; then
6510 AC_MSG_WARN([java is no longer an extension, use --enable-javaxpcom to enable.])
6511 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|java||g'`
6514 if test `echo "$MOZ_EXTENSIONS" | grep -c spellcheck` -ne 0; then
6515 AC_MSG_WARN([spellcheck is no longer an extension.])
6516 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|spellcheck||g'`
6520 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
6522 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
6523 dnl when trying to build a nonexistent extension.
6524 for extension in $MOZ_EXTENSIONS; do
6525 if test ! -d "${srcdir}/extensions/${extension}"; then
6526 AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
6530 dnl ========================================================
6531 dnl MathML on by default
6532 dnl ========================================================
6533 MOZ_ARG_DISABLE_BOOL(mathml,
6534 [ --disable-mathml Disable MathML support],
6537 if test "$MOZ_MATHML"; then
6538 AC_DEFINE(MOZ_MATHML)
6541 dnl ========================================================
6542 dnl Keeping AC_DEFINE(MOZ_SVG) for the moment in case of something needs it.
6543 dnl ========================================================
6546 dnl ========================================================
6548 dnl ========================================================
6550 MOZ_ARG_DISABLE_BOOL(smil,
6551 [ --disable-smil Disable SMIL animation support],
6554 if test -n "$MOZ_SMIL"; then
6558 dnl ========================================================
6559 dnl Build Freetype in the tree
6560 dnl ========================================================
6561 MOZ_ARG_ENABLE_BOOL(tree-freetype,
6562 [ --enable-tree-freetype Enable Tree FreeType],
6563 MOZ_TREE_FREETYPE=1,
6564 MOZ_TREE_FREETYPE= )
6565 if test -n "$MOZ_TREE_FREETYPE"; then
6566 if test -n "$_WIN32_MSVC"; then
6567 AC_ERROR("building with in-tree freetype is not supported on MSVC")
6569 AC_DEFINE(MOZ_TREE_FREETYPE)
6570 AC_SUBST(MOZ_TREE_FREETYPE)
6571 MOZ_ENABLE_CAIRO_FT=1
6572 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
6573 FT2_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6574 CAIRO_FT_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6575 FT2_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6576 CAIRO_FT_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6577 AC_DEFINE(HAVE_FT_BITMAP_SIZE_Y_PPEM)
6578 AC_DEFINE(HAVE_FT_GLYPHSLOT_EMBOLDEN)
6579 AC_DEFINE(HAVE_FT_LOAD_SFNT_TABLE)
6580 AC_SUBST(CAIRO_FT_CFLAGS)
6584 dnl ========================================================
6586 dnl ========================================================
6587 case "$target_os" in
6588 aix*|solaris*|linux*|msvc*|mks*|cygwin*|mingw*|os2*|wince*|winmo*)
6593 MOZ_ARG_DISABLE_BOOL(installer,
6594 [ --disable-installer Disable building of installer],
6597 if test -n "$MOZ_INSTALLER" -a "$OS_ARCH" = "WINNT"; then
6598 # Disable installer for Windows builds that use the new toolkit if the
6599 # required major version and minimum minor version of Unicode NSIS isn't in
6601 REQ_NSIS_MAJOR_VER=2
6602 MIN_NSIS_MINOR_VER=33
6603 MOZ_PATH_PROGS(MAKENSISU, $MAKENSISU makensisu-2.46 makensisu makensis)
6604 if test -z "$MAKENSISU" -o "$MAKENSISU" = ":"; then
6605 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.])
6608 MAKENSISU_VER=`"$MAKENSISU" -version 2>/dev/null | sed -e '/-Unicode/!s/.*//g' -e 's/^v\([0-9]\+\.[0-9]\+\)\-Unicode$/\1/g'`
6610 if test ! "$MAKENSISU_VER" = ""; then
6611 MAKENSISU_MAJOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $1 }'`
6612 MAKENSISU_MINOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $2 }'`
6614 AC_MSG_CHECKING([for Unicode NSIS with major version == $REQ_NSIS_MAJOR_VER and minor version >= $MIN_NSIS_MINOR_VER])
6615 if test "$MAKENSISU_VER" = "" ||
6616 test ! "$MAKENSISU_MAJOR_VER" = "$REQ_NSIS_MAJOR_VER" -o \
6617 ! "$MAKENSISU_MINOR_VER" -ge $MIN_NSIS_MINOR_VER; 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.])
6621 AC_MSG_RESULT([yes])
6622 MAKENSISU="${CYGWIN_WRAPPER} $MAKENSISU"
6625 AC_SUBST(MOZ_INSTALLER)
6627 AC_MSG_CHECKING([for tar archiver])
6628 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
6629 if test -z "$TAR"; then
6630 AC_MSG_ERROR([no tar archiver found in \$PATH])
6632 AC_MSG_RESULT([$TAR])
6635 AC_MSG_CHECKING([for wget])
6636 AC_CHECK_PROGS(WGET, wget, "")
6637 AC_MSG_RESULT([$WGET])
6640 dnl ========================================================
6642 dnl ========================================================
6644 MOZ_ARG_DISABLE_BOOL(updater,
6645 [ --disable-updater Disable building of updater],
6649 if test -n "$MOZ_UPDATER"; then
6650 AC_DEFINE(MOZ_UPDATER)
6653 # app update channel is 'default' when not supplied.
6654 MOZ_ARG_ENABLE_STRING([update-channel],
6655 [ --enable-update-channel=CHANNEL
6656 Select application update channel (default=default)],
6657 MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
6659 if test -z "$MOZ_UPDATE_CHANNEL"; then
6660 MOZ_UPDATE_CHANNEL=default
6662 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
6663 AC_SUBST(MOZ_UPDATE_CHANNEL)
6665 # tools/update-packaging is not checked out by default.
6666 MOZ_ARG_ENABLE_BOOL(update-packaging,
6667 [ --enable-update-packaging
6668 Enable tools/update-packaging],
6669 MOZ_UPDATE_PACKAGING=1,
6670 MOZ_UPDATE_PACKAGING= )
6671 AC_SUBST(MOZ_UPDATE_PACKAGING)
6673 dnl ========================================================
6675 dnl ========================================================
6677 MOZ_ARG_DISABLE_BOOL(xpconnect-idispatch,
6678 [ --disable-xpconnect-idispatch
6679 Disable building of xpconnect support for IDispatch
6681 XPC_IDISPATCH_SUPPORT=,
6682 XPC_IDISPATCH_SUPPORT=1)
6683 AC_SUBST(XPC_IDISPATCH_SUPPORT)
6685 MOZ_ARG_DISABLE_BOOL(activex,
6686 [ --disable-activex Disable building of ActiveX control (win32 only)],
6687 MOZ_NO_ACTIVEX_SUPPORT=1,
6688 MOZ_NO_ACTIVEX_SUPPORT= )
6689 AC_SUBST(MOZ_NO_ACTIVEX_SUPPORT)
6691 MOZ_ARG_ENABLE_BOOL(activex-scripting,
6692 [ --enable-activex-scripting
6693 Enable building of ActiveX scripting support (win32)],
6694 MOZ_ACTIVEX_SCRIPTING_SUPPORT=1,
6695 MOZ_ACTIVEX_SCRIPTING_SUPPORT=)
6696 AC_SUBST(MOZ_ACTIVEX_SCRIPTING_SUPPORT)
6698 if test -n "$MOZ_NO_ACTIVEX_SUPPORT" -a -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT";
6700 AC_MSG_ERROR([Cannot enable ActiveX scripting support when ActiveX support is disabled.])
6703 if test "$COMPILE_ENVIRONMENT" = "1"; then
6704 if test -n "$XPC_IDISPATCH_SUPPORT" -o -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
6706 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
6707 if test "$ac_cv_header_atlbase_h" = "no"; then
6708 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.])
6715 dnl ========================================================
6717 dnl ========================================================
6718 MOZ_ARG_ENABLE_BOOL(leaky,
6719 [ --enable-leaky Build leaky memory tool],
6724 dnl ========================================================
6725 dnl build the tests by default
6726 dnl ========================================================
6727 MOZ_ARG_DISABLE_BOOL(tests,
6728 [ --disable-tests Do not build test libraries & programs],
6732 dnl ========================================================
6733 dnl parental controls (for Windows Vista)
6734 dnl ========================================================
6735 MOZ_ARG_DISABLE_BOOL(parental-controls,
6736 [ --disable-parental-controls
6737 Do not build parental controls],
6738 MOZ_DISABLE_PARENTAL_CONTROLS=1,
6739 MOZ_DISABLE_PARENTAL_CONTROLS=)
6740 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
6741 AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
6744 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
6746 dnl ========================================================
6747 dnl = Disable DOMCrypto
6748 dnl ========================================================
6749 if test -n "$MOZ_DISABLE_DOMCRYPTO"; then
6750 AC_DEFINE(MOZ_DISABLE_DOMCRYPTO)
6753 dnl ========================================================
6755 dnl = Module specific options
6757 dnl ========================================================
6758 MOZ_ARG_HEADER(Individual module options)
6760 dnl ========================================================
6761 dnl = Disable feed handling components
6762 dnl ========================================================
6763 MOZ_ARG_DISABLE_BOOL(feeds,
6764 [ --disable-feeds Disable feed handling and processing components],
6767 if test -n "$MOZ_FEEDS"; then
6768 AC_DEFINE(MOZ_FEEDS)
6770 if test "$MOZ_BUILD_APP" = "browser"; then
6771 AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
6775 dnl ========================================================
6776 dnl = Enable mozStorage
6777 dnl ========================================================
6778 dnl Implicitly enabled by default if building calendar or places
6779 MOZ_ARG_ENABLE_BOOL(storage,
6780 [ --enable-storage Enable mozStorage module and related components],
6783 if test -n "$MOZ_STORAGE"; then
6784 AC_DEFINE(MOZ_STORAGE)
6787 dnl ========================================================
6788 dnl Check for sqlite
6789 dnl ========================================================
6792 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6793 [ --enable-system-sqlite Use system sqlite (located with pkgconfig)],
6794 MOZ_NATIVE_SQLITE=1,
6795 MOZ_NATIVE_SQLITE= )
6797 if test -z "$MOZ_NATIVE_SQLITE"
6800 SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,mozsqlite3,$(DIST)/lib)'
6802 dnl ============================
6803 dnl === SQLite Version check ===
6804 dnl ============================
6805 dnl Check to see if the system SQLite package is new enough.
6806 PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6808 dnl ==================================
6809 dnl === SQLITE_SECURE_DELETE check ===
6810 dnl ==================================
6811 dnl Check to see if the system SQLite package is compiled with
6812 dnl SQLITE_SECURE_DELETE enabled.
6813 AC_MSG_CHECKING(for SQLITE_SECURE_DELETE support in system SQLite)
6814 _SAVE_CFLAGS="$CFLAGS"
6815 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6817 LIBS="$LIBS $SQLITE_LIBS"
6818 AC_CACHE_VAL(ac_cv_sqlite_secure_delete,[
6820 #include "sqlite3.h"
6822 int main(int argc, char **argv){
6823 return !sqlite3_compileoption_used("SQLITE_SECURE_DELETE");
6825 ac_cv_sqlite_secure_delete=yes,
6826 ac_cv_sqlite_secure_delete=no,
6827 ac_cv_sqlite_secure_delete=no
6830 AC_MSG_RESULT($ac_cv_sqlite_secure_delete)
6831 CFLAGS="$_SAVE_CFLAGS"
6833 if test "x$ac_cv_sqlite_secure_delete" = "xno"; then
6834 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_SECURE_DELETE.])
6837 dnl ===============================
6838 dnl === SQLITE_THREADSAFE check ===
6839 dnl ===============================
6840 dnl Check to see if the system SQLite package is compiled with
6841 dnl SQLITE_THREADSAFE enabled.
6842 AC_MSG_CHECKING(for SQLITE_THREADSAFE support in system SQLite)
6843 _SAVE_CFLAGS="$CFLAGS"
6844 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6846 LIBS="$LIBS $SQLITE_LIBS"
6847 AC_CACHE_VAL(ac_cv_sqlite_threadsafe,[
6849 #include "sqlite3.h"
6851 int main(int argc, char **argv){
6852 return !sqlite3_compileoption_used("SQLITE_THREADSAFE=1");
6854 ac_cv_sqlite_threadsafe=yes,
6855 ac_cv_sqlite_threadsafe=no,
6856 ac_cv_sqlite_threadsafe=no
6859 AC_MSG_RESULT($ac_cv_sqlite_threadsafe)
6860 CFLAGS="$_SAVE_CFLAGS"
6862 if test "x$ac_cv_sqlite_threadsafe" = "xno"; then
6863 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_THREADSAFE.])
6866 dnl ================================
6867 dnl === SQLITE_ENABLE_FTS3 check ===
6868 dnl ================================
6869 dnl check to see if the system SQLite package is compiled with
6870 dnl SQLITE_ENABLE_FTS3 enabled.
6871 AC_MSG_CHECKING(for SQLITE_ENABLE_FTS3 support in system SQLite)
6872 _SAVE_CFLAGS="$CFLAGS"
6873 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6875 LIBS="$LIBS $SQLITE_LIBS"
6876 AC_CACHE_VAL(ac_cv_sqlite_enable_fts3,[
6878 #include "sqlite3.h"
6880 int main(int argc, char **argv){
6881 return !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3");
6883 ac_cv_sqlite_enable_fts3=yes,
6884 ac_cv_sqlite_enable_fts3=no,
6885 ac_cv_sqlite_enable_fts3=no
6888 AC_MSG_RESULT($ac_cv_sqlite_enable_fts3)
6889 CFLAGS="$_SAVE_CFLAGS"
6891 if test "x$ac_cv_sqlite_enable_fts3" = "xno"; then
6892 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_FTS3.])
6895 dnl =========================================
6896 dnl === SQLITE_ENABLE_UNLOCK_NOTIFY check ===
6897 dnl =========================================
6898 dnl check to see if the system SQLite package is compiled with
6899 dnl SQLITE_ENABLE_UNLOCK_NOTIFY enabled.
6900 AC_MSG_CHECKING(for SQLITE_ENABLE_UNLOCK_NOTIFY support in system SQLite)
6901 _SAVE_CFLAGS="$CFLAGS"
6902 CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6904 LIBS="$LIBS $SQLITE_LIBS"
6905 AC_CACHE_VAL(ac_cv_sqlite_enable_unlock_notify,[
6907 #include "sqlite3.h"
6909 int main(int argc, char **argv){
6910 return !sqlite3_compileoption_used("SQLITE_ENABLE_UNLOCK_NOTIFY");
6912 ac_cv_sqlite_enable_unlock_notify=yes,
6913 ac_cv_sqlite_enable_unlock_notify=no,
6914 ac_cv_sqlite_enable_unlock_notify=no
6917 AC_MSG_RESULT($ac_cv_sqlite_enable_unlock_notify)
6918 CFLAGS="$_SAVE_CFLAGS"
6920 if test "x$ac_cv_sqlite_enable_unlock_notify" = "xno"; then
6921 AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_UNLOCK_NOTIFY.])
6925 AC_SUBST(MOZ_NATIVE_SQLITE)
6927 dnl ========================================================
6928 dnl = Enable help viewer (off by default)
6929 dnl ========================================================
6930 if test -n "$MOZ_HELP_VIEWER"; then
6931 dnl Do this if defined in confvars.sh
6932 AC_DEFINE(MOZ_HELP_VIEWER)
6935 dnl ========================================================
6936 dnl = Enable safe browsing (anti-phishing)
6937 dnl ========================================================
6938 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6939 [ --enable-safe-browsing Enable safe browsing (anti-phishing) implementation],
6940 MOZ_SAFE_BROWSING=1,
6941 MOZ_SAFE_BROWSING= )
6942 if test -n "$MOZ_SAFE_BROWSING"; then
6943 AC_DEFINE(MOZ_SAFE_BROWSING)
6945 AC_SUBST(MOZ_SAFE_BROWSING)
6947 dnl ========================================================
6948 dnl = Enable faststart component
6949 dnl ========================================================
6950 MOZ_ARG_ENABLE_BOOL(faststart,
6951 [ --enable-faststart Enable the faststart component],
6954 if test -n "$MOZ_FASTSTART"; then
6955 AC_DEFINE(MOZ_FASTSTART)
6957 AC_SUBST(MOZ_FASTSTART)
6959 dnl ========================================================
6960 dnl = Enable url-classifier
6961 dnl ========================================================
6962 dnl Implicitly enabled by default if building with safe-browsing
6963 if test -n "$MOZ_SAFE_BROWSING"; then
6964 MOZ_URL_CLASSIFIER=1
6966 MOZ_ARG_ENABLE_BOOL(url-classifier,
6967 [ --enable-url-classifier Enable url classifier module],
6968 MOZ_URL_CLASSIFIER=1,
6969 MOZ_URL_CLASSIFIER= )
6970 if test -n "$MOZ_URL_CLASSIFIER"; then
6971 AC_DEFINE(MOZ_URL_CLASSIFIER)
6973 AC_SUBST(MOZ_URL_CLASSIFIER)
6975 dnl ========================================================
6976 dnl = Disable zipwriter
6977 dnl ========================================================
6978 MOZ_ARG_DISABLE_BOOL(zipwriter,
6979 [ --disable-zipwriter Disable zipwriter component],
6982 AC_SUBST(MOZ_ZIPWRITER)
6984 dnl ========================================================
6986 dnl ========================================================
6987 dnl superseded by QtNetwork starting from 4.7
6988 MOZ_ENABLE_LIBCONIC=1
6990 if test -n "$MOZ_ENABLE_QT"; then
6991 if test "$MOZ_ENABLE_QTNETWORK"; then
6992 MOZ_ENABLE_LIBCONIC=
6996 MOZ_ARG_DISABLE_BOOL(libconic,
6997 [ --disable-libconic Disable libconic],
6998 MOZ_ENABLE_LIBCONIC=,
6999 MOZ_ENABLE_LIBCONIC=1 )
7001 if test -n "$MOZ_ENABLE_LIBCONIC"; then
7002 PKG_CHECK_MODULES(LIBCONIC, conic,
7003 MOZ_ENABLE_LIBCONIC=1,
7004 MOZ_ENABLE_LIBCONIC=)
7006 if test "$MOZ_ENABLE_LIBCONIC"; then
7007 AC_DEFINE(MOZ_ENABLE_LIBCONIC)
7010 AC_SUBST(MOZ_ENABLE_LIBCONIC)
7011 AC_SUBST(LIBCONIC_CFLAGS)
7012 AC_SUBST(LIBCONIC_LIBS)
7014 dnl ========================================================
7016 dnl ========================================================
7018 MAEMO_SDK_TARGET_VER=-1
7020 MOZ_ARG_WITH_STRING(maemo-version,
7021 [ --with-maemo-version=MAEMO_SDK_TARGET_VER
7023 MAEMO_SDK_TARGET_VER=$withval)
7025 case "$MAEMO_SDK_TARGET_VER" in
7027 MOZ_PLATFORM_MAEMO=5
7031 MOZ_PLATFORM_MAEMO=6
7035 dnl We aren't compiling for Maemo, move on.
7038 AC_MSG_ERROR([Unknown Maemo Version. Try setting --with-maemo-version to 5 or 6.])
7042 if test $MOZ_PLATFORM_MAEMO; then
7043 AC_DEFINE_UNQUOTED([MOZ_PLATFORM_MAEMO], $MOZ_PLATFORM_MAEMO)
7045 if test -z "$MOZ_ENABLE_DBUS"; then
7046 AC_MSG_ERROR([DBus is required when building for Maemo])
7049 MOZ_GFX_OPTIMIZE_MOBILE=1
7051 MOZ_MAEMO_LIBLOCATION=
7053 if test $MOZ_PLATFORM_MAEMO = 5; then
7054 dnl if we have Xcomposite we should also have Xdamage and Xfixes
7055 AC_CHECK_HEADERS([X11/extensions/Xdamage.h], [],
7056 [AC_MSG_ERROR([Couldn't find X11/extensions/Xdamage.h which is required for composited plugins.])])
7057 AC_CHECK_LIB(Xcomposite, XCompositeRedirectWindow, [XCOMPOSITE_LIBS="-lXcomposite -lXdamage -lXfixes"],
7058 [MISSING_X="$MISSING_X -lXcomposite"], $XLIBS)
7060 AC_SUBST(XCOMPOSITE_LIBS)
7062 PKG_CHECK_MODULES(LIBHILDONMIME,libhildonmime, _LIB_FOUND=1, _LIB_FOUND=)
7063 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONMIME_LIBS"
7064 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONMIME_CFLAGS"
7065 if test -z "$_LIB_FOUND"; then
7066 AC_MSG_ERROR([Hildon Mime is required when building for Maemo])
7070 PKG_CHECK_MODULES(LIBOSSO,libosso, _LIB_FOUND=1, _LIB_FOUND=)
7071 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBOSSO_LIBS"
7072 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBOSSO_CFLAGS"
7073 if test -z "$_LIB_FOUND"; then
7074 AC_MSG_ERROR([LibOSSO is required when building for Maemo])
7077 PKG_CHECK_MODULES(LIBHILDONFM,hildon-fm-2, _LIB_FOUND=1, _LIB_FOUND=)
7078 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONFM_LIBS"
7079 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONFM_CFLAGS"
7080 if test -z "$_LIB_FOUND"; then
7081 AC_MSG_ERROR([Hildon FM-2 is required when building for Maemo])
7085 if test $MOZ_PLATFORM_MAEMO = 6; then
7086 PKG_CHECK_MODULES(LIBCONTENTACTION, contentaction-0.1, _LIB_FOUND=1, _LIB_FOUND=)
7087 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBCONTENTACTION_LIBS"
7088 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBCONTENTACTION_CFLAGS"
7089 if test -z "$_LIB_FOUND"; then
7090 AC_MSG_ERROR([libcontentaction is required when build for Maemo])
7094 PKG_CHECK_MODULES(MOZ_MEEGOTOUCH, meegotouchcore)
7095 MOZ_ENABLE_MEEGOTOUCH=1
7096 AC_DEFINE(MOZ_ENABLE_MEEGOTOUCH)
7097 MOZ_QT_CFLAGS="$MOZ_MEEGOTOUCH_CFLAGS $MOZ_QT_CFLAGS"
7098 MOZ_QT_LIBS="$MOZ_MEEGOTOUCH_LIBS $MOZ_QT_LIBS"
7101 PKG_CHECK_MODULES(LIBLOCATION,liblocation, _LIB_FOUND=1, _LIB_FOUND=)
7102 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBLOCATION_LIBS"
7103 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBLOCATION_CFLAGS"
7104 if test "$_LIB_FOUND"; then
7105 MOZ_MAEMO_LIBLOCATION=1
7106 AC_DEFINE(MOZ_MAEMO_LIBLOCATION)
7108 AC_MSG_WARN([Cannot liblocation-dev. Disabling Maemo geolocation.])
7110 AC_SUBST(MOZ_MAEMO_LIBLOCATION)
7112 PKG_CHECK_MODULES(LIBMEEGOTOUCHSHARE, ShareUiInterface-maemo-meegotouch >= 0.3.31 mdatauri, _LIB_FOUND=1, _LIB_FOUND=)
7113 MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBMEEGOTOUCHSHARE_LIBS"
7114 MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBMEEGOTOUCHSHARE_CFLAGS"
7115 if test "$_LIB_FOUND"; then
7116 MOZ_ENABLE_MEEGOTOUCHSHARE=1
7117 AC_DEFINE(MOZ_ENABLE_MEEGOTOUCHSHARE)
7119 AC_MSG_WARN([Cannot find maemo-meegotouch-interfaces-dev or libmdatauri-dev. Disabling meegotouch share ui.])
7121 AC_SUBST(MOZ_ENABLE_MEEGOTOUCHSHARE)
7123 AC_SUBST(MOZ_PLATFORM_MAEMO_LIBS)
7124 AC_SUBST(MOZ_PLATFORM_MAEMO_CFLAGS)
7127 dnl ========================================================
7128 dnl = Enable building the Thumb2 instruction set
7129 dnl ========================================================
7130 MOZ_ARG_ENABLE_BOOL(thumb2,
7131 [ --enable-thumb2 Enable Thumb2 instruction set],
7135 if test -n "$MOZ_THUMB2"; then
7136 case "$target_cpu" in
7138 if test "$GNU_CC"; then
7139 CFLAGS="$CFLAGS -march=armv7-a -mthumb -Wa, -march=armv7-a -Wa, -mthumb"
7140 CXXFLAGS="$CXXFLAGS -march=armv7-a -mthumb -Wa, -march=armv7-a -Wa, -mthumb"
7141 ASFLAGS="$ASFLAGS -march=armv7-a -mthumb"
7143 AC_MSG_ERROR([--enable-thumb2 is not supported for non-GNU toolchains])
7147 AC_MSG_ERROR([--enable-thumb2 is not supported for non-ARM CPU architectures])
7151 case "$target_cpu" in
7153 if test "$GNU_CC"; then
7154 CFLAGS="$CFLAGS -march=armv5te -mthumb-interwork -Wa, -march=armv5te -Wa, -mthumb-interwork"
7155 CXXFLAGS="$CXXFLAGS -march=armv5te -mthumb-interwork -Wa, -march=armv5te -Wa, -mthumb-interwork"
7156 ASFLAGS="$ASFLAGS -march=armv5te -mthumb-interwork"
7162 AC_SUBST(MOZ_THUMB2)
7164 dnl ========================================================
7165 dnl = faststripe theme
7166 dnl ========================================================
7167 MOZ_ARG_ENABLE_BOOL(faststripe,
7168 [ --enable-faststripe Use faststripe theme],
7169 MOZ_THEME_FASTSTRIPE=1,
7170 MOZ_THEME_FASTSTRIPE= )
7171 AC_SUBST(MOZ_THEME_FASTSTRIPE)
7173 dnl ========================================================
7175 dnl = Feature options that require extra sources to be pulled
7177 dnl ========================================================
7178 dnl MOZ_ARG_HEADER(Features that require extra sources)
7180 dnl ========================================================
7182 dnl = Debugging Options
7184 dnl ========================================================
7185 MOZ_ARG_HEADER(Debugging and Optimizations)
7187 dnl ========================================================
7188 dnl = Disable building with debug info.
7189 dnl = Debugging is OFF by default
7190 dnl ========================================================
7191 if test -z "$MOZ_DEBUG_FLAGS"; then
7192 MOZ_DEBUG_FLAGS="-g"
7195 MOZ_ARG_ENABLE_STRING(debug,
7196 [ --enable-debug[=DBG] Enable building with developer debug info
7197 (using compiler flags DBG)],
7198 [ if test "$enableval" != "no"; then
7200 if test -n "$enableval" -a "$enableval" != "yes"; then
7201 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
7202 _MOZ_DEBUG_FLAGS_SET=1
7209 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG -DTRACING"
7210 MOZ_ARG_WITH_STRING(debug-label,
7211 [ --with-debug-label=LABELS
7212 Define DEBUG_<value> for each comma-separated
7214 [ for option in `echo $withval | sed 's/,/ /g'`; do
7215 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${option}"
7218 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
7220 if test -n "$MOZ_DEBUG"; then
7221 AC_MSG_CHECKING([for valid debug flags])
7222 _SAVE_CFLAGS=$CFLAGS
7223 CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
7224 AC_TRY_COMPILE([#include <stdio.h>],
7225 [printf("Hello World\n");],
7228 AC_MSG_RESULT([$_results])
7229 if test "$_results" = "no"; then
7230 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
7232 CFLAGS=$_SAVE_CFLAGS
7235 dnl ========================================================
7236 dnl enable mobile optimizations
7237 dnl ========================================================
7238 MOZ_ARG_ENABLE_BOOL(mobile-optimize,
7239 [ --enable-mobile-optimize
7240 Enable mobile optimizations],
7241 MOZ_GFX_OPTIMIZE_MOBILE=1)
7243 AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
7245 if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
7246 AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
7249 dnl ========================================================
7250 dnl = Enable code optimization. ON by default.
7251 dnl ========================================================
7252 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
7253 MOZ_OPTIMIZE_FLAGS="-O"
7256 MOZ_ARG_ENABLE_STRING(optimize,
7257 [ --disable-optimize Disable compiler optimization
7258 --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
7259 [ if test "$enableval" != "no"; then
7261 if test -n "$enableval" -a "$enableval" != "yes"; then
7262 MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
7267 fi ], MOZ_OPTIMIZE=1)
7269 if test "$COMPILE_ENVIRONMENT"; then
7270 if test -n "$MOZ_OPTIMIZE"; then
7271 AC_MSG_CHECKING([for valid optimization flags])
7272 _SAVE_CFLAGS=$CFLAGS
7273 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
7274 AC_TRY_COMPILE([#include <stdio.h>],
7275 [printf("Hello World\n");],
7278 AC_MSG_RESULT([$_results])
7279 if test "$_results" = "no"; then
7280 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
7282 CFLAGS=$_SAVE_CFLAGS
7284 fi # COMPILE_ENVIRONMENT
7286 AC_SUBST(MOZ_OPTIMIZE)
7287 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
7288 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
7289 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
7291 dnl ========================================================
7292 dnl = (Deprecated) generation of debugger info for specific modules
7293 dnl ========================================================
7294 MOZ_ARG_ENABLE_STRING(debugger-info-modules,
7295 [ --enable-debugger-info-modules
7296 Enable/disable debugger info for specific modules],
7297 [ if test "$enableval" != "no"; then
7298 AC_MSG_WARN([--enable-debugger-info-modules is deprecated, use --enable-debug-symbols instead])
7302 dnl ========================================================
7303 dnl = Enable generation of debug symbols
7304 dnl ========================================================
7305 MOZ_ARG_ENABLE_STRING(debug-symbols,
7306 [ --enable-debug-symbols[=DBG]
7307 Enable debugging symbols (using compiler flags DBG)],
7308 [ if test "$enableval" != "no"; then
7310 if test -n "$enableval" -a "$enableval" != "yes"; then
7311 if test -z "$_MOZ_DEBUG_FLAGS_SET"; then
7312 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
7314 AC_MSG_ERROR([--enable-debug-symbols flags cannot be used with --enable-debug flags])
7319 if test -n "$MOZ_DEBUG" -o -n "$MOZ_DEBUG_SYMBOLS"; then
7320 AC_DEFINE(MOZ_DEBUG_SYMBOLS)
7321 export MOZ_DEBUG_SYMBOLS
7324 dnl ========================================================
7325 dnl = Disable any treating of compile warnings as errors
7326 dnl ========================================================
7327 MOZ_ARG_DISABLE_BOOL(warnings-as-errors,
7328 [ --disable-warnings-as-errors
7329 Disable treating of warnings as errors],
7330 MOZ_DISABLE_WARNINGS_AS_ERRORS=1,
7331 MOZ_DISABLE_WARNINGS_AS_ERRORS= )
7332 if test "$MOZ_DISABLE_WARNINGS_AS_ERRORS"; then
7333 WARNINGS_AS_ERRORS=''
7336 dnl ========================================================
7337 dnl = Disable runtime logging checks
7338 dnl ========================================================
7339 MOZ_ARG_DISABLE_BOOL(logging,
7340 [ --disable-logging Disable logging facilities],
7341 NS_DISABLE_LOGGING=1,
7342 NS_DISABLE_LOGGING= )
7343 if test "$NS_DISABLE_LOGGING"; then
7344 AC_DEFINE(NS_DISABLE_LOGGING)
7346 AC_DEFINE(MOZ_LOGGING)
7349 dnl ========================================================
7350 dnl = This will enable logging of addref, release, ctor, dtor.
7351 dnl ========================================================
7352 _ENABLE_LOGREFCNT=42
7353 MOZ_ARG_ENABLE_BOOL(logrefcnt,
7354 [ --enable-logrefcnt Enable logging of refcounts (default=debug) ],
7355 _ENABLE_LOGREFCNT=1,
7356 _ENABLE_LOGREFCNT= )
7357 if test "$_ENABLE_LOGREFCNT" = "1"; then
7358 AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
7359 elif test -z "$_ENABLE_LOGREFCNT"; then
7360 AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
7363 dnl ========================================================
7364 dnl = Enable trace malloc
7365 dnl ========================================================
7366 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
7367 MOZ_ARG_ENABLE_BOOL(trace-malloc,
7368 [ --enable-trace-malloc Enable malloc tracing],
7371 if test "$NS_TRACE_MALLOC"; then
7372 # Please, Mr. Linker Man, don't take away our symbol names
7373 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7375 AC_DEFINE(NS_TRACE_MALLOC)
7377 AC_SUBST(NS_TRACE_MALLOC)
7379 dnl ========================================================
7380 dnl = Enable jemalloc
7381 dnl ========================================================
7382 MOZ_ARG_ENABLE_BOOL(jemalloc,
7383 [ --enable-jemalloc Replace memory allocator with jemalloc],
7387 if test "$NS_TRACE_MALLOC"; then
7391 if test "$MOZ_MEMORY"; then
7393 dnl Don't try to run compiler tests on Windows
7394 if test "$OS_ARCH" = "WINNT"; then
7395 if test -z "$HAVE_64BIT_OS"; then
7396 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7398 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7401 AC_CHECK_SIZEOF([int *], [4])
7402 case "${ac_cv_sizeof_int_p}" in
7404 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7407 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7410 AC_MSG_ERROR([Unexpected pointer size])
7415 AC_DEFINE(MOZ_MEMORY)
7416 if test "x$MOZ_DEBUG" = "x1"; then
7417 AC_DEFINE(MOZ_MEMORY_DEBUG)
7419 dnl The generic feature tests that determine how to compute ncpus are long and
7420 dnl complicated. Therefore, simply define special cpp variables for the
7421 dnl platforms we have special knowledge of.
7424 AC_DEFINE(MOZ_MEMORY_DARWIN)
7427 AC_DEFINE(MOZ_MEMORY_BSD)
7430 AC_DEFINE(MOZ_MEMORY_LINUX)
7433 AC_DEFINE(MOZ_MEMORY_BSD)
7436 AC_DEFINE(MOZ_MEMORY_SOLARIS)
7438 *-msvc*|*-mks*|*-cygwin*|*-mingw*)
7439 AC_DEFINE(MOZ_MEMORY_WINDOWS)
7440 dnl This is sort of awful. Will revisit if we add support for more versions
7441 if test "$CC_VERSION" != "14.00.50727.762" -a "$CC_VERSION" != "15.00.30729.01"; then
7442 AC_MSG_ERROR([Building jemalloc requires exactly Visual C++ 2005 SP1 or 2008 SP1 currently.])
7444 if test -z "$WIN32_CRT_SRC_DIR"; then
7445 if test -z "$VCINSTALLDIR" -o ! -d "$VCINSTALLDIR"; then
7446 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).])
7448 WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src"
7452 case "${target_cpu}" in
7454 MOZ_CRT_CPU_ARCH=intel
7457 MOZ_CRT_CPU_ARCH=amd64
7460 AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7464 AC_SUBST(MOZ_CRT_CPU_ARCH)
7466 if test ! -d "$WIN32_CRT_SRC_DIR"; then
7467 AC_MSG_ERROR([Invalid Win32 CRT source directory: ${WIN32_CRT_SRC_DIR}])
7469 WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd -W`
7470 _objdir_win=`pwd -W`
7471 WIN32_CUSTOM_CRT_DIR="$_objdir_win/memory/jemalloc/crtsrc/build/$MOZ_CRT_CPU_ARCH"
7472 MOZ_MEMORY_LDFLAGS="-MANIFEST:NO -LIBPATH:\"$WIN32_CUSTOM_CRT_DIR\" -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt19 -DEFAULTLIB:mozcpp19"
7473 dnl Also pass this to NSPR/NSS
7474 DLLFLAGS="$DLLFLAGS $MOZ_MEMORY_LDFLAGS"
7478 AC_DEFINE(MOZ_MEMORY_WINCE)
7479 AC_DEFINE(MOZ_MEMORY_WINDOWS)
7480 if test -z "$WINCE_WINDOWS_MOBILE"; then
7481 AC_DEFINE(MOZ_MEMORY_WINCE6)
7485 AC_DEFINE(MOZ_MEMORY_WINCE)
7486 AC_DEFINE(MOZ_MEMORY_WINDOWS)
7489 AC_DEFINE(MOZ_MEMORY_LINUX)
7490 AC_DEFINE(MOZ_MEMORY_ANDROID)
7492 export WRAP_MALLOC_LIB="-L$_objdir/dist/lib -lmozalloc -lmozutils"
7493 WRAP_MALLOC_CFLAGS="-Wl,--wrap=dlopen -Wl,--wrap=dlclose -Wl,--wrap=dlerror -Wl,--wrap=dlsym -Wl,--wrap=dladdr"
7496 AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7500 if test "$OS_ARCH" != "Darwin"; then
7501 dnl NB: this must be kept in sync with jemalloc.h
7502 AC_DEFINE(HAVE_JEMALLOC_VALLOC)
7503 AC_DEFINE(HAVE_JEMALLOC_POSIX_MEMALIGN)
7504 AC_DEFINE(HAVE_JEMALLOC_MEMALIGN)
7507 AC_SUBST(MOZ_MEMORY)
7508 AC_SUBST(MOZ_MEMORY_LDFLAGS)
7509 AC_SUBST(WIN32_CRT_SRC_DIR)
7510 dnl Need to set this for make because NSS doesn't have configure
7513 dnl ========================================================
7514 dnl = Use malloc wrapper lib
7515 dnl ========================================================
7516 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
7517 [ --enable-wrap-malloc Wrap malloc calls (gnu linker only)],
7521 if test -n "$_WRAP_MALLOC"; then
7522 if test "$GNU_CC"; then
7523 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"
7524 MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) $(WRAP_MALLOC_LIB) -o $@'
7525 MKCSHLIB='$(CC) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) $(WRAP_MALLOC_LIB) -o $@'
7529 dnl ========================================================
7530 dnl = Location of malloc wrapper lib
7531 dnl ========================================================
7532 MOZ_ARG_WITH_STRING(wrap-malloc,
7533 [ --with-wrap-malloc=DIR Location of malloc wrapper library],
7534 WRAP_MALLOC_LIB=$withval)
7536 dnl ========================================================
7537 dnl = Use JS Call tracing
7538 dnl ========================================================
7539 MOZ_ARG_ENABLE_BOOL(trace-jscalls,
7540 [ --enable-trace-jscalls Enable JS call enter/exit callback (default=no)],
7541 MOZ_TRACE_JSCALLS=1,
7542 MOZ_TRACE_JSCALLS= )
7543 if test -n "$MOZ_TRACE_JSCALLS"; then
7544 AC_DEFINE(MOZ_TRACE_JSCALLS)
7547 dnl ========================================================
7549 dnl ========================================================
7550 MOZ_ARG_ENABLE_BOOL(tracevis,
7551 [ --enable-tracevis Enable TraceVis tracing tool (default=no)],
7554 if test -n "$MOZ_TRACEVIS"; then
7555 AC_DEFINE(MOZ_TRACEVIS)
7558 dnl ========================================================
7560 dnl ========================================================
7561 MOZ_ARG_ENABLE_BOOL(gctimer,
7562 [ --enable-gctimer Enable GC timer (default=no)],
7565 if test -n "$MOZ_GCTIMER"; then
7566 AC_DEFINE(MOZ_GCTIMER)
7569 dnl ========================================================
7571 dnl ========================================================
7572 MOZ_ARG_ENABLE_BOOL(valgrind,
7573 [ --enable-valgrind Enable Valgrind integration hooks (default=no)],
7576 if test -n "$MOZ_VALGRIND"; then
7577 AC_CHECK_HEADER([valgrind/valgrind.h], [],
7579 [--enable-valgrind specified but Valgrind is not installed]))
7580 AC_DEFINE(MOZ_VALGRIND)
7583 dnl ========================================================
7585 dnl ========================================================
7586 MOZ_ARG_ENABLE_BOOL(jprof,
7587 [ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof). Implies --enable-profiling.],
7590 if test -n "$MOZ_JPROF"; then
7592 AC_DEFINE(MOZ_JPROF)
7595 dnl ========================================================
7597 dnl ========================================================
7598 MOZ_ARG_ENABLE_BOOL(shark,
7599 [ --enable-shark Enable shark remote profiling (needs CHUD framework). Implies --enable-profiling.],
7602 if test -n "$MOZ_SHARK"; then
7604 AC_DEFINE(MOZ_SHARK)
7607 dnl ========================================================
7609 dnl ========================================================
7610 MOZ_ARG_ENABLE_BOOL(callgrind,
7611 [ --enable-callgrind Enable callgrind profiling],
7614 if test -n "$MOZ_CALLGRIND"; then
7615 AC_DEFINE(MOZ_CALLGRIND)
7618 dnl ========================================================
7620 dnl ========================================================
7621 MOZ_ARG_ENABLE_BOOL(vtune,
7622 [ --enable-vtune Enable vtune profiling. Implies --enable-profiling.],
7625 if test -n "$MOZ_VTUNE"; then
7627 AC_DEFINE(MOZ_VTUNE)
7630 dnl ========================================================
7631 dnl Zealous JavaScript GC
7632 dnl ========================================================
7633 MOZ_ARG_ENABLE_BOOL(gczeal,
7634 [ --enable-gczeal Enable zealous JavaScript GCing],
7637 if test -n "$JS_GC_ZEAL"; then
7638 AC_DEFINE(JS_GC_ZEAL)
7641 dnl ======================================================
7642 dnl = Enable compiling with ccache
7643 dnl ======================================================
7644 MOZ_ARG_WITH_STRING(ccache,
7645 [ --with-ccache[=path/to/ccache]
7646 Enable compiling with ccache],
7647 CCACHE=$withval, CCACHE="no")
7649 if test "$CCACHE" != "no"; then
7650 if test -z "$CCACHE" -o "$CCACHE" = "yes"; then
7653 if test ! -e "$CCACHE"; then
7654 AC_MSG_ERROR([$CCACHE not found])
7657 MOZ_PATH_PROGS(CCACHE, $CCACHE ccache)
7658 if test -z "$CCACHE" -o "$CCACHE" = ":"; then
7659 AC_MSG_ERROR([ccache not found])
7660 elif test -x "$CCACHE"; then
7664 AC_MSG_ERROR([$CCACHE is not executable])
7668 dnl ========================================================
7669 dnl = Enable static checking using gcc-dehydra
7670 dnl ========================================================
7672 MOZ_ARG_WITH_STRING(static-checking,
7673 [ --with-static-checking=path/to/gcc_dehydra.so
7674 Enable static checking of code using GCC-dehydra],
7675 DEHYDRA_PATH=$withval,
7678 if test -n "$DEHYDRA_PATH"; then
7679 if test ! -f "$DEHYDRA_PATH"; then
7680 AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
7682 AC_DEFINE(NS_STATIC_CHECKING)
7684 AC_SUBST(DEHYDRA_PATH)
7686 dnl ========================================================
7687 dnl = Enable stripping of libs & executables
7688 dnl ========================================================
7689 MOZ_ARG_ENABLE_BOOL(strip,
7690 [ --enable-strip Enable stripping of libs & executables ],
7694 dnl ========================================================
7695 dnl = Enable stripping of libs & executables when packaging
7696 dnl ========================================================
7697 MOZ_ARG_ENABLE_BOOL(install-strip,
7698 [ --enable-install-strip Enable stripping of libs & executables when packaging ],
7702 dnl ========================================================
7703 dnl = --enable-elf-dynstr-gc
7704 dnl ========================================================
7705 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
7706 [ --enable-elf-dynstr-gc Enable elf dynstr garbage collector (opt builds only)],
7707 USE_ELF_DYNSTR_GC=1,
7708 USE_ELF_DYNSTR_GC= )
7710 dnl ========================================================
7712 dnl = Profiling and Instrumenting
7714 dnl ========================================================
7715 MOZ_ARG_HEADER(Profiling and Instrumenting)
7717 dnl ========================================================
7718 dnl = Enable timeline service, which provides lightweight
7719 dnl = instrumentation of mozilla for performance measurement.
7720 dnl = Timeline is off by default.
7721 dnl ========================================================
7722 MOZ_ARG_ENABLE_BOOL(timeline,
7723 [ --enable-timeline Enable timeline services ],
7726 if test -n "$MOZ_TIMELINE"; then
7727 AC_DEFINE(MOZ_TIMELINE)
7730 dnl ========================================================
7731 dnl = Enable NS_FUNCTION_TIMER, which provides Function
7732 dnl = timing for identifying code bottlenecks
7733 dnl = NS_FUNCTION_TIMER is off by default.
7734 dnl ========================================================
7735 MOZ_ARG_ENABLE_BOOL(functiontimer,
7736 [ --enable-functiontimer Enable NS_FUNCTION_TIMER ],
7737 NS_FUNCTION_TIMER=1,
7738 NS_FUNCTION_TIMER= )
7739 if test -n "$NS_FUNCTION_TIMER"; then
7740 AC_DEFINE(NS_FUNCTION_TIMER)
7743 dnl ========================================================
7744 dnl Turn on reflow counting
7745 dnl ========================================================
7746 MOZ_ARG_ENABLE_BOOL(reflow-perf,
7747 [ --enable-reflow-perf Enable reflow performance tracing],
7750 if test -n "$MOZ_REFLOW_PERF"; then
7751 AC_DEFINE(MOZ_REFLOW_PERF)
7754 dnl ========================================================
7755 dnl Enable code size metrics.
7756 dnl ========================================================
7757 MOZ_ARG_ENABLE_BOOL(codesighs,
7758 [ --enable-codesighs Enable code size analysis tools],
7759 _ENABLE_CODESIGHS=1,
7760 _ENABLE_CODESIGHS= )
7761 if test -n "$_ENABLE_CODESIGHS"; then
7762 if test -d $srcdir/tools/codesighs; then
7765 AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
7769 dnl ========================================================
7770 dnl = Support for Quantify (Windows)
7771 dnl ========================================================
7772 MOZ_ARG_ENABLE_BOOL(quantify,
7773 [ --enable-quantify Enable Quantify support (Windows only) ],
7777 dnl ========================================================
7778 dnl = Support for demangling undefined symbols
7779 dnl ========================================================
7780 if test -z "$SKIP_LIBRARY_CHECKS"; then
7783 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
7787 # Demangle only for debug or trace-malloc builds
7788 MOZ_DEMANGLE_SYMBOLS=
7789 if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
7790 MOZ_DEMANGLE_SYMBOLS=1
7791 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
7793 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
7795 dnl ========================================================
7796 dnl = Support for gcc stack unwinding (from gcc 3.3)
7797 dnl ========================================================
7798 if test "$HAVE_GCC3_ABI" -a -z "$SKIP_LIBRARY_CHECKS"; then
7799 AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
7802 dnl ========================================================
7806 dnl ========================================================
7807 MOZ_ARG_HEADER(Misc. Options)
7809 dnl ========================================================
7810 dnl update xterm title
7811 dnl ========================================================
7812 MOZ_ARG_ENABLE_BOOL(xterm-updates,
7813 [ --enable-xterm-updates Update XTERM titles with current command.],
7817 dnl =========================================================
7819 dnl =========================================================
7820 MOZ_ARG_ENABLE_STRING([chrome-format],
7821 [ --enable-chrome-format=jar|flat|both|symlink|omni
7822 Select FORMAT of chrome files (default=jar)],
7823 MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
7825 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
7826 MOZ_CHROME_FILE_FORMAT=jar
7829 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
7830 test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
7831 test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
7832 test "$MOZ_CHROME_FILE_FORMAT" != "both" &&
7833 test "$MOZ_CHROME_FILE_FORMAT" != "omni"; then
7834 AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, symlink, or omni])
7837 dnl =========================================================
7838 dnl Omnijar packaging (bug 552121)
7839 dnl =========================================================
7840 dnl Omnijar packaging is compatible with flat packaging.
7841 dnl In unpackaged builds, omnijar looks for files as if
7842 dnl things were flat packaged. After packaging, all files
7843 dnl are loaded from a single jar. MOZ_CHROME_FILE_FORMAT
7844 dnl is set to flat since putting files into jars is only
7845 dnl done during packaging with omnijar.
7846 if test "$MOZ_CHROME_FILE_FORMAT" = "omni"; then
7848 AC_DEFINE(MOZ_OMNIJAR)
7849 MOZ_CHROME_FILE_FORMAT=flat
7850 elif test "$MOZ_CHROME_FILE_FORMAT" = "jar"; then
7851 AC_DEFINE(MOZ_CHROME_FILE_FORMAT_JAR)
7854 AC_SUBST(MOZ_OMNIJAR)
7856 dnl ========================================================
7857 dnl = Define default location for MOZILLA_FIVE_HOME
7858 dnl ========================================================
7859 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
7860 [ --with-default-mozilla-five-home
7861 Set the default value for MOZILLA_FIVE_HOME],
7862 [ val=`echo $withval`
7863 AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
7865 dnl ========================================================
7866 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
7867 dnl ========================================================
7868 MOZ_ARG_WITH_STRING(user-appdir,
7869 [ --with-user-appdir=DIR Set user-specific appdir (default=.mozilla)],
7870 [ val=`echo $withval`
7871 if echo "$val" | grep "\/" >/dev/null; then
7872 AC_MSG_ERROR("Homedir must be single relative path.")
7877 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
7879 dnl ========================================================
7880 dnl = Doxygen configuration
7881 dnl ========================================================
7882 dnl Use commas to specify multiple dirs to this arg
7883 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
7884 MOZ_ARG_WITH_STRING(doc-input-dirs,
7885 [ --with-doc-input-dirs=DIRS
7886 Header/idl dirs to create docs from],
7887 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7888 AC_SUBST(MOZ_DOC_INPUT_DIRS)
7890 dnl Use commas to specify multiple dirs to this arg
7891 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
7892 MOZ_ARG_WITH_STRING(doc-include-dirs,
7893 [ --with-doc-include-dirs=DIRS
7894 Include dirs to preprocess doc headers],
7895 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7896 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
7898 MOZ_DOC_OUTPUT_DIR='./dist/docs'
7899 MOZ_ARG_WITH_STRING(doc-output-dir,
7900 [ --with-doc-output-dir=DIR
7901 Dir to generate docs into],
7902 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
7903 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
7905 if test -z "$SKIP_COMPILER_CHECKS"; then
7906 dnl ========================================================
7908 dnl = Compiler Options
7910 dnl ========================================================
7911 MOZ_ARG_HEADER(Compiler Options)
7913 dnl ========================================================
7914 dnl Check for gcc -pipe support
7915 dnl ========================================================
7916 AC_MSG_CHECKING([for gcc -pipe support])
7917 if test -n "$GNU_CC" -a -n "$GNU_CXX" -a -n "$GNU_AS"; then
7918 echo '#include <stdio.h>' > dummy-hello.c
7919 echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
7920 ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
7921 cat dummy-hello.s 2> /dev/null | ${AS_BIN} -o dummy-hello.S - 2>&5
7922 if test $? = 0; then
7927 if test "$_res_as_stdin" = "yes"; then
7928 _SAVE_CFLAGS=$CFLAGS
7929 CFLAGS="$CFLAGS -pipe"
7930 AC_TRY_COMPILE( [ #include <stdio.h> ],
7931 [printf("Hello World\n");],
7932 [_res_gcc_pipe="yes"],
7933 [_res_gcc_pipe="no"] )
7934 CFLAGS=$_SAVE_CFLAGS
7936 if test "$_res_as_stdin" = "yes" -a "$_res_gcc_pipe" = "yes"; then
7938 CFLAGS="$CFLAGS -pipe"
7939 CXXFLAGS="$CXXFLAGS -pipe"
7943 rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
7944 AC_MSG_RESULT([$_res])
7949 dnl ========================================================
7950 dnl Profile guided optimization
7951 dnl ========================================================
7952 dnl Test for profiling options
7953 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
7955 dnl Provide a switch to disable PGO even when called via profiledbuild.
7956 MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
7957 [ --disable-profile-guided-optimization
7958 Don't build with PGO even if called via make profiledbuild],
7959 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
7960 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
7962 AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
7964 _SAVE_CFLAGS="$CFLAGS"
7965 CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
7967 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
7968 AC_TRY_COMPILE([], [return 0;],
7969 [ PROFILE_GEN_CFLAGS="-fprofile-generate"
7970 result="yes" ], result="no")
7971 AC_MSG_RESULT([$result])
7973 if test $result = "yes"; then
7974 PROFILE_GEN_LDFLAGS="-fprofile-generate"
7975 PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch -freorder-blocks-and-partition"
7976 PROFILE_USE_LDFLAGS="-fprofile-use"
7979 CFLAGS="$_SAVE_CFLAGS"
7981 if test -n "$INTEL_CC"; then
7982 PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
7983 PROFILE_GEN_LDFLAGS=
7984 PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
7985 PROFILE_USE_LDFLAGS=
7988 dnl Sun Studio on Solaris
7989 if test "$SOLARIS_SUNPRO_CC"; then
7990 PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
7991 PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
7992 PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
7993 PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
7996 AC_SUBST(PROFILE_GEN_CFLAGS)
7997 AC_SUBST(PROFILE_GEN_LDFLAGS)
7998 AC_SUBST(PROFILE_USE_CFLAGS)
7999 AC_SUBST(PROFILE_USE_LDFLAGS)
8003 dnl ========================================================
8004 dnl Test for -pedantic bustage
8005 dnl ========================================================
8006 MOZ_ARG_DISABLE_BOOL(pedantic,
8007 [ --disable-pedantic Issue all warnings demanded by strict ANSI C ],
8009 if test "$_PEDANTIC"; then
8010 _SAVE_CXXFLAGS=$CXXFLAGS
8011 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
8012 AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
8013 AC_TRY_COMPILE([$configure_static_assert_macros],
8014 [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
8015 result="no", result="yes" )
8016 AC_MSG_RESULT([$result])
8017 CXXFLAGS="$_SAVE_CXXFLAGS"
8021 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
8022 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
8025 AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic. Reconfigure using --disable-pedantic. ])
8030 dnl ========================================================
8031 dnl Test for correct temporary object destruction order
8032 dnl ========================================================
8033 dnl We want to make sure the compiler follows the C++ spec here as
8034 dnl xpcom and the string classes depend on it (bug 235381).
8035 AC_MSG_CHECKING([for correct temporary object destruction order])
8036 AC_TRY_RUN([ class A {
8037 public: A(int& x) : mValue(x) {}
8039 operator char**() { return 0; }
8040 private: int& mValue;
8042 void func(char **arg) {}
8053 result="yes", result="no", result="maybe")
8054 AC_MSG_RESULT([$result])
8056 if test "$result" = "no"; then
8057 AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
8060 dnl ========================================================
8061 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
8062 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
8063 dnl raw pointers in nsCOMPtr.h. (VC++ has the same bug.)
8064 dnl ========================================================
8065 _SAVE_CXXFLAGS=$CXXFLAGS
8066 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
8067 AC_CACHE_CHECK(for correct overload resolution with const and templates,
8068 ac_nscap_nonconst_opeq_bug,
8077 template <class T, class U>
8078 int operator==(const Pointer<T>& rhs, U* lhs)
8080 return rhs.myPtr == lhs;
8083 template <class T, class U>
8084 int operator==(const Pointer<T>& rhs, const U* lhs)
8086 return rhs.myPtr == lhs;
8094 ac_nscap_nonconst_opeq_bug="no",
8095 ac_nscap_nonconst_opeq_bug="yes")])
8096 CXXFLAGS="$_SAVE_CXXFLAGS"
8098 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
8099 AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
8101 fi # SKIP_COMPILER_CHECKS
8103 dnl ========================================================
8105 dnl Should be smarter and check that the compiler does indeed have rtti
8106 dnl ========================================================
8108 MOZ_ARG_ENABLE_BOOL(cpp-rtti,
8109 [ --enable-cpp-rtti Enable C++ RTTI ],
8110 [ _MOZ_USE_RTTI=1 ],
8113 if test "$_MOZ_USE_RTTI"; then
8114 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
8116 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
8119 AC_SUBST(_MOZ_RTTI_FLAGS_ON)
8121 dnl ========================================================
8122 dnl C++ exceptions (g++/VC/irix6/Sun only - for now)
8123 dnl Should be smarter and check that the compiler does indeed have exceptions
8124 dnl ========================================================
8125 MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
8126 [ --enable-cpp-exceptions Enable C++ exceptions ],
8127 [ _MOZ_CPP_EXCEPTIONS=1 ],
8128 [ _MOZ_CPP_EXCEPTIONS= ])
8130 if test "$_MOZ_CPP_EXCEPTIONS"; then
8131 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_ON
8132 AC_DEFINE(MOZ_CPP_EXCEPTIONS)
8134 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_OFF
8137 AC_SUBST(_MOZ_EXCEPTIONS_FLAGS_ON)
8139 # Irix & OSF native compilers do not like exception declarations
8140 # when exceptions are disabled
8141 if test -n "$MIPSPRO_CXX" -o -n "$COMPAQ_CXX" -o -n "$VACPP"; then
8142 AC_DEFINE(CPP_THROW_NEW, [])
8144 AC_DEFINE(CPP_THROW_NEW, [throw()])
8148 dnl ========================================================
8150 dnl = Build depencency options
8152 dnl ========================================================
8153 MOZ_ARG_HEADER(Build dependencies)
8155 dnl ========================================================
8156 dnl = Do not auto generate dependency info
8157 dnl ========================================================
8159 MOZ_ARG_DISABLE_BOOL(auto-deps,
8160 [ --disable-auto-deps Do not automatically generate dependency info],
8164 if test -n "$MOZ_AUTO_DEPS"; then
8165 dnl ========================================================
8166 dnl = Use mkdepend instead of $CC -MD for dependency generation
8167 dnl ========================================================
8169 MOZ_ARG_DISABLE_BOOL(md,
8170 [ --disable-md Do not use compiler-based dependencies ],
8173 [dnl Default is to turn on -MD if using GNU-compatible compilers
8174 if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
8177 dnl Default is to use -xM if using Sun Studio on Solaris
8178 if test "$SOLARIS_SUNPRO_CC"; then
8181 if test "$_cpp_md_flag"; then
8183 if test "$OS_ARCH" = "OpenVMS"; then
8184 _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(basename $(@F)).pp))'
8186 _DEPEND_CFLAGS='$(filter-out %/.pp,-MD -MF $(MDDEPDIR)/$(basename $(@F)).pp)'
8188 dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
8189 if test "$SOLARIS_SUNPRO_CC"; then
8194 dnl Don't override this for MSVC
8195 if test -z "$_WIN32_MSVC"; then
8196 _USE_CPP_INCLUDE_FLAG=
8197 _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
8198 _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
8200 echo '#include <stdio.h>' > dummy-hello.c
8202 CL_INCLUDES_PREFIX=`"${CC}" -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/^\([^:]*:[^:]*:\).*stdio.h$/\1/p'`
8204 if test -z "$CL_INCLUDES_PREFIX"; then
8205 AC_MSG_ERROR([Cannot find cl -showIncludes prefix.])
8207 AC_SUBST(CL_INCLUDES_PREFIX)
8209 _topsrcdirwin=`cd \`dirname $0\`; pwd -W`
8210 dnl cl.py provides dependency generation for MSVC
8211 CC_WRAPPER="$PYTHON -O $_topsrcdirwin/build/cl.py"
8212 CXX_WRAPPER="$PYTHON -O $_topsrcdirwin/build/cl.py"
8218 AC_SUBST(MOZ_AUTO_DEPS)
8219 AC_SUBST(COMPILER_DEPEND)
8221 AC_SUBST(CC_WRAPPER)
8222 AC_SUBST(CXX_WRAPPER)
8225 dnl ========================================================
8227 dnl = Static Build Options
8229 dnl ========================================================
8230 MOZ_ARG_HEADER(Static build options)
8232 MOZ_ARG_ENABLE_BOOL(static,
8233 [ --enable-static Enable building of internal static libs],
8234 BUILD_STATIC_LIBS=1,
8237 MOZ_ARG_ENABLE_BOOL(libxul,
8238 [ --enable-libxul Enable building of libxul],
8239 MOZ_ENABLE_LIBXUL=1,
8242 # split JS out by default to avoid VS2005 PGO crash (bug 591836).
8243 if test "$OS_ARCH" = "WINNT"; then
8247 MOZ_ARG_ENABLE_BOOL(shared-js,
8248 [ --enable-shared-js
8249 Create a shared JavaScript library.],
8253 if test -z "$MOZ_ENABLE_LIBXUL"; then
8254 dnl --disable-libxul implies shared js
8258 if test -n "$ENABLE_SHARED_JS"; then
8260 MOZ_JS_LIBS=$MOZ_JS_SHARED_LIBS
8262 MOZ_JS_LIBS=$MOZ_JS_STATIC_LIBS
8263 AC_DEFINE(MOZ_STATIC_JS)
8265 AC_SUBST(JS_SHARED_LIBRARY)
8267 if test -n "$MOZ_STATIC_BUILD_UNSUPPORTED" -a -n "$BUILD_STATIC_LIBS"; then
8268 AC_MSG_ERROR([--enable-static is not supported for building $MOZ_APP_NAME. You probably want --enable-libxul.])
8271 if test -n "$MOZ_ENABLE_LIBXUL" -a -n "$BUILD_STATIC_LIBS"; then
8272 AC_MSG_ERROR([--enable-libxul is not compatible with --enable-static])
8275 if test -n "$MOZ_IPC" -a -z "$MOZ_ENABLE_LIBXUL"; then
8276 AC_MSG_ERROR([--enable-ipc requires --enable-libxul])
8279 if test -z "$MOZ_ENABLE_LIBXUL" -a -n "$MOZ_OMNIJAR"; then
8280 AC_MSG_ERROR([Omnijar packaging is incompatible with --disable-libxul. Please either --enable-libxul or --enable-chrome-format=jar|flat|symlink]);
8283 AC_SUBST(LIBXUL_LIBS)
8285 if test -n "$MOZ_ENABLE_LIBXUL"; then
8286 XPCOM_LIBS="$LIBXUL_LIBS"
8287 AC_DEFINE(MOZ_ENABLE_LIBXUL)
8289 if test -n "$BUILD_STATIC_LIBS"; then
8290 AC_DEFINE(MOZ_STATIC_BUILD)
8292 XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS"
8295 dnl ========================================================
8297 dnl = Standalone module options
8299 dnl ========================================================
8300 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
8302 dnl Check for GLib and libIDL.
8303 dnl ========================================================
8306 if test -z "$COMPILE_ENVIRONMENT"; then
8307 SKIP_IDL_CHECK="yes"
8310 dnl = Allow users to disable libIDL checking for standalone modules
8311 MOZ_ARG_WITHOUT_BOOL(libIDL,
8312 [ --without-libIDL Skip check for libIDL (standalone modules only)],
8313 SKIP_IDL_CHECK="yes")
8315 if test -z "$CROSS_COMPILE"; then
8316 if test -z "$HOST_LIBIDL_CONFIG"; then
8317 HOST_LIBIDL_CONFIG="$LIBIDL_CONFIG"
8319 if test -z "$HOST_LIBIDL_PREFIX"; then
8320 HOST_LIBIDL_PREFIX="$LIBIDL_PREFIX"
8324 if test "$SKIP_IDL_CHECK" = "no"
8328 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
8329 if test -n "$GLIB_PREFIX"; then
8330 _GLIB_PREFIX_DIR=`cd $GLIB_PREFIX && pwd -W`
8331 if test "$?" = "0"; then
8332 if test `echo ${PATH}: | grep -ic "$_GLIB_PREFIX_DIR/bin:"` = 0; then
8333 AC_MSG_ERROR([GLIB_PREFIX must be in your \$PATH.])
8335 _GLIB_PREFIX_DIR=`$CYGPATH_W $_GLIB_PREFIX_DIR | $CYGPATH_S`
8337 AC_MSG_ERROR([GLIB_PREFIX is set but "${GLIB_PREFIX}" is not a directory.])
8340 _GLIB_PREFIX_DIR=$MOZ_TOOLS_DIR
8342 if test ! -f "${_GLIB_PREFIX_DIR}/include/glib.h"; then
8343 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/include/glib.h .])
8345 GLIB_CFLAGS="-I${_GLIB_PREFIX_DIR}/include"
8346 if test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"; then
8347 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"
8348 elif test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"; then
8349 GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"
8351 AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/lib/glib-1.2.lib or $_GLIB_PREFIX_DIR/lib/glib-1.2_s.lib])
8354 if test -n "$HOST_LIBIDL_PREFIX"; then
8355 _LIBIDL_PREFIX_DIR=`cd $HOST_LIBIDL_PREFIX && pwd -W`
8356 if test "$?" = "0"; then
8357 if test `echo ${PATH}: | grep -ic "$_LIBIDL_PREFIX_DIR/bin:"` = 0; then
8358 AC_MSG_ERROR([LIBIDL_PREFIX must be in your \$PATH.])
8360 _LIBIDL_PREFIX_DIR=`$CYGPATH_W $_LIBIDL_PREFIX_DIR | $CYGPATH_S`
8362 AC_MSG_ERROR([LIBIDL_PREFIX is set but "${LIBIDL_PREFIX}" is not a directory.])
8365 _LIBIDL_PREFIX_DIR=$MOZ_TOOLS_DIR
8367 if test ! -f "${_LIBIDL_PREFIX_DIR}/include/libIDL/IDL.h"; then
8368 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/include/libIDL/IDL.h .])
8370 HOST_LIBIDL_CFLAGS="-I${_LIBIDL_PREFIX_DIR}/include ${GLIB_CFLAGS}"
8371 if test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"; then
8372 HOST_LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"
8374 elif test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"; then
8375 HOST_LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"
8377 AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/lib/libidl-0.6.lib or $_LIBIDL_PREFIX_DIR/lib/libidl-0.6_s.lib])
8379 HOST_LIBIDL_LIBS="${HOST_LIBIDL_LIBS} ${GLIB_LIBS}"
8384 if test -z "$_LIBIDL_FOUND"; then
8385 if test "$MACOS_SDK_DIR"; then
8386 dnl xpidl, and therefore libIDL, is only needed on the build host.
8387 dnl Don't build it against the SDK, as that causes problems.
8388 _MACSAVE_CFLAGS="$CFLAGS"
8389 _MACSAVE_LIBS="$LIBS"
8390 _MACSAVE_LDFLAGS="$LDFLAGS"
8391 _MACSAVE_NEXT_ROOT="$NEXT_ROOT"
8393 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"`
8394 LIBS=`echo $LIBS|sed -e "s?-L${MACOS_SDK_DIR}/usr/lib[^ ]*??g"`
8395 LDFLAGS=`echo $LDFLAGS|sed -e "s?-Wl,-syslibroot,${MACOS_SDK_DIR}??g"`
8400 PKG_CHECK_MODULES(HOST_LIBIDL, libIDL-2.0 >= 0.8.0 glib-2.0 gobject-2.0, _LIBIDL_FOUND=1,_LIBIDL_FOUND=)
8403 dnl if no gtk/libIDL1 or gtk2/libIDL2 combination was found, fall back
8404 dnl to either libIDL1 or libIDL2.
8405 if test -z "$_LIBIDL_FOUND"; then
8406 AM_PATH_LIBIDL($LIBIDL_VERSION,_LIBIDL_FOUND=1)
8407 if test -z "$_LIBIDL_FOUND"; then
8408 PKG_CHECK_MODULES(HOST_LIBIDL, libIDL-2.0 >= 0.8.0,_LIBIDL_FOUND=1)
8412 dnl If we don't have a libIDL config program & not cross-compiling,
8413 dnl look for orbit-config instead.
8415 if test -z "$_LIBIDL_FOUND" -a -z "$CROSS_COMPILE"; then
8416 MOZ_PATH_PROGS(ORBIT_CONFIG, $ORBIT_CONFIG orbit-config)
8417 if test -n "$ORBIT_CONFIG"; then
8418 AC_MSG_CHECKING([for ORBit libIDL usability])
8419 _ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags`
8420 _ORBIT_LIBS=`${ORBIT_CONFIG} client --libs`
8421 _ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}`
8422 _ORBIT_LIB_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-L/); } }' -- ${_ORBIT_LIBS}`
8423 HOST_LIBIDL_CFLAGS="$_ORBIT_INC_PATH"
8424 HOST_LIBIDL_LIBS="$_ORBIT_LIB_PATH -lIDL -lglib"
8426 _SAVE_CFLAGS="$CFLAGS"
8428 CFLAGS="$HOST_LIBIDL_CFLAGS $CFLAGS"
8429 LIBS="$HOST_LIBIDL_LIBS $LIBS"
8432 #include <libIDL/IDL.h>
8435 s=strdup(IDL_get_libver_string());
8443 [HOST_LIBIDL_CFLAGS=
8448 AC_MSG_RESULT($result)
8449 CFLAGS="$_SAVE_CFLAGS"
8453 if test -z "$_LIBIDL_FOUND"; then
8454 AC_MSG_ERROR([libIDL not found.
8455 libIDL $LIBIDL_VERSION or higher is required.])
8457 if test "$MACOS_SDK_DIR"; then
8458 CFLAGS="$_MACSAVE_CFLAGS"
8459 LIBS="$_MACSAVE_LIBS"
8460 LDFLAGS="$_MACSAVE_LDFLAGS"
8461 if test -n "$_MACSAVE_NEXT_ROOT" ; then
8462 export NEXT_ROOT="$_MACSAVE_NEXT_ROOT"
8467 if test -n "$CROSS_COMPILE"; then
8469 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
8470 if test -n "$GLIB_PREFIX"; then
8471 GLIB_CFLAGS="-I${GLIB_PREFIX}/include"
8472 if test -f "${GLIB_PREFIX}/lib/glib-1.2_s.lib"; then
8473 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2_s.lib"
8474 elif test -f "${GLIB_PREFIX}/lib/glib-1.2.lib"; then
8475 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2.lib"
8477 AC_MSG_ERROR([Cannot find $GLIB_PREFIX/lib/glib-1.2.lib or $GLIB_PREFIX/lib/glib-1.2_s.lib])
8481 if test -n "$LIBIDL_PREFIX"; then
8482 LIBIDL_CFLAGS="-I${LIBIDL_PREFIX}/include ${GLIB_CFLAGS}"
8483 if test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"; then
8484 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"
8486 elif test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"; then
8487 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"
8489 AC_MSG_ERROR([Cannot find $LIBIDL_PREFIX/lib/libIDL-0.6.lib or $LIBIDL_PREFIX/lib/libIDL-0.6_s.lib])
8492 LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
8495 if test -n "LIBIDL_CONFIG" -a "LIBIDL_CONFIG" != "no"; then
8496 LIBIDL_CFLAGS=`${LIBIDL_CONFIG} --cflags`
8497 LIBIDL_LIBS=`${LIBIDL_CONFIG} --libs`
8502 LIBIDL_CFLAGS="$HOST_LIBIDL_CFLAGS"
8503 LIBIDL_LIBS="$HOST_LIBIDL_LIBS"
8506 if test -z "$SKIP_PATH_CHECKS"; then
8507 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
8508 if test "$MOZ_ENABLE_GTK2" -o "$USE_ELF_DYNSTR_GC" ; then
8509 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
8511 AM_PATH_GLIB(${GLIB_VERSION})
8516 if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then
8517 GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
8520 AC_SUBST(LIBIDL_CFLAGS)
8521 AC_SUBST(LIBIDL_LIBS)
8522 AC_SUBST(STATIC_LIBIDL)
8523 AC_SUBST(GLIB_CFLAGS)
8525 AC_SUBST(GLIB_GMODULE_LIBS)
8526 AC_SUBST(HOST_LIBIDL_CONFIG)
8527 AC_SUBST(HOST_LIBIDL_CFLAGS)
8528 AC_SUBST(HOST_LIBIDL_LIBS)
8530 dnl ========================================================
8532 dnl ========================================================
8533 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
8536 MOZ_ARG_ENABLE_BOOL(system-cairo,
8537 [ --enable-system-cairo Use system cairo (located with pkgconfig)],
8542 MOZ_ARG_ENABLE_BOOL(system-pixman,
8543 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
8547 # Check for headers defining standard int types.
8548 AC_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
8550 if test "$MOZ_TREE_CAIRO"; then
8551 AC_DEFINE(MOZ_TREE_CAIRO)
8553 # For now we assume that we will have a uint64_t available through
8554 # one of the above headers or mozstdint.h.
8555 AC_DEFINE(HAVE_UINT64_T)
8557 # Define macros for cairo-features.h
8558 if test "$MOZ_X11"; then
8559 XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
8560 XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
8561 PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
8562 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8563 MOZ_ENABLE_CAIRO_FT=1
8564 CAIRO_FT_CFLAGS="$FT2_CFLAGS"
8566 if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
8567 QT_SURFACE_FEATURE="#define CAIRO_HAS_QT_SURFACE 1"
8569 if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
8570 QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
8571 QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
8572 QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
8574 if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
8575 WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
8576 if test -z "$WINCE"; then
8577 WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
8578 if test "$MOZ_WINSDK_TARGETVER" -ge "06010000"; then
8579 WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
8580 WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1"
8581 MOZ_ENABLE_D2D_SURFACE=1
8582 MOZ_ENABLE_DWRITE_FONT=1
8584 WIN32_DWRITE_FONT_FEATURE=
8585 WIN32_D2D_SURFACE_FEATURE=
8589 WIN32_DWRITE_FONT_FEATURE=
8590 WIN32_D2D_SURFACE_FEATURE=
8593 AC_CHECK_HEADER(d3d9.h, MOZ_ENABLE_D3D9_LAYER=1)
8595 dnl D3D10 Layers depend on D2D Surfaces.
8596 if test -n "$WIN32_D2D_SURFACE_FEATURE"; then
8597 AC_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
8601 if test "$MOZ_WIDGET_TOOLKIT" = "os2"; then
8602 OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
8603 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8604 MOZ_ENABLE_CAIRO_FT=1
8605 CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
8606 CAIRO_FT_LIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
8608 if test "$MOZ_WIDGET_TOOLKIT" = "beos"; then
8609 PKG_CHECK_MODULES(CAIRO_FT, fontconfig freetype2)
8610 BEOS_SURFACE_FEATURE="#define CAIRO_HAS_BEOS_SURFACE 1"
8611 FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8612 MOZ_ENABLE_CAIRO_FT=1
8614 if test "$USE_FC_FREETYPE"; then
8615 FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
8617 AC_SUBST(MOZ_ENABLE_CAIRO_FT)
8618 AC_SUBST(MOZ_ENABLE_DWRITE_FONT)
8619 AC_SUBST(MOZ_ENABLE_D2D_SURFACE)
8620 AC_SUBST(MOZ_ENABLE_D3D9_LAYER)
8621 AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
8622 AC_SUBST(CAIRO_FT_CFLAGS)
8625 if test "$MOZ_DEBUG"; then
8626 SANITY_CHECKING_FEATURE="#define CAIRO_DO_SANITY_CHECKING 1"
8628 SANITY_CHECKING_FEATURE="#undef CAIRO_DO_SANITY_CHECKING"
8631 PNG_FUNCTIONS_FEATURE="#define CAIRO_HAS_PNG_FUNCTIONS 1"
8633 AC_SUBST(PS_SURFACE_FEATURE)
8634 AC_SUBST(PDF_SURFACE_FEATURE)
8635 AC_SUBST(SVG_SURFACE_FEATURE)
8636 AC_SUBST(XLIB_SURFACE_FEATURE)
8637 AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
8638 AC_SUBST(QUARTZ_SURFACE_FEATURE)
8639 AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
8640 AC_SUBST(XCB_SURFACE_FEATURE)
8641 AC_SUBST(WIN32_SURFACE_FEATURE)
8642 AC_SUBST(OS2_SURFACE_FEATURE)
8643 AC_SUBST(BEOS_SURFACE_FEATURE)
8644 AC_SUBST(DIRECTFB_SURFACE_FEATURE)
8645 AC_SUBST(FT_FONT_FEATURE)
8646 AC_SUBST(FC_FONT_FEATURE)
8647 AC_SUBST(WIN32_FONT_FEATURE)
8648 AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
8649 AC_SUBST(WIN32_D2D_SURFACE_FEATURE)
8650 AC_SUBST(QUARTZ_FONT_FEATURE)
8651 AC_SUBST(PNG_FUNCTIONS_FEATURE)
8652 AC_SUBST(QT_SURFACE_FEATURE)
8654 MOZ_CAIRO_LIBS='$(call EXPAND_LIBNAME_PATH,mozcairo,$(DEPTH)/gfx/cairo/cairo/src)'" $CAIRO_FT_LIBS"
8656 if test "$MOZ_TREE_PIXMAN"; then
8657 AC_DEFINE(MOZ_TREE_PIXMAN)
8658 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS"' $(call EXPAND_LIBNAME_PATH,mozlibpixman,$(DEPTH)/gfx/cairo/libpixman/src)'
8660 PKG_CHECK_MODULES(PIXMAN, pixman-1 >= 0.19.2)
8661 MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $PIXMAN_CFLAGS"
8662 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $PIXMAN_LIBS"
8665 if test "$MOZ_X11"; then
8666 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS -lXrender -lfreetype -lfontconfig"
8669 CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
8670 mv -f $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig 2> /dev/null
8673 PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION pixman-1 freetype2 fontconfig)
8674 MOZ_CAIRO_CFLAGS=$CAIRO_CFLAGS
8675 MOZ_CAIRO_LIBS=$CAIRO_LIBS
8676 if test "$MOZ_X11"; then
8677 PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
8678 MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
8679 MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
8683 AC_SUBST(MOZ_TREE_CAIRO)
8684 AC_SUBST(MOZ_CAIRO_CFLAGS)
8685 AC_SUBST(MOZ_CAIRO_LIBS)
8686 AC_SUBST(MOZ_TREE_PIXMAN)
8688 dnl ========================================================
8690 dnl ========================================================
8692 QCMS_LIBS='$(call EXPAND_LIBNAME_PATH,mozqcms,$(DEPTH)/gfx/qcms)'
8695 dnl ========================================================
8697 dnl ========================================================
8698 MOZ_HARFBUZZ_LIBS='$(DEPTH)/gfx/harfbuzz/src/$(LIB_PREFIX)mozharfbuzz.$(LIB_SUFFIX)'
8699 AC_SUBST(MOZ_HARFBUZZ_LIBS)
8701 dnl ========================================================
8703 dnl ========================================================
8704 MOZ_OTS_LIBS='$(DEPTH)/gfx/ots/src/$(LIB_PREFIX)mozots.$(LIB_SUFFIX)'
8705 AC_SUBST(MOZ_OTS_LIBS)
8707 dnl ========================================================
8709 dnl ========================================================
8710 MOZ_ARG_DISABLE_BOOL(xul,
8711 [ --disable-xul Disable XUL],
8713 if test "$MOZ_XUL"; then
8716 dnl remove extensions that require XUL
8717 MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
8722 dnl ========================================================
8723 dnl disable profile locking
8724 dnl do no use this in applications that can have more than
8725 dnl one process accessing the profile directory.
8726 dnl ========================================================
8727 MOZ_ARG_DISABLE_BOOL(profilelocking,
8728 [ --disable-profilelocking
8729 Disable profile locking],
8730 MOZ_PROFILELOCKING=,
8731 MOZ_PROFILELOCKING=1 )
8732 if test "$MOZ_PROFILELOCKING"; then
8733 AC_DEFINE(MOZ_PROFILELOCKING)
8736 dnl ========================================================
8737 dnl disable rdf services
8738 dnl ========================================================
8739 MOZ_ARG_DISABLE_BOOL(rdf,
8740 [ --disable-rdf Disable RDF],
8742 if test "$MOZ_RDF"; then
8748 dnl ========================================================
8749 dnl necko configuration options
8750 dnl ========================================================
8753 dnl option to disable various necko protocols
8755 MOZ_ARG_ENABLE_STRING(necko-protocols,
8756 [ --enable-necko-protocols[={http,ftp,default,all,none}]
8757 Enable/disable specific protocol handlers],
8758 [ for option in `echo $enableval | sed 's/,/ /g'`; do
8759 if test "$option" = "yes" -o "$option" = "all"; then
8760 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8761 elif test "$option" = "no" -o "$option" = "none"; then
8763 elif test "$option" = "default"; then
8764 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8765 elif test `echo "$option" | grep -c \^-` != 0; then
8766 option=`echo $option | sed 's/^-//'`
8767 NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
8769 NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
8772 NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
8774 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
8775 AC_SUBST(NECKO_PROTOCOLS)
8776 for p in $NECKO_PROTOCOLS; do
8777 AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
8781 dnl option to disable necko's disk cache
8783 MOZ_ARG_DISABLE_BOOL(necko-disk-cache,
8784 [ --disable-necko-disk-cache
8785 Disable necko disk cache],
8788 AC_SUBST(NECKO_DISK_CACHE)
8789 if test "$NECKO_DISK_CACHE"; then
8790 AC_DEFINE(NECKO_DISK_CACHE)
8794 dnl option to disable necko's wifi scanner
8796 MOZ_ARG_DISABLE_BOOL(necko-wifi,
8797 [ --disable-necko-wifi Disable necko wifi scanner],
8801 if test "$OS_ARCH" = "OS2"; then
8802 dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566
8805 if test "$NECKO_WIFI" -a \
8806 "$OS_ARCH" != "Linux" -a \
8807 "$OS_ARCH" != "Darwin" -a \
8808 "$OS_ARCH" != "SunOS" -a \
8809 "$OS_ARCH" != "WINNT" -a \
8810 "$OS_ARCH" != "WINCE"; then
8811 AC_MSG_ERROR([Necko WiFi scanning not supported on your platform, use --disable-necko-wifi])
8814 if test -z "$SKIP_LIBRARY_CHECKS" -a "$NECKO_WIFI" -a "$OS_ARCH" = "Linux"
8816 AC_CHECK_HEADER([iwlib.h])
8817 if test "$ac_cv_header_iwlib_h" != "yes"; then
8818 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])
8822 if test "$NECKO_WIFI"; then
8823 AC_DEFINE(NECKO_WIFI)
8825 AC_SUBST(NECKO_WIFI)
8828 dnl option to disable cookies
8830 MOZ_ARG_DISABLE_BOOL(cookies,
8831 [ --disable-cookies Disable cookie support],
8834 AC_SUBST(NECKO_COOKIES)
8835 if test "$NECKO_COOKIES"; then
8836 AC_DEFINE(NECKO_COOKIES)
8840 dnl Build jsctypes on the platforms we can, unless it's explicitly disabled.
8842 MOZ_ARG_DISABLE_BOOL(ctypes,
8843 [ --disable-ctypes Disable js-ctypes],
8846 AC_SUBST(BUILD_CTYPES)
8847 if test "$BUILD_CTYPES"; then
8848 if test "$OS_ARCH" = "WINCE" -a `echo $OS_TEST | grep -ic arm` = 1; then
8849 # Disable ctypes for arm/wince.
8852 AC_DEFINE(BUILD_CTYPES)
8856 dnl NECKO_ configuration options are not global
8857 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_"
8859 dnl Only build Mork if it's required
8861 if test "$MOZ_MORK"; then
8865 dnl Build the lightweight Mork reader if required
8866 AC_SUBST(MOZ_MORKREADER)
8867 if test "$MOZ_MORKREADER"; then
8868 AC_DEFINE(MOZ_MORKREADER)
8871 dnl Build Places if required
8872 if test "$MOZ_PLACES"; then
8873 AC_DEFINE(MOZ_PLACES)
8876 dnl Build Sync Services if required
8877 AC_SUBST(MOZ_SERVICES_SYNC)
8878 if test -n "$MOZ_SERVICES_SYNC"; then
8879 AC_DEFINE(MOZ_SERVICES_SYNC)
8882 dnl ========================================================
8883 if test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
8884 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
8887 if test "$MOZ_APP_COMPONENT_INCLUDE"; then
8888 AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_INCLUDE, "$MOZ_APP_COMPONENT_INCLUDE")
8891 dnl ========================================================
8893 dnl = Maintainer debug option (no --enable equivalent)
8895 dnl ========================================================
8900 AC_SUBST(AR_EXTRACT)
8904 AC_SUBST(AS_DASH_C_FLAG)
8912 AC_SUBST(NS_USE_NATIVE)
8913 AC_SUBST(MOZ_WIDGET_TOOLKIT)
8914 AC_SUBST(MOZ_UPDATE_XTERM)
8916 AC_SUBST(MOZ_PLATFORM_MAEMO)
8917 AC_SUBST(MOZ_AUTH_EXTENSION)
8918 AC_SUBST(MOZ_MATHML)
8919 AC_SUBST(MOZ_PERMISSIONS)
8921 AC_SUBST(MOZ_PREF_EXTENSIONS)
8924 AC_SUBST(MOZ_XSLT_STANDALONE)
8925 AC_SUBST(MOZ_JS_LIBS)
8928 AC_SUBST(MOZ_DEBUG_SYMBOLS)
8929 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
8930 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
8931 AC_SUBST(MOZ_DEBUG_FLAGS)
8932 AC_SUBST(MOZ_DEBUG_LDFLAGS)
8933 AC_SUBST(WARNINGS_AS_ERRORS)
8934 AC_SUBST(MOZ_EXTENSIONS)
8935 AC_SUBST(MOZ_JSDEBUGGER)
8936 AC_SUBST(MOZ_PLUGINS)
8937 AC_SUBST(MOZ_LOG_REFCNT)
8941 AC_SUBST(MOZ_CALLGRIND)
8943 AC_SUBST(MOZ_PROFILING)
8944 AC_SUBST(MOZ_JSLOADER)
8945 AC_SUBST(MOZ_USE_NATIVE_UCONV)
8946 AC_SUBST(MOZ_QUANTIFY)
8948 AC_SUBST(MOZ_PLACES)
8949 AC_SUBST(MOZ_PLACES_BOOKMARKS)
8950 AC_SUBST(MOZ_STORAGE)
8951 AC_SUBST(MOZ_TOOLKIT_SEARCH)
8953 AC_SUBST(NS_PRINTING)
8955 AC_SUBST(MOZ_HELP_VIEWER)
8957 AC_SUBST(MOZ_JAVAXPCOM)
8958 AC_SUBST(JAVA_INCLUDE_PATH)
8963 AC_SUBST(MOZ_PROFILELOCKING)
8966 AC_SUBST(MOZ_XIE_LIBS)
8968 AC_SUBST(BUILD_STATIC_LIBS)
8969 AC_SUBST(MOZ_ENABLE_LIBXUL)
8970 AC_SUBST(ENABLE_TESTS)
8972 AC_SUBST(MOZ_UNIVERSALCHARDET)
8973 AC_SUBST(ACCESSIBILITY)
8974 AC_SUBST(MOZ_VIEW_SOURCE)
8975 AC_SUBST(MOZ_SPELLCHECK)
8976 AC_SUBST(MOZ_USER_DIR)
8977 AC_SUBST(MOZ_CRASHREPORTER)
8978 AC_SUBST(MOZ_UPDATER)
8980 AC_SUBST(MOZ_DIRECTX_SDK_PATH)
8982 AC_SUBST(ENABLE_STRIP)
8983 AC_SUBST(PKG_SKIP_STRIP)
8984 AC_SUBST(USE_ELF_DYNSTR_GC)
8985 AC_SUBST(INCREMENTAL_LINKER)
8986 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
8987 AC_SUBST(MOZ_JEMALLOC_STANDALONE_GLUE_LDOPTS)
8988 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
8990 AC_SUBST(MOZ_FIX_LINK_PATHS)
8991 AC_SUBST(XPCOM_LIBS)
8992 AC_SUBST(XPCOM_FROZEN_LDOPTS)
8993 AC_SUBST(XPCOM_GLUE_LDOPTS)
8994 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
8996 AC_SUBST(USE_DEPENDENT_LIBS)
8998 AC_SUBST(MOZ_BUILD_ROOT)
8999 AC_SUBST(MOZ_OS2_TOOLS)
9001 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
9002 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
9003 AC_SUBST(MOZ_TIMELINE)
9004 AC_SUBST(OGLES_SDK_DIR)
9006 AC_SUBST(MOZ_APP_NAME)
9007 AC_SUBST(MOZ_APP_DISPLAYNAME)
9008 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
9009 AC_SUBST(MOZ_APP_UA_NAME)
9010 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
9011 AC_SUBST(MOZ_APP_VERSION)
9012 AC_DEFINE_UNQUOTED(MOZ_UA_FIREFOX_VERSION, "$FIREFOX_VERSION")
9013 AC_SUBST(MOZ_UA_FIREFOX_VERSION)
9014 AC_SUBST(FIREFOX_VERSION)
9015 AC_DEFINE_UNQUOTED(MOZ_UA_BUILDID, "$MOZ_UA_BUILDID")
9016 AC_SUBST(MOZ_UA_BUILDID)
9018 AC_SUBST(MOZ_PKG_SPECIAL)
9020 AC_SUBST(MOZILLA_OFFICIAL)
9023 AC_SUBST(MOZ_MAPINFO)
9024 AC_SUBST(MOZ_BROWSE_INFO)
9025 AC_SUBST(MOZ_TOOLS_DIR)
9026 AC_SUBST(CYGWIN_WRAPPER)
9028 AC_SUBST(WIN32_REDIST_DIR)
9033 AC_SUBST(WINCE_SDK_DIR)
9034 AC_SUBST(WINCE_WINDOWS_MOBILE)
9036 dnl Echo the CFLAGS to remove extra whitespace.
9043 $_MOZ_EXCEPTIONS_FLAGS \
9044 $_WARNINGS_CXXFLAGS \
9047 COMPILE_CFLAGS=`echo \
9052 COMPILE_CXXFLAGS=`echo \
9053 $_DEFINES_CXXFLAGS \
9057 AC_SUBST(SYSTEM_MAKEDEPEND)
9058 AC_SUBST(SYSTEM_LIBXUL)
9059 AC_SUBST(SYSTEM_JPEG)
9060 AC_SUBST(SYSTEM_PNG)
9061 AC_SUBST(SYSTEM_ZLIB)
9062 AC_SUBST(SYSTEM_BZ2)
9064 AC_SUBST(JPEG_CFLAGS)
9066 AC_SUBST(ZLIB_CFLAGS)
9068 AC_SUBST(BZ2_CFLAGS)
9070 AC_SUBST(PNG_CFLAGS)
9073 AC_SUBST(MOZ_JPEG_CFLAGS)
9074 AC_SUBST(MOZ_JPEG_LIBS)
9075 AC_SUBST(MOZ_ZLIB_CFLAGS)
9076 AC_SUBST(MOZ_ZLIB_LIBS)
9077 AC_SUBST(MOZ_BZ2_CFLAGS)
9078 AC_SUBST(MOZ_BZ2_LIBS)
9079 AC_SUBST(MOZ_PNG_CFLAGS)
9080 AC_SUBST(MOZ_PNG_LIBS)
9082 AC_SUBST(NSPR_CFLAGS)
9084 AC_SUBST(MOZ_NATIVE_NSPR)
9086 AC_SUBST(NSS_CFLAGS)
9088 AC_SUBST(NSS_DEP_LIBS)
9089 AC_SUBST(MOZ_NATIVE_NSS)
9090 AC_SUBST(NSS_DISABLE_DBM)
9095 AC_SUBST(COMPILE_CFLAGS)
9096 AC_SUBST(COMPILE_CXXFLAGS)
9099 AC_SUBST(CROSS_COMPILE)
9100 AC_SUBST(WCHAR_CFLAGS)
9104 AC_SUBST(HOST_CFLAGS)
9105 AC_SUBST(HOST_CXXFLAGS)
9106 AC_SUBST(HOST_OPTIMIZE_FLAGS)
9108 AC_SUBST(HOST_AR_FLAGS)
9110 AC_SUBST(HOST_RANLIB)
9111 AC_SUBST(HOST_NSPR_MDCPUCFG)
9112 AC_SUBST(HOST_BIN_SUFFIX)
9113 AC_SUBST(HOST_OS_ARCH)
9115 AC_SUBST(TARGET_CPU)
9116 AC_SUBST(TARGET_VENDOR)
9118 AC_SUBST(TARGET_NSPR_MDCPUCFG)
9119 AC_SUBST(TARGET_MD_ARCH)
9120 AC_SUBST(TARGET_XPCOM_ABI)
9123 AC_SUBST(OS_RELEASE)
9126 AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
9127 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
9129 AC_SUBST(WRAP_MALLOC_CFLAGS)
9130 AC_SUBST(WRAP_MALLOC_LIB)
9133 AC_SUBST(MKSHLIB_FORCE_ALL)
9134 AC_SUBST(MKSHLIB_UNFORCE_ALL)
9135 AC_SUBST(DSO_CFLAGS)
9136 AC_SUBST(DSO_PIC_CFLAGS)
9137 AC_SUBST(DSO_LDOPTS)
9138 AC_SUBST(LIB_PREFIX)
9139 AC_SUBST(DLL_PREFIX)
9140 AC_SUBST(DLL_SUFFIX)
9141 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
9142 AC_SUBST(LIB_SUFFIX)
9143 AC_SUBST(OBJ_SUFFIX)
9144 AC_SUBST(BIN_SUFFIX)
9145 AC_SUBST(ASM_SUFFIX)
9146 AC_SUBST(IMPORT_LIB_SUFFIX)
9148 AC_SUBST(CC_VERSION)
9149 AC_SUBST(CXX_VERSION)
9150 AC_SUBST(MSMANIFEST_TOOL)
9151 AC_SUBST(NS_ENABLE_TSF)
9152 AC_SUBST(MOZ_NSS_PATCH)
9153 AC_SUBST(MOZ_APP_COMPONENT_LIBS)
9154 AC_SUBST(MOZ_APP_EXTRA_LIBS)
9157 AC_SUBST(MOZ_SYDNEYAUDIO)
9159 AC_SUBST(MOZ_VORBIS)
9160 AC_SUBST(MOZ_TREMOR)
9163 AC_SUBST(MOZ_ALSA_LIBS)
9165 AC_SUBST(VPX_ASFLAGS)
9166 AC_SUBST(VPX_DASH_C_FLAG)
9167 AC_SUBST(VPX_AS_CONVERSION)
9168 AC_SUBST(VPX_ASM_SUFFIX)
9169 AC_SUBST(VPX_X86_ASM)
9170 AC_SUBST(VPX_ARM_ASM)
9172 if test "$USING_HCC"; then
9173 CC='${topsrcdir}/build/hcc'
9175 CXX='${topsrcdir}/build/hcpp'
9176 CXX="$CXX '$_OLDCXX'"
9181 AC_MSG_CHECKING([for posix_fallocate])
9182 AC_TRY_LINK([#define _XOPEN_SOURCE 600
9183 #include <fcntl.h>],
9184 [posix_fallocate(0, 0, 0);],
9185 [ac_cv___posix_fallocate=true],
9186 [ac_cv___posix_fallocate=false])
9188 if test "$ac_cv___posix_fallocate" = true ; then
9189 AC_DEFINE(HAVE_POSIX_FALLOCATE)
9195 dnl Check for missing components
9196 if test "$COMPILE_ENVIRONMENT"; then
9197 if test "$MOZ_X11"; then
9198 dnl ====================================================
9199 dnl = Check if X headers exist
9200 dnl ====================================================
9201 _SAVE_CFLAGS=$CFLAGS
9202 CFLAGS="$CFLAGS $XCFLAGS"
9206 #include <X11/Xlib.h>
9207 #include <X11/Intrinsic.h>
9211 if ((dpy = XOpenDisplay(NULL)) == NULL) {
9212 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
9216 [ AC_MSG_ERROR([Could not compile basic X program.]) ])
9217 CFLAGS="$_SAVE_CFLAGS"
9219 if test ! -z "$MISSING_X"; then
9220 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
9225 dnl Check for headers, etc. needed by WebGL.
9226 if test -n "$MOZ_WEBGL_GLX"; then
9227 AC_CHECK_HEADER(GL/glx.h)
9228 if test "$ac_cv_header_GL_glx_h" != "yes"; then
9229 AC_MSG_ERROR([Can't find header GL/glx.h for WebGL (install mesa-common-dev (Ubuntu), mesa-libGL-devel (Fedora), or Mesa (SuSE))])
9232 fi # COMPILE_ENVIRONMENT
9234 if test "$USE_FC_FREETYPE"; then
9235 if test "$COMPILE_ENVIRONMENT"; then
9236 _SAVE_CPPFLAGS="$CPPFLAGS"
9237 CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
9238 AC_CHECK_HEADERS(fontconfig/fcfreetype.h, ,
9239 [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)])
9240 CPPFLAGS="$_SAVE_CPPFLAGS"
9242 AC_DEFINE(HAVE_FONTCONFIG_FCFREETYPE_H)
9246 dnl Set various defines and substitutions
9247 dnl ========================================================
9249 if test "$OS_ARCH" = "BeOS"; then
9251 elif test "$OS_ARCH" = "Darwin"; then
9253 AC_DEFINE(UNIX_ASYNC_DNS)
9254 elif test "$OS_ARCH" = "OpenVMS"; then
9256 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
9258 AC_DEFINE(UNIX_ASYNC_DNS)
9261 if test "$MOZ_DEBUG"; then
9262 AC_DEFINE(MOZ_REFLOW_PERF)
9263 AC_DEFINE(MOZ_REFLOW_PERF_DSP)
9266 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
9267 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
9268 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
9269 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
9270 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
9271 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
9272 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
9273 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
9274 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
9277 dnl ========================================================
9278 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
9279 dnl ========================================================
9282 WIN_TOP_SRC=`cd $srcdir; pwd -W`
9285 HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
9286 HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
9287 CC="\$(CYGWIN_WRAPPER) $CC"
9288 CXX="\$(CYGWIN_WRAPPER) $CXX"
9289 CPP="\$(CYGWIN_WRAPPER) $CPP"
9290 LD="\$(CYGWIN_WRAPPER) $LD"
9291 AS="\$(CYGWIN_WRAPPER) $AS"
9292 RC="\$(CYGWIN_WRAPPER) $RC"
9293 MIDL="\$(CYGWIN_WRAPPER) $MIDL"
9294 CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
9295 WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
9299 AC_SUBST(CYGDRIVE_MOUNT)
9300 AC_SUBST(WIN_TOP_SRC)
9302 AC_SUBST(MOZILLA_VERSION)
9304 AC_SUBST(ac_configure_args)
9306 dnl Spit out some output
9307 dnl ========================================================
9309 dnl The following defines are used by xpcom
9310 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
9312 HAVE_CPP_2BYTE_WCHAR_T
9313 HAVE_CPP_ACCESS_CHANGING_USING
9314 HAVE_CPP_AMBIGUITY_RESOLVING_USING
9317 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
9319 HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
9320 HAVE_CPP_NAMESPACE_STD
9322 HAVE_CPP_PARTIAL_SPECIALIZATION
9323 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
9325 HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL
9327 NEED_CPP_UNUSED_IMPLEMENTATIONS
9331 HAVE_ICONV_WITH_CONST_INPUT
9339 netwerk/necko-config.h
9340 xpcom/xpcom-config.h
9341 xpcom/xpcom-private.h
9344 # Save the defines header file before autoconf removes it.
9345 # (Do not add AC_DEFINE calls after this line.)
9346 _CONFIG_TMP=confdefs-tmp.h
9347 _CONFIG_DEFS_H=mozilla-config.h
9349 cat > $_CONFIG_TMP <<\EOF
9350 /* List of defines generated by configure. Included with preprocessor flag,
9351 * -include, to avoid long list of -D defines on the compile command-line.
9355 #ifndef _MOZILLA_CONFIG_H_
9356 #define _MOZILLA_CONFIG_H_
9359 _EGREP_PATTERN='^#define ('
9360 if test -n "$_NON_GLOBAL_ACDEFINES"; then
9361 for f in $_NON_GLOBAL_ACDEFINES; do
9362 _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
9365 _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
9367 sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
9369 cat >> $_CONFIG_TMP <<\EOF
9371 #endif /* _MOZILLA_CONFIG_H_ */
9375 # Only write mozilla-config.h when something changes (or it doesn't exist)
9376 if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
9379 AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
9380 mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
9382 echo ==== $_CONFIG_DEFS_H =================================
9386 dnl Probably shouldn't call this manually but we always want the output of DEFS
9387 rm -f confdefs.h.save
9388 mv confdefs.h confdefs.h.save
9389 egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
9390 AC_OUTPUT_MAKE_DEFS()
9392 AC_SUBST(MOZ_DEFINES)
9394 mv confdefs.h.save confdefs.h
9396 dnl Load the list of Makefiles to generate.
9397 dnl To add new Makefiles, edit allmakefiles.sh.
9398 dnl allmakefiles.sh sets the variable, MAKEFILES.
9399 . ${srcdir}/allmakefiles.sh
9401 dnl Run a perl script to quickly create the makefiles.
9402 dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
9403 dnl for the files it cannot handle correctly. This way, config.status
9404 dnl will handle these files.
9405 dnl If it fails, nothing is set and config.status will run as usual.
9407 dnl This does not change the $MAKEFILES variable.
9409 dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
9411 if test -z "${AS_PERL}"; then
9412 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
9414 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
9419 echo $MAKEFILES > unallmakefiles
9421 mv -f config/autoconf.mk config/autoconf.mk.orig 2> /dev/null
9423 AC_OUTPUT($MAKEFILES)
9425 dnl Prevent the regeneration of cairo-features.h forcing rebuilds of gfx stuff
9426 if test "$CAIRO_FEATURES_H"; then
9427 if cmp -s $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig; then
9428 echo "$CAIRO_FEATURES_H is unchanged"
9429 mv -f "$CAIRO_FEATURES_H".orig "$CAIRO_FEATURES_H" 2> /dev/null
9431 rm -f "$CAIRO_FEATURES_H".orig 2> /dev/null
9435 # Run freetype configure script
9437 if test "$MOZ_TREE_FREETYPE"; then
9438 export CFLAGS="$CFLAGS -std=c99"
9439 export CPPFLAGS="$CPPFLAGS"
9440 export CXXFLAGS="$CXXFLAGS"
9441 export LDFLAGS="$LDFLAGS"
9442 export CONFIG_FILES="unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config freetype2.pc:freetype2.in"
9443 ac_configure_args="$ac_configure_args --host=$target --disable-shared --with-pic=yes"
9444 AC_OUTPUT_SUBDIRS(modules/freetype2)
9447 dnl ========================================================
9448 dnl = Setup a nice relatively clean build environment for
9449 dnl = sub-configures.
9450 dnl ========================================================
9453 CFLAGS="$_SUBDIR_CFLAGS"
9454 CPPFLAGS="$_SUBDIR_CPPFLAGS"
9455 CXXFLAGS="$_SUBDIR_CXXFLAGS"
9456 LDFLAGS="$_SUBDIR_LDFLAGS"
9457 HOST_CC="$_SUBDIR_HOST_CC"
9458 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9459 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9465 # No need to run subconfigures when building with LIBXUL_SDK_DIR
9466 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
9468 if test -n "$MOZ_THUMB2"; then
9469 _SUBDIR_CONFIG_ARGS="$_SUBDIR_CONFIG_ARGS --enable-thumb2"
9471 if test -n "$_WRAP_MALLOC"; then
9472 _SUBDIR_CONFIG_ARGS="$_SUBDIR_CONFIG_ARGS --enable-wrap-malloc"
9475 if test -z "$MOZ_NATIVE_NSPR"; then
9476 ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
9477 if test -z "$MOZ_DEBUG"; then
9478 ac_configure_args="$ac_configure_args --disable-debug"
9480 if test "$MOZ_OPTIMIZE" = "1"; then
9481 ac_configure_args="$ac_configure_args --enable-optimize"
9483 if test "$OS_ARCH" = "WINNT" -a "$NS_TRACE_MALLOC"; then
9484 ac_configure_args="$ac_configure_args --enable-debug --disable-optimize"
9486 if test -n "$HAVE_64BIT_OS"; then
9487 ac_configure_args="$ac_configure_args --enable-64bit"
9489 if test -n "$USE_ARM_KUSER"; then
9490 ac_configure_args="$ac_configure_args --with-arm-kuser"
9492 AC_OUTPUT_SUBDIRS(nsprpub)
9493 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9496 if test -z "$MOZ_NATIVE_NSPR"; then
9497 # Hack to deal with the fact that we use NSPR_CFLAGS everywhere
9498 AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
9499 if test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
9500 NSPR_LIBS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --libdir=$LIBXUL_DIST/lib --libs`
9501 $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $NSPR_LIBS'" config/autoconf.mk
9502 NSPR_CFLAGS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --includedir=$LIBXUL_DIST/include/nspr --cflags`
9503 $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $NSPR_CFLAGS'" config/autoconf.mk
9505 rm -f config/autoconf.mk.bak
9508 # Run the SpiderMonkey 'configure' script.
9509 dist=$MOZ_BUILD_ROOT/dist
9510 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9511 ac_configure_args="$ac_configure_args --enable-threadsafe"
9512 if test "$BUILD_CTYPES"; then
9513 # Build js-ctypes on the platforms we can.
9514 ac_configure_args="$ac_configure_args --enable-ctypes"
9516 if test -z "$JS_SHARED_LIBRARY" ; then
9517 ac_configure_args="$ac_configure_args --disable-shared-js"
9519 if test -z "$MOZ_NATIVE_NSPR"; then
9520 ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
9521 ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
9523 ac_configure_args="$ac_configure_args --with-dist-dir=../../dist"
9524 ac_configure_args="$ac_configure_args --prefix=$dist"
9525 ac_configure_args="$ac_configure_args --with-sync-build-files=$_topsrcdir"
9526 if test "$MOZ_MEMORY"; then
9527 ac_configure_args="$ac_configure_args --enable-jemalloc"
9528 if test -n "$MOZ_MEMORY_LDFLAGS"; then
9529 export MOZ_MEMORY_LDFLAGS
9532 AC_OUTPUT_SUBDIRS(js/src)
9533 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9535 fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR
9537 dnl Prevent the regeneration of autoconf.mk forcing rebuilds of the world
9538 dnl Needs to be at the end to respect possible changes from NSPR configure
9539 if cmp -s config/autoconf.mk config/autoconf.mk.orig; then
9540 echo "config/autoconf.mk is unchanged"
9541 mv -f config/autoconf.mk.orig config/autoconf.mk 2> /dev/null
9543 rm -f config/autoconf.mk.orig 2> /dev/null