# $Id$
# This file is public domain.  (Originally written by Karl Berry, 2009.)

prg = epstopdf
e2p = ./$(prg).pl #--debug
re2p = ./r$(prg) --restricted
re2p_script = ./r$(prg)

default: 

# These are not comprehensive tests by any means.  Mostly we're just
# making sure we don't crash.
check: check-help check-version \
       check-help-r \
       check-nogs \
       check-restricted-gscmd \
       check-gscmd check-gsopt check-gsopts \
       check-filter check-filter-outfile check-write-error check-gscmd \
       check-restricted-safe-in check-restricted-safe-out \
       check-simple check-atend check-binary check-bin2 \
       check-binhdr-lf check-binhdr-cr check-binhdr-crlf \
       check-percent \
       check-tn5002 #check-floral

check-help:
	$(e2p) --help

check-version:
	$(e2p) --version

check-help-r: $(re2p_script)
	$(re2p_script) --help | grep restricted  # should have default=true

check-nogs:
	$(e2p) --no-gs test-simple.eps >test-simple.out
# the two files should be different:
	cmp -s test-simple.eps test-simple.out || exit 0
	
$(re2p_script):
	ln -s $(prg).pl $@

check-restricted-gscmd:
	! $(re2p) --gscmd=/bin/unsafe test-simple.eps
	! $(re2p) --gscmd=unsafe test-simple.eps

check-restricted-safe-in:
	! $(re2p) /unsafe/in.eps

check-restricted-safe-out:
	! $(re2p) test-simple.eps -o /unsafe/out.eps

check-filter:
	cat test-simple.eps | $(e2p) --filter >test-filter.pdf
	pdfinfo test-filter.pdf | grep "Page size:"

check-filter-outfile:
	rm -f test-filter.pdf
	cat test-simple.eps | $(e2p) --filter --outfile=test-filter.pdf
	pdfinfo test-filter.pdf | grep "Page size:"
#
	rm -f test-filter.pdf
	cat test-simple.eps | $(e2p) --outfile=test-filter.pdf --filter
	pdfinfo test-filter.pdf | grep "Page size:"

check-write-error:
	-$(e2p) test-simple.eps --outfile=/dev/full

check-gscmd:
	-$(e2p) --gscmd=true test-simple.eps
	-$(e2p) --gscmd='foo bar' test-simple.eps # fails

check-gsopt:
	-$(e2p) --gscmd=echo --gsopt=foo --gsopt=bar test-simple.eps
	-$(e2p) --restricted --gsopt=bar test-simple.eps # fails

check-gsopts:
	-$(e2p) --gscmd=echo --gsopts='foo bar' test-simple.eps
	-$(e2p) --restricted --gsopts=bar test-simple.eps # fails

check-simple:
	$(MAKE) file=test-simple check1

check-atend:
	$(MAKE) file=test-atend check1

check-binary:
	$(MAKE) file=test-binary check1

check-bin2:
	$(MAKE) file=test-bin2 check1

check-binhdr-lf:
	$(MAKE) file=test-binhdr-lf check1

check-binhdr-cr:
	$(MAKE) file=test-binhdr-cr check1

check-binhdr-crlf:
	$(MAKE) file=test-binhdr-crlf check1

check-percent:
	$(MAKE) file=test-per%cent check1
	test -s test-per%cent.pdf

check-tn5002:
	$(MAKE) file=test-tn5002-cr check1
	$(MAKE) file=test-tn5002-crlf check1
	$(MAKE) file=test-tn5002-lf check1

# complicated, from http://www.vectorfloral.com/floral-swirly-flowers-with-butterflies-vector-graphic-174.html
# another, even bigger, is at http://www.backgroundvector.com/abstract-colorful-background-vector-image-94.html
# both are CC-BY 3.0.
check-floral:
	$(MAKE) file=test-floral check1

check1:
	$(e2p) $(file).eps 
	pdfinfo $(file).pdf | grep "Page size"

# put tar contents in a directory for CTAN.
dist: $(prg).tar.gz $(prg).html
.PHONY: dist
$(prg).tar.gz: README $(prg).pl $(prg).1 r$(prg).1 $(prg).man1.pdf
	rm -rf $(prg); mkdir $(prg)
	cp $^ $(prg)
	tar cvzf $(prg).tar.gz $(prg)
	rm -rf $(prg)
	# upload .tar.gz to ctan.org/upload, mv .html ~www/$(prg).

groff = groff
groff_opts = -man -t
pspdf = ps2pdf -sPAPERSIZE=a4
$(prg).man1.pdf: $(prg).1
	$(groff) $(groff_opts) $< | $(pspdf) - $@
$(prg).html: $(prg).1
	$(groff) $(groff_opts) -Thtml $< >$@
show-man:
	man ./$(prg).1 | col -b
#	$(groff) $(groff_opts) -Tascii -M. -mraggedright -P-cbouU $(prg).1
# -P-c... avoids ANSI color sequences and backspaces in the output.
