OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [branches/] [newlib/] [newlib/] [install-sh] - Blame information for rev 39

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 39 lampret
#!/bin/sh
2
#
3
# install - install a program, script, or datafile
4
# This comes from X11R5 (mit/util/scripts/install.sh).
5
#
6
# Copyright 1991 by the Massachusetts Institute of Technology
7
#
8
# Permission to use, copy, modify, distribute, and sell this software and its
9
# documentation for any purpose is hereby granted without fee, provided that
10
# the above copyright notice appear in all copies and that both that
11
# copyright notice and this permission notice appear in supporting
12
# documentation, and that the name of M.I.T. not be used in advertising or
13
# publicity pertaining to distribution of the software without specific,
14
# written prior permission.  M.I.T. makes no representations about the
15
# suitability of this software for any purpose.  It is provided "as is"
16
# without express or implied warranty.
17
#
18
# Calling this script install-sh is preferred over install.sh, to prevent
19
# `make' implicit rules from creating a file called install from it
20
# when there is no Makefile.
21
#
22
# This script is compatible with the BSD install script, but was written
23
# from scratch.  It can only install one file at a time, a restriction
24
# shared with many OS's install programs.
25
 
26
 
27
# set DOITPROG to echo to test this script
28
 
29
# Don't use :- since 4.3BSD and earlier shells don't like it.
30
doit="${DOITPROG-}"
31
 
32
 
33
# put in absolute paths if you don't have them in your path; or use env. vars.
34
 
35
mvprog="${MVPROG-mv}"
36
cpprog="${CPPROG-cp}"
37
chmodprog="${CHMODPROG-chmod}"
38
chownprog="${CHOWNPROG-chown}"
39
chgrpprog="${CHGRPPROG-chgrp}"
40
stripprog="${STRIPPROG-strip}"
41
rmprog="${RMPROG-rm}"
42
mkdirprog="${MKDIRPROG-mkdir}"
43
 
44
transformbasename=""
45
transform_arg=""
46
instcmd="$mvprog"
47
chmodcmd="$chmodprog 0755"
48
chowncmd=""
49
chgrpcmd=""
50
stripcmd=""
51
rmcmd="$rmprog -f"
52
mvcmd="$mvprog"
53
src=""
54
dst=""
55
dir_arg=""
56
# CYGNUS LOCAL: exeext variable
57
exeext=""
58
# END CYGNUS LOCAL
59
 
60
while [ x"$1" != x ]; do
61
    case $1 in
62
        -c) instcmd="$cpprog"
63
            shift
64
            continue;;
65
 
66
        -d) dir_arg=true
67
            shift
68
            continue;;
69
 
70
        -m) chmodcmd="$chmodprog $2"
71
            shift
72
            shift
73
            continue;;
74
 
75
        -o) chowncmd="$chownprog $2"
76
            shift
77
            shift
78
            continue;;
79
 
80
        -g) chgrpcmd="$chgrpprog $2"
81
            shift
82
            shift
83
            continue;;
84
 
85
        -s) stripcmd="$stripprog"
86
            shift
87
            continue;;
88
 
89
        -t=*) transformarg=`echo $1 | sed 's/-t=//'`
90
            shift
91
            continue;;
92
 
93
        -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
94
            shift
95
            continue;;
96
 
97
        # CYGNUS LOCAL: -x option
98
        -x=*) exeext=`echo $1 | sed 's/-x=//'`
99
            shift
100
            continue;;
101
 
102
        -x) exeext=".exe"
103
            shift
104
            continue;;
105
        # END CYGNUS LOCAL
106
 
107
        *)  if [ x"$src" = x ]
108
            then
109
                src=$1
110
            else
111
                # this colon is to work around a 386BSD /bin/sh bug
112
                :
113
                dst=$1
114
            fi
115
            shift
116
            continue;;
117
    esac
118
done
119
 
120
if [ x"$src" = x ]
121
then
122
        echo "install:  no input file specified"
123
        exit 1
124
else
125
        true
126
fi
127
 
128
if [ x"$dir_arg" != x ]; then
129
        dst=$src
130
        src=""
131
 
132
        if [ -d $dst ]; then
133
                instcmd=:
134
                chmodcmd=""
