From d313788ccc0ae38d4d9e9efff28f99d345741521 Mon Sep 17 00:00:00 2001 From: Steve Fink Date: Tue, 25 Feb 2014 14:15:16 -0800 Subject: [PATCH] Bug 975011 - Allow js/src/configure to invoke the in-tree NSPR configure. r=glandium --- aclocal.m4 | 1 + build/autoconf/nspr-build.m4 | 269 +++++++++++++++++++++++++++++++++++ configure.in | 116 ++------------- js/src/aclocal.m4 | 1 + js/src/configure.in | 100 +------------ moz.build | 9 +- 6 files changed, 291 insertions(+), 205 deletions(-) create mode 100644 build/autoconf/nspr-build.m4 diff --git a/aclocal.m4 b/aclocal.m4 index 1c7296eea46..e5fdb4a0aa8 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -11,6 +11,7 @@ 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 new file mode 100644 index 00000000000..631f69e8f03 --- /dev/null +++ b/build/autoconf/nspr-build.m4 @@ -0,0 +1,269 @@ +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 262eadc2d60..423840ed753 100644 --- a/configure.in +++ b/configure.in @@ -53,6 +53,7 @@ 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 @@ -131,7 +132,7 @@ EOF exit 1 break fi -MOZ_BUILD_ROOT=`pwd` +MOZ_BUILD_ROOT=`pwd -W 2>/dev/null || pwd` MOZ_PYTHON @@ -2200,7 +2201,6 @@ 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,47 +3443,7 @@ MOZ_ARG_WITH_BOOL(system-libxul, [ --with-system-libxul Use system installed libxul SDK], SYSTEM_LIBXUL=1) -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 +MOZ_CONFIG_NSPR() dnl set GRE_MILESTONE dnl ======================================================== @@ -9176,70 +9136,10 @@ if test -n "$_WRAP_MALLOC"; then _SUBDIR_CONFIG_ARGS="`echo $_SUBDIR_CONFIG_ARGS | sed -e 's/--enable-wrap-malloc *//'`" fi -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" +MOZ_SUBCONFIGURE_NSPR() 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 @@ -9262,10 +9162,14 @@ 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 @@ -9288,7 +9192,7 @@ fi if test -z "$JSGC_GENERATIONAL" ; then ac_configure_args="$ac_configure_args --disable-gcgenerational" fi -if test -z "$MOZ_NATIVE_NSPR"; then +if test -n "$NSPR_CFLAGS" -o -n "$NSPR_LIBS"; 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 348d6d4c17b..8560b0340a5 100644 --- a/js/src/aclocal.m4 +++ b/js/src/aclocal.m4 @@ -12,6 +12,7 @@ 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 98595d1e344..9ac8afc9138 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` +MOZ_BUILD_ROOT=`pwd -W 2>/dev/null || pwd` dnl Choose where to put the 'dist' directory. dnl ============================================================== @@ -171,6 +171,7 @@ 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) @@ -1721,12 +1722,6 @@ 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 @@ -2758,34 +2753,6 @@ 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.], @@ -2797,64 +2764,7 @@ fi JS_THREADSAFE_CONFIGURED=$JS_THREADSAFE AC_SUBST(JS_THREADSAFE_CONFIGURED) -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) +MOZ_CONFIG_NSPR(js) dnl ======================================================== dnl system zlib Support @@ -4041,7 +3951,6 @@ AC_SUBST(ac_configure_args) AC_SUBST(TOOLCHAIN_PREFIX) - if test -n "$JS_STANDALONE"; then MOZ_APP_NAME="mozjs" MOZ_APP_VERSION="$MOZILLA_SYMBOLVERSION" @@ -4059,6 +3968,9 @@ 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 8380145017f..93042be6a28 100644 --- a/moz.build +++ b/moz.build @@ -39,16 +39,15 @@ 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 not CONFIG['MOZ_NATIVE_NSPR']: - add_tier_dir('nspr', 'config/nspr') +if CONFIG['COMPILE_ENVIRONMENT'] and not CONFIG['LIBXUL_SDK']: + if CONFIG['MOZ_BUILD_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)