| 1 | #!/bin/sh |
| 2 | |
| 3 | # Copyright (C) 2003, 2006, 2008, 2009, 2010, 2011, 2012 Free Software Foundation |
| 4 | # |
| 5 | # This file is part of GUILE. |
| 6 | # |
| 7 | # This script is free software; you can redistribute it and/or modify |
| 8 | # it under the terms of the GNU Lesser General Public License as |
| 9 | # published by the Free Software Foundation; either version 3 of the |
| 10 | # License, or (at your option) any later version. |
| 11 | # |
| 12 | # This library is distributed in the hope that it will be useful, |
| 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 15 | # Lesser General Public License for more details. |
| 16 | # |
| 17 | # You should have received a copy of the GNU Lesser General Public |
| 18 | # License along with this library; if not, write to the Free Software |
| 19 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
| 20 | # 02110-1301 USA |
| 21 | |
| 22 | # NOTE: If you update this file, please update uninstalled.in as |
| 23 | # well, if appropriate. |
| 24 | |
| 25 | # Usage: uninstalled-env [ARGS] |
| 26 | |
| 27 | # This script arranges for the environment to support running Guile |
| 28 | # from the build tree. The following env vars are modified (but not |
| 29 | # clobbered): GUILE_LOAD_PATH, LTDL_LIBRARY_PATH, and PATH. |
| 30 | |
| 31 | # Example: uninstalled-env guile -c '(display "hello\n")' |
| 32 | # Example: ../../uninstalled-env ./guile-test-foo |
| 33 | |
| 34 | # config |
| 35 | subdirs_with_ltlibs="guile-readline libguile" # maintain me |
| 36 | |
| 37 | # env (set by configure) |
| 38 | top_srcdir="@top_srcdir_absolute@" |
| 39 | top_builddir="@top_builddir_absolute@" |
| 40 | |
| 41 | [ x"$top_srcdir" = x -o ! -d "$top_srcdir" -o \ |
| 42 | x"$top_builddir" = x -o ! -d "$top_builddir" ] && { |
| 43 | echo $0: bad environment |
| 44 | echo top_srcdir=$top_srcdir |
| 45 | echo top_builddir=$top_builddir |
| 46 | exit 1 |
| 47 | } |
| 48 | |
| 49 | # When cross-compiling, let $GUILE_FOR_BUILD use its own .go files since |
| 50 | # the ones that are being built may be incompatible ($GUILE_FOR_BUILD is |
| 51 | # typically used to run `guild compile --target=$host'.) Likewise, |
| 52 | # $GUILE_FOR_BUILD must use its own source files when booting; for |
| 53 | # instance, $srcdir/module/ice-9/boot-9.scm must not be in its search |
| 54 | # path, because it would then end up using its C evaluator to run the |
| 55 | # compiler. |
| 56 | if test "@cross_compiling@" = "no" |
| 57 | then |
| 58 | if [ x"$GUILE_LOAD_PATH" = x ] |
| 59 | then |
| 60 | GUILE_LOAD_PATH="${top_srcdir}/module:${top_srcdir}/guile-readline" |
| 61 | if test "${top_srcdir}" != "${top_builddir}"; then |
| 62 | GUILE_LOAD_PATH="$GUILE_LOAD_PATH:${top_builddir}/module:${top_builddir}/guile-readline" |
| 63 | fi |
| 64 | else |
| 65 | for d in "/module" "/guile-readline" |
| 66 | do |
| 67 | # This hair prevents double inclusion. |
| 68 | # The ":" prevents prefix aliasing. |
| 69 | case x"$GUILE_LOAD_PATH" in |
| 70 | x*${top_srcdir}${d}:*) ;; |
| 71 | x*${top_srcdir}${d}) ;; |
| 72 | *) GUILE_LOAD_PATH="${top_srcdir}${d}:$GUILE_LOAD_PATH" ;; |
| 73 | esac |
| 74 | case x"$GUILE_LOAD_PATH" in |
| 75 | x*${top_builddir}${d}:*) ;; |
| 76 | x*${top_builddir}${d}) ;; |
| 77 | *) GUILE_LOAD_PATH="${top_builddir}${d}:$GUILE_LOAD_PATH" ;; |
| 78 | esac |
| 79 | done |
| 80 | fi |
| 81 | export GUILE_LOAD_PATH |
| 82 | |
| 83 | if test "x$GUILE_LOAD_COMPILED_PATH" = "x" |
| 84 | then |
| 85 | GUILE_LOAD_COMPILED_PATH="${top_builddir}/module:${top_builddir}/guile-readline" |
| 86 | else |
| 87 | for d in "/module" "/guile-readline" |
| 88 | do |
| 89 | # This hair prevents double inclusion. |
| 90 | # The ":" prevents prefix aliasing. |
| 91 | case x"$GUILE_LOAD_COMPILED_PATH" in |
| 92 | x*${top_builddir}${d}:*) ;; |
| 93 | x*${top_builddir}${d}) ;; |
| 94 | *) GUILE_LOAD_COMPILED_PATH="${top_builddir}${d}:$GUILE_LOAD_COMPILED_PATH" ;; |
| 95 | esac |
| 96 | done |
| 97 | fi |
| 98 | export GUILE_LOAD_COMPILED_PATH |
| 99 | |
| 100 | # Don't look in installed dirs for guile modules |
| 101 | if ( env | grep -v '^GUILE_SYSTEM_PATH=' > /dev/null ); then |
| 102 | GUILE_SYSTEM_PATH= |
| 103 | export GUILE_SYSTEM_PATH |
| 104 | fi |
| 105 | # Don't look in installed dirs for compiled guile modules |
| 106 | if ( env | grep -v '^GUILE_SYSTEM_COMPILED_PATH=' > /dev/null ); then |
| 107 | GUILE_SYSTEM_COMPILED_PATH= |
| 108 | export GUILE_SYSTEM_COMPILED_PATH |
| 109 | fi |
| 110 | # Don't look in installed dirs for dlopen-able modules |
| 111 | if ( env | grep -v '^GUILE_SYSTEM_EXTENSIONS_PATH=' > /dev/null ); then |
| 112 | GUILE_SYSTEM_EXTENSIONS_PATH= |
| 113 | export GUILE_SYSTEM_EXTENSIONS_PATH |
| 114 | fi |
| 115 | fi |
| 116 | |
| 117 | # handle LTDL_LIBRARY_PATH (no clobber) |
| 118 | for dir in $subdirs_with_ltlibs ; do |
| 119 | if test -z "$LTDL_LIBRARY_PATH"; then |
| 120 | LTDL_LIBRARY_PATH="${top_builddir}/${dir}" |
| 121 | else |
| 122 | LTDL_LIBRARY_PATH="${top_builddir}/${dir}:${LTDL_LIBRARY_PATH}" |
| 123 | fi |
| 124 | if test -z "$DYLD_LIBRARY_PATH"; then |
| 125 | DYLD_LIBRARY_PATH="${top_builddir}/${dir}/.libs" |
| 126 | else |
| 127 | DYLD_LIBRARY_PATH="${top_builddir}/${dir}/.libs:${DYLD_LIBRARY_PATH}" |
| 128 | fi |
| 129 | done |
| 130 | export LTDL_LIBRARY_PATH |
| 131 | export DYLD_LIBRARY_PATH |
| 132 | |
| 133 | if [ x"$PKG_CONFIG_PATH" = x ] |
| 134 | then |
| 135 | PKG_CONFIG_PATH="${top_builddir}/meta" |
| 136 | else |
| 137 | PKG_CONFIG_PATH="${top_builddir}/meta:$PKG_CONFIG_PATH" |
| 138 | fi |
| 139 | export PKG_CONFIG_PATH |
| 140 | |
| 141 | # handle PATH (no clobber) |
| 142 | PATH="${top_builddir}/libguile:${PATH}" |
| 143 | PATH="${top_srcdir}/meta:${PATH}" |
| 144 | if test "x${top_srcdir}" != "x${top_builddir}"; then |
| 145 | PATH="${top_builddir}/meta:${PATH}" |
| 146 | fi |
| 147 | export PATH |
| 148 | |
| 149 | # Define $GUILE, used by `guild'. |
| 150 | GUILE="${top_builddir}/meta/guile" |
| 151 | export GUILE |
| 152 | |
| 153 | exec "$@" |