File: opentool.in

package info (click to toggle)
gnustep-make 2.8.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 3,300 kB
  • sloc: sh: 4,483; objc: 952; perl: 65; makefile: 35
file content (197 lines) | stat: -rw-r--r-- 5,823 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
#! /bin/sh
#
# @configure_input@
#
# Copyright (C) 1997 - 2007 Free Software Foundation, Inc.
#
# Author: Scott Predescu <ovidiu@net-community.com>
# Author: Ovidiu Predescu <ovidiu@net-community.com>
# Author: Nicola Pero <nicola.pero@meta-innovation.com>
# Date: 1997 - 2007
# 
# This file is part of the GNUstep Makefile Package.
#
# This library 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 3
# of the License, or (at your option) any later version.
# 
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.
# If not, write to the Free Software Foundation,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

# 'opentool' is obsolete.  You can invoke your tools directly, just
# put them in your PATH :-)

# Try to execute the GNUstep tool passed as argument. The tool is
# searched through the GNUstep directories if a complete or relative path name
# is not specified. The arguments passed after the tool name are passed
# unmodified to the tool.

if [ -z "$1" ]; then
  echo usage: `basename "$0"` [--library-combo=...] tool [arguments...]
  echo `basename "$0"` --help for help
  exit 1
fi

# Try to determine GNUSTEP_MAKEFILES to source GNUstep.sh
if [ -z "$GNUSTEP_CONFIG_FILE" ]; then
  GNUSTEP_CONFIG_FILE=@GNUSTEP_CONFIG_FILE@
fi

if [ -z "$GNUSTEP_USER_CONFIG_FILE" ]; then
  GNUSTEP_USER_CONFIG_FILE=@GNUSTEP_USER_CONFIG_FILE@
fi

if [ -f "$GNUSTEP_CONFIG_FILE" ]; then
  . "$GNUSTEP_CONFIG_FILE"
fi

GNUSTEP_HOME=~

if [ -n "$GNUSTEP_USER_CONFIG_FILE" ]; then
  case "$GNUSTEP_USER_CONFIG_FILE" in 
    /*) # An absolute path
        if [ -f "$GNUSTEP_USER_CONFIG_FILE" ]; then
          . "$GNUSTEP_USER_CONFIG_FILE"
        fi;;
     *) # Something else
        if [ -f "$GNUSTEP_HOME/$GNUSTEP_USER_CONFIG_FILE" ]; then
          . "$GNUSTEP_HOME/$GNUSTEP_USER_CONFIG_FILE"
        fi;;
  esac
fi

if [ -z "$GNUSTEP_MAKEFILES" ]; then
  GNUSTEP_MAKEFILES=@GNUSTEP_MAKEFILES@
fi
# OK, we now have GNUSTEP_MAKEFILES, source GNUstep.sh.

# Also, we'd like to get the GNUSTEP_*_TOOLS directories so we can
# search them, so tell GNUstep.sh to export all variabes.
GNUSTEP_SH_EXPORT_ALL_VARIABLES=yes
. $GNUSTEP_MAKEFILES/GNUstep.sh
unset GNUSTEP_SH_EXPORT_ALL_VARIABLES


if [ -z "$EXEEXT" ]; then
  EXEEXT=@EXEEXT@
fi

# traps the parameters
while true
do 
  case "$1" in
    --library-combo=*)
        tmp_makefiles="$GNUSTEP_MAKEFILES"
        . "$tmp_makefiles/GNUstep-reset.sh"
        LIBRARY_COMBO=`echo "$1" | sed 's/--library-combo=//'`
        . "$tmp_makefiles/GNUstep.sh"
        echo "Switched to library combo $LIBRARY_COMBO"
        shift
        ;;
    --help)
      echo usage: `basename "$0"` [--library-combo=...] tool [arguments...]
      echo
      echo tool is the complete or relative name of the tool executable
      echo without any extension, like defaults
      echo
      echo [arguments...] are the arguments to the tool.
      exit 0
      ;;
    *)
      break;;
  esac
done

tool="$1";
shift;

if [ -n "$EXEEXT" ]; then
  tool="$tool$EXEEXT"
fi

case "$tool" in
  /*)	# An absolute path.
  	full_toolname="$tool";;
  */*)	# A relative path
	tool_dir=`dirname "$tool"`; 
	tool_dir=`(cd "$tool_dir"; pwd)`; 
	tool_name=`basename "$tool"`;
	full_toolname="${tool_dir}/${tool_name}";;
  *)	# A path that should be searched into GNUstep tool paths

        # Search for a local tool

        # We used to scan all ./*/$(GNUSTEP_HOST_LDIR)/ directories,
        # but this facility was removed (GNUSTEP_HOST_LDIR is no
        # longer even defined in this file), now we perform a much
        # simpler search.

        # The really important one is looking into ./obj, anyway here
        # is the order in which we search local directories - 
        # First, we search in ./
        # Second, we search in ./obj
        # Third, we search in ./Tools/
        # Fourth, we search in ./Tools/obj
        for dir in . obj Tools Tools/obj; do
          # echo "$dir/$tool";
          if [ -x "$dir/$tool" ]; then
            full_toolname="$dir/$tool"
            # echo "Found: $dir/$tool";
            break;
          fi
        done

	if [ -z "$full_toolname" ]; then 
          
          # Local tool not found - Search for an installed one
          # we search in the order in:
          # GNUSTEP_USER_TOOLS
          # GNUSTEP_LOCAL_TOOLS
          # GNUSTEP_NETWORK_TOOLS
          # GNUSTEP_SYSTEM_TOOLS
	  #
	  # We look in the GNUSTEP_HOST_CPU-GNUSTEP_HOST_OS/LIBRARY_COMBO
	  # subdirectory first, then the GNUSTEP_HOST_CPU-GNUSTEP_HOST_OS
	  # subdirectory, then the top-level directory.
	  # (For flattened systems we skip the first two options.
	  #
          # TODO: Also search Admin Tools directories if appropriate
	  for dir in "$GNUSTEP_USER_TOOLS" "$GNUSTEP_LOCAL_TOOLS" "$GNUSTEP_NETWORK_TOOLS" "$GNUSTEP_SYSTEM_TOOLS" ; do
	    if [ "$GNUSTEP_IS_FLATTENED" = "no" ]; then
	      tmpgnudir="$dir/$GNUSTEP_HOST_CPU-$GNUSTEP_HOST_OS"
	      tmplibdir="$dir/$GNUSTEP_HOST_CPU-$GNUSTEP_HOST_OS/$LIBRARY_COMBO"
	      # echo "$tmplibdir/$tool";
	      if [ -x "$tmplibdir/$tool" ]; then
		# echo "Found: $tmplibdir/$tool";
		full_toolname="$tmplibdir/$tool"
		break;
	      fi
	      if [ -x "$tmpgnudir/$tool" ]; then
		# echo "Found: $tmpgnudir/$tool";
		full_toolname="$tmpgnudir/$tool"
		break;
	      fi
	    fi
	    # echo "$dir/$tool";
	    if [ -x "$dir/$tool" ]; then
	      # echo "Found: $dir/$tool";
	      full_toolname="$dir/$tool"
	      break;
	    fi
	    done
	    unset tmpgnudir
	    unset tmplibdir
	  fi
        ;;
esac

if [ -z "$full_toolname" ]; then
  echo "Can't find the required tool: $tool!"
  exit 1
fi

"$full_toolname" "$@"