#!/bin/sh

cat << EOF > Makefile
# Default target
.DEFAULT_GOAL = all

PROJECT_NAME = $PROJECT_NAME
PROJECT_FULLNAME = $PROJECT_FULLNAME
PROJECT_COPYRIGHT = $PROJECT_COPYRIGHT
PROJECT_VERSION = $PROJECT_VERSION
PROEJCT_PAGE = $PROJECT_PAGE
PROJECT_MAIL = $PROJECT_MAIL

INSTALL = $INSTALL
INSTALL_PROGRAM = \$(INSTALL)
INSTALL_PROGRAM_STRIP = \$(INSTALL) -s
INSTALL_DATA = \$(INSTALL) -m 644
INSTALL_DIR = \$(INSTALL) -d
SHELL = $SHELL
CC = $CC
BISON = $BISON
FLEX = $FLEX
RM = $RM
RMDIR = $RMDIR
TEST = $TEST
MAKE = $MAKE
GREP = $GREP
CUT = $CUT
SORT = $SORT
PR = $PR
CP = $CP
CHMOD = $CHMOD
MAKEINFO = $MAKEINFO
TEXI2DVI = $TEXI2DVI
TEXI2PDF = $TEXI2PDF
DVIPS = $DVIPS

CFLAGS = $CFLAGS
LDFLAGS = $LDFLAGS
LDLIBS = $LDLIBS
BFLAGS = $BFLAGS
FFLAGS = $FFLAGS

DESTDIR = $DESTDIR

prefix = $prefix
exec_prefix = $exec_prefix
bindir = $bindir
sbindir = $sbindir
libexecdir = $libexecdir
datarootdir = $datarootdir
datadir = $datadir
sysconfdir = $sysconfdir
sharedstatedir = $sharedstatedir
localstatedir = $localstatedir
docdir = $docdir
infodir = $infodir
htmldir = $htmldir
dvidir = $dvidir
pdfdir = $pdfdir
psdir = $psdir
libdir = $libdir
localedir = $localedir
mandir = $mandir
man1dir = $man1dir
man2dir = $man2dir
man3dir = $man3dir
man4dir = $man4dir
man5dir = $man5dir
man6dir = $man6dir
man7dir = $man7dir
man8dir = $man8dir
man9dir = $man9dir
manext = $manext
man1ext = $man1ext
man2ext = $man2ext
man3ext = $man3ext
man4ext = $man4ext
man5ext = $man5ext
man6ext = $man6ext
man7ext = $man7ext
man8ext = $man8ext
man9ext = $man9ext

ALL_CFLAGS = \$(CFLAGS)
ALL_LDFLAGS = \$(LDFLAGS)
ALL_LDLIBS = \$(LDLIBS)
ALL_BFLAGS = \$(BFLAGS)
ALL_FFLAGS = -t \$(FFLAGS)

vpath %.c       ./src
vpath %.l       ./src
vpath %.ggo     ./src
vpath %.pl      ./src
vpath %.sed     ./src
vpath %.sh      ./src
vpath %.texinfo ./doc

PROGRAMS_SCRIPT = gph kot unfla grp mar ser kon rm12 uam.tag2re sen-nl
PROGRAMS_EXEC = tok sen fla rs12
PROGRAMS = \$(PROGRAMS_SCRIPT) \$(PROGRAMS_EXEC)
DOC_FILES = utt.info utt.dvi utt.html utt.pdf utt.ps

TOK_OBJ_FILES = tok.o tok_cmdline.o
TOK_FLEX_FILES = tok.l
TOK_GGO_FILES = tok_cmdline.ggo
tok: \$(TOK_OBJ_FILES)
tok.o: tok.c
tok.o: tok_cmdline.h
tok.c: tok.l
tok_cmdline.o: tok_cmdline.c tok_cmdline.h
tok_cmdline.c: tok_cmdline.ggo
tok_cmdline.h: tok_cmdline.ggo

SEN_OBJ_FILES = sen.o
SEN_FLEX_FILES = sen.l
sen: \$(SEN_OBJ_FILES)
sen.o: sen.c
sen.c: sen.l

FLA_OBJ_FILES = fla.o
fla: \$(FLA_OBJ_FILES)
fla.o: fla.c

GPH_PERL_FILES = gph.pl
gph: \$(GPH_PERL_FILES)

UAMTAG2RE_PERL_FILES = uam.tag2re.pl
uam.tag2re: \$(UAMTAG2RE_PERL_FILES)

KOT_PERL_FILES = kot.pl
kot: \$(KOT_PERL_FILES)

UNFLA_SH_FILES = unfla.sh
unfla: \$(UNFLA_SH_FILES)

GRP_PERL_FILES = grp.pl
grp: \$(GRP_PERL_FILES)

MAR_PERL_FILES = mar.pl
mar: \$(MAR_PERL_FILES)

SER_PERL_FILES = ser.pl
ser: \$(SER_PERL_FILES)

KON_PERL_FILES = kon.pl
kon: \$(KON_PERL_FILES)

RM12_SED_FILES = rm12.sed
rm12: \$(RM12_SED_FILES)

SENNL_SED_FILES = sen-nl.sed
sen-nl: \$(SENNL_SED_FILES)

RS12_OBJ_FILES = rs12.o
rs12: \$(RS12_OBJ_FILES)
rs12.o: rs12.c

CONFIG_FILES = src/config.h Makefile

.SUFFIXES:
.SUFFIXES: .l .y .h .c .pl .o .texinfo .info .dvi .html .pdf .ps

.PHONY: help
help:
	@\$(MAKE) --print-data-base --question |			\\
	\$(GREP) '^[^.%][-A-Za-z0-9_]*:' |			\\
	\$(CUT) -f 1 -d : | 					\\
	\$(GREP) -v '^Makefile\$\$' |				\\
	\$(SORT) |						\\
	\$(PR) --omit-pagination --width=80 --columns=4

.PHONY: all
all: \$(PROGRAMS)

.PHONY: doc
doc: info dvi html pdf ps

.PHONY: info
info: utt.info

.PHONY: dvi
dvi: utt.dvi

.PHONY: html
html: utt.html

.PHONY: pdf
pdf: utt.pdf

.PHONY: ps
ps: utt.ps

.PHONY: install-all
install-all: install install-doc
	
.PHONY: installdirs
installdirs:
	\$(INSTALL_DIR) \$(DESTDIR)\$(prefix) \\
			\$(DESTDIR)\$(exec_prefix) \\
			\$(DESTDIR)\$(bindir) \\
			\$(DESTDIR)\$(datarootdir) \\
			\$(DESTDIR)\$(datadir) \\
			\$(DESTDIR)\$(docdir) \\
			\$(DESTDIR)\$(infodir) \\
			\$(DESTDIR)\$(htmldir) \\
			\$(DESTDIR)\$(dvidir) \\
			\$(DESTDIR)\$(pdfdir) \\
			\$(DESTDIR)\$(psdir) \\

.PHONY: install
install: installdirs
	\$(INSTALL_PROGRAM) \$(PROGRAMS) \$(DESTDIR)\$(bindir)

.PHONY: install-strip
install-strip: installdirs
	\$(INSTALL_PROGRAM) \$(PROGRAMS_SCRIPT) \$(DESTDIR)\$(bindir)
	\$(INSTALL_PROGRAM_STRIP) \$(PROGRAMS_EXEC) \$(DESTDIR)\$(bindir)

.PHONY: install-doc
install-doc: install-info install-dvi install-html install-pdf install-ps

.PHONY: install-info
install-info: installdirs
	\$(INSTALL_DATA) utt.info \$(DESTDIR)\$(infodir)

.PHONY: install-dvi
install-dvi: installdirs
	\$(INSTALL_DATA) utt.dvi \$(DESTDIR)\$(dvidir)

.PHONY: install-html
install-html: installdirs
	\$(INSTALL_DATA) utt.html \$(DESTDIR)\$(htmldir)

.PHONY: install-pdf
install-pdf: installdirs
	\$(INSTALL_DATA) utt.pdf \$(DESTDIR)\$(pdfdir)

.PHONY: install-ps
install-ps: installdirs
	\$(INSTALL_DATA) utt.ps \$(DESTDIR)\$(psdir)

.PHONY: uninstall
uninstall:
	\$(RM) \$(foreach file,\$(PROGRAMS),\$(DESTDIR)\$(bindir)/\$(file))
	\$(RM) \$(DESTDIR)\$(infodir)/utt.info
	\$(RM) \$(DESTDIR)\$(dvidir)/utt.dvi
	\$(RM) \$(DESTDIR)\$(htmldir)/utt.html
	\$(RM) \$(DESTDIR)\$(pdfdir)/utt.pdf
	\$(RM) \$(DESTDIR)\$(psdir)/utt.ps
	\$(RMDIR) \$(DESTDIR)\$(docdir)

.PHONY: clean
clean:
	\$(RM) \$(PROGRAMS)
	\$(RM) \$(TOK_OBJ_FILES)
	\$(RM) \$(patsubst %.l,%.c,\$(TOK_FLEX_FILES))
	\$(RM) \$(patsubst %.ggo,%.c,\$(TOK_GGO_FILES))
	\$(RM) \$(patsubst %.ggo,%.h,\$(TOK_GGO_FILES))
	\$(RM) \$(SEN_OBJ_FILES)
	\$(RM) \$(patsubst %.l,%.c,\$(SEN_FLEX_FILES))
	\$(RM) \$(FLA_OBJ_FILES)
	\$(RM) \$(RS12_OBJ_FILES)
	\$(RM) \$(DOC_FILES)

.PHONY: distclean
distclean: clean
	\$(RM) \$(CONFIG_FILES)

%.o: %.c
	\$(CC) -c \$< -o \$@ \$(ALL_CFLAGS)

%.c: %.l
	\$(FLEX) -t \$< > \$@

%.c: %.ggo
	gengetopt --input \$< --file-name \$(basename \$@) --conf-parser

%.h: %.ggo
	gengetopt --input \$< --file-name \$(basename \$@) --conf-parser

%: %.o
	\$(CC) \$? -o \$@ \$(ALL_LDFLAGS) \$(ALL_CFLAGS) \$(ALL_LDLIBS)

%: %.pl
	\$(CP) \$< \$@
	\$(CHMOD) a+x \$@

%: %.sh
	\$(CP) \$< \$@
	\$(CHMOD) a+x \$@

%: %.sed
	\$(CP) \$< \$@
	\$(CHMOD) a+x \$@

%.info: %.texinfo
	\$(MAKEINFO) \$< -o \$@

%.dvi: %.texinfo
	\$(TEXI2DVI) --build=clean \$< -o \$@

%.html: %.texinfo
	\$(MAKEINFO) --html --no-split \$< -o \$@

%.pdf: %.texinfo
	\$(TEXI2PDF) --build=clean \$< -o \$@

%.ps: %.dvi
	\$(DVIPS) \$< -o \$@

EOF

