Alexandre Julliard | 3536316 | 2002-05-22 21:32:49 +0000 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | # |
| 3 | # Wrapper script to run Wine and Winelib apps from inside the source tree |
| 4 | # |
| 5 | # Copyright (C) 2002 Alexandre Julliard |
| 6 | # |
| 7 | # This library is free software; you can redistribute it and/or |
| 8 | # modify it under the terms of the GNU Lesser General Public |
| 9 | # License as published by the Free Software Foundation; either |
| 10 | # version 2.1 of the 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 20 | # |
| 21 | |
| 22 | # first determine the directory that contains the app itself |
| 23 | |
| 24 | appdir="" |
| 25 | case "$0" in |
| 26 | */*) |
| 27 | # $0 contains a path, use it |
| 28 | appdir=`dirname "$0"` |
| 29 | ;; |
| 30 | *) |
| 31 | # no directory in $0, search in PATH |
| 32 | saved_ifs=$IFS |
| 33 | IFS=: |
| 34 | for d in $PATH |
| 35 | do |
| 36 | IFS=$saved_ifs |
| 37 | if [ -x "$d/$0" ] |
| 38 | then |
| 39 | appdir="$d" |
| 40 | break |
| 41 | fi |
| 42 | done |
| 43 | ;; |
| 44 | esac |
| 45 | |
| 46 | # now find the top-level directory of the source tree |
| 47 | |
| 48 | if [ -x "$appdir/server/wineserver" ] |
| 49 | then topdir="$appdir" |
| 50 | elif [ -x "$appdir/../server/wineserver" ] |
| 51 | then topdir="$appdir/.." |
| 52 | elif [ -x "$appdir/../../server/wineserver" ] |
| 53 | then topdir="$appdir/../.." |
| 54 | elif [ -x "$appdir/../../../server/wineserver" ] |
| 55 | then topdir="$appdir/../../.." |
| 56 | else |
| 57 | echo "$0: could not locate Wine source tree" |
| 58 | exit 1 |
| 59 | fi |
| 60 | |
| 61 | # setup the environment |
| 62 | |
| 63 | topdir=`cd "$topdir" && pwd` |
| 64 | |
| 65 | if [ -n "$LD_LIBRARY_PATH" ] |
| 66 | then |
Alexandre Julliard | e8dae9c | 2003-10-11 01:00:35 +0000 | [diff] [blame] | 67 | LD_LIBRARY_PATH="$topdir/libs:$LD_LIBRARY_PATH" |
Alexandre Julliard | 3536316 | 2002-05-22 21:32:49 +0000 | [diff] [blame] | 68 | else |
Alexandre Julliard | e8dae9c | 2003-10-11 01:00:35 +0000 | [diff] [blame] | 69 | LD_LIBRARY_PATH="$topdir/libs" |
Alexandre Julliard | 3536316 | 2002-05-22 21:32:49 +0000 | [diff] [blame] | 70 | fi |
Francois Gouget | 69e0d06 | 2004-02-02 23:02:57 +0000 | [diff] [blame] | 71 | if [ -n "$WINEDLLPATH" ] |
| 72 | then |
| 73 | WINEDLLPATH="$topdir/dlls:$topdir/programs:$WINEDLLPATH" |
| 74 | else |
| 75 | WINEDLLPATH="$topdir/dlls:$topdir/programs" |
| 76 | fi |
Alexandre Julliard | 3536316 | 2002-05-22 21:32:49 +0000 | [diff] [blame] | 77 | WINESERVER="$topdir/server/wineserver" |
Alexandre Julliard | 357c740 | 2003-11-06 01:17:56 +0000 | [diff] [blame] | 78 | WINELOADER="$topdir/loader/wine" |
Alexandre Julliard | 3536316 | 2002-05-22 21:32:49 +0000 | [diff] [blame] | 79 | export LD_LIBRARY_PATH WINEDLLPATH WINESERVER WINELOADER |
| 80 | |
Eric Pouech | 6a2ca01 | 2002-05-28 22:48:17 +0000 | [diff] [blame] | 81 | # any local settings ? |
| 82 | if [ -f "$topdir/.winewrapper" ] |
| 83 | then |
| 84 | . $topdir/.winewrapper |
| 85 | fi |
| 86 | |
Alexandre Julliard | 3536316 | 2002-05-22 21:32:49 +0000 | [diff] [blame] | 87 | # and run the application |
| 88 | |
| 89 | case "$0" in |
| 90 | wine|*/wine) |
| 91 | exec "$WINELOADER" "$@" |
| 92 | ;; |
| 93 | */*) |
| 94 | [ -f "$0.exe.so" ] && exec "$WINELOADER" "$0.exe.so" "$@" |
| 95 | echo "$0: cannot find corresponding application" |
| 96 | exit 1 |
| 97 | ;; |
| 98 | *) |
| 99 | [ -f "$appdir/$0.exe.so" ] && exec "$WINELOADER" "$appdir/$0.exe.so" "$@" |
| 100 | echo "$0: cannot find corresponding application" |
| 101 | exit 1 |
| 102 | ;; |
| 103 | esac |