summaryrefslogtreecommitdiff
path: root/Build/extra/epstopdf/Makefile
blob: c5f618bce0f2370d12e314de810ffdd76e64ac4a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
# $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: check

$(re2p_script):
	ln -s $(prg).pl $@

# 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-usage \
       check-atend \
       check-binary check-bin2 \
       check-binhdr-lf check-binhdr-cr check-binhdr-crlf \
       check-filter check-filter-outfile \
       check-gray \
       check-gscmd check-gsopt check-gsopts \
       check-nogs \
       check-output \
       check-pdfversion \
       check-percent \
       check-restricted-device \
       check-restricted-gscmd \
       check-restricted-safe-in check-restricted-safe-out \
       check-simple \
       check-tn5002 \
       check-write-error \

check-help:
	$(e2p) --help

check-version:
	$(e2p) --version

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

check-usage:
	! $(e2p)                 # no args
	! $(e2p) arg1 arg2 arg3  # too many args
	! $(e2p) --nonesuch      # no option

check-restricted-device: $(re2p_script)
	! $(re2p) --device=unsafe test-simple.eps

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

check-restricted-gsopt: $(re2p_script)
	$(re2p) --gsopt=-dAutoFilterColorImages=true test-simple.eps
	! $(re2p) --gsopt=-dNOSAFER=false test-simple.eps

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

check-restricted-safe-out: $(re2p_script)
	! $(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-gray:
	$(e2p) --gray test-tiger.eps
	pdfinfo test-tiger.pdf | grep "Page size:"

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

check-gscmd:
	! $(e2p) --gscmd=false test-simple.eps
	! $(e2p) --gscmd='foo bar' test-simple.eps

check-gsopt:
	! $(e2p) --gscmd=false --gsopt=foo --gsopt=bar test-simple.eps
	! $(e2p) --restricted --gsopt=bar test-simple.eps

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

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
	
check-output: $(re2p_script)
	$(re2p) test-simple.eps -o test-p.pdf               # not if restricted
	# should do this everywhere -- remove first, validate after.
	#rm -f test-o.pdf; $(e2p) -o test-o.pdf test-simple.eps; pdfinfo test-o.pdf
	$(e2p) -o test-o.pdf test-simple.eps
	$(e2p) --outfile test-o.pdf test-simple.eps
	$(e2p) --outfile=test-o.pdf test-simple.eps
	$(e2p) --output test-o.pdf test-simple.eps
	$(e2p) test-simple.eps test-p.pdf
	$(re2p) test-simple.eps test-p.pdf
	! $(e2p) test-simple.eps test-p.pdg                # not .pdf
	! $(e2p) -o test-o.pdf test-simple.eps test-p.pdf  # two methods

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-pdfversion:
	$(e2p) test-simple.eps 
	pdfinfo test-simple.pdf | grep '^PDF version.*1\.5$$'
	$(e2p) --gsopt=-dCompatibilityLevel=1.4 test-simple.eps
	pdfinfo test-simple.pdf | grep '^PDF version.*1\.4$$'

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

# subtarget for simple test that conversion of $(file) works.
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.