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

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

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 = ./src

PROGRAMS = tok

TOK_OBJ_FILES = tok.o tok_cmdline.o
TOK_FLEX_FILES = tok.l
TOK_GGO_FILES = tok_cmdline.ggo
tok.o: tok_cmdline.h

CONFIG_FILES = src/config.h Makefile

.SUFFIXES:
.SUFFIXES: .l .y .h .c .o

.INTERMEDIATE: \$(patsubst %.l,%.c,\$(TOK_FLEX_FILES))
.INTERMEDIATE: \$(patsubst %.ggo,%.c,\$(TOK_GGO_FILES))
.INTERMEDIATE: \$(patsubst %.ggo,%.h,\$(TOK_GGO_FILES))

.PHONY: all
all: \$(PROGRAMS)


.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: 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))

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

.PHONY: install
install: all
	echo TODO: make install
	
.PHONY: uninstall
uninstall:
	echo TODO: make uninstall

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

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

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

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

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

tok: \$(TOK_OBJ_FILES)

EOF