135
        else
136
                instcmd=mkdir
137
        fi
138
else
139
 
140
# CYGNUS LOCAL noer
141
# Win32-based gcc automatically appends .exe to produced executables,
142
# whether asked for or not.  This breaks installs.  The following
143
# changes the value of $src to $src.exe if $src is missing
144
 
145
        if [ -f $src ]
146
        then
147
                true
148
        elif [ -f $src.exe ]
149
        then
150
                echo "install:  $src does not exist, trying with .exe appended"
151
                src="$src".exe
152
        fi
153
 
154
# end CYGNUS LOCAL noer
155
 
156
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
157
# might cause directories to be created, which would be especially bad
158
# if $src (and thus $dsttmp) contains '*'.
159
 
160
        if [ -f $src -o -d $src ]
161
        then
162
                true
163
        else
164
                echo "install:  $src does not exist"
165
                exit 1
166
        fi
167
 
168
        if [ x"$dst" = x ]
169
        then
170
                echo "install:  no destination specified"
171
                exit 1
172
        else
173
                true
174
        fi
175
 
176
# If destination is a directory, append the input filename; if your system
177
# does not like double slashes in filenames, you may need to add some logic
178
 
179
        if [ -d $dst ]
180
        then
181
                dst="$dst"/`basename $src`
182
        else
183
                true
184
        fi
185
 
186
        # CYGNUS LOCAL: Use exeext
187
        case "`basename $dst`" in
188
            *.*) ;;
189
            *) dst="$dst$exeext" ;;
190
        esac
191
        # END CYGNUS LOCAL
192
fi
193
 
194
## this sed command emulates the dirname command
195
dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
196
 
197
# Make sure that the destination directory exists.
198
#  this part is taken from Noah Friedman's mkinstalldirs script
199
 
200
# Skip lots of stat calls in the usual case.
201
if [ ! -d "$dstdir" ]; then
202
defaultIFS='
203
'
204
IFS="${IFS-${defaultIFS}}"
205
 
206
oIFS="${IFS}"
207
# Some sh's can't handle IFS=/ for some reason.
208
IFS='%'
209
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
210
IFS="${oIFS}"
211
 
212
pathcomp=''
213
 
214
while [ $# -ne 0 ] ; do
215
        pathcomp="${pathcomp}${1}"
216
        shift
217
 
218
        if [ ! -d "${pathcomp}" ] ;
219
        then
220
                $mkdirprog "${pathcomp}"
221
        else
222
                true
223
        fi
224
 
225
        pathcomp="${pathcomp}/"
226
done
227
fi
228
 
229
if [ x"$dir_arg" != x ]
230
then
231
        $doit $instcmd $dst &&
232
 
233
        if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
234
        if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
235
        if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
236
        if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
237
else
238
 
239
# If we're going to rename the final executable, determine the name now.
240
 
241
        if [ x"$transformarg" = x ]
242
        then
243
                dstfile=`basename $dst`
244
        else
245
                dstfile=`basename $dst $transformbasename |
246
                        sed $transformarg`$transformbasename
247
        fi
248
 
249
# don't allow the sed command to completely eliminate the filename
250
 
251
        if [ x"$dstfile" = x ]
252
        then
253
                dstfile=`basename $dst`
254
        else
255
                true
256
        fi
257
 
258
# Make a temp file name in the proper directory.
259
 
260
        dsttmp=$dstdir/#inst.$$#
261
 
262
# Move or copy the file name to the temp name
263
 
264
        $doit $instcmd $src $dsttmp &&
265
 
266
        trap "rm -f ${dsttmp}" 0 &&
267
 
268
# and set any options; do chmod last to preserve setuid bits
269
 
270
# If any of these fail, we abort the whole thing.  If we want to
271
# ignore errors from any of these, just make sure not to ignore
272
# errors from the above "$doit $instcmd $src $dsttmp" command.
273
 
274
        if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
275
        if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
276
        if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
277
        if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
278
 
279
# Now rename the file to the real destination.
280
 
281
        $doit $rmcmd -f $dstdir/$dstfile &&
282
        $doit $mvcmd $dsttmp $dstdir/$dstfile
283
 
284
fi &&
285
 
286
 
287
exit 0

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.