# Sketchy Makefile, Unix version

V=	12
PL=
DATE=	20060305

PREFIX?=/usr/local
BINOWN?=bin
BINGRP?=bin

BINDIR=	$(PREFIX)/bin
SHRDIR=	$(PREFIX)/share/sketchy
MANDIR=	$(PREFIX)/man/man7
DOCDIR=	$(PREFIX)/share/doc/sketchy

NODIST=	.distfiles

CFLAGS=		-O -DSIGNAL
LINTFLAGS=	-Wall -ansi -pedantic -Wmissing-prototypes

all:	sketchy sketchy.image doc/library

sketchy:	sketchy.c
	$(CC) $(CFLAGS) -o sketchy sketchy.c

lint:
	$(CC) $(LINTFLAGS) -o sketchy sketchy.c

sketchy.image:	lib
	echo ':load lib/sketchy.l' >mkimage
	echo ':dump-image sketchy.image' >>mkimage
	echo ':quit' >>mkimage
	./sketchy -b <mkimage
	rm -f mkimage

doc/library:	lib util/mkhtml util/mkhtml.awk util/mkindx.awk util/libhdr
	util/mkhtml

test:	sketchy
	rm -f ___test___
	./sketchy <util/test.l | tee _test
	-diff util/test.OK _test
	rm -i _test

# Set $C to -c, if your system does not copy files by default.
C=
install:
	strip sketchy
	install -o $(BINOWN) -g $(BINGRP) -d -m 0755 $(SHRDIR)
	install -o $(BINOWN) -g $(BINGRP) -d -m 0755 $(SHRDIR)/lib
	install -o $(BINOWN) -g $(BINGRP) -d -m 0755 $(SHRDIR)/src
	install -o $(BINOWN) -g $(BINGRP) -d -m 0755 $(DOCDIR)
	install -o $(BINOWN) -g $(BINGRP) -d -m 0755 $(DOCDIR)/library
	install -o $(BINOWN) -g $(BINGRP) $C -m 0755 sketchy $(BINDIR)
	install -o $(BINOWN) -g $(BINGRP) $C -m 0644 sketchy.image $(SHRDIR)
	install -o $(BINOWN) -g $(BINGRP) $C -m 0644 lib/*.l $(SHRDIR)/lib
	install -o $(BINOWN) -g $(BINGRP) $C -m 0644 src/*.l $(SHRDIR)/src
	install -o $(BINOWN) -g $(BINGRP) $C -m 0644 doc/sketchy.7 $(MANDIR)
	install -o $(BINOWN) -g $(BINGRP) $C -m 0644 doc/*.html $(DOCDIR)
	install -o $(BINOWN) -g $(BINGRP) $C -m 0644 doc/*.css $(DOCDIR)
	install -o $(BINOWN) -g $(BINGRP) $C -m 0644 doc/library/*.html \
		$(DOCDIR)/library
	install -o $(BINOWN) -g $(BINGRP) $C -m 0644 LICENSE $(SHRDIR)
	sed -e "s,\./sketchy.image,$(PREFIX)/share/sketchy/sketchy.image," \
			<dist/sk.sh >$(BINDIR)/sk \
		&& chmod 0755 $(BINDIR)/sk \
		&& chown $(BINOWN):$(BINGRP) $(BINDIR)/sk

sketchy-$(DATE).tar.gz:
	find . -type f >.distfiles
	mkdir sketchy-$(DATE)
	tar cfT - .distfiles | tar xfC - sketchy-$(DATE)
	(cd sketchy-$(DATE); rm -f $(NODIST))
	tar cf - sketchy-$(DATE) | gzip -9c > sketchy-$(DATE).tar.gz
	zip -q9ry sketchy-$(DATE).zip sketchy-$(DATE)
	rm -r sketchy-$(DATE)
	rm -f .distfiles

sketchy-$(DATE).zip: sketchy-$(DATE).tar.gz

sketchy-$(DATE)-freebsd-386.tar.gz:	all
	$(CC) $(CFLAGS) -static -o sketchy sketchy.c
	strip sketchy
	dist/makedist sketchy sketchy-$(DATE)-freebsd-386.tar

sketchy-$(DATE)-linux-386.tar.gz:	all
	/usr/compat/linux/usr/bin/cc $(CFLAGS) -static -o sketchy sketchy.c
	/usr/compat/linux/usr/bin/strip sketchy
	brandelf -f 3 sketchy
	dist/makedist sketchy sketchy-$(DATE)-linux-386.tar

sketchy-$(DATE)-win-386.exe:	all
	dist/makedist -dos dist/sketchy-bin.exe sketchy-$(DATE)-win-386

dists:		sketchy-$(DATE).tar.gz \
		sketchy-$(DATE).zip \
		sketchy-$(DATE)-freebsd-386.tar.gz \
		sketchy-$(DATE)-linux-386.tar.gz \
		sketchy-$(DATE)-win-386.exe
	ls -l $> | \
		awk '{ printf "%5dK bytes %s\n", ($$5 + 1023) / 1024, $$9 }'

csums:
	txsum -u <_checksums >_checksums.new
	mv -i _checksums.new _checksums

clean:
	rm -f _sketchy.t *.o tmp/* *.core core sketchy ___test___ \
		sketchy.image mkimage sketchy.exe \
		sketchy$V$(PL).tgz \
		sketchy-$(DATE).tar.gz sketchy-$(DATE).zip \
		sketchy-$(DATE)-freebsd-386.tar.gz \
		sketchy-$(DATE)-linux-386.tar.gz \
		sketchy-$(DATE)-win-386.exe
	rm -rf doc/library

mksums:	clean
	find . -type f | grep -v _checksums | grep -v sketchy$V$(PL).zip \
		| sort | txsum -m >_checksums

distinfo:
	md5 sketchy-$(DATE).tar.gz >freebsd-port/distinfo
	sha256 sketchy-$(DATE).tar.gz >>freebsd-port/distinfo
	echo -n "SIZE (sketchy-$(DATE).tar.gz) = " \
		>>freebsd-port/distinfo
	ls -l sketchy-$(DATE).tar.gz | awk '{print $$5}' \
		>>freebsd-port/distinfo

arc:	clean
	tar cvfz sketchy$V$(PL).tgz *

