1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*-
2 dnl vi: set tabstop=4 shiftwidth=4 expandtab:
3 dnl ***** BEGIN LICENSE BLOCK *****
4 dnl Version: MPL 1.1/GPL 2.0/LGPL 2.1
6 dnl The contents of this file are subject to the Mozilla Public License Version
7 dnl 1.1 (the "License"); you may not use this file except in compliance with
8 dnl the License. You may obtain a copy of the License at
9 dnl http://www.mozilla.org/MPL/
11 dnl Software distributed under the License is distributed on an "AS IS" basis,
12 dnl WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13 dnl for the specific language governing rights and limitations under the
16 dnl The Original Code is this file as it was released upon August 6, 1998.
18 dnl The Initial Developer of the Original Code is
19 dnl Christopher Seawood.
20 dnl Portions created by the Initial Developer are Copyright (C) 1998-2001
21 dnl the Initial Developer. All Rights Reserved.
24 dnl Jamie Zawinski <jwz@jwz.org>
25 dnl gettimeofday args check
26 dnl Christopher Blizzard <blizzard@appliedtheory.com>
27 dnl gnomefe update & enable-pthreads
28 dnl Ramiro Estrugo <ramiro@netscape.com>
29 dnl X11 makedepend support
31 dnl Henry Sobotka <sobotka@axess.com>
33 dnl Dan Mosedale <dmose@mozilla.org>
35 dnl Seth Spitzer <sspitzer@netscape.com>
37 dnl Benjamin Smedberg <benjamin@smedbergs.us>
38 dnl Howard Chu <hyc@symas.com>
40 dnl Mark Mentovai <mark@moxienet.com>:
41 dnl Mac OS X 10.4 support
42 dnl Giorgio Maone <g.maone@informaction.com>
43 dnl MSVC l10n compatible version check
44 dnl Ben Turner <mozilla@songbirdnest.com>
45 dnl Windows x64 support
46 dnl Makoto Kato <m_kato@ga2.so-net.ne.jp>
48 dnl Alternatively, the contents of this file may be used under the terms of
49 dnl either the GNU General Public License Version 2 or later (the "GPL"), or
50 dnl the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
51 dnl in which case the provisions of the GPL or the LGPL are applicable instead
52 dnl of those above. If you wish to allow use of your version of this file only
53 dnl under the terms of either the GPL or the LGPL, and not to allow others to
54 dnl use your version of this file under the terms of the MPL, indicate your
55 dnl decision by deleting the provisions above and replace them with the notice
56 dnl and other provisions required by the GPL or the LGPL. If you do not delete
57 dnl the provisions above, a recipient may use your version of this file under
58 dnl the terms of any one of the MPL, the GPL or the LGPL.
60 dnl ***** END LICENSE BLOCK *****
62 dnl Process this file with autoconf to produce a configure script.
63 dnl ========================================================
67 AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
68 AC_CONFIG_HEADER(js-config.h)
70 TARGET_CPU="${target_cpu}"
71 TARGET_VENDOR="${target_vendor}"
72 TARGET_OS="${target_os}"
74 dnl ========================================================
76 dnl = Don't change the following two lines. Doing so breaks:
78 dnl = CFLAGS="-foo" ./configure
80 dnl ========================================================
82 CPPFLAGS="${CPPFLAGS=}"
83 CXXFLAGS="${CXXFLAGS=}"
85 HOST_CFLAGS="${HOST_CFLAGS=}"
86 HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
87 HOST_LDFLAGS="${HOST_LDFLAGS=}"
89 dnl ========================================================
90 dnl = Preserve certain environment flags passed to configure
91 dnl = We want sub projects to receive the same flags
92 dnl = untainted by this configure script
93 dnl ========================================================
96 _SUBDIR_CFLAGS="$CFLAGS"
97 _SUBDIR_CPPFLAGS="$CPPFLAGS"
98 _SUBDIR_CXXFLAGS="$CXXFLAGS"
99 _SUBDIR_LDFLAGS="$LDFLAGS"
100 _SUBDIR_HOST_CC="$HOST_CC"
101 _SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
102 _SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
103 _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
104 _SUBDIR_CONFIG_ARGS="$ac_configure_args"
106 dnl Set the version number of the libs included with mozilla
107 dnl ========================================================
110 dnl Set the minimum version of toolkit libs used by mozilla
111 dnl ========================================================
114 WINDRES_VERSION=2.14.90
119 dnl Set various checks
120 dnl ========================================================
124 dnl Initialize the Pthread test variables early so they can be
125 dnl overridden by each platform.
126 dnl ========================================================
130 dnl Do not allow a separate objdir build if a srcdir build exists.
131 dnl ==============================================================
132 _topsrcdir=`cd \`dirname $0\`; pwd`
135 if test "$_topsrcdir" != "$_objdir"
137 # Check for a couple representative files in the source tree
139 for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
140 if test -f $file; then
141 _conflict_files="$_conflict_files $file"
144 if test "$_conflict_files"; then
146 echo "* Your source tree contains these files:"
147 for file in $_conflict_files; do
151 * This indicates that you previously built in the source tree.
152 * A source tree build can confuse the separate objdir build.
154 * To clean up the source tree:
165 dnl Choose where to put the 'dist' directory.
166 dnl ==============================================================
168 MOZ_ARG_WITH_STRING(dist-dir,
169 [ --with-dist-dir=DIR Use DIR as 'dist' staging area. DIR may be
170 relative to the top of SpiderMonkey build tree,
176 dnl Default to MSVC for win32 and gcc-4.2 for darwin
177 dnl ==============================================================
178 if test -z "$CROSS_COMPILE"; then
180 *-cygwin*|*-mingw*|*-msvc*|*-mks*)
181 if test -z "$CC"; then CC=cl; fi
182 if test -z "$CXX"; then CXX=cl; fi
183 if test -z "$CPP"; then CPP="cl -E -nologo"; fi
184 if test -z "$CXXCPP"; then CXXCPP="cl -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
185 if test -z "$LD"; then LD=link; fi
186 if test -z "$AS"; then
187 case "${target_cpu}" in
196 if test -z "$MIDL"; then MIDL=midl; fi
199 if test -z "$CC"; then CC=gcc-4.2; fi
200 if test -z "$CXX"; then CXX=g++-4.2; fi
205 COMPILE_ENVIRONMENT=1
206 MOZ_ARG_DISABLE_BOOL(compile-environment,
207 [ --disable-compile-environment
208 Disable compiler/library checks.],
209 COMPILE_ENVIRONMENT= )
210 AC_SUBST(COMPILE_ENVIRONMENT)
212 dnl Check for Perl first -- needed for win32 SDK checks
213 MOZ_PATH_PROGS(PERL, $PERL perl5 perl )
214 if test -z "$PERL" -o "$PERL" = ":"; then
215 AC_MSG_ERROR([perl not found in \$PATH])
218 MOZ_ARG_ENABLE_BOOL(shared-js,
219 [ --disable-shared-js
220 Do not create a shared library.],
224 if test "$DISABLE_SHARED_JS" = "1" ; then
225 AC_DEFINE(STATIC_EXPORTABLE_JS_API)
229 AC_SUBST(JS_SHARED_LIBRARY)
231 dnl ========================================================
232 dnl = Android uses a very custom (hacky) toolchain; we need to do this
233 dnl = here, so that the compiler checks can succeed
234 dnl ========================================================
236 MOZ_ARG_WITH_STRING(android-ndk,
237 [ --with-android-ndk=DIR
238 location where the Android NDK can be found],
239 android_ndk=$withval)
241 MOZ_ARG_WITH_STRING(android-toolchain,
242 [ --with-android-toolchain=DIR
243 location of the android toolchain, default NDK/build/prebuilt/HOST/arm-eabi-4.4.0],
244 android_toolchain=$withval)
247 MOZ_ARG_WITH_STRING(android-version,
248 [ --with-android-version=VER
249 android platform version, default 5],
250 android_version=$withval,
253 MOZ_ARG_WITH_STRING(android-sdk,
254 [ --with-android-sdk=DIR
255 location where the Android SDK can be found (base directory, e.g. .../android/platforms/android-6)],
256 android_sdk=$withval)
258 if test "$target" = "arm-android-eabi" ; then
259 if test -z "$android_ndk" ; then
260 AC_MSG_ERROR([You must specify --with-android-ndk=/path/to/ndk when targeting Android.])
263 if test -z "$android_sdk" ; then
264 AC_MSG_ERROR([You must specify --with-android-sdk=/path/to/sdk when targeting Android.])
267 android_platform_tools="$android_sdk"/../../platform-tools
268 if test ! -d "$android_platform_tools" ; then
269 android_platform_tools="$android_sdk"/tools # SDK Tools < r8
272 if test -z "$android_toolchain" ; then
273 android_toolchain="$android_ndk"/build/prebuilt/`uname -s | tr "[[:upper:]]" "[[:lower:]]"`-x86/arm-eabi-4.4.0
276 if test -z "$android_platform" ; then
277 android_platform="$android_ndk"/build/platforms/android-"$android_version"/arch-"$target_cpu"
281 AS="$android_toolchain"/bin/arm-eabi-as
282 CC="$android_toolchain"/bin/arm-eabi-gcc
283 CXX="$android_toolchain"/bin/arm-eabi-g++
284 CPP="$android_toolchain"/bin/arm-eabi-cpp
285 LD="$android_toolchain"/bin/arm-eabi-ld
286 AR="$android_toolchain"/bin/arm-eabi-ar
287 RANLIB="$android_toolchain"/bin/arm-eabi-ranlib
288 STRIP="$android_toolchain"/bin/arm-eabi-strip
290 CPPFLAGS="-I$android_platform/usr/include $CPPFLAGS"
291 CFLAGS="-mandroid -I$android_platform/usr/include -msoft-float -fno-short-enums -fno-exceptions -march=armv5te -mthumb-interwork $CFLAGS"
292 CXXFLAGS="-mandroid -I$android_platform/usr/include -msoft-float -fno-short-enums -fno-exceptions -march=armv5te -mthumb-interwork $CXXFLAGS"
294 dnl Add -llog by default, since we use it all over the place.
295 dnl Add --allow-shlib-undefined, because libGLESv2 links to an
296 dnl undefined symbol (present on the hardware, just not in the
298 LDFLAGS="-mandroid -L$android_platform/usr/lib -Wl,-rpath-link=$android_platform/usr/lib --sysroot=$android_platform -llog -Wl,--allow-shlib-undefined $LDFLAGS"
300 dnl prevent cross compile section from using these flags as host flags
301 if test -z "$HOST_CPPFLAGS" ; then
304 if test -z "$HOST_CFLAGS" ; then
307 if test -z "$HOST_CXXFLAGS" ; then
310 if test -z "$HOST_LDFLAGS" ; then
314 ANDROID_NDK="${android_ndk}"
315 ANDROID_TOOLCHAIN="{android_toolchain}"
316 ANDROID_PLATFORM="{android_platform}"
317 ANDROID_SDK="${android_sdk}"
318 ANDROID_PLATFORM_TOOLS="${android_platform_tools}"
319 ANDROID_VERSION="${android_version}"
321 # save these for libffi's subconfigure,
322 # which doesn't know how to figure this stuff out on its own
323 ANDROID_CFLAGS="$CFLAGS"
324 ANDROID_CPPFLAGS="$CPPFLAGS"
325 ANDROID_LDFLAGS="$LDFLAGS"
328 AC_DEFINE_UNQUOTED(ANDROID_VERSION, $android_version)
329 AC_SUBST(ANDROID_VERSION)
331 MOZ_CHROME_FILE_FORMAT=omni
334 AC_SUBST(ANDROID_NDK)
335 AC_SUBST(ANDROID_TOOLCHAIN)
336 AC_SUBST(ANDROID_PLATFORM)
337 AC_SUBST(ANDROID_SDK)
338 AC_SUBST(ANDROID_PLATFORM_TOOLS)
340 dnl ========================================================
341 dnl Checks for compilers.
342 dnl ========================================================
343 dnl Set CROSS_COMPILE in the environment when running configure
344 dnl to use the cross-compile setup for now
345 dnl ========================================================
347 dnl AR_FLAGS set here so HOST_AR_FLAGS can be set correctly (see bug 538269)
350 if test "$COMPILE_ENVIRONMENT"; then
353 # In Mozilla, we use the names $target, $host and $build incorrectly, but are
354 # too far gone to back out now. See Bug 475488:
355 # - When we say $target, we mean $host, that is, the system on which
356 # Mozilla will be run.
357 # - When we say $host, we mean $build, that is, the system on which Mozilla
359 # - $target (in its correct usage) is for compilers who generate code for a
360 # different platform than $host, so it would not be used by Mozilla.
361 if test "$target" != "$host"; then
362 echo "cross compiling from $host to $target"
365 _SAVE_CFLAGS="$CFLAGS"
366 _SAVE_LDFLAGS="$LDFLAGS"
368 AC_MSG_CHECKING([for host c compiler])
369 AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
370 if test -z "$HOST_CC"; then
371 AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
373 AC_MSG_RESULT([$HOST_CC])
374 AC_MSG_CHECKING([for host c++ compiler])
375 AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
376 if test -z "$HOST_CXX"; then
377 AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
379 AC_MSG_RESULT([$HOST_CXX])
381 if test -z "$HOST_CFLAGS"; then
382 HOST_CFLAGS="$CFLAGS"
384 if test -z "$HOST_CXXFLAGS"; then
385 HOST_CXXFLAGS="$CXXFLAGS"
387 if test -z "$HOST_LDFLAGS"; then
388 HOST_LDFLAGS="$LDFLAGS"
390 if test -z "$HOST_AR_FLAGS"; then
391 HOST_AR_FLAGS="$AR_FLAGS"
393 AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
394 AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
396 CFLAGS="$HOST_CFLAGS"
397 LDFLAGS="$HOST_LDFLAGS"
399 AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
400 AC_TRY_COMPILE([], [return(0);],
401 [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
402 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
405 CFLAGS="$HOST_CXXFLAGS"
407 AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
408 AC_TRY_COMPILE([], [return(0);],
409 [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
410 AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
414 LDFLAGS=$_SAVE_LDFLAGS
416 case "$build:$target" in
417 powerpc-apple-darwin8*:i?86-apple-darwin*)
418 dnl The Darwin cross compiler doesn't necessarily point itself at a
419 dnl root that has libraries for the proper architecture, it defaults
420 dnl to the system root. The libraries in the system root on current
421 dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
422 dnl checks will fail. Fake a working SDK in that case.
424 _SAVE_CXXFLAGS=$CXXLAGS
425 CFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk $CFLAGS"
426 CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk $CXXFLAGS"
432 AC_ARG_WITH(symbian-sdk,
433 [ --with-symbian-sdk=SYMBIAN_SDK_DIR
434 The path to the Symbian SDK],
435 SYMBIAN_SDK_DIR=$withval)
437 OS_EXE_CFLAGS="$OS_EXE_CFLAGS -D__EXE__"
438 CFLAGS="-MD -nostdinc"
439 SYMBIAN_SYS_INCLUDE="-I$SYMBIAN_SDK_DIR/Epoc32/include -I$SYMBIAN_SDK_DIR/Epoc32/include/variant -I$SYMBIAN_SDK_DIR/Epoc32/include/stdapis"
444 CC=arm-none-symbianelf-gcc.exe
445 CXX=arm-none-symbianelf-g++.exe
446 LD=arm-none-symbianelf-ld.exe
447 AR=arm-none-symbianelf-ar.exe
448 CPP=arm-none-symbianelf-cpp.exe
449 CFLAGS="$CFLAGS -c -Wall -Wno-unknown-pragmas -fexceptions -march=armv5t -mapcs -pipe -msoft-float"
450 CXXFLAGS="$CFLAGS -Wno-ctor-dtor-privacy"
451 GCCE_INCLUDE="-include $SYMBIAN_SDK_DIR/EPOC32/INCLUDE/GCCE/GCCE.h -D__PRODUCT_INCLUDE__=$SYMBIAN_SDK_DIR/Epoc32/include/variant/Symbian_OS_v9.2.hrh"
452 CFLAGS="$CFLAGS ${GCCE_INCLUDE} -x c"
453 CXXFLAGS="$CXXFLAGS ${GCCE_INCLUDE} -x c++"
454 CPPFLAGS="$CPPFLAGS ${SYMBIAN_SYS_INCLUDE}"
457 dnl TODO: add emulator build code
464 AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
467 AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
471 case "$build:$target" in
472 powerpc-apple-darwin8*:i?86-apple-darwin*)
473 dnl Revert the changes made above. From this point on, the target
474 dnl compiler will never be used without applying the SDK to CFLAGS
475 dnl (see --with-macos-sdk below).
477 CXXFLAGS=$_SAVE_CXXFLAGS
481 AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
482 AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
483 MOZ_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
484 AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
485 AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
486 AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
487 AC_DEFINE(CROSS_COMPILE)
489 dnl If we cross compile for ppc on Mac OS X x86, cross_compiling will
490 dnl have erroneously been set to "no", because the x86 build host is
491 dnl able to run ppc code in a translated environment, making a cross
492 dnl compiler appear native. So we override that here.
498 MOZ_PATH_PROGS(AS, $AS as, $CC)
499 AC_CHECK_PROGS(AR, ar, :)
500 AC_CHECK_PROGS(LD, ld, :)
501 AC_CHECK_PROGS(STRIP, strip, :)
502 AC_CHECK_PROGS(WINDRES, windres, :)
503 if test -z "$HOST_CC"; then
506 if test -z "$HOST_CFLAGS"; then
507 HOST_CFLAGS='$(CFLAGS)'
509 if test -z "$HOST_CXX"; then
512 if test -z "$HOST_CXXFLAGS"; then
513 HOST_CXXFLAGS='$(CXXFLAGS)'
515 if test -z "$HOST_LDFLAGS"; then
516 HOST_LDFLAGS='$(LDFLAGS)'
518 if test -z "$HOST_RANLIB"; then
519 HOST_RANLIB='$(RANLIB)'
521 if test -z "$HOST_AR"; then
524 if test -z "$HOST_AR_FLAGS"; then
525 HOST_AR_FLAGS='$(AR_FLAGS)'
535 if test "$GCC" = "yes"; then
537 CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
539 if test "$GXX" = "yes"; then
541 CXX_VERSION=`$CXX -v 2>&1 | grep 'gcc version'`
543 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
546 if test "`echo | $LD -v 2>&1 | grep -c GNU`" != "0"; then
549 if test "$GNU_CC"; then
550 if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
557 if test "$GCC" = yes; then
558 if test "`$CC -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
563 if test "$GXX" = yes; then
564 if test "`$CXX -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
569 dnl Special win32 checks
570 dnl ========================================================
578 dnl Target the Windows 7 SDK by default
583 MOZ_ARG_WITH_STRING(windows-version,
584 [ --with-windows-version=WINSDK_TARGETVER
585 Highest Windows version to target using this SDK
586 502: Windows Server 2003
589 WINSDK_TARGETVER=$withval)
591 case "$WINSDK_TARGETVER" in
593 MOZ_WINSDK_TARGETVER=0${WINSDK_TARGETVER}0000
597 AC_MSG_ERROR([Invalid value for --with-windows-version ($WINSDK_TARGETVER), must be 502, 600 or 601]);
603 *-cygwin*|*-mingw*|*-msvc*|*-mks*|*-wince|*-winmo)
604 if test "$GCC" != "yes"; then
605 # Check to see if we are really running in a msvc environemnt
608 # Make sure compilers are valid
609 CFLAGS="$CFLAGS -TC -nologo"
610 CXXFLAGS="$CXXFLAGS -TP -nologo"
611 # MSVC warning C4345 warns of newly conformant behavior as of VS2003.
612 # _CRT_SECURE_NO_WARNINGS disables warnings about using MSVC-specific
613 # secure CRT functions.
614 CXXFLAGS="$CXXFLAGS -wd4345 -D_CRT_SECURE_NO_WARNINGS"
617 AC_TRY_COMPILE([#include <stdio.h>],
618 [ printf("Hello World\n"); ],,
619 AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
622 AC_TRY_COMPILE([#include <new.h>],
623 [ unsigned *test = new unsigned(42); ],,
624 AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
628 _MSVC_VER_FILTER='s|.* ([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
631 # Determine compiler version
632 CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
633 _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
634 _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
635 _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
636 _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
637 _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
639 CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
640 _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
642 if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
643 AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
646 if test "$_CC_MAJOR_VERSION" = "14"; then
647 dnl Require VC8SP1 or newer.
648 dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762.
649 if test "$_CC_RELEASE" -lt 50727 -o \
650 \( "$_CC_RELEASE" -eq 50727 -a "$_CC_BUILD" -lt 762 \); then
651 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.])
655 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
656 AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
657 AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
658 elif test "$_CC_MAJOR_VERSION" = "15"; then
660 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
661 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
662 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
663 elif test "$_CC_MAJOR_VERSION" = "16"; then
665 CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
666 AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
667 AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
669 AC_MSG_ERROR([This version ($CC_VERSION) of the MSVC compiler is unsupported. See https://developer.mozilla.org/en/Windows_Build_Prerequisites.])
672 _MOZ_RTTI_FLAGS_ON='-GR'
673 _MOZ_RTTI_FLAGS_OFF='-GR-'
674 _MOZ_EXCEPTIONS_FLAGS_ON='-EHsc'
675 _MOZ_EXCEPTIONS_FLAGS_OFF=''
677 if test -n "$WIN32_REDIST_DIR"; then
678 WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
681 dnl Ensure that mt.exe is 'Microsoft (R) Manifest Tool',
682 dnl not something else like "magnetic tape manipulation utility".
683 MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
684 if test -z "$MSMT_TOOL"; then
685 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
689 _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
691 MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
692 if test -z "$MSMANIFEST_TOOL_VERSION"; then
693 AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
699 # Check linker version
700 _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
701 _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
702 if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
703 AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
708 # Identify which version of the SDK we're building with
709 # Windows Server 2008 and newer SDKs have WinSDKVer.h, get the version
711 AC_CHECK_HEADERS([winsdkver.h])
712 if test "$ac_cv_header_winsdkver_h" = "yes"; then
713 # Get the highest _WIN32_WINNT and NTDDI versions supported
714 # Take the higher of the two
715 # This is done because the Windows 7 beta SDK reports its
716 # NTDDI_MAXVER to be 0x06000100 instead of 0x06010000, as it should
717 AC_CACHE_CHECK(for highest Windows version supported by this SDK,
719 [cat > conftest.h <<EOF
720 #include <winsdkver.h>
721 #include <sdkddkver.h>
723 #if (NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER) > NTDDI_MAXVER)
724 #define WINSDK_MAXVER NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT_MAXVER)
726 #define WINSDK_MAXVER NTDDI_MAXVER
731 ac_cv_winsdk_maxver=`$CPP conftest.h 2>/dev/null | tail -n1`
734 MOZ_WINSDK_MAXVER=${ac_cv_winsdk_maxver}
736 # The Vista SDK is the only one to have sdkddkver.h but not
738 AC_CHECK_HEADERS([sdkddkver.h])
739 if test "$ac_cv_header_sdkddkver_h" = "yes"; then
740 MOZ_WINSDK_MAXVER=0x06000000
742 # Assume the Server 2003 Platform SDK
743 MOZ_WINSDK_MAXVER=0x05020000
747 unset _MSVC_VER_FILTER
749 AC_CACHE_CHECK(for std::_Throw, ac_cv_have_std__Throw,
753 _SAVE_CXXFLAGS="$CXXFLAGS"
754 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
755 AC_TRY_COMPILE([#include <exception>],
756 [std::_Throw(std::exception()); return 0;],
757 ac_cv_have_std__Throw="yes",
758 ac_cv_have_std__Throw="no")
759 CXXFLAGS="$_SAVE_CXXFLAGS"
763 if test "$ac_cv_have_std__Throw" == "yes"; then
764 AC_CACHE_CHECK(for |class __declspec(dllimport) exception| bug,
765 ac_cv_have_dllimport_exception_bug,
769 _SAVE_CXXFLAGS="$CXXFLAGS"
770 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
771 AC_TRY_LINK([#include <vector>],
772 [std::vector<int> v; return v.at(1);],
773 ac_cv_have_dllimport_exception_bug="no",
774 ac_cv_have_dllimport_exception_bug="yes")
775 CXXFLAGS="$_SAVE_CXXFLAGS"
778 if test "$ac_cv_have_dllimport_exception_bug" = "no"; then
780 MOZ_MSVC_STL_WRAP__Throw=1
781 AC_DEFINE(MOZ_MSVC_STL_WRAP__Throw)
784 AC_CACHE_CHECK(for overridable _RAISE,
789 _SAVE_CXXFLAGS="$CXXFLAGS"
790 CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
791 AC_TRY_COMPILE([#include <xstddef>
793 #define _RAISE(x) externallyDefinedFunction((x).what())
796 [std::vector<int> v; return v.at(1);],
797 ac_cv_have__RAISE="no",
798 ac_cv_have__RAISE="yes")
799 CXXFLAGS="$_SAVE_CXXFLAGS"
802 if test "$ac_cv_have__RAISE" = "yes"; then
804 MOZ_MSVC_STL_WRAP__RAISE=1
805 AC_DEFINE(MOZ_MSVC_STL_WRAP__RAISE)
807 AC_MSG_ERROR([Gecko exception wrapping doesn't understand your your MSVC/SDK. Please file a bug describing this error and your build configuration.])
811 if test "$WRAP_STL_INCLUDES" = "1"; then
812 STL_FLAGS='-D_HAS_EXCEPTIONS=0 -I$(DIST)/stl_wrappers'
815 # Check w32api version
816 _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
817 _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
818 AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
819 AC_TRY_COMPILE([#include <w32api.h>],
820 #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
821 (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
822 __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
823 #error "test failed."
825 , [ res=yes ], [ res=no ])
826 AC_MSG_RESULT([$res])
827 if test "$res" != "yes"; then
828 AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
830 # Check windres version
831 AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
832 _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
833 AC_MSG_RESULT([$_WINDRES_VERSION])
834 _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
835 _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
836 _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
837 WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
838 WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
839 WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
840 if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
841 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
842 "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
843 "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
844 "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
845 "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
847 AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
850 # Server 2003 is the highest version supported
851 MOZ_WINSDK_MAXVER=0x05020000
854 AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
855 AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
856 # Require OS features provided by IE 5.0
857 AC_DEFINE_UNQUOTED(_WIN32_IE,0x0500)
859 # If the maximum version supported by this SDK is lower than the target
861 AC_MSG_CHECKING([for Windows SDK being recent enough])
862 if $PERL -e "exit(0x$MOZ_WINSDK_TARGETVER > $MOZ_WINSDK_MAXVER)"; then
866 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.])
869 AC_DEFINE_UNQUOTED(MOZ_WINSDK_TARGETVER,0x$MOZ_WINSDK_TARGETVER)
870 # Definitions matching sdkddkver.h
871 AC_DEFINE_UNQUOTED(MOZ_NTDDI_WS03, 0x05020000)
872 AC_DEFINE_UNQUOTED(MOZ_NTDDI_LONGHORN, 0x06000000)
873 AC_DEFINE_UNQUOTED(MOZ_NTDDI_WIN7, 0x06010000)
877 dnl Test breaks icc on OS/2 && MSVC
878 if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
880 if grep "NO_MINUS_C_MINUS_O 1" ./confdefs.h >/dev/null; then
884 CC="${srcdir}/build/hcc '$CC'"
885 CXX="${srcdir}/build/hcpp '$CXX'"
892 if test -n "$_WIN32_MSVC"; then
894 SKIP_COMPILER_CHECKS=1
895 SKIP_LIBRARY_CHECKS=1
897 # Since we're skipping compiler and library checks, hard-code
900 # Common to all MSVC environments:
901 # Windows lacks <stdint.h>, but has __int8, and so on.
902 AC_DEFINE(JS_HAVE___INTN)
903 AC_DEFINE(HAVE_LOCALECONV)
907 AC_DEFINE(HAVE_SYSTEMTIMETOFILETIME)
908 AC_DEFINE(JS_CRTDEFS_H_HAS_INTPTR_T)
911 AC_DEFINE(HAVE_SYSTEMTIMETOFILETIME)
912 AC_DEFINE(HAVE_GETSYSTEMTIMEASFILETIME)
913 # Windows <stddef.h> defines intptr_t and uintptr_t.
914 # VS2005: http://msdn.microsoft.com/en-us/library/323b6b3k(VS.80).aspx
915 # VS2008: http://msdn.microsoft.com/en-us/library/323b6b3k.aspx
916 AC_DEFINE(JS_STDDEF_H_HAS_INTPTR_T)
921 fi # COMPILE_ENVIRONMENT
923 if test "$cross_compiling" = "yes"; then
929 # Check to see if we are running in a broken QEMU scratchbox.
930 # We know that anything below 1.0.16 is broken.
931 AC_CHECK_PROGS(SBCONF, sb-conf ve, "")
932 if test -n "$SBCONF"; then
933 _sb_version=`$SBCONF ve`
934 _sb_version_major=`echo $_sb_version | cut -f1 -d.`
935 _sb_version_minor=`echo $_sb_version | cut -f2 -d.`
936 _sb_version_point=`echo $_sb_version | cut -f3 -d.`
937 if test $_sb_version_major -eq 1 -a $_sb_version_minor -eq 0 -a $_sb_version_point -le 16; then
938 QEMU_CANT_RUN_JS_SHELL=1
941 AC_SUBST(QEMU_CANT_RUN_JS_SHELL)
953 AC_SUBST(WRAP_STL_INCLUDES)
954 AC_SUBST(MOZ_MSVC_STL_WRAP__Throw)
955 AC_SUBST(MOZ_MSVC_STL_WRAP__RAISE)
957 dnl ========================================================
958 dnl Checks for programs.
959 dnl ========================================================
963 if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
964 AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
965 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
967 AC_MSG_RESULT([$_perl_version])
969 if test "$_perl_res" != 0; then
970 AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
974 AC_MSG_CHECKING([for full perl installation])
975 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
977 if test "$_perl_res" != 0; then
979 AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
984 MOZ_PATH_PROGS(PYTHON, $PYTHON python2.7 python2.6 python2.5 python)
985 if test -z "$PYTHON"; then
986 AC_MSG_ERROR([python was not found in \$PATH])
989 if test -z "$COMPILE_ENVIRONMENT"; then
990 NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
992 AC_SUBST(NSINSTALL_BIN)
994 MOZ_PATH_PROG(DOXYGEN, doxygen, :)
995 MOZ_PATH_PROG(AUTOCONF, autoconf, :)
996 MOZ_PATH_PROG(UNZIP, unzip, :)
997 MOZ_PATH_PROGS(ZIP, zip)
998 if test -z "$ZIP" -o "$ZIP" = ":"; then
999 AC_MSG_ERROR([zip not found in \$PATH])
1001 MOZ_PATH_PROG(SYSTEM_MAKEDEPEND, makedepend)
1002 MOZ_PATH_PROG(XARGS, xargs)
1003 if test -z "$XARGS" -o "$XARGS" = ":"; then
1004 AC_MSG_ERROR([xargs not found in \$PATH .])
1007 if test "$COMPILE_ENVIRONMENT"; then
1009 dnl ========================================================
1010 dnl = Mac OS X toolchain support
1011 dnl ========================================================
1013 case "$target_os" in
1015 dnl Current known valid versions for GCC_VERSION are 2.95.2 3.1 3.3 4.0.
1016 dnl 4.0 identifies itself as 4.0.x, so strip the decidecimal for
1017 dnl the environment and includedir purposes (when using an SDK, below),
1018 dnl but remember the full version number for the libdir (SDK).
1020 GCC_VERSION_FULL=`echo $CXX_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
1021 GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
1023 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
1024 dnl Bug 280479, but this keeps popping up in bug 292530 too because
1025 dnl 4.0.0/4061 is the default compiler in Tiger.
1027 GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
1029 if test "$GCC_BUILD" = "4061" ; then
1030 AC_MSG_ERROR([You are attempting to use Apple gcc 4.0 build 4061.
1031 This compiler was supplied with Xcode 2.0, and contains bugs that prevent it
1032 from building Mozilla. Upgrade to Xcode 2.1 or later.])
1036 dnl xcodebuild needs GCC_VERSION defined in the environment, since it
1037 dnl doesn't respect the CC/CXX setting. With GCC_VERSION set, it will use
1038 dnl /usr/bin/g(cc|++)-$GCC_VERSION.
1039 MOZ_PATH_PROGS(PBBUILD, pbbuild xcodebuild pbxbuild)
1044 XCODEBUILD_VERSION=`$PBBUILD -version 2>/dev/null | xargs | sed -e 's/.*DevToolsCore-\([0-9]*\).*/\1/'`
1046 if test -n "$XCODEBUILD_VERSION" && test "$XCODEBUILD_VERSION" -ge 620 ; then
1052 dnl sdp was formerly in /Developer/Tools. As of Mac OS X 10.4 (Darwin 8),
1053 dnl it has moved into /usr/bin.
1054 MOZ_PATH_PROG(SDP, sdp, :, [$PATH:/usr/bin:/Developer/Tools])
1058 AC_SUBST(GCC_VERSION)
1059 AC_SUBST(XCODEBUILD_VERSION)
1060 AC_SUBST(HAS_XCODE_2_1)
1062 dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
1063 dnl that a universal binary is being produced.
1064 AC_SUBST(UNIVERSAL_BINARY)
1066 dnl ========================================================
1067 dnl Check for MacOS deployment target version
1068 dnl ========================================================
1070 MOZ_ARG_ENABLE_STRING(macos-target,
1071 [ --enable-macos-target=VER (default=10.5)
1072 Set the minimum MacOS version needed at runtime],
1073 [_MACOSX_DEPLOYMENT_TARGET=$enableval])
1077 if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
1078 dnl Use the specified value
1079 export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
1080 AC_DEFINE_UNQUOTED(__ENVIRONMENT_MAC_OS_X_VERION_MIN_REQUIRED__,$_MACOSX_DEPLOYMENT_TARGET)
1082 dnl No value specified on the command line or in the environment,
1083 dnl use architecture minimum.
1084 case "${target_cpu}" in
1086 export MACOSX_DEPLOYMENT_TARGET=10.5
1089 export MACOSX_DEPLOYMENT_TARGET=10.5
1092 export MACOSX_DEPLOYMENT_TARGET=10.6
1099 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
1101 dnl ========================================================
1102 dnl = Mac OS X SDK support
1103 dnl ========================================================
1106 MOZ_ARG_WITH_STRING(macos-sdk,
1107 [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
1108 MACOS_SDK_DIR=$withval)
1110 dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
1111 dnl NEXT_ROOT will be set and exported only if it's needed.
1112 AC_SUBST(MACOS_SDK_DIR)
1115 if test "$MACOS_SDK_DIR"; then
1116 dnl Sync this section with the ones in NSPR and NSS.
1117 dnl Changes to the cross environment here need to be accounted for in
1118 dnl the libIDL checks (below) and xpidl build.
1120 if test ! -d "$MACOS_SDK_DIR"; then
1121 AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
1122 specify a valid SDK. SDKs are installed when the optional cross-development
1123 tools are selected during the Xcode/Developer Tools installation.])
1126 GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
1127 if test "$GCC_VERSION_MAJOR" -lt "4" ; then
1128 AC_MSG_ERROR([You need to upgrade the compiler version to 4.x])
1130 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
1131 CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
1133 dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
1134 CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
1135 CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
1137 if test "$GCC_VERSION_FULL" = "4.0.0" ; then
1138 dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
1139 dnl that supports -syslibroot. Don't set NEXT_ROOT because it will
1140 dnl be ignored and cause warnings when -syslibroot is specified.
1141 dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
1142 dnl the -isysroot it receives, so this is only needed with 4.0.0.
1143 LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
1148 AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
1150 AC_TRY_COMPILE([#include <new>
1151 int main() { return 0; }],
1155 AC_MSG_RESULT($result)
1157 if test "$result" = "no" ; then
1158 AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
1162 fi # COMPILE_ENVIRONMENT
1164 if test -n "$MAKE"; then
1165 if test `echo $MAKE | grep -c make.py` != 1; then
1171 cygwin*|mingw*|mks*|msvc*)
1172 MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE make gmake, :)
1175 MOZ_PATH_PROGS(GMAKE, $GMAKE $NOT_PYMAKE gmake make, :)
1178 if test "$GMAKE" = ":"; then
1179 AC_MSG_ERROR([GNU make not found])
1183 if test "$COMPILE_ENVIRONMENT"; then
1189 fi # COMPILE_ENVIRONMENT
1191 dnl ========================================================
1192 dnl set the defaults first
1193 dnl ========================================================
1196 AR_EXTRACT='$(AR) x'
1211 MOZ_USER_DIR=".mozilla"
1213 MOZ_JS_LIBS='-L$(libdir) -lmozjs'
1214 MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(prefix)/lib'
1216 MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
1218 USE_DEPENDENT_LIBS=1
1220 _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
1222 if test -n "$CROSS_COMPILE"; then
1223 OS_TARGET="${target_os}"
1224 OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
1226 case "${target_os}" in
1227 linux*) OS_ARCH=Linux OS_TARGET=Linux ;;
1228 kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
1229 gnu*) OS_ARCH=GNU ;;
1230 solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
1231 mingw*) OS_ARCH=WINNT ;;
1232 wince*) OS_ARCH=WINCE ;;
1233 winmo*) OS_ARCH=WINCE ;;
1234 darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;;
1237 arm-android-eabi) OS_ARCH=Linux OS_TARGET=Android ;;
1240 OS_TARGET=`uname -s`
1241 OS_ARCH=`uname -s | sed -e 's|/|_|g'`
1242 OS_RELEASE=`uname -r`
1245 # Before this used `uname -m` when not cross compiling
1246 # but that breaks when you have a 64 bit kernel with a 32 bit userland.
1247 OS_TEST="${target_cpu}"
1251 HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
1253 #######################################################################
1254 # Master "Core Components" macros for getting the OS target #
1255 #######################################################################
1258 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
1259 # cross-compilation.
1263 # Define and override various archtecture-specific variables, including
1272 case "$HOST_OS_ARCH" in
1273 cygwin*|mingw*|mks*|msvc*)
1286 if test -z "$GNU_CC"; then
1287 if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then
1292 if test -z "$GNU_CXX"; then
1293 if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then
1294 SOLARIS_SUNPRO_CXX=1
1297 AC_SUBST(SOLARIS_SUNPRO_CC)
1298 AC_SUBST(SOLARIS_SUNPRO_CXX)
1310 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1313 HOST_OS_ARCH=UNIXWARE
1325 HOST_OS_ARCH=OpenVMS
1335 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1339 HOST_OS_ARCH=UNIXWARE
1345 if test -z "$CROSS_COMPILE" ; then
1351 # If uname -s returns "Windows_NT", we assume that we are using
1352 # the uname.exe in MKS toolkit.
1354 # The -r option of MKS uname only returns the major version number.
1355 # So we need to use its -v option to get the minor version number.
1356 # Moreover, it doesn't have the -p option, so we need to use uname -m.
1360 OS_MINOR_RELEASE=`uname -v`
1361 if test "$OS_MINOR_RELEASE" = "00"; then
1364 OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1366 CYGWIN32_NT|CYGWIN_NT*|MINGW*_NT*)
1368 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
1369 # the uname.exe in the Cygwin tools.
1370 # Prior to the Beta 20 release, Cygwin was called GNU-Win32.
1371 # If uname -s returns "CYGWIN32/NT", we assume that we are using
1372 # the uname.exe in the GNU-Win32 tools.
1373 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1374 # the uname.exe in the MSYS tools.
1376 OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1381 OS_RELEASE=`uname -v`.`uname -r`
1382 OS_TEST=${target_cpu}
1394 if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1398 OS_RELEASE=`uname -v`
1422 OS_RELEASE=`uname -v`
1428 OS_RELEASE=`uname -v`
1431 if test "$OS_TARGET" != "NTO"; then
1433 OS_RELEASE=`uname -v | sed 's/^\([0-9]\)\([0-9]*\)$/\1.\2/'`
1442 SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1448 OS_RELEASE=`uname -v`
1452 case "${target_os}" in
1455 WINCE_WINDOWS_MOBILE=1
1456 AC_DEFINE(WINCE_WINDOWS_MOBILE)
1464 case "${target_cpu}" in
1475 if test -z "$CROSS_COMPILE" ; then
1483 if test "$OS_ARCH" = "NCR"; then
1485 OS_RELEASE=`awk '{print $3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$/\2.\3/'`
1489 # Only set CPU_ARCH if we recognize the value of OS_TEST
1500 powerpc | ppc | rs6000)
1504 Alpha | alpha | ALPHA)
1537 if test -z "$OS_TARGET"; then
1540 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1542 dnl Set INTEL_ARCHITECTURE if we're compiling for x86-32 or x86-64.
1543 dnl ===============================================================
1547 INTEL_ARCHITECTURE=1
1550 dnl ========================================================
1551 dnl GNU specific defaults
1552 dnl ========================================================
1553 if test "$GNU_CC"; then
1554 # FIXME: Let us build with strict aliasing. bug 414641.
1555 CFLAGS="$CFLAGS -fno-strict-aliasing"
1556 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1557 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1558 DSO_LDOPTS='-shared'
1559 if test "$GCC_USE_GNU_LD"; then
1560 # Don't allow undefined symbols in libraries
1561 DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1563 WARNINGS_AS_ERRORS='-Werror'
1565 DSO_PIC_CFLAGS='-fPIC'
1566 ASFLAGS="$ASFLAGS -fPIC"
1567 _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
1568 _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
1569 _MOZ_EXCEPTIONS_FLAGS_ON='-fexceptions'
1570 _MOZ_EXCEPTIONS_FLAGS_OFF='-fno-exceptions'
1572 # Turn on GNU specific features
1573 # -Wall - turn on all warnings
1574 # -pedantic - make compiler warn about non-ANSI stuff, and
1575 # be a little bit stricter
1576 # Warnings slamm took out for now (these were giving more noise than help):
1577 # -Wbad-function-cast - warns when casting a function to a new return type
1578 # -Wshadow - removed because it generates more noise than help --pete
1579 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
1580 if test -z "$INTEL_CC"; then
1581 # Don't use -Wcast-align with ICC
1583 # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1584 hppa | ia64 | sparc | arm)
1587 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1592 dnl Turn pedantic on but disable the warnings for long long
1595 if test -z "$INTEL_CC"; then
1596 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
1599 _DEFINES_CFLAGS='-include $(DEPTH)/js-confdefs.h -DMOZILLA_CLIENT'
1600 _USE_CPP_INCLUDE_FLAG=1
1601 elif test "$SOLARIS_SUNPRO_CC"; then
1603 if test "$CPU_ARCH" = "sparc"; then
1604 # for Sun Studio on Solaris/SPARC
1605 DSO_PIC_CFLAGS='-xcode=pic32'
1607 DSO_PIC_CFLAGS='-KPIC'
1609 _DEFINES_CFLAGS='$(ACDEFINES) -D_JS_CONFDEFS_H_ -DMOZILLA_CLIENT'
1611 MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1612 MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1614 DSO_LDOPTS='-shared'
1615 if test "$GNU_LD"; then
1616 # Don't allow undefined symbols in libraries
1617 DSO_LDOPTS="$DSO_LDOPTS -z defs"
1621 DSO_PIC_CFLAGS='-KPIC'
1622 _DEFINES_CFLAGS='$(ACDEFINES) -D_JS_CONFDEFS_H_ -DMOZILLA_CLIENT'
1625 if test "$GNU_CXX"; then
1626 # FIXME: Let us build with strict aliasing. bug 414641.
1627 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
1628 # Turn on GNU specific features
1629 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
1630 if test -z "$INTEL_CC"; then
1631 # Don't use -Wcast-align with ICC
1633 # And don't use it on hppa, ia64, sparc, arm, since it's noisy there
1634 hppa | ia64 | sparc | arm)
1637 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1642 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/js-confdefs.h'
1643 _USE_CPP_INCLUDE_FLAG=1
1645 AC_CACHE_CHECK(whether the compiler supports -Wno-invalid-offsetof,
1646 ac_has_wno_invalid_offsetof,
1650 _SAVE_CXXFLAGS="$CXXFLAGS"
1651 CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1654 ac_has_wno_invalid_offsetof="yes",
1655 ac_has_wno_invalid_offsetof="no")
1656 CXXFLAGS="$_SAVE_CXXFLAGS"
1659 if test "$ac_has_wno_invalid_offsetof" = "yes"; then
1660 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1663 AC_CACHE_CHECK(whether the compiler supports -Wno-variadic-macros,
1664 ac_has_wno_variadic_macros,
1668 _SAVE_CXXFLAGS="$CXXFLAGS"
1669 CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-variadic-macros"
1672 ac_has_wno_variadic_macros="yes",
1673 ac_has_wno_variadic_macros="no")
1674 CXXFLAGS="$_SAVE_CXXFLAGS"
1677 if test "$ac_has_wno_variadic_macros" = "yes"; then
1678 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-variadic-macros"
1681 AC_CACHE_CHECK(whether the compiler supports -Werror=return-type,
1682 ac_has_werror_return_type,
1686 _SAVE_CXXFLAGS="$CXXFLAGS"
1687 CXXFLAGS="$CXXFLAGS -Werror=return-type"
1690 ac_has_werror_return_type="yes",
1691 ac_has_werror_return_type="no")
1692 CXXFLAGS="$_SAVE_CXXFLAGS"
1695 if test "$ac_has_werror_return_type" = "yes"; then
1696 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Werror=return-type"
1700 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_JS_CONFDEFS_H_ $(ACDEFINES)'
1703 dnl gcc can come with its own linker so it is better to use the pass-thru calls
1704 dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1705 dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1706 dnl normal behavior.
1707 dnl ========================================================
1709 MKSHLIB_UNFORCE_ALL=
1711 if test "$COMPILE_ENVIRONMENT"; then
1712 if test "$GNU_CC"; then
1713 AC_MSG_CHECKING(whether ld has archive extraction flags)
1714 AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1715 [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1716 ac_cv_mkshlib_force_and_unforce="no"
1717 exec 3<&0 <<LOOP_INPUT
1718 force="-Wl,--whole-archive"; unforce="-Wl,--no-whole-archive"
1719 force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1720 force="-Wl,-all"; unforce="-Wl,-none"
1727 AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1730 LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1732 if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1736 eval $ac_cv_mkshlib_force_and_unforce
1737 MKSHLIB_FORCE_ALL=$force
1738 MKSHLIB_UNFORCE_ALL=$unforce
1741 fi # COMPILE_ENVIRONMENT
1743 dnl =================================================================
1744 dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1745 dnl which is bad when cross compiling.
1746 dnl =================================================================
1747 if test "$COMPILE_ENVIRONMENT"; then
1748 configure_static_assert_macros='
1749 #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1750 #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1751 #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1754 dnl test that the macros actually work:
1755 AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1756 AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1759 ac_cv_static_assertion_macros_work="yes"
1760 AC_TRY_COMPILE([$configure_static_assert_macros],
1761 [CONFIGURE_STATIC_ASSERT(1)],
1763 ac_cv_static_assertion_macros_work="no")
1764 AC_TRY_COMPILE([$configure_static_assert_macros],
1765 [CONFIGURE_STATIC_ASSERT(0)],
1766 ac_cv_static_assertion_macros_work="no",
1769 AC_TRY_COMPILE([$configure_static_assert_macros],
1770 [CONFIGURE_STATIC_ASSERT(1)],
1772 ac_cv_static_assertion_macros_work="no")
1773 AC_TRY_COMPILE([$configure_static_assert_macros],
1774 [CONFIGURE_STATIC_ASSERT(0)],
1775 ac_cv_static_assertion_macros_work="no",
1779 AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1780 if test "$ac_cv_static_assertion_macros_work" = "no"; then
1781 AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1783 fi # COMPILE_ENVIRONMENT
1785 dnl ========================================================
1786 dnl Checking for 64-bit OS
1787 dnl ========================================================
1788 if test "$COMPILE_ENVIRONMENT"; then
1791 AC_MSG_CHECKING(for 64-bit OS)
1792 AC_TRY_COMPILE([$configure_static_assert_macros],
1793 [CONFIGURE_STATIC_ASSERT(sizeof(void*) == 8)],
1794 result="yes", result="no")
1795 AC_MSG_RESULT("$result")
1796 if test "$result" = "yes"; then
1797 AC_DEFINE(HAVE_64BIT_OS)
1800 AC_SUBST(HAVE_64BIT_OS)
1802 fi # COMPILE_ENVIRONMENT
1804 dnl ========================================================
1805 dnl Enable high-memory support on OS/2 by default.
1806 dnl ========================================================
1807 MOZ_OS2_HIGH_MEMORY=1
1808 MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1809 [ --disable-os2-high-mem Disable high-memory support on OS/2],
1810 MOZ_OS2_HIGH_MEMORY=,
1811 MOZ_OS2_HIGH_MEMORY=1 )
1812 AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1814 dnl ========================================================
1815 dnl = Use profiling compile flags
1816 dnl ========================================================
1817 MOZ_ARG_ENABLE_BOOL(profiling,
1818 [ --enable-profiling Set compile flags necessary for using sampling profilers (e.g. shark, perf)],
1822 dnl ========================================================
1823 dnl System overrides of the defaults for host
1824 dnl ========================================================
1827 HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
1828 HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
1829 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1832 *cygwin*|*mingw*|*mks*|*msvc*|*wince|*winmo)
1833 # we need Python 2.5 on Windows
1835 if test -n "$_WIN32_MSVC"; then
1837 HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1838 HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1839 HOST_RANLIB='echo ranlib'
1841 HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
1843 HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
1844 HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1845 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1846 HOST_BIN_SUFFIX=.exe
1849 dnl MinGW/MSYS does not need CYGWIN_WRAPPER
1850 PERL="/bin/sh ${_topsrcdir}/build/msys-perl-wrapper"
1853 CYGWIN_WRAPPER="${srcdir}/build/cygwin-wrapper"
1854 if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
1856 CYGWIN_WRAPPER="${_pwd}/${srcdir}/build/cygwin-wrapper"
1858 if test "`${PERL} -v | grep -c cygwin 2>/dev/null`" = 0; then
1860 PERL="${CYGWIN_WRAPPER} $PERL"
1863 if test "`${PYTHON} -c 'import sys; print sys.platform;'`" != "cygwin"; then
1864 PYTHON="${CYGWIN_WRAPPER} $PYTHON"
1869 case "${host_cpu}" in
1871 HOST_CFLAGS="$HOST_CFLAGS -D_AMD64_"
1877 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1878 HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1879 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1882 *-linux*|*-kfreebsd*-gnu|*-gnu*)
1883 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1884 HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1885 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1889 HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1890 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1891 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1892 HOST_BIN_SUFFIX=.exe
1897 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1898 HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
1899 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1903 HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1904 HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1908 dnl We require version 2.4 or newer of Python to build,
1909 dnl and 2.5 or newer on Windows.
1910 AC_MSG_CHECKING([for Python version >= $PYTHON_VERSION but not 3.x])
1912 $PYTHON -c "import sys; sys.exit(sys.version[:3] < sys.argv[1] or sys.version[:2] != '2.')" $PYTHON_VERSION
1915 if test "$_python_res" != 0; then
1916 AC_MSG_ERROR([Python $PYTHON_VERSION or higher (but not Python 3.x) is required.])
1918 AC_MSG_RESULT([yes])
1920 dnl ========================================================
1921 dnl System overrides of the defaults for target
1922 dnl ========================================================
1927 if test ! "$GNU_CC"; then
1928 if test ! "$HAVE_64BIT_OS"; then
1929 # Compiling with Visual Age C++ object model compat is the
1930 # default. To compile with object model ibm, add
1931 # AIX_OBJMODEL=ibm to .mozconfig.
1932 if test "$AIX_OBJMODEL" = "ibm"; then
1933 CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1940 AC_SUBST(AIX_OBJMODEL)
1941 DSO_LDOPTS='-qmkshrobj=1'
1942 DSO_CFLAGS='-qflag=w:w'
1944 LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1945 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
1947 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1948 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1949 if test "$COMPILE_ENVIRONMENT"; then
1952 AC_MSG_CHECKING([for VisualAge C++ compiler version >= 6.0.0.3])
1954 [#if (__IBMCPP__ < 600)
1955 #error "Bad compiler"
1957 _BAD_COMPILER=,_BAD_COMPILER=1)
1958 if test -n "$_BAD_COMPILER"; then
1960 AC_MSG_ERROR([VisualAge C++ version 6.0.0.3 or higher is required to build.])
1962 AC_MSG_RESULT([yes])
1965 TARGET_COMPILER_ABI="ibmc"
1966 CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1967 CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1970 case "${target_os}" in
1975 if test "$COMPILE_ENVIRONMENT"; then
1976 AC_CHECK_HEADERS(sys/inttypes.h)
1978 AC_DEFINE(JS_SYS_TYPES_H_DEFINES_EXACT_SIZE_TYPES)
1979 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1984 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1985 _PLATFORM_DEFAULT_TOOLKIT="cairo-beos"
1986 DSO_LDOPTS='-nostart'
1987 TK_LIBS='-lbe -lroot'
1989 if test "$COMPILE_ENVIRONMENT"; then
1990 AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
1991 AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
1993 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
1994 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
1997 MOZ_USER_DIR="Mozilla"
2001 dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
2010 _WARNINGS_CFLAGS="-Wall"
2011 _WARNINGS_CXXFLAGS="-Wall"
2012 # The test above doesn't work properly, at least on 3.1.
2013 MKSHLIB_FORCE_ALL=''
2014 MKSHLIB_UNFORCE_ALL=''
2020 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2021 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2022 # If we're building with --enable-profiling, we need a frame pointer.
2023 if test -z "$MOZ_PROFILING"; then
2024 MOZ_OPTIMIZE_FLAGS="-O3 -fomit-frame-pointer"
2026 MOZ_OPTIMIZE_FLAGS="-O3 -fno-omit-frame-pointer"
2029 CFLAGS="$CFLAGS -fpascal-strings -fno-common"
2030 CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
2033 STRIP="$STRIP -x -S"
2034 _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
2035 TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
2036 LDFLAGS="$LDFLAGS -framework Cocoa -lobjc"
2037 LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL'
2038 # The ExceptionHandling framework is needed for Objective-C exception
2039 # logging code in nsObjCExceptions.h. Currently we only use that in debug
2041 MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"
2043 dnl DTrace and -dead_strip don't interact well. See bug 403132.
2044 dnl ===================================================================
2045 if test "x$enable_dtrace" = "xyes"; then
2046 echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
2048 dnl check for the presence of the -dead_strip linker flag
2049 AC_MSG_CHECKING([for -dead_strip option to ld])
2050 _SAVE_LDFLAGS=$LDFLAGS
2051 LDFLAGS="$LDFLAGS -Wl,-dead_strip"
2052 AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
2053 if test -n "$_HAVE_DEAD_STRIP" ; then
2054 AC_MSG_RESULT([yes])
2055 MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
2060 LDFLAGS=$_SAVE_LDFLAGS
2062 MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
2066 if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` != "elf"; then
2067 DLL_SUFFIX=".so.1.0"
2068 DSO_LDOPTS="-shared"
2070 if test ! "$GNU_CC"; then
2071 DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
2077 if test ! "$GNU_CC"; then
2081 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -o $@'
2082 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_LDOPTS) -o $@'
2083 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2086 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2087 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2091 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2092 AC_DEFINE(_LARGEFILE64_SOURCE)
2097 if test ! "$GNU_CC"; then
2098 DSO_LDOPTS='-b -Wl,+s'
2101 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
2102 MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
2103 CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
2105 DSO_LDOPTS='-b -E +s'
2106 MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2107 MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
2109 MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
2110 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2115 DSO_LDOPTS='-elf -shared'
2117 if test "$GNU_CC"; then
2118 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2119 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2120 MKSHLIB_FORCE_ALL='-Wl,-all'
2121 MKSHLIB_UNFORCE_ALL='-Wl,-none'
2122 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
2124 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2125 MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
2126 MKSHLIB_FORCE_ALL='-all'
2127 MKSHLIB_UNFORCE_ALL='-none'
2133 dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must*
2134 dnl compile and link using -n32
2136 TARGET_COMPILER_ABI=n32
2137 DSO_LDOPTS='-elf -shared'
2138 MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2139 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2140 _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
2141 _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
2142 if test "$GNU_CC"; then
2143 MKSHLIB_FORCE_ALL='-Wl,-all'
2144 MKSHLIB_UNFORCE_ALL='-Wl,-none'
2145 _WARNINGS_CFLAGS="-Wall"
2146 _WARNINGS_CXXFLAGS="-Wall"
2147 CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
2149 MKSHLIB_FORCE_ALL='-all'
2150 MKSHLIB_UNFORCE_ALL='-none'
2156 CFLAGS="$CFLAGS -woff 3262 -G 4"
2157 CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
2158 if test -n "$USE_N32"; then
2159 ASFLAGS="$ASFLAGS -n32"
2160 CFLAGS="$CFLAGS -n32"
2161 CXXFLAGS="$CXXFLAGS -n32"
2162 LDFLAGS="$LDFLAGS -n32"
2164 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2165 AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
2168 if test -z "$GNU_CXX"; then
2174 # Note: both GNU_CC and INTEL_CC are set when using Intel's C compiler.
2175 # Similarly for GNU_CXX and INTEL_CXX.
2176 if test "$INTEL_CC" -o "$INTEL_CXX"; then
2177 # -Os has been broken on Intel's C/C++ compilers for quite a
2178 # while; Intel recommends against using it.
2179 MOZ_OPTIMIZE_FLAGS="-O2"
2180 MOZ_DEBUG_FLAGS="-g"
2181 elif test "$GNU_CC" -o "$GNU_CXX"; then
2182 GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
2183 case $GCC_VERSION in
2185 # -Os is broken on gcc 4.1.x 4.2.x, 4.5.x we need to tweak it to get good results.
2186 MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
2188 # If we're building with --enable-profiling, we need a frame pointer.
2189 if test -z "$MOZ_PROFILING"; then
2190 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fomit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK"
2192 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-omit-frame-pointer $MOZ_OPTIMIZE_SIZE_TWEAK"
2194 MOZ_DEBUG_FLAGS="-g"
2197 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2199 case "${target_cpu}" in
2201 CFLAGS="$CFLAGS -mieee"
2202 CXXFLAGS="$CXXFLAGS -mieee"
2205 MOZ_DEBUG_FLAGS="-g" # We want inlining
2211 TARGET_COMPILER_ABI=msvc
2212 MOZ_TOOLS_DIR=`echo $MOZ_TOOLS`
2214 AR_EXTRACT="$AR -extract"
2216 AR_FLAGS='-OUT:"$@"'
2223 if test -z "$RC"; then
2226 # certain versions of cygwin's makedepend barf on the
2227 # #include <string> vs -I./dist/include/string issue so don't use it
2233 HOST_AR='lib -OUT:$@'
2234 HOST_RANLIB='echo ranlib'
2235 HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
2238 WARNINGS_AS_ERRORS='-WX'
2239 MOZ_OPTIMIZE_FLAGS='-Ox'
2240 AR_FLAGS='-NOLOGO -OUT:"$@"'
2242 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2243 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2246 DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
2247 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2249 IMPORT_LIB_SUFFIX=lib
2250 dnl Need to force-link against mozalloc because it's used in the shunt
2251 LIBS="$LIBS \$(LIBXUL_DIST)/lib/mozalloc.lib"
2252 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2255 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
2256 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
2258 MKSHLIB_UNFORCE_ALL=
2259 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2260 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2261 MOZ_DEBUG_FLAGS='-Zi'
2262 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2264 MOZ_JS_LIBS='$(libdir)/mozjs.lib'
2266 RANLIB='echo not_ranlib'
2267 STRIP='echo not_strip'
2268 TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
2271 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2274 AC_DEFINE(HAVE_SNPRINTF)
2279 AC_DEFINE(HW_THREADS)
2280 AC_DEFINE(STDC_HEADERS)
2281 AC_DEFINE(NEW_H, <new>)
2282 AC_DEFINE(WIN32_LEAN_AND_MEAN)
2283 AC_DEFINE(HAVE_LOCALTIME_R)
2285 TARGET_MD_ARCH=win32
2286 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2288 MOZ_USER_DIR="Mozilla"
2290 dnl Default to Windows Mobile components enabled
2291 WINCE_WINDOWS_MOBILE=1
2293 MOZ_ARG_DISABLE_BOOL(windows-mobile-components,
2294 [ --disable-windows-mobile-components
2295 Disable Windows Mobile specific components from
2297 WINCE_WINDOWS_MOBILE=,
2298 WINCE_WINDOWS_MOBILE=1)
2300 if test "$WINCE_WINDOWS_MOBILE"; then
2301 AC_DEFINE(WINCE_WINDOWS_MOBILE)
2310 AC_DEFINE(__SYMBIAN32__)
2313 AC_DEFINE(__SUPPORT_CPP_EXCEPTIONS__)
2314 AC_DEFINE(MOZ_STDERR_TO_STDOUT)
2315 AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
2316 AC_DEFINE(HAVE_SOCKLEN_T)
2329 TARGET_NSPR_MDCPUCFG='\"md/_symbian.cfg\"'
2330 RANLIB='echo no ranlib '
2333 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2338 # certain versions of cygwin's makedepend barf on the
2339 # #include <string> vs -I./dist/include/string issue so don't use it
2341 if test -n "$GNU_CC"; then
2342 CC="$CC -mno-cygwin"
2343 CXX="$CXX -mno-cygwin"
2344 CPP="$CPP -mno-cygwin"
2345 CFLAGS="$CFLAGS -mms-bitfields"
2346 CXXFLAGS="$CXXFLAGS -mms-bitfields"
2347 DSO_LDOPTS='-shared'
2348 MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
2349 MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2351 # Use temp file for windres (bug 213281)
2352 RCFLAGS='-O coff --use-temp-file'
2353 # mingw doesn't require kernel32, user32, and advapi32 explicitly
2354 LIBS="$LIBS -lgdi32 -lwinmm -lwsock32"
2355 MOZ_JS_LIBS='-L$(libdir) -lmozjs'
2357 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core -lmozalloc'
2358 XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom -lmozalloc'
2360 IMPORT_LIB_SUFFIX=dll.a
2361 GCC_VERSION=`$CC -v 2>&1 | awk '/^gcc version/ { print $3 }'`
2363 TARGET_COMPILER_ABI=msvc
2367 if test "$AS_BIN"; then
2368 AS="$(basename "$AS_BIN")"
2370 AR='lib -NOLOGO -OUT:"$@"'
2372 RANLIB='echo not_ranlib'
2373 STRIP='echo not_strip'
2379 GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
2385 IMPORT_LIB_SUFFIX=lib
2386 MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2387 MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
2389 MKSHLIB_UNFORCE_ALL=
2390 DSO_LDOPTS=-SUBSYSTEM:WINDOWS
2391 _USE_CPP_INCLUDE_FLAG=1
2392 _DEFINES_CFLAGS='-FI $(DEPTH)/js-confdefs.h -DMOZILLA_CLIENT'
2393 _DEFINES_CXXFLAGS='-FI $(DEPTH)/js-confdefs.h -DMOZILLA_CLIENT'
2394 CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2395 CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
2396 # MSVC warnings C4244 and C4800 are ubiquitous, useless, and annoying.
2397 CXXFLAGS="$CXXFLAGS -wd4244 -wd4800"
2398 LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
2399 MOZ_DEBUG_FLAGS='-Zi'
2400 MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2401 WARNINGS_AS_ERRORS='-WX'
2402 # If we're building with --enable-profiling, we need -Oy-, which forces a frame pointer.
2403 if test -z "$MOZ_PROFILING"; then
2404 MOZ_OPTIMIZE_FLAGS='-O1'
2406 MOZ_OPTIMIZE_FLAGS='-O1 -Oy-'
2408 MOZ_JS_LIBS='$(libdir)/mozjs.lib'
2410 DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2411 XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2412 LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2413 MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
2414 if test $_MSC_VER -ge 1400; then
2415 LDFLAGS="$LDFLAGS -LARGEADDRESSAWARE -NXCOMPAT"
2416 dnl For profile-guided optimization
2417 PROFILE_GEN_CFLAGS="-GL"
2418 PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
2419 dnl XXX: PGO builds can fail with warnings treated as errors,
2420 dnl specifically "no profile data available" appears to be
2421 dnl treated as an error sometimes. This might be a consequence
2422 dnl of using WARNINGS_AS_ERRORS in some modules, combined
2423 dnl with the linker doing most of the work in the whole-program
2424 dnl optimization/PGO case. I think it's probably a compiler bug,
2425 dnl but we work around it here.
2426 PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
2427 dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
2428 dnl Probably also a compiler bug, but what can you do?
2429 PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
2430 LDFLAGS="$LDFLAGS -DYNAMICBASE"
2433 AC_DEFINE(HAVE_SNPRINTF)
2438 AC_DEFINE(HW_THREADS)
2439 AC_DEFINE(STDC_HEADERS)
2440 AC_DEFINE(NEW_H, <new>)
2441 AC_DEFINE(WIN32_LEAN_AND_MEAN)
2442 TARGET_MD_ARCH=win32
2443 _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2445 MOZ_USER_DIR="Mozilla"
2447 dnl Hardcode to win95 for now - cls
2448 TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2450 dnl set NO_X11 defines here as the general check is skipped on win32
2454 dnl MinGW/MSYS doesn't provide or need cygpath
2459 MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2461 *-cygwin*|*-msvc*|*-mks*)
2462 CYGPATH_W="cygpath -a -w"
2463 CYGPATH_S="sed -e s|\\\\|/|g"
2464 MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
2468 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2470 if test -z "$MOZ_TOOLS"; then
2471 AC_MSG_ERROR([MOZ_TOOLS is not set])
2474 MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd -W`
2475 if test "$?" != "0" -o -z "$MOZ_TOOLS_DIR"; then
2476 AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2478 MOZ_TOOLS_BIN_DIR="$(cd "$MOZ_TOOLS_DIR/bin" && pwd)"
2479 if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_BINDIR:"` = 0; then
2480 AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2482 MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
2489 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.])
2495 if test "$HAVE_64BIT_OS"; then
2496 AC_MSG_ERROR([You are targeting i386 but using the 64-bit compiler.])
2499 if test $_MSC_VER -ge 1400; then
2500 LDFLAGS="$LDFLAGS -SAFESEH"
2502 AC_CHECK_HEADERS(mmintrin.h)
2515 AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2519 if test "$HAVE_64BIT_OS"; then
2526 CFLAGS="$CFLAGS -Dunix"
2527 CXXFLAGS="$CXXFLAGS -Dunix"
2528 if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2530 DSO_PIC_CFLAGS='-fPIC -DPIC'
2531 DSO_LDOPTS='-shared'
2532 BIN_FLAGS='-Wl,--export-dynamic'
2534 DSO_PIC_CFLAGS='-fPIC -DPIC'
2535 DLL_SUFFIX=".so.1.0"
2536 DSO_LDOPTS='-shared'
2538 # This will fail on a.out systems prior to 1.5.1_ALPHA.
2539 MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2540 MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2541 if test "$LIBRUNPATH"; then
2542 DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2544 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2545 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2550 AC_DEFINE(_QNX_SOURCE)
2553 WARNINGS_AS_ERRORS=''
2554 MOZ_OPTIMIZE_FLAGS="-O"
2555 MOZ_DEBUG_FLAGS="-gstabs"
2558 LIBS="$LIBS -lsocket -lstdc++"
2559 _DEFINES_CFLAGS='-include $(DEPTH)/js-confdefs.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
2560 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/js-confdefs.h -D_POSIX_C_SOURCE=199506'
2561 if test "$with_x" != "yes"
2563 _PLATFORM_DEFAULT_TOOLKIT="photon"
2564 TK_CFLAGS='-I/usr/include/photon'
2567 case "${target_cpu}" in
2569 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
2575 DLL_SUFFIX=".so.1.0"
2577 DSO_PIC_CFLAGS='-fPIC'
2578 DSO_LDOPTS='-shared -fPIC'
2579 if test "$LIBRUNPATH"; then
2580 DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2585 AC_DEFINE(NO_PW_GECOS)
2586 AC_DEFINE(NO_UDSOCK)
2587 AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
2589 MKSHLIB_FORCE_ALL='-all'
2590 MKSHLIB_UNFORCE_ALL='-none'
2592 AS_DASH_C_FLAG='-Wc/names=as_is'
2594 DSO_LDOPTS='-shared -auto_symvec'
2596 MOZ_DEBUG_LDFLAGS='-g'
2598 CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
2599 CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
2604 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2605 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2608 AC_DEFINE(OS2EMX_PLAIN_CHAR)
2609 AC_DEFINE(TCPV40HDRS)
2615 IMPORT_LIB_SUFFIX=lib
2619 CFLAGS="$CFLAGS -Zomf"
2620 CXXFLAGS="$CXXFLAGS -Zomf"
2622 BIN_FLAGS='-Zlinker /ST:0x100000'
2626 WARNINGS_AS_ERRORS='-Werror'
2627 MOZ_DEBUG_FLAGS="-g -fno-inline"
2628 MOZ_OPTIMIZE_FLAGS="-O2"
2629 MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2630 DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2631 LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
2633 _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2636 MOZ_USER_DIR="Mozilla"
2638 if test "$MOZTOOLS"; then
2639 MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2641 AC_MSG_ERROR([MOZTOOLS is not set])
2643 if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2644 DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2645 LDFLAGS="$LDFLAGS -Zhigh-mem"
2646 MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2647 AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2650 # GCC for OS/2 currently predefines these, but we don't want them
2651 _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2652 _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2654 AC_CACHE_CHECK(for __declspec(dllexport),
2656 [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2658 ac_os2_declspec="yes",
2659 ac_os2_declspec="no")])
2660 if test "$ac_os2_declspec" != "yes"; then
2661 AC_MSG_ERROR([Compiler does not support __declspec(dllexport), install GCC-4.3.2 or newer])
2666 if test "$GNU_CC"; then
2667 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2668 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2671 MOZ_DEBUG_FLAGS='-g'
2672 ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
2673 CFLAGS="$CFLAGS -ieee"
2674 CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee -ptr $(DIST)/cxx_repository'
2675 DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
2678 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2679 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2680 MKSHLIB_FORCE_ALL='-all'
2681 MKSHLIB_UNFORCE_ALL='-none'
2682 dnl Might fix the libxpcom.so breakage on this platform as well....
2683 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2684 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2686 if test -z "$GNU_CXX"; then
2689 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2693 DIRENT_INO=d_stat.st_ino
2694 dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
2695 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2696 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2697 dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
2698 AC_DEFINE(STDC_HEADERS)
2699 if test "$no_x" = "yes"; then
2700 _PLATFORM_DEFAULT_TOOLKIT='photon'
2701 TK_CFLAGS='-I/usr/nto/include/photon'
2702 TK_LIBS='-lphoton -lphrender'
2707 AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2708 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2709 CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
2710 if test ! "$GNU_CC"; then
2717 TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2718 if test -z "$CROSS_COMPILE" && pkginfo -q SUNWpr && pkginfo -q SUNWprd; then
2719 NO_NSPR_CONFIG_SYSTEM_LDFLAGS="-L/usr/lib/mps -R/usr/lib/mps -lnspr4"
2720 NO_NSPR_CONFIG_SYSTEM_CFLAGS="-I/usr/include/mps"
2721 NO_NSPR_CONFIG_SYSTEM_VERSION=["`pkgparam SUNWpr SUNW_PRODVERS | sed -e 's/^[1-9][0-9]*\.[0-9][0-9]*$/&.0/'`"]
2725 # $ORIGIN/.. is for shared libraries under components/ to locate shared
2726 # libraries one level up (e.g. libnspr4.so)
2727 if test "$SOLARIS_SUNPRO_CC"; then
2728 LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..' -z lazyload -z combreloc -z muldefs"
2729 LIBS="-lCrun -lCstd -lc $LIBS"
2731 AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2732 CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all -D__FUNCTION__=__func__"
2733 CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife,tmplrefstatic,extensions -norunpath -D__FUNCTION__=__func__ -template=no%extdef"
2734 _MOZ_EXCEPTIONS_FLAGS_ON='-features=except'
2735 _MOZ_EXCEPTIONS_FLAGS_OFF='-features=no%except'
2736 LDFLAGS="-xildoff $LDFLAGS"
2737 if test -z "$CROSS_COMPILE" -a -f /usr/lib/ld/map.noexstk; then
2738 _SAVE_LDFLAGS=$LDFLAGS
2739 LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2740 AC_TRY_LINK([#include <stdio.h>],
2741 [printf("Hello World\n");],
2743 [LDFLAGS=$_SAVE_LDFLAGS])
2745 WARNINGS_AS_ERRORS='-Werror'
2746 MOZ_OPTIMIZE_FLAGS="-xO4"
2747 MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2748 MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2749 MKSHLIB_FORCE_ALL='-z allextract'
2750 MKSHLIB_UNFORCE_ALL='-z defaultextract'
2757 AS='/usr/ccs/bin/as'
2758 ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2760 TARGET_COMPILER_ABI="sunc"
2761 CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2762 CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2763 AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
2767 [#if (__SUNPRO_CC < 0x590)
2770 _BAD_COMPILER=,_BAD_COMPILER=1)
2771 if test -n "$_BAD_COMPILER"; then
2773 AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
2778 [#if (__SUNPRO_CC >= 0x5100)
2779 #error "Sun C++ 5.10 or above"
2781 _ABOVE_SS12U1=,_ABOVE_SS12U1=1)
2782 if test "$_ABOVE_SS12U1"; then
2784 CXXFLAGS="$CXXFLAGS -xannotate=no"
2786 AC_MSG_RESULT([$_res])
2789 LDFLAGS="$LDFLAGS -Wl,-z,ignore -Wl,-R,'\$\$ORIGIN:\$\$ORIGIN/..' -Wl,-z,lazyload -Wl,-z,combreloc -Wl,-z,muldefs"
2791 MKSHLIB_FORCE_ALL='-Wl,-z -Wl,allextract'
2792 MKSHLIB_UNFORCE_ALL='-Wl,-z -Wl,defaultextract'
2793 ASFLAGS="$ASFLAGS -fPIC"
2794 DSO_LDOPTS='-shared'
2796 _WARNINGS_CXXFLAGS=''
2797 if test "$OS_RELEASE" = "5.3"; then
2798 AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2801 if test "$OS_RELEASE" = "5.5.1"; then
2802 AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2807 DSO_LDOPTS='-Bdynamic'
2808 MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2809 MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2811 AC_DEFINE(SPRINTF_RETURNS_STRING)
2812 case "$(target_os)" in
2814 DLL_SUFFIX='.so.1.0'
2820 NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2824 HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2828 AC_DEFINE(NO_PW_GECOS)
2830 _PLATFORM_DEFAULT_TOOLKIT=cairo-android
2831 TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
2833 MOZ_GFX_OPTIMIZE_MOBILE=1
2834 # If we're building with --enable-profiling, we need a frame pointer.
2835 if test -z "$MOZ_PROFILING"; then
2836 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions -fomit-frame-pointer"
2838 MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions -fno-omit-frame-pointer"
2844 dnl Only one oddball right now (QNX), but this gives us flexibility
2845 dnl if any other platforms need to override this in the future.
2846 AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2848 dnl ========================================================
2849 dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2850 dnl by now will not have any way to link most binaries (tests
2851 dnl as well as viewer, apprunner, etc.), because some symbols
2852 dnl will be left out of the "composite" .so's by ld as unneeded.
2853 dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2854 dnl they can link in the static libs that provide the missing
2856 dnl ========================================================
2857 NO_LD_ARCHIVE_FLAGS=
2858 if test -z "$MKSHLIB_FORCE_ALL" -o -z "$MKSHLIB_UNFORCE_ALL"; then
2859 NO_LD_ARCHIVE_FLAGS=1
2863 NO_LD_ARCHIVE_FLAGS=
2866 NO_LD_ARCHIVE_FLAGS=
2869 NO_LD_ARCHIVE_FLAGS=
2871 *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince|*-winmo)
2872 if test -z "$GNU_CC"; then
2873 NO_LD_ARCHIVE_FLAGS=
2877 AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2879 dnl ========================================================
2880 dnl = Flags to strip unused symbols from .so components
2881 dnl ========================================================
2883 *-linux*|*-kfreebsd*-gnu|*-gnu*)
2884 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2887 if test -z "$GNU_CC"; then
2888 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2890 if test -z "$GCC_USE_GNU_LD"; then
2891 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2893 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2898 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2901 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2903 *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince|*-winmo)
2904 if test -n "$GNU_CC"; then
2905 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2910 if test -z "$COMPILE_ENVIRONMENT"; then
2911 SKIP_COMPILER_CHECKS=1
2912 SKIP_LIBRARY_CHECKS=1
2915 dnl Configure JIT support
2924 ENABLE_POLYIC_TYPED_ARRAY=1
2925 AC_DEFINE(JS_CPU_X86)
2926 AC_DEFINE(JS_NUNBOX32)
2934 ENABLE_POLYIC_TYPED_ARRAY=1
2935 AC_DEFINE(JS_CPU_X64)
2936 AC_DEFINE(JS_PUNBOX64)
2944 AC_DEFINE(JS_CPU_ARM)
2945 AC_DEFINE(JS_NUNBOX32)
2950 AC_DEFINE(JS_CPU_SPARC)
2954 MOZ_ARG_DISABLE_BOOL(methodjit,
2955 [ --disable-methodjit Disable method JIT support],
2958 MOZ_ARG_DISABLE_BOOL(monoic,
2959 [ --disable-monoic Disable use of MICs by JIT compiler],
2962 MOZ_ARG_DISABLE_BOOL(polyic,
2963 [ --disable-polyic Disable use of PICs by JIT compiler],
2966 MOZ_ARG_DISABLE_BOOL(tracejit,
2967 [ --disable-tracejit Disable tracing JIT support],
2970 MOZ_ARG_ENABLE_BOOL(methodjit-spew,
2971 [ --enable-methodjit-spew Enable method JIT spew support],
2972 ENABLE_METHODJIT_SPEW=1,
2973 ENABLE_METHODJIT_SPEW= )
2975 AC_SUBST(ENABLE_METHODJIT)
2977 if test "$ENABLE_METHODJIT"; then
2978 AC_DEFINE(JS_METHODJIT)
2981 if test "$ENABLE_MONOIC"; then
2982 AC_DEFINE(JS_MONOIC)
2985 if test "$ENABLE_POLYIC"; then
2986 AC_DEFINE(JS_POLYIC)
2989 if test "$ENABLE_POLYIC_TYPED_ARRAY"; then
2990 AC_DEFINE(JS_POLYIC_TYPED_ARRAY)
2993 if test "$ENABLE_METHODJIT_SPEW"; then
2994 AC_DEFINE(JS_METHODJIT_SPEW)
2997 if test "$ENABLE_TRACEJIT"; then
2999 AC_DEFINE(FEATURE_NANOJIT)
3000 AC_DEFINE(JS_TRACER)
3004 AC_DEFINE(AVMPLUS_IA32)
3007 AC_DEFINE(AVMPLUS_AMD64)
3008 AC_DEFINE(AVMPLUS_64BIT)
3011 AC_DEFINE(AVMPLUS_ARM)
3014 AC_DEFINE(AVMPLUS_SPARC)
3019 *-linux*|*-android-eabi)
3020 AC_DEFINE(AVMPLUS_UNIX)
3021 AC_DEFINE(AVMPLUS_LINUX)
3024 AC_DEFINE(AVMPLUS_UNIX)
3027 AC_DEFINE(AVMPLUS_UNIX)
3029 *-freebsd*|*-kfreebsd*)
3030 AC_DEFINE(AVMPLUS_UNIX)
3033 AC_DEFINE(AVMPLUS_UNIX)
3035 *-cygwin*|*-mingw*|*-mks*|*-msvc*|*-wince|*-winmo)
3036 AC_DEFINE(AVMPLUS_WIN32)
3039 AC_DEFINE(AVMPLUS_OS2)
3042 AC_MSG_ERROR([Unrecognized nanojit platform. Use --disable-tracejit to build without tracing JIT support.])
3045 fi # ENABLE_TRACEJIT
3047 AC_SUBST(ENABLE_TRACEJIT)
3048 AC_SUBST(NANOJIT_ARCH)
3050 if test -z "$SKIP_COMPILER_CHECKS"; then
3051 dnl Checks for typedefs, structures, and compiler characteristics.
3052 dnl ========================================================
3060 AC_MSG_CHECKING(for __stdcall)
3061 AC_CACHE_VAL(ac_cv___stdcall,
3062 [AC_TRY_COMPILE([template <typename Method> struct foo;
3063 template <> struct foo<void (*)()> {};
3064 template <> struct foo<void (__stdcall*)()> {};],
3066 [ac_cv___stdcall=true],
3067 [ac_cv___stdcall=false])])
3068 if test "$ac_cv___stdcall" = true ; then
3069 AC_DEFINE(HAVE_STDCALL)
3075 AC_MSG_CHECKING(for ssize_t)
3076 AC_CACHE_VAL(ac_cv_type_ssize_t,
3077 [AC_TRY_COMPILE([#include <stdio.h>
3078 #include <sys/types.h>],
3080 [ac_cv_type_ssize_t=true],
3081 [ac_cv_type_ssize_t=false])])
3082 if test "$ac_cv_type_ssize_t" = true ; then
3083 AC_DEFINE(HAVE_SSIZE_T)
3088 AC_STRUCT_ST_BLKSIZE
3089 AC_MSG_CHECKING(for siginfo_t)
3090 AC_CACHE_VAL(ac_cv_siginfo_t,
3091 [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
3092 #include <signal.h>],
3094 [ac_cv_siginfo_t=true],
3095 [ac_cv_siginfo_t=false])])
3096 if test "$ac_cv_siginfo_t" = true ; then
3097 AC_DEFINE(HAVE_SIGINFO_T)
3103 dnl Find exact-width integer types, or figure them out
3105 dnl ========================================================
3106 dnl Once this is working, we can delete the code for int16_t,
3109 AC_CHECK_HEADER(stdint.h)
3110 if test "$ac_cv_header_stdint_h" = yes; then
3111 AC_DEFINE(JS_HAVE_STDINT_H)
3113 dnl We'll figure them out for ourselves. List more likely types
3114 dnl earlier. If we ever really encounter a size for which none of
3115 dnl the listed types are appropriate, we'll get a configure-time
3116 dnl error; just add the right answer.
3117 MOZ_N_BYTE_TYPE(JS_INT8_TYPE, 1, [char])
3118 MOZ_N_BYTE_TYPE(JS_INT16_TYPE, 2, [short int long])
3119 MOZ_N_BYTE_TYPE(JS_INT32_TYPE, 4, [int long 'long long' short])
3120 MOZ_N_BYTE_TYPE(JS_INT64_TYPE, 8, [int long 'long long'])
3121 MOZ_N_BYTE_TYPE(JS_INTPTR_TYPE, sizeof (void *),
3122 [int long 'long long' short])
3125 MOZ_SIZE_OF_TYPE(JS_BYTES_PER_WORD, void*, 4 8)
3126 if test "$moz_cv_size_of_JS_BYTES_PER_WORD" -eq "4"; then
3127 AC_DEFINE(JS_BITS_PER_WORD_LOG2, 5)
3128 elif test "$moz_cv_size_of_JS_BYTES_PER_WORD" -eq "8"; then
3129 AC_DEFINE(JS_BITS_PER_WORD_LOG2, 6)
3131 AC_MSG_ERROR([Unexpected JS_BYTES_PER_WORD])
3134 MOZ_ALIGN_OF_TYPE(JS_ALIGN_OF_POINTER, void*, 2 4 8 16)
3135 MOZ_SIZE_OF_TYPE(JS_BYTES_PER_DOUBLE, double, 6 8 10 12 14)
3137 dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
3138 dnl ========================================================
3139 AC_MSG_CHECKING(for int16_t)
3140 AC_CACHE_VAL(ac_cv_int16_t,
3141 [AC_TRY_COMPILE([#include <stdio.h>
3142 #include <sys/types.h>],
3144 [ac_cv_int16_t=true],
3145 [ac_cv_int16_t=false])])
3146 if test "$ac_cv_int16_t" = true ; then
3147 AC_DEFINE(HAVE_INT16_T)
3152 AC_MSG_CHECKING(for int32_t)
3153 AC_CACHE_VAL(ac_cv_int32_t,
3154 [AC_TRY_COMPILE([#include <stdio.h>
3155 #include <sys/types.h>],
3157 [ac_cv_int32_t=true],
3158 [ac_cv_int32_t=false])])
3159 if test "$ac_cv_int32_t" = true ; then
3160 AC_DEFINE(HAVE_INT32_T)
3165 AC_MSG_CHECKING(for int64_t)
3166 AC_CACHE_VAL(ac_cv_int64_t,
3167 [AC_TRY_COMPILE([#include <stdio.h>
3168 #include <sys/types.h>],
3170 [ac_cv_int64_t=true],
3171 [ac_cv_int64_t=false])])
3172 if test "$ac_cv_int64_t" = true ; then
3173 AC_DEFINE(HAVE_INT64_T)
3178 AC_MSG_CHECKING(for int64)
3179 AC_CACHE_VAL(ac_cv_int64,
3180 [AC_TRY_COMPILE([#include <stdio.h>
3181 #include <sys/types.h>],
3184 [ac_cv_int64=false])])
3185 if test "$ac_cv_int64" = true ; then
3186 AC_DEFINE(HAVE_INT64)
3191 AC_MSG_CHECKING(for uint)
3192 AC_CACHE_VAL(ac_cv_uint,
3193 [AC_TRY_COMPILE([#include <stdio.h>
3194 #include <sys/types.h>],
3197 [ac_cv_uint=false])])
3198 if test "$ac_cv_uint" = true ; then
3199 AC_DEFINE(HAVE_UINT)
3204 AC_MSG_CHECKING(for uint_t)
3205 AC_CACHE_VAL(ac_cv_uint_t,
3206 [AC_TRY_COMPILE([#include <stdio.h>
3207 #include <sys/types.h>],
3209 [ac_cv_uint_t=true],
3210 [ac_cv_uint_t=false])])
3211 if test "$ac_cv_uint_t" = true ; then
3212 AC_DEFINE(HAVE_UINT_T)
3217 AC_MSG_CHECKING(for uint16_t)
3218 AC_CACHE_VAL(ac_cv_uint16_t,
3219 [AC_TRY_COMPILE([#include <stdio.h>
3220 #include <sys/types.h>],
3221 [uint16_t foo = 0;],
3222 [ac_cv_uint16_t=true],
3223 [ac_cv_uint16_t=false])])
3224 if test "$ac_cv_uint16_t" = true ; then
3225 AC_DEFINE(HAVE_UINT16_T)
3231 dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
3232 dnl are defined when compiling C++ but not C. Since the result of this
3233 dnl test is used only in C++, do it in C++.
3236 AC_MSG_CHECKING(for uname.domainname)
3237 AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
3238 [AC_TRY_COMPILE([#include <sys/utsname.h>],
3239 [ struct utsname *res; char *domain;
3240 (void)uname(res); if (res != 0) { domain = res->domainname; } ],
3241 [ac_cv_have_uname_domainname_field=true],
3242 [ac_cv_have_uname_domainname_field=false])])
3244 if test "$ac_cv_have_uname_domainname_field" = "true"; then
3245 AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
3251 AC_MSG_CHECKING(for uname.__domainname)
3252 AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
3253 [AC_TRY_COMPILE([#include <sys/utsname.h>],
3254 [ struct utsname *res; char *domain;
3255 (void)uname(res); if (res != 0) { domain = res->__domainname; } ],
3256 [ac_cv_have_uname_us_domainname_field=true],
3257 [ac_cv_have_uname_us_domainname_field=false])])
3259 if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
3260 AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
3268 dnl Check for .hidden assembler directive and visibility attribute.
3269 dnl Borrowed from glibc configure.in
3270 dnl ===============================================================
3271 if test "$GNU_CC"; then
3272 AC_CACHE_CHECK(for visibility(hidden) attribute,
3273 ac_cv_visibility_hidden,
3274 [cat > conftest.c <<EOF
3275 int foo __attribute__ ((visibility ("hidden"))) = 1;
3277 ac_cv_visibility_hidden=no
3278 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3279 if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
3280 ac_cv_visibility_hidden=yes
3285 if test "$ac_cv_visibility_hidden" = "yes"; then
3286 AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
3288 AC_CACHE_CHECK(for visibility(default) attribute,
3289 ac_cv_visibility_default,
3290 [cat > conftest.c <<EOF
3291 int foo __attribute__ ((visibility ("default"))) = 1;
3293 ac_cv_visibility_default=no
3294 if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3295 if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
3296 ac_cv_visibility_default=yes
3301 if test "$ac_cv_visibility_default" = "yes"; then
3302 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
3304 AC_CACHE_CHECK(for visibility pragma support,
3305 ac_cv_visibility_pragma,
3306 [cat > conftest.c <<EOF
3307 #pragma GCC visibility push(hidden)
3309 #pragma GCC visibility push(default)
3310 int foo_default = 1;
3312 ac_cv_visibility_pragma=no
3313 if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
3314 if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
3315 if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
3316 ac_cv_visibility_pragma=yes
3322 if test "$ac_cv_visibility_pragma" = "yes"; then
3323 AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
3324 ac_cv_have_visibility_class_bug,
3325 [cat > conftest.c <<EOF
3326 #pragma GCC visibility push(hidden)
3327 struct __attribute__ ((visibility ("default"))) TestStruct {
3330 __attribute__ ((visibility ("default"))) void TestFunc() {
3334 ac_cv_have_visibility_class_bug=no
3335 if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
3336 ac_cv_have_visibility_class_bug=yes
3338 if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
3339 ac_cv_have_visibility_class_bug=yes
3342 rm -rf conftest.{c,S}
3345 AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
3346 ac_cv_have_visibility_builtin_bug,
3347 [cat > conftest.c <<EOF
3348 #pragma GCC visibility push(hidden)
3349 #pragma GCC visibility push(default)
3351 #pragma GCC visibility pop
3353 __attribute__ ((visibility ("default"))) void Func() {
3355 memset(c, 0, sizeof(c));
3358 ac_cv_have_visibility_builtin_bug=no
3359 if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
3360 ac_cv_have_visibility_builtin_bug=yes
3362 if test `grep -c "@PLT" conftest.S` = 0; then
3363 ac_cv_visibility_builtin_bug=yes
3366 rm -f conftest.{c,S}
3368 if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
3369 "$ac_cv_have_visibility_class_bug" = "no"; then
3370 VISIBILITY_FLAGS='-I$(DIST)/system_wrappers_js -include $(topsrcdir)/config/gcc_hidden.h'
3371 WRAP_SYSTEM_INCLUDES=1
3372 STL_FLAGS='-I$(DIST)/stl_wrappers'
3375 VISIBILITY_FLAGS='-fvisibility=hidden'
3376 fi # have visibility pragma bug
3377 fi # have visibility pragma
3378 fi # have visibility(default) attribute
3379 fi # have visibility(hidden) attribute
3382 # visibility hidden flag for Sun Studio on Solaris
3383 if test "$SOLARIS_SUNPRO_CC"; then
3384 VISIBILITY_FLAGS='-xldscope=hidden'
3385 fi # Sun Studio on Solaris
3387 AC_SUBST(WRAP_SYSTEM_INCLUDES)
3388 AC_SUBST(VISIBILITY_FLAGS)
3390 dnl Check for __force_align_arg_pointer__ for SSE2 on gcc
3391 dnl ========================================================
3392 if test "$GNU_CC"; then
3393 CFLAGS_save="${CFLAGS}"
3394 CFLAGS="${CFLAGS} -Werror"
3395 AC_CACHE_CHECK(for __force_align_arg_pointer__ attribute,
3396 ac_cv_force_align_arg_pointer,
3397 [AC_TRY_COMPILE([__attribute__ ((__force_align_arg_pointer__)) void test() {}],
3399 ac_cv_force_align_arg_pointer="yes",
3400 ac_cv_force_align_arg_pointer="no")])
3401 CFLAGS="${CFLAGS_save}"
3402 if test "$ac_cv_force_align_arg_pointer" = "yes"; then
3403 HAVE_GCC_ALIGN_ARG_POINTER=1
3405 HAVE_GCC_ALIGN_ARG_POINTER=
3408 AC_SUBST(HAVE_GCC_ALIGN_ARG_POINTER)
3410 dnl Checks for header files.
3411 dnl ========================================================
3413 case "$target_os" in
3415 # for stuff like -lXshm
3416 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
3419 AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
3420 AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
3421 AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
3422 AC_CHECK_HEADERS(malloc.h)
3423 AC_CHECK_HEADERS(X11/XKBlib.h)
3424 AC_CHECK_HEADERS(io.h)
3426 dnl These are all the places some variant of statfs can be hiding.
3427 AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
3430 AC_CHECK_HEADERS(sys/quota.h)
3431 AC_CHECK_HEADERS(linux/quota.h)
3433 dnl Try for MMX support
3434 dnl NB - later gcc versions require -mmmx for this header to be successfully
3435 dnl included (or another option which implies it, such as -march=pentium-mmx)
3436 AC_CHECK_HEADERS(mmintrin.h)
3438 dnl Check whether the compiler supports the new-style C++ standard
3439 dnl library headers (i.e. <new>) or needs the old "new.h"
3442 AC_CHECK_HEADER(new, [NEW_H=new])
3443 AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>)
3446 AC_ARG_ENABLE(dtrace,
3447 [ --enable-dtrace build with dtrace support if available (default=no)],
3448 [enable_dtrace="yes"],)
3449 if test "x$enable_dtrace" = "xyes"; then
3450 AC_CHECK_HEADER(sys/sdt.h, HAVE_DTRACE=1)
3451 if test -n "$HAVE_DTRACE"; then
3452 AC_DEFINE(INCLUDE_MOZILLA_DTRACE)
3454 AC_MSG_ERROR([dtrace enabled but sys/sdt.h not found]);
3457 AC_SUBST(HAVE_DTRACE)
3463 AC_CHECK_HEADERS(sys/cdefs.h)
3467 dnl Performance measurement headers.
3468 AC_CHECK_HEADER(linux/perf_event.h, HAVE_LINUX_PERF_EVENT_H=1)
3469 AC_SUBST(HAVE_LINUX_PERF_EVENT_H)
3471 dnl Checks for libraries.
3472 dnl ========================================================
3477 AC_CHECK_LIB(c_r, gethostbyname_r)
3481 dnl We don't want to link with libdl even if it's present on OS X, since
3482 dnl it's not used and not part of the default installation.
3483 dnl The same goes for BeOS. OS/2 has dlfcn in libc.
3484 dnl We don't want to link against libm or libpthread on Darwin since
3485 dnl they both are just symlinks to libSystem and explicitly linking
3486 dnl against libSystem causes issues when debugging (see bug 299601).
3495 AC_SEARCH_LIBS(dlopen, dl,
3496 AC_CHECK_HEADER(dlfcn.h,
3497 AC_DEFINE(HAVE_DLOPEN)))
3501 _SAVE_CFLAGS="$CFLAGS"
3502 CFLAGS="$CFLAGS -D_GNU_SOURCE"
3503 AC_CHECK_FUNCS(dladdr)
3504 CFLAGS="$_SAVE_CFLAGS"
3506 if test ! "$GNU_CXX"; then
3510 AC_CHECK_LIB(C_r, demangle)
3513 AC_CHECK_LIB(C, demangle)
3518 dnl OS/2 has socket in libc.
3523 AC_CHECK_LIB(socket, socket)
3526 AC_MSG_CHECKING(for ARM SIMD support in compiler)
3528 [asm("uqadd8 r1, r1, r2");],
3529 result="yes", result="no")
3530 AC_MSG_RESULT("$result")
3531 if test "$result" = "yes"; then
3532 AC_DEFINE(HAVE_ARM_SIMD)
3535 AC_SUBST(HAVE_ARM_SIMD)
3537 AC_MSG_CHECKING(for ARM NEON support in compiler)
3538 _SAVE_CFLAGS="$CFLAGS"
3539 if test "$GNU_CC"; then
3540 # gcc needs -mfpu=neon to recognize NEON instructions
3541 CFLAGS="$CFLAGS -mfpu=neon -mfloat-abi=softfp"
3544 [asm("vadd.i8 d0, d0, d0");],
3545 result="yes", result="no")
3546 AC_MSG_RESULT("$result")
3547 if test "$result" = "yes"; then
3548 AC_DEFINE(HAVE_ARM_NEON)
3551 CFLAGS="$_SAVE_CFLAGS"
3552 AC_SUBST(HAVE_ARM_NEON)
3554 dnl ========================================================
3555 dnl = pthread support
3556 dnl = Start by checking whether the system support pthreads
3557 dnl ========================================================
3558 case "$target_os" in
3563 MOZ_CHECK_PTHREADS(pthreads,
3564 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
3565 MOZ_CHECK_PTHREADS(pthread,
3566 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
3567 MOZ_CHECK_PTHREADS(c_r,
3568 USE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
3569 MOZ_CHECK_PTHREADS(c,
3578 dnl ========================================================
3579 dnl Check the command line for --with-pthreads
3580 dnl ========================================================
3581 MOZ_ARG_WITH_BOOL(pthreads,
3582 [ --with-pthreads Force use of system pthread library with NSPR ],
3583 [ if test "$USE_PTHREADS"x = x; then
3584 AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
3590 dnl ========================================================
3591 dnl Do the platform specific pthread hackery
3592 dnl ========================================================
3593 if test "$USE_PTHREADS"x != x
3596 dnl See if -pthread is supported.
3599 ac_cv_have_dash_pthread=no
3600 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
3601 echo 'int main() { return 0; }' | cat > conftest.c
3602 ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
3603 if test $? -eq 0; then
3604 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3605 ac_cv_have_dash_pthread=yes
3606 case "$target_os" in
3608 # Freebsd doesn't use -pthread for compiles, it uses them for linking
3611 CFLAGS="$CFLAGS -pthread"
3612 CXXFLAGS="$CXXFLAGS -pthread"
3618 AC_MSG_RESULT($ac_cv_have_dash_pthread)
3621 dnl See if -pthreads is supported.
3623 ac_cv_have_dash_pthreads=no
3624 if test "$ac_cv_have_dash_pthread" = "no"; then
3625 AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
3626 echo 'int main() { return 0; }' | cat > conftest.c
3627 ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
3628 if test $? -eq 0; then
3629 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" -a -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
3630 ac_cv_have_dash_pthreads=yes
3631 CFLAGS="$CFLAGS -pthreads"
3632 CXXFLAGS="$CXXFLAGS -pthreads"
3636 AC_MSG_RESULT($ac_cv_have_dash_pthreads)
3641 AC_DEFINE(_REENTRANT)
3642 AC_DEFINE(_THREAD_SAFE)
3643 dnl -pthread links in -lc_r, so don't specify it explicitly.
3644 if test "$ac_cv_have_dash_pthread" = "yes"; then
3645 _PTHREAD_LDFLAGS="-pthread"
3647 _PTHREAD_LDFLAGS="-lc_r"
3651 *-*-openbsd*|*-*-bsdi*)
3652 AC_DEFINE(_REENTRANT)
3653 AC_DEFINE(_THREAD_SAFE)
3654 dnl -pthread links in -lc_r, so don't specify it explicitly.
3655 if test "$ac_cv_have_dash_pthread" = "yes"; then
3656 _PTHREAD_LDFLAGS="-pthread"
3660 *-*-linux*|*-*-kfreebsd*-gnu|*-*-gnu*)
3661 AC_DEFINE(_REENTRANT)
3665 AC_DEFINE(_REENTRANT)
3669 AC_DEFINE(_REENTRANT)
3673 AC_DEFINE(_REENTRANT)
3677 AC_DEFINE(_REENTRANT)
3681 AC_DEFINE(_REENTRANT)
3682 if test "$SOLARIS_SUNPRO_CC"; then
3683 CFLAGS="$CFLAGS -mt"
3684 CXXFLAGS="$CXXFLAGS -mt"
3688 LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
3691 dnl ========================================================
3692 dnl See if mmap sees writes
3693 dnl For cross compiling, just define it as no, which is a safe default
3694 dnl ========================================================
3695 AC_MSG_CHECKING(whether mmap() sees write()s)
3701 #include <sys/mman.h>
3702 #include <sys/types.h>
3703 #include <sys/stat.h>
3706 char fname[] = "conftest.file";
3707 char zbuff[1024]; /* Fractional page is probably worst case */
3714 fd = open(fname, O_RDWR | O_CREAT, 0660);
3717 write(fd, zbuff, sizeof(zbuff));
3718 lseek(fd, 0, SEEK_SET);
3719 map = (char*)mmap(0, sizeof(zbuff), PROT_READ, MAP_SHARED, fd, 0);
3720 if(map==(char*)-1) return 2;
3721 for(i=0; fname[i]; i++) {
3722 int rc = write(fd, &fname[i], 1);
3723 if(map[i]!=fname[i]) return 4;
3730 AC_TRY_RUN($mmap_test_prog , result="yes", result="no", result="yes")
3732 AC_MSG_RESULT("$result")
3734 if test "$result" = "no"; then
3735 AC_DEFINE(MMAP_MISSES_WRITES)
3739 dnl Checks for library functions.
3740 dnl ========================================================
3741 AC_PROG_GCC_TRADITIONAL
3743 AC_CHECK_FUNCS([fchmod flockfile getc_unlocked _getc_nolock getpagesize \
3744 lchown localtime_r lstat64 memmove random rint sbrk snprintf \
3745 stat64 statvfs statvfs64 strerror strtok_r truncate64])
3747 dnl check for clock_gettime(), the CLOCK_MONOTONIC clock, and -lrt
3748 _SAVE_LDFLAGS=$LDFLAGS
3749 LDFLAGS="$LDFLAGS -lrt"
3750 AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC) and -lrt,
3751 ac_cv_have_clock_monotonic,
3752 [AC_TRY_LINK([#include <time.h>],
3753 [ struct timespec ts;
3754 clock_gettime(CLOCK_MONOTONIC, &ts); ],
3755 ac_cv_have_clock_monotonic=yes,
3756 ac_cv_have_clock_monotonic=no)])
3757 LDFLAGS=$_SAVE_LDFLAGS
3758 if test "$ac_cv_have_clock_monotonic" = "yes"; then
3759 HAVE_CLOCK_MONOTONIC=1
3761 AC_DEFINE(HAVE_CLOCK_MONOTONIC)
3762 AC_SUBST(HAVE_CLOCK_MONOTONIC)
3763 AC_SUBST(REALTIME_LIBS)
3766 dnl Windows functions, for mingw.
3767 AC_TRY_LINK([#include <windows.h>],
3768 [SYSTEMTIME st;FILETIME ft;SystemTimeToFileTime(&st,&ft);],
3769 ac_cv_have_systemtimetofiletime="yes",
3770 ac_cv_have_systemtimetofiletime="no")
3771 if test "$ac_cv_have_systemtimetofiletime" = "yes"; then
3772 AC_DEFINE(HAVE_SYSTEMTIMETOFILETIME)
3774 AC_TRY_LINK([#include <windows.h>],
3775 [FILETIME ft;GetSystemTimeAsFileTime(&ft);],
3776 ac_cv_have_getsystemtimeasfiletime="yes",
3777 ac_cv_have_getsystemtimeasfiletime="no")
3778 if test "$ac_cv_have_getsystemtimeasfiletime" = "yes"; then
3779 AC_DEFINE(HAVE_GETSYSTEMTIMEASFILETIME)
3782 dnl check for wcrtomb/mbrtowc
3783 dnl =======================================================================
3784 if test -z "$MACOS_DEPLOYMENT_TARGET" || test "$MACOS_DEPLOYMENT_TARGET" -ge "100300"; then
3787 AC_CACHE_CHECK(for wcrtomb,
3789 [AC_TRY_LINK([#include <wchar.h>],
3790 [mbstate_t ps={0};wcrtomb(0,'f',&ps);],
3791 ac_cv_have_wcrtomb="yes",
3792 ac_cv_have_wcrtomb="no")])
3793 if test "$ac_cv_have_wcrtomb" = "yes"; then
3794 AC_DEFINE(HAVE_WCRTOMB)
3796 AC_CACHE_CHECK(for mbrtowc,
3798 [AC_TRY_LINK([#include <wchar.h>],
3799 [mbstate_t ps={0};mbrtowc(0,0,0,&ps);],
3800 ac_cv_have_mbrtowc="yes",
3801 ac_cv_have_mbrtowc="no")])
3802 if test "$ac_cv_have_mbrtowc" = "yes"; then
3803 AC_DEFINE(HAVE_MBRTOWC)
3810 ac_cv_func_res_ninit,
3813 #define _BSD_SOURCE 1
3817 [int foo = res_ninit(&_res);],
3818 [ac_cv_func_res_ninit=yes],
3819 [ac_cv_func_res_ninit=no])
3822 if test "$ac_cv_func_res_ninit" = "yes"; then
3823 AC_DEFINE(HAVE_RES_NINIT)
3824 dnl must add the link line we do something as foolish as this... dougt
3826 dnl AC_CHECK_LIB(bind, res_ninit, AC_DEFINE(HAVE_RES_NINIT),
3827 dnl AC_CHECK_LIB(resolv, res_ninit, AC_DEFINE(HAVE_RES_NINIT)))
3832 [for gnu_get_libc_version()],
3833 ac_cv_func_gnu_get_libc_version,
3835 #ifdef HAVE_GNU_LIBC_VERSION_H
3836 #include <gnu/libc-version.h>
3839 [const char *glibc_version = gnu_get_libc_version();],
3840 [ac_cv_func_gnu_get_libc_version=yes],
3841 [ac_cv_func_gnu_get_libc_version=no]
3845 if test "$ac_cv_func_gnu_get_libc_version" = "yes"; then
3846 AC_DEFINE(HAVE_GNU_GET_LIBC_VERSION)
3850 os2*|msvc*|mks*|cygwin*|mingw*|darwin*|wince*|winmo*|beos*)
3854 AC_CHECK_LIB(c, iconv, [_ICONV_LIBS="$_ICONV_LIBS"],
3855 AC_CHECK_LIB(iconv, iconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"],
3856 AC_CHECK_LIB(iconv, libiconv, [_ICONV_LIBS="$_ICONV_LIBS -liconv"])))
3858 LIBS="$LIBS $_ICONV_LIBS"
3867 iconv_t h = iconv_open("", "");
3868 iconv(h, NULL, NULL, NULL, NULL);
3871 [ac_cv_func_iconv=yes],
3872 [ac_cv_func_iconv=no]
3875 if test "$ac_cv_func_iconv" = "yes"; then
3876 AC_DEFINE(HAVE_ICONV)
3877 DYNAMIC_XPCOM_LIBS="$DYNAMIC_XPCOM_LIBS $_ICONV_LIBS"
3878 LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS"
3879 LIBICONV="$_ICONV_LIBS"
3881 [for iconv() with const input],
3882 ac_cv_func_const_iconv,
3888 const char *input = "testing";
3889 iconv_t h = iconv_open("", "");
3890 iconv(h, &input, NULL, NULL, NULL);
3893 [ac_cv_func_const_iconv=yes],
3894 [ac_cv_func_const_iconv=no]
3897 if test "$ac_cv_func_const_iconv" = "yes"; then
3898 AC_DEFINE(HAVE_ICONV_WITH_CONST_INPUT)
3908 dnl **********************
3909 dnl *** va_copy checks ***
3910 dnl **********************
3911 dnl we currently check for all three va_copy possibilities, so we get
3912 dnl all results in config.log for bug reports.
3913 AC_MSG_CHECKING(for an implementation of va_copy())
3914 AC_CACHE_VAL(ac_cv_va_copy,[
3917 void f (int i, ...) {
3918 va_list args1, args2;
3919 va_start (args1, i);
3920 va_copy (args2, args1);
3921 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3923 va_end (args1); va_end (args2);
3925 int main() { f (0, 42); return 0; }],
3931 AC_MSG_RESULT($ac_cv_va_copy)
3932 AC_MSG_CHECKING(for an implementation of __va_copy())
3933 AC_CACHE_VAL(ac_cv___va_copy,[
3936 void f (int i, ...) {
3937 va_list args1, args2;
3938 va_start (args1, i);
3939 __va_copy (args2, args1);
3940 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3942 va_end (args1); va_end (args2);
3944 int main() { f (0, 42); return 0; }],
3945 ac_cv___va_copy=yes,
3950 AC_MSG_RESULT($ac_cv___va_copy)
3951 AC_MSG_CHECKING(whether va_lists can be copied by value)
3952 AC_CACHE_VAL(ac_cv_va_val_copy,[
3955 void f (int i, ...) {
3956 va_list args1, args2;
3957 va_start (args1, i);
3959 if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
3961 va_end (args1); va_end (args2);
3963 int main() { f (0, 42); return 0; }],
3964 ac_cv_va_val_copy=yes,
3965 ac_cv_va_val_copy=no,
3966 ac_cv_va_val_copy=yes
3969 if test "x$ac_cv_va_copy" = "xyes"; then
3970 AC_DEFINE(VA_COPY, va_copy)
3971 AC_DEFINE(HAVE_VA_COPY)
3972 elif test "x$ac_cv___va_copy" = "xyes"; then
3973 AC_DEFINE(VA_COPY, __va_copy)
3974 AC_DEFINE(HAVE_VA_COPY)
3977 if test "x$ac_cv_va_val_copy" = "xno"; then
3978 AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
3980 AC_MSG_RESULT($ac_cv_va_val_copy)
3982 dnl Check for dll-challenged libc's.
3983 dnl This check is apparently only needed for Linux.
3986 dnl ===================================================================
3989 rm -rf conftest* _conftest
3991 cat >> conftest.C <<\EOF
3996 void __dump_link_map(void) {
3997 struct link_map *map = _dl_loaded;
3998 while (NULL != map) {printf("0x%08x %s\n", map->l_addr, map->l_name); map = map->l_next;}
4001 dlopen("./conftest1.so",RTLD_LAZY);
4002 dlopen("./../_conftest/conftest1.so",RTLD_LAZY);
4003 dlopen("CURDIR/_conftest/conftest1.so",RTLD_LAZY);
4004 dlopen("CURDIR/_conftest/../_conftest/conftest1.so",RTLD_LAZY);
4008 /* _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).*/
4009 int main() { printf("./conftest1.so\n"); }
4013 $PERL -p -i -e "s/CURDIR/\$ENV{_curdir}/g;" conftest.C
4015 cat >> conftest1.C <<\EOF
4017 void foo(void) {printf("foo in dll called\n");}
4019 ${CXX-g++} -fPIC -c -g conftest1.C
4020 ${CXX-g++} -shared -Wl,-h -Wl,conftest1.so -o conftest1.so conftest1.o
4021 ${CXX-g++} -g conftest.C -o conftest -ldl
4022 cp -f conftest1.so conftest _conftest
4024 if test `./conftest | grep conftest1.so | wc -l` -gt 1
4027 echo "*** Your libc has a bug that can result in loading the same dynamic"
4028 echo "*** library multiple times. This bug is known to be fixed in glibc-2.0.7-32"
4029 echo "*** or later. However, if you choose not to upgrade, the only effect"
4030 echo "*** will be excessive memory usage at runtime."
4034 rm -rf conftest* _conftest
4035 dnl ===================================================================
4039 dnl ===================================================================
4040 dnl ========================================================
4041 dnl Put your C++ language/feature checks below
4042 dnl ========================================================
4047 if test "$GNU_CC"; then
4048 if test "$CPU_ARCH" = "arm" ; then
4049 AC_CACHE_CHECK(for ARM EABI,
4053 #if defined(__ARM_EABI__)
4056 #error Not ARM EABI.
4059 ac_cv_gcc_arm_eabi="yes",
4060 ac_cv_gcc_arm_eabi="no")])
4061 if test "$ac_cv_gcc_arm_eabi" = "yes"; then
4063 ARM_ABI_PREFIX=eabi-
4065 ARM_ABI_PREFIX=oabi-
4069 AC_CACHE_CHECK(for gcc 3.0 ABI,
4070 ac_cv_gcc_three_abi,
4073 #if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
4079 ac_cv_gcc_three_abi="yes",
4080 ac_cv_gcc_three_abi="no")])
4081 if test "$ac_cv_gcc_three_abi" = "yes"; then
4082 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc3}"
4085 TARGET_COMPILER_ABI="${TARGET_COMPILER_ABI-${ARM_ABI_PREFIX}gcc2}"
4088 AC_SUBST(HAVE_GCC3_ABI)
4091 AC_CACHE_CHECK(for C++ \"explicit\" keyword,
4093 [AC_TRY_COMPILE(class X {
4094 public: explicit X(int i) : i_(i) {}
4098 ac_cv_cpp_explicit=yes,
4099 ac_cv_cpp_explicit=no)])
4100 if test "$ac_cv_cpp_explicit" = yes ; then
4101 AC_DEFINE(HAVE_CPP_EXPLICIT)
4104 AC_CACHE_CHECK(for C++ \"typename\" keyword,
4106 [AC_TRY_COMPILE(class param {
4108 typedef unsigned long num_type;
4111 template <class T> class tplt {
4113 typedef typename T::num_type t_num_type;
4114 t_num_type foo(typename T::num_type num) {
4120 ac_cv_cpp_typename=yes,
4121 ac_cv_cpp_typename=no)])
4122 if test "$ac_cv_cpp_typename" = yes ; then
4123 AC_DEFINE(HAVE_CPP_TYPENAME)
4126 dnl Check for support of modern template specialization syntax
4127 dnl Test code and requirement from scc@netscape.com.
4128 dnl Autoconf cut-and-paste job by waterson@netscape.com
4129 AC_CACHE_CHECK(for modern C++ template specialization syntax support,
4130 ac_cv_cpp_modern_specialize_template_syntax,
4131 [AC_TRY_COMPILE(template <class T> struct X { int a; };
4133 template <> struct X<Y> { double a; };,
4136 ac_cv_cpp_modern_specialize_template_syntax=yes,
4137 ac_cv_cpp_modern_specialize_template_syntax=no)])
4138 if test "$ac_cv_cpp_modern_specialize_template_syntax" = yes ; then
4139 AC_DEFINE(HAVE_CPP_MODERN_SPECIALIZE_TEMPLATE_SYNTAX)
4143 dnl Some compilers support only full specialization, and some don't.
4144 AC_CACHE_CHECK(whether partial template specialization works,
4145 ac_cv_cpp_partial_specialization,
4146 [AC_TRY_COMPILE(template <class T> class Foo {};
4147 template <class T> class Foo<T*> {};,
4149 ac_cv_cpp_partial_specialization=yes,
4150 ac_cv_cpp_partial_specialization=no)])
4151 if test "$ac_cv_cpp_partial_specialization" = yes ; then
4152 AC_DEFINE(HAVE_CPP_PARTIAL_SPECIALIZATION)
4155 dnl Some compilers have limited support for operators with templates;
4156 dnl specifically, it is necessary to define derived operators when a base
4157 dnl class's operator declaration should suffice.
4158 AC_CACHE_CHECK(whether operators must be re-defined for templates derived from templates,
4159 ac_cv_need_derived_template_operators,
4160 [AC_TRY_COMPILE([template <class T> class Base { };
4162 Base<T> operator+(const Base<T>& lhs, const Base<T>& rhs) { return lhs; }
4163 template <class T> class Derived : public Base<T> { };],
4164 [Derived<char> a, b;
4165 Base<char> c = a + b;
4167 ac_cv_need_derived_template_operators=no,
4168 ac_cv_need_derived_template_operators=yes)])
4169 if test "$ac_cv_need_derived_template_operators" = yes ; then
4170 AC_DEFINE(NEED_CPP_DERIVED_TEMPLATE_OPERATORS)
4174 dnl Some compilers have trouble detecting that a template class
4175 dnl that derives from another template is actually an instance
4176 dnl of the base class. This test checks for that.
4177 AC_CACHE_CHECK(whether we need to cast a derived template to pass as its base class,
4178 ac_cv_need_cpp_template_cast_to_base,
4179 [AC_TRY_COMPILE([template <class T> class Base { };
4180 template <class T> class Derived : public Base<T> { };
4181 template <class T> int foo(const Base<T>&) { return 0; }],
4182 [Derived<char> bar; return foo(bar);],
4183 ac_cv_need_cpp_template_cast_to_base=no,
4184 ac_cv_need_cpp_template_cast_to_base=yes)])
4185 if test "$ac_cv_need_cpp_template_cast_to_base" = yes ; then
4186 AC_DEFINE(NEED_CPP_TEMPLATE_CAST_TO_BASE)
4189 dnl Some compilers have trouble resolving the ambiguity between two
4190 dnl functions whose arguments differ only by cv-qualifications.
4191 AC_CACHE_CHECK(whether the compiler can resolve const ambiguities for templates,
4192 ac_cv_can_resolve_const_ambiguity,
4194 template <class T> class ptrClass {
4198 template <class T> T* a(ptrClass<T> *arg) {
4203 const T* a(const ptrClass<T> *arg) {
4209 ac_cv_can_resolve_const_ambiguity=yes,
4210 ac_cv_can_resolve_const_ambiguity=no)])
4211 if test "$ac_cv_can_resolve_const_ambiguity" = no ; then
4212 AC_DEFINE(CANT_RESOLVE_CPP_CONST_AMBIGUITY)
4216 dnl We don't do exceptions on unix. The only reason this used to be here
4217 dnl is that mozilla/xpcom/tests/TestCOMPtr.cpp has a test which uses
4218 dnl exceptions. But, we turn exceptions off by default and this test breaks.
4219 dnl So im commenting this out until someone writes some artificial
4220 dnl intelligence to detect not only if the compiler has exceptions, but if
4221 dnl they are enabled as well.
4223 dnl AC_CACHE_CHECK(for C++ \"exceptions\",
4224 dnl ac_cv_cpp_exceptions,
4225 dnl [AC_TRY_COMPILE(class X { public: X() {} };
4226 dnl static void F() { throw X(); },
4227 dnl try { F(); } catch(X & e) { },
4228 dnl ac_cv_cpp_exceptions=yes,
4229 dnl ac_cv_cpp_exceptions=no)])
4230 dnl if test $ac_cv_cpp_exceptions = yes ; then
4231 dnl AC_DEFINE(HAVE_CPP_EXCEPTIONS)
4234 dnl Some compilers have marginal |using| support; for example, gcc-2.7.2.3
4235 dnl supports it well enough to allow us to use it to change access, but not
4236 dnl to resolve ambiguity. The next two tests determine how well the |using|
4237 dnl keyword is supported.
4239 dnl Check to see if we can change access with |using|. Test both a
4240 dnl legal and an illegal example.
4241 AC_CACHE_CHECK(whether the C++ \"using\" keyword can change access,
4242 ac_cv_cpp_access_changing_using2,
4244 class A { protected: int foo() { return 0; } };
4245 class B : public A { public: using A::foo; };,
4246 B b; return b.foo();,
4248 class A { public: int foo() { return 1; } };
4249 class B : public A { private: using A::foo; };,
4250 B b; return b.foo();,
4251 ac_cv_cpp_access_changing_using2=no,
4252 ac_cv_cpp_access_changing_using2=yes)],
4253 ac_cv_cpp_access_changing_using2=no)])
4254 if test "$ac_cv_cpp_access_changing_using2" = yes ; then
4255 AC_DEFINE(HAVE_CPP_ACCESS_CHANGING_USING)
4258 dnl Check to see if we can resolve ambiguity with |using|.
4259 AC_CACHE_CHECK(whether the C++ \"using\" keyword resolves ambiguity,
4260 ac_cv_cpp_ambiguity_resolving_using,
4261 [AC_TRY_COMPILE(class X {
4262 public: int go(const X&) {return 3;}
4263 int jo(const X&) {return 3;}
4265 class Y : public X {
4266 public: int go(int) {return 2;}
4267 int jo(int) {return 2;}
4269 private: using X::go;
4272 ac_cv_cpp_ambiguity_resolving_using=yes,
4273 ac_cv_cpp_ambiguity_resolving_using=no)])
4274 if test "$ac_cv_cpp_ambiguity_resolving_using" = yes ; then
4275 AC_DEFINE(HAVE_CPP_AMBIGUITY_RESOLVING_USING)
4278 dnl Check to see if the |std| namespace is supported. If so, we'll want
4279 dnl to qualify any standard library calls with "std::" to ensure that
4280 dnl those functions can be resolved.
4281 AC_CACHE_CHECK(for \"std::\" namespace,
4282 ac_cv_cpp_namespace_std,
4283 [AC_TRY_COMPILE([#include <algorithm>],
4284 [return std::min(0, 1);],
4285 ac_cv_cpp_namespace_std=yes,
4286 ac_cv_cpp_namespace_std=no)])
4287 if test "$ac_cv_cpp_namespace_std" = yes ; then
4288 AC_DEFINE(HAVE_CPP_NAMESPACE_STD)
4291 dnl Older compilers are overly ambitious with respect to using the standard
4292 dnl template library's |operator!=()| when |operator==()| is defined. In
4293 dnl which case, defining |operator!=()| in addition to |operator==()| causes
4294 dnl ambiguity at compile-time. This test checks for that case.
4295 AC_CACHE_CHECK(whether standard template operator!=() is ambiguous,
4296 ac_cv_cpp_unambiguous_std_notequal,
4297 [AC_TRY_COMPILE([#include <algorithm>
4299 int operator==(const T1&, const T1&) { return 0; }
4300 int operator!=(const T1&, const T1&) { return 0; }],
4301 [T1 a,b; return a != b;],
4302 ac_cv_cpp_unambiguous_std_notequal=unambiguous,
4303 ac_cv_cpp_unambiguous_std_notequal=ambiguous)])
4304 if test "$ac_cv_cpp_unambiguous_std_notequal" = unambiguous ; then
4305 AC_DEFINE(HAVE_CPP_UNAMBIGUOUS_STD_NOTEQUAL)
4309 AC_CACHE_CHECK(for C++ reinterpret_cast,
4310 ac_cv_cpp_reinterpret_cast,
4311 [AC_TRY_COMPILE(struct X { int i; };
4312 struct Y { int i; };,
4313 X x; X*const z = &x;Y*y = reinterpret_cast<Y*>(z);,
4314 ac_cv_cpp_reinterpret_cast=yes,
4315 ac_cv_cpp_reinterpret_cast=no)])
4316 if test "$ac_cv_cpp_reinterpret_cast" = yes ; then
4317 AC_DEFINE(HAVE_CPP_NEW_CASTS)
4320 dnl See if a dynamic_cast to void* gives the most derived object.
4321 AC_CACHE_CHECK(for C++ dynamic_cast to void*,
4322 ac_cv_cpp_dynamic_cast_void_ptr,
4323 [AC_TRY_RUN([class X { int i; public: virtual ~X() { } };
4324 class Y { int j; public: virtual ~Y() { } };
4325 class Z : public X, public Y { int k; };
4331 return !((((void*)&mdo != (void*)subx) &&
4332 ((void*)&mdo == dynamic_cast<void*>(subx))) ||
4333 (((void*)&mdo != (void*)suby) &&
4334 ((void*)&mdo == dynamic_cast<void*>(suby))));
4336 ac_cv_cpp_dynamic_cast_void_ptr=yes,
4337 ac_cv_cpp_dynamic_cast_void_ptr=no,
4338 ac_cv_cpp_dynamic_cast_void_ptr=no)])
4339 if test "$ac_cv_cpp_dynamic_cast_void_ptr" = yes ; then
4340 AC_DEFINE(HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR)
4344 dnl note that this one is reversed - if the test fails, then
4345 dnl we require implementations of unused virtual methods. Which
4346 dnl really blows because it means we'll have useless vtable
4348 AC_CACHE_CHECK(whether C++ requires implementation of unused virtual methods,
4349 ac_cv_cpp_unused_required,
4350 [AC_TRY_LINK(class X {private: virtual void never_called();};,
4352 ac_cv_cpp_unused_required=no,
4353 ac_cv_cpp_unused_required=yes)])
4354 if test "$ac_cv_cpp_unused_required" = yes ; then
4355 AC_DEFINE(NEED_CPP_UNUSED_IMPLEMENTATIONS)
4359 dnl Some compilers have trouble comparing a constant reference to a templatized
4360 dnl class to zero, and require an explicit operator==() to be defined that takes
4361 dnl an int. This test separates the strong from the weak.
4363 AC_CACHE_CHECK(for trouble comparing to zero near std::operator!=(),
4364 ac_cv_trouble_comparing_to_zero,
4365 [AC_TRY_COMPILE([#include <algorithm>
4366 template <class T> class Foo {};
4368 template <class T> int operator==(const T2*, const T&) { return 0; }
4369 template <class T> int operator!=(const T2*, const T&) { return 0; }],
4370 [Foo<int> f; return (0 != f);],
4371 ac_cv_trouble_comparing_to_zero=no,
4372 ac_cv_trouble_comparing_to_zero=yes)])
4373 if test "$ac_cv_trouble_comparing_to_zero" = yes ; then
4374 AC_DEFINE(HAVE_CPP_TROUBLE_COMPARING_TO_ZERO)
4377 # try harder, when checking for __thread support, see bug 521750 comment #33 and below
4378 _SAVE_LDFLAGS=$LDFLAGS
4379 LDFLAGS="$LDFLAGS $DSO_PIC_CFLAGS $DSO_LDOPTS"
4380 AC_CACHE_CHECK(for __thread keyword for TLS variables,
4381 ac_cv_thread_keyword,
4382 [AC_TRY_LINK([__thread bool tlsIsMainThread = false;],
4383 [return tlsIsMainThread;],
4384 ac_cv_thread_keyword=yes,
4385 ac_cv_thread_keyword=no)])
4386 LDFLAGS=$_SAVE_LDFLAGS
4387 if test "$ac_cv_thread_keyword" = yes; then
4388 # mips builds fail with TLS variables because of a binutils bug.
4398 AC_DEFINE(HAVE_THREAD_TLS_KEYWORD)
4403 dnl Check for the existence of various allocation headers/functions
4406 AC_CHECK_HEADER(malloc.h, [MALLOC_H=malloc.h])
4407 if test "$MALLOC_H" = ""; then
4408 AC_CHECK_HEADER(malloc/malloc.h, [MALLOC_H=malloc/malloc.h])
4409 if test "$MALLOC_H" = ""; then
4410 AC_CHECK_HEADER(sys/malloc.h, [MALLOC_H=sys/malloc.h])
4413 if test "$MALLOC_H" != ""; then
4414 AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
4417 MOZ_ALLOCATING_FUNCS="strndup posix_memalign memalign valloc"
4418 AC_CHECK_FUNCS(strndup posix_memalign memalign valloc)
4420 dnl See if compiler supports some gcc-style attributes
4422 AC_CACHE_CHECK(for __attribute__((always_inline)),
4423 ac_cv_attribute_always_inline,
4425 [inline void f(void) __attribute__((always_inline));],
4426 ac_cv_attribute_always_inline=yes,
4427 ac_cv_attribute_always_inline=no)])
4429 AC_CACHE_CHECK(for __attribute__((malloc)),
4430 ac_cv_attribute_malloc,
4432 [void* f(int) __attribute__((malloc));],
4433 ac_cv_attribute_malloc=yes,
4434 ac_cv_attribute_malloc=no)])
4436 AC_CACHE_CHECK(for __attribute__((warn_unused_result)),
4437 ac_cv_attribute_warn_unused,
4439 [int f(void) __attribute__((warn_unused_result));],
4440 ac_cv_attribute_warn_unused=yes,
4441 ac_cv_attribute_warn_unused=no)])
4443 AC_CACHE_CHECK(for __attribute__((noreturn)),
4444 ac_cv_attribute_noreturn,
4446 [void f(void) __attribute__((noreturn));],
4447 ac_cv_attribute_noreturn=yes,
4448 ac_cv_attribute_noreturn=no)])
4450 dnl End of C++ language/feature checks
4453 dnl ========================================================
4454 dnl = Internationalization checks
4455 dnl ========================================================
4457 dnl Internationalization and Locale support is different
4458 dnl on various UNIX platforms. Checks for specific i18n
4459 dnl features go here.
4461 dnl check for LC_MESSAGES
4462 AC_CACHE_CHECK(for LC_MESSAGES,
4463 ac_cv_i18n_lc_messages,
4464 [AC_TRY_COMPILE([#include <locale.h>],
4465 [int category = LC_MESSAGES;],
4466 ac_cv_i18n_lc_messages=yes,
4467 ac_cv_i18n_lc_messages=no)])
4468 if test "$ac_cv_i18n_lc_messages" = yes; then
4469 AC_DEFINE(HAVE_I18N_LC_MESSAGES)
4472 AC_HAVE_FUNCS(localeconv)
4474 fi # SKIP_COMPILER_CHECKS
4477 if test -n "${CPU_ARCH}" -a -n "${TARGET_COMPILER_ABI}"; then
4478 TARGET_XPCOM_ABI="${CPU_ARCH}-${TARGET_COMPILER_ABI}"
4481 dnl Mozilla specific options
4482 dnl ========================================================
4483 dnl The macros used for command line options
4484 dnl are defined in build/autoconf/altoptions.m4.
4486 dnl If the compiler supports these attributes, define them as
4487 dnl convenience macros.
4488 if test "$ac_cv_attribute_always_inline" = yes ; then
4489 AC_DEFINE(NS_ALWAYS_INLINE, [__attribute__((always_inline))])
4491 AC_DEFINE(NS_ALWAYS_INLINE,)
4494 if test "$ac_cv_attribute_malloc" = yes ; then
4495 AC_DEFINE(NS_ATTR_MALLOC, [__attribute__((malloc))])
4497 AC_DEFINE(NS_ATTR_MALLOC,)
4500 if test "$ac_cv_attribute_warn_unused" = yes ; then
4501 AC_DEFINE(NS_WARN_UNUSED_RESULT, [__attribute__((warn_unused_result))])
4503 AC_DEFINE(NS_WARN_UNUSED_RESULT,)
4506 if test "$ac_cv_attribute_noreturn" = yes ; then
4507 AC_DEFINE(NS_NORETURN, [__attribute__((noreturn))])
4509 AC_DEFINE(NS_NORETURN,)
4512 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
4513 dnl features that Windows actually does support.
4515 if test -n "$SKIP_COMPILER_CHECKS"; then
4516 dnl Windows has malloc.h
4517 AC_DEFINE(MALLOC_H, [<malloc.h>])
4518 AC_DEFINE(HAVE_FORCEINLINE)
4519 AC_DEFINE(HAVE_LOCALECONV)
4520 fi # SKIP_COMPILER_CHECKS
4522 dnl ========================================================
4524 dnl = Check for external package dependencies
4526 dnl ========================================================
4527 MOZ_ARG_HEADER(External Packages)
4529 dnl ========================================================
4530 dnl = Find the right NSPR to use.
4531 dnl ========================================================
4532 MOZ_ARG_WITH_BOOL(system-nspr,
4533 [ --with-system-nspr Use an NSPR that is already built and installed.
4534 Use the 'nspr-config' script in the current path,
4535 or look for the script in the directories given with
4536 --with-nspr-exec-prefix or --with-nspr-prefix.
4537 (Those flags are only checked if you specify
4538 --with-system-nspr.)],
4539 _USE_SYSTEM_NSPR=1 )
4541 MOZ_ARG_WITH_STRING(nspr-cflags,
4542 [ --with-nspr-cflags=FLAGS
4543 Pass FLAGS to CC when building code that uses NSPR.
4544 Use this when there's no accurate nspr-config
4545 script available. This is the case when building
4546 SpiderMonkey as part of the Mozilla tree: the
4547 top-level configure script computes NSPR flags
4548 that accomodate the quirks of that environment.],
4549 NSPR_CFLAGS=$withval)
4550 MOZ_ARG_WITH_STRING(nspr-libs,
4551 [ --with-nspr-libs=LIBS Pass LIBS to LD when linking code that uses NSPR.
4552 See --with-nspr-cflags for more details.],
4554 AC_SUBST(NSPR_CFLAGS)
4557 dnl Pass either --with-system-nspr or (--with-nspr-cflags and
4558 dnl --with-nspr-libs), but not both.
4559 if test "$_USE_SYSTEM_NSPR" && (test "$NSPR_CFLAGS" -o "$NSPR_LIBS"); then
4560 AC_MSG_ERROR([--with-system-nspr and --with-nspr-libs/cflags are mutually exclusive.
4561 See 'configure --help'.])
4564 dnl Top-level Mozilla switched to requiring NSPR 4.8.6 (bug 560582), but we don't need it in JS.
4565 if test -n "$_USE_SYSTEM_NSPR"; then
4567 AM_PATH_NSPR(4.7.0, [MOZ_NATIVE_NSPR=1])
4568 if test -z "$MOZ_NATIVE_NSPR"; then
4569 AC_MSG_ERROR([--with-system-nspr given, but configure could not find a suitable NSPR.
4570 Pass --with-nspr-exec-prefix, --with-nspr-prefix, or --with-nspr-cflags/libs.
4571 See 'configure --help'.])
4575 if test -n "$MOZ_NATIVE_NSPR"; then
4576 _SAVE_CFLAGS=$CFLAGS
4577 CFLAGS="$CFLAGS $NSPR_CFLAGS"
4578 AC_TRY_COMPILE([#include "prlog.h"],
4579 [#ifndef PR_STATIC_ASSERT
4580 #error PR_STATIC_ASSERT not defined
4582 [MOZ_NATIVE_NSPR=1],
4583 AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT]))
4584 CFLAGS=$_SAVE_CFLAGS
4587 dnl ========================================================
4591 dnl ========================================================
4593 MOZ_ARG_HEADER(Application)
4608 dnl ========================================================
4609 dnl Use ARM userspace kernel helpers; tell NSPR to enable
4610 dnl their usage and use them in spidermonkey.
4611 dnl ========================================================
4612 MOZ_ARG_WITH_BOOL(arm-kuser,
4613 [ --with-arm-kuser Use kuser helpers (Linux/ARM only -- requires kernel 2.6.13 or later)],
4615 if test -n "$USE_ARM_KUSER"; then
4616 AC_DEFINE(USE_ARM_KUSER)
4619 dnl ========================================================
4621 dnl = Components & Features
4623 dnl ========================================================
4624 MOZ_ARG_HEADER(Components and Features)
4626 dnl ========================================================
4628 dnl ========================================================
4629 MOZ_ARG_ENABLE_STRING(ui-locale,
4630 [ --enable-ui-locale=ab-CD
4631 Select the user interface locale (default: en-US)],
4632 MOZ_UI_LOCALE=$enableval )
4633 AC_SUBST(MOZ_UI_LOCALE)
4635 dnl ========================================================
4636 dnl build the tests by default
4637 dnl ========================================================
4638 MOZ_ARG_DISABLE_BOOL(tests,
4639 [ --disable-tests Do not build test libraries & programs],
4643 dnl ========================================================
4645 dnl = Module specific options
4647 dnl ========================================================
4648 MOZ_ARG_HEADER(Individual module options)
4650 dnl Setup default CPU arch for arm target
4651 case "$target_cpu" in
4656 dnl ========================================================
4657 dnl = Enable building the Thumb2 instruction set
4658 dnl ========================================================
4659 MOZ_ARG_ENABLE_BOOL(thumb2,
4660 [ --enable-thumb2 Enable Thumb2 instruction set (implies ARMv7)],
4663 if test -n "$MOZ_THUMB2"; then
4667 dnl ========================================================
4668 dnl = Enable building for ARM specific CPU features
4669 dnl ========================================================
4670 MOZ_ARG_WITH_STRING(cpu-arch,
4671 [ --with-cpu-arch=arch Use specific arm architecture CPU features, default armv7],
4672 MOZ_ARM_ARCH=$withval)
4674 if test -n "$MOZ_THUMB2"; then
4675 case "$target_cpu" in
4677 if test "$MOZ_ARM_ARCH" != "armv7"; then
4678 AC_MSG_ERROR([--enable-thumb2 is not compatible with cpu-arch=$MOZ_ARM_ARCH])
4680 if test "$GNU_CC"; then
4681 AC_DEFINE(MOZ_THUMB2)
4682 AC_DEFINE(MOZ_ARM_ARCH)
4683 CFLAGS="$CFLAGS -march=armv7-a -mthumb -Wa, -march=armv7-a -Wa, -mthumb"
4684 CXXFLAGS="$CXXFLAGS -march=armv7-a -mthumb -Wa, -march=armv7-a -Wa, -mthumb"
4685 ASFLAGS="$ASFLAGS -march=armv7-a -mthumb"
4687 AC_MSG_ERROR([--enable-thumb2 is not supported for non-GNU toolchains])
4691 AC_MSG_ERROR([--enable-thumb2 is not supported for non-ARM CPU architectures])
4694 elif test "$MOZ_ARM_ARCH" = "armv7"; then
4695 case "$target_cpu" in
4697 if test "$GNU_CC"; then
4698 AC_DEFINE(MOZ_ARM_ARCH)
4699 CFLAGS="$CFLAGS -march=armv7-a -marm -Wa, -march=armv7-a -Wa, -marm"
4700 CXXFLAGS="$CXXFLAGS -march=armv7-a -marm -Wa, -march=armv7-a -Wa, -marm"
4701 ASFLAGS="$ASFLAGS -march=armv7-a -marm"
4703 AC_MSG_ERROR([--with-cpu-arch=armv7 is not supported for non-GNU toolchains])
4707 AC_MSG_ERROR([--with-cpu-arch=armv7 is not supported for non-ARM CPU architectures])
4711 case "$target_cpu" in
4713 if test "$GNU_CC"; then
4714 CFLAGS="$CFLAGS -march=armv5te -mthumb-interwork -Wa, -march=armv5te -Wa, -mthumb-interwork"
4715 CXXFLAGS="$CXXFLAGS -march=armv5te -mthumb-interwork -Wa, -march=armv5te -Wa, -mthumb-interwork"
4716 ASFLAGS="$ASFLAGS -march=armv5te -mthumb-interwork"
4722 AC_SUBST(MOZ_THUMB2)
4723 AC_SUBST(MOZ_ARM_ARCH)
4725 dnl ========================================================
4727 dnl = Debugging Options
4729 dnl ========================================================
4730 MOZ_ARG_HEADER(Debugging and Optimizations)
4732 dnl ========================================================
4733 dnl = Disable building with debug info.
4734 dnl = Debugging is OFF by default
4735 dnl ========================================================
4736 if test -z "$MOZ_DEBUG_FLAGS"; then
4737 MOZ_DEBUG_FLAGS="-g"
4740 MOZ_ARG_ENABLE_STRING(debug,
4741 [ --enable-debug[=DBG] Enable building with developer debug info
4742 (using compiler flags DBG)],
4743 [ if test "$enableval" != "no"; then
4745 if test -n "$enableval" -a "$enableval" != "yes"; then
4746 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
4747 _MOZ_DEBUG_FLAGS_SET=1
4754 MOZ_DEBUG_ENABLE_DEFS="-DDEBUG -D_DEBUG -DTRACING"
4755 MOZ_ARG_WITH_STRING(debug-label,
4756 [ --with-debug-label=LABELS
4757 Define DEBUG_<value> for each comma-separated
4759 [ for option in `echo $withval | sed 's/,/ /g'`; do
4760 MOZ_DEBUG_ENABLE_DEFS="$MOZ_DEBUG_ENABLE_DEFS -DDEBUG_${option}"
4763 MOZ_DEBUG_DISABLE_DEFS="-DNDEBUG -DTRIMMED"
4765 if test -n "$MOZ_DEBUG"; then
4766 AC_MSG_CHECKING([for valid debug flags])
4767 _SAVE_CFLAGS=$CFLAGS
4768 CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS"
4769 AC_TRY_COMPILE([#include <stdio.h>],
4770 [printf("Hello World\n");],
4773 AC_MSG_RESULT([$_results])
4774 if test "$_results" = "no"; then
4775 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_DEBUG_FLAGS])
4777 CFLAGS=$_SAVE_CFLAGS
4780 dnl ========================================================
4781 dnl = Enable code optimization. ON by default.
4782 dnl ========================================================
4783 if test -z "$MOZ_OPTIMIZE_FLAGS"; then
4784 MOZ_OPTIMIZE_FLAGS="-O"
4787 MOZ_ARG_ENABLE_STRING(optimize,
4788 [ --disable-optimize Disable compiler optimization
4789 --enable-optimize=[OPT] Specify compiler optimization flags [OPT=-O]],
4790 [ if test "$enableval" != "no"; then
4792 if test -n "$enableval" -a "$enableval" != "yes"; then
4793 MOZ_OPTIMIZE_FLAGS=`echo "$enableval" | sed -e 's|\\\ | |g'`
4798 fi ], MOZ_OPTIMIZE=1)
4800 if test "$COMPILE_ENVIRONMENT"; then
4801 if test -n "$MOZ_OPTIMIZE"; then
4802 AC_MSG_CHECKING([for valid optimization flags])
4803 _SAVE_CFLAGS=$CFLAGS
4804 CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS"
4805 AC_TRY_COMPILE([#include <stdio.h>],
4806 [printf("Hello World\n");],
4809 AC_MSG_RESULT([$_results])
4810 if test "$_results" = "no"; then
4811 AC_MSG_ERROR([These compiler flags are invalid: $MOZ_OPTIMIZE_FLAGS])
4813 CFLAGS=$_SAVE_CFLAGS
4815 fi # COMPILE_ENVIRONMENT
4817 AC_SUBST(MOZ_OPTIMIZE)
4818 AC_SUBST(MOZ_OPTIMIZE_FLAGS)
4819 AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
4820 AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
4822 dnl ========================================================
4823 dnl = (Deprecated) generation of debugger info for specific modules
4824 dnl ========================================================
4825 MOZ_ARG_ENABLE_STRING(debugger-info-modules,
4826 [ --enable-debugger-info-modules
4827 Enable/disable debugger info for specific modules],
4828 [ if test "$enableval" != "no"; then
4829 AC_MSG_WARN([--enable-debugger-info-modules is deprecated, use --enable-debug-symbols instead])
4833 dnl ========================================================
4834 dnl = Enable generation of debug symbols
4835 dnl ========================================================
4836 MOZ_ARG_ENABLE_STRING(debug-symbols,
4837 [ --enable-debug-symbols[=DBG]
4838 Enable debugging symbols (using compiler flags DBG)],
4839 [ if test "$enableval" != "no"; then
4841 if test -n "$enableval" -a "$enableval" != "yes"; then
4842 if test -z "$_MOZ_DEBUG_FLAGS_SET"; then
4843 MOZ_DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
4845 AC_MSG_ERROR([--enable-debug-symbols flags cannot be used with --enable-debug flags])
4850 if test -n "$MOZ_DEBUG" -o -n "$MOZ_DEBUG_SYMBOLS"; then
4851 AC_DEFINE(MOZ_DEBUG_SYMBOLS)
4852 export MOZ_DEBUG_SYMBOLS
4855 dnl ========================================================
4856 dnl = Disable any treating of compile warnings as errors
4857 dnl ========================================================
4858 MOZ_ARG_DISABLE_BOOL(warnings-as-errors,
4859 [ --disable-warnings-as-errors
4860 Disable treating of warnings as errors],
4861 MOZ_DISABLE_WARNINGS_AS_ERRORS=1,
4862 MOZ_DISABLE_WARNINGS_AS_ERRORS= )
4863 if test "$MOZ_DISABLE_WARNINGS_AS_ERRORS"; then
4864 WARNINGS_AS_ERRORS=''
4867 dnl = Enable trace malloc
4868 dnl ========================================================
4869 NS_TRACE_MALLOC=${MOZ_TRACE_MALLOC}
4870 MOZ_ARG_ENABLE_BOOL(trace-malloc,
4871 [ --enable-trace-malloc Enable malloc tracing],
4874 if test "$NS_TRACE_MALLOC"; then
4875 # Please, Mr. Linker Man, don't take away our symbol names
4876 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
4877 AC_DEFINE(NS_TRACE_MALLOC)
4879 AC_SUBST(NS_TRACE_MALLOC)
4881 dnl ========================================================
4882 dnl = Enable jemalloc
4883 dnl ========================================================
4884 MOZ_ARG_ENABLE_BOOL(jemalloc,
4885 [ --enable-jemalloc Replace memory allocator with jemalloc],
4889 if test "$NS_TRACE_MALLOC"; then
4893 if test "$MOZ_MEMORY"; then
4895 dnl Don't try to run compiler tests on Windows
4896 if test "$OS_ARCH" = "WINNT"; then
4897 if test -z "$HAVE_64BIT_OS"; then
4898 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
4900 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
4903 AC_CHECK_SIZEOF([int *], [4])
4904 case "${ac_cv_sizeof_int_p}" in
4906 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 2)
4909 AC_DEFINE_UNQUOTED([MOZ_MEMORY_SIZEOF_PTR_2POW], 3)
4912 AC_MSG_ERROR([Unexpected pointer size])
4917 AC_DEFINE(MOZ_MEMORY)
4918 if test "x$MOZ_DEBUG" = "x1"; then
4919 AC_DEFINE(MOZ_MEMORY_DEBUG)
4921 dnl The generic feature tests that determine how to compute ncpus are long and
4922 dnl complicated. Therefore, simply define special cpp variables for the
4923 dnl platforms we have special knowledge of.
4926 AC_DEFINE(MOZ_MEMORY_DARWIN)
4929 AC_DEFINE(MOZ_MEMORY_BSD)
4932 AC_DEFINE(MOZ_MEMORY_LINUX)
4935 AC_DEFINE(MOZ_MEMORY_BSD)
4938 AC_DEFINE(MOZ_MEMORY_SOLARIS)
4940 *-msvc*|*-mks*|*-cygwin*|*-mingw*)
4941 AC_DEFINE(MOZ_MEMORY_WINDOWS)
4942 # the interesting bits will get passed down in MOZ_MEMORY_LDFLAGS
4945 AC_DEFINE(MOZ_MEMORY_WINCE)
4946 AC_DEFINE(MOZ_MEMORY_WINDOWS)
4947 if test -z "$WINCE_WINDOWS_MOBILE"; then
4948 AC_DEFINE(MOZ_MEMORY_WINCE6)
4952 AC_DEFINE(MOZ_MEMORY_WINCE)
4953 AC_DEFINE(MOZ_MEMORY_WINDOWS)
4956 AC_DEFINE(MOZ_MEMORY_LINUX)
4957 AC_DEFINE(MOZ_MEMORY_ANDROID)
4960 AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
4964 if test "$OS_ARCH" != "Darwin"; then
4965 dnl NB: this must be kept in sync with jemalloc.h
4966 AC_DEFINE(HAVE_JEMALLOC_VALLOC)
4967 AC_DEFINE(HAVE_JEMALLOC_POSIX_MEMALIGN)
4968 AC_DEFINE(HAVE_JEMALLOC_MEMALIGN)
4971 AC_SUBST(MOZ_MEMORY)
4972 AC_SUBST(MOZ_MEMORY_LDFLAGS)
4974 dnl ========================================================
4975 dnl = Use malloc wrapper lib
4976 dnl ========================================================
4977 MOZ_ARG_ENABLE_BOOL(wrap-malloc,
4978 [ --enable-wrap-malloc Wrap malloc calls (gnu linker only)],
4982 if test -n "$_WRAP_MALLOC"; then
4983 if test "$GNU_CC"; then
4984 WRAP_MALLOC_CFLAGS="${LDFLAGS} -Wl,--wrap -Wl,malloc -Wl,--wrap -Wl,calloc -Wl,--wrap -Wl,valloc -Wl,--wrap -Wl,free -Wl,--wrap -Wl,realloc -Wl,--wrap -Wl,memalign -Wl,--wrap -Wl,__builtin_new -Wl,--wrap -Wl,__builtin_vec_new -Wl,--wrap -Wl,__builtin_delete -Wl,--wrap -Wl,__builtin_vec_delete -Wl,--wrap -Wl,PR_Free -Wl,--wrap -Wl,PR_Malloc -Wl,--wrap -Wl,PR_Calloc -Wl,--wrap -Wl,PR_Realloc -Wl,--wrap -Wl,strdup -Wl,--wrap -Wl,strndup -Wl,--wrap -Wl,posix_memalign"
4985 MKSHLIB='$(CXX) $(DSO_LDOPTS) $(WRAP_MALLOC_CFLAGS) $(WRAP_MALLOC_LIB) -o $@'
4989 dnl ========================================================
4990 dnl = Location of malloc wrapper lib
4991 dnl ========================================================
4992 MOZ_ARG_WITH_STRING(wrap-malloc,
4993 [ --with-wrap-malloc=DIR Location of malloc wrapper library],
4994 WRAP_MALLOC_LIB=$withval)
4996 dnl ========================================================
4997 dnl = Use JS Call tracing
4998 dnl ========================================================
4999 MOZ_ARG_ENABLE_BOOL(trace-jscalls,
5000 [ --enable-trace-jscalls Enable JS call enter/exit callback (default=no)],
5001 MOZ_TRACE_JSCALLS=1,
5002 MOZ_TRACE_JSCALLS= )
5003 if test -n "$MOZ_TRACE_JSCALLS"; then
5004 AC_DEFINE(MOZ_TRACE_JSCALLS)
5007 dnl ========================================================
5009 dnl ========================================================
5010 MOZ_ARG_ENABLE_BOOL(tracevis,
5011 [ --enable-tracevis Enable TraceVis tracing tool (default=no)],
5014 if test -n "$MOZ_TRACEVIS"; then
5015 AC_DEFINE(MOZ_TRACEVIS)
5016 if test -z "$ENABLE_TRACEJIT"; then
5017 AC_MSG_ERROR([--enable-tracevis is incompatible with --disable-tracejit])
5021 dnl ========================================================
5023 dnl ========================================================
5024 MOZ_ARG_ENABLE_BOOL(gctimer,
5025 [ --enable-gctimer Enable GC timer (default=no)],
5028 if test -n "$MOZ_GCTIMER"; then
5029 AC_DEFINE(MOZ_GCTIMER)
5032 dnl ========================================================
5034 dnl ========================================================
5035 MOZ_ARG_ENABLE_BOOL(valgrind,
5036 [ --enable-valgrind Enable Valgrind integration hooks (default=no)],
5039 if test -n "$MOZ_VALGRIND"; then
5040 AC_CHECK_HEADER([valgrind/valgrind.h], [],
5042 [--enable-valgrind specified but Valgrind is not installed]))
5043 AC_DEFINE(MOZ_VALGRIND)
5046 dnl ========================================================
5048 dnl ========================================================
5049 MOZ_ARG_ENABLE_BOOL(jprof,
5050 [ --enable-jprof Enable jprof profiling tool (needs mozilla/tools/jprof). Implies --enable-profiling.],
5053 if test -n "$MOZ_JPROF"; then
5055 AC_DEFINE(MOZ_JPROF)
5058 dnl ========================================================
5060 dnl ========================================================
5061 MOZ_ARG_ENABLE_BOOL(shark,
5062 [ --enable-shark Enable shark remote profiling. Implies --enable-profiling.],
5065 if test -n "$MOZ_SHARK"; then
5067 AC_DEFINE(MOZ_SHARK)
5070 dnl ========================================================
5072 dnl ========================================================
5073 MOZ_ARG_ENABLE_BOOL(callgrind,
5074 [ --enable-callgrind Enable callgrind profiling],
5077 if test -n "$MOZ_CALLGRIND"; then
5078 AC_DEFINE(MOZ_CALLGRIND)
5081 dnl ========================================================
5083 dnl ========================================================
5084 MOZ_ARG_ENABLE_BOOL(vtune,
5085 [ --enable-vtune Enable vtune profiling. Implies --enable-profiling.],
5088 if test -n "$MOZ_VTUNE"; then
5090 AC_DEFINE(MOZ_VTUNE)
5093 dnl ========================================================
5095 dnl ========================================================
5096 if test -n "$MOZ_PROFILING"; then
5097 AC_DEFINE(MOZ_PROFILING)
5100 dnl ========================================================
5101 dnl Zealous JavaScript GC
5102 dnl ========================================================
5103 MOZ_ARG_ENABLE_BOOL(gczeal,
5104 [ --enable-gczeal Enable zealous GCing],
5107 if test -n "$JS_GC_ZEAL"; then
5108 AC_DEFINE(JS_GC_ZEAL)
5111 dnl ======================================================
5112 dnl = Enable compiling with ccache
5113 dnl ======================================================
5114 MOZ_ARG_WITH_STRING(ccache,
5115 [ --with-ccache[=path/to/ccache]
5116 Enable compiling with ccache],
5117 CCACHE=$withval, CCACHE="no")
5119 if test "$CCACHE" != "no"; then
5120 if test -z "$CCACHE" -o "$CCACHE" = "yes"; then
5123 if test ! -e "$CCACHE"; then
5124 AC_MSG_ERROR([$CCACHE not found])
5127 MOZ_PATH_PROGS(CCACHE, $CCACHE ccache)
5128 if test -z "$CCACHE" -o "$CCACHE" = ":"; then
5129 AC_MSG_ERROR([ccache not found])
5130 elif test -x "$CCACHE"; then
5134 AC_MSG_ERROR([$CCACHE is not executable])
5138 dnl ========================================================
5139 dnl = Enable static checking using gcc-dehydra
5140 dnl ========================================================
5142 MOZ_ARG_WITH_STRING(static-checking,
5143 [ --with-static-checking=path/to/gcc_dehydra.so
5144 Enable static checking of code using GCC-dehydra],
5145 DEHYDRA_PATH=$withval,
5148 if test -n "$DEHYDRA_PATH"; then
5149 if test ! -f "$DEHYDRA_PATH"; then
5150 AC_MSG_ERROR([The dehydra plugin is not at the specified path.])
5152 AC_DEFINE(NS_STATIC_CHECKING)
5154 AC_SUBST(DEHYDRA_PATH)
5156 dnl ========================================================
5157 dnl = Enable stripping of libs & executables
5158 dnl ========================================================
5159 MOZ_ARG_ENABLE_BOOL(strip,
5160 [ --enable-strip Enable stripping of libs & executables ],
5164 dnl ========================================================
5165 dnl = Enable stripping of libs & executables when packaging
5166 dnl ========================================================
5167 MOZ_ARG_ENABLE_BOOL(install-strip,
5168 [ --enable-install-strip Enable stripping of libs & executables when packaging ],
5172 dnl ========================================================
5174 dnl = Profiling and Instrumenting
5176 dnl ========================================================
5177 MOZ_ARG_HEADER(Profiling and Instrumenting)
5179 dnl ========================================================
5180 dnl = Enable timeline service, which provides lightweight
5181 dnl = instrumentation of mozilla for performance measurement.
5182 dnl = Timeline is off by default.
5183 dnl ========================================================
5184 MOZ_ARG_ENABLE_BOOL(timeline,
5185 [ --enable-timeline Enable timeline services ],
5188 if test -n "$MOZ_TIMELINE"; then
5189 AC_DEFINE(MOZ_TIMELINE)
5192 dnl ========================================================
5193 dnl = Support for Quantify (Windows)
5194 dnl ========================================================
5195 MOZ_ARG_ENABLE_BOOL(quantify,
5196 [ --enable-quantify Enable Quantify support (Windows only) ],
5200 dnl ========================================================
5201 dnl = Support for demangling undefined symbols
5202 dnl ========================================================
5203 if test -z "$SKIP_LIBRARY_CHECKS"; then
5206 AC_CHECK_FUNCS(__cxa_demangle, HAVE_DEMANGLE=1, HAVE_DEMANGLE=)
5210 # Demangle only for debug or trace-malloc builds
5211 MOZ_DEMANGLE_SYMBOLS=
5212 if test "$HAVE_DEMANGLE" -a "$HAVE_GCC3_ABI" && test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
5213 MOZ_DEMANGLE_SYMBOLS=1
5214 AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
5216 AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
5218 dnl ========================================================
5219 dnl = Support for gcc stack unwinding (from gcc 3.3)
5220 dnl ========================================================
5221 if test "$HAVE_GCC3_ABI" -a -z "$SKIP_LIBRARY_CHECKS"; then
5222 AC_CHECK_HEADER(unwind.h, AC_CHECK_FUNCS(_Unwind_Backtrace))
5225 dnl ========================================================
5229 dnl ========================================================
5230 MOZ_ARG_HEADER(Misc. Options)
5232 dnl ========================================================
5233 dnl update xterm title
5234 dnl ========================================================
5235 MOZ_ARG_ENABLE_BOOL(xterm-updates,
5236 [ --enable-xterm-updates Update XTERM titles with current command.],
5240 if test -z "$SKIP_COMPILER_CHECKS"; then
5241 dnl ========================================================
5243 dnl = Compiler Options
5245 dnl ========================================================
5246 MOZ_ARG_HEADER(Compiler Options)
5248 dnl ========================================================
5249 dnl Check for gcc -pipe support
5250 dnl ========================================================
5251 AC_MSG_CHECKING([for gcc -pipe support])
5252 if test -n "$GNU_CC" -a -n "$GNU_CXX" -a -n "$GNU_AS"; then
5253 echo '#include <stdio.h>' > dummy-hello.c
5254 echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c
5255 ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
5256 cat dummy-hello.s 2> /dev/null | ${AS_BIN} -o dummy-hello.S - 2>&5
5257 if test $? = 0; then
5262 if test "$_res_as_stdin" = "yes"; then
5263 _SAVE_CFLAGS=$CFLAGS
5264 CFLAGS="$CFLAGS -pipe"
5265 AC_TRY_COMPILE( [ #include <stdio.h> ],
5266 [printf("Hello World\n");],
5267 [_res_gcc_pipe="yes"],
5268 [_res_gcc_pipe="no"] )
5269 CFLAGS=$_SAVE_CFLAGS
5271 if test "$_res_as_stdin" = "yes" -a "$_res_gcc_pipe" = "yes"; then
5273 CFLAGS="$CFLAGS -pipe"
5274 CXXFLAGS="$CXXFLAGS -pipe"
5278 rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
5279 AC_MSG_RESULT([$_res])
5284 dnl ========================================================
5285 dnl Profile guided optimization
5286 dnl ========================================================
5287 dnl Test for profiling options
5288 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
5290 dnl Provide a switch to disable PGO even when called via profiledbuild.
5291 MOZ_ARG_DISABLE_BOOL(profile-guided-optimization,
5292 [ --disable-profile-guided-optimization
5293 Don't build with PGO even if called via make profiledbuild],
5294 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=1,
5295 MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE=)
5297 AC_SUBST(MOZ_PROFILE_GUIDED_OPTIMIZE_DISABLE)
5299 _SAVE_CFLAGS="$CFLAGS"
5300 CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
5302 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
5303 AC_TRY_COMPILE([], [return 0;],
5304 [ PROFILE_GEN_CFLAGS="-fprofile-generate"
5305 result="yes" ], result="no")
5306 AC_MSG_RESULT([$result])
5308 if test $result = "yes"; then
5309 PROFILE_GEN_LDFLAGS="-fprofile-generate"
5310 PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch -freorder-blocks-and-partition"
5311 PROFILE_USE_LDFLAGS="-fprofile-use"
5314 CFLAGS="$_SAVE_CFLAGS"
5316 if test -n "$INTEL_CC"; then
5317 PROFILE_GEN_CFLAGS="-prof-gen -prof-dir ."
5318 PROFILE_GEN_LDFLAGS=
5319 PROFILE_USE_CFLAGS="-prof-use -prof-dir ."
5320 PROFILE_USE_LDFLAGS=
5323 dnl Sun Studio on Solaris
5324 if test "$SOLARIS_SUNPRO_CC"; then
5325 PROFILE_GEN_CFLAGS="-xprofile=collect:$_objdir/$enable_application"
5326 PROFILE_GEN_LDFLAGS="-xprofile=collect:$_objdir/$enable_application"
5327 PROFILE_USE_CFLAGS="-xprofile=use:$_objdir/$enable_application"
5328 PROFILE_USE_LDFLAGS="-xprofile=use:$_objdir/$enable_application"
5331 AC_SUBST(PROFILE_GEN_CFLAGS)
5332 AC_SUBST(PROFILE_GEN_LDFLAGS)
5333 AC_SUBST(PROFILE_USE_CFLAGS)
5334 AC_SUBST(PROFILE_USE_LDFLAGS)
5338 dnl ========================================================
5339 dnl Test for -pedantic bustage
5340 dnl ========================================================
5341 MOZ_ARG_DISABLE_BOOL(pedantic,
5342 [ --disable-pedantic Issue all warnings demanded by strict ANSI C ],
5344 if test "$_PEDANTIC"; then
5345 _SAVE_CXXFLAGS=$CXXFLAGS
5346 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
5347 AC_MSG_CHECKING([whether C++ compiler has -pedantic long long bug])
5348 AC_TRY_COMPILE([$configure_static_assert_macros],
5349 [CONFIGURE_STATIC_ASSERT(sizeof(long long) == 8)],
5350 result="no", result="yes" )
5351 AC_MSG_RESULT([$result])
5352 CXXFLAGS="$_SAVE_CXXFLAGS"
5356 _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
5357 _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic ${_COMPILER_PREFIX}-Wno-long-long"
5360 AC_MSG_ERROR([Your compiler appears to have a known bug where long long is miscompiled when using -pedantic. Reconfigure using --disable-pedantic. ])
5365 dnl ========================================================
5366 dnl Test for correct temporary object destruction order
5367 dnl ========================================================
5368 dnl We want to make sure the compiler follows the C++ spec here as
5369 dnl xpcom and the string classes depend on it (bug 235381).
5370 AC_MSG_CHECKING([for correct temporary object destruction order])
5371 AC_TRY_RUN([ class A {
5372 public: A(int& x) : mValue(x) {}
5374 operator char**() { return 0; }
5375 private: int& mValue;
5377 void func(char **arg) {}
5388 result="yes", result="no", result="maybe")
5389 AC_MSG_RESULT([$result])
5391 if test "$result" = "no"; then
5392 AC_MSG_ERROR([Your compiler does not follow the C++ specification for temporary object destruction order.])
5395 dnl ========================================================
5396 dnl Autoconf test for gcc 2.7.2.x (and maybe others?) so that we don't
5397 dnl provide non-const forms of the operator== for comparing nsCOMPtrs to
5398 dnl raw pointers in nsCOMPtr.h. (VC++ has the same bug.)
5399 dnl ========================================================
5400 _SAVE_CXXFLAGS=$CXXFLAGS
5401 CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}"
5402 AC_CACHE_CHECK(for correct overload resolution with const and templates,
5403 ac_nscap_nonconst_opeq_bug,
5412 template <class T, class U>
5413 int operator==(const Pointer<T>& rhs, U* lhs)
5415 return rhs.myPtr == lhs;
5418 template <class T, class U>
5419 int operator==(const Pointer<T>& rhs, const U* lhs)
5421 return rhs.myPtr == lhs;
5429 ac_nscap_nonconst_opeq_bug="no",
5430 ac_nscap_nonconst_opeq_bug="yes")])
5431 CXXFLAGS="$_SAVE_CXXFLAGS"
5433 if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then
5434 AC_DEFINE(NSCAP_DONT_PROVIDE_NONCONST_OPEQ)
5437 dnl ========================================================
5438 dnl Check for tm_zone, tm_gmtoff in struct tm
5439 dnl ========================================================
5440 AC_CACHE_CHECK(for tm_zone tm_gmtoff in struct tm,
5441 ac_cv_struct_tm_zone_tm_gmtoff,
5442 [AC_TRY_COMPILE([#include <time.h>],
5443 [struct tm tm; tm.tm_zone = 0; tm.tm_gmtoff = 1;],
5444 [ac_cv_struct_tm_zone_tm_gmtoff="yes"],
5445 [ac_cv_struct_tm_zone_tm_gmtoff="no"])])
5446 if test "$ac_cv_struct_tm_zone_tm_gmtoff" = "yes" ; then
5447 AC_DEFINE(HAVE_TM_ZONE_TM_GMTOFF)
5450 fi # SKIP_COMPILER_CHECKS
5452 dnl ========================================================
5454 dnl Should be smarter and check that the compiler does indeed have rtti
5455 dnl ========================================================
5456 MOZ_ARG_ENABLE_BOOL(cpp-rtti,
5457 [ --enable-cpp-rtti Enable C++ RTTI ],
5458 [ _MOZ_USE_RTTI=1 ],
5461 if test "$_MOZ_USE_RTTI"; then
5462 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON
5464 _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF
5467 AC_SUBST(_MOZ_RTTI_FLAGS_ON)
5469 dnl ========================================================
5470 dnl C++ exceptions (g++/VC/irix6/Sun only - for now)
5471 dnl Should be smarter and check that the compiler does indeed have exceptions
5472 dnl ========================================================
5473 MOZ_ARG_ENABLE_BOOL(cpp-exceptions,
5474 [ --enable-cpp-exceptions Enable C++ exceptions ],
5475 [ _MOZ_CPP_EXCEPTIONS=1 ],
5476 [ _MOZ_CPP_EXCEPTIONS= ])
5478 if test "$_MOZ_CPP_EXCEPTIONS"; then
5479 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_ON
5480 AC_DEFINE(MOZ_CPP_EXCEPTIONS)
5482 _MOZ_EXCEPTIONS_FLAGS=$_MOZ_EXCEPTIONS_FLAGS_OFF
5485 AC_SUBST(_MOZ_EXCEPTIONS_FLAGS_ON)
5487 # Irix & OSF native compilers do not like exception declarations
5488 # when exceptions are disabled
5489 if test -n "$MIPSPRO_CXX" -o -n "$COMPAQ_CXX" -o -n "$VACPP"; then
5490 AC_DEFINE(CPP_THROW_NEW, [])
5492 AC_DEFINE(CPP_THROW_NEW, [throw()])
5496 dnl ========================================================
5498 dnl = Build depencency options
5500 dnl ========================================================
5501 MOZ_ARG_HEADER(Build dependencies)
5503 dnl ========================================================
5504 dnl = Do not auto generate dependency info
5505 dnl ========================================================
5507 MOZ_ARG_DISABLE_BOOL(auto-deps,
5508 [ --disable-auto-deps Do not automatically generate dependency info],
5512 if test -n "$MOZ_AUTO_DEPS"; then
5513 dnl ========================================================
5514 dnl = Use mkdepend instead of $CC -MD for dependency generation
5515 dnl ========================================================
5517 MOZ_ARG_DISABLE_BOOL(md,
5518 [ --disable-md Do not use compiler-based dependencies ],
5521 [dnl Default is to turn on -MD if using GNU-compatible compilers
5522 if test "$GNU_CC" -a "$GNU_CXX" -a "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "WINCE"; then
5525 dnl Default is to use -xM if using Sun Studio on Solaris
5526 if test "$SOLARIS_SUNPRO_CC"; then
5529 if test "$_cpp_md_flag"; then
5531 if test "$OS_ARCH" = "OpenVMS"; then
5532 _DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(basename $(@F)).pp))'
5534 _DEPEND_CFLAGS='$(filter-out %/.pp,-MD -MF $(MDDEPDIR)/$(basename $(@F)).pp)'
5536 dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
5537 if test "$SOLARIS_SUNPRO_CC"; then
5542 dnl Don't override this for MSVC
5543 if test -z "$_WIN32_MSVC"; then
5544 _USE_CPP_INCLUDE_FLAG=
5545 _DEFINES_CFLAGS='$(ACDEFINES) -D_JS_CONFDEFS_H_ -DMOZILLA_CLIENT'
5546 _DEFINES_CXXFLAGS='$(ACDEFINES) -D_JS_CONFDEFS_H_ -DMOZILLA_CLIENT'
5548 echo '#include <stdio.h>' > dummy-hello.c
5550 CL_INCLUDES_PREFIX=`"${CC}" -showIncludes -c -Fonul dummy-hello.c 2>&1 | sed -ne 's/^\([^:]*:[^:]*:\).*stdio.h$/\1/p'`
5552 if test -z "$CL_INCLUDES_PREFIX"; then
5553 AC_MSG_ERROR([Cannot find cl -showIncludes prefix.])
5555 AC_SUBST(CL_INCLUDES_PREFIX)
5557 _topsrcdirwin=`cd \`dirname $0\`; pwd -W`
5558 dnl cl.py provides dependency generation for MSVC
5559 CC_WRAPPER="$PYTHON -O $_topsrcdirwin/build/cl.py"
5560 CXX_WRAPPER="$PYTHON -O $_topsrcdirwin/build/cl.py"
5566 AC_SUBST(MOZ_AUTO_DEPS)
5567 AC_SUBST(COMPILER_DEPEND)
5569 AC_SUBST(CC_WRAPPER)
5570 AC_SUBST(CXX_WRAPPER)
5573 dnl ========================================================
5575 dnl = Static Build Options
5577 dnl ========================================================
5578 MOZ_ARG_HEADER(Static build options)
5580 MOZ_ARG_ENABLE_BOOL(static,
5581 [ --enable-static Enable building of internal static libs],
5582 BUILD_STATIC_LIBS=1,
5585 dnl ========================================================
5586 dnl = Link js shell to system readline
5587 dnl ========================================================
5588 MOZ_ARG_ENABLE_BOOL(readline,
5589 [ --enable-readline Link js shell to system readline library],
5598 *-wince*|*-winmo*|*-mingw*|*-cygwin*|*-msvc*|*-mks*)
5609 if test -z "$SKIP_LIBRARY_CHECKS" -a -z "$NO_EDITLINE"; then
5610 if test -n "$JS_WANT_READLINE"; then
5611 AC_CHECK_LIB(readline, readline,
5612 EDITLINE_LIBS="-lreadline",
5613 AC_MSG_ERROR([No system readline library found.]))
5615 dnl By default, we use editline
5616 JS_NATIVE_EDITLINE=1
5617 EDITLINE_LIBS='$(DEPTH)/editline/$(LIB_PREFIX)editline.$(LIB_SUFFIX)'
5620 dnl Either way, we want to build with line editing support.
5623 AC_SUBST(JS_NATIVE_EDITLINE)
5624 AC_SUBST(JS_DISABLE_SHELL)
5625 AC_SUBST(EDITLINE_LIBS)
5627 dnl ========================================================
5629 dnl = Standalone module options
5631 dnl ========================================================
5632 MOZ_ARG_HEADER(Standalone module options (Not for building Mozilla))
5634 dnl ========================================================
5635 dnl = Build jsctypes if it's enabled
5636 dnl ========================================================
5637 MOZ_ARG_ENABLE_BOOL(ctypes,
5638 [ --enable-ctypes Enable js-ctypes (default=no)],
5641 AC_SUBST(JS_HAS_CTYPES)
5642 if test "$JS_HAS_CTYPES"; then
5643 dnl Error out if we're on MSVC and MASM is unavailable.
5644 if test -n "$_MSC_VER" -a \( "$AS" != "ml.exe" -a "$AS" != "ml64.exe" \); then
5645 AC_MSG_ERROR([\"$AS\" is not a suitable assembler to build js-ctypes. If you are building with MS Visual Studio 8 Express, you may download the MASM 8.0 package, upgrade to Visual Studio 9 Express, or install the Vista SDK. Or do not use --enable-ctypes.])
5647 AC_DEFINE(JS_HAS_CTYPES)
5650 if test "$MOZ_DEBUG" -o "$NS_TRACE_MALLOC"; then
5651 MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS=
5654 MOZ_ARG_WITH_STRING(sync-build-files,
5655 [ --with-sync-build-files=DIR
5656 Check that files in 'config' and 'build' match
5657 their originals in 'DIR/config' and 'DIR/build'.
5658 This helps keep the SpiderMonkey build machinery
5659 in sync with Mozilla's, on which it is based.],
5660 [MOZ_SYNC_BUILD_FILES=$withval ] )
5661 AC_SUBST(MOZ_SYNC_BUILD_FILES)
5663 dnl ========================================================
5665 dnl = Maintainer debug option (no --enable equivalent)
5667 dnl ========================================================
5672 AC_SUBST(AR_EXTRACT)
5676 AC_SUBST(AS_DASH_C_FLAG)
5684 AC_SUBST(NS_USE_NATIVE)
5685 AC_SUBST(MOZ_JS_LIBS)
5688 AC_SUBST(MOZ_DEBUG_SYMBOLS)
5689 AC_SUBST(MOZ_DEBUG_ENABLE_DEFS)
5690 AC_SUBST(MOZ_DEBUG_DISABLE_DEFS)
5691 AC_SUBST(MOZ_DEBUG_FLAGS)
5692 AC_SUBST(MOZ_DEBUG_LDFLAGS)
5693 AC_SUBST(WARNINGS_AS_ERRORS)
5697 AC_SUBST(MOZ_CALLGRIND)
5699 AC_SUBST(MOZ_PROFILING)
5700 AC_SUBST(MOZ_JSLOADER)
5701 AC_SUBST(MOZ_QUANTIFY)
5704 AC_SUBST(BUILD_STATIC_LIBS)
5705 AC_SUBST(ENABLE_TESTS)
5707 AC_SUBST(ENABLE_STRIP)
5708 AC_SUBST(PKG_SKIP_STRIP)
5709 AC_SUBST(INCREMENTAL_LINKER)
5710 AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
5711 AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
5713 AC_SUBST(MOZ_FIX_LINK_PATHS)
5715 AC_SUBST(USE_DEPENDENT_LIBS)
5717 AC_SUBST(MOZ_BUILD_ROOT)
5718 AC_SUBST(MOZ_OS2_TOOLS)
5720 AC_SUBST(MOZ_POST_DSO_LIB_COMMAND)
5721 AC_SUBST(MOZ_POST_PROGRAM_COMMAND)
5722 AC_SUBST(MOZ_TIMELINE)
5724 AC_SUBST(MOZ_APP_NAME)
5725 AC_SUBST(MOZ_APP_DISPLAYNAME)
5726 AC_SUBST(MOZ_APP_UA_NAME)
5727 AC_SUBST(MOZ_APP_VERSION)
5728 AC_SUBST(MOZ_UA_FIREFOX_VERSION)
5729 AC_SUBST(FIREFOX_VERSION)
5731 AC_SUBST(MOZ_PKG_SPECIAL)
5733 AC_SUBST(MOZILLA_OFFICIAL)
5736 AC_SUBST(MOZ_MAPINFO)
5737 AC_SUBST(MOZ_BROWSE_INFO)
5738 AC_SUBST(MOZ_TOOLS_DIR)
5739 AC_SUBST(CYGWIN_WRAPPER)
5741 AC_SUBST(WIN32_REDIST_DIR)
5745 AC_SUBST(WINCE_SDK_DIR)
5746 AC_SUBST(WINCE_WINDOWS_MOBILE)
5748 dnl Echo the CFLAGS to remove extra whitespace.
5755 $_MOZ_EXCEPTIONS_FLAGS \
5756 $_WARNINGS_CXXFLAGS \
5759 COMPILE_CFLAGS=`echo \
5764 COMPILE_CXXFLAGS=`echo \
5765 $_DEFINES_CXXFLAGS \
5769 AC_SUBST(SYSTEM_MAKEDEPEND)
5771 AC_SUBST(NSPR_CFLAGS)
5773 AC_SUBST(MOZ_NATIVE_NSPR)
5778 AC_SUBST(COMPILE_CFLAGS)
5779 AC_SUBST(COMPILE_CXXFLAGS)
5782 AC_SUBST(CROSS_COMPILE)
5786 AC_SUBST(HOST_CFLAGS)
5787 AC_SUBST(HOST_CXXFLAGS)
5788 AC_SUBST(HOST_OPTIMIZE_FLAGS)
5790 AC_SUBST(HOST_AR_FLAGS)
5792 AC_SUBST(HOST_RANLIB)
5793 AC_SUBST(HOST_NSPR_MDCPUCFG)
5794 AC_SUBST(HOST_BIN_SUFFIX)
5795 AC_SUBST(HOST_OS_ARCH)
5797 AC_SUBST(TARGET_CPU)
5798 AC_SUBST(TARGET_VENDOR)
5800 AC_SUBST(TARGET_NSPR_MDCPUCFG)
5801 AC_SUBST(TARGET_MD_ARCH)
5802 AC_SUBST(TARGET_XPCOM_ABI)
5805 AC_SUBST(OS_RELEASE)
5808 AC_SUBST(INTEL_ARCHITECTURE)
5810 AC_SUBST(WRAP_MALLOC_CFLAGS)
5811 AC_SUBST(WRAP_MALLOC_LIB)
5814 AC_SUBST(MKSHLIB_FORCE_ALL)
5815 AC_SUBST(MKSHLIB_UNFORCE_ALL)
5816 AC_SUBST(DSO_CFLAGS)
5817 AC_SUBST(DSO_PIC_CFLAGS)
5818 AC_SUBST(DSO_LDOPTS)
5819 AC_SUBST(LIB_PREFIX)
5820 AC_SUBST(DLL_PREFIX)
5821 AC_SUBST(DLL_SUFFIX)
5822 AC_DEFINE_UNQUOTED(MOZ_DLL_SUFFIX, "$DLL_SUFFIX")
5823 AC_SUBST(LIB_SUFFIX)
5824 AC_SUBST(OBJ_SUFFIX)
5825 AC_SUBST(BIN_SUFFIX)
5826 AC_SUBST(ASM_SUFFIX)
5827 AC_SUBST(IMPORT_LIB_SUFFIX)
5829 AC_SUBST(CC_VERSION)
5830 AC_SUBST(CXX_VERSION)
5831 AC_SUBST(MSMANIFEST_TOOL)
5833 if test "$USING_HCC"; then
5834 CC='${topsrcdir}/build/hcc'
5836 CXX='${topsrcdir}/build/hcpp'
5837 CXX="$CXX '$_OLDCXX'"
5842 AC_MSG_CHECKING([for posix_fallocate])
5843 AC_TRY_LINK([#define _XOPEN_SOURCE 600
5844 #include <fcntl.h>],
5845 [posix_fallocate(0, 0, 0);],
5846 [ac_cv___posix_fallocate=true],
5847 [ac_cv___posix_fallocate=false])
5849 if test "$ac_cv___posix_fallocate" = true ; then
5850 AC_DEFINE(HAVE_POSIX_FALLOCATE)
5856 dnl Check for missing components
5857 if test "$COMPILE_ENVIRONMENT"; then
5858 if test "$MOZ_X11"; then
5859 dnl ====================================================
5860 dnl = Check if X headers exist
5861 dnl ====================================================
5862 _SAVE_CFLAGS=$CFLAGS
5863 CFLAGS="$CFLAGS $XCFLAGS"
5867 #include <X11/Xlib.h>
5868 #include <X11/Intrinsic.h>
5872 if ((dpy = XOpenDisplay(NULL)) == NULL) {
5873 fprintf(stderr, ": can't open %s\n", XDisplayName(NULL));
5877 [ AC_MSG_ERROR([Could not compile basic X program.]) ])
5878 CFLAGS="$_SAVE_CFLAGS"
5880 if test ! -z "$MISSING_X"; then
5881 AC_MSG_ERROR([ Could not find the following X libraries: $MISSING_X ]);
5885 fi # COMPILE_ENVIRONMENT
5887 dnl Set various defines and substitutions
5888 dnl ========================================================
5890 if test "$OS_ARCH" = "BeOS"; then
5892 elif test "$OS_ARCH" = "Darwin"; then
5893 AC_DEFINE(XP_MACOSX)
5895 AC_DEFINE(UNIX_ASYNC_DNS)
5896 elif test "$OS_ARCH" = "OpenVMS"; then
5898 elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
5900 AC_DEFINE(UNIX_ASYNC_DNS)
5903 AC_ARG_ENABLE(threadsafe,
5904 [ --enable-threadsafe Enable support for multiple threads.],
5905 [AC_DEFINE(JS_THREADSAFE)],)
5907 if test "$MOZ_DEBUG"; then
5908 AC_DEFINE(MOZ_REFLOW_PERF)
5909 AC_DEFINE(MOZ_REFLOW_PERF_DSP)
5912 if test "$ACCESSIBILITY" -a "$MOZ_ENABLE_GTK2" ; then
5913 AC_DEFINE(MOZ_ACCESSIBILITY_ATK)
5914 ATK_FULL_VERSION=`$PKG_CONFIG --modversion atk`
5915 ATK_MAJOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
5916 ATK_MINOR_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $2 }'`
5917 ATK_REV_VERSION=`echo ${ATK_FULL_VERSION} | $AWK -F\. '{ print $3 }'`
5918 AC_DEFINE_UNQUOTED(ATK_MAJOR_VERSION, $ATK_MAJOR_VERSION)
5919 AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
5920 AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
5923 dnl ========================================================
5924 dnl JavaScript shell
5925 dnl ========================================================
5927 AC_HAVE_FUNCS(setlocale)
5928 AC_HAVE_FUNCS(localeconv)
5930 dnl ========================================================
5931 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
5932 dnl ========================================================
5935 WIN_TOP_SRC=`cd $srcdir; pwd -W`
5938 HOST_CC="\$(CYGWIN_WRAPPER) $HOST_CC"
5939 HOST_CXX="\$(CYGWIN_WRAPPER) $HOST_CXX"
5940 CC="\$(CYGWIN_WRAPPER) $CC"
5941 CXX="\$(CYGWIN_WRAPPER) $CXX"
5942 CPP="\$(CYGWIN_WRAPPER) $CPP"
5943 LD="\$(CYGWIN_WRAPPER) $LD"
5944 AS="\$(CYGWIN_WRAPPER) $AS"
5945 RC="\$(CYGWIN_WRAPPER) $RC"
5946 CYGDRIVE_MOUNT=`mount -p | awk '{ if (/^\//) { print $1; exit } }'`
5947 WIN_TOP_SRC=`cygpath -a -w $srcdir | sed -e 's|\\\\|/|g'`
5951 AC_SUBST(CYGDRIVE_MOUNT)
5952 AC_SUBST(WIN_TOP_SRC)
5954 AC_SUBST(MOZILLA_VERSION)
5956 AC_SUBST(ac_configure_args)
5958 dnl Spit out some output
5959 dnl ========================================================
5961 # Save the defines header file before autoconf removes it.
5962 # (Do not add AC_DEFINE calls after this line.)
5963 _CONFIG_TMP=confdefs-tmp.h
5964 _CONFIG_DEFS_H=js-confdefs.h
5966 cat > $_CONFIG_TMP <<\EOF
5967 /* List of defines generated by configure. Included with preprocessor flag,
5968 * -include, to avoid long list of -D defines on the compile command-line.
5972 #ifndef _JS_CONFDEFS_H_
5973 #define _JS_CONFDEFS_H_
5976 _EGREP_PATTERN='^#define ('
5977 if test -n "$_NON_GLOBAL_ACDEFINES"; then
5978 for f in $_NON_GLOBAL_ACDEFINES; do
5979 _EGREP_PATTERN="${_EGREP_PATTERN}$f|"
5982 _EGREP_PATTERN="${_EGREP_PATTERN}dummy_never_defined)"
5984 sort confdefs.h | egrep -v "$_EGREP_PATTERN" >> $_CONFIG_TMP
5986 cat >> $_CONFIG_TMP <<\EOF
5988 #endif /* _JS_CONFDEFS_H_ */
5992 # Only write js-confdefs.h when something changes (or it doesn't exist)
5993 if cmp -s $_CONFIG_TMP $_CONFIG_DEFS_H; then
5996 AC_MSG_RESULT("creating $_CONFIG_DEFS_H")
5997 mv -f $_CONFIG_TMP $_CONFIG_DEFS_H
5999 echo ==== $_CONFIG_DEFS_H =================================
6003 dnl Probably shouldn't call this manually but we always want the output of DEFS
6004 rm -f confdefs.h.save
6005 mv confdefs.h confdefs.h.save
6006 egrep -v "$_EGREP_PATTERN" confdefs.h.save > confdefs.h
6007 AC_OUTPUT_MAKE_DEFS()
6009 AC_SUBST(MOZ_DEFINES)
6011 mv confdefs.h.save confdefs.h
6017 jsapi-tests/Makefile
6021 config/mkdepend/Makefile
6024 if test -n "$JS_NATIVE_EDITLINE"; then
6025 MAKEFILES="$MAKEFILES
6031 dnl Run a perl script to quickly create the makefiles.
6032 dnl If it succeeds, it outputs a shell command to set CONFIG_FILES
6033 dnl for the files it cannot handle correctly. This way, config.status
6034 dnl will handle these files.
6035 dnl If it fails, nothing is set and config.status will run as usual.
6037 dnl This does not change the $MAKEFILES variable.
6039 dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
6041 if test -z "${AS_PERL}"; then
6042 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
6044 echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl -nowrap --cygwin-srcdir=$srcdir > conftest.sh
6049 echo $MAKEFILES > unallmakefiles
6051 mv -f config/autoconf.mk config/autoconf.mk.orig 2> /dev/null
6053 AC_OUTPUT($MAKEFILES)
6055 dnl Prevent the regeneration of autoconf.mk forcing rebuilds of the world
6056 if cmp -s config/autoconf.mk config/autoconf.mk.orig; then
6057 echo "config/autoconf.mk is unchanged"
6058 mv -f config/autoconf.mk.orig config/autoconf.mk 2> /dev/null
6060 rm -f config/autoconf.mk.orig 2> /dev/null
6063 # Produce the js-config script at configure time; see the comments for
6064 # 'js-config' in Makefile.in.
6065 AC_MSG_RESULT(invoking make to create js-config script)
6068 # Build jsctypes if it's enabled.
6069 if test "$JS_HAS_CTYPES"; then
6070 # Run the libffi 'configure' script.
6071 ac_configure_args="--disable-shared --enable-static --disable-raw-api"
6072 if test "$MOZ_DEBUG"; then
6073 ac_configure_args="$ac_configure_args --enable-debug"
6075 if test "$DSO_PIC_CFLAGS"; then
6076 ac_configure_args="$ac_configure_args --with-pic"
6078 if test "$CROSS_COMPILE"; then
6081 ac_configure_args="$ac_configure_args --build=$build --host=${target_cpu}-${target_os} HOST_CC=\"$HOST_CC\" CC=\"$CC\""
6084 CFLAGS="$ANDROID_CFLAGS"
6085 CPPFLAGS="$ANDROID_CPPFLAGS"
6086 LDFLAGS="$ANDROID_LDFLAGS"
6088 export AS CC CXX CPP LD AR RANLIB STRIP CPPFLAGS CFLAGS LDFLAGS
6090 ac_configure_args="$ac_configure_args --build=$build --host=${target_cpu}-${target_os} HOST_CC=\"$HOST_CC\""
6093 ac_configure_args="$ac_configure_args --build=$build --host=$target HOST_CC=\"$HOST_CC\" CC=\"$CC\""
6097 if test "$_MSC_VER"; then
6098 # Use a wrapper script for cl and ml that looks more like gcc.
6099 # autotools can't quite handle an MSVC build environment yet.
6100 ac_configure_args="$ac_configure_args LD=link CPP=\"cl -nologo -EP\" SHELL=sh.exe"
6101 case "${target_cpu}" in
6103 # Need target since MSYS tools into mozilla-build may be 32bit
6104 ac_configure_args="$ac_configure_args CC=\"$_topsrcdir/ctypes/libffi/msvcc.sh -m64\" --build=$build --host=$target"
6107 ac_configure_args="$ac_configure_args CC=$_topsrcdir/ctypes/libffi/msvcc.sh"
6111 if test "$SOLARIS_SUNPRO_CC"; then
6112 # Always use gcc for libffi on Solaris
6113 if test ! "$HAVE_64BIT_OS"; then
6114 ac_configure_args="$ac_configure_args CC=gcc CFLAGS=-m32 LD= LDFLAGS="
6116 ac_configure_args="$ac_configure_args CC=gcc CFLAGS=-m64 LD= LDFLAGS="
6119 if test "$OS_ARCH" = "OS2"; then
6120 ac_configure_args="$ac_configure_args CFLAGS=-Zomf AR=emxomfar"
6122 if test -n "$MOZ_THUMB2"; then
6123 ac_configure_args="$ac_configure_args --enable-thumb2"
6125 if test -n "$MOZ_ARM_ARCH"; then
6126 ac_configure_args="$ac_configure_args --with-cpu-arch=$MOZ_ARM_ARCH"
6129 # Use a separate cache file for libffi, since it does things differently
6130 # from our configure.
6131 mkdir -p $_objdir/ctypes/libffi
6132 old_cache_file=$cache_file
6133 cache_file=$_objdir/ctypes/libffi/config.cache
6134 old_config_files=$CONFIG_FILES
6136 AC_OUTPUT_SUBDIRS(ctypes/libffi)
6137 cache_file=$old_cache_file
6138 ac_configure_args="$_SUBDIR_CONFIG_ARGS"
6139 CONFIG_FILES=$old_config_files