# Makefile for GNU compilers.
#   Copyright (C) 1998, 1999 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.

# 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@

CC = @CC@
SHELL = /bin/sh

target=@target@
# Directory where sources are, from where we are.
srcdir = @srcdir@
VPATH = @srcdir@

# End of variables for you to override.

default : gen

# 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

# Always use -I$(srcdir)/config when compiling.
.c.o:
	$(CC) -c $(CFLAGS) $(FIXINC_DEFS) $(CPPFLAGS) $(INCLUDES) $<

# The only suffixes we want for implicit rules are .c and .o.
.SUFFIXES:
.SUFFIXES: .c .o

#

## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
##
##  Makefile for constructing the "best" include fixer we can
##
## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

OBJ = fixincl.o server.o gnu-regex.o procopen.o
HDR = server.h gnu-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)

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

gnu-regex.o: gnu-regex.c
	-$(CC) $(CFLAGS) $(FIXINC_DEFS) $(INCLUDES) -DREGEX_MALLOC \
		-c $(srcdir)/gnu-regex.c

fixincl.o : fixincl.x fixincl.c
server.o : server.c server.h
procopen.o : procopen.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

clean:
	rm -f *.o $(TARGETS) 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".
#
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
