| #! /bin/sh |
| |
| # Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. |
| # This file is part of GNU CC. |
| |
| # GNU CC 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 2, or (at your option) |
| # any later version. |
| |
| # GNU CC is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| |
| # You should have received a copy of the GNU General Public License |
| # along with GNU CC; see the file COPYING. If not, write to |
| # the Free Software Foundation, 59 Temple Place - Suite 330, |
| # Boston, MA 02111-1307, USA. |
| |
| SHELL=/bin/sh |
| export SHELL |
| if [ $# -eq 0 ] ; then |
| not_done=false |
| else |
| not_done=true |
| fi |
| |
| while $not_done |
| do |
| case "$1" in |
| -D ) |
| shift |
| if [ $# -eq 0 ] ; then |
| not_done=false |
| else |
| AG="$AG -D$1" |
| shift |
| fi |
| ;; |
| |
| -D* ) |
| AG="$AG $1" |
| shift |
| ;; |
| |
| '-?' ) |
| echo "USAGE: gendefs [ -D<def-name> ... ] [ <output-name> ]" |
| echo "WHERE: '<def-name>' specifies a #define test name from inclhack.def" |
| echo " and '<output-name>' is one of:" |
| echo " fixincl.x machine.h" |
| echo "The default is to produce the first three outputs." |
| exit 0 |
| ;; |
| |
| * ) |
| not_done=false |
| ;; |
| esac |
| done |
| |
| if [ $# -eq 0 ] ; then |
| set -- fixincl.x |
| fi |
| |
| AG="autogen $AG" |
| set -e |
| |
| case "$1" in |
| fixincl.x | */fixincl.x ) |
| if (${AG} --help > /dev/null 2>&1) |
| then |
| echo AutoGen-ing fixincl.x |
| $AG inclhack.def |
| else |
| echo "AutoGen does not appear to be correctly installed." |
| echo "Please download and install:" |
| echo " ftp://gcc.gnu.org/pub/gcc/infrastructure/autogen.tar.gz" |
| touch fixincl.x |
| fi |
| ;; |
| |
| machname.h | */machname.h ) |
| # This script extracts from the specs file all the predefined macros |
| # that are not in the C89 reserved namespace (the reserved namespace |
| # is all identifiers beginnning with two underscores or one underscore |
| # followed by a capital letter). The specs file is on standard input. |
| # A #define for a regular expression to find any of those macros in a |
| # header file is written to standard output. |
| |
| # Note dependency on ASCII. \040 = space, \011 = tab, \012 = newline. |
| # tr ' ' '\n' is, alas, not portable. |
| |
| tr -s '\040\011' '\012\012' < ../specs | |
| sed -n 's/^.*-D\([a-zA-Z_][a-zA-Z0-9_]*\).*$/\1/p' | |
| sort -u > mn.T |
| |
| if grep -v '^_[_A-Z]' mn.T > mn.U |
| then |
| echo "Forbidden identifiers: `tr '\012' ' ' <mn.U`" >&2 |
| sed 's/^/\\\\</; s/$/\\\\>/' <mn.U | tr '\012' '|' > mn.V |
| echo '' >>mn.V |
| sed 's/^/#define MN_NAME_PAT "/; s/|$/"/' < mn.V > machname.T |
| else |
| echo "No forbidden identifiers defined by this target" >&2 |
| echo '#undef MN_NAME_PAT' > machname.T |
| fi |
| rm -f mn.[TUV] |
| mv -f machname.T machname.h |
| ;; |
| |
| * ) |
| echo genfixes cannot create $1 |
| exit 1 |
| ;; |
| esac |
| |
| exit 0 |