# Makefile for fixincludes.
#
#   Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004, 2009, 2010, 2012
#   Free Software Foundation, Inc.

#This file is part of fixincludes.

#fixincludes 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 3, or (at your option)
#any later version.

#fixincludes 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 fixincludes; see the file COPYING3.  If not see
#<http://www.gnu.org/licenses/>.

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@
CFLAGS = @CFLAGS@
WARN_CFLAGS = @WARN_CFLAGS@ @WARN_PEDANTIC@ @WERROR@
LDFLAGS = @LDFLAGS@
INCLUDES = -I. -I$(srcdir) -I../include -I$(srcdir)/../include
FIXINC_CFLAGS = -DHAVE_CONFIG_H $(INCLUDES)

# Directory where sources are, from where we are.
srcdir = @srcdir@
VPATH = $(srcdir)

# Directory in which to put the directories used by the compiler.
libdir = @libdir@
# Directory in which GCC puts its executables.
libexecdir = @libexecdir@

# End of variables for you to override.

# The target that we're configured for.
target = @target@
target_noncanonical:=@target_noncanonical@

# The version of GCC in this tree
gcc_version := $(shell cat $(srcdir)/../gcc/BASE-VER)

# Directory in which the compiler finds libraries etc.
libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)
# Directory in which the compiler finds executables
libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version)
# Where our executable files go
itoolsdir = $(libexecsubdir)/install-tools
# Where our data files go
itoolsdatadir = $(libsubdir)/install-tools

# Locate mkinstalldirs.
mkinstalldirs=$(SHELL) $(srcdir)/../mkinstalldirs

AUTOCONF = autoconf
AUTOHEADER = autoheader
ACLOCAL = aclocal
ACLOCAL_AMFLAGS = -I .. -I ../config

default : all

# Now figure out from those variables how to compile and link.

.c.o:
	$(CC) -c $(CFLAGS) $(WARN_CFLAGS) $(CPPFLAGS) $(FIXINC_CFLAGS) $<

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

LIBIBERTY=../libiberty/libiberty.a

ALLOBJ = fixincl.o fixtests.o fixfixes.o server.o procopen.o \
      fixlib.o fixopts.o

TESTOBJ = fixincl.o fixlib.o fixtests.o fixopts.o
FIXOBJ  = fixfixes.o fixlib.o fixopts.o

HDR = server.h fixlib.h
FI  = fixincl@EXEEXT@
AF  = applyfix@EXEEXT@

all : @TARGET@ fixinc.sh mkheaders
gen : $(srcdir)/fixincl.x


oneprocess : full-stamp
twoprocess : test-stamp $(AF)

full-stamp : $(ALLOBJ) $(LIBIBERTY)
	$(CC) $(CFLAGS) $(LDFLAGS) -o $(FI) $(ALLOBJ) $(LIBIBERTY)
	$(STAMP) $@

test-stamp : $(TESTOBJ) $(LIBIBERTY)
	$(CC) $(CFLAGS) $(LDFLAGS) -o $(FI) $(TESTOBJ) $(LIBIBERTY)
	$(STAMP) $@

$(AF): $(FIXOBJ) $(LIBIBERTY)
	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(FIXOBJ) $(LIBIBERTY)

$(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

fixinc.sh : fixinc.in mkfixinc.sh Makefile
	srcdir="$(srcdir)" $(SHELL) $(srcdir)/mkfixinc.sh $(target)

$(srcdir)/fixincl.x: @MAINT@ fixincl.tpl inclhack.def
	cd $(srcdir) ; $(SHELL) ./genfixes

mostlyclean : 
	rm -f *.o *-stamp $(AF) $(FI) *~ fixinc.sh

clean: mostlyclean
	rm -f mkheaders mkheaders.almost

distclean: clean
	rm -f Makefile config.h config.log config.status stamp-h

maintainer-clean: distclean
	rm -f $(srcdir)/fixincl.x

distclean : clean

Makefile: $(srcdir)/Makefile.in config.status
	$(SHELL) ./config.status Makefile

mkheaders.almost: $(srcdir)/mkheaders.in config.status
	CONFIG_FILES=mkheaders.almost:mkheaders.in \
	CONFIG_HEADERS= ./config.status

mkheaders: mkheaders.almost $(srcdir)/../gcc/BASE-VER
	sed -e 's/@gcc_version@/$(gcc_version)/' < $< > $@T
	mv -f $@T $@

config.h: stamp-h
stamp-h: $(srcdir)/config.h.in config.status
	$(SHELL) ./config.status config.h

config.status: $(srcdir)/configure
	$(SHELL) ./config.status --recheck

$(srcdir)/configure: @MAINT@ $(srcdir)/configure.ac $(srcdir)/aclocal.m4
	cd $(srcdir) && $(AUTOCONF)

$(srcdir)/config.h.in: @MAINT@ $(srcdir)/configure.ac
	cd $(srcdir) && $(AUTOHEADER)

$(srcdir)/aclocal.m4: @MAINT@ $(srcdir)/configure.ac
	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)

check : all
	autogen -T $(srcdir)/check.tpl $(srcdir)/inclhack.def
	$(SHELL) ./check.sh $(srcdir)/tests/base
	@rm -f ./check.sh

install : all
	-rm -rf $(DESTDIR)$(itoolsdir)
	$(mkinstalldirs) $(DESTDIR)$(itoolsdir) 
	$(mkinstalldirs) $(DESTDIR)$(itoolsdatadir)/include
	$(INSTALL_DATA) $(srcdir)/README-fixinc \
	  $(DESTDIR)$(itoolsdatadir)/include/README
	$(INSTALL_SCRIPT) fixinc.sh $(DESTDIR)$(itoolsdir)/fixinc.sh
	$(INSTALL_PROGRAM) fixincl@EXEEXT@ \
	  $(DESTDIR)$(itoolsdir)/fixincl@EXEEXT@
	$(INSTALL_SCRIPT) mkheaders $(DESTDIR)$(itoolsdir)/mkheaders

install-strip: install
	test -z '$(STRIP)' \
	  || $(STRIP) $(DESTDIR)$(itoolsdir)/fixincl@EXEEXT@

.PHONY: all check install install-strip
.PHONY: dvi pdf info html install-pdf install-info install-html

dvi :
pdf :
info :
html :
install-pdf :
install-info :
install-html :
installcheck :
