Bumping gaia.json for 2 gaia-central revision(s) a=gaia-bump
[gecko.git] / nsprpub / configure.in
blob4b140c4e9db41f09ec8fab314adecdbd352519cc
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=2
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 case "$target" in
1010 arm*-android*|arm*-linuxandroid*)
1011     MOZ_THUMB=yes
1012     MOZ_ARCH=armv7-a
1013     MOZ_FPU=vfp
1014     MOZ_FLOAT_ABI=softfp
1015     MOZ_SOFT_FLOAT=yes
1016     ;;
1017 arm*-*)
1018     if test -n "$MOZ_PLATFORM_MAEMO"; then
1019         MOZ_THUMB=no
1020         MOZ_ARCH=armv7-a
1021         MOZ_FLOAT_ABI=softfp
1022     fi
1023     if test "$MOZ_PLATFORM_MAEMO" = 6; then
1024         MOZ_THUMB=yes
1025     fi
1026     ;;
1027 esac
1029 dnl Kept for compatibility with some buildbot mozconfig
1030 AC_ARG_ENABLE(thumb2, [], MOZ_THUMB=$enableval)
1032 AC_ARG_WITH(thumb,
1033 [  --with-thumb[[=yes|no|toolchain-default]]]
1034 [                          Use Thumb instruction set (-mthumb)],
1035     if test -z "$GNU_CC"; then
1036         AC_MSG_ERROR([--with-thumb is not supported on non-GNU toolchain-defaults])
1037     fi
1038     MOZ_THUMB=$withval)
1040 AC_ARG_WITH(thumb-interwork,
1041 [  --with-thumb-interwork[[=yes|no|toolchain-default]]
1042                            Use Thumb/ARM instuctions interwork (-mthumb-interwork)],
1043     if test -z "$GNU_CC"; then
1044         AC_MSG_ERROR([--with-thumb-interwork is not supported on non-GNU toolchain-defaults])
1045     fi
1046     MOZ_THUMB_INTERWORK=$withval)
1048 AC_ARG_WITH(arch,
1049 [  --with-arch=[[type|toolchain-default]]
1050                            Use specific CPU features (-march=type)],
1051     if test -z "$GNU_CC"; then
1052         AC_MSG_ERROR([--with-arch is not supported on non-GNU toolchain-defaults])
1053     fi
1054     MOZ_ARCH=$withval)
1056 AC_ARG_WITH(fpu,
1057 [  --with-fpu=[[type|toolchain-default]]
1058                            Use specific FPU type (-mfpu=type)],
1059     if test -z "$GNU_CC"; then
1060         AC_MSG_ERROR([--with-fpu is not supported on non-GNU toolchain-defaults])
1061     fi
1062     MOZ_FPU=$withval)
1064 AC_ARG_WITH(float-abi,
1065 [  --with-float-abi=[[type|toolchain-default]]
1066                            Use specific arm float ABI (-mfloat-abi=type)],
1067     if test -z "$GNU_CC"; then
1068         AC_MSG_ERROR([--with-float-abi is not supported on non-GNU toolchain-defaults])
1069     fi
1070     MOZ_FLOAT_ABI=$withval)
1072 AC_ARG_WITH(soft-float,
1073 [  --with-soft-float[[=yes|no|toolchain-default]]
1074                            Use soft float library (-msoft-float)],
1075     if test -z "$GNU_CC"; then
1076         AC_MSG_ERROR([--with-soft-float is not supported on non-GNU toolchain-defaults])
1077     fi
1078     MOZ_SOFT_FLOAT=$withval)
1080 case "$MOZ_ARCH" in
1081 toolchain-default|"")
1082     arch_flag=""
1083     ;;
1085     arch_flag="-march=$MOZ_ARCH"
1086     ;;
1087 esac
1089 case "$MOZ_THUMB" in
1090 yes)
1091     MOZ_THUMB2=1
1092     thumb_flag="-mthumb"
1093     ;;
1095     MOZ_THUMB2=
1096     thumb_flag="-marm"
1097     ;;
1099     _SAVE_CFLAGS="$CFLAGS"
1100     CFLAGS="$arch_flag"
1101     AC_TRY_COMPILE([],[return sizeof(__thumb2__);],
1102         MOZ_THUMB2=1,
1103         MOZ_THUMB2=)
1104     CFLAGS="$_SAVE_CFLAGS"
1105     thumb_flag=""
1106     ;;
1107 esac
1109 case "$MOZ_THUMB_INTERWORK" in
1110 yes)
1111     thumb_interwork_flag="-mthumb-interwork"
1112     ;;
1114     thumb_interwork_flag="-mno-thumb-interwork"
1115     ;;
1116 *) # toolchain-default
1117     thumb_interwork_flag=""
1118     ;;
1119 esac
1121 case "$MOZ_FPU" in
1122 toolchain-default|"")
1123     fpu_flag=""
1124     ;;
1126     fpu_flag="-mfpu=$MOZ_FPU"
1127     ;;
1128 esac
1130 case "$MOZ_FLOAT_ABI" in
1131 toolchain-default|"")
1132     float_abi_flag=""
1133     ;;
1135     float_abi_flag="-mfloat-abi=$MOZ_FLOAT_ABI"
1136     ;;
1137 esac
1139 case "$MOZ_SOFT_FLOAT" in
1140 yes)
1141     soft_float_flag="-msoft-float"
1142     ;;
1144     soft_float_flag="-mno-soft-float"
1145     ;;
1146 *) # toolchain-default
1147     soft_float_flag=""
1148     ;;
1149 esac
1151 dnl Use echo to avoid accumulating space characters
1152 all_flags=`echo $arch_flag $thumb_flag $thumb_interwork_flag $fpu_flag $float_abi_flag $soft_float_flag`
1153 if test -n "$all_flags"; then
1154     _SAVE_CFLAGS="$CFLAGS"
1155     CFLAGS="$all_flags"
1156     AC_MSG_CHECKING(whether the chosen combination of compiler flags ($all_flags) works)
1157     AC_TRY_COMPILE([],[return 0;],
1158         AC_MSG_RESULT([yes]),
1159         AC_MSG_ERROR([no]))
1161     CFLAGS="$_SAVE_CFLAGS $all_flags"
1162     CXXFLAGS="$CXXFLAGS $all_flags"
1163     ASFLAGS="$ASFLAGS $all_flags"
1164     if test -n "$thumb_flag"; then
1165         LDFLAGS="$LDFLAGS $thumb_flag"
1166     fi
1169 dnl ========================================================
1170 dnl Override of system specific host options
1171 dnl ========================================================
1172 case "$host" in
1173 *-mingw*)
1174     NSINSTALL=nsinstall
1175     ;;
1176 *-cygwin*|*-msvc*|*-mks*|*-wince*|*-winmo*)
1177     NSINSTALL='$(CYGWIN_WRAPPER) nsinstall'
1178     if test `echo "${PATH}" | grep -c \;` = 0; then
1179         CYGWIN_WRAPPER='sh $(topsrcdir)/build/cygwin-wrapper'
1180     fi
1181     ;;
1182 *-beos*)
1183     HOST_CFLAGS="$HOST_CFLAGS -DXP_BEOS -DBeOS -DBEOS -D_POSIX_SOURCE"
1184     ;;
1185 *os2*)
1186     ;;
1188     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
1189     ;;
1190 esac
1192 dnl ========================================================
1193 dnl Override of system specific target options
1194 dnl ========================================================
1195 case "$target" in
1197 *-aix*)
1198     AC_DEFINE(XP_UNIX)
1199     AC_DEFINE(AIX)
1200     AC_DEFINE(SYSV)
1201     DSO_LDOPTS='-brtl -bnortllib -bM:SRE -bnoentry -bexpall -blibpath:/usr/lib:/lib'
1202     AC_CHECK_HEADER(sys/atomic_op.h, AC_DEFINE(AIX_HAVE_ATOMIC_OP_H))
1203     case "${target_os}" in
1204     aix3.2*)
1205         AC_DEFINE(AIX_RENAME_SELECT)
1206         AC_DEFINE(_PR_NO_LARGE_FILES)
1207         AIX_LINK_OPTS='-bnso -berok'
1208         PR_MD_ASFILES=os_AIX.s
1209         ;;
1210     aix4.1*)
1211         AC_DEFINE(AIX_TIMERS)
1212         AC_DEFINE(_PR_NO_LARGE_FILES)
1213         AC_DEFINE(AIX4_1)
1214         MKSHLIB=
1215         DSO_LDOPTS=
1216         AIX_LINK_OPTS='-bnso -berok'
1217         LIBNSPR='-L$(dist_libdir) -lnspr$(MOD_MAJOR_VERSION)_shr'
1218         LIBPLC='-L$(dist_libdir) -lplc$(MOD_MAJOR_VERSION)_shr'
1219         ;;
1220     aix4.2*)
1221         AC_DEFINE(AIX_TIMERS)
1222         AC_DEFINE(_PR_HAVE_OFF64_T)
1223         AIX_LINK_OPTS='-brtl -bnso -berok'
1224         ;;
1225     aix4.3*)
1226         AC_DEFINE(AIX_TIMERS)
1227         AC_DEFINE(_PR_HAVE_OFF64_T)
1228         AC_DEFINE(AIX4_3_PLUS)
1229         AC_DEFINE(HAVE_SOCKLEN_T)
1230         AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
1231         USE_IPV6=1
1232         AIX_LINK_OPTS='-brtl -bnso -berok'
1233         ;;
1234     *)
1235         AC_DEFINE(AIX_TIMERS)
1236         AC_DEFINE(_PR_HAVE_OFF64_T)
1237         AC_DEFINE(AIX4_3_PLUS)
1238         AC_DEFINE(HAVE_SOCKLEN_T)
1239         AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
1240         USE_IPV6=1
1241         AIX_LINK_OPTS='-brtl -bnso -berok'
1242         ;;
1243     esac
1244     CFLAGS="$CFLAGS -qro -qroconst"
1245     AIX_WRAP='$(DIST)/lib/aixwrap.o'
1246     AIX_TMP='./_aix_tmp.o'
1247     if test -n "$USE_64"; then
1248         MDCPUCFG_H=_aix64.cfg
1249         OBJECT_MODE=64
1250     else
1251         MDCPUCFG_H=_aix32.cfg
1252     fi
1253     PR_MD_CSRCS=aix.c
1254     RESOLVE_LINK_SYMBOLS=1
1255     ;;
1256         
1257 *-beos*)
1258     AC_DEFINE(XP_BEOS)
1259     AC_DEFINE(BeOS)
1260     AC_DEFINE(BEOS)
1261     AC_DEFINE(_POSIX_SOURCE)
1262     DSO_LDOPTS=-nostart
1263     MDCPUCFG_H=_beos.cfg
1264     USE_BTHREADS=1
1265     PR_MD_ARCH_DIR=beos
1266     RESOLVE_LINK_SYMBOLS=1
1267     case "${target_cpu}" in
1268     i*86)
1269         _OPTIMIZE_FLAGS=-O2
1270         _DEBUG_FLAGS='-gdwarf-2 -O0'
1271         MKSHLIB='$(CCC) $(DSO_LDOPTS) -o $@'
1272         AC_CHECK_LIB(bind, gethostbyaddr, [OS_LIBS="$OS_LIBS -lbind -lsocket"])
1273         ;;
1274     powerpc)
1275         CC=mwcc
1276         CCC=mwcc
1277         LD=mwld
1278         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'
1279         _OPTIMIZE_FLAGS=-O2    
1280         _DEBUG_FLAGS='-g -O0'
1281         ;;
1282     esac
1283     ;;
1285 *-bsdi*)
1286     AC_DEFINE(XP_UNIX)
1287     AC_DEFINE(BSDI)
1288     AC_DEFINE(NEED_BSDREGEX)
1290     CFLAGS="$CFLAGS -Wall -Wno-format"
1291     CXXFLAGS="$CXXFLAGS -Wall -Wno-format"
1293     if echo "$OS_TEST" | grep -c 86 >/dev/null; then
1294         CPU_ARCH=x86
1295     elif echo "$OS_TEST" | grep -c sparc >/dev/null; then 
1296         CPU_ARCH=sparc
1297     fi
1299     MDCPUCFG_H=_bsdi.cfg
1300     PR_MD_CSRCS=bsdi.c
1302     DSO_LDOPTS=-r
1304     case "$target_os" in
1305     bsdi1.1*)
1306         AC_DEFINE(_PR_BSDI_JMPBUF_IS_ARRAY)
1307         AC_DEFINE(_PR_STAT_HAS_ONLY_ST_ATIME)
1308         AC_DEFINE(_PR_NEED_H_ERRNO)
1309         MKSHLIB=
1310         DSO_CFLAGS=
1311         DSO_LDOPTS=
1312         ;;
1314     bsdi2.1*)
1315         AC_DEFINE(_PR_TIMESPEC_HAS_TS_SEC)
1316         AC_DEFINE(_PR_BSDI_JMPBUF_IS_ARRAY)
1317         AC_DEFINE(HAVE_DLL)
1318         AC_DEFINE(USE_DLFCN)
1319         AC_DEFINE(_PR_STAT_HAS_ST_ATIMESPEC)
1320         PR_MD_ASFILES=os_BSD_OS_386_2.s
1321         ;;
1323     bsdi4.* | bsdi5.*)
1324         AC_DEFINE(_PR_SELECT_CONST_TIMEVAL)
1325         AC_DEFINE(_PR_BSDI_JMPBUF_IS_STRUCT)
1326         AC_DEFINE(HAVE_DLL)
1327         AC_DEFINE(USE_DLFCN)
1328         AC_DEFINE(_PR_STAT_HAS_ST_ATIMESPEC)
1329         MKSHLIB='$(CC) -o $@ $(DSO_LDOPTS)'
1330         DSO_CFLAGS=-fPIC
1331         DSO_LDOPTS='-shared -Wl,-soname,$(@:$(OBJDIR)/%.so=%.so)'
1332         STRIP="$STRIP -d"
1333         case "$target_os" in
1334         bsdi4.2* | bsdi4.3* | bsdi5.*)
1335             AC_DEFINE(_PR_HAVE_GETPROTO_R)
1336             AC_DEFINE(_PR_HAVE_GETPROTO_R_POINTER)
1337             ;;
1338         esac
1339         ;;
1340     *)
1341         AC_DEFINE(_PR_SELECT_CONST_TIMEVAL)
1342         AC_DEFINE(_PR_BSDI_JMPBUF_IS_STRUCT)
1343         AC_DEFINE(HAVE_DLL)
1344         AC_DEFINE(USE_DLFCN)
1345         AC_DEFINE(_PR_STAT_HAS_ST_ATIMESPEC)
1346         ;;
1347     esac
1349     ;;
1351 *-darwin*)
1352     AC_DEFINE(XP_UNIX)
1353     AC_DEFINE(DARWIN)
1354     AC_DEFINE(HAVE_BSD_FLOCK)
1355     AC_DEFINE(HAVE_SOCKLEN_T)
1356     AS='$(CC) -x assembler-with-cpp'
1357     CFLAGS="$CFLAGS -Wall -fno-common"
1358     case "${target_cpu}" in
1359         arm*)
1360             CPU_ARCH=arm
1361             ;;
1362         i*86*)
1363             if test -n "$USE_64"; then
1364                 CPU_ARCH=x86_64
1365             else        
1366                 CPU_ARCH=i386
1367             fi
1368             ;;
1369         x86_64)
1370             CPU_ARCH=x86_64
1371             ;;
1372         *)
1373             CPU_ARCH=ppc
1374             ;;
1375     esac
1376     if test "`echo $CC | grep -c '\-arch '`" = "0"; then
1377         CC="$CC -arch $CPU_ARCH"
1378     fi
1379     AC_CHECK_HEADER(crt_externs.h)
1380     DSO_CFLAGS=-fPIC
1381     DSO_LDOPTS='-dynamiclib -compatibility_version 1 -current_version 1 -all_load -install_name @executable_path/$@ -headerpad_max_install_names'
1382     _OPTIMIZE_FLAGS=-O2
1383     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1384     STRIP="$STRIP -x -S"
1385     DLL_SUFFIX=dylib
1386     USE_PTHREADS=1
1387     MDCPUCFG_H=_darwin.cfg
1388     PR_MD_CSRCS=darwin.c
1389     PR_MD_ASFILES=os_Darwin.s
1391     # Add Mac OS X support for loading CFM & CFBundle plugins
1392     if test -f "${MACOS_SDK_DIR}/System/Library/Frameworks/Carbon.framework/Carbon"; then
1393         AC_DEFINE(XP_MACOSX)
1394         OS_TARGET=MacOSX
1396         if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
1397             dnl Use the specified value
1398             export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
1399         elif test -z "$MACOSX_DEPLOYMENT_TARGET" ; then
1400             dnl No value specified on the command line or in the environment,
1401             dnl use the lesser of the library's minimum or the architecture's
1402             dnl minimum.
1403             case "${target_cpu}" in
1404                 powerpc*)
1405                     dnl Architecture minimum 10.2
1406                     export MACOSX_DEPLOYMENT_TARGET=10.2
1407                     ;;
1408                 i*86*)
1409                     dnl Architecture minimum 10.4
1410                     export MACOSX_DEPLOYMENT_TARGET=10.4
1411                     ;;
1412             esac
1413         fi
1415         dnl MACOS_SDK_DIR will be set to the SDK location whenever one is
1416         dnl in use.  NEXT_ROOT will be set and exported if it's needed for
1417         dnl ld.
1419         if test "$MACOS_SDK_DIR"; then
1420             dnl Sync this section with the one in Mozilla's top level.
1422             if test ! -d "$MACOS_SDK_DIR"; then
1423                 AC_MSG_ERROR([SDK not found.  When using --with-macos-sdk, you must
1424 specify a valid SDK.  SDKs are installed when the optional cross-development
1425 tools are selected during the Xcode/Developer Tools installation.])
1426             fi
1428             changequote(,)
1429             CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
1430             GCC_VERSION_FULL=`echo $CC_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
1431             GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
1432             changequote([,])
1433             GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
1434             if test "$GCC_VERSION_MAJOR" -lt "4" ; then
1435                 SDK_C_FRAMEWORK="-F${MACOS_SDK_DIR}/System/Library/Frameworks"
1436                 if test -d "${MACOS_SDK_DIR}/Library/Frameworks" ; then
1437                     SDK_C_FRAMEWORK="$SDK_C_FRAMEWORK -F${MACOS_SDK_DIR}/Library/Frameworks"
1438                 fi
1440                 SDK_C_INCLUDE="-isystem ${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION} -isystem ${MACOS_SDK_DIR}/usr/include ${SDK_C_FRAMEWORK}"
1442                 CFLAGS="$CFLAGS -nostdinc ${SDK_C_INCLUDE}"
1444                 dnl CPP needs to be set for AC_CHECK_HEADER.
1445                 CPP="$CPP -nostdinc ${SDK_C_INCLUDE}"
1447                 changequote(,)
1448                 HOST_DARWIN_MAJOR=`echo "$build_os" | sed -E -e 's/^darwin([0-9]+).*$/\1/'`
1449                 changequote([,])
1450                 if test "$HOST_DARWIN_MAJOR" -lt 9 ; then
1451                     dnl The build host is running Tiger (10.4) or earlier.
1452                     dnl ld support for -syslibroot is compiler-agnostic, but
1453                     dnl only available on Tiger and later.  On Tiger and
1454                     dnl earlier build hosts, just rely on NEXT_ROOT, because
1455                     dnl it's not been shown to cause any problems.
1456                     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}"
1457                 else
1458                     dnl The build host is running Leopard (10.5) or later.
1459                     dnl With NEXT_ROOT set, the linker will still not apply
1460                     dnl it when resolving dependencies.  This causes problems
1461                     dnl on Leopard, where an SDK depends on frameworks which
1462                     dnl were present in earlier OS releases (and the associated
1463                     dnl SDK) but not in Leopard.  -syslibroot does not have
1464                     dnl this problem, but it results in harmless warnings when
1465                     dnl NEXT_ROOT is set.  NEXT_ROOT needs to remain set even
1466                     dnl on Leopard because the compiler uses it too.
1467                     MACOS_SDK_LIBS="-Wl,-syslibroot,${MACOS_SDK_DIR}"
1468                 fi
1470                 LDFLAGS="${MACOS_SDK_LIBS} $LDFLAGS"
1471                 export NEXT_ROOT=$MACOS_SDK_DIR
1473                 if test -n "$CROSS_COMPILE" ; then
1474                     dnl NEXT_ROOT will be in the environment, but it
1475                     dnl shouldn't be set for the build host.  HOST_CXX is
1476                     dnl presently unused.
1477                     HOST_CC="NEXT_ROOT= $HOST_CC"
1478                     HOST_CXX="NEXT_ROOT= $HOST_CXX"
1479                 fi
1480             else
1481                 dnl gcc >= 4.0 uses different paths than above, but knows
1482                 dnl how to find them itself.
1483                 CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
1485                 dnl CPP needs to be set for AC_CHECK_HEADER.
1486                 CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
1488                 dnl If gcc >= 4.0.0, we're guaranteed to be on Tiger, which
1489                 dnl has an ld that supports -syslibroot.  Don't set
1490                 dnl NEXT_ROOT because it will be ignored and cause
1491                 dnl warnings when -syslibroot is specified.
1492                 if test "$GCC_VERSION_FULL" != "4.0.0" ; then
1493                     dnl gcc > 4.0.0 will pass -syslibroot to ld automatically
1494                     dnl based on the -isysroot it receives.
1495                     LDFLAGS="$LDFLAGS -isysroot ${MACOS_SDK_DIR}"
1496                 else
1497                     dnl gcc 4.0.0 doesn't pass -syslibroot to ld, it needs
1498                     dnl to be explicit.
1499                     LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
1500                 fi
1501             fi
1502         fi
1503     fi
1504     ;;
1506 *-dgux*)
1507     AC_DEFINE(XP_UNIX)
1508     AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
1509     AC_DEFINE(SVR4)
1510     AC_DEFINE(SYSV)
1511     AC_DEFINE(DGUX)
1512     AC_DEFINE(_DGUX_SOURCE)
1513     AC_DEFINE(_POSIX4A_DRAFT6_SOURCE)
1514     DSO_LDOPTS=-G
1515     _OPTIMIZE_FLAGS=-O2
1516     _DEBUG_FLAGS=
1517     MDCPUCFG_H=_dgux.cfg
1518     PR_MD_CSRCS=dgux.c
1519     ;;
1521 *-freebsd*)
1522     if test -z "$USE_NSPR_THREADS"; then
1523         USE_PTHREADS=1
1524     fi
1525     AC_DEFINE(XP_UNIX)
1526     AC_DEFINE(FREEBSD)
1527     AC_DEFINE(HAVE_BSD_FLOCK)
1528     AC_DEFINE(HAVE_SOCKLEN_T)
1529     CFLAGS="$CFLAGS $(DSO_CFLAGS) -ansi -Wall"
1530     MOZ_OBJFORMAT=`test -x /usr/bin/objformat && /usr/bin/objformat || echo elf`
1531     if test "$MOZ_OBJFORMAT" = "elf"; then
1532         DLL_SUFFIX=so
1533     else
1534         DLL_SUFFIX=so.1.0
1535     fi
1536     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1537     DSO_CFLAGS=-fPIC
1538     DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)'
1539     MDCPUCFG_H=_freebsd.cfg
1540     PR_MD_CSRCS=freebsd.c
1541     ;;
1543 *-hpux*)
1544     AC_DEFINE(XP_UNIX)
1545     AC_DEFINE(HPUX)
1546     AC_DEFINE(_HPUX_SOURCE)
1547     # OSF1 and HPUX report the POLLHUP event for a socket when the
1548     # shutdown(SHUT_WR) operation is called for the remote end, even though
1549     # the socket is still writeable. Use select(), instead of poll(), to
1550     # workaround this problem.
1551     AC_DEFINE(_PR_POLL_WITH_SELECT)
1552     AC_DEFINE(_USE_BIG_FDS)
1553     DSO_LDOPTS='-b +h $(notdir $@)'
1554     PR_MD_CSRCS=hpux.c
1555     if test "$OS_TEST" = "ia64"; then
1556         DLL_SUFFIX=so
1557         DSO_LDOPTS="$DSO_LDOPTS +b '\$\$ORIGIN'"
1558         CPU_ARCH_TAG=_$OS_TEST 
1559         if test -z "$USE_64"; then
1560             COMPILER_TAG=_32
1561         fi
1562         PR_MD_ASFILES=os_HPUX_ia64.s
1563     else
1564         AC_DEFINE(hppa)
1565         DLL_SUFFIX=sl
1566         PR_MD_ASFILES=os_HPUX.s
1567     fi
1568     if test -n "$USE_64"; then
1569         MDCPUCFG_H=_hpux64.cfg
1570     else
1571         MDCPUCFG_H=_hpux32.cfg
1572     fi
1573     if test -z "$GNU_CC"; then
1574         CC="$CC -Ae"
1575         CXX="$CXX -ext"
1576         DSO_CFLAGS=+Z
1577     else
1578         DSO_CFLAGS=-fPIC
1579         ASFLAGS="$ASFLAGS -x assembler-with-cpp"
1580     fi
1582     if test -n "$MOZILLA_CLIENT"; then
1583         DEFAULT_IMPL_STRATEGY=_EMU
1584     fi
1586     if echo "$OS_RELEASE" | grep ^A.09 >/dev/null; then
1587         AC_DEFINE(_PR_NEED_H_ERRNO)
1588         AC_DEFINE(HPUX9)
1589         DEFAULT_IMPL_STRATEGY=_EMU
1590         USE_NSPR_THREADS=1
1591     fi
1593     if echo "$OS_RELEASE" | egrep '^(A.09|B.10)' >/dev/null; then
1594         AC_DEFINE(_PR_NO_LARGE_FILES)
1595     fi
1597     if echo "$OS_RELEASE" | egrep '^(B.10.10|B.10.20)' >/dev/null; then
1598         AC_DEFINE(_PR_NEED_H_ERRNO)
1599     fi
1601     if echo "$OS_RELEASE" | egrep '^(B.10.10|B.10.20)' >/dev/null; then
1602         AC_DEFINE(HAVE_INT_LOCALTIME_R)
1603     fi
1605     if echo "$OS_RELEASE" | egrep '^(B.10.30|B.11)' >/dev/null; then
1606         AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
1607     fi
1609     # HP-UX 11i v2 (B.11.23) or higher
1610     changequote(<<,>>)
1611     case "$OS_RELEASE" in
1612     [C-Z]*|B.[2-9]*|B.1[2-9]*|B.11.[3-9]*|B.11.2[3-9]*)
1613         USE_IPV6=1
1614         ;;
1615     esac
1616     changequote([,])
1618     if test "$OS_RELEASE" = "B.10.01"; then
1619         AC_DEFINE(HPUX10)
1620         DEFAULT_IMPL_STRATEGY=_EMU
1621     fi
1623     if test "$OS_RELEASE" = "B.10.10"; then
1624         AC_DEFINE(HPUX10)
1625         AC_DEFINE(HPUX10_10)
1626         DEFAULT_IMPL_STRATEGY=_PTH
1627     fi
1629     if test "$OS_RELEASE" = "B.10.20"; then
1630         AC_DEFINE(HPUX10)
1631         AC_DEFINE(HPUX10_20)
1632         if test -z "$GNU_CC"; then
1633             CFLAGS="$CFLAGS +DAportable +DS1.1"
1634             CXXFLAGS="$CXXFLAGS +DAportable +DS1.1"
1635         fi
1636         DEFAULT_IMPL_STRATEGY=_PTH
1637     fi
1639     if test "$OS_RELEASE" = "B.10.30"; then
1640         AC_DEFINE(HPUX10)
1641         AC_DEFINE(HPUX10_30)
1642         if test -z "$GNU_CC"; then
1643             CFLAGS="$CFLAGS +DAportable +DS1.1"
1644             CXXFLAGS="$CXXFLAGS +DAportable +DS1.1"
1645         fi
1646         DEFAULT_IMPL_STRATEGY=_PTH
1647     fi
1649     if echo "$OS_RELEASE" | grep ^B.11 >/dev/null; then
1650         AC_DEFINE(HPUX10)
1651         AC_DEFINE(HPUX11)
1652         AC_DEFINE(_LARGEFILE64_SOURCE)
1653         AC_DEFINE(_PR_HAVE_OFF64_T)
1654         AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
1655         if test -z "$GNU_CC"; then
1656             if test -z "$USE_64"; then
1657                 if test "$OS_TEST" = "ia64"; then
1658                     CFLAGS="$CFLAGS +DD32"
1659                     CXXFLAGS="$CXXFLAGS +DD32"
1660                 else
1661                     CFLAGS="$CFLAGS +DAportable +DS2.0"
1662                     CXXFLAGS="$CXXFLAGS +DAportable +DS2.0"
1663                 fi
1664             else
1665                 if test "$OS_TEST" = "ia64"; then
1666                     CFLAGS="$CFLAGS +DD64"
1667                     CXXFLAGS="$CXXFLAGS +DD64"
1668                 else
1669                     CFLAGS="$CFLAGS +DA2.0W +DS2.0"
1670                     CXXFLAGS="$CXXFLAGS +DA2.0W +DS2.0"
1671                 fi
1672             fi
1673         fi
1674         DEFAULT_IMPL_STRATEGY=_PTH
1675     fi
1677     if test "$DEFAULT_IMPL_STRATEGY" = "_EMU"; then
1678         USE_NSPR_THREADS=1
1679         USE_PTHREADS=
1680         USE_USER_PTHREADS=
1681     elif test "$DEFAULT_IMPL_STRATEGY" = "_PTH"; then
1682         USE_PTHREADS=1
1683         if test "$USE_NSPR_THREADS"; then
1684             USE_PTHREADS=
1685         fi
1686         if test "$USE_USER_PTHREADS"; then
1687             USE_PTHREADS=
1688         fi
1689     fi
1690     ;;
1692 *-irix*)
1693     AC_DEFINE(XP_UNIX)
1694     AC_DEFINE(IRIX)
1695     AC_DEFINE(SVR4)
1696     AC_DEFINE(_SGI_MP_SOURCE)
1697     AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
1698     PR_MD_CSRCS=irix.c
1699     PR_MD_ASFILES=os_Irix.s
1700     MKSHLIB='$(LD) $(DSO_LDOPTS) -rdata_shared -shared -soname $(notdir $@) -o $@'
1701     STRIP="$STRIP -f"
1702     RESOLVE_LINK_SYMBOLS=1
1703     if test -n "$USE_64"; then
1704         MDCPUCFG_H=_irix64.cfg
1705     else
1706         MDCPUCFG_H=_irix32.cfg
1707     fi
1708     case "${target_os}" in
1709     irix6*)
1710         AC_DEFINE(IRIX6)
1711         USE_PTHREADS=1
1712         USE_N32=1
1713         COMPILER_TAG=_n32
1714         IMPL_STRATEGY=_PTH
1715         ;;
1716     irix5*)
1717         AC_DEFINE(IRIX5)
1718         USE_NSPR_THREADS=1
1719         ;;
1720     *)
1721         USE_PTHREADS=1
1722         USE_N32=1
1723         ;;
1724     esac
1725     if test "$GNU_CC"; then
1726         dnl
1727         dnl If we are using gcc with native binutils, we need to
1728         dnl suppress the
1729         dnl #lineno "filename" num num
1730         dnl lines, which confuse IRIX native as.  Add -Wp,-P to the
1731         dnl gcc command line, which passes -P to the preprocessor.
1732         dnl
1733             AS='$(CC) -Wp,-P -x assembler-with-cpp -D_ASM -mips2 $(INCLUDES)'
1734             CFLAGS="$CFLAGS -Wall -Wno-format"
1735             _OPTIMIZE_FLAGS="-O6"
1736     else
1737             if test -n "$USE_N32"; then
1738                 AS='as -D_ASM $(INCLUDES) -n32'
1739             else
1740                 AS='as -D_ASM $(INCLUDES)'
1741             fi
1742             CFLAGS="$CFLAGS -fullwarn -xansi"
1743             if test "$USE_N32"; then
1744                 _OPTIMIZE_FLAGS="-O -OPT:Olimit=4000"
1745             else
1746                 _OPTIMIZE_FLAGS="-O -Olimit 4000"
1747             fi
1748             if test "$USE_MDUPDATE"; then
1749                 CFLAGS="$CFLAGS -MDupdate \$(DEPENDENCIES)"
1750             fi
1751             case "${target}" in
1752             *-irix6.*)
1753                 CFLAGS="$CFLAGS -multigot"
1754                 DSO_LDOPTS="-no_unresolved"
1755                 if test "$USE_N32"; then
1756                         CFLAGS="$CFLAGS -n32 -woff 1209"
1757                         DSO_LDOPTS="$DSO_LDOPTS -n32"
1758                 else
1759                         if test "$USE_64"; then
1760                             CFLAGS="$CFLAGS -64"
1761                         else
1762                             CFLAGS="$CFLAGS -32"
1763                         fi
1764                 fi
1765                 ;;
1766             *)
1767                 CFLAGS="$CFLAGS -xgot"
1768                 ;;
1769             esac
1770     fi
1771     if test "${target_os}" = "irix5.3"; then
1772             AC_DEFINE(IRIX5_3)
1773     fi
1774     case "${target_os}" in
1775         irix6.5)
1776             if test -z "$GNU_CC"; then
1777                     CFLAGS="$CFLAGS -mips3"
1778             fi
1779             AC_DEFINE(_PR_HAVE_GETPROTO_R)
1780             AC_DEFINE(_PR_HAVE_GETPROTO_R_POINTER)
1781             AC_DEFINE(_PR_HAVE_SGI_PRDA_PROCMASK)
1782             ;;
1783         irix5*)
1784             ;;
1785         *)
1786             AC_DEFINE(_PR_HAVE_SGI_PRDA_PROCMASK)
1787             ;;
1788         esac
1789     ;;
1791 *-linux*|*-gnu*|*-k*bsd*-gnu|*-android*|*-linuxandroid*)
1792     if test -z "$USE_NSPR_THREADS"; then
1793         USE_PTHREADS=1
1794         IMPL_STRATEGY=_PTH
1795     fi
1796     AC_DEFINE(XP_UNIX)
1797     AC_DEFINE(_GNU_SOURCE)
1798     AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
1799     case "${target}" in
1800     *-android*|*-linuxandroid*)
1801         OS_TARGET=Android
1802         AC_DEFINE(LINUX)
1803         ;;
1804     *-linux*)
1805         AC_DEFINE(LINUX)
1806         ;;
1807     esac
1808     CFLAGS="$CFLAGS -Wall"
1809     CXXFLAGS="$CXXFLAGS -Wall"
1810     MDCPUCFG_H=_linux.cfg
1811     PR_MD_CSRCS=linux.c
1812     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
1813     DSO_CFLAGS=-fPIC
1814     DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)'
1815     _OPTIMIZE_FLAGS=-O2
1816     _DEBUG_FLAGS="-g -fno-inline"  # most people on linux use gcc/gdb, and that
1817                                    # combo is not yet good at debugging inlined
1818                                    # functions (even when using DWARF2 as the
1819                                    # debugging format)
1820     COMPILER_TAG=_glibc
1821     if echo "$OS_TEST" | grep -c 86 >/dev/null; then
1822         CPU_ARCH=x86
1823     else
1824         CPU_ARCH=$OS_TEST
1825     fi
1826     CPU_ARCH_TAG=_${CPU_ARCH}
1827     case "${target_cpu}" in
1828     alpha)
1829         AC_DEFINE(_ALPHA_)
1830         AC_DEFINE(__alpha)
1831         CFLAGS="$CFLAGS -mieee"
1832         CXXFLAGS="$CXXFLAGS -mieee"
1833         ;;
1834     i*86)
1835         AC_DEFINE(i386)
1836         PR_MD_ASFILES=os_Linux_x86.s
1837         ;;
1838     ia64)
1839         PR_MD_ASFILES=os_Linux_ia64.s
1840         ;;
1841     x86_64)
1842         if test -n "$USE_64"; then
1843             PR_MD_ASFILES=os_Linux_x86_64.s
1844         else
1845             AC_DEFINE(i386)
1846             PR_MD_ASFILES=os_Linux_x86.s
1847             CC="$CC -m32"
1848             CXX="$CXX -m32"
1849         fi
1850         ;;
1851     ppc|powerpc)
1852         PR_MD_ASFILES=os_Linux_ppc.s
1853         ;;
1854     powerpc64)
1855         if test -n "$USE_64"; then
1856             CC="$CC -m64"
1857             CXX="$CXX -m64"
1858         else
1859             PR_MD_ASFILES=os_Linux_ppc.s
1860         fi
1861         ;;
1862     m68k)
1863         CFLAGS="$CFLAGS -m68020-60"
1864         CXXFLAGS="$CXXFLAGS -m68020-60"
1865         ;;
1866     esac    
1867     ;;
1869 *-mingw*|*-cygwin*|*-msvc*|*-mks*)
1870     AC_DEFINE(XP_PC)
1871     AC_DEFINE(WIN32)
1872     PR_MD_ARCH_DIR=windows
1873     RESOLVE_LINK_SYMBOLS=1
1875     if test -n "$GNU_CC"; then
1876         CC="$CC -mwindows"
1877         CXX="$CXX -mwindows"
1878         DLL_SUFFIX=dll
1879         MKSHLIB='$(CC) -shared -Wl,--export-all-symbols -Wl,--out-implib -Wl,$(IMPORT_LIBRARY) $(DLLBASE) -o $(subst $(OBJDIR)/,,$(SHARED_LIBRARY))'
1880         RC=$WINDRES
1881         # Use temp file for windres (bug 213281)
1882         RCFLAGS='-O coff --use-temp-file'
1883     else
1884         CC=cl
1885         CXX=cl
1886         LD=link
1887         AR='lib -NOLOGO -OUT:"$@"'
1888         AR_FLAGS=
1889         RANLIB='echo not_ranlib'
1890         STRIP='echo not_strip'
1891         RC=rc.exe
1892         GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
1893         OBJ_SUFFIX=obj
1894         LIB_SUFFIX=lib
1895         DLL_SUFFIX=dll
1897         # Determine compiler version
1898         changequote(,)
1899         _MSVC_VER_FILTER='s|.* \([0-9]\+\.[0-9]\+\.[0-9]\+\(\.[0-9]\+\)\?\).*|\1|p'
1900         changequote([,])
1901         CC_VERSION=`"${CC}" -v 2>&1 | sed -ne "$_MSVC_VER_FILTER"`
1902         _CC_MAJOR_VERSION=`echo ${CC_VERSION} | awk -F\. '{ print $1 }'`
1903         _CC_MINOR_VERSION=`echo ${CC_VERSION} | awk -F\. '{ print $2 }'`
1904         _CC_RELEASE=`echo ${CC_VERSION} | awk -F\. '{ print $3 }'`
1905         _CC_BUILD=`echo ${CC_VERSION} | awk -F\. '{ print $4 }'`
1906         MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
1908         if test "$_CC_MAJOR_VERSION" -eq "14"; then
1909            dnl -DYNAMICBASE is only supported on VC8SP1 or newer,
1910            dnl so be very specific here!
1911            dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762
1912            if test $_CC_RELEASE -gt 50727; then
1913               _USE_DYNAMICBASE=1
1914            elif test $_CC_BUILD -ge 762; then
1915               _USE_DYNAMICBASE=1
1916            fi
1917            AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
1918            AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
1919         elif test $_CC_MAJOR_VERSION -ge 15; then
1920            _USE_DYNAMICBASE=1    
1921            AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
1922            AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
1923         fi
1925         if test -n "$_USE_DYNAMICBASE"; then
1926            DLLFLAGS="$DLLFLAGS -DYNAMICBASE"
1927         fi
1929         # Ensure that mt is Microsoft (R) Manifest Tool and not magnetic
1930         # tape manipulation utility (or something else)
1931         if test "$MSC_VER" -ge "1400"; then
1932             changequote(,)
1933             _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
1934             changequote([,])
1936             MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
1937             if test -n "$MSMT_TOOL"; then
1938                 MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
1939                 if test -z "$MSMANIFEST_TOOL_VERSION"; then
1940                     AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
1941                 fi
1942                 MT=mt
1943                 unset MSMT_TOOL
1944             else
1945                 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
1946             fi
1947         fi
1948         
1949         CFLAGS="$CFLAGS -W3 -nologo -GF -Gy"
1950         DLLFLAGS="$DLLFLAGS -OUT:\"\$@\""
1951         _DEBUG_FLAGS=-Zi
1952         _OPTIMIZE_FLAGS=-O2
1954         PROFILE_GEN_CFLAGS="-GL"
1955         PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
1956         PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
1957         PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
1959         if test "$MSC_VER" -ge "1800"; then
1960             dnl Visual C++ 2013 requires -FS when parallel building with
1961             dnl make -jN. If not specified, compiler sometimes emits C1041
1962             dnl error.
1963             CFLAGS="$CFLAGS -FS"
1964             dnl -Gw can benefit when using linker optimization on PGO.
1965             dnl http://blogs.msdn.com/b/vcblog/archive/2013/09/11/introducing-gw-compiler-switch.aspx
1966             PROFILE_GEN_CFLAGS="$PROFILE_GEN_CFLAGS -Gw"
1967             PROFILE_USE_CFLAGS="$PROFILE_USE_CFLAGS -Gw"
1968         fi
1970         if test -z "$MOZ_OPTIMIZE"; then
1971             CFLAGS="$CFLAGS -Od"
1972         fi
1974         if test -n "$USE_DEBUG_RTL"; then
1975             CFLAGS="$CFLAGS -MDd"
1976         else
1977             CFLAGS="$CFLAGS -MD"
1978         fi
1980         if test -n "$MOZ_DEBUG"; then
1981             AC_DEFINE(_DEBUG)
1982         else
1983             DEFINES="$DEFINES -U_DEBUG"
1984         fi
1986         if test -n "$MOZ_DEBUG_SYMBOLS"; then
1987             if test -n "$MOZ_OPTIMIZE"; then
1988                 DLLFLAGS="$DLLFLAGS -DEBUG -OPT:REF"
1989                 LDFLAGS="$LDFLAGS -DEBUG -OPT:REF"
1990             else
1991                 DLLFLAGS="$DLLFLAGS -DEBUG"
1992                 LDFLAGS="$LDFLAGS -DEBUG"
1993             fi
1994         fi
1996         OS_DLLFLAGS="-nologo -DLL -SUBSYSTEM:WINDOWS"
1997         if test "$MSC_VER" -le "1200" -a -z "$MOZ_DEBUG_SYMBOLS"; then
1998             OS_DLLFLAGS="$OS_DLLFLAGS -PDB:NONE"
1999         fi
2000         
2001         if test "$OS_TARGET" = "WINNT"; then
2002             CFLAGS="$CFLAGS -GT"
2003             LIBNSPR='$(dist_libdir)/libnspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
2004             LIBPLC='$(dist_libdir)/libplc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
2005         else
2006             LIBNSPR='$(dist_libdir)/nspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
2007             LIBPLC='$(dist_libdir)/plc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
2008         fi
2009     fi # GNU_CC
2011     if test -n "$USE_STATIC_TLS"; then
2012         AC_DEFINE(_PR_USE_STATIC_TLS)
2013     fi
2015     if test "$OS_TARGET" = "WINNT"; then
2016         AC_DEFINE(WINNT)
2017     else
2018         AC_DEFINE(WIN95)
2019         # undefine WINNT as some versions of mingw gcc define it by default
2020         DEFINES="$DEFINES -UWINNT"
2021         AC_DEFINE(_PR_GLOBAL_THREADS_ONLY)
2022     fi
2024     if test "$CPU_ARCH" = "x86"; then
2025         CPU_ARCH_TAG=
2026     else
2027         CPU_ARCH_TAG=$CPU_ARCH
2028     fi
2030     if test -n "$USE_DEBUG_RTL"; then
2031         OBJDIR_SUFFIX=OBJD
2032     fi
2034     case "$OS_TARGET" in
2035     WINNT)
2036             MDCPUCFG_H=_winnt.cfg
2037             ;;
2038     WIN95)
2039             MDCPUCFG_H=_win95.cfg
2040             ;;
2041     *)
2042             AC_MSG_ERROR([Missing OS_TARGET for ${target}.  Use --enable-win32-target to set.])
2043         ;;
2044     esac
2046     case "$target_cpu" in
2047     i*86)
2048         if test -n "$USE_64"; then
2049             AC_DEFINE(_AMD64_)
2050         else            
2051             AC_DEFINE(_X86_)
2052         fi
2053         ;;
2054     x86_64)
2055             AC_DEFINE(_AMD64_)
2056             USE_64=1
2057             ;;
2058     ia64)
2059             AC_DEFINE(_IA64_)
2060             USE_64=1
2061             ;;
2062     *)
2063             AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
2064             ;;
2065     esac
2066     ;;
2068 *-wince*|*-winmo*)
2069     AC_DEFINE(XP_PC)
2070     AC_DEFINE(WIN32)
2071     AC_DEFINE(WINCE)
2072     AC_DEFINE(_PR_GLOBAL_THREADS_ONLY)
2074     AR_FLAGS='-NOLOGO -OUT:"$@"'
2076     OBJ_SUFFIX=obj
2077     LIB_SUFFIX=lib
2078     DLL_SUFFIX=dll
2079     MKSHLIB='$(LD) -DLL $(DSO_LDOPTS) -OUT:$@'
2081     PR_MD_ARCH_DIR=windows
2082     RESOLVE_LINK_SYMBOLS=1
2084     MDCPUCFG_H=_win95.cfg
2085     LIBNSPR='$(dist_libdir)/nspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
2086     LIBPLC='$(dist_libdir)/plc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
2088     DLLFLAGS='-OUT:"$@"'
2089     if test -n "$MOZ_DEBUG_SYMBOLS"; then
2090         OS_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
2091         OS_DLLFLAGS='-DEBUG -DEBUGTYPE:CV'
2092         DSO_LDOPTS='-DEBUG -DEBUGTYPE:CV'
2093     fi
2094     _DEBUG_FLAGS=-Zi
2095     _OPTIMIZE_FLAGS=-O2
2096     ;;
2098 *-netbsd*)
2099     AC_DEFINE(XP_UNIX)
2100     AC_DEFINE(NETBSD)
2101     AC_DEFINE(HAVE_BSD_FLOCK)
2102     if test -z "$USE_NSPR_THREADS"; then
2103         USE_PTHREADS=1
2104     fi
2105     MDCPUCFG_H=_netbsd.cfg
2106     PR_MD_CSRCS=netbsd.c
2108     DSO_CFLAGS='-fPIC -DPIC'
2109     CFLAGS="$CFLAGS -ansi -Wall"
2110     CXXFLAGS="$CXXFLAGS -ansi -Wall"
2111     MKSHLIB='$(CC) -o $@ $(DSO_LDOPTS)'
2113     if test -z "$OBJECT_FMT"; then
2114         if echo __ELF__ | ${CC-cc} -E - | grep -q __ELF__ 2>/dev/null; then
2115             OBJECT_FMT=a.out
2116             DLL_SUFFIX=so.1.0
2117             DSO_LDOPTS='-shared'
2118         else
2119             OBJECT_FMT=ELF
2120             DLL_SUFFIX=so
2121             DSO_LDOPTS='-shared -Wl,-soname,$(notdir $@)'
2122         fi
2123     fi
2125     if test "$LIBRUNPATH"; then
2126         DSO_LDOPTS="$DSO_LDOPTS -Wl,-R$LIBRUNPATH"
2127     fi
2128     ;;
2130 *-nto*)
2131     AC_DEFINE(XP_UNIX)
2132     AC_DEFINE(NTO)
2133     AC_DEFINE(_QNX_SOURCE)
2134     AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
2135     MDCPUCFG_H=_nto.cfg
2136     PR_MD_CSRCS=nto.c
2137     MKSHLIB='$(CC) $(DSO_LDOPTS) -Wl,-soname -Wl,$(notdir $@) -o $@'
2138     DSO_CFLAGS=-fPIC
2139     DSO_LDOPTS=-shared
2140     OS_LIBS="$OS_LIBS -lsocket"
2141     _OPTIMIZE_FLAGS="-O1"
2142     _DEBUG_FLAGS="-gstabs"
2143         ;;
2145 *-openbsd*)
2146     AC_DEFINE(XP_UNIX)
2147     AC_DEFINE(OPENBSD)
2148     AC_DEFINE(HAVE_BSD_FLOCK)
2149     AC_DEFINE(HAVE_SOCKLEN_T)
2150     CFLAGS="$CFLAGS -ansi -Wall"
2151     CXXFLAGS="$CXXFLAGS -ansi -Wall"
2152     DLL_SUFFIX=so.1.0
2153     DSO_CFLAGS=-fPIC
2154     MDCPUCFG_H=_openbsd.cfg
2155     PR_MD_CSRCS=openbsd.c
2156     OS_LIBS="-lc"
2157     if test -z "$USE_NSPR_THREADS"; then
2158         USE_PTHREADS=1
2159     fi
2160     DSO_LDOPTS='-shared -fPIC'
2161     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2162     ;;
2164 *-osf*)
2165     SHELL_OVERRIDE="SHELL               = /usr/bin/ksh"
2166     AC_DEFINE(XP_UNIX)
2167     AC_DEFINE(OSF1)
2168     AC_DEFINE(_REENTRANT)
2169     # OSF1 and HPUX report the POLLHUP event for a socket when the
2170     # shutdown(SHUT_WR) operation is called for the remote end, even though
2171     # the socket is still writeable. Use select(), instead of poll(), to
2172     # workaround this problem.
2173     AC_DEFINE(_PR_POLL_WITH_SELECT)
2175     if echo "$OS_RELEASE" | egrep -c '(V2.0|V3.2)' 2>/dev/null ; then
2176         USE_NSPR_THREADS=1
2177     fi
2179     if test -z "$GNU_CC"; then
2180         CC="$CC -std1 -ieee_with_inexact"
2181         if test "$OS_RELEASE" != "V2.0"; then
2182             CC="$CC -readonly_strings"
2183         fi
2184         _OPTIMIZE_FLAGS="$_OPTIMIZE_FLAGS -Olimit 4000"
2185         AC_CHECK_HEADER(machine/builtins.h, AC_DEFINE(OSF1_HAVE_MACHINE_BUILTINS_H))
2186     else
2187         CFLAGS="$CFLAGS -mieee"
2188         CXXFLAGS="$CXXFLAGS -mieee"
2189     fi
2191     if echo $OS_RELEASE | egrep -c '(V2.0|V3.2)' 2>/dev/null; then
2192         AC_DEFINE(HAVE_INT_LOCALTIME_R)
2193     else
2194         AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
2195         AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
2196     fi
2197     if echo $OS_RELEASE | grep -c V4.0 >/dev/null; then
2198         AC_DEFINE(OSF1V4_MAP_PRIVATE_BUG)
2199     fi
2200     DSO_LDOPTS='-shared -all -expect_unresolved "*" -soname $(notdir $@)'
2201     MDCPUCFG_H=_osf1.cfg
2202     PR_MD_CSRCS=osf1.c
2203     ;;
2205 *-qnx*)
2206     AC_DEFINE(XP_UNIX)
2207     AC_DEFINE(QNX)
2208     AC_DEFINE(_PR_NEED_H_ERRNO)
2209     USE_NSPR_THREADS=1
2210     MDCPUCFG_H=_qnx.cfg
2211     PR_MD_CSRCS=qnx.c
2212     ;;
2214 *-riscos*)
2215     AC_DEFINE(XP_UNIX)
2216     AC_DEFINE(RISCOS)
2217     AC_DEFINE(_PR_NEED_H_ERRNO)
2218     USE_PTHREADS=1
2219     MDCPUCFG_H=_riscos.cfg
2220     PR_MD_CSRCS=riscos.c
2221     DSO_CFLAGS=-fPIC
2222     DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)'
2223     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2224     ;;
2226 *-*-sco*)
2227     AC_DEFINE(XP_UNIX)
2228     AC_DEFINE(SCO)
2229     AC_DEFINE(sco)
2230     AC_DEFINE(SYSV)
2231     AC_DEFINE(_SVID3)
2232     AC_DEFINE(_PR_NEED_H_ERRNO)
2233     CC='cc -b elf -KPIC'
2234     CXX='$(NSDEPTH)/build/hcpp CC +.cpp +w'
2235     USE_NSPR_THREADS=1
2236     CPU_ARCH=x86
2237     DSO_LDOPTS='-b elf -G'
2238     MDCPUCFG_H=_scoos.cfg
2239     PR_MD_SRCS=scoos.c
2240     ;;
2242 *-solaris*)
2243     if test -z "$USE_NSPR_THREADS"; then
2244         USE_PTHREADS=1
2245     fi
2246     AC_DEFINE(XP_UNIX)
2247     AC_DEFINE(SVR4)
2248     AC_DEFINE(SYSV)
2249     AC_DEFINE(__svr4)
2250     AC_DEFINE(__svr4__)
2251     AC_DEFINE(SOLARIS)
2252     AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
2253     CPU_ARCH=`uname -p`
2254     MDCPUCFG_H=_solaris.cfg
2255     PR_MD_CSRCS=solaris.c
2256     LD=/usr/ccs/bin/ld
2257     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2258     RESOLVE_LINK_SYMBOLS=1
2259     case "${OS_RELEASE}" in
2260     5.8|5.9)
2261         ;;
2262     *)
2263         # It is safe to use the -Bdirect linker flag on Solaris 10 or later.
2264         USE_B_DIRECT=1
2265         ;;
2266     esac
2267     if test -n "$GNU_CC"; then
2268         DSO_CFLAGS=-fPIC
2269         if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
2270             GCC_USE_GNU_LD=1
2271         fi
2272         DSO_LDOPTS='-shared -Wl,-h,$(notdir $@),-z,combreloc,-z,defs,-z,ignore' 
2273         if test -n "$USE_B_DIRECT"; then
2274             DSO_LDOPTS="$DSO_LDOPTS,-Bdirect"
2275         fi
2276     else
2277         DSO_CFLAGS=-KPIC
2278         DSO_LDOPTS='-G -h $(notdir $@) -z combreloc -z defs -z ignore'
2279         if test -n "$USE_B_DIRECT"; then
2280             DSO_LDOPTS="$DSO_LDOPTS -Bdirect"
2281         fi
2282     fi
2283     if test -n "$GNU_CC"; then
2284         CFLAGS="$CFLAGS -Wall"
2285         CXXFLAGS="$CXXFLAGS -Wall"
2286         if test -n "$USE_MDUPDATE"; then
2287             CFLAGS="$CFLAGS -MDupdate \$(DEPENDENCIES)"
2288             CXXFLAGS="$CXXFLAGS -MDupdate \$(DEPENDENCIES)"
2289         fi
2290         GCC_AS=`$CC -print-prog-name=as`
2291         if test "`echo | $GCC_AS -v 2>&1 | grep -c GNU`" != "0"; then
2292             GNU_AS=1
2293         fi
2294     else
2295         CFLAGS="$CFLAGS -xstrconst"
2296         CXXFLAGS="$CXXFLAGS -Qoption cg -xstrconst -features=tmplife"
2297         if test -z "$MOZ_OPTIMIZE"; then
2298             CFLAGS="$CFLAGS -xs"
2299             CXXFLAGS="$CXXFLAGS -xs"
2300         fi
2301         _OPTIMIZE_FLAGS=-xO4
2302     fi
2303     if test -z "$GNU_AS"; then
2304         ASFLAGS="$ASFLAGS -Wa,-P"
2305     fi
2306     if test -n "$USE_64"; then
2307         if test -n "$GNU_CC"; then
2308             CC="$CC -m64"
2309             CXX="$CXX -m64"
2310         else
2311             if test "$OS_TEST" = "i86pc"; then
2312                 CC="$CC -xarch=amd64"
2313                 CXX="$CXX -xarch=amd64"
2314             else
2315                 CC="$CC -xarch=v9"
2316                 CXX="$CXX -xarch=v9"
2317             fi
2318         fi
2319     fi
2320     if test "$OS_TEST" = "i86pc"; then
2321         if test -z "$USE_64"; then
2322             AC_DEFINE(i386)
2323         fi
2324         CPU_ARCH_TAG=_$OS_TEST
2325         # The default debug format, DWARF (-g), is not supported by gcc
2326         # on i386-ANY-sysv4/solaris, but the stabs format is.  It is
2327         # assumed that the Solaris assembler /usr/ccs/bin/as is used.
2328         # If your gcc uses GNU as, you do not need the -Wa,-s option.
2329         if test -n "$MOZ_DEBUG" && test -n "$GNU_CC"; then
2330             _DEBUG_FLAGS=-gstabs
2331             if test -z "$GNU_AS"; then
2332                 _DEBUG_FLAGS="$_DEBUG_FLAGS -Wa,-s"
2333             fi
2334         fi
2335     fi
2336     case "${target_os}" in
2337     solaris2.3*)
2338         AC_DEFINE(_PR_NO_LARGE_FILES)
2339         ;;
2340     solaris2.4*)
2341         AC_DEFINE(_PR_NO_LARGE_FILES)
2342         ;;
2343     solaris2.5*)
2344         AC_DEFINE(SOLARIS2_5)    
2345         ;;
2346     *)
2347         AC_DEFINE(_PR_HAVE_OFF64_T)
2348         # The lfcompile64(5) man page on Solaris 2.6 says:
2349         #     For applications that do not wish to conform to the POSIX or
2350         #     X/Open  specifications,  the  64-bit transitional interfaces
2351         #     are available by default.  No compile-time flags need to  be
2352         #     set.
2353         # But gcc 2.7.2.x fails to define _LARGEFILE64_SOURCE by default.
2354         # The native compiler, gcc 2.8.x, and egcs don't have this problem.
2355         if test -n "$GNU_CC"; then
2356             AC_DEFINE(_LARGEFILE64_SOURCE)
2357         fi
2358         ;;
2359     esac
2360     case "${target_os}" in
2361     solaris2.3*)
2362         ;;
2363     solaris2.4*)
2364         ;;
2365     solaris2.5*)
2366         ;;
2367     solaris2.6*)
2368         ;;
2369     solaris2.7*)
2370         ;;
2371     *)
2372         # Solaris 8 or higher has IPv6.
2373         AC_DEFINE(_PR_INET6)
2374         ;;
2375     esac
2376     if test "$CPU_ARCH" = "sparc"; then
2377         # 64-bit Solaris SPARC requires V9 architecture, so the following
2378         # is not needed.
2379         if test -z "$USE_64"; then
2380             ULTRASPARC_LIBRARY=nspr_flt
2381         fi
2382     fi
2383     # Purify requires that binaries linked against nspr also
2384     # be linked against -lrt (or -lposix4) so add it to OS_LIBS
2385     _rev=`uname -r`
2386     _librt=`echo $_rev 5.6 | awk '{ if ($1 > $2) print "-lrt"; else print "-lposix4" }'`
2387     OS_LIBS="$OS_LIBS $_librt"
2388     ;;
2390 *-sco-sysv5*)
2391     AC_DEFINE(XP_UNIX)
2392     AC_DEFINE(UNIXWARE)
2393     AC_DEFINE(SVR4)
2394     AC_DEFINE(SYSV)
2395     USE_NSPR_THREADS=1
2396     if echo $OS_RELEASE | grep -c 2.1 2>/dev/null; then
2397         AC_DEFINE(_PR_NO_LARGE_FILES)
2398         CC='$(NSDEPTH)/build/hcc cc'
2399         CXX='$(NSDEPTH)/build/hcpp CC'
2400         MDCPUCFG_H=_unixware.cfg
2401     else
2402         AC_DEFINE(_LARGEFILE64_SOURCE)
2403         AC_DEFINE(_PR_HAVE_OFF64_T)
2404         AC_DEFINE(_PR_HAVE_SOCKADDR_LEN)
2405         MDCPUCFG_H=_unixware7.cfg
2406     fi
2407     PR_MD_CSRCS=unixware.c
2408     DSO_LDOPTS=-G
2409     CPU_ARCH=x86
2410     ;;
2412 *-symbian*)
2413     AC_ARG_WITH(symbian-sdk,
2414     [  --with-symbian-sdk=SYMBIAN_SDK_DIR
2415                           The path to the Symbian SDK],
2416     SYMBIAN_SDK_DIR=$withval)
2418     echo -----------------------------------------------------------------------------
2419     echo Building with Symbian SDK in: $SYMBIAN_SDK_DIR
2420     echo -----------------------------------------------------------------------------
2422     AC_DEFINE(XP_UNIX)
2423     AC_DEFINE(SYMBIAN)
2424     AC_DEFINE(__arm__)
2425     AC_DEFINE(__SYMBIAN32__)
2426     AC_DEFINE(_UNICODE)
2427     AC_DEFINE(NDEBUG)
2428     AC_DEFINE(__SUPPORT_CPP_EXCEPTIONS__)
2429     AC_DEFINE(MOZ_STDERR_TO_STDOUT)
2430     AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
2431     AC_DEFINE(HAVE_SOCKLEN_T)
2432     USE_PTHREADS=1
2433     LIB_SUFFIX=lib
2434     DLL_SUFFIX=dll
2435     MKSHLIB=
2436     DSO_LDOPTS=
2437     DSO_CFLAGS=
2438     VISIBILITY_FLAGS=
2439     MDCPUCFG_H=_symbian.cfg
2440     PR_MD_CSRCS=symbian.c
2441     NSINSTALL=nsinstall
2442     RANLIB='echo no ranlib '
2443     CPU_ARCH=ARM
2444     OS_ARCH=SYMBIAN
2445     OS_EXE_CFLAGS="$OS_EXE_CFLAGS -D__EXE__"
2446     CFLAGS="$CFLAGS -MD -nostdinc"
2447     SYMBIAN_SYS_INCLUDE="-I$SYMBIAN_SDK_DIR/Epoc32/include/variant -I$SYMBIAN_SDK_DIR/Epoc32/include -I$SYMBIAN_SDK_DIR/Epoc32/include/stdapis"
2448     echo -------------------------------------------------------
2449     echo SYMBIAN_SYS_INCLUDE is: $SYMBIAN_SYS_INCLUDE
2450     echo -------------------------------------------------------
2451     case "$OS_TARGET" in
2452     WINSCW)
2453         CC=mwccsym2.exe
2454         CXX=mwccsym2.exe
2455         LD=mwldsym2.exe
2456         AR=mwldsym2.exe
2457         WINSCW_LD_DIR="\$(SYMBIAN_SDK_DIR)/EPOC32/RELEASE/WINSCW/UDEB"
2458         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)"
2459         SYMBIAN_SYS_INCLUDE="$SYMBIAN_SYS_INCLUDE -include Symbian_OS_v9.2.hrh"
2460         AR_FLAGS="-library -msgstyle gcc -stdlib -subsystem windows -noimplib -o \$@"
2461         AC_DEFINE(_DEBUG)
2462         AC_DEFINE(__CW32__)
2463         AC_DEFINE(__WINS__)
2464         AC_DEFINE(__WINSCW__)
2465         DEFINES="$DEFINES -U_WIN32"
2466             ;;
2467     GCCE)
2468         CFLAGS="$CFLAGS -Wall -Wno-unknown-pragmas -fexceptions -march=armv5t -mapcs -pipe -x c -msoft-float"
2469         CXXFLAGS="$CXXFLAGS $CFLAGS -Wno-ctor-dtor-privacy"
2470         SYMBIAN_SYS_INCLUDE="$SYMBIAN_SYS_INCLUDE -include $SYMBIAN_SDK_DIR/EPOC32/INCLUDE/GCCE/GCCE.h"
2471         AC_DEFINE(__GCCE__)
2472         AC_DEFINE(__EABI__)
2473         DEFINES="$DEFINES -D__PRODUCT_INCLUDE__=$SYMBIAN_SDK_DIR/Epoc32/include/variant/Symbian_OS_v9.2.hrh"
2474             ;;
2475     *)
2476             AC_MSG_ERROR([Missing OS_TARGET for ${target}. Set --enable-symbian-target to with 'WINSCW' or 'GCCE'.])
2477         ;;
2478     esac
2479     CFLAGS="$CFLAGS ${SYMBIAN_SYS_INCLUDE}"
2480     ;;
2482 *-os2*)
2483     AC_DEFINE(XP_OS2)
2484     AC_DEFINE(XP_PC)
2485     AC_DEFINE(BSD_SELECT)
2486     AC_DEFINE(TCPV40HDRS)
2487     LIB_SUFFIX=lib
2488     DLL_SUFFIX=dll
2489     RC=rc.exe
2490     PR_MD_ARCH_DIR=os2
2491     PROG_SUFFIX=.exe
2492     NSINSTALL=nsinstall
2493     MDCPUCFG_H=_os2.cfg
2494     RESOLVE_LINK_SYMBOLS=1
2496     AC_DEFINE(OS2)
2497     AR=emxomfar
2498     AR_FLAGS='r $@'
2499     CFLAGS="$CFLAGS -Wall -Zomf"
2500     CXXFLAGS="$CFLAGS -Wall -Zomf"
2501     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
2502     DSO_CFLAGS=
2503     DSO_LDOPTS='-Zomf -Zdll'
2504     LDFLAGS='-Zmap'
2505     _OPTIMIZE_FLAGS="-O2 -s"
2506     _DEBUG_FLAGS="-g -fno-inline"
2507     if test -n "$MOZ_OPTIMIZE"; then
2508       DSO_LDOPTS="$DSO_LDOPTS -Zlinker /EXEPACK:2 -Zlinker /PACKCODE -Zlinker /PACKDATA"
2509     fi
2510     IMPLIB='emximp -o'
2511     FILTER='emxexp -o'
2512     if test -n "$MOZ_OS2_HIGH_MEMORY"; then
2513       LDFLAGS="$LDFLAGS -Zhigh-mem"
2514       AC_DEFINE(MOZ_OS2_HIGH_MEMORY)
2515     fi
2517     # GCC for OS/2 currently predefines these, but we don't want them
2518     DEFINES="$DEFINES -Uunix -U__unix -U__unix__"
2519     ;;
2522     AC_DEFINE(XP_UNIX)
2523     ;;
2524    
2525 esac
2527 if test -z "$SKIP_LIBRARY_CHECKS"; then
2528 dnl ========================================================
2529 dnl Check for system libraries
2530 dnl ========================================================
2531 dnl AC_CHECK_LIB(C, main)
2532 dnl AC_CHECK_LIB(C_r, main)
2533 dnl AC_CHECK_LIB(c, main)
2534 dnl AC_CHECK_LIB(c_r, main)
2535 dnl AC_CHECK_LIB(dce, main)
2536 dnl AC_CHECK_LIB(dl, main)
2537 dnl AC_CHECK_LIB(dld, main)
2538 dnl AC_CHECK_LIB(gen, main)
2539 dnl AC_CHECK_LIB(ip6, main)
2540 dnl AC_CHECK_LIB(l, main)
2541 dnl AC_CHECK_LIB(m, main)
2542 dnl AC_CHECK_LIB(nsl, main)
2543 dnl AC_CHECK_LIB(posix4, main)
2544 dnl AC_CHECK_LIB(prstrms, main)
2545 dnl AC_CHECK_LIB(prstrms_shr, main)
2546 dnl AC_CHECK_LIB(pthread, main)
2547 dnl AC_CHECK_LIB(pthreads, main)
2548 dnl AC_CHECK_LIB(resolv, main)
2549 dnl AC_CHECK_LIB(rt, main)
2550 dnl AC_CHECK_LIB(socket, main)
2551 dnl AC_CHECK_LIB(svld, main)
2552 dnl AC_CHECK_LIB(thread, main)
2553 dnl AC_CHECK_LIB(vms_jackets, main)
2556 dnl We don't want anything to link with libdl even if it's present on OS X, 
2557 dnl since it's not used and not part of the default installation.
2558 dnl The same goes for BeOS.
2559 dnl OS/2 has dlfcn in libc.
2561 case $target in
2562 *-darwin*|*-beos*|*-os2*)
2563     ;;
2565     AC_CHECK_LIB(dl, dlopen,
2566         [AC_CHECK_HEADER(dlfcn.h,
2567             OS_LIBS="-ldl $OS_LIBS")])
2568     ;;
2569 esac
2572 dnl ========================================================
2573 dnl Check for system header files.
2574 dnl ========================================================
2575 dnl AC_HEADER_DIRENT
2576 dnl AC_HEADER_STDC
2577 dnl AC_HEADER_SYS_WAIT
2578 dnl AC_CHECK_HEADERS(fcntl.h limits.h sys/file.h sys/ioctl.h sys/time.h unistd.h)
2580 dnl ========================================================
2581 dnl Check for typedefs and structs
2582 dnl ========================================================
2583 dnl AC_C_CONST
2584 dnl AC_TYPE_UID_T
2585 dnl AC_TYPE_MODE_T
2586 dnl AC_TYPE_OFF_T
2587 dnl AC_TYPE_PID_T
2588 dnl AC_TYPE_SIZE_T
2589 dnl AC_STRUCT_ST_BLKSIZE
2590 dnl AC_STRUCT_ST_BLOCKS
2591 dnl AC_STRUCT_ST_RDEV
2592 dnl AC_HEADER_TIME
2593 dnl AC_STRUCT_TM
2595 dnl ========================================================
2596 dnl Checks for library functions.
2597 dnl ========================================================
2598 AC_PROG_GCC_TRADITIONAL
2599 _SAVE_LIBS="$LIBS"
2600 LIBS="$LIBS $OS_LIBS"
2601 AC_CHECK_FUNCS(dladdr gettid lchown setpriority strerror syscall)
2602 LIBS="$_SAVE_LIBS"
2604 dnl AC_FUNC_MEMCMP
2605 dnl AC_FUNC_MMAP
2606 dnl AC_FUNC_SETVBUF_REVERSED
2607 dnl AC_FUNC_STRCOLL
2608 dnl AC_FUNC_STRFTIME
2609 dnl AC_FUNC_UTIME_NULL
2610 dnl AC_FUNC_VPRINTF
2611 dnl AC_CHECK_FUNCS(ftime getcwd gethostname gettimeofday getwd mkdir mktime putenv rmdir select socket strdup strerror strstr strtol strtoul uname)
2613 dnl ========================================================
2614 dnl Check options
2615 dnl ========================================================
2617 dnl ======================================================
2618 dnl = Enable compiling with ccache
2619 dnl ======================================================
2620 AC_ARG_WITH(ccache,
2621 [  --with-ccache[=path/to/ccache]
2622                           Enable compiling with ccache],
2623     CCACHE=$withval, CCACHE="no")
2625 if test "$CCACHE" != "no"; then
2626     if test -n "$CCACHE"; then
2627         if test "$CCACHE" = "yes"; then
2628             CCACHE=
2629         else
2630             if test ! -e "$CCACHE"; then
2631                 AC_MSG_ERROR([$CCACHE not found])
2632             fi
2633         fi
2634     fi
2635     AC_PATH_PROGS(CCACHE, $CCACHE ccache)
2636     if test -z "$CCACHE" -o "$CCACHE" = ":"; then
2637         AC_MSG_ERROR([ccache not found])
2638     elif test -x "$CCACHE"; then
2639         CC="$CCACHE $CC"
2640         CXX="$CCACHE $CXX"
2641     else
2642         AC_MSG_ERROR([$CCACHE is not executable])
2643     fi
2646 dnl ========================================================
2647 dnl =
2648 dnl = --enable-strip
2649 dnl = 
2650 dnl = Enable stripping of libs and executables
2651 dnl = 
2652 dnl ========================================================
2653 AC_ARG_ENABLE(strip,
2654     [  --enable-strip          Enable stripping of shared libs and programs],
2655     [ if test "$enableval" = "yes"; then
2656             ENABLE_STRIP=1
2657       fi ])
2659 dnl Check for hpux options
2660 case "${target_os}" in
2661 hpux*)
2662 if test -z "$GNU_CC"; then
2664     AC_CACHE_CHECK(for +Olit support,
2665         ac_cv_hpux_usable_olit_option,
2666         dnl since aCC doesn't throw an error on invalid options,
2667         dnl we have to test this the hard way
2668         [ac_cv_hpux_usable_olit_option=no
2669         rm -f conftest*
2670         echo 'int main() { return 0; }' | cat > conftest.c
2671         ${CC-cc} ${CFLAGS} +Olit=all -o conftest conftest.c > conftest.out 2>&1
2672         if test $? -eq 0; then
2673             if test -z "`egrep -i '(unrecognize|unknown)' conftest.out`"; then
2674                 ac_cv_hpux_usable_olit_option=yes
2675             fi
2676         fi
2677         rm -f conftest*
2678         ])
2680     if test "$ac_cv_hpux_usable_olit_option" = "yes"; then
2681         CFLAGS="$CFLAGS +Olit=all"
2682         CXXFLAGS="$CXXFLAGS +Olit=all"
2683     else
2684         CFLAGS="$CFLAGS +ESlit"
2685         CXXFLAGS="$CXXFLAGS +ESlit"
2686     fi
2689 esac
2692 dnl Apparently, some systems cannot properly check for the pthread
2693 dnl library unless <pthread.h> is included so we need to test
2694 dnl using it
2696 dnl MOZ_CHECK_PTHREADS(lib, success, failure)
2697 AC_DEFUN(MOZ_CHECK_PTHREADS,
2699 AC_MSG_CHECKING([for pthread_create in -l$1])
2700 echo "
2701     #include <pthread.h> 
2702     void *foo(void *v) { return v; } 
2703     int main() { 
2704         pthread_t t;
2705         if (!pthread_create(&t, 0, &foo, 0)) {
2706             pthread_join(t, 0);
2707         }
2708         return 0;
2709     }" > dummy.c ;
2710     echo "${CC-cc} -o dummy${ac_exeext} dummy.c $CFLAGS $CPPFLAGS -l[$1] $LDFLAGS $LIBS" 1>&5;
2711     ${CC-cc} -o dummy${ac_exeext} dummy.c $CFLAGS $CPPFLAGS -l[$1] $LDFLAGS $LIBS 2>&5;
2712     _res=$? ;
2713     rm -f dummy.c dummy${ac_exeext} ;
2714     if test "$_res" = "0"; then
2715         AC_MSG_RESULT([yes])
2716         [$2]
2717     else
2718         AC_MSG_RESULT([no])
2719         [$3]
2720     fi
2723 case "$target_os" in
2724 darwin*)
2725     _HAVE_PTHREADS=1
2726     ;;
2727 wince*)
2728     _HAVE_PTHREADS=
2729     ;;
2731     MOZ_CHECK_PTHREADS(pthreads,
2732         _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
2733         MOZ_CHECK_PTHREADS(pthread,
2734             _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
2735             MOZ_CHECK_PTHREADS(c_r,
2736                 _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
2737                 MOZ_CHECK_PTHREADS(c,
2738                     _HAVE_PTHREADS=1
2739                 )
2740             )
2741         )
2742     )
2743     ;;
2744 esac
2746 AC_ARG_WITH(pthreads,
2747     [  --with-pthreads         Use system pthreads library as thread subsystem],
2748     [ if test "$withval" = "yes"; then
2749             if test -n "$_HAVE_PTHREADS"; then
2750                     USE_PTHREADS=1 
2751                     USE_USER_PTHREADS=
2752                     USE_NSPR_THREADS=
2753             else
2754                     AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
2755             fi
2756           else
2757             USE_PTHREADS=
2758             _PTHREAD_LDFLAGS=
2759           fi],
2760         [ if test -n "$_HAVE_PTHREADS" && test -z "$USE_USER_PTHREADS" && test -z "$USE_NSPR_THREADS"; then
2761             USE_PTHREADS=1
2762             USE_USER_PTHREADS=
2763             USE_NSPR_THREADS=
2764           fi])
2766 AC_ARG_ENABLE(user-pthreads,
2767     [  --enable-user-pthreads  Build using userland pthreads],
2768     [ if test "$enableval" = "yes"; then
2769         if test -n "$_HAVE_PTHREADS"; then
2770                     USE_PTHREADS=
2771                     USE_USER_PTHREADS=1
2772                     USE_NSPR_THREADS=
2773             else
2774                     AC_MSG_ERROR([ --enable-user-pthreads specified for a system without pthread support ]);
2775             fi
2776           fi])
2778 AC_ARG_ENABLE(nspr-threads,
2779     [  --enable-nspr-threads   Build using classic nspr threads],
2780     [ if test "$enableval" = "yes"; then
2781             USE_PTHREADS=
2782             USE_USER_PTHREADS=
2783             USE_NSPR_THREADS=1
2784           fi])
2786 case "$target" in
2787 *-beos*)
2788     AC_ARG_WITH(bthreads,
2789     [  --with-bthreads         Use system bthreads library as thread subsystem
2790                           (BeOS only)],
2791     [   if test "$withval" = "yes"; then
2792             USE_BTHREADS=1
2793                 USE_USER_PTHREADS=
2794                 USE_PTHREADS=
2795             fi])
2796     ;;
2797 esac
2799 fi # SKIP_LIBRARY_CHECKS
2801 AC_ARG_ENABLE(ipv6,
2802     [  --enable-ipv6           Compile ipv6 support],
2803     [ if test "$enableval" = "yes"; then
2804             USE_IPV6=1
2805       else
2806             USE_IPV6=
2807       fi])
2809 if test -n "$USE_PTHREADS"; then
2810    dnl See if -pthread is supported.
2811    rm -f conftest*
2812    ac_cv_have_dash_pthread=no
2813    AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
2814    echo 'int main() { return 0; }' | cat > conftest.c
2815    ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
2816    if test $? -eq 0; then
2817         if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
2818             ac_cv_have_dash_pthread=yes
2819                 case "$target_os" in
2820             freebsd*)
2821 # Freebsd doesn't use -pthread for compiles, it uses them for linking
2822             ;;
2823             *)
2824             CFLAGS="$CFLAGS -pthread"
2825             CXXFLAGS="$CXXFLAGS -pthread"
2826             ;;
2827         esac
2828         fi
2829     fi
2830     rm -f conftest*
2831     AC_MSG_RESULT($ac_cv_have_dash_pthread)
2833         dnl
2834         dnl See if -pthreads is supported.
2835         dnl
2836     ac_cv_have_dash_pthreads=no
2837     if test "$ac_cv_have_dash_pthread" = "no"; then
2838             AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
2839         echo 'int main() { return 0; }' | cat > conftest.c
2840             ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
2841         if test $? -eq 0; then
2842                 if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
2843                             ac_cv_have_dash_pthreads=yes
2844                             CFLAGS="$CFLAGS -pthreads"
2845                             CXXFLAGS="$CXXFLAGS -pthreads"
2846                     fi
2847             fi
2848             rm -f conftest*
2849         AC_MSG_RESULT($ac_cv_have_dash_pthreads)
2850     fi
2852     case "$target" in
2853     *-solaris*)
2854         if test "$ac_cv_have_dash_pthreads" = "yes"; then
2855             _PTHREAD_LDFLAGS=
2856         fi
2857             ;;
2858     *-freebsd*)
2859             AC_DEFINE(_REENTRANT)
2860             AC_DEFINE(_THREAD_SAFE)
2861             dnl -pthread links in -lc_r, so don't specify it explicitly.
2862             if test "$ac_cv_have_dash_pthread" = "yes"; then
2863                 _PTHREAD_LDFLAGS="-pthread"
2864             else
2865                 _PTHREAD_LDFLAGS="-lc_r"
2866             fi
2867             ;;
2868     *-netbsd*)
2869             if test "$ac_cv_have_dash_pthread" = "yes"; then
2870                 _PTHREAD_LDFLAGS="-pthread"
2871             fi
2872             ;;
2873     *-bsdi*)
2874             AC_DEFINE(_THREAD_SAFE)
2875             dnl -pthread links in -lc_r, so don't specify it explicitly.
2876             if test "$ac_cv_have_dash_pthread" = "yes"; then
2877                 _PTHREAD_LDFLAGS=
2878             fi
2879             ;;
2880     *-openbsd*)
2881         if test "$ac_cv_have_dash_pthread" = "yes"; then
2882             _PTHREAD_LDFLAGS=-pthread
2883         fi
2884         ;;
2885     *-linux*|*-gnu*|*-k*bsd*-gnu)
2886         AC_DEFINE(_REENTRANT)
2887         ;;
2888     esac
2890 else 
2891     if test -n "$USE_USER_PTHREADS"; then
2892             USE_PTHREADS=
2893             USE_NSPR_THREADS=
2894     else
2895         _PTHREAD_LDFLAGS=
2896     fi
2898 dnl Special thread exceptions
2900 case "$target" in
2901 *-aix*)
2902     if test -n "$USE_NSPR_THREADS"; then
2903         AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2904     fi
2905     case "$target_os" in
2906     aix4.1*)
2907         if test -z "$USE_PTHREADS"; then
2908             AC_DEFINE(AIX_RENAME_SELECT)
2909         fi
2910         ;;
2911     aix4.2*)
2912         if test -z "$USE_NSPR_THREADS"; then
2913             AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
2914         fi
2915         ;;
2916     aix4.3*)
2917         if test -z "$USE_NSPR_THREADS"; then
2918             AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
2919         fi
2920         if test -n "$USE_PTHREADS"; then
2921             AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
2922         fi
2923         ;;
2924     *)
2925         if test -z "$USE_NSPR_THREADS"; then
2926             AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
2927         fi
2928         if test -n "$USE_PTHREADS"; then
2929             AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
2930         fi
2931         ;;
2932     esac
2933     ;;
2934 *-bsdi*)
2935     if test -n "$USE_PTHREADS"; then
2936         AC_DEFINE(_PR_NEED_PTHREAD_INIT)
2937     fi
2938     ;;
2939 *-freebsd*)
2940     if test -n "$USE_NSPR_THREADS"; then
2941         AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2942     fi
2943     ;;
2944 *-hpux*)
2945     if test -n "$USE_NSPR_THREADS"; then
2946         AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2947     fi 
2948     if test "$USE_PTHREADS"; then
2949         if echo "$OS_RELEASE" | egrep '^(B.10.10|B.10.20)' >/dev/null; then
2950             AC_DEFINE(_REENTRANT)
2951             AC_DEFINE(_PR_DCETHREADS)
2952         else
2953             AC_DEFINE_UNQUOTED(_POSIX_C_SOURCE,199506L)
2954             AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
2955         fi
2956     fi
2957     if test "$USE_USER_PTHREADS"; then
2958         AC_DEFINE_UNQUOTED(_POSIX_C_SOURCE,199506L)
2959     fi
2960     ;;
2961 *-irix*)
2962     if test "${target_os}" = "irix6.5"; then
2963         if test -n "$USE_PTHREADS"; then
2964             AC_DEFINE(_PR_HAVE_GETHOST_R)
2965             AC_DEFINE(_PR_HAVE_GETHOST_R_POINTER)
2966         fi
2967     fi
2968     ;;
2969 *-linux*|*-gnu*|*-k*bsd*-gnu)
2970     if test -n "$USE_NSPR_THREADS"; then
2971         AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2972     fi
2973     ;;
2974 *-mingw*|*-cygwin*|*-msvc*|*-mks*|*-wince*|*-winmo*|*-os2*|*-beos*)
2975     dnl win32, wince, os2 & beos cannot use pthreads
2976     USE_PTHREADS=
2977     _PTHREAD_LDFLAGS=
2978     USE_USER_PTHREADS=
2979     ;;
2980 *-netbsd*|*-openbsd*)
2981     if test -n "$USE_NSPR_THREADS"; then
2982         AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2983     fi
2984     ;;
2985 *-osf*)
2986     if test -n "$USE_NSPR_THREADS"; then
2987         AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
2988     fi
2989     if test -n "$USE_PTHREADS"; then
2990         if echo $OS_RELEASE | egrep -c '(V2.0|V3.2)' 2>/dev/null; then
2991             :
2992         else
2993             AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
2994         fi
2995     fi
2996     ;;
2997 *-solaris*)
2998     if test -n "$USE_NSPR_THREADS"; then
2999         AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
3000     fi
3001     if test -n "$USE_PTHREADS"; then
3002         AC_DEFINE(_REENTRANT)
3003         AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
3004         if test "$OS_TEST" = "i86pc"; then
3005             if test -n "$USE_64"; then
3006                PR_MD_ASFILES=os_SunOS_x86_64.s
3007             else
3008                PR_MD_ASFILES=os_SunOS_x86.s
3009             fi
3010         else
3011             if test -n "$USE_64"; then
3012                 PR_MD_ASFILES=os_SunOS_sparcv9.s
3013             fi
3014         fi
3015     fi
3016     ;;
3017 *-nto*)
3018     if test -n "$USE_PTHREADS"; then
3019         AC_DEFINE(_PR_HAVE_GETHOST_R)
3020         AC_DEFINE(_PR_HAVE_GETHOST_R_POINTER)
3021     fi
3022     ;;
3023 esac
3025 OS_LIBS="$_PTHREAD_LDFLAGS $OS_LIBS"
3027 dnl If the user passed in arg to --enable-optimize or --enable-debug,
3028 dnl make sure that we use it.
3029 if test -n "$_SAVE_OPTIMIZE_FLAGS"; then
3030     _OPTIMIZE_FLAGS="$_SAVE_OPTIMIZE_FLAGS"
3033 if test -n "$_SAVE_DEBUG_FLAGS"; then
3034     _DEBUG_FLAGS="$_SAVE_DEBUG_FLAGS"
3037 if test -n "$MOZ_OPTIMIZE"; then
3038     CFLAGS="$CFLAGS $_OPTIMIZE_FLAGS"
3039     CXXFLAGS="$CXXFLAGS $_OPTIMIZE_FLAGS"
3042 if test -n "$MOZ_DEBUG_SYMBOLS"; then
3043     CFLAGS="$CFLAGS $_DEBUG_FLAGS"
3044     CXXFLAGS="$CXXFLAGS $_DEBUG_FLAGS"
3047 if test -n "$MOZ_OPTIMIZE"; then
3048     OBJDIR_TAG=_OPT
3049 else
3050     OBJDIR_TAG=_DBG
3053 if test -n "$USE_64"; then
3054     COMPILER_TAG=_64
3057 RELEASE_OBJDIR_NAME="${OS_CONFIG}${CPU_ARCH_TAG}${COMPILER_TAG}${IMPL_STRATEGY}${OBJDIR_TAG}.${OBJDIR_SUFFIX}"
3059 dnl ========================================================
3060 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
3061 dnl ========================================================
3062 case "$target_os" in
3063 cygwin*|msvc*|mks*)
3064     CC="\$(CYGWIN_WRAPPER) $CC"
3065     CXX="\$(CYGWIN_WRAPPER) $CXX"
3066     RC="\$(CYGWIN_WRAPPER) $RC"
3067     ;;
3068 esac
3070 dnl ========================================================
3071 dnl = Use malloc wrapper lib
3072 dnl ========================================================
3073 AC_ARG_ENABLE(wrap-malloc,
3074 [  --enable-wrap-malloc    Wrap malloc calls (gnu linker only)],
3075 [     if test "$enableval" = "yes"; then
3076             _WRAP_MALLOC=1
3077       fi ])
3079 if test -n "$_WRAP_MALLOC"; then
3080     if test -n "$GNU_CC"; then
3081         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=malloc,--wrap=calloc,--wrap=valloc,--wrap=free,--wrap=realloc,--wrap=memalign"
3082         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=__builtin_new,--wrap=__builtin_vec_new,--wrap=__builtin_delete,--wrap=__builtin_vec_delete"
3083         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=strdup,--wrap=strndup"
3084         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=posix_memalign,--wrap=malloc_usable_size"
3085     else
3086         AC_MSG_ERROR([--enable-wrap-malloc is not supported for non-GNU toolchains])
3087     fi
3090 dnl ========================================================
3091 dnl = Location of malloc wrapper lib
3092 dnl ========================================================
3093 AC_ARG_WITH(wrap-malloc,
3094 [  --with-wrap-malloc=SHAREDLIB  Location of malloc wrapper library],
3095     WRAP_LDFLAGS="${WRAP_LDFLAGS} $withval")
3097 dnl ========================================================
3098 dnl Substitution of found variables.
3099 dnl ========================================================
3100 AC_SUBST(SHELL_OVERRIDE)
3102 AC_SUBST(MOZILLA_CLIENT)
3103 AC_SUBST(CC)
3104 AC_SUBST(CXX)
3105 AC_SUBST(CFLAGS)
3106 AC_SUBST(CXXFLAGS)
3107 AC_SUBST(CPPFLAGS)
3108 AC_SUBST(HOST_CC)
3109 AC_SUBST(HOST_CFLAGS)
3110 AC_SUBST(LDFLAGS)
3111 AC_SUBST(HOST_LDFLAGS)
3112 AC_SUBST(GNU_CC)
3113 AC_SUBST(GCC_USE_GNU_LD)
3114 AC_SUBST(MSC_VER)
3115 AC_SUBST(CROSS_COMPILE)
3117 AC_SUBST(MOZ_OPTIMIZE)
3118 AC_SUBST(MOZ_DEBUG)
3119 AC_SUBST(MOZ_DEBUG_SYMBOLS)
3121 AC_SUBST(USE_CPLUS)
3122 AC_SUBST(USE_IPV6)
3123 AC_SUBST(USE_N32)
3124 AC_SUBST(USE_64)
3125 AC_SUBST(OBJECT_MODE)
3126 AC_SUBST(ENABLE_STRIP)
3128 AC_SUBST(USE_PTHREADS)
3129 AC_SUBST(USE_BTHREADS)
3130 AC_SUBST(USE_USER_PTHREADS)
3131 AC_SUBST(USE_NSPR_THREADS)
3133 AC_SUBST(LIBNSPR)
3134 AC_SUBST(LIBPLC)
3136 AC_SUBST(MOD_MAJOR_VERSION)
3137 AC_SUBST(MOD_MINOR_VERSION)
3138 AC_SUBST(MOD_PATCH_VERSION)
3139 AC_SUBST(NSPR_MODNAME)
3140 AC_SUBST(MDCPUCFG_H)
3141 AC_SUBST(PR_MD_CSRCS)
3142 AC_SUBST(PR_MD_ASFILES)
3143 AC_SUBST(PR_MD_ARCH_DIR)
3144 AC_SUBST(CPU_ARCH)
3146 AC_SUBST(OBJ_SUFFIX)
3147 AC_SUBST(LIB_SUFFIX)
3148 AC_SUBST(DLL_SUFFIX)
3149 AC_SUBST(ASM_SUFFIX)
3150 AC_SUBST(WRAP_LDFLAGS)
3151 AC_SUBST(MKSHLIB)
3152 AC_SUBST(DSO_CFLAGS)
3153 AC_SUBST(DSO_LDOPTS)
3155 AC_SUBST(OS_TARGET)
3156 AC_SUBST(OS_ARCH)
3157 AC_SUBST(OS_RELEASE)
3158 AC_SUBST(OS_TEST)
3159 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3161 AC_SUBST(DEFINES)
3162 AC_SUBST(DEFS)
3163 AC_SUBST(AR)
3164 AC_SUBST(AR_FLAGS)
3165 AC_SUBST(AS)
3166 AC_SUBST(ASFLAGS)
3167 AC_SUBST(LD)
3168 AC_SUBST(RANLIB)
3169 AC_SUBST(PERL)
3170 AC_SUBST(STRIP)
3171 AC_SUBST(FILTER)
3172 AC_SUBST(IMPLIB)
3174 AC_SUBST(PROFILE_GEN_CFLAGS)
3175 AC_SUBST(PROFILE_GEN_LDFLAGS)
3176 AC_SUBST(PROFILE_USE_CFLAGS)
3177 AC_SUBST(PROFILE_USE_LDFLAGS)
3179 AC_SUBST(OS_LIBS)
3180 AC_SUBST(RESOLVE_LINK_SYMBOLS)
3181 AC_SUBST(AIX_LINK_OPTS)
3182 AC_SUBST(NOSUCHFILE)
3183 AC_SUBST(MOZ_OBJFORMAT)
3184 AC_SUBST(ULTRASPARC_LIBRARY)
3186 AC_SUBST(OBJDIR)
3187 AC_SUBST(OBJDIR_NAME)
3188 AC_SUBST(RELEASE_OBJDIR_NAME)
3189 AC_SUBST(NSINSTALL)
3190 AC_SUBST(OPTIMIZER)
3191 AC_SUBST(RC)
3192 AC_SUBST(RCFLAGS)
3193 AC_SUBST(DLLFLAGS)
3194 AC_SUBST(EXEFLAGS)
3195 AC_SUBST(OS_DLLFLAGS)
3196 AC_SUBST(CYGWIN_WRAPPER)
3197 AC_SUBST(VISIBILITY_FLAGS)
3198 AC_SUBST(WRAP_SYSTEM_INCLUDES)
3199 AC_SUBST(MACOS_SDK_DIR)
3200 AC_SUBST(SYMBIAN_SDK_DIR)
3201 AC_SUBST(NEXT_ROOT)
3202 AC_SUBST(MT)
3204 dnl ========================================================
3205 dnl Generate output files.
3206 dnl ========================================================
3207 MAKEFILES="
3208     Makefile
3209     config/Makefile
3210     config/autoconf.mk
3211     config/nsprincl.mk
3212     config/nsprincl.sh
3213     config/nspr-config
3214     config/nspr.pc
3215     lib/Makefile
3216     lib/ds/Makefile
3217     lib/libc/Makefile
3218     lib/libc/include/Makefile
3219     lib/libc/src/Makefile
3220     lib/tests/Makefile
3221     pkg/Makefile
3222     pr/Makefile
3223     pr/include/Makefile
3224     pr/include/md/Makefile
3225     pr/include/obsolete/Makefile
3226     pr/include/private/Makefile
3227     pr/src/Makefile
3228     pr/src/io/Makefile
3229     pr/src/linking/Makefile
3230     pr/src/malloc/Makefile
3231     pr/src/md/Makefile
3232     pr/src/md/${PR_MD_ARCH_DIR}/Makefile
3233     pr/src/memory/Makefile
3234     pr/src/misc/Makefile
3235     pr/src/threads/Makefile
3236     pr/tests/Makefile
3237     pr/tests/dll/Makefile
3240 if test "$OS_TARGET" = "Linux"; then
3241     MAKEFILES="$MAKEFILES
3242         pkg/linux/Makefile
3243     "
3244 elif test "$OS_TARGET" = "SunOS"; then
3245     MAKEFILES="$MAKEFILES
3246         pkg/solaris/Makefile
3247         pkg/solaris/SUNWpr/Makefile
3248         pkg/solaris/SUNWprd/Makefile
3249     "
3252 if test -z "$USE_PTHREADS" && test -z "$USE_BTHREADS"; then
3253     MAKEFILES="$MAKEFILES
3254         pr/src/threads/combined/Makefile
3255     "
3256 elif test -n "$USE_PTHREADS"; then
3257     MAKEFILES="$MAKEFILES
3258         pr/src/pthreads/Makefile
3259     "
3260 elif test -n "$USE_BTHREADS"; then
3261     MAKEFILES="$MAKEFILES
3262         pr/src/bthreads/Makefile
3263     "
3266 if test -n "$USE_CPLUS"; then
3267     MAKEFILES="$MAKEFILES
3268         pr/src/cplus/Makefile
3269         pr/src/cplus/tests/Makefile
3270     "
3273 echo $MAKEFILES > unallmakefiles
3275 AC_OUTPUT([$MAKEFILES], [chmod +x config/nspr-config])