-# 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 = @fixinc_defs@
+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:
- $(CC) -c $(CFLAGS) $(FIXINC_DEFS) $(CPPFLAGS) $(INCLUDES) $<
+ $(CC) -c $(FIXINC_DEFS) $<
# The only suffixes we want for implicit rules are .c and .o.
.SUFFIXES:
##
## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-OBJ = fixincl.o server.o regex.o procopen.o
-HDR = server.h regex.h
LIBERTY = ../../libiberty/libiberty.a
-SH_TARGET = inclhack.sh fixincl.sh
-BIN_TARGET = fixincl
-AG_TEXT = $(SH_TARGET) fixincl.x \
- inclhack.def inclhack.tpl hackshell.tpl fixincl.tpl
-TARGETS = $(SH_TARGET) $(BIN_TARGET)
+ALLOBJ = fixincl.o fixtests.o fixfixes.o server.o procopen.o \
+ fixlib.o
+
+TESTOBJ = fixincl.o fixlib.o fixtests.o
+FIXOBJ = fixfixes.o fixlib.o
+
+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
-
-$(OBJ): $(HDR)
-
-fixincl: $(OBJ)
- @echo $(CC) -o $@ $(OBJ) $(LIBERTY) $(LIB) ; \
- if $(CC) -o $@ $(OBJ) $(LIBERTY) $(LIB) ; then : ; else \
- rm -f $@ ; (echo "#! /bin/sh" ; echo exit 1 ) > $@ ; \
- chmod 777 $@ ; fi
-
-regex.o: regex.c
- -$(CC) $(CFLAGS) $(FIXINC_DEFS) -DSTDC_HEADERS=1 -c $(srcdir)/regex.c
-
-fixincl.o : fixincl.x fixincl.c
-server.o : server.c server.h
-
-fixincl.x: fixincl.tpl inclhack.def
- @if ( autogen --help > /dev/null 2>&1 ) ; then \
- echo autogen -T fixincl.tpl -b fixincl inclhack.def ; \
- autogen -T $(srcdir)/fixincl.tpl -b fixincl \
- $(srcdir)/inclhack.def ; \
- else echo You need to install autogen ; \
- if [ `pwd` != `cd $(srcdir) ; pwd` ] ; then \
- $(CP) $(srcdir)/$@ . ; \
- else touch $@ ; fi ; fi
-
-inclhack.sh: inclhack.def inclhack.tpl hackshell.tpl
- @if ( autogen --help > /dev/null 2>&1 ) ; then \
- echo autogen inclhack.def ; \
- autogen -L$(srcdir) $(srcdir)/inclhack.def ; \
- else echo You need to install autogen ; \
- if [ `pwd` != `cd $(srcdir) ; pwd` ] ; then \
- $(CP) $(srcdir)/$@ . ; \
- else touch $@ ; fi ; fi
-
-fixincl.sh: inclhack.def inclhack.tpl
- @if ( autogen --help > /dev/null 2>&1 ) ; then \
- echo autogen -DPROGRAM=1 -b fixincl inclhack.def ; \
- autogen -DPROGRAM=1 -b fixincl -L$(srcdir) \
- $(srcdir)/inclhack.def ; touch $@ ; \
- else echo You need to install autogen ; \
- if [ `pwd` != `cd $(srcdir) ; pwd` ] ; then \
- $(CP) $(srcdir)/$@ . ; \
- else touch $@ ; fi ; fi
+gen : $(srcdir)/fixincl.x
+
+oneprocess : full-stamp
+twoprocess : test-stamp $(AF)
+
+full-stamp : $(ALLOBJ) $(LIBERTY)
+ $(CC) $(FIXINC_DEFS) $(LDFLAGS) -o $(FI) $(ALLOBJ) $(LIBERTY)
+ $(STAMP) $@
+
+test-stamp : $(TESTOBJ) $(LIBERTY)
+ $(CC) $(FIXINC_DEFS) $(LDFLAGS) -o $(FI) $(TESTOBJ) $(LIBERTY)
+ $(STAMP) $@
+
+$(AF): $(FIXOBJ) $(LIBERTY)
+ $(CC) $(FIXINC_DEFS) $(LDFLAGS) -o $@ $(FIXOBJ) $(LIBERTY)
+
+# String length warnings
+fixincl.o-warn = -Wno-error
+
+$(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
+
+# 'machname.h' is built in the build directory.
+# 'fixincl.x' in the source dir.
+#
+machname.h: ../specs
+ $(SHELL) $(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
+
+check : $(TARGETS)
+ autogen -T $(srcdir)/check.tpl $(srcdir)/inclhack.def
+ $(SHELL) ./check.sh $(srcdir)/tests/base
+ @rm -f ./check.sh