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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [newlib/] [ylwrap] - 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
# ylwrap - wrapper for lex/yacc invocations.
3
# Copyright (C) 1996, 1997 Free Software Foundation, Inc.
4
# Written by Tom Tromey .
5
#
6
# This program is free software; you can redistribute it and/or modify
7
# it under the terms of the GNU General Public License as published by
8
# the Free Software Foundation; either version 2, or (at your option)
9
# any later version.
10
#
11
# This program is distributed in the hope that it will be useful,
12
# but WITHOUT ANY WARRANTY; without even the implied warranty of
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
# GNU General Public License for more details.
15
#
16
# You should have received a copy of the GNU General Public License
17
# along with this program; if not, write to the Free Software
18
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19
 
20
# Usage:
21
#     ylwrap PROGRAM INPUT [OUTPUT DESIRED]... -- [ARGS]...
22
# * PROGRAM is program to run.
23
# * INPUT is the input file
24
# * OUTPUT is file PROG generates
25
# * DESIRED is file we actually want
26
# * ARGS are passed to PROG
27
# Any number of OUTPUT,DESIRED pairs may be used.
28
 
29
# The program to run.
30
prog="$1"
31
shift
32
# Make any relative path in $prog absolute.
33
case "$prog" in
34
 /*) ;;
35
 */*) prog="`pwd`/$prog" ;;
36
esac
37
 
38
# The input.
39
input="$1"
40
shift
41
case "$input" in
42
 /*)
43
    # Absolute path; do nothing.
44
    ;;
45
 *)
46
    # Relative path.  Make it absolute.  Why?  Because otherwise any
47
    # debugging info in the generated file will point to the wrong
48
    # place.  This is really gross.
49
    input="`pwd`/$input"
50
    ;;
51
esac
52
 
53
pairlist=
54
while test "$#" -ne 0; do
55
   if test "$1" = "--"; then
56
      shift
57
      break
58
   fi
59
   pairlist="$pairlist $1"
60
   shift
61
done
62
 
63
# FIXME: add hostname here for parallel makes that run commands on
64
# other machines.  But that might take us over the 14-char limit.
65
dirname=ylwrap$$
66
trap "cd `pwd`; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15
67
mkdir $dirname || exit 1
68
 
69
cd $dirname
70
$prog ${1+"$@"} "$input"
71
status=$?
72
 
73
if test $status -eq 0; then
74
   set X $pairlist
75
   shift
76
   first=yes
77
   while test "$#" -ne 0; do
78
      if test -f "$1"; then
79
         # If $2 is an absolute path name, then just use that,
80
         # otherwise prepend `../'.
81
         case "$2" in
82
           /*) target="$2";;
83
           *) target="../$2";;
84
         esac
85
         mv "$1" "$target" || status=$?
86
      else
87
         # A missing file is only an error for the first file.  This
88
         # is a blatant hack to let us support using "yacc -d".  If -d
89
         # is not specified, we don't want an error when the header
90
         # file is "missing".
91
         if test $first = yes; then
92
            status=1
93
         fi
94
      fi
95
      shift
96
      shift
97
      first=no
98
   done
99
else
100
   status=$?
101
fi
102
 
103
# Remove the directory.
104
cd ..
105
rm -rf $dirname
106
 
107
exit $status

powered by: WebSVN 2.1.0

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