Bug 575870 - Enable the firefox button on xp themed, classic, and aero basic. r=dao...
[mozilla-central.git] / nsprpub / configure.in
blob119404c567cd87bdb39e1fef55496a675675a394
1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; -*-
2 dnl 
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 the Netscape Portable Runtime (NSPR).
17 dnl
18 dnl The Initial Developer of the Original Code is
19 dnl Netscape Communications Corporation.
20 dnl Portions created by the Initial Developer are Copyright (C) 1998
21 dnl the Initial Developer. All Rights Reserved.
22 dnl
23 dnl Contributor(s):
24 dnl   Christopher Seawood <cls@seawood.org>
25 dnl   Howard Chu <hyc@symas.com>
26 dnl   Mark Mentovai <mark@moxienet.com>
27 dnl
28 dnl Alternatively, the contents of this file may be used under the terms of
29 dnl either the GNU General Public License Version 2 or later (the "GPL"), or
30 dnl the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
31 dnl in which case the provisions of the GPL or the LGPL are applicable instead
32 dnl of those above. If you wish to allow use of your version of this file only
33 dnl under the terms of either the GPL or the LGPL, and not to allow others to
34 dnl use your version of this file under the terms of the MPL, indicate your
35 dnl decision by deleting the provisions above and replace them with the notice
36 dnl and other provisions required by the GPL or the LGPL. If you do not delete
37 dnl the provisions above, a recipient may use your version of this file under
38 dnl the terms of any one of the MPL, the GPL or the LGPL.
39 dnl
40 dnl ***** END LICENSE BLOCK *****
42 AC_PREREQ(2.12)
43 AC_INIT(config/libc_r.h)
45 AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
46 AC_CANONICAL_SYSTEM
48 dnl ========================================================
49 dnl = Defaults
50 dnl ========================================================
51 MOD_MAJOR_VERSION=4
52 MOD_MINOR_VERSION=8
53 MOD_PATCH_VERSION=6
54 NSPR_MODNAME=nspr20
55 _HAVE_PTHREADS=
56 USE_PTHREADS=
57 USE_USER_PTHREADS=
58 USE_NSPR_THREADS=
59 USE_N32=
60 USE_64=
61 USE_CPLUS=
62 USE_IPV6=
63 USE_MDUPDATE=
64 _MACOSX_DEPLOYMENT_TARGET=
65 _OPTIMIZE_FLAGS=-O
66 _DEBUG_FLAGS=-g
67 MOZ_DEBUG=1
68 MOZ_OPTIMIZE=
69 OBJDIR='$(OBJDIR_NAME)'
70 OBJDIR_NAME=.
71 OBJDIR_SUFFIX=OBJ
72 NSINSTALL='$(MOD_DEPTH)/config/$(OBJDIR_NAME)/nsinstall'
73 NOSUCHFILE=/no-such-file
74 LIBNSPR='-L$(dist_libdir) -lnspr$(MOD_MAJOR_VERSION)'
75 LIBPLC='-L$(dist_libdir) -lplc$(MOD_MAJOR_VERSION)'
76 CYGWIN_WRAPPER=
77 MACOS_SDK_DIR=
78 NEXT_ROOT=
79 MT=
80 MOZ_OS2_HIGH_MEMORY=1
81 MOZ_THUMB2=
82 PROFILE_GEN_CFLAGS=
83 PROFILE_GEN_LDFLAGS=
84 PROFILE_USE_CFLAGS=
85 PROFILE_USE_LDFLAGS=
87 dnl Link in libraries necessary to resolve all symbols for shared libs
88 RESOLVE_LINK_SYMBOLS=
90 dnl ========================================================
91 dnl =
92 dnl = Dont change the following lines.  Doing so breaks:
93 dnl =
94 dnl = CFLAGS="-foo" ./configure
95 dnl =
96 dnl ========================================================
97 CFLAGS="${CFLAGS=}"
98 CXXFLAGS="${CXXFLAGS=}"
99 LDFLAGS="${LDFLAGS=}"
100 DLLFLAGS="${DLLFLAGS=}"
101 HOST_CFLAGS="${HOST_CFLAGS=}"
102 HOST_LDFLAGS="${HOST_LDFLAGS=}"
104 case "$target" in
105 *-cygwin*|*-mingw*)
106     # Check to see if we are really running in a msvc environemnt
107     _WIN32_MSVC=
108     AC_CHECK_PROGS(CC, cl)
109     if test "$CC" = "cl"; then
110         echo 'main() { return 0; }' > dummy.c
111         ${CC} -o dummy dummy.c >/dev/null 2>&1
112         if test $? = 0; then
113             _WIN32_MSVC=1
114             CXX=$CC
115         else
116             AC_MSG_WARN([$(CC) test failed.  Using normal feature tests])
117         fi
118         rm -f dummy dummy.o dummy.obj dummy.exe dummy.c
119     fi
120     ;;
121 *-msvc*)
122     _WIN32_MSVC=1
123     ;;
124 *-mks*)
125     _WIN32_MSVC=1
126     ;;
127 esac
129 if test -n "$_WIN32_MSVC"; then
130     SKIP_PATH_CHECKS=1
131     SKIP_COMPILER_CHECKS=1
132     SKIP_LIBRARY_CHECKS=1
135 dnl ========================================================
136 dnl = Android uses a very custom (hacky) toolchain; we need to do this
137 dnl = here, so that the compiler checks can succeed
138 dnl ========================================================
140 AC_ARG_WITH(android-ndk,
141 [  --with-android-ndk=DIR
142                       location where the Android NDK can be found],
143     android_ndk=$withval)
145 AC_ARG_WITH(android-toolchain,
146 [  --with-android-toolchain=DIR
147                             location of the android toolchain, default NDK/build/prebuilt/HOST/arm-eabi-4.4.0],
148     android_toolchain=$withval)
150 AC_ARG_WITH(android-platform,
151 [  --with-android-platform=DIR
152                            location of platform dir, default NDK/build/platforms/android-5/arch-arm],
153     android_platform=$withval)
155 if test "$target" = "arm-android-eabi" ; then
156     if test -z "$android_ndk" ; then
157        AC_MSG_ERROR([You must specify --with-android-ndk=/path/to/ndk when targeting Android.])
158     fi
160     if test -z "$android_toolchain" ; then
161        android_toolchain="$android_ndk"/build/prebuilt/`uname -s | tr "[[:upper:]]" "[[:lower:]]"`-x86/arm-eabi-4.4.0
162     fi
164     if test -z "$android_platform" ; then
165        android_platform="$android_ndk"/build/platforms/android-5/arch-arm
166     fi
168     dnl set up compilers
169     AS="$android_toolchain"/bin/arm-eabi-as
170     CC="$android_toolchain"/bin/arm-eabi-gcc
171     CXX="$android_toolchain"/bin/arm-eabi-g++
172     CPP="$android_toolchain"/bin/arm-eabi-cpp
173     LD="$android_toolchain"/bin/arm-eabi-ld
174     AR="$android_toolchain"/bin/arm-eabi-ar
175     RANLIB="$android_toolchain"/bin/arm-eabi-ranlib
176     STRIP="$android_toolchain"/bin/arm-eabi-strip
178     CPPFLAGS="-I$android_platform/usr/include $CPPFLAGS"
179     CFLAGS="-mandroid -I$android_platform/usr/include -msoft-float -fno-short-enums -fno-exceptions $CFLAGS"
180     CXXFLAGS="-mandroid -I$android_platform/usr/include -msoft-float -fpic -fno-short-enums -fno-exceptions $CXXFLAGS"
181     LDFLAGS="-mandroid -L$android_platform/usr/lib -Wl,-rpath-link=$android_platform/usr/lib --sysroot=$android_platform $LDFLAGS"
183     dnl prevent cross compile section from using these flags as host flags
184     if test -z "$HOST_CPPFLAGS" ; then
185         HOST_CPPFLAGS=" "
186     fi
187     if test -z "$HOST_CFLAGS" ; then
188         HOST_CFLAGS=" "
189     fi
190     if test -z "$HOST_CXXFLAGS" ; then
191         HOST_CXXFLAGS=" "
192     fi
193     if test -z "$HOST_LDFLAGS" ; then
194         HOST_LDFLAGS=" "
195     fi
197     AC_DEFINE(ANDROID)
200 dnl ========================================================
201 dnl =
202 dnl = Check options that may affect the compiler
203 dnl =
204 dnl ========================================================
205 dist_prefix='${MOD_DEPTH}/dist'
206 dist_bindir='${dist_prefix}/bin'
207 dist_includedir='${dist_prefix}/include/nspr'
208 dist_libdir='${dist_prefix}/lib'
209 dnl If the --includedir option was not specified, add '/nspr' to autoconf's
210 dnl default value of includedir.
211 if test "${includedir}" = '${prefix}/include'; then
212     includedir='${prefix}/include/nspr'
215 AC_ARG_WITH(dist-prefix,
216     [  --with-dist-prefix=DIST_PREFIX
217                           place build files in DIST_PREFIX [dist]],
218     dist_prefix=$withval)
220 AC_ARG_WITH(dist-bindir,
221     [  --with-dist-bindir=DIR  build execuatables in DIR [DIST_PREFIX/bin]],
222     dist_bindir=$withval)
224 AC_ARG_WITH(dist-includedir,
225     [  --with-dist-includedir=DIR
226                           build include files in DIR [DIST_PREFIX/include/nspr]],
227     dist_includedir=$withval)
229 AC_ARG_WITH(dist-libdir,
230     [  --with-dist-libdir=DIR  build library files in DIR [DIST_PREFIX/lib]],
231     dist_libdir=$withval)
233 AC_SUBST(dist_prefix)
234 AC_SUBST(dist_bindir)
235 AC_SUBST(dist_includedir)
236 AC_SUBST(dist_libdir)
238 dnl Check if NSPR is being compiled for Mozilla
239 dnl Let --with-arg override environment setting
241 AC_ARG_WITH(mozilla,
242     [  --with-mozilla          Compile NSPR with Mozilla support],
243     [   if test "$withval" = "yes"; then
244             AC_DEFINE(MOZILLA_CLIENT)
245             MOZILLA_CLIENT=1
246             else
247                 MOZILLA_CLIENT=
248             fi],
249     [   if test -n "$MOZILLA_CLIENT"; then
250                 AC_DEFINE(MOZILLA_CLIENT)
251             fi])
253 AC_ARG_ENABLE(optimize,
254     [  --enable-optimize[=OPT] Enable code optimizations (ie. -O2) ],
255     [ if test "$enableval" != "no"; then
256           MOZ_OPTIMIZE=1
257           if test -n "$enableval" -a "$enableval" != "yes"; then
258             _OPTIMIZE_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
259             _SAVE_OPTIMIZE_FLAGS=$_OPTIMIZE_FLAGS
260           fi
261       else
262           MOZ_OPTIMIZE=
263       fi ])
265 AC_ARG_ENABLE(debug,
266     [  --enable-debug[=DBG]    Enable debugging (using compiler flags DBG)],
267     [ if test "$enableval" != "no"; then
268           MOZ_DEBUG=1
269           MOZ_DEBUG_SYMBOLS=1
270           if test -n "$enableval" -a "$enableval" != "yes"; then
271               _DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
272               _SAVE_DEBUG_FLAGS=$_DEBUG_FLAGS
273           fi
274       else
275           MOZ_DEBUG=
276       fi ],
277       MOZ_DEBUG_SYMBOLS=1)
279 AC_ARG_ENABLE(debug-symbols,
280     [  --enable-debug-symbols[=DBG]    Enable debugging symbols
281                                        (using compiler flags DBG)],
282     [ if test "$enableval" != "no"; then
283           MOZ_DEBUG_SYMBOLS=1
284           if test -n "$enableval" -a "$enableval" != "yes"; then
285               if test -z "$_SAVE_DEBUG_FLAGS"; then
286                   _DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
287                   _SAVE_DEBUG_FLAGS=$_DEBUG_FLAGS
288               else
289                   AC_MSG_ERROR([--enable-debug-symbols flags cannot be used with --enable-debug flags])
290               fi
291           fi
292       else
293           MOZ_DEBUG_SYMBOLS=
294       fi ])
296 AC_ARG_ENABLE(win32-target,
297     [  --enable-win32-target=\$t
298                           Specify win32 flavor. (WIN95 or WINNT)],
299     OS_TARGET=`echo $enableval | tr a-z A-Z`)
301 AC_ARG_ENABLE(symbian-target,
302     [  --enable-symbian-target=\$t
303                           Specify symbian flavor. (WINSCW or GCCE)],
304     OS_TARGET=`echo $enableval | tr a-z A-Z`)
306 AC_ARG_ENABLE(debug-rtl,
307     [  --enable-debug-rtl      Use the MSVC debug runtime library],
308     [ if test "$enableval" = "yes"; then
309             USE_DEBUG_RTL=1
310       fi ])
312 AC_ARG_ENABLE(n32,
313     [  --enable-n32            Enable n32 ABI support (IRIX only)],
314     [ if test "$enableval" = "yes"; then
315         USE_N32=1
316       else if test "$enableval" = "no"; then
317         USE_N32=
318       fi
319     fi ])
321 AC_ARG_ENABLE(64bit,
322     [  --enable-64bit          Enable 64-bit support (on certain platforms)],
323     [ if test "$enableval" = "yes"; then
324             USE_64=1
325       fi ])
327 AC_ARG_ENABLE(mdupdate,
328     [  --enable-mdupdate       Enable use of certain compilers' mdupdate feature],
329     [ if test "$enableval" = "yes"; then
330             USE_MDUPDATE=1
331       fi ])
333 AC_ARG_ENABLE(cplus,
334     [  --enable-cplus          Enable some c++ api routines],
335     [ if test "$enableval" = "yes"; then
336             USE_CPLUS=1
337       fi]) 
339 AC_ARG_WITH(arm-kuser,
340     [  --with-arm-kuser        Use kuser helpers (Linux/ARM only)
341                           (Requires kernel 2.6.13 or later)],
342     [ if test "$withval" = "yes"; then
343             AC_DEFINE(_PR_ARM_KUSER)
344       fi ])
346 dnl ========================================================
347 dnl = Mac OS X SDK support
348 dnl ========================================================
349 AC_ARG_WITH(macos-sdk,
350     [  --with-macos-sdk=dir    Location of platform SDK to use (Mac OS X only)],
351     MACOS_SDK_DIR=$withval)
353 AC_ARG_ENABLE(macos-target,
354              [  --enable-macos-target=VER
355                           Set the minimum MacOS version needed at runtime
356                           [10.2 for ppc, 10.4 for x86]],
357              [_MACOSX_DEPLOYMENT_TARGET=$enableval])
359 dnl ========================================================
360 dnl =
361 dnl = Set the threading model
362 dnl =
363 dnl ========================================================
364 case "$target" in
366 *-aix*)
367     case "${target_os}" in
368     aix3.2*)
369         USE_NSPR_THREADS=1
370         ;;
371     *)
372         USE_PTHREADS=1
373         ;;
374     esac
375     ;;
377 esac
379 dnl ========================================================
380 dnl =
381 dnl = Set the default C compiler
382 dnl =
383 dnl ========================================================
384 if test -z "$CC"; then
385     case "$target" in
387     *-aix*)
388         if test -z "$USE_NSPR_THREADS"; then
389             CC=xlc_r
390         else
391             CC=xlc
392         fi
393     ;;
395     *-hpux*)
396         CC=cc
397     ;;
399     *-irix*)
400         CC=cc
401     ;;
403     *-osf*)
404         CC=cc
405     ;;
407     *-solaris*)
408         CC=cc
409     ;;
411     esac
414 dnl ========================================================
415 dnl =
416 dnl = Set the default C++ compiler
417 dnl =
418 dnl ========================================================
419 if test -z "$CXX"; then
420     case "$target" in
422     *-aix*)
423         if test -z "$USE_NSPR_THREADS"; then
424             CXX=xlC_r
425         else
426             CXX=xlC
427         fi
428     ;;
430     *-hpux*)
431         case "${target_os}" in
432         hpux10.30)
433             CXX=aCC
434             ;;
435         hpux11.*)
436             CXX=aCC
437             ;;
438         *)
439             CXX=CC
440             ;;
441         esac
442     ;;
444     *-irix*)
445         CXX=CC
446     ;;
448     *-osf*)
449         CXX=cxx
450     ;;
452     *-solaris*)
453         CXX=CC
454     ;;
456     esac
459 if test -z "$SKIP_PATH_CHECKS"; then
460     AC_PATH_PROG(WHOAMI, $WHOAMI whoami, echo not_whoami)
463 if test -n "$MOZ_DEBUG"; then
464     AC_DEFINE(DEBUG)
465     DEFINES="$DEFINES -UNDEBUG"
467     case "${target_os}" in
468     beos*)
469         DEFINES="$DEFINES -DDEBUG_${USER}"
470         ;;
471     msvc*|mks*|cygwin*|mingw*|wince*|winmo*|os2*)
472         DEFINES="$DEFINES -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
473         ;;
474     *) 
475         DEFINES="$DEFINES -DDEBUG_`$WHOAMI`"
476         ;;
477     esac
478 else
479     AC_DEFINE(NDEBUG)
480     DEFINES="$DEFINES -UDEBUG"
483 if test -z "$SKIP_COMPILER_CHECKS"; then
484 dnl ========================================================
485 dnl Checks for compilers.
486 dnl ========================================================
487 if test "$target" != "$host"; then
488     echo "cross compiling from $host to $target"
489     cross_compiling=yes
491     _SAVE_CC="$CC"
492     _SAVE_CFLAGS="$CFLAGS"
493     _SAVE_LDFLAGS="$LDFLAGS"
495     AC_MSG_CHECKING([for $host compiler])
496     AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc, "")
497     if test -z "$HOST_CC"; then
498         AC_MSG_ERROR([no acceptable cc found in \$PATH])
499     fi
500     AC_MSG_RESULT([$HOST_CC])
501     if test -z "$HOST_CFLAGS"; then
502         HOST_CFLAGS="$CFLAGS"
503     fi
504     if test -z "$HOST_LDFLAGS"; then
505         HOST_LDFLAGS="$LDFLAGS"
506     fi
508     CC="$HOST_CC"
509     CFLAGS="$HOST_CFLAGS"
510     LDFLAGS="$HOST_LDFLAGS"
512     AC_MSG_CHECKING([whether the $host compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
513     AC_TRY_COMPILE([], [return(0);], 
514         [ac_cv_prog_host_cc_works=1 AC_MSG_RESULT([yes])],
515         AC_MSG_ERROR([installation or configuration problem: $host compiler $HOST_CC cannot create executables.]) )
517     CC=$_SAVE_CC
518     CFLAGS=$_SAVE_CFLAGS
519     LDFLAGS=$_SAVE_LDFLAGS
521     case "$build:$target" in 
522       powerpc-apple-darwin8*:i?86-apple-darwin*)
523         dnl The Darwin cross compiler doesn't necessarily point itself at a
524         dnl root that has libraries for the proper architecture, it defaults
525         dnl to the system root.  The libraries in the system root on current
526         dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
527         dnl checks will fail.  Fake a working SDK in that case.
528         _SAVE_CFLAGS=$CFLAGS 
529         _SAVE_CXXFLAGS=$CXXLAGS
530         CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CFLAGS"
531         CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CXXFLAGS"
532         ;;        
533     esac            
535     AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", echo)
536     unset ac_cv_prog_CC
537     AC_PROG_CC
538     if test -n "$USE_CPLUS"; then
539         AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", echo)
540         unset ac_cv_prog_CXX
541         AC_PROG_CXX
542     fi
544     case "$build:$target" in
545       powerpc-apple-darwin8*:i?86-apple-darwin*)
546         dnl Revert the changes made above.  From this point on, the target
547         dnl compiler will never be used without applying the SDK to CFLAGS
548         dnl (see --with-macos-sdk below).
549         CFLAGS=$_SAVE_CFLAGS
550         CXXFLAGS=$_SAVE_CXXFLAGS
551         ;;
552     esac
554     AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", echo)
555     AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", echo)
556     AC_CHECK_PROGS(AS, $AS "${target_alias}-as" "${target}-as", echo)
557     AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", echo)
558     AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", echo)
559     AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", echo)
561 else
562     AC_PROG_CC
563     if test -n "$USE_CPLUS"; then
564         if test "$CC" = "cl" -a -z "$CXX"; then
565             CXX=$CC
566         else        
567             AC_PROG_CXX
568         fi
569     fi
570     AC_PROG_CPP
571     AC_PROG_RANLIB
572     AC_PATH_PROGS(AS, as, $CC)
573     AC_PATH_PROGS(AR, ar, echo not_ar)
574     AC_PATH_PROGS(LD, ld link, echo not_ld)
575     AC_PATH_PROGS(STRIP, strip, echo not_strip)
576     AC_PATH_PROGS(WINDRES, windres, echo not_windres)
577     if test -z "$HOST_CC"; then
578         HOST_CC="$CC"
579     fi
580     if test -z "$HOST_CFLAGS"; then
581         HOST_CFLAGS="$CFLAGS"
582     fi
585 if test "$GCC" = "yes"; then
586     GNU_CC=1
588 if test "$GXX" = "yes"; then
589     GNU_CXX=1
591 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
592     GNU_AS=1
594 rm -f a.out
596 case "$build:$target" in
597     i?86-apple-darwin*:powerpc-apple-darwin*)
598         dnl cross_compiling will have erroneously been set to "no" in this
599         dnl case, because the x86 build host is able to run ppc code in a
600         dnl translated environment, making a cross compiler appear native.
601         cross_compiling=yes
602         ;;
603 esac
605 if test "$cross_compiling"  = "yes"; then
606     CROSS_COMPILE=1
607 else
608     CROSS_COMPILE=
611 dnl ========================================================
612 dnl Check for gcc -pipe support
613 dnl ========================================================
614 AC_MSG_CHECKING([for gcc -pipe support])
615 if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
616     echo '#include <stdio.h>' > dummy-hello.c
617     echo 'int main() { printf("Hello World\n"); return 0; }' >> dummy-hello.c
618     ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
619     cat dummy-hello.s | ${AS} -o dummy-hello.S - 2>&5
620     if test $? = 0; then
621         _res_as_stdin="yes"
622     else
623         _res_as_stdin="no"
624     fi
625     if test "$_res_as_stdin" = "yes"; then
626         _SAVE_CFLAGS=$CFLAGS
627         CFLAGS="$CFLAGS -pipe"
628         AC_TRY_COMPILE( [ #include <stdio.h> ],
629             [printf("Hello World\n");],
630             [_res_gcc_pipe="yes"],
631             [_res_gcc_pipe="no"] )
632         CFLAGS=$_SAVE_CFLAGS
633     fi
634     if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then
635         _res="yes";
636         CFLAGS="$CFLAGS -pipe"
637         CXXFLAGS="$CXXFLAGS -pipe"
638     else
639         _res="no"
640     fi
641     rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
642     AC_MSG_RESULT([$_res])
643 else
644     AC_MSG_RESULT([no])
647 dnl ========================================================
648 dnl Profile guided optimization
649 dnl ========================================================
650 dnl Test for profiling options
651 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
653 _SAVE_CFLAGS="$CFLAGS"
654 CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
656 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
657 AC_TRY_COMPILE([], [return 0;],
658                [ PROFILE_GEN_CFLAGS="-fprofile-generate"
659                  result="yes" ], result="no")
660 AC_MSG_RESULT([$result])
662 if test $result = "yes"; then
663    PROFILE_GEN_LDFLAGS="-fprofile-generate"
664    PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch -freorder-blocks-and-partition"
665    PROFILE_USE_LDFLAGS="-fprofile-use"
668 CFLAGS="$_SAVE_CFLAGS"
670 dnl ===============================================================
671 dnl Check for .hidden assembler directive and visibility attribute.
672 dnl Borrowed from glibc configure.in
673 dnl ===============================================================
674 if test "$GNU_CC"; then
675     AC_CACHE_CHECK(for visibility(hidden) attribute,
676         ac_cv_visibility_hidden,
677         [cat > conftest.c <<EOF
678         int foo __attribute__ ((visibility ("hidden"))) = 1;
680         ac_cv_visibility_hidden=no
681         if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
682             if grep '\.hidden.*foo' conftest.s >/dev/null; then
683                 ac_cv_visibility_hidden=yes
684             fi
685         fi
686         rm -f conftest.[cs]
687         ])
688     if test "$ac_cv_visibility_hidden" = "yes"; then
689         AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
690         AC_CACHE_CHECK(for visibility pragma support,
691             ac_cv_visibility_pragma,
692             [cat > conftest.c <<EOF
693 #pragma GCC visibility push(hidden)
694             int foo_hidden = 1;
695 #pragma GCC visibility push(default)
696             int foo_default = 1;
698             ac_cv_visibility_pragma=no
699             if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
700                 if grep '\.hidden.*foo_hidden' conftest.s >/dev/null; then
701                     if ! grep '\.hidden.*foo_default' conftest.s > /dev/null; then
702                         ac_cv_visibility_pragma=yes
703                     fi
704                 fi
705             fi
706             rm -f conftest.[cs]
707             ])
708         if test "$ac_cv_visibility_pragma" = "yes"; then
709             AC_DEFINE(HAVE_VISIBILITY_PRAGMA)
710             # To work around a build problem on Linux x86-64 (Bugzilla bug
711             # 293438), we use the -fvisibility=hidden flag.  This flag is less
712             # optimal than #pragma GCC visibility push(hidden) because the flag
713             # assumes that symbols defined outside the current source file have
714             # the default visibility.  This has the advantage that we don't need
715             # to wrap system header files, but has the disadvantage that calls
716             # to hidden symbols defined in other source files cannot be
717             # optimized by the compiler.  The -fvisibility=hidden flag does
718             # hide and export symbols correctly.
719             #VISIBILITY_FLAGS='-I$(dist_includedir)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
720             #WRAP_SYSTEM_INCLUDES=1
721             VISIBILITY_FLAGS="-fvisibility=hidden"
722             WRAP_SYSTEM_INCLUDES=
723         fi
724     fi
725 fi # GNU_CC
727 fi # SKIP_COMPILER_CHECKS
729 dnl ========================================================
730 dnl Checks for programs.
731 dnl ========================================================
732 if test -z "$SKIP_PATH_CHECKS"; then
733     AC_PATH_PROGS(PERL, perl5 perl, echo not_perl)
734 elif test -z "$PERL"; then
735     PERL=perl
738 dnl ========================================================
739 dnl Default platform specific options
740 dnl ========================================================
741 OBJ_SUFFIX=o
742 LIB_SUFFIX=a
743 DLL_SUFFIX=so
744 ASM_SUFFIX=s
745 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
746 PR_MD_ASFILES=
747 PR_MD_CSRCS=
748 PR_MD_ARCH_DIR=unix
749 AR_FLAGS='cr $@'
750 AS='$(CC)'
751 ASFLAGS='$(CFLAGS)'
753 if test -n "$CROSS_COMPILE"; then
754     OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
755     OS_RELEASE=
756     OS_TEST="${target_cpu}"
757     case "${target_os}" in
758         linux*)       OS_ARCH=Linux ;;
759         solaris*)     OS_ARCH=SunOS OS_RELEASE=5 ;;
760         mingw*)       OS_ARCH=WINNT ;;
761         wince*)       OS_ARCH=WINCE ;;
762         winmo*)       OS_ARCH=WINCE ;;
763         darwin*)      OS_ARCH=Darwin ;;
764         riscos*)      OS_ARCH=RISCOS ;;
765     esac
766 else
767     OS_ARCH=`uname -s | sed -e 's|/|_|g'`
768     OS_RELEASE=`uname -r`
769     OS_TEST=`uname -m`
772 if test "$OS_ARCH" = "IRIX64"; then
773     OS_ARCH=IRIX
776 if test "$OS_ARCH" = "AIX"; then
777     OS_RELEASE=`uname -v`.`uname -r`
780 if test "$OS_ARCH" = "FreeBSD"; then
781     OS_RELEASE=`echo $OS_RELEASE | sed 's/-.*//'`
784 if test "$OS_ARCH" = "Linux"; then
785     OS_RELEASE=`echo $OS_RELEASE | sed 's/-.*//'`
786     OS_RELEASE=`echo $OS_RELEASE | awk -F\. '{ print $1 "." $2 }'`
789 #######################################################################
790 # Master "Core Components" macros for getting the OS target           #
791 #######################################################################
794 # Note: OS_TARGET should be specified on the command line for gmake.
795 # When OS_TARGET=WIN95 is specified, then a Windows 95 target is built.
796 # The difference between the Win95 target and the WinNT target is that
797 # the WinNT target uses Windows NT specific features not available
798 # in Windows 95. The Win95 target will run on Windows NT, but (supposedly)
799 # at lesser performance (the Win95 target uses threads; the WinNT target
800 # uses fibers).
802 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
803 # cross-compilation.
807 # The following hack allows one to build on a WIN95 machine (as if
808 # s/he were cross-compiling on a WINNT host for a WIN95 target).
809 # It also accomodates for MKS's uname.exe.  If you never intend
810 # to do development on a WIN95 machine, you don't need this hack.
812 case "$OS_ARCH" in
813 WIN95)
814     OS_ARCH=WINNT
815     OS_TARGET=WIN95
816     ;;
817 Windows_95)
818     OS_ARCH=Windows_NT
819     OS_TARGET=WIN95
820     ;;
821 Windows_98)
822     OS_ARCH=Windows_NT
823     OS_TARGET=WIN95
824     ;;
825 CYGWIN_9*|CYGWIN_ME*)
826     OS_ARCH='CYGWIN_NT-4.0'
827     OS_TARGET=WIN95
828     ;;
829 OS_2)
830     OS_ARCH=OS2
831     OS_TARGET=OS2
832     ;;
833 esac
836 # On WIN32, we also define the variable CPU_ARCH.
839 case "$OS_ARCH" in
840 WINNT)
841     CPU_ARCH=`uname -p`
842     if test "$CPU_ARCH" = "I386"; then
843         CPU_ARCH=x86
844     fi
845     ;;
846 Windows_NT)
848 # If uname -s returns "Windows_NT", we assume that we are using
849 # the uname.exe in MKS toolkit.
851 # The -r option of MKS uname only returns the major version number.
852 # So we need to use its -v option to get the minor version number.
853 # Moreover, it doesn't have the -p option, so we need to use uname -m.
855     OS_ARCH=WINNT
856     OS_MINOR_RELEASE=`uname -v`
857     if test "$OS_MINOR_RELEASE" = "00"; then
858         OS_MINOR_RELEASE=0
859     fi
860     OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
861     CPU_ARCH=`uname -m`
862     #
863     # MKS's uname -m returns "586" on a Pentium machine.
864     #
865     if echo "$CPU_ARCH" | grep -c 86 >/dev/null; then
866         CPU_ARCH=x86
867     fi
868     ;;
869 CYGWIN_NT*|MINGW*_NT*)
871 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
872 # the uname.exe in the Cygwin tools.
873 # If uname -s returns MINGW32_NT-5.1, we assume that we are using
874 # the uname.exe in the MSYS tools.
876     OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
877     OS_ARCH=WINNT
878     CPU_ARCH=`uname -m`
879     #
880     # Cygwin's uname -m returns "i686" on a Pentium Pro machine.
881     #
882     if echo "$CPU_ARCH" | grep -c 86 >/dev/null; then
883         CPU_ARCH=x86
884     fi
885     ;;
886 esac
888 if test -n "$MOZILLA_CLIENT" && test "$OS_ARCH" = "WINNT"; then
889     OS_TARGET=WIN95
890     if test -n "$MOZ_DEBUG"; then
891         USE_DEBUG_RTL=1
892     fi
894 if test -z "$OS_TARGET"; then
895     OS_TARGET=$OS_ARCH
897 if test "$OS_TARGET" = "WIN95"; then
898     OS_RELEASE="4.0"
900 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
902 dnl ========================================================
903 dnl Enable high-memory support on OS/2 by default.
904 dnl ========================================================
905 AC_ARG_ENABLE(os2-high-mem,
906     [  --disable-os2-high-mem  Disable high-memory support on OS/2],
907     [ if test "$enableval" = "no"; then
908         MOZ_OS2_HIGH_MEMORY=
909       else
910         MOZ_OS2_HIGH_MEMORY=1
911       fi ])
913 dnl ========================================================
914 dnl = Enable building the Thumb2 instruction set
915 dnl ========================================================
916 AC_ARG_ENABLE(thumb2,
917  [  --enable-thumb2              Enable Thumb2 instruction set],
918  [ if test "$enableval" = "yes"; then
919      MOZ_THUMB2=1,
920    fi ])
922 if test -n "$MOZ_THUMB2"; then
923   case "$target_cpu" in
924     arm*)
925       if test "$GNU_CC"; then
926         CFLAGS="$CFLAGS -march=armv7-a -mthumb -Wa, -march=armv7-a -Wa, -mthumb"
927         CXXFLAGS="$CXXFLAGS -march=armv7-a -mthumb -Wa, -march=armv7-a -Wa, -mthumb"
928         ASFLAGS="$ASFLAGS -march=armv7-a -mthumb"
929       else
930         AC_MSG_ERROR([--enable-thumb2 is not supported for non-GNU toolchains])
931       fi
932     ;;
933     *)
934       AC_MSG_ERROR([--enable-thumb2 is not supported for non-ARM CPU architectures])
935     ;;
936   esac
939 dnl ========================================================
940 dnl Override of system specific host options
941 dnl ========================================================
942 case "$host" in
943 *-mingw*)
944     NSINSTALL=nsinstall
945     ;;
946 *-cygwin*|*-msvc*|*-mks*|*-wince*|*-winmo*)
947     NSINSTALL='$(CYGWIN_WRAPPER) nsinstall'
948     if test `echo "${PATH}" | grep -c \;` = 0; then
949         CYGWIN_WRAPPER='sh $(topsrcdir)/build/cygwin-wrapper'
950     fi
951     ;;
952 *-beos*)
953     HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE"
954     ;;
955 *os2*)
956     ;;
958     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
959     ;;
960 esac
962 dnl ========================================================
963 dnl Override of system specific target options
964 dnl ========================================================
965 case "$target" in
967 *-aix*)
968     AC_DEFINE(XP_UNIX)
969     AC_DEFINE(AIX)
970     AC_DEFINE(SYSV)
971     DSO_LDOPTS='-brtl -bnortllib -bM:SRE -bnoentry -bexpall -blibpath:/usr/lib:/lib'
972     AC_CHECK_HEADER(sys/atomic_op.h, AC_DEFINE(AIX_HAVE_ATOMIC_OP_H))
973     case "${target_os}" in
974     aix3.2*)
975         AC_DEFINE(AIX_RENAME_SELECT)
976         AC_DEFINE(_PR_NO_LARGE_FILES)
977         AIX_LINK_OPTS='-bnso -berok'
978         PR_MD_ASFILES=os_AIX.s
979         ;;
980     aix4.1*)
981         AC_DEFINE(AIX_TIMERS)
982         AC_DEFINE(_PR_NO_LARGE_FILES)
983         AC_DEFINE(AIX4_1)
984         MKSHLIB=
985         DSO_LDOPTS=
986         AIX_LINK_OPTS='-bnso -berok'
987         LIBNSPR='-L$(dist_libdir) -lnspr$(MOD_MAJOR_VERSION)_shr'
988         LIBPLC='-L$(dist_libdir) -lplc$(MOD_MAJOR_VERSION)_shr'
989         ;;
990     aix4.2*)
991         AC_DEFINE(AIX_TIMERS)
992         AC_DEFINE(_PR_HAVE_OFF64_T)
993         AIX_LINK_OPTS='-brtl -bnso -berok'
994         ;;
995     aix4.3*)
996         AC_DEFINE(AIX_TIMERS)
997         AC_DEFINE(_PR_HAVE_OFF64_T)
998         AC_DEFINE(AIX4_3_PLUS)
999         AC_DEFINE(HAVE_SOCKLEN_T)
1000         AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
1001         USE_IPV6=1
1002         AIX_LINK_OPTS='-brtl -bnso -berok'
1003         ;;
1004     *)
1005         AC_DEFINE(AIX_TIMERS)
1006         AC_DEFINE(_PR_HAVE_OFF64_T)
1007         AC_DEFINE(AIX4_3_PLUS)
1008         AC_DEFINE(HAVE_SOCKLEN_T)
1009         AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
1010         USE_IPV6=1
1011         AIX_LINK_OPTS='-brtl -bnso -berok'
1012         ;;
1013     esac
1014     CFLAGS="$CFLAGS -qro -qroconst"
1015     AIX_WRAP='$(DIST)/lib/aixwrap.o'
1016     AIX_TMP='./_aix_tmp.o'
1017     if test -n "$USE_64"; then
1018         MDCPUCFG_H=_aix64.cfg
1019         OBJECT_MODE=64
1020     else
1021         MDCPUCFG_H=_aix32.cfg
1022     fi
1023     PR_MD_CSRCS=aix.c
1024     RESOLVE_LINK_SYMBOLS=1
1025     ;;
1026         
1027 *-beos*)
1028     AC_DEFINE(XP_BEOS)
1029     AC_DEFINE(BeOS)
1030     AC_DEFINE(BEOS)
1031     AC_DEFINE(_POSIX_SOURCE)
1032     DSO_LDOPTS=-nostart
1033     MDCPUCFG_H=_beos.cfg
1034     USE_BTHREADS=1
1035     PR_MD_ARCH_DIR=beos
1036     RESOLVE_LINK_SYMBOLS=1
1037     case "${target_cpu}" in
1038     i*86)
1039         _OPTIMIZE_FLAGS=-O2
1040         _DEBUG_FLAGS='-gdwarf-2 -O0'
1041         MKSHLIB='$(CCC) $(DSO_LDOPTS) -o $@'
1042         AC_CHECK_LIB(bind, gethostbyaddr, [OS_LIBS="$OS_LIBS -lbind -lsocket"])
1043         ;;
1044     powerpc)
1045         CC=mwcc
1046         CCC=mwcc
1047         LD=mwld
1048         DSO_LDOPTS='-xms -export pragma -init _init_routine_ -term _term_routine_ -lroot -lnet /boot/develop/lib/ppc/glue-noinit.a /boot/develop/lib/ppc/init_term_dyn.o /boot/develop/lib/ppc/start_dyn.o'
1049         _OPTIMIZE_FLAGS=-O2    
1050         _DEBUG_FLAGS='-g -O0'
1051         ;;
1052     esac
1053     ;;
1055 *-bsdi*)
1056     AC_DEFINE(XP_UNIX)
1057     AC_DEFINE(BSDI)
1058     AC_DEFINE(NEED_BSDREGEX)
1060     CFLAGS="$CFLAGS -Wall -Wno-format"
1061     CXXFLAGS="$CXXFLAGS -Wall -Wno-format"
1063     if echo "$OS_TEST" | grep -c 86 >/dev/null; then
1064         CPU_ARCH=x86
1065     elif echo "$OS_TEST" | grep -c sparc >/dev/null; then 
1066         CPU_ARCH=sparc
1067     fi
1069     MDCPUCFG_H=_bsdi.cfg
1070     PR_MD_CSRCS=bsdi.c
1072     DSO_LDOPTS=-r
1074     case "$target_os" in
1075     bsdi1.1*)
1076         AC_DEFINE(_PR_BSDI_JMPBUF_IS_ARRAY)
1077         AC_DEFINE(_PR_STAT_HAS_ONLY_ST_ATIME)
1078         AC_DEFINE(_PR_NEED_H_ERRNO)
1079         MKSHLIB=
1080         DSO_CFLAGS=
1081         DSO_LDOPTS=
1082         ;;
1084     bsdi2.1*)
1085         AC_DEFINE(_PR_TIMESPEC_HAS_TS_SEC)
1086         AC_DEFINE(_PR_BSDI_JMPBUF_IS_ARRAY)
1087         AC_DEFINE(HAVE_DLL)
1088         AC_DEFINE(USE_DLFCN)
1089         AC_DEFINE(_PR_STAT_HAS_ST_ATIMESPEC)
1090         PR_MD_ASFILES=os_BSD_OS_386_2.s
1091         ;;
1093     bsdi4.* | bsdi5.*)
1094         AC_DEFINE(_PR_SELECT_CONST_TIMEVAL)
1095         AC_DEFINE(_PR_BSDI_JMPBUF_IS_STRUCT)
1096         AC_DEFINE(HAVE_DLL)
1097         AC_DEFINE(USE_DLFCN)
1098         AC_DEFINE(_PR_STAT_HAS_ST_ATIMESPEC)
1099         MKSHLIB='$(CC) -o $@ $(DSO_LDOPTS)'
1100         DSO_CFLAGS=-fPIC
1101         DSO_LDOPTS='-shared -Wl,-soname,$(@:$(OBJDIR)/%.so=%.so)'
1102         STRIP="$STRIP -d"
1103         case "$target_os" in
1104         bsdi4.2* | bsdi4.3* | bsdi5.*)
1105             AC_DEFINE(_PR_HAVE_GETPROTO_R)
1106             AC_DEFINE(_PR_HAVE_GETPROTO_R_POINTER)
1107             ;;
1108         esac
1109         ;;
1110     *)
1111         AC_DEFINE(_PR_SELECT_CONST_TIMEVAL)
1112         AC_DEFINE(_PR_BSDI_JMPBUF_IS_STRUCT)
1113         AC_DEFINE(HAVE_DLL)
1114         AC_DEFINE(USE_DLFCN)
1115         AC_DEFINE(_PR_STAT_HAS_ST_ATIMESPEC)
1116         ;;
1117     esac
1119     ;;
1121 *-darwin*)
1122     AC_DEFINE(XP_UNIX)
1123     AC_DEFINE(DARWIN)
1124     AC_DEFINE(HAVE_BSD_FLOCK)
1125     AC_DEFINE(HAVE_SOCKLEN_T)
1126     AS='$(CC) -x assembler-with-cpp'
1127     CFLAGS="$CFLAGS -Wall -fno-common"
1128     case "${target_cpu}" in
1129         i*86*)
1130             if test -n "$USE_64"; then
1131                 CPU_ARCH=x86_64
1132                 CC="$CC -arch x86_64"
1133             else        
1134                 CPU_ARCH=i386
1135             fi
1136             ;;
1137         *)
1138             CPU_ARCH=ppc
1139             ;;
1140     esac
1141     DSO_CFLAGS=-fPIC
1142     DSO_LDOPTS='-dynamiclib -compatibility_version 1 -current_version 1 -all_load -install_name @executable_path/$@ -headerpad_max_install_names'
1143     _OPTIMIZE_FLAGS=-O2
1144     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1145     STRIP="$STRIP -x -S"
1146     DLL_SUFFIX=dylib
1147     USE_PTHREADS=1
1148     MDCPUCFG_H=_darwin.cfg
1149     PR_MD_CSRCS=darwin.c
1150     PR_MD_ASFILES=os_Darwin.s
1152     # Add Mac OS X support for loading CFM & CFBundle plugins
1153     if test -f "${MACOS_SDK_DIR}/System/Library/Frameworks/Carbon.framework/Carbon"; then
1154         AC_DEFINE(XP_MACOSX)
1155         OS_TARGET=MacOSX
1157         if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
1158             dnl Use the specified value
1159             export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
1160         elif test -z "$MACOSX_DEPLOYMENT_TARGET" ; then
1161             dnl No value specified on the command line or in the environment,
1162             dnl use the lesser of the library's minimum or the architecture's
1163             dnl minimum.
1164             case "${target_cpu}" in
1165                 powerpc*)
1166                     dnl Architecture minimum 10.2
1167                     export MACOSX_DEPLOYMENT_TARGET=10.2
1168                     ;;
1169                 i*86*)
1170                     dnl Architecture minimum 10.4
1171                     export MACOSX_DEPLOYMENT_TARGET=10.4
1172                     ;;
1173             esac
1174         fi
1176         dnl MACOS_SDK_DIR will be set to the SDK location whenever one is
1177         dnl in use.  NEXT_ROOT will be set and exported if it's needed for
1178         dnl ld.
1180         if test "$MACOS_SDK_DIR"; then
1181             dnl Sync this section with the one in Mozilla's top level.
1183             if test ! -d "$MACOS_SDK_DIR"; then
1184                 AC_MSG_ERROR([SDK not found.  When using --with-macos-sdk, you must
1185 specify a valid SDK.  SDKs are installed when the optional cross-development
1186 tools are selected during the Xcode/Developer Tools installation.])
1187             fi
1189             changequote(,)
1190             CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
1191             GCC_VERSION_FULL=`echo $CC_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
1192             GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
1193             changequote([,])
1194             GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
1195             if test "$GCC_VERSION_MAJOR" -lt "4" ; then
1196                 SDK_C_FRAMEWORK="-F${MACOS_SDK_DIR}/System/Library/Frameworks"
1197                 if test -d "${MACOS_SDK_DIR}/Library/Frameworks" ; then
1198                     SDK_C_FRAMEWORK="$SDK_C_FRAMEWORK -F${MACOS_SDK_DIR}/Library/Frameworks"
1199                 fi
1201                 SDK_C_INCLUDE="-isystem ${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION} -isystem ${MACOS_SDK_DIR}/usr/include ${SDK_C_FRAMEWORK}"
1203                 CFLAGS="$CFLAGS -nostdinc ${SDK_C_INCLUDE}"
1205                 dnl CPP needs to be set for AC_CHECK_HEADER.
1206                 CPP="$CPP -nostdinc ${SDK_C_INCLUDE}"
1208                 changequote(,)
1209                 HOST_DARWIN_MAJOR=`echo "$build_os" | sed -E -e 's/^darwin([0-9]+).*$/\1/'`
1210                 changequote([,])
1211                 if test "$HOST_DARWIN_MAJOR" -lt 9 ; then
1212                     dnl The build host is running Tiger (10.4) or earlier.
1213                     dnl ld support for -syslibroot is compiler-agnostic, but
1214                     dnl only available on Tiger and later.  On Tiger and
1215                     dnl earlier build hosts, just rely on NEXT_ROOT, because
1216                     dnl it's not been shown to cause any problems.
1217                     MACOS_SDK_LIBS="-L${MACOS_SDK_DIR}/usr/lib/gcc/darwin -L${MACOS_SDK_DIR}/usr/lib/gcc/darwin/${GCC_VERSION_FULL} -L${MACOS_SDK_DIR}/usr/lib ${SDK_C_FRAMEWORK}"
1218                 else
1219                     dnl The build host is running Leopard (10.5) or later.
1220                     dnl With NEXT_ROOT set, the linker will still not apply
1221                     dnl it when resolving dependencies.  This causes problems
1222                     dnl on Leopard, where an SDK depends on frameworks which
1223                     dnl were present in earlier OS releases (and the associated
1224                     dnl SDK) but not in Leopard.  -syslibroot does not have
1225                     dnl this problem, but it results in harmless warnings when
1226                     dnl NEXT_ROOT is set.  NEXT_ROOT needs to remain set even
1227                     dnl on Leopard because the compiler uses it too.
1228                     MACOS_SDK_LIBS="-Wl,-syslibroot,${MACOS_SDK_DIR}"
1229                 fi
1231                 LDFLAGS="${MACOS_SDK_LIBS} $LDFLAGS"
1232                 export NEXT_ROOT=$MACOS_SDK_DIR
1234                 if test -n "$CROSS_COMPILE" ; then
1235                     dnl NEXT_ROOT will be in the environment, but it
1236                     dnl shouldn't be set for the build host.  HOST_CXX is
1237                     dnl presently unused.
1238                     HOST_CC="NEXT_ROOT= $HOST_CC"
1239                     HOST_CXX="NEXT_ROOT= $HOST_CXX"
1240                 fi
1241             else
1242                 dnl gcc >= 4.0 uses different paths than above, but knows
1243                 dnl how to find them itself.
1244                 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
1246                 dnl CPP needs to be set for AC_CHECK_HEADER.
1247                 CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
1249                 dnl If gcc >= 4.0.0, we're guaranteed to be on Tiger, which
1250                 dnl has an ld that supports -syslibroot.  Don't set
1251                 dnl NEXT_ROOT because it will be ignored and cause
1252                 dnl warnings when -syslibroot is specified.
1253                 if test "$GCC_VERSION_FULL" != "4.0.0" ; then
1254                     dnl gcc > 4.0.0 will pass -syslibroot to ld automatically
1255                     dnl based on the -isysroot it receives.
1256                     LDFLAGS="$LDFLAGS -isysroot ${MACOS_SDK_DIR}"
1257                 else
1258                     dnl gcc 4.0.0 doesn't pass -syslibroot to ld, it needs
1259                     dnl to be explicit.
1260                     LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
1261                 fi
1262             fi
1263         fi
1264     fi
1265     ;;
1267 *-dgux*)
1268     AC_DEFINE(XP_UNIX)
1269     AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
1270     AC_DEFINE(SVR4)
1271     AC_DEFINE(SYSV)
1272     AC_DEFINE(DGUX)
1273     AC_DEFINE(_DGUX_SOURCE)
1274     AC_DEFINE(_POSIX4A_DRAFT6_SOURCE)
1275     DSO_LDOPTS=-G
1276     _OPTIMIZE_FLAGS=-O2
1277     _DEBUG_FLAGS=
1278     MDCPUCFG_H=_dgux.cfg
1279     PR_MD_CSRCS=dgux.c
1280     ;;
1282 *-freebsd*)
1283     if test -z "$USE_NSPR_THREADS"; then
1284         USE_PTHREADS=1
1285     fi
1286     AC_DEFINE(XP_UNIX)
1287     AC_DEFINE(FREEBSD)
1288     AC_DEFINE(HAVE_BSD_FLOCK)
1289     AC_DEFINE(HAVE_SOCKLEN_T)
1290     CFLAGS="$CFLAGS $(DSO_CFLAGS) -ansi -Wall"
1291     MOZ_OBJFORMAT=`test -x /usr/bin/objformat && /usr/bin/objformat || echo elf`
1292     if test "$MOZ_OBJFORMAT" = "elf"; then
1293         DLL_SUFFIX=so
1294     else
1295         DLL_SUFFIX=so.1.0
1296     fi
1297     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1298     DSO_CFLAGS=-fPIC
1299     DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)'
1300     MDCPUCFG_H=_freebsd.cfg
1301     PR_MD_CSRCS=freebsd.c
1302     ;;
1304 *-hpux*)
1305     AC_DEFINE(XP_UNIX)
1306     AC_DEFINE(HPUX)
1307     AC_DEFINE(_HPUX_SOURCE)
1308     # OSF1 and HPUX report the POLLHUP event for a socket when the
1309     # shutdown(SHUT_WR) operation is called for the remote end, even though
1310     # the socket is still writeable. Use select(), instead of poll(), to
1311     # workaround this problem.
1312     AC_DEFINE(_PR_POLL_WITH_SELECT)
1313     AC_DEFINE(_USE_BIG_FDS)
1314     DSO_LDOPTS='-b +h $(notdir $@)'
1315     PR_MD_CSRCS=hpux.c
1316     if test "$OS_TEST" = "ia64"; then
1317         DLL_SUFFIX=so
1318         DSO_LDOPTS="$DSO_LDOPTS +b '\$\$ORIGIN'"
1319         CPU_ARCH_TAG=_$OS_TEST 
1320         if test -z "$USE_64"; then
1321             COMPILER_TAG=_32
1322         fi
1323         PR_MD_ASFILES=os_HPUX_ia64.s
1324     else
1325         AC_DEFINE(hppa)
1326         DLL_SUFFIX=sl
1327         PR_MD_ASFILES=os_HPUX.s
1328     fi
1329     if test -n "$USE_64"; then
1330         MDCPUCFG_H=_hpux64.cfg
1331     else
1332         MDCPUCFG_H=_hpux32.cfg
1333     fi
1334     if test -z "$GNU_CC"; then
1335         CC="$CC -Ae"
1336         CXX="$CXX -ext"
1337         DSO_CFLAGS=+Z
1338     else
1339         DSO_CFLAGS=-fPIC
1340         ASFLAGS="$ASFLAGS -x assembler-with-cpp"
1341     fi
1343     if test -n "$MOZILLA_CLIENT"; then
1344         DEFAULT_IMPL_STRATEGY=_EMU
1345     fi
1347     if echo "$OS_RELEASE" | grep ^A.09 >/dev/null; then
1348         AC_DEFINE(_PR_NEED_H_ERRNO)
1349         AC_DEFINE(HPUX9)
1350         DEFAULT_IMPL_STRATEGY=_EMU
1351         USE_NSPR_THREADS=1
1352     fi
1354     if echo "$OS_RELEASE" | egrep '^(A.09|B.10)' >/dev/null; then
1355         AC_DEFINE(_PR_NO_LARGE_FILES)
1356     fi
1358     if echo "$OS_RELEASE" | egrep '^(B.10.10|B.10.20)' >/dev/null; then
1359         AC_DEFINE(_PR_NEED_H_ERRNO)
1360     fi
1362     if echo "$OS_RELEASE" | egrep '^(B.10.10|B.10.20)' >/dev/null; then
1363         AC_DEFINE(HAVE_INT_LOCALTIME_R)
1364     fi
1366     if echo "$OS_RELEASE" | egrep '^(B.10.30|B.11)' >/dev/null; then
1367         AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
1368     fi
1370     # HP-UX 11i v2 (B.11.23) or higher
1371     changequote(<<,>>)
1372     case "$OS_RELEASE" in
1373     [C-Z]*|B.[2-9]*|B.1[2-9]*|B.11.[3-9]*|B.11.2[3-9]*)
1374         USE_IPV6=1
1375         ;;
1376     esac
1377     changequote([,])
1379     if test "$OS_RELEASE" = "B.10.01"; then
1380         AC_DEFINE(HPUX10)
1381         DEFAULT_IMPL_STRATEGY=_EMU
1382     fi
1384     if test "$OS_RELEASE" = "B.10.10"; then
1385         AC_DEFINE(HPUX10)
1386         AC_DEFINE(HPUX10_10)
1387         DEFAULT_IMPL_STRATEGY=_PTH
1388     fi
1390     if test "$OS_RELEASE" = "B.10.20"; then
1391         AC_DEFINE(HPUX10)
1392         AC_DEFINE(HPUX10_20)
1393         if test -z "$GNU_CC"; then
1394             CFLAGS="$CFLAGS +DAportable +DS1.1"
1395             CXXFLAGS="$CXXFLAGS +DAportable +DS1.1"
1396         fi
1397         DEFAULT_IMPL_STRATEGY=_PTH
1398     fi
1400     if test "$OS_RELEASE" = "B.10.30"; then
1401         AC_DEFINE(HPUX10)
1402         AC_DEFINE(HPUX10_30)
1403         if test -z "$GNU_CC"; then
1404             CFLAGS="$CFLAGS +DAportable +DS1.1"
1405             CXXFLAGS="$CXXFLAGS +DAportable +DS1.1"
1406         fi
1407         DEFAULT_IMPL_STRATEGY=_PTH
1408     fi
1410     if echo "$OS_RELEASE" | grep ^B.11 >/dev/null; then
1411         AC_DEFINE(HPUX10)
1412         AC_DEFINE(HPUX11)
1413         AC_DEFINE(_LARGEFILE64_SOURCE)
1414         AC_DEFINE(_PR_HAVE_OFF64_T)
1415         AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
1416         if test -z "$GNU_CC"; then
1417             if test -z "$USE_64"; then
1418                 if test "$OS_TEST" = "ia64"; then
1419                     CFLAGS="$CFLAGS +DD32"
1420                     CXXFLAGS="$CXXFLAGS +DD32"
1421                 else
1422                     CFLAGS="$CFLAGS +DAportable +DS2.0"
1423                     CXXFLAGS="$CXXFLAGS +DAportable +DS2.0"
1424                 fi
1425             else
1426                 if test "$OS_TEST" = "ia64"; then
1427                     CFLAGS="$CFLAGS +DD64"
1428                     CXXFLAGS="$CXXFLAGS +DD64"
1429                 else
1430                     CFLAGS="$CFLAGS +DA2.0W +DS2.0"
1431                     CXXFLAGS="$CXXFLAGS +DA2.0W +DS2.0"
1432                 fi
1433             fi
1434         fi
1435         DEFAULT_IMPL_STRATEGY=_PTH
1436     fi
1438     if test "$DEFAULT_IMPL_STRATEGY" = "_EMU"; then
1439         USE_NSPR_THREADS=1
1440         USE_PTHREADS=
1441         USE_USER_PTHREADS=
1442     elif test "$DEFAULT_IMPL_STRATEGY" = "_PTH"; then
1443         USE_PTHREADS=1
1444         if test "$USE_NSPR_THREADS"; then
1445             USE_PTHREADS=
1446         fi
1447         if test "$USE_USER_PTHREADS"; then
1448             USE_PTHREADS=
1449         fi
1450     fi
1451     ;;
1453 *-irix*)
1454     AC_DEFINE(XP_UNIX)
1455     AC_DEFINE(IRIX)
1456     AC_DEFINE(SVR4)
1457     AC_DEFINE(_SGI_MP_SOURCE)
1458     AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
1459     PR_MD_CSRCS=irix.c
1460     PR_MD_ASFILES=os_Irix.s
1461     MKSHLIB='$(LD) $(DSO_LDOPTS) -rdata_shared -shared -soname $(notdir $@) -o $@'
1462     STRIP="$STRIP -f"
1463     RESOLVE_LINK_SYMBOLS=1
1464     if test -n "$USE_64"; then
1465         MDCPUCFG_H=_irix64.cfg
1466     else
1467         MDCPUCFG_H=_irix32.cfg
1468     fi
1469     case "${target_os}" in
1470     irix6*)
1471         AC_DEFINE(IRIX6)
1472         USE_PTHREADS=1
1473         USE_N32=1
1474         COMPILER_TAG=_n32
1475         IMPL_STRATEGY=_PTH
1476         ;;
1477     irix5*)
1478         AC_DEFINE(IRIX5)
1479         USE_NSPR_THREADS=1
1480         ;;
1481     *)
1482         USE_PTHREADS=1
1483         USE_N32=1
1484         ;;
1485     esac
1486     if test "$GNU_CC"; then
1487         dnl
1488         dnl If we are using gcc with native binutils, we need to
1489         dnl suppress the
1490         dnl #lineno "filename" num num
1491         dnl lines, which confuse IRIX native as.  Add -Wp,-P to the
1492         dnl gcc command line, which passes -P to the preprocessor.
1493         dnl
1494             AS='$(CC) -Wp,-P -x assembler-with-cpp -D_ASM -mips2 $(INCLUDES)'
1495             CFLAGS="$CFLAGS -Wall -Wno-format"
1496             _OPTIMIZE_FLAGS="-O6"
1497     else
1498             if test -n "$USE_N32"; then
1499                 AS='as -D_ASM $(INCLUDES) -n32'
1500             else
1501                 AS='as -D_ASM $(INCLUDES)'
1502             fi
1503             CFLAGS="$CFLAGS -fullwarn -xansi"
1504             if test "$USE_N32"; then
1505                 _OPTIMIZE_FLAGS="-O -OPT:Olimit=4000"
1506             else
1507                 _OPTIMIZE_FLAGS="-O -Olimit 4000"
1508             fi
1509             if test "$USE_MDUPDATE"; then
1510                 CFLAGS="$CFLAGS -MDupdate \$(DEPENDENCIES)"
1511             fi
1512             case "${target}" in
1513             *-irix6.*)
1514                 CFLAGS="$CFLAGS -multigot"
1515                 DSO_LDOPTS="-no_unresolved"
1516                 if test "$USE_N32"; then
1517                         CFLAGS="$CFLAGS -n32 -woff 1209"
1518                         DSO_LDOPTS="$DSO_LDOPTS -n32"
1519                 else
1520                         if test "$USE_64"; then
1521                             CFLAGS="$CFLAGS -64"
1522                         else
1523                             CFLAGS="$CFLAGS -32"
1524                         fi
1525                 fi
1526                 ;;
1527             *)
1528                 CFLAGS="$CFLAGS -xgot"
1529                 ;;
1530             esac
1531     fi
1532     if test "${target_os}" = "irix5.3"; then
1533             AC_DEFINE(IRIX5_3)
1534     fi
1535     case "${target_os}" in
1536         irix6.5)
1537             if test -z "$GNU_CC"; then
1538                     CFLAGS="$CFLAGS -mips3"
1539             fi
1540             AC_DEFINE(_PR_HAVE_GETPROTO_R)
1541             AC_DEFINE(_PR_HAVE_GETPROTO_R_POINTER)
1542             AC_DEFINE(_PR_HAVE_SGI_PRDA_PROCMASK)
1543             ;;
1544         irix5*)
1545             ;;
1546         *)
1547             AC_DEFINE(_PR_HAVE_SGI_PRDA_PROCMASK)
1548             ;;
1549         esac
1550     ;;
1552 arm-android-eabi)
1553     if test -z "$USE_NSPR_THREADS"; then
1554         USE_PTHREADS=1
1555         IMPL_STRATEGY=_PTH
1556     fi
1557     AC_DEFINE(XP_UNIX)
1558     AC_DEFINE(_GNU_SOURCE)
1559     AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
1560     AC_DEFINE(LINUX)
1561     CFLAGS="$CFLAGS -Wall"
1562     CXXFLAGS="$CXXFLAGS -Wall"
1563     MDCPUCFG_H=_linux.cfg
1564     PR_MD_CSRCS=linux.c
1565     MKSHLIB='$(CC) $(DSO_LDOPTS) $(WRAP_MALLOC_LIB) -o $@'
1566     DSO_CFLAGS=-fPIC
1567     DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)'
1568     _OPTIMIZE_FLAGS=-O2
1569     _DEBUG_FLAGS="-g -fno-inline"  # most people on linux use gcc/gdb, and that
1570                                    # combo is not yet good at debugging inlined
1571                                    # functions (even when using DWARF2 as the
1572                                    # debugging format)
1573     COMPILER_TAG=_glibc
1574     CPU_ARCH=arm
1575     CPU_ARCH_TAG=_arm
1576     OS_TARGET=Android
1577     ;;
1579 *-linux*|*-gnu*|*-k*bsd*-gnu)
1580     if test -z "$USE_NSPR_THREADS"; then
1581         USE_PTHREADS=1
1582         IMPL_STRATEGY=_PTH
1583     fi
1584     AC_DEFINE(XP_UNIX)
1585     AC_DEFINE(_GNU_SOURCE)
1586     AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
1587     case "${target_os}" in
1588     linux*)
1589         AC_DEFINE(LINUX)
1590         ;;
1591     esac
1592     CFLAGS="$CFLAGS -Wall"
1593     CXXFLAGS="$CXXFLAGS -Wall"
1594     MDCPUCFG_H=_linux.cfg
1595     PR_MD_CSRCS=linux.c
1596     MKSHLIB='$(CC) $(DSO_LDOPTS) $(WRAP_MALLOC_LIB) -o $@'
1597     DSO_CFLAGS=-fPIC
1598     DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)'
1599     _OPTIMIZE_FLAGS=-O2
1600     _DEBUG_FLAGS="-g -fno-inline"  # most people on linux use gcc/gdb, and that
1601                                    # combo is not yet good at debugging inlined
1602                                    # functions (even when using DWARF2 as the
1603                                    # debugging format)
1604     COMPILER_TAG=_glibc
1605     if echo "$OS_TEST" | grep -c 86 >/dev/null; then
1606         CPU_ARCH=x86
1607     else
1608         CPU_ARCH=$OS_TEST
1609     fi
1610     CPU_ARCH_TAG=_${CPU_ARCH}
1611     case "${target_cpu}" in
1612     alpha)
1613         AC_DEFINE(_ALPHA_)
1614         AC_DEFINE(__alpha)
1615         CFLAGS="$CFLAGS -mieee"
1616         CXXFLAGS="$CXXFLAGS -mieee"
1617         ;;
1618     i*86)
1619         AC_DEFINE(i386)
1620         PR_MD_ASFILES=os_Linux_x86.s
1621         ;;
1622     ia64)
1623         PR_MD_ASFILES=os_Linux_ia64.s
1624         ;;
1625     x86_64)
1626         if test -n "$USE_64"; then
1627             PR_MD_ASFILES=os_Linux_x86_64.s
1628         else
1629             AC_DEFINE(i386)
1630             PR_MD_ASFILES=os_Linux_x86.s
1631             CC="$CC -m32"
1632             CXX="$CXX -m32"
1633         fi
1634         ;;
1635     ppc|powerpc)
1636         PR_MD_ASFILES=os_Linux_ppc.s
1637         ;;
1638     powerpc64)
1639         if test -n "$USE_64"; then
1640             CC="$CC -m64"
1641             CXX="$CXX -m64"
1642         else
1643             PR_MD_ASFILES=os_Linux_ppc.s
1644         fi
1645         ;;
1646     m68k)
1647         CFLAGS="$CFLAGS -m68020-60"
1648         CXXFLAGS="$CXXFLAGS -m68020-60"
1649         ;;
1650     esac    
1651     ;;
1653 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
1654     AC_DEFINE(XP_PC)
1655     AC_DEFINE(WIN32)
1656     PR_MD_ARCH_DIR=windows
1657     RESOLVE_LINK_SYMBOLS=1
1659     if test -n "$GNU_CC"; then
1660         CC="$CC -mno-cygwin"
1661         CXX="$CXX -mno-cygwin"
1662         DLL_SUFFIX=dll
1663         MKSHLIB='$(CC) -shared -Wl,--export-all-symbols -Wl,--out-implib -Wl,$(IMPORT_LIBRARY) $(DLLBASE) -o $(subst $(OBJDIR)/,,$(SHARED_LIBRARY))'
1664         RC=$WINDRES
1665         # Use temp file for windres (bug 213281)
1666         RCFLAGS='-O coff --use-temp-file'
1667     else
1668         CC=cl
1669         CXX=cl
1670         LD=link
1671         AR='lib -NOLOGO -OUT:"$@"'
1672         AR_FLAGS=
1673         RANLIB='echo not_ranlib'
1674         STRIP='echo not_strip'
1675         RC=rc.exe
1676         GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
1677         OBJ_SUFFIX=obj
1678         LIB_SUFFIX=lib
1679         DLL_SUFFIX=dll
1681         # Determine compiler version
1682         changequote(,)
1683         _MSVC_VER_FILTER='s|.* \([0-9]\+\.[0-9]\+\.[0-9]\+\(\.[0-9]\+\)\?\).*|\1|p'
1684         changequote([,])
1685         CC_VERSION=`"${CC}" -v 2>&1 | sed -ne "$_MSVC_VER_FILTER"`
1686         _CC_MAJOR_VERSION=`echo ${CC_VERSION} | awk -F\. '{ print $1 }'`
1687         _CC_MINOR_VERSION=`echo ${CC_VERSION} | awk -F\. '{ print $2 }'`
1688         _CC_RELEASE=`echo ${CC_VERSION} | awk -F\. '{ print $3 }'`
1689         _CC_BUILD=`echo ${CC_VERSION} | awk -F\. '{ print $4 }'`
1690         MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
1692         if test "$_CC_MAJOR_VERSION" -eq "14"; then
1693            dnl -DYNAMICBASE is only supported on VC8SP1 or newer,
1694            dnl so be very specific here!
1695            dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762
1696            if test $_CC_RELEASE -gt 50727; then
1697               _USE_DYNAMICBASE=1
1698            elif test $_CC_BUILD -ge 762; then
1699               _USE_DYNAMICBASE=1
1700            fi
1701         elif test $_CC_MAJOR_VERSION -ge 15; then
1702            _USE_DYNAMICBASE=1    
1703         fi
1705         if test -n "$_USE_DYNAMICBASE"; then
1706            DLLFLAGS="$DLLFLAGS -DYNAMICBASE"
1707         fi
1709         # Ensure that mt is Microsoft (R) Manifest Tool and not magnetic
1710         # tape manipulation utility (or something else)
1711         if test "$MSC_VER" -ge "1400"; then
1712             changequote(,)
1713             _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
1714             changequote([,])
1716             MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
1717             if test -n "$MSMT_TOOL"; then
1718                 MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
1719                 if test -z "$MSMANIFEST_TOOL_VERSION"; then
1720                     AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
1721                 fi
1722                 MT=mt
1723                 unset MSMT_TOOL
1724             else
1725                 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
1726             fi
1727         fi
1728         
1729         CFLAGS="$CFLAGS -W3 -nologo -GF -Gy"
1730         DLLFLAGS="$DLLFLAGS -OUT:\"\$@\""
1731         _DEBUG_FLAGS=-Zi
1732         _OPTIMIZE_FLAGS=-O2
1734         PROFILE_GEN_CFLAGS="-GL"
1735         PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
1736         PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
1737         PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
1739         if test -z "$MOZ_OPTIMIZE"; then
1740             CFLAGS="$CFLAGS -Od"
1741         fi
1743         if test -n "$USE_DEBUG_RTL"; then
1744             CFLAGS="$CFLAGS -MDd"
1745         else
1746             CFLAGS="$CFLAGS -MD"
1747         fi
1749         if test -n "$MOZ_DEBUG"; then
1750             AC_DEFINE(_DEBUG)
1751         else
1752             DEFINES="$DEFINES -U_DEBUG"
1753         fi
1755         if test -n "$MOZ_DEBUG_SYMBOLS"; then
1756             if test -n "$MOZ_OPTIMIZE"; then
1757                 DLLFLAGS="$DLLFLAGS -DEBUG -OPT:REF"
1758                 LDFLAGS="$LDFLAGS -DEBUG -OPT:REF"
1759             else
1760                 DLLFLAGS="$DLLFLAGS -DEBUG"
1761                 LDFLAGS="$LDFLAGS -DEBUG"
1762             fi
1763         fi
1765         OS_DLLFLAGS="-nologo -DLL -SUBSYSTEM:WINDOWS"
1766         if test "$MSC_VER" -le "1200" -a -z "$MOZ_DEBUG_SYMBOLS"; then
1767             OS_DLLFLAGS="$OS_DLLFLAGS -PDB:NONE"
1768         fi
1769         
1770         if test "$OS_TARGET" = "WINNT"; then
1771             CFLAGS="$CFLAGS -GT"
1772             LIBNSPR='$(dist_libdir)/libnspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
1773             LIBPLC='$(dist_libdir)/libplc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
1774         else
1775             LIBNSPR='$(dist_libdir)/nspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
1776             LIBPLC='$(dist_libdir)/plc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
1777         fi
1778     fi # GNU_CC
1780     if test -n "$USE_STATIC_TLS"; then
1781         AC_DEFINE(_PR_USE_STATIC_TLS)
1782     fi
1784     if test "$OS_TARGET" = "WINNT"; then
1785         AC_DEFINE(WINNT)
1786     else
1787         AC_DEFINE(WIN95)
1788         # undefine WINNT as some versions of mingw gcc define it by default
1789         DEFINES="$DEFINES -UWINNT"
1790         AC_DEFINE(_PR_GLOBAL_THREADS_ONLY)
1791     fi
1793     if test "$CPU_ARCH" = "x86"; then
1794         CPU_ARCH_TAG=
1795     else
1796         CPU_ARCH_TAG=$CPU_ARCH
1797     fi
1799     if test -n "$USE_DEBUG_RTL"; then
1800         OBJDIR_SUFFIX=OBJD
1801     fi
1803     case "$OS_TARGET" in
1804     WINNT)
1805             MDCPUCFG_H=_winnt.cfg
1806             ;;
1807     WIN95)
1808             MDCPUCFG_H=_win95.cfg
1809             ;;
1810     *)
1811             AC_MSG_ERROR([Missing OS_TARGET for ${target}.  Use --enable-win32-target to set.])
1812         ;;
1813     esac
1815     case "$target_cpu" in
1816     i*86)
1817         if test -n "$USE_64"; then
1818             AC_DEFINE(_AMD64_)
1819         else            
1820             AC_DEFINE(_X86_)
1821         fi
1822         ;;
1823     x86_64)
1824             AC_DEFINE(_AMD64_)
1825             USE_64=1
1826             ;;
1827     ia64)
1828             AC_DEFINE(_IA64_)
1829             USE_64=1
1830             ;;
1831     *)
1832             AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
1833             ;;
1834     esac
1835     ;;
1837 *-wince*|*-winmo*)
1838     AC_DEFINE(XP_PC)
1839     AC_DEFINE(WIN32)
1840     AC_DEFINE(WINCE)
1841     AC_DEFINE(_PR_GLOBAL_THREADS_ONLY)
1843     AR_FLAGS='-NOLOGO -OUT:"$@"'
1845     OBJ_SUFFIX=obj
1846     LIB_SUFFIX=lib
1847     DLL_SUFFIX=dll
1848     MKSHLIB='$(LD) -DLL $(DSO_LDOPTS) -OUT:$@'
1850     PR_MD_ARCH_DIR=windows
1851     RESOLVE_LINK_SYMBOLS=1
1853     MDCPUCFG_H=_win95.cfg
1854     LIBNSPR='$(dist_libdir)/nspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
1855     LIBPLC='$(dist_libdir)/plc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
1857     DLLFLAGS='-OUT:"$@"'
1858     if test -n "$MOZ_DEBUG_SYMBOLS"; then
1859         OS_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
1860         OS_DLLFLAGS='-DEBUG -DEBUGTYPE:CV'
1861         DSO_LDOPTS='-DEBUG -DEBUGTYPE:CV'
1862     fi
1863     _DEBUG_FLAGS=-Zi
1864     _OPTIMIZE_FLAGS=-O2
1865     ;;
1867 *-ncr-sysv*)
1868     AC_DEFINE(XP_UNIX)
1869     AC_DEFINE(SVR4)
1870     AC_DEFINE(SYSV)
1871     AC_DEFINE(NCR)
1872     USE_NSPR_THREADS=1
1873     if test "$OS_RELEASE" = "2.03"; then
1874         AC_DEFINE(_PR_STAT_HAS_ST_ATIM)
1875     else
1876         AC_DEFINE(_PR_STAT_HAS_ST_ATIM_UNION)
1877     fi
1879     if test -z "$GNU_CC"; then
1880         CFLAGS="$CFLAGS -Hnocopyr"
1881         CXXFLAGS="$CXXFLAGS -Hnocopyr"
1882     else
1883         CFLAGS="$CFLAGS -fPIC -Wall"
1884         CXXFLAGS="$CXXFLAGS -fPIC -Wall"
1885         DSO_LDOPTS=-G
1886     fi
1887     MDCPUCFG_H=_ncr.cfg
1888     PR_MD_CSRCS=ncr.c
1889     ;;
1891 mips-nec-sysv*)
1892     AC_DEFINE(XP_UNIX)
1893     AC_DEFINE(SVR4)
1894     AC_DEFINE(__SVR4)
1895     AC_DEFINE(NEC)
1896     AC_DEFINE(nec_ews)
1897     USE_NSPR_THREADS=1
1898     if test -z "$GNU_CC"; then
1899         CC='$(NSDEPTH)/build/hcc cc -Xa -KGnum=0 -KOlimit=4000'
1900         CXX=g++
1901     fi
1902     OS_LIBS="$OS_LIBS -lsocket -lnsl -ldl"
1903     DSO_LDOPTS=-G
1904     MDCPUCFG_H=_nec.cfg
1905     PR_MD_CSRCS=nec.c
1906     ;;
1908 *-netbsd*)
1909     AC_DEFINE(XP_UNIX)
1910     AC_DEFINE(NETBSD)
1911     AC_DEFINE(HAVE_BSD_FLOCK)
1912     if test -z "$USE_NSPR_THREADS"; then
1913         USE_PTHREADS=1
1914     fi
1915     MDCPUCFG_H=_netbsd.cfg
1916     PR_MD_CSRCS=netbsd.c
1918     DSO_CFLAGS='-fPIC -DPIC'
1919     CFLAGS="$CFLAGS -ansi -Wall"
1920     CXXFLAGS="$CXXFLAGS -ansi -Wall"
1921     MKSHLIB='$(CC) -o $@ $(DSO_LDOPTS)'
1923     if test -z "$OBJECT_FMT"; then
1924         if echo __ELF__ | ${CC-cc} -E - | grep -q __ELF__ 2>/dev/null; then
1925             OBJECT_FMT=a.out
1926             DLL_SUFFIX=so.1.0
1927             DSO_LDOPTS='-shared'
1928         else
1929             OBJECT_FMT=ELF
1930             DLL_SUFFIX=so
1931             DSO_LDOPTS='-shared -Wl,-soname,$(notdir $@)'
1932         fi
1933     fi
1935     if test "$LIBRUNPATH"; then
1936         DSO_LDOPTS="$DSO_LDOPTS -Wl,-R$LIBRUNPATH"
1937     fi
1938     ;;
1940 mips-sony-newsos*)
1941     AC_DEFINE(XP_UNIX)
1942     AC_DEFINE(SONY)
1943     AC_DEFINE(SYSV)
1944     AC_DEFINE(SVR4)
1945     AC_DEFINE(__svr4)
1946     AC_DEFINE(__svr4__)
1947     AC_DEFINE(HAVE_SVID_GETTOD)
1948     USE_NSPR_THREADS=1
1949     CFLAGS="$CFLAGS -Xa -fullwarn"
1950     CXXFLAGS="$CXXFLAGS -Xa -fullwarn"
1951     DSO_LDOPTS=-G
1952     MDCPUCFG_H=_sony.cfg
1953     PR_MD_CSRCS=sony.c
1954     ;;
1956 *-nextstep*|*-openstep*)
1957     AC_DEFINE(XP_UNIX)
1958     AC_DEFINE(NEXTSTEP)
1959     AC_DEFINE(HAVE_BSD_FLOCK)
1960     AC_DEFINE(_POSIX_SOURCE)
1961     CFLAGS="$CFLAGS -Wall -fno-common -traditional-cpp -posix"
1962     CXXFLAGS="$CXXFLAGS -Wall -fno-common -traditional-cpp -posix"
1963     USE_NSPR_THREADS=1
1964     DLL_SUFFIX=dylib
1965     MDCPUCFG_H=_nextstep.cfg
1966     PR_MD_CSRCS=nextstep.c
1967     ;;
1970 *-nto*)
1971     AC_DEFINE(XP_UNIX)
1972     AC_DEFINE(NTO)
1973     AC_DEFINE(_QNX_SOURCE)
1974     AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
1975     MDCPUCFG_H=_nto.cfg
1976     PR_MD_CSRCS=nto.c
1977     MKSHLIB='$(CC) $(DSO_LDOPTS) -Wl,-soname -Wl,$(notdir $@) -o $@'
1978     DSO_CFLAGS=-fPIC
1979     DSO_LDOPTS=-shared
1980     OS_LIBS="$OS_LIBS -lsocket"
1981     _OPTIMIZE_FLAGS="-O1"
1982     _DEBUG_FLAGS="-gstabs"
1983         ;;
1985 *-openbsd*)
1986     AC_DEFINE(XP_UNIX)
1987     AC_DEFINE(OPENBSD)
1988     AC_DEFINE(HAVE_BSD_FLOCK)
1989     AC_DEFINE(HAVE_SOCKLEN_T)
1990     CFLAGS="$CFLAGS -ansi -Wall"
1991     CXXFLAGS="$CXXFLAGS -ansi -Wall"
1992     DLL_SUFFIX=so.1.0
1993     DSO_CFLAGS=-fPIC
1994     MDCPUCFG_H=_openbsd.cfg
1995     PR_MD_CSRCS=openbsd.c
1996     OS_LIBS="-lc"
1997     if test -z "$USE_NSPR_THREADS"; then
1998         USE_PTHREADS=1
1999     fi
2000     DSO_LDOPTS='-shared -fPIC'
2001     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2002     ;;
2004 *-osf*)
2005     SHELL_OVERRIDE="SHELL               = /usr/bin/ksh"
2006     AC_DEFINE(XP_UNIX)
2007     AC_DEFINE(OSF1)
2008     AC_DEFINE(_REENTRANT)
2009     # OSF1 and HPUX report the POLLHUP event for a socket when the
2010     # shutdown(SHUT_WR) operation is called for the remote end, even though
2011     # the socket is still writeable. Use select(), instead of poll(), to
2012     # workaround this problem.
2013     AC_DEFINE(_PR_POLL_WITH_SELECT)
2015     if echo "$OS_RELEASE" | egrep -c '(V2.0|V3.2)' 2>/dev/null ; then
2016         USE_NSPR_THREADS=1
2017     fi
2019     if test -z "$GNU_CC"; then
2020         CC="$CC -std1 -ieee_with_inexact"
2021         if test "$OS_RELEASE" != "V2.0"; then
2022             CC="$CC -readonly_strings"
2023         fi
2024         _OPTIMIZE_FLAGS="$_OPTIMIZE_FLAGS -Olimit 4000"
2025         AC_CHECK_HEADER(machine/builtins.h, AC_DEFINE(OSF1_HAVE_MACHINE_BUILTINS_H))
2026     else
2027         CFLAGS="$CFLAGS -mieee"
2028         CXXFLAGS="$CXXFLAGS -mieee"
2029     fi
2031     if echo $OS_RELEASE | egrep -c '(V2.0|V3.2)' 2>/dev/null; then
2032         AC_DEFINE(HAVE_INT_LOCALTIME_R)
2033     else
2034         AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
2035         AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
2036     fi
2037     if echo $OS_RELEASE | grep -c V4.0 >/dev/null; then
2038         AC_DEFINE(OSF1V4_MAP_PRIVATE_BUG)
2039     fi
2040     DSO_LDOPTS='-shared -all -expect_unresolved "*" -soname $(notdir $@)'
2041     MDCPUCFG_H=_osf1.cfg
2042     PR_MD_CSRCS=osf1.c
2043     ;;
2045 *-qnx*)
2046     AC_DEFINE(XP_UNIX)
2047     AC_DEFINE(QNX)
2048     AC_DEFINE(_PR_NEED_H_ERRNO)
2049     USE_NSPR_THREADS=1
2050     MDCPUCFG_H=_qnx.cfg
2051     PR_MD_CSRCS=qnx.c
2052     ;;
2054 *-riscos*)
2055     AC_DEFINE(XP_UNIX)
2056     AC_DEFINE(RISCOS)
2057     AC_DEFINE(_PR_NEED_H_ERRNO)
2058     USE_PTHREADS=1
2059     MDCPUCFG_H=_riscos.cfg
2060     PR_MD_CSRCS=riscos.c
2061     DSO_CFLAGS=-fPIC
2062     DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)'
2063     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2064     ;;
2066 *-*-sco*)
2067     AC_DEFINE(XP_UNIX)
2068     AC_DEFINE(SCO)
2069     AC_DEFINE(sco)
2070     AC_DEFINE(SYSV)
2071     AC_DEFINE(_SVID3)
2072     AC_DEFINE(_PR_NEED_H_ERRNO)
2073     CC='cc -b elf -KPIC'
2074     CXX='$(NSDEPTH)/build/hcpp CC +.cpp +w'
2075     USE_NSPR_THREADS=1
2076     CPU_ARCH=x86
2077     DSO_LDOPTS='-b elf -G'
2078     MDCPUCFG_H=_scoos.cfg
2079     PR_MD_SRCS=scoos.c
2080     ;;
2082 *-sinix*)
2083     AC_DEFINE(XP_UNIX)
2084     AC_DEFINE(SVR4)
2085     AC_DEFINE(SNI)
2086     AC_DEFINE(RELIANTUNIX)
2087     AC_DEFINE(sinix)
2088     AC_DEFINE(HAVE_SVID_GETTOD)
2089     if echo "$OS_TEST" | grep -c 86 2>/dev/null; then
2090         AC_DEFINE(i386)
2091         CPU_ARCH=x86
2092     else
2093         CPU_ARCH=mips
2094     fi
2096     if test "$GNU_CC"; then
2097         AS='$(CC) -x assembler-with-cpp'
2098         if test "$CPU_ARCH" = "mips"; then
2099             LD=gld
2100         fi
2101         CFLAGS="$CFLAGS -Wall -Wno-format"
2102     else
2103         AS='/usr/bin/cc'
2104         _OPTIMIZE_FLAGS='-O -F Olimit,4000'
2105     fi
2107     DSO_LDOPTS='-G -z defs -h $(@:$(OBJDIR)/%.so=%.so)'
2109     if test "$OS_RELEASE" = "5.43"; then
2110         AC_DEFINE(IP_MULTICAST)
2111     fi
2113     OS_LIBS="$OS_LIBS -lsocket -lnsl -lresolv -ldl -lc"
2114     USE_NSPR_THREADS=1
2115     MDCPUCFG_H=_reliantunix.cfg
2116     PR_MD_CSRCS=reliantunix.c
2117     if test "${OS_ARCH}" = "mips"; then
2118         PR_MD_ASFILES=os_ReliantUNIX.s
2119     fi
2120     ;;
2122 *-sunos*)
2123     AC_DEFINE(XP_UNIX)
2124     AC_DEFINE(SUNOS4)
2125     CFLAGS="$CFLAGS -Wall -Wno-format"
2126     if test "$USE_MDUPDATE"; then
2127         CFLAGS="$CFLAGS -MDupdate \$(DEPENDENCIES)"
2128     fi
2129     CPU_ARCH=sparc
2130     DLL_SUFFIX=so.1.0
2131     DSO_LDOPTS=
2132     DSO_CFLAGS=-fPIC
2133     USE_NSPR_THREADS=1
2134     if test "$OS_RELEASE" = "4.1.3_U1"; then
2135         _OPTIMIZE_FLAGS=
2136         OS_LIBS="$OS_LIBS -lm"
2137     fi
2138     MDCPUCFG_H=_sunos4.cfg
2139     PR_MD_CSRCS=sunos4.c
2140     ;;
2142 *-solaris*)
2143     if test -z "$USE_NSPR_THREADS"; then
2144         USE_PTHREADS=1
2145     fi
2146     AC_DEFINE(XP_UNIX)
2147     AC_DEFINE(SVR4)
2148     AC_DEFINE(SYSV)
2149     AC_DEFINE(__svr4)
2150     AC_DEFINE(__svr4__)
2151     AC_DEFINE(SOLARIS)
2152     AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
2153     CPU_ARCH=`uname -p`
2154     MDCPUCFG_H=_solaris.cfg
2155     PR_MD_CSRCS=solaris.c
2156     LD=/usr/ccs/bin/ld
2157     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2158     RESOLVE_LINK_SYMBOLS=1
2159     case "${OS_RELEASE}" in
2160     5.8|5.9)
2161         ;;
2162     *)
2163         # It is safe to use the -Bdirect linker flag on Solaris 10 or later.
2164         USE_B_DIRECT=1
2165         ;;
2166     esac
2167     if test -n "$GNU_CC"; then
2168         DSO_CFLAGS=-fPIC
2169         if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
2170             GCC_USE_GNU_LD=1
2171         fi
2172         DSO_LDOPTS='-shared -Wl,-h,$(notdir $@),-z,combreloc,-z,defs,-z,ignore' 
2173         if test -n "$USE_B_DIRECT"; then
2174             DSO_LDOPTS="$DSO_LDOPTS,-Bdirect"
2175         fi
2176     else
2177         DSO_CFLAGS=-KPIC
2178         DSO_LDOPTS='-G -h $(notdir $@) -z combreloc -z defs -z ignore'
2179         if test -n "$USE_B_DIRECT"; then
2180             DSO_LDOPTS="$DSO_LDOPTS -Bdirect"
2181         fi
2182     fi
2183     if test -n "$GNU_CC"; then
2184         CFLAGS="$CFLAGS -Wall"
2185         CXXFLAGS="$CXXFLAGS -Wall"
2186         if test -n "$USE_MDUPDATE"; then
2187             CFLAGS="$CFLAGS -MDupdate \$(DEPENDENCIES)"
2188             CXXFLAGS="$CXXFLAGS -MDupdate \$(DEPENDENCIES)"
2189         fi
2190         GCC_AS=`$CC -print-prog-name=as`
2191         if test "`echo | $GCC_AS -v 2>&1 | grep -c GNU`" != "0"; then
2192             GNU_AS=1
2193         fi
2194     else
2195         CFLAGS="$CFLAGS -xstrconst"
2196         CXXFLAGS="$CXXFLAGS -Qoption cg -xstrconst -features=tmplife"
2197         if test -z "$MOZ_OPTIMIZE"; then
2198             CFLAGS="$CFLAGS -xs"
2199             CXXFLAGS="$CXXFLAGS -xs"
2200         fi
2201         _OPTIMIZE_FLAGS=-xO4
2202     fi
2203     if test -z "$GNU_AS"; then
2204         ASFLAGS="$ASFLAGS -Wa,-P"
2205     fi
2206     if test -n "$USE_64"; then
2207         if test -n "$GNU_CC"; then
2208             CC="$CC -m64"
2209             CXX="$CXX -m64"
2210         else
2211             if test "$OS_TEST" = "i86pc"; then
2212                 CC="$CC -xarch=amd64"
2213                 CXX="$CXX -xarch=amd64"
2214             else
2215                 CC="$CC -xarch=v9"
2216                 CXX="$CXX -xarch=v9"
2217             fi
2218         fi
2219     fi
2220     if test "$OS_TEST" = "i86pc"; then
2221         if test -z "$USE_64"; then
2222             AC_DEFINE(i386)
2223         fi
2224         CPU_ARCH_TAG=_$OS_TEST
2225         # The default debug format, DWARF (-g), is not supported by gcc
2226         # on i386-ANY-sysv4/solaris, but the stabs format is.  It is
2227         # assumed that the Solaris assembler /usr/ccs/bin/as is used.
2228         # If your gcc uses GNU as, you do not need the -Wa,-s option.
2229         if test -n "$MOZ_DEBUG" && test -n "$GNU_CC"; then
2230             _DEBUG_FLAGS=-gstabs
2231             if test -z "$GNU_AS"; then
2232                 _DEBUG_FLAGS="$_DEBUG_FLAGS -Wa,-s"
2233             fi
2234         fi
2235     fi
2236     case "${target_os}" in
2237     solaris2.3*)
2238         AC_DEFINE(_PR_NO_LARGE_FILES)
2239         ;;
2240     solaris2.4*)
2241         AC_DEFINE(_PR_NO_LARGE_FILES)
2242         ;;
2243     solaris2.5*)
2244         AC_DEFINE(SOLARIS2_5)    
2245         ;;
2246     *)
2247         AC_DEFINE(_PR_HAVE_OFF64_T)
2248         # The lfcompile64(5) man page on Solaris 2.6 says:
2249         #     For applications that do not wish to conform to the POSIX or
2250         #     X/Open  specifications,  the  64-bit transitional interfaces
2251         #     are available by default.  No compile-time flags need to  be
2252         #     set.
2253         # But gcc 2.7.2.x fails to define _LARGEFILE64_SOURCE by default.
2254         # The native compiler, gcc 2.8.x, and egcs don't have this problem.
2255         if test -n "$GNU_CC"; then
2256             AC_DEFINE(_LARGEFILE64_SOURCE)
2257         fi
2258         ;;
2259     esac
2260     case "${target_os}" in
2261     solaris2.3*)
2262         ;;
2263     solaris2.4*)
2264         ;;
2265     solaris2.5*)
2266         ;;
2267     solaris2.6*)
2268         ;;
2269     solaris2.7*)
2270         ;;
2271     *)
2272         # Solaris 8 or higher has IPv6.
2273         AC_DEFINE(_PR_INET6)
2274         ;;
2275     esac
2276     if test "$CPU_ARCH" = "sparc"; then
2277         # 64-bit Solaris SPARC requires V9 architecture, so the following
2278         # is not needed.
2279         if test -z "$USE_64"; then
2280             ULTRASPARC_LIBRARY=nspr_flt
2281         fi
2282     fi
2283     # Purify requires that binaries linked against nspr also
2284     # be linked against -lrt (or -lposix4) so add it to OS_LIBS
2285     _rev=`uname -r`
2286     _librt=`echo $_rev 5.6 | awk '{ if ($1 > $2) print "-lrt"; else print "-lposix4" }'`
2287     OS_LIBS="$OS_LIBS $_librt"
2288     ;;
2290 *-sco-sysv5*)
2291     AC_DEFINE(XP_UNIX)
2292     AC_DEFINE(UNIXWARE)
2293     AC_DEFINE(SVR4)
2294     AC_DEFINE(SYSV)
2295     USE_NSPR_THREADS=1
2296     if echo $OS_RELEASE | grep -c 2.1 2>/dev/null; then
2297         AC_DEFINE(_PR_NO_LARGE_FILES)
2298         CC='$(NSDEPTH)/build/hcc cc'
2299         CXX='$(NSDEPTH)/build/hcpp CC'
2300         MDCPUCFG_H=_unixware.cfg
2301     else
2302         AC_DEFINE(_LARGEFILE64_SOURCE)
2303         AC_DEFINE(_PR_HAVE_OFF64_T)
2304         AC_DEFINE(_PR_HAVE_SOCKADDR_LEN)
2305         MDCPUCFG_H=_unixware7.cfg
2306     fi
2307     PR_MD_CSRCS=unixware.c
2308     DSO_LDOPTS=-G
2309     CPU_ARCH=x86
2310     ;;
2312 *-symbian*)
2313     AC_ARG_WITH(symbian-sdk,
2314     [  --with-symbian-sdk=SYMBIAN_SDK_DIR
2315                           The path to the Symbian SDK],
2316     SYMBIAN_SDK_DIR=$withval)
2318     echo -----------------------------------------------------------------------------
2319     echo Building with Symbian SDK in: $SYMBIAN_SDK_DIR
2320     echo -----------------------------------------------------------------------------
2322     AC_DEFINE(XP_UNIX)
2323     AC_DEFINE(SYMBIAN)
2324     AC_DEFINE(__arm__)
2325     AC_DEFINE(__SYMBIAN32__)
2326     AC_DEFINE(_UNICODE)
2327     AC_DEFINE(NDEBUG)
2328     AC_DEFINE(__SUPPORT_CPP_EXCEPTIONS__)
2329     AC_DEFINE(MOZ_STDERR_TO_STDOUT)
2330     AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
2331     AC_DEFINE(HAVE_SOCKLEN_T)
2332     USE_PTHREADS=1
2333     LIB_SUFFIX=lib
2334     DLL_SUFFIX=dll
2335     MKSHLIB=
2336     DSO_LDOPTS=
2337     DSO_CFLAGS=
2338     VISIBILITY_FLAGS=
2339     MDCPUCFG_H=_symbian.cfg
2340     PR_MD_CSRCS=symbian.c
2341     NSINSTALL=nsinstall
2342     RANLIB='echo no ranlib '
2343     CPU_ARCH=ARM
2344     OS_ARCH=SYMBIAN
2345     OS_EXE_CFLAGS="$OS_EXE_CFLAGS -D__EXE__"
2346     CFLAGS="$CFLAGS -MD -nostdinc"
2347     SYMBIAN_SYS_INCLUDE="-I$SYMBIAN_SDK_DIR/Epoc32/include/variant -I$SYMBIAN_SDK_DIR/Epoc32/include -I$SYMBIAN_SDK_DIR/Epoc32/include/stdapis"
2348     echo -------------------------------------------------------
2349     echo SYMBIAN_SYS_INCLUDE is: $SYMBIAN_SYS_INCLUDE
2350     echo -------------------------------------------------------
2351     case "$OS_TARGET" in
2352     WINSCW)
2353         CC=mwccsym2.exe
2354         CXX=mwccsym2.exe
2355         LD=mwldsym2.exe
2356         AR=mwldsym2.exe
2357         WINSCW_LD_DIR="\$(SYMBIAN_SDK_DIR)/EPOC32/RELEASE/WINSCW/UDEB"
2358         CFLAGS="$CFLAGS -O0 -inline off -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I\$(VPATH)"
2359         SYMBIAN_SYS_INCLUDE="$SYMBIAN_SYS_INCLUDE -include Symbian_OS_v9.2.hrh"
2360         AR_FLAGS="-library -msgstyle gcc -stdlib -subsystem windows -noimplib -o \$@"
2361         AC_DEFINE(_DEBUG)
2362         AC_DEFINE(__CW32__)
2363         AC_DEFINE(__WINS__)
2364         AC_DEFINE(__WINSCW__)
2365         DEFINES="$DEFINES -U_WIN32"
2366             ;;
2367     GCCE)
2368         CFLAGS="$CFLAGS -Wall -Wno-unknown-pragmas -fexceptions -march=armv5t -mapcs -pipe -x c -msoft-float"
2369         CXXFLAGS="$CXXFLAGS $CFLAGS -Wno-ctor-dtor-privacy"
2370         SYMBIAN_SYS_INCLUDE="$SYMBIAN_SYS_INCLUDE -include $SYMBIAN_SDK_DIR/EPOC32/INCLUDE/GCCE/GCCE.h"
2371         AC_DEFINE(__GCCE__)
2372         AC_DEFINE(__EABI__)
2373         DEFINES="$DEFINES -D__PRODUCT_INCLUDE__=$SYMBIAN_SDK_DIR/Epoc32/include/variant/Symbian_OS_v9.2.hrh"
2374             ;;
2375     *)
2376             AC_MSG_ERROR([Missing OS_TARGET for ${target}. Set --enable-symbian-target to with 'WINSCW' or 'GCCE'.])
2377         ;;
2378     esac
2379     CFLAGS="$CFLAGS ${SYMBIAN_SYS_INCLUDE}"
2380     ;;
2382 *-os2*)
2383     AC_DEFINE(XP_OS2)
2384     AC_DEFINE(XP_PC)
2385     AC_DEFINE(BSD_SELECT)
2386     AC_DEFINE(TCPV40HDRS)
2387     LIB_SUFFIX=lib
2388     DLL_SUFFIX=dll
2389     RC=rc.exe
2390     PR_MD_ARCH_DIR=os2
2391     PROG_SUFFIX=.exe
2392     NSINSTALL=nsinstall
2393     MDCPUCFG_H=_os2.cfg
2394     RESOLVE_LINK_SYMBOLS=1
2396     AC_DEFINE(OS2)
2397     AR=emxomfar
2398     AR_FLAGS='r $@'
2399     CFLAGS="$CFLAGS -Wall -Zomf"
2400     CXXFLAGS="$CFLAGS -Wall -Zomf"
2401     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2402     DSO_CFLAGS=
2403     DSO_LDOPTS='-Zomf -Zdll'
2404     LDFLAGS='-Zmap'
2405     _OPTIMIZE_FLAGS="-O2 -s"
2406     _DEBUG_FLAGS="-g -fno-inline"
2407     if test -n "$MOZ_OPTIMIZE"; then
2408       DSO_LDOPTS="$DSO_LDOPTS -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2409     fi
2410     IMPLIB='emximp -o'
2411     FILTER='emxexp -o'
2412     if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2413       LDFLAGS="$LDFLAGS -Zhigh-mem"
2414       AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2415     fi
2417     # GCC for OS/2 currently predefines these, but we don't want them
2418     DEFINES="$DEFINES -Uunix -U__unix -U__unix__"
2419     ;;
2422     AC_DEFINE(XP_UNIX)
2423     ;;
2424    
2425 esac
2427 if test -z "$SKIP_LIBRARY_CHECKS"; then
2428 dnl ========================================================
2429 dnl Check for system libraries
2430 dnl ========================================================
2431 dnl AC_CHECK_LIB(C, main)
2432 dnl AC_CHECK_LIB(C_r, main)
2433 dnl AC_CHECK_LIB(c, main)
2434 dnl AC_CHECK_LIB(c_r, main)
2435 dnl AC_CHECK_LIB(dce, main)
2436 dnl AC_CHECK_LIB(dl, main)
2437 dnl AC_CHECK_LIB(dld, main)
2438 dnl AC_CHECK_LIB(gen, main)
2439 dnl AC_CHECK_LIB(ip6, main)
2440 dnl AC_CHECK_LIB(l, main)
2441 dnl AC_CHECK_LIB(m, main)
2442 dnl AC_CHECK_LIB(nsl, main)
2443 dnl AC_CHECK_LIB(posix4, main)
2444 dnl AC_CHECK_LIB(prstrms, main)
2445 dnl AC_CHECK_LIB(prstrms_shr, main)
2446 dnl AC_CHECK_LIB(pthread, main)
2447 dnl AC_CHECK_LIB(pthreads, main)
2448 dnl AC_CHECK_LIB(resolv, main)
2449 dnl AC_CHECK_LIB(rt, main)
2450 dnl AC_CHECK_LIB(socket, main)
2451 dnl AC_CHECK_LIB(svld, main)
2452 dnl AC_CHECK_LIB(thread, main)
2453 dnl AC_CHECK_LIB(vms_jackets, main)
2456 dnl We don't want anything to link with libdl even if it's present on OS X, 
2457 dnl since it's not used and not part of the default installation.
2458 dnl The same goes for BeOS.
2459 dnl OS/2 has dlfcn in libc.
2461 case $target in
2462 *-darwin*|*-beos*|*-os2*)
2463     ;;
2465     AC_CHECK_LIB(dl, dlopen,
2466         AC_CHECK_HEADER(dlfcn.h,
2467             OS_LIBS="-ldl $OS_LIBS"))
2468     ;;
2469 esac
2472 dnl ========================================================
2473 dnl Check for system header files.
2474 dnl ========================================================
2475 dnl AC_HEADER_DIRENT
2476 dnl AC_HEADER_STDC
2477 dnl AC_HEADER_SYS_WAIT
2478 dnl AC_CHECK_HEADERS(fcntl.h limits.h sys/file.h sys/ioctl.h sys/time.h unistd.h)
2480 dnl ========================================================
2481 dnl Check for typedefs and structs
2482 dnl ========================================================
2483 dnl AC_C_CONST
2484 dnl AC_TYPE_UID_T
2485 dnl AC_TYPE_MODE_T
2486 dnl AC_TYPE_OFF_T
2487 dnl AC_TYPE_PID_T
2488 dnl AC_TYPE_SIZE_T
2489 dnl AC_STRUCT_ST_BLKSIZE
2490 dnl AC_STRUCT_ST_BLOCKS
2491 dnl AC_STRUCT_ST_RDEV
2492 dnl AC_HEADER_TIME
2493 dnl AC_STRUCT_TM
2495 dnl ========================================================
2496 dnl Checks for library functions.
2497 dnl ========================================================
2498 AC_PROG_GCC_TRADITIONAL
2499 AC_CHECK_FUNCS(lchown strerror)
2501 dnl AC_FUNC_MEMCMP
2502 dnl AC_FUNC_MMAP
2503 dnl AC_FUNC_SETVBUF_REVERSED
2504 dnl AC_FUNC_STRCOLL
2505 dnl AC_FUNC_STRFTIME
2506 dnl AC_FUNC_UTIME_NULL
2507 dnl AC_FUNC_VPRINTF
2508 dnl AC_CHECK_FUNCS(ftime getcwd gethostname gettimeofday getwd mkdir mktime putenv rmdir select socket strdup strerror strstr strtol strtoul uname)
2510 dnl ========================================================
2511 dnl Check options
2512 dnl ========================================================
2514 dnl ========================================================
2515 dnl =
2516 dnl = --enable-strip
2517 dnl = 
2518 dnl = Enable stripping of libs and executables
2519 dnl = 
2520 dnl ========================================================
2521 AC_ARG_ENABLE(strip,
2522     [  --enable-strip          Enable stripping of shared libs and programs],
2523     [ if test "$enableval" = "yes"; then
2524             ENABLE_STRIP=1
2525       fi ])
2527 dnl Check for hpux options
2528 case "${target_os}" in
2529 hpux*)
2530 if test -z "$GNU_CC"; then
2532     AC_CACHE_CHECK(for +Olit support,
2533         ac_cv_hpux_usable_olit_option,
2534         dnl since aCC doesn't throw an error on invalid options,
2535         dnl we have to test this the hard way
2536         [ac_cv_hpux_usable_olit_option=no
2537         rm -f conftest*
2538         echo 'int main() { return 0; }' | cat > conftest.c
2539         ${CC-cc} ${CFLAGS} +Olit=all -o conftest conftest.c > conftest.out 2>&1
2540         if test $? -eq 0; then
2541             if test -z "`egrep -i '(unrecognize|unknown)' conftest.out`"; then
2542                 ac_cv_hpux_usable_olit_option=yes
2543             fi
2544         fi
2545         rm -f conftest*
2546         ])
2548     if test "$ac_cv_hpux_usable_olit_option" = "yes"; then
2549         CFLAGS="$CFLAGS +Olit=all"
2550         CXXFLAGS="$CXXFLAGS +Olit=all"
2551     else
2552         CFLAGS="$CFLAGS +ESlit"
2553         CXXFLAGS="$CXXFLAGS +ESlit"
2554     fi
2557 esac
2560 dnl Apparently, some systems cannot properly check for the pthread
2561 dnl library unless <pthread.h> is included so we need to test
2562 dnl using it
2564 dnl MOZ_CHECK_PTHREADS(lib, success, failure)
2565 AC_DEFUN(MOZ_CHECK_PTHREADS,
2567 AC_MSG_CHECKING([for pthread_create in -l$1])
2568 echo "
2569     #include <pthread.h> 
2570     void *foo(void *v) { return v; } 
2571     int main() { 
2572         pthread_t t;
2573         if (!pthread_create(&t, 0, &foo, 0)) {
2574             pthread_join(t, 0);
2575         }
2576         return 0;
2577     }" > dummy.c ;
2578     echo "${CC-cc} -o dummy${ac_exeext} dummy.c $CFLAGS $CPPFLAGS -l[$1] $LDFLAGS $LIBS" 1>&5;
2579     ${CC-cc} -o dummy${ac_exeext} dummy.c $CFLAGS $CPPFLAGS -l[$1] $LDFLAGS $LIBS 2>&5;
2580     _res=$? ;
2581     rm -f dummy.c dummy${ac_exeext} ;
2582     if test "$_res" = "0"; then
2583         AC_MSG_RESULT([yes])
2584         [$2]
2585     else
2586         AC_MSG_RESULT([no])
2587         [$3]
2588     fi
2591 case "$target_os" in
2592 darwin*)
2593     _HAVE_PTHREADS=1
2594     ;;
2595 wince*)
2596     _HAVE_PTHREADS=
2597     ;;
2599     MOZ_CHECK_PTHREADS(pthreads,
2600         _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
2601         MOZ_CHECK_PTHREADS(pthread,
2602             _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
2603             MOZ_CHECK_PTHREADS(c_r,
2604                 _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
2605                 MOZ_CHECK_PTHREADS(c,
2606                     _HAVE_PTHREADS=1
2607                 )
2608             )
2609         )
2610     )
2611     ;;
2612 esac
2614 AC_ARG_WITH(pthreads,
2615     [  --with-pthreads         Use system pthreads library as thread subsystem],
2616     [ if test "$withval" = "yes"; then
2617             if test -n "$_HAVE_PTHREADS"; then
2618                     USE_PTHREADS=1 
2619                     USE_USER_PTHREADS=
2620                     USE_NSPR_THREADS=
2621             else
2622                     AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
2623             fi
2624           else
2625             USE_PTHREADS=
2626             _PTHREAD_LDFLAGS=
2627           fi],
2628         [ if test -n "$_HAVE_PTHREADS" && test -z "$USE_USER_PTHREADS" && test -z "$USE_NSPR_THREADS"; then
2629             USE_PTHREADS=1
2630             USE_USER_PTHREADS=
2631             USE_NSPR_THREADS=
2632           fi])
2634 AC_ARG_ENABLE(user-pthreads,
2635     [  --enable-user-pthreads  Build using userland pthreads],
2636     [ if test "$enableval" = "yes"; then
2637         if test -n "$_HAVE_PTHREADS"; then
2638                     USE_PTHREADS=
2639                     USE_USER_PTHREADS=1
2640                     USE_NSPR_THREADS=
2641             else
2642                     AC_MSG_ERROR([ --enable-user-pthreads specified for a system without pthread support ]);
2643             fi
2644           fi])
2646 AC_ARG_ENABLE(nspr-threads,
2647     [  --enable-nspr-threads   Build using classic nspr threads],
2648     [ if test "$enableval" = "yes"; then
2649             USE_PTHREADS=
2650             USE_USER_PTHREADS=
2651             USE_NSPR_THREADS=1
2652           fi])
2654 case "$target" in
2655 *-beos*)
2656     AC_ARG_WITH(bthreads,
2657     [  --with-bthreads         Use system bthreads library as thread subsystem
2658                           (BeOS only)],
2659     [   if test "$withval" = "yes"; then
2660             USE_BTHREADS=1
2661                 USE_USER_PTHREADS=
2662                 USE_PTHREADS=
2663             fi])
2664     ;;
2665 esac
2667 fi # SKIP_LIBRARY_CHECKS
2669 AC_ARG_ENABLE(ipv6,
2670     [  --enable-ipv6           Compile ipv6 support],
2671     [ if test "$enableval" = "yes"; then
2672             USE_IPV6=1
2673       else
2674             USE_IPV6=
2675       fi])
2678 AC_ARG_ENABLE(boehm,
2679     [  --enable-boehm          Enable the Boehm Garbage Collector],
2680     [ if test "$enableval" = "yes"; then
2681         AC_DEFINE(GC_LEAK_DETECTOR)
2682         GC_LEAK_DETECTOR=1
2683     fi])
2685 if test -n "$USE_PTHREADS"; then
2686    dnl See if -pthread is supported.
2687    rm -f conftest*
2688    ac_cv_have_dash_pthread=no
2689    AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
2690    echo 'int main() { return 0; }' | cat > conftest.c
2691    ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
2692    if test $? -eq 0; then
2693         if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
2694             ac_cv_have_dash_pthread=yes
2695                 case "$target_os" in
2696             freebsd*)
2697 # Freebsd doesn't use -pthread for compiles, it uses them for linking
2698             ;;
2699             *)
2700             CFLAGS="$CFLAGS -pthread"
2701             CXXFLAGS="$CXXFLAGS -pthread"
2702             ;;
2703         esac
2704         fi
2705     fi
2706     rm -f conftest*
2707     AC_MSG_RESULT($ac_cv_have_dash_pthread)
2709         dnl
2710         dnl See if -pthreads is supported.
2711         dnl
2712     ac_cv_have_dash_pthreads=no
2713     if test "$ac_cv_have_dash_pthread" = "no"; then
2714             AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
2715         echo 'int main() { return 0; }' | cat > conftest.c
2716             ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
2717         if test $? -eq 0; then
2718                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
2719                             ac_cv_have_dash_pthreads=yes
2720                             CFLAGS="$CFLAGS -pthreads"
2721                             CXXFLAGS="$CXXFLAGS -pthreads"
2722                     fi
2723             fi
2724             rm -f conftest*
2725         AC_MSG_RESULT($ac_cv_have_dash_pthreads)
2726     fi
2728     case "$target" in
2729     *-solaris*)
2730         if test "$ac_cv_have_dash_pthreads" = "yes"; then
2731             _PTHREAD_LDFLAGS=
2732         fi
2733             ;;
2734     *-freebsd*)
2735             AC_DEFINE(_REENTRANT)
2736             AC_DEFINE(_THREAD_SAFE)
2737             dnl -pthread links in -lc_r, so don't specify it explicitly.
2738             if test "$ac_cv_have_dash_pthread" = "yes"; then
2739                 _PTHREAD_LDFLAGS="-pthread"
2740             else
2741                 _PTHREAD_LDFLAGS="-lc_r"
2742             fi
2743             ;;
2744     *-netbsd*)
2745             if test "$ac_cv_have_dash_pthread" = "yes"; then
2746                 _PTHREAD_LDFLAGS="-pthread"
2747             fi
2748             ;;
2749     *-bsdi*)
2750             AC_DEFINE(_THREAD_SAFE)
2751             dnl -pthread links in -lc_r, so don't specify it explicitly.
2752             if test "$ac_cv_have_dash_pthread" = "yes"; then
2753                 _PTHREAD_LDFLAGS=
2754             fi
2755             ;;
2756     *-openbsd*)
2757         if test "$ac_cv_have_dash_pthread" = "yes"; then
2758             _PTHREAD_LDFLAGS=-pthread
2759         fi
2760         ;;
2761     *-linux*|*-gnu*|*-k*bsd*-gnu)
2762         AC_DEFINE(_REENTRANT)
2763         ;;
2764     esac
2766 else 
2767     if test -n "$USE_USER_PTHREADS"; then
2768             USE_PTHREADS=
2769             USE_NSPR_THREADS=
2770     else
2771         _PTHREAD_LDFLAGS=
2772     fi
2774 dnl Special thread exceptions
2776 case "$target" in
2777 *-aix*)
2778     if test -n "$USE_NSPR_THREADS"; then
2779         AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2780     fi
2781     case "$target_os" in
2782     aix4.1*)
2783         if test -z "$USE_PTHREADS"; then
2784             AC_DEFINE(AIX_RENAME_SELECT)
2785         fi
2786         ;;
2787     aix4.2*)
2788         if test -z "$USE_NSPR_THREADS"; then
2789             AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
2790         fi
2791         ;;
2792     aix4.3*)
2793         if test -z "$USE_NSPR_THREADS"; then
2794             AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
2795         fi
2796         if test -n "$USE_PTHREADS"; then
2797             AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
2798         fi
2799         ;;
2800     *)
2801         if test -z "$USE_NSPR_THREADS"; then
2802             AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
2803         fi
2804         if test -n "$USE_PTHREADS"; then
2805             AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
2806         fi
2807         ;;
2808     esac
2809     ;;
2810 *-bsdi*)
2811     if test -n "$USE_PTHREADS"; then
2812         AC_DEFINE(_PR_NEED_PTHREAD_INIT)
2813     fi
2814     ;;
2815 *-freebsd*)
2816     if test -n "$USE_NSPR_THREADS"; then
2817         AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2818     fi
2819     ;;
2820 *-hpux*)
2821     if test -n "$USE_NSPR_THREADS"; then
2822         AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2823     fi 
2824     if test "$USE_PTHREADS"; then
2825         if echo "$OS_RELEASE" | egrep '^(B.10.10|B.10.20)' >/dev/null; then
2826             AC_DEFINE(_REENTRANT)
2827             AC_DEFINE(_PR_DCETHREADS)
2828         else
2829             AC_DEFINE_UNQUOTED(_POSIX_C_SOURCE,199506L)
2830             AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
2831         fi
2832     fi
2833     if test "$USE_USER_PTHREADS"; then
2834         AC_DEFINE_UNQUOTED(_POSIX_C_SOURCE,199506L)
2835     fi
2836     ;;
2837 *-irix*)
2838     if test "${target_os}" = "irix6.5"; then
2839         if test -n "$USE_PTHREADS"; then
2840             AC_DEFINE(_PR_HAVE_GETHOST_R)
2841             AC_DEFINE(_PR_HAVE_GETHOST_R_POINTER)
2842         fi
2843     fi
2844     ;;
2845 *-linux*|*-gnu*|*-k*bsd*-gnu)
2846     if test -n "$USE_NSPR_THREADS"; then
2847         AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2848     fi
2849     ;;
2850 *-mingw*|*-cygwin*|*-msvc*|*-mks*|*-wince*|*-winmo*|*-os2*|*-beos*)
2851     dnl win32, wince, os2 & beos cannot use pthreads
2852     USE_PTHREADS=
2853     _PTHREAD_LDFLAGS=
2854     USE_USER_PTHREADS=
2855     ;;
2856 *-netbsd*|*-openbsd*)
2857     if test -n "$USE_NSPR_THREADS"; then
2858         AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2859     fi
2860     ;;
2861 *-osf*)
2862     if test -n "$USE_NSPR_THREADS"; then
2863         AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2864     fi
2865     if test -n "$USE_PTHREADS"; then
2866         if echo $OS_RELEASE | egrep -c '(V2.0|V3.2)' 2>/dev/null; then
2867             :
2868         else
2869             AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
2870         fi
2871     fi
2872     ;;
2873 *-solaris*)
2874     if test -n "$USE_NSPR_THREADS"; then
2875         AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2876     fi
2877     if test -n "$USE_PTHREADS"; then
2878         AC_DEFINE(_REENTRANT)
2879         AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
2880         if test "$OS_TEST" = "i86pc"; then
2881             if test -n "$USE_64"; then
2882                PR_MD_ASFILES=os_SunOS_x86_64.s
2883             else
2884                PR_MD_ASFILES=os_SunOS_x86.s
2885             fi
2886         else
2887             if test -n "$USE_64"; then
2888                 PR_MD_ASFILES=os_SunOS_sparcv9.s
2889             fi
2890         fi
2891     fi
2892     ;;
2893 *-nto*)
2894     if test -n "$USE_PTHREADS"; then
2895         AC_DEFINE(_PR_HAVE_GETHOST_R)
2896         AC_DEFINE(_PR_HAVE_GETHOST_R_POINTER)
2897     fi
2898     ;;
2899 esac
2901 OS_LIBS="$_PTHREAD_LDFLAGS $OS_LIBS"
2903 dnl If the user passed in arg to --enable-optimize or --enable-debug,
2904 dnl make sure that we use it.
2905 if test -n "$_SAVE_OPTIMIZE_FLAGS"; then
2906     _OPTIMIZE_FLAGS="$_SAVE_OPTIMIZE_FLAGS"
2909 if test -n "$_SAVE_DEBUG_FLAGS"; then
2910     _DEBUG_FLAGS="$_SAVE_DEBUG_FLAGS"
2913 if test -n "$MOZ_OPTIMIZE"; then
2914     CFLAGS="$CFLAGS $_OPTIMIZE_FLAGS"
2915     CXXFLAGS="$CXXFLAGS $_OPTIMIZE_FLAGS"
2918 if test -n "$MOZ_DEBUG_SYMBOLS"; then
2919     CFLAGS="$CFLAGS $_DEBUG_FLAGS"
2920     CXXFLAGS="$CXXFLAGS $_DEBUG_FLAGS"
2923 if test -n "$MOZ_OPTIMIZE"; then
2924     OBJDIR_TAG=_OPT
2925 else
2926     OBJDIR_TAG=_DBG
2929 if test -n "$USE_64"; then
2930     COMPILER_TAG=_64
2933 RELEASE_OBJDIR_NAME="${OS_CONFIG}${CPU_ARCH_TAG}${COMPILER_TAG}${IMPL_STRATEGY}${OBJDIR_TAG}.${OBJDIR_SUFFIX}"
2935 dnl ========================================================
2936 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
2937 dnl ========================================================
2938 case "$target_os" in
2939 cygwin*|msvc*|mks*)
2940     CC="\$(CYGWIN_WRAPPER) $CC"
2941     CXX="\$(CYGWIN_WRAPPER) $CXX"
2942     RC="\$(CYGWIN_WRAPPER) $RC"
2943     ;;
2944 esac
2946 dnl ========================================================
2947 dnl = Use malloc wrapper lib
2948 dnl ========================================================
2949 AC_ARG_ENABLE(wrap-malloc,
2950 [  --enable-wrap-malloc    Wrap malloc calls (gnu linker only)],
2951 [     if test "$enableval" = "yes"; then
2952             _WRAP_MALLOC=1
2953       fi ])
2955 if test -n "$_WRAP_MALLOC"; then
2956     if test "$GNU_CC"; then
2957        WRAP_MALLOC_CFLAGS="${LDFLAGS} -Wl,--wrap -Wl,malloc -Wl,--wrap -Wl,calloc -Wl,--wrap -Wl,valloc -Wl,--wrap -Wl,free -Wl,--wrap -Wl,realloc -Wl,--wrap -Wl,memalign -Wl,--wrap -Wl,__builtin_new -Wl,--wrap -Wl,__builtin_vec_new -Wl,--wrap -Wl,__builtin_delete -Wl,--wrap -Wl,__builtin_vec_delete -Wl,--wrap -Wl,PR_Free -Wl,--wrap -Wl,PR_Malloc -Wl,--wrap -Wl,PR_Calloc -Wl,--wrap -Wl,PR_Realloc -Wl,--wrap -Wl,strdup -Wl,--wrap -Wl,strndup -Wl,--wrap -Wl,posix_memalign"
2958        DSO_LDOPTS="$DSO_LDOPTS $WRAP_MALLOC_CFLAGS"
2959     else
2960        AC_MSG_ERROR([--enable-wrap-malloc is not supported for non-GNU toolchains])
2961     fi
2964 dnl ========================================================
2965 dnl = Location of malloc wrapper lib
2966 dnl ========================================================
2967 AC_ARG_WITH(wrap-malloc,
2968 [  --with-wrap-malloc=SHAREDLIB  Location of malloc wrapper library],
2969     WRAP_MALLOC_LIB=$withval)
2971 dnl ========================================================
2972 dnl Substitution of found variables.
2973 dnl ========================================================
2974 AC_SUBST(SHELL_OVERRIDE)
2976 AC_SUBST(MOZILLA_CLIENT)
2977 AC_SUBST(CC)
2978 AC_SUBST(CXX)
2979 AC_SUBST(CFLAGS)
2980 AC_SUBST(CXXFLAGS)
2981 AC_SUBST(CPPFLAGS)
2982 AC_SUBST(HOST_CC)
2983 AC_SUBST(HOST_CFLAGS)
2984 AC_SUBST(LDFLAGS)
2985 AC_SUBST(HOST_LDFLAGS)
2986 AC_SUBST(GNU_CC)
2987 AC_SUBST(GCC_USE_GNU_LD)
2988 AC_SUBST(MSC_VER)
2989 AC_SUBST(CROSS_COMPILE)
2991 AC_SUBST(MOZ_OPTIMIZE)
2992 AC_SUBST(MOZ_DEBUG)
2993 AC_SUBST(MOZ_DEBUG_SYMBOLS)
2995 AC_SUBST(USE_CPLUS)
2996 AC_SUBST(USE_IPV6)
2997 AC_SUBST(USE_N32)
2998 AC_SUBST(USE_64)
2999 AC_SUBST(OBJECT_MODE)
3000 AC_SUBST(GC_LEAK_DETECTOR)
3001 AC_SUBST(ENABLE_STRIP)
3003 AC_SUBST(USE_PTHREADS)
3004 AC_SUBST(USE_BTHREADS)
3005 AC_SUBST(USE_USER_PTHREADS)
3006 AC_SUBST(USE_NSPR_THREADS)
3008 AC_SUBST(LIBNSPR)
3009 AC_SUBST(LIBPLC)
3011 AC_SUBST(MOD_MAJOR_VERSION)
3012 AC_SUBST(MOD_MINOR_VERSION)
3013 AC_SUBST(MOD_PATCH_VERSION)
3014 AC_SUBST(NSPR_MODNAME)
3015 AC_SUBST(MDCPUCFG_H)
3016 AC_SUBST(PR_MD_CSRCS)
3017 AC_SUBST(PR_MD_ASFILES)
3018 AC_SUBST(PR_MD_ARCH_DIR)
3019 AC_SUBST(CPU_ARCH)
3021 AC_SUBST(OBJ_SUFFIX)
3022 AC_SUBST(LIB_SUFFIX)
3023 AC_SUBST(DLL_SUFFIX)
3024 AC_SUBST(ASM_SUFFIX)
3025 AC_SUBST(WRAP_MALLOC_CFLAGS)
3026 AC_SUBST(WRAP_MALLOC_LIB)
3027 AC_SUBST(MKSHLIB)
3028 AC_SUBST(DSO_CFLAGS)
3029 AC_SUBST(DSO_LDOPTS)
3031 AC_SUBST(OS_TARGET)
3032 AC_SUBST(OS_ARCH)
3033 AC_SUBST(OS_RELEASE)
3034 AC_SUBST(OS_TEST)
3035 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3037 AC_SUBST(DEFINES)
3038 AC_SUBST(DEFS)
3039 AC_SUBST(AR)
3040 AC_SUBST(AR_FLAGS)
3041 AC_SUBST(AS)
3042 AC_SUBST(ASFLAGS)
3043 AC_SUBST(LD)
3044 AC_SUBST(RANLIB)
3045 AC_SUBST(PERL)
3046 AC_SUBST(STRIP)
3047 AC_SUBST(FILTER)
3048 AC_SUBST(IMPLIB)
3050 AC_SUBST(PROFILE_GEN_CFLAGS)
3051 AC_SUBST(PROFILE_GEN_LDFLAGS)
3052 AC_SUBST(PROFILE_USE_CFLAGS)
3053 AC_SUBST(PROFILE_USE_LDFLAGS)
3055 AC_SUBST(OS_LIBS)
3056 AC_SUBST(RESOLVE_LINK_SYMBOLS)
3057 AC_SUBST(AIX_LINK_OPTS)
3058 AC_SUBST(NOSUCHFILE)
3059 AC_SUBST(MOZ_OBJFORMAT)
3060 AC_SUBST(ULTRASPARC_LIBRARY)
3062 AC_SUBST(OBJDIR)
3063 AC_SUBST(OBJDIR_NAME)
3064 AC_SUBST(RELEASE_OBJDIR_NAME)
3065 AC_SUBST(NSINSTALL)
3066 AC_SUBST(OPTIMIZER)
3067 AC_SUBST(RC)
3068 AC_SUBST(RCFLAGS)
3069 AC_SUBST(DLLFLAGS)
3070 AC_SUBST(EXEFLAGS)
3071 AC_SUBST(OS_DLLFLAGS)
3072 AC_SUBST(CYGWIN_WRAPPER)
3073 AC_SUBST(VISIBILITY_FLAGS)
3074 AC_SUBST(WRAP_SYSTEM_INCLUDES)
3075 AC_SUBST(MACOS_SDK_DIR)
3076 AC_SUBST(SYMBIAN_SDK_DIR)
3077 AC_SUBST(NEXT_ROOT)
3078 AC_SUBST(MT)
3080 dnl ========================================================
3081 dnl Generate output files.
3082 dnl ========================================================
3083 MAKEFILES="
3084 Makefile 
3085 config/Makefile
3086 config/autoconf.mk
3087 config/nsprincl.mk
3088 config/nsprincl.sh
3089 config/nspr-config
3090 lib/Makefile 
3091 lib/ds/Makefile 
3092 lib/libc/Makefile 
3093 lib/libc/include/Makefile 
3094 lib/libc/src/Makefile 
3095 lib/tests/Makefile
3096 pkg/Makefile
3097 pkg/linux/Makefile
3098 pkg/solaris/Makefile
3099 pkg/solaris/SUNWpr/Makefile
3100 pkg/solaris/SUNWprd/Makefile
3101 pr/Makefile 
3102 pr/include/Makefile 
3103 pr/include/md/Makefile 
3104 pr/include/obsolete/Makefile 
3105 pr/include/private/Makefile 
3106 pr/src/Makefile 
3107 pr/src/io/Makefile 
3108 pr/src/linking/Makefile 
3109 pr/src/malloc/Makefile 
3110 pr/src/md/Makefile 
3111 pr/src/md/${PR_MD_ARCH_DIR}/Makefile 
3112 pr/src/memory/Makefile 
3113 pr/src/misc/Makefile 
3114 pr/src/threads/Makefile 
3115 pr/tests/Makefile 
3116 pr/tests/dll/Makefile 
3119 dnl lib/tests/Makefile
3120 dnl pr/tests/w16gui/Makefile
3121 dnl tools/Makefile
3123 if test -z "$USE_PTHREADS" && test -z "$USE_BTHREADS"; then
3124     MAKEFILES="$MAKEFILES pr/src/threads/combined/Makefile"
3125 elif test -n "$USE_PTHREADS"; then
3126     MAKEFILES="$MAKEFILES pr/src/pthreads/Makefile"
3127 elif test -n "$USE_BTHREADS"; then
3128     MAKEFILES="$MAKEFILES pr/src/bthreads/Makefile"
3131 if test -n "$USE_CPLUS"; then
3132     MAKEFILES="$MAKEFILES pr/src/cplus/Makefile pr/src/cplus/tests/Makefile"
3135 echo $MAKEFILES > unallmakefiles
3137 AC_OUTPUT([$MAKEFILES], [chmod +x config/nspr-config])