Skip to content
Snippets Groups Projects
  • Jim Blandy's avatar
    3ba206cd
    Bug 97954: Allow SpiderMonkey to be built on its own, or as part of Mozilla. · 3ba206cd
    Jim Blandy authored
    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
    3ba206cd
    History
    Bug 97954: Allow SpiderMonkey to be built on its own, or as part of Mozilla.
    Jim Blandy authored
    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