XCOMM Imakefile for xlife 6.7
XCOMM tested with various Linuxes (Debian 6, Raspbian, Slackware 14, Mandriva 2010, 
XCOMM   ZenWalk 6.4, OpenSUSE 12.3), OpenBSD 5.3, NetBSD 6.1, FreeBSD 9.1, Cygwin NT 5.1

#ifdef CygxVersionMajor
XLIFE		= xlife.exe
PROGRAMS	= $(XLIFE) gen-multirules.exe lifeconv
BINDIR		= /usr/local/bin
#else
XLIFE		= xlife
PROGRAMS	= $(XLIFE) gen-multirules lifeconv
BINDIR		= /usr/games
#endif

#define xpatsdir_root /usr/share/xlife

XLIFEPATSDIR	= xpatsdir_root/patterns
CCOPTIONS	= -DLIFEDIR=\"$(XLIFEPATSDIR)\" -DHASHBITS=20 -DVFREQ=50
CDEBUGFLAGS	= -g -O5
EXTRA_LIBRARIES	= -lm
DOCDIR		= /usr/share/doc/xlife/
INSTBINFLAGS	= -m 0755
INSTPGMFLAGS	= -s $(INSTBINFLAGS)
INSTMANFLAGS	= -m 0444
INSTDATFLAGS	= -m 0644
MANDIR		= /usr/share/man/man6
MANSUFFIX	= 6

OBJS1 = cell.o\
	clipboard.o\
	collect.o\
	colors.o\
	data.o\
	file.o\
	file_misc.o\
	framebuffer.o\
	generate.o\
	gentab.o\
	help.o\
	history.o\
	isave.o\
	key.o\
	main.o\
	tentative.o\
	tile.o\
	topology.o\
	utils.o\
	xwidget.o

COMMON1 = common.h defs.h
COMMON2 = $(COMMON1) tile.h
COMMON3 = $(COMMON2) colors.h
COMMON4 = $(COMMON3) file.h

AllTarget($(PROGRAMS) table2r.script XLIFE-HISTORY.svg)
ComplexProgramTarget_1(xlife,$(XONLYLIB),)
NormalProgramTarget(gen-multirules,gen-multirules.o,,,)
InstallProgram(gen-multirules,$(BINDIR))
InstallScript(table2r,$(BINDIR))
LinkFile(lifeconv,$(XLIFE))
InstallManPageAliases(xlife,$(MANDIR),lifeconv)

help.h: help.text
	sed <help.text -e '/\\[^n]/s//\\&/g' -e '/.*/s//"&",/' >help.h

cell.o: cell.c framebuffer.h $(COMMON3)
clipboard.o: clipboard.c clipboard.h $(COMMON3)
collect.o: collect.c file.h $(COMMON1) colors.h
colors.o: colors.c colors.h $(COMMON1)
data.o: data.c $(COMMON1)
file.o: file.c topology.h $(COMMON4)
file_misc.o: file_misc.c $(COMMON2)
framebuffer.o: framebuffer.c colors.h history.h $(COMMON1)
generate.o: generate.c tab.h topology.h $(COMMON4)
gentab.o: gentab.c $(COMMON1)
help.o: help.c help.h history.h file.h $(COMMON2)
history.o: history.h $(COMMON2)
isave.o: isave.c file.h $(COMMON2)
key.o: key.c $(COMMON2)
main.o: main.c framebuffer.h history.h patchlevel.h icon.h cursor.h clipboard.h\
		topology.h xwidget.h $(COMMON4)
tentative.o: tentative.c $(COMMON2)
tile.o: tile.c framebuffer.h history.h patchlevel.h topology.h $(COMMON4)
topology.o: topology.c $(COMMON3)
utils.o: utils.c $(COMMON3)
xwidget.o: xwidget.c xwidget.h $(COMMON4)

table2r.script: table2r
	sed 1s!GAWKPATH!$(shell which gawk)! <table2r >table2r.script

XLIFE-HISTORY.svg: XLIFE-HISTORY.dot
	-dot -Tsvg -o XLIFE-HISTORY.svg XLIFE-HISTORY.dot

install:: install.man install.doc install.patterns
	rm -f $(DESTDIR)$(BINDIR)/lifeconv
	ln $(DESTDIR)$(BINDIR)/$(XLIFE) $(DESTDIR)$(BINDIR)/lifeconv

install.patterns:
	mkdir -p -m 755 xpatsdir_root
	cp -R patterns xpatsdir_root

install.doc:
	mkdir -p -m 755 $(DOCDIR)doc
	cp -R doc $(DOCDIR)
	cp XLIFE-HISTORY.* CHANGES HACKING INSTALL README MISSED SHORT-INFO\
		changelog.debian changelog.openbsd HOW-TO-INSTALL $(DOCDIR)

uninstall:
	@(set -x;rm -rf xpatsdir_root)
	@(set -x;rm -rf $(DOCDIR))
#ifdef CygxVersionMajor
	rm -f $(DESTDIR)$(MANDIR)/xlife.6 $(DESTDIR)$(MANDIR)/gen-multirules.6\
		$(DESTDIR)$(BINDIR)/table2r $(DESTDIR)$(BINDIR)/xlife.exe\
		$(DESTDIR)$(BINDIR)/gen-multirules.exe
#else
	for i in $(PROGRAMS) table2r;do\
		rm -f $(DESTDIR)$(BINDIR)/$$i $(DESTDIR)$(MANDIR)/$$i.*; done
#endif

clean::
	$(RM) help.h *.svg *.script
