gecko/js/src/js-config.in

112 lines
1.8 KiB
Plaintext
Raw Normal View History

Bug 97954: Allow SpiderMonkey to be built on its own, or as part of Mozilla. Give SpiderMonkey its own configure script and top-level Makefile. Adjust js/src/Makefile as appropriate for life as a stand-alone makefile, instead of a 'make export; make libs'-style Mozilla tier makefile. Have the configure script accept '--with-nspr-cflags' and '--with-nspr-libs' options for using an in-tree NSPR. Also accept '--with-system-nspr', '--with-nspr-prefix', and '--with-nspr-exec-prefix' flags for using an installed NSPR. Default to --disable-jemalloc, assuming we don't have that part of the tree available; have the top-level configure script pass --enable-jemalloc as needed. Since we no longer have an export phase to copy header files into dist/include/js before we build the library, we need to be able to find nanojit.h in the nanojit directory; fix references in jsbuiltins.h and jstracer.cpp. Give SpiderMonkey it its own copies of many of the files from ./config and ./build. These are all exact copies, except as follows: . js/src/config/Makefile.in: js/src only has a subset of js/src/config, and thus a subset of the makefile targets. . js/src/config/autoconf.mk.in: js/src/configure.in has its own make variables to set, not set by the top-level configure script, so it needs a custom automake.mk template. . js/src/config/make-system-wrappers.pl: a copy from nsprpub/config, so that we can build without having an NSPR source tree handy. Invoke js/src/configure from ./configure, passing the values computed for NSPR_CFLAGS and NSPR_LIBS by the top-level configure script. Treat js/src as a static directory of the js tier, and create a new config/js (just a Makefile) to be the js tier's non-static directory. Let js/src/configure generate SpiderMonkey's makefiles, not ./configure. Generate a 'js-config' script, which clients can call to find the CFLAGS and LIBS values necessary to compile and link against an installed SpiderMonkey library. Don't include the js-config script in Macintosh packages. Teach client.mk how to rebuild js/src/configure. Tell Mercurial to ignore files generated by autoconf in js/src. Further work: . Right now, callers must define JS_THREADSAFE when #including jsapi.h. This is fixed in a subsequent patch. . js/src/configure is a trimmed copy of ./configure. It could be trimmed more. --HG-- rename : build/autoconf/acoutput-fast.pl => js/src/build/autoconf/acoutput-fast.pl rename : build/autoconf/altoptions.m4 => js/src/build/autoconf/altoptions.m4 rename : build/autoconf/config.guess => js/src/build/autoconf/config.guess rename : build/autoconf/config.sub => js/src/build/autoconf/config.sub rename : build/autoconf/glib.m4 => js/src/build/autoconf/glib.m4 rename : build/autoconf/install-sh => js/src/build/autoconf/install-sh rename : build/autoconf/make-makefile => js/src/build/autoconf/make-makefile rename : build/autoconf/match-dir.sh => js/src/build/autoconf/match-dir.sh rename : build/autoconf/nspr.m4 => js/src/build/autoconf/nspr.m4 rename : build/autoconf/pkg.m4 => js/src/build/autoconf/pkg.m4 rename : build/autoconf/update-makefile.sh => js/src/build/autoconf/update-makefile.sh rename : build/cygwin-wrapper => js/src/build/cygwin-wrapper rename : build/hcc => js/src/build/hcc rename : build/hcpp => js/src/build/hcpp rename : build/unix/mddepend.pl => js/src/build/unix/mddepend.pl rename : build/unix/uniq.pl => js/src/build/unix/uniq.pl rename : config/Makefile.in => js/src/config/Makefile.in rename : config/Moz/Milestone.pm => js/src/config/Moz/Milestone.pm rename : config/autoconf.mk.in => js/src/config/autoconf.mk.in rename : config/config.mk => js/src/config/config.mk rename : config/elf-dynstr-gc.c => js/src/config/elf-dynstr-gc.c rename : config/fastcwd.pl => js/src/config/fastcwd.pl rename : config/gcc_hidden.h => js/src/config/gcc_hidden.h rename : config/insure.mk => js/src/config/insure.mk rename : nsprpub/config/make-system-wrappers.pl => js/src/config/make-system-wrappers.pl rename : config/milestone.pl => js/src/config/milestone.pl rename : config/milestone.txt => js/src/config/milestone.txt rename : config/mkdepend/Makefile.in => js/src/config/mkdepend/Makefile.in rename : config/mkdepend/cppsetup.c => js/src/config/mkdepend/cppsetup.c rename : config/mkdepend/def.h => js/src/config/mkdepend/def.h rename : config/mkdepend/ifparser.c => js/src/config/mkdepend/ifparser.c rename : config/mkdepend/ifparser.h => js/src/config/mkdepend/ifparser.h rename : config/mkdepend/imakemdep.h => js/src/config/mkdepend/imakemdep.h rename : config/mkdepend/include.c => js/src/config/mkdepend/include.c rename : config/mkdepend/main.c => js/src/config/mkdepend/main.c rename : config/mkdepend/mkdepend.man => js/src/config/mkdepend/mkdepend.man rename : config/mkdepend/parse.c => js/src/config/mkdepend/parse.c rename : config/mkdepend/pr.c => js/src/config/mkdepend/pr.c rename : config/nfspwd.pl => js/src/config/nfspwd.pl rename : config/nsinstall.c => js/src/config/nsinstall.c rename : config/nsinstall.py => js/src/config/nsinstall.py rename : config/pathsub.c => js/src/config/pathsub.c rename : config/pathsub.h => js/src/config/pathsub.h rename : config/preprocessor.pl => js/src/config/preprocessor.pl rename : config/revdepth-nt.pl => js/src/config/revdepth-nt.pl rename : config/revdepth.pl => js/src/config/revdepth.pl rename : config/rules.mk => js/src/config/rules.mk rename : config/system-headers => js/src/config/system-headers rename : config/version.mk => js/src/config/version.mk rename : config/version_win.pl => js/src/config/version_win.pl rename : configure.in => js/src/configure.in
2008-10-29 08:29:22 -07:00
#!/bin/sh
prefix='@prefix@'
mozilla_version='@MOZILLA_VERSION@'
LIBRARY_NAME='@LIBRARY_NAME@'
NSPR_CFLAGS='@NSPR_CFLAGS@'
JS_CONFIG_LIBS='@JS_CONFIG_LIBS@'
MOZ_JS_LIBS='@MOZ_JS_LIBS@'
usage()
{
cat <<EOF
Usage: js-config [OPTIONS]
Options:
[--prefix[=DIR]]
[--exec-prefix[=DIR]]
[--includedir[=DIR]]
[--libdir[=DIR]]
[--version]
[--libs]
[--cflags]
[--lib-filenames]
EOF
exit $1
}
if test $# -eq 0; then
usage 1 1>&2
fi
while test $# -gt 0; do
case "$1" in
-*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
*) optarg= ;;
esac
case $1 in
--prefix=*)
prefix=$optarg
;;
--prefix)
echo_prefix=yes
;;
--exec-prefix=*)
exec_prefix=$optarg
;;
--exec-prefix)
echo_exec_prefix=yes
;;
--includedir=*)
includedir=$optarg
;;
--includedir)
echo_includedir=yes
;;
--libdir=*)
libdir=$optarg
;;
--libdir)
echo_libdir=yes
;;
--version)
echo "$mozilla_version"
;;
--cflags)
echo_cflags=yes
;;
--libs)
echo_libs=yes
;;
*)
usage 1 1>&2
;;
esac
shift
done
# Set variables that may be dependent upon other variables
if test -z "$exec_prefix"; then
exec_prefix=@exec_prefix@
fi
if test -z "$includedir"; then
includedir=@includedir@
fi
if test -z "$libdir"; then
libdir=@libdir@
fi
if test "$echo_prefix" = "yes"; then
echo $prefix
fi
if test "$echo_exec_prefix" = "yes"; then
echo $exec_prefix
fi
if test "$echo_includedir" = "yes"; then
echo $includedir
fi
if test "$echo_libdir" = "yes"; then
echo $libdir
fi
if test "$echo_cflags" = "yes"; then
echo "-I$includedir/js $NSPR_CFLAGS"
fi
if test "$echo_libs" = "yes"; then
echo "$MOZ_JS_LIBS $JS_CONFIG_LIBS"
fi