#!/bin/sh

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

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
datarootdir = $datarootdir
datadir = $datadir
sysconfdir = $sysconfdir
sharedstatedir = $sharestatedir
localstatedir = $localstatedir

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

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

PROGRAMS = tok sen fla gph kot unfla grp mar ser kon rm12 rs12
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)

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)

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

.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: install
install: all

.PHONY: install-strip
install:

.PHONY: info
info: utt.info

.PHONY: install-info
install-info:

.PHONY: dvi
dvi: utt.dvi

.PHONY: install-dvi
install-dvi:

.PHONY: html
html: utt.html

.PHONY: install-html
install-html:

.PHONY: pdf
pdf: utt.pdf

.PHONY: install-pdf
install-pdf:

.PHONY: ps
ps: utt.ps

.PHONY: install-ps
install-ps:
	
.PHONY: uninstall
uninstall:

.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