tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

configure.in (74287B)


      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/.
      6 
      7 AC_PREREQ(2.61)
      8 AC_INIT
      9 AC_CONFIG_SRCDIR([pr/include/nspr.h])
     10 
     11 AC_CONFIG_AUX_DIR(build/autoconf)
     12 AC_CANONICAL_TARGET
     13 
     14 dnl ========================================================
     15 dnl = Defaults
     16 dnl ========================================================
     17 MOD_MAJOR_VERSION=4
     18 MOD_MINOR_VERSION=38
     19 MOD_PATCH_VERSION=2
     20 NSPR_MODNAME=nspr20
     21 _HAVE_PTHREADS=
     22 USE_PTHREADS=
     23 USE_USER_PTHREADS=
     24 USE_NSPR_THREADS=
     25 USE_N32=
     26 USE_X32=
     27 USE_64=
     28 USE_CPLUS=
     29 USE_IPV6=
     30 USE_MDUPDATE=
     31 _MACOSX_DEPLOYMENT_TARGET=
     32 _OPTIMIZE_FLAGS=-O
     33 _DEBUG_FLAGS=-g
     34 MOZ_DEBUG=1
     35 MOZ_OPTIMIZE=
     36 OBJDIR='$(OBJDIR_NAME)'
     37 OBJDIR_NAME=.
     38 OBJDIR_SUFFIX=OBJ
     39 NSINSTALL='$(MOD_DEPTH)/config/$(OBJDIR_NAME)/nsinstall'
     40 NOSUCHFILE=/no-such-file
     41 LIBNSPR='-L$(dist_libdir) -lnspr$(MOD_MAJOR_VERSION)'
     42 LIBPLC='-L$(dist_libdir) -lplc$(MOD_MAJOR_VERSION)'
     43 CYGWIN_WRAPPER=
     44 MACOS_SDK_DIR=
     45 NEXT_ROOT=
     46 MT=
     47 PROFILE_GEN_CFLAGS=
     48 PROFILE_GEN_LDFLAGS=
     49 PROFILE_USE_CFLAGS=
     50 PROFILE_USE_LDFLAGS=
     51 
     52 dnl Link in libraries necessary to resolve all symbols for shared libs
     53 RESOLVE_LINK_SYMBOLS=
     54 
     55 dnl ========================================================
     56 dnl =
     57 dnl = Dont change the following lines.  Doing so breaks:
     58 dnl =
     59 dnl = CFLAGS="-foo" ./configure
     60 dnl =
     61 dnl ========================================================
     62 CFLAGS="${CFLAGS=}"
     63 CXXFLAGS="${CXXFLAGS=}"
     64 LDFLAGS="${LDFLAGS=}"
     65 DLLFLAGS="${DLLFLAGS=}"
     66 HOST_CFLAGS="${HOST_CFLAGS=}"
     67 HOST_LDFLAGS="${HOST_LDFLAGS=}"
     68 
     69 case "$target" in
     70 *-cygwin*|*-mingw*|*-msys*)
     71     # Check to see if we are really running in a msvc environemnt
     72     _WIN32_MSVC=
     73     AC_CHECK_PROGS(CC, cl)
     74     cat > conftest.c <<EOF
     75 #ifdef _MSC_VER
     76 COMPILER IS MSVC
     77 #endif
     78 EOF
     79     read dummy <<EOF
     80 $($CC -E conftest.c 2>/dev/null | grep COMPILER)
     81 EOF
     82     if test -n "$dummy"; then
     83         _WIN32_MSVC=1
     84         CXX=$CC
     85     fi
     86     rm -f conftest.c
     87     ;;
     88 *-mks*)
     89     _WIN32_MSVC=1
     90     ;;
     91 esac
     92 
     93 if test -n "$_WIN32_MSVC"; then
     94     SKIP_PATH_CHECKS=1
     95     SKIP_COMPILER_CHECKS=1
     96     SKIP_LIBRARY_CHECKS=1
     97 fi
     98 
     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 ========================================================
    103 
    104 AC_ARG_WITH(android-ndk,
    105 [  --with-android-ndk=DIR
    106                           location where the Android NDK can be found],
    107     android_ndk=$withval)
    108 
    109 AC_ARG_WITH(android-toolchain,
    110 [  --with-android-toolchain=DIR
    111                           location of the Android toolchain],
    112     android_toolchain=$withval)
    113 
    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
    123 
    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)
    128 
    129 AC_ARG_WITH(android-platform,
    130 [  --with-android-platform=DIR
    131                           location of platform dir],
    132     android_platform=$withval)
    133 
    134 case "$target" in
    135 x86_64-linux*-android*)
    136     android_tool_prefix="x86_64-linux-android"
    137     ;;
    138 aarch64-linux*-android*)
    139     android_tool_prefix="aarch64-linux-android"
    140     ;;
    141 arm-linux*-android*|*-linuxandroid*)
    142     android_tool_prefix="arm-linux-androideabi"
    143     ;;
    144 i?86-*android*)
    145     android_tool_prefix="i686-linux-android"
    146     ;;
    147 mipsel-*android*)
    148     android_tool_prefix="mipsel-linux-android"
    149     ;;
    150 *)
    151     android_tool_prefix="$target_os"
    152     ;;
    153 esac
    154 
    155 case "$target" in
    156 *-android*|*-linuxandroid*)
    157     if test -z "$android_ndk" ; then
    158        AC_MSG_ERROR([You must specify --with-android-ndk=/path/to/ndk when targeting Android.])
    159     fi
    160 
    161     if test -z "$android_toolchain" ; then
    162         AC_MSG_CHECKING([for android toolchain directory])
    163 
    164         kernel_name=`uname -s | tr "[[:upper:]]" "[[:lower:]]"`
    165 
    166         case "$target_cpu" in
    167         arm)
    168             target_name=arm-linux-androideabi-4.4.3
    169             ;;
    170         i?86)
    171             target_name=x86-4.4.3
    172             ;;
    173         mipsel)
    174             target_name=mipsel-linux-android-4.4.3
    175             ;;
    176         esac
    177         android_toolchain="$android_ndk"/toolchains/$target_name/prebuilt/$kernel_name-x86
    178 
    179         if test -d "$android_toolchain" ; then
    180             AC_MSG_RESULT([$android_toolchain])
    181         else
    182             AC_MSG_ERROR([not found. You have to specify --with-android-toolchain=/path/to/ndk/toolchain.])
    183         fi
    184     fi
    185 
    186     if test -z "$android_platform" ; then
    187         AC_MSG_CHECKING([for android platform directory])
    188 
    189         case "$target_cpu" in
    190         arm)
    191             target_name=arm
    192             ;;
    193         i?86)
    194             target_name=x86
    195             ;;
    196         mipsel)
    197             target_name=mips
    198             ;;
    199         esac
    200 
    201         android_platform="$android_ndk"/platforms/android-"$android_version"/arch-"$target_name"
    202 
    203         if test -d "$android_platform" ; then
    204             AC_MSG_RESULT([$android_platform])
    205         else
    206             AC_MSG_ERROR([not found. You have to specify --with-android-platform=/path/to/ndk/platform.])
    207         fi
    208     fi
    209 
    210     dnl Old NDK support. If minimum requirement is changed to NDK r8b,
    211     dnl please remove this.
    212     case "$target_cpu" in
    213     i?86)
    214         if ! test -e "$android_toolchain"/bin/"$android_tool_prefix"-gcc; then
    215             dnl Old NDK toolchain name
    216             android_tool_prefix="i686-android-linux"
    217         fi
    218         ;;
    219     esac
    220 
    221     dnl set up compilers
    222     AS="$android_toolchain"/bin/"$android_tool_prefix"-as
    223     CC="$android_toolchain"/bin/"$android_tool_prefix"-gcc
    224     CXX="$android_toolchain"/bin/"$android_tool_prefix"-g++
    225     CPP="$android_toolchain"/bin/"$android_tool_prefix"-cpp
    226     LD="$android_toolchain"/bin/"$android_tool_prefix"-ld
    227     AR="$android_toolchain"/bin/"$android_tool_prefix"-ar
    228     RANLIB="$android_toolchain"/bin/"$android_tool_prefix"-ranlib
    229     STRIP="$android_toolchain"/bin/"$android_tool_prefix"-strip
    230 
    231     CPPFLAGS="-I$android_platform/usr/include $CPPFLAGS"
    232     CFLAGS="-mandroid -I$android_platform/usr/include -fno-short-enums -fno-exceptions $CFLAGS"
    233     CXXFLAGS="-mandroid -I$android_platform/usr/include -fpic -fno-short-enums -fno-exceptions $CXXFLAGS"
    234     LDFLAGS="-mandroid -L$android_platform/usr/lib -Wl,-rpath-link=$android_platform/usr/lib --sysroot=$android_platform $LDFLAGS"
    235 
    236     AC_DEFINE(ANDROID)
    237     ;;
    238 esac
    239 
    240 dnl ========================================================
    241 dnl =
    242 dnl = Check options that may affect the compiler
    243 dnl =
    244 dnl ========================================================
    245 dist_prefix='${MOD_DEPTH}/dist'
    246 dist_bindir='${dist_prefix}/bin'
    247 dist_includedir='${dist_prefix}/include/nspr'
    248 dist_libdir='${dist_prefix}/lib'
    249 dnl If the --includedir option was not specified, add '/nspr' to autoconf's
    250 dnl default value of includedir.
    251 if test "${includedir}" = '${prefix}/include'; then
    252     includedir='${prefix}/include/nspr'
    253 fi
    254 
    255 AC_ARG_WITH(dist-prefix,
    256     [  --with-dist-prefix=DIST_PREFIX
    257                           place build files in DIST_PREFIX [dist]],
    258     dist_prefix=$withval)
    259 
    260 AC_ARG_WITH(dist-bindir,
    261     [  --with-dist-bindir=DIR  build execuatables in DIR [DIST_PREFIX/bin]],
    262     dist_bindir=$withval)
    263 
    264 AC_ARG_WITH(dist-includedir,
    265     [  --with-dist-includedir=DIR
    266                           build include files in DIR [DIST_PREFIX/include/nspr]],
    267     dist_includedir=$withval)
    268 
    269 AC_ARG_WITH(dist-libdir,
    270     [  --with-dist-libdir=DIR  build library files in DIR [DIST_PREFIX/lib]],
    271     dist_libdir=$withval)
    272 
    273 AC_SUBST(dist_prefix)
    274 AC_SUBST(dist_bindir)
    275 AC_SUBST(dist_includedir)
    276 AC_SUBST(dist_libdir)
    277 
    278 dnl Check if NSPR is being compiled for Mozilla
    279 dnl Let --with-arg override environment setting
    280 dnl
    281 AC_ARG_WITH(mozilla,
    282     [  --with-mozilla          Compile NSPR with Mozilla support],
    283     [   if test "$withval" = "yes"; then
    284             AC_DEFINE(MOZILLA_CLIENT)
    285             MOZILLA_CLIENT=1
    286 	    else
    287 	        MOZILLA_CLIENT=
    288 	    fi],
    289     [	if test -n "$MOZILLA_CLIENT"; then
    290 	        AC_DEFINE(MOZILLA_CLIENT)
    291 	    fi])
    292 
    293 AC_ARG_ENABLE(optimize,
    294     [  --enable-optimize[=OPT] Enable code optimizations (ie. -O2) ],
    295     [ if test "$enableval" != "no"; then
    296           MOZ_OPTIMIZE=1
    297           if test -n "$enableval" -a "$enableval" != "yes"; then
    298             _OPTIMIZE_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
    299             _SAVE_OPTIMIZE_FLAGS=$_OPTIMIZE_FLAGS
    300           fi
    301       else
    302           MOZ_OPTIMIZE=
    303       fi ])
    304 
    305 AC_ARG_ENABLE(debug,
    306     [  --enable-debug[=DBG]    Enable debugging (using compiler flags DBG)],
    307     [ if test "$enableval" != "no"; then
    308           MOZ_DEBUG=1
    309           MOZ_DEBUG_SYMBOLS=1
    310           if test -n "$enableval" -a "$enableval" != "yes"; then
    311               _DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
    312               _SAVE_DEBUG_FLAGS=$_DEBUG_FLAGS
    313           fi
    314       else
    315           MOZ_DEBUG=
    316       fi ],
    317       MOZ_DEBUG_SYMBOLS=1)
    318 
    319 AC_ARG_ENABLE(debug-symbols,
    320     [  --enable-debug-symbols[=DBG]    Enable debugging symbols
    321                                        (using compiler flags DBG)],
    322     [ if test "$enableval" != "no"; then
    323           MOZ_DEBUG_SYMBOLS=1
    324           if test -n "$enableval" -a "$enableval" != "yes"; then
    325               if test -z "$_SAVE_DEBUG_FLAGS"; then
    326                   _DEBUG_FLAGS=`echo $enableval | sed -e 's|\\\ | |g'`
    327                   _SAVE_DEBUG_FLAGS=$_DEBUG_FLAGS
    328               else
    329                   AC_MSG_ERROR([--enable-debug-symbols flags cannot be used with --enable-debug flags])
    330               fi
    331           fi
    332       else
    333           MOZ_DEBUG_SYMBOLS=
    334       fi ])
    335 
    336 AC_ARG_ENABLE(win32-target,
    337     [  --enable-win32-target=\$t
    338                           Specify win32 flavor. (WIN95 or WINNT)],
    339     OS_TARGET=`echo $enableval | tr a-z A-Z`)
    340 
    341 
    342 AC_ARG_ENABLE(debug-rtl,
    343     [  --enable-debug-rtl      Use the MSVC debug runtime library],
    344     [ if test "$enableval" = "yes"; then
    345 	    USE_DEBUG_RTL=1
    346       else
    347 	    USE_DEBUG_RTL=0
    348       fi ])
    349 
    350 AC_ARG_ENABLE(static-rtl,
    351     [  --enable-static-rtl     Use the MSVC static runtime library],
    352     [ if test "$enableval" = "yes"; then
    353 	    USE_STATIC_RTL=1
    354       fi ])
    355 
    356 AC_ARG_ENABLE(x32,
    357     [  --enable-x32            Enable x32 ABI support (x86_64 only)],
    358     [ if test "$enableval" = "yes"; then
    359         USE_X32=1
    360       else if test "$enableval" = "no"; then
    361         USE_X32=
    362       fi
    363     fi ])
    364 
    365 AC_ARG_ENABLE(64bit,
    366     [  --enable-64bit          Enable 64-bit support (on certain platforms)],
    367     [ if test "$enableval" = "yes"; then
    368 	    USE_64=1
    369       fi ])
    370 
    371 AC_ARG_ENABLE(mdupdate,
    372     [  --enable-mdupdate       Enable use of certain compilers' mdupdate feature],
    373     [ if test "$enableval" = "yes"; then
    374 	    USE_MDUPDATE=1
    375       fi ])
    376 
    377 AC_ARG_ENABLE(cplus,
    378     [  --enable-cplus          Enable some c++ api routines],
    379     [ if test "$enableval" = "yes"; then
    380 	    USE_CPLUS=1
    381       fi])
    382 
    383 AC_ARG_WITH(arm-kuser,
    384     [  --with-arm-kuser        Use kuser helpers (Linux/ARM only)
    385                           (Requires kernel 2.6.13 or later)],
    386     [ if test "$withval" = "yes"; then
    387 	    AC_DEFINE(_PR_ARM_KUSER)
    388       fi ])
    389 
    390 dnl ========================================================
    391 dnl = Mac OS X SDK support
    392 dnl ========================================================
    393 AC_ARG_WITH(macos-sdk,
    394     [  --with-macos-sdk=dir    Location of platform SDK to use (Mac OS X only)],
    395     MACOS_SDK_DIR=$withval)
    396 
    397 AC_ARG_ENABLE(macos-target,
    398              [  --enable-macos-target=VER
    399                           Set the minimum MacOS version needed at runtime
    400                           [10.3 for ppc, 10.4 for x86]],
    401              [_MACOSX_DEPLOYMENT_TARGET=$enableval])
    402 
    403 dnl ========================================================
    404 dnl =
    405 dnl = Set the threading model
    406 dnl =
    407 dnl ========================================================
    408 case "$target" in
    409 
    410 *-aix*)
    411     USE_PTHREADS=1
    412     ;;
    413 esac
    414 
    415 dnl ========================================================
    416 dnl =
    417 dnl = Set the default C compiler
    418 dnl =
    419 dnl ========================================================
    420 if test -z "$CC"; then
    421     case "$target" in
    422 
    423     *-aix*)
    424         if test -z "$USE_NSPR_THREADS"; then
    425             CC=xlc_r
    426         else
    427             CC=xlc
    428         fi
    429     ;;
    430 
    431     *-hpux*)
    432         CC=cc
    433     ;;
    434 
    435     *-solaris*)
    436         CC=cc
    437     ;;
    438 
    439     esac
    440 fi
    441 
    442 dnl ========================================================
    443 dnl =
    444 dnl = Set the default C++ compiler
    445 dnl =
    446 dnl ========================================================
    447 if test -z "$CXX"; then
    448     case "$target" in
    449 
    450     *-aix*)
    451         if test -z "$USE_NSPR_THREADS"; then
    452             CXX=xlC_r
    453         else
    454             CXX=xlC
    455         fi
    456     ;;
    457 
    458     *-hpux*)
    459         case "${target_os}" in
    460         hpux10.30)
    461             CXX=aCC
    462             ;;
    463         hpux11.*)
    464             CXX=aCC
    465             ;;
    466         *)
    467             CXX=CC
    468             ;;
    469         esac
    470     ;;
    471 
    472     *-solaris*)
    473         CXX=CC
    474     ;;
    475 
    476     esac
    477 fi
    478 
    479 if test -z "$SKIP_PATH_CHECKS"; then
    480     AC_PATH_PROG(WHOAMI, $WHOAMI whoami, echo not_whoami)
    481 fi
    482 
    483 if test -n "$MOZ_DEBUG"; then
    484     AC_DEFINE(DEBUG)
    485     DEFINES="$DEFINES -UNDEBUG"
    486 
    487     case "${target_os}" in
    488     mks*|cygwin*|mingw*|msys*)
    489         DEFINES="$DEFINES -DDEBUG_`echo ${USERNAME} | sed -e 's| |_|g'`"
    490         ;;
    491     *)
    492         DEFINES="$DEFINES -DDEBUG_`$WHOAMI`"
    493         ;;
    494     esac
    495 else
    496     AC_DEFINE(NDEBUG)
    497     DEFINES="$DEFINES -UDEBUG"
    498 fi
    499 
    500 if test -z "$SKIP_COMPILER_CHECKS"; then
    501 dnl ========================================================
    502 dnl Checks for compilers.
    503 dnl ========================================================
    504 if test "$target" != "$host"; then
    505     echo "cross compiling from $host to $target"
    506     cross_compiling=yes
    507 
    508     case "$build:$target" in
    509       powerpc-apple-darwin8*:i?86-apple-darwin*)
    510         dnl The Darwin cross compiler doesn't necessarily point itself at a
    511         dnl root that has libraries for the proper architecture, it defaults
    512         dnl to the system root.  The libraries in the system root on current
    513         dnl versions of PPC OS X 10.4 aren't fat, so these target compiler
    514         dnl checks will fail.  Fake a working SDK in that case.
    515         _SAVE_CFLAGS=$CFLAGS
    516         _SAVE_CXXFLAGS=$CXXFLAGS
    517         CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CFLAGS"
    518         CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk $CXXFLAGS"
    519         ;;
    520     esac
    521 
    522     AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", echo)
    523     unset ac_cv_prog_CC
    524     dnl Now exit the conditional block to invoke AC_PROG_CC.
    525 fi
    526 
    527 dnl In the latest versions of autoconf, AC_PROG_CC is a one-shot macro,
    528 dnl declared with AC_DEFUN_ONCE. So it must not be expanded inside a
    529 dnl conditional block. Invoke AC_PROG_CC outside any conditional block
    530 dnl and before invoking AC_TRY_COMPILE (which requires AC_PROG_CC).
    531 AC_PROG_CC
    532 
    533 dnl Reenter the conditional blocks after invoking AC_PROG_CC.
    534 if test "$target" != "$host"; then
    535     if test -n "$USE_CPLUS"; then
    536         AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", echo)
    537         unset ac_cv_prog_CXX
    538         AC_PROG_CXX
    539     fi
    540 
    541     case "$build:$target" in
    542       powerpc-apple-darwin8*:i?86-apple-darwin*|*:arm*-apple-darwin*)
    543         dnl Revert the changes made above.  From this point on, the target
    544         dnl compiler will never be used without applying the SDK to CFLAGS
    545         dnl (see --with-macos-sdk below).
    546         CFLAGS=$_SAVE_CFLAGS
    547         CXXFLAGS=$_SAVE_CXXFLAGS
    548         ;;
    549     esac
    550 
    551     AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", echo)
    552     AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", echo)
    553     AC_CHECK_PROGS(AS, $AS "${target_alias}-as" "${target}-as", echo)
    554     AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", echo)
    555     AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", echo)
    556     AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", echo)
    557 
    558     _SAVE_CC="$CC"
    559     _SAVE_CFLAGS="$CFLAGS"
    560     _SAVE_LDFLAGS="$LDFLAGS"
    561 
    562     AC_MSG_CHECKING([for $host compiler])
    563     AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc, "")
    564     if test -z "$HOST_CC"; then
    565         AC_MSG_ERROR([no acceptable cc found in \$PATH])
    566     fi
    567     AC_MSG_RESULT([$HOST_CC])
    568 
    569     CC="$HOST_CC"
    570     CFLAGS="$HOST_CFLAGS"
    571     LDFLAGS="$HOST_LDFLAGS"
    572 
    573     AC_MSG_CHECKING([whether the $host compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
    574     AC_TRY_COMPILE([], [return 0;],
    575         [AC_MSG_RESULT([yes])],
    576         [AC_MSG_ERROR([installation or configuration problem: $host compiler $HOST_CC cannot create executables.])] )
    577 
    578     CC=$_SAVE_CC
    579     CFLAGS=$_SAVE_CFLAGS
    580     LDFLAGS=$_SAVE_LDFLAGS
    581 else
    582     if test -n "$USE_CPLUS"; then
    583         if test "$CC" = "cl" -a -z "$CXX"; then
    584             CXX=$CC
    585         else
    586             AC_PROG_CXX
    587         fi
    588     fi
    589     AC_PROG_RANLIB
    590     AC_PATH_PROGS(AS, as, $CC)
    591     AC_PATH_PROGS(AR, ar, echo not_ar)
    592     AC_PATH_PROGS(LD, ld link, echo not_ld)
    593     AC_PATH_PROGS(STRIP, strip, echo not_strip)
    594     AC_PATH_PROGS(WINDRES, windres, echo not_windres)
    595     if test -z "$HOST_CC"; then
    596         HOST_CC="$CC"
    597     fi
    598     if test -z "$HOST_CFLAGS"; then
    599         HOST_CFLAGS="$CFLAGS"
    600     fi
    601 fi
    602 
    603 AC_PROG_CPP
    604 
    605 if test "$GCC" = "yes"; then
    606     GNU_CC=1
    607 fi
    608 if test "$GXX" = "yes"; then
    609     GNU_CXX=1
    610 fi
    611 if test "`echo | $AS -v 2>&1 | grep -c GNU`" != "0"; then
    612     GNU_AS=1
    613 fi
    614 rm -f a.out
    615 
    616 case "$build:$target" in
    617     i?86-apple-darwin*:powerpc-apple-darwin*)
    618         dnl cross_compiling will have erroneously been set to "no" in this
    619         dnl case, because the x86 build host is able to run ppc code in a
    620         dnl translated environment, making a cross compiler appear native.
    621         cross_compiling=yes
    622         ;;
    623 esac
    624 
    625 if test "$cross_compiling"  = "yes"; then
    626     CROSS_COMPILE=1
    627 else
    628     CROSS_COMPILE=
    629 fi
    630 
    631 dnl ========================================================
    632 dnl Check for gcc -pipe support
    633 dnl ========================================================
    634 AC_MSG_CHECKING([for gcc -pipe support])
    635 if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then
    636     echo '#include <stdio.h>' > dummy-hello.c
    637     echo 'int main() { printf("Hello World\n"); return 0; }' >> dummy-hello.c
    638     ${CC} -S dummy-hello.c -o dummy-hello.s 2>&5
    639     cat dummy-hello.s | ${AS} -o dummy-hello.S - 2>&5
    640     if test $? = 0; then
    641         _res_as_stdin="yes"
    642     else
    643         _res_as_stdin="no"
    644     fi
    645     if test "$_res_as_stdin" = "yes"; then
    646         _SAVE_CFLAGS=$CFLAGS
    647         CFLAGS="$CFLAGS -pipe"
    648         AC_TRY_COMPILE( [ #include <stdio.h> ],
    649             [printf("Hello World\n");],
    650             [_res_gcc_pipe="yes"],
    651             [_res_gcc_pipe="no"] )
    652         CFLAGS=$_SAVE_CFLAGS
    653     fi
    654     if test "$_res_as_stdin" = "yes" && test "$_res_gcc_pipe" = "yes"; then
    655         _res="yes";
    656         CFLAGS="$CFLAGS -pipe"
    657         CXXFLAGS="$CXXFLAGS -pipe"
    658     else
    659         _res="no"
    660     fi
    661     rm -f dummy-hello.c dummy-hello.s dummy-hello.S dummy-hello a.out
    662     AC_MSG_RESULT([$_res])
    663 else
    664     AC_MSG_RESULT([no])
    665 fi
    666 
    667 dnl ========================================================
    668 dnl Check for pragma diagnostic
    669 dnl ========================================================
    670 
    671 AC_MSG_CHECKING([for pragma diagnostic])
    672 if test "$GNU_CC" = "1"; then
    673     cat >dummy-hello.c <<EOF
    674 #ifdef _PR_HAS_PRAGMA_DIAGNOSTIC
    675 #pragma GCC diagnostic push
    676 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
    677 #endif
    678 int main() {
    679     char *dummy = "";
    680     return 0;
    681 }
    682 EOF
    683     ${CC} -Werror=unused-but-set-variable -S dummy-hello.c -o dummy-hello.s 2>&5
    684     if test $? != 0; then
    685         ${CC} -Werror=unused-but-set-variable -D_PR_HAS_PRAGMA_DIAGNOSTIC -S dummy-hello.c -o dummy-hello.s 2>&5
    686         if test $? = 0; then
    687             CFLAGS="$CFLAGS -D_PR_HAS_PRAGMA_DIAGNOSTIC=1"
    688             _res=yes
    689         else
    690             _res=no
    691         fi
    692     else
    693         _res=no
    694     fi
    695     rm -f dummy-hello.c dummy-hello.s
    696     AC_MSG_RESULT([$_res])
    697 else
    698     AC_MSG_RESULT([no])
    699 fi
    700 
    701 dnl ========================================================
    702 dnl Profile guided optimization
    703 dnl ========================================================
    704 dnl Test for profiling options
    705 dnl Under gcc 3.4+, use -fprofile-generate/-fprofile-use
    706 
    707 _SAVE_CFLAGS="$CFLAGS"
    708 CFLAGS="$CFLAGS -fprofile-generate -fprofile-correction"
    709 
    710 AC_MSG_CHECKING([whether C compiler supports -fprofile-generate])
    711 AC_TRY_COMPILE([], [return 0;],
    712                [ PROFILE_GEN_CFLAGS="-fprofile-generate"
    713                  result="yes" ], result="no")
    714 AC_MSG_RESULT([$result])
    715 
    716 if test $result = "yes"; then
    717    PROFILE_GEN_LDFLAGS="-fprofile-generate"
    718    PROFILE_USE_CFLAGS="-fprofile-use -fprofile-correction -Wcoverage-mismatch"
    719    PROFILE_USE_LDFLAGS="-fprofile-use"
    720 fi
    721 
    722 CFLAGS="$_SAVE_CFLAGS"
    723 
    724 dnl ===============================================================
    725 dnl Check for .hidden assembler directive and visibility attribute.
    726 dnl Borrowed from glibc configure.in
    727 dnl ===============================================================
    728 if test "$GNU_CC"; then
    729     AC_CACHE_CHECK(for visibility(hidden) attribute,
    730         ac_cv_visibility_hidden,
    731         [cat > conftest.c <<EOF
    732         int foo __attribute__ ((visibility ("hidden"))) = 1;
    733 EOF
    734         ac_cv_visibility_hidden=no
    735         if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
    736             if grep '\.hidden.*foo' conftest.s >/dev/null; then
    737                 ac_cv_visibility_hidden=yes
    738             fi
    739         fi
    740         rm -f conftest.[cs]
    741         ])
    742     if test "$ac_cv_visibility_hidden" = "yes"; then
    743         AC_DEFINE(HAVE_VISIBILITY_HIDDEN_ATTRIBUTE)
    744         AC_CACHE_CHECK(for visibility pragma support,
    745             ac_cv_visibility_pragma,
    746             [cat > conftest.c <<EOF
    747 #pragma GCC visibility push(hidden)
    748             int foo_hidden = 1;
    749 #pragma GCC visibility push(default)
    750             int foo_default = 1;
    751 EOF
    752             ac_cv_visibility_pragma=no
    753             if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
    754                 if grep '\.hidden.*foo_hidden' conftest.s >/dev/null; then
    755                     if ! grep '\.hidden.*foo_default' conftest.s > /dev/null; then
    756                         ac_cv_visibility_pragma=yes
    757                     fi
    758                 fi
    759             fi
    760             rm -f conftest.[cs]
    761             ])
    762         if test "$ac_cv_visibility_pragma" = "yes"; then
    763             AC_DEFINE(HAVE_VISIBILITY_PRAGMA)
    764             # To work around a build problem on Linux x86-64 (Bugzilla bug
    765             # 293438), we use the -fvisibility=hidden flag.  This flag is less
    766             # optimal than #pragma GCC visibility push(hidden) because the flag
    767             # assumes that symbols defined outside the current source file have
    768             # the default visibility.  This has the advantage that we don't need
    769             # to wrap system header files, but has the disadvantage that calls
    770             # to hidden symbols defined in other source files cannot be
    771             # optimized by the compiler.  The -fvisibility=hidden flag does
    772             # hide and export symbols correctly.
    773             #VISIBILITY_FLAGS='-I$(dist_includedir)/system_wrappers -include $(topsrcdir)/config/gcc_hidden.h'
    774             #WRAP_SYSTEM_INCLUDES=1
    775             VISIBILITY_FLAGS="-fvisibility=hidden"
    776             WRAP_SYSTEM_INCLUDES=
    777         fi
    778     fi
    779 fi # GNU_CC
    780 
    781 fi # SKIP_COMPILER_CHECKS
    782 
    783 dnl ========================================================
    784 dnl Checks for programs.
    785 dnl ========================================================
    786 if test -z "$SKIP_PATH_CHECKS"; then
    787     AC_PATH_PROGS(PERL, perl5 perl, echo not_perl)
    788 elif test -z "$PERL"; then
    789     PERL=perl
    790 fi
    791 
    792 dnl ========================================================
    793 dnl Default platform specific options
    794 dnl ========================================================
    795 OBJ_SUFFIX=o
    796 LIB_SUFFIX=a
    797 DLL_SUFFIX=so
    798 ASM_SUFFIX=s
    799 MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
    800 PR_MD_ASFILES=
    801 PR_MD_CSRCS=
    802 PR_MD_ARCH_DIR=unix
    803 AR_FLAGS='cr $@'
    804 AS='$(CC)'
    805 ASFLAGS='$(CFLAGS)'
    806 
    807 if test -n "$CROSS_COMPILE"; then
    808     OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
    809     OS_RELEASE=
    810     OS_TEST="${target_cpu}"
    811     case "${target_os}" in
    812         linux*)       OS_ARCH=Linux ;;
    813         solaris*)     OS_ARCH=SunOS OS_RELEASE=5 ;;
    814         mingw*)       OS_ARCH=WINNT CPU_ARCH=x86 ;;
    815         cygwin*)      OS_ARCH=WINNT ;;
    816         darwin*)      OS_ARCH=Darwin ;;
    817         riscos*)      OS_ARCH=RISCOS ;;
    818     esac
    819 else
    820     OS_ARCH=`uname -s | sed -e 's|/|_|g'`
    821     OS_RELEASE=`uname -r`
    822     OS_TEST=`uname -m`
    823 fi
    824 
    825 if test "$OS_ARCH" = "AIX"; then
    826     OS_RELEASE=`uname -v`.`uname -r`
    827 fi
    828 
    829 if test "$OS_ARCH" = "FreeBSD"; then
    830     OS_RELEASE=`echo $OS_RELEASE | sed 's/-.*//'`
    831 fi
    832 
    833 if test "$OS_ARCH" = "Linux"; then
    834     OS_RELEASE=`echo $OS_RELEASE | sed 's/-.*//'`
    835     OS_RELEASE=`echo $OS_RELEASE | awk -F\. '{ print $1 "." $2 }'`
    836 fi
    837 
    838 #######################################################################
    839 # Master "Core Components" macros for getting the OS target           #
    840 #######################################################################
    841 
    842 #
    843 # Note: OS_TARGET should be specified on the command line for gmake.
    844 # When OS_TARGET=WIN95 is specified, then a Windows 95 target is built.
    845 # The difference between the Win95 target and the WinNT target is that
    846 # the WinNT target uses Windows NT specific features not available
    847 # in Windows 95. The Win95 target will run on Windows NT, but (supposedly)
    848 # at lesser performance (the Win95 target uses threads; the WinNT target
    849 # uses fibers).
    850 #
    851 # If OS_TARGET is not specified, it defaults to $(OS_ARCH), i.e., no
    852 # cross-compilation.
    853 #
    854 
    855 #
    856 # The following hack allows one to build on a WIN95 machine (as if
    857 # s/he were cross-compiling on a WINNT host for a WIN95 target).
    858 # It also accomodates for MKS's uname.exe.  If you never intend
    859 # to do development on a WIN95 machine, you don't need this hack.
    860 #
    861 case "$OS_ARCH" in
    862 Windows_95)
    863     OS_ARCH=Windows_NT
    864     OS_TARGET=WIN95
    865     ;;
    866 Windows_98)
    867     OS_ARCH=Windows_NT
    868     OS_TARGET=WIN95
    869     ;;
    870 CYGWIN_9*|CYGWIN_ME*)
    871     OS_ARCH='CYGWIN_NT-4.0'
    872     OS_TARGET=WIN95
    873     ;;
    874 esac
    875 
    876 #
    877 # On WIN32, we also define the variable CPU_ARCH.
    878 #
    879 
    880 case "$OS_ARCH" in
    881 Windows_NT)
    882 #
    883 # If uname -s returns "Windows_NT", we assume that we are using
    884 # the uname.exe in MKS toolkit.
    885 #
    886 # The -r option of MKS uname only returns the major version number.
    887 # So we need to use its -v option to get the minor version number.
    888 # Moreover, it doesn't have the -p option, so we need to use uname -m.
    889 #
    890     OS_ARCH=WINNT
    891     OS_MINOR_RELEASE=`uname -v`
    892     if test "$OS_MINOR_RELEASE" = "00"; then
    893         OS_MINOR_RELEASE=0
    894     fi
    895     OS_RELEASE="${OS_RELEASE}.${OS_MINOR_RELEASE}"
    896     CPU_ARCH=`uname -m`
    897     #
    898     # MKS's uname -m returns "586" on a Pentium machine.
    899     #
    900     if echo "$CPU_ARCH" | grep -c 86 >/dev/null; then
    901         CPU_ARCH=x86
    902     fi
    903     ;;
    904 CYGWIN_NT*|MINGW*_NT*|MSYS_NT*)
    905 #
    906 # If uname -s returns "CYGWIN_NT-4.0", we assume that we are using
    907 # the uname.exe in the Cygwin tools.
    908 # If uname -s returns "MINGW32_NT-5.1", we assume that we are using
    909 # the uname.exe in the MSYS tools.
    910 # If uname -s returns "MSYS_NT-6.3", we assume that we are using
    911 # the uname.exe in the MSYS2 tools.
    912 #
    913     OS_RELEASE=`expr $OS_ARCH : '.*NT-\(.*\)'`
    914     OS_ARCH=WINNT
    915     CPU_ARCH=`uname -m`
    916     #
    917     # Cygwin's uname -m returns "i686" on a Pentium Pro machine.
    918     #
    919     if echo "$CPU_ARCH" | grep -c 86 >/dev/null; then
    920         CPU_ARCH=x86
    921     fi
    922     ;;
    923 esac
    924 
    925 if test -n "$MOZILLA_CLIENT" && test "$OS_ARCH" = "WINNT"; then
    926     OS_TARGET=WIN95
    927     if test -n "$MOZ_DEBUG" -a -z "$USE_DEBUG_RTL"; then
    928         USE_DEBUG_RTL=1
    929     fi
    930 fi
    931 if test -z "$OS_TARGET"; then
    932     OS_TARGET=$OS_ARCH
    933 fi
    934 if test "$OS_TARGET" = "WIN95"; then
    935     OS_RELEASE="4.0"
    936 fi
    937 OS_CONFIG="${OS_TARGET}${OS_RELEASE}"
    938 
    939 dnl ========================================================
    940 dnl = ARM toolchain tweaks
    941 dnl ========================================================
    942 
    943 dnl Defaults
    944 MOZ_ALIGN=toolchain-default
    945 
    946 case "$target" in
    947 arm*-android*|arm*-linuxandroid*)
    948     MOZ_THUMB=yes
    949     MOZ_ARCH=armv7-a
    950     MOZ_FPU=vfp
    951     MOZ_FLOAT_ABI=softfp
    952     MOZ_SOFT_FLOAT=yes
    953     MOZ_ALIGN=no
    954     ;;
    955 arm*-*)
    956     if test -n "$MOZ_PLATFORM_MAEMO"; then
    957         MOZ_THUMB=no
    958         MOZ_ARCH=armv7-a
    959         MOZ_FLOAT_ABI=softfp
    960     fi
    961     if test "$MOZ_PLATFORM_MAEMO" = 6; then
    962         MOZ_THUMB=yes
    963     fi
    964     ;;
    965 esac
    966 
    967 dnl Kept for compatibility with some buildbot mozconfig
    968 AC_ARG_ENABLE(thumb2, [], MOZ_THUMB=$enableval)
    969 
    970 AC_ARG_WITH(thumb,
    971 [  --with-thumb[[=yes|no|toolchain-default]]]
    972 [                          Use Thumb instruction set (-mthumb)],
    973     if test -z "$GNU_CC"; then
    974         AC_MSG_ERROR([--with-thumb is not supported on non-GNU toolchain-defaults])
    975     fi
    976     MOZ_THUMB=$withval)
    977 
    978 AC_ARG_WITH(thumb-interwork,
    979 [  --with-thumb-interwork[[=yes|no|toolchain-default]]
    980                            Use Thumb/ARM instuctions interwork (-mthumb-interwork)],
    981     if test -z "$GNU_CC"; then
    982         AC_MSG_ERROR([--with-thumb-interwork is not supported on non-GNU toolchain-defaults])
    983     fi
    984     MOZ_THUMB_INTERWORK=$withval)
    985 
    986 AC_ARG_WITH(arch,
    987 [  --with-arch=[[type|toolchain-default]]
    988                            Use specific CPU features (-march=type)],
    989     if test -z "$GNU_CC"; then
    990         AC_MSG_ERROR([--with-arch is not supported on non-GNU toolchain-defaults])
    991     fi
    992     MOZ_ARCH=$withval)
    993 
    994 AC_ARG_WITH(fpu,
    995 [  --with-fpu=[[type|toolchain-default]]
    996                            Use specific FPU type (-mfpu=type)],
    997     if test -z "$GNU_CC"; then
    998         AC_MSG_ERROR([--with-fpu is not supported on non-GNU toolchain-defaults])
    999     fi
   1000     MOZ_FPU=$withval)
   1001 
   1002 AC_ARG_WITH(float-abi,
   1003 [  --with-float-abi=[[type|toolchain-default]]
   1004                            Use specific arm float ABI (-mfloat-abi=type)],
   1005     if test -z "$GNU_CC"; then
   1006         AC_MSG_ERROR([--with-float-abi is not supported on non-GNU toolchain-defaults])
   1007     fi
   1008     MOZ_FLOAT_ABI=$withval)
   1009 
   1010 AC_ARG_WITH(soft-float,
   1011 [  --with-soft-float[[=yes|no|toolchain-default]]
   1012                            Use soft float library (-msoft-float)],
   1013     if test -z "$GNU_CC"; then
   1014         AC_MSG_ERROR([--with-soft-float is not supported on non-GNU toolchain-defaults])
   1015     fi
   1016     MOZ_SOFT_FLOAT=$withval)
   1017 
   1018 case "$MOZ_ARCH" in
   1019 toolchain-default|"")
   1020     arch_flag=""
   1021     ;;
   1022 *)
   1023     arch_flag="-march=$MOZ_ARCH"
   1024     ;;
   1025 esac
   1026 
   1027 case "$MOZ_THUMB" in
   1028 yes)
   1029     MOZ_THUMB2=1
   1030     thumb_flag="-mthumb"
   1031     ;;
   1032 no)
   1033     MOZ_THUMB2=
   1034     thumb_flag="-marm"
   1035     ;;
   1036 *)
   1037     _SAVE_CFLAGS="$CFLAGS"
   1038     CFLAGS="$arch_flag"
   1039     AC_TRY_COMPILE([],[return sizeof(__thumb2__);],
   1040         MOZ_THUMB2=1,
   1041         MOZ_THUMB2=)
   1042     CFLAGS="$_SAVE_CFLAGS"
   1043     thumb_flag=""
   1044     ;;
   1045 esac
   1046 
   1047 case "$MOZ_THUMB_INTERWORK" in
   1048 yes)
   1049     thumb_interwork_flag="-mthumb-interwork"
   1050     ;;
   1051 no)
   1052     thumb_interwork_flag="-mno-thumb-interwork"
   1053     ;;
   1054 *) # toolchain-default
   1055     thumb_interwork_flag=""
   1056     ;;
   1057 esac
   1058 
   1059 case "$MOZ_FPU" in
   1060 toolchain-default|"")
   1061     fpu_flag=""
   1062     ;;
   1063 *)
   1064     fpu_flag="-mfpu=$MOZ_FPU"
   1065     ;;
   1066 esac
   1067 
   1068 case "$MOZ_FLOAT_ABI" in
   1069 toolchain-default|"")
   1070     float_abi_flag=""
   1071     ;;
   1072 *)
   1073     float_abi_flag="-mfloat-abi=$MOZ_FLOAT_ABI"
   1074     ;;
   1075 esac
   1076 
   1077 case "$MOZ_SOFT_FLOAT" in
   1078 yes)
   1079     soft_float_flag="-msoft-float"
   1080     ;;
   1081 no)
   1082     soft_float_flag="-mno-soft-float"
   1083     ;;
   1084 *) # toolchain-default
   1085     soft_float_flag=""
   1086     ;;
   1087 esac
   1088 
   1089 case "$MOZ_ALIGN" in
   1090 toolchain-default|"")
   1091     align_flag=""
   1092     ;;
   1093 no)
   1094     align_flag="-mno-unaligned-access"
   1095     ;;
   1096 yes)
   1097     align_flag="-munaligned-access"
   1098     ;;
   1099 *)
   1100     align_flag=""
   1101     ;;
   1102 esac
   1103 
   1104 if test -n "$align_flag"; then
   1105   _SAVE_CFLAGS="$CFLAGS"
   1106   CFLAGS="$CFLAGS $align_flag"
   1107   AC_MSG_CHECKING(whether alignment flag ($align_flag) is supported)
   1108   AC_TRY_COMPILE([],[],,align_flag="")
   1109   CFLAGS="$_SAVE_CFLAGS"
   1110 fi
   1111 
   1112 dnl Use echo to avoid accumulating space characters
   1113 all_flags=`echo $arch_flag $thumb_flag $thumb_interwork_flag $fpu_flag $float_abi_flag $soft_float_flag $align_flag`
   1114 if test -n "$all_flags"; then
   1115     _SAVE_CFLAGS="$CFLAGS"
   1116     CFLAGS="$all_flags"
   1117     AC_MSG_CHECKING(whether the chosen combination of compiler flags ($all_flags) works)
   1118     AC_TRY_COMPILE([],[return 0;],
   1119         AC_MSG_RESULT([yes]),
   1120         AC_MSG_ERROR([no]))
   1121 
   1122     CFLAGS="$_SAVE_CFLAGS $all_flags"
   1123     CXXFLAGS="$CXXFLAGS $all_flags"
   1124     ASFLAGS="$ASFLAGS $all_flags"
   1125     if test -n "$thumb_flag"; then
   1126         LDFLAGS="$LDFLAGS $thumb_flag"
   1127     fi
   1128 fi
   1129 
   1130 dnl ========================================================
   1131 dnl Override of system specific host options
   1132 dnl ========================================================
   1133 case "$host" in
   1134 *-mingw*|*-msys*)
   1135     NSINSTALL=nsinstall
   1136     ;;
   1137 *-cygwin*|*-mks*)
   1138     NSINSTALL='$(CYGWIN_WRAPPER) nsinstall'
   1139     if test `echo "${PATH}" | grep -c \;` = 0; then
   1140         CYGWIN_WRAPPER='sh $(topsrcdir)/build/cygwin-wrapper'
   1141     fi
   1142     ;;
   1143 *)
   1144     HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
   1145     ;;
   1146 esac
   1147 
   1148 dnl ========================================================
   1149 dnl Override of system specific target options
   1150 dnl ========================================================
   1151 case "$target" in
   1152 
   1153 *-aix*)
   1154     AC_DEFINE(XP_UNIX)
   1155     AC_DEFINE(AIX)
   1156     AC_DEFINE(SYSV)
   1157     DSO_LDOPTS='-brtl -bnortllib -bM:SRE -bnoentry -bexpall -blibpath:/usr/lib:/lib'
   1158     AC_CHECK_HEADER(sys/atomic_op.h, AC_DEFINE(AIX_HAVE_ATOMIC_OP_H))
   1159     case "${target_os}" in
   1160     aix3.2*)
   1161         AC_DEFINE(AIX_RENAME_SELECT)
   1162         AC_DEFINE(_PR_NO_LARGE_FILES)
   1163         AIX_LINK_OPTS='-bnso -berok'
   1164         PR_MD_ASFILES=os_AIX.s
   1165         ;;
   1166     aix4.1*)
   1167         AC_DEFINE(AIX_TIMERS)
   1168         AC_DEFINE(_PR_NO_LARGE_FILES)
   1169         AC_DEFINE(AIX4_1)
   1170         MKSHLIB=
   1171         DSO_LDOPTS=
   1172         AIX_LINK_OPTS='-bnso -berok'
   1173         LIBNSPR='-L$(dist_libdir) -lnspr$(MOD_MAJOR_VERSION)_shr'
   1174         LIBPLC='-L$(dist_libdir) -lplc$(MOD_MAJOR_VERSION)_shr'
   1175         ;;
   1176     aix4.2*)
   1177         AC_DEFINE(AIX_TIMERS)
   1178         AC_DEFINE(_PR_HAVE_OFF64_T)
   1179         AIX_LINK_OPTS='-brtl -bnso -berok'
   1180         ;;
   1181     aix4.3*)
   1182         AC_DEFINE(AIX_TIMERS)
   1183         AC_DEFINE(_PR_HAVE_OFF64_T)
   1184         AC_DEFINE(AIX4_3_PLUS)
   1185         AC_DEFINE(HAVE_SOCKLEN_T)
   1186         AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
   1187         USE_IPV6=1
   1188         AIX_LINK_OPTS='-brtl -bnso -berok'
   1189         ;;
   1190     *)
   1191         AC_DEFINE(AIX_TIMERS)
   1192         AC_DEFINE(_PR_HAVE_OFF64_T)
   1193         AC_DEFINE(AIX4_3_PLUS)
   1194         AC_DEFINE(HAVE_SOCKLEN_T)
   1195         AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
   1196         USE_IPV6=1
   1197         AIX_LINK_OPTS='-brtl -bnso -berok'
   1198         ;;
   1199     esac
   1200     CFLAGS="$CFLAGS -qro -qroconst"
   1201     AIX_WRAP='$(DIST)/lib/aixwrap.o'
   1202     AIX_TMP='./_aix_tmp.o'
   1203     if test -n "$USE_64"; then
   1204         MDCPUCFG_H=_aix64.cfg
   1205         OBJECT_MODE=64
   1206     else
   1207         MDCPUCFG_H=_aix32.cfg
   1208     fi
   1209     PR_MD_CSRCS=aix.c
   1210     RESOLVE_LINK_SYMBOLS=1
   1211     ;;
   1212 
   1213 *-darwin*)
   1214     AC_DEFINE(XP_UNIX)
   1215     AC_DEFINE(DARWIN)
   1216     AC_DEFINE(HAVE_BSD_FLOCK)
   1217     AC_DEFINE(HAVE_SOCKLEN_T)
   1218     AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
   1219     changequote(,)
   1220     HOST_DARWIN_MAJOR=`echo "$build_os" | sed -E -e 's/^darwin([0-9]+).*$/\1/'`
   1221     changequote([,])
   1222     if test "$HOST_DARWIN_MAJOR" -ge 15 ; then
   1223         AC_DEFINE(HAS_CONNECTX)
   1224     fi
   1225     AS='$(CC) -x assembler-with-cpp'
   1226     CFLAGS="$CFLAGS -Wall -fno-common"
   1227     case "${target_cpu}" in
   1228         arm*)
   1229             CPU_ARCH=arm
   1230             ;;
   1231         i*86*|x86_64)
   1232             if test -n "$USE_64"; then
   1233                 CPU_ARCH=x86_64
   1234             else
   1235                 CPU_ARCH=i386
   1236             fi
   1237             ;;
   1238         aarch64)
   1239             CPU_ARCH=aarch64
   1240             ;;
   1241         *)
   1242             CPU_ARCH=ppc
   1243             ;;
   1244     esac
   1245     if test "`echo $CC | grep -c '\-arch '`" = "0"; then
   1246         case "$CPU_ARCH" in
   1247         aarch64)
   1248             CC="$CC -arch arm64"
   1249             ;;
   1250         *)
   1251             CC="$CC -arch $CPU_ARCH"
   1252             ;;
   1253         esac
   1254     fi
   1255     AC_CHECK_HEADER(crt_externs.h, AC_DEFINE(HAVE_CRT_EXTERNS_H))
   1256     DSO_CFLAGS=-fPIC
   1257     DSO_LDOPTS='-dynamiclib -compatibility_version 1 -current_version 1 -all_load -install_name @executable_path/$@ -headerpad_max_install_names'
   1258     _OPTIMIZE_FLAGS=-O2
   1259     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
   1260     STRIP="$STRIP -x -S"
   1261     DLL_SUFFIX=dylib
   1262     USE_PTHREADS=1
   1263     MDCPUCFG_H=_darwin.cfg
   1264     PR_MD_CSRCS=darwin.c
   1265     PR_MD_ASFILES=os_Darwin.s
   1266 
   1267     if test -n "$_MACOSX_DEPLOYMENT_TARGET" ; then
   1268         dnl Use the specified value
   1269         export MACOSX_DEPLOYMENT_TARGET=$_MACOSX_DEPLOYMENT_TARGET
   1270     elif test -z "$MACOSX_DEPLOYMENT_TARGET" ; then
   1271         dnl No value specified on the command line or in the environment,
   1272         dnl use the lesser of the library's minimum or the architecture's
   1273         dnl minimum.
   1274         case "${target_cpu}" in
   1275             powerpc*)
   1276                 dnl Architecture minimum 10.3
   1277                 export MACOSX_DEPLOYMENT_TARGET=10.3
   1278                 ;;
   1279             i*86*)
   1280                 dnl Architecture minimum 10.4
   1281                 export MACOSX_DEPLOYMENT_TARGET=10.4
   1282                 ;;
   1283         esac
   1284     fi
   1285 
   1286     dnl MACOS_SDK_DIR will be set to the SDK location whenever one is
   1287     dnl in use.  NEXT_ROOT will be set and exported if it's needed for
   1288     dnl ld.
   1289 
   1290     if test "$MACOS_SDK_DIR"; then
   1291         dnl Sync this section with the one in Mozilla's top level.
   1292 
   1293         if test ! -d "$MACOS_SDK_DIR"; then
   1294             AC_MSG_ERROR([SDK not found.  When using --with-macos-sdk, you must
   1295 specify a valid SDK.  SDKs are installed when the optional cross-development
   1296 tools are selected during the Xcode/Developer Tools installation.])
   1297         fi
   1298 
   1299         changequote(,)
   1300         CC_VERSION=`$CC -v 2>&1 | grep 'gcc version'`
   1301         GCC_VERSION_FULL=`echo $CC_VERSION | $PERL -pe 's/^.*gcc version ([^ ]*).*/$1/'`
   1302         GCC_VERSION=`echo $GCC_VERSION_FULL | $PERL -pe '(split(/\./))[0]>=4&&s/(^\d*\.\d*).*/$1/;'`
   1303         changequote([,])
   1304         GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
   1305         if test "$GCC_VERSION_MAJOR" -lt "4" ; then
   1306             SDK_C_FRAMEWORK="-F${MACOS_SDK_DIR}/System/Library/Frameworks"
   1307             if test -d "${MACOS_SDK_DIR}/Library/Frameworks" ; then
   1308                 SDK_C_FRAMEWORK="$SDK_C_FRAMEWORK -F${MACOS_SDK_DIR}/Library/Frameworks"
   1309             fi
   1310 
   1311             SDK_C_INCLUDE="-isystem ${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION} -isystem ${MACOS_SDK_DIR}/usr/include ${SDK_C_FRAMEWORK}"
   1312 
   1313             CFLAGS="$CFLAGS -nostdinc ${SDK_C_INCLUDE}"
   1314 
   1315             dnl CPP needs to be set for AC_CHECK_HEADER.
   1316             CPP="$CPP -nostdinc ${SDK_C_INCLUDE}"
   1317 
   1318             changequote(,)
   1319             HOST_DARWIN_MAJOR=`echo "$build_os" | sed -E -e 's/^darwin([0-9]+).*$/\1/'`
   1320             changequote([,])
   1321             if test "$HOST_DARWIN_MAJOR" -lt 9 ; then
   1322                 dnl The build host is running Tiger (10.4) or earlier.
   1323                 dnl ld support for -syslibroot is compiler-agnostic, but
   1324                 dnl only available on Tiger and later.  On Tiger and
   1325                 dnl earlier build hosts, just rely on NEXT_ROOT, because
   1326                 dnl it's not been shown to cause any problems.
   1327                 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}"
   1328             else
   1329                 dnl The build host is running Leopard (10.5) or later.
   1330                 dnl With NEXT_ROOT set, the linker will still not apply
   1331                 dnl it when resolving dependencies.  This causes problems
   1332                 dnl on Leopard, where an SDK depends on frameworks which
   1333                 dnl were present in earlier OS releases (and the associated
   1334                 dnl SDK) but not in Leopard.  -syslibroot does not have
   1335                 dnl this problem, but it results in harmless warnings when
   1336                 dnl NEXT_ROOT is set.  NEXT_ROOT needs to remain set even
   1337                 dnl on Leopard because the compiler uses it too.
   1338                 MACOS_SDK_LIBS="-Wl,-syslibroot,${MACOS_SDK_DIR}"
   1339             fi
   1340 
   1341             LDFLAGS="${MACOS_SDK_LIBS} $LDFLAGS"
   1342             export NEXT_ROOT=$MACOS_SDK_DIR
   1343 
   1344             if test -n "$CROSS_COMPILE" ; then
   1345                 dnl NEXT_ROOT will be in the environment, but it
   1346                 dnl shouldn't be set for the build host.  HOST_CXX is
   1347                 dnl presently unused.
   1348                 HOST_CC="NEXT_ROOT= $HOST_CC"
   1349                 HOST_CXX="NEXT_ROOT= $HOST_CXX"
   1350             fi
   1351         else
   1352             dnl gcc >= 4.0 uses different paths than above, but knows
   1353             dnl how to find them itself.
   1354             CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
   1355 
   1356             dnl CPP needs to be set for AC_CHECK_HEADER.
   1357             CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
   1358 
   1359             dnl If gcc >= 4.0.0, we're guaranteed to be on Tiger, which
   1360             dnl has an ld that supports -syslibroot.  Don't set
   1361             dnl NEXT_ROOT because it will be ignored and cause
   1362             dnl warnings when -syslibroot is specified.
   1363             if test "$GCC_VERSION_FULL" != "4.0.0" ; then
   1364                 dnl gcc > 4.0.0 will pass -syslibroot to ld automatically
   1365                 dnl based on the -isysroot it receives.
   1366                 LDFLAGS="$LDFLAGS -isysroot ${MACOS_SDK_DIR}"
   1367             else
   1368                 dnl gcc 4.0.0 doesn't pass -syslibroot to ld, it needs
   1369                 dnl to be explicit.
   1370                 LDFLAGS="$LDFLAGS -Wl,-syslibroot,${MACOS_SDK_DIR}"
   1371             fi
   1372         fi
   1373     fi
   1374     ;;
   1375 
   1376 *-freebsd*)
   1377     if test -z "$USE_NSPR_THREADS"; then
   1378         USE_PTHREADS=1
   1379     fi
   1380     AC_DEFINE(XP_UNIX)
   1381     AC_DEFINE(FREEBSD)
   1382     AC_DEFINE(HAVE_BSD_FLOCK)
   1383     AC_DEFINE(HAVE_SOCKLEN_T)
   1384     AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
   1385     CFLAGS="$CFLAGS $(DSO_CFLAGS) -ansi -Wall"
   1386     MOZ_OBJFORMAT=`test -x /usr/bin/objformat && /usr/bin/objformat || echo elf`
   1387     if test "$MOZ_OBJFORMAT" = "elf"; then
   1388         DLL_SUFFIX=so
   1389     else
   1390         DLL_SUFFIX=so.1.0
   1391     fi
   1392     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
   1393     DSO_CFLAGS=-fPIC
   1394     DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)'
   1395     MDCPUCFG_H=_freebsd.cfg
   1396     PR_MD_CSRCS=freebsd.c
   1397     ;;
   1398 
   1399 *-linux*|*-gnu*|*-k*bsd*-gnu|*-android*|*-linuxandroid*)
   1400     if test -z "$USE_NSPR_THREADS"; then
   1401         USE_PTHREADS=1
   1402         IMPL_STRATEGY=_PTH
   1403     fi
   1404     AC_DEFINE(XP_UNIX)
   1405     AC_DEFINE(_GNU_SOURCE)
   1406     AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
   1407     AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
   1408     case "${target}" in
   1409     *-android*|*-linuxandroid*)
   1410         OS_TARGET=Android
   1411         AC_DEFINE(LINUX)
   1412         ;;
   1413     *-linux*)
   1414         AC_DEFINE(LINUX)
   1415         ;;
   1416     esac
   1417     CFLAGS="$CFLAGS -Wall"
   1418     CXXFLAGS="$CXXFLAGS -Wall"
   1419     MDCPUCFG_H=_linux.cfg
   1420     PR_MD_CSRCS=linux.c
   1421     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
   1422     DSO_CFLAGS=-fPIC
   1423     DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)'
   1424     _OPTIMIZE_FLAGS=-O2
   1425     _DEBUG_FLAGS="-g -fno-inline"  # most people on linux use gcc/gdb, and that
   1426                                    # combo is not yet good at debugging inlined
   1427                                    # functions (even when using DWARF2 as the
   1428                                    # debugging format)
   1429     COMPILER_TAG=_glibc
   1430     if echo "$OS_TEST" | grep -c 86 >/dev/null; then
   1431         CPU_ARCH=x86
   1432     else
   1433         CPU_ARCH=$OS_TEST
   1434     fi
   1435     CPU_ARCH_TAG=_${CPU_ARCH}
   1436     case "${target_cpu}" in
   1437     alpha)
   1438         AC_DEFINE(_ALPHA_)
   1439         AC_DEFINE(__alpha)
   1440         CFLAGS="$CFLAGS -mieee"
   1441         CXXFLAGS="$CXXFLAGS -mieee"
   1442         ;;
   1443     i*86)
   1444         AC_DEFINE(i386)
   1445         PR_MD_ASFILES=os_Linux_x86.s
   1446         ;;
   1447     ia64)
   1448         PR_MD_ASFILES=os_Linux_ia64.s
   1449         ;;
   1450     x86_64)
   1451         if test -n "$USE_64"; then
   1452             PR_MD_ASFILES=os_Linux_x86_64.s
   1453         elif test -n "$USE_X32"; then
   1454             PR_MD_ASFILES=os_Linux_x86_64.s
   1455             CC="$CC -mx32"
   1456             CXX="$CXX -mx32"
   1457         else
   1458             AC_DEFINE(i386)
   1459             PR_MD_ASFILES=os_Linux_x86.s
   1460             CC="$CC -m32"
   1461             CXX="$CXX -m32"
   1462         fi
   1463         ;;
   1464     ppc|powerpc)
   1465         PR_MD_ASFILES=os_Linux_ppc.s
   1466         ;;
   1467     powerpc64)
   1468         if test -n "$USE_64"; then
   1469             CC="$CC -m64"
   1470             CXX="$CXX -m64"
   1471         else
   1472             PR_MD_ASFILES=os_Linux_ppc.s
   1473         fi
   1474         ;;
   1475     esac
   1476     ;;
   1477 
   1478 *-mingw*|*-msys*|*-cygwin*|*-mks*)
   1479     AC_DEFINE(XP_PC)
   1480     AC_DEFINE(WIN32)
   1481     PR_MD_ARCH_DIR=windows
   1482     RESOLVE_LINK_SYMBOLS=1
   1483 
   1484     if test -n "$GNU_CC"; then
   1485         CC="$CC -mwindows"
   1486         CXX="$CXX -mwindows"
   1487         DLL_SUFFIX=dll
   1488         MKSHLIB='$(CC) -shared -Wl,--export-all-symbols -Wl,--out-implib -Wl,$(IMPORT_LIBRARY) $(DLLBASE) -o $(subst $(OBJDIR)/,,$(SHARED_LIBRARY))'
   1489         RC=$WINDRES
   1490         # Use temp file for windres (bug 213281)
   1491         RCFLAGS='-O coff --use-temp-file'
   1492     else
   1493         LD=link
   1494         AR='lib -NOLOGO -OUT:"$@"'
   1495         AR_FLAGS=
   1496         RANLIB='echo not_ranlib'
   1497         STRIP='echo not_strip'
   1498         RC=rc.exe
   1499         GARBAGE='$(OBJDIR)/vc20.pdb $(OBJDIR)/vc40.pdb'
   1500         OBJ_SUFFIX=obj
   1501         LIB_SUFFIX=lib
   1502         DLL_SUFFIX=dll
   1503 
   1504         # Determine compiler version
   1505         changequote(,)
   1506         _MSVC_VER_FILTER='s|.* \([0-9]\+\.[0-9]\+\.[0-9]\+\(\.[0-9]\+\)\?\).*|\1|p'
   1507         changequote([,])
   1508         CC_VERSION=`${CC} -v 2>&1 | sed -ne "$_MSVC_VER_FILTER"`
   1509         if test -z "$CC_VERSION"; then
   1510             AC_MSG_ERROR([Could not determine MSC version.])
   1511         fi
   1512 
   1513         _CC_MAJOR_VERSION=`echo ${CC_VERSION} | awk -F\. '{ print $1 }'`
   1514         _CC_MINOR_VERSION=`echo ${CC_VERSION} | awk -F\. '{ print $2 }'`
   1515         _CC_RELEASE=`echo ${CC_VERSION} | awk -F\. '{ print $3 }'`
   1516         _CC_BUILD=`echo ${CC_VERSION} | awk -F\. '{ print $4 }'`
   1517         MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
   1518 
   1519         if test "$_CC_MAJOR_VERSION" -eq "14"; then
   1520            dnl -DYNAMICBASE is only supported on VC8SP1 or newer,
   1521            dnl so be very specific here!
   1522            dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762
   1523            if test $_CC_RELEASE -gt 50727; then
   1524               _USE_DYNAMICBASE=1
   1525            elif test $_CC_BUILD -ge 762; then
   1526               _USE_DYNAMICBASE=1
   1527            fi
   1528            AC_DEFINE(_CRT_SECURE_NO_DEPRECATE)
   1529            AC_DEFINE(_CRT_NONSTDC_NO_DEPRECATE)
   1530         elif test $_CC_MAJOR_VERSION -ge 15; then
   1531            _USE_DYNAMICBASE=1
   1532            AC_DEFINE(_CRT_SECURE_NO_WARNINGS)
   1533            AC_DEFINE(_CRT_NONSTDC_NO_WARNINGS)
   1534         fi
   1535 
   1536         if test -n "$_USE_DYNAMICBASE"; then
   1537            DLLFLAGS="$DLLFLAGS -DYNAMICBASE"
   1538         fi
   1539 
   1540         # Ensure that mt is Microsoft (R) Manifest Tool and not magnetic
   1541         # tape manipulation utility (or something else)
   1542         if test "$MSC_VER" -ge "1400"; then
   1543             changequote(,)
   1544             _MSMT_VER_FILTER='s|.* \([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*|\1|p'
   1545             changequote([,])
   1546 
   1547             MSMT_TOOL=`mt 2>&1|grep 'Microsoft (R) Manifest Tool'`
   1548             if test -n "$MSMT_TOOL"; then
   1549                 MSMANIFEST_TOOL_VERSION=`echo ${MSMT_TOOL}|sed -ne "$_MSMT_VER_FILTER"`
   1550                 if test -z "$MSMANIFEST_TOOL_VERSION"; then
   1551                     AC_MSG_WARN([Unknown version of the Microsoft (R) Manifest Tool.])
   1552                 fi
   1553                 MT=mt
   1554                 unset MSMT_TOOL
   1555             else
   1556                 AC_MSG_ERROR([Microsoft (R) Manifest Tool must be in your \$PATH.])
   1557             fi
   1558         fi
   1559 
   1560         CFLAGS="$CFLAGS -W3 -nologo -GF -Gy"
   1561         DLLFLAGS="$DLLFLAGS -OUT:\"\$@\""
   1562         _DEBUG_FLAGS=-Zi
   1563         _OPTIMIZE_FLAGS=-O2
   1564 
   1565         PROFILE_GEN_CFLAGS="-GL"
   1566         PROFILE_GEN_LDFLAGS="-LTCG:PGINSTRUMENT"
   1567         PROFILE_USE_CFLAGS="-GL -wd4624 -wd4952"
   1568         PROFILE_USE_LDFLAGS="-LTCG:PGUPDATE"
   1569 
   1570         if test "$MSC_VER" -ge "1800"; then
   1571             dnl Visual C++ 2013 requires -FS when parallel building with
   1572             dnl make -jN. If not specified, compiler sometimes emits C1041
   1573             dnl error.
   1574             CFLAGS="$CFLAGS -FS"
   1575             dnl -Gw can benefit when using linker optimization on PGO.
   1576             dnl http://blogs.msdn.com/b/vcblog/archive/2013/09/11/introducing-gw-compiler-switch.aspx
   1577             PROFILE_GEN_CFLAGS="$PROFILE_GEN_CFLAGS -Gw"
   1578             PROFILE_USE_CFLAGS="$PROFILE_USE_CFLAGS -Gw"
   1579         fi
   1580 
   1581         if test -z "$MOZ_OPTIMIZE"; then
   1582             CFLAGS="$CFLAGS -Od"
   1583         fi
   1584 
   1585         if test "$USE_DEBUG_RTL" = 1; then
   1586             if test -n "$USE_STATIC_RTL"; then
   1587                 CFLAGS="$CFLAGS -MTd"
   1588             else
   1589                 CFLAGS="$CFLAGS -MDd"
   1590             fi
   1591         else
   1592             if test -n "$USE_STATIC_RTL"; then
   1593                 CFLAGS="$CFLAGS -MT"
   1594             else
   1595                 CFLAGS="$CFLAGS -MD"
   1596             fi
   1597         fi
   1598 
   1599         if test -n "$MOZ_DEBUG"; then
   1600             AC_DEFINE(_DEBUG)
   1601         else
   1602             DEFINES="$DEFINES -U_DEBUG"
   1603         fi
   1604 
   1605         if test -n "$MOZ_DEBUG_SYMBOLS"; then
   1606             if test -n "$MOZ_OPTIMIZE"; then
   1607                 DLLFLAGS="$DLLFLAGS -DEBUG -OPT:REF"
   1608                 LDFLAGS="$LDFLAGS -DEBUG -OPT:REF"
   1609             else
   1610                 DLLFLAGS="$DLLFLAGS -DEBUG"
   1611                 LDFLAGS="$LDFLAGS -DEBUG"
   1612             fi
   1613         fi
   1614 
   1615         OS_DLLFLAGS="-nologo -DLL -SUBSYSTEM:WINDOWS"
   1616         if test "$MSC_VER" -le "1200" -a -z "$MOZ_DEBUG_SYMBOLS"; then
   1617             OS_DLLFLAGS="$OS_DLLFLAGS -PDB:NONE"
   1618         fi
   1619 
   1620         if test "$OS_TARGET" = "WINNT"; then
   1621             CFLAGS="$CFLAGS -GT"
   1622             LIBNSPR='$(dist_libdir)/libnspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
   1623             LIBPLC='$(dist_libdir)/libplc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
   1624         else
   1625             LIBNSPR='$(dist_libdir)/nspr$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
   1626             LIBPLC='$(dist_libdir)/plc$(MOD_MAJOR_VERSION).$(LIB_SUFFIX)'
   1627         fi
   1628     fi # GNU_CC
   1629 
   1630     if test -n "$USE_STATIC_TLS"; then
   1631         AC_DEFINE(_PR_USE_STATIC_TLS)
   1632     fi
   1633 
   1634     if test "$OS_TARGET" = "WINNT"; then
   1635         AC_DEFINE(WINNT)
   1636     else
   1637         AC_DEFINE(WIN95)
   1638         # undefine WINNT as some versions of mingw gcc define it by default
   1639         DEFINES="$DEFINES -UWINNT"
   1640         AC_DEFINE(_PR_GLOBAL_THREADS_ONLY)
   1641     fi
   1642 
   1643     if test "$CPU_ARCH" = "x86"; then
   1644         CPU_ARCH_TAG=
   1645     else
   1646         CPU_ARCH_TAG=$CPU_ARCH
   1647     fi
   1648 
   1649     if test "$USE_DEBUG_RTL" = 1; then
   1650         OBJDIR_SUFFIX=OBJD
   1651     fi
   1652 
   1653     case "$OS_TARGET" in
   1654     WINNT)
   1655 	    MDCPUCFG_H=_winnt.cfg
   1656 	    ;;
   1657     WIN95)
   1658 	    MDCPUCFG_H=_win95.cfg
   1659 	    ;;
   1660     *)
   1661 	    AC_MSG_ERROR([Missing OS_TARGET for ${target}.  Use --enable-win32-target to set.])
   1662    	;;
   1663     esac
   1664 
   1665     case "$target_cpu" in
   1666     i*86|x86_64)
   1667 	if test -n "$USE_64"; then
   1668 	    AC_DEFINE(_AMD64_)
   1669 	else
   1670 	    AC_DEFINE(_X86_)
   1671             if test -z "$GNU_CC" -a "$MSC_VER" -ge "1700"; then
   1672                 dnl Visual C++ 2012 defaults to -arch:SSE2. Use -arch:IA32
   1673                 dnl to avoid requiring SSE2.
   1674                 CFLAGS="$CFLAGS -arch:IA32"
   1675             fi
   1676 	fi
   1677         ;;
   1678     aarch64)
   1679 	    AC_DEFINE(_ARM64_)
   1680 	    USE_64=1
   1681 	    ;;
   1682     ia64)
   1683 	    AC_DEFINE(_IA64_)
   1684 	    USE_64=1
   1685 	    ;;
   1686     *)
   1687 	    AC_DEFINE(_CPU_ARCH_NOT_DEFINED)
   1688 	    ;;
   1689     esac
   1690     ;;
   1691 
   1692 *-netbsd*)
   1693     AC_DEFINE(XP_UNIX)
   1694     AC_DEFINE(NETBSD)
   1695     AC_DEFINE(HAVE_BSD_FLOCK)
   1696     AC_DEFINE(HAVE_SOCKLEN_T)
   1697     AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
   1698     if test -z "$USE_NSPR_THREADS"; then
   1699         USE_PTHREADS=1
   1700     fi
   1701     MDCPUCFG_H=_netbsd.cfg
   1702     PR_MD_CSRCS=netbsd.c
   1703 
   1704     DSO_CFLAGS='-fPIC -DPIC'
   1705     CFLAGS="$CFLAGS -ansi -Wall"
   1706     CXXFLAGS="$CXXFLAGS -ansi -Wall"
   1707     MKSHLIB='$(CC) -o $@ $(DSO_LDOPTS)'
   1708 
   1709     if test -z "$OBJECT_FMT"; then
   1710         if echo __ELF__ | ${CC-cc} -E - | grep -q __ELF__ 2>/dev/null; then
   1711             OBJECT_FMT=a.out
   1712             DLL_SUFFIX=so.1.0
   1713             DSO_LDOPTS='-shared'
   1714         else
   1715             OBJECT_FMT=ELF
   1716             DLL_SUFFIX=so
   1717             DSO_LDOPTS='-shared -Wl,-soname,$(notdir $@)'
   1718         fi
   1719     fi
   1720 
   1721     if test "$LIBRUNPATH"; then
   1722         DSO_LDOPTS="$DSO_LDOPTS -Wl,-R$LIBRUNPATH"
   1723     fi
   1724     ;;
   1725 
   1726 *-nto*)
   1727     AC_DEFINE(XP_UNIX)
   1728     AC_DEFINE(NTO)
   1729     AC_DEFINE(_QNX_SOURCE)
   1730     AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
   1731     MDCPUCFG_H=_nto.cfg
   1732     PR_MD_CSRCS=nto.c
   1733     MKSHLIB='$(CC) $(DSO_LDOPTS) -Wl,-soname -Wl,$(notdir $@) -o $@'
   1734     DSO_CFLAGS=-fPIC
   1735     DSO_LDOPTS=-shared
   1736     OS_LIBS="$OS_LIBS -lsocket"
   1737     _OPTIMIZE_FLAGS="-O1"
   1738     _DEBUG_FLAGS="-gstabs"
   1739 	;;
   1740 
   1741 *-openbsd*)
   1742     AC_DEFINE(XP_UNIX)
   1743     AC_DEFINE(OPENBSD)
   1744     AC_DEFINE(HAVE_BSD_FLOCK)
   1745     AC_DEFINE(HAVE_SOCKLEN_T)
   1746     AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
   1747     CFLAGS="$CFLAGS -ansi -Wall"
   1748     CXXFLAGS="$CXXFLAGS -ansi -Wall"
   1749     DLL_SUFFIX=so.1.0
   1750     DSO_CFLAGS=-fPIC
   1751     MDCPUCFG_H=_openbsd.cfg
   1752     PR_MD_CSRCS=openbsd.c
   1753     OS_LIBS="-lc"
   1754     if test -z "$USE_NSPR_THREADS"; then
   1755         USE_PTHREADS=1
   1756     fi
   1757     DSO_LDOPTS='-shared -fPIC -Wl,-soname,$(notdir $@)'
   1758     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
   1759     ;;
   1760 
   1761 *-qnx*)
   1762     AC_DEFINE(XP_UNIX)
   1763     AC_DEFINE(QNX)
   1764     AC_DEFINE(_PR_NEED_H_ERRNO)
   1765     USE_NSPR_THREADS=1
   1766     MDCPUCFG_H=_qnx.cfg
   1767     PR_MD_CSRCS=qnx.c
   1768     ;;
   1769 
   1770 *-riscos*)
   1771     AC_DEFINE(XP_UNIX)
   1772     AC_DEFINE(RISCOS)
   1773     AC_DEFINE(_PR_NEED_H_ERRNO)
   1774     USE_PTHREADS=1
   1775     MDCPUCFG_H=_riscos.cfg
   1776     PR_MD_CSRCS=riscos.c
   1777     DSO_CFLAGS=-fPIC
   1778     DSO_LDOPTS='-shared -Wl,-soname -Wl,$(notdir $@)'
   1779     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
   1780     ;;
   1781 
   1782 *-solaris*)
   1783     if test -z "$USE_NSPR_THREADS"; then
   1784         USE_PTHREADS=1
   1785     fi
   1786     AC_DEFINE(XP_UNIX)
   1787     AC_DEFINE(SVR4)
   1788     AC_DEFINE(SYSV)
   1789     AC_DEFINE(__svr4)
   1790     AC_DEFINE(__svr4__)
   1791     AC_DEFINE(SOLARIS)
   1792     AC_DEFINE(HAVE_FCNTL_FILE_LOCKING)
   1793     CPU_ARCH=`uname -p`
   1794     MDCPUCFG_H=_solaris.cfg
   1795     PR_MD_CSRCS=solaris.c
   1796     LD=/usr/ccs/bin/ld
   1797     MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
   1798     RESOLVE_LINK_SYMBOLS=1
   1799     case "${OS_RELEASE}" in
   1800     5.8|5.9)
   1801         ;;
   1802     *)
   1803         # It is safe to use the -Bdirect linker flag on Solaris 10 or later.
   1804         USE_B_DIRECT=1
   1805         ;;
   1806     esac
   1807     if test -n "$GNU_CC"; then
   1808         DSO_CFLAGS=-fPIC
   1809         if `$CC -print-prog-name=ld` -v 2>&1 | grep -c GNU >/dev/null; then
   1810             GCC_USE_GNU_LD=1
   1811         fi
   1812         DSO_LDOPTS='-shared -Wl,-h,$(notdir $@),-z,combreloc,-z,defs,-z,ignore'
   1813         if test -n "$USE_B_DIRECT"; then
   1814             DSO_LDOPTS="$DSO_LDOPTS,-Bdirect"
   1815         fi
   1816     else
   1817         DSO_CFLAGS=-KPIC
   1818         DSO_LDOPTS='-G -h $(notdir $@) -z combreloc -z defs -z ignore'
   1819         if test -n "$USE_B_DIRECT"; then
   1820             DSO_LDOPTS="$DSO_LDOPTS -Bdirect"
   1821         fi
   1822     fi
   1823     if test -n "$GNU_CC"; then
   1824         CFLAGS="$CFLAGS -Wall"
   1825         CXXFLAGS="$CXXFLAGS -Wall"
   1826         if test -n "$USE_MDUPDATE"; then
   1827             CFLAGS="$CFLAGS -MDupdate \$(DEPENDENCIES)"
   1828             CXXFLAGS="$CXXFLAGS -MDupdate \$(DEPENDENCIES)"
   1829         fi
   1830         GCC_AS=`$CC -print-prog-name=as`
   1831         if test "`echo | $GCC_AS -v 2>&1 | grep -c GNU`" != "0"; then
   1832             GNU_AS=1
   1833         fi
   1834     else
   1835         CFLAGS="$CFLAGS -xstrconst"
   1836         CXXFLAGS="$CXXFLAGS -Qoption cg -xstrconst -features=tmplife"
   1837         if test -z "$MOZ_OPTIMIZE"; then
   1838             CFLAGS="$CFLAGS -xs"
   1839             CXXFLAGS="$CXXFLAGS -xs"
   1840         fi
   1841         _OPTIMIZE_FLAGS=-xO4
   1842     fi
   1843     if test -z "$GNU_AS"; then
   1844         ASFLAGS="$ASFLAGS -Wa,-P"
   1845     fi
   1846     if test -n "$USE_64"; then
   1847         if test -n "$GNU_CC"; then
   1848             CC="$CC -m64"
   1849             CXX="$CXX -m64"
   1850         else
   1851             if test "$OS_TEST" = "i86pc"; then
   1852                 CC="$CC -xarch=amd64"
   1853                 CXX="$CXX -xarch=amd64"
   1854             else
   1855                 CC="$CC -xarch=v9"
   1856                 CXX="$CXX -xarch=v9"
   1857             fi
   1858         fi
   1859     fi
   1860     if test "$OS_TEST" = "i86pc"; then
   1861         if test -z "$USE_64"; then
   1862             AC_DEFINE(i386)
   1863         fi
   1864         CPU_ARCH_TAG=_$OS_TEST
   1865         # The default debug format, DWARF (-g), is not supported by gcc
   1866         # on i386-ANY-sysv4/solaris, but the stabs format is.  It is
   1867         # assumed that the Solaris assembler /usr/ccs/bin/as is used.
   1868         # If your gcc uses GNU as, you do not need the -Wa,-s option.
   1869         if test -n "$MOZ_DEBUG" && test -n "$GNU_CC"; then
   1870             _DEBUG_FLAGS=-gstabs
   1871             if test -z "$GNU_AS"; then
   1872                 _DEBUG_FLAGS="$_DEBUG_FLAGS -Wa,-s"
   1873             fi
   1874         fi
   1875     fi
   1876     case "${target_os}" in
   1877     solaris2.3*)
   1878         AC_DEFINE(_PR_NO_LARGE_FILES)
   1879         ;;
   1880     solaris2.4*)
   1881         AC_DEFINE(_PR_NO_LARGE_FILES)
   1882         ;;
   1883     solaris2.5*)
   1884         AC_DEFINE(SOLARIS2_5)
   1885         ;;
   1886     *)
   1887         AC_DEFINE(_PR_HAVE_OFF64_T)
   1888         # The lfcompile64(5) man page on Solaris 2.6 says:
   1889         #     For applications that do not wish to conform to the POSIX or
   1890         #     X/Open  specifications,  the  64-bit transitional interfaces
   1891         #     are available by default.  No compile-time flags need to  be
   1892         #     set.
   1893         # But gcc 2.7.2.x fails to define _LARGEFILE64_SOURCE by default.
   1894         # The native compiler, gcc 2.8.x, and egcs don't have this problem.
   1895         if test -n "$GNU_CC"; then
   1896             AC_DEFINE(_LARGEFILE64_SOURCE)
   1897         fi
   1898         ;;
   1899     esac
   1900     case "${target_os}" in
   1901     solaris2.3*)
   1902         ;;
   1903     solaris2.4*)
   1904         ;;
   1905     solaris2.5*)
   1906         ;;
   1907     solaris2.6*)
   1908         ;;
   1909     solaris2.7*)
   1910         ;;
   1911     *)
   1912         # Solaris 8 or higher has IPv6.
   1913         AC_DEFINE(_PR_INET6)
   1914         ;;
   1915     esac
   1916     if test "$CPU_ARCH" = "sparc"; then
   1917         # 64-bit Solaris SPARC requires V9 architecture, so the following
   1918         # is not needed.
   1919         if test -z "$USE_64"; then
   1920             ULTRASPARC_LIBRARY=nspr_flt
   1921         fi
   1922     fi
   1923     # Purify requires that binaries linked against nspr also
   1924     # be linked against -lrt (or -lposix4) so add it to OS_LIBS
   1925     _rev=`uname -r`
   1926     _librt=`echo $_rev 5.6 | awk '{ if ($1 > $2) print "-lrt"; else print "-lposix4" }'`
   1927     OS_LIBS="$OS_LIBS $_librt"
   1928     ;;
   1929 
   1930 *)
   1931     AC_DEFINE(XP_UNIX)
   1932     ;;
   1933 
   1934 esac
   1935 
   1936 if test -z "$SKIP_LIBRARY_CHECKS"; then
   1937 dnl ========================================================
   1938 dnl Check for system libraries
   1939 dnl ========================================================
   1940 
   1941 
   1942 dnl We don't want anything to link with libdl even if it's present on OS X,
   1943 dnl since it's not used and not part of the default installation.
   1944 dnl The same goes for BeOS.
   1945 dnl OS/2 has dlfcn in libc.
   1946 
   1947 case $target in
   1948 *-darwin*)
   1949     ;;
   1950 *)
   1951     AC_CHECK_LIB(dl, dlopen,
   1952         [AC_CHECK_HEADER(dlfcn.h,
   1953             OS_LIBS="-ldl $OS_LIBS")])
   1954     ;;
   1955 esac
   1956 
   1957 
   1958 dnl ========================================================
   1959 dnl Check for system header files.
   1960 dnl ========================================================
   1961 
   1962 dnl ========================================================
   1963 dnl Check for typedefs and structs
   1964 dnl ========================================================
   1965 
   1966 dnl ========================================================
   1967 dnl Checks for library functions.
   1968 dnl ========================================================
   1969 AC_PROG_GCC_TRADITIONAL
   1970 _SAVE_LIBS="$LIBS"
   1971 LIBS="$LIBS $OS_LIBS"
   1972 AC_CHECK_FUNCS(dladdr gettid lchown setpriority strerror syscall dnl
   1973  secure_getenv __secure_getenv)
   1974 LIBS="$_SAVE_LIBS"
   1975 
   1976 dnl ========================================================
   1977 dnl Check options
   1978 dnl ========================================================
   1979 
   1980 dnl ======================================================
   1981 dnl = Enable compiling with ccache
   1982 dnl ======================================================
   1983 AC_ARG_WITH(ccache,
   1984 [  --with-ccache[=path/to/ccache]
   1985                           Enable compiling with ccache],
   1986     CCACHE=$withval, CCACHE="no")
   1987 
   1988 if test "$CCACHE" != "no"; then
   1989     if test -n "$CCACHE"; then
   1990         if test "$CCACHE" = "yes"; then
   1991             CCACHE=
   1992         else
   1993             if test ! -e "$CCACHE"; then
   1994                 AC_MSG_ERROR([$CCACHE not found])
   1995             fi
   1996         fi
   1997     fi
   1998     AC_PATH_PROGS(CCACHE, $CCACHE ccache)
   1999     if test -z "$CCACHE" -o "$CCACHE" = ":"; then
   2000         AC_MSG_ERROR([ccache not found])
   2001     elif test -x "$CCACHE"; then
   2002         CC="$CCACHE $CC"
   2003         CXX="$CCACHE $CXX"
   2004     else
   2005         AC_MSG_ERROR([$CCACHE is not executable])
   2006     fi
   2007 fi
   2008 
   2009 dnl ========================================================
   2010 dnl =
   2011 dnl = --enable-strip
   2012 dnl =
   2013 dnl = Enable stripping of libs and executables
   2014 dnl =
   2015 dnl ========================================================
   2016 AC_ARG_ENABLE(strip,
   2017     [  --enable-strip          Enable stripping of shared libs and programs],
   2018     [ if test "$enableval" = "yes"; then
   2019 	    ENABLE_STRIP=1
   2020       fi ])
   2021 
   2022 dnl Check for hpux options
   2023 case "${target_os}" in
   2024 hpux*)
   2025 if test -z "$GNU_CC"; then
   2026 
   2027     AC_CACHE_CHECK(for +Olit support,
   2028         ac_cv_hpux_usable_olit_option,
   2029         dnl since aCC doesn't throw an error on invalid options,
   2030         dnl we have to test this the hard way
   2031         [ac_cv_hpux_usable_olit_option=no
   2032         rm -f conftest*
   2033         echo 'int main() { return 0; }' | cat > conftest.c
   2034         ${CC-cc} ${CFLAGS} +Olit=all -o conftest conftest.c > conftest.out 2>&1
   2035         if test $? -eq 0; then
   2036             if test -z "`egrep -i '(unrecognize|unknown)' conftest.out`"; then
   2037                 ac_cv_hpux_usable_olit_option=yes
   2038             fi
   2039         fi
   2040         rm -f conftest*
   2041         ])
   2042 
   2043     if test "$ac_cv_hpux_usable_olit_option" = "yes"; then
   2044         CFLAGS="$CFLAGS +Olit=all"
   2045         CXXFLAGS="$CXXFLAGS +Olit=all"
   2046     else
   2047         CFLAGS="$CFLAGS +ESlit"
   2048         CXXFLAGS="$CXXFLAGS +ESlit"
   2049     fi
   2050 fi
   2051 ;;
   2052 esac
   2053 
   2054 case "$target_os" in
   2055 darwin*)
   2056     _HAVE_PTHREADS=1
   2057     ;;
   2058 *)
   2059     AC_CHECK_LIB(pthreads, pthread_create,
   2060         _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthreads",
   2061         AC_CHECK_LIB(pthread, pthread_create,
   2062             _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lpthread",
   2063             AC_CHECK_LIB(c_r, pthread_create,
   2064                 _HAVE_PTHREADS=1 _PTHREAD_LDFLAGS="-lc_r",
   2065                 AC_CHECK_LIB(c, pthread_create,
   2066                     _HAVE_PTHREADS=1
   2067                 )
   2068             )
   2069         )
   2070     )
   2071     ;;
   2072 esac
   2073 
   2074 AC_ARG_WITH(pthreads,
   2075     [  --with-pthreads         Use system pthreads library as thread subsystem],
   2076     [ if test "$withval" = "yes"; then
   2077 	    if test -n "$_HAVE_PTHREADS"; then
   2078 		    USE_PTHREADS=1
   2079 		    USE_USER_PTHREADS=
   2080 		    USE_NSPR_THREADS=
   2081 	    else
   2082 		    AC_MSG_ERROR([ --with-pthreads specified for a system without pthread support ]);
   2083 	    fi
   2084 	  else
   2085 	    USE_PTHREADS=
   2086 	    _PTHREAD_LDFLAGS=
   2087 	  fi],
   2088 	[ if test -n "$_HAVE_PTHREADS" && test -z "$USE_USER_PTHREADS" && test -z "$USE_NSPR_THREADS"; then
   2089 	    USE_PTHREADS=1
   2090 	    USE_USER_PTHREADS=
   2091 	    USE_NSPR_THREADS=
   2092 	  fi])
   2093 
   2094 AC_ARG_ENABLE(user-pthreads,
   2095     [  --enable-user-pthreads  Build using userland pthreads],
   2096     [ if test "$enableval" = "yes"; then
   2097         if test -n "$_HAVE_PTHREADS"; then
   2098 		    USE_PTHREADS=
   2099 		    USE_USER_PTHREADS=1
   2100 		    USE_NSPR_THREADS=
   2101 	    else
   2102 		    AC_MSG_ERROR([ --enable-user-pthreads specified for a system without pthread support ]);
   2103 	    fi
   2104 	  fi])
   2105 
   2106 AC_ARG_ENABLE(nspr-threads,
   2107     [  --enable-nspr-threads   Build using classic nspr threads],
   2108     [ if test "$enableval" = "yes"; then
   2109 	    USE_PTHREADS=
   2110 	    USE_USER_PTHREADS=
   2111 	    USE_NSPR_THREADS=1
   2112 	  fi])
   2113 
   2114 fi # SKIP_LIBRARY_CHECKS
   2115 
   2116 AC_ARG_ENABLE(ipv6,
   2117     [  --enable-ipv6           Compile ipv6 support],
   2118     [ if test "$enableval" = "yes"; then
   2119 	    USE_IPV6=1
   2120       else
   2121 	    USE_IPV6=
   2122       fi])
   2123 
   2124 if test -n "$USE_PTHREADS"; then
   2125    dnl See if -pthread is supported.
   2126    rm -f conftest*
   2127    ac_cv_have_dash_pthread=no
   2128    AC_MSG_CHECKING(whether ${CC-cc} accepts -pthread)
   2129    echo 'int main() { return 0; }' | cat > conftest.c
   2130    ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1
   2131    if test $? -eq 0; then
   2132 	if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthread`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
   2133 	    ac_cv_have_dash_pthread=yes
   2134 		case "$target_os" in
   2135 	    freebsd*)
   2136 # Freebsd doesn't use -pthread for compiles, it uses them for linking
   2137             ;;
   2138 	    *)
   2139             CFLAGS="$CFLAGS -pthread"
   2140             CXXFLAGS="$CXXFLAGS -pthread"
   2141             ;;
   2142         esac
   2143 	fi
   2144     fi
   2145     rm -f conftest*
   2146     AC_MSG_RESULT($ac_cv_have_dash_pthread)
   2147 
   2148 	dnl
   2149 	dnl See if -pthreads is supported.
   2150 	dnl
   2151     ac_cv_have_dash_pthreads=no
   2152     if test "$ac_cv_have_dash_pthread" = "no"; then
   2153 	    AC_MSG_CHECKING(whether ${CC-cc} accepts -pthreads)
   2154     	echo 'int main() { return 0; }' | cat > conftest.c
   2155 	    ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1
   2156     	if test $? -eq 0; then
   2157 	    	if test -z "`egrep -i '(unrecognize|unknown)' conftest.out | grep pthreads`" && test -z "`egrep -i '(error|incorrect)' conftest.out`" ; then
   2158 			    ac_cv_have_dash_pthreads=yes
   2159 			    CFLAGS="$CFLAGS -pthreads"
   2160 			    CXXFLAGS="$CXXFLAGS -pthreads"
   2161 		    fi
   2162 	    fi
   2163 	    rm -f conftest*
   2164     	AC_MSG_RESULT($ac_cv_have_dash_pthreads)
   2165     fi
   2166 
   2167     case "$target" in
   2168     *-solaris*)
   2169         if test "$ac_cv_have_dash_pthreads" = "yes"; then
   2170             _PTHREAD_LDFLAGS=
   2171         fi
   2172 	    ;;
   2173     *-freebsd*)
   2174 	    AC_DEFINE(_REENTRANT)
   2175 	    AC_DEFINE(_THREAD_SAFE)
   2176 	    dnl -pthread links in -lc_r, so don't specify it explicitly.
   2177 	    if test "$ac_cv_have_dash_pthread" = "yes"; then
   2178 	        _PTHREAD_LDFLAGS="-pthread"
   2179 	    else
   2180 	        _PTHREAD_LDFLAGS="-lc_r"
   2181 	    fi
   2182 	    ;;
   2183     *-netbsd*)
   2184 	    if test "$ac_cv_have_dash_pthread" = "yes"; then
   2185 	        _PTHREAD_LDFLAGS="-pthread"
   2186 	    fi
   2187 	    ;;
   2188     *-openbsd*)
   2189         if test "$ac_cv_have_dash_pthread" = "yes"; then
   2190             _PTHREAD_LDFLAGS=-pthread
   2191         fi
   2192         ;;
   2193     *-linux*|*-gnu*|*-k*bsd*-gnu)
   2194         AC_DEFINE(_REENTRANT)
   2195         ;;
   2196     esac
   2197 
   2198 else
   2199     if test -n "$USE_USER_PTHREADS"; then
   2200 	    USE_PTHREADS=
   2201 	    USE_NSPR_THREADS=
   2202     else
   2203         _PTHREAD_LDFLAGS=
   2204     fi
   2205 fi
   2206 dnl Special thread exceptions
   2207 
   2208 case "$target" in
   2209 *-aix*)
   2210     if test -n "$USE_NSPR_THREADS"; then
   2211         AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
   2212     fi
   2213     case "$target_os" in
   2214     aix4.1*)
   2215         if test -z "$USE_PTHREADS"; then
   2216             AC_DEFINE(AIX_RENAME_SELECT)
   2217         fi
   2218         ;;
   2219     aix4.2*)
   2220         if test -z "$USE_NSPR_THREADS"; then
   2221             AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
   2222         fi
   2223         ;;
   2224     aix4.3*)
   2225         if test -z "$USE_NSPR_THREADS"; then
   2226             AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
   2227         fi
   2228         if test -n "$USE_PTHREADS"; then
   2229             AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
   2230         fi
   2231         ;;
   2232     *)
   2233         if test -z "$USE_NSPR_THREADS"; then
   2234             AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
   2235         fi
   2236         if test -n "$USE_PTHREADS"; then
   2237             AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
   2238         fi
   2239         ;;
   2240     esac
   2241     ;;
   2242 *-freebsd*)
   2243     if test -n "$USE_NSPR_THREADS"; then
   2244         AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
   2245     fi
   2246     ;;
   2247 *-hpux*)
   2248     if test -n "$USE_NSPR_THREADS"; then
   2249         AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
   2250     fi
   2251     if test "$USE_PTHREADS"; then
   2252         AC_DEFINE_UNQUOTED(_POSIX_C_SOURCE,199506L)
   2253         AC_DEFINE(_PR_HAVE_THREADSAFE_GETHOST)
   2254     fi
   2255     if test "$USE_USER_PTHREADS"; then
   2256         AC_DEFINE_UNQUOTED(_POSIX_C_SOURCE,199506L)
   2257     fi
   2258     ;;
   2259 *-linux*|*-gnu*|*-k*bsd*-gnu)
   2260     if test -n "$USE_NSPR_THREADS"; then
   2261         AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
   2262     fi
   2263     ;;
   2264 *-mingw*|*-msys*|*-cygwin*|*-mks*)
   2265     dnl win32 cannot use pthreads
   2266     USE_PTHREADS=
   2267     _PTHREAD_LDFLAGS=
   2268     USE_USER_PTHREADS=
   2269     ;;
   2270 *-netbsd*|*-openbsd*)
   2271     if test -n "$USE_NSPR_THREADS"; then
   2272         AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
   2273     fi
   2274     ;;
   2275 *-solaris*)
   2276     if test -n "$USE_NSPR_THREADS"; then
   2277         AC_DEFINE(_PR_LOCAL_THREADS_ONLY)
   2278     fi
   2279     if test -n "$USE_PTHREADS"; then
   2280         AC_DEFINE(_REENTRANT)
   2281         AC_DEFINE(HAVE_POINTER_LOCALTIME_R)
   2282         if test "$OS_TEST" = "i86pc"; then
   2283             if test -n "$USE_64"; then
   2284                PR_MD_ASFILES=os_SunOS_x86_64.s
   2285             else
   2286                PR_MD_ASFILES=os_SunOS_x86.s
   2287             fi
   2288         else
   2289             if test -n "$USE_64"; then
   2290                 PR_MD_ASFILES=os_SunOS_sparcv9.s
   2291             fi
   2292         fi
   2293     fi
   2294     ;;
   2295 *-nto*)
   2296     if test -n "$USE_PTHREADS"; then
   2297         AC_DEFINE(_PR_HAVE_GETHOST_R)
   2298         AC_DEFINE(_PR_HAVE_GETHOST_R_POINTER)
   2299     fi
   2300     ;;
   2301 esac
   2302 
   2303 OS_LIBS="$_PTHREAD_LDFLAGS $OS_LIBS"
   2304 
   2305 dnl If the user passed in arg to --enable-optimize or --enable-debug,
   2306 dnl make sure that we use it.
   2307 if test -n "$_SAVE_OPTIMIZE_FLAGS"; then
   2308     _OPTIMIZE_FLAGS="$_SAVE_OPTIMIZE_FLAGS"
   2309 fi
   2310 
   2311 if test -n "$_SAVE_DEBUG_FLAGS"; then
   2312     _DEBUG_FLAGS="$_SAVE_DEBUG_FLAGS"
   2313 fi
   2314 
   2315 if test -n "$MOZ_OPTIMIZE"; then
   2316     CFLAGS="$CFLAGS $_OPTIMIZE_FLAGS"
   2317     CXXFLAGS="$CXXFLAGS $_OPTIMIZE_FLAGS"
   2318 fi
   2319 
   2320 if test -n "$MOZ_DEBUG_SYMBOLS"; then
   2321     CFLAGS="$CFLAGS $_DEBUG_FLAGS"
   2322     CXXFLAGS="$CXXFLAGS $_DEBUG_FLAGS"
   2323 fi
   2324 
   2325 if test -n "$MOZ_OPTIMIZE"; then
   2326     OBJDIR_TAG=_OPT
   2327 else
   2328     OBJDIR_TAG=_DBG
   2329 fi
   2330 
   2331 if test -n "$USE_64"; then
   2332     COMPILER_TAG=_64
   2333 fi
   2334 
   2335 RELEASE_OBJDIR_NAME="${OS_CONFIG}${CPU_ARCH_TAG}${COMPILER_TAG}${IMPL_STRATEGY}${OBJDIR_TAG}.${OBJDIR_SUFFIX}"
   2336 
   2337 dnl ========================================================
   2338 dnl Use cygwin wrapper for win32 builds, except MSYS/MinGW
   2339 dnl ========================================================
   2340 case "$target_os" in
   2341 cygwin*|mks*)
   2342     CC="\$(CYGWIN_WRAPPER) $CC"
   2343     CXX="\$(CYGWIN_WRAPPER) $CXX"
   2344     RC="\$(CYGWIN_WRAPPER) $RC"
   2345     ;;
   2346 esac
   2347 
   2348 dnl ========================================================
   2349 dnl = Use malloc wrapper lib
   2350 dnl ========================================================
   2351 AC_ARG_ENABLE(wrap-malloc,
   2352 [  --enable-wrap-malloc    Wrap malloc calls (gnu linker only)],
   2353 [     if test "$enableval" = "yes"; then
   2354 	    _WRAP_MALLOC=1
   2355       fi ])
   2356 
   2357 if test -n "$_WRAP_MALLOC"; then
   2358     if test -n "$GNU_CC"; then
   2359         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=malloc,--wrap=calloc,--wrap=valloc,--wrap=free,--wrap=realloc,--wrap=memalign"
   2360         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=__builtin_new,--wrap=__builtin_vec_new,--wrap=__builtin_delete,--wrap=__builtin_vec_delete"
   2361         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=strdup,--wrap=strndup"
   2362         WRAP_LDFLAGS="${WRAP_LDFLAGS} -Wl,--wrap=posix_memalign,--wrap=malloc_usable_size"
   2363     else
   2364         AC_MSG_ERROR([--enable-wrap-malloc is not supported for non-GNU toolchains])
   2365     fi
   2366 fi
   2367 
   2368 dnl ========================================================
   2369 dnl = Location of malloc wrapper lib
   2370 dnl ========================================================
   2371 AC_ARG_WITH(wrap-malloc,
   2372 [  --with-wrap-malloc=SHAREDLIB  Location of malloc wrapper library],
   2373     WRAP_LDFLAGS="${WRAP_LDFLAGS} $withval")
   2374 
   2375 dnl ========================================================
   2376 dnl Substitution of found variables.
   2377 dnl ========================================================
   2378 AC_SUBST(SHELL_OVERRIDE)
   2379 
   2380 AC_SUBST(MOZILLA_CLIENT)
   2381 AC_SUBST(CC)
   2382 AC_SUBST(CXX)
   2383 AC_SUBST(CFLAGS)
   2384 AC_SUBST(CXXFLAGS)
   2385 AC_SUBST(CPPFLAGS)
   2386 AC_SUBST(HOST_CC)
   2387 AC_SUBST(HOST_CFLAGS)
   2388 AC_SUBST(LDFLAGS)
   2389 AC_SUBST(HOST_LDFLAGS)
   2390 AC_SUBST(GNU_CC)
   2391 AC_SUBST(GCC_USE_GNU_LD)
   2392 AC_SUBST(MSC_VER)
   2393 AC_SUBST(CROSS_COMPILE)
   2394 
   2395 AC_SUBST(MOZ_OPTIMIZE)
   2396 AC_SUBST(MOZ_DEBUG)
   2397 AC_SUBST(MOZ_DEBUG_SYMBOLS)
   2398 
   2399 AC_SUBST(USE_CPLUS)
   2400 AC_SUBST(USE_IPV6)
   2401 AC_SUBST(USE_N32)
   2402 AC_SUBST(USE_X32)
   2403 AC_SUBST(USE_64)
   2404 AC_SUBST(OBJECT_MODE)
   2405 AC_SUBST(ENABLE_STRIP)
   2406 
   2407 AC_SUBST(USE_PTHREADS)
   2408 AC_SUBST(USE_BTHREADS)
   2409 AC_SUBST(USE_USER_PTHREADS)
   2410 AC_SUBST(USE_NSPR_THREADS)
   2411 
   2412 AC_SUBST(LIBNSPR)
   2413 AC_SUBST(LIBPLC)
   2414 
   2415 AC_SUBST(MOD_MAJOR_VERSION)
   2416 AC_SUBST(MOD_MINOR_VERSION)
   2417 AC_SUBST(MOD_PATCH_VERSION)
   2418 AC_SUBST(NSPR_MODNAME)
   2419 AC_SUBST(MDCPUCFG_H)
   2420 AC_SUBST(PR_MD_CSRCS)
   2421 AC_SUBST(PR_MD_ASFILES)
   2422 AC_SUBST(PR_MD_ARCH_DIR)
   2423 AC_SUBST(CPU_ARCH)
   2424 
   2425 AC_SUBST(OBJ_SUFFIX)
   2426 AC_SUBST(LIB_SUFFIX)
   2427 AC_SUBST(DLL_SUFFIX)
   2428 AC_SUBST(ASM_SUFFIX)
   2429 AC_SUBST(WRAP_LDFLAGS)
   2430 AC_SUBST(MKSHLIB)
   2431 AC_SUBST(DSO_CFLAGS)
   2432 AC_SUBST(DSO_LDOPTS)
   2433 
   2434 AC_SUBST(OS_TARGET)
   2435 AC_SUBST(OS_ARCH)
   2436 AC_SUBST(OS_RELEASE)
   2437 AC_SUBST(OS_TEST)
   2438 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
   2439 
   2440 AC_SUBST(DEFINES)
   2441 AC_SUBST(DEFS)
   2442 AC_SUBST(AR)
   2443 AC_SUBST(AR_FLAGS)
   2444 AC_SUBST(AS)
   2445 AC_SUBST(ASFLAGS)
   2446 AC_SUBST(LD)
   2447 AC_SUBST(RANLIB)
   2448 AC_SUBST(PERL)
   2449 AC_SUBST(STRIP)
   2450 AC_SUBST(FILTER)
   2451 AC_SUBST(IMPLIB)
   2452 
   2453 AC_SUBST(PROFILE_GEN_CFLAGS)
   2454 AC_SUBST(PROFILE_GEN_LDFLAGS)
   2455 AC_SUBST(PROFILE_USE_CFLAGS)
   2456 AC_SUBST(PROFILE_USE_LDFLAGS)
   2457 
   2458 AC_SUBST(OS_LIBS)
   2459 AC_SUBST(RESOLVE_LINK_SYMBOLS)
   2460 AC_SUBST(AIX_LINK_OPTS)
   2461 AC_SUBST(NOSUCHFILE)
   2462 AC_SUBST(MOZ_OBJFORMAT)
   2463 AC_SUBST(ULTRASPARC_LIBRARY)
   2464 
   2465 AC_SUBST(OBJDIR)
   2466 AC_SUBST(OBJDIR_NAME)
   2467 AC_SUBST(RELEASE_OBJDIR_NAME)
   2468 AC_SUBST(NSINSTALL)
   2469 AC_SUBST(OPTIMIZER)
   2470 AC_SUBST(RC)
   2471 AC_SUBST(RCFLAGS)
   2472 AC_SUBST(DLLFLAGS)
   2473 AC_SUBST(EXEFLAGS)
   2474 AC_SUBST(OS_DLLFLAGS)
   2475 AC_SUBST(CYGWIN_WRAPPER)
   2476 AC_SUBST(VISIBILITY_FLAGS)
   2477 AC_SUBST(WRAP_SYSTEM_INCLUDES)
   2478 AC_SUBST(MACOS_SDK_DIR)
   2479 AC_SUBST(NEXT_ROOT)
   2480 AC_SUBST(MT)
   2481 
   2482 dnl ========================================================
   2483 dnl Generate output files.
   2484 dnl ========================================================
   2485 MAKEFILES="
   2486     Makefile
   2487     config/Makefile
   2488     config/autoconf.mk
   2489     config/nsprincl.mk
   2490     config/nsprincl.sh
   2491     config/nspr-config
   2492     config/nspr.pc
   2493     lib/Makefile
   2494     lib/ds/Makefile
   2495     lib/libc/Makefile
   2496     lib/libc/include/Makefile
   2497     lib/libc/src/Makefile
   2498     lib/tests/Makefile
   2499     pkg/Makefile
   2500     pr/Makefile
   2501     pr/include/Makefile
   2502     pr/include/md/Makefile
   2503     pr/include/obsolete/Makefile
   2504     pr/include/private/Makefile
   2505     pr/src/Makefile
   2506     pr/src/io/Makefile
   2507     pr/src/linking/Makefile
   2508     pr/src/malloc/Makefile
   2509     pr/src/md/Makefile
   2510     pr/src/md/${PR_MD_ARCH_DIR}/Makefile
   2511     pr/src/memory/Makefile
   2512     pr/src/misc/Makefile
   2513     pr/src/threads/Makefile
   2514     pr/tests/Makefile
   2515     pr/tests/dll/Makefile
   2516 "
   2517 
   2518 if test "$OS_TARGET" = "Linux"; then
   2519     MAKEFILES="$MAKEFILES
   2520         pkg/linux/Makefile
   2521     "
   2522 elif test "$OS_TARGET" = "SunOS"; then
   2523     MAKEFILES="$MAKEFILES
   2524         pkg/solaris/Makefile
   2525         pkg/solaris/SUNWpr/Makefile
   2526         pkg/solaris/SUNWprd/Makefile
   2527     "
   2528 fi
   2529 
   2530 if test -z "$USE_PTHREADS" && test -z "$USE_BTHREADS"; then
   2531     MAKEFILES="$MAKEFILES
   2532         pr/src/threads/combined/Makefile
   2533     "
   2534 elif test -n "$USE_PTHREADS"; then
   2535     MAKEFILES="$MAKEFILES
   2536         pr/src/pthreads/Makefile
   2537     "
   2538 elif test -n "$USE_BTHREADS"; then
   2539     MAKEFILES="$MAKEFILES
   2540         pr/src/bthreads/Makefile
   2541     "
   2542 fi
   2543 
   2544 if test -n "$USE_CPLUS"; then
   2545     MAKEFILES="$MAKEFILES
   2546         pr/src/cplus/Makefile
   2547         pr/src/cplus/tests/Makefile
   2548     "
   2549 fi
   2550 
   2551 echo $MAKEFILES > unallmakefiles
   2552 
   2553 AC_CONFIG_FILES([$MAKEFILES])
   2554 AC_CONFIG_COMMANDS([default], [chmod +x config/nspr-config])
   2555 AC_OUTPUT