-# Makefile for GNU compilers.
-# Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+# Makefile for GCC fixincludes.
+#
+# Copyright (C) 1998, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
-#This file is part of GNU CC.
+#This file is part of GCC.
-#GNU CC is free software; you can redistribute it and/or modify
+#GCC 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,
+#GCC 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
+#along with GCC; see the file COPYING. If not, write to
#the Free Software Foundation, 59 Temple Place - Suite 330,
#Boston, MA 02111-1307, USA.
# The makefile built from this file lives in the fixinc subdirectory.
# Its purpose is to build the any-platforms fixinc.sh script.
-CFLAGS = -g
-FIXINC_DEFS = -DIN_GCC $(CFLAGS) $(CPPFLAGS) @fixinc_defs@ $(INCLUDES)
+SHELL=@SHELL@
+
+# Some versions of `touch' (such as the version on Solaris 2.8)
+# do not correctly set the timestamp due to buggy versions of `utime'
+# in the kernel. So, we use `echo' instead.
+STAMP = echo timestamp >
-CC = @CC@
-SHELL = /bin/sh
+FL_LIST = $(CFLAGS) $(CPPFLAGS) $(WARN_CFLAGS)
+FIXINC_DEFS = -DIN_GCC -DHAVE_CONFIG_H $(FL_LIST) $(INCLUDES)
-target=@target@
# Directory where sources are, from where we are.
srcdir = @srcdir@
-VPATH = @srcdir@
+VPATH = $(srcdir)
subdir = fixinc
# End of variables for you to override.
-default : gen
+default : all
# Now figure out from those variables how to compile and link.
# Specify the directories to be searched for header files.
# Both . and srcdir are used, in that order.
-INCLUDES = -I. -I.. -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../config -I$(srcdir)/../../include
+#
+INCLUDES = -I. -I.. -I$(srcdir) -I$(srcdir)/.. \
+-I$(srcdir)/../config -I$(srcdir)/../../include
# Always use -I$(srcdir)/config when compiling.
.c.o:
## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
LIBERTY = ../../libiberty/libiberty.a
-LIBOBJ = gnu-regex.o fixlib.o $(LIBERTY)
-FIOBJ = fixincl.o server.o procopen.o $(LIBOBJ)
-HDR = server.h gnu-regex.h fixlib.h
+ALLOBJ = fixincl.o fixtests.o fixfixes.o server.o procopen.o \
+ fixlib.o
-SH_TARGET = inclhack.sh fixincl.sh
-BIN_TARGET = fixincl fixfixes fixtests
+TESTOBJ = fixincl.o fixlib.o fixtests.o
+FIXOBJ = fixfixes.o fixlib.o
-TARGETS = $(SH_TARGET) $(BIN_TARGET)
+HDR = server.h fixlib.h machname.h
+FI = fixincl@build_exeext@
+AF = applyfix@build_exeext@
all : $(TARGETS)
-sh : $(SH_TARGET)
-gen : $(SH_TARGET) fixincl.x
+gen : $(srcdir)/fixincl.x
-$(FIOBJ): $(HDR)
+oneprocess : full-stamp
+twoprocess : test-stamp $(AF)
-fixincl: $(FIOBJ)
- @echo $(CC) $(FIXINC_DEFS) -o $@ $(FIOBJ) ; \
- if $(CC) $(FIXINC_DEFS) -o $@ $(FIOBJ) ; then : ; else \
- rm -f $@ ; (echo "#! /bin/sh" ; echo exit 1 ) > $@ ; \
- chmod 777 $@ ; fi
+full-stamp : $(ALLOBJ) $(LIBERTY)
+ $(CC) $(FIXINC_DEFS) $(LDFLAGS) -o $(FI) $(ALLOBJ) $(LIBERTY)
+ $(STAMP) $@
-fixfixes: fixfixes.c $(LIBOBJ)
- $(CC) -o $@ $(FIXINC_DEFS) -DMAIN \
- $(srcdir)/fixfixes.c $(LIBOBJ) $(LIB)
+test-stamp : $(TESTOBJ) $(LIBERTY)
+ $(CC) $(FIXINC_DEFS) $(LDFLAGS) -o $(FI) $(TESTOBJ) $(LIBERTY)
+ $(STAMP) $@
-fixtests: fixtests.c $(LIBOBJ)
- $(CC) -o $@ $(FIXINC_DEFS) -DMAIN \
- $(srcdir)/fixtests.c $(LIBOBJ) $(LIB)
+$(AF): $(FIXOBJ) $(LIBERTY)
+ $(CC) $(FIXINC_DEFS) $(LDFLAGS) -o $@ $(FIXOBJ) $(LIBERTY)
-fixincl.o : fixincl.x fixincl.c fixfixes.c fixtests.c
-server.o : server.c server.h
-procopen.o : procopen.c server.h
-fixlib.o: machname.h
+# String length warnings
+fixincl.o-warn = -Wno-error
-fixincl.x: fixincl.tpl inclhack.def
- cd $(srcdir) ; ./genfixes $@
+$(ALLOBJ) : $(HDR)
+fixincl.o : fixincl.c $(srcdir)/fixincl.x
+fixtests.o : fixtests.c
+fixfixes.o : fixfixes.c $(srcdir)/fixincl.x
+server.o : server.c
+procopen.o : procopen.c
+fixlib.o : fixlib.c
-inclhack.sh: inclhack.def inclhack.tpl hackshell.tpl
- cd $(srcdir) ; ./genfixes $@
+# 'machname.h' is built in the build directory.
+# 'fixincl.x' in the source dir.
+#
+machname.h: ../specs
+ $(SHELL) $(srcdir)/genfixes $@
-fixincl.sh: inclhack.def inclhack.tpl
- cd $(srcdir) ; ./genfixes $@
+$(srcdir)/fixincl.x: @MAINT@ fixincl.tpl inclhack.def
+ cd $(srcdir) ; $(SHELL) ./genfixes $@
clean:
- rm -f *.o $(TARGETS) fixincl.x
+ rm -f *.o *-stamp $(AF) $(FI) machname.h *~
+
+maintainer-clean : clean
+ rm -f $(srcdir)/fixincl.x
-# Ensure all the targets are built. If the program "fixincl"
-# failed to compile, link or load, then we install the
-# "inclhack.sh" script. Otherwise, we install that program
-# plus the wrapper script, "fixincl.sh".
+# Build the executable and copy up into gcc dir.
+# We still copy the script because we still have alternative scripts.
#
-install: $(TARGETS)
- @rm -f ../fixinc.sh ; \
- if ( ./fixincl -v > /dev/null 2>&1 ) ; then \
- echo cp fixincl.sh ../fixinc.sh ; \
- if [ -f ./fixincl.sh ] ; \
- then cp fixincl.sh ../fixinc.sh ; \
- else cp $(srcdir)/fixincl.sh ../fixinc.sh ; fi ; \
- chmod 555 ../fixinc.sh ; \
- rm -f ../fixincl ; \
- echo cp fixincl .. ; \
- cp fixincl .. ; \
- chmod 555 ../fixincl ; \
- else \
- echo Could not install binary fixincludes. ; \
- echo Installing shell script instead. ; \
- echo cp inclhack.sh ../fixinc.sh ; \
- if [ -f ./inclhack.sh ] ; \
- then cp inclhack.sh ../fixinc.sh ; \
- else cp $(srcdir)/inclhack.sh ../fixinc.sh ; fi ; \
- fi
+install-bin : $(TARGETS)
+ ./fixincl -v < /dev/null
+ @if [ -f ../fixinc.sh ] ; then rm -f ../fixinc.sh || \
+ mv -f ../fixinc.sh ../fixinc.sh.$$ || exit 1 ; else : ; fi
+ @cp $(srcdir)/fixincl.sh ../fixinc.sh
+ chmod 755 ../fixinc.sh
Makefile: Makefile.in ../config.status
cd .. \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \
+ $(SHELL) ./config.status
-# Black magic.
-# Note dependency on ASCII. \040 = space, \011 = tab, \012 = newline.
-
-machname.h: ../specs
- @tr -s '\040\011' '\012\012' < ../specs | \
- sed -n 's/^.*-D\([a-zA-Z_][a-zA-Z0-9_]*\).*$$/\1/p' | sort -u | \
- grep -v '^_[_A-Z]' > mn.T
- @echo "Forbidden identifiers: `tr '\012' ' ' <mn.T`"
- @sed 's/^/\\\\</; s/$$/\\\\>/' <mn.T | tr '\012' '|' | \
- sed 's/^/#define MN_NAME_PAT "/; s/|$$/"/' > machname.h
- @echo >> machname.h
- @-rm -f mn.T
+check : $(TARGETS)
+ autogen -T $(srcdir)/check.tpl $(srcdir)/inclhack.def
+ $(SHELL) ./check.sh $(srcdir)/tests/base
+ @rm -f ./check.sh