| 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 ) |
| |
| 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"; 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. |
| 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 |
| 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"; then |
| NSPR_CFLAGS="-I${DIST}/include/nspr" |
| if test -n "$GNU_CC"; then |
| NSPR_LIBS="-L${DIST}/lib -lnspr${NSPR_VERSION} -lplc${NSPR_VERSION} -lplds${NSPR_VERSION}" |
| else |
| NSPR_LIBS="${DIST}/lib/nspr${NSPR_VERSION}.lib ${DIST}/lib/plc${NSPR_VERSION}.lib ${DIST}/lib/plds${NSPR_VERSION}.lib " |
| fi |
| fi |
| |
| AC_SUBST_LIST(NSPR_CFLAGS) |
| |
| 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 -n "$MOZ_USING_CCACHE"; then |
| # Avoid double prepending ccache by omitting --with-ccache in building NSPR. |
| ac_configure_args="`echo $ac_configure_args | sed -e 's/--with-ccache[[^ ]]*//'`" |
| fi |
| |
| 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_BUILD"; 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 $MOZ_FOLD_LIBS_FLAGS" |
| |
| AC_OUTPUT_SUBDIRS(nsprpub) |
| |
| # .. and restore them |
| CFLAGS="$_SAVE_CFLAGS" |
| CPPFLAGS="$_SAVE_CPPFLAGS" |
| LDFLAGS="$_SAVE_LDFLAGS" |
| |
| ac_configure_args="$_SUBDIR_CONFIG_ARGS" |
| fi |
| |
| ]) |