diff --git a/devel/build/pre-inst-guile.text b/devel/build/pre-inst-guile.text new file mode 100644 index 000000000..5e9a24b37 --- /dev/null +++ b/devel/build/pre-inst-guile.text @@ -0,0 +1,47 @@ +THEORY + + The pre-installed guile interpreter can be used if has access to + the proper shared libraries and scheme modules, which can be + arranged by tweaking GUILE_LOAD_PATH and LTDL_LIBRARY_PATH env + vars, respectively. + + +GENERAL PRACTICE + + To invoke the guile interpreter before installing it (and its + support files), call ${top_srcdir}/pre-inst-guile w/ first arg + ${top_builddir}, where you would normally call guile. + + Similarly, for scripts/* (normally found by guile-tools), set + env var GUILE to the above combination. + + See commentary in ${top_srcdir}/pre-inst-guile for more info. + + +SPECIFIC PRACTICE + + Include the following line in any Makefile.am with rules that + need to call the pre-installed guile interpreter: + + include $(top_srcdir)/pre-inst-guile.am + + This causes Automake to include a makefile fragment that defines + two vars: `preinstguile' and `preinstguiletool'. The following + examples show how these vars are used: + + display-sum5: + $(preinstguile) -c '(display (+ 1 2 3 4 5))' + + display-deps-dotty: + $(preinstguiletool)/use2dot *.scm + + Note the particular syntax of `preinstguiletool' usage. + + +KNOWN USAGE + + check-guile.in + doc/ref/Makefile.am + libguile/Makefile.am + ice-9/Makefile.am + scripts/Makefile.am diff --git a/pre-inst-guile b/pre-inst-guile new file mode 100755 index 000000000..6f684e5bb --- /dev/null +++ b/pre-inst-guile @@ -0,0 +1,84 @@ +#!/bin/sh + +# Copyright (C) 2002 Free Software Foundation +# +# This file is part of GUILE. +# +# GUILE is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2, or +# (at your option) any later version. +# +# GUILE is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with GUILE; see the file COPYING. If not, write +# to the Free Software Foundation, Inc., 59 Temple Place, Suite +# 330, Boston, MA 02111-1307 USA + +# Commentary: + +# Usage: pre-inst-guile TOP-BUILDDIR [ARGS] +# +# This script arranges for the environment to support, and eventaully execs, +# the uninstalled binary guile executable located somewhere under libguile/, +# passing ARGS to it. In the process, env var GUILE is clobbered, and the +# following env vars are modified (but not clobbered): +# GUILE_LOAD_PATH +# LTDL_LOAD_PATH +# +# WARNING: This script is *NOT* a "drop in" replacement for $bindir/guile; +# it is intended only for use in building/testing. + +# Code: + +subdirs_with_ltlibs="srfi guile-readline" # maintain me + +# determine absolute top_srcdir +[ x"$top_srcdir" = x ] && case $0 in */*) top_srcdir=`dirname $0` ;; esac +if [ x"$top_srcdir" = x ] ; then + echo $0: could not determine top_srcdir + exit 1 +fi +top_srcdir=`(cd $top_srcdir ; pwd)` + +# determine absolute top_builddir +if [ x"$1" = x ] ; then + echo $0: could not determine top_builddir + exit 1 +fi +top_builddir=`(cd $1 ; pwd)` +shift + +# handle GUILE_LOAD_PATH (no clobber) +if [ x"$GUILE_LOAD_PATH" = x ] ; then + GUILE_LOAD_PATH="${top_srcdir}" +else + case "$GUILE_LOAD_PATH" in *${top_srcdir}*) ;; + *) GUILE_LOAD_PATH="${top_srcdir}:$GUILE_LOAD_PATH" ;; + esac +fi +export GUILE_LOAD_PATH + +# handle LTDL_LIBRARY_PATH (no clobber) +ltdl_prefix="" +for dir in $subdirs_with_ltlibs ; do + ltdl_prefix="${top_builddir}/${dir}:${ltdl_prefix}" +done +LTDL_LIBRARY_PATH="${ltdl_prefix}$LTDL_LIBRARY_PATH" +export LTDL_LIBRARY_PATH + +# set GUILE (clobber) +GUILE=${top_builddir}/libguile/guile +export GUILE + +# do it +exec $GUILE "$@" + +# never reached +exit 1 + +# pre-inst-guile ends here diff --git a/pre-inst-guile.am b/pre-inst-guile.am new file mode 100644 index 000000000..e69de29bb