#! /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 ... ] [ ]" echo "WHERE: '' specifies a #define test name from inclhack.def" echo " and '' 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' ' ' &2 sed 's/^/\\\\/' 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