Merge, a=backout
[mozilla-central.git] / configure.in
blob52e1fe21f20300eb4db57ebe743b87fdbebbaf64
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
5 dnl
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/
10 dnl
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
14 dnl License.
15 dnl
16 dnl The Original Code is this file as it was released upon August 6, 1998.
17 dnl
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.
22 dnl
23 dnl Contributor(s):
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
30 dnl   Insure support.
31 dnl   Henry Sobotka <sobotka@axess.com>
32 dnl   OS/2 support
33 dnl   Dan Mosedale <dmose@mozilla.org>
34 dnl   LDAP support
35 dnl   Seth Spitzer <sspitzer@netscape.com>
36 dnl   xpctools support
37 dnl   Benjamin Smedberg <benjamin@smedbergs.us>
38 dnl   Howard Chu <hyc@symas.com>
39 dnl   MSYS support
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>
47 dnl
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.
59 dnl
60 dnl ***** END LICENSE BLOCK *****
62 dnl Process this file with autoconf to produce a configure script.
63 dnl ========================================================
65 AC_PREREQ(2.13)
66 AC_INIT(config/config.mk)
67 AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
68 AC_CANONICAL_SYSTEM
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 ========================================================
77 dnl =
78 dnl = Don't change the following two lines.  Doing so breaks:
79 dnl =
80 dnl = CFLAGS="-foo" ./configure
81 dnl =
82 dnl ========================================================
83 CFLAGS="${CFLAGS=}"
84 CPPFLAGS="${CPPFLAGS=}"
85 CXXFLAGS="${CXXFLAGS=}"
86 LDFLAGS="${LDFLAGS=}"
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 ========================================================
96 _SUBDIR_CC="$CC"
97 _SUBDIR_CXX="$CXX"
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 ========================================================
110 MOZJPEG=62
111 MOZPNG=10401
112 MOZZLIB=0x1230
113 NSPR_VERSION=4
114 NSS_VERSION=3
116 dnl Set the minimum version of toolkit libs used by mozilla
117 dnl ========================================================
118 GLIB_VERSION=1.2.0
119 LIBIDL_VERSION=0.6.3
120 PERL_VERSION=5.006
121 PYTHON_VERSION=2.5
122 CAIRO_VERSION=1.10
123 PANGO_VERSION=1.14.0
124 GTK2_VERSION=2.10.0
125 WINDRES_VERSION=2.14.90
126 W32API_VERSION=3.8
127 GNOMEVFS_VERSION=2.0
128 GNOMEUI_VERSION=2.2.0
129 GCONF_VERSION=1.2.1
130 GIO_VERSION=2.0
131 STARTUP_NOTIFICATION_VERSION=0.8
132 DBUS_VERSION=0.60
133 SQLITE_VERSION=3.7.4
134 LIBNOTIFY_VERSION=0.4
136 MSMANIFEST_TOOL=
138 dnl Set various checks
139 dnl ========================================================
140 MISSING_X=
141 AC_PROG_AWK
143 dnl Initialize the Pthread test variables early so they can be
144 dnl  overridden by each platform.
145 dnl ========================================================
146 USE_PTHREADS=
147 _PTHREAD_LDFLAGS=""
149 dnl Do not allow a separate objdir build if a srcdir build exists.
150 dnl ==============================================================
151 _topsrcdir=`cd \`dirname $0\`; pwd`
152 _objdir=`pwd`
154 if test "$_topsrcdir" != "$_objdir"
155 then
156   # Check for a couple representative files in the source tree
157   _conflict_files=
158   for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
159     if test -f $file; then
160       _conflict_files="$_conflict_files $file"
161     fi
162   done
163   if test "$_conflict_files"; then
164     echo "***"
165     echo "*   Your source tree contains these files:"
166     for file in $_conflict_files; do
167       echo "*         $file"
168     done
169     cat 1>&2 <<-EOF
170         *   This indicates that you previously built in the source tree.
171         *   A source tree build can confuse the separate objdir build.
172         *
173         *   To clean up the source tree:
174         *     1. cd $_topsrcdir
175         *     2. gmake distclean
176         ***
177         EOF
178     exit 1
179     break
180   fi
182 MOZ_BUILD_ROOT=`pwd`
184 dnl Default to MSVC for win32 and gcc-4.2 for darwin
185 dnl ==============================================================
186 if test -z "$CROSS_COMPILE"; then
187 case "$target" in
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
196         i*86)
197             AS=ml;
198             ;;
199         x86_64)
200             AS=ml64;
201             ;;
202         esac
203     fi
204     if test -z "$MIDL"; then MIDL=midl; fi
205     ;;
206 *-darwin*)
207     if test -z "$CC"; then CC=gcc-4.2; fi
208     if test -z "$CXX"; then CXX=g++-4.2; fi
209     ;;
210 esac
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`
228     else
229         AC_MSG_ERROR([Invalid value --with-l10n-base, $L10NBASEDIR doesn't exist])
230     fi
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,
260     android_version=5)
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.])
270     fi
272     if test -z "$android_sdk" ; then
273         AC_MSG_ERROR([You must specify --with-android-sdk=/path/to/sdk when targeting Android.])
274     fi
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
279     fi
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
283     fi
285     if test -z "$android_platform" ; then
286        android_platform="$android_ndk"/build/platforms/android-"$android_version"/arch-"$target_cpu"
287     fi
289     dnl set up compilers
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
306     dnl NDK.)
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
311         HOST_CPPFLAGS=" "
312     fi
313     if test -z "$HOST_CFLAGS" ; then
314         HOST_CFLAGS=" "
315     fi
316     if test -z "$HOST_CXXFLAGS" ; then
317         HOST_CXXFLAGS=" "
318     fi
319     if test -z "$HOST_LDFLAGS" ; then
320         HOST_LDFLAGS=" "
321     fi
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)'
331     fi
333     AC_DEFINE(ANDROID)
334     AC_DEFINE_UNQUOTED(ANDROID_VERSION, $android_version)
335     AC_SUBST(ANDROID_VERSION)
336     CROSS_COMPILE=1
337     MOZ_CHROME_FILE_FORMAT=omni
338     ZLIB_DIR=yes
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)
356 AR_FLAGS='cr $@'
358 if test "$COMPILE_ENVIRONMENT"; then
360 dnl Do some special WinCE toolchain stuff
361 case "$target" in
362 *wince|*winmo)
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)
374     AC_DEFINE(WINCE)
375     
376     export WINCE=1
378     echo -----------------------------------------------------------------------------
379     echo Building Windows CE Shunt Library and Tool Chain
380     echo Using SDK in:
381     echo $WINCE_SDK_DIR
383     ac_exeext=.exe
385     _pwd=`pwd -W`
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 -----------------------------------------------------------------------------
403     ;;
404 esac
406 if test -n "$CROSS_COMPILE" -a "$target" != "$host"; then
407     echo "cross compiling from $host to $target"
408     cross_compiling=yes
410     _SAVE_CC="$CC"
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])
418     fi
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])
424     fi
425     AC_MSG_RESULT([$HOST_CXX])
427     if test -z "$HOST_CFLAGS"; then
428         HOST_CFLAGS="$CFLAGS"
429     fi
430     if test -z "$HOST_CXXFLAGS"; then
431         HOST_CXXFLAGS="$CXXFLAGS"
432     fi
433     if test -z "$HOST_LDFLAGS"; then
434         HOST_LDFLAGS="$LDFLAGS"
435     fi
436     if test -z "$HOST_AR_FLAGS"; then
437         HOST_AR_FLAGS="$AR_FLAGS"
438     fi
439     AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
440     AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
441     CC="$HOST_CC"
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.]) )
450     CC="$HOST_CXX"
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.]) )
457     
458     CC=$_SAVE_CC
459     CFLAGS=$_SAVE_CFLAGS
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.
469         _SAVE_CFLAGS=$CFLAGS
470         _SAVE_CXXFLAGS=$CXXLAGS
471         CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk $CFLAGS"
472         CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk $CXXFLAGS"
473         ;;
474     esac
476     AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
477     unset ac_cv_prog_CC
478     AC_PROG_CC
479     AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
480     unset ac_cv_prog_CXX
481     AC_PROG_CXX
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).
488         CFLAGS=$_SAVE_CFLAGS
489         CXXFLAGS=$_SAVE_CXXFLAGS
490         ;;
491     esac
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)
500 else
501     AC_PROG_CC
502     AC_PROG_CXX
503     AC_PROG_RANLIB
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
510         HOST_CC='$(CC)'
511     fi
512     if test -z "$HOST_CFLAGS"; then
513         HOST_CFLAGS='$(CFLAGS)'
514     fi
515     if test -z "$HOST_CXX"; then
516         HOST_CXX='$(CXX)'
517     fi
518     if test -z "$HOST_CXXFLAGS"; then
519         HOST_CXXFLAGS='$(CXXFLAGS)'
520     fi
521     if test -z "$HOST_LDFLAGS"; then
522         HOST_LDFLAGS='$(LDFLAGS)'
523     fi
524     if test -z "$HOST_RANLIB"; then
525         HOST_RANLIB='$(RANLIB)'
526     fi
527     if test -z "$HOST_AR"; then
528         HOST_AR='$(AR)'
529     fi
530     if test -z "$HOST_AR_FLAGS"; then
531         HOST_AR_FLAGS='$(AR_FLAGS)'
532     fi
535 GNU_AS=
536 GNU_LD=
537 GNU_CC=
538 GNU_CXX=
539 CC_VERSION='N/A'
540 CXX_VERSION='N/A'
541 if test "$GCC" = "yes"; then
542     GNU_CC=1
543     CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
545 if test "$GXX" = "yes"; then
546     GNU_CXX=1
547     CXX_VERSION=`$CXX -v 2>&1 | grep 'gcc version'`
549 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
550     GNU_AS=1
552 if test "`echo | $LD -v 2>&1 | grep -c GNU`" != "0"; then
553     GNU_LD=1
555 if test "$GNU_CC"; then
556     if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
557         GCC_USE_GNU_LD=1
558     fi
561 INTEL_CC=
562 INTEL_CXX=
563 if test "$GCC" = yes; then
564    if test "`$CC -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
565      INTEL_CC=1
566    fi
569 if test "$GXX" = yes; then
570    if test "`$CXX -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
571      INTEL_CXX=1
572    fi
575 dnl Special win32 checks
576 dnl ========================================================
577 case "$target" in
578 *-wince|*-winmo)
579     WINVER=500
580     WINSDK_TARGETVER=502
581     ;;
583     WINVER=502
584     dnl Target the Windows 7 SDK by default
585     WINSDK_TARGETVER=601
586     ;;
587 esac
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
593                               600: Windows Vista
594                               601: Windows 7],
595   WINSDK_TARGETVER=$withval)
597 case "$WINSDK_TARGETVER" in
598 502|600|601)
599     MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000
600     ;;
603     AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER), must be 502, 600 or 601]);
604     ;;
606 esac
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
615 case "$target" in
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
619         _WIN32_MSVC=1
620         AC_CHECK_PROGS(MIDL, midl)
622         # Make sure compilers are valid
623         CFLAGS="$CFLAGS -TC -nologo"
624         CXXFLAGS="$CXXFLAGS -TP -nologo"
625         AC_LANG_SAVE
626         AC_LANG_C
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.]) )
631         AC_LANG_CPLUSPLUS
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.]) )
635         AC_LANG_RESTORE
636         
637         changequote(,)
638         _MSVC_VER_FILTER='s|.* ([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
639         changequote([,])
640         
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.])
654         fi
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.])
662             fi
664             _CC_SUITE=8
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
669             _CC_SUITE=9
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
674             _CC_SUITE=10
675             CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
676             AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
677             AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
678         else
679             AC_MSG_ERROR([This version ($CC_VERSION) of the MSVC compiler is unsupported. See https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
680         fi
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`
690         fi
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.])
697         fi
699         changequote(,)
700         _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
701         changequote([,])
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.])
705         fi
707         MSMANIFEST_TOOL=1
708         unset MSMT_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.])
715         fi
717         INCREMENTAL_LINKER=1
719         # Check midl version
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])
726         case "$target" in
727         i*86-*)
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])
733             else
734                 AC_MSG_RESULT([none needed])
735             fi
736             ;;
737         x86_64-*)
738             MIDL_FLAGS="${MIDL_FLAGS} -env x64"
739             ;;
740         *)
741             AC_MSG_RESULT([none needed])
742             ;;
743         esac
745         # Identify which version of the SDK we're building with
746         # Windows Server 2008 and newer SDKs have WinSDKVer.h, get the version
747         # from there
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,
755                            ac_cv_winsdk_maxver,
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)
762 #else
763 #define WINSDK_MAXVER NTDDI_MAXVER
764 #endif
766 WINSDK_MAXVER
768                             ac_cv_winsdk_maxver=`$CPP conftest.h 2>/dev/null | tail -n1`
769                             rm -f conftest.h
770                            ])
771             MOZ_WINSDK_MAXVER=${ac_cv_winsdk_maxver}
772         else
773             # The Vista SDK is the only one to have sdkddkver.h but not
774             # WinSDKVer.h
775             AC_CHECK_HEADERS([sdkddkver.h])
776             if test "$ac_cv_header_sdkddkver_h" = "yes"; then
777                 MOZ_WINSDK_MAXVER=0x06000000
778             else
779                 # Assume the Server 2003 Platform SDK
780                 MOZ_WINSDK_MAXVER=0x05020000
781             fi
782         fi
784         unset _MSVC_VER_FILTER
786         AC_CACHE_CHECK(for std::_Throw, ac_cv_have_std__Throw,
787             [
788                 AC_LANG_SAVE
789                 AC_LANG_CPLUSPLUS
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"
797                 AC_LANG_RESTORE
798             ])
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,
803                 [
804                     AC_LANG_SAVE
805                     AC_LANG_CPLUSPLUS
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"
813                     AC_LANG_RESTORE
814                 ])
815             if test "$ac_cv_have_dllimport_exception_bug" = "no"; then
816                 WRAP_STL_INCLUDES=1
817                 MOZ_MSVC_STL_WRAP__Throw=1
818                 AC_DEFINE(MOZ_MSVC_STL_WRAP__Throw)
819             fi
820         else
821             AC_CACHE_CHECK(for overridable _RAISE,
822                            ac_cv_have__RAISE,
823                 [
824                     AC_LANG_SAVE
825                     AC_LANG_CPLUSPLUS
826                     _SAVE_CXXFLAGS="$CXXFLAGS"
827                     CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
828                     AC_TRY_COMPILE([#include <xstddef>
829                                     #undef _RAISE
830                                     #define _RAISE(x) externallyDefinedFunction((x).what())
831                                     #include <vector>
832                                    ],
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"
837                     AC_LANG_RESTORE
838                 ])
839             if test "$ac_cv_have__RAISE" = "yes"; then
840                 WRAP_STL_INCLUDES=1
841                 MOZ_MSVC_STL_WRAP__RAISE=1
842                 AC_DEFINE(MOZ_MSVC_STL_WRAP__RAISE)
843             else
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.])
845             fi
846         fi
848         if test "$WRAP_STL_INCLUDES" = "1"; then
849             STL_FLAGS='-D_HAS_EXCEPTIONS=0 -I$(DIST)/stl_wrappers'
850         fi
851     else
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."
861             #endif
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.])
866         fi
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"
883         then
884             AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
885         fi
887         # Server 2003 is the highest version supported
888         MOZ_WINSDK_MAXVER=0x05020000
889     fi # !GNU_CC
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
897     # version, error out
898     AC_MSG_CHECKING([for Windows SDK being recent enough])
899     if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then
900         AC_MSG_RESULT("yes")
901     else
902         AC_MSG_RESULT("no")
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.])
904     fi
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)
911     ;;
912 esac
914 dnl Test breaks icc on OS/2 && MSVC
915 if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
916     AC_PROG_CC_C_O
917     if grep "NO_MINUS_C_MINUS_O 1" ./confdefs.h >/dev/null; then
918         USING_HCC=1
919         _OLDCC=$CC
920         _OLDCXX=$CXX
921         CC="${srcdir}/build/hcc '$CC'"
922         CXX="${srcdir}/build/hcpp '$CXX'"
923     fi
926 AC_PROG_CPP
927 AC_PROG_CXXCPP
929 if test -n "$_WIN32_MSVC"; then
930     SKIP_PATH_CHECKS=1
931     SKIP_COMPILER_CHECKS=1
932     SKIP_LIBRARY_CHECKS=1
934     # Since we're skipping compiler and library checks, hard-code
935     # some facts here.
936     case "$target" in
937     *-wince|*-winmo)
938         ;;
939     *)
940         AC_DEFINE(HAVE_IO_H)
941         AC_DEFINE(HAVE_SETBUF)
942         AC_DEFINE(HAVE_ISATTY)
943         ;;
944     esac
947 fi # COMPILE_ENVIRONMENT
949 AC_SUBST(MIDL_FLAGS)
950 AC_SUBST(_MSC_VER)
952 AC_SUBST(GNU_AS)
953 AC_SUBST(GNU_LD)
954 AC_SUBST(GNU_CC)
955 AC_SUBST(GNU_CXX)
956 AC_SUBST(INTEL_CC)
957 AC_SUBST(INTEL_CXX)
959 AC_SUBST(STL_FLAGS)
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 ========================================================
967 AC_PROG_INSTALL
968 AC_PROG_LN_S
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`
973 _perl_res=$?
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`
983 _perl_res=$?
984 if test "$_perl_res" != 0; then
985     AC_MSG_RESULT([no])
986     AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}.  A full perl installation is required.])
987 else
988     AC_MSG_RESULT([yes])    
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
1021 darwin*)
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).
1026     changequote(,)
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/;'`
1029     changequote([,])
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.
1033         changequote(,)
1034         GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
1035         changequote([,])
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.])
1040         fi
1041     fi
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)
1048     case "$PBBUILD" in
1049       *xcodebuild*)
1050         changequote(,)
1051         XCODEBUILD_VERSION=`$PBBUILD -version 2>/dev/null | xargs | sed -e 's/.*DevToolsCore-\([0-9]*\).*/\1/'`
1052         changequote([,])
1053         if test -n "$XCODEBUILD_VERSION" && test "$XCODEBUILD_VERSION" -ge 620 ; then
1054           HAS_XCODE_2_1=1;
1055         fi
1056       ;;
1057     esac
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])
1062     ;;
1063 esac
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])
1082 case "$target" in
1083 *-darwin*)
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)
1088     else
1089         dnl No value specified on the command line or in the environment,
1090         dnl use architecture minimum.
1091         case "${target_cpu}" in
1092           ppc*)
1093             export MACOSX_DEPLOYMENT_TARGET=10.5
1094             ;;
1095           i*86)
1096             export MACOSX_DEPLOYMENT_TARGET=10.5
1097             ;;
1098           x86_64)
1099             export MACOSX_DEPLOYMENT_TARGET=10.6
1100             ;;
1101         esac
1102     fi
1103     ;;
1104 esac
1106 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
1108 dnl ========================================================
1109 dnl = Mac OS X SDK support
1110 dnl ========================================================
1111 MACOS_SDK_DIR=
1112 NEXT_ROOT=
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)
1120 AC_SUBST(NEXT_ROOT)
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.])
1131   fi
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])
1136   else
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}"
1151     fi
1152   fi
1154   AC_LANG_SAVE
1155   AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
1156   AC_LANG_CPLUSPLUS
1157   AC_TRY_COMPILE([#include <new>
1158                  int main() { return 0; }],
1159    result=yes,
1160    result=no)
1161   AC_LANG_RESTORE
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.])
1166   fi
1169 fi # COMPILE_ENVIRONMENT
1171 if test -n "$MAKE"; then
1172   if test `echo $MAKE | grep -c make.py` != 1; then
1173      NOT_PYMAKE=$MAKE
1174   fi
1177 case "$host_os" in
1178 cygwin*|mingw*|mks*|msvc*)
1179     MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :)
1180     ;;
1182     MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :)
1183     ;;
1184 esac
1185 if test "$GMAKE" = ":"; then
1186    AC_MSG_ERROR([GNU make not found])
1188 AC_SUBST(GMAKE)
1190 if test "$COMPILE_ENVIRONMENT"; then
1192 AC_PATH_XTRA
1194 XCFLAGS="$X_CFLAGS"
1196 fi # COMPILE_ENVIRONMENT
1198 dnl ========================================================
1199 dnl set the defaults first
1200 dnl ========================================================
1201 AS_BIN=$AS
1202 AR_LIST='$(AR) t'
1203 AR_EXTRACT='$(AR) x'
1204 AR_DELETE='$(AR) d'
1205 AS='$(CC)'
1206 AS_DASH_C_FLAG='-c'
1207 DLL_PREFIX=lib
1208 LIB_PREFIX=lib
1209 DLL_SUFFIX=.so
1210 OBJ_SUFFIX=o
1211 LIB_SUFFIX=a
1212 ASM_SUFFIX=s
1213 IMPORT_LIB_SUFFIX=
1214 TARGET_MD_ARCH=unix
1215 DIRENT_INO=d_ino
1216 CYGWIN_WRAPPER=
1217 WIN_TOP_SRC=
1218 MOZ_USER_DIR=".mozilla"
1220 MOZ_JPEG_CFLAGS=
1221 MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,mozjpeg,$(DEPTH)/jpeg)'
1222 MOZ_ZLIB_CFLAGS=
1223 MOZ_ZLIB_LIBS='$(call EXPAND_LIBNAME_PATH,mozz,$(DEPTH)/modules/zlib/src)'
1224 MOZ_BZ2_CFLAGS=
1225 MOZ_BZ2_LIBS='$(call EXPAND_LIBNAME_PATH,bz2,$(DEPTH)/modules/libbz2/src)'
1226 MOZ_PNG_CFLAGS=
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)'
1238 MOZ_FS_LAYOUT=unix
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'`
1249     OS_RELEASE=
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 ;;
1259     esac
1260     case "${target}" in
1261         arm-android-eabi) OS_ARCH=Linux OS_TARGET=Android ;;
1262     esac
1263 else
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}"
1273 _COMPILER_PREFIX=
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
1288 # HOST_OS_ARCH
1289 # OS_ARCH
1290 # OS_TEST
1291 # OS_TARGET
1292 # OS_RELEASE
1293 # OS_MINOR_RELEASE
1296 case "$HOST_OS_ARCH" in
1297 cygwin*|mingw*|mks*|msvc*)
1298     HOST_OS_ARCH=WINNT
1299     ;;
1300 darwin*)
1301     HOST_OS_ARCH=Darwin
1302     ;;
1303 linux*)
1304     HOST_OS_ARCH=Linux
1305     ;;
1306 solaris*)
1307     HOST_OS_ARCH=SunOS
1308     SOLARIS_SUNPRO_CC=
1309     SOLARIS_SUNPRO_CXX=
1310     if test -z "$GNU_CC"; then
1311         if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then
1312             SOLARIS_SUNPRO_CC=1
1313        fi
1314     fi
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
1319        fi
1320     fi
1321     AC_SUBST(SOLARIS_SUNPRO_CC)
1322     AC_SUBST(SOLARIS_SUNPRO_CXX)
1323     ;;
1324 BSD_386)
1325     HOST_OS_ARCH=BSD
1326     ;;
1327 dgux)
1328     HOST_OS_ARCH=DGUX
1329     ;;
1330 IRIX64)
1331     HOST_OS_ARCH=IRIX
1332     ;;
1333 UNIX_SV)
1334     if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1335         HOST_OS_ARCH=NCR
1336     else
1337         HOST_OS_ARCH=UNIXWARE
1338     fi
1339     ;;
1340 ncr)
1341     HOST_OS_ARCH=NCR
1342     ;;
1343 UNIX_SYSTEM_V)
1344     HOST_OS_ARCH=NEC
1345     ;;
1346 OSF1)
1347     ;;
1348 *OpenVMS*)
1349     HOST_OS_ARCH=OpenVMS
1350     ;;
1351 OS_2)
1352     HOST_OS_ARCH=OS2
1353     ;;
1354 QNX)
1355     ;;
1356 SCO_SV)
1357     HOST_OS_ARCH=SCOOS
1358     ;;
1359 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1360     HOST_OS_ARCH=SINIX
1361     ;;
1362 UnixWare)
1363     HOST_OS_ARCH=UNIXWARE
1364     ;;
1365 esac
1367 case "$OS_ARCH" in
1368 WINNT)
1369     if test -z "$CROSS_COMPILE" ; then
1370         OS_TEST=`uname -p`
1371     fi
1372     ;;
1373 Windows_NT)
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.
1382     OS_ARCH=WINNT
1383     OS_TARGET=WINNT
1384     OS_MINOR_RELEASE=`uname -v`
1385     if test "$OS_MINOR_RELEASE" = "00"; then
1386         OS_MINOR_RELEASE=0
1387     fi
1388     OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1389     ;;
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-\(.*\)'`
1401     OS_ARCH=WINNT
1402     OS_TARGET=WINNT
1403     ;;
1404 AIX)
1405     OS_RELEASE=`uname -v`.`uname -r`
1406     OS_TEST=${target_cpu}
1407     ;;
1408 BSD_386)
1409     OS_ARCH=BSD
1410     ;;
1411 dgux)
1412     OS_ARCH=DGUX
1413     ;;
1414 IRIX64)
1415     OS_ARCH=IRIX
1416     ;;
1417 UNIX_SV)
1418     if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1419         OS_ARCH=NCR
1420     else
1421         OS_ARCH=UNIXWARE
1422         OS_RELEASE=`uname -v`
1423     fi
1424     ;;
1425 ncr)
1426     OS_ARCH=NCR
1427     ;;
1428 UNIX_SYSTEM_V)
1429     OS_ARCH=NEC
1430     ;;
1431 OSF1)
1432     case `uname -v` in
1433     148)
1434         OS_RELEASE=V3.2C
1435         ;;
1436     564)
1437         OS_RELEASE=V4.0B
1438         ;;
1439     878)
1440         OS_RELEASE=V4.0D
1441         ;;
1442     esac
1443     ;;
1444 *OpenVMS*)
1445     OS_ARCH=OpenVMS
1446     OS_RELEASE=`uname -v`
1447     OS_TEST=`uname -p`
1448     ;;
1449 OS_2)
1450     OS_ARCH=OS2
1451     OS_TARGET=OS2
1452     OS_RELEASE=`uname -v`
1453     ;;
1454 QNX)
1455     if test "$OS_TARGET" != "NTO"; then
1456         changequote(,)
1457         OS_RELEASE=`uname -v | sed 's/^\([0-9]\)\([0-9]*\)$/\1.\2/'`
1458         changequote([,])
1459     fi
1460     OS_TEST=x86
1461     ;;
1462 SCO_SV)
1463     OS_ARCH=SCOOS
1464     OS_RELEASE=5.0
1465     ;;
1466 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1467     OS_ARCH=SINIX
1468     OS_TEST=`uname -p`
1469     ;;
1470 UnixWare)
1471     OS_ARCH=UNIXWARE
1472     OS_RELEASE=`uname -v`
1473     ;;
1474 WINCE)
1475     OS_ARCH=WINCE
1476     case "${target_os}" in
1477     *winmo)
1478         OS_TARGET=WINMO
1479         WINCE_WINDOWS_MOBILE=1
1480         AC_DEFINE(WINCE_WINDOWS_MOBILE)
1481         ;;
1482     *)
1483         OS_TARGET=WINCE
1484         ;;
1485     esac
1486     ;;
1487 Darwin)
1488     case "${target_cpu}" in
1489     powerpc*)
1490         OS_TEST=ppc
1491         ;;
1492     i*86*)
1493         OS_TEST=i386 
1494         ;;
1495     x86_64)
1496         OS_TEST=x86_64
1497         ;;
1498     *)
1499         if test -z "$CROSS_COMPILE" ; then
1500             OS_TEST=`uname -p`
1501         fi
1502         ;;
1503     esac
1504     ;;
1505 esac
1507 if test "$OS_ARCH" = "NCR"; then
1508     changequote(,)
1509     OS_RELEASE=`awk '{print $3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$/\2.\3/'`
1510     changequote([,])
1513 # Only set CPU_ARCH if we recognize the value of OS_TEST
1515 case "$OS_TEST" in
1516 *86 | i86pc)
1517     CPU_ARCH=x86
1518     ;;
1520 powerpc64 | ppc64)
1521     CPU_ARCH=ppc64
1522     ;;
1524 powerpc | ppc | rs6000)
1525     CPU_ARCH=ppc
1526     ;;
1528 Alpha | alpha | ALPHA)
1529     CPU_ARCH=Alpha
1530     ;;
1532 s390)
1533     CPU_ARCH=s390
1534     ;;
1536 s390x)
1537     CPU_ARCH=s390x
1538     ;;
1540 hppa* | parisc)
1541     CPU_ARCH=hppa
1542     ;;
1544 sun4u | sparc*)
1545     CPU_ARCH=sparc
1546     ;;
1548 x86_64 | ia64)
1549     CPU_ARCH="$OS_TEST"
1550     ;;
1552 arm*)
1553     CPU_ARCH=arm
1554     ;;
1556 mips|mipsel)
1557     CPU_ARCH="mips"
1558     ;;
1559 esac
1561 if test -z "$OS_TARGET"; then
1562     OS_TARGET=$OS_ARCH
1564 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1566 dnl Set INTEL_ARCHITECTURE if we're compiling for x86-32 or x86-64.
1567 dnl ===============================================================
1568 INTEL_ARCHITECTURE=
1569 case "$OS_TEST" in
1570     x86_64|i?86)
1571       INTEL_ARCHITECTURE=1
1572 esac
1574 dnl ========================================================
1575 dnl GNU specific defaults
1576 dnl ========================================================
1577 if test "$GNU_CC"; then
1578     # FIXME: Let us build with strict aliasing. bug 414641.
1579     CFLAGS="$CFLAGS -fno-strict-aliasing"
1580     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1581     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1582     DSO_LDOPTS='-shared'
1583     if test "$GCC_USE_GNU_LD"; then
1584         # Don't allow undefined symbols in libraries
1585         DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1586     fi
1587     WARNINGS_AS_ERRORS='-Werror'
1588     DSO_CFLAGS=''
1589     DSO_PIC_CFLAGS='-fPIC'
1590     ASFLAGS="$ASFLAGS -fPIC"
1591     _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
1592     _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
1593     _MOZ_EXCEPTIONS_FLAGS_ON='-fexceptions'
1594     _MOZ_EXCEPTIONS_FLAGS_OFF='-fno-exceptions'
1596     # Turn on GNU specific features
1597     # -Wall - turn on all warnings
1598     # -pedantic - make compiler warn about non-ANSI stuff, and
1599     #             be a little bit stricter
1600     # Warnings slamm took out for now (these were giving more noise than help):
1601     # -Wbad-function-cast - warns when casting a function to a new return type
1602     # -Wshadow - removed because it generates more noise than help --pete
1603     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
1604     if test -z "$INTEL_CC"; then
1605        # Don't use -Wcast-align with ICC
1606        case "$CPU_ARCH" in
1607            # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1608            hppa | ia64 | sparc | arm)
1609            ;;
1610            *)
1611         _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1612            ;;
1613        esac
1614     fi
1616     dnl Turn pedantic on but disable the warnings for long long
1617     _PEDANTIC=1
1619     if test -z "$INTEL_CC"; then
1620       _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
1621     fi
1623     _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT'
1624     _USE_CPP_INCLUDE_FLAG=1
1625 elif test "$SOLARIS_SUNPRO_CC"; then
1626     DSO_CFLAGS=''
1627     if test "$CPU_ARCH" = "sparc"; then
1628         # for Sun Studio on Solaris/SPARC
1629         DSO_PIC_CFLAGS='-xcode=pic32'
1630     else
1631         DSO_PIC_CFLAGS='-KPIC'
1632     fi
1633     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1634 else
1635     MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1636     MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1638     DSO_LDOPTS='-shared'
1639     if test "$GNU_LD"; then
1640         # Don't allow undefined symbols in libraries
1641         DSO_LDOPTS="$DSO_LDOPTS -z defs"
1642     fi
1644     DSO_CFLAGS=''
1645     DSO_PIC_CFLAGS='-KPIC'
1646     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
1649 if test "$GNU_CXX"; then
1650     # FIXME: Let us build with strict aliasing. bug 414641.
1651     CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
1652     # Turn on GNU specific features
1653     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
1654     if test -z "$INTEL_CC"; then
1655        # Don't use -Wcast-align with ICC
1656        case "$CPU_ARCH" in
1657            # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1658            hppa | ia64 | sparc | arm)
1659            ;;
1660            *)
1661         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1662            ;;
1663        esac
1664     fi
1666     _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h'
1667     _USE_CPP_INCLUDE_FLAG=1
1669     AC_CACHE_CHECK(whether the compiler supports -Wno-invalid-offsetof,
1670                    ac_has_wno_invalid_offsetof,
1671         [
1672             AC_LANG_SAVE
1673             AC_LANG_CPLUSPLUS
1674             _SAVE_CXXFLAGS="$CXXFLAGS"
1675             CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1676             AC_TRY_COMPILE([],
1677                            [return(0);],
1678                            ac_has_wno_invalid_offsetof="yes",
1679                            ac_has_wno_invalid_offsetof="no")
1680             CXXFLAGS="$_SAVE_CXXFLAGS"
1681             AC_LANG_RESTORE
1682         ])
1683     if test "$ac_has_wno_invalid_offsetof" = "yes"; then
1684         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1685     fi
1687     AC_CACHE_CHECK(whether the compiler supports -Wno-variadic-macros,
1688                    ac_has_wno_variadic_macros,
1689         [
1690             AC_LANG_SAVE
1691             AC_LANG_CPLUSPLUS
1692             _SAVE_CXXFLAGS="$CXXFLAGS"
1693             CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-variadic-macros"
1694             AC_TRY_COMPILE([],
1695                            [return(0);],
1696                            ac_has_wno_variadic_macros="yes",
1697                            ac_has_wno_variadic_macros="no")
1698             CXXFLAGS="$_SAVE_CXXFLAGS"
1699             AC_LANG_RESTORE
1700         ])
1701     if test "$ac_has_wno_variadic_macros" = "yes"; then
1702         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-variadic-macros"
1703     fi
1705     AC_CACHE_CHECK(whether the compiler supports -Werror=return-type,
1706                    ac_has_werror_return_type,
1707         [
1708             AC_LANG_SAVE
1709             AC_LANG_CPLUSPLUS
1710             _SAVE_CXXFLAGS="$CXXFLAGS"
1711             CXXFLAGS="$CXXFLAGS -Werror=return-type"
1712             AC_TRY_COMPILE([],
1713                            [return(0);],
1714                            ac_has_werror_return_type="yes",
1715                            ac_has_werror_return_type="no")
1716             CXXFLAGS="$_SAVE_CXXFLAGS"
1717             AC_LANG_RESTORE
1718         ])
1719     if test "$ac_has_werror_return_type" = "yes"; then
1720         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Werror=return-type"
1721     fi
1723 else
1724     _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_MOZILLA_CONFIG_H_ $(ACDEFINES)'
1727 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1728 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1729 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1730 dnl normal behavior.
1731 dnl ========================================================
1732 MKSHLIB_FORCE_ALL=
1733 MKSHLIB_UNFORCE_ALL=
1735 if test "$COMPILE_ENVIRONMENT"; then
1736 if test "$GNU_CC"; then
1737   AC_MSG_CHECKING(whether ld has archive extraction flags)
1738   AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1739    [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1740     ac_cv_mkshlib_force_and_unforce="no"
1741     exec 3<&0 <<LOOP_INPUT
1742         force="-Wl,--whole-archive";   unforce="-Wl,--no-whole-archive"
1743         force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1744         force="-Wl,-all";              unforce="-Wl,-none"
1745 LOOP_INPUT
1746     while read line
1747     do
1748       eval $line
1749       LDFLAGS=$force
1750       LIBS=$unforce
1751       AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1752     done
1753     exec 0<&3 3<&-
1754     LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1755    ])
1756   if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1757     AC_MSG_RESULT(no)
1758   else
1759     AC_MSG_RESULT(yes)
1760     eval $ac_cv_mkshlib_force_and_unforce
1761     MKSHLIB_FORCE_ALL=$force
1762     MKSHLIB_UNFORCE_ALL=$unforce
1763   fi
1764 fi # GNU_CC
1765 fi # COMPILE_ENVIRONMENT
1767 dnl =================================================================
1768 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1769 dnl which is bad when cross compiling.
1770 dnl =================================================================
1771 if test "$COMPILE_ENVIRONMENT"; then
1772 configure_static_assert_macros='
1773 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1774 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1775 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1778 dnl test that the macros actually work:
1779 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1780 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1781  [AC_LANG_SAVE
1782   AC_LANG_C
1783   ac_cv_static_assertion_macros_work="yes"
1784   AC_TRY_COMPILE([$configure_static_assert_macros],
1785                  [CONFIGURE_STATIC_ASSERT(1)],
1786                  ,
1787                  ac_cv_static_assertion_macros_work="no")
1788   AC_TRY_COMPILE([$configure_static_assert_macros],
1789                  [CONFIGURE_STATIC_ASSERT(0)],
1790                  ac_cv_static_assertion_macros_work="no",
1791                  )
1792   AC_LANG_CPLUSPLUS
1793   AC_TRY_COMPILE([$configure_static_assert_macros],
1794                  [CONFIGURE_STATIC_ASSERT(1)],
1795                  ,
1796                  ac_cv_static_assertion_macros_work="no")
1797   AC_TRY_COMPILE([$configure_static_assert_macros],
1798                  [CONFIGURE_STATIC_ASSERT(0)],
1799                  ac_cv_static_assertion_macros_work="no",
1800                  )
1801   AC_LANG_RESTORE
1802  ])
1803 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1804 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1805     AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1807 fi # COMPILE_ENVIRONMENT
1809 dnl ========================================================
1810 dnl Checking for 64-bit OS
1811 dnl ========================================================
1812 if test "$COMPILE_ENVIRONMENT"; then
1813 AC_LANG_SAVE
1814 AC_LANG_C
1815 AC_MSG_CHECKING(for 64-bit OS)
1816 AC_TRY_COMPILE([$configure_static_assert_macros],
1817                [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)],
1818                result="yes", result="no")
1819 AC_MSG_RESULT("$result")
1820 if test "$result" = "yes"; then
1821     AC_DEFINE(HAVE_64BIT_OS)
1822     HAVE_64BIT_OS=1
1824 AC_SUBST(HAVE_64BIT_OS)
1825 AC_LANG_RESTORE
1826 fi # COMPILE_ENVIRONMENT
1828 dnl ========================================================
1829 dnl Enable high-memory support on OS/2 by default.
1830 dnl ========================================================
1831 MOZ_OS2_HIGH_MEMORY=1
1832 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1833 [  --disable-os2-high-mem  Disable high-memory support on OS/2],
1834     MOZ_OS2_HIGH_MEMORY=,
1835     MOZ_OS2_HIGH_MEMORY=1 )
1836 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1838 dnl ========================================================
1839 dnl = Use profiling compile flags
1840 dnl ========================================================
1841 MOZ_ARG_ENABLE_BOOL(profiling,
1842 [  --enable-profiling      Set compile flags necessary for using sampling profilers (e.g. shark, perf)],
1843     MOZ_PROFILING=1,
1844     MOZ_PROFILING= )
1846 dnl ========================================================
1847 dnl System overrides of the defaults for host
1848 dnl ========================================================
1849 case "$host" in
1850 *-beos*)
1851     HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
1852     HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
1853     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1854     ;;
1856 *cygwin*|*mingw*|*mks*|*msvc*|*wince|*winmo)
1857     if test -n "$_WIN32_MSVC"; then
1858         HOST_AR=lib
1859         HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1860         HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1861         HOST_RANLIB='echo ranlib'
1862     else
1863         HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
1864     fi
1865     HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
1866     HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1867     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1868     HOST_BIN_SUFFIX=.exe
1869     case "$host" in
1870     *mingw*)
1871     dnl MinGW/MSYS does not need CYGWIN_WRAPPER
1872         PERL="/bin/sh ${_topsrcdir}/build/msys-perl-wrapper"
1873         ;;
1874     *)
1875         CYGWIN_WRAPPER="${srcdir}/build/cygwin-wrapper"
1876         if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
1877             _pwd=`pwd`
1878             CYGWIN_WRAPPER="${_pwd}/${srcdir}/build/cygwin-wrapper"
1879         fi
1880         if test "`${PERL} -v | grep -c cygwin  2>/dev/null`" = 0; then
1881             AS_PERL=1
1882             PERL="${CYGWIN_WRAPPER} $PERL"
1883         fi
1885         if test "`${PYTHON} -c 'import sys; print sys.platform;'`" != "cygwin"; then
1886             PYTHON="${CYGWIN_WRAPPER} $PYTHON"
1887         fi
1888         ;;
1889     esac
1891     case "${host_cpu}" in
1892     x86_64)
1893         HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
1894         ;;
1895     esac
1896     ;;
1898 *-darwin*)
1899     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1900     HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1901     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1902     ;;
1904 *-linux*|*-kfreebsd*-gnu|*-gnu*)
1905     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1906     HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1907     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1908     ;;
1910 *os2*)
1911     HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1912     HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1913     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1914     HOST_BIN_SUFFIX=.exe
1915     MOZ_FIX_LINK_PATHS=
1916     ;;
1918 *-osf*)
1919     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1920     HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
1921     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1922     ;;
1925     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1926     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1927     ;;
1928 esac
1930 dnl We require version 2.5 or newer of Python to build.
1931 AC_MSG_CHECKING([for Python version >= $PYTHON_VERSION but not 3.x])
1932 changequote(,)
1933 $PYTHON -c "import sys; sys.exit(sys.version[:3] < sys.argv[1] or sys.version[:2] != '2.')" $PYTHON_VERSION
1934 _python_res=$?
1935 changequote([,])
1936 if test "$_python_res" != 0; then
1937     AC_MSG_ERROR([Python $PYTHON_VERSION or higher (but not Python 3.x) is required.])
1939 AC_MSG_RESULT([yes])
1941 dnl Get mozilla version from central milestone file
1942 MOZILLA_VERSION=`$PERL $srcdir/config/milestone.pl -topsrcdir $srcdir`
1944 dnl Get version of various core apps from the version files.
1945 FIREFOX_VERSION=`cat $topsrcdir/browser/config/version.txt`
1947 AC_DEFINE_UNQUOTED(MOZILLA_VERSION,"$MOZILLA_VERSION")
1948 AC_DEFINE_UNQUOTED(MOZILLA_VERSION_U,$MOZILLA_VERSION)
1950 dnl ========================================================
1951 dnl System overrides of the defaults for target
1952 dnl ========================================================
1954 case "$target" in
1955 *-aix*)
1956     AC_DEFINE(AIX)
1957     if test ! "$GNU_CC"; then
1958         if test ! "$HAVE_64BIT_OS"; then
1959             # Compiling with Visual Age C++ object model compat is the
1960             # default. To compile with object model ibm, add 
1961             # AIX_OBJMODEL=ibm to .mozconfig.
1962             if test "$AIX_OBJMODEL" = "ibm"; then
1963                 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1964             else
1965                 AIX_OBJMODEL=compat
1966             fi
1967         else
1968             AIX_OBJMODEL=compat
1969         fi
1970         AC_SUBST(AIX_OBJMODEL)
1971         DSO_LDOPTS='-qmkshrobj=1'
1972         DSO_CFLAGS='-qflag=w:w'
1973         DSO_PIC_CFLAGS=
1974         LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1975         AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
1976         MOZ_FIX_LINK_PATHS=
1977         MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1978         MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1979         if test "$COMPILE_ENVIRONMENT"; then
1980             AC_LANG_SAVE
1981             AC_LANG_CPLUSPLUS
1982             AC_MSG_CHECKING([for VisualAge C++ compiler version >= 6.0.0.3])
1983             AC_TRY_COMPILE([],
1984                 [#if (__IBMCPP__ < 600)
1985                  #error "Bad compiler"
1986                  #endif],
1987                 _BAD_COMPILER=,_BAD_COMPILER=1)
1988             if test -n "$_BAD_COMPILER"; then
1989                 AC_MSG_RESULT([no])    
1990                 AC_MSG_ERROR([VisualAge C++ version 6.0.0.3 or higher is required to build.])
1991             else
1992                 AC_MSG_RESULT([yes])    
1993             fi
1994             AC_LANG_RESTORE
1995             TARGET_COMPILER_ABI="ibmc"
1996             CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1997             CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1998         fi
1999     fi
2000     case "${target_os}" in
2001     aix4.1*)
2002         DLL_SUFFIX='_shr.a'
2003         ;;
2004     esac
2005     if test "$COMPILE_ENVIRONMENT"; then
2006         AC_CHECK_HEADERS(sys/inttypes.h)
2007     fi
2008     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2009     ;;
2011 *-beos*)
2012     no_x=yes
2013     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
2014     _PLATFORM_DEFAULT_TOOLKIT="cairo-beos"
2015     DSO_LDOPTS='-nostart'
2016     TK_LIBS='-lbe -lroot'
2017     LIBS="$LIBS -lbe"
2018     if test "$COMPILE_ENVIRONMENT"; then
2019         AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
2020         AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
2021     fi
2022     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
2023     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
2024     _MOZ_USE_RTTI=1
2025     USE_DEPENDENT_LIBS=
2026     MOZ_USER_DIR="Mozilla"
2027     ;;
2029 *-bsdi*)
2030     dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
2031     _PEDANTIC=
2032     case $OS_RELEASE in
2033         4.*|5.*)
2034             STRIP="$STRIP -d"
2035             ;;
2036         *)
2037             DSO_CFLAGS=''
2038             DSO_LDOPTS='-r'
2039             _WARNINGS_CFLAGS="-Wall"
2040             _WARNINGS_CXXFLAGS="-Wall"
2041             # The test above doesn't work properly, at least on 3.1.
2042             MKSHLIB_FORCE_ALL=''
2043             MKSHLIB_UNFORCE_ALL=''
2044         ;;
2045     esac
2046     ;;
2048 *-darwin*) 
2049     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2050     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2051     # If we're building with --enable-profiling, we need a frame pointer.
2052     if test -z "$MOZ_PROFILING"; then
2053         MOZ_OPTIMIZE_FLAGS="-O3 -fomit-frame-pointer"
2054     else
2055         MOZ_OPTIMIZE_FLAGS="-O3 -fno-omit-frame-pointer"
2056     fi
2057     _PEDANTIC=
2058     CFLAGS="$CFLAGS -fpascal-strings -fno-common"
2059     CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
2060     DLL_SUFFIX=".dylib"
2061     DSO_LDOPTS=''
2062     STRIP="$STRIP -x -S"
2063     _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
2064     TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
2065     # The ExceptionHandling framework is needed for Objective-C exception
2066     # logging code in nsObjCExceptions.h. Currently we only use that in debug
2067     # builds.
2068     MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"
2070     dnl DTrace and -dead_strip don't interact well. See bug 403132.
2071     dnl ===================================================================
2072     if test "x$enable_dtrace" = "xyes"; then
2073         echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
2074     else
2075         dnl check for the presence of the -dead_strip linker flag
2076         AC_MSG_CHECKING([for -dead_strip option to ld])
2077         _SAVE_LDFLAGS=$LDFLAGS
2078         LDFLAGS="$LDFLAGS -Wl,-dead_strip"
2079         AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
2080         if test -n "$_HAVE_DEAD_STRIP" ; then
2081             AC_MSG_RESULT([yes])
2082             MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
2083         else
2084             AC_MSG_RESULT([no])
2085         fi
2086         
2087         LDFLAGS=$_SAVE_LDFLAGS
2088     fi
2089     MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
2090     ;;
2092 *-freebsd*)
2093     if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` != "elf"; then
2094         DLL_SUFFIX=".so.1.0"
2095         DSO_LDOPTS="-shared"
2096     fi
2097     if test ! "$GNU_CC"; then
2098         DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
2099     fi
2100     ;; 
2102 ia64*-hpux*)
2103     DLL_SUFFIX=".so"
2104     if test ! "$GNU_CC"; then
2105        DSO_LDOPTS='-b'
2106        DSO_CFLAGS=""
2107        DSO_PIC_CFLAGS=
2108        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@'
2109        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@'
2110        CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2111     else
2112        DSO_LDOPTS='-b -E'
2113        MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2114        MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2115     fi
2116     MOZ_FIX_LINK_PATHS=
2117     SYSTEM_MAKEDEPEND=
2118     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2119     AC_DEFINE(_LARGEFILE64_SOURCE)
2120     ;;
2122 *-hpux*)
2123     DLL_SUFFIX=".sl"
2124     if test ! "$GNU_CC"; then
2125         DSO_LDOPTS='-b -Wl,+s'
2126         DSO_CFLAGS=""
2127         DSO_PIC_CFLAGS="+Z"
2128         MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
2129         MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
2130         CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2131     else
2132         DSO_LDOPTS='-b -E +s'
2133         MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2134         MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2135     fi
2136     MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
2137     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2138     ;;
2140 *-irix5*)
2141     AC_DEFINE(IRIX)
2142     DSO_LDOPTS='-elf -shared'
2144     if test "$GNU_CC"; then
2145        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2146        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2147        MKSHLIB_FORCE_ALL='-Wl,-all'
2148        MKSHLIB_UNFORCE_ALL='-Wl,-none'
2149        CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
2150     else
2151        MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2152        MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2153        MKSHLIB_FORCE_ALL='-all'
2154        MKSHLIB_UNFORCE_ALL='-none'
2155     fi
2156     ;;
2158 *-irix6*)
2159     AC_DEFINE(IRIX)
2160     dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must* 
2161     dnl compile and link using -n32
2162     USE_N32=1
2163     TARGET_COMPILER_ABI=n32
2164     DSO_LDOPTS='-elf -shared'
2165     MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2166     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2167     _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
2168     _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
2169     if test "$GNU_CC"; then
2170        MKSHLIB_FORCE_ALL='-Wl,-all'
2171        MKSHLIB_UNFORCE_ALL='-Wl,-none'
2172        _WARNINGS_CFLAGS="-Wall"
2173        _WARNINGS_CXXFLAGS="-Wall"
2174        CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
2175     else
2176        MKSHLIB_FORCE_ALL='-all'
2177        MKSHLIB_UNFORCE_ALL='-none'
2178            AR_LIST="$AR t"
2179            AR_EXTRACT="$AR x"
2180            AR_DELETE="$AR d"
2181            AR='$(CXX) -ar'
2182            AR_FLAGS='-o $@'
2183        CFLAGS="$CFLAGS -woff 3262 -G 4"
2184        CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
2185        if test -n "$USE_N32"; then
2186            ASFLAGS="$ASFLAGS -n32"
2187            CFLAGS="$CFLAGS -n32"
2188            CXXFLAGS="$CXXFLAGS -n32"
2189            LDFLAGS="$LDFLAGS -n32"
2190        fi
2191        AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2192        AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
2193        MOZ_FIX_LINK_PATHS=
2194     fi
2195     if test -z "$GNU_CXX"; then
2196       MIPSPRO_CXX=1
2197     fi
2198     ;;
2200 *-*linux*)
2201     # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
2202     # Similarly for GNU_CXX and INTEL_CXX.
2203     if test "$INTEL_CC" -o "$INTEL_CXX"; then
2204         # -Os has been broken on Intel's C/C++ compilers for quite a
2205         # while; Intel recommends against using it.
2206         MOZ_OPTIMIZE_FLAGS="-O2"
2207         MOZ_DEBUG_FLAGS="-g"
2208     elif test "$GNU_CC" -o "$GNU_CXX"; then
2209         GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
2210         case $GCC_VERSION in
2211         4.1.*|4.2.*|4.5.*)
2212             # -Os is broken on gcc 4.1.x 4.2.x, 4.5.x we need to tweak it to get good results.
2213             MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
2214         esac
2215         # If we're building with --enable-profiling, we need a frame pointer.
2216         if test -z "$MOZ_PROFILING"; then
2217             MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fomit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK"
2218         else
2219             MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-omit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK"
2220         fi
2221         MOZ_DEBUG_FLAGS="-g"
2222     fi
2224     TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2226     MOZ_MEMORY=1
2228     case "${target_cpu}" in
2229     alpha*)
2230         CFLAGS="$CFLAGS -mieee"
2231         CXXFLAGS="$CXXFLAGS -mieee"
2232     ;;
2233     i*86)
2234         USE_ELF_DYNSTR_GC=1
2235     ;;
2236     mips*)
2237         MOZ_DEBUG_FLAGS="-g" # We want inlining
2238     ;;
2239     esac
2240     ;;
2242 *-wince*|*-winmo*)
2243     TARGET_COMPILER_ABI=msvc
2244     _PLATFORM_DEFAULT_TOOLKIT=cairo-windows
2245     MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2246     MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2247     AR_LIST="$AR -list"
2248     AR_EXTRACT="$AR -extract"
2249     AR_DELETE="$AR d"
2250     AR_FLAGS='-OUT:"$@"'
2251     MOZ_MEMORY=1
2252     NSS_DISABLE_DBM=1
2253     MOZ_OGG=
2254     ac_configure_args="$ac_configure_args --enable-win32-target=WINCE"
2256     if test "$AS_BIN"; then
2257         AS="$AS_BIN"
2258     fi
2259     DSO_CFLAGS=
2260     DSO_PIC_CFLAGS=
2261     DLL_SUFFIX=.dll
2262     BIN_SUFFIX='.exe'
2263     if test -z "$RC"; then 
2264         RC=rc.exe  
2265     fi
2266     # certain versions of cygwin's makedepend barf on the 
2267     # #include <string> vs -I./dist/include/string issue so don't use it
2268     SYSTEM_MAKEDEPEND=
2270     HOST_CC=cl
2271     HOST_CXX=cl
2272     HOST_LD=link
2273     HOST_AR='lib -OUT:$@'
2274     HOST_RANLIB='echo ranlib'
2275     HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
2276         
2277         
2278     WARNINGS_AS_ERRORS='-WX'
2279     MOZ_OPTIMIZE_FLAGS='-Ox'
2280     AR_FLAGS='-NOLOGO -OUT:"$@"'
2281     ASM_SUFFIX=asm
2282     CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2283     CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2284     DLL_PREFIX=
2285     DOXYGEN=:
2286     DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
2287     DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2288     GARBAGE=
2289     IMPORT_LIB_SUFFIX=lib
2290     dnl Need to force-link against mozalloc because it's used in the shunt
2291     LIBS="$LIBS \$(LIBXUL_DIST)/lib/mozalloc.lib"
2292     LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2293     LIB_PREFIX=
2294     LIB_SUFFIX=lib 
2295     MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
2296     MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
2297     MKSHLIB_FORCE_ALL=
2298     MKSHLIB_UNFORCE_ALL=
2299     MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2300     MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2301     MOZ_DEBUG_FLAGS='-Zi'
2302     MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2303     MOZ_FIX_LINK_PATHS=
2304     MOZ_JS_STATIC_LIBS='$(LIBXUL_DIST)/lib/js_static.lib'
2305     MOZ_JS_SHARED_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2306     OBJ_SUFFIX=obj
2307     RANLIB='echo not_ranlib'
2308     STRIP='echo not_strip'
2309     TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
2310     UNZIP=unzip
2311     XARGS=xargs
2312     XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2313     ZIP=zip
2314     MOZ_TREE_FREETYPE=1
2316     AC_DEFINE(HAVE_SNPRINTF)
2317     AC_DEFINE(_WINDOWS)
2318     AC_DEFINE(WIN32)
2319     AC_DEFINE(XP_WIN)
2320     AC_DEFINE(XP_WIN32)
2321     AC_DEFINE(HW_THREADS)
2322     AC_DEFINE(STDC_HEADERS)
2323     AC_DEFINE(NEW_H, <new>)
2324     AC_DEFINE(WIN32_LEAN_AND_MEAN)
2325     AC_DEFINE(HAVE_LOCALTIME_R)
2327     TARGET_MD_ARCH=win32
2328     _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2329     BIN_SUFFIX='.exe'
2330     MOZ_USER_DIR="Mozilla"
2332     MOZ_GFX_OPTIMIZE_MOBILE=1
2334     # Sanity check for WINCE_WINDOWS_MOBILE
2335     # XXX disabled until we can fix the mobile tinderbox
2336     ##if test "$WINCE_WINDOWS_MOBILE"; then
2337     ##   AC_CHECK_HEADER(tpcshell.h, [],
2338     ##        AC_MSG_ERROR([Can't find tpcshell.h in your SDK; are you sure you don't need --disable-windows-mobile-components?]))
2339     ##fi
2343 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2344     DSO_CFLAGS=
2345     DSO_PIC_CFLAGS=
2346     DLL_SUFFIX=.dll
2347     RC=rc.exe
2348     # certain versions of cygwin's makedepend barf on the 
2349     # #include <string> vs -I./dist/include/string issue so don't use it
2350     SYSTEM_MAKEDEPEND=
2351     if test -n "$GNU_CC"; then
2352         CC="$CC -mno-cygwin"
2353         CXX="$CXX -mno-cygwin"
2354         CPP="$CPP -mno-cygwin"
2355         CFLAGS="$CFLAGS -mms-bitfields"
2356         CXXFLAGS="$CXXFLAGS -mms-bitfields"
2357         DSO_LDOPTS='-shared'
2358         MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
2359         MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2360         RC='$(WINDRES)'
2361         # Use temp file for windres (bug 213281)
2362         RCFLAGS='-O coff --use-temp-file'
2363         # mingw doesn't require kernel32, user32, and advapi32 explicitly
2364         LIBS="$LIBS -luuid -lgdi32 -lwinmm -lwsock32"
2365         MOZ_JS_STATIC_LIBS='-L$(LIBXUL_DIST)/bin -ljs_static'
2366         MOZ_JS_SHARED_LIBS='-L$(LIBXUL_DIST)/bin -lmozjs'
2367         MOZ_FIX_LINK_PATHS=
2368         DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core -lmozalloc'
2369         XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom -lmozalloc'
2370         DLL_PREFIX=
2371         IMPORT_LIB_SUFFIX=dll.a
2372         GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
2373     else
2374         TARGET_COMPILER_ABI=msvc
2375         HOST_CC='$(CC)'
2376         HOST_CXX='$(CXX)'
2377         HOST_LD='$(LD)'
2378         if test "$AS_BIN"; then
2379             AS="$(basename "$AS_BIN")"
2380         fi
2381         AR='lib -NOLOGO -OUT:"$@"'
2382         AR_FLAGS=
2383         RANLIB='echo not_ranlib'
2384         STRIP='echo not_strip'
2385         PKG_SKIP_STRIP=1
2386         XARGS=xargs
2387         ZIP=zip
2388         UNZIP=unzip
2389         DOXYGEN=:
2390         GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
2391         ASM_SUFFIX=asm
2392         OBJ_SUFFIX=obj
2393         LIB_SUFFIX=lib
2394         DLL_PREFIX=
2395         LIB_PREFIX=
2396         IMPORT_LIB_SUFFIX=lib
2397         MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2398         MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2399         MKSHLIB_FORCE_ALL=
2400         MKSHLIB_UNFORCE_ALL=
2401         DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2402         _USE_CPP_INCLUDE_FLAG=1
2403         _DEFINES_CFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2404         _DEFINES_CXXFLAGS='-FI $(DEPTH)/dist/include/mozilla-config.h -DMOZILLA_CLIENT'
2405         CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2406         CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2407         CXXFLAGS="$CXXFLAGS -wd4800" # disable warning "forcing value to bool"
2408         LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
2409         MOZ_DEBUG_FLAGS='-Zi'
2410         MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2411         WARNINGS_AS_ERRORS='-WX'
2412         # If we're building with --enable-profiling, we need -Oy-, which forces a frame pointer.
2413         if test -z "$MOZ_PROFILING"; then
2414             MOZ_OPTIMIZE_FLAGS='-O1'
2415         else
2416             MOZ_OPTIMIZE_FLAGS='-O1 -Oy-'
2417         fi
2418         MOZ_JS_STATIC_LIBS='$(LIBXUL_DIST)/lib/js_static.lib'
2419         MOZ_JS_SHARED_LIBS='$(LIBXUL_DIST)/lib/mozjs.lib'
2420         MOZ_FIX_LINK_PATHS=
2421         DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2422         XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2423         LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2424         MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2425         if test $_MSC_VER -ge 1400; then
2426             LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE -NXCOMPAT"
2427             dnl For profile-guided optimization
2428             PROFILE_GEN_CFLAGS="-GL"
2429             PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2430             dnl XXX: PGO builds can fail with warnings treated as errors,
2431             dnl specifically "no profile data available" appears to be
2432             dnl treated as an error sometimes. This might be a consequence
2433             dnl of using WARNINGS_AS_ERRORS in some modules, combined
2434             dnl with the linker doing most of the work in the whole-program
2435             dnl optimization/PGO case. I think it's probably a compiler bug,
2436             dnl but we work around it here.
2437             PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2438             dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2439             dnl Probably also a compiler bug, but what can you do?
2440             PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2441             LDFLAGS="$LDFLAGS -DYNAMICBASE"
2442         fi
2443     fi
2444     MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,jpeg32$(VERSION_NUMBER),$(DEPTH)/jpeg)'
2445     MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,png,$(DEPTH)/modules/libimg/png)'
2446     AC_DEFINE(HAVE_SNPRINTF)
2447     AC_DEFINE(_WINDOWS)
2448     AC_DEFINE(WIN32)
2449     AC_DEFINE(XP_WIN)
2450     AC_DEFINE(XP_WIN32)
2451     AC_DEFINE(HW_THREADS)
2452     AC_DEFINE(STDC_HEADERS)
2453     AC_DEFINE(NEW_H, <new>)
2454     AC_DEFINE(WIN32_LEAN_AND_MEAN)
2455     TARGET_MD_ARCH=win32
2456     _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2457     BIN_SUFFIX='.exe'
2458     MOZ_USER_DIR="Mozilla"
2460     dnl Hardcode to win95 for now - cls
2461     TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2463     dnl set NO_X11 defines here as the general check is skipped on win32
2464     no_x=yes
2465     AC_DEFINE(NO_X11)
2467     dnl MinGW/MSYS doesn't provide or need cygpath
2468     case "$host" in
2469     *-mingw*)
2470         CYGPATH_W=echo
2471         CYGPATH_S=cat
2472         MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2473         ;;
2474     *-cygwin*|*-msvc*|*-mks*)
2475         CYGPATH_W="cygpath -a -w"
2476         CYGPATH_S="sed -e s|\\\\|/|g"
2477         MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
2478         ;;
2479     esac
2480     case "$host" in
2481     *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2483     if test -z "$MOZ_TOOLS"; then
2484         AC_MSG_ERROR([MOZ_TOOLS is not set])
2485     fi
2487     MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2488     if test "$?" != "0" -o -z "$MOZ_TOOLS_DIR"; then
2489         AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2490     fi
2491     MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
2492     if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
2493         AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2494     fi
2495     MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
2496     ;;
2497     esac 
2500     case "$host_os" in
2501     cygwin*|msvc*|mks*)
2502         AC_MSG_WARN([Using a cygwin build environment is unsupported. Configure cannot check for the presence of necessary headers. Please upgrade to MozillaBuild; see https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
2503         ;;
2505     *)
2506         AC_CHECK_HEADERS(oleacc.idl)
2508         AC_LANG_SAVE
2509         AC_LANG_CPLUSPLUS
2510         AC_CHECK_HEADERS(atlbase.h)
2511         AC_LANG_RESTORE
2512         ;;
2513     esac
2515     case "$target" in
2516     i*86-*)
2517         if test "$HAVE_64BIT_OS"; then
2518             AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
2519         fi
2521         if test $_MSC_VER -ge 1400; then
2522             LDFLAGS="$LDFLAGS -SAFESEH"
2523         fi
2525         if test -n "$GNU_CC"; then
2526             CFLAGS="$CFLAGS -mstackrealign"
2527             CXXFLAGS="$CXXFLAGS -mstackrealign"
2528         fi
2530         AC_CHECK_HEADERS(mmintrin.h)
2531         AC_DEFINE(_X86_)
2532         ;;
2533     alpha-*)
2534         AC_DEFINE(_ALPHA_)
2535         ;;
2536     mips-*)
2537         AC_DEFINE(_MIPS_)
2538         ;;
2539     x86_64-*)
2540         AC_DEFINE(_AMD64_)
2541         ;;
2542     *)
2543         AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2544         ;;
2545     esac
2547     if test "$HAVE_64BIT_OS"; then
2548         AC_DEFINE(_WIN64)
2549     fi
2550     ;;
2552 *-netbsd*)
2553     DSO_CFLAGS=''
2554     CFLAGS="$CFLAGS -Dunix"
2555     CXXFLAGS="$CXXFLAGS -Dunix"
2556     if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2557         DLL_SUFFIX=".so"
2558         DSO_PIC_CFLAGS='-fPIC -DPIC'
2559         DSO_LDOPTS='-shared'
2560         BIN_FLAGS='-Wl,--export-dynamic'
2561     else
2562         DSO_PIC_CFLAGS='-fPIC -DPIC'
2563         DLL_SUFFIX=".so.1.0"
2564         DSO_LDOPTS='-shared'
2565     fi
2566     # This will fail on a.out systems prior to 1.5.1_ALPHA.
2567     MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2568     MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2569     if test "$LIBRUNPATH"; then
2570         DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2571     fi
2572     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2573     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2574     ;;
2576 *-nto*) 
2577         AC_DEFINE(NTO)  
2578         AC_DEFINE(_QNX_SOURCE)
2579         AC_DEFINE(_i386)
2580         OS_TARGET=NTO
2581         WARNINGS_AS_ERRORS=''
2582         MOZ_OPTIMIZE_FLAGS="-O"
2583         MOZ_DEBUG_FLAGS="-gstabs"
2584         USE_PTHREADS=1
2585         _PEDANTIC=
2586         LIBS="$LIBS -lsocket -lstdc++"
2587         _DEFINES_CFLAGS='-include $(DEPTH)/mozilla-config.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
2588         _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/mozilla-config.h -D_POSIX_C_SOURCE=199506'
2589         if test "$with_x" != "yes"
2590         then
2591                 _PLATFORM_DEFAULT_TOOLKIT="photon"
2592             TK_CFLAGS='-I/usr/include/photon'
2593                 TK_LIBS='-lph'
2594         fi
2595         case "${target_cpu}" in
2596         ppc*)
2597         AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)        
2598         ;;
2599         esac
2600         case "${host_cpu}" in
2601         i*86)
2602         USE_ELF_DYNSTR_GC=1
2603         ;;
2604         esac
2605         ;;
2607 *-openbsd*)
2608     DLL_SUFFIX=".so.1.0"
2609     DSO_CFLAGS=''
2610     DSO_PIC_CFLAGS='-fPIC'
2611     DSO_LDOPTS='-shared -fPIC'
2612     if test "$LIBRUNPATH"; then
2613         DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2614     fi
2615     ;;
2617 *-openvms*) 
2618     AC_DEFINE(NO_PW_GECOS)
2619     AC_DEFINE(NO_UDSOCK)
2620     AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
2621     USE_PTHREADS=1
2622     MKSHLIB_FORCE_ALL='-all'
2623     MKSHLIB_UNFORCE_ALL='-none'
2624     AS='as'
2625     AS_DASH_C_FLAG='-Wc/names=as_is'
2626     AR_FLAGS='c $@'
2627     DSO_LDOPTS='-shared -auto_symvec'
2628     DSO_PIC_CFLAGS=
2629     MOZ_DEBUG_LDFLAGS='-g'
2630     COMPAQ_CXX=1
2631     CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
2632     CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
2633     ;;
2636 *-os2*)
2637     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2638     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2639     AC_DEFINE(OS2)
2640     AC_DEFINE(XP_OS2)
2641     AC_DEFINE(OS2EMX_PLAIN_CHAR)
2642     AC_DEFINE(TCPV40HDRS)
2643     DLL_PREFIX=
2644     LIB_PREFIX=
2645     LIB_SUFFIX=lib
2646     BIN_SUFFIX=".exe"
2647     DLL_SUFFIX=".dll"
2648     IMPORT_LIB_SUFFIX=lib
2649     DSO_PIC_CFLAGS=
2650     AR=emxomfar
2651     AR_FLAGS='r $@'
2652     CFLAGS="$CFLAGS -Zomf"
2653     CXXFLAGS="$CXXFLAGS -Zomf"
2654     DSO_LDOPTS='-Zdll'
2655     BIN_FLAGS='-Zlinker /ST:0x100000'
2656     IMPLIB='emximp -o'
2657     FILTER='true'
2658     LDFLAGS='-Zmap'
2659     WARNINGS_AS_ERRORS='-Werror'
2660     MOZ_DEBUG_FLAGS="-g -fno-inline"
2661     MOZ_OPTIMIZE_FLAGS="-O2"
2662     MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2663     DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2664     LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2665     TARGET_MD_ARCH=os2
2666     _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2667     RC=rc.exe
2668     RCFLAGS='-n'
2669     MOZ_USER_DIR="Mozilla"
2671     if test "$MOZTOOLS"; then
2672         MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2673     else
2674         AC_MSG_ERROR([MOZTOOLS is not set])
2675     fi
2676     if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2677         DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2678         LDFLAGS="$LDFLAGS -Zhigh-mem"
2679         MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2680         AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2681     fi
2683     # GCC for OS/2 currently predefines these, but we don't want them
2684     _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2685     _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2687     AC_CACHE_CHECK(for __declspec(dllexport),
2688         ac_os2_declspec,
2689         [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2690                         [return 0;],
2691                         ac_os2_declspec="yes",
2692                         ac_os2_declspec="no")])
2693     if test "$ac_os2_declspec" != "yes"; then
2694         AC_MSG_ERROR([Compiler does not support __declspec(dllexport), install GCC-4.3.2 or newer])
2695     fi
2696     ;;
2698 alpha*-*-osf*)
2699     if test "$GNU_CC"; then
2700       MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2701       MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2703     else
2704         MOZ_DEBUG_FLAGS='-g'
2705         ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
2706         CFLAGS="$CFLAGS -ieee"
2707         CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee  -ptr $(DIST)/cxx_repository'
2708         DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
2709         DSO_CFLAGS=
2710         DSO_PIC_CFLAGS=
2711         MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2712         MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2713         MKSHLIB_FORCE_ALL='-all'
2714         MKSHLIB_UNFORCE_ALL='-none'
2715         dnl Might fix the libxpcom.so breakage on this platform as well....
2716         AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2717         AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2718     fi
2719     if test -z "$GNU_CXX"; then
2720       COMPAQ_CXX=1
2721     fi
2722     AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2723     ;;
2725 *-qnx*) 
2726     DIRENT_INO=d_stat.st_ino
2727     dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
2728     AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2729     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2730     dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
2731     AC_DEFINE(STDC_HEADERS)
2732     if test "$no_x" = "yes"; then
2733             _PLATFORM_DEFAULT_TOOLKIT='photon'
2734             TK_CFLAGS='-I/usr/nto/include/photon'
2735             TK_LIBS='-lphoton -lphrender'
2736     fi
2737     ;;
2739 *-sco*) 
2740     AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2741     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2742     CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
2743     if test ! "$GNU_CC"; then
2744        DSO_LDOPTS='-G'
2745     fi
2746     ;;
2748 *-solaris*) 
2749     AC_DEFINE(SOLARIS)
2750     TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2751     SYSTEM_MAKEDEPEND=
2752     MOZ_FIX_LINK_PATHS=
2753     # $ORIGIN/.. is for shared libraries under components/ to locate shared
2754     # libraries one level up (e.g. libnspr4.so)
2755     if test "$SOLARIS_SUNPRO_CC"; then
2756        LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..' -z lazyload -z combreloc -z muldefs"
2757        LIBS="-lCrun -lCstd -lc $LIBS"
2758        NS_USE_NATIVE=1
2759        AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2760        CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__"
2761        CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions -norunpath -D__FUNCTION__=__func__ -template=no%extdef"
2762        _MOZ_EXCEPTIONS_FLAGS_ON='-features=except'
2763        _MOZ_EXCEPTIONS_FLAGS_OFF='-features=no%except'
2764        LDFLAGS="-xildoff $LDFLAGS"
2765        if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then
2766            _SAVE_LDFLAGS=$LDFLAGS
2767            LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS" 
2768            AC_TRY_LINK([#include <stdio.h>],
2769                        [printf("Hello World\n");],
2770                        ,
2771                        [LDFLAGS=$_SAVE_LDFLAGS])
2772        fi
2773        WARNINGS_AS_ERRORS='-Werror'
2774        MOZ_OPTIMIZE_FLAGS="-xO4"
2775        MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2776        MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2777        MKSHLIB_FORCE_ALL='-z allextract'
2778        MKSHLIB_UNFORCE_ALL='-z defaultextract'
2779        DSO_LDOPTS='-G'
2780        AR_LIST="$AR t"
2781        AR_EXTRACT="$AR x"
2782        AR_DELETE="$AR d"
2783        AR='$(CXX) -xar'
2784        AR_FLAGS='-o $@'
2785        AS='/usr/ccs/bin/as'
2786        ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2787        AS_DASH_C_FLAG=''
2788        TARGET_COMPILER_ABI="sunc"
2789        CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2790        CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2791        AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
2792        AC_LANG_SAVE
2793        AC_LANG_CPLUSPLUS
2794        AC_TRY_COMPILE([],
2795            [#if (__SUNPRO_CC < 0x590)
2796            #error "Denied"
2797            #endif],
2798            _BAD_COMPILER=,_BAD_COMPILER=1)
2799        if test -n "$_BAD_COMPILER"; then
2800            _res="no"
2801            AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
2802        else
2803            _res="yes"
2804        fi
2805        AC_TRY_COMPILE([],
2806            [#if (__SUNPRO_CC >= 0x5100)
2807            #error "Sun C++ 5.10 or above"
2808            #endif],
2809            _ABOVE_SS12U1=,_ABOVE_SS12U1=1)
2810        if test "$_ABOVE_SS12U1"; then
2811            # disable xannotate
2812            CXXFLAGS="$CXXFLAGS -xannotate=no"
2813        fi
2814        AC_MSG_RESULT([$_res])
2815        AC_LANG_RESTORE
2816     else
2817        LDFLAGS="$LDFLAGS -Wl,-z,ignore -Wl,-R,'\$\$ORIGIN:\$\$ORIGIN/..' -Wl,-z,lazyload -Wl,-z,combreloc -Wl,-z,muldefs"
2818        LIBS="-lc $LIBS"
2819        MKSHLIB_FORCE_ALL='-Wl,-z -Wl,allextract'
2820        MKSHLIB_UNFORCE_ALL='-Wl,-z -Wl,defaultextract'
2821        ASFLAGS="$ASFLAGS -fPIC"
2822        DSO_LDOPTS='-shared'
2823        _WARNINGS_CFLAGS=''
2824        _WARNINGS_CXXFLAGS=''
2825        if test "$OS_RELEASE" = "5.3"; then
2826            AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2827        fi
2828     fi
2829     if test "$OS_RELEASE" = "5.5.1"; then
2830         AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2831     fi
2832     ;;
2834 *-sunos*) 
2835     DSO_LDOPTS='-Bdynamic'
2836     MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2837     MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2838     AC_DEFINE(SUNOS4)
2839     AC_DEFINE(SPRINTF_RETURNS_STRING)
2840     case "$(target_os)" in
2841     sunos4.1*)
2842         DLL_SUFFIX='.so.1.0'
2843         ;;
2844     esac
2845     ;;
2847 *-sysv4.2uw7*) 
2848         NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2849     ;;
2851 *-os2*)
2852     HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2853     ;;
2855 *-android*)
2856     AC_DEFINE(NO_PW_GECOS)
2857     no_x=yes
2858     _PLATFORM_DEFAULT_TOOLKIT=cairo-android
2859     TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2861     MOZ_GFX_OPTIMIZE_MOBILE=1
2862     # If we're building with --enable-profiling, we need a frame pointer.
2863     if test -z "$MOZ_PROFILING"; then
2864         MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions -fomit-frame-pointer"
2865     else
2866         MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions -fno-omit-frame-pointer"
2867     fi
2868     ;;
2870 esac
2872 dnl Only one oddball right now (QNX), but this gives us flexibility
2873 dnl if any other platforms need to override this in the future.
2874 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2876 dnl ========================================================
2877 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2878 dnl by now will not have any way to link most binaries (tests
2879 dnl as well as viewer, apprunner, etc.), because some symbols
2880 dnl will be left out of the "composite" .so's by ld as unneeded.
2881 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2882 dnl they can link in the static libs that provide the missing
2883 dnl symbols.
2884 dnl ========================================================
2885 NO_LD_ARCHIVE_FLAGS=
2886 if test -z "$MKSHLIB_FORCE_ALL" -o -z "$MKSHLIB_UNFORCE_ALL"; then
2887     NO_LD_ARCHIVE_FLAGS=1
2889 case "$target" in
2890 *-os2*)
2891     NO_LD_ARCHIVE_FLAGS=
2892     ;;
2893 *-aix4.3*|*-aix5*)
2894     NO_LD_ARCHIVE_FLAGS=
2895     ;;
2896 *-openvms*)
2897     NO_LD_ARCHIVE_FLAGS=
2898     ;;
2899 *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince|*-winmo)
2900     if test -z "$GNU_CC"; then
2901         NO_LD_ARCHIVE_FLAGS=
2902     fi
2903     ;;
2904 esac
2905 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2907 dnl ========================================================
2908 dnl = Flags to strip unused symbols from .so components and
2909 dnl = to export jemalloc symbols when linking a program
2910 dnl ========================================================
2911 case "$target" in
2912     *-linux*|*-kfreebsd*-gnu|*-gnu*)
2913         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2914         MOZ_JEMALLOC_STANDALONE_GLUE_LDOPTS='-rdynamic -Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/jemalloc-standalone-linkage-version-script'
2915         ;;
2916     *-solaris*)
2917         if test -z "$GNU_CC"; then
2918          MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2919         else
2920          if test -z "$GCC_USE_GNU_LD"; then
2921           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2922          else
2923           MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2924          fi
2925         fi
2926         ;;
2927     *-nto*) 
2928         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2929         ;;
2930     *-darwin*)
2931         MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2932         ;;
2933     *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince|*-winmo)
2934         if test -n "$GNU_CC"; then
2935            MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2936         fi
2937         ;;
2938 esac
2940 if test -z "$COMPILE_ENVIRONMENT"; then
2941     SKIP_COMPILER_CHECKS=1
2942     SKIP_LIBRARY_CHECKS=1
2945 if test -z "$SKIP_COMPILER_CHECKS"; then
2946 dnl Checks for typedefs, structures, and compiler characteristics.
2947 dnl ========================================================
2948 AC_HEADER_STDC
2949 AC_C_CONST
2950 AC_TYPE_MODE_T
2951 AC_TYPE_OFF_T
2952 AC_TYPE_PID_T
2953 AC_TYPE_SIZE_T
2954 AC_LANG_CPLUSPLUS
2955 AC_MSG_CHECKING(for __stdcall)
2956 AC_CACHE_VAL(ac_cv___stdcall,
2957  [AC_TRY_COMPILE([template <typename Method> struct foo;
2958                   template <> struct foo<void (*)()> {};
2959                   template <> struct foo<void (__stdcall*)()> {};],
2960                  [],
2961                  [ac_cv___stdcall=true],
2962                  [ac_cv___stdcall=false])])
2963 if test "$ac_cv___stdcall" = true ; then
2964   AC_DEFINE(HAVE_STDCALL)
2965   AC_MSG_RESULT(yes)
2966 else
2967   AC_MSG_RESULT(no)
2969 AC_LANG_C
2970 AC_MSG_CHECKING(for ssize_t)
2971 AC_CACHE_VAL(ac_cv_type_ssize_t,
2972  [AC_TRY_COMPILE([#include <stdio.h>
2973                   #include <sys/types.h>],
2974                  [ssize_t foo = 0;],
2975                  [ac_cv_type_ssize_t=true],
2976                  [ac_cv_type_ssize_t=false])])
2977 if test "$ac_cv_type_ssize_t" = true ; then
2978   AC_DEFINE(HAVE_SSIZE_T)
2979   AC_MSG_RESULT(yes)
2980 else
2981   AC_MSG_RESULT(no)
2983 AC_STRUCT_ST_BLKSIZE
2984 AC_MSG_CHECKING(for siginfo_t)
2985 AC_CACHE_VAL(ac_cv_siginfo_t,
2986  [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2987                   #include <signal.h>],
2988                  [siginfo_t* info;],
2989                  [ac_cv_siginfo_t=true],
2990                  [ac_cv_siginfo_t=false])])
2991 if test "$ac_cv_siginfo_t" = true ; then
2992   AC_DEFINE(HAVE_SIGINFO_T)
2993   AC_MSG_RESULT(yes)
2994 else
2995   AC_MSG_RESULT(no)
2998 dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
2999 dnl ========================================================
3000 AC_MSG_CHECKING(for int16_t)
3001 AC_CACHE_VAL(ac_cv_int16_t,
3002  [AC_TRY_COMPILE([#include <stdio.h>
3003                   #include <sys/types.h>],
3004                  [int16_t foo = 0;],
3005                  [ac_cv_int16_t=true],
3006                  [ac_cv_int16_t=false])])
3007 if test "$ac_cv_int16_t" = true ; then
3008   AC_DEFINE(HAVE_INT16_T)
3009   AC_MSG_RESULT(yes)
3010 else
3011   AC_MSG_RESULT(no)
3013 AC_MSG_CHECKING(for int32_t)
3014 AC_CACHE_VAL(ac_cv_int32_t,
3015  [AC_TRY_COMPILE([#include <stdio.h>
3016                   #include <sys/types.h>],
3017                  [int32_t foo = 0;],
3018                  [ac_cv_int32_t=true],
3019                  [ac_cv_int32_t=false])])
3020 if test "$ac_cv_int32_t" = true ; then
3021   AC_DEFINE(HAVE_INT32_T)
3022   AC_MSG_RESULT(yes)
3023 else
3024   AC_MSG_RESULT(no)
3026 AC_MSG_CHECKING(for int64_t)
3027 AC_CACHE_VAL(ac_cv_int64_t,
3028  [AC_TRY_COMPILE([#include <stdio.h>
3029                   #include <sys/types.h>],
3030                  [int64_t foo = 0;],
3031                  [ac_cv_int64_t=true],
3032                  [ac_cv_int64_t=false])])
3033 if test "$ac_cv_int64_t" = true ; then
3034   AC_DEFINE(HAVE_INT64_T)
3035   AC_MSG_RESULT(yes)
3036 else
3037   AC_MSG_RESULT(no)
3039 AC_MSG_CHECKING(for int64)
3040 AC_CACHE_VAL(ac_cv_int64,
3041  [AC_TRY_COMPILE([#include <stdio.h>
3042                   #include <sys/types.h>],
3043                  [int64 foo = 0;],
3044                  [ac_cv_int64=true],
3045                  [ac_cv_int64=false])])
3046 if test "$ac_cv_int64" = true ; then
3047   AC_DEFINE(HAVE_INT64)
3048   AC_MSG_RESULT(yes)
3049 else
3050   AC_MSG_RESULT(no)
3052 AC_MSG_CHECKING(for uint)
3053 AC_CACHE_VAL(ac_cv_uint,
3054  [AC_TRY_COMPILE([#include <stdio.h>
3055                   #include <sys/types.h>],
3056                  [uint foo = 0;],
3057                  [ac_cv_uint=true],
3058                  [ac_cv_uint=false])])
3059 if test "$ac_cv_uint" = true ; then
3060   AC_DEFINE(HAVE_UINT)
3061   AC_MSG_RESULT(yes)
3062 else
3063   AC_MSG_RESULT(no)
3065 AC_MSG_CHECKING(for uint_t)
3066 AC_CACHE_VAL(ac_cv_uint_t,
3067  [AC_TRY_COMPILE([#include <stdio.h>
3068                   #include <sys/types.h>],
3069                  [uint_t foo = 0;],
3070                  [ac_cv_uint_t=true],
3071                  [ac_cv_uint_t=false])])
3072 if test "$ac_cv_uint_t" = true ; then
3073   AC_DEFINE(HAVE_UINT_T)
3074   AC_MSG_RESULT(yes)
3075 else
3076   AC_MSG_RESULT(no)
3078 AC_MSG_CHECKING(for uint16_t)
3079 AC_CACHE_VAL(ac_cv_uint16_t,
3080  [AC_TRY_COMPILE([#include <stdio.h>
3081                   #include <sys/types.h>],
3082                  [uint16_t foo = 0;],
3083                  [ac_cv_uint16_t=true],
3084                  [ac_cv_uint16_t=false])])
3085 if test "$ac_cv_uint16_t" = true ; then
3086   AC_DEFINE(HAVE_UINT16_T)
3087   AC_MSG_RESULT(yes)
3088 else
3089   AC_MSG_RESULT(no)
3092 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
3093 dnl are defined when compiling C++ but not C.  Since the result of this
3094 dnl test is used only in C++, do it in C++.
3095 AC_LANG_CPLUSPLUS
3097 AC_MSG_CHECKING(for uname.domainname)
3098 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
3099     [AC_TRY_COMPILE([#include <sys/utsname.h>],
3100         [ struct utsname *res; char *domain; 
3101             (void)uname(res);  if (res != 0) { domain = res->domainname; } ],
3102         [ac_cv_have_uname_domainname_field=true],
3103         [ac_cv_have_uname_domainname_field=false])])
3105 if test "$ac_cv_have_uname_domainname_field" = "true"; then
3106     AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
3107     AC_MSG_RESULT(yes)
3108 else
3109     AC_MSG_RESULT(no)
3112 AC_MSG_CHECKING(for uname.__domainname)
3113 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
3114     [AC_TRY_COMPILE([#include <sys/utsname.h>],
3115         [ struct utsname *res; char *domain; 
3116             (void)uname(res);  if (res != 0) { domain = res->__domainname; } ],
3117         [ac_cv_have_uname_us_domainname_field=true],
3118         [ac_cv_have_uname_us_domainname_field=false])])
3120 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
3121     AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
3122     AC_MSG_RESULT(yes)
3123 else
3124     AC_MSG_RESULT(no)
3127 AC_LANG_CPLUSPLUS
3129 dnl Check for usable char16_t (2 bytes, unsigned)
3130 dnl (we might not need the unsignedness check anymore)
3131 AC_CACHE_CHECK(for usable char16_t (2 bytes, unsigned),
3132     ac_cv_have_usable_char16_t,
3133     [AC_TRY_COMPILE([$configure_static_assert_macros],
3134                     [CONFIGURE_STATIC_ASSERT(sizeof(char16_t) == 2);
3135                      CONFIGURE_STATIC_ASSERT(char16_t(-1) > char16_t(0));
3136                      CONFIGURE_STATIC_ASSERT(sizeof((u"hello")[0]) == 2);
3137                      CONFIGURE_STATIC_ASSERT(sizeof(u'a') == 2);
3138                      CONFIGURE_STATIC_ASSERT(u'\xFFFF' > u'\x0')],
3139                     ac_cv_have_usable_char16_t="yes",
3140                     ac_cv_have_usable_char16_t="no")])
3141 if test "$ac_cv_have_usable_char16_t" = "yes"; then
3142     AC_DEFINE(HAVE_CPP_CHAR16_T)
3143     HAVE_CPP_CHAR16_T=1
3146 dnl Check for usable wchar_t (2 bytes, unsigned)
3147 dnl (we really don't need the unsignedness check anymore)
3148 dnl ========================================================
3150 AC_CACHE_CHECK(for usable wchar_t (2 bytes, unsigned),
3151     ac_cv_have_usable_wchar_v2,
3152     [AC_TRY_COMPILE([#include <stddef.h>
3153                      $configure_static_assert_macros],
3154                     [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
3155                      CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
3156                     ac_cv_have_usable_wchar_v2="yes",
3157                     ac_cv_have_usable_wchar_v2="no")])
3158 if test "$ac_cv_have_usable_wchar_v2" = "yes"; then
3159     AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
3160     HAVE_CPP_2BYTE_WCHAR_T=1
3161 elif test "$ac_cv_have_usable_char16_t" != "yes"; then
3162 dnl This is really gcc-only
3163 dnl Do this test using CXX only since some versions of gcc
3164 dnl 2.95-2.97 have a signed wchar_t in c++ only and some versions
3165 dnl only have short-wchar support for c++.
3166 dnl Note that we assume that mac & win32 have short wchar (see nscore.h)
3168     _SAVE_CXXFLAGS=$CXXFLAGS
3169     CXXFLAGS="$CXXFLAGS -fshort-wchar"
3171     AC_CACHE_CHECK(for compiler -fshort-wchar option, 
3172         ac_cv_have_usable_wchar_option_v2,
3173         [AC_TRY_LINK([#include <stddef.h>
3174                       $configure_static_assert_macros],
3175                      [CONFIGURE_STATIC_ASSERT(sizeof(wchar_t) == 2);
3176                       CONFIGURE_STATIC_ASSERT((wchar_t)-1 > (wchar_t) 0)],
3177                      ac_cv_have_usable_wchar_option_v2="yes",
3178                      ac_cv_have_usable_wchar_option_v2="no")])
3180     if test "$ac_cv_have_usable_wchar_option_v2" = "yes"; then
3181         AC_DEFINE(HAVE_CPP_2BYTE_WCHAR_T)
3182         HAVE_CPP_2BYTE_WCHAR_T=1
3183         if test "$OS_TARGET" = Android; then
3184             WCHAR_CFLAGS="-fshort-wchar -Wl,--no-wchar-size-warning"
3185             CXXFLAGS="$CXXFLAGS -Wl,--no-wchar-size-warning"
3186             CFLAGS="$CFLAGS -Wl,--no-wchar-size-warning"
3187             DSO_LDOPTS="$DSO_LDOPTS -Wl,--no-wchar-size-warning"
3188         else
3189             WCHAR_CFLAGS="-fshort-wchar"
3190         fi
3191     else    
3192         CXXFLAGS=$_SAVE_CXXFLAGS
3193     fi
3196 AC_LANG_C
3198 dnl Check for .hidden assembler directive and visibility attribute.
3199 dnl Borrowed from glibc configure.in
3200 dnl ===============================================================
3201 if test "$GNU_CC"; then
3202   AC_CACHE_CHECK(for visibility(hidden) attribute,
3203                  ac_cv_visibility_hidden,
3204                  [cat > conftest.c <<EOF
3205                   int foo __attribute__ ((visibility ("hidden"))) = 1;
3207                   ac_cv_visibility_hidden=no
3208                   if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3209                     if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
3210                       ac_cv_visibility_hidden=yes
3211                     fi
3212                   fi
3213                   rm -f conftest.[cs]
3214                  ])
3215   if test "$ac_cv_visibility_hidden" = "yes"; then
3216     AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
3218     AC_CACHE_CHECK(for visibility(default) attribute,
3219                    ac_cv_visibility_default,
3220                    [cat > conftest.c <<EOF
3221                     int foo __attribute__ ((visibility ("default"))) = 1;
3223                     ac_cv_visibility_default=no
3224                     if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3225                       if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
3226                         ac_cv_visibility_default=yes
3227                       fi
3228                     fi
3229                     rm -f conftest.[cs]
3230                    ])
3231     if test "$ac_cv_visibility_default" = "yes"; then
3232       AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
3234       AC_CACHE_CHECK(for visibility pragma support,
3235                      ac_cv_visibility_pragma,
3236                      [cat > conftest.c <<EOF
3237 #pragma GCC visibility push(hidden)
3238                       int foo_hidden = 1;
3239 #pragma GCC visibility push(default)
3240                       int foo_default = 1;
3242                       ac_cv_visibility_pragma=no
3243                       if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3244                         if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
3245                           if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
3246                             ac_cv_visibility_pragma=yes
3247                           fi
3248                         fi
3249                       fi
3250                       rm -f conftest.[cs]
3251                     ])
3252       if test "$ac_cv_visibility_pragma" = "yes"; then
3253         AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
3254                        ac_cv_have_visibility_class_bug,
3255                        [cat > conftest.c <<EOF
3256 #pragma GCC visibility push(hidden)
3257 struct __attribute__ ((visibility ("default"))) TestStruct {
3258   static void Init();
3260 __attribute__ ((visibility ("default"))) void TestFunc() {
3261   TestStruct::Init();
3264                        ac_cv_have_visibility_class_bug=no
3265                        if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
3266                          ac_cv_have_visibility_class_bug=yes
3267                        else
3268                          if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
3269                            ac_cv_have_visibility_class_bug=yes
3270                          fi
3271                        fi
3272                        rm -rf conftest.{c,S}
3273                        ])
3275         AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
3276                        ac_cv_have_visibility_builtin_bug,
3277                        [cat > conftest.c <<EOF
3278 #pragma GCC visibility push(hidden)
3279 #pragma GCC visibility push(default)
3280 #include <string.h>
3281 #pragma GCC visibility pop
3283 __attribute__ ((visibility ("default"))) void Func() {
3284   char c[[100]];
3285   memset(c, 0, sizeof(c));
3288                        ac_cv_have_visibility_builtin_bug=no
3289                        if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
3290                          ac_cv_have_visibility_builtin_bug=yes
3291                        else
3292                          if test `grep -c "@PLT" conftest.S` = 0; then
3293                            ac_cv_visibility_builtin_bug=yes
3294                          fi
3295                        fi
3296                        rm -f conftest.{c,S}
3297                        ])
3298         if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
3299                 "$ac_cv_have_visibility_class_bug" = "no"; then
3300           VISIBILITY_FLAGS='-I$(DIST)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
3301           WRAP_SYSTEM_INCLUDES=1
3302           STL_FLAGS='-I$(DIST)/stl_wrappers'
3303           WRAP_STL_INCLUDES=1
3304         else
3305           VISIBILITY_FLAGS='-fvisibility=hidden'
3306         fi # have visibility pragma bug
3307       fi   # have visibility pragma
3308     fi     # have visibility(default) attribute
3309   fi       # have visibility(hidden) attribute
3310 fi         # GNU_CC
3312 # visibility hidden flag for Sun Studio on Solaris
3313 if test "$SOLARIS_SUNPRO_CC"; then
3314 VISIBILITY_FLAGS='-xldscope=hidden'
3315 fi         # Sun Studio on Solaris
3317 AC_SUBST(WRAP_SYSTEM_INCLUDES)
3318 AC_SUBST(VISIBILITY_FLAGS)
3320 dnl Check for __force_align_arg_pointer__ for SSE2 on gcc
3321 dnl ========================================================
3322 if test "$GNU_CC"; then
3323   CFLAGS_save="${CFLAGS}"
3324   CFLAGS="${CFLAGS} -Werror"
3325   AC_CACHE_CHECK(for __force_align_arg_pointer__ attribute,
3326                  ac_cv_force_align_arg_pointer,
3327                  [AC_TRY_COMPILE([__attribute__ ((__force_align_arg_pointer__)) void test() {}],
3328                                  [],
3329                                  ac_cv_force_align_arg_pointer="yes",
3330                                  ac_cv_force_align_arg_pointer="no")])
3331   CFLAGS="${CFLAGS_save}"
3332   if test "$ac_cv_force_align_arg_pointer" = "yes"; then
3333     HAVE_GCC_ALIGN_ARG_POINTER=1
3334   else
3335     HAVE_GCC_ALIGN_ARG_POINTER=
3336   fi
3338 AC_SUBST(HAVE_GCC_ALIGN_ARG_POINTER)
3340 dnl Checks for header files.
3341 dnl ========================================================
3342 AC_HEADER_DIRENT
3343 case "$target_os" in
3344 freebsd*)
3345 # for stuff like -lXshm
3346     CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
3347     ;;
3348 esac
3349 AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
3350 AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
3351 AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
3352 AC_CHECK_HEADERS(malloc.h)
3353 AC_CHECK_HEADERS(X11/XKBlib.h)
3354 AC_CHECK_HEADERS(io.h)
3356 dnl These are all the places some variant of statfs can be hiding.
3357 AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
3359 dnl Quota support
3360 AC_CHECK_HEADERS(sys/quota.h)
3361 AC_CHECK_HEADERS(linux/quota.h)
3363 dnl Try for MMX support
3364 dnl NB - later gcc versions require -mmmx for this header to be successfully
3365 dnl included (or another option which implies it, such as -march=pentium-mmx)
3366 AC_CHECK_HEADERS(mmintrin.h)
3368 dnl Check whether the compiler supports the new-style C++ standard
3369 dnl library headers (i.e. <new>) or needs the old "new.h"
3370 AC_LANG_CPLUSPLUS
3371 NEW_H=new.h
3372 AC_CHECK_HEADER(new, [NEW_H=new])
3373 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
3374 AC_LANG_C
3376 AC_ARG_ENABLE(dtrace,
3377               [  --enable-dtrace         build with dtrace support if available (default=no)],
3378               [enable_dtrace="yes"],)
3379 if test "x$enable_dtrace" = "xyes"; then
3380   AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
3381   if test -n "$HAVE_DTRACE"; then
3382       AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
3383   else
3384       AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
3385   fi
3387 AC_SUBST(HAVE_DTRACE)
3389 case $target in
3390 *-aix4.3*|*-aix5*)
3391         ;;
3393         AC_CHECK_HEADERS(sys/cdefs.h)
3394         ;;
3395 esac
3397 dnl Checks for libraries.
3398 dnl ========================================================
3399 case $target in
3400 *-hpux11.*)
3401         ;;
3403         AC_CHECK_LIB(c_r, gethostbyname_r)
3404         ;;
3405 esac
3407 dnl We don't want to link with libdl even if it's present on OS X, since
3408 dnl it's not used and not part of the default installation.
3409 dnl The same goes for BeOS. OS/2 has dlfcn in libc.
3410 dnl We don't want to link against libm or libpthread on Darwin since
3411 dnl they both are just symlinks to libSystem and explicitly linking
3412 dnl against libSystem causes issues when debugging (see bug 299601).
3413 case $target in
3414 *-darwin*)
3415     ;;
3416 *-beos*)
3417     ;;
3418 *-os2*)
3419     ;;
3421     AC_SEARCH_LIBS(dlopen, dl, 
3422         AC_CHECK_HEADER(dlfcn.h, 
3423         AC_DEFINE(HAVE_DLOPEN)))
3424     ;;
3425 esac
3427 _SAVE_CFLAGS="$CFLAGS"
3428 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3429 AC_CHECK_FUNCS(dladdr)
3430 CFLAGS="$_SAVE_CFLAGS"
3432 if test ! "$GNU_CXX"; then
3434     case $target in
3435     *-aix*)
3436         AC_CHECK_LIB(C_r, demangle)
3437         ;;
3438      *)
3439         AC_CHECK_LIB(C, demangle)
3440         ;;
3441      esac
3444 dnl OS/2 has socket in libc.
3445 case $target in
3446 *-os2*)
3447     ;;
3449     AC_CHECK_LIB(socket, socket)
3450 esac
3452 dnl ========================================================
3453 dnl Check whether we can compile code for Core Text
3454 dnl (available on Mac OS X 10.5 or later)
3455 dnl ========================================================
3456 case "$target" in
3457 *-darwin*)
3458   AC_MSG_CHECKING([for Core Text])
3459   AC_TRY_COMPILE([#include <ApplicationServices/ApplicationServices.h>],
3460                  [CTLineRef lineRef;],
3461                   ac_cv_have_core_text="yes",
3462                   ac_cv_have_core_text="no")
3463   AC_MSG_RESULT([$ac_cv_have_core_text])
3465   if test "$ac_cv_have_core_text" = "no"; then
3466     AC_MSG_ERROR([Core Text is required (available on Mac OS X 10.5 or later).])
3467   fi
3468   ;;
3469 esac
3471 XLDFLAGS="$X_LIBS"
3472 XLIBS="$X_EXTRA_LIBS"
3474 dnl ========================================================
3475 dnl Checks for X libraries.
3476 dnl Ordering is important.
3477 dnl Xt is dependent upon SM as of X11R6
3478 dnl ========================================================
3479 if test "$no_x" = "yes"; then
3480     AC_DEFINE(NO_X11)
3481 else
3482     AC_DEFINE_UNQUOTED(FUNCPROTO,15)
3483         XLIBS="-lX11 $XLIBS"
3484         _SAVE_LDFLAGS="$LDFLAGS"
3485         LDFLAGS="$XLDFLAGS $LDFLAGS"
3486         AC_CHECK_LIB(X11, XDrawLines, [X11_LIBS="-lX11"],
3487                 [MISSING_X="$MISSING_X -lX11"], $XLIBS)
3488         AC_CHECK_LIB(Xext, XextAddDisplay, [XEXT_LIBS="-lXext"],
3489                 [MISSING_X="$MISSING_X -lXext"], $XLIBS)
3490      
3491         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt"], [
3492         unset ac_cv_lib_Xt_XtFree
3493             AC_CHECK_LIB(ICE, IceFlush, [XT_LIBS="-lICE $XT_LIBS"],, $XT_LIBS $XLIBS)
3494             AC_CHECK_LIB(SM, SmcCloseConnection, [XT_LIBS="-lSM $XT_LIBS"],, $XT_LIBS $XLIBS) 
3495         AC_CHECK_LIB(Xt, XtFree, [ XT_LIBS="-lXt $XT_LIBS"],
3496                     [MISSING_X="$MISSING_X -lXt"], $X_PRE_LIBS $XT_LIBS $XLIBS)
3497         ])
3499     # AIX needs the motif library linked before libXt to prevent
3500     # crashes in plugins linked against Motif - Bug #98892
3501     case "${target_os}" in
3502     aix*)
3503         XT_LIBS="-lXm $XT_LIBS"
3504         ;;
3505     esac
3507     dnl ========================================================
3508     dnl = Check for XShm
3509     dnl ========================================================
3510     AC_CHECK_LIB(Xext, XShmCreateImage, _HAVE_XSHM_XEXT=1,,
3511         $XLIBS $XEXT_LIBS)
3512     AC_CHECK_HEADER(X11/extensions/XShm.h)
3513     if test "$ac_cv_header_X11_extensions_XShm_h" = "yes" &&
3514         test -n "$_HAVE_XSHM_XEXT"; then
3515         AC_DEFINE(HAVE_XSHM)
3516     fi
3518     dnl ========================================================
3519     dnl = Check for Xss
3520     dnl ========================================================
3521     AC_CHECK_HEADER(X11/extensions/scrnsaver.h,
3522         AC_CHECK_LIB(Xss, XScreenSaverQueryInfo,
3523             [XSS_LIBS="-lXss $XEXT_LIBS $XLIBS"
3524              AC_DEFINE(HAVE_LIBXSS)],, $XEXT_LIBS $XLIBS))
3526     dnl ========================================================
3527     dnl = Check for XIE
3528     dnl ========================================================
3529     AC_CHECK_LIB(XIE, XieFloGeometry, [MOZ_XIE_LIBS="-lXIE"],,
3530         $XLIBS $XEXT_LIBS)
3531     AC_CHECK_HEADER(X11/extensions/XIElib.h)
3533     if test "$MOZ_XIE_LIBS"; then
3534         dnl ====================================================
3535         dnl = If XIE is present and is desired, turn it on
3536         dnl ====================================================
3537         case $target in
3538             *-hpux*)
3539                 ;;
3540             *)
3541                 HAVE_XIE=1
3542                 ;;
3543         esac
3544     fi
3546         LDFLAGS="$_SAVE_LDFLAGS"
3548     dnl ========================================================
3549     dnl = Check for freetype2 and its functionality
3550     dnl ========================================================
3551     AC_CHECK_FT2(6.1.0, [_HAVE_FREETYPE2=1], [_HAVE_FREETYPE2=])
3553     if test "$_HAVE_FREETYPE2"; then
3554         _SAVE_LIBS="$LIBS"
3555         _SAVE_CFLAGS="$CFLAGS"
3556         LIBS="$LIBS $FT2_LIBS"
3557         CFLAGS="$CFLAGS $FT2_CFLAGS"
3559         AC_CACHE_CHECK(for FT_Bitmap_Size.y_ppem,
3560             ac_cv_member_FT_Bitmap_Size_y_ppem,
3561             [AC_TRY_COMPILE([#include <ft2build.h>
3562                              #include FT_FREETYPE_H],
3563                             [FT_Bitmap_Size s;
3564                              if (sizeof s.y_ppem) return 0;
3565                              return 1],
3566                             ac_cv_member_FT_Bitmap_Size_y_ppem=yes,
3567                             ac_cv_member_FT_Bitmap_Size_y_ppem=no)])
3568         if test "$ac_cv_member_FT_Bitmap_Size_y_ppem" = yes; then
3569             HAVE_FT_BITMAP_SIZE_Y_PPEM=1
3570         else
3571             HAVE_FT_BITMAP_SIZE_Y_PPEM=0
3572         fi
3573         AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,
3574                            $HAVE_FT_BITMAP_SIZE_Y_PPEM,
3575                            [FT_Bitmap_Size structure includes y_ppem field])
3577         AC_CHECK_FUNCS(FT_GlyphSlot_Embolden FT_Load_Sfnt_Table FT_Select_Size)
3579         LIBS="$_SAVE_LIBS"
3580         CFLAGS="$_SAVE_CFLAGS"
3581     fi
3583 fi # $no_x
3585 AC_SUBST(XCFLAGS)
3586 AC_SUBST(XLDFLAGS)
3587 AC_SUBST(XLIBS)
3588 AC_SUBST(XEXT_LIBS)
3589 AC_SUBST(XT_LIBS)
3590 AC_SUBST(XSS_LIBS)
3592 AC_MSG_CHECKING(for ARM SIMD support in compiler)
3593 AC_TRY_COMPILE([],
3594                [asm("uqadd8 r1, r1, r2");],
3595                result="yes", result="no")
3596 AC_MSG_RESULT("$result")
3597 if test "$result" = "yes"; then
3598     AC_DEFINE(HAVE_ARM_SIMD)
3599     HAVE_ARM_SIMD=1
3601 AC_SUBST(HAVE_ARM_SIMD)
3603 AC_MSG_CHECKING(for ARM NEON support in compiler)
3604 _SAVE_CFLAGS="$CFLAGS"
3605 if test "$GNU_CC"; then
3606   # gcc needs -mfpu=neon to recognize NEON instructions
3607   CFLAGS="$CFLAGS -mfpu=neon -mfloat-abi=softfp"
3609 AC_TRY_COMPILE([],
3610                [asm("vadd.i8 d0, d0, d0");],
3611                result="yes", result="no")
3612 AC_MSG_RESULT("$result")
3613 if test "$result" = "yes"; then
3614     AC_DEFINE(HAVE_ARM_NEON)
3615     HAVE_ARM_NEON=1
3617 CFLAGS="$_SAVE_CFLAGS"
3618 AC_SUBST(HAVE_ARM_NEON)
3620 dnl ========================================================
3621 dnl = pthread support
3622 dnl = Start by checking whether the system support pthreads
3623 dnl ========================================================
3624 case "$target_os" in
3625 darwin*)
3626     USE_PTHREADS=1
3627     ;;
3629     MOZ_CHECK_PTHREADS(pthreads,
3630         USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3631         MOZ_CHECK_PTHREADS(pthread,
3632             USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3633             MOZ_CHECK_PTHREADS(c_r,
3634                 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3635                 MOZ_CHECK_PTHREADS(c,
3636                     USE_PTHREADS=1
3637                 )
3638             )
3639         )
3640     )
3641     ;;
3642 esac
3644 dnl ========================================================
3645 dnl Check the command line for --with-pthreads 
3646 dnl ========================================================
3647 MOZ_ARG_WITH_BOOL(pthreads,
3648 [  --with-pthreads         Force use of system pthread library with NSPR ],
3649 [ if test "$USE_PTHREADS"x = x; then
3650     AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3651 fi],
3652     USE_PTHREADS=
3653     _PTHREAD_LDFLAGS=
3656 dnl ========================================================
3657 dnl Do the platform specific pthread hackery
3658 dnl ========================================================
3659 if test "$USE_PTHREADS"x != x
3660 then
3661         dnl
3662         dnl See if -pthread is supported.
3663         dnl
3664         rm -f conftest*
3665         ac_cv_have_dash_pthread=no
3666         AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3667         echo 'int main() { return 0; }' | cat > conftest.c
3668         ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3669         if test $? -eq 0; then
3670                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3671                         ac_cv_have_dash_pthread=yes
3672                 case "$target_os" in
3673                 freebsd*)
3674 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3675                 ;;
3676                 *)
3677                             CFLAGS="$CFLAGS -pthread"
3678                             CXXFLAGS="$CXXFLAGS -pthread"
3679                 ;;
3680                 esac
3681                 fi
3682         fi
3683         rm -f conftest*
3684     AC_MSG_RESULT($ac_cv_have_dash_pthread)
3686         dnl
3687         dnl See if -pthreads is supported.
3688         dnl
3689     ac_cv_have_dash_pthreads=no
3690     if test "$ac_cv_have_dash_pthread" = "no"; then
3691             AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3692         echo 'int main() { return 0; }' | cat > conftest.c
3693             ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3694         if test $? -eq 0; then
3695                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3696                             ac_cv_have_dash_pthreads=yes
3697                             CFLAGS="$CFLAGS -pthreads"
3698                             CXXFLAGS="$CXXFLAGS -pthreads"
3699                     fi
3700             fi
3701             rm -f conftest*
3702         AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3703     fi
3705         case "$target" in
3706             *-*-freebsd*)
3707                         AC_DEFINE(_REENTRANT)
3708                         AC_DEFINE(_THREAD_SAFE)
3709                         dnl -pthread links in -lc_r, so don't specify it explicitly.
3710                         if test "$ac_cv_have_dash_pthread" = "yes"; then
3711                                 _PTHREAD_LDFLAGS="-pthread"
3712                         else
3713                                 _PTHREAD_LDFLAGS="-lc_r"
3714                         fi
3715                         ;;
3717             *-*-openbsd*|*-*-bsdi*)
3718                         AC_DEFINE(_REENTRANT)
3719                         AC_DEFINE(_THREAD_SAFE)
3720                         dnl -pthread links in -lc_r, so don't specify it explicitly.
3721                         if test "$ac_cv_have_dash_pthread" = "yes"; then
3722                 _PTHREAD_LDFLAGS="-pthread"
3723                         fi
3724                         ;;
3726             *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
3727                         AC_DEFINE(_REENTRANT) 
3728                         ;;
3730             *-*-nto*) 
3731                         AC_DEFINE(_REENTRANT) 
3732                         ;;
3734             *-aix4.3*|*-aix5*)
3735                         AC_DEFINE(_REENTRANT) 
3736                         ;;
3738             *-hpux11.*)
3739                         AC_DEFINE(_REENTRANT) 
3740                         ;;
3742             alpha*-*-osf*)
3743                         AC_DEFINE(_REENTRANT)
3744                         ;;
3746             *-*-solaris*) 
3747                         AC_DEFINE(_REENTRANT)
3748                         if test "$SOLARIS_SUNPRO_CC"; then
3749                                 CFLAGS="$CFLAGS -mt" 
3750                                 CXXFLAGS="$CXXFLAGS -mt" 
3751                         fi
3752                         ;;
3753         esac
3754     LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3757 dnl ========================================================
3758 dnl See if mmap sees writes
3759 dnl For cross compiling, just define it as no, which is a safe default
3760 dnl ========================================================
3761 AC_MSG_CHECKING(whether mmap() sees write()s)
3763 changequote(,)
3764 mmap_test_prog='
3765     #include <stdlib.h>
3766     #include <unistd.h>
3767     #include <sys/mman.h>
3768     #include <sys/types.h>
3769     #include <sys/stat.h>
3770     #include <fcntl.h>
3772     char fname[] = "conftest.file";
3773     char zbuff[1024]; /* Fractional page is probably worst case */
3775     int main() {
3776         char *map;
3777         int fd;
3778         int i;
3779         unlink(fname);
3780         fd = open(fname, O_RDWR | O_CREAT, 0660);
3781         if(fd<0) return 1;
3782         unlink(fname);
3783         write(fd, zbuff, sizeof(zbuff));
3784         lseek(fd, 0, SEEK_SET);
3785         map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
3786         if(map==(char*)-1) return 2;
3787         for(i=0; fname[i]; i++) {
3788             int rc = write(fd, &fname[i], 1);
3789             if(map[i]!=fname[i]) return 4;
3790         }
3791         return 0;
3792     }
3794 changequote([,])
3796 AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
3798 AC_MSG_RESULT("$result")
3800 if test "$result" = "no"; then
3801     AC_DEFINE(MMAP_MISSES_WRITES)
3805 dnl Checks for library functions.
3806 dnl ========================================================
3807 AC_PROG_GCC_TRADITIONAL
3808 AC_FUNC_MEMCMP
3809 AC_CHECK_FUNCS(random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 truncate64 statvfs64 setbuf isatty)
3810 AC_CHECK_FUNCS(flockfile getpagesize)
3811 AC_CHECK_FUNCS(localtime_r strtok_r)
3813 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock, and -lrt
3814 _SAVE_LDFLAGS=$LDFLAGS
3815 LDFLAGS="$LDFLAGS -lrt"
3816 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC) and -lrt,
3817                ac_cv_have_clock_monotonic,
3818                [AC_TRY_LINK([#include <time.h>],
3819                             [ struct timespec ts;
3820                               clock_gettime(CLOCK_MONOTONIC, &ts); ],
3821                             ac_cv_have_clock_monotonic=yes,
3822                             ac_cv_have_clock_monotonic=no)])
3823 LDFLAGS=$_SAVE_LDFLAGS
3824 if test "$ac_cv_have_clock_monotonic" = "yes"; then
3825     HAVE_CLOCK_MONOTONIC=1
3826     REALTIME_LIBS=-lrt
3827     AC_DEFINE(HAVE_CLOCK_MONOTONIC)
3828     AC_SUBST(HAVE_CLOCK_MONOTONIC)
3829     AC_SUBST(REALTIME_LIBS)
3832 dnl check for wcrtomb/mbrtowc
3833 dnl =======================================================================
3834 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3835 AC_LANG_SAVE
3836 AC_LANG_CPLUSPLUS
3837 AC_CACHE_CHECK(for wcrtomb,
3838     ac_cv_have_wcrtomb,
3839     [AC_TRY_LINK([#include <wchar.h>],
3840                  [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3841                  ac_cv_have_wcrtomb="yes",
3842                  ac_cv_have_wcrtomb="no")])
3843 if test "$ac_cv_have_wcrtomb" = "yes"; then
3844     AC_DEFINE(HAVE_WCRTOMB)
3846 AC_CACHE_CHECK(for mbrtowc,
3847     ac_cv_have_mbrtowc,
3848     [AC_TRY_LINK([#include <wchar.h>],
3849                  [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3850                  ac_cv_have_mbrtowc="yes",
3851                  ac_cv_have_mbrtowc="no")])
3852 if test "$ac_cv_have_mbrtowc" = "yes"; then
3853     AC_DEFINE(HAVE_MBRTOWC)
3855 AC_LANG_RESTORE
3858 AC_CACHE_CHECK(
3859     [for res_ninit()],
3860     ac_cv_func_res_ninit,
3861     [AC_TRY_LINK([
3862         #ifdef linux
3863         #define _BSD_SOURCE 1
3864         #endif
3865         #include <resolv.h>
3866         ],
3867         [int foo = res_ninit(&_res);],
3868         [ac_cv_func_res_ninit=yes],
3869         [ac_cv_func_res_ninit=no])
3870     ])
3872 if test "$ac_cv_func_res_ninit" = "yes"; then
3873     AC_DEFINE(HAVE_RES_NINIT)
3874 dnl must add the link line we do something as foolish as this... dougt
3875 dnl else
3876 dnl    AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3877 dnl        AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3880 AC_LANG_CPLUSPLUS
3881 AC_CACHE_CHECK(
3882     [for gnu_get_libc_version()],
3883     ac_cv_func_gnu_get_libc_version,
3884     [AC_TRY_LINK([
3885         #ifdef HAVE_GNU_LIBC_VERSION_H
3886         #include <gnu/libc-version.h>
3887         #endif
3888         ],
3889         [const char *glibc_version = gnu_get_libc_version();],
3890         [ac_cv_func_gnu_get_libc_version=yes],
3891         [ac_cv_func_gnu_get_libc_version=no] 
3892         )]
3893     )
3895 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3896     AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3899 case $target_os in
3900     os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|winmo*|beos*)
3901         ;;
3902     *)
3903     
3904 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3905     AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3906         AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3907 _SAVE_LIBS=$LIBS
3908 LIBS="$LIBS $_ICONV_LIBS"
3909 AC_CACHE_CHECK(
3910     [for iconv()],
3911     ac_cv_func_iconv,
3912     [AC_TRY_LINK([
3913         #include <stdlib.h>
3914         #include <iconv.h>
3915         ],
3916         [
3917             iconv_t h = iconv_open("", "");
3918             iconv(h, NULL, NULL, NULL, NULL);
3919             iconv_close(h);
3920         ],
3921         [ac_cv_func_iconv=yes],
3922         [ac_cv_func_iconv=no] 
3923         )]
3924     )
3925 if test "$ac_cv_func_iconv" = "yes"; then
3926     AC_DEFINE(HAVE_ICONV)
3927     DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3928     LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3929     LIBICONV="$_ICONV_LIBS"
3930     AC_CACHE_CHECK(
3931         [for iconv() with const input],
3932         ac_cv_func_const_iconv,
3933         [AC_TRY_COMPILE([
3934             #include <stdlib.h>
3935             #include <iconv.h>
3936             ],
3937             [
3938                 const char *input = "testing";
3939                 iconv_t h = iconv_open("", "");
3940                 iconv(h, &input, NULL, NULL, NULL);
3941                 iconv_close(h);
3942             ],
3943             [ac_cv_func_const_iconv=yes],
3944             [ac_cv_func_const_iconv=no] 
3945             )]
3946         )
3947     if test "$ac_cv_func_const_iconv" = "yes"; then
3948         AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3949     fi
3951 LIBS=$_SAVE_LIBS
3953     ;;
3954 esac
3956 AM_LANGINFO_CODESET
3958 AC_LANG_C
3960 dnl **********************
3961 dnl *** va_copy checks ***
3962 dnl **********************
3963 dnl we currently check for all three va_copy possibilities, so we get
3964 dnl all results in config.log for bug reports.
3965 AC_MSG_CHECKING(for an implementation of va_copy())
3966 AC_CACHE_VAL(ac_cv_va_copy,[
3967     AC_TRY_RUN([
3968         #include <stdarg.h>
3969         void f (int i, ...) {
3970             va_list args1, args2;
3971             va_start (args1, i);
3972             va_copy (args2, args1);
3973             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3974                 exit (1);
3975             va_end (args1); va_end (args2);
3976         }
3977         int main() { f (0, 42); return 0; }],
3978         ac_cv_va_copy=yes,
3979         ac_cv_va_copy=no,
3980         ac_cv_va_copy=no
3981     )
3983 AC_MSG_RESULT($ac_cv_va_copy)
3984 AC_MSG_CHECKING(for an implementation of __va_copy())
3985 AC_CACHE_VAL(ac_cv___va_copy,[
3986     AC_TRY_RUN([
3987         #include <stdarg.h>
3988         void f (int i, ...) {
3989             va_list args1, args2;
3990             va_start (args1, i);
3991             __va_copy (args2, args1);
3992             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3993                 exit (1);
3994             va_end (args1); va_end (args2);
3995         }
3996         int main() { f (0, 42); return 0; }],
3997         ac_cv___va_copy=yes,
3998         ac_cv___va_copy=no,
3999         ac_cv___va_copy=no
4000     )
4002 AC_MSG_RESULT($ac_cv___va_copy)
4003 AC_MSG_CHECKING(whether va_lists can be copied by value)
4004 AC_CACHE_VAL(ac_cv_va_val_copy,[
4005     AC_TRY_RUN([
4006         #include <stdarg.h>
4007         void f (int i, ...) {
4008             va_list args1, args2;
4009             va_start (args1, i);
4010             args2 = args1;
4011             if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
4012                 exit (1);
4013             va_end (args1); va_end (args2);
4014         }
4015         int main() { f (0, 42); return 0; }],
4016         ac_cv_va_val_copy=yes,
4017         ac_cv_va_val_copy=no,
4018         ac_cv_va_val_copy=yes
4019     )
4021 if test "x$ac_cv_va_copy" = "xyes"; then
4022     AC_DEFINE(VA_COPY, va_copy)
4023     AC_DEFINE(HAVE_VA_COPY)
4024 elif test "x$ac_cv___va_copy" = "xyes"; then
4025     AC_DEFINE(VA_COPY, __va_copy)
4026     AC_DEFINE(HAVE_VA_COPY)
4029 if test "x$ac_cv_va_val_copy" = "xno"; then
4030    AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
4032 AC_MSG_RESULT($ac_cv_va_val_copy)
4034 dnl Check for dll-challenged libc's.
4035 dnl This check is apparently only needed for Linux.
4036 case "$target" in
4037         *-linux*)
4038             dnl ===================================================================
4039             _curdir=`pwd`
4040             export _curdir
4041             rm -rf conftest* _conftest
4042             mkdir _conftest
4043             cat >> conftest.C <<\EOF
4044 #include <stdio.h>
4045 #include <link.h>
4046 #include <dlfcn.h>
4047 #ifdef _dl_loaded
4048 void __dump_link_map(void) {
4049   struct link_map *map = _dl_loaded;
4050   while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
4052 int main() {
4053   dlopen("./conftest1.so",RTLD_LAZY);
4054   dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
4055   dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
4056   dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
4057   __dump_link_map();
4059 #else
4060 /* _dl_loaded isn't defined, so this should be either a libc5 (glibc1) system, or a glibc2 system that doesn't have the multiple load bug (i.e., RH6.0).*/
4061 int main() { printf("./conftest1.so\n"); }
4062 #endif
4065             $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
4067             cat >> conftest1.C <<\EOF
4068 #include <stdio.h>
4069 void foo(void) {printf("foo in dll called\n");}
4071             ${CXX-g++} -fPIC -c -g conftest1.C
4072             ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
4073             ${CXX-g++} -g conftest.C -o conftest -ldl
4074             cp -f conftest1.so conftest _conftest
4075             cd _conftest
4076             if test `./conftest | grep conftest1.so | wc -l` -gt 1
4077             then
4078                 echo
4079                 echo "*** Your libc has a bug that can result in loading the same dynamic"
4080                 echo "*** library multiple times.  This bug is known to be fixed in glibc-2.0.7-32"
4081                 echo "*** or later.  However, if you choose not to upgrade, the only effect"
4082                 echo "*** will be excessive memory usage at runtime."
4083                 echo
4084             fi
4085             cd ${_curdir}
4086             rm -rf conftest* _conftest
4087             dnl ===================================================================
4088             ;;
4089 esac
4091 dnl ===================================================================
4092 dnl ========================================================
4093 dnl Put your C++ language/feature checks below
4094 dnl ========================================================
4095 AC_LANG_CPLUSPLUS
4097 ARM_ABI_PREFIX=
4098 HAVE_GCC3_ABI=
4099 if test "$GNU_CC"; then
4100   if test "$CPU_ARCH" = "arm" ; then
4101     AC_CACHE_CHECK(for ARM EABI,
4102         ac_cv_gcc_arm_eabi,
4103         [AC_TRY_COMPILE([],
4104                         [
4105 #if defined(__ARM_EABI__)
4106   return 0;
4107 #else
4108 #error Not ARM EABI.
4109 #endif
4110                         ],
4111                         ac_cv_gcc_arm_eabi="yes",
4112                         ac_cv_gcc_arm_eabi="no")])
4113     if test "$ac_cv_gcc_arm_eabi" = "yes"; then
4114         HAVE_ARM_EABI=1
4115         ARM_ABI_PREFIX=eabi-
4116     else
4117         ARM_ABI_PREFIX=oabi-
4118     fi
4119   fi
4121   AC_CACHE_CHECK(for gcc 3.0 ABI,
4122       ac_cv_gcc_three_abi,
4123       [AC_TRY_COMPILE([],
4124                       [
4125 #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
4126   return 0;
4127 #else
4128 #error Not gcc3.
4129 #endif
4130                       ],
4131                       ac_cv_gcc_three_abi="yes",
4132                       ac_cv_gcc_three_abi="no")])
4133   if test "$ac_cv_gcc_three_abi" = "yes"; then
4134       TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
4135       HAVE_GCC3_ABI=1
4136   else
4137       TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc2}"
4138   fi
4140 AC_SUBST(HAVE_GCC3_ABI)
4143 AC_CACHE_CHECK(for C++ \"explicit\" keyword,
4144                ac_cv_cpp_explicit,
4145                [AC_TRY_COMPILE(class X {
4146                                public: explicit X(int i) : i_(i) {}
4147                                private: int i_;
4148                                };,
4149                                X x(3);,
4150                                ac_cv_cpp_explicit=yes,
4151                                ac_cv_cpp_explicit=no)])
4152 if test "$ac_cv_cpp_explicit" = yes ; then
4153    AC_DEFINE(HAVE_CPP_EXPLICIT)
4156 AC_CACHE_CHECK(for C++ \"typename\" keyword,
4157                ac_cv_cpp_typename,
4158                [AC_TRY_COMPILE(class param {
4159                                public:
4160                                    typedef unsigned long num_type;
4161                                };
4163                                template <class T> class tplt {
4164                                public:
4165                                    typedef typename T::num_type t_num_type;
4166                                    t_num_type foo(typename T::num_type num) {
4167                                        return num;
4168                                    }
4169                                };,
4170                                tplt<param> A;
4171                                A.foo(0);,
4172                                ac_cv_cpp_typename=yes,
4173                                ac_cv_cpp_typename=no)])
4174 if test "$ac_cv_cpp_typename" = yes ; then
4175    AC_DEFINE(HAVE_CPP_TYPENAME)
4178 dnl Check for support of modern template specialization syntax
4179 dnl Test code and requirement from scc@netscape.com.
4180 dnl Autoconf cut-and-paste job by waterson@netscape.com
4181 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
4182                ac_cv_cpp_modern_specialize_template_syntax,
4183                [AC_TRY_COMPILE(template <class T> struct X { int a; };
4184                                class Y {};
4185                                template <> struct X<Y> { double a; };,
4186                                X<int> int_x;
4187                                X<Y> y_x;,
4188                                ac_cv_cpp_modern_specialize_template_syntax=yes,
4189                                ac_cv_cpp_modern_specialize_template_syntax=no)])
4190 if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
4191   AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
4195 dnl Some compilers support only full specialization, and some don't.
4196 AC_CACHE_CHECK(whether partial template specialization works,
4197                ac_cv_cpp_partial_specialization,
4198                [AC_TRY_COMPILE(template <class T> class Foo {};
4199                                template <class T> class Foo<T*> {};,
4200                                return 0;,
4201                                ac_cv_cpp_partial_specialization=yes,
4202                                ac_cv_cpp_partial_specialization=no)])
4203 if test "$ac_cv_cpp_partial_specialization" = yes ; then
4204   AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
4207 dnl Some compilers have limited support for operators with templates;
4208 dnl specifically, it is necessary to define derived operators when a base
4209 dnl class's operator declaration should suffice.
4210 AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
4211                ac_cv_need_derived_template_operators,
4212                [AC_TRY_COMPILE([template <class T> class Base { };
4213                                 template <class T>
4214                                 Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
4215                                 template <class T> class Derived : public Base<T> { };],
4216                                [Derived<char> a, b;
4217                                 Base<char> c = a + b;
4218                                 return 0;],
4219                                ac_cv_need_derived_template_operators=no,
4220                                ac_cv_need_derived_template_operators=yes)])
4221 if test "$ac_cv_need_derived_template_operators" = yes ; then
4222   AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
4226 dnl Some compilers have trouble detecting that a template class
4227 dnl that derives from another template is actually an instance
4228 dnl of the base class. This test checks for that.
4229 AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
4230                ac_cv_need_cpp_template_cast_to_base,
4231                [AC_TRY_COMPILE([template <class T> class Base { };
4232                                 template <class T> class Derived : public Base<T> { };
4233                                 template <class T> int foo(const Base<T>&) { return 0; }],
4234                                [Derived<char> bar; return foo(bar);],
4235                                ac_cv_need_cpp_template_cast_to_base=no,
4236                                ac_cv_need_cpp_template_cast_to_base=yes)])
4237 if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
4238   AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
4241 dnl Some compilers have trouble resolving the ambiguity between two
4242 dnl functions whose arguments differ only by cv-qualifications.
4243 AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
4244                ac_cv_can_resolve_const_ambiguity,
4245                [AC_TRY_COMPILE([
4246                                 template <class T> class ptrClass {
4247                                   public: T* ptr;
4248                                 };
4250                                 template <class T> T* a(ptrClass<T> *arg) {
4251                                   return arg->ptr;
4252                                 }
4254                                 template <class T>
4255                                 const T* a(const ptrClass<T> *arg) {
4256                                   return arg->ptr;
4257                                 }
4258                                ],
4259                                [ ptrClass<int> i;
4260                                  a(&i); ],
4261                                ac_cv_can_resolve_const_ambiguity=yes,
4262                                ac_cv_can_resolve_const_ambiguity=no)])
4263 if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
4264   AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
4268 dnl We don't do exceptions on unix.  The only reason this used to be here
4269 dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses 
4270 dnl exceptions.  But, we turn exceptions off by default and this test breaks.
4271 dnl So im commenting this out until someone writes some artificial 
4272 dnl intelligence to detect not only if the compiler has exceptions, but if 
4273 dnl they are enabled as well.
4274 dnl 
4275 dnl AC_CACHE_CHECK(for C++ \"exceptions\",
4276 dnl                ac_cv_cpp_exceptions,
4277 dnl                [AC_TRY_COMPILE(class X { public: X() {} };
4278 dnl                                static void F() { throw X(); },
4279 dnl                                try { F(); } catch(X & e) { },
4280 dnl                                ac_cv_cpp_exceptions=yes,
4281 dnl                                ac_cv_cpp_exceptions=no)])
4282 dnl if test $ac_cv_cpp_exceptions = yes ; then
4283 dnl    AC_DEFINE(HAVE_CPP_EXCEPTIONS)
4284 dnl fi
4286 dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
4287 dnl supports it well enough to allow us to use it to change access, but not
4288 dnl to resolve ambiguity. The next two tests determine how well the |using|
4289 dnl keyword is supported.
4291 dnl Check to see if we can change access with |using|.  Test both a
4292 dnl legal and an illegal example.
4293 AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
4294                ac_cv_cpp_access_changing_using2,
4295                [AC_TRY_COMPILE(
4296                    class A { protected: int foo() { return 0; } };
4297                    class B : public A { public: using A::foo; };,
4298                    B b; return b.foo();,
4299                    [AC_TRY_COMPILE(
4300                        class A { public: int foo() { return 1; } };
4301                        class B : public A { private: using A::foo; };,
4302                        B b; return b.foo();,
4303                        ac_cv_cpp_access_changing_using2=no,
4304                        ac_cv_cpp_access_changing_using2=yes)],
4305                    ac_cv_cpp_access_changing_using2=no)])
4306 if test "$ac_cv_cpp_access_changing_using2" = yes ; then
4307    AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
4310 dnl Check to see if we can resolve ambiguity with |using|.
4311 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
4312                ac_cv_cpp_ambiguity_resolving_using,
4313                [AC_TRY_COMPILE(class X { 
4314                                  public: int go(const X&) {return 3;}
4315                                          int jo(const X&) {return 3;}
4316                                };
4317                                class Y : public X {
4318                                  public:  int go(int) {return 2;}
4319                                           int jo(int) {return 2;}
4320                                           using X::jo;
4321                                  private: using X::go;
4322                                };,
4323                                X x; Y y; y.jo(x);,
4324                                ac_cv_cpp_ambiguity_resolving_using=yes,
4325                                ac_cv_cpp_ambiguity_resolving_using=no)])
4326 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
4327    AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
4330 dnl Check to see if the |std| namespace is supported. If so, we'll want
4331 dnl to qualify any standard library calls with "std::" to ensure that
4332 dnl those functions can be resolved.
4333 AC_CACHE_CHECK(for \"std::\" namespace,
4334                ac_cv_cpp_namespace_std,
4335                [AC_TRY_COMPILE([#include <algorithm>],
4336                                [return std::min(0, 1);],
4337                                ac_cv_cpp_namespace_std=yes,
4338                                ac_cv_cpp_namespace_std=no)])
4339 if test "$ac_cv_cpp_namespace_std" = yes ; then
4340    AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
4343 dnl Older compilers are overly ambitious with respect to using the standard
4344 dnl template library's |operator!=()| when |operator==()| is defined. In
4345 dnl which case, defining |operator!=()| in addition to |operator==()| causes
4346 dnl ambiguity at compile-time. This test checks for that case.
4347 AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
4348                ac_cv_cpp_unambiguous_std_notequal,
4349                [AC_TRY_COMPILE([#include <algorithm>
4350                                 struct T1 {};
4351                                 int operator==(const T1&, const T1&) { return 0; }
4352                                 int operator!=(const T1&, const T1&) { return 0; }],
4353                                [T1 a,b; return a != b;],
4354                                ac_cv_cpp_unambiguous_std_notequal=unambiguous,
4355                                ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
4356 if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
4357   AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
4361 AC_CACHE_CHECK(for C++ reinterpret_cast,
4362                ac_cv_cpp_reinterpret_cast,
4363                [AC_TRY_COMPILE(struct X { int i; };
4364                                struct Y { int i; };,
4365                                X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
4366                                ac_cv_cpp_reinterpret_cast=yes,
4367                                ac_cv_cpp_reinterpret_cast=no)])
4368 if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
4369    AC_DEFINE(HAVE_CPP_NEW_CASTS)
4372 dnl See if a dynamic_cast to void* gives the most derived object.
4373 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
4374                ac_cv_cpp_dynamic_cast_void_ptr,
4375                [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
4376                             class Y { int j; public: virtual ~Y() { } };
4377                             class Z : public X, public Y { int k; };
4379                             int main() {
4380                                  Z mdo;
4381                                  X *subx = (X*)&mdo;
4382                                  Y *suby = (Y*)&mdo;
4383                                  return !((((void*)&mdo != (void*)subx) &&
4384                                            ((void*)&mdo == dynamic_cast<void*>(subx))) ||
4385                                           (((void*)&mdo != (void*)suby) &&
4386                                            ((void*)&mdo == dynamic_cast<void*>(suby))));
4387                             }],
4388                            ac_cv_cpp_dynamic_cast_void_ptr=yes,
4389                            ac_cv_cpp_dynamic_cast_void_ptr=no,
4390                            ac_cv_cpp_dynamic_cast_void_ptr=no)])
4391 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
4392    AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
4396 dnl note that this one is reversed - if the test fails, then
4397 dnl we require implementations of unused virtual methods. Which
4398 dnl really blows because it means we'll have useless vtable
4399 dnl bloat.
4400 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
4401                ac_cv_cpp_unused_required,
4402                [AC_TRY_LINK(class X {private: virtual void never_called();};,
4403                                X x;,
4404                                ac_cv_cpp_unused_required=no,
4405                                ac_cv_cpp_unused_required=yes)])
4406 if test "$ac_cv_cpp_unused_required" = yes ; then
4407    AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
4411 dnl Some compilers have trouble comparing a constant reference to a templatized
4412 dnl class to zero, and require an explicit operator==() to be defined that takes
4413 dnl an int. This test separates the strong from the weak.
4415 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
4416                ac_cv_trouble_comparing_to_zero,
4417                [AC_TRY_COMPILE([#include <algorithm>
4418                                 template <class T> class Foo {};
4419                                 class T2;
4420                                 template <class T> int operator==(const T2*, const T&) { return 0; }
4421                                 template <class T> int operator!=(const T2*, const T&) { return 0; }],
4422                                [Foo<int> f; return (0 != f);],
4423                                ac_cv_trouble_comparing_to_zero=no,
4424                                ac_cv_trouble_comparing_to_zero=yes)])
4425 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
4426   AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
4429 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
4430 _SAVE_LDFLAGS=$LDFLAGS
4431 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS"
4432 AC_CACHE_CHECK(for __thread keyword for TLS variables,
4433                ac_cv_thread_keyword,
4434                [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
4435                             [return tlsIsMainThread;],
4436                             ac_cv_thread_keyword=yes,
4437                             ac_cv_thread_keyword=no)])
4438 LDFLAGS=$_SAVE_LDFLAGS
4439 if test "$ac_cv_thread_keyword" = yes; then
4440   # mips builds fail with TLS variables because of a binutils bug.
4441   # See bug 528687
4442   case "${target}" in
4443     mips*-*)
4444       :
4445       ;;
4446     *-android*)
4447       :
4448       ;;
4449     *)
4450       AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
4451       ;;
4452   esac
4455 dnl Check for the existence of various allocation headers/functions
4457 MALLOC_H=
4458 AC_CHECK_HEADER(malloc.h,        [MALLOC_H=malloc.h])
4459 if test "$MALLOC_H" = ""; then
4460   AC_CHECK_HEADER(malloc/malloc.h, [MALLOC_H=malloc/malloc.h])
4461   if test "$MALLOC_H" = ""; then
4462     AC_CHECK_HEADER(sys/malloc.h,    [MALLOC_H=sys/malloc.h])
4463   fi
4465 if test "$MALLOC_H" != ""; then
4466    AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
4469 MOZ_ALLOCATING_FUNCS="strndup posix_memalign memalign valloc"
4470 AC_CHECK_FUNCS(strndup posix_memalign memalign valloc)
4472 dnl See if compiler supports some gcc-style attributes
4474 AC_CACHE_CHECK(for __attribute__((always_inline)),
4475                ac_cv_attribute_always_inline,
4476                [AC_TRY_COMPILE([],
4477                                [inline void f(void) __attribute__((always_inline));],
4478                                ac_cv_attribute_always_inline=yes,
4479                                ac_cv_attribute_always_inline=no)])
4481 AC_CACHE_CHECK(for __attribute__((malloc)),
4482                ac_cv_attribute_malloc,
4483                [AC_TRY_COMPILE([],
4484                                [void* f(int) __attribute__((malloc));],
4485                                ac_cv_attribute_malloc=yes,
4486                                ac_cv_attribute_malloc=no)])
4488 AC_CACHE_CHECK(for __attribute__((warn_unused_result)),
4489                ac_cv_attribute_warn_unused,
4490                [AC_TRY_COMPILE([],
4491                                [int f(void) __attribute__((warn_unused_result));],
4492                                ac_cv_attribute_warn_unused=yes,
4493                                ac_cv_attribute_warn_unused=no)])
4495 AC_CACHE_CHECK(for __attribute__((noreturn)),
4496                ac_cv_attribute_noreturn,
4497                [AC_TRY_COMPILE([],
4498                                [void f(void) __attribute__((noreturn));],
4499                                ac_cv_attribute_noreturn=yes,
4500                                ac_cv_attribute_noreturn=no)])
4502 dnl End of C++ language/feature checks
4503 AC_LANG_C
4505 dnl ========================================================
4506 dnl =  Internationalization checks
4507 dnl ========================================================
4509 dnl Internationalization and Locale support is different
4510 dnl on various UNIX platforms.  Checks for specific i18n
4511 dnl features go here.
4513 dnl check for LC_MESSAGES
4514 AC_CACHE_CHECK(for LC_MESSAGES,
4515                 ac_cv_i18n_lc_messages,
4516                 [AC_TRY_COMPILE([#include <locale.h>],
4517                                 [int category = LC_MESSAGES;],
4518                                 ac_cv_i18n_lc_messages=yes,
4519                                 ac_cv_i18n_lc_messages=no)])
4520 if test "$ac_cv_i18n_lc_messages" = yes; then
4521    AC_DEFINE(HAVE_I18N_LC_MESSAGES)
4524 AC_HAVE_FUNCS(localeconv)
4526 fi # SKIP_COMPILER_CHECKS
4528 TARGET_XPCOM_ABI=
4529 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
4530     TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
4533 dnl Mozilla specific options
4534 dnl ========================================================
4535 dnl The macros used for command line options
4536 dnl are defined in build/autoconf/altoptions.m4.
4538 dnl If the compiler supports these attributes, define them as
4539 dnl convenience macros.
4540 if test "$ac_cv_attribute_always_inline" = yes ; then
4541   AC_DEFINE(NS_ALWAYS_INLINE, [__attribute__((always_inline))])
4542 else
4543   AC_DEFINE(NS_ALWAYS_INLINE,)
4546 if test "$ac_cv_attribute_malloc" = yes ; then
4547   AC_DEFINE(NS_ATTR_MALLOC, [__attribute__((malloc))])
4548 else
4549   AC_DEFINE(NS_ATTR_MALLOC,)
4552 if test "$ac_cv_attribute_warn_unused" = yes ; then
4553   AC_DEFINE(NS_WARN_UNUSED_RESULT, [__attribute__((warn_unused_result))])
4554 else
4555   AC_DEFINE(NS_WARN_UNUSED_RESULT,)
4558 if test "$ac_cv_attribute_noreturn" = yes ; then
4559   AC_DEFINE(NS_NORETURN, [__attribute__((noreturn))])
4560 else
4561   AC_DEFINE(NS_NORETURN,)
4564 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
4565 dnl features that Windows actually does support.
4567 if test -n "$SKIP_COMPILER_CHECKS"; then
4568    dnl Windows has malloc.h
4569    AC_DEFINE(MALLOC_H, [<malloc.h>])
4570    AC_DEFINE(HAVE_FORCEINLINE)
4571    AC_DEFINE(HAVE_LOCALECONV)
4572 fi # SKIP_COMPILER_CHECKS
4574 dnl ========================================================
4575 dnl =
4576 dnl = Check for external package dependencies
4577 dnl =
4578 dnl ========================================================
4579 MOZ_ARG_HEADER(External Packages)
4581 MOZ_ENABLE_LIBXUL=1
4583 MOZ_ARG_WITH_STRING(libxul-sdk,
4584 [  --with-libxul-sdk=PFX   Use the libXUL SDK at <PFX>],
4585   LIBXUL_SDK_DIR=$withval)
4587 if test "$LIBXUL_SDK_DIR" = "yes"; then
4588     AC_MSG_ERROR([--with-libxul-sdk must specify a path])
4589 elif test -n "$LIBXUL_SDK_DIR" -a "$LIBXUL_SDK_DIR" != "no"; then
4590     LIBXUL_SDK=`cd "$LIBXUL_SDK_DIR" && pwd`
4592     if test ! -f "$LIBXUL_SDK/include/xpcom-config.h"; then
4593         AC_MSG_ERROR([$LIBXUL_SDK/include/xpcom-config.h doesn't exist])
4594     fi
4596     MOZ_ENABLE_LIBXUL=1
4598 AC_SUBST(LIBXUL_SDK)
4600 if test -n "$LIBXUL_SDK"; then
4601     LIBXUL_DIST="$LIBXUL_SDK"
4602 else
4603     LIBXUL_DIST="$MOZ_BUILD_ROOT/dist"
4605 AC_SUBST(LIBXUL_DIST)
4607 SYSTEM_LIBXUL=
4609 MOZ_ARG_WITH_BOOL(system-libxul,
4610 [  --with-system-libxul    Use system installed libxul SDK],
4611     SYSTEM_LIBXUL=1)
4613 if test -n "$SYSTEM_LIBXUL" -a -z "$MOZ_ENABLE_LIBXUL"; then
4614     AC_MSG_ERROR([--with-system-libxul needs --with-libxul-sdk])
4617 dnl ========================================================
4618 dnl = If NSPR was not detected in the system, 
4619 dnl = use the one in the source tree (mozilla/nsprpub)
4620 dnl ========================================================
4621 MOZ_ARG_WITH_BOOL(system-nspr,
4622 [  --with-system-nspr      Use system installed NSPR],
4623     _USE_SYSTEM_NSPR=1 )
4625 if test -n "$_USE_SYSTEM_NSPR"; then
4626     AM_PATH_NSPR(4.8.7, [MOZ_NATIVE_NSPR=1], [AC_MSG_ERROR([your don't have NSPR installed or your version is too old])])
4629 if test -n "$MOZ_NATIVE_NSPR"; then
4630     _SAVE_CFLAGS=$CFLAGS
4631     CFLAGS="$CFLAGS $NSPR_CFLAGS"
4632     AC_TRY_COMPILE([#include "prtypes.h"],
4633                 [#ifndef PR_STATIC_ASSERT
4634                  #error PR_STATIC_ASSERT not defined or requires including prlog.h
4635                  #endif],
4636                 [MOZ_NATIVE_NSPR=1],
4637                 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT or including prtypes.h does not provide it]))
4638     CFLAGS=$_SAVE_CFLAGS
4639 else
4640     if test "$OS_ARCH" = "WINCE"; then
4641         NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4642         NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4643     elif test "$OS_ARCH" = "WINNT"; then
4644         NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr"
4645         if test -n "$GNU_CC"; then
4646             NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}"
4647         else
4648             NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib "
4649         fi
4650     else
4651         NSPR_CFLAGS='`$(LIBXUL_DIST)/sdk/bin/nspr-config --prefix='${LIBXUL_DIST}' --includedir='${LIBXUL_DIST}'/include/nspr --cflags`'
4652         NSPR_LIBS='`$(LIBXUL_DIST)/sdk/bin/nspr-config --prefix='${LIBXUL_DIST}' --libdir='${LIBXUL_DIST}'/lib --libs`'
4653     fi
4656 dnl system libevent Support
4657 dnl ========================================================
4658 MOZ_ARG_WITH_STRING(system-libevent,
4659 [  --with-system-libevent=[PFX]
4660                           Use system libevent [installed at prefix PFX]],
4661     LIBEVENT_DIR=$withval)
4663 _SAVE_CFLAGS=$CFLAGS
4664 _SAVE_LDFLAGS=$LDFLAGS
4665 _SAVE_LIBS=$LIBS
4666 if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
4667     MOZ_NATIVE_LIBEVENT=
4668 else
4669     if test "${LIBEVENT_DIR}" = "yes"; then
4670         LIBEVENT_DIR=/usr
4671     fi
4672     CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
4673     LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
4674     AC_CHECK_HEADER(event.h,
4675                     [if test ! -f "${LIBEVENT_DIR}/include/event.h"; then
4676                          AC_MSG_ERROR([event.h found, but is not in ${LIBEVENT_DIR}/include])
4677                      fi],
4678                     AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
4679     AC_CHECK_LIB(event, event_init,
4680                  [MOZ_NATIVE_LIBEVENT=1
4681                   MOZ_LIBEVENT_INCLUDES="${LIBEVENT_DIR}/include"
4682                   MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
4683                  [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_INCLUDES= MOZ_LIBEVENT_LIBS=])
4685 CFLAGS=$_SAVE_CFLAGS
4686 LDFLAGS=$_SAVE_LDFLAGS
4687 LIBS=$_SAVE_LIBS
4689 AC_SUBST(MOZ_NATIVE_LIBEVENT)
4690 AC_SUBST(MOZ_LIBEVENT_INCLUDES)
4691 AC_SUBST(MOZ_LIBEVENT_LIBS)
4693 dnl ========================================================
4694 dnl = If NSS was not detected in the system, 
4695 dnl = use the one in the source tree (mozilla/security/nss)
4696 dnl ========================================================
4698 MOZ_ARG_WITH_BOOL(system-nss,
4699 [  --with-system-nss       Use system installed NSS],
4700     _USE_SYSTEM_NSS=1 )
4702 if test -n "$_USE_SYSTEM_NSS"; then
4703     AM_PATH_NSS(3.12.9, [MOZ_NATIVE_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
4706 if test -n "$MOZ_NATIVE_NSS"; then
4707    NSS_LIBS="$NSS_LIBS -lcrmf"
4708 else
4709    NSS_CFLAGS='-I$(LIBXUL_DIST)/include/nss'
4710    NSS_DEP_LIBS="\
4711         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4712         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)smime$NSS_VERSION\$(DLL_SUFFIX) \
4713         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)ssl$NSS_VERSION\$(DLL_SUFFIX) \
4714         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nss$NSS_VERSION\$(DLL_SUFFIX) \
4715         \$(LIBXUL_DIST)/lib/\$(DLL_PREFIX)nssutil$NSS_VERSION\$(DLL_SUFFIX)"
4717    if test -z "$GNU_CC" -a "$OS_ARCH" = "WINNT" -o "$OS_ARCH" = "WINCE" -o "$OS_ARCH" = "OS2"; then
4718        NSS_LIBS="\
4719         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)crmf.\$(LIB_SUFFIX) \
4720         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)smime$NSS_VERSION.\$(LIB_SUFFIX) \
4721         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)ssl$NSS_VERSION.\$(LIB_SUFFIX) \
4722         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nss$NSS_VERSION.\$(LIB_SUFFIX) \
4723         \$(LIBXUL_DIST)/lib/\$(LIB_PREFIX)nssutil$NSS_VERSION.\$(LIB_SUFFIX)"
4724    else
4725        NSS_LIBS='$(LIBS_DIR)'" -lcrmf -lsmime$NSS_VERSION -lssl$NSS_VERSION -lnss$NSS_VERSION -lnssutil$NSS_VERSION"
4726    fi
4729 dnl ======================
4730 dnl Detect yasm
4731 dnl ======================
4733 AC_MSG_CHECKING([for YASM assembler])
4734 AC_CHECK_PROGS(YASM, yasm, "")
4736 if test -n "$YASM"; then
4737   dnl Pull out yasm's version string
4738   changequote(,)
4739   _YASM_VER_FILTER='s|.* \([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\).*|\1|p'
4740   changequote([,])
4742   YASM_VERSION=`yasm --version | sed -ne "$_YASM_VER_FILTER"`
4743   _YASM_MAJOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $1 }'`
4744   _YASM_MINOR_VERSION=`echo ${YASM_VERSION} | $AWK -F\. '{ print $2 }'`
4745   _YASM_RELEASE=`      echo ${YASM_VERSION} | $AWK -F\. '{ print $3 }'`
4746   _YASM_BUILD=`        echo ${YASM_VERSION} | $AWK -F\. '{ print $4 }'`
4749 if test -z "$SKIP_LIBRARY_CHECKS"; then
4750 dnl system JPEG support
4751 dnl ========================================================
4752 MOZ_ARG_WITH_STRING(system-jpeg,
4753 [  --with-system-jpeg[=PFX]
4754                           Use system libjpeg [installed at prefix PFX]],
4755     JPEG_DIR=$withval)
4757 _SAVE_CFLAGS=$CFLAGS
4758 _SAVE_LDFLAGS=$LDFLAGS
4759 _SAVE_LIBS=$LIBS
4760 if test -n "${JPEG_DIR}" -a "${JPEG_DIR}" != "yes"; then
4761     CFLAGS="-I${JPEG_DIR}/include $CFLAGS"
4762     LDFLAGS="-L${JPEG_DIR}/lib $LDFLAGS"
4764 if test -z "$JPEG_DIR" -o "$JPEG_DIR" = no; then
4765     SYSTEM_JPEG=
4766 else
4767     AC_CHECK_LIB(jpeg, jpeg_destroy_compress, [SYSTEM_JPEG=1 JPEG_LIBS="-ljpeg $JPEG_LIBS"], SYSTEM_JPEG=, $JPEG_LIBS)
4770 if test "$SYSTEM_JPEG" = 1; then
4771     LIBS="$JPEG_LIBS $LIBS"
4772     AC_TRY_COMPILE([ #include <stdio.h>
4773                      #include <sys/types.h>
4774                      #include <jpeglib.h> ],
4775                    [ #if JPEG_LIB_VERSION < $MOZJPEG
4776                      #error "Insufficient JPEG library version ($MOZJPEG required)."
4777                      #endif ],
4778                    SYSTEM_JPEG=1,
4779                    [SYSTEM_JPEG= JPEG_CFLAGS= JPEG_LIBS=]) 
4780 fi 
4781 CFLAGS=$_SAVE_CFLAGS
4782 LDFLAGS=$_SAVE_LDFLAGS
4783 LIBS=$_SAVE_LIBS
4785 if test -n "${JPEG_DIR}" -a -d "${JPEG_DIR}" -a "$SYSTEM_JPEG" = 1; then
4786     JPEG_CFLAGS="-I${JPEG_DIR}/include"
4787     JPEG_LIBS="-L${JPEG_DIR}/lib ${JPEG_LIBS}"
4790 dnl system ZLIB support
4791 dnl ========================================================
4792 MOZ_ARG_WITH_STRING(system-zlib,
4793 [  --with-system-zlib[=PFX]
4794                           Use system libz [installed at prefix PFX]],
4795     ZLIB_DIR=$withval)
4797 _SAVE_CFLAGS=$CFLAGS
4798 _SAVE_LDFLAGS=$LDFLAGS
4799 _SAVE_LIBS=$LIBS
4800 if test -n "${ZLIB_DIR}" -a "${ZLIB_DIR}" != "yes"; then
4801     CFLAGS="-I${ZLIB_DIR}/include $CFLAGS"
4802     LDFLAGS="-L${ZLIB_DIR}/lib $LDFLAGS"
4804 if test -z "$ZLIB_DIR" -o "$ZLIB_DIR" = no; then
4805     SYSTEM_ZLIB=
4806 else
4807     AC_CHECK_LIB(z, gzread, [SYSTEM_ZLIB=1 ZLIB_LIBS="-lz $ZLIB_LIBS"], 
4808         [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=], $ZLIB_LIBS)
4810 if test "$SYSTEM_ZLIB" = 1; then
4811     LIBS="$ZLIB_LIBS $LIBS"
4812     AC_TRY_COMPILE([ #include <stdio.h>
4813                      #include <string.h>
4814                      #include <zlib.h> ],
4815                    [ #if ZLIB_VERNUM < $MOZZLIB 
4816                      #error "Insufficient zlib version ($MOZZLIB required)."
4817                      #endif ],
4818                    SYSTEM_ZLIB=1,
4819                    [SYSTEM_ZLIB= ZLIB_CFLAGS= ZLIB_LIBS=]) 
4821 CFLAGS=$_SAVE_CFLAGS
4822 LDFLAGS=$_SAVE_LDFLAGS
4823 LIBS=$_SAVE_LIBS
4825 if test "${ZLIB_DIR}" -a -d "${ZLIB_DIR}" -a "$SYSTEM_ZLIB" = 1; then
4826     ZLIB_CFLAGS="-I${ZLIB_DIR}/include"
4827     ZLIB_LIBS="-L${ZLIB_DIR}/lib ${ZLIB_LIBS}"
4830 dnl system BZIP2 Support
4831 dnl ========================================================
4832 MOZ_ARG_WITH_STRING(system-bz2,
4833 [  --with-system-bz2[=PFX]
4834                           Use system libbz2 [installed at prefix PFX]],
4835     BZ2_DIR=$withval)
4837 _SAVE_CFLAGS=$CFLAGS
4838 _SAVE_LDFLAGS=$LDFLAGS
4839 _SAVE_LIBS=$LIBS
4840 if test -n "${BZ2_DIR}" -a "${BZ2_DIR}" != "yes"; then
4841     CFLAGS="-I${BZ2_DIR}/include $CFLAGS"
4842     LDFLAGS="-L${BZ2_DIR}/lib $LDFLAGS"
4844 if test -z "$BZ2_DIR" -o "$BZ2_DIR" = no; then
4845     SYSTEM_BZ2=
4846 else
4847     AC_CHECK_LIB(bz2, BZ2_bzread, [SYSTEM_BZ2=1 BZ2_LIBS="-lbz2"],
4848         [SYSTEM_BZ2= BZ2_CFLAGS= BZ2_LIBS=])
4850 CFLAGS=$_SAVE_CFLAGS
4851 LDFLAGS=$_SAVE_LDFLAGS
4852 LIBS=$_SAVE_LIBS
4854 if test "${BZ2_DIR}" -a -d "${BZ2_DIR}" -a "$SYSTEM_BZ2" = 1; then
4855     BZ2_CFLAGS="-I${BZ2_DIR}/include"
4856     BZ2_LIBS="-L${BZ2_DIR}/lib ${BZ2_LIBS}"
4859 dnl system PNG Support
4860 dnl ========================================================
4861 MOZ_ARG_WITH_STRING(system-png, 
4862 [  --with-system-png[=PFX]
4863                           Use system libpng [installed at prefix PFX]],
4864     PNG_DIR=$withval)
4866 _SAVE_CFLAGS=$CFLAGS
4867 _SAVE_LDFLAGS=$LDFLAGS
4868 _SAVE_LIBS=$LIBS
4869 CFLAGS="$ZLIB_CFLAGS $CFLAGS"
4870 LDFLAGS="$ZLIB_LIBS -lz $LDFLAGS"
4871 if test -n "${PNG_DIR}" -a "${PNG_DIR}" != "yes"; then
4872     CFLAGS="-I${PNG_DIR}/include $CFLAGS"
4873     LDFLAGS="-L${PNG_DIR}/lib $LDFLAGS"
4875 if test -z "$PNG_DIR" -o "$PNG_DIR" = no; then
4876     SYSTEM_PNG=
4877 else
4878     _SAVE_PNG_LIBS=$PNG_LIBS
4879     AC_CHECK_LIB(png, png_get_valid, [SYSTEM_PNG=1 PNG_LIBS="-lpng $PNG_LIBS"],
4880                  AC_MSG_ERROR([--with-system-png requested but no working libpng found]), 
4881                  $PNG_LIBS)
4882     AC_CHECK_LIB(png, png_get_acTL, ,
4883                  AC_MSG_ERROR([--with-system-png won't work because the system's libpng doesn't have APNG support]),
4884                  $_SAVE_PNG_LIBS)
4886 if test "$SYSTEM_PNG" = 1; then
4887     LIBS="$PNG_LIBS $LIBS"
4888     AC_TRY_COMPILE([ #include <stdio.h>
4889                      #include <sys/types.h>
4890                      #include <png.h> ],
4891                    [ #if PNG_LIBPNG_VER < $MOZPNG
4892                      #error "Insufficient libpng version ($MOZPNG required)."
4893                      #endif
4894                      #ifndef PNG_UINT_31_MAX
4895                      #error "Insufficient libpng version."
4896                      #endif ],
4897                    SYSTEM_PNG=1,
4898                    AC_MSG_ERROR([--with-system-png requested but no working libpng found]))
4900 CFLAGS=$_SAVE_CFLAGS
4901 LDFLAGS=$_SAVE_LDFLAGS
4902 LIBS=$_SAVE_LIBS
4904 if test "${PNG_DIR}" -a -d "${PNG_DIR}" -a "$SYSTEM_PNG" = 1; then
4905     PNG_CFLAGS="-I${PNG_DIR}/include"
4906     PNG_LIBS="-L${PNG_DIR}/lib ${PNG_LIBS}"
4909 fi # SKIP_LIBRARY_CHECKS
4911 dnl system HunSpell Support
4912 dnl ========================================================
4913 MOZ_ARG_ENABLE_BOOL(system-hunspell,
4914 [  --enable-system-hunspell
4915                           Use system hunspell (located with pkgconfig)],
4916     SYSTEM_HUNSPELL=1 )
4918 if test -n "$SYSTEM_HUNSPELL"; then
4919     PKG_CHECK_MODULES(MOZ_HUNSPELL, hunspell)
4922 AC_SUBST(SYSTEM_HUNSPELL)
4924 dnl ========================================================
4925 dnl Java SDK support
4926 dnl ========================================================
4927 JAVA_INCLUDE_PATH=
4928 MOZ_ARG_WITH_STRING(java-include-path,
4929 [  --with-java-include-path=dir
4930                           Location of Java SDK headers],
4931     JAVA_INCLUDE_PATH=$withval)
4933 JAVA_BIN_PATH=
4934 MOZ_ARG_WITH_STRING(java-bin-path,
4935 [  --with-java-bin-path=dir
4936                           Location of Java binaries (java, javac, jar)],
4937     JAVA_BIN_PATH=$withval)
4939 dnl ========================================================
4940 dnl =
4941 dnl = Application
4942 dnl =
4943 dnl ========================================================
4945 MOZ_ARG_HEADER(Application)
4947 BUILD_STATIC_LIBS=
4948 ENABLE_TESTS=1
4949 MOZ_ACTIVEX_SCRIPTING_SUPPORT=
4950 MOZ_BRANDING_DIRECTORY=
4951 MOZ_OFFICIAL_BRANDING=
4952 MOZ_FEEDS=1
4953 MOZ_INSTALLER=1
4954 MOZ_IPC=1
4955 MOZ_JAVAXPCOM=
4956 MOZ_JSDEBUGGER=1
4957 MOZ_JSLOADER=1
4958 MOZ_MATHML=1
4959 MOZ_MORK=
4960 MOZ_MORKREADER=1
4961 MOZ_AUTH_EXTENSION=1
4962 MOZ_NO_ACTIVEX_SUPPORT=1
4963 MOZ_NO_FAST_LOAD=
4964 MOZ_OGG=1
4965 MOZ_RAW=
4966 MOZ_SYDNEYAUDIO=
4967 MOZ_VORBIS=
4968 MOZ_TREMOR=
4969 MOZ_WAVE=1
4970 MOZ_MEDIA=
4971 MOZ_WEBM=1
4972 VPX_AS=
4973 VPX_ASFLAGS=
4974 VPX_AS_DASH_C_FLAG=
4975 VPX_AS_CONVERSION=
4976 VPX_ASM_SUFFIX=
4977 VPX_X86_ASM=
4978 VPX_ARM_ASM=
4979 MOZ_PANGO=1
4980 MOZ_PERMISSIONS=1
4981 MOZ_PLACES=1
4982 MOZ_PLAINTEXT_EDITOR_ONLY=
4983 MOZ_PLUGINS=1
4984 MOZ_PREF_EXTENSIONS=1
4985 MOZ_PROFILELOCKING=1
4986 MOZ_PSM=1
4987 MOZ_RDF=1
4988 MOZ_REFLOW_PERF=
4989 MOZ_SAFE_BROWSING=
4990 MOZ_FASTSTART=
4991 MOZ_HELP_VIEWER=
4992 MOZ_SPELLCHECK=1
4993 MOZ_SPLASHSCREEN=
4994 MOZ_STORAGE=1
4995 MOZ_SVG=1
4996 MOZ_THUMB2=
4997 MOZ_TIMELINE=
4998 MOZ_TOOLKIT_SEARCH=1
4999 MOZ_UI_LOCALE=en-US
5000 MOZ_UNIVERSALCHARDET=1
5001 MOZ_URL_CLASSIFIER=
5002 MOZ_USE_NATIVE_UCONV=
5003 MOZ_VIEW_SOURCE=1
5004 MOZ_XSLT_STANDALONE=
5005 MOZ_XTF=1
5006 MOZ_XUL=1
5007 MOZ_ZIPWRITER=1
5008 NS_PRINTING=1
5009 MOZ_PDF_PRINTING=
5010 MOZ_DISABLE_DOMCRYPTO=
5011 NSS_DISABLE_DBM=
5012 NECKO_WIFI=1
5013 NECKO_COOKIES=1
5014 NECKO_DISK_CACHE=1
5015 NECKO_PROTOCOLS_DEFAULT="about data file ftp http res viewsource wyciwyg"
5016 USE_ARM_KUSER=
5017 BUILD_CTYPES=1
5018 XPC_IDISPATCH_SUPPORT=
5021 case "${target}" in
5022 *android*|*darwin*|*wince*|*winmo*)
5023     ACCESSIBILITY=
5024     ;;
5026     ACCESSIBILITY=1
5027     ;;
5028 esac
5030 case "$target_os" in
5031     msvc*|mks*|cygwin*|mingw*)
5032         NS_ENABLE_TSF=1
5033         if test -z "$GNU_CC"; then 
5034             if test "$MOZ_WINSDK_TARGETVER" -lt "06000000"; then
5035                 NS_ENABLE_TSF=
5036             fi
5037         fi
5038         if test -n "$NS_ENABLE_TSF"; then
5039             AC_DEFINE(NS_ENABLE_TSF)
5040         fi
5041         ;;
5042 esac
5044 case "${target}" in
5045     arm-android-eabi)
5046         NSS_DISABLE_DBM=1
5047         USE_ARM_KUSER=1
5048         MOZ_INSTALLER=
5049         NECKO_WIFI=
5050         MOZ_THUMB2=1
5051         MOZ_THEME_FASTSTRIPE=1
5052         MOZ_TREE_FREETYPE=1
5053         MOZ_MEMORY=1
5054         ;;
5055 esac
5057 MOZ_ARG_ENABLE_STRING(application,
5058 [  --enable-application=APP
5059                           Options include:
5060                             browser (Firefox)
5061                             xulrunner
5062                             content/xslt (Standalone Transformiix XSLT)
5063                             netwerk (Standalone Necko)
5064                             tools/update-packaging (AUS-related packaging tools)
5065                             standalone (use this for standalone
5066                               xpcom/xpconnect or to manually drive a build)],
5067 [ MOZ_BUILD_APP=$enableval ] )
5069 MOZ_ARG_WITH_STRING(xulrunner-stub-name,
5070 [  --with-xulrunner-stub-name=appname   Create the xulrunner stub with the given name],
5071   XULRUNNER_STUB_NAME=$withval)
5073 if test -z "$XULRUNNER_STUB_NAME"; then
5074   case "$target_os" in
5075   darwin*)
5076     XULRUNNER_STUB_NAME=xulrunner
5077     ;;
5078   *)
5079     XULRUNNER_STUB_NAME=xulrunner-stub
5080   esac
5082 AC_SUBST(XULRUNNER_STUB_NAME)
5084 if test -z "$MOZ_BUILD_APP"; then
5085   AC_MSG_ERROR([--enable-application=APP was not specified and is required.])
5086 else
5087   # We have a valid application only if it has a build.mk file in its top
5088   # directory.
5089   if test ! -f "${srcdir}/${MOZ_BUILD_APP}/build.mk" ; then
5090     AC_MSG_ERROR([--enable-application value not recognized (${MOZ_BUILD_APP}/build.mk does not exist).])
5091   fi
5094 # Allow the application to influence configure with a confvars.sh script.
5096 AC_MSG_CHECKING([if app-specific confvars.sh exists])
5097 if test -f "${srcdir}/${MOZ_BUILD_APP}/confvars.sh" ; then
5098   AC_MSG_RESULT([${srcdir}/${MOZ_BUILD_APP}/confvars.sh])
5099   . "${srcdir}/${MOZ_BUILD_APP}/confvars.sh"
5100 else
5101   AC_MSG_RESULT([no])
5104 # Now is a good time to test for logic errors, define mismatches, etc.
5105 case "$MOZ_BUILD_APP" in
5106 xulrunner)
5107   if test "$LIBXUL_SDK"; then
5108     AC_MSG_ERROR([Building XULRunner --with-libxul-sdk doesn't make sense; XULRunner provides the libxul SDK.])
5109   fi
5110   ;;
5111 esac
5113 # Special cases where we need to AC_DEFINE something. Also a holdover for apps
5114 # that haven't made a confvars.sh yet. Don't add new stuff here, use
5115 # MOZ_BUILD_APP.
5116 case "$MOZ_BUILD_APP" in
5117 browser)
5118   AC_DEFINE(MOZ_PHOENIX)
5119   ;;
5121 xulrunner)
5122   AC_DEFINE(MOZ_XULRUNNER)
5123   ;;
5125 content/xslt)
5126   AC_DEFINE(TX_EXE)
5127   ;;
5129 standalone) 
5130   MOZ_APP_NAME=mozilla
5131   MOZ_APP_DISPLAYNAME=Mozilla
5132   MOZ_APP_VERSION=$MOZILLA_VERSION
5133   ;;
5135 esac
5137 AC_SUBST(MOZ_BUILD_APP)
5138 AC_SUBST(MOZ_PHOENIX)
5139 AC_SUBST(MOZ_XULRUNNER)
5141 AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
5143 dnl ========================================================
5144 dnl = 
5145 dnl = Toolkit Options
5146 dnl = 
5147 dnl ========================================================
5148 MOZ_ARG_HEADER(Toolkit Options)
5150     dnl ========================================================
5151     dnl = Select the default toolkit
5152     dnl ========================================================
5153         MOZ_ARG_ENABLE_STRING(default-toolkit,
5154         [  --enable-default-toolkit=TK
5155                           Select default toolkit
5156                           Platform specific defaults:
5157                             BeOS - cairo-beos
5158                             Mac OS X - cairo-cocoa
5159                             Neutrino/QNX - photon
5160                             OS/2 - cairo-os2
5161                             Win32/WinCE - cairo-windows
5162                             Gtk2 with DirectFB - cairo-gtk2-dfb
5163                             * - cairo-gtk2
5164                             * - cairo-qt],
5165     [ _DEFAULT_TOOLKIT=$enableval ],
5166     [ _DEFAULT_TOOLKIT=$_PLATFORM_DEFAULT_TOOLKIT])
5168     if test "$_DEFAULT_TOOLKIT" = "photon" \
5169         -o "$_DEFAULT_TOOLKIT" = "cairo-windows" \
5170         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2" \
5171         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-dfb" \
5172         -o "$_DEFAULT_TOOLKIT" = "cairo-gtk2-x11" \
5173         -o "$_DEFAULT_TOOLKIT" = "cairo-qt" \
5174         -o "$_DEFAULT_TOOLKIT" = "cairo-beos" \
5175         -o "$_DEFAULT_TOOLKIT" = "cairo-os2" \
5176         -o "$_DEFAULT_TOOLKIT" = "cairo-cocoa" \
5177         -o "$_DEFAULT_TOOLKIT" = "cairo-android"
5178     then
5179         dnl nglayout only supports building with one toolkit,
5180         dnl so ignore everything after the first comma (",").
5181         MOZ_WIDGET_TOOLKIT=`echo "$_DEFAULT_TOOLKIT" | sed -e "s/,.*$//"`
5182     else
5183         AC_MSG_ERROR([You must specify a default toolkit (perhaps $_PLATFORM_DEFAULT_TOOLKIT).])
5184     fi
5186 dnl ========================================================
5187 dnl = Enable the toolkit as needed                         =
5188 dnl ========================================================
5190 case "$MOZ_WIDGET_TOOLKIT" in
5191 photon)
5192         MOZ_ENABLE_PHOTON=1
5193         AC_DEFINE(MOZ_WIDGET_PHOTON)
5194     ;;
5196 cairo-windows)
5197     MOZ_WIDGET_TOOLKIT=windows
5198     MOZ_WEBGL=1
5199     case "${target}" in
5200     *-wince*)
5201         NS_PRINTING=
5202         ;;
5203     esac
5204     MOZ_PDF_PRINTING=1
5205     ;;
5207 cairo-gtk2|cairo-gtk2-x11)
5208     MOZ_WIDGET_TOOLKIT=gtk2
5209     MOZ_ENABLE_GTK2=1
5210     MOZ_ENABLE_XREMOTE=1
5211     MOZ_WEBGL=1
5212     MOZ_WEBGL_GLX=1
5214     AC_DEFINE(MOZ_X11)
5215     MOZ_X11=1
5216     USE_FC_FREETYPE=1
5218     TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
5219     TK_LIBS='$(MOZ_GTK2_LIBS)'
5220     AC_DEFINE(MOZ_WIDGET_GTK2)
5221     MOZ_PDF_PRINTING=1
5222     ;;
5224 cairo-gtk2-dfb)
5225     MOZ_WIDGET_TOOLKIT=gtk2
5226     MOZ_ENABLE_GTK2=1
5227     MOZ_WEBGL=
5229     AC_DEFINE(MOZ_DFB)
5230     MOZ_DFB=1
5232     TK_CFLAGS='$(MOZ_GTK2_CFLAGS)'
5233     TK_LIBS='$(MOZ_GTK2_LIBS)'
5234     AC_DEFINE(MOZ_WIDGET_GTK2)
5235     if test "$no_x" != "yes"; then
5236         AC_MSG_WARN([Disabling X when DirectFB is specified.])
5237         no_x=yes
5238     fi
5239     MOZ_PDF_PRINTING=1
5240     ;;
5242 cairo-qt)
5243     MOZ_WIDGET_TOOLKIT=qt
5244     MOZ_ENABLE_QT=1
5245     MOZ_ENABLE_XREMOTE=1
5246     MOZ_WEBGL=1
5247     MOZ_WEBGL_GLX=1
5248     USE_ELF_DYNSTR_GC=
5250     AC_DEFINE(MOZ_X11)
5251     MOZ_X11=1
5252     USE_FC_FREETYPE=1
5254     TK_CFLAGS='$(MOZ_QT_CFLAGS)'
5255     TK_LIBS='$(MOZ_QT_LIBS)'
5256     AC_DEFINE(MOZ_WIDGET_QT)
5257     MOZ_PDF_PRINTING=1
5258     ;;
5260 cairo-beos)
5261     MOZ_WIDGET_TOOLKIT=beos
5262     USE_FC_FREETYPE=1
5263     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
5264     TK_LIBS='$(MOZ_CAIRO_LIBS)'
5265     ;;
5267 cairo-os2)
5268     MOZ_WIDGET_TOOLKIT=os2
5269     USE_FC_FREETYPE=1
5270     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
5271     TK_LIBS='$(MOZ_CAIRO_LIBS)'
5272     MOZ_PDF_PRINTING=1
5273     ;;
5275 cairo-cocoa)
5276     MOZ_WIDGET_TOOLKIT=cocoa
5277     AC_DEFINE(MOZ_WIDGET_COCOA)
5278     MOZ_USER_DIR="Mozilla"
5279     AC_DEFINE(XP_MACOSX)
5280     TK_LIBS='-framework QuartzCore -framework Carbon -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework AddressBook -framework OpenGL'
5281     TK_CFLAGS="-DNO_X11"
5282     LDFLAGS="$LDFLAGS -framework Cocoa -lobjc"
5283     CFLAGS="$CFLAGS $TK_CFLAGS"
5284     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
5285     LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL'
5286     MOZ_FS_LAYOUT=bundle
5287     MOZ_WEBGL=1
5288     ;;
5290 cairo-android)
5291     AC_DEFINE(MOZ_WIDGET_ANDROID)
5292     MOZ_WIDGET_TOOLKIT=android
5293     TK_CFLAGS='$(MOZ_CAIRO_CFLAGS)'
5294     TK_LIBS='$(MOZ_CAIRO_LIBS)'
5295     MOZ_WEBGL=1
5296     MOZ_PDF_PRINTING=1
5297     ;;
5299 esac
5301 AC_SUBST(MOZ_PDF_PRINTING)
5302 if test "$MOZ_PDF_PRINTING"; then
5303    PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1"
5304    AC_DEFINE(MOZ_PDF_PRINTING)
5307 if test "$MOZ_ENABLE_XREMOTE"; then
5308     AC_DEFINE(MOZ_ENABLE_XREMOTE)
5311 if test "$COMPILE_ENVIRONMENT"; then
5312   if test "$MOZ_ENABLE_GTK2"; then
5313     if test "$MOZ_X11"; then
5314       GDK_PACKAGES=gdk-x11-2.0
5315     elif test "$MOZ_DFB"; then
5316       PKG_CHECK_MODULES(MOZ_DFB, directfb >= 1.1.0)
5317       GDK_PACKAGES=directfb
5318     fi
5320     PKG_CHECK_MODULES(MOZ_GTK2, gtk+-2.0 >= $GTK2_VERSION gtk+-unix-print-2.0 glib-2.0 gobject-2.0 $GDK_PACKAGES)
5321   fi
5323 fi # COMPILE_ENVIRONMENT
5325 AC_SUBST(MOZ_FS_LAYOUT)
5327 dnl ========================================================
5328 dnl Use ARM userspace kernel helpers; tell NSPR to enable
5329 dnl their usage and use them in spidermonkey.
5330 dnl ========================================================
5331 MOZ_ARG_WITH_BOOL(arm-kuser,
5332 [  --with-arm-kuser         Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
5333     USE_ARM_KUSER=1,)
5334 if test -n "$USE_ARM_KUSER"; then
5335    AC_DEFINE(USE_ARM_KUSER)
5338 dnl ========================================================
5339 dnl = startup-notification support module
5340 dnl ========================================================
5342 if test "$MOZ_ENABLE_GTK2"
5343 then
5344     MOZ_ENABLE_STARTUP_NOTIFICATION=
5346     MOZ_ARG_ENABLE_BOOL(startup-notification,
5347     [  --enable-startup-notification
5348                           Enable startup-notification support (default: disabled) ],
5349         MOZ_ENABLE_STARTUP_NOTIFICATION=force,
5350         MOZ_ENABLE_STARTUP_NOTIFICATION=)
5351     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"
5352     then
5353         PKG_CHECK_MODULES(MOZ_STARTUP_NOTIFICATION,
5354                           libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION,
5355         [MOZ_ENABLE_STARTUP_NOTIFICATION=1], [
5356             if test "$MOZ_ENABLE_STARTUP_NOTIFICATION" = "force"
5357             then
5358                 AC_MSG_ERROR([* * * Could not find startup-notification >= $STARTUP_NOTIFICATION_VERSION])
5359             fi
5360             MOZ_ENABLE_STARTUP_NOTIFICATION=
5361         ])
5362     fi
5364     if test "$MOZ_ENABLE_STARTUP_NOTIFICATION"; then
5365         AC_DEFINE(MOZ_ENABLE_STARTUP_NOTIFICATION)
5366     fi
5368     TK_LIBS="$TK_LIBS $MOZ_STARTUP_NOTIFICATION_LIBS"
5370 AC_SUBST(MOZ_ENABLE_STARTUP_NOTIFICATION)
5371 AC_SUBST(MOZ_STARTUP_NOTIFICATION_CFLAGS)
5372 AC_SUBST(MOZ_STARTUP_NOTIFICATION_LIBS)
5374 dnl ========================================================
5375 dnl = QT support
5376 dnl ========================================================
5377 if test "$MOZ_ENABLE_QT"
5378 then
5379     MOZ_ARG_WITH_STRING(qtdir,
5380     [  --with-qtdir=\$dir       Specify Qt directory ],
5381     [ QTDIR=$withval])
5383     if test -z "$QTDIR"; then
5384         PKG_CHECK_MODULES(MOZ_QT, QtGui QtNetwork QtCore QtOpenGL)
5385         AC_CHECK_PROGS(HOST_MOC, $MOC moc, "")
5386     else
5387         MOZ_QT_LIBS="-L$QTDIR/lib/ -lQtGui -lQtNetwork -lQtCore -lQtDBus -lQtXml -lQtOpenGL"
5389         MOZ_QT_CFLAGS="-DQT_SHARED"
5390         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include"
5391         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/Qt"
5392         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui"
5393         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtCore"
5394         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtNetwork"
5395         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtDBus"
5396         MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtXml"
5397         HOST_MOC="$QTDIR/bin/moc"
5398     fi
5399     if test -z "$HOST_MOC"; then
5400         AC_MSG_ERROR([No acceptable moc preprocessor found. Qt SDK is not installed or --with-qt is
5401 incorrect])
5402     fi
5403     MOC=$HOST_MOC
5405     MOZ_ENABLE_QTNETWORK=
5406     PKG_CHECK_MODULES(_QTNETWORK, QtNetwork >= 4.7,
5407                       MOZ_ENABLE_QTNETWORK=1,
5408                       MOZ_ENABLE_QTNETWORK=)
5410     if test "$MOZ_ENABLE_QTNETWORK"; then
5411       MOZ_ENABLE_QTNETWORK=1
5412       AC_DEFINE(MOZ_ENABLE_QTNETWORK)
5413     fi
5416 AC_SUBST(GTK_CONFIG)
5417 AC_SUBST(TK_CFLAGS)
5418 AC_SUBST(TK_LIBS)
5420 AC_SUBST(MOZ_ENABLE_GTK2)
5421 AC_SUBST(MOZ_ENABLE_PHOTON)
5422 AC_SUBST(MOZ_ENABLE_QT)
5423 AC_SUBST(MOZ_ENABLE_QTNETWORK)
5424 AC_SUBST(MOZ_ENABLE_XREMOTE)
5425 AC_SUBST(MOZ_GTK2_CFLAGS)
5426 AC_SUBST(MOZ_GTK2_LIBS)
5427 AC_SUBST(MOZ_QT_CFLAGS)
5428 AC_SUBST(MOZ_QT_LIBS)
5430 AC_SUBST(MOC)
5432 AC_SUBST(MOZ_DFB)
5433 AC_SUBST(MOZ_X11)
5435 dnl ========================================================
5436 dnl =
5437 dnl = Components & Features
5438 dnl = 
5439 dnl ========================================================
5440 MOZ_ARG_HEADER(Components and Features)
5442 dnl ========================================================
5443 dnl = Localization
5444 dnl ========================================================
5445 MOZ_ARG_ENABLE_STRING(ui-locale,
5446 [  --enable-ui-locale=ab-CD
5447                           Select the user interface locale (default: en-US)],
5448     MOZ_UI_LOCALE=$enableval )
5449 AC_SUBST(MOZ_UI_LOCALE)
5451 dnl ========================================================
5452 dnl = Trademarked Branding 
5453 dnl ========================================================
5454 MOZ_ARG_ENABLE_BOOL(official-branding,
5455 [  --enable-official-branding
5456                           Enable Official mozilla.org Branding
5457                           Do not distribute builds with
5458                           --enable-official-branding unless you have
5459                           permission to use trademarks per
5460                           http://www.mozilla.org/foundation/trademarks/ .],
5462   if test -z "$MOZ_OFFICIAL_BRANDING_DIRECTORY"; then
5463     AC_MSG_ERROR([You must specify MOZ_OFFICIAL_BRANDING_DIRECTORY to use --enable-official-branding.])
5464   else
5465     MOZ_BRANDING_DIRECTORY=${MOZ_OFFICIAL_BRANDING_DIRECTORY}
5466     MOZ_OFFICIAL_BRANDING=1
5467   fi
5468 ], MOZ_OFFICIAL_BRANDING=)
5470 AC_SUBST(MOZ_OFFICIAL_BRANDING)
5471 if test -n "$MOZ_OFFICIAL_BRANDING"; then
5472   AC_DEFINE(MOZ_OFFICIAL_BRANDING)
5475 MOZ_ARG_WITH_STRING(branding,
5476 [  --with-branding=dir     Use branding from the specified directory.],
5477     MOZ_BRANDING_DIRECTORY=$withval)
5479 REAL_BRANDING_DIRECTORY="${MOZ_BRANDING_DIRECTORY}"
5480 if test -z "$REAL_BRANDING_DIRECTORY"; then
5481   REAL_BRANDING_DIRECTORY=${MOZ_BUILD_APP}/branding/nightly
5484 if test -f "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"; then
5485   . "${_topsrcdir}/$REAL_BRANDING_DIRECTORY/configure.sh"
5488 AC_SUBST(MOZ_BRANDING_DIRECTORY)
5490 dnl ========================================================
5491 dnl = Distribution ID
5492 dnl ========================================================
5493 MOZ_ARG_WITH_STRING(distribution-id,
5494 [  --with-distribution-id=ID
5495                           Set distribution-specific id (default=org.mozilla)],
5496 [ val=`echo $withval`
5497     MOZ_DISTRIBUTION_ID="$val"])
5499 if test -z "$MOZ_DISTRIBUTION_ID"; then
5500    MOZ_DISTRIBUTION_ID="org.mozilla"
5503 AC_DEFINE_UNQUOTED(MOZ_DISTRIBUTION_ID,"$MOZ_DISTRIBUTION_ID")
5504 AC_SUBST(MOZ_DISTRIBUTION_ID)
5507 dnl ========================================================
5508 dnl complex text support off by default
5509 dnl ========================================================
5510 MOZ_ARG_DISABLE_BOOL(pango,
5511 [  --disable-pango         Disable usage of Pango ],
5512     MOZ_PANGO=,
5513     MOZ_PANGO=1)
5515 dnl ========================================================
5516 dnl = Pango
5517 dnl ========================================================
5518 if test "$MOZ_ENABLE_GTK2"
5519 then
5520     AC_SUBST(MOZ_PANGO)
5522     PKG_CHECK_MODULES(_PANGOCHK, pango >= $PANGO_VERSION)
5524     PKG_CHECK_MODULES(MOZ_PANGO, pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION pangocairo >= $PANGO_VERSION)
5525     AC_SUBST(MOZ_PANGO_CFLAGS)
5526     AC_SUBST(MOZ_PANGO_LIBS)
5527     if test "$MOZ_PANGO"
5528     then
5529         AC_DEFINE(MOZ_PANGO)
5530     else
5531         PKG_CHECK_MODULES(FT2, freetype2 > 6.1.0 fontconfig)
5532         AC_SUBST(FT2_CFLAGS)
5533         AC_SUBST(FT2_LIBS)
5534     fi
5537 if test "$MOZ_ENABLE_QT"
5538 then
5539     if test "$MOZ_PANGO"
5540     then
5541         PKG_CHECK_MODULES(MOZ_PANGO, [pango >= $PANGO_VERSION pangoft2 >= $PANGO_VERSION pangocairo >= $PANGO_VERSION],
5542         [
5543             AC_SUBST(MOZ_PANGO_CFLAGS)
5544             AC_SUBST(MOZ_PANGO_LIBS)
5545             AC_DEFINE(MOZ_PANGO)
5546         ],
5547         [
5548             echo "Pango library not found, will use FT2 font engine"
5549             MOZ_PANGO=
5550         ])
5551     fi
5552     AC_SUBST(MOZ_PANGO)
5555 dnl ========================================================
5556 dnl = GnomeVFS, GIO and GConf support module
5557 dnl ========================================================
5559 if test "$MOZ_X11"
5560 then
5561     dnl build the gnomevfs extension by default only when the
5562     dnl GTK2 toolkit is in use.
5563     if test "$MOZ_ENABLE_GTK2"
5564     then
5565         MOZ_ENABLE_GNOMEVFS=1
5566         MOZ_ENABLE_GCONF=1
5567     fi
5569     dnl ========================================================
5570     dnl = GnomeVFS support module
5571     dnl ========================================================
5572     MOZ_ARG_DISABLE_BOOL(gnomevfs,
5573     [  --disable-gnomevfs      Disable GnomeVFS support ],
5574         MOZ_ENABLE_GNOMEVFS=,
5575         MOZ_ENABLE_GNOMEVFS=force)
5577     if test "$MOZ_ENABLE_GNOMEVFS"
5578     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\>//'`
5581             MOZ_ENABLE_GNOMEVFS=1
5582             AC_DEFINE(MOZ_ENABLE_GNOMEVFS)
5583         ],[
5584             if test "$MOZ_ENABLE_GNOMEVFS" = "force"
5585             then
5586                 AC_MSG_ERROR([* * * Could not find gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION])
5587             fi
5588             MOZ_ENABLE_GNOMEVFS=
5589         ])
5590     else
5591         if test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
5592             PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
5593               MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
5594             ])
5595         fi
5596     fi
5598     AC_SUBST(MOZ_ENABLE_GNOMEVFS)
5599     AC_SUBST(MOZ_GNOMEVFS_CFLAGS)
5600     AC_SUBST(MOZ_GNOMEVFS_LIBS)
5602     dnl ========================================================
5603     dnl = GIO support module
5604     dnl ========================================================
5605     MOZ_ARG_ENABLE_BOOL(gio,
5606     [  --enable-gio            Enable GIO support (default: disabled)],
5607         MOZ_ENABLE_GIO=force,
5608         MOZ_ENABLE_GIO=)
5610     if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK2"
5611     then
5612         PKG_CHECK_MODULES(MOZ_GIO, gio-2.0 >= $GIO_VERSION,[
5613             MOZ_GIO_LIBS=`echo $MOZ_GIO_LIBS | sed 's/-llinc\>//'`
5614             MOZ_ENABLE_GIO=1
5615             AC_DEFINE(MOZ_ENABLE_GIO)
5616         ],[
5617             if test "$MOZ_ENABLE_GIO" = "force"
5618             then
5619                 AC_MSG_ERROR([* * * Could not find gio-2.0 >= $GIO_VERSION])
5620             fi
5621             MOZ_ENABLE_GIO=
5622         ])
5623     fi
5625     AC_SUBST(MOZ_ENABLE_GIO)
5626     AC_SUBST(MOZ_GIO_CFLAGS)
5627     AC_SUBST(MOZ_GIO_LIBS)
5628    
5629     dnl ========================================================
5630     dnl = GConf support module
5631     dnl ========================================================
5632     if test "$MOZ_ENABLE_GCONF"
5633     then
5634         PKG_CHECK_MODULES(MOZ_GCONF, gconf-2.0 >= $GCONF_VERSION gobject-2.0 ,[
5635             MOZ_GCONF_LIBS=`echo $MOZ_GCONF_LIBS | sed 's/-llinc\>//'`
5636             MOZ_ENABLE_GCONF=1
5637         ],[
5638             if test "$MOZ_ENABLE_GCONF" = "force"
5639             then
5640                 AC_MSG_ERROR([* * * Could not find gconf-2.0 ])
5641             fi
5642             MOZ_ENABLE_GCONF=
5643         ])
5644     fi
5646     if test "$MOZ_ENABLE_GCONF"; then
5647         AC_DEFINE(MOZ_ENABLE_GCONF)
5648     fi
5650     AC_SUBST(MOZ_ENABLE_GCONF)
5651     AC_SUBST(MOZ_GCONF_CFLAGS)
5652     AC_SUBST(MOZ_GCONF_LIBS)
5655 dnl ========================================================
5656 dnl = libproxy support
5657 dnl ========================================================
5659 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
5660 then
5661     MOZ_ENABLE_LIBPROXY=
5663     MOZ_ARG_ENABLE_BOOL(libproxy,
5664     [  --enable-libproxy         Enable libproxy support ],
5665     MOZ_ENABLE_LIBPROXY=1,
5666     MOZ_ENABLE_LIBPROXY=)
5668     if test "$MOZ_ENABLE_LIBPROXY"
5669     then
5670         PKG_CHECK_MODULES(MOZ_LIBPROXY, libproxy-1.0)
5671         AC_DEFINE(MOZ_ENABLE_LIBPROXY)
5672     fi
5674 AC_SUBST(MOZ_ENABLE_LIBPROXY)
5675 AC_SUBST(MOZ_LIBPROXY_CFLAGS)
5676 AC_SUBST(MOZ_LIBPROXY_LIBS)
5678 dnl ========================================================
5679 dnl = libnotify support
5680 dnl ========================================================
5682 if test "$MOZ_ENABLE_GTK2"
5683 then
5684     MOZ_ENABLE_LIBNOTIFY=1
5686     MOZ_ARG_DISABLE_BOOL(libnotify,
5687     [  --disable-libnotify     Disable libnotify support ],
5688     MOZ_ENABLE_LIBNOTIFY=,
5689     MOZ_ENABLE_LIBNOTIFY=1)
5691     if test "$MOZ_ENABLE_LIBNOTIFY"
5692     then
5693         AC_DEFINE(MOZ_ENABLE_LIBNOTIFY)
5694     fi
5697 if test -z "$SKIP_LIBRARY_CHECKS"
5698 then
5699     if test "$MOZ_ENABLE_GTK2"
5700     then
5701         if test "$MOZ_ENABLE_LIBNOTIFY"
5702         then
5703             PKG_CHECK_MODULES(MOZ_LIBNOTIFY, libnotify >= $LIBNOTIFY_VERSION)
5704         fi
5705     fi
5707 AC_SUBST(MOZ_ENABLE_LIBNOTIFY)
5708 AC_SUBST(MOZ_LIBNOTIFY_CFLAGS)
5709 AC_SUBST(MOZ_LIBNOTIFY_LIBS)
5711 dnl ========================================================
5712 dnl = GNOME component (mozgnome)
5713 dnl ========================================================
5715 # The GNOME component is built if one of 
5716 # gnome-vfs, gio, gconf or libnotify is available.
5717 if test "$MOZ_ENABLE_GCONF" -o \
5718    "$MOZ_ENABLE_GNOMEVFS" -o \
5719    "$MOZ_ENABLE_GIO" -o \
5720    "$MOZ_ENABLE_LIBNOTIFY"; then
5721     MOZ_ENABLE_GNOME_COMPONENT=1
5722 else
5723     MOZ_ENABLE_GNOME_COMPONENT=
5725 AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT)
5727 dnl ========================================================
5728 dnl = libgnomeui support module
5729 dnl ========================================================
5731 if test "$MOZ_ENABLE_GTK2"
5732 then
5733     MOZ_ENABLE_GNOMEUI=1
5735     MOZ_ARG_DISABLE_BOOL(gnomeui,
5736     [  --disable-gnomeui       Disable libgnomeui support (default: auto, optional at runtime) ],
5737         MOZ_ENABLE_GNOMEUI=,
5738         MOZ_ENABLE_GNOMEUI=force)
5740     if test "$MOZ_ENABLE_GNOMEUI"
5741     then
5742         PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION,
5743         [
5744             MOZ_GNOMEUI_LIBS=`echo $MOZ_GNOMEUI_LIBS | sed 's/-llinc\>//'`
5745             MOZ_ENABLE_GNOMEUI=1
5746         ],[
5747             if test "$MOZ_ENABLE_GNOMEUI" = "force"
5748             then
5749                 AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION])
5750             fi
5751             MOZ_ENABLE_GNOMEUI=
5752         ])
5753     fi
5755     if test "$MOZ_ENABLE_GNOMEUI"; then
5756         AC_DEFINE(MOZ_ENABLE_GNOMEUI)
5757     fi
5760 AC_SUBST(MOZ_ENABLE_GNOMEUI)
5761 AC_SUBST(MOZ_GNOMEUI_CFLAGS)
5762 AC_SUBST(MOZ_GNOMEUI_LIBS)
5764 dnl ========================================================
5765 dnl = dbus support
5766 dnl ========================================================
5768 if test "$MOZ_ENABLE_GTK2" -o "$MOZ_ENABLE_QT"
5769 then
5770     MOZ_ENABLE_DBUS=1
5772     MOZ_ARG_DISABLE_BOOL(dbus,
5773     [  --disable-dbus          Disable dbus support ],
5774         MOZ_ENABLE_DBUS=,
5775         MOZ_ENABLE_DBUS=1)
5777     if test "$MOZ_ENABLE_DBUS"
5778     then
5779         PKG_CHECK_MODULES(MOZ_DBUS, dbus-1 >= $DBUS_VERSION)
5780         PKG_CHECK_MODULES(MOZ_DBUS_GLIB, dbus-glib-1 >= $DBUS_VERSION)
5781         AC_DEFINE(MOZ_ENABLE_DBUS)
5782     fi
5784 AC_SUBST(MOZ_ENABLE_DBUS)
5785 AC_SUBST(MOZ_DBUS_CFLAGS)
5786 AC_SUBST(MOZ_DBUS_LIBS)
5787 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
5788 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
5790 dnl ========================================================
5791 dnl = Build Personal Security Manager
5792 dnl ========================================================
5793 MOZ_ARG_DISABLE_BOOL(crypto,
5794 [  --disable-crypto        Disable crypto support (Personal Security Manager)],
5795     MOZ_PSM=,
5796     MOZ_PSM=1 )
5798 dnl ========================================================
5799 dnl = JS Debugger XPCOM component (js/jsd)
5800 dnl ========================================================
5801 MOZ_ARG_DISABLE_BOOL(jsd,
5802 [  --disable-jsd           Disable JavaScript debug library],
5803     MOZ_JSDEBUGGER=,
5804     MOZ_JSDEBUGGER=1)
5807 dnl ========================================================
5808 dnl = Disable IPC support for tabs and plugins
5809 dnl ========================================================
5810 MOZ_ARG_DISABLE_BOOL(ipc,
5811 [  --disable-ipc           Disable IPC supports for tabs and plugins],
5812     MOZ_IPC=,
5813     MOZ_IPC=1)
5815 if test -n "$MOZ_IPC"; then
5816     AC_DEFINE(MOZ_IPC)
5819 AC_SUBST(MOZ_IPC)
5821 dnl ========================================================
5822 dnl = Enable IPDL's "expensive" unit tests
5823 dnl ========================================================
5824 MOZ_IPDL_TESTS=
5826 MOZ_ARG_ENABLE_BOOL(ipdl-tests,
5827 [  --enable-ipdl-tests     Enable expensive IPDL tests],
5828     MOZ_IPDL_TESTS=1,
5829     MOZ_IPDL_TESTS=)
5831 if test -z "$MOZ_IPC" -a -n "$MOZ_IPDL_TESTS"; then
5832     AC_MSG_ERROR([--enable-ipdl-tests requires --enable-ipc])
5835 if test -n "$MOZ_IPDL_TESTS"; then
5836     AC_DEFINE(MOZ_IPDL_TESTS)
5839 AC_SUBST(MOZ_IPDL_TESTS)
5841 dnl ========================================================
5842 dnl = Disable plugin support
5843 dnl ========================================================
5844 MOZ_ARG_DISABLE_BOOL(plugins,
5845 [  --disable-plugins       Disable plugins support],
5846     MOZ_PLUGINS=,
5847     MOZ_PLUGINS=1)
5849 dnl ========================================================
5850 dnl = Disable building dbm
5851 dnl ========================================================
5852 MOZ_ARG_DISABLE_BOOL(dbm,
5853 [  --disable-dbm           Disable building dbm],
5854     NSS_DISABLE_DBM=1,
5855     NSS_DISABLE_DBM=)
5857 dnl bi-directional support always on
5858 IBMBIDI=1
5859 AC_DEFINE(IBMBIDI)
5861 dnl ========================================================
5862 dnl view source support on by default
5863 dnl ========================================================
5864 if test "$MOZ_VIEW_SOURCE"; then
5865     AC_DEFINE(MOZ_VIEW_SOURCE)
5868 dnl ========================================================
5869 dnl accessibility support on by default on all platforms 
5870 dnl except OS X.
5871 dnl ========================================================
5872 MOZ_ARG_DISABLE_BOOL(accessibility,
5873 [  --disable-accessibility Disable accessibility support (off by default on OS X)],
5874     ACCESSIBILITY=,
5875     ACCESSIBILITY=1 )
5876 if test "$ACCESSIBILITY"; then
5877     AC_DEFINE(ACCESSIBILITY)
5880 if test -n "$ACCESSIBILITY" -a "$COMPILE_ENVIRONMENT" = "1"; then
5881 case "$target" in
5882 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
5883     if test "$ac_cv_header_atlbase_h" = "no"; then
5884         AC_MSG_ERROR([System header atlbase.h is not available. See http://developer.mozilla.org/en/docs/atlbase.h for details on fixing this problem.])
5885     fi
5886     if test "$ac_cv_header_oleacc_idl" = "no"; then
5887         AC_MSG_ERROR([System header oleacc.idl is not available. See http://developer.mozilla.org/en/docs/oleacc.idl for details on fixing this problem.])
5888     fi
5889     ;;
5890 esac
5893 dnl ========================================================
5894 dnl xpcom js loader support on by default
5895 dnl ========================================================
5896 if test "$MOZ_JSLOADER"; then
5897     AC_DEFINE(MOZ_JSLOADER)
5900 dnl ========================================================
5901 dnl Disable printing
5902 dnl ========================================================
5903 MOZ_ARG_DISABLE_BOOL(printing,
5904 [  --disable-printing      Disable printing support],
5905     NS_PRINTING=,
5906     NS_PRINTING=1)
5908 if test "$NS_PRINTING"; then
5909     AC_DEFINE(NS_PRINTING)
5910     AC_DEFINE(NS_PRINT_PREVIEW)
5912 dnl ========================================================
5913 dnl use native unicode converters
5914 dnl ========================================================
5915 MOZ_ARG_ENABLE_BOOL(native-uconv,
5916 [  --enable-native-uconv   Enable iconv support],
5917     MOZ_USE_NATIVE_UCONV=1,
5918     MOZ_USE_NATIVE_UCONV= )
5919 if test "$MOZ_USE_NATIVE_UCONV"; then
5920     AC_DEFINE(MOZ_USE_NATIVE_UCONV)
5922 if test "$OS_ARCH" != "WINCE" -a "$OS_ARCH" != "WINNT" -a "$MOZ_USE_NATIVE_UCONV" -a "$ac_cv_func_iconv" != "yes"; then
5923     AC_MSG_ERROR([iconv() not found.  Cannot enable native uconv support.])
5927 dnl ========================================================
5928 dnl Libeditor can be build as plaintext-only,
5929 dnl or as a full html and text editing component.
5930 dnl We build both by default.
5931 dnl ========================================================
5932 MOZ_ARG_ENABLE_BOOL(plaintext-editor-only,
5933 [  --enable-plaintext-editor-only
5934                           Allow only plaintext editing],
5935     MOZ_PLAINTEXT_EDITOR_ONLY=1,
5936     MOZ_PLAINTEXT_EDITOR_ONLY= )
5937 dnl Note the #define is MOZILLA, not MOZ, for compat with the Mac build.
5938 AC_SUBST(MOZ_PLAINTEXT_EDITOR_ONLY)
5940 dnl ========================================================
5941 dnl = Disable Fast Load
5942 dnl ========================================================
5943 MOZ_ARG_DISABLE_BOOL(xpcom-fastload,
5944 [  --disable-xpcom-fastload
5945                           Disable XPCOM fastload support],
5946     MOZ_NO_FAST_LOAD=1,
5947     MOZ_NO_FAST_LOAD=)
5949 AC_SUBST(MOZ_NO_FAST_LOAD)
5951 if test -n "$MOZ_NO_FAST_LOAD"; then
5952     AC_DEFINE(MOZ_NO_FAST_LOAD)
5955 dnl ========================================================
5956 dnl = Enable Raw Codecs
5957 dnl ========================================================
5958 MOZ_ARG_ENABLE_BOOL(raw,
5959 [  --enable-raw           Enable support for RAW media],
5960     MOZ_RAW=1,
5961     MOZ_RAW=)
5963 if test -n "$MOZ_RAW"; then
5964     AC_DEFINE(MOZ_RAW)
5965     MOZ_MEDIA=1
5968 AC_SUBST(MOZ_RAW)
5970 dnl ========================================================
5971 dnl = Disable Ogg Codecs
5972 dnl ========================================================
5973 MOZ_ARG_DISABLE_BOOL(ogg,
5974 [  --disable-ogg           Disable support for OGG media (Theora video and Vorbis audio)],
5975     MOZ_OGG=,
5976     MOZ_OGG=1)
5978 if test -n "$MOZ_OGG"; then
5979     AC_DEFINE(MOZ_OGG)
5980     MOZ_SYDNEYAUDIO=1
5981     MOZ_MEDIA=1
5982     case "$target_cpu" in
5983     arm*)
5984         MOZ_TREMOR=1
5985     ;;
5986     *)
5987         MOZ_VORBIS=1
5988     ;;
5989     esac
5991     dnl Checks for __attribute__(aligned()) directive
5992     AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
5993         [ac_cv_c_attribute_aligned],
5994         [ac_cv_c_attribute_aligned=0
5995          CFLAGS_save="${CFLAGS}"
5996          CFLAGS="${CFLAGS} -Werror"
5997          for ac_cv_c_attr_align_try in 64 32 16 8; do
5998            echo "trying $ac_cv_c_attr_align_try"
5999            AC_TRY_COMPILE([],
6000                           [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
6001                           [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
6002            if test "$ac_cv_c_attribute_aligned" != 0; then
6003              break;
6004            fi
6005          done
6006            CFLAGS="${CFLAGS_save}"])
6007     if test "${ac_cv_c_attribute_aligned}" != "0"; then
6008       AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
6009                          [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
6010     fi
6013 dnl ========================================================
6014 dnl = Disable VP8 decoder support
6015 dnl ========================================================
6016 MOZ_ARG_DISABLE_BOOL(webm,
6017 [  --disable-webm          Disable support for WebM media (VP8 video and Vorbis audio)],
6018     MOZ_WEBM=,
6019     MOZ_WEBM=1)
6021 dnl system libvpx Support
6022 dnl ========================================================
6023 MOZ_ARG_WITH_STRING(system-libvpx,
6024 [  --with-system-libvpx=[PFX]
6025                           Use system libvpx [installed at prefix PFX]],
6026     LIBVPX_DIR=$withval)
6028 MOZ_NATIVE_LIBVPX=
6029 MOZ_LIBVPX_INCLUDES=
6030 MOZ_LIBVPX_LIBS=
6032 if test -n "$MOZ_WEBM"; then
6033     AC_DEFINE(MOZ_WEBM)
6035     if test -n "$LIBVPX_DIR" -a "$LIBVPX_DIR" != no; then
6036         _SAVE_CFLAGS=$CFLAGS
6037         _SAVE_LDFLAGS=$LDFLAGS
6038         _SAVE_LIBS=$LIBS
6039         if test "${LIBVPX_DIR}" = "yes"; then
6040             LIBVPX_DIR=/usr
6041         fi
6042         CFLAGS="-I${LIBVPX_DIR}/include $CFLAGS"
6043         LDFLAGS="-L${LIBVPX_DIR}/lib $LDFLAGS"
6044         AC_CHECK_HEADER(vpx/vpx_decoder.h,
6045                         [if test ! -f "${LIBVPX_DIR}/include/vpx/vpx_decoder.h"; then
6046                              AC_MSG_ERROR([vpx/vpx_decoder.h found, but is not in ${LIBVPX_DIR}/include])
6047                          fi],
6048                         AC_MSG_ERROR([--with-system-libvpx requested but vpx/vpx_decoder.h not found]))
6049         AC_CHECK_LIB(vpx, vpx_codec_dec_init_ver,
6050                      [MOZ_NATIVE_LIBVPX=1
6051                       MOZ_LIBVPX_INCLUDES="-I${LIBVPX_DIR}/include"
6052                       MOZ_LIBVPX_LIBS="-L${LIBVPX_DIR}/lib -lvpx"],
6053                      ([--with-system-libvpx requested but symbol vpx_codec_dec_init_ver not found]))
6054         CFLAGS=$_SAVE_CFLAGS
6055         LDFLAGS=$_SAVE_LDFLAGS
6056         LIBS=$_SAVE_LIBS
6057     fi
6060 AC_SUBST(MOZ_NATIVE_LIBVPX)
6061 AC_SUBST(MOZ_LIBVPX_INCLUDES)
6062 AC_SUBST(MOZ_LIBVPX_LIBS)
6064 if test -n "$MOZ_WEBM" -a -z "$MOZ_NATIVE_LIBVPX"; then
6065     MOZ_SYDNEYAUDIO=1
6066     MOZ_MEDIA=1
6067     case "$target_cpu" in
6068     arm*)
6069         MOZ_TREMOR=1
6070     ;;
6071     *)
6072         MOZ_VORBIS=1
6073     ;;
6074     esac
6077     dnl Detect if we can use an assembler to compile optimized assembly for libvpx.
6078     dnl We currently require yasm on all x86 platforms and require yasm 1.1.0 on Win32.
6079     dnl We currently require gcc on all arm platforms.
6080     VPX_AS=$YASM
6081     VPX_ASM_SUFFIX=asm
6083     dnl See if we have assembly on this platform.  
6084     case "$OS_ARCH:$CPU_ARCH" in
6085     Linux:x86)
6086       VPX_ASFLAGS="-f elf32 -rnasm -pnasm"
6087       VPX_X86_ASM=1
6088     ;;
6089     Linux:x86_64)
6090       VPX_ASFLAGS="-f elf64 -rnasm -pnasm -DPIC"
6091       VPX_X86_ASM=1
6092     ;;
6093     SunOS:x86)
6094       VPX_ASFLAGS="-f elf32 -rnasm -pnasm"
6095       VPX_X86_ASM=1
6096     ;;
6097     SunOS:x86_64)
6098       VPX_ASFLAGS="-f elf64 -rnasm -pnasm -DPIC"
6099       VPX_X86_ASM=1
6100     ;;
6101     Darwin:x86)
6102       VPX_ASFLAGS="-f macho32 -rnasm -pnasm -DPIC"
6103       VPX_X86_ASM=1
6104     ;;
6105     Darwin:x86_64)
6106       VPX_ASFLAGS="-f macho64 -rnasm -pnasm -DPIC"
6107       VPX_X86_ASM=1
6108     ;;
6109     WINNT:x86_64)
6110       if test -z "$GNU_CC"; then
6111         VPX_ASFLAGS="-f x64 -rnasm -pnasm"
6112         VPX_X86_ASM=1
6113       fi
6114     ;;
6115     WINNT:x86)
6116       if test -z "$GNU_CC"; then
6117         dnl Check for yasm 1.1 or greater.
6118         if test -n "$COMPILE_ENVIRONMENT" -a -z "$YASM"; then
6119           AC_MSG_ERROR([yasm 1.1 or greater is required to build libvpx on Win32, but it appears not to be installed.  Install it (included in MozillaBuild 1.5.1 and newer) or configure with --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
6120         elif test -n "$COMPILE_ENVIRONMENT" -a "$_YASM_MAJOR_VERSION" -lt "1" -o \( "$_YASM_MAJOR_VERSION" -eq "1" -a "$_YASM_MINOR_VERSION" -lt "1" \) ; then
6121           AC_MSG_ERROR([yasm 1.1 or greater is required to build libvpx on Win32, but you appear to have version $_YASM_MAJOR_VERSION.$_YASM_MINOR_VERSION.  Upgrade to the newest version (included in MozillaBuild 1.5.1 and newer) or configure with --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
6122         else
6123           VPX_ASFLAGS="-f win32 -rnasm -pnasm -DPIC"
6124           VPX_X86_ASM=1
6125         fi
6126       fi
6127     ;;
6128     *:arm*)
6129       if test -n "$GNU_AS" ; then
6130         VPX_AS=$AS
6131         dnl These flags are a lie; they're just used to enable the requisite
6132         dnl opcodes; actual arch detection is done at runtime.
6133         VPX_ASFLAGS="-march=armv7-a -mfpu=neon"
6134         VPX_DASH_C_FLAG="-c"
6135         VPX_AS_CONVERSION='$(PERL) $(topsrcdir)/media/libvpx/build/make/ads2gas.pl'
6136         VPX_ASM_SUFFIX="$ASM_SUFFIX"
6137         VPX_ARM_ASM=1
6138       fi
6139     esac
6141     if test -n "$COMPILE_ENVIRONMENT" -a -n "$VPX_X86_ASM" -a -z "$VPX_AS"; then
6142       AC_MSG_ERROR([yasm is a required build tool for this architecture when webm is enabled. You may either install yasm or --disable-webm (which disables the WebM video format). See https://developer.mozilla.org/en/YASM for more details.])
6143     fi
6145     if test -n "$VPX_X86_ASM"; then
6146       AC_DEFINE(VPX_X86_ASM)
6147     elif test -n "$VPX_ARM_ASM"; then
6148       AC_DEFINE(VPX_ARM_ASM)
6149     else
6150       AC_MSG_WARN([No assembler or assembly support for libvpx. Using unoptimized C routines.])
6151     fi
6154 dnl ========================================================
6155 dnl = Disable Wave decoder support
6156 dnl ========================================================
6157 MOZ_ARG_DISABLE_BOOL(wave,
6158 [  --disable-wave          Disable Wave decoder support],
6159     MOZ_WAVE=,
6160     MOZ_WAVE=1)
6162 if test -n "$MOZ_WAVE"; then
6163     AC_DEFINE(MOZ_WAVE)
6164     MOZ_SYDNEYAUDIO=1
6165     MOZ_MEDIA=1
6168 dnl ========================================================
6169 dnl = Handle dependent SYDNEYAUDIO and MEDIA defines
6170 dnl ========================================================
6172 if test -n "$MOZ_SYDNEYAUDIO"; then
6173     AC_DEFINE(MOZ_SYDNEYAUDIO)
6176 if test -n "$MOZ_MEDIA"; then
6177     AC_DEFINE(MOZ_MEDIA)
6180 if test -n "$MOZ_VORBIS" -a -n "$MOZ_TREMOR"; then
6181     AC_MSG_ERROR([MOZ_VORBIS and MOZ_TREMOR are mutually exclusive!  The build system should not allow them both to be set, but they are.  Please file a bug at https://bugzilla.mozilla.org/])
6184 if test -n "$MOZ_VORBIS"; then
6185     AC_DEFINE(MOZ_VORBIS)
6188 if test -n "$MOZ_TREMOR"; then
6189     AC_DEFINE(MOZ_TREMOR)
6192 dnl ========================================================
6193 dnl = Check alsa availability on Linux if using sydneyaudio
6194 dnl ========================================================
6196 dnl If using sydneyaudio with Linux, ensure that the alsa library is available
6197 if test -n "$MOZ_SYDNEYAUDIO"; then
6198    case "$target_os" in
6199 linux*)
6200       PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
6201          [echo "$MOZ_ALSA_PKG_ERRORS"
6202           AC_MSG_ERROR([Need alsa for Ogg, Wave or WebM decoding on Linux.  Disable with --disable-ogg --disable-wave --disable-webm.  (On Ubuntu, you might try installing the package libasound2-dev.)])])
6203       ;;
6204    esac
6207 dnl ========================================================
6208 dnl Splashscreen
6209 dnl ========================================================
6210 AC_ARG_ENABLE(splashscreen,
6211               [  --enable-splashscreen   display splashscreen while loading (default=no)],
6212               [enable_splash="yes"],[enable_splash=""])
6213 if test "x$enable_splash" = "xyes"; then
6214   MOZ_SPLASHSCREEN=1
6215   AC_DEFINE(MOZ_SPLASHSCREEN)
6217 AC_SUBST(MOZ_SPLASHSCREEN)
6219 dnl ========================================================
6220 dnl Permissions System
6221 dnl ========================================================
6222 MOZ_ARG_DISABLE_BOOL(permissions,
6223 [  --disable-permissions   Disable permissions (popup and cookie blocking)],
6224     MOZ_PERMISSIONS=,
6225     MOZ_PERMISSIONS=1
6228 dnl ========================================================
6229 dnl NegotiateAuth
6230 dnl ========================================================
6231 MOZ_ARG_DISABLE_BOOL(negotiateauth,
6232 [  --disable-negotiateauth Disable GSS-API negotiation ],
6233     MOZ_AUTH_EXTENSION=,
6234     MOZ_AUTH_EXTENSION=1 )
6236 dnl ========================================================
6237 dnl XTF
6238 dnl ========================================================
6239 MOZ_ARG_DISABLE_BOOL(xtf,
6240 [  --disable-xtf           Disable XTF (pluggable xml tags) support],
6241     MOZ_XTF=,
6242     MOZ_XTF=1 )
6243 if test "$MOZ_XTF"; then
6244   AC_DEFINE(MOZ_XTF)
6247 dnl ========================================================
6248 dnl Pref extensions (autoconfig and system-pref)
6249 dnl ========================================================
6250 MOZ_ARG_DISABLE_BOOL(pref-extensions,
6251 [  --disable-pref-extensions
6252                           Disable pref extensions such as autoconfig and
6253                           system-pref],
6254   MOZ_PREF_EXTENSIONS=,
6255   MOZ_PREF_EXTENSIONS=1 )
6257 dnl ========================================================
6258 dnl = Universalchardet
6259 dnl ========================================================
6260 MOZ_ARG_DISABLE_BOOL(universalchardet,
6261 [  --disable-universalchardet
6262                           Disable universal encoding detection],
6263   MOZ_UNIVERSALCHARDET=,
6264   MOZ_UNIVERSALCHARDET=1 )
6266 dnl ========================================================
6267 dnl JavaXPCOM
6268 dnl ========================================================
6269 case "${target}" in
6270 *-wince*)
6271     MOZ_JAVAXPCOM=
6272     ;;
6273 esac
6275 MOZ_ARG_ENABLE_BOOL(javaxpcom,
6276 [  --enable-javaxpcom
6277                           Enable Java-XPCOM bridge],
6278     MOZ_JAVAXPCOM=1,
6279     MOZ_JAVAXPCOM=)
6281 case "$host_os" in
6282   cygwin*|msvc*|mks*)
6283     if test -n "$JAVA_HOME"; then
6284       JAVA_HOME=`cygpath -u \`cygpath -m -s "$JAVA_HOME"\``
6285     fi
6286     ;;
6287   *mingw*)
6288     if test -n "$JAVA_HOME"; then
6289       JAVA_HOME=`cd "$JAVA_HOME" && pwd`
6290     fi
6291     ;;
6292 esac
6294 if test -n "${JAVA_BIN_PATH}"; then
6295   dnl Look for javac and jar in the specified path.
6296   JAVA_PATH="$JAVA_BIN_PATH"
6297 else
6298   dnl No path specified, so look for javac and jar in $JAVA_HOME & $PATH.
6299   JAVA_PATH="$JAVA_HOME/bin:$PATH"
6302 MOZ_PATH_PROG(JAVA, java, :, [$JAVA_PATH])
6303 MOZ_PATH_PROG(JAVAC, javac, :, [$JAVA_PATH])
6304 MOZ_PATH_PROG(JAR, jar, :, [$JAVA_PATH])
6306 if test -n "${JAVA_BIN_PATH}" -o "$OS_TARGET" = Android; then
6307   if test -z "$JAVA" -o "$JAVA" = ":" -o -z "$JAVAC" -o "$JAVAC" = ":" -o -z "$JAR" -o "$JAR" = ":"; then
6308     AC_MSG_ERROR([The programs java, javac and jar were not found.  Set \$JAVA_HOME to your java sdk directory or use --with-java-bin-path={java-bin-dir}])
6309   fi
6312 if test -n "${MOZ_JAVAXPCOM}"; then
6313   if test -n "${JAVA_INCLUDE_PATH}"; then
6314     dnl Make sure jni.h exists in the given include path.
6315     if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
6316       AC_MSG_ERROR([jni.h was not found in given include path $JAVA_INCLUDE_PATH.])
6317     fi
6318   else
6319     case "$target_os" in
6320       darwin*)
6321         dnl Default to java system location
6322         JAVA_INCLUDE_PATH=/System/Library/Frameworks/JavaVM.framework/Headers
6323         ;;
6324       *)
6325         dnl Try $JAVA_HOME
6326         JAVA_INCLUDE_PATH="$JAVA_HOME/include"
6327         ;;
6328     esac
6329     if test ! -f "$JAVA_INCLUDE_PATH/jni.h"; then
6330       AC_MSG_ERROR([The header jni.h was not found.  Set \$JAVA_HOME to your java sdk directory, use --with-java-bin-path={java-bin-dir}, or reconfigure with --disable-javaxpcom.])
6331     fi
6332   fi
6335 dnl ========================================================
6336 dnl = ANGLE OpenGL->D3D translator for WebGL
6337 dnl = * only applies to win32
6338 dnl = * enabled by default (shipping build); requires explicit --disable to disable
6339 dnl ========================================================
6340 MOZ_ANGLE=
6341 MOZ_DIRECTX_SDK_PATH=
6342 case "$target_os" in
6343     *msvc*|*mks*|*cygwin*|*mingw*)
6344         MOZ_ANGLE=1
6345         ;;
6346 esac
6348 if test -n "$MOZ_ANGLE"; then
6349 MOZ_ARG_DISABLE_BOOL(angle,
6350 [  --disable-angle     Disable building of ANGLE for WebGL->D3D translation],
6351     MOZ_ANGLE=,
6352     MOZ_ANGLE=1)
6354 if test -n "$MOZ_ANGLE"; then
6355   if test -z "$_WIN32_MSVC"; then
6356     AC_MSG_ERROR([Building ANGLE requires MSVC.  To build without ANGLE, reconfigure with --disable-angle.])
6357   fi
6359   # Get the SDK path from the registry.
6360   MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK' | head -n 1`
6361   MOZ_DIRECTX_SDK_PATH=`reg query "$MOZ_DIRECTX_SDK_REG_KEY" //v InstallPath | grep REG_SZ | sed 's,  *, ,g' | cut -d' ' -f4-`
6363   MOZ_ANGLE=
6365   if test -n "$MOZ_DIRECTX_SDK_PATH" ; then
6366     if test -f "$MOZ_DIRECTX_SDK_PATH"/include/d3dx9.h && test -f "$MOZ_DIRECTX_SDK_PATH"/lib/x86/dxguid.lib ; then
6367       AC_MSG_RESULT([Found DirectX SDK via DXSDK_DIR, using $MOZ_DIRECTX_SDK_PATH])
6368       MOZ_ANGLE=1
6369     fi
6370   fi
6372   if test -z "$MOZ_ANGLE" ; then
6373     AC_MSG_WARN([Couldn't find the DirectX SDK, needed for ANGLE. Please install it (February 2010 or newer). To explicitly build without ANGLE, reconfigure with --disable-angle.])
6374     AC_MSG_WARN([This will become an error in the future.])
6375   fi
6379 dnl ========================================================
6380 dnl = Breakpad crash reporting (on by default on supported platforms)
6381 dnl ========================================================
6383 case $target in
6384 i?86-*-mingw*|x86_64-*-mingw*)
6385   MOZ_CRASHREPORTER=1
6386   ;;
6387 i?86-apple-darwin*|powerpc-apple-darwin*|x86_64-apple-darwin*)
6388   MOZ_CRASHREPORTER=1
6389   ;;
6390 i?86-*-linux*|x86_64-*-linux*|arm-*-linux*)
6391   if test "$MOZ_ENABLE_GTK2"; then
6392     MOZ_CRASHREPORTER=1
6393   fi
6394   ;;
6395 arm-android-eabi)
6396   MOZ_CRASHREPORTER=1
6397   ;;
6398 *solaris*)
6399   MOZ_CRASHREPORTER=1
6400   ;;
6401 esac
6403 MOZ_ARG_DISABLE_BOOL(crashreporter,
6404 [  --disable-crashreporter Disable breakpad crash reporting],
6405     MOZ_CRASHREPORTER=,
6406     MOZ_CRASHREPORTER=1)
6408 if test -n "$MOZ_CRASHREPORTER"; then
6409    AC_DEFINE(MOZ_CRASHREPORTER)
6411   if (test "$OS_TARGET" = "Linux" -o "$OS_ARCH" = "SunOS") && \
6412     test -z "$SKIP_LIBRARY_CHECKS"; then
6413     PKG_CHECK_MODULES(MOZ_GTHREAD, gthread-2.0)
6414     AC_SUBST(MOZ_GTHREAD_CFLAGS)
6415     AC_SUBST(MOZ_GTHREAD_LIBS)
6417     AC_CHECK_HEADERS([curl/curl.h], [], [AC_MSG_ERROR([Couldn't find curl/curl.h which is required for the crash reporter.  Use --disable-crashreporter to disable the crash reporter.])])
6418   fi
6421 MOZ_ARG_WITH_STRING(crashreporter-enable-percent,
6422 [  --with-crashreporter-enable-percent=NN
6423                           Enable sending crash reports by default on NN% of users. (default=100)],
6424 [ val=`echo $withval | sed 's/[^0-9]//g'`
6425     MOZ_CRASHREPORTER_ENABLE_PERCENT="$val"])
6427 if test -z "$MOZ_CRASHREPORTER_ENABLE_PERCENT"; then
6428    MOZ_CRASHREPORTER_ENABLE_PERCENT=100
6430 AC_DEFINE_UNQUOTED(MOZ_CRASHREPORTER_ENABLE_PERCENT, $MOZ_CRASHREPORTER_ENABLE_PERCENT)
6432 dnl ========================================================
6433 dnl = Enable compilation of specific extension modules
6434 dnl ========================================================
6436 MOZ_ARG_ENABLE_STRING(extensions,
6437 [  --enable-extensions     Enable extensions],
6438 [ for option in `echo $enableval | sed 's/,/ /g'`; do
6439     if test "$option" = "yes" -o "$option" = "all"; then
6440         AC_MSG_ERROR([--enable-extensions=$option is no longer supported.])
6441     elif test "$option" = "no" -o "$option" = "none"; then
6442         MOZ_EXTENSIONS=""
6443     elif test "$option" = "default"; then
6444         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $MOZ_EXTENSIONS_DEFAULT"
6445     elif test `echo "$option" | grep -c \^-` != 0; then
6446         option=`echo $option | sed 's/^-//'`
6447         MOZ_EXTENSIONS=`echo "$MOZ_EXTENSIONS" | sed "s/ ${option}//"`
6448     else
6449         MOZ_EXTENSIONS="$MOZ_EXTENSIONS $option"
6450     fi
6451 done],
6452     MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
6454 if test -z "$MOZ_ENABLE_GNOMEVFS" -a -z "$MOZ_GNOMEVFS_LIBS" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6455     # Suppress warning on non-X11 platforms
6456     if test -n "$MOZ_X11"; then
6457         AC_MSG_WARN([Cannot build gnomevfs without required libraries. Removing gnomevfs from MOZ_EXTENSIONS.])
6458     fi
6459     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6462 dnl Do not build gnomevfs with libxul based apps
6463 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
6464     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
6467 if test -z "$MOZ_ENABLE_GIO" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6468     # Suppress warning on non-X11 platforms
6469     if test -n "$MOZ_X11"; then
6470         AC_MSG_WARN([Cannot build gio without required libraries. Removing gio from MOZ_EXTENSIONS.])
6471     fi
6472     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6475 dnl Do not build gio with libxul based apps
6476 if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
6477     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
6480 if test -z "$MOZ_JSDEBUGGER" -a `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
6481     AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
6482     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
6485 dnl This might be temporary: build tridentprofile only on Windows
6486 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0 && test "$OS_ARCH" != "WINNT"; then
6487     AC_MSG_WARN([tridentprofile extension works only on Windows at this time. Removing tridentprofile from MOZ_EXTENSIONS.])
6488     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
6491 dnl cookie must be built before tridentprofile. put it at list's end.
6492 if test `echo "$MOZ_EXTENSIONS" | grep -c tridentprofile` -ne 0; then
6493   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|tridentprofile||'`
6494   MOZ_EXTENSIONS="$MOZ_EXTENSIONS tridentprofile"
6497 dnl xforms requires xtf
6498 if test -z "$MOZ_XTF" -a `echo "$MOZ_EXTENSIONS" | grep -c xforms` -ne 0; then
6499     AC_MSG_WARN([Cannot build XForms without XTF support.  Removing XForms from MOZ_EXTENSIONS.])
6500     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|xforms||g'`
6503 if test `echo "$MOZ_EXTENSIONS" | grep -c auth` -ne 0; then
6504     AC_MSG_WARN([auth is no longer an extension, use --disable-negotiateauth to disable.])
6505     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|auth||g'`
6508 if test `echo "$MOZ_EXTENSIONS" | grep -c 'cookie\|permissions'` -ne 0; then
6509     AC_MSG_WARN([cookie and permissions are no longer extensions, use --disable-permissions to disable.])
6510     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|cookie||g; s|permissions||g'`
6513 if test `echo "$MOZ_EXTENSIONS" | grep -c pref` -ne 0; then
6514     AC_MSG_WARN([pref is no longer an extension, use --disable-pref-extensions to disable.])
6515     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|pref||g'`
6518 if test `echo "$MOZ_EXTENSIONS" | grep -c universalchardet` -ne 0; then
6519     AC_MSG_WARN([universalchardet is no longer an extension, use --disable-universalchardet to disable.])
6520     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|universalchardet||g'`
6523 if test `echo "$MOZ_EXTENSIONS" | grep -c java` -ne 0; then
6524     AC_MSG_WARN([java is no longer an extension, use --enable-javaxpcom to enable.])
6525     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|java||g'`
6528 if test `echo "$MOZ_EXTENSIONS" | grep -c spellcheck` -ne 0; then
6529     AC_MSG_WARN([spellcheck is no longer an extension.])
6530     MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|spellcheck||g'`
6533 dnl Remove dupes
6534 MOZ_EXTENSIONS=`${PERL} ${srcdir}/build/unix/uniq.pl ${MOZ_EXTENSIONS}`
6536 dnl Ensure every extension exists, to avoid mostly-inscrutable error messages
6537 dnl when trying to build a nonexistent extension.
6538 for extension in $MOZ_EXTENSIONS; do
6539     if test ! -d "${srcdir}/extensions/${extension}"; then
6540         AC_MSG_ERROR([Unrecognized extension provided to --enable-extensions: ${extension}.])
6541     fi
6542 done
6544 dnl ========================================================
6545 dnl MathML on by default
6546 dnl ========================================================
6547 MOZ_ARG_DISABLE_BOOL(mathml,
6548 [  --disable-mathml        Disable MathML support],
6549     MOZ_MATHML=,
6550     MOZ_MATHML=1 )
6551 if test "$MOZ_MATHML"; then
6552   AC_DEFINE(MOZ_MATHML)
6555 dnl ========================================================
6556 dnl Keeping AC_DEFINE(MOZ_SVG) for the moment in case of something needs it.
6557 dnl ========================================================
6558 AC_DEFINE(MOZ_SVG)
6560 dnl ========================================================
6561 dnl SMIL
6562 dnl ========================================================
6563 MOZ_SMIL=1
6564 MOZ_ARG_DISABLE_BOOL(smil,
6565 [  --disable-smil          Disable SMIL animation support],
6566     MOZ_SMIL=,
6567     MOZ_SMIL=1 )
6568 if test -n "$MOZ_SMIL"; then
6569   AC_DEFINE(MOZ_SMIL)
6572 dnl ========================================================
6573 dnl Build Freetype in the tree
6574 dnl ========================================================
6575 MOZ_ARG_ENABLE_BOOL(tree-freetype,
6576 [  --enable-tree-freetype  Enable Tree FreeType],
6577     MOZ_TREE_FREETYPE=1,
6578     MOZ_TREE_FREETYPE= )
6579 if test -n "$MOZ_TREE_FREETYPE"; then
6580    if test -n "$_WIN32_MSVC"; then
6581       AC_ERROR("building with in-tree freetype is not supported on MSVC")
6582    fi
6583    AC_DEFINE(MOZ_TREE_FREETYPE)
6584    AC_SUBST(MOZ_TREE_FREETYPE)
6585    MOZ_ENABLE_CAIRO_FT=1       
6586    FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
6587    FT2_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6588    CAIRO_FT_CFLAGS='-I$(topsrcdir)/modules/freetype2/include'
6589    FT2_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6590    CAIRO_FT_LIBS='$(call EXPAND_LIBNAME_PATH,freetype,$(DEPTH)/modules/freetype2/.libs)'
6591    AC_DEFINE(HAVE_FT_BITMAP_SIZE_Y_PPEM)
6592    AC_DEFINE(HAVE_FT_GLYPHSLOT_EMBOLDEN)
6593    AC_DEFINE(HAVE_FT_LOAD_SFNT_TABLE)
6594    AC_SUBST(CAIRO_FT_CFLAGS)
6598 dnl ========================================================
6599 dnl Installer
6600 dnl ========================================================
6601 case "$target_os" in
6602     aix*|solaris*|linux*|msvc*|mks*|cygwin*|mingw*|os2*|wince*|winmo*)
6603         MOZ_INSTALLER=1
6604         ;;
6605 esac
6607 MOZ_ARG_DISABLE_BOOL(installer,
6608 [  --disable-installer     Disable building of installer],
6609     MOZ_INSTALLER=,
6610     MOZ_INSTALLER=1)
6611 if test -n "$MOZ_INSTALLER" -a "$OS_ARCH" = "WINNT"; then
6612     # Disable installer for Windows builds that use the new toolkit if the
6613     # required major version and minimum minor version of Unicode NSIS isn't in
6614     # the path.
6615     REQ_NSIS_MAJOR_VER=2
6616     MIN_NSIS_MINOR_VER=33
6617     MOZ_PATH_PROGS(MAKENSISU, $MAKENSISU makensisu-2.46 makensisu makensis)
6618     if test -z "$MAKENSISU" -o "$MAKENSISU" = ":"; then
6619         AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or Unicode NSIS with a major version of $REQ_NSIS_MAJOR_VER and a minimum minor version of $MIN_NSIS_MINOR_VER in your path. To build without the installer reconfigure using --disable-installer.])
6620     fi
6621     changequote(,)
6622     MAKENSISU_VER=`"$MAKENSISU" -version 2>/dev/null | sed -e '/-Unicode/!s/.*//g' -e 's/^v\([0-9]\+\.[0-9]\+\)\-Unicode$/\1/g'`
6623     changequote([,])
6624     if test ! "$MAKENSISU_VER" = ""; then
6625         MAKENSISU_MAJOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $1 }'`
6626         MAKENSISU_MINOR_VER=`echo $MAKENSISU_VER | $AWK -F\. '{ print $2 }'`
6627     fi
6628     AC_MSG_CHECKING([for Unicode NSIS with major version == $REQ_NSIS_MAJOR_VER and minor version >= $MIN_NSIS_MINOR_VER])
6629     if test "$MAKENSISU_VER" = "" ||
6630        test ! "$MAKENSISU_MAJOR_VER" = "$REQ_NSIS_MAJOR_VER" -o \
6631             ! "$MAKENSISU_MINOR_VER" -ge $MIN_NSIS_MINOR_VER; then
6632         AC_MSG_RESULT([no])
6633         AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or Unicode NSIS with a major version of $REQ_NSIS_MAJOR_VER and a minimum minor version of $MIN_NSIS_MINOR_VER in your path. To build without the installer reconfigure using --disable-installer.])
6634     fi
6635     AC_MSG_RESULT([yes])
6636     MAKENSISU="${CYGWIN_WRAPPER} $MAKENSISU"
6639 AC_SUBST(MOZ_INSTALLER)
6641 AC_MSG_CHECKING([for tar archiver])
6642 AC_CHECK_PROGS(TAR, gnutar gtar tar, "")
6643 if test -z "$TAR"; then
6644     AC_MSG_ERROR([no tar archiver found in \$PATH])
6646 AC_MSG_RESULT([$TAR])
6647 AC_SUBST(TAR)
6649 AC_MSG_CHECKING([for wget])
6650 AC_CHECK_PROGS(WGET, wget, "")
6651 AC_MSG_RESULT([$WGET])
6652 AC_SUBST(WGET)
6654 dnl ========================================================
6655 dnl Updater
6656 dnl ========================================================
6658 MOZ_ARG_DISABLE_BOOL(updater,
6659 [  --disable-updater       Disable building of updater],
6660     MOZ_UPDATER=,
6661     MOZ_UPDATER=1 )
6663 if test -n "$MOZ_UPDATER"; then
6664     AC_DEFINE(MOZ_UPDATER)
6667 # app update channel is 'default' when not supplied.
6668 MOZ_ARG_ENABLE_STRING([update-channel],
6669 [  --enable-update-channel=CHANNEL
6670                           Select application update channel (default=default)],
6671     MOZ_UPDATE_CHANNEL=`echo $enableval | tr A-Z a-z`)
6673 if test -z "$MOZ_UPDATE_CHANNEL"; then
6674     MOZ_UPDATE_CHANNEL=default
6676 AC_DEFINE_UNQUOTED(MOZ_UPDATE_CHANNEL, $MOZ_UPDATE_CHANNEL)
6677 AC_SUBST(MOZ_UPDATE_CHANNEL)
6679 # tools/update-packaging is not checked out by default.
6680 MOZ_ARG_ENABLE_BOOL(update-packaging,
6681 [  --enable-update-packaging
6682                           Enable tools/update-packaging],
6683     MOZ_UPDATE_PACKAGING=1,
6684     MOZ_UPDATE_PACKAGING= )
6685 AC_SUBST(MOZ_UPDATE_PACKAGING)
6687 dnl ========================================================
6688 dnl ActiveX
6689 dnl ========================================================
6691 MOZ_ARG_DISABLE_BOOL(xpconnect-idispatch,
6692 [  --disable-xpconnect-idispatch
6693                           Disable building of xpconnect support for IDispatch
6694                           (win32 only)],
6695     XPC_IDISPATCH_SUPPORT=,
6696     XPC_IDISPATCH_SUPPORT=1)
6697 AC_SUBST(XPC_IDISPATCH_SUPPORT)
6699 MOZ_ARG_DISABLE_BOOL(activex,
6700 [  --disable-activex       Disable building of ActiveX control (win32 only)],
6701     MOZ_NO_ACTIVEX_SUPPORT=1,
6702     MOZ_NO_ACTIVEX_SUPPORT= )
6703 AC_SUBST(MOZ_NO_ACTIVEX_SUPPORT)
6705 MOZ_ARG_ENABLE_BOOL(activex-scripting,
6706 [  --enable-activex-scripting
6707                           Enable building of ActiveX scripting support (win32)],
6708     MOZ_ACTIVEX_SCRIPTING_SUPPORT=1,
6709     MOZ_ACTIVEX_SCRIPTING_SUPPORT=)
6710 AC_SUBST(MOZ_ACTIVEX_SCRIPTING_SUPPORT)
6712 if test -n "$MOZ_NO_ACTIVEX_SUPPORT" -a -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT";
6713 then
6714     AC_MSG_ERROR([Cannot enable ActiveX scripting support when ActiveX support is disabled.])
6717 if test "$COMPILE_ENVIRONMENT" = "1"; then
6718 if test -n "$XPC_IDISPATCH_SUPPORT" -o -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
6719 case "$target" in
6720 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
6721     if test "$ac_cv_header_atlbase_h" = "no"; then
6722         AC_MSG_ERROR([System header atlbase.h is not available. See http://developer.mozilla.org/en/docs/atlbase.h for details on fixing this problem.])
6723     fi
6724     ;;
6725 esac
6729 dnl ========================================================
6730 dnl leaky
6731 dnl ========================================================
6732 MOZ_ARG_ENABLE_BOOL(leaky,
6733 [  --enable-leaky          Build leaky memory tool],
6734     MOZ_LEAKY=1,
6735     MOZ_LEAKY=)
6738 dnl ========================================================
6739 dnl build the tests by default
6740 dnl ========================================================
6741 MOZ_ARG_DISABLE_BOOL(tests,
6742 [  --disable-tests         Do not build test libraries & programs],
6743     ENABLE_TESTS=,
6744     ENABLE_TESTS=1 )
6746 dnl ========================================================
6747 dnl parental controls (for Windows Vista)
6748 dnl ========================================================
6749 MOZ_ARG_DISABLE_BOOL(parental-controls,
6750 [  --disable-parental-controls
6751                           Do not build parental controls],
6752    MOZ_DISABLE_PARENTAL_CONTROLS=1,
6753    MOZ_DISABLE_PARENTAL_CONTROLS=)
6754 if test -n "$MOZ_DISABLE_PARENTAL_CONTROLS"; then
6755     AC_DEFINE(MOZ_DISABLE_PARENTAL_CONTROLS)
6758 AC_SUBST(MOZ_DISABLE_PARENTAL_CONTROLS)
6760 dnl ========================================================
6761 dnl = Disable DOMCrypto
6762 dnl ========================================================
6763 if test -n "$MOZ_DISABLE_DOMCRYPTO"; then
6764     AC_DEFINE(MOZ_DISABLE_DOMCRYPTO)
6767 dnl ========================================================
6768 dnl =
6769 dnl = Module specific options
6770 dnl =
6771 dnl ========================================================
6772 MOZ_ARG_HEADER(Individual module options)
6774 dnl ========================================================
6775 dnl = Disable feed handling components
6776 dnl ========================================================
6777 MOZ_ARG_DISABLE_BOOL(feeds,
6778 [  --disable-feeds         Disable feed handling and processing components],
6779     MOZ_FEEDS=,
6780     MOZ_FEEDS=1 )
6781 if test -n "$MOZ_FEEDS"; then
6782     AC_DEFINE(MOZ_FEEDS)
6783 else
6784     if test "$MOZ_BUILD_APP" = "browser"; then
6785         AC_MSG_ERROR([Cannot build Firefox with --disable-feeds.])
6786     fi
6789 dnl ========================================================
6790 dnl = Enable mozStorage
6791 dnl ========================================================
6792 dnl Implicitly enabled by default if building calendar or places
6793 MOZ_ARG_ENABLE_BOOL(storage,
6794 [  --enable-storage        Enable mozStorage module and related components],
6795     MOZ_STORAGE=1,
6796     MOZ_STORAGE= )
6797 if test -n "$MOZ_STORAGE"; then
6798     AC_DEFINE(MOZ_STORAGE)
6801 dnl ========================================================
6802 dnl Check for sqlite
6803 dnl ========================================================
6805 MOZ_NATIVE_SQLITE=
6806 MOZ_ARG_ENABLE_BOOL(system-sqlite,
6807 [  --enable-system-sqlite  Use system sqlite (located with pkgconfig)],
6808 MOZ_NATIVE_SQLITE=1,
6809 MOZ_NATIVE_SQLITE= )
6811 if test -z "$MOZ_NATIVE_SQLITE"
6812 then
6813     SQLITE_CFLAGS=
6814     SQLITE_LIBS='$(call EXPAND_LIBNAME_PATH,mozsqlite3,$(DIST)/lib)'
6815 else
6816     dnl ============================
6817     dnl === SQLite Version check ===
6818     dnl ============================
6819     dnl Check to see if the system SQLite package is new enough.
6820     PKG_CHECK_MODULES(SQLITE, sqlite3 >= $SQLITE_VERSION)
6822     dnl ==================================
6823     dnl === SQLITE_SECURE_DELETE check ===
6824     dnl ==================================
6825     dnl Check to see if the system SQLite package is compiled with
6826     dnl SQLITE_SECURE_DELETE enabled.
6827     AC_MSG_CHECKING(for SQLITE_SECURE_DELETE support in system SQLite)
6828     _SAVE_CFLAGS="$CFLAGS"
6829     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6830     _SAVE_LIBS="$LIBS"
6831     LIBS="$LIBS $SQLITE_LIBS"
6832     AC_CACHE_VAL(ac_cv_sqlite_secure_delete,[
6833         AC_TRY_RUN([
6834             #include "sqlite3.h"
6836             int main(int argc, char **argv){
6837               return !sqlite3_compileoption_used("SQLITE_SECURE_DELETE");
6838             }],
6839             ac_cv_sqlite_secure_delete=yes,
6840             ac_cv_sqlite_secure_delete=no,
6841             ac_cv_sqlite_secure_delete=no
6842         )
6843     ])
6844     AC_MSG_RESULT($ac_cv_sqlite_secure_delete)
6845     CFLAGS="$_SAVE_CFLAGS"
6846     LIBS="$_SAVE_LIBS"
6847     if test "x$ac_cv_sqlite_secure_delete" = "xno"; then
6848         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_SECURE_DELETE.])
6849     fi
6851     dnl ===============================
6852     dnl === SQLITE_THREADSAFE check ===
6853     dnl ===============================
6854     dnl Check to see if the system SQLite package is compiled with
6855     dnl SQLITE_THREADSAFE enabled.
6856     AC_MSG_CHECKING(for SQLITE_THREADSAFE support in system SQLite)
6857     _SAVE_CFLAGS="$CFLAGS"
6858     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6859     _SAVE_LIBS="$LIBS"
6860     LIBS="$LIBS $SQLITE_LIBS"
6861     AC_CACHE_VAL(ac_cv_sqlite_threadsafe,[
6862         AC_TRY_RUN([
6863             #include "sqlite3.h"
6865             int main(int argc, char **argv){
6866               return !sqlite3_compileoption_used("SQLITE_THREADSAFE=1");
6867             }],
6868             ac_cv_sqlite_threadsafe=yes,
6869             ac_cv_sqlite_threadsafe=no,
6870             ac_cv_sqlite_threadsafe=no
6871         )
6872     ])
6873     AC_MSG_RESULT($ac_cv_sqlite_threadsafe)
6874     CFLAGS="$_SAVE_CFLAGS"
6875     LIBS="$_SAVE_LIBS"
6876     if test "x$ac_cv_sqlite_threadsafe" = "xno"; then
6877         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_THREADSAFE.])
6878     fi
6880     dnl ================================
6881     dnl === SQLITE_ENABLE_FTS3 check ===
6882     dnl ================================
6883     dnl check to see if the system SQLite package is compiled with
6884     dnl SQLITE_ENABLE_FTS3 enabled.
6885     AC_MSG_CHECKING(for SQLITE_ENABLE_FTS3 support in system SQLite)
6886     _SAVE_CFLAGS="$CFLAGS"
6887     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6888     _SAVE_LIBS="$LIBS"
6889     LIBS="$LIBS $SQLITE_LIBS"
6890     AC_CACHE_VAL(ac_cv_sqlite_enable_fts3,[
6891         AC_TRY_RUN([
6892             #include "sqlite3.h"
6894             int main(int argc, char **argv){
6895               return !sqlite3_compileoption_used("SQLITE_ENABLE_FTS3");
6896             }],
6897             ac_cv_sqlite_enable_fts3=yes,
6898             ac_cv_sqlite_enable_fts3=no,
6899             ac_cv_sqlite_enable_fts3=no
6900         )
6901     ])
6902     AC_MSG_RESULT($ac_cv_sqlite_enable_fts3)
6903     CFLAGS="$_SAVE_CFLAGS"
6904     LIBS="$_SAVE_LIBS"
6905     if test "x$ac_cv_sqlite_enable_fts3" = "xno"; then
6906         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_FTS3.])
6907     fi
6909     dnl =========================================
6910     dnl === SQLITE_ENABLE_UNLOCK_NOTIFY check ===
6911     dnl =========================================
6912     dnl check to see if the system SQLite package is compiled with
6913     dnl SQLITE_ENABLE_UNLOCK_NOTIFY enabled.
6914     AC_MSG_CHECKING(for SQLITE_ENABLE_UNLOCK_NOTIFY support in system SQLite)
6915     _SAVE_CFLAGS="$CFLAGS"
6916     CFLAGS="$CFLAGS $SQLITE_CFLAGS"
6917     _SAVE_LIBS="$LIBS"
6918     LIBS="$LIBS $SQLITE_LIBS"
6919     AC_CACHE_VAL(ac_cv_sqlite_enable_unlock_notify,[
6920         AC_TRY_RUN([
6921             #include "sqlite3.h"
6923             int main(int argc, char **argv){
6924               return !sqlite3_compileoption_used("SQLITE_ENABLE_UNLOCK_NOTIFY");
6925             }],
6926             ac_cv_sqlite_enable_unlock_notify=yes,
6927             ac_cv_sqlite_enable_unlock_notify=no,
6928             ac_cv_sqlite_enable_unlock_notify=no
6929         )
6930     ])
6931     AC_MSG_RESULT($ac_cv_sqlite_enable_unlock_notify)
6932     CFLAGS="$_SAVE_CFLAGS"
6933     LIBS="$_SAVE_LIBS"
6934     if test "x$ac_cv_sqlite_enable_unlock_notify" = "xno"; then
6935         AC_MSG_ERROR([System SQLite library is not compiled with SQLITE_ENABLE_UNLOCK_NOTIFY.])
6936     fi
6939 AC_SUBST(MOZ_NATIVE_SQLITE)
6941 dnl ========================================================
6942 dnl = Enable help viewer (off by default)
6943 dnl ========================================================
6944 if test -n "$MOZ_HELP_VIEWER"; then
6945      dnl Do this if defined in confvars.sh
6946      AC_DEFINE(MOZ_HELP_VIEWER)
6949 dnl ========================================================
6950 dnl = Enable safe browsing (anti-phishing)
6951 dnl ========================================================
6952 MOZ_ARG_ENABLE_BOOL(safe-browsing,
6953 [  --enable-safe-browsing  Enable safe browsing (anti-phishing) implementation],
6954     MOZ_SAFE_BROWSING=1,
6955     MOZ_SAFE_BROWSING= )
6956 if test -n "$MOZ_SAFE_BROWSING"; then
6957     AC_DEFINE(MOZ_SAFE_BROWSING)
6959 AC_SUBST(MOZ_SAFE_BROWSING)
6961 dnl ========================================================
6962 dnl = Enable faststart component
6963 dnl ========================================================
6964 MOZ_ARG_ENABLE_BOOL(faststart,
6965 [  --enable-faststart      Enable the faststart component],
6966     MOZ_FASTSTART=1,
6967     MOZ_FASTSTART= )
6968 if test -n "$MOZ_FASTSTART"; then
6969     AC_DEFINE(MOZ_FASTSTART)
6971 AC_SUBST(MOZ_FASTSTART)
6973 dnl ========================================================
6974 dnl = Enable url-classifier
6975 dnl ========================================================
6976 dnl Implicitly enabled by default if building with safe-browsing
6977 if test -n "$MOZ_SAFE_BROWSING"; then
6978     MOZ_URL_CLASSIFIER=1
6980 MOZ_ARG_ENABLE_BOOL(url-classifier,
6981 [  --enable-url-classifier Enable url classifier module],
6982     MOZ_URL_CLASSIFIER=1,
6983     MOZ_URL_CLASSIFIER= )
6984 if test -n "$MOZ_URL_CLASSIFIER"; then
6985     AC_DEFINE(MOZ_URL_CLASSIFIER)
6987 AC_SUBST(MOZ_URL_CLASSIFIER)
6989 dnl ========================================================
6990 dnl = Disable zipwriter
6991 dnl ========================================================
6992 MOZ_ARG_DISABLE_BOOL(zipwriter,
6993 [  --disable-zipwriter     Disable zipwriter component],
6994     MOZ_ZIPWRITER=,
6995     MOZ_ZIPWRITER=1 )
6996 AC_SUBST(MOZ_ZIPWRITER)
6998 dnl ========================================================
6999 dnl = libconic
7000 dnl ========================================================
7001 dnl superseded by QtNetwork starting from 4.7
7002 MOZ_ENABLE_LIBCONIC=1
7004 if test -n "$MOZ_ENABLE_QT"; then
7005   if test "$MOZ_ENABLE_QTNETWORK"; then
7006     MOZ_ENABLE_LIBCONIC=
7007   fi
7010 MOZ_ARG_DISABLE_BOOL(libconic,
7011 [  --disable-libconic      Disable libconic],
7012     MOZ_ENABLE_LIBCONIC=,
7013     MOZ_ENABLE_LIBCONIC=1 )
7015 if test -n "$MOZ_ENABLE_LIBCONIC"; then
7016     PKG_CHECK_MODULES(LIBCONIC, conic,
7017                       MOZ_ENABLE_LIBCONIC=1,
7018                       MOZ_ENABLE_LIBCONIC=)
7020 if test "$MOZ_ENABLE_LIBCONIC"; then
7021     AC_DEFINE(MOZ_ENABLE_LIBCONIC)
7024 AC_SUBST(MOZ_ENABLE_LIBCONIC)
7025 AC_SUBST(LIBCONIC_CFLAGS)
7026 AC_SUBST(LIBCONIC_LIBS)
7028 dnl ========================================================
7029 dnl = Maemo checks
7030 dnl ========================================================
7032 MAEMO_SDK_TARGET_VER=-1
7034 MOZ_ARG_WITH_STRING(maemo-version,
7035 [  --with-maemo-version=MAEMO_SDK_TARGET_VER
7036                           Maemo SDK Version],
7037   MAEMO_SDK_TARGET_VER=$withval)
7039 case "$MAEMO_SDK_TARGET_VER" in
7041     MOZ_PLATFORM_MAEMO=5
7042     ;;
7045     MOZ_PLATFORM_MAEMO=6
7046     ;;
7049     dnl We aren't compiling for Maemo, move on.
7050     ;;
7052     AC_MSG_ERROR([Unknown Maemo Version.  Try setting --with-maemo-version to 5 or 6.])
7053     ;;
7054 esac
7056 if test $MOZ_PLATFORM_MAEMO; then
7057    AC_DEFINE_UNQUOTED([MOZ_PLATFORM_MAEMO], $MOZ_PLATFORM_MAEMO)
7059    if test -z "$MOZ_ENABLE_DBUS"; then
7060        AC_MSG_ERROR([DBus is required when building for Maemo])
7061    fi
7063    MOZ_GFX_OPTIMIZE_MOBILE=1
7064    MOZ_WEBGL_GLX=
7065    MOZ_MAEMO_LIBLOCATION=
7067    if test $MOZ_PLATFORM_MAEMO = 5; then
7068       dnl if we have Xcomposite we should also have Xdamage and Xfixes
7069       AC_CHECK_HEADERS([X11/extensions/Xdamage.h], [],
7070                        [AC_MSG_ERROR([Couldn't find X11/extensions/Xdamage.h which is required for composited plugins.])])
7071       AC_CHECK_LIB(Xcomposite, XCompositeRedirectWindow, [XCOMPOSITE_LIBS="-lXcomposite -lXdamage -lXfixes"],
7072                    [MISSING_X="$MISSING_X -lXcomposite"], $XLIBS)
7074       AC_SUBST(XCOMPOSITE_LIBS)
7076       PKG_CHECK_MODULES(LIBHILDONMIME,libhildonmime, _LIB_FOUND=1, _LIB_FOUND=)
7077       MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONMIME_LIBS"
7078       MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONMIME_CFLAGS"
7079       if test -z "$_LIB_FOUND"; then
7080          AC_MSG_ERROR([Hildon Mime is required when building for Maemo])
7081       fi
7084       PKG_CHECK_MODULES(LIBOSSO,libosso, _LIB_FOUND=1, _LIB_FOUND=)
7085       MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBOSSO_LIBS"
7086       MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBOSSO_CFLAGS"
7087       if test -z "$_LIB_FOUND"; then
7088          AC_MSG_ERROR([LibOSSO is required when building for Maemo])
7089       fi
7091       PKG_CHECK_MODULES(LIBHILDONFM,hildon-fm-2, _LIB_FOUND=1, _LIB_FOUND=)
7092       MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBHILDONFM_LIBS"
7093       MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBHILDONFM_CFLAGS"
7094       if test -z "$_LIB_FOUND"; then
7095          AC_MSG_ERROR([Hildon FM-2 is required when building for Maemo])
7096       fi
7098    fi
7099    if test $MOZ_PLATFORM_MAEMO = 6; then
7100       dnl ========================================================
7101       dnl = Enable meego libcontentaction
7102       dnl ========================================================
7103       MOZ_ARG_ENABLE_BOOL(meegocontentaction,
7104       [  --enable-meegocontentaction           Enable meegocontentaction support],
7105          MOZ_MEEGOCONTENTACTION=1,
7106          MOZ_MEEGOCONTENTACTION=)
7108       if test -n "$MOZ_MEEGOCONTENTACTION"; then
7110          PKG_CHECK_MODULES(LIBCONTENTACTION, contentaction-0.1, _LIB_FOUND=1, _LIB_FOUND=)
7111          if test "$_LIB_FOUND"; then
7112             MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBCONTENTACTION_LIBS"
7113             MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBCONTENTACTION_CFLAGS"
7114             MOZ_ENABLE_CONTENTACTION=1
7115             AC_DEFINE(MOZ_ENABLE_CONTENTACTION)
7116             AC_SUBST(MOZ_ENABLE_CONTENTACTION)
7117          fi
7118       fi
7120       MOZ_THUMB2=1
7121    fi
7123    PKG_CHECK_MODULES(LIBLOCATION,liblocation, _LIB_FOUND=1, _LIB_FOUND=)
7124    MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBLOCATION_LIBS"
7125    MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBLOCATION_CFLAGS"
7126    if test "$_LIB_FOUND"; then
7127       MOZ_MAEMO_LIBLOCATION=1
7128       AC_DEFINE(MOZ_MAEMO_LIBLOCATION)
7129    else
7130       AC_MSG_WARN([Cannot liblocation-dev. Disabling Maemo geolocation.])
7131    fi
7132    AC_SUBST(MOZ_MAEMO_LIBLOCATION)
7134    PKG_CHECK_MODULES(LIBMEEGOTOUCHSHARE, ShareUiInterface-maemo-meegotouch >= 0.3.31 mdatauri, _LIB_FOUND=1, _LIB_FOUND=)
7135    MOZ_PLATFORM_MAEMO_LIBS="$MOZ_PLATFORM_MAEMO_LIBS $LIBMEEGOTOUCHSHARE_LIBS"
7136    MOZ_PLATFORM_MAEMO_CFLAGS="$MOZ_PLATFORM_MAEMO_CFLAGS $LIBMEEGOTOUCHSHARE_CFLAGS"
7137    if test "$_LIB_FOUND"; then
7138       MOZ_ENABLE_MEEGOTOUCHSHARE=1
7139       AC_DEFINE(MOZ_ENABLE_MEEGOTOUCHSHARE)
7140    else
7141       AC_MSG_WARN([Cannot find maemo-meegotouch-interfaces-dev or libmdatauri-dev. Disabling meegotouch share ui.])
7142    fi
7143    AC_SUBST(MOZ_ENABLE_MEEGOTOUCHSHARE)
7145    AC_SUBST(MOZ_PLATFORM_MAEMO_LIBS)
7146    AC_SUBST(MOZ_PLATFORM_MAEMO_CFLAGS)
7149 dnl Setup default CPU arch for arm target
7150 case "$target_cpu" in
7151   arm*)
7152     MOZ_ARM_ARCH=armv7
7153   ;;
7154 esac
7155 dnl ========================================================
7156 dnl = Enable building the Thumb2 instruction set
7157 dnl ========================================================
7158 MOZ_ARG_ENABLE_BOOL(thumb2,
7159  [  --enable-thumb2         Enable Thumb2 instruction set (implies ARMv7)],
7160     MOZ_THUMB2=1,
7161     MOZ_THUMB2=)
7162 if test -n "$MOZ_THUMB2"; then
7163   MOZ_ARM_ARCH=armv7
7166 dnl ========================================================
7167 dnl = Enable building for ARM specific CPU features
7168 dnl ========================================================
7169 MOZ_ARG_WITH_STRING(cpu-arch,
7170 [  --with-cpu-arch=arch      Use specific arm architecture CPU features, default armv7],
7171     MOZ_ARM_ARCH=$withval)
7173 if test -n "$MOZ_THUMB2"; then
7174   case "$target_cpu" in
7175     arm*)
7176       if test "$MOZ_ARM_ARCH" != "armv7"; then
7177         AC_MSG_ERROR([--enable-thumb2 is not compatible with cpu-arch=$MOZ_ARM_ARCH])
7178       fi
7179       if test "$GNU_CC"; then
7180         AC_DEFINE(MOZ_THUMB2)
7181         AC_DEFINE(MOZ_ARM_ARCH)
7182         CFLAGS="$CFLAGS -march=armv7-a -mthumb -Wa, -march=armv7-a -Wa, -mthumb"
7183         CXXFLAGS="$CXXFLAGS -march=armv7-a -mthumb -Wa, -march=armv7-a -Wa, -mthumb"
7184         ASFLAGS="$ASFLAGS -march=armv7-a -mthumb"
7185       else
7186         AC_MSG_ERROR([--enable-thumb2 is not supported for non-GNU toolchains])
7187       fi
7188     ;;
7189     *)
7190       AC_MSG_ERROR([--enable-thumb2 is not supported for non-ARM CPU architectures])
7191     ;;
7192   esac
7193 elif test "$MOZ_ARM_ARCH" = "armv7"; then
7194   case "$target_cpu" in
7195     arm*)
7196       if test "$GNU_CC"; then
7197         AC_DEFINE(MOZ_ARM_ARCH)
7198         CFLAGS="$CFLAGS -march=armv7-a -marm -Wa, -march=armv7-a -Wa, -marm"
7199         CXXFLAGS="$CXXFLAGS -march=armv7-a -marm -Wa, -march=armv7-a -Wa, -marm"
7200         ASFLAGS="$ASFLAGS -march=armv7-a -marm"
7201       else
7202         AC_MSG_ERROR([--with-cpu-arch=armv7 is not supported for non-GNU toolchains])
7203       fi
7204     ;;
7205     *)
7206       AC_MSG_ERROR([--with-cpu-arch=armv7 is not supported for non-ARM CPU architectures])
7207     ;;
7208   esac
7209 else
7210   case "$target_cpu" in
7211     arm*)
7212       if test "$GNU_CC"; then
7213         CFLAGS="$CFLAGS -march=armv5te -mthumb-interwork -Wa, -march=armv5te -Wa, -mthumb-interwork"
7214         CXXFLAGS="$CXXFLAGS -march=armv5te -mthumb-interwork -Wa, -march=armv5te -Wa, -mthumb-interwork"
7215         ASFLAGS="$ASFLAGS -march=armv5te -mthumb-interwork"
7216       fi
7217       ;;
7218   esac
7221 AC_SUBST(MOZ_THUMB2)
7222 AC_SUBST(MOZ_ARM_ARCH)
7224 dnl ========================================================
7225 dnl = faststripe theme
7226 dnl ========================================================
7227 MOZ_ARG_ENABLE_BOOL(faststripe,
7228 [  --enable-faststripe     Use faststripe theme],
7229     MOZ_THEME_FASTSTRIPE=1,
7230     MOZ_THEME_FASTSTRIPE= )
7231 AC_SUBST(MOZ_THEME_FASTSTRIPE)
7233 dnl ========================================================
7234 dnl =
7235 dnl = Feature options that require extra sources to be pulled
7236 dnl =
7237 dnl ========================================================
7238 dnl MOZ_ARG_HEADER(Features that require extra sources)
7240 dnl ========================================================
7241 dnl =
7242 dnl = Debugging Options
7243 dnl = 
7244 dnl ========================================================
7245 MOZ_ARG_HEADER(Debugging and Optimizations)
7247 dnl ========================================================
7248 dnl = Disable building with debug info.
7249 dnl = Debugging is OFF by default
7250 dnl ========================================================
7251 if test -z "$MOZ_DEBUG_FLAGS"; then
7252   MOZ_DEBUG_FLAGS="-g"
7255 MOZ_ARG_ENABLE_STRING(debug,
7256 [  --enable-debug[=DBG]    Enable building with developer debug info
7257                            (using compiler flags DBG)],
7258 [ if test "$enableval" != "no"; then
7259     MOZ_DEBUG=1
7260     if test -n "$enableval" -a "$enableval" != "yes"; then
7261         MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
7262         _MOZ_DEBUG_FLAGS_SET=1
7263     fi
7264   else
7265     MOZ_DEBUG=
7266   fi ],
7267   MOZ_DEBUG=)
7269 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG -DTRACING"
7270 MOZ_ARG_WITH_STRING(debug-label,
7271 [  --with-debug-label=LABELS
7272                           Define DEBUG_<value> for each comma-separated
7273                           value given.],
7274 [ for option in `echo $withval | sed 's/,/ /g'`; do
7275     MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${option}"
7276 done])
7278 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
7280 if test -n "$MOZ_DEBUG"; then
7281     AC_MSG_CHECKING([for valid debug flags])
7282     _SAVE_CFLAGS=$CFLAGS
7283     CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
7284     AC_TRY_COMPILE([#include <stdio.h>], 
7285         [printf("Hello World\n");],
7286         _results=yes,
7287         _results=no)
7288     AC_MSG_RESULT([$_results])
7289     if test "$_results" = "no"; then
7290         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
7291     fi
7292     CFLAGS=$_SAVE_CFLAGS
7295 dnl ========================================================
7296 dnl enable mobile optimizations
7297 dnl ========================================================
7298 MOZ_ARG_ENABLE_BOOL(mobile-optimize,
7299 [  --enable-mobile-optimize
7300                           Enable mobile optimizations],
7301     MOZ_GFX_OPTIMIZE_MOBILE=1)
7303 AC_SUBST(MOZ_GFX_OPTIMIZE_MOBILE)
7305 if test "$MOZ_GFX_OPTIMIZE_MOBILE"; then
7306     AC_DEFINE(MOZ_GFX_OPTIMIZE_MOBILE)
7309 dnl ========================================================
7310 dnl = Enable code optimization. ON by default.
7311 dnl ========================================================
7312 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
7313         MOZ_OPTIMIZE_FLAGS="-O"
7316 MOZ_ARG_ENABLE_STRING(optimize,
7317 [  --disable-optimize      Disable compiler optimization
7318   --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
7319 [ if test "$enableval" != "no"; then
7320     MOZ_OPTIMIZE=1
7321     if test -n "$enableval" -a "$enableval" != "yes"; then
7322         MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
7323         MOZ_OPTIMIZE=2
7324     fi
7325 else
7326     MOZ_OPTIMIZE=
7327 fi ], MOZ_OPTIMIZE=1)
7329 if test "$COMPILE_ENVIRONMENT"; then
7330 if test -n "$MOZ_OPTIMIZE"; then
7331     AC_MSG_CHECKING([for valid optimization flags])
7332     _SAVE_CFLAGS=$CFLAGS
7333     CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
7334     AC_TRY_COMPILE([#include <stdio.h>], 
7335         [printf("Hello World\n");],
7336         _results=yes,
7337         _results=no)
7338     AC_MSG_RESULT([$_results])
7339     if test "$_results" = "no"; then
7340         AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
7341     fi
7342     CFLAGS=$_SAVE_CFLAGS
7344 fi # COMPILE_ENVIRONMENT
7346 AC_SUBST(MOZ_OPTIMIZE)
7347 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
7348 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
7349 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
7351 dnl ========================================================
7352 dnl = (Deprecated) generation of debugger info for specific modules
7353 dnl ========================================================
7354 MOZ_ARG_ENABLE_STRING(debugger-info-modules,
7355 [  --enable-debugger-info-modules
7356                           Enable/disable debugger info for specific modules],
7357 [ if test "$enableval" != "no"; then
7358     AC_MSG_WARN([--enable-debugger-info-modules is deprecated, use --enable-debug-symbols instead])
7359     MOZ_DEBUG_SYMBOLS=1
7360   fi ])
7362 dnl ========================================================
7363 dnl = Enable generation of debug symbols
7364 dnl ========================================================
7365 MOZ_ARG_ENABLE_STRING(debug-symbols,
7366 [  --enable-debug-symbols[=DBG]
7367                           Enable debugging symbols (using compiler flags DBG)],
7368 [ if test "$enableval" != "no"; then
7369       MOZ_DEBUG_SYMBOLS=1
7370       if test -n "$enableval" -a "$enableval" != "yes"; then
7371           if test -z "$_MOZ_DEBUG_FLAGS_SET"; then
7372               MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
7373           else
7374               AC_MSG_ERROR([--enable-debug-symbols flags cannot be used with --enable-debug flags])
7375           fi
7376       fi
7377   fi ])
7379 if test -n "$MOZ_DEBUG" -o -n "$MOZ_DEBUG_SYMBOLS"; then
7380     AC_DEFINE(MOZ_DEBUG_SYMBOLS)
7381     export MOZ_DEBUG_SYMBOLS
7384 dnl ========================================================
7385 dnl = Disable any treating of compile warnings as errors
7386 dnl ========================================================
7387 MOZ_ARG_DISABLE_BOOL(warnings-as-errors,
7388 [  --disable-warnings-as-errors
7389                           Disable treating of warnings as errors],
7390     MOZ_DISABLE_WARNINGS_AS_ERRORS=1,
7391     MOZ_DISABLE_WARNINGS_AS_ERRORS= )
7392 if test "$MOZ_DISABLE_WARNINGS_AS_ERRORS"; then
7393    WARNINGS_AS_ERRORS=''
7396 dnl ========================================================
7397 dnl = Disable runtime logging checks
7398 dnl ========================================================
7399 MOZ_ARG_DISABLE_BOOL(logging,
7400 [  --disable-logging       Disable logging facilities],
7401     NS_DISABLE_LOGGING=1,
7402     NS_DISABLE_LOGGING= )
7403 if test "$NS_DISABLE_LOGGING"; then
7404     AC_DEFINE(NS_DISABLE_LOGGING)
7405 else
7406     AC_DEFINE(MOZ_LOGGING)
7409 dnl ========================================================
7410 dnl = This will enable logging of addref, release, ctor, dtor.
7411 dnl ========================================================
7412 _ENABLE_LOGREFCNT=42
7413 MOZ_ARG_ENABLE_BOOL(logrefcnt,
7414 [  --enable-logrefcnt      Enable logging of refcounts (default=debug) ],
7415     _ENABLE_LOGREFCNT=1,
7416     _ENABLE_LOGREFCNT= )
7417 if test "$_ENABLE_LOGREFCNT" = "1"; then
7418     AC_DEFINE(FORCE_BUILD_REFCNT_LOGGING)
7419 elif test -z "$_ENABLE_LOGREFCNT"; then
7420     AC_DEFINE(NO_BUILD_REFCNT_LOGGING)
7423 dnl ========================================================
7424 dnl = Enable trace malloc
7425 dnl ========================================================
7426 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
7427 MOZ_ARG_ENABLE_BOOL(trace-malloc,
7428 [  --enable-trace-malloc   Enable malloc tracing],
7429     NS_TRACE_MALLOC=1,
7430     NS_TRACE_MALLOC= )
7431 if test "$NS_TRACE_MALLOC"; then
7432   # Please, Mr. Linker Man, don't take away our symbol names
7433   MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
7434   USE_ELF_DYNSTR_GC=
7435   AC_DEFINE(NS_TRACE_MALLOC)
7437 AC_SUBST(NS_TRACE_MALLOC)
7439 dnl ========================================================
7440 dnl = Enable jemalloc
7441 dnl ========================================================
7442 MOZ_ARG_ENABLE_BOOL(jemalloc,
7443 [  --enable-jemalloc       Replace memory allocator with jemalloc],
7444     MOZ_MEMORY=1,
7445     MOZ_MEMORY=)
7447 if test "$NS_TRACE_MALLOC"; then
7448     MOZ_MEMORY=
7451 if test "$MOZ_MEMORY"; then
7453   dnl Don't try to run compiler tests on Windows  
7454   if test "$OS_ARCH" = "WINNT"; then
7455     if test -z "$HAVE_64BIT_OS"; then
7456       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7457     else
7458       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7459     fi
7460   else
7461     AC_CHECK_SIZEOF([int *], [4])
7462     case "${ac_cv_sizeof_int_p}" in
7463     4)
7464       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
7465       ;;
7466     8)
7467       AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
7468       ;;
7469     *)
7470       AC_MSG_ERROR([Unexpected pointer size])
7471       ;;
7472     esac
7473   fi
7475   AC_DEFINE(MOZ_MEMORY)
7476   if test "x$MOZ_DEBUG" = "x1"; then
7477     AC_DEFINE(MOZ_MEMORY_DEBUG)
7478   fi
7479   dnl The generic feature tests that determine how to compute ncpus are long and
7480   dnl complicated.  Therefore, simply define special cpp variables for the
7481   dnl platforms we have special knowledge of.
7482   case "${target}" in
7483   *-darwin*)
7484     AC_DEFINE(MOZ_MEMORY_DARWIN)
7485     ;;
7486   *-*freebsd*)
7487     AC_DEFINE(MOZ_MEMORY_BSD)
7488     ;;
7489   *-*linux*)
7490     AC_DEFINE(MOZ_MEMORY_LINUX)
7491     ;;
7492   *-netbsd*)
7493     AC_DEFINE(MOZ_MEMORY_BSD)
7494     ;;
7495   *-solaris*)
7496     AC_DEFINE(MOZ_MEMORY_SOLARIS)
7497     ;;
7498   *-msvc*|*-mks*|*-cygwin*|*-mingw*)
7499     AC_DEFINE(MOZ_MEMORY_WINDOWS)
7500     dnl This is sort of awful. Will revisit if we add support for more versions
7501     if test "$CC_VERSION" != "14.00.50727.762" -a "$CC_VERSION" != "15.00.30729.01"; then
7502         AC_MSG_ERROR([Building jemalloc requires exactly Visual C++ 2005 SP1 or 2008 SP1 currently.])
7503     fi
7504     if test -z "$WIN32_CRT_SRC_DIR"; then
7505       if test -z "$VCINSTALLDIR" -o ! -d "$VCINSTALLDIR"; then
7506         AC_MSG_ERROR([When building jemalloc, set WIN32_CRT_SRC_DIR to the path to the Visual C++ CRT source (usually VCINSTALLDIR\crt\src, but VCINSTALLDIR is not set, so I can't autodetect it for you).])
7507       else
7508         WIN32_CRT_SRC_DIR="$VCINSTALLDIR\crt\src"
7509       fi
7510     fi
7511     dnl cpu check
7512     case "${target_cpu}" in
7513     i*86)
7514       MOZ_CRT_CPU_ARCH=intel
7515       ;;
7516     x86_64)
7517       MOZ_CRT_CPU_ARCH=amd64
7518       ;;
7519     *)
7520       AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7521       ;;
7522     esac
7524     AC_SUBST(MOZ_CRT_CPU_ARCH)
7526     if test ! -d "$WIN32_CRT_SRC_DIR"; then
7527       AC_MSG_ERROR([Invalid Win32 CRT source directory: ${WIN32_CRT_SRC_DIR}])
7528     fi
7529     WIN32_CRT_SRC_DIR=`cd "$WIN32_CRT_SRC_DIR" && pwd -W`
7530     _objdir_win=`pwd -W`
7531     WIN32_CUSTOM_CRT_DIR="$_objdir_win/memory/jemalloc/crtsrc/build/$MOZ_CRT_CPU_ARCH"
7532     MOZ_MEMORY_LDFLAGS="-MANIFEST:NO -LIBPATH:\"$WIN32_CUSTOM_CRT_DIR\" -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt19 -DEFAULTLIB:mozcpp19"
7533     dnl Also pass this to NSPR/NSS
7534     DLLFLAGS="$DLLFLAGS $MOZ_MEMORY_LDFLAGS"
7535     export DLLFLAGS
7536     ;;
7537   *-*wince)
7538     AC_DEFINE(MOZ_MEMORY_WINCE)
7539     AC_DEFINE(MOZ_MEMORY_WINDOWS)
7540     if test -z "$WINCE_WINDOWS_MOBILE"; then
7541       AC_DEFINE(MOZ_MEMORY_WINCE6)
7542     fi
7543     ;;
7544   *-*winmo)
7545     AC_DEFINE(MOZ_MEMORY_WINCE)
7546     AC_DEFINE(MOZ_MEMORY_WINDOWS)
7547     ;;
7548   *-android*)
7549     AC_DEFINE(MOZ_MEMORY_LINUX)
7550     AC_DEFINE(MOZ_MEMORY_ANDROID)
7551     _WRAP_MALLOC=1
7552     export WRAP_MALLOC_LIB="-L$_objdir/dist/lib -lmozalloc -lmozutils"
7553     WRAP_MALLOC_CFLAGS="-Wl,--wrap=dlopen -Wl,--wrap=dlclose -Wl,--wrap=dlerror -Wl,--wrap=dlsym -Wl,--wrap=dladdr"
7554     ;;
7555   *)
7556     AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
7557     ;;
7558   esac
7560   if test "$OS_ARCH" != "Darwin"; then
7561     dnl NB: this must be kept in sync with jemalloc.h
7562     AC_DEFINE(HAVE_JEMALLOC_VALLOC)
7563     AC_DEFINE(HAVE_JEMALLOC_POSIX_MEMALIGN)
7564     AC_DEFINE(HAVE_JEMALLOC_MEMALIGN)
7565   fi
7567 AC_SUBST(MOZ_MEMORY)
7568 AC_SUBST(MOZ_MEMORY_LDFLAGS)
7569 AC_SUBST(WIN32_CRT_SRC_DIR)
7570 dnl Need to set this for make because NSS doesn't have configure
7571 AC_SUBST(DLLFLAGS)
7573 dnl ========================================================
7574 dnl = Use malloc wrapper lib
7575 dnl ========================================================
7576 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
7577 [  --enable-wrap-malloc    Wrap malloc calls (gnu linker only)],
7578     _WRAP_MALLOC=1,
7579     _WRAP_MALLOC= )
7581 if test -n "$_WRAP_MALLOC"; then
7582     if test "$GNU_CC"; then
7583     WRAP_MALLOC_CFLAGS="${LDFLAGS} ${WRAP_MALLOC_CFLAGS} -Wl,--wrap -Wl,malloc -Wl,--wrap -Wl,calloc -Wl,--wrap -Wl,valloc -Wl,--wrap -Wl,free -Wl,--wrap -Wl,realloc -Wl,--wrap -Wl,memalign -Wl,--wrap -Wl,__builtin_new -Wl,--wrap -Wl,__builtin_vec_new -Wl,--wrap -Wl,__builtin_delete -Wl,--wrap -Wl,__builtin_vec_delete -Wl,--wrap -Wl,PR_Free -Wl,--wrap -Wl,PR_Malloc -Wl,--wrap -Wl,PR_Calloc -Wl,--wrap -Wl,PR_Realloc -Wl,--wrap -Wl,strdup -Wl,--wrap -Wl,strndup -Wl,--wrap -Wl,posix_memalign"
7584     MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) $(WRAP_MALLOC_LIB) -o $@'
7585     MKCSHLIB='$(CC) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) $(WRAP_MALLOC_LIB) -o $@'
7586     fi
7589 dnl ========================================================
7590 dnl = Location of malloc wrapper lib
7591 dnl ========================================================
7592 MOZ_ARG_WITH_STRING(wrap-malloc,
7593 [  --with-wrap-malloc=DIR  Location of malloc wrapper library],
7594     WRAP_MALLOC_LIB=$withval)
7596 dnl ========================================================
7597 dnl = Use JS Call tracing
7598 dnl ========================================================
7599 MOZ_ARG_ENABLE_BOOL(trace-jscalls,
7600 [  --enable-trace-jscalls  Enable JS call enter/exit callback (default=no)],
7601     MOZ_TRACE_JSCALLS=1,
7602     MOZ_TRACE_JSCALLS= )
7603 if test -n "$MOZ_TRACE_JSCALLS"; then
7604     AC_DEFINE(MOZ_TRACE_JSCALLS)
7607 dnl ========================================================
7608 dnl = Use TraceVis
7609 dnl ========================================================
7610 MOZ_ARG_ENABLE_BOOL(tracevis,
7611 [  --enable-tracevis       Enable TraceVis tracing tool (default=no)],
7612     MOZ_TRACEVIS=1,
7613     MOZ_TRACEVIS= )
7614 if test -n "$MOZ_TRACEVIS"; then
7615     AC_DEFINE(MOZ_TRACEVIS)
7618 dnl ========================================================
7619 dnl = Use GCTimer
7620 dnl ========================================================
7621 MOZ_ARG_ENABLE_BOOL(gctimer,
7622 [  --enable-gctimer        Enable GC timer (default=no)],
7623     MOZ_GCTIMER=1,
7624     MOZ_GCTIMER= )
7625 if test -n "$MOZ_GCTIMER"; then
7626     AC_DEFINE(MOZ_GCTIMER)
7629 dnl ========================================================
7630 dnl = Use Valgrind
7631 dnl ========================================================
7632 MOZ_ARG_ENABLE_BOOL(valgrind,
7633 [  --enable-valgrind       Enable Valgrind integration hooks (default=no)],
7634     MOZ_VALGRIND=1,
7635     MOZ_VALGRIND= )
7636 if test -n "$MOZ_VALGRIND"; then
7637     AC_CHECK_HEADER([valgrind/valgrind.h], [],
7638         AC_MSG_ERROR(
7639             [--enable-valgrind specified but Valgrind is not installed]))
7640     AC_DEFINE(MOZ_VALGRIND)
7643 dnl ========================================================
7644 dnl jprof
7645 dnl ========================================================
7646 MOZ_ARG_ENABLE_BOOL(jprof,
7647 [  --enable-jprof          Enable jprof profiling tool (needs mozilla/tools/jprof). Implies --enable-profiling.],
7648     MOZ_JPROF=1,
7649     MOZ_JPROF= )
7650 if test -n "$MOZ_JPROF"; then
7651     MOZ_PROFILING=1
7652     AC_DEFINE(MOZ_JPROF)
7655 dnl ========================================================
7656 dnl shark
7657 dnl ========================================================
7658 MOZ_ARG_ENABLE_BOOL(shark,
7659 [  --enable-shark          Enable shark remote profiling. Implies --enable-profiling.],
7660     MOZ_SHARK=1,
7661     MOZ_SHARK= )
7662 if test -n "$MOZ_SHARK"; then
7663     MOZ_PROFILING=1
7664     AC_DEFINE(MOZ_SHARK)
7667 dnl ========================================================
7668 dnl callgrind
7669 dnl ========================================================
7670 MOZ_ARG_ENABLE_BOOL(callgrind,
7671 [  --enable-callgrind      Enable callgrind profiling],
7672     MOZ_CALLGRIND=1,
7673     MOZ_CALLGRIND= )
7674 if test -n "$MOZ_CALLGRIND"; then
7675     AC_DEFINE(MOZ_CALLGRIND)
7678 dnl ========================================================
7679 dnl vtune
7680 dnl ========================================================
7681 MOZ_ARG_ENABLE_BOOL(vtune,
7682 [  --enable-vtune          Enable vtune profiling. Implies --enable-profiling.],
7683     MOZ_VTUNE=1,
7684     MOZ_VTUNE= )
7685 if test -n "$MOZ_VTUNE"; then
7686     MOZ_PROFILING=1
7687     AC_DEFINE(MOZ_VTUNE)
7690 dnl ========================================================
7691 dnl Profiling
7692 dnl ========================================================
7693 if test -n "$MOZ_PROFILING"; then
7694     AC_DEFINE(MOZ_PROFILING)
7697 dnl ========================================================
7698 dnl Zealous JavaScript GC
7699 dnl ========================================================
7700 MOZ_ARG_ENABLE_BOOL(gczeal,
7701 [  --enable-gczeal         Enable zealous JavaScript GCing],
7702     JS_GC_ZEAL=1,
7703     JS_GC_ZEAL= )
7704 if test -n "$JS_GC_ZEAL"; then
7705     AC_DEFINE(JS_GC_ZEAL)
7708 dnl ======================================================
7709 dnl = Enable compiling with ccache
7710 dnl ======================================================
7711 MOZ_ARG_WITH_STRING(ccache,
7712 [  --with-ccache[=path/to/ccache]
7713                           Enable compiling with ccache],
7714     CCACHE=$withval, CCACHE="no")
7716 if test "$CCACHE" != "no"; then
7717     if test -z "$CCACHE" -o "$CCACHE" = "yes"; then
7718         CCACHE=
7719     else
7720         if test ! -e "$CCACHE"; then
7721             AC_MSG_ERROR([$CCACHE not found])
7722         fi
7723     fi
7724     MOZ_PATH_PROGS(CCACHE, $CCACHE ccache)
7725     if test -z "$CCACHE" -o "$CCACHE" = ":"; then
7726         AC_MSG_ERROR([ccache not found])
7727     elif test -x "$CCACHE"; then
7728         CC="$CCACHE $CC"
7729         CXX="$CCACHE $CXX"
7730     else
7731         AC_MSG_ERROR([$CCACHE is not executable])
7732     fi
7735 dnl ========================================================
7736 dnl = Enable static checking using gcc-dehydra
7737 dnl ========================================================
7739 MOZ_ARG_WITH_STRING(static-checking,
7740 [  --with-static-checking=path/to/gcc_dehydra.so
7741                           Enable static checking of code using GCC-dehydra],
7742     DEHYDRA_PATH=$withval,
7743     DEHYDRA_PATH= )
7745 if test -n "$DEHYDRA_PATH"; then
7746     if test ! -f "$DEHYDRA_PATH"; then
7747         AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
7748     fi
7749     AC_DEFINE(NS_STATIC_CHECKING)
7751 AC_SUBST(DEHYDRA_PATH)
7753 dnl ========================================================
7754 dnl = Enable stripping of libs & executables
7755 dnl ========================================================
7756 MOZ_ARG_ENABLE_BOOL(strip,
7757 [  --enable-strip          Enable stripping of libs & executables ],
7758     ENABLE_STRIP=1,
7759     ENABLE_STRIP= )
7761 dnl ========================================================
7762 dnl = Enable stripping of libs & executables when packaging
7763 dnl ========================================================
7764 MOZ_ARG_ENABLE_BOOL(install-strip,
7765 [  --enable-install-strip  Enable stripping of libs & executables when packaging ],
7766     PKG_SKIP_STRIP= ,
7767     PKG_SKIP_STRIP=1)
7769 dnl ========================================================
7770 dnl = --enable-elf-dynstr-gc
7771 dnl ========================================================
7772 MOZ_ARG_ENABLE_BOOL(elf-dynstr-gc,
7773 [  --enable-elf-dynstr-gc  Enable elf dynstr garbage collector (opt builds only)],
7774     USE_ELF_DYNSTR_GC=1,
7775     USE_ELF_DYNSTR_GC= )
7777 dnl ========================================================
7778 dnl = --disable-elf-hack
7779 dnl ========================================================
7781 USE_ELF_HACK=1
7782 MOZ_ARG_DISABLE_BOOL(elf-hack,
7783 [  --disable-elf-hack      Disable elf hacks],
7784     USE_ELF_HACK=,
7785     USE_ELF_HACK=1)
7787 dnl ========================================================
7788 dnl = 
7789 dnl = Profiling and Instrumenting
7790 dnl = 
7791 dnl ========================================================
7792 MOZ_ARG_HEADER(Profiling and Instrumenting)
7794 dnl ========================================================
7795 dnl = Enable timeline service, which provides lightweight
7796 dnl = instrumentation of mozilla for performance measurement.
7797 dnl = Timeline is off by default.
7798 dnl ========================================================
7799 MOZ_ARG_ENABLE_BOOL(timeline,
7800 [  --enable-timeline       Enable timeline services ],
7801     MOZ_TIMELINE=1,
7802     MOZ_TIMELINE= )
7803 if test -n "$MOZ_TIMELINE"; then
7804     AC_DEFINE(MOZ_TIMELINE)
7807 dnl ========================================================
7808 dnl = Enable NS_FUNCTION_TIMER, which provides Function 
7809 dnl = timing for identifying code bottlenecks 
7810 dnl = NS_FUNCTION_TIMER is off by default.
7811 dnl ========================================================
7812 MOZ_ARG_ENABLE_BOOL(functiontimer,
7813 [  --enable-functiontimer  Enable NS_FUNCTION_TIMER ],
7814     NS_FUNCTION_TIMER=1,
7815     NS_FUNCTION_TIMER= )
7816 if test -n "$NS_FUNCTION_TIMER"; then
7817     AC_DEFINE(NS_FUNCTION_TIMER)
7820 dnl ========================================================
7821 dnl Turn on reflow counting
7822 dnl ========================================================
7823 MOZ_ARG_ENABLE_BOOL(reflow-perf,
7824 [  --enable-reflow-perf    Enable reflow performance tracing],
7825     MOZ_REFLOW_PERF=1,
7826     MOZ_REFLOW_PERF= )
7827 if test -n "$MOZ_REFLOW_PERF"; then
7828     AC_DEFINE(MOZ_REFLOW_PERF)
7831 dnl ========================================================
7832 dnl Enable code size metrics.
7833 dnl ========================================================
7834 MOZ_ARG_ENABLE_BOOL(codesighs,
7835 [  --enable-codesighs      Enable code size analysis tools],
7836     _ENABLE_CODESIGHS=1,
7837     _ENABLE_CODESIGHS= )
7838 if test -n "$_ENABLE_CODESIGHS"; then
7839     if test -d $srcdir/tools/codesighs; then 
7840         MOZ_MAPINFO=1
7841     else
7842         AC_MSG_ERROR([Codesighs directory $srcdir/tools/codesighs required.])
7843     fi
7846 dnl ========================================================
7847 dnl = Support for Quantify (Windows)
7848 dnl ========================================================
7849 MOZ_ARG_ENABLE_BOOL(quantify,
7850 [  --enable-quantify       Enable Quantify support (Windows only) ],
7851     MOZ_QUANTIFY=1,
7852     MOZ_QUANTIFY= )
7854 dnl ========================================================
7855 dnl = Support for demangling undefined symbols
7856 dnl ========================================================
7857 if test -z "$SKIP_LIBRARY_CHECKS"; then
7858     AC_LANG_SAVE
7859     AC_LANG_CPLUSPLUS
7860     AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
7861     AC_LANG_RESTORE
7864 # Demangle only for debug or trace-malloc builds
7865 MOZ_DEMANGLE_SYMBOLS=
7866 if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
7867     MOZ_DEMANGLE_SYMBOLS=1
7868     AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
7870 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
7872 dnl ========================================================
7873 dnl = Support for gcc stack unwinding (from gcc 3.3)
7874 dnl ========================================================
7875 if test "$HAVE_GCC3_ABI" -a -z "$SKIP_LIBRARY_CHECKS"; then
7876     AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
7879 dnl ========================================================
7880 dnl =
7881 dnl = Misc. Options
7882 dnl = 
7883 dnl ========================================================
7884 MOZ_ARG_HEADER(Misc. Options)
7886 dnl ========================================================
7887 dnl update xterm title
7888 dnl ========================================================
7889 MOZ_ARG_ENABLE_BOOL(xterm-updates,
7890 [  --enable-xterm-updates  Update XTERM titles with current command.],
7891     MOZ_UPDATE_XTERM=1,
7892     MOZ_UPDATE_XTERM= )
7894 dnl =========================================================
7895 dnl = Chrome format
7896 dnl =========================================================
7897 MOZ_ARG_ENABLE_STRING([chrome-format],
7898 [  --enable-chrome-format=jar|flat|both|symlink|omni
7899                           Select FORMAT of chrome files (default=jar)],
7900     MOZ_CHROME_FILE_FORMAT=`echo $enableval | tr A-Z a-z`)
7902 if test -z "$MOZ_CHROME_FILE_FORMAT"; then
7903     MOZ_CHROME_FILE_FORMAT=jar
7906 if test "$MOZ_CHROME_FILE_FORMAT" != "jar" && 
7907     test "$MOZ_CHROME_FILE_FORMAT" != "flat" &&
7908     test "$MOZ_CHROME_FILE_FORMAT" != "symlink" &&
7909     test "$MOZ_CHROME_FILE_FORMAT" != "both" &&
7910     test "$MOZ_CHROME_FILE_FORMAT" != "omni"; then
7911     AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, both, symlink, or omni])
7914 dnl =========================================================
7915 dnl Omnijar packaging (bug 552121)
7916 dnl =========================================================
7917 dnl Omnijar packaging is compatible with flat packaging.
7918 dnl In unpackaged builds, omnijar looks for files as if
7919 dnl things were flat packaged. After packaging, all files
7920 dnl are loaded from a single jar. MOZ_CHROME_FILE_FORMAT
7921 dnl is set to flat since putting files into jars is only
7922 dnl done during packaging with omnijar.
7923 if test "$MOZ_CHROME_FILE_FORMAT" = "omni"; then
7924     MOZ_OMNIJAR=1
7925     AC_DEFINE(MOZ_OMNIJAR)
7926     MOZ_CHROME_FILE_FORMAT=flat
7927 elif test "$MOZ_CHROME_FILE_FORMAT" = "jar"; then
7928     AC_DEFINE(MOZ_CHROME_FILE_FORMAT_JAR)
7931 AC_SUBST(MOZ_OMNIJAR)
7933 dnl ========================================================
7934 dnl = Define default location for MOZILLA_FIVE_HOME
7935 dnl ========================================================
7936 MOZ_ARG_WITH_STRING(default-mozilla-five-home,
7937 [  --with-default-mozilla-five-home
7938                           Set the default value for MOZILLA_FIVE_HOME],
7939 [ val=`echo $withval`
7940   AC_DEFINE_UNQUOTED(MOZ_DEFAULT_MOZILLA_FIVE_HOME,"$val") ])
7942 dnl ========================================================
7943 dnl = Location of the mozilla user directory (default is ~/.mozilla).],
7944 dnl ========================================================
7945 MOZ_ARG_WITH_STRING(user-appdir,
7946 [  --with-user-appdir=DIR  Set user-specific appdir (default=.mozilla)],
7947 [ val=`echo $withval`
7948 if echo "$val" | grep "\/" >/dev/null; then
7949     AC_MSG_ERROR("Homedir must be single relative path.")
7950 else 
7951     MOZ_USER_DIR="$val"
7952 fi])
7954 AC_DEFINE_UNQUOTED(MOZ_USER_DIR,"$MOZ_USER_DIR")
7956 dnl ========================================================
7957 dnl = Doxygen configuration
7958 dnl ========================================================
7959 dnl Use commas to specify multiple dirs to this arg
7960 MOZ_DOC_INPUT_DIRS='./dist/include ./dist/idl'
7961 MOZ_ARG_WITH_STRING(doc-input-dirs,
7962 [  --with-doc-input-dirs=DIRS
7963                           Header/idl dirs to create docs from],
7964 [ MOZ_DOC_INPUT_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7965 AC_SUBST(MOZ_DOC_INPUT_DIRS)
7967 dnl Use commas to specify multiple dirs to this arg
7968 MOZ_DOC_INCLUDE_DIRS='./dist/include ./dist/include/nspr'
7969 MOZ_ARG_WITH_STRING(doc-include-dirs,
7970 [  --with-doc-include-dirs=DIRS  
7971                           Include dirs to preprocess doc headers],
7972 [ MOZ_DOC_INCLUDE_DIRS=`echo "$withval" | sed "s/,/ /g"` ] )
7973 AC_SUBST(MOZ_DOC_INCLUDE_DIRS)
7975 MOZ_DOC_OUTPUT_DIR='./dist/docs'
7976 MOZ_ARG_WITH_STRING(doc-output-dir,
7977 [  --with-doc-output-dir=DIR
7978                           Dir to generate docs into],
7979 [ MOZ_DOC_OUTPUT_DIR=$withval ] )
7980 AC_SUBST(MOZ_DOC_OUTPUT_DIR)
7982 if test -z "$SKIP_COMPILER_CHECKS"; then
7983 dnl ========================================================
7984 dnl =
7985 dnl = Compiler Options
7986 dnl = 
7987 dnl ========================================================
7988 MOZ_ARG_HEADER(Compiler Options)
7990 dnl ========================================================
7991 dnl Check for gcc -pipe support
7992 dnl ========================================================
7993 AC_MSG_CHECKING([for gcc -pipe support])
7994 if test -n "$GNU_CC" -a -n "$GNU_CXX" -a -n "$GNU_AS"; then
7995     echo '#include <stdio.h>' > dummy-hello.c
7996     echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
7997     ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
7998     cat dummy-hello.s 2> /dev/null | ${AS_BIN} -o dummy-hello.S - 2>&5
7999     if test $? = 0; then
8000         _res_as_stdin="yes"
8001     else
8002         _res_as_stdin="no"
8003     fi
8004     if test "$_res_as_stdin" = "yes"; then
8005         _SAVE_CFLAGS=$CFLAGS
8006         CFLAGS="$CFLAGS -pipe"
8007         AC_TRY_COMPILE( [ #include <stdio.h> ],
8008             [printf("Hello World\n");],
8009             [_res_gcc_pipe="yes"],
8010             [_res_gcc_pipe="no"] )
8011         CFLAGS=$_SAVE_CFLAGS
8012     fi
8013     if test "$_res_as_stdin" = "yes" -a "$_res_gcc_pipe" = "yes"; then
8014         _res="yes";
8015         CFLAGS="$CFLAGS -pipe"
8016         CXXFLAGS="$CXXFLAGS -pipe"
8017     else
8018         _res="no"
8019     fi
8020     rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
8021     AC_MSG_RESULT([$_res])
8022 else
8023     AC_MSG_RESULT([no])
8026 dnl ========================================================
8027 dnl Profile guided optimization
8028 dnl ========================================================
8029 dnl Test for profiling options
8030 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
8032 dnl Provide a switch to disable PGO even when called via profiledbuild.
8033 MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
8034 [  --disable-profile-guided-optimization
8035                           Don't build with PGO even if called via make profiledbuild],
8036 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
8037 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
8039 AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
8041 _SAVE_CFLAGS="$CFLAGS"
8042 CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
8044 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
8045 AC_TRY_COMPILE([], [return 0;],
8046                [ PROFILE_GEN_CFLAGS="-fprofile-generate"
8047                  result="yes" ], result="no")
8048 AC_MSG_RESULT([$result])
8050 if test $result = "yes"; then
8051   PROFILE_GEN_LDFLAGS="-fprofile-generate"
8052   PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch -freorder-blocks-and-partition"
8053   PROFILE_USE_LDFLAGS="-fprofile-use"
8056 CFLAGS="$_SAVE_CFLAGS"
8058 if test -n "$INTEL_CC"; then
8059   PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
8060   PROFILE_GEN_LDFLAGS=
8061   PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
8062   PROFILE_USE_LDFLAGS=
8065 dnl Sun Studio on Solaris
8066 if test "$SOLARIS_SUNPRO_CC"; then
8067   PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
8068   PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
8069   PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
8070   PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
8073 AC_SUBST(PROFILE_GEN_CFLAGS)
8074 AC_SUBST(PROFILE_GEN_LDFLAGS)
8075 AC_SUBST(PROFILE_USE_CFLAGS)
8076 AC_SUBST(PROFILE_USE_LDFLAGS)
8078 AC_LANG_CPLUSPLUS
8080 dnl ========================================================
8081 dnl Test for -pedantic bustage
8082 dnl ========================================================
8083 MOZ_ARG_DISABLE_BOOL(pedantic,
8084 [  --disable-pedantic      Issue all warnings demanded by strict ANSI C ],
8085 _PEDANTIC= )
8086 if test "$_PEDANTIC"; then
8087     _SAVE_CXXFLAGS=$CXXFLAGS
8088     CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
8089     AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
8090     AC_TRY_COMPILE([$configure_static_assert_macros],
8091                    [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
8092                    result="no", result="yes" )
8093     AC_MSG_RESULT([$result])
8094     CXXFLAGS="$_SAVE_CXXFLAGS"
8096     case "$result" in
8097     no)
8098         _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
8099         _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
8100         ;;
8101     yes)
8102         AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic.  Reconfigure using --disable-pedantic. ])
8103         ;;
8104     esac
8107 dnl ========================================================
8108 dnl Test for correct temporary object destruction order
8109 dnl ========================================================
8110 dnl We want to make sure the compiler follows the C++ spec here as 
8111 dnl xpcom and the string classes depend on it (bug 235381).
8112 AC_MSG_CHECKING([for correct temporary object destruction order])
8113 AC_TRY_RUN([ class A {
8114              public:  A(int& x) : mValue(x) {}
8115                       ~A() { mValue--; }
8116                       operator char**() { return 0; }
8117              private:  int& mValue;
8118              };
8119              void func(char **arg) {}
8120              int m=2;
8121              void test() {
8122                   func(A(m));
8123                   if (m==1) m = 0;
8124              }
8125              int main() {
8126                  test();
8127                  return(m);
8128              }
8129              ],
8130      result="yes", result="no", result="maybe")
8131 AC_MSG_RESULT([$result])
8133 if test "$result" = "no"; then
8134     AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
8137 dnl ========================================================
8138 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
8139 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
8140 dnl raw pointers in nsCOMPtr.h.  (VC++ has the same bug.)
8141 dnl ========================================================
8142 _SAVE_CXXFLAGS=$CXXFLAGS
8143 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
8144 AC_CACHE_CHECK(for correct overload resolution with const and templates,
8145     ac_nscap_nonconst_opeq_bug,
8146     [AC_TRY_COMPILE([
8147                       template <class T>
8148                       class Pointer
8149                         {
8150                         public:
8151                           T* myPtr;
8152                         };
8153                       
8154                       template <class T, class U>
8155                       int operator==(const Pointer<T>& rhs, U* lhs)
8156                         {
8157                           return rhs.myPtr == lhs;
8158                         }
8159                       
8160                       template <class T, class U>
8161                       int operator==(const Pointer<T>& rhs, const U* lhs)
8162                         {
8163                           return rhs.myPtr == lhs;
8164                         }
8165                     ],
8166                     [
8167                       Pointer<int> foo;
8168                       const int* bar;
8169                       return foo == bar;
8170                     ],
8171                     ac_nscap_nonconst_opeq_bug="no",
8172                     ac_nscap_nonconst_opeq_bug="yes")])
8173 CXXFLAGS="$_SAVE_CXXFLAGS"
8175 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
8176     AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
8178 fi # SKIP_COMPILER_CHECKS
8180 dnl ========================================================
8181 dnl C++ rtti
8182 dnl Should be smarter and check that the compiler does indeed have rtti
8183 dnl ========================================================
8185 MOZ_ARG_ENABLE_BOOL(cpp-rtti,
8186 [  --enable-cpp-rtti       Enable C++ RTTI ],
8187 [ _MOZ_USE_RTTI=1 ],
8188 [ _MOZ_USE_RTTI= ])
8190 if test "$_MOZ_USE_RTTI"; then
8191    _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
8192 else
8193    _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
8196 AC_SUBST(_MOZ_RTTI_FLAGS_ON)
8198 dnl ========================================================
8199 dnl C++ exceptions (g++/VC/irix6/Sun only - for now)
8200 dnl Should be smarter and check that the compiler does indeed have exceptions
8201 dnl ========================================================
8202 MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
8203 [  --enable-cpp-exceptions Enable C++ exceptions ],
8204 [ _MOZ_CPP_EXCEPTIONS=1 ],
8205 [ _MOZ_CPP_EXCEPTIONS= ])
8207 if test "$_MOZ_CPP_EXCEPTIONS"; then
8208     _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_ON
8209     AC_DEFINE(MOZ_CPP_EXCEPTIONS)
8210 else
8211     _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_OFF
8214 AC_SUBST(_MOZ_EXCEPTIONS_FLAGS_ON)
8216 # Irix & OSF native compilers do not like exception declarations 
8217 # when exceptions are disabled
8218 if test -n "$MIPSPRO_CXX" -o -n "$COMPAQ_CXX" -o -n "$VACPP"; then
8219     AC_DEFINE(CPP_THROW_NEW, [])
8220 else
8221     AC_DEFINE(CPP_THROW_NEW, [throw()])
8223 AC_LANG_C
8225 dnl ========================================================
8226 dnl =
8227 dnl = Build depencency options
8228 dnl =
8229 dnl ========================================================
8230 MOZ_ARG_HEADER(Build dependencies)
8232 dnl ========================================================
8233 dnl = Do not auto generate dependency info
8234 dnl ========================================================
8235 MOZ_AUTO_DEPS=1
8236 MOZ_ARG_DISABLE_BOOL(auto-deps,
8237 [  --disable-auto-deps     Do not automatically generate dependency info],
8238     MOZ_AUTO_DEPS=,
8239     MOZ_AUTO_DEPS=1)
8241 if test -n "$MOZ_AUTO_DEPS"; then
8242 dnl ========================================================
8243 dnl = Use mkdepend instead of $CC -MD for dependency generation
8244 dnl ========================================================
8245 _cpp_md_flag=
8246 MOZ_ARG_DISABLE_BOOL(md,
8247 [  --disable-md            Do not use compiler-based dependencies ],
8248   [_cpp_md_flag=],
8249   [_cpp_md_flag=1],
8250   [dnl Default is to turn on -MD if using GNU-compatible compilers
8251    if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
8252      _cpp_md_flag=1
8253    fi
8254   dnl Default is to use -xM if using Sun Studio on Solaris
8255    if test "$SOLARIS_SUNPRO_CC"; then
8256      _cpp_md_flag=1
8257    fi])
8258 if test "$_cpp_md_flag"; then
8259   COMPILER_DEPEND=1
8260   if test "$OS_ARCH" = "OpenVMS"; then
8261     _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(basename $(@F)).pp))'
8262   else
8263     _DEPEND_CFLAGS='$(filter-out %/.pp,-MD -MF $(MDDEPDIR)/$(basename $(@F)).pp)'
8264   fi
8265   dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
8266   if test "$SOLARIS_SUNPRO_CC"; then
8267     _DEPEND_CFLAGS=
8268   fi
8269 else
8270   COMPILER_DEPEND=
8271   dnl Don't override this for MSVC
8272   if test -z "$_WIN32_MSVC"; then
8273     _USE_CPP_INCLUDE_FLAG=
8274     _DEFINES_CFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
8275     _DEFINES_CXXFLAGS='$(ACDEFINES) -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT'
8276   else
8277     echo '#include <stdio.h>' > dummy-hello.c
8278     changequote(,)
8279     CL_INCLUDES_PREFIX=`"${CC}" -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/^\([^:]*:[^:]*:\).*stdio.h$/\1/p'`
8280     changequote([,])
8281     if test -z "$CL_INCLUDES_PREFIX"; then
8282         AC_MSG_ERROR([Cannot find cl -showIncludes prefix.])
8283     fi
8284     AC_SUBST(CL_INCLUDES_PREFIX)
8285     rm -f dummy-hello.c
8286     _topsrcdirwin=`cd \`dirname $0\`; pwd -W`
8287     dnl cl.py provides dependency generation for MSVC
8288     CC_WRAPPER="$PYTHON -O $_topsrcdirwin/build/cl.py"
8289     CXX_WRAPPER="$PYTHON -O $_topsrcdirwin/build/cl.py"
8290     COMPILER_DEPEND=1
8291   fi
8293 fi # MOZ_AUTO_DEPS
8294 MDDEPDIR='.deps'
8295 AC_SUBST(MOZ_AUTO_DEPS)
8296 AC_SUBST(COMPILER_DEPEND)
8297 AC_SUBST(MDDEPDIR)
8298 AC_SUBST(CC_WRAPPER)
8299 AC_SUBST(CXX_WRAPPER)
8302 dnl ========================================================
8303 dnl =
8304 dnl = Static Build Options
8305 dnl =
8306 dnl ========================================================
8307 MOZ_ARG_HEADER(Static build options)
8309 MOZ_ARG_ENABLE_BOOL(static,
8310 [  --enable-static         Enable building of internal static libs],
8311     BUILD_STATIC_LIBS=1,
8312     BUILD_STATIC_LIBS=)
8314 MOZ_ARG_ENABLE_BOOL(libxul,
8315 [  --enable-libxul         Enable building of libxul],
8316     MOZ_ENABLE_LIBXUL=1,
8317     MOZ_ENABLE_LIBXUL=)
8319 # split JS out by default to avoid VS2005 PGO crash (bug 591836).
8320 if test "$OS_ARCH" = "WINNT"; then
8321   ENABLE_SHARED_JS=1
8324 MOZ_ARG_ENABLE_BOOL(shared-js,
8325 [  --enable-shared-js
8326                           Create a shared JavaScript library.],
8327     ENABLE_SHARED_JS=1,
8328     ENABLE_SHARED_JS=)
8330 if test -z "$MOZ_ENABLE_LIBXUL"; then
8331   dnl --disable-libxul implies shared js
8332   ENABLE_SHARED_JS=1
8335 if test -n "$ENABLE_SHARED_JS"; then
8336   JS_SHARED_LIBRARY=1
8337   MOZ_JS_LIBS=$MOZ_JS_SHARED_LIBS
8338 else
8339   MOZ_JS_LIBS=$MOZ_JS_STATIC_LIBS
8340   AC_DEFINE(MOZ_STATIC_JS)
8342 AC_SUBST(JS_SHARED_LIBRARY)
8344 if test -n "$MOZ_STATIC_BUILD_UNSUPPORTED" -a -n "$BUILD_STATIC_LIBS"; then
8345         AC_MSG_ERROR([--enable-static is not supported for building $MOZ_APP_NAME. You probably want --enable-libxul.])
8348 if test -n "$MOZ_ENABLE_LIBXUL" -a -n "$BUILD_STATIC_LIBS"; then
8349         AC_MSG_ERROR([--enable-libxul is not compatible with --enable-static])
8352 if test -n "$MOZ_IPC" -a -z "$MOZ_ENABLE_LIBXUL"; then
8353     AC_MSG_ERROR([--enable-ipc requires --enable-libxul])
8356 if test -z "$MOZ_ENABLE_LIBXUL" -a -n "$MOZ_OMNIJAR"; then
8357     AC_MSG_ERROR([Omnijar packaging is incompatible with --disable-libxul. Please either --enable-libxul or --enable-chrome-format=jar|flat|symlink]);
8360 AC_SUBST(LIBXUL_LIBS)
8362 if test -n "$MOZ_ENABLE_LIBXUL"; then
8363     XPCOM_LIBS="$LIBXUL_LIBS"
8364     AC_DEFINE(MOZ_ENABLE_LIBXUL)
8365 else
8366     if test -n "$BUILD_STATIC_LIBS"; then
8367         AC_DEFINE(MOZ_STATIC_BUILD)
8368     fi
8369     XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS"
8372 dnl ========================================================
8373 dnl =
8374 dnl = Standalone module options
8375 dnl = 
8376 dnl ========================================================
8377 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
8379 dnl Check for GLib and libIDL.
8380 dnl ========================================================
8381 SKIP_IDL_CHECK="no"
8383 if test -z "$COMPILE_ENVIRONMENT"; then
8384     SKIP_IDL_CHECK="yes"
8387 dnl = Allow users to disable libIDL checking for standalone modules
8388 MOZ_ARG_WITHOUT_BOOL(libIDL,
8389 [  --without-libIDL        Skip check for libIDL (standalone modules only)],
8390         SKIP_IDL_CHECK="yes")
8392 if test -z "$CROSS_COMPILE"; then
8393     if test -z "$HOST_LIBIDL_CONFIG"; then
8394         HOST_LIBIDL_CONFIG="$LIBIDL_CONFIG"
8395     fi
8396     if test -z "$HOST_LIBIDL_PREFIX"; then
8397         HOST_LIBIDL_PREFIX="$LIBIDL_PREFIX"
8398     fi
8401 if test "$SKIP_IDL_CHECK" = "no"
8402 then
8403     _LIBIDL_FOUND=
8404     case "$host" in
8405     *-mingw*|*-cygwin*|*-msvc*|*-mks*)
8406         if test -n "$GLIB_PREFIX"; then
8407             _GLIB_PREFIX_DIR=`cd $GLIB_PREFIX && pwd -W`
8408             if test "$?" = "0"; then
8409                 if test `echo ${PATH}: | grep -ic "$_GLIB_PREFIX_DIR/bin:"` = 0; then
8410                     AC_MSG_ERROR([GLIB_PREFIX must be in your \$PATH.])
8411                 fi
8412                 _GLIB_PREFIX_DIR=`$CYGPATH_W $_GLIB_PREFIX_DIR | $CYGPATH_S`
8413             else
8414                  AC_MSG_ERROR([GLIB_PREFIX is set but "${GLIB_PREFIX}" is not a directory.])
8415             fi
8416         else
8417             _GLIB_PREFIX_DIR=$MOZ_TOOLS_DIR
8418         fi
8419         if test ! -f "${_GLIB_PREFIX_DIR}/include/glib.h"; then
8420             AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/include/glib.h .])
8421         fi
8422         GLIB_CFLAGS="-I${_GLIB_PREFIX_DIR}/include"
8423         if test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"; then
8424             GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2_s.lib"
8425         elif test -f "${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"; then
8426             GLIB_LIBS="${_GLIB_PREFIX_DIR}/lib/glib-1.2.lib"
8427         else
8428             AC_MSG_ERROR([Cannot find $_GLIB_PREFIX_DIR/lib/glib-1.2.lib or $_GLIB_PREFIX_DIR/lib/glib-1.2_s.lib])
8429         fi
8431         if test -n "$HOST_LIBIDL_PREFIX"; then
8432             _LIBIDL_PREFIX_DIR=`cd $HOST_LIBIDL_PREFIX && pwd -W`
8433             if test "$?" = "0"; then
8434                 if test `echo ${PATH}: | grep -ic "$_LIBIDL_PREFIX_DIR/bin:"` = 0; then
8435                     AC_MSG_ERROR([LIBIDL_PREFIX must be in your \$PATH.])
8436                 fi
8437                 _LIBIDL_PREFIX_DIR=`$CYGPATH_W $_LIBIDL_PREFIX_DIR | $CYGPATH_S`
8438             else
8439                 AC_MSG_ERROR([LIBIDL_PREFIX is set but "${LIBIDL_PREFIX}" is not a directory.])
8440             fi
8441         else
8442             _LIBIDL_PREFIX_DIR=$MOZ_TOOLS_DIR
8443         fi        
8444         if test ! -f "${_LIBIDL_PREFIX_DIR}/include/libIDL/IDL.h"; then
8445             AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/include/libIDL/IDL.h .])
8446         fi
8447         HOST_LIBIDL_CFLAGS="-I${_LIBIDL_PREFIX_DIR}/include ${GLIB_CFLAGS}"
8448         if test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"; then
8449             HOST_LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6_s.lib"
8450             STATIC_LIBIDL=1
8451         elif test -f "${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"; then
8452             HOST_LIBIDL_LIBS="${_LIBIDL_PREFIX_DIR}/lib/libidl-0.6.lib"
8453         else
8454             AC_MSG_ERROR([Cannot find $_LIBIDL_PREFIX_DIR/lib/libidl-0.6.lib or $_LIBIDL_PREFIX_DIR/lib/libidl-0.6_s.lib])
8455         fi
8456         HOST_LIBIDL_LIBS="${HOST_LIBIDL_LIBS} ${GLIB_LIBS}"
8457         _LIBIDL_FOUND=1
8458         ;;
8459     esac
8461     if test -z "$_LIBIDL_FOUND"; then
8462         if test "$MACOS_SDK_DIR"; then 
8463             dnl xpidl, and therefore libIDL, is only needed on the build host.
8464             dnl Don't build it against the SDK, as that causes problems.
8465             _MACSAVE_CFLAGS="$CFLAGS"
8466             _MACSAVE_LIBS="$LIBS"
8467             _MACSAVE_LDFLAGS="$LDFLAGS"
8468             _MACSAVE_NEXT_ROOT="$NEXT_ROOT"
8469           changequote(,)
8470           CFLAGS=`echo $CFLAGS|sed -E -e "s%((-I|-isystem )${MACOS_SDK_DIR}/usr/(include|lib/gcc)[^ ]*)|-F${MACOS_SDK_DIR}(/System)?/Library/Frameworks[^ ]*|-nostdinc[^ ]*|-isysroot ${MACOS_SDK_DIR}%%g"`
8471           LIBS=`echo $LIBS|sed -e "s?-L${MACOS_SDK_DIR}/usr/lib[^ ]*??g"`
8472           LDFLAGS=`echo $LDFLAGS|sed -e "s?-Wl,-syslibroot,${MACOS_SDK_DIR}??g"`
8473           changequote([,])
8474           unset NEXT_ROOT
8475         fi
8477         PKG_CHECK_MODULES(HOST_LIBIDL, libIDL-2.0 >= 0.8.0 glib-2.0 gobject-2.0, _LIBIDL_FOUND=1,_LIBIDL_FOUND=)
8478     fi
8480     dnl if no gtk/libIDL1 or gtk2/libIDL2 combination was found, fall back
8481     dnl to either libIDL1 or libIDL2.
8482     if test -z "$_LIBIDL_FOUND"; then
8483         AM_PATH_LIBIDL($LIBIDL_VERSION,_LIBIDL_FOUND=1)
8484         if test -z "$_LIBIDL_FOUND"; then
8485             PKG_CHECK_MODULES(HOST_LIBIDL, libIDL-2.0 >= 0.8.0,_LIBIDL_FOUND=1)
8486         fi
8487     fi
8488     dnl
8489     dnl If we don't have a libIDL config program & not cross-compiling, 
8490     dnl     look for orbit-config instead.
8491     dnl
8492     if test -z "$_LIBIDL_FOUND" -a -z "$CROSS_COMPILE"; then
8493         MOZ_PATH_PROGS(ORBIT_CONFIG, $ORBIT_CONFIG orbit-config)
8494         if test -n "$ORBIT_CONFIG"; then
8495             AC_MSG_CHECKING([for ORBit libIDL usability])
8496                 _ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags`
8497             _ORBIT_LIBS=`${ORBIT_CONFIG} client --libs`
8498             _ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}`
8499             _ORBIT_LIB_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-L/); } }' -- ${_ORBIT_LIBS}`
8500             HOST_LIBIDL_CFLAGS="$_ORBIT_INC_PATH"
8501             HOST_LIBIDL_LIBS="$_ORBIT_LIB_PATH -lIDL -lglib"
8502             HOST_LIBIDL_CONFIG=
8503             _SAVE_CFLAGS="$CFLAGS"
8504             _SAVE_LIBS="$LIBS"
8505             CFLAGS="$HOST_LIBIDL_CFLAGS $CFLAGS"
8506             LIBS="$HOST_LIBIDL_LIBS $LIBS"
8507             AC_TRY_RUN([
8508 #include <stdlib.h>
8509 #include <libIDL/IDL.h>
8510 int main() {
8511   char *s;
8512   s=strdup(IDL_get_libver_string());
8513   if(s==NULL) {
8514     exit(1);
8515   }
8516   exit(0);
8518             ], [_LIBIDL_FOUND=1
8519                 result="yes"],
8520                [HOST_LIBIDL_CFLAGS=
8521                 HOST_LIBIDL_LIBS=
8522                 result="no"],
8523                [_LIBIDL_FOUND=1
8524                 result="maybe"] )
8525             AC_MSG_RESULT($result)
8526             CFLAGS="$_SAVE_CFLAGS"
8527             LIBS="$_SAVE_LIBS"
8528         fi
8529     fi
8530     if test -z "$_LIBIDL_FOUND"; then
8531         AC_MSG_ERROR([libIDL not found.
8532         libIDL $LIBIDL_VERSION or higher is required.])
8533     fi
8534     if test "$MACOS_SDK_DIR"; then
8535       CFLAGS="$_MACSAVE_CFLAGS"
8536       LIBS="$_MACSAVE_LIBS"
8537       LDFLAGS="$_MACSAVE_LDFLAGS"
8538       if test -n "$_MACSAVE_NEXT_ROOT" ; then
8539         export NEXT_ROOT="$_MACSAVE_NEXT_ROOT"
8540       fi
8541     fi
8544 if test -n "$CROSS_COMPILE"; then
8545     case "$target" in
8546     *-mingw*|*-cygwin*|*-msvc*|*-mks*)
8547         if test -n "$GLIB_PREFIX"; then
8548             GLIB_CFLAGS="-I${GLIB_PREFIX}/include"
8549             if test -f "${GLIB_PREFIX}/lib/glib-1.2_s.lib"; then
8550                 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2_s.lib"
8551             elif test -f "${GLIB_PREFIX}/lib/glib-1.2.lib"; then
8552                 GLIB_LIBS="${GLIB_PREFIX}/lib/glib-1.2.lib"
8553             else
8554                 AC_MSG_ERROR([Cannot find $GLIB_PREFIX/lib/glib-1.2.lib or $GLIB_PREFIX/lib/glib-1.2_s.lib])
8555             fi
8556         fi
8558         if test -n "$LIBIDL_PREFIX"; then
8559             LIBIDL_CFLAGS="-I${LIBIDL_PREFIX}/include ${GLIB_CFLAGS}"
8560             if test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"; then
8561                 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6_s.lib"
8562                 STATIC_LIBIDL=1
8563             elif test -f "${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"; then
8564                 LIBIDL_LIBS="${LIBIDL_PREFIX}/lib/libIDL-0.6.lib"
8565             else
8566                 AC_MSG_ERROR([Cannot find $LIBIDL_PREFIX/lib/libIDL-0.6.lib or $LIBIDL_PREFIX/lib/libIDL-0.6_s.lib])
8567             fi
8568         fi
8569         LIBIDL_LIBS="${LIBIDL_LIBS} ${GLIB_LIBS}"
8570         ;;
8571     *)
8572         if test -n "LIBIDL_CONFIG" -a "LIBIDL_CONFIG" != "no"; then
8573             LIBIDL_CFLAGS=`${LIBIDL_CONFIG} --cflags`
8574             LIBIDL_LIBS=`${LIBIDL_CONFIG} --libs`
8575         fi
8576         ;;
8577     esac
8578 else
8579     LIBIDL_CFLAGS="$HOST_LIBIDL_CFLAGS"
8580     LIBIDL_LIBS="$HOST_LIBIDL_LIBS"
8583 if test -z "$SKIP_PATH_CHECKS"; then
8584 if test -z "${GLIB_CFLAGS}" -o -z "${GLIB_LIBS}" ; then
8585     if test "$MOZ_ENABLE_GTK2" -o "$USE_ELF_DYNSTR_GC" ; then
8586         PKG_CHECK_MODULES(GLIB, glib-2.0 >= 1.3.7 gobject-2.0)
8587     else
8588         AM_PATH_GLIB(${GLIB_VERSION})
8589     fi
8593 if test -z "${GLIB_GMODULE_LIBS}" -a -n "${GLIB_CONFIG}"; then
8594     GLIB_GMODULE_LIBS=`$GLIB_CONFIG gmodule --libs`
8597 AC_SUBST(LIBIDL_CFLAGS)
8598 AC_SUBST(LIBIDL_LIBS)
8599 AC_SUBST(STATIC_LIBIDL)
8600 AC_SUBST(GLIB_CFLAGS)
8601 AC_SUBST(GLIB_LIBS)
8602 AC_SUBST(GLIB_GMODULE_LIBS)
8603 AC_SUBST(HOST_LIBIDL_CONFIG)
8604 AC_SUBST(HOST_LIBIDL_CFLAGS)
8605 AC_SUBST(HOST_LIBIDL_LIBS)
8607 dnl ========================================================
8608 dnl Check for cairo
8609 dnl ========================================================
8610 MOZ_CAIRO_CFLAGS='-I$(LIBXUL_DIST)/include/cairo'
8612 MOZ_TREE_CAIRO=1
8613 MOZ_ARG_ENABLE_BOOL(system-cairo,
8614 [  --enable-system-cairo   Use system cairo (located with pkgconfig)],
8615 MOZ_TREE_CAIRO=,
8616 MOZ_TREE_CAIRO=1 )
8618 MOZ_TREE_PIXMAN=1
8619 MOZ_ARG_ENABLE_BOOL(system-pixman,
8620 [ --enable-system-pixman Use system pixman (located with pkgconfig)],
8621 MOZ_TREE_PIXMAN=,
8622 MOZ_TREE_PIXMAN=1 )
8624 # Check for headers defining standard int types.
8625 AC_CHECK_HEADERS(stdint.h inttypes.h sys/int_types.h)
8627 if test "$MOZ_TREE_CAIRO"; then
8628     AC_DEFINE(MOZ_TREE_CAIRO)
8630     # For now we assume that we will have a uint64_t available through
8631     # one of the above headers or mozstdint.h.
8632     AC_DEFINE(HAVE_UINT64_T)
8634     # Define macros for cairo-features.h
8635     if test "$MOZ_X11"; then
8636         XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1"
8637         XLIB_XRENDER_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_XRENDER_SURFACE 1"
8638         PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1"
8639         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8640         MOZ_ENABLE_CAIRO_FT=1
8641         CAIRO_FT_CFLAGS="$FT2_CFLAGS"
8642     fi
8643     if test "$MOZ_WIDGET_TOOLKIT" = "qt"; then
8644         QT_SURFACE_FEATURE="#define CAIRO_HAS_QT_SURFACE 1"
8645     fi
8646     if test "$MOZ_WIDGET_TOOLKIT" = "cocoa"; then
8647         QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1"
8648         QUARTZ_IMAGE_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE 1"
8649         QUARTZ_FONT_FEATURE="#define CAIRO_HAS_QUARTZ_FONT 1"
8650     fi
8651     if test "$MOZ_WIDGET_TOOLKIT" = "windows"; then
8652         WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1"
8653         if test -z "$WINCE"; then
8654             WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1"
8655             if test "$MOZ_WINSDK_TARGETVER" -ge "06010000"; then
8656                 WIN32_DWRITE_FONT_FEATURE="#define CAIRO_HAS_DWRITE_FONT 1"
8657                 WIN32_D2D_SURFACE_FEATURE="#define CAIRO_HAS_D2D_SURFACE 1"
8658                 MOZ_ENABLE_D2D_SURFACE=1
8659                 MOZ_ENABLE_DWRITE_FONT=1
8660             else
8661                 WIN32_DWRITE_FONT_FEATURE=
8662                 WIN32_D2D_SURFACE_FEATURE=
8663             fi
8664         else
8665             WIN32_FONT_FEATURE=
8666             WIN32_DWRITE_FONT_FEATURE=
8667             WIN32_D2D_SURFACE_FEATURE=
8668         fi
8670         AC_CHECK_HEADER(d3d9.h, MOZ_ENABLE_D3D9_LAYER=1)
8672         dnl D3D10 Layers depend on D2D Surfaces.
8673         if test -n "$WIN32_D2D_SURFACE_FEATURE"; then
8674           AC_CHECK_HEADER(d3d10.h, MOZ_ENABLE_D3D10_LAYER=1)
8675         fi
8677     fi
8678     if test "$MOZ_WIDGET_TOOLKIT" = "os2"; then
8679         OS2_SURFACE_FEATURE="#define CAIRO_HAS_OS2_SURFACE 1"
8680         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8681         MOZ_ENABLE_CAIRO_FT=1
8682         CAIRO_FT_CFLAGS="-I${MZFTCFGFT2}/include"
8683         CAIRO_FT_LIBS="-L${MZFTCFGFT2}/lib -lmozft -lmzfntcfg"
8684     fi
8685     if test "$MOZ_WIDGET_TOOLKIT" = "beos"; then
8686         PKG_CHECK_MODULES(CAIRO_FT, fontconfig freetype2)
8687         BEOS_SURFACE_FEATURE="#define CAIRO_HAS_BEOS_SURFACE 1"
8688         FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1"
8689         MOZ_ENABLE_CAIRO_FT=1
8690     fi
8691     if test "$USE_FC_FREETYPE"; then
8692         FC_FONT_FEATURE="#define CAIRO_HAS_FC_FONT 1"
8693     fi
8694     AC_SUBST(MOZ_ENABLE_CAIRO_FT)
8695     AC_SUBST(MOZ_ENABLE_DWRITE_FONT)
8696     AC_SUBST(MOZ_ENABLE_D2D_SURFACE)
8697     AC_SUBST(MOZ_ENABLE_D3D9_LAYER)
8698     AC_SUBST(MOZ_ENABLE_D3D10_LAYER)
8699     AC_SUBST(CAIRO_FT_CFLAGS)
8700     AC_SUBST(HAS_OGLES)
8702     if test "$MOZ_DEBUG"; then
8703       SANITY_CHECKING_FEATURE="#define CAIRO_DO_SANITY_CHECKING 1"
8704     else
8705       SANITY_CHECKING_FEATURE="#undef CAIRO_DO_SANITY_CHECKING"
8706     fi
8708     PNG_FUNCTIONS_FEATURE="#define CAIRO_HAS_PNG_FUNCTIONS 1"
8710     AC_SUBST(PS_SURFACE_FEATURE)
8711     AC_SUBST(PDF_SURFACE_FEATURE)
8712     AC_SUBST(SVG_SURFACE_FEATURE)
8713     AC_SUBST(XLIB_SURFACE_FEATURE)
8714     AC_SUBST(XLIB_XRENDER_SURFACE_FEATURE)
8715     AC_SUBST(QUARTZ_SURFACE_FEATURE)
8716     AC_SUBST(QUARTZ_IMAGE_SURFACE_FEATURE)
8717     AC_SUBST(XCB_SURFACE_FEATURE)
8718     AC_SUBST(WIN32_SURFACE_FEATURE)
8719     AC_SUBST(OS2_SURFACE_FEATURE)
8720     AC_SUBST(BEOS_SURFACE_FEATURE)
8721     AC_SUBST(DIRECTFB_SURFACE_FEATURE)
8722     AC_SUBST(FT_FONT_FEATURE)
8723     AC_SUBST(FC_FONT_FEATURE)
8724     AC_SUBST(WIN32_FONT_FEATURE)
8725     AC_SUBST(WIN32_DWRITE_FONT_FEATURE)
8726     AC_SUBST(WIN32_D2D_SURFACE_FEATURE)
8727     AC_SUBST(QUARTZ_FONT_FEATURE)
8728     AC_SUBST(PNG_FUNCTIONS_FEATURE)
8729     AC_SUBST(QT_SURFACE_FEATURE)
8731     MOZ_CAIRO_LIBS='$(call EXPAND_LIBNAME_PATH,mozcairo,$(DEPTH)/gfx/cairo/cairo/src)'" $CAIRO_FT_LIBS"
8733     if test "$MOZ_TREE_PIXMAN"; then
8734         AC_DEFINE(MOZ_TREE_PIXMAN)
8735         MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS"' $(call EXPAND_LIBNAME_PATH,mozlibpixman,$(DEPTH)/gfx/cairo/libpixman/src)'
8736     else
8737         PKG_CHECK_MODULES(PIXMAN, pixman-1 >= 0.19.2)
8738         MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $PIXMAN_CFLAGS"
8739         MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $PIXMAN_LIBS"
8740     fi
8742     if test "$MOZ_X11"; then
8743         MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS -lXrender -lfreetype -lfontconfig"
8744     fi
8746     CAIRO_FEATURES_H=gfx/cairo/cairo/src/cairo-features.h
8747     mv -f $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig 2> /dev/null
8749 else
8750    PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_VERSION pixman-1 freetype2 fontconfig)
8751    MOZ_CAIRO_CFLAGS=$CAIRO_CFLAGS
8752    MOZ_CAIRO_LIBS=$CAIRO_LIBS
8753    if test "$MOZ_X11"; then
8754         PKG_CHECK_MODULES(CAIRO_XRENDER, cairo-xlib-xrender >= $CAIRO_VERSION)
8755         MOZ_CAIRO_LIBS="$MOZ_CAIRO_LIBS $XLDFLAGS $CAIRO_XRENDER_LIBS"
8756         MOZ_CAIRO_CFLAGS="$MOZ_CAIRO_CFLAGS $CAIRO_XRENDER_CFLAGS"
8757    fi
8760 AC_SUBST(MOZ_TREE_CAIRO)
8761 AC_SUBST(MOZ_CAIRO_CFLAGS)
8762 AC_SUBST(MOZ_CAIRO_LIBS)
8763 AC_SUBST(MOZ_TREE_PIXMAN)
8765 dnl ========================================================
8766 dnl qcms
8767 dnl ========================================================
8769 QCMS_LIBS='$(call EXPAND_LIBNAME_PATH,mozqcms,$(DEPTH)/gfx/qcms)'
8770 AC_SUBST(QCMS_LIBS)
8772 dnl ========================================================
8773 dnl HarfBuzz
8774 dnl ========================================================
8775 MOZ_HARFBUZZ_LIBS='$(DEPTH)/gfx/harfbuzz/src/$(LIB_PREFIX)mozharfbuzz.$(LIB_SUFFIX)'
8776 AC_SUBST(MOZ_HARFBUZZ_LIBS)
8778 dnl ========================================================
8779 dnl OTS
8780 dnl ========================================================
8781 MOZ_OTS_LIBS='$(DEPTH)/gfx/ots/src/$(LIB_PREFIX)mozots.$(LIB_SUFFIX)'
8782 AC_SUBST(MOZ_OTS_LIBS)
8784 dnl ========================================================
8785 dnl disable xul
8786 dnl ========================================================
8787 MOZ_ARG_DISABLE_BOOL(xul,
8788 [  --disable-xul           Disable XUL],
8789     MOZ_XUL= )
8790 if test "$MOZ_XUL"; then
8791   AC_DEFINE(MOZ_XUL)
8792 else
8793   dnl remove extensions that require XUL
8794   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
8797 AC_SUBST(MOZ_XUL)
8799 dnl ========================================================
8800 dnl disable profile locking
8801 dnl   do no use this in applications that can have more than
8802 dnl   one process accessing the profile directory.
8803 dnl ========================================================
8804 MOZ_ARG_DISABLE_BOOL(profilelocking,
8805 [  --disable-profilelocking
8806                           Disable profile locking],
8807     MOZ_PROFILELOCKING=,
8808     MOZ_PROFILELOCKING=1 )
8809 if test "$MOZ_PROFILELOCKING"; then
8810   AC_DEFINE(MOZ_PROFILELOCKING)
8813 dnl ========================================================
8814 dnl disable rdf services
8815 dnl ========================================================
8816 MOZ_ARG_DISABLE_BOOL(rdf,
8817 [  --disable-rdf           Disable RDF],
8818     MOZ_RDF= )
8819 if test "$MOZ_RDF"; then
8820   AC_DEFINE(MOZ_RDF)
8823 AC_SUBST(MOZ_RDF)
8825 dnl ========================================================
8826 dnl necko configuration options
8827 dnl ========================================================
8830 dnl option to disable various necko protocols
8832 MOZ_ARG_ENABLE_STRING(necko-protocols,
8833 [  --enable-necko-protocols[={http,ftp,default,all,none}]
8834                           Enable/disable specific protocol handlers],
8835 [ for option in `echo $enableval | sed 's/,/ /g'`; do
8836     if test "$option" = "yes" -o "$option" = "all"; then
8837         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8838     elif test "$option" = "no" -o "$option" = "none"; then
8839         NECKO_PROTOCOLS=""
8840     elif test "$option" = "default"; then
8841         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $NECKO_PROTOCOLS_DEFAULT"
8842     elif test `echo "$option" | grep -c \^-` != 0; then
8843         option=`echo $option | sed 's/^-//'`
8844         NECKO_PROTOCOLS=`echo "$NECKO_PROTOCOLS" | sed "s/ ${option}//"`
8845     else
8846         NECKO_PROTOCOLS="$NECKO_PROTOCOLS $option"
8847     fi
8848 done],
8849     NECKO_PROTOCOLS="$NECKO_PROTOCOLS_DEFAULT")
8850 dnl Remove dupes
8851 NECKO_PROTOCOLS=`${PERL} ${srcdir}/build/unix/uniq.pl ${NECKO_PROTOCOLS}`
8852 AC_SUBST(NECKO_PROTOCOLS)
8853 for p in $NECKO_PROTOCOLS; do
8854     AC_DEFINE_UNQUOTED(NECKO_PROTOCOL_$p)
8855 done
8858 dnl option to disable necko's disk cache
8860 MOZ_ARG_DISABLE_BOOL(necko-disk-cache,
8861 [  --disable-necko-disk-cache
8862                           Disable necko disk cache],
8863     NECKO_DISK_CACHE=,
8864     NECKO_DISK_CACHE=1)
8865 AC_SUBST(NECKO_DISK_CACHE)
8866 if test "$NECKO_DISK_CACHE"; then
8867     AC_DEFINE(NECKO_DISK_CACHE)
8871 dnl option to disable necko's wifi scanner
8873 MOZ_ARG_DISABLE_BOOL(necko-wifi,
8874 [  --disable-necko-wifi    Disable necko wifi scanner],
8875     NECKO_WIFI=,
8876     NECKO_WIFI=1)
8878 if test "$OS_ARCH" = "OS2"; then
8879   dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566
8880   NECKO_WIFI=
8882 if test "$NECKO_WIFI" -a \
8883         "$OS_ARCH" != "Linux" -a \
8884         "$OS_ARCH" != "Darwin" -a \
8885         "$OS_ARCH" != "SunOS" -a \
8886         "$OS_ARCH" != "WINNT" -a \
8887         "$OS_ARCH" != "WINCE"; then
8888   AC_MSG_ERROR([Necko WiFi scanning not supported on your platform, use --disable-necko-wifi])
8891 if test -z "$SKIP_LIBRARY_CHECKS" -a "$NECKO_WIFI" -a "$OS_ARCH" = "Linux"
8892 then
8893   AC_CHECK_HEADER([iwlib.h])
8894   if test "$ac_cv_header_iwlib_h" != "yes"; then
8895     AC_MSG_ERROR([Can't find header iwlib.h for Necko WiFi scanning (might be in package libiw-dev (Ubuntu) or wireless-tools-devel (Fedora)); use --disable-necko-wifi to disable])
8896   fi
8899 if test "$NECKO_WIFI"; then
8900   AC_DEFINE(NECKO_WIFI)
8902 AC_SUBST(NECKO_WIFI)
8905 dnl option to disable cookies
8907 MOZ_ARG_DISABLE_BOOL(cookies,
8908 [  --disable-cookies       Disable cookie support],
8909     NECKO_COOKIES=,
8910     NECKO_COOKIES=1)
8911 AC_SUBST(NECKO_COOKIES)
8912 if test "$NECKO_COOKIES"; then
8913     AC_DEFINE(NECKO_COOKIES)
8917 dnl Build jsctypes on the platforms we can, unless it's explicitly disabled.
8919 MOZ_ARG_DISABLE_BOOL(ctypes,
8920 [  --disable-ctypes        Disable js-ctypes],
8921     BUILD_CTYPES=,
8922     BUILD_CTYPES=1)
8923 AC_SUBST(BUILD_CTYPES)
8924 if test "$BUILD_CTYPES"; then
8925   if test "$OS_ARCH" = "WINCE" -a `echo $OS_TEST | grep -ic arm` = 1; then
8926     # Disable ctypes for arm/wince.
8927     BUILD_CTYPES=
8928   else
8929     AC_DEFINE(BUILD_CTYPES)
8930   fi
8933 dnl NECKO_ configuration options are not global
8934 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_"
8936 dnl Only build Mork if it's required
8937 AC_SUBST(MOZ_MORK)
8938 if test "$MOZ_MORK"; then
8939   AC_DEFINE(MOZ_MORK)
8942 dnl Build the lightweight Mork reader if required
8943 AC_SUBST(MOZ_MORKREADER)
8944 if test "$MOZ_MORKREADER"; then
8945   AC_DEFINE(MOZ_MORKREADER)
8948 dnl Build Places if required
8949 if test "$MOZ_PLACES"; then
8950   AC_DEFINE(MOZ_PLACES)
8953 dnl Build Sync Services if required
8954 AC_SUBST(MOZ_SERVICES_SYNC)
8955 if test -n "$MOZ_SERVICES_SYNC"; then
8956   AC_DEFINE(MOZ_SERVICES_SYNC)
8959 dnl ========================================================
8960 if test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
8961     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
8964 if test "$MOZ_APP_COMPONENT_INCLUDE"; then
8965   AC_DEFINE_UNQUOTED(MOZ_APP_COMPONENT_INCLUDE, "$MOZ_APP_COMPONENT_INCLUDE")
8968 dnl ========================================================
8969 dnl =
8970 dnl = Maintainer debug option (no --enable equivalent)
8971 dnl =
8972 dnl ========================================================
8974 AC_SUBST(AR)
8975 AC_SUBST(AR_FLAGS)
8976 AC_SUBST(AR_LIST)
8977 AC_SUBST(AR_EXTRACT)
8978 AC_SUBST(AR_DELETE)
8979 AC_SUBST(AS)
8980 AC_SUBST(ASFLAGS)
8981 AC_SUBST(AS_DASH_C_FLAG)
8982 AC_SUBST(LD)
8983 AC_SUBST(RC)
8984 AC_SUBST(RCFLAGS)
8985 AC_SUBST(WINDRES)
8986 AC_SUBST(IMPLIB)
8987 AC_SUBST(FILTER)
8988 AC_SUBST(BIN_FLAGS)
8989 AC_SUBST(NS_USE_NATIVE)
8990 AC_SUBST(MOZ_WIDGET_TOOLKIT)
8991 AC_SUBST(MOZ_UPDATE_XTERM)
8992 AC_SUBST(MINIMO)
8993 AC_SUBST(MOZ_PLATFORM_MAEMO)
8994 AC_SUBST(MOZ_AUTH_EXTENSION)
8995 AC_SUBST(MOZ_MATHML)
8996 AC_SUBST(MOZ_PERMISSIONS)
8997 AC_SUBST(MOZ_XTF)
8998 AC_SUBST(MOZ_PREF_EXTENSIONS)
8999 AC_SUBST(MOZ_SVG)
9000 AC_SUBST(MOZ_SMIL)
9001 AC_SUBST(MOZ_XSLT_STANDALONE)
9002 AC_SUBST(MOZ_JS_LIBS)
9003 AC_SUBST(MOZ_PSM)
9004 AC_SUBST(MOZ_DEBUG)
9005 AC_SUBST(MOZ_DEBUG_SYMBOLS)
9006 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
9007 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
9008 AC_SUBST(MOZ_DEBUG_FLAGS)
9009 AC_SUBST(MOZ_DEBUG_LDFLAGS)
9010 AC_SUBST(WARNINGS_AS_ERRORS)
9011 AC_SUBST(MOZ_EXTENSIONS)
9012 AC_SUBST(MOZ_JSDEBUGGER)
9013 AC_SUBST(MOZ_PLUGINS)
9014 AC_SUBST(MOZ_LOG_REFCNT)
9015 AC_SUBST(MOZ_LEAKY)
9016 AC_SUBST(MOZ_JPROF)
9017 AC_SUBST(MOZ_SHARK)
9018 AC_SUBST(MOZ_CALLGRIND)
9019 AC_SUBST(MOZ_VTUNE)
9020 AC_SUBST(MOZ_PROFILING)
9021 AC_SUBST(MOZ_JSLOADER)
9022 AC_SUBST(MOZ_USE_NATIVE_UCONV)
9023 AC_SUBST(MOZ_QUANTIFY)
9024 AC_SUBST(LIBICONV)
9025 AC_SUBST(MOZ_PLACES)
9026 AC_SUBST(MOZ_PLACES_BOOKMARKS)
9027 AC_SUBST(MOZ_STORAGE)
9028 AC_SUBST(MOZ_TOOLKIT_SEARCH)
9029 AC_SUBST(MOZ_FEEDS)
9030 AC_SUBST(NS_PRINTING)
9031 AC_SUBST(MOZ_WEBGL)
9032 AC_SUBST(MOZ_HELP_VIEWER)
9034 AC_SUBST(MOZ_JAVAXPCOM)
9035 AC_SUBST(JAVA_INCLUDE_PATH)
9036 AC_SUBST(JAVA)
9037 AC_SUBST(JAVAC)
9038 AC_SUBST(JAR)
9040 AC_SUBST(MOZ_PROFILELOCKING)
9042 AC_SUBST(HAVE_XIE)
9043 AC_SUBST(MOZ_XIE_LIBS)
9045 AC_SUBST(BUILD_STATIC_LIBS)
9046 AC_SUBST(MOZ_ENABLE_LIBXUL)
9047 AC_SUBST(ENABLE_TESTS)
9048 AC_SUBST(IBMBIDI)
9049 AC_SUBST(MOZ_UNIVERSALCHARDET)
9050 AC_SUBST(ACCESSIBILITY)
9051 AC_SUBST(MOZ_VIEW_SOURCE)
9052 AC_SUBST(MOZ_SPELLCHECK)
9053 AC_SUBST(MOZ_USER_DIR)
9054 AC_SUBST(MOZ_CRASHREPORTER)
9055 AC_SUBST(MOZ_UPDATER)
9056 AC_SUBST(MOZ_ANGLE)
9057 AC_SUBST(MOZ_DIRECTX_SDK_PATH)
9059 AC_SUBST(ENABLE_STRIP)
9060 AC_SUBST(PKG_SKIP_STRIP)
9061 AC_SUBST(USE_ELF_DYNSTR_GC)
9062 AC_SUBST(USE_ELF_HACK)
9063 AC_SUBST(INCREMENTAL_LINKER)
9064 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
9065 AC_SUBST(MOZ_JEMALLOC_STANDALONE_GLUE_LDOPTS)
9066 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
9068 AC_SUBST(MOZ_FIX_LINK_PATHS)
9069 AC_SUBST(XPCOM_LIBS)
9070 AC_SUBST(XPCOM_FROZEN_LDOPTS)
9071 AC_SUBST(XPCOM_GLUE_LDOPTS)
9072 AC_SUBST(XPCOM_STANDALONE_GLUE_LDOPTS)
9074 AC_SUBST(USE_DEPENDENT_LIBS)
9076 AC_SUBST(MOZ_BUILD_ROOT)
9077 AC_SUBST(MOZ_OS2_TOOLS)
9079 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
9080 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
9081 AC_SUBST(MOZ_TIMELINE)
9082 AC_SUBST(OGLES_SDK_DIR)
9084 AC_SUBST(MOZ_APP_NAME)
9085 AC_SUBST(MOZ_APP_DISPLAYNAME)
9086 AC_DEFINE_UNQUOTED(MOZ_APP_UA_NAME, "$MOZ_APP_UA_NAME")
9087 AC_SUBST(MOZ_APP_UA_NAME)
9088 AC_DEFINE_UNQUOTED(MOZ_APP_UA_VERSION, "$MOZ_APP_VERSION")
9089 AC_SUBST(MOZ_APP_VERSION)
9090 AC_DEFINE_UNQUOTED(MOZ_UA_FIREFOX_VERSION, "$FIREFOX_VERSION")
9091 AC_SUBST(MOZ_UA_FIREFOX_VERSION)
9092 AC_SUBST(FIREFOX_VERSION)
9093 AC_DEFINE_UNQUOTED(MOZ_UA_BUILDID, "$MOZ_UA_BUILDID")
9094 AC_SUBST(MOZ_UA_BUILDID)
9096 AC_SUBST(MOZ_PKG_SPECIAL)
9098 AC_SUBST(MOZILLA_OFFICIAL)
9100 dnl win32 options
9101 AC_SUBST(MOZ_MAPINFO)
9102 AC_SUBST(MOZ_BROWSE_INFO)
9103 AC_SUBST(MOZ_TOOLS_DIR)
9104 AC_SUBST(CYGWIN_WRAPPER)
9105 AC_SUBST(AS_PERL)
9106 AC_SUBST(WIN32_REDIST_DIR)
9107 AC_SUBST(PYTHON)
9108 AC_SUBST(MAKENSISU)
9110 AC_SUBST(WINCE)
9111 AC_SUBST(WINCE_SDK_DIR)
9112 AC_SUBST(WINCE_WINDOWS_MOBILE)
9114 dnl Echo the CFLAGS to remove extra whitespace.
9115 CFLAGS=`echo \
9116         $_WARNINGS_CFLAGS \
9117         $CFLAGS`
9119 CXXFLAGS=`echo \
9120         $_MOZ_RTTI_FLAGS \
9121         $_MOZ_EXCEPTIONS_FLAGS \
9122         $_WARNINGS_CXXFLAGS \
9123         $CXXFLAGS`
9125 COMPILE_CFLAGS=`echo \
9126     $_DEFINES_CFLAGS \
9127         $_DEPEND_CFLAGS \
9128     $COMPILE_CFLAGS`
9130 COMPILE_CXXFLAGS=`echo \
9131     $_DEFINES_CXXFLAGS \
9132         $_DEPEND_CFLAGS \
9133     $COMPILE_CXXFLAGS`
9135 AC_SUBST(SYSTEM_MAKEDEPEND)
9136 AC_SUBST(SYSTEM_LIBXUL)
9137 AC_SUBST(SYSTEM_JPEG)
9138 AC_SUBST(SYSTEM_PNG)
9139 AC_SUBST(SYSTEM_ZLIB)
9140 AC_SUBST(SYSTEM_BZ2)
9142 AC_SUBST(JPEG_CFLAGS)
9143 AC_SUBST(JPEG_LIBS)
9144 AC_SUBST(ZLIB_CFLAGS)
9145 AC_SUBST(ZLIB_LIBS)
9146 AC_SUBST(BZ2_CFLAGS)
9147 AC_SUBST(BZ2_LIBS)
9148 AC_SUBST(PNG_CFLAGS)
9149 AC_SUBST(PNG_LIBS)
9151 AC_SUBST(MOZ_JPEG_CFLAGS)
9152 AC_SUBST(MOZ_JPEG_LIBS)
9153 AC_SUBST(MOZ_ZLIB_CFLAGS)
9154 AC_SUBST(MOZ_ZLIB_LIBS)
9155 AC_SUBST(MOZ_BZ2_CFLAGS)
9156 AC_SUBST(MOZ_BZ2_LIBS)
9157 AC_SUBST(MOZ_PNG_CFLAGS)
9158 AC_SUBST(MOZ_PNG_LIBS)
9160 AC_SUBST(NSPR_CFLAGS)
9161 AC_SUBST(NSPR_LIBS)
9162 AC_SUBST(MOZ_NATIVE_NSPR)
9164 AC_SUBST(NSS_CFLAGS)
9165 AC_SUBST(NSS_LIBS)
9166 AC_SUBST(NSS_DEP_LIBS)
9167 AC_SUBST(MOZ_NATIVE_NSS)
9168 AC_SUBST(NSS_DISABLE_DBM)
9170 AC_SUBST(CFLAGS)
9171 AC_SUBST(CXXFLAGS)
9172 AC_SUBST(CPPFLAGS)
9173 AC_SUBST(COMPILE_CFLAGS)
9174 AC_SUBST(COMPILE_CXXFLAGS)
9175 AC_SUBST(LDFLAGS)
9176 AC_SUBST(LIBS)
9177 AC_SUBST(CROSS_COMPILE)
9178 AC_SUBST(WCHAR_CFLAGS)
9180 AC_SUBST(HOST_CC)
9181 AC_SUBST(HOST_CXX)
9182 AC_SUBST(HOST_CFLAGS)
9183 AC_SUBST(HOST_CXXFLAGS)
9184 AC_SUBST(HOST_LDFLAGS)
9185 AC_SUBST(HOST_OPTIMIZE_FLAGS)
9186 AC_SUBST(HOST_AR)
9187 AC_SUBST(HOST_AR_FLAGS)
9188 AC_SUBST(HOST_LD)
9189 AC_SUBST(HOST_RANLIB)
9190 AC_SUBST(HOST_NSPR_MDCPUCFG)
9191 AC_SUBST(HOST_BIN_SUFFIX)
9192 AC_SUBST(HOST_OS_ARCH)
9194 AC_SUBST(TARGET_CPU)
9195 AC_SUBST(TARGET_VENDOR)
9196 AC_SUBST(TARGET_OS)
9197 AC_SUBST(TARGET_NSPR_MDCPUCFG)
9198 AC_SUBST(TARGET_MD_ARCH)
9199 AC_SUBST(TARGET_XPCOM_ABI)
9200 AC_SUBST(OS_TARGET)
9201 AC_SUBST(OS_ARCH)
9202 AC_SUBST(OS_RELEASE)
9203 AC_SUBST(OS_TEST)
9204 AC_SUBST(CPU_ARCH)
9205 AC_SUBST(INTEL_ARCHITECTURE)
9207 AC_SUBST(MOZ_DISABLE_JAR_PACKAGING)
9208 AC_SUBST(MOZ_CHROME_FILE_FORMAT)
9210 AC_SUBST(WRAP_MALLOC_CFLAGS)
9211 AC_SUBST(WRAP_MALLOC_LIB)
9212 AC_SUBST(MKSHLIB)
9213 AC_SUBST(MKCSHLIB)
9214 AC_SUBST(MKSHLIB_FORCE_ALL)
9215 AC_SUBST(MKSHLIB_UNFORCE_ALL)
9216 AC_SUBST(DSO_CFLAGS)
9217 AC_SUBST(DSO_PIC_CFLAGS)
9218 AC_SUBST(DSO_LDOPTS)
9219 AC_SUBST(LIB_PREFIX)
9220 AC_SUBST(DLL_PREFIX)
9221 AC_SUBST(DLL_SUFFIX)
9222 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
9223 AC_SUBST(LIB_SUFFIX)
9224 AC_SUBST(OBJ_SUFFIX)
9225 AC_SUBST(BIN_SUFFIX)
9226 AC_SUBST(ASM_SUFFIX)
9227 AC_SUBST(IMPORT_LIB_SUFFIX)
9228 AC_SUBST(USE_N32)
9229 AC_SUBST(CC_VERSION)
9230 AC_SUBST(CXX_VERSION)
9231 AC_SUBST(MSMANIFEST_TOOL)
9232 AC_SUBST(NS_ENABLE_TSF)
9233 AC_SUBST(MOZ_NSS_PATCH)
9234 AC_SUBST(MOZ_APP_COMPONENT_LIBS)
9235 AC_SUBST(MOZ_APP_EXTRA_LIBS)
9237 AC_SUBST(MOZ_MEDIA)
9238 AC_SUBST(MOZ_SYDNEYAUDIO)
9239 AC_SUBST(MOZ_WAVE)
9240 AC_SUBST(MOZ_VORBIS)
9241 AC_SUBST(MOZ_TREMOR)
9242 AC_SUBST(MOZ_WEBM)
9243 AC_SUBST(MOZ_OGG)
9244 AC_SUBST(MOZ_ALSA_LIBS)
9245 AC_SUBST(VPX_AS)
9246 AC_SUBST(VPX_ASFLAGS)
9247 AC_SUBST(VPX_DASH_C_FLAG)
9248 AC_SUBST(VPX_AS_CONVERSION)
9249 AC_SUBST(VPX_ASM_SUFFIX)
9250 AC_SUBST(VPX_X86_ASM)
9251 AC_SUBST(VPX_ARM_ASM)
9253 if test "$USING_HCC"; then
9254    CC='${topsrcdir}/build/hcc'
9255    CC="$CC '$_OLDCC'"
9256    CXX='${topsrcdir}/build/hcpp'
9257    CXX="$CXX '$_OLDCXX'"
9258    AC_SUBST(CC)
9259    AC_SUBST(CXX)
9262 AC_MSG_CHECKING([for posix_fallocate])       
9263 AC_TRY_LINK([#define _XOPEN_SOURCE 600
9264   #include <fcntl.h>],
9265                  [posix_fallocate(0, 0, 0);],
9266                  [ac_cv___posix_fallocate=true],
9267                  [ac_cv___posix_fallocate=false])
9269 if test "$ac_cv___posix_fallocate" = true ; then
9270   AC_DEFINE(HAVE_POSIX_FALLOCATE)
9271   AC_MSG_RESULT(yes)
9272 else
9273   AC_MSG_RESULT(no)
9276 dnl Check for missing components
9277 if test "$COMPILE_ENVIRONMENT"; then
9278 if test "$MOZ_X11"; then
9279     dnl ====================================================
9280     dnl = Check if X headers exist
9281     dnl ====================================================
9282     _SAVE_CFLAGS=$CFLAGS
9283     CFLAGS="$CFLAGS $XCFLAGS"
9284     AC_TRY_COMPILE([
9285         #include <stdio.h>
9286         #include <stdlib.h>
9287         #include <X11/Xlib.h>
9288         #include <X11/Intrinsic.h>
9289     ],
9290     [
9291         Display *dpy = 0;
9292         if ((dpy = XOpenDisplay(NULL)) == NULL) {
9293             fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
9294             exit(1);
9295         }
9296     ], [], 
9297     [ AC_MSG_ERROR([Could not compile basic X program.]) ])
9298     CFLAGS="$_SAVE_CFLAGS"
9300     if test ! -z "$MISSING_X"; then
9301         AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
9302     fi
9304 fi # MOZ_X11
9306 dnl Check for headers, etc. needed by WebGL.
9307 if test -n "$MOZ_WEBGL_GLX"; then
9308     AC_CHECK_HEADER(GL/glx.h)
9309     if test "$ac_cv_header_GL_glx_h" != "yes"; then
9310         AC_MSG_ERROR([Can't find header GL/glx.h for WebGL (install mesa-common-dev (Ubuntu), mesa-libGL-devel (Fedora), or Mesa (SuSE))])
9311     fi
9312 fi # MOZ_WEBGL_GLX
9313 fi # COMPILE_ENVIRONMENT
9315 if test "$USE_FC_FREETYPE"; then
9316     if test "$COMPILE_ENVIRONMENT"; then
9317         _SAVE_CPPFLAGS="$CPPFLAGS"
9318         CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
9319         AC_CHECK_HEADERS(fontconfig/fcfreetype.h, , 
9320             [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)])
9321         CPPFLAGS="$_SAVE_CPPFLAGS"
9322     else
9323         AC_DEFINE(HAVE_FONTCONFIG_FCFREETYPE_H)
9324     fi
9327 dnl Set various defines and substitutions
9328 dnl ========================================================
9330 if test "$OS_ARCH" = "BeOS"; then
9331   AC_DEFINE(XP_BEOS)
9332 elif test "$OS_ARCH" = "Darwin"; then
9333   AC_DEFINE(XP_UNIX)
9334   AC_DEFINE(UNIX_ASYNC_DNS)
9335 elif test "$OS_ARCH" = "OpenVMS"; then
9336   AC_DEFINE(XP_UNIX)
9337 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
9338   AC_DEFINE(XP_UNIX)
9339   AC_DEFINE(UNIX_ASYNC_DNS)
9342 if test "$MOZ_DEBUG"; then
9343     AC_DEFINE(MOZ_REFLOW_PERF)
9344     AC_DEFINE(MOZ_REFLOW_PERF_DSP)
9347 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
9348     AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
9349     ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
9350     ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
9351     ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
9352     ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
9353     AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
9354     AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
9355     AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
9358 dnl ========================================================
9359 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
9360 dnl ========================================================
9361 case "$host_os" in
9362 mingw*)
9363     WIN_TOP_SRC=`cd $srcdir; pwd -W`
9364     ;;
9365 cygwin*|msvc*|mks*)
9366     HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
9367     HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
9368     CC="\$(CYGWIN_WRAPPER) $CC"
9369     CXX="\$(CYGWIN_WRAPPER) $CXX"
9370     CPP="\$(CYGWIN_WRAPPER) $CPP"
9371     LD="\$(CYGWIN_WRAPPER) $LD"
9372     AS="\$(CYGWIN_WRAPPER) $AS"
9373     RC="\$(CYGWIN_WRAPPER) $RC"
9374     MIDL="\$(CYGWIN_WRAPPER) $MIDL"
9375     CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
9376     WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
9377     ;;
9378 esac
9380 AC_SUBST(CYGDRIVE_MOUNT)
9381 AC_SUBST(WIN_TOP_SRC)
9383 AC_SUBST(MOZILLA_VERSION)
9385 AC_SUBST(ac_configure_args)
9387 dnl Spit out some output
9388 dnl ========================================================
9390 dnl The following defines are used by xpcom
9391 _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES
9392 CPP_THROW_NEW
9393 HAVE_CPP_2BYTE_WCHAR_T
9394 HAVE_CPP_ACCESS_CHANGING_USING
9395 HAVE_CPP_AMBIGUITY_RESOLVING_USING
9396 HAVE_CPP_BOOL
9397 HAVE_CPP_CHAR16_T
9398 HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR
9399 HAVE_CPP_EXPLICIT
9400 HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX
9401 HAVE_CPP_NAMESPACE_STD
9402 HAVE_CPP_NEW_CASTS
9403 HAVE_CPP_PARTIAL_SPECIALIZATION
9404 HAVE_CPP_TROUBLE_COMPARING_TO_ZERO
9405 HAVE_CPP_TYPENAME
9406 HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL
9407 HAVE_STATVFS
9408 NEED_CPP_UNUSED_IMPLEMENTATIONS
9409 NEW_H
9410 HAVE_GETPAGESIZE
9411 HAVE_ICONV
9412 HAVE_ICONV_WITH_CONST_INPUT
9413 HAVE_MBRTOWC
9414 HAVE_SYS_MOUNT_H
9415 HAVE_SYS_VFS_H
9416 HAVE_WCRTOMB
9419 AC_CONFIG_HEADER(
9420 netwerk/necko-config.h
9421 xpcom/xpcom-config.h
9422 xpcom/xpcom-private.h
9425 # Save the defines header file before autoconf removes it.
9426 # (Do not add AC_DEFINE calls after this line.)
9427   _CONFIG_TMP=confdefs-tmp.h
9428   _CONFIG_DEFS_H=mozilla-config.h
9430   cat > $_CONFIG_TMP <<\EOF
9431 /* List of defines generated by configure. Included with preprocessor flag,
9432  * -include, to avoid long list of -D defines on the compile command-line.
9433  * Do not edit.
9434  */
9436 #ifndef _MOZILLA_CONFIG_H_
9437 #define _MOZILLA_CONFIG_H_
9440 _EGREP_PATTERN='^#define ('
9441 if test -n "$_NON_GLOBAL_ACDEFINES"; then
9442     for f in $_NON_GLOBAL_ACDEFINES; do
9443         _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
9444     done
9446 _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
9448   sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
9450   cat >> $_CONFIG_TMP <<\EOF
9452 #endif /* _MOZILLA_CONFIG_H_ */
9456   # Only write mozilla-config.h when something changes (or it doesn't exist)
9457   if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
9458     rm $_CONFIG_TMP
9459   else
9460     AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
9461     mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
9463     echo ==== $_CONFIG_DEFS_H =================================
9464     cat $_CONFIG_DEFS_H
9465   fi
9467 dnl Probably shouldn't call this manually but we always want the output of DEFS
9468 rm -f confdefs.h.save
9469 mv confdefs.h confdefs.h.save
9470 egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
9471 AC_OUTPUT_MAKE_DEFS()
9472 MOZ_DEFINES=$DEFS
9473 AC_SUBST(MOZ_DEFINES)
9474 rm -f confdefs.h
9475 mv confdefs.h.save confdefs.h
9477 dnl Load the list of Makefiles to generate.
9478 dnl   To add new Makefiles, edit allmakefiles.sh.
9479 dnl   allmakefiles.sh sets the variable, MAKEFILES.
9480 . ${srcdir}/allmakefiles.sh
9481 dnl 
9482 dnl Run a perl script to quickly create the makefiles.
9483 dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
9484 dnl   for the files it cannot handle correctly. This way, config.status
9485 dnl   will handle these files.
9486 dnl If it fails, nothing is set and config.status will run as usual.
9488 dnl This does not change the $MAKEFILES variable.
9490 dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
9492 if test -z "${AS_PERL}"; then
9493 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
9494 else
9495 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
9497 . ./conftest.sh
9498 rm conftest.sh
9500 echo $MAKEFILES > unallmakefiles
9502 mv -f config/autoconf.mk config/autoconf.mk.orig 2> /dev/null
9504 AC_OUTPUT($MAKEFILES)
9506 dnl Prevent the regeneration of cairo-features.h forcing rebuilds of gfx stuff
9507 if test "$CAIRO_FEATURES_H"; then
9508   if cmp -s $CAIRO_FEATURES_H "$CAIRO_FEATURES_H".orig; then
9509     echo "$CAIRO_FEATURES_H is unchanged"
9510     mv -f "$CAIRO_FEATURES_H".orig "$CAIRO_FEATURES_H" 2> /dev/null
9511   else
9512     rm -f "$CAIRO_FEATURES_H".orig 2> /dev/null
9513   fi
9516 # Run freetype configure script
9518 if test "$MOZ_TREE_FREETYPE"; then
9519    export CFLAGS="$CFLAGS -std=c99"
9520    export CPPFLAGS="$CPPFLAGS"
9521    export CXXFLAGS="$CXXFLAGS"
9522    export LDFLAGS="$LDFLAGS"
9523    export CONFIG_FILES="unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config freetype2.pc:freetype2.in"
9524    ac_configure_args="$ac_configure_args --host=$target --disable-shared --with-pic=yes"
9525    AC_OUTPUT_SUBDIRS(modules/freetype2)
9528 dnl ========================================================
9529 dnl = Setup a nice relatively clean build environment for
9530 dnl = sub-configures.
9531 dnl ========================================================
9532 CC="$_SUBDIR_CC" 
9533 CXX="$_SUBDIR_CXX" 
9534 CFLAGS="$_SUBDIR_CFLAGS" 
9535 CPPFLAGS="$_SUBDIR_CPPFLAGS"
9536 CXXFLAGS="$_SUBDIR_CXXFLAGS"
9537 LDFLAGS="$_SUBDIR_LDFLAGS"
9538 HOST_CC="$_SUBDIR_HOST_CC" 
9539 HOST_CFLAGS="$_SUBDIR_HOST_CFLAGS"
9540 HOST_LDFLAGS="$_SUBDIR_HOST_LDFLAGS"
9543 unset MAKEFILES
9544 unset CONFIG_FILES
9546 # No need to run subconfigures when building with LIBXUL_SDK_DIR
9547 if test "$COMPILE_ENVIRONMENT" -a -z "$LIBXUL_SDK_DIR"; then
9549 if test -n "$MOZ_THUMB2"; then
9550   _SUBDIR_CONFIG_ARGS="$_SUBDIR_CONFIG_ARGS --enable-thumb2"
9552 if test -n "$MOZ_ARM_ARCH"; then
9553   _SUBDIR_CONFIG_ARGS="$_SUBDIR_CONFIG_ARGS --with-cpu-arch=$MOZ_ARM_ARCH"
9555 if test -n "$_WRAP_MALLOC"; then
9556   _SUBDIR_CONFIG_ARGS="$_SUBDIR_CONFIG_ARGS --enable-wrap-malloc"
9559 if test -z "$MOZ_NATIVE_NSPR"; then
9560     ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla"
9561     if test -z "$MOZ_DEBUG"; then
9562         ac_configure_args="$ac_configure_args --disable-debug"
9563     fi
9564     if test "$MOZ_OPTIMIZE" = "1"; then
9565         ac_configure_args="$ac_configure_args --enable-optimize"
9566     fi
9567     if test "$OS_ARCH" = "WINNT" -a "$NS_TRACE_MALLOC"; then
9568        ac_configure_args="$ac_configure_args --enable-debug --disable-optimize"
9569     fi
9570     if test -n "$HAVE_64BIT_OS"; then
9571         ac_configure_args="$ac_configure_args --enable-64bit"
9572     fi
9573     if test -n "$USE_ARM_KUSER"; then
9574         ac_configure_args="$ac_configure_args --with-arm-kuser"
9575     fi
9576     AC_OUTPUT_SUBDIRS(nsprpub)
9577     ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9580 if test -z "$MOZ_NATIVE_NSPR"; then
9581     # Hack to deal with the fact that we use NSPR_CFLAGS everywhere
9582     AC_MSG_WARN([Recreating autoconf.mk with updated nspr-config output])
9583     if test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
9584        NSPR_LIBS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --libdir=$LIBXUL_DIST/lib --libs`
9585        $PERL -pi.bak -e "s '^NSPR_LIBS\\s*=.*'NSPR_LIBS = $NSPR_LIBS'" config/autoconf.mk
9586        NSPR_CFLAGS=`./nsprpub/config/nspr-config --prefix=$LIBXUL_DIST --exec-prefix=$MOZ_BUILD_ROOT/dist --includedir=$LIBXUL_DIST/include/nspr --cflags`
9587        $PERL -pi.bak -e "s '^NSPR_CFLAGS\\s*=.*'NSPR_CFLAGS = $NSPR_CFLAGS'" config/autoconf.mk
9588     fi
9589     rm -f config/autoconf.mk.bak
9592 # Run the SpiderMonkey 'configure' script.
9593 dist=$MOZ_BUILD_ROOT/dist
9594 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9595 ac_configure_args="$ac_configure_args --enable-threadsafe"
9596 if test "$BUILD_CTYPES"; then
9597     # Build js-ctypes on the platforms we can.
9598     ac_configure_args="$ac_configure_args --enable-ctypes"
9600 if test -z "$JS_SHARED_LIBRARY" ; then
9601     ac_configure_args="$ac_configure_args --disable-shared-js"
9603 if test -z "$MOZ_NATIVE_NSPR"; then
9604     ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'"
9605     ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'"
9607 ac_configure_args="$ac_configure_args --with-dist-dir=../../dist"
9608 ac_configure_args="$ac_configure_args --prefix=$dist"
9609 ac_configure_args="$ac_configure_args --with-sync-build-files=$_topsrcdir"
9610 if test "$MOZ_MEMORY"; then
9611    ac_configure_args="$ac_configure_args --enable-jemalloc"
9612    if test -n "$MOZ_MEMORY_LDFLAGS"; then
9613      export MOZ_MEMORY_LDFLAGS
9614    fi
9616 AC_OUTPUT_SUBDIRS(js/src)
9617 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
9619 fi # COMPILE_ENVIRONMENT && !LIBXUL_SDK_DIR
9621 dnl Prevent the regeneration of autoconf.mk forcing rebuilds of the world
9622 dnl Needs to be at the end to respect possible changes from NSPR configure
9623 if cmp -s config/autoconf.mk config/autoconf.mk.orig; then
9624   echo "config/autoconf.mk is unchanged"
9625   mv -f config/autoconf.mk.orig config/autoconf.mk 2> /dev/null
9626 else
9627   rm -f config/autoconf.mk.orig 2> /dev/null