mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-02 10:00:54 +00:00
3ba206cdb7
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
112 lines
1.8 KiB
Bash
112 lines
1.8 KiB
Bash
#!/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
|