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