/[jscoverage]/trunk/js/configure.in
ViewVC logotype

Annotation of /trunk/js/configure.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 507 - (hide annotations)
Sun Jan 10 07:23:34 2010 UTC (10 years, 9 months ago) by siliconforks
File size: 172133 byte(s)
Update SpiderMonkey from Firefox 3.6rc1.

1 siliconforks 460 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*-
2     dnl vi: set tabstop=4 shiftwidth=4 expandtab:
3     dnl ***** BEGIN LICENSE BLOCK *****
4     dnl Version: MPL 1.1/GPL 2.0/LGPL 2.1
5     dnl
6     dnl The contents of this file are subject to the Mozilla Public License Version
7     dnl 1.1 (the "License"); you may not use this file except in compliance with
8     dnl the License. You may obtain a copy of the License at
9     dnl http://www.mozilla.org/MPL/
10     dnl
11     dnl Software distributed under the License is distributed on an "AS IS" basis,
12     dnl WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13     dnl for the specific language governing rights and limitations under the
14     dnl License.
15     dnl
16     dnl The Original Code is this file as it was released upon August 6, 1998.
17     dnl
18     dnl The Initial Developer of the Original Code is
19     dnl Christopher Seawood.
20     dnl Portions created by the Initial Developer are Copyright (C) 1998-2001
21     dnl the Initial Developer. All Rights Reserved.
22     dnl
23     dnl Contributor(s):
24     dnl Jamie Zawinski <jwz@jwz.org>
25     dnl gettimeofday args check
26     dnl Christopher Blizzard <blizzard@appliedtheory.com>
27     dnl gnomefe update & enable-pthreads
28     dnl Ramiro Estrugo <ramiro@netscape.com>
29     dnl X11 makedepend support
30     dnl Insure support.
31     dnl Henry Sobotka <sobotka@axess.com>
32     dnl OS/2 support
33     dnl Dan Mosedale <dmose@mozilla.org>
34     dnl LDAP support
35     dnl Seth Spitzer <sspitzer@netscape.com>
36     dnl xpctools support
37     dnl Benjamin Smedberg <benjamin@smedbergs.us>
38     dnl Howard Chu <hyc@symas.com>
39     dnl MSYS support
40     dnl Mark Mentovai <mark@moxienet.com>:
41     dnl Mac OS X 10.4 support
42     dnl Giorgio Maone <g.maone@informaction.com>
43     dnl MSVC l10n compatible version check
44     dnl Ben Turner <mozilla@songbirdnest.com>
45     dnl
46     dnl Alternatively, the contents of this file may be used under the terms of
47     dnl either the GNU General Public License Version 2 or later (the "GPL"), or
48     dnl the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
49     dnl in which case the provisions of the GPL or the LGPL are applicable instead
50     dnl of those above. If you wish to allow use of your version of this file only
51     dnl under the terms of either the GPL or the LGPL, and not to allow others to
52     dnl use your version of this file under the terms of the MPL, indicate your
53     dnl decision by deleting the provisions above and replace them with the notice
54     dnl and other provisions required by the GPL or the LGPL. If you do not delete
55     dnl the provisions above, a recipient may use your version of this file under
56     dnl the terms of any one of the MPL, the GPL or the LGPL.
57     dnl
58     dnl ***** END LICENSE BLOCK *****
59    
60     dnl Process this file with autoconf to produce a configure script.
61     dnl ========================================================
62    
63     AC_PREREQ(2.13)
64     AC_INIT(jsapi.h)
65     AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
66     AC_CONFIG_HEADER(js-config.h)
67     AC_CANONICAL_SYSTEM
68     TARGET_CPU="${target_cpu}"
69     TARGET_VENDOR="${target_vendor}"
70     TARGET_OS="${target_os}"
71    
72     dnl ========================================================
73     dnl =
74     dnl = Don't change the following two lines. Doing so breaks:
75     dnl =
76     dnl = CFLAGS="-foo" ./configure
77     dnl =
78     dnl ========================================================
79     CFLAGS="${CFLAGS=}"
80     CPPFLAGS="${CPPFLAGS=}"
81     CXXFLAGS="${CXXFLAGS=}"
82     LDFLAGS="${LDFLAGS=}"
83     HOST_CFLAGS="${HOST_CFLAGS=}"
84     HOST_CXXFLAGS="${HOST_CXXFLAGS=}"
85     HOST_LDFLAGS="${HOST_LDFLAGS=}"
86    
87     dnl ========================================================
88     dnl = Preserve certain environment flags passed to configure
89     dnl = We want sub projects to receive the same flags
90     dnl = untainted by this configure script
91     dnl ========================================================
92     _SUBDIR_CC="$CC"
93     _SUBDIR_CXX="$CXX"
94     _SUBDIR_CFLAGS="$CFLAGS"
95     _SUBDIR_CPPFLAGS="$CPPFLAGS"
96     _SUBDIR_CXXFLAGS="$CXXFLAGS"
97     _SUBDIR_LDFLAGS="$LDFLAGS"
98     _SUBDIR_HOST_CC="$HOST_CC"
99     _SUBDIR_HOST_CFLAGS="$HOST_CFLAGS"
100     _SUBDIR_HOST_CXXFLAGS="$HOST_CXXFLAGS"
101     _SUBDIR_HOST_LDFLAGS="$HOST_LDFLAGS"
102     _SUBDIR_CONFIG_ARGS="$ac_configure_args"
103    
104     dnl Set the version number of the libs included with mozilla
105     dnl ========================================================
106     NSPR_VERSION=4
107    
108     dnl Set the minimum version of toolkit libs used by mozilla
109     dnl ========================================================
110     PERL_VERSION=5.006
111     WINDRES_VERSION=2.14.90
112     W32API_VERSION=3.8
113    
114     MSMANIFEST_TOOL=
115    
116     dnl Set various checks
117     dnl ========================================================
118     MISSING_X=
119     AC_PROG_AWK
120    
121     dnl Initialize the Pthread test variables early so they can be
122     dnl overridden by each platform.
123     dnl ========================================================
124     USE_PTHREADS=
125     _PTHREAD_LDFLAGS=""
126    
127     dnl Do not allow a separate objdir build if a srcdir build exists.
128     dnl ==============================================================
129     _topsrcdir=`cd \`dirname $0\`; pwd`
130     _objdir=`pwd`
131    
132     if test "$_topsrcdir" != "$_objdir"
133     then
134     # Check for a couple representative files in the source tree
135     _conflict_files=
136     for file in $_topsrcdir/Makefile $_topsrcdir/config/autoconf.mk; do
137     if test -f $file; then
138     _conflict_files="$_conflict_files $file"
139     fi
140     done
141     if test "$_conflict_files"; then
142     echo "***"
143     echo "* Your source tree contains these files:"
144     for file in $_conflict_files; do
145     echo "* $file"
146     done
147     cat 1>&2 <<-EOF
148     * This indicates that you previously built in the source tree.
149     * A source tree build can confuse the separate objdir build.
150     *
151     * To clean up the source tree:
152     * 1. cd $_topsrcdir
153     * 2. gmake distclean
154     ***
155     EOF
156     exit 1
157     break
158     fi
159     fi
160     MOZ_BUILD_ROOT=`pwd`
161    
162     dnl Choose where to put the 'dist' directory.
163     dnl ==============================================================
164    
165     MOZ_ARG_WITH_STRING(dist-dir,
166     [ --with-dist-dir=DIR Use DIR as 'dist' staging area. DIR may be
167     relative to the top of SpiderMonkey build tree,
168     or absolute.],
169     TOP_DIST=$withval,
170     TOP_DIST=dist)
171     AC_SUBST(TOP_DIST)
172    
173     dnl Default to MSVC for win32
174     dnl ==============================================================
175     if test -z "$CROSS_COMPILE"; then
176     case "$target" in
177     *-cygwin*|*-mingw*|*-msvc*|*-mks*)
178     if test -z "$CC"; then CC=cl; fi
179     if test -z "$CXX"; then CXX=cl; fi
180     if test -z "$CPP"; then CPP="cl -E -nologo"; fi
181     if test -z "$CXXCPP"; then CXXCPP="cl -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
182     if test -z "$LD"; then LD=link; fi
183     if test -z "$AS"; then AS=ml; fi
184     ;;
185     esac
186     fi
187    
188     COMPILE_ENVIRONMENT=1
189     MOZ_ARG_ENABLE_BOOL(compile-environment,
190     [ --disable-compile-environment
191     Disable compiler/library checks.],
192     COMPILE_ENVIRONMENT=1,
193     COMPILE_ENVIRONMENT= )
194    
195     dnl ========================================================
196     dnl Checks for compilers.
197     dnl ========================================================
198    
199     if test "$COMPILE_ENVIRONMENT"; then
200    
201     if test "$target" != "$host"; then
202     echo "cross compiling from $host to $target"
203    
204     _SAVE_CC="$CC"
205     _SAVE_CFLAGS="$CFLAGS"
206     _SAVE_LDFLAGS="$LDFLAGS"
207    
208     AC_MSG_CHECKING([for host c compiler])
209     AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
210     if test -z "$HOST_CC"; then
211     AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
212     fi
213     AC_MSG_RESULT([$HOST_CC])
214     AC_MSG_CHECKING([for host c++ compiler])
215     AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
216     if test -z "$HOST_CXX"; then
217     AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
218     fi
219     AC_MSG_RESULT([$HOST_CXX])
220    
221     if test -z "$HOST_CFLAGS"; then
222     HOST_CFLAGS="$CFLAGS"
223     fi
224     if test -z "$HOST_CXXFLAGS"; then
225     HOST_CXXFLAGS="$CXXFLAGS"
226     fi
227     if test -z "$HOST_LDFLAGS"; then
228     HOST_LDFLAGS="$LDFLAGS"
229     fi
230     AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
231     AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
232     CC="$HOST_CC"
233     CFLAGS="$HOST_CFLAGS"
234     LDFLAGS="$HOST_LDFLAGS"
235    
236     AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
237     AC_TRY_COMPILE([], [return(0);],
238     [ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
239     AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
240    
241     CC="$HOST_CXX"
242     CFLAGS="$HOST_CXXFLAGS"
243    
244     AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
245     AC_TRY_COMPILE([], [return(0);],
246     [ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
247     AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
248    
249     CC=$_SAVE_CC
250     CFLAGS=$_SAVE_CFLAGS
251     LDFLAGS=$_SAVE_LDFLAGS
252    
253     case "$build:$target" in
254     powerpc-apple-darwin8*:i?86-apple-darwin*)
255     dnl The Darwin cross compiler doesn't necessarily point itself at a
256     dnl root that has libraries for the proper architecture, it defaults
257     dnl to the system root. The libraries in the system root on current
258     dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
259     dnl checks will fail. Fake a working SDK in that case.
260     _SAVE_CFLAGS=$CFLAGS
261     _SAVE_CXXFLAGS=$CXXLAGS
262     CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CFLAGS"
263     CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CXXFLAGS"
264     ;;
265     esac
266    
267 siliconforks 507 case "$target" in
268     *symbian*)
269     AC_ARG_WITH(symbian-sdk,
270     [ --with-symbian-sdk=SYMBIAN_SDK_DIR
271     The path to the Symbian SDK],
272     SYMBIAN_SDK_DIR=$withval)
273    
274     OS_EXE_CFLAGS="$OS_EXE_CFLAGS -D__EXE__"
275     CFLAGS="-MD -nostdinc"
276     SYMBIAN_SYS_INCLUDE="-I$SYMBIAN_SDK_DIR/Epoc32/include -I$SYMBIAN_SDK_DIR/Epoc32/include/variant -I$SYMBIAN_SDK_DIR/Epoc32/include/stdapis"
277    
278     case "$target" in
279     *-symbianelf)
280     OS_TARGET=GCCE
281     CC=arm-none-symbianelf-gcc.exe
282     CXX=arm-none-symbianelf-g++.exe
283     LD=arm-none-symbianelf-ld.exe
284     AR=arm-none-symbianelf-ar.exe
285     CPP=arm-none-symbianelf-cpp.exe
286     CFLAGS="$CFLAGS -c -Wall -Wno-unknown-pragmas -fexceptions -march=armv5t -mapcs -pipe -msoft-float"
287     CXXFLAGS="$CFLAGS -Wno-ctor-dtor-privacy"
288     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"
289     CFLAGS="$CFLAGS ${GCCE_INCLUDE} -x c"
290     CXXFLAGS="$CXXFLAGS ${GCCE_INCLUDE} -x c++"
291     CPPFLAGS="$CPPFLAGS ${SYMBIAN_SYS_INCLUDE}"
292     ;;
293     *-symbianwinscw)
294     dnl TODO: add emulator build code
295     OS_TARGET=WINSCW
296     ;;
297     esac
298     ;;
299     esac
300    
301 siliconforks 460 AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
302     unset ac_cv_prog_CC
303     AC_PROG_CC
304     AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
305     unset ac_cv_prog_CXX
306     AC_PROG_CXX
307    
308     case "$build:$target" in
309     powerpc-apple-darwin8*:i?86-apple-darwin*)
310     dnl Revert the changes made above. From this point on, the target
311     dnl compiler will never be used without applying the SDK to CFLAGS
312     dnl (see --with-macos-sdk below).
313     CFLAGS=$_SAVE_CFLAGS
314     CXXFLAGS=$_SAVE_CXXFLAGS
315     ;;
316     esac
317    
318     AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
319     AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
320 siliconforks 507 MOZ_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
321 siliconforks 460 AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
322     AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
323     AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
324     AC_DEFINE(CROSS_COMPILE)
325    
326     dnl If we cross compile for ppc on Mac OS X x86, cross_compiling will
327     dnl have erroneously been set to "no", because the x86 build host is
328     dnl able to run ppc code in a translated environment, making a cross
329     dnl compiler appear native. So we override that here.
330     cross_compiling=yes
331     else
332     AC_PROG_CC
333     AC_PROG_CXX
334     AC_PROG_RANLIB
335 siliconforks 507 MOZ_PATH_PROGS(AS, $AS as, $CC)
336 siliconforks 460 AC_CHECK_PROGS(AR, ar, :)
337     AC_CHECK_PROGS(LD, ld, :)
338     AC_CHECK_PROGS(STRIP, strip, :)
339     AC_CHECK_PROGS(WINDRES, windres, :)
340     if test -z "$HOST_CC"; then
341     HOST_CC="$CC"
342     fi
343     if test -z "$HOST_CFLAGS"; then
344     HOST_CFLAGS="$CFLAGS"
345     fi
346     if test -z "$HOST_CXX"; then
347     HOST_CXX="$CXX"
348     fi
349     if test -z "$HOST_CXXFLAGS"; then
350     HOST_CXXFLAGS="$CXXFLAGS"
351     fi
352     if test -z "$HOST_LDFLAGS"; then
353     HOST_LDFLAGS="$LDFLAGS"
354     fi
355     if test -z "$HOST_RANLIB"; then
356     HOST_RANLIB="$RANLIB"
357     fi
358     if test -z "$HOST_AR"; then
359     HOST_AR="$AR"
360     fi
361     fi
362    
363     GNU_AS=
364     GNU_LD=
365     GNU_CC=
366     GNU_CXX=
367     CC_VERSION='N/A'
368     CXX_VERSION='N/A'
369     if test "$GCC" = "yes"; then
370     GNU_CC=1
371     CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
372     fi
373     if test "$GXX" = "yes"; then
374     GNU_CXX=1
375     CXX_VERSION=`$CXX -v 2>&1 | grep 'gcc version'`
376     fi
377     if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
378     GNU_AS=1
379     fi
380     if test "`echo | $LD -v 2>&1 | grep -c GNU`" != "0"; then
381     GNU_LD=1
382     fi
383     if test "$GNU_CC"; then
384     if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
385     GCC_USE_GNU_LD=1
386     fi
387     fi
388    
389     INTEL_CC=
390     INTEL_CXX=
391     if test "$GCC" = yes; then
392     if test "`$CC -help 2>&1 | grep -c 'Intel(R) C Compiler'`" != "0"; then
393     INTEL_CC=1
394     fi
395     fi
396    
397     if test "$GXX" = yes; then
398     if test "`$CXX -help 2>&1 | grep -c 'Intel(R) C++ Compiler'`" != "0"; then
399     INTEL_CXX=1
400     fi
401     fi
402    
403     dnl Special win32 checks
404     dnl ========================================================
405     case "$target" in
406     *-wince)
407     WINVER=500
408     ;;
409     *)
410     if test -n "$GNU_CC"; then
411     WINVER=501
412     else
413     WINVER=500
414     fi
415     ;;
416     esac
417    
418     case "$target" in
419     *-cygwin*|*-mingw*|*-msvc*|*-mks*|*-wince)
420     if test "$GCC" != "yes"; then
421     # Check to see if we are really running in a msvc environemnt
422     _WIN32_MSVC=1
423    
424     # Make sure compilers are valid
425     CFLAGS="$CFLAGS -TC -nologo"
426     CXXFLAGS="$CXXFLAGS -TP -nologo"
427     AC_LANG_SAVE
428     AC_LANG_C
429     AC_TRY_COMPILE([#include <stdio.h>],
430     [ printf("Hello World\n"); ],,
431     AC_MSG_ERROR([\$(CC) test failed. You must have MS VC++ in your path to build.]) )
432    
433     AC_LANG_CPLUSPLUS
434     AC_TRY_COMPILE([#include <new.h>],
435     [ unsigned *test = new unsigned(42); ],,
436     AC_MSG_ERROR([\$(CXX) test failed. You must have MS VC++ in your path to build.]) )
437     AC_LANG_RESTORE
438    
439     changequote(,)
440     _MSVC_VER_FILTER='s|.* ([0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?).*|\1|p'
441     changequote([,])
442    
443     # Determine compiler version
444     CC_VERSION=`"${CC}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
445     _CC_MAJOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $1 }'`
446     _CC_MINOR_VERSION=`echo ${CC_VERSION} | $AWK -F\. '{ print $2 }'`
447     _CC_RELEASE=`echo ${CC_VERSION} | $AWK -F\. '{ print $3 }'`
448     _CC_BUILD=`echo ${CC_VERSION} | $AWK -F\. '{ print $4 }'`
449     _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
450    
451     CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
452     _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
453    
454     if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
455     AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
456     fi
457 siliconforks 507 if test "$_CC_MAJOR_VERSION" = "13"; then
458 siliconforks 460 _CC_SUITE=7
459     elif test "$_CC_MAJOR_VERSION" = "14"; then
460     _CC_SUITE=8
461     CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
462     dnl -DYNAMICBASE is only supported on VC8SP1 or newer,
463     dnl so be very specific here!
464     dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762
465     if test $_CC_RELEASE -gt 50727; then
466     _USE_DYNAMICBASE=1
467     elif test $_CC_BUILD -ge 762; then
468     _USE_DYNAMICBASE=1
469     fi
470     AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
471     AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
472     elif test "$_CC_MAJOR_VERSION" = "15"; then
473     _CC_SUITE=9
474     CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
475     LDFLAGS="$LDFLAGS -MANIFESTUAC:NO"
476     _USE_DYNAMICBASE=1
477     AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
478     AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
479     else
480     AC_MSG_ERROR([This version of the MSVC compiler, $CC_VERSION , is unsupported.])
481     fi
482    
483     _MOZ_RTTI_FLAGS_ON='-GR'
484     _MOZ_RTTI_FLAGS_OFF='-GR-'
485     _MOZ_EXCEPTIONS_FLAGS_ON='-EHsc'
486     _MOZ_EXCEPTIONS_FLAGS_OFF=''
487    
488     if test -n "$WIN32_REDIST_DIR"; then
489     WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd`
490     fi
491    
492     # bug #249782
493     # ensure that mt.exe is Microsoft (R) Manifest Tool and not magnetic tape manipulation utility (or something else)
494     if test "$_CC_SUITE" -ge "8"; then
495     changequote(,)
496     _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
497     changequote([,])
498    
499     MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
500     if test -n "$MSMT_TOOL"; then
501     MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
502     if test -z "$MSMANIFEST_TOOL_VERSION"; then
503     AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
504     fi
505     MSMANIFEST_TOOL=1
506     unset MSMT_TOOL
507     else
508     AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
509     fi
510     fi
511    
512     # Check linker version
513     _LD_FULL_VERSION=`"${LD}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
514     _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
515     if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
516     AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION, does not match the compiler suite version, $_CC_SUITE.])
517     fi
518     INCREMENTAL_LINKER=1
519    
520     unset _MSVC_VER_FILTER
521    
522     else
523     # Check w32api version
524     _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'`
525     _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'`
526     AC_MSG_CHECKING([for w32api version >= $W32API_VERSION])
527     AC_TRY_COMPILE([#include <w32api.h>],
528     #if (__W32API_MAJOR_VERSION < $_W32API_MAJOR_VERSION) || \
529     (__W32API_MAJOR_VERSION == $_W32API_MAJOR_VERSION && \
530     __W32API_MINOR_VERSION < $_W32API_MINOR_VERSION)
531     #error "test failed."
532     #endif
533     , [ res=yes ], [ res=no ])
534     AC_MSG_RESULT([$res])
535     if test "$res" != "yes"; then
536     AC_MSG_ERROR([w32api version $W32API_VERSION or higher required.])
537     fi
538     # Check windres version
539     AC_MSG_CHECKING([for windres version >= $WINDRES_VERSION])
540     _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'`
541     AC_MSG_RESULT([$_WINDRES_VERSION])
542     _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
543     _WINDRES_MINOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
544     _WINDRES_RELEASE_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
545     WINDRES_MAJOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $1 }'`
546     WINDRES_MINOR_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $2 }'`
547     WINDRES_RELEASE_VERSION=`echo $WINDRES_VERSION | $AWK -F\. '{ print $3 }'`
548     if test "$_WINDRES_MAJOR_VERSION" -lt "$WINDRES_MAJOR_VERSION" -o \
549     "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
550     "$_WINDRES_MINOR_VERSION" -lt "$WINDRES_MINOR_VERSION" -o \
551     "$_WINDRES_MAJOR_VERSION" -eq "$WINDRES_MAJOR_VERSION" -a \
552     "$_WINDRES_MINOR_VERSION" -eq "$WINDRES_MINOR_VERSION" -a \
553     "$_WINDRES_RELEASE_VERSION" -lt "$WINDRES_RELEASE_VERSION"
554     then
555     AC_MSG_ERROR([windres version $WINDRES_VERSION or higher is required to build.])
556     fi
557     fi # !GNU_CC
558    
559     AC_DEFINE_UNQUOTED(WINVER,0x$WINVER)
560     AC_DEFINE_UNQUOTED(_WIN32_WINNT,0x$WINVER)
561     # Require OS features provided by IE 5.0
562     AC_DEFINE_UNQUOTED(_WIN32_IE,0x0500)
563     ;;
564     esac
565    
566     dnl Test breaks icc on OS/2 && MSVC
567     if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then
568     AC_PROG_CC_C_O
569     if grep "NO_MINUS_C_MINUS_O 1" ./confdefs.h >/dev/null; then
570     USING_HCC=1
571     _OLDCC=$CC
572     _OLDCXX=$CXX
573     CC="${srcdir}/build/hcc '$CC'"
574     CXX="${srcdir}/build/hcpp '$CXX'"
575     fi
576     fi
577    
578     AC_PROG_CPP
579     AC_PROG_CXXCPP
580    
581     if test -n "$_WIN32_MSVC"; then
582     SKIP_PATH_CHECKS=1
583     SKIP_COMPILER_CHECKS=1
584     SKIP_LIBRARY_CHECKS=1
585    
586     # Since we're skipping compiler and library checks, hard-code
587     # some facts here.
588    
589 siliconforks 507 # Common to all MSVC environments:
590 siliconforks 460 # Windows lacks <stdint.h>, but has __int8, and so on.
591     AC_DEFINE(JS_HAVE___INTN)
592 siliconforks 507
593     case "$target" in
594     *-wince)
595     AC_DEFINE(HAVE_SYSTEMTIMETOFILETIME)
596     AC_DEFINE(JS_CRTDEFS_H_HAS_INTPTR_T)
597     ;;
598     *)
599     AC_DEFINE(HAVE_SYSTEMTIMETOFILETIME)
600     AC_DEFINE(HAVE_GETSYSTEMTIMEASFILETIME)
601     # Windows <stddef.h> defines intptr_t and uintptr_t.
602     # VS2005: http://msdn.microsoft.com/en-us/library/323b6b3k(VS.80).aspx
603     # VS2008: http://msdn.microsoft.com/en-us/library/323b6b3k.aspx
604     AC_DEFINE(JS_STDDEF_H_HAS_INTPTR_T)
605     ;;
606     esac
607 siliconforks 460 fi
608    
609     fi # COMPILE_ENVIRONMENT
610    
611     if test "$cross_compiling" = "yes"; then
612     CROSS_COMPILE=1
613     else
614     CROSS_COMPILE=
615     fi
616    
617     AC_SUBST(_MSC_VER)
618    
619     AC_SUBST(GNU_AS)
620     AC_SUBST(GNU_LD)
621     AC_SUBST(GNU_CC)
622     AC_SUBST(GNU_CXX)
623     AC_SUBST(INTEL_CC)
624     AC_SUBST(INTEL_CXX)
625    
626     dnl ========================================================
627     dnl Checks for programs.
628     dnl ========================================================
629     AC_PROG_INSTALL
630     AC_PROG_LN_S
631 siliconforks 507 MOZ_PATH_PROGS(PERL, $PERL perl5 perl )
632 siliconforks 460 if test -z "$PERL" || test "$PERL" = ":"; then
633     AC_MSG_ERROR([perl not found in \$PATH])
634     fi
635    
636     if test -z "$TINDERBOX_SKIP_PERL_VERSION_CHECK"; then
637     AC_MSG_CHECKING([for minimum required perl version >= $PERL_VERSION])
638     _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5`
639     _perl_res=$?
640     AC_MSG_RESULT([$_perl_version])
641    
642     if test "$_perl_res" != 0; then
643     AC_MSG_ERROR([Perl $PERL_VERSION or higher is required.])
644     fi
645     fi
646    
647     AC_MSG_CHECKING([for full perl installation])
648     _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5`
649     _perl_res=$?
650     if test "$_perl_res" != 0; then
651     AC_MSG_RESULT([no])
652     AC_MSG_ERROR([Cannot find Config.pm or \$Config{archlib}. A full perl installation is required.])
653     else
654     AC_MSG_RESULT([yes])
655     fi
656    
657 siliconforks 507 MOZ_PATH_PROGS(PYTHON, $PYTHON python)
658 siliconforks 460 if test -z "$PYTHON"; then
659     AC_MSG_ERROR([python was not found in \$PATH])
660     fi
661    
662     if test -z "$COMPILE_ENVIRONMENT"; then
663     NSINSTALL_BIN='$(PYTHON) $(topsrcdir)/config/nsinstall.py'
664     fi
665     AC_SUBST(NSINSTALL_BIN)
666    
667 siliconforks 507 MOZ_PATH_PROG(DOXYGEN, doxygen, :)
668     MOZ_PATH_PROG(WHOAMI, whoami, :)
669     MOZ_PATH_PROG(AUTOCONF, autoconf, :)
670     MOZ_PATH_PROG(UNZIP, unzip, :)
671     MOZ_PATH_PROGS(ZIP, zip)
672 siliconforks 460 if test -z "$ZIP" || test "$ZIP" = ":"; then
673     AC_MSG_ERROR([zip not found in \$PATH])
674     fi
675 siliconforks 507 MOZ_PATH_PROG(SYSTEM_MAKEDEPEND, makedepend)
676     MOZ_PATH_PROG(XARGS, xargs)
677 siliconforks 460 if test -z "$XARGS" || test "$XARGS" = ":"; then
678     AC_MSG_ERROR([xargs not found in \$PATH .])
679     fi
680    
681     if test "$COMPILE_ENVIRONMENT"; then
682    
683     dnl ========================================================
684     dnl = Mac OS X toolchain support
685     dnl ========================================================
686    
687     case "$target_os" in
688     darwin*)
689     dnl Current known valid versions for GCC_VERSION are 2.95.2 3.1 3.3 4.0.
690     dnl 4.0 identifies itself as 4.0.x, so strip the decidecimal for
691     dnl the environment and includedir purposes (when using an SDK, below),
692     dnl but remember the full version number for the libdir (SDK).
693     changequote(,)
694     GCC_VERSION_FULL=`echo $CXX_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
695     GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
696     changequote([,])
697     if test "$GCC_VERSION_FULL" = "4.0.0" ; then
698     dnl Bug 280479, but this keeps popping up in bug 292530 too because
699     dnl 4.0.0/4061 is the default compiler in Tiger.
700     changequote(,)
701     GCC_BUILD=`echo $CXX_VERSION | $PERL -pe 's/^.*build ([^ )]*).*/$1/'`
702     changequote([,])
703     if test "$GCC_BUILD" = "4061" ; then
704     AC_MSG_ERROR([You are attempting to use Apple gcc 4.0 build 4061.
705     This compiler was supplied with Xcode 2.0, and contains bugs that prevent it
706     from building Mozilla. Upgrade to Xcode 2.1 or later.])
707     fi
708     fi
709    
710     dnl xcodebuild needs GCC_VERSION defined in the environment, since it
711     dnl doesn't respect the CC/CXX setting. With GCC_VERSION set, it will use
712     dnl /usr/bin/g(cc|++)-$GCC_VERSION.
713 siliconforks 507 MOZ_PATH_PROGS(PBBUILD, pbbuild xcodebuild pbxbuild)
714 siliconforks 460
715     case "$PBBUILD" in
716     *xcodebuild*)
717     changequote(,)
718     XCODEBUILD_VERSION=`$PBBUILD -version 2>/dev/null | xargs | sed -e 's/.*DevToolsCore-\([0-9]*\).*/\1/'`
719     changequote([,])
720     if test -n "$XCODEBUILD_VERSION" && test "$XCODEBUILD_VERSION" -ge 620 ; then
721     HAS_XCODE_2_1=1;
722     fi
723     ;;
724     esac
725    
726     dnl sdp was formerly in /Developer/Tools. As of Mac OS X 10.4 (Darwin 8),
727     dnl it has moved into /usr/bin.
728 siliconforks 507 MOZ_PATH_PROG(SDP, sdp, :, [$PATH:/usr/bin:/Developer/Tools])
729 siliconforks 460 ;;
730     esac
731    
732     AC_SUBST(GCC_VERSION)
733     AC_SUBST(XCODEBUILD_VERSION)
734     AC_SUBST(HAS_XCODE_2_1)
735    
736     dnl The universal machinery sets UNIVERSAL_BINARY to inform packager.mk
737     dnl that a universal binary is being produced.
738     AC_SUBST(UNIVERSAL_BINARY)
739    
740     dnl ========================================================
741     dnl Check for MacOS deployment target version
742     dnl ========================================================
743    
744     MOZ_ARG_ENABLE_STRING(macos-target,
745     [ --enable-macos-target=VER (default=10.4)
746     Set the minimum MacOS version needed at runtime],
747     [_MACOSX_DEPLOYMENT_TARGET=$enableval])
748    
749     case "$target" in
750     *-darwin*)
751     if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
752     dnl Use the specified value
753     export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
754     AC_DEFINE_UNQUOTED(__ENVIRONMENT_MAC_OS_X_VERION_MIN_REQUIRED__,$_MACOSX_DEPLOYMENT_TARGET)
755     elif test -z "$MACOSX_DEPLOYMENT_TARGET" ; then
756     dnl No value specified on the command line or in the environment,
757     dnl use the lesser of the application's minimum or the architecture's
758     dnl minimum.
759     export MACOSX_DEPLOYMENT_TARGET=10.4
760     fi
761     ;;
762     esac
763    
764     AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
765    
766     dnl ========================================================
767     dnl = Mac OS X SDK support
768     dnl ========================================================
769     MACOS_SDK_DIR=
770     NEXT_ROOT=
771     MOZ_ARG_WITH_STRING(macos-sdk,
772     [ --with-macos-sdk=dir Location of platform SDK to use (Mac OS X only)],
773     MACOS_SDK_DIR=$withval)
774    
775     dnl MACOS_SDK_DIR will be set to the SDK location whenever one is in use.
776     dnl NEXT_ROOT will be set and exported only if it's needed.
777     AC_SUBST(MACOS_SDK_DIR)
778     AC_SUBST(NEXT_ROOT)
779    
780     if test "$MACOS_SDK_DIR"; then
781     dnl Sync this section with the ones in NSPR and NSS.
782     dnl Changes to the cross environment here need to be accounted for in
783     dnl the libIDL checks (below) and xpidl build.
784    
785     if test ! -d "$MACOS_SDK_DIR"; then
786     AC_MSG_ERROR([SDK not found. When using --with-macos-sdk, you must
787     specify a valid SDK. SDKs are installed when the optional cross-development
788     tools are selected during the Xcode/Developer Tools installation.])
789     fi
790    
791     GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
792     if test "$GCC_VERSION_MAJOR" -lt "4" ; then
793 siliconforks 507 AC_MSG_ERROR([You need to upgrade the compiler version to 4.x])
794 siliconforks 460 else
795     CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
796     CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
797    
798     dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
799     CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
800     CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
801    
802     if test "$GCC_VERSION_FULL" = "4.0.0" ; then
803     dnl If gcc >= 4.0, we're guaranteed to be on Tiger, which has an ld
804     dnl that supports -syslibroot. Don't set NEXT_ROOT because it will
805     dnl be ignored and cause warnings when -syslibroot is specified.
806     dnl gcc 4.0.1 will pass -syslibroot to ld automatically based on
807     dnl the -isysroot it receives, so this is only needed with 4.0.0.
808     LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
809     fi
810     fi
811    
812     AC_LANG_SAVE
813     AC_MSG_CHECKING([for valid compiler/Mac OS X SDK combination])
814     AC_LANG_CPLUSPLUS
815     AC_TRY_COMPILE([#include <new>
816     int main() { return 0; }],
817     result=yes,
818     result=no)
819     AC_LANG_RESTORE
820     AC_MSG_RESULT($result)
821    
822     if test "$result" = "no" ; then
823     AC_MSG_ERROR([The selected compiler and Mac OS X SDK are incompatible.])
824     fi
825     fi
826    
827     fi # COMPILE_ENVIRONMENT
828    
829     case "$host_os" in
830     cygwin*|mingw*|mks*|msvc*)
831 siliconforks 507 MOZ_PATH_PROGS(MAKE, $MAKE make gmake, :)
832 siliconforks 460 ;;
833     *)
834 siliconforks 507 MOZ_PATH_PROGS(MAKE, $MAKE gmake make, :)
835 siliconforks 460 ;;
836     esac
837    
838     if test "$COMPILE_ENVIRONMENT"; then
839    
840     AC_PATH_XTRA
841    
842     dnl Check in X11 include directory too.
843     if test "$no_x" != "yes"; then
844     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
845     fi
846    
847     XCFLAGS="$X_CFLAGS"
848    
849     fi # COMPILE_ENVIRONMENT
850    
851     dnl ========================================================
852     dnl set the defaults first
853     dnl ========================================================
854     AS_BIN=$AS
855     AR_FLAGS='cr $@'
856     AR_LIST='$(AR) t'
857     AR_EXTRACT='$(AR) x'
858     AR_DELETE='$(AR) d'
859     AS='$(CC)'
860     AS_DASH_C_FLAG='-c'
861     DLL_PREFIX=lib
862     LIB_PREFIX=lib
863     DLL_SUFFIX=.so
864     OBJ_SUFFIX=o
865     LIB_SUFFIX=a
866     ASM_SUFFIX=s
867     IMPORT_LIB_SUFFIX=
868     TARGET_MD_ARCH=unix
869     DIRENT_INO=d_ino
870     CYGWIN_WRAPPER=
871     WIN_TOP_SRC=
872     MOZ_USER_DIR=".mozilla"
873     HOST_AR='$(AR)'
874     HOST_AR_FLAGS='$(AR_FLAGS)'
875    
876     MOZ_JS_LIBS='-L$(libdir) -lmozjs'
877     MOZ_FIX_LINK_PATHS='-Wl,-rpath-link,$(LIBXUL_DIST)/bin -Wl,-rpath-link,$(PREFIX)/lib'
878    
879     MOZ_COMPONENT_NSPR_LIBS='-L$(LIBXUL_DIST)/bin $(NSPR_LIBS)'
880     MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom_compat'
881    
882     USE_DEPENDENT_LIBS=1
883    
884     _PLATFORM_DEFAULT_TOOLKIT=cairo-gtk2
885     MOZ_GFX_TOOLKIT='$(MOZ_WIDGET_TOOLKIT)'
886    
887     MOZ_ENABLE_POSTSCRIPT=1
888    
889     if test -n "$CROSS_COMPILE"; then
890     OS_TARGET="${target_os}"
891     OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
892     OS_RELEASE=
893     case "${target_os}" in
894     linux*) OS_ARCH=Linux OS_TARGET=Linux ;;
895     kfreebsd*-gnu) OS_ARCH=GNU_kFreeBSD OS_TARGET=GNU_kFreeBSD ;;
896     solaris*) OS_ARCH=SunOS OS_RELEASE=5 ;;
897     mingw*) OS_ARCH=WINNT ;;
898     wince*) OS_ARCH=WINCE ;;
899     darwin*) OS_ARCH=Darwin OS_TARGET=Darwin ;;
900     esac
901     else
902     OS_TARGET=`uname -s`
903     OS_ARCH=`uname -s | sed -e 's|/|_|g'`
904     OS_RELEASE=`uname -r`
905     fi
906    
907     # Before this used `uname -m` when not cross compiling
908     # but that breaks when you have a 64 bit kernel with a 32 bit userland.
909     OS_TEST="${target_cpu}"
910    
911     _COMPILER_PREFIX=
912    
913     HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
914    
915     #######################################################################
916     # Master "Core Components" macros for getting the OS target #
917     #######################################################################
918    
919     #
920     # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
921     # cross-compilation.
922     #
923    
924     #
925     # Define and override various archtecture-specific variables, including
926     # HOST_OS_ARCH
927     # OS_ARCH
928     # OS_TEST
929     # OS_TARGET
930     # OS_RELEASE
931     # OS_MINOR_RELEASE
932     #
933    
934     case "$HOST_OS_ARCH" in
935     cygwin*|mingw*|mks*|msvc*)
936     HOST_OS_ARCH=WINNT
937     ;;
938     linux*)
939     HOST_OS_ARCH=Linux
940     ;;
941     solaris*)
942     HOST_OS_ARCH=SunOS
943     SOLARIS_SUNPRO_CC=
944     SOLARIS_SUNPRO_CXX=
945     if test -z "$GNU_CC"; then
946     if test "`$CC -V 2>&1 | egrep -c 'Sun.*C '`" != "0"; then
947     SOLARIS_SUNPRO_CC=1
948     fi
949     fi
950    
951     if test -z "$GNU_CXX"; then
952     if test "`$CXX -V 2>&1 | egrep -c 'Sun.*C\+\+ '`" != "0"; then
953     SOLARIS_SUNPRO_CXX=1
954     fi
955     fi
956     AC_SUBST(SOLARIS_SUNPRO_CC)
957     AC_SUBST(SOLARIS_SUNPRO_CXX)
958     ;;
959     BSD_386)
960     HOST_OS_ARCH=BSD
961     ;;
962     dgux)
963     HOST_OS_ARCH=DGUX
964     ;;
965     IRIX64)
966     HOST_OS_ARCH=IRIX
967     ;;
968     UNIX_SV)
969     if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
970     HOST_OS_ARCH=NCR
971     else
972     HOST_OS_ARCH=UNIXWARE
973     fi
974     ;;
975     ncr)
976     HOST_OS_ARCH=NCR
977     ;;
978     UNIX_SYSTEM_V)
979     HOST_OS_ARCH=NEC
980     ;;
981     OSF1)
982     ;;
983     *OpenVMS*)
984     HOST_OS_ARCH=OpenVMS
985     ;;
986     OS_2)
987     HOST_OS_ARCH=OS2
988     ;;
989     QNX)
990     ;;
991     SCO_SV)
992     HOST_OS_ARCH=SCOOS
993     ;;
994     SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
995     HOST_OS_ARCH=SINIX
996     ;;
997     UnixWare)
998     HOST_OS_ARCH=UNIXWARE
999     ;;
1000     esac
1001    
1002     case "$OS_ARCH" in
1003     WINNT)
1004     OS_TEST=`uname -p`
1005     ;;
1006     Windows_NT)
1007     #
1008     # If uname -s returns "Windows_NT", we assume that we are using
1009     # the uname.exe in MKS toolkit.
1010     #
1011     # The -r option of MKS uname only returns the major version number.
1012     # So we need to use its -v option to get the minor version number.
1013     # Moreover, it doesn't have the -p option, so we need to use uname -m.
1014     #
1015     OS_ARCH=WINNT
1016     OS_TARGET=WINNT
1017     OS_MINOR_RELEASE=`uname -v`
1018     if test "$OS_MINOR_RELEASE" = "00"; then
1019     OS_MINOR_RELEASE=0
1020     fi
1021     OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
1022     ;;
1023     CYGWIN32_NT|CYGWIN_NT*|MINGW*_NT*)
1024     #
1025     # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
1026     # the uname.exe in the Cygwin tools.
1027     # Prior to the Beta 20 release, Cygwin was called GNU-Win32.
1028     # If uname -s returns "CYGWIN32/NT", we assume that we are using
1029     # the uname.exe in the GNU-Win32 tools.
1030     # If uname -s returns MINGW32_NT-5.1, we assume that we are using
1031     # the uname.exe in the MSYS tools.
1032     #
1033     OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
1034     OS_ARCH=WINNT
1035     OS_TARGET=WINNT
1036     ;;
1037     AIX)
1038     OS_RELEASE=`uname -v`.`uname -r`
1039     OS_TEST=${target_cpu}
1040     ;;
1041     BSD_386)
1042     OS_ARCH=BSD
1043     ;;
1044     dgux)
1045     OS_ARCH=DGUX
1046     ;;
1047     IRIX64)
1048     OS_ARCH=IRIX
1049     ;;
1050     UNIX_SV)
1051     if "`cat /etc/bcheckrc | grep -c NCR 2>/dev/null`" != "0"; then
1052     OS_ARCH=NCR
1053     else
1054     OS_ARCH=UNIXWARE
1055     OS_RELEASE=`uname -v`
1056     fi
1057     ;;
1058     ncr)
1059     OS_ARCH=NCR
1060     ;;
1061     UNIX_SYSTEM_V)
1062     OS_ARCH=NEC
1063     ;;
1064     OSF1)
1065     case `uname -v` in
1066     148)
1067     OS_RELEASE=V3.2C
1068     ;;
1069     564)
1070     OS_RELEASE=V4.0B
1071     ;;
1072     878)
1073     OS_RELEASE=V4.0D
1074     ;;
1075     esac
1076     ;;
1077     *OpenVMS*)
1078     OS_ARCH=OpenVMS
1079     OS_RELEASE=`uname -v`
1080     OS_TEST=`uname -p`
1081     ;;
1082     OS_2)
1083     OS_ARCH=OS2
1084     OS_TARGET=OS2
1085     OS_RELEASE=`uname -v`
1086     ;;
1087     QNX)
1088     if test "$OS_TARGET" != "NTO"; then
1089     changequote(,)
1090     OS_RELEASE=`uname -v | sed 's/^\([0-9]\)\([0-9]*\)$/\1.\2/'`
1091     changequote([,])
1092     fi
1093     OS_TEST=x86
1094     ;;
1095     SCO_SV)
1096     OS_ARCH=SCOOS
1097     OS_RELEASE=5.0
1098     ;;
1099     SINIX-N | SINIX-Y | SINIX-Z |ReliantUNIX-M)
1100     OS_ARCH=SINIX
1101     OS_TEST=`uname -p`
1102     ;;
1103     UnixWare)
1104     OS_ARCH=UNIXWARE
1105     OS_RELEASE=`uname -v`
1106     ;;
1107     WINCE)
1108     WINCE=1
1109     OS_ARCH=WINCE
1110     OS_TARGET=WINCE
1111     ;;
1112     Darwin)
1113     case "${target_cpu}" in
1114     powerpc*)
1115     OS_TEST=ppc
1116     ;;
1117     i*86*)
1118     OS_TEST=i386
1119     ;;
1120 siliconforks 507 x86_64)
1121     OS_TEST=x86_64
1122     ;;
1123 siliconforks 460 *)
1124     if test -z "$CROSS_COMPILE" ; then
1125     OS_TEST=`uname -p`
1126     fi
1127     ;;
1128     esac
1129     ;;
1130     esac
1131    
1132     if test "$OS_ARCH" = "NCR"; then
1133     changequote(,)
1134     OS_RELEASE=`awk '{print $3}' /etc/.relid | sed 's/^\([0-9]\)\(.\)\(..\)\(.*\)$/\2.\3/'`
1135     changequote([,])
1136     fi
1137    
1138     # Only set CPU_ARCH if we recognize the value of OS_TEST
1139    
1140     case "$OS_TEST" in
1141     *86 | i86pc)
1142     CPU_ARCH=x86
1143     ;;
1144    
1145     powerpc* | ppc | rs6000)
1146     CPU_ARCH=ppc
1147     ;;
1148    
1149     Alpha | alpha | ALPHA)
1150     CPU_ARCH=Alpha
1151     ;;
1152    
1153     hppa* | parisc)
1154     CPU_ARCH=hppa
1155     ;;
1156    
1157     sun4u | sparc*)
1158     CPU_ARCH=sparc
1159     ;;
1160    
1161     x86_64 | ia64)
1162     CPU_ARCH="$OS_TEST"
1163     ;;
1164 siliconforks 507
1165     arm)
1166     if test "$OS_TARGET" = "WINCE"; then
1167     CPU_ARCH="$OS_TEST"
1168     fi
1169     ;;
1170 siliconforks 460 esac
1171    
1172     if test -z "$OS_TARGET"; then
1173     OS_TARGET=$OS_ARCH
1174     fi
1175     OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
1176    
1177     dnl ========================================================
1178     dnl GNU specific defaults
1179     dnl ========================================================
1180     if test "$GNU_CC"; then
1181     # FIXME: Let us build with strict aliasing. bug 414641.
1182     CFLAGS="$CFLAGS -fno-strict-aliasing"
1183     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1184     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1185     DSO_LDOPTS='-shared'
1186     if test "$GCC_USE_GNU_LD"; then
1187     # Don't allow undefined symbols in libraries
1188     DSO_LDOPTS="$DSO_LDOPTS -Wl,-z,defs"
1189     fi
1190     WARNINGS_AS_ERRORS='-Werror'
1191     DSO_CFLAGS=''
1192     DSO_PIC_CFLAGS='-fPIC'
1193     ASFLAGS="$ASFLAGS -fPIC"
1194     _MOZ_RTTI_FLAGS_ON=${_COMPILER_PREFIX}-frtti
1195     _MOZ_RTTI_FLAGS_OFF=${_COMPILER_PREFIX}-fno-rtti
1196     _MOZ_EXCEPTIONS_FLAGS_ON='-fhandle-exceptions'
1197     _MOZ_EXCEPTIONS_FLAGS_OFF='-fno-handle-exceptions'
1198    
1199     # Turn on GNU specific features
1200     # -Wall - turn on all warnings
1201     # -pedantic - make compiler warn about non-ANSI stuff, and
1202     # be a little bit stricter
1203     # Warnings slamm took out for now (these were giving more noise than help):
1204     # -Wbad-function-cast - warns when casting a function to a new return type
1205     # -Wshadow - removed because it generates more noise than help --pete
1206     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wall -W -Wno-unused -Wpointer-arith"
1207     if test -z "$INTEL_CC"; then
1208     # Don't use -Wcast-align with ICC
1209     case "$CPU_ARCH" in
1210     # And don't use it on hppa, ia64, sparc, since it's noisy there
1211     hppa | ia64 | sparc)
1212     ;;
1213     *)
1214     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wcast-align"
1215     ;;
1216     esac
1217     fi
1218    
1219     dnl Turn pedantic on but disable the warnings for long long
1220     _PEDANTIC=1
1221    
1222     if test -z "$INTEL_CC"; then
1223     _IGNORE_LONG_LONG_WARNINGS=1
1224     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -W"
1225     else
1226     _IGNORE_LONG_LONG_WARNINGS=
1227     fi
1228    
1229    
1230 siliconforks 507 _DEFINES_CFLAGS='-include $(DEPTH)/js-confdefs.h -DMOZILLA_CLIENT'
1231 siliconforks 460 _USE_CPP_INCLUDE_FLAG=1
1232     elif test "$SOLARIS_SUNPRO_CC"; then
1233     MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1234     MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1235    
1236     DSO_LDOPTS='-shared'
1237     if test "$GNU_LD"; then
1238     # Don't allow undefined symbols in libraries
1239     DSO_LDOPTS="$DSO_LDOPTS -z defs"
1240     fi
1241    
1242     DSO_CFLAGS=''
1243     if test "$CPU_ARCH" = "sparc"; then
1244     # for Sun Studio on Solaris/SPARC
1245     DSO_PIC_CFLAGS='-xcode=pic32'
1246     else
1247     DSO_PIC_CFLAGS='-KPIC'
1248     fi
1249 siliconforks 507 _DEFINES_CFLAGS='$(ACDEFINES) -D_JS_CONFDEFS_H_ -DMOZILLA_CLIENT'
1250 siliconforks 460 else
1251     MKSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1252     MKCSHLIB='$(LD) $(DSO_LDOPTS) -h $@ -o $@'
1253    
1254     DSO_LDOPTS='-shared'
1255     if test "$GNU_LD"; then
1256     # Don't allow undefined symbols in libraries
1257     DSO_LDOPTS="$DSO_LDOPTS -z defs"
1258     fi
1259    
1260     DSO_CFLAGS=''
1261     DSO_PIC_CFLAGS='-KPIC'
1262 siliconforks 507 _DEFINES_CFLAGS='$(ACDEFINES) -D_JS_CONFDEFS_H_ -DMOZILLA_CLIENT'
1263 siliconforks 460 fi
1264    
1265     if test "$GNU_CXX"; then
1266     # FIXME: Let us build with strict aliasing. bug 414641.
1267     CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
1268     # Turn on GNU specific features
1269     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor"
1270     if test -z "$INTEL_CC"; then
1271     # Don't use -Wcast-align with ICC
1272     case "$CPU_ARCH" in
1273     # And don't use it on hppa, ia64, sparc, since it's noisy there
1274     hppa | ia64 | sparc)
1275     ;;
1276     *)
1277     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wcast-align"
1278     ;;
1279     esac
1280     fi
1281    
1282 siliconforks 507 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -include $(DEPTH)/js-confdefs.h'
1283 siliconforks 460 _USE_CPP_INCLUDE_FLAG=1
1284    
1285     AC_CACHE_CHECK(whether the compiler supports -Wno-invalid-offsetof,
1286     ac_has_wno_invalid_offsetof,
1287     [
1288     AC_LANG_SAVE
1289     AC_LANG_CPLUSPLUS
1290     _SAVE_CXXFLAGS="$CXXFLAGS"
1291     CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1292     AC_TRY_COMPILE([],
1293     [return(0);],
1294     ac_has_wno_invalid_offsetof="yes",
1295     ac_has_wno_invalid_offsetof="no")
1296     CXXFLAGS="$_SAVE_CXXFLAGS"
1297     AC_LANG_RESTORE
1298     ])
1299     if test "$ac_has_wno_invalid_offsetof" = "yes"; then
1300     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-invalid-offsetof"
1301     fi
1302 siliconforks 507
1303     AC_CACHE_CHECK(whether the compiler supports -Wno-variadic-macros,
1304     ac_has_wno_variadic_macros,
1305     [
1306     AC_LANG_SAVE
1307     AC_LANG_CPLUSPLUS
1308     _SAVE_CXXFLAGS="$CXXFLAGS"
1309     CXXFLAGS="$CXXFLAGS ${_COMPILER_PREFIX}-Wno-variadic-macros"
1310     AC_TRY_COMPILE([],
1311     [return(0);],
1312     ac_has_wno_variadic_macros="yes",
1313     ac_has_wno_variadic_macros="no")
1314     CXXFLAGS="$_SAVE_CXXFLAGS"
1315     AC_LANG_RESTORE
1316     ])
1317     if test "$ac_has_wno_variadic_macros" = "yes"; then
1318     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-variadic-macros"
1319     fi
1320 siliconforks 460 else
1321 siliconforks 507 _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -D_JS_CONFDEFS_H_ $(ACDEFINES)'
1322 siliconforks 460 fi
1323    
1324     dnl gcc can come with its own linker so it is better to use the pass-thru calls
1325     dnl MKSHLIB_FORCE_ALL is used to force the linker to include all object
1326     dnl files present in an archive. MKSHLIB_UNFORCE_ALL reverts the linker to
1327     dnl normal behavior.
1328     dnl ========================================================
1329     MKSHLIB_FORCE_ALL=
1330     MKSHLIB_UNFORCE_ALL=
1331    
1332     if test "$COMPILE_ENVIRONMENT"; then
1333     if test "$GNU_CC"; then
1334     AC_MSG_CHECKING(whether ld has archive extraction flags)
1335     AC_CACHE_VAL(ac_cv_mkshlib_force_and_unforce,
1336     [_SAVE_LDFLAGS=$LDFLAGS; _SAVE_LIBS=$LIBS
1337     ac_cv_mkshlib_force_and_unforce="no"
1338     exec 3<&0 <<LOOP_INPUT
1339     force="-Wl,--whole-archive"; unforce="-Wl,--no-whole-archive"
1340     force="-Wl,-z -Wl,allextract"; unforce="-Wl,-z -Wl,defaultextract"
1341     force="-Wl,-all"; unforce="-Wl,-none"
1342     LOOP_INPUT
1343     while read line
1344     do
1345     eval $line
1346     LDFLAGS=$force
1347     LIBS=$unforce
1348     AC_TRY_LINK(,, ac_cv_mkshlib_force_and_unforce=$line; break)
1349     done
1350     exec 0<&3 3<&-
1351     LDFLAGS=$_SAVE_LDFLAGS; LIBS=$_SAVE_LIBS
1352     ])
1353     if test "$ac_cv_mkshlib_force_and_unforce" = "no"; then
1354     AC_MSG_RESULT(no)
1355     else
1356     AC_MSG_RESULT(yes)
1357     eval $ac_cv_mkshlib_force_and_unforce
1358     MKSHLIB_FORCE_ALL=$force
1359     MKSHLIB_UNFORCE_ALL=$unforce
1360     fi
1361     fi # GNU_CC
1362     fi # COMPILE_ENVIRONMENT
1363    
1364     dnl =================================================================
1365     dnl Set up and test static assertion macros used to avoid AC_TRY_RUN,
1366     dnl which is bad when cross compiling.
1367     dnl =================================================================
1368     if test "$COMPILE_ENVIRONMENT"; then
1369     configure_static_assert_macros='
1370     #define CONFIGURE_STATIC_ASSERT(condition) CONFIGURE_STATIC_ASSERT_IMPL(condition, __LINE__)
1371     #define CONFIGURE_STATIC_ASSERT_IMPL(condition, line) CONFIGURE_STATIC_ASSERT_IMPL2(condition, line)
1372     #define CONFIGURE_STATIC_ASSERT_IMPL2(condition, line) typedef int static_assert_line_##line[(condition) ? 1 : -1]
1373     '
1374    
1375     dnl test that the macros actually work:
1376     AC_MSG_CHECKING(that static assertion macros used in autoconf tests work)
1377     AC_CACHE_VAL(ac_cv_static_assertion_macros_work,
1378     [AC_LANG_SAVE
1379     AC_LANG_C
1380     ac_cv_static_assertion_macros_work="yes"
1381     AC_TRY_COMPILE([$configure_static_assert_macros],
1382     [CONFIGURE_STATIC_ASSERT(1)],
1383     ,
1384     ac_cv_static_assertion_macros_work="no")
1385     AC_TRY_COMPILE([$configure_static_assert_macros],
1386     [CONFIGURE_STATIC_ASSERT(0)],
1387     ac_cv_static_assertion_macros_work="no",
1388     )
1389     AC_LANG_CPLUSPLUS
1390     AC_TRY_COMPILE([$configure_static_assert_macros],
1391     [CONFIGURE_STATIC_ASSERT(1)],
1392     ,
1393     ac_cv_static_assertion_macros_work="no")
1394     AC_TRY_COMPILE([$configure_static_assert_macros],
1395     [CONFIGURE_STATIC_ASSERT(0)],
1396     ac_cv_static_assertion_macros_work="no",
1397     )
1398     AC_LANG_RESTORE
1399     ])
1400     AC_MSG_RESULT("$ac_cv_static_assertion_macros_work")
1401     if test "$ac_cv_static_assertion_macros_work" = "no"; then
1402     AC_MSG_ERROR([Compiler cannot compile macros used in autoconf tests.])
1403     fi
1404     fi # COMPILE_ENVIRONMENT
1405    
1406     dnl ========================================================
1407     dnl Checking for 64-bit OS
1408     dnl ========================================================
1409     if test "$COMPILE_ENVIRONMENT"; then
1410     AC_LANG_SAVE
1411     AC_LANG_C
1412     AC_MSG_CHECKING(for 64-bit OS)
1413     AC_TRY_COMPILE([$configure_static_assert_macros],
1414     [CONFIGURE_STATIC_ASSERT(sizeof(long) == 8)],
1415     result="yes", result="no")
1416     AC_MSG_RESULT("$result")
1417     if test "$result" = "yes"; then
1418     AC_DEFINE(HAVE_64BIT_OS)
1419     HAVE_64BIT_OS=1
1420     fi
1421     AC_SUBST(HAVE_64BIT_OS)
1422     AC_LANG_RESTORE
1423     fi # COMPILE_ENVIRONMENT
1424    
1425     dnl ========================================================
1426     dnl Enable high-memory support on OS/2 by default.
1427     dnl ========================================================
1428     MOZ_OS2_HIGH_MEMORY=1
1429     MOZ_ARG_DISABLE_BOOL(os2-high-mem,
1430     [ --disable-os2-high-mem Disable high-memory support on OS/2],
1431     MOZ_OS2_HIGH_MEMORY=,
1432     MOZ_OS2_HIGH_MEMORY=1 )
1433     AC_SUBST(MOZ_OS2_HIGH_MEMORY)
1434    
1435     dnl ========================================================
1436     dnl System overrides of the defaults for host
1437     dnl ========================================================
1438     case "$host" in
1439     *-beos*)
1440     HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE -DNO_X11"
1441     HOST_NSPR_MDCPUCFG='\"md/_beos.cfg\"'
1442     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1443     ;;
1444    
1445     *cygwin*|*mingw*|*mks*|*msvc*|*wince)
1446     if test -n "$_WIN32_MSVC"; then
1447     HOST_AR=lib
1448     HOST_AR_FLAGS='-NOLOGO -OUT:"$@"'
1449     HOST_CFLAGS="$HOST_CFLAGS -TC -nologo -Fd\$(HOST_PDBFILE)"
1450     HOST_RANLIB='echo ranlib'
1451     else
1452     HOST_CFLAGS="$HOST_CFLAGS -mno-cygwin"
1453     fi
1454     HOST_CFLAGS="$HOST_CFLAGS -DXP_WIN32 -DXP_WIN -DWIN32 -D_WIN32 -DNO_X11"
1455     HOST_NSPR_MDCPUCFG='\"md/_winnt.cfg\"'
1456     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1457     HOST_BIN_SUFFIX=.exe
1458     case "$host" in
1459     *mingw*)
1460     dnl MinGW/MSYS does not need CYGWIN_WRAPPER
1461     ;;
1462     *)
1463     CYGWIN_WRAPPER="${srcdir}/build/cygwin-wrapper"
1464     if test "`echo ${srcdir} | grep -c ^/ 2>/dev/null`" = 0; then
1465     _pwd=`pwd`
1466     CYGWIN_WRAPPER="${_pwd}/${srcdir}/build/cygwin-wrapper"
1467     fi
1468     if test "`${PERL} -v | grep -c cygwin 2>/dev/null`" = 0; then
1469     AS_PERL=1
1470     PERL="${CYGWIN_WRAPPER} $PERL"
1471     fi
1472    
1473     if test "`${PYTHON} -c 'import sys; print sys.platform;'`" != "cygwin"; then
1474     PYTHON="${CYGWIN_WRAPPER} $PYTHON"
1475     fi
1476     ;;
1477     esac
1478     ;;
1479    
1480     *-darwin*)
1481     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX -DXP_MACOSX -DNO_X11"
1482     HOST_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1483     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1484     MOZ_FIX_LINK_PATHS='-Wl,-executable_path,$(LIBXUL_DIST)/bin'
1485     LIBXUL_LIBS='$(XPCOM_FROZEN_LDOPTS) $(LIBXUL_DIST)/bin/XUL -lobjc'
1486     ;;
1487    
1488     *-linux*|*-kfreebsd*-gnu)
1489     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1490     HOST_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1491     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
1492     ;;
1493    
1494     *os2*)
1495     HOST_CFLAGS="$HOST_CFLAGS -DXP_OS2 -DNO_X11 -Zomf"
1496     HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
1497     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1498     HOST_BIN_SUFFIX=.exe
1499     MOZ_FIX_LINK_PATHS=
1500     ;;
1501    
1502     *-osf*)
1503     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1504     HOST_NSPR_MDCPUCFG='\"md/_osf1.cfg\"'
1505     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1506     ;;
1507    
1508     *)
1509     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1510     HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O2}"
1511     ;;
1512     esac
1513    
1514     dnl ========================================================
1515     dnl System overrides of the defaults for target
1516     dnl ========================================================
1517    
1518     case "$target" in
1519     *-aix*)
1520     AC_DEFINE(AIX)
1521     if test ! "$GNU_CC"; then
1522     if test ! "$HAVE_64BIT_OS"; then
1523     # Compiling with Visual Age C++ object model compat is the
1524     # default. To compile with object model ibm, add
1525     # AIX_OBJMODEL=ibm to .mozconfig.
1526     if test "$AIX_OBJMODEL" = "ibm"; then
1527     CXXFLAGS="$CXXFLAGS -qobjmodel=ibm"
1528     else
1529     AIX_OBJMODEL=compat
1530     fi
1531     else
1532     AIX_OBJMODEL=compat
1533     fi
1534     AC_SUBST(AIX_OBJMODEL)
1535     DSO_LDOPTS='-qmkshrobj=1'
1536     DSO_CFLAGS='-qflag=w:w'
1537     DSO_PIC_CFLAGS=
1538     LDFLAGS="$LDFLAGS -Wl,-brtl -blibpath:/usr/lib:/lib"
1539     AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS till we can fix bug 332075.])
1540     MOZ_FIX_LINK_PATHS=
1541     MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1542     MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1543     if test "$COMPILE_ENVIRONMENT"; then
1544     AC_LANG_SAVE
1545     AC_LANG_CPLUSPLUS
1546     AC_MSG_CHECKING([for VisualAge C++ compiler version >= 6.0.0.3])
1547     AC_TRY_COMPILE([],
1548     [#if (__IBMCPP__ < 600)
1549     #error "Bad compiler"
1550     #endif],
1551     _BAD_COMPILER=,_BAD_COMPILER=1)
1552     if test -n "$_BAD_COMPILER"; then
1553     AC_MSG_RESULT([no])
1554     AC_MSG_ERROR([VisualAge C++ version 6.0.0.3 or higher is required to build.])
1555     else
1556     AC_MSG_RESULT([yes])
1557     fi
1558     AC_LANG_RESTORE
1559     TARGET_COMPILER_ABI="ibmc"
1560     CC_VERSION=`lslpp -Lcq vac.C 2>/dev/null | awk -F: '{ print $3 }'`
1561     CXX_VERSION=`lslpp -Lcq vacpp.cmp.core 2>/dev/null | awk -F: '{ print $3 }'`
1562     fi
1563     fi
1564     case "${target_os}" in
1565     aix4.1*)
1566     DLL_SUFFIX='_shr.a'
1567     ;;
1568     esac
1569     if test "$COMPILE_ENVIRONMENT"; then
1570     AC_CHECK_HEADERS(sys/inttypes.h)
1571     fi
1572     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1573     ;;
1574    
1575     *-beos*)
1576     no_x=yes
1577     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -Wl,-h,$@ -o $@'
1578     _PLATFORM_DEFAULT_TOOLKIT="cairo-beos"
1579     DSO_LDOPTS='-nostart'
1580     TK_LIBS='-lbe -lroot'
1581     LIBS="$LIBS -lbe"
1582     if test "$COMPILE_ENVIRONMENT"; then
1583     AC_CHECK_LIB(bind,main,LIBS="$LIBS -lbind")
1584     AC_CHECK_LIB(zeta,main,LIBS="$LIBS -lzeta")
1585     fi
1586     _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} -Wno-multichar"
1587     _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-multichar"
1588     _MOZ_USE_RTTI=1
1589     USE_DEPENDENT_LIBS=
1590     MOZ_USER_DIR="Mozilla"
1591     ;;
1592    
1593     *-bsdi*)
1594     dnl -pedantic doesn't play well with BSDI's _very_ modified gcc (shlicc2)
1595     _PEDANTIC=
1596     _IGNORE_LONG_LONG_WARNINGS=
1597     case $OS_RELEASE in
1598     4.*|5.*)
1599     STRIP="$STRIP -d"
1600     ;;
1601     *)
1602     DSO_CFLAGS=''
1603     DSO_LDOPTS='-r'
1604     _WARNINGS_CFLAGS="-Wall"
1605     _WARNINGS_CXXFLAGS="-Wall"
1606     # The test above doesn't work properly, at least on 3.1.
1607     MKSHLIB_FORCE_ALL=''
1608     MKSHLIB_UNFORCE_ALL=''
1609     ;;
1610     esac
1611     ;;
1612    
1613     *-darwin*)
1614     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1615     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1616 siliconforks 507 MOZ_OPTIMIZE_FLAGS="-O3"
1617 siliconforks 460 _PEDANTIC=
1618     CFLAGS="$CFLAGS -fpascal-strings -fno-common"
1619     CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
1620     DLL_SUFFIX=".dylib"
1621     DSO_LDOPTS=''
1622     STRIP="$STRIP -x -S"
1623     _PLATFORM_DEFAULT_TOOLKIT='cairo-cocoa'
1624     MOZ_ENABLE_POSTSCRIPT=
1625     TARGET_NSPR_MDCPUCFG='\"md/_darwin.cfg\"'
1626     LDFLAGS="$LDFLAGS -framework Cocoa"
1627     # The ExceptionHandling framework is needed for Objective-C exception
1628     # logging code in nsObjCExceptions.h. Currently we only use that in debug
1629     # builds.
1630     MOZ_DEBUG_LDFLAGS="$MOZ_DEBUG_LDFLAGS -framework ExceptionHandling"
1631     # set MACOSX to generate lib/mac/MoreFiles/Makefile
1632     MACOSX=1
1633    
1634     dnl DTrace and -dead_strip don't interact well. See bug 403132.
1635     dnl ===================================================================
1636     if test "x$enable_dtrace" = "xyes"; then
1637     echo "Skipping -dead_strip because DTrace is enabled. See bug 403132."
1638     else
1639     dnl check for the presence of the -dead_strip linker flag
1640     AC_MSG_CHECKING([for -dead_strip option to ld])
1641     _SAVE_LDFLAGS=$LDFLAGS
1642     LDFLAGS="$LDFLAGS -Wl,-dead_strip"
1643     AC_TRY_LINK(,[return 0;],_HAVE_DEAD_STRIP=1,_HAVE_DEAD_STRIP=)
1644     if test -n "$_HAVE_DEAD_STRIP" ; then
1645     AC_MSG_RESULT([yes])
1646     MOZ_OPTIMIZE_LDFLAGS="-Wl,-dead_strip"
1647     else
1648     AC_MSG_RESULT([no])
1649     fi
1650    
1651     LDFLAGS=$_SAVE_LDFLAGS
1652     fi
1653     ;;
1654    
1655     *-freebsd*)
1656     if test `test -x /usr/bin/objformat && /usr/bin/objformat || echo elf` != "elf"; then
1657     DLL_SUFFIX=".so.1.0"
1658     DSO_LDOPTS="-shared"
1659     fi
1660     if test ! "$GNU_CC"; then
1661     DSO_LDOPTS="-Bshareable $DSO_LDOPTS"
1662     fi
1663     # Can't have force w/o an unforce.
1664     # # Hack for FreeBSD 2.2
1665     # if test -z "$MKSHLIB_FORCE_ALL"; then
1666     # MKSHLIB_FORCE_ALL='-Wl,-Bforcearchive'
1667     # MKSHLIB_UNFORCE_ALL=''
1668     # fi
1669     ;;
1670    
1671     *-hpux*)
1672     DLL_SUFFIX=".sl"
1673     if test ! "$GNU_CC"; then
1674     DSO_LDOPTS='-b -Wl,+s'
1675     DSO_CFLAGS=""
1676     DSO_PIC_CFLAGS="+Z"
1677     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -o $@'
1678     MKCSHLIB='$(LD) -b +s -L$(LIBXUL_DIST)/bin -o $@'
1679     CXXFLAGS="$CXXFLAGS -Wc,-ansi_for_scope,on"
1680     else
1681     DSO_LDOPTS='-b -E +s'
1682     MKSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1683     MKCSHLIB='$(LD) $(DSO_LDOPTS) -L$(LIBXUL_DIST)/bin -L$(LIBXUL_DIST)/lib -o $@'
1684     fi
1685     MOZ_POST_PROGRAM_COMMAND='chatr +s enable'
1686     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1687     ;;
1688    
1689     *-irix5*)
1690     AC_DEFINE(IRIX)
1691     DSO_LDOPTS='-elf -shared'
1692    
1693     if test "$GNU_CC"; then
1694     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1695     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1696     MKSHLIB_FORCE_ALL='-Wl,-all'
1697     MKSHLIB_UNFORCE_ALL='-Wl,-none'
1698     CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1699     else
1700     MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1701     MKCSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
1702     MKSHLIB_FORCE_ALL='-all'
1703     MKSHLIB_UNFORCE_ALL='-none'
1704     fi
1705     ;;
1706    
1707     *-irix6*)
1708     AC_DEFINE(IRIX)
1709     dnl the irix specific xptcinvoke code is written against the n32 ABI so we *must*
1710     dnl compile and link using -n32
1711     USE_N32=1
1712     TARGET_COMPILER_ABI=n32
1713     DSO_LDOPTS='-elf -shared'
1714     MKSHLIB='$(CCC) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1715     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
1716     _MOZ_EXCEPTIONS_FLAGS_OFF="-LANG:exceptions=OFF"
1717     _MOZ_EXCEPTIONS_FLAGS_ON="-LANG:exceptions=ON"
1718     if test "$GNU_CC"; then
1719     MKSHLIB_FORCE_ALL='-Wl,-all'
1720     MKSHLIB_UNFORCE_ALL='-Wl,-none'
1721     _WARNINGS_CFLAGS="-Wall"
1722     _WARNINGS_CXXFLAGS="-Wall"
1723     CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS"
1724     else
1725     MKSHLIB_FORCE_ALL='-all'
1726     MKSHLIB_UNFORCE_ALL='-none'
1727     AR_LIST="$AR t"
1728     AR_EXTRACT="$AR x"
1729     AR_DELETE="$AR d"
1730     AR='$(CXX) -ar'
1731     AR_FLAGS='-o $@'
1732     CFLAGS="$CFLAGS -woff 3262 -G 4"
1733     CXXFLAGS="$CXXFLAGS -woff 3262 -G 4"
1734     if test -n "$USE_N32"; then
1735     ASFLAGS="$ASFLAGS -n32"
1736     CFLAGS="$CFLAGS -n32"
1737     CXXFLAGS="$CXXFLAGS -n32"
1738     LDFLAGS="$LDFLAGS -n32"
1739     fi
1740     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
1741     AC_MSG_WARN([Clearing MOZ_FIX_LINK_PATHS for OSF/1 as fix for bug 333545 (till the reference bug 332075 is fixed.])
1742     MOZ_FIX_LINK_PATHS=
1743     fi
1744     if test -z "$GNU_CXX"; then
1745     MIPSPRO_CXX=1
1746     fi
1747     ;;
1748    
1749     *-*linux*)
1750     # Note: both GNU_CXX and INTEL_CXX are set when using Intel's C compiler.
1751     if test "$INTEL_CXX"; then
1752     # -Os has been broken on Intel's C/C++ compilers for quite a
1753     # while; Intel recommends against using it.
1754     MOZ_OPTIMIZE_FLAGS="-O2"
1755     MOZ_DEBUG_FLAGS="-g -fno-inline"
1756     elif test "$GNU_CXX"; then
1757     GCC_VERSION=`$CXX -v 2>&1 | awk '/^gcc version/ { print $3 }'`
1758     case $GCC_VERSION in
1759     4.1.*|4.2.*)
1760     # -Os is broken on gcc 4.1.x and 4.2.x, we need to tweak it to get good results.
1761     MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
1762     esac
1763     MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions $MOZ_OPTIMIZE_SIZE_TWEAK"
1764     MOZ_DEBUG_FLAGS="-g -fno-inline" # most people on linux use gcc/gdb,
1765     # and that combo is not yet good at
1766     # debugging inlined functions (even
1767     # when using DWARF2 as the debugging
1768     # format)
1769     fi
1770    
1771     TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
1772    
1773     case "${target_cpu}" in
1774     alpha*)
1775     CFLAGS="$CFLAGS -mieee"
1776     CXXFLAGS="$CXXFLAGS -mieee"
1777     ;;
1778     i*86)
1779     MOZ_ENABLE_OLD_ABI_COMPAT_WRAPPERS=1
1780     ;;
1781     mips*)
1782     MOZ_DEBUG_FLAGS="-g" # We want inlining
1783     ;;
1784     esac
1785     ;;
1786    
1787     *-wince*)
1788 siliconforks 507 TARGET_COMPILER_ABI=msvc
1789 siliconforks 460 MOZ_TOOLS_DIR=`echo $MOZ_TOOLS`
1790     AR_LIST="$AR -list"
1791     AR_EXTRACT="$AR -extract"
1792     AR_DELETE="$AR d"
1793     AR_FLAGS='-OUT:"$@"'
1794     AS="$AS_BIN"
1795    
1796     DSO_CFLAGS=
1797     DSO_PIC_CFLAGS=
1798     DLL_SUFFIX=.dll
1799     BIN_SUFFIX='.exe'
1800     if test -z "$RC"; then
1801     RC=rc.exe
1802     fi
1803     # certain versions of cygwin's makedepend barf on the
1804     # #include <string> vs -I./dist/include/string issue so don't use it
1805     SYSTEM_MAKEDEPEND=
1806    
1807     HOST_CC=cl
1808     HOST_CXX=cl
1809     HOST_LD=link
1810     HOST_AR='lib -OUT:$@'
1811     HOST_RANLIB='echo ranlib'
1812     HOST_CFLAGS="$HOST_CFLAGS -D_X86_"
1813    
1814    
1815     WARNINGS_AS_ERRORS='-WX'
1816     MOZ_OPTIMIZE_FLAGS='-O1'
1817     AR_FLAGS='-NOLOGO -OUT:"$@"'
1818     ASM_SUFFIX=asm
1819     CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
1820     CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
1821     DLL_PREFIX=
1822     DOXYGEN=:
1823     DSO_LDOPTS=-SUBSYSTEM:WINDOWSCE
1824     DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
1825     GARBAGE=
1826     IMPORT_LIB_SUFFIX=lib
1827     LIBS="$LIBS"
1828     LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
1829     LIB_PREFIX=
1830     LIB_SUFFIX=lib
1831     MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1832     MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ $(DSO_LDOPTS)'
1833     MKSHLIB_FORCE_ALL=
1834     MKSHLIB_UNFORCE_ALL=
1835     MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1836     MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1837     MOZ_DEBUG_FLAGS='-Zi'
1838     MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
1839     MOZ_FIX_LINK_PATHS=
1840     MOZ_JS_LIBS='$(libdir)/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
1841     MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
1842     OBJ_SUFFIX=obj
1843     RANLIB='echo not_ranlib'
1844     STRIP='echo not_strip'
1845     TARGET_NSPR_MDCPUCFG='\"md/_wince.cfg\"'
1846     UNZIP=unzip
1847     XARGS=xargs
1848     XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
1849     ZIP=zip
1850    
1851     AC_DEFINE(WINCE)
1852     AC_DEFINE(HAVE_SNPRINTF)
1853     AC_DEFINE(_WINDOWS)
1854     AC_DEFINE(WIN32)
1855     AC_DEFINE(XP_WIN)
1856     AC_DEFINE(XP_WIN32)
1857     AC_DEFINE(HW_THREADS)
1858     AC_DEFINE(STDC_HEADERS)
1859     AC_DEFINE(NEW_H, <new>)
1860     AC_DEFINE(WIN32_LEAN_AND_MEAN)
1861    
1862     TARGET_MD_ARCH=win32
1863     _PLATFORM_DEFAULT_TOOLKIT='windows'
1864     BIN_SUFFIX='.exe'
1865     USE_SHORT_LIBNAME=1
1866     MOZ_ENABLE_POSTSCRIPT=
1867     MOZ_USER_DIR="Mozilla"
1868 siliconforks 507
1869     dnl Default to Windows Mobile components enabled
1870     WINCE_WINDOWS_MOBILE=1
1871    
1872     MOZ_ARG_DISABLE_BOOL(windows-mobile-components,
1873     [ --disable-windows-mobile-components
1874     Disable Windows Mobile specific components from CE build],
1875     WINCE_WINDOWS_MOBILE=,
1876     WINCE_WINDOWS_MOBILE=1)
1877    
1878     if test "$WINCE_WINDOWS_MOBILE"; then
1879     AC_DEFINE(WINCE_WINDOWS_MOBILE)
1880     fi
1881 siliconforks 460 ;;
1882    
1883 siliconforks 507 *-symbian*)
1884 siliconforks 460
1885 siliconforks 507 AC_DEFINE(XP_UNIX)
1886     AC_DEFINE(SYMBIAN)
1887     AC_DEFINE(__arm__)
1888     AC_DEFINE(__SYMBIAN32__)
1889     AC_DEFINE(_UNICODE)
1890     AC_DEFINE(NDEBUG)
1891     AC_DEFINE(__SUPPORT_CPP_EXCEPTIONS__)
1892     AC_DEFINE(MOZ_STDERR_TO_STDOUT)
1893     AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
1894     AC_DEFINE(HAVE_SOCKLEN_T)
1895     AC_DEFINE(__GCCE__)
1896    
1897     CPU_ARCH=ARM
1898     OS_RELEASE=9.2
1899     OS_ARCH=SYMBIAN
1900     USE_PTHREADS=1
1901     LIB_SUFFIX=lib
1902     DLL_SUFFIX=dll
1903     MKSHLIB=
1904     DSO_LDOPTS=
1905     DSO_CFLAGS=
1906     VISIBILITY_FLAGS=
1907     TARGET_NSPR_MDCPUCFG='\"md/_symbian.cfg\"'
1908     RANLIB='echo no ranlib '
1909     ;;
1910    
1911 siliconforks 460 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
1912     DSO_CFLAGS=
1913     DSO_PIC_CFLAGS=
1914     DLL_SUFFIX=.dll
1915     RC=rc.exe
1916     # certain versions of cygwin's makedepend barf on the
1917     # #include <string> vs -I./dist/include/string issue so don't use it
1918     SYSTEM_MAKEDEPEND=
1919     if test -n "$GNU_CC"; then
1920     CC="$CC -mno-cygwin"
1921     CXX="$CXX -mno-cygwin"
1922     CPP="$CPP -mno-cygwin"
1923     CFLAGS="$CFLAGS -mms-bitfields"
1924     CXXFLAGS="$CXXFLAGS -mms-bitfields"
1925     DSO_LDOPTS='-shared'
1926     MKSHLIB='$(CXX) $(DSO_LDOPTS) -o $@'
1927     MKCSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1928     RC='$(WINDRES)'
1929     # Use temp file for windres (bug 213281)
1930     RCFLAGS='-O coff --use-temp-file'
1931     # mingw doesn't require kernel32, user32, and advapi32 explicitly
1932     LIBS="$LIBS -lgdi32 -lwinmm -lwsock32"
1933     MOZ_JS_LIBS='-L$(libdir) -ljs$(MOZ_BITS)$(VERSION_NUMBER)'
1934     MOZ_FIX_LINK_PATHS=
1935     DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib -lxpcom -lxpcom_core'
1936     XPCOM_FROZEN_LDOPTS='-L$(LIBXUL_DIST)/lib -lxpcom'
1937     DLL_PREFIX=
1938     IMPORT_LIB_SUFFIX=dll.a
1939     else
1940     TARGET_COMPILER_ABI=msvc
1941     HOST_CC='$(CC)'
1942     HOST_CXX='$(CXX)'
1943     HOST_LD='$(LD)'
1944     AR='lib -NOLOGO -OUT:"$@"'
1945     AR_FLAGS=
1946     RANLIB='echo not_ranlib'
1947     STRIP='echo not_strip'
1948     XARGS=xargs
1949     ZIP=zip
1950     UNZIP=unzip
1951     DOXYGEN=:
1952     GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
1953     OBJ_SUFFIX=obj
1954     LIB_SUFFIX=lib
1955     DLL_PREFIX=
1956     LIB_PREFIX=
1957     IMPORT_LIB_SUFFIX=lib
1958     MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
1959     MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
1960     MKSHLIB_FORCE_ALL=
1961     MKSHLIB_UNFORCE_ALL=
1962     DSO_LDOPTS=-SUBSYSTEM:WINDOWS
1963     CFLAGS="$CFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
1964     CXXFLAGS="$CXXFLAGS -W3 -Gy -Fd\$(COMPILE_PDBFILE)"
1965     LIBS="$LIBS kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib"
1966     MOZ_DEBUG_FLAGS='-Zi'
1967     MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
1968     WARNINGS_AS_ERRORS='-WX'
1969     MOZ_OPTIMIZE_FLAGS='-O1'
1970     MOZ_JS_LIBS='$(libdir)/js$(MOZ_BITS)$(VERSION_NUMBER).lib'
1971     MOZ_FIX_LINK_PATHS=
1972     DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib'
1973     XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib'
1974     LIBXUL_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
1975     MOZ_COMPONENT_NSPR_LIBS='$(NSPR_LIBS)'
1976     MOZ_XPCOM_OBSOLETE_LIBS='$(LIBXUL_DIST)/lib/xpcom_compat.lib'
1977     if test $_MSC_VER -ge 1400; then
1978     LDFLAGS="$LDFLAGS -NXCOMPAT -SAFESEH"
1979     dnl For profile-guided optimization
1980     PROFILE_GEN_CFLAGS="-GL"
1981     PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
1982     dnl XXX: PGO builds can fail with warnings treated as errors,
1983     dnl specifically "no profile data available" appears to be
1984     dnl treated as an error sometimes. This might be a consequence
1985     dnl of using WARNINGS_AS_ERRORS in some modules, combined
1986     dnl with the linker doing most of the work in the whole-program
1987     dnl optimization/PGO case. I think it's probably a compiler bug,
1988     dnl but we work around it here.
1989     PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
1990     dnl XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul.
1991     dnl Probably also a compiler bug, but what can you do?
1992     PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
1993     if test -n "$_USE_DYNAMICBASE"; then
1994     LDFLAGS="$LDFLAGS -DYNAMICBASE"
1995     fi
1996     fi
1997     fi
1998     AC_DEFINE(HAVE_SNPRINTF)
1999     AC_DEFINE(_WINDOWS)
2000     AC_DEFINE(WIN32)
2001     AC_DEFINE(XP_WIN)
2002     AC_DEFINE(XP_WIN32)
2003     AC_DEFINE(HW_THREADS)
2004     AC_DEFINE(STDC_HEADERS)
2005     AC_DEFINE(NEW_H, <new>)
2006     AC_DEFINE(WIN32_LEAN_AND_MEAN)
2007     TARGET_MD_ARCH=win32
2008     _PLATFORM_DEFAULT_TOOLKIT='cairo-windows'
2009     BIN_SUFFIX='.exe'
2010     USE_SHORT_LIBNAME=1
2011     MOZ_ENABLE_POSTSCRIPT=
2012     MOZ_USER_DIR="Mozilla"
2013    
2014     dnl Hardcode to win95 for now - cls
2015     TARGET_NSPR_MDCPUCFG='\"md/_win95.cfg\"'
2016    
2017     dnl set NO_X11 defines here as the general check is skipped on win32
2018     no_x=yes
2019     AC_DEFINE(NO_X11)
2020    
2021     dnl MinGW/MSYS doesn't provide or need cygpath
2022     case "$host" in
2023     *-mingw*)
2024     CYGPATH_W=echo
2025     CYGPATH_S=cat
2026     MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W`
2027     ;;
2028     *-cygwin*|*-msvc*|*-mks*)
2029     CYGPATH_W="cygpath -a -w"
2030     CYGPATH_S="sed -e s|\\\\|/|g"
2031     MOZ_BUILD_ROOT=`$CYGPATH_W $MOZ_BUILD_ROOT | $CYGPATH_S`
2032     ;;
2033     esac
2034     case "$host" in
2035     *-mingw*|*-cygwin*|*-msvc*|*-mks*)
2036    
2037     if test -z "$MOZ_TOOLS"; then
2038     AC_MSG_ERROR([MOZ_TOOLS is not set])
2039     fi
2040    
2041     MOZ_TOOLS_DIR=`cd $MOZ_TOOLS && pwd`
2042     if test "$?" != "0" || test -z "$MOZ_TOOLS_DIR"; then
2043     AC_MSG_ERROR([cd \$MOZ_TOOLS failed. MOZ_TOOLS ==? $MOZ_TOOLS])
2044     fi
2045     if test `echo ${PATH}: | grep -ic "$MOZ_TOOLS_DIR/bin:"` = 0; then
2046     AC_MSG_ERROR([\$MOZ_TOOLS\\bin must be in your path.])
2047     fi
2048     MOZ_TOOLS_DIR=`$CYGPATH_W $MOZ_TOOLS_DIR | $CYGPATH_S`
2049     ;;
2050     esac
2051    
2052    
2053     case "$host_os" in
2054     cygwin*|msvc*|mks*)
2055     AC_MSG_WARN([Using a cygwin build environment is unsupported. Configure cannot check for the presence of necessary headers. Please upgrade to MozillaBuild; see http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites])
2056     ;;
2057    
2058     *)
2059     AC_CHECK_HEADERS(mmintrin.h oleacc.idl)
2060    
2061     AC_LANG_SAVE
2062     AC_LANG_CPLUSPLUS
2063     AC_CHECK_HEADERS(atlbase.h wpcapi.h)
2064     AC_LANG_RESTORE
2065     ;;
2066     esac
2067    
2068     case "$target" in
2069     i*86-*)
2070     AC_DEFINE(_X86_)
2071     ;;
2072     alpha-*)
2073     AC_DEFINE(_ALPHA_)
2074     ;;
2075     mips-*)
2076     AC_DEFINE(_MIPS_)
2077     ;;
2078     *)
2079     AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2080     ;;
2081     esac
2082     ;;
2083    
2084     *-netbsd*)
2085     DSO_CFLAGS=''
2086     CFLAGS="$CFLAGS -Dunix"
2087     CXXFLAGS="$CXXFLAGS -Dunix"
2088     if $CC -E - -dM </dev/null | grep __ELF__ >/dev/null; then
2089     DLL_SUFFIX=".so"
2090     DSO_PIC_CFLAGS='-fPIC -DPIC'
2091     DSO_LDOPTS='-shared'
2092     BIN_FLAGS='-Wl,--export-dynamic'
2093     else
2094     DSO_PIC_CFLAGS='-fPIC -DPIC'
2095     DLL_SUFFIX=".so.1.0"
2096     DSO_LDOPTS='-shared'
2097     fi
2098     # This will fail on a.out systems prior to 1.5.1_ALPHA.
2099     MKSHLIB_FORCE_ALL='-Wl,--whole-archive'
2100     MKSHLIB_UNFORCE_ALL='-Wl,--no-whole-archive'
2101     if test "$LIBRUNPATH"; then
2102     DSO_LDOPTS="-Wl,-R$LIBRUNPATH $DSO_LDOPTS"
2103     fi
2104     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2105     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,lib$(LIBRARY_NAME)$(DLL_SUFFIX) -o $@'
2106     ;;
2107    
2108     *-nto*)
2109     AC_DEFINE(NTO)
2110     AC_DEFINE(_QNX_SOURCE)
2111     AC_DEFINE(_i386)
2112     OS_TARGET=NTO
2113     WARNINGS_AS_ERRORS=''
2114     MOZ_OPTIMIZE_FLAGS="-O"
2115     MOZ_DEBUG_FLAGS="-gstabs"
2116     USE_PTHREADS=1
2117     _PEDANTIC=
2118     LIBS="$LIBS -lsocket -lstdc++"
2119 siliconforks 507 _DEFINES_CFLAGS='-Wp,-include -Wp,$(DEPTH)/js-confdefs.h -DMOZILLA_CLIENT -D_POSIX_C_SOURCE=199506'
2120     _DEFINES_CXXFLAGS='-DMOZILLA_CLIENT -Wp,-include -Wp,$(DEPTH)/js-confdefs.h -D_POSIX_C_SOURCE=199506'
2121 siliconforks 460 if test "$with_x" != "yes"
2122     then
2123     _PLATFORM_DEFAULT_TOOLKIT="photon"
2124     TK_CFLAGS='-I/usr/include/photon'
2125     TK_LIBS='-lph'
2126     fi
2127     case "${target_cpu}" in
2128     ppc*)
2129     AC_DEFINE(HAVE_VA_LIST_AS_ARRAY)
2130     ;;
2131     esac
2132     ;;
2133    
2134     *-openbsd*)
2135     DLL_SUFFIX=".so.1.0"
2136     DSO_CFLAGS=''
2137     DSO_PIC_CFLAGS='-fPIC'
2138     DSO_LDOPTS='-shared -fPIC'
2139     if test "$LIBRUNPATH"; then
2140     DSO_LDOPTS="-R$LIBRUNPATH $DSO_LDOPTS"
2141     fi
2142     ;;
2143    
2144     *-openvms*)
2145     AC_DEFINE(NO_PW_GECOS)
2146     AC_DEFINE(NO_UDSOCK)
2147     AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
2148     USE_PTHREADS=1
2149     MKSHLIB_FORCE_ALL='-all'
2150     MKSHLIB_UNFORCE_ALL='-none'
2151     AS='as'
2152     AS_DASH_C_FLAG='-Wc/names=as_is'
2153     AR_FLAGS='c $@'
2154     DSO_LDOPTS='-shared -auto_symvec'
2155     DSO_PIC_CFLAGS=
2156     MOZ_DEBUG_LDFLAGS='-g'
2157     COMPAQ_CXX=1
2158     CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
2159     CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
2160     ;;
2161    
2162    
2163     *-os2*)
2164     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2165     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
2166     AC_DEFINE(OS2)
2167     AC_DEFINE(XP_OS2)
2168     AC_DEFINE(OS2EMX_PLAIN_CHAR)
2169     AC_DEFINE(TCPV40HDRS)
2170     USE_SHORT_LIBNAME=1
2171     DLL_PREFIX=
2172     LIB_PREFIX=
2173     LIB_SUFFIX=lib
2174     BIN_SUFFIX=".exe"
2175     DLL_SUFFIX=".dll"
2176     IMPORT_LIB_SUFFIX=lib
2177     DSO_PIC_CFLAGS=
2178     AR=emxomfar
2179     AR_FLAGS='r $@'
2180     CFLAGS="$CFLAGS -Zomf"
2181     CXXFLAGS="$CXXFLAGS -Zomf"
2182     DSO_LDOPTS='-Zdll'
2183     BIN_FLAGS='-Zlinker /ST:0x100000'
2184     IMPLIB='emximp -o'
2185     FILTER='emxexp -o'
2186     LDFLAGS='-Zmap'
2187     WARNINGS_AS_ERRORS='-Werror'
2188     MOZ_DEBUG_FLAGS="-g -fno-inline"
2189     MOZ_OPTIMIZE_FLAGS="-O2"
2190     MOZ_OPTIMIZE_LDFLAGS="-s -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2191     MOZ_XPCOM_OBSOLETE_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcomct.lib'
2192     DYNAMIC_XPCOM_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcomcor.lib'
2193     LIBXUL_LIBS='-L$(LIBXUL_DIST)/lib $(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xul.lib'
2194     TARGET_MD_ARCH=os2
2195     _PLATFORM_DEFAULT_TOOLKIT="cairo-os2"
2196     MOZ_ENABLE_POSTSCRIPT=
2197     RC=rc.exe
2198     RCFLAGS='-n'
2199     MOZ_USER_DIR="Mozilla"
2200    
2201     if test "$MOZTOOLS"; then
2202     MOZ_TOOLS_DIR=`echo $MOZTOOLS | sed -e 's|\\\\|/|g'`
2203     else
2204     AC_MSG_ERROR([MOZTOOLS is not set])
2205     fi
2206     if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2207     DSO_LDOPTS="$DSO_LDOPTS -Zhigh-mem"
2208     LDFLAGS="$LDFLAGS -Zhigh-mem"
2209     MOZ_OPTIMIZE_LDFLAGS="$MOZ_OPTIMIZE_LDFLAGS -Zhigh-mem"
2210     AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2211     fi
2212    
2213     # GCC for OS/2 currently predefines these, but we don't want them
2214     _DEFINES_CFLAGS="$_DEFINES_CFLAGS -Uunix -U__unix -U__unix__"
2215     _DEFINES_CXXFLAGS="$_DEFINES_CXXFLAGS -Uunix -U__unix -U__unix__"
2216    
2217     AC_CACHE_CHECK(for __declspec(dllexport),
2218     ac_os2_declspec,
2219     [AC_TRY_COMPILE([__declspec(dllexport) void ac_os2_declspec(void) {}],
2220     [return 0;],
2221     ac_os2_declspec="yes",
2222     ac_os2_declspec="no")])
2223     if test "$ac_os2_declspec" = "yes"; then
2224     FILTER='true'
2225     MOZ_OS2_USE_DECLSPEC='1'
2226     fi
2227     ;;
2228    
2229     alpha*-*-osf*)
2230     if test "$GNU_CC"; then
2231     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2232     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -Wl,-soname,$@ -o $@'
2233    
2234     else
2235     MOZ_DEBUG_FLAGS='-g'
2236     ASFLAGS='-I$(topsrcdir)/xpcom/reflect/xptcall/public -g'
2237     CFLAGS="$CFLAGS -ieee"
2238     CXXFLAGS="$CXXFLAGS "'-noexceptions -ieee -ptr $(DIST)/cxx_repository'
2239     DSO_LDOPTS='-shared -msym -expect_unresolved \* -update_registry $(DIST)/so_locations'
2240     DSO_CFLAGS=
2241     DSO_PIC_CFLAGS=
2242     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2243     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -soname $@ -o $@'
2244     MKSHLIB_FORCE_ALL='-all'
2245     MKSHLIB_UNFORCE_ALL='-none'
2246     dnl Might fix the libxpcom.so breakage on this platform as well....
2247     AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2248     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2249     fi
2250     if test -z "$GNU_CXX"; then
2251     COMPAQ_CXX=1
2252     fi
2253     AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2254     ;;
2255    
2256     *-qnx*)
2257     DIRENT_INO=d_stat.st_ino
2258     dnl Solves the problems the QNX compiler has with nsCOMPtr.h.
2259     AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2260     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2261     dnl Explicit set STDC_HEADERS to workaround QNX 6.0's failing of std test
2262     AC_DEFINE(STDC_HEADERS)
2263     if test "$no_x" = "yes"; then
2264     _PLATFORM_DEFAULT_TOOLKIT='photon'
2265     TK_CFLAGS='-I/usr/nto/include/photon'
2266     TK_LIBS='-lphoton -lphrender'
2267     fi
2268     ;;
2269    
2270     *-sco*)
2271     AC_DEFINE(NSCAP_DISABLE_TEST_DONTQUERY_CASES)
2272     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2273     CXXFLAGS="$CXXFLAGS -I/usr/include/CC"
2274     if test ! "$GNU_CC"; then
2275     DSO_LDOPTS='-G'
2276     fi
2277     ;;
2278    
2279     dnl the qsort routine under solaris is faulty
2280     *-solaris*)
2281     AC_DEFINE(SOLARIS)
2282     TARGET_NSPR_MDCPUCFG='\"md/_solaris.cfg\"'
2283 siliconforks 507 if test -z "$CROSS_COMPILE" && pkginfo -q SUNWpr && pkginfo -q SUNWprd; then
2284     NO_NSPR_CONFIG_SYSTEM_LDFLAGS="-L/usr/lib/mps -R/usr/lib/mps -lnspr4"
2285     NO_NSPR_CONFIG_SYSTEM_CFLAGS="-I/usr/include/mps"
2286     NO_NSPR_CONFIG_SYSTEM_VERSION=["`pkgparam SUNWpr SUNW_PRODVERS | sed -e 's/^[1-9][0-9]*\.[0-9][0-9]*$/&.0/'`"]
2287     fi
2288 siliconforks 460 SYSTEM_MAKEDEPEND=
2289     # $ORIGIN/.. is for shared libraries under components/ to locate shared
2290     # libraries one level up (e.g. libnspr4.so)
2291     LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN:\$\$ORIGIN/..'"
2292     if test "$SOLARIS_SUNPRO_CC"; then
2293     LIBS="-lCrun -lCstd $LIBS"
2294     NS_USE_NATIVE=1
2295     MOZ_FIX_LINK_PATHS=
2296     AC_DEFINE(NSCAP_DISABLE_DEBUG_PTR_TYPES)
2297     CFLAGS="$CFLAGS -xlibmieee -xstrconst -xbuiltin=%all"
2298     CXXFLAGS="$CXXFLAGS -xlibmieee -xbuiltin=%all -features=tmplife -norunpath"
2299     LDFLAGS="-xildoff -z lazyload -z combreloc $LDFLAGS"
2300     if test -z "$CROSS_COMPILE" && test -f /usr/lib/ld/map.noexstk; then
2301     _SAVE_LDFLAGS=$LDFLAGS
2302     LDFLAGS="-M /usr/lib/ld/map.noexstk $LDFLAGS"
2303     AC_TRY_LINK([#include <stdio.h>],
2304     [printf("Hello World\n");],
2305     ,
2306     [LDFLAGS=$_SAVE_LDFLAGS])
2307     fi
2308     WARNINGS_AS_ERRORS='-Werror'
2309     MOZ_OPTIMIZE_FLAGS="-xO4"
2310     MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_FLAGS) $(DSO_LDOPTS) -h $@ -o $@'
2311     MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_FLAGS) -G -z muldefs -h $@ -o $@'
2312     MKSHLIB_FORCE_ALL='-z allextract'
2313     MKSHLIB_UNFORCE_ALL='-z defaultextract'
2314     DSO_LDOPTS='-G -z muldefs'
2315     AR_LIST="$AR t"
2316     AR_EXTRACT="$AR x"
2317     AR_DELETE="$AR d"
2318     AR='$(CXX) -xar'
2319     AR_FLAGS='-o $@'
2320     AS='/usr/ccs/bin/as'
2321     ASFLAGS="$ASFLAGS -K PIC -L -P -D_ASM -D__STDC__=0"
2322     AS_DASH_C_FLAG=''
2323     TARGET_COMPILER_ABI="sunc"
2324     CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2325     CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'`
2326     AC_MSG_CHECKING([for Sun C++ compiler version >= 5.9])
2327     AC_LANG_SAVE
2328     AC_LANG_CPLUSPLUS
2329     AC_TRY_COMPILE([],
2330     [#if (__SUNPRO_CC < 0x590)
2331     #error "Denied"
2332     #endif],
2333     _BAD_COMPILER=,_BAD_COMPILER=1)
2334     if test -n "$_BAD_COMPILER"; then
2335     _res="no"
2336     AC_MSG_ERROR([Sun C++ 5.9 (Sun Studio 12) or higher is required to build. Your compiler version is $CXX_VERSION .])
2337     else
2338     _res="yes"
2339     fi
2340     AC_MSG_RESULT([$_res])
2341     AC_LANG_RESTORE
2342     else
2343     ASFLAGS="$ASFLAGS -fPIC"
2344     DSO_LDOPTS='-G'
2345     _WARNINGS_CFLAGS=''
2346     _WARNINGS_CXXFLAGS=''
2347     if test "$OS_RELEASE" = "5.3"; then
2348     AC_DEFINE(MUST_UNDEF_HAVE_BOOLEAN_AFTER_INCLUDES)
2349     fi
2350     fi
2351     if test "$OS_RELEASE" = "5.5.1"; then
2352     AC_DEFINE(NEED_USLEEP_PROTOTYPE)
2353     fi
2354     ;;
2355    
2356     *-sunos*)
2357     DSO_LDOPTS='-Bdynamic'
2358     MKSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2359     MKCSHLIB='-$(LD) $(DSO_LDOPTS) -o $@'
2360     AC_DEFINE(SUNOS4)
2361     AC_DEFINE(SPRINTF_RETURNS_STRING)
2362     case "$(target_os)" in
2363     sunos4.1*)
2364     DLL_SUFFIX='.so.1.0'
2365     ;;
2366     esac
2367     ;;
2368    
2369     *-sysv4.2uw7*)
2370     NSPR_LIBS="-lnspr$NSPR_VERSION -lplc$NSPR_VERSION -lplds$NSPR_VERSION -L/usr/ccs/lib -lcrt"
2371     ;;
2372    
2373     *-os2*)
2374     HOST_NSPR_MDCPUCFG='\"md/_os2.cfg\"'
2375     ;;
2376    
2377     esac
2378    
2379     dnl Only one oddball right now (QNX), but this gives us flexibility
2380     dnl if any other platforms need to override this in the future.
2381     AC_DEFINE_UNQUOTED(D_INO,$DIRENT_INO)
2382    
2383     dnl ========================================================
2384     dnl Any platform that doesn't have MKSHLIB_FORCE_ALL defined
2385     dnl by now will not have any way to link most binaries (tests
2386     dnl as well as viewer, apprunner, etc.), because some symbols
2387     dnl will be left out of the "composite" .so's by ld as unneeded.
2388     dnl So, by defining NO_LD_ARCHIVE_FLAGS for these platforms,
2389     dnl they can link in the static libs that provide the missing
2390     dnl symbols.
2391     dnl ========================================================
2392     NO_LD_ARCHIVE_FLAGS=
2393     if test -z "$MKSHLIB_FORCE_ALL" || test -z "$MKSHLIB_UNFORCE_ALL"; then
2394     NO_LD_ARCHIVE_FLAGS=1
2395     fi
2396     case "$target" in
2397     *-os2*)
2398     NO_LD_ARCHIVE_FLAGS=
2399     ;;
2400     *-aix4.3*|*-aix5*)
2401     NO_LD_ARCHIVE_FLAGS=
2402     ;;
2403     *-openvms*)
2404     NO_LD_ARCHIVE_FLAGS=
2405     ;;
2406     *-msvc*|*-mks*|*-mingw*|*-cygwin*|*-wince)
2407     if test -z "$GNU_CC"; then
2408     NO_LD_ARCHIVE_FLAGS=
2409     fi
2410     ;;
2411     esac
2412     AC_SUBST(NO_LD_ARCHIVE_FLAGS)
2413    
2414     dnl
2415     dnl Indicate that platform requires special thread safe
2416     dnl locking when starting up the OJI JVM
2417     dnl (see mozilla/modules/oji/src/nsJVMManager.cpp)
2418     dnl ========================================================
2419     case "$target" in
2420     *-hpux*)
2421     AC_DEFINE(MOZ_OJI_REQUIRE_THREAD_SAFE_ON_STARTUP)
2422     ;;
2423     esac
2424    
2425     dnl ========================================================
2426     dnl = Flags to strip unused symbols from .so components
2427     dnl ========================================================
2428     case "$target" in
2429     *-linux*|*-kfreebsd*-gnu)
2430     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2431     ;;
2432     *-solaris*)
2433     if test -z "$GNU_CC"; then
2434     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-M $(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2435     else
2436     if test -z "$GCC_USE_GNU_LD"; then
2437     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-M -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-mapfile'
2438     else
2439     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2440     fi
2441     fi
2442     ;;
2443     *-nto*)
2444     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2445     ;;
2446     *-darwin*)
2447     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,-exported_symbols_list -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-export-list'
2448     ;;
2449     *-cygwin*|*-mingw*|*-mks*|*-msvc|*-wince)
2450     if test -n "$GNU_CC"; then
2451     MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
2452     fi
2453     ;;
2454     esac
2455    
2456     if test -z "$COMPILE_ENVIRONMENT"; then
2457     SKIP_COMPILER_CHECKS=1
2458     SKIP_LIBRARY_CHECKS=1
2459     fi
2460    
2461     dnl Configure JIT support
2462    
2463     case "$target" in
2464     i?86-*)
2465     ENABLE_JIT=1
2466     NANOJIT_ARCH=i386
2467     ;;
2468     arm*-*)
2469     ENABLE_JIT=1
2470     NANOJIT_ARCH=ARM
2471     ;;
2472     sparc*-*)
2473     ENABLE_JIT=1
2474     NANOJIT_ARCH=Sparc
2475     ;;
2476     esac
2477    
2478     MOZ_ARG_DISABLE_BOOL(jit,
2479     [ --disable-jit Disable JIT support],
2480     ENABLE_JIT=)
2481    
2482     if test "$ENABLE_JIT"; then
2483    
2484 siliconforks 507 AC_DEFINE(FEATURE_NANOJIT)
2485     AC_DEFINE(JS_TRACER)
2486    
2487 siliconforks 460 case "$target" in
2488     i?86-*)
2489     AC_DEFINE(AVMPLUS_IA32)
2490     ;;
2491    
2492     arm*-*)
2493     AC_DEFINE(AVMPLUS_ARM)
2494     ;;
2495     sparc-*)
2496     AC_DEFINE(AVMPLUS_SPARC)
2497     ;;
2498     esac
2499    
2500     case "$target_os" in
2501     linux*)
2502     AC_DEFINE(AVMPLUS_UNIX)
2503     AC_DEFINE(AVMPLUS_LINUX)
2504     ;;
2505     darwin*)
2506     AC_DEFINE(AVMPLUS_UNIX)
2507     ;;
2508     solaris*)
2509     AC_DEFINE(AVMPLUS_UNIX)
2510     ;;
2511     freebsd*|kfreebsd*)
2512     AC_DEFINE(AVMPLUS_UNIX)
2513     ;;
2514     *cygwin*|*mingw*|*mks*|*msvc*|*wince)
2515     AC_DEFINE(AVMPLUS_WIN32)
2516     ;;
2517     *os2*)
2518     AC_DEFINE(AVMPLUS_OS2)
2519     ;;
2520     *)
2521     AC_MSG_ERROR([Unrecognized nanojit platform. Use --disable-jit to build without JIT support.])
2522     esac
2523    
2524     fi # ENABLE_JIT
2525    
2526     AC_SUBST(ENABLE_JIT)
2527     AC_SUBST(NANOJIT_ARCH)
2528    
2529     if test -z "$SKIP_COMPILER_CHECKS"; then
2530     dnl Checks for typedefs, structures, and compiler characteristics.
2531     dnl ========================================================
2532     AC_LANG_C
2533     AC_HEADER_STDC
2534     AC_C_CONST
2535     AC_TYPE_MODE_T
2536     AC_TYPE_OFF_T
2537     AC_TYPE_PID_T
2538     AC_TYPE_SIZE_T
2539     AC_STRUCT_ST_BLKSIZE
2540     AC_MSG_CHECKING(for siginfo_t)
2541     AC_CACHE_VAL(ac_cv_siginfo_t,
2542     [AC_TRY_COMPILE([#define _POSIX_C_SOURCE 199506L
2543     #include <signal.h>],
2544     [siginfo_t* info;],
2545     [ac_cv_siginfo_t=true],
2546     [ac_cv_siginfo_t=false])])
2547     if test "$ac_cv_siginfo_t" = true ; then
2548     AC_DEFINE(HAVE_SIGINFO_T)
2549     AC_MSG_RESULT(yes)
2550     else
2551     AC_MSG_RESULT(no)
2552     fi
2553    
2554     dnl Find exact-width integer types, or figure them out
2555     dnl ourselves.
2556     dnl ========================================================
2557     dnl Once this is working, we can delete the code for int16_t,
2558     dnl etc. below.
2559    
2560     AC_CHECK_HEADER(stdint.h)
2561     if test "$ac_cv_header_stdint_h" = yes; then
2562     AC_DEFINE(JS_HAVE_STDINT_H)
2563     else
2564     dnl We'll figure them out for ourselves. List more likely types
2565     dnl earlier. If we ever really encounter a size for which none of
2566     dnl the listed types are appropriate, we'll get a configure-time
2567     dnl error; just add the right answer.
2568     MOZ_N_BYTE_TYPE(JS_INT8_TYPE, 1, [char])
2569     MOZ_N_BYTE_TYPE(JS_INT16_TYPE, 2, [short int long])
2570     MOZ_N_BYTE_TYPE(JS_INT32_TYPE, 4, [int long 'long long' short])
2571     MOZ_N_BYTE_TYPE(JS_INT64_TYPE, 8, [int long 'long long'])
2572     MOZ_N_BYTE_TYPE(JS_INTPTR_TYPE, sizeof (void *),
2573     [int long 'long long' short])
2574     fi
2575    
2576     MOZ_SIZE_OF_TYPE(JS_BYTES_PER_WORD, void*, 4 8)
2577     if test "$moz_cv_size_of_JS_BYTES_PER_WORD" -eq "4"; then
2578     AC_DEFINE(JS_BITS_PER_WORD_LOG2, 5)
2579     elif test "$moz_cv_size_of_JS_BYTES_PER_WORD" -eq "8"; then
2580     AC_DEFINE(JS_BITS_PER_WORD_LOG2, 6)
2581     else
2582     AC_MSG_ERROR([Unexpected JS_BYTES_PER_WORD])
2583     fi
2584    
2585     MOZ_ALIGN_OF_TYPE(JS_ALIGN_OF_POINTER, void*, 2 4 8 16)
2586     MOZ_SIZE_OF_TYPE(JS_BYTES_PER_DOUBLE, double, 6 8 10 12 14)
2587    
2588     dnl Check for int16_t, int32_t, int64_t, int64, uint, uint_t, and uint16_t.
2589     dnl ========================================================
2590     AC_MSG_CHECKING(for int16_t)
2591     AC_CACHE_VAL(ac_cv_int16_t,
2592     [AC_TRY_COMPILE([#include <stdio.h>
2593     #include <sys/types.h>],
2594     [int16_t foo = 0;],
2595     [ac_cv_int16_t=true],
2596     [ac_cv_int16_t=false])])
2597     if test "$ac_cv_int16_t" = true ; then
2598     AC_DEFINE(HAVE_INT16_T)
2599     AC_MSG_RESULT(yes)
2600     else
2601     AC_MSG_RESULT(no)
2602     fi
2603     AC_MSG_CHECKING(for int32_t)
2604     AC_CACHE_VAL(ac_cv_int32_t,
2605     [AC_TRY_COMPILE([#include <stdio.h>
2606     #include <sys/types.h>],
2607     [int32_t foo = 0;],
2608     [ac_cv_int32_t=true],
2609     [ac_cv_int32_t=false])])
2610     if test "$ac_cv_int32_t" = true ; then
2611     AC_DEFINE(HAVE_INT32_T)
2612     AC_MSG_RESULT(yes)
2613     else
2614     AC_MSG_RESULT(no)
2615     fi
2616     AC_MSG_CHECKING(for int64_t)
2617     AC_CACHE_VAL(ac_cv_int64_t,
2618     [AC_TRY_COMPILE([#include <stdio.h>
2619     #include <sys/types.h>],
2620     [int64_t foo = 0;],
2621     [ac_cv_int64_t=true],
2622     [ac_cv_int64_t=false])])
2623     if test "$ac_cv_int64_t" = true ; then
2624     AC_DEFINE(HAVE_INT64_T)
2625     AC_MSG_RESULT(yes)
2626     else
2627     AC_MSG_RESULT(no)
2628     fi
2629     AC_MSG_CHECKING(for int64)
2630     AC_CACHE_VAL(ac_cv_int64,
2631     [AC_TRY_COMPILE([#include <stdio.h>
2632     #include <sys/types.h>],
2633     [int64 foo = 0;],
2634     [ac_cv_int64=true],
2635     [ac_cv_int64=false])])
2636     if test "$ac_cv_int64" = true ; then
2637     AC_DEFINE(HAVE_INT64)
2638     AC_MSG_RESULT(yes)
2639     else
2640     AC_MSG_RESULT(no)
2641     fi
2642     AC_MSG_CHECKING(for uint)
2643     AC_CACHE_VAL(ac_cv_uint,
2644     [AC_TRY_COMPILE([#include <stdio.h>
2645     #include <sys/types.h>],
2646     [uint foo = 0;],
2647     [ac_cv_uint=true],
2648     [ac_cv_uint=false])])
2649     if test "$ac_cv_uint" = true ; then
2650     AC_DEFINE(HAVE_UINT)
2651     AC_MSG_RESULT(yes)
2652     else
2653     AC_MSG_RESULT(no)
2654     fi
2655     AC_MSG_CHECKING(for uint_t)
2656     AC_CACHE_VAL(ac_cv_uint_t,
2657     [AC_TRY_COMPILE([#include <stdio.h>
2658     #include <sys/types.h>],
2659     [uint_t foo = 0;],
2660     [ac_cv_uint_t=true],
2661     [ac_cv_uint_t=false])])
2662     if test "$ac_cv_uint_t" = true ; then
2663     AC_DEFINE(HAVE_UINT_T)
2664     AC_MSG_RESULT(yes)
2665     else
2666     AC_MSG_RESULT(no)
2667     fi
2668     AC_MSG_CHECKING(for uint16_t)
2669     AC_CACHE_VAL(ac_cv_uint16_t,
2670     [AC_TRY_COMPILE([#include <stdio.h>
2671     #include <sys/types.h>],
2672     [uint16_t foo = 0;],
2673     [ac_cv_uint16_t=true],
2674     [ac_cv_uint16_t=false])])
2675     if test "$ac_cv_uint16_t" = true ; then
2676     AC_DEFINE(HAVE_UINT16_T)
2677     AC_MSG_RESULT(yes)
2678     else
2679     AC_MSG_RESULT(no)
2680     fi
2681    
2682     dnl On the gcc trunk (as of 2001-02-09) _GNU_SOURCE, and thus __USE_GNU,
2683     dnl are defined when compiling C++ but not C. Since the result of this
2684     dnl test is used only in C++, do it in C++.
2685     AC_LANG_CPLUSPLUS
2686    
2687     AC_MSG_CHECKING(for uname.domainname)
2688     AC_CACHE_VAL(ac_cv_have_uname_domainname_field,
2689     [AC_TRY_COMPILE([#include <sys/utsname.h>],
2690     [ struct utsname *res; char *domain;
2691     (void)uname(res); if (res != 0) { domain = res->domainname; } ],
2692     [ac_cv_have_uname_domainname_field=true],
2693     [ac_cv_have_uname_domainname_field=false])])
2694    
2695     if test "$ac_cv_have_uname_domainname_field" = "true"; then
2696     AC_DEFINE(HAVE_UNAME_DOMAINNAME_FIELD)
2697     AC_MSG_RESULT(yes)
2698     else
2699     AC_MSG_RESULT(no)
2700     fi
2701    
2702     AC_MSG_CHECKING(for uname.__domainname)
2703     AC_CACHE_VAL(ac_cv_have_uname_us_domainname_field,
2704     [AC_TRY_COMPILE([#include <sys/utsname.h>],
2705     [ struct utsname *res; char *domain;
2706     (void)uname(res); if (res != 0) { domain = res->__domainname; } ],
2707     [ac_cv_have_uname_us_domainname_field=true],
2708     [ac_cv_have_uname_us_domainname_field=false])])
2709    
2710     if test "$ac_cv_have_uname_us_domainname_field" = "true"; then
2711     AC_DEFINE(HAVE_UNAME_US_DOMAINNAME_FIELD)
2712     AC_MSG_RESULT(yes)
2713     else
2714     AC_MSG_RESULT(no)
2715     fi
2716    
2717     AC_LANG_C
2718    
2719     dnl Check for .hidden assembler directive and visibility attribute.
2720     dnl Borrowed from glibc configure.in
2721     dnl ===============================================================
2722     if test "$GNU_CC"; then
2723     AC_CACHE_CHECK(for visibility(hidden) attribute,
2724     ac_cv_visibility_hidden,
2725     [cat > conftest.c <<EOF
2726     int foo __attribute__ ((visibility ("hidden"))) = 1;
2727     EOF
2728     ac_cv_visibility_hidden=no
2729     if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2730     if egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2731     ac_cv_visibility_hidden=yes
2732     fi
2733     fi
2734     rm -f conftest.[cs]
2735     ])
2736     if test "$ac_cv_visibility_hidden" = "yes"; then
2737     AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
2738    
2739     AC_CACHE_CHECK(for visibility(default) attribute,
2740     ac_cv_visibility_default,
2741     [cat > conftest.c <<EOF
2742     int foo __attribute__ ((visibility ("default"))) = 1;
2743     EOF
2744     ac_cv_visibility_default=no
2745     if ${CC-cc} -fvisibility=hidden -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2746     if ! egrep '\.(hidden|private_extern).*foo' conftest.s >/dev/null; then
2747     ac_cv_visibility_default=yes
2748     fi
2749     fi
2750     rm -f conftest.[cs]
2751     ])
2752     if test "$ac_cv_visibility_default" = "yes"; then
2753     AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
2754    
2755     AC_CACHE_CHECK(for visibility pragma support,
2756     ac_cv_visibility_pragma,
2757     [cat > conftest.c <<EOF
2758     #pragma GCC visibility push(hidden)
2759     int foo_hidden = 1;
2760     #pragma GCC visibility push(default)
2761     int foo_default = 1;
2762     EOF
2763     ac_cv_visibility_pragma=no
2764     if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
2765     if egrep '\.(hidden|private_extern).*foo_hidden' conftest.s >/dev/null; then
2766     if ! egrep '\.(hidden|private_extern).*foo_default' conftest.s > /dev/null; then
2767     ac_cv_visibility_pragma=yes
2768     fi
2769     fi
2770     fi
2771     rm -f conftest.[cs]
2772     ])
2773     if test "$ac_cv_visibility_pragma" = "yes"; then
2774     AC_CACHE_CHECK(For gcc visibility bug with class-level attributes (GCC bug 26905),
2775     ac_cv_have_visibility_class_bug,
2776     [cat > conftest.c <<EOF
2777     #pragma GCC visibility push(hidden)
2778     struct __attribute__ ((visibility ("default"))) TestStruct {
2779     static void Init();
2780     };
2781     __attribute__ ((visibility ("default"))) void TestFunc() {
2782     TestStruct::Init();
2783     }
2784     EOF
2785     ac_cv_have_visibility_class_bug=no
2786     if ! ${CXX-g++} ${CXXFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2787     ac_cv_have_visibility_class_bug=yes
2788     else
2789     if test `egrep -c '@PLT|\\$stub' conftest.S` = 0; then
2790     ac_cv_have_visibility_class_bug=yes
2791     fi
2792     fi
2793     rm -rf conftest.{c,S}
2794     ])
2795    
2796     AC_CACHE_CHECK(For x86_64 gcc visibility bug with builtins (GCC bug 20297),
2797     ac_cv_have_visibility_builtin_bug,
2798     [cat > conftest.c <<EOF
2799     #pragma GCC visibility push(hidden)
2800     #pragma GCC visibility push(default)
2801     #include <string.h>
2802     #pragma GCC visibility pop
2803    
2804     __attribute__ ((visibility ("default"))) void Func() {
2805     char c[[100]];
2806     memset(c, 0, sizeof(c));
2807     }
2808     EOF
2809     ac_cv_have_visibility_builtin_bug=no
2810     if ! ${CC-cc} ${CFLAGS} ${DSO_PIC_CFLAGS} ${DSO_LDOPTS} -O2 -S -o conftest.S conftest.c > /dev/null 2>&1 ; then
2811     ac_cv_have_visibility_builtin_bug=yes
2812     else
2813     if test `grep -c "@PLT" conftest.S` = 0; then
2814     ac_cv_visibility_builtin_bug=yes
2815     fi
2816     fi
2817     rm -f conftest.{c,S}
2818     ])
2819     if test "$ac_cv_have_visibility_builtin_bug" = "no" -a \
2820     "$ac_cv_have_visibility_class_bug" = "no"; then
2821 siliconforks 507 VISIBILITY_FLAGS='-I$(DIST)/system_wrappers_js -include $(topsrcdir)/config/gcc_hidden.h'
2822 siliconforks 460 WRAP_SYSTEM_INCLUDES=1
2823     else
2824     VISIBILITY_FLAGS='-fvisibility=hidden'
2825     fi # have visibility pragma bug
2826     fi # have visibility pragma
2827     fi # have visibility(default) attribute
2828     fi # have visibility(hidden) attribute
2829     fi # GNU_CC
2830    
2831     # visibility hidden flag for Sun Studio on Solaris
2832     if test "$SOLARIS_SUNPRO_CC"; then
2833     VISIBILITY_FLAGS='-xldscope=hidden'
2834     fi # Sun Studio on Solaris
2835    
2836     AC_SUBST(WRAP_SYSTEM_INCLUDES)
2837     AC_SUBST(VISIBILITY_FLAGS)
2838    
2839     dnl Checks for header files.
2840     dnl ========================================================
2841     AC_HEADER_DIRENT
2842     case "$target_os" in
2843     freebsd*)
2844     # for stuff like -lXshm
2845     CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
2846     ;;
2847     esac
2848     AC_CHECK_HEADERS(sys/byteorder.h compat.h getopt.h)
2849     AC_CHECK_HEADERS(sys/bitypes.h memory.h unistd.h)
2850     AC_CHECK_HEADERS(gnu/libc-version.h nl_types.h)
2851     AC_CHECK_HEADERS(malloc.h)
2852     AC_CHECK_HEADERS(X11/XKBlib.h)
2853    
2854     dnl These are all the places some variant of statfs can be hiding.
2855     AC_CHECK_HEADERS(sys/statvfs.h sys/statfs.h sys/vfs.h sys/mount.h)
2856    
2857     dnl Try for MMX support
2858     dnl NB - later gcc versions require -mmmx for this header to be successfully
2859     dnl included (or another option which implies it, such as -march=pentium-mmx)
2860     AC_CHECK_HEADERS(mmintrin.h)
2861    
2862     dnl Check whether the compiler supports the new-style C++ standard
2863     dnl library headers (i.e. <new>) or needs the old "new.h"
2864     AC_LANG_CPLUSPLUS
2865     NEW_H=new.h
2866     AC_CHECK_HEADER(new, [NEW_H=new])
2867     AC_DEFINE_UNQUOTED(NEW_H, <$NEW_H>