config/ylwrap
author Mario de Sousa <msousa@fe.up.pt>
Mon, 22 Aug 2011 16:08:07 +0100
changeset 358 a2c4af8f0c18
parent 353 17bffb57a8c5
permissions -rwxr-xr-x
Add support for '**' (power) operator in ST expressions
353
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
     1
#! /bin/sh
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
     2
# ylwrap - wrapper for lex/yacc invocations.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
     3
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
     4
scriptversion=2005-05-14.22
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
     5
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
     6
# Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
     7
#   Free Software Foundation, Inc.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
     8
#
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
     9
# Written by Tom Tromey <tromey@cygnus.com>.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    10
#
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    11
# This program is free software; you can redistribute it and/or modify
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    12
# it under the terms of the GNU General Public License as published by
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    13
# the Free Software Foundation; either version 2, or (at your option)
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    14
# any later version.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    15
#
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    16
# This program is distributed in the hope that it will be useful,
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    17
# but WITHOUT ANY WARRANTY; without even the implied warranty of
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    18
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    19
# GNU General Public License for more details.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    20
#
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    21
# You should have received a copy of the GNU General Public License
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    22
# along with this program; if not, write to the Free Software
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    23
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    24
# 02110-1301, USA.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    25
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    26
# As a special exception to the GNU General Public License, if you
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    27
# distribute this file as part of a program that contains a
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    28
# configuration script generated by Autoconf, you may include it under
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    29
# the same distribution terms that you use for the rest of that program.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    30
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    31
# This file is maintained in Automake, please report
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    32
# bugs to <bug-automake@gnu.org> or send patches to
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    33
# <automake-patches@gnu.org>.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    34
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    35
case "$1" in
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    36
  '')
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    37
    echo "$0: No files given.  Try \`$0 --help' for more information." 1>&2
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    38
    exit 1
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    39
    ;;
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    40
  --basedir)
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    41
    basedir=$2
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    42
    shift 2
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    43
    ;;
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    44
  -h|--h*)
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    45
    cat <<\EOF
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    46
Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]...
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    47
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    48
Wrapper for lex/yacc invocations, renaming files as desired.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    49
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    50
  INPUT is the input file
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    51
  OUTPUT is one file PROG generates
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    52
  DESIRED is the file we actually want instead of OUTPUT
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    53
  PROGRAM is program to run
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    54
  ARGS are passed to PROG
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    55
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    56
Any number of OUTPUT,DESIRED pairs may be used.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    57
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    58
Report bugs to <bug-automake@gnu.org>.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    59
EOF
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    60
    exit $?
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    61
    ;;
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    62
  -v|--v*)
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    63
    echo "ylwrap $scriptversion"
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    64
    exit $?
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    65
    ;;
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    66
esac
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    67
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    68
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    69
# The input.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    70
input="$1"
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    71
shift
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    72
case "$input" in
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    73
  [\\/]* | ?:[\\/]*)
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    74
    # Absolute path; do nothing.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    75
    ;;
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    76
  *)
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    77
    # Relative path.  Make it absolute.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    78
    input="`pwd`/$input"
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    79
    ;;
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    80
esac
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    81
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    82
pairlist=
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    83
while test "$#" -ne 0; do
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    84
  if test "$1" = "--"; then
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    85
    shift
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    86
    break
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    87
  fi
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    88
  pairlist="$pairlist $1"
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    89
  shift
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    90
done
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    91
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    92
# The program to run.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    93
prog="$1"
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    94
shift
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    95
# Make any relative path in $prog absolute.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    96
case "$prog" in
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    97
  [\\/]* | ?:[\\/]*) ;;
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    98
  *[\\/]*) prog="`pwd`/$prog" ;;
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    99
esac
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   100
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   101
# FIXME: add hostname here for parallel makes that run commands on
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   102
# other machines.  But that might take us over the 14-char limit.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   103
dirname=ylwrap$$
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   104
trap "cd `pwd`; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   105
mkdir $dirname || exit 1
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   106
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   107
cd $dirname
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   108
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   109
case $# in
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   110
  0) $prog "$input" ;;
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   111
  *) $prog "$@" "$input" ;;
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   112
esac
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   113
ret=$?
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   114
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   115
if test $ret -eq 0; then
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   116
  set X $pairlist
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   117
  shift
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   118
  first=yes
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   119
  # Since DOS filename conventions don't allow two dots,
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   120
  # the DOS version of Bison writes out y_tab.c instead of y.tab.c
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   121
  # and y_tab.h instead of y.tab.h. Test to see if this is the case.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   122
  y_tab_nodot="no"
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   123
  if test -f y_tab.c || test -f y_tab.h; then
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   124
    y_tab_nodot="yes"
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   125
  fi
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   126
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   127
  # The directory holding the input.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   128
  input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'`
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   129
  # Quote $INPUT_DIR so we can use it in a regexp.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   130
  # FIXME: really we should care about more than `.' and `\'.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   131
  input_rx=`echo "$input_dir" | sed 's,\\\\,\\\\\\\\,g;s,\\.,\\\\.,g'`
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   132
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   133
  while test "$#" -ne 0; do
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   134
    from="$1"
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   135
    # Handle y_tab.c and y_tab.h output by DOS
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   136
    if test $y_tab_nodot = "yes"; then
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   137
      if test $from = "y.tab.c"; then
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   138
    	from="y_tab.c"
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   139
      else
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   140
    	if test $from = "y.tab.h"; then
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   141
    	  from="y_tab.h"
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   142
    	fi
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   143
      fi
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   144
    fi
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   145
    if test -f "$from"; then
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   146
      # If $2 is an absolute path name, then just use that,
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   147
      # otherwise prepend `../'.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   148
      case "$2" in
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   149
    	[\\/]* | ?:[\\/]*) target="$2";;
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   150
    	*) target="../$2";;
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   151
      esac
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   152
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   153
      # We do not want to overwrite a header file if it hasn't
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   154
      # changed.  This avoid useless recompilations.  However the
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   155
      # parser itself (the first file) should always be updated,
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   156
      # because it is the destination of the .y.c rule in the
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   157
      # Makefile.  Divert the output of all other files to a temporary
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   158
      # file so we can compare them to existing versions.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   159
      if test $first = no; then
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   160
	realtarget="$target"
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   161
	target="tmp-`echo $target | sed s/.*[\\/]//g`"
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   162
      fi
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   163
      # Edit out `#line' or `#' directives.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   164
      #
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   165
      # We don't want the resulting debug information to point at
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   166
      # an absolute srcdir; it is better for it to just mention the
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   167
      # .y file with no path.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   168
      #
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   169
      # We want to use the real output file name, not yy.lex.c for
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   170
      # instance.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   171
      #
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   172
      # We want the include guards to be adjusted too.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   173
      FROM=`echo "$from" | sed \
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   174
            -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   175
            -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   176
      TARGET=`echo "$2" | sed \
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   177
            -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   178
            -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   179
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   180
      sed -e "/^#/!b" -e "s,$input_rx,," -e "s,$from,$2," \
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   181
          -e "s,$FROM,$TARGET," "$from" >"$target" || ret=$?
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   182
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   183
      # Check whether header files must be updated.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   184
      if test $first = no; then
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   185
	if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   186
	  echo "$2" is unchanged
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   187
	  rm -f "$target"
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   188
	else
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   189
          echo updating "$2"
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   190
          mv -f "$target" "$realtarget"
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   191
        fi
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   192
      fi
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   193
    else
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   194
      # A missing file is only an error for the first file.  This
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   195
      # is a blatant hack to let us support using "yacc -d".  If -d
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   196
      # is not specified, we don't want an error when the header
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   197
      # file is "missing".
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   198
      if test $first = yes; then
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   199
        ret=1
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   200
      fi
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   201
    fi
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   202
    shift
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   203
    shift
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   204
    first=no
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   205
  done
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   206
else
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   207
  ret=$?
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   208
fi
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   209
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   210
# Remove the directory.
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   211
cd ..
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   212
rm -rf $dirname
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   213
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   214
exit $ret
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   215
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   216
# Local Variables:
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   217
# mode: shell-script
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   218
# sh-indentation: 2
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   219
# eval: (add-hook 'write-file-hooks 'time-stamp)
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   220
# time-stamp-start: "scriptversion="
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   221
# time-stamp-format: "%:y-%02m-%02d.%02H"
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   222
# time-stamp-end: "$"
17bffb57a8c5 Building compiler with autoconf. Thanks go to Matteo of sirius-es.it
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
   223
# End: