diff --git a/CLOBBER b/CLOBBER index 052f8159410..091c0155fc6 100644 --- a/CLOBBER +++ b/CLOBBER @@ -22,4 +22,4 @@ # changes to stick? As of bug 928195, this shouldn't be necessary! Please # don't change CLOBBER for WebIDL changes any more. -Clobber for bug 1022262. +Clobber to make sure any residual damage from bug 975011 is gone. diff --git a/aclocal.m4 b/aclocal.m4 index e5fdb4a0aa8..1c7296eea46 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -11,7 +11,6 @@ builtin(include, build/autoconf/toolchain.m4)dnl builtin(include, build/autoconf/ccache.m4)dnl builtin(include, build/autoconf/wrapper.m4)dnl builtin(include, build/autoconf/nspr.m4)dnl -builtin(include, build/autoconf/nspr-build.m4)dnl builtin(include, build/autoconf/nss.m4)dnl builtin(include, build/autoconf/pkg.m4)dnl builtin(include, build/autoconf/codeset.m4)dnl diff --git a/build/autoconf/nspr-build.m4 b/build/autoconf/nspr-build.m4 deleted file mode 100644 index 631f69e8f03..00000000000 --- a/build/autoconf/nspr-build.m4 +++ /dev/null @@ -1,269 +0,0 @@ -dnl This Source Code Form is subject to the terms of the Mozilla Public -dnl License, v. 2.0. If a copy of the MPL was not distributed with this -dnl file, You can obtain one at http://mozilla.org/MPL/2.0/. - -AC_DEFUN([MOZ_CONFIG_NSPR], [ - -ifelse([$1],,define(CONFIGURING_JS,yes)) - -dnl Possible ways this can be called: -dnl from toplevel configure: -dnl JS_STANDALONE= BUILDING_JS= -dnl from js/src/configure invoked by toplevel configure: -dnl JS_STANDALONE= BUILDING_JS=1 -dnl from standalone js/src/configure: -dnl JS_STANDALONE=1 BUILDING_JS=1 - -dnl ======================================================== -dnl = Find the right NSPR to use. -dnl ======================================================== -MOZ_ARG_WITH_STRING(nspr-cflags, -[ --with-nspr-cflags=FLAGS - Pass FLAGS to CC when building code that uses NSPR. - Use this when there's no accurate nspr-config - script available. This is the case when building - SpiderMonkey as part of the Mozilla tree: the - top-level configure script computes NSPR flags - that accomodate the quirks of that environment.], - NSPR_CFLAGS=$withval) -MOZ_ARG_WITH_STRING(nspr-libs, -[ --with-nspr-libs=LIBS Pass LIBS to LD when linking code that uses NSPR. - See --with-nspr-cflags for more details.], - NSPR_LIBS=$withval) - -ifdef([CONFIGURING_JS],[ - MOZ_ARG_ENABLE_BOOL(nspr-build, -[ --enable-nspr-build Configure and build NSPR from source tree], - MOZ_BUILD_NSPR=1, - MOZ_BUILD_NSPR=) -]) - -if test -z "$BUILDING_JS" || test -n "$JS_STANDALONE"; then - _IS_OUTER_CONFIGURE=1 -fi - -MOZ_ARG_WITH_BOOL(system-nspr, -[ --with-system-nspr Use an NSPR that is already built and installed. - Use the 'nspr-config' script in the current path, - or look for the script in the directories given with - --with-nspr-exec-prefix or --with-nspr-prefix. - (Those flags are only checked if you specify - --with-system-nspr.)], - _USE_SYSTEM_NSPR=1 ) - -if test -z "$BUILDING_JS"; then - JS_THREADSAFE=1 -fi - -JS_POSIX_NSPR=unset -ifdef([CONFIGURING_JS],[ - if test -n "$JS_STANDALONE"; then - case "$target" in - *linux*|*darwin*|*dragonfly*|*freebsd*|*netbsd*|*openbsd*) - if test -z "$_HAS_NSPR" && test "$JS_THREADSAFE"; then - JS_POSIX_NSPR_DEFAULT=1 - fi - ;; - esac - fi - - MOZ_ARG_ENABLE_BOOL(posix-nspr-emulation, -[ --enable-posix-nspr-emulation - Enable emulation of NSPR for POSIX systems], - JS_POSIX_NSPR=1, - JS_POSIX_NSPR=) -]) - -dnl Pass at most one of -dnl --with-system-nspr -dnl --with-nspr-cflags/libs -dnl --enable-nspr-build -dnl --enable-posix-nspr-emulation - -AC_MSG_CHECKING([NSPR selection]) -nspr_opts= -which_nspr=default -if test -n "$_USE_SYSTEM_NSPR"; then - nspr_opts="x$nspr_opts" - which_nspr="system" -fi -if test -n "$NSPR_CFLAGS" -o -n "$NSPR_LIBS"; then - nspr_opts="x$nspr_opts" - which_nspr="command-line" -fi -if test -n "$MOZ_BUILD_NSPR"; then - nspr_opts="x$nspr_opts" - which_nspr="source-tree" -fi -if test "$JS_POSIX_NSPR" = unset; then - JS_POSIX_NSPR= -else - nspr_opts="x$nspr_opts" - which_nspr="posix-wrapper" -fi - -if test -z "$nspr_opts"; then - if test -z "$BUILDING_JS"; then - dnl Toplevel configure defaults to using nsprpub from the source tree - MOZ_BUILD_NSPR=1 - which_nspr="source-tree" - else - dnl JS configure defaults to emulated NSPR if available, falling back - dnl to nsprpub. - if test -n "$JS_THREADSAFE"; then - JS_POSIX_NSPR="$JS_POSIX_NSPR_DEFAULT" - if test -z "$JS_POSIX_NSPR"; then - MOZ_BUILD_NSPR=1 - which_nspr="source-tree" - else - which_nspr="posix-wrapper" - fi - else - which_nspr="none" - fi - fi -fi - -if test -z "$nspr_opts" || test "$nspr_opts" = x; then - AC_MSG_RESULT($which_nspr) -else - AC_MSG_ERROR([only one way of using NSPR may be selected. See 'configure --help'.]) -fi - -AC_SUBST(MOZ_BUILD_NSPR) - -if test -n "$BUILDING_JS"; then - if test "$JS_POSIX_NSPR" = 1; then - AC_DEFINE(JS_POSIX_NSPR) - fi - AC_SUBST(JS_POSIX_NSPR) -fi - -# A (sub)configure invoked by the toplevel configure will always receive -# --with-nspr-libs on the command line. It will never need to figure out -# anything itself. -if test -n "$_IS_OUTER_CONFIGURE"; then - -if test -n "$_USE_SYSTEM_NSPR"; then - AM_PATH_NSPR($NSPR_MINVER, [MOZ_NATIVE_NSPR=1], [AC_MSG_ERROR([you do not have NSPR installed or your version is older than $NSPR_MINVER.])]) -fi - -if test -n "$MOZ_NATIVE_NSPR" -o -n "$NSPR_CFLAGS" -o -n "$NSPR_LIBS"; then - _SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS $NSPR_CFLAGS" - AC_TRY_COMPILE([#include "prtypes.h"], - [#ifndef PR_STATIC_ASSERT - #error PR_STATIC_ASSERT not defined or requires including prtypes.h - #endif], - , - AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT or including prtypes.h does not provide it])) - AC_TRY_COMPILE([#include "prtypes.h"], - [#ifndef PR_UINT64 - #error PR_UINT64 not defined or requires including prtypes.h - #endif], - , - AC_MSG_ERROR([system NSPR does not support PR_UINT64 or including prtypes.h does not provide it])) - CFLAGS=$_SAVE_CFLAGS -elif test -z "$JS_POSIX_NSPR" -a -n "$JS_THREADSAFE"; then - if test -z "$LIBXUL_SDK"; then - NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr" - if test -n "$GNU_CC"; then - NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}" - else - NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib " - fi - else - NSPR_CFLAGS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --includedir="${LIBXUL_DIST}/include/nspr" --cflags` - NSPR_LIBS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --libdir="${LIBXUL_DIST}"/lib --libs` - fi -fi - -AC_SUBST(NSPR_CFLAGS) -AC_SUBST(NSPR_LIBS) - -NSPR_PKGCONF_CHECK="nspr" -if test -n "$MOZ_NATIVE_NSPR"; then - # piggy back on $MOZ_NATIVE_NSPR to set a variable for the nspr check for js.pc - NSPR_PKGCONF_CHECK="nspr >= $NSPR_MINVER" - - _SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS $NSPR_CFLAGS" - AC_TRY_COMPILE([#include "prlog.h"], - [#ifndef PR_STATIC_ASSERT - #error PR_STATIC_ASSERT not defined - #endif], - , - AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT])) - CFLAGS=$_SAVE_CFLAGS -fi -AC_SUBST(NSPR_PKGCONF_CHECK) - -fi # _IS_OUTER_CONFIGURE - -]) - -AC_DEFUN([MOZ_SUBCONFIGURE_NSPR], [ - -if test -z "$MOZ_NATIVE_NSPR"; then - ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla" - if test -z "$MOZ_DEBUG"; then - ac_configure_args="$ac_configure_args --disable-debug" - else - ac_configure_args="$ac_configure_args --enable-debug" - fi - if test "$MOZ_OPTIMIZE" = "1"; then - ac_configure_args="$ac_configure_args --enable-optimize" - elif test -z "$MOZ_OPTIMIZE"; then - ac_configure_args="$ac_configure_args --disable-optimize" - fi - if test -n "$HAVE_64BIT_OS"; then - ac_configure_args="$ac_configure_args --enable-64bit" - fi - if test -n "$USE_ARM_KUSER"; then - ac_configure_args="$ac_configure_args --with-arm-kuser" - fi - # A configure script generated by autoconf 2.68 does not allow the cached - # values of "precious" variables such as CFLAGS and LDFLAGS to differ from - # the values passed to the configure script. Since we modify CFLAGS and - # LDFLAGS before passing them to NSPR's configure script, we cannot share - # config.cache with NSPR. As a result, we cannot pass AS, CC, CXX, etc. to - # NSPR via a shared config.cache file and must pass them to NSPR on the - # configure command line. - for var in AS CC CXX CPP LD AR RANLIB STRIP; do - ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'" - done - # A configure script generated by autoconf 2.68 warns if --host is - # specified but --build isn't. So we always pass --build to NSPR's - # configure script. - ac_configure_args="$ac_configure_args --build=$build" - ac_configure_args="$ac_configure_args $NSPR_CONFIGURE_ARGS" - - # Save these, so we can mess with them for the subconfigure .. - _SAVE_CFLAGS="$CFLAGS" - _SAVE_CPPFLAGS="$CPPFLAGS" - _SAVE_LDFLAGS="$LDFLAGS" - - if test -n "$MOZ_LINKER" -a "$ac_cv_func_dladdr" = no ; then - # dladdr is supported by the new linker, even when the system linker doesn't - # support it. Trick nspr into using dladdr when it's not supported. - export CPPFLAGS="-include $_topsrcdir/mozglue/linker/dladdr.h $CPPFLAGS" - fi - export LDFLAGS="$LDFLAGS $NSPR_LDFLAGS" - export CFLAGS="$CFLAGS $MOZ_FRAMEPTR_FLAGS" - - # Use a separate cache file for NSPR since it uses autoconf 2.68. - _save_cache_file="$cache_file" - cache_file=$_objdir/nsprpub/config.cache - - AC_OUTPUT_SUBDIRS(nsprpub) - - # .. and restore them - cache_file="$_save_cache_file" - CFLAGS="$_SAVE_CFLAGS" - CPPFLAGS="$_SAVE_CPPFLAGS" - LDFLAGS="$_SAVE_LDFLAGS" - - ac_configure_args="$_SUBDIR_CONFIG_ARGS" -fi - -]) diff --git a/configure.in b/configure.in index 423840ed753..262eadc2d60 100644 --- a/configure.in +++ b/configure.in @@ -53,7 +53,6 @@ dnl ======================================================== MOZJPEG=62 MOZPNG=10610 NSPR_VERSION=4 -NSPR_MINVER=4.10.3 NSS_VERSION=3 dnl Set the minimum version of toolkit libs used by mozilla @@ -132,7 +131,7 @@ EOF exit 1 break fi -MOZ_BUILD_ROOT=`pwd -W 2>/dev/null || pwd` +MOZ_BUILD_ROOT=`pwd` MOZ_PYTHON @@ -2201,6 +2200,7 @@ ia64*-hpux*) case "$host" in *-mingw*) + MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W` if test -n "$L10NBASEDIR"; then L10NBASEDIR=`cd $L10NBASEDIR && pwd -W` fi @@ -3443,7 +3443,47 @@ MOZ_ARG_WITH_BOOL(system-libxul, [ --with-system-libxul Use system installed libxul SDK], SYSTEM_LIBXUL=1) -MOZ_CONFIG_NSPR() +dnl ======================================================== +dnl = If NSPR was not detected in the system, +dnl = use the one in the source tree (mozilla/nsprpub) +dnl ======================================================== +MOZ_ARG_WITH_BOOL(system-nspr, +[ --with-system-nspr Use system installed NSPR], + _USE_SYSTEM_NSPR=1 ) + +if test -n "$_USE_SYSTEM_NSPR"; then + AM_PATH_NSPR(4.10.6, [MOZ_NATIVE_NSPR=1], [AC_MSG_ERROR([your don't have NSPR installed or your version is too old])]) +fi + +if test -n "$MOZ_NATIVE_NSPR"; then + _SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS $NSPR_CFLAGS" + AC_TRY_COMPILE([#include "prtypes.h"], + [#ifndef PR_STATIC_ASSERT + #error PR_STATIC_ASSERT not defined or requires including prtypes.h + #endif], + [MOZ_NATIVE_NSPR=1], + AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT or including prtypes.h does not provide it])) + AC_TRY_COMPILE([#include "prtypes.h"], + [#ifndef PR_UINT64 + #error PR_UINT64 not defined or requires including prtypes.h + #endif], + [MOZ_NATIVE_NSPR=1], + AC_MSG_ERROR([system NSPR does not support PR_UINT64 or including prtypes.h does not provide it])) + CFLAGS=$_SAVE_CFLAGS +else + if test -z "$LIBXUL_SDK"; then + NSPR_CFLAGS="-I${LIBXUL_DIST}/include/nspr" + if test -n "$GNU_CC"; then + NSPR_LIBS="-L${LIBXUL_DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}" + else + NSPR_LIBS="${LIBXUL_DIST}/lib/nspr${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plc${NSPR_VERSION}.lib ${LIBXUL_DIST}/lib/plds${NSPR_VERSION}.lib " + fi + else + NSPR_CFLAGS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --includedir="${LIBXUL_DIST}/include/nspr" --cflags` + NSPR_LIBS=`"${LIBXUL_DIST}"/sdk/bin/nspr-config --prefix="${LIBXUL_DIST}" --libdir="${LIBXUL_DIST}"/lib --libs` + fi +fi dnl set GRE_MILESTONE dnl ======================================================== @@ -9136,10 +9176,70 @@ if test -n "$_WRAP_MALLOC"; then _SUBDIR_CONFIG_ARGS="`echo $_SUBDIR_CONFIG_ARGS | sed -e 's/--enable-wrap-malloc *//'`" fi -MOZ_SUBCONFIGURE_NSPR() +if test -z "$MOZ_NATIVE_NSPR"; then + ac_configure_args="$_SUBDIR_CONFIG_ARGS --with-dist-prefix=$MOZ_BUILD_ROOT/dist --with-mozilla" + if test -z "$MOZ_DEBUG"; then + ac_configure_args="$ac_configure_args --disable-debug" + else + ac_configure_args="$ac_configure_args --enable-debug" if test -n "$MOZ_NO_DEBUG_RTL"; then ac_configure_args="$ac_configure_args --disable-debug-rtl" fi + fi + if test "$MOZ_OPTIMIZE" = "1"; then + ac_configure_args="$ac_configure_args --enable-optimize" + elif test -z "$MOZ_OPTIMIZE"; then + ac_configure_args="$ac_configure_args --disable-optimize" + fi + if test -n "$HAVE_64BIT_OS"; then + ac_configure_args="$ac_configure_args --enable-64bit" + fi + if test -n "$USE_ARM_KUSER"; then + ac_configure_args="$ac_configure_args --with-arm-kuser" + fi + # A configure script generated by autoconf 2.68 does not allow the cached + # values of "precious" variables such as CFLAGS and LDFLAGS to differ from + # the values passed to the configure script. Since we modify CFLAGS and + # LDFLAGS before passing them to NSPR's configure script, we cannot share + # config.cache with NSPR. As a result, we cannot pass AS, CC, CXX, etc. to + # NSPR via a shared config.cache file and must pass them to NSPR on the + # configure command line. + for var in AS CC CXX CPP LD AR RANLIB STRIP; do + ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'" + done + # A configure script generated by autoconf 2.68 warns if --host is + # specified but --build isn't. So we always pass --build to NSPR's + # configure script. + ac_configure_args="$ac_configure_args --build=$build" + ac_configure_args="$ac_configure_args $NSPR_CONFIGURE_ARGS" + + # Save these, so we can mess with them for the subconfigure .. + _SAVE_CFLAGS="$CFLAGS" + _SAVE_CPPFLAGS="$CPPFLAGS" + _SAVE_LDFLAGS="$LDFLAGS" + + if test -n "$MOZ_LINKER" -a "$ac_cv_func_dladdr" = no ; then + # dladdr is supported by the new linker, even when the system linker doesn't + # support it. Trick nspr into using dladdr when it's not supported. + export CPPFLAGS="-include $_topsrcdir/mozglue/linker/dladdr.h $CPPFLAGS" + fi + export LDFLAGS="$LDFLAGS $NSPR_LDFLAGS" + export CFLAGS="$CFLAGS $MOZ_FRAMEPTR_FLAGS" + + # Use a separate cache file for NSPR since it uses autoconf 2.68. + _save_cache_file="$cache_file" + cache_file=$_objdir/nsprpub/config.cache + + AC_OUTPUT_SUBDIRS(nsprpub) + + # .. and restore them + cache_file="$_save_cache_file" + CFLAGS="$_SAVE_CFLAGS" + CPPFLAGS="$_SAVE_CPPFLAGS" + LDFLAGS="$_SAVE_LDFLAGS" + + ac_configure_args="$_SUBDIR_CONFIG_ARGS" +fi dnl ======================================================== dnl = Setup a nice relatively clean build environment for @@ -9162,14 +9262,10 @@ if test -n "$ENABLE_CLANG_PLUGIN"; then AC_OUTPUT_SUBDIRS(build/clang-plugin) fi + # Run the SpiderMonkey 'configure' script. dist=$MOZ_BUILD_ROOT/dist ac_configure_args="$_SUBDIR_CONFIG_ARGS" - -# --with-system-nspr will have been converted into the relevant $NSPR_CFLAGS -# and $NSPR_LIBS. -ac_configure_args="`echo $ac_configure_args | sed -e 's/--with-system-nspr\S* *//'`" - ac_configure_args="$ac_configure_args --enable-threadsafe" if test "$_INTL_API" = no; then @@ -9192,7 +9288,7 @@ fi if test -z "$JSGC_GENERATIONAL" ; then ac_configure_args="$ac_configure_args --disable-gcgenerational" fi -if test -n "$NSPR_CFLAGS" -o -n "$NSPR_LIBS"; then +if test -z "$MOZ_NATIVE_NSPR"; then ac_configure_args="$ac_configure_args --with-nspr-cflags='$NSPR_CFLAGS'" ac_configure_args="$ac_configure_args --with-nspr-libs='$NSPR_LIBS'" fi diff --git a/js/src/aclocal.m4 b/js/src/aclocal.m4 index 8560b0340a5..348d6d4c17b 100644 --- a/js/src/aclocal.m4 +++ b/js/src/aclocal.m4 @@ -12,7 +12,6 @@ builtin(include, ../../build/autoconf/ccache.m4)dnl builtin(include, ../../build/autoconf/wrapper.m4)dnl builtin(include, ../../build/autoconf/pkg.m4)dnl builtin(include, ../../build/autoconf/nspr.m4)dnl -builtin(include, ../../build/autoconf/nspr-build.m4)dnl builtin(include, ../../build/autoconf/codeset.m4)dnl builtin(include, ../../build/autoconf/altoptions.m4)dnl builtin(include, ../../build/autoconf/mozprog.m4)dnl diff --git a/js/src/configure.in b/js/src/configure.in index 9ac8afc9138..98595d1e344 100644 --- a/js/src/configure.in +++ b/js/src/configure.in @@ -112,7 +112,7 @@ if test "$_conflict_files"; then exit 1 break fi -MOZ_BUILD_ROOT=`pwd -W 2>/dev/null || pwd` +MOZ_BUILD_ROOT=`pwd` dnl Choose where to put the 'dist' directory. dnl ============================================================== @@ -171,7 +171,6 @@ if test "$JS_STANDALONE" = no; then JS_STANDALONE= else JS_STANDALONE=1 - LIBXUL_DIST="$MOZ_BUILD_ROOT/dist" AC_DEFINE(JS_STANDALONE) fi AC_SUBST(JS_STANDALONE) @@ -1722,6 +1721,12 @@ ia64*-hpux*) no_x=yes AC_DEFINE(NO_X11) + case "$host" in + *-mingw*) + MOZ_BUILD_ROOT=`cd $MOZ_BUILD_ROOT && pwd -W` + ;; + esac + case "$host" in *-mingw*) if test -z "$MOZ_TOOLS"; then @@ -2753,6 +2758,34 @@ dnl = dnl ======================================================== MOZ_ARG_HEADER(External Packages) +dnl ======================================================== +dnl = Find the right NSPR to use. +dnl ======================================================== +MOZ_ARG_WITH_BOOL(system-nspr, +[ --with-system-nspr Use an NSPR that is already built and installed. + Use the 'nspr-config' script in the current path, + or look for the script in the directories given with + --with-nspr-exec-prefix or --with-nspr-prefix. + (Those flags are only checked if you specify + --with-system-nspr.)], + _USE_SYSTEM_NSPR=1 ) + +MOZ_ARG_WITH_STRING(nspr-cflags, +[ --with-nspr-cflags=FLAGS + Pass FLAGS to CC when building code that uses NSPR. + Use this when there's no accurate nspr-config + script available. This is the case when building + SpiderMonkey as part of the Mozilla tree: the + top-level configure script computes NSPR flags + that accomodate the quirks of that environment.], + NSPR_CFLAGS=$withval) +MOZ_ARG_WITH_STRING(nspr-libs, +[ --with-nspr-libs=LIBS Pass LIBS to LD when linking code that uses NSPR. + See --with-nspr-cflags for more details.], + NSPR_LIBS=$withval) +AC_SUBST(NSPR_CFLAGS) +AC_SUBST(NSPR_LIBS) + JS_THREADSAFE=1 MOZ_ARG_DISABLE_BOOL(threadsafe, [ --disable-threadsafe Disable support for multiple threads.], @@ -2764,7 +2797,64 @@ fi JS_THREADSAFE_CONFIGURED=$JS_THREADSAFE AC_SUBST(JS_THREADSAFE_CONFIGURED) -MOZ_CONFIG_NSPR(js) +if test "$_USE_SYSTEM_NSPR" || (test "$NSPR_CFLAGS" -o "$NSPR_LIBS"); then + _HAS_NSPR=1 +fi + +case "$target" in + *linux*|*darwin*|*dragonfly*|*freebsd*|*netbsd*|*openbsd*) + if test -z "$_HAS_NSPR" && test "$JS_THREADSAFE"; then + JS_POSIX_NSPR_DEFAULT=1 + fi + ;; +esac + +MOZ_ARG_ENABLE_BOOL(posix-nspr-emulation, +[ --enable-posix-nspr-emulation + Enable emulation of NSPR for POSIX systems], + JS_POSIX_NSPR=1, + JS_POSIX_NSPR=, + JS_POSIX_NSPR="$JS_POSIX_NSPR_DEFAULT" ) +if test -n "$JS_POSIX_NSPR"; then + AC_DEFINE(JS_POSIX_NSPR) +fi + +AC_SUBST(JS_POSIX_NSPR) + +dnl Pass either --with-system-nspr or (--with-nspr-cflags and +dnl --with-nspr-libs), but not both. +if test "$_USE_SYSTEM_NSPR" && (test "$NSPR_CFLAGS" -o "$NSPR_LIBS"); then + AC_MSG_ERROR([--with-system-nspr and --with-nspr-libs/cflags are mutually exclusive. +See 'configure --help'.]) +fi + +dnl Can't use --enable-posix-nspr-emulation if compiling with NSPR. +if test "$_HAS_NSPR" && test "$JS_POSIX_NSPR"; then + AC_MSG_ERROR([--enable-posix-nspr-emulation is mututally exclusive with --with-system-nspr +and --with-nspr-libs/cflags. See 'configure --help'.]) +fi + +if test -n "$_USE_SYSTEM_NSPR"; then + MOZ_NATIVE_NSPR= + AM_PATH_NSPR($NSPR_MINVER, [MOZ_NATIVE_NSPR=1], [AC_MSG_ERROR([your don't have NSPR installed or your version is too old])]) +fi + +NSPR_PKGCONF_CHECK="nspr" +if test -n "$MOZ_NATIVE_NSPR"; then + # piggy back on $MOZ_NATIVE_NSPR to set a variable for the nspr check for js.pc + NSPR_PKGCONF_CHECK="nspr >= $NSPR_MINVER" + + _SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS $NSPR_CFLAGS" + AC_TRY_COMPILE([#include "prlog.h"], + [#ifndef PR_STATIC_ASSERT + #error PR_STATIC_ASSERT not defined + #endif], + [MOZ_NATIVE_NSPR=1], + AC_MSG_ERROR([system NSPR does not support PR_STATIC_ASSERT])) + CFLAGS=$_SAVE_CFLAGS +fi +AC_SUBST(NSPR_PKGCONF_CHECK) dnl ======================================================== dnl system zlib Support @@ -3951,6 +4041,7 @@ AC_SUBST(ac_configure_args) AC_SUBST(TOOLCHAIN_PREFIX) + if test -n "$JS_STANDALONE"; then MOZ_APP_NAME="mozjs" MOZ_APP_VERSION="$MOZILLA_SYMBOLVERSION" @@ -3968,9 +4059,6 @@ AC_SUBST(JS_LIBRARY_NAME) AC_SUBST(JS_CONFIG_MOZ_JS_LIBS) AC_SUBST(JS_CONFIG_LIBS) -if test -n "$MOZ_BUILD_NSPR"; then - MOZ_SUBCONFIGURE_NSPR() -fi MOZ_SUBCONFIGURE_FFI() dnl Spit out some output diff --git a/moz.build b/moz.build index 93042be6a28..8380145017f 100644 --- a/moz.build +++ b/moz.build @@ -39,15 +39,16 @@ if not CONFIG['LIBXUL_SDK']: if not CONFIG['JS_STANDALONE']: add_tier_dir('precompile', 'xpcom/xpidl') -if CONFIG['COMPILE_ENVIRONMENT'] and not CONFIG['LIBXUL_SDK']: - if CONFIG['MOZ_BUILD_NSPR']: - add_tier_dir('nspr', 'config/nspr') + if CONFIG['COMPILE_ENVIRONMENT'] and not CONFIG['LIBXUL_SDK']: + if not CONFIG['MOZ_NATIVE_NSPR']: + add_tier_dir('nspr', 'config/nspr') - if not CONFIG['JS_STANDALONE']: add_tier_dir('external', 'config/external') + if not CONFIG['MOZ_NATIVE_NSS']: add_tier_dir('nss', 'security/build') +if CONFIG['COMPILE_ENVIRONMENT'] and not CONFIG['LIBXUL_SDK']: if CONFIG['BUILD_CTYPES'] and not CONFIG['MOZ_NATIVE_FFI']: add_tier_dir('js', ['js/src/ctypes/libffi'], static=True) add_tier_dir('js', ['intl/icu'], static=True)