1#
2# Filter makefile for CUPS.
3#
4# Copyright 2007-2012 by Apple Inc.
5# Copyright 1997-2006 by Easy Software Products.
6#
7# These coded instructions, statements, and computer programs are the
8# property of Apple Inc. and are protected by Federal copyright
9# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
10# which should have been included with this file.  If this file is
11# missing or damaged, see the license at "http://www.cups.org/".
12#
13# This file is subject to the Apple OS-Developed Software exception.
14#
15
16include ../Makedefs
17
18
19FILTERS	=	\
20		commandtops \
21		gziptoany \
22		pstops \
23		rastertoepson \
24		rastertohp \
25		rastertolabel \
26		rastertopwg
27LIBTARGETS =	\
28		$(LIBCUPSIMAGE) \
29		libcupsimage.a
30UNITTARGETS =	\
31		rasterbench \
32		testraster
33TARGETS	=	\
34		$(LIBTARGETS) \
35		$(FILTERS)
36
37IMAGEOBJS =	error.o interpret.o raster.o
38OBJS	=	$(IMAGEOBJS) \
39		commandtops.o gziptoany.o common.o pstops.o \
40		rasterbench.o rastertoepson.o rastertohp.o rastertolabel.o \
41		rastertopwg.o testraster.o
42
43
44#
45# Make all targets...
46#
47
48all:	$(TARGETS)
49
50
51#
52# Make library targets...
53#
54
55libs:		$(LIBTARGETS)
56
57
58#
59# Make unit tests...
60#
61
62unittests:	$(UNITTARGETS)
63
64
65#
66# Clean all object files...
67#
68
69clean:
70	$(RM) $(OBJS) $(TARGETS) $(UNITTARGETS)
71	$(RM) libcupsimage.so libcupsimage.sl libcupsimage.dylib
72
73
74#
75# Update dependencies (without system header dependencies...)
76#
77
78depend:
79	$(CC) -MM $(ALL_CFLAGS) $(OBJS:.o=.c) >Dependencies
80
81
82#
83# Install all targets...
84#
85
86install:	all install-data install-headers install-libs install-exec
87
88
89#
90# Install data files...
91#
92
93install-data:
94
95
96#
97# Install programs...
98#
99
100install-exec:
101	$(INSTALL_DIR) -m 755 $(SERVERBIN)/filter
102	for file in $(FILTERS); do \
103		$(INSTALL_BIN) $$file $(SERVERBIN)/filter; \
104	done
105	$(RM) $(SERVERBIN)/filter/rastertodymo
106	$(LN) rastertolabel $(SERVERBIN)/filter/rastertodymo
107	if test "x$(SYMROOT)" != "x"; then \
108		$(INSTALL_DIR) $(SYMROOT); \
109		for file in $(FILTERS); do \
110			cp $$file $(SYMROOT); \
111			dsymutil $(SYMROOT)/$$file; \
112		done \
113	fi
114
115
116#
117# Install headers...
118#
119
120install-headers:
121
122
123#
124# Install libraries...
125#
126
127install-libs: $(INSTALLSTATIC)
128	$(INSTALL_DIR) -m 755 $(LIBDIR)
129	$(INSTALL_LIB) $(LIBCUPSIMAGE) $(LIBDIR)
130	-if test $(LIBCUPSIMAGE) = "libcupsimage.so.2" -o $(LIBCUPSIMAGE) = "libcupsimage.sl.2"; then \
131		$(RM) $(LIBDIR)/`basename $(LIBCUPSIMAGE) .2`; \
132		$(LN) $(LIBCUPSIMAGE) $(LIBDIR)/`basename $(LIBCUPSIMAGE) .2`; \
133	fi
134	-if test $(LIBCUPSIMAGE) = "libcupsimage.2.dylib"; then \
135		$(RM) $(LIBDIR)/libcupsimage.dylib; \
136		$(LN) $(LIBCUPSIMAGE) $(LIBDIR)/libcupsimage.dylib; \
137	fi
138	if test "x$(SYMROOT)" != "x"; then \
139		$(INSTALL_DIR) $(SYMROOT); \
140		cp $(LIBCUPSIMAGE) $(SYMROOT); \
141		dsymutil $(SYMROOT)/$(LIBCUPSIMAGE); \
142	fi
143
144installstatic:
145	$(INSTALL_DIR) -m 755 $(LIBDIR)
146	$(INSTALL_LIB) -m 755 libcupsimage.a $(LIBDIR)
147	$(RANLIB) $(LIBDIR)/libcupsimage.a
148	$(CHMOD) 555 $(LIBDIR)/libcupsimage.a
149
150
151#
152# Uninstall all targets...
153#
154
155uninstall:
156	for file in $(FILTERS); do \
157		$(RM) $(SERVERBIN)/filter/$$file; \
158	done
159	$(RM) $(SERVERBIN)/filter/rastertodymo
160	-$(RMDIR) $(SERVERBIN)/filter
161	-$(RMDIR) $(SERVERBIN)
162	$(RM) $(LIBDIR)/libcupsimage.2.dylib
163	$(RM) $(LIBDIR)/libcupsimage.a
164	$(RM) $(LIBDIR)/libcupsimage.dylib
165	$(RM) $(LIBDIR)/libcupsimage_s.a
166	$(RM) $(LIBDIR)/libcupsimage.sl
167	$(RM) $(LIBDIR)/libcupsimage.sl.2
168	$(RM) $(LIBDIR)/libcupsimage.so
169	$(RM) $(LIBDIR)/libcupsimage.so.2
170	-$(RMDIR) $(LIBDIR)
171
172
173#
174# Automatic API help files...
175#
176
177apihelp:
178	echo Generating CUPS API help files...
179	mxmldoc --section "Programming" --title "Raster API" \
180		--css ../doc/cups-printable.css \
181		--header api-raster.header --intro api-raster.shtml \
182		api-raster.xml \
183		../cups/raster.h interpret.c raster.c \
184		>../doc/help/api-raster.html
185	mxmldoc --tokens help/api-raster.html api-raster.xml >../doc/help/api-raster.tokens
186	$(RM) api-raster.xml
187	mxmldoc --section "Programming" \
188		--title "Developing PostScript Printer Drivers" \
189		--css ../doc/cups-printable.css \
190		--header postscript-driver.header \
191		--intro postscript-driver.shtml \
192		>../doc/help/postscript-driver.html
193	mxmldoc --section "Programming" \
194		--title "Introduction to the PPD Compiler" \
195		--css ../doc/cups-printable.css \
196		--header ppd-compiler.header \
197		--intro ppd-compiler.shtml \
198		>../doc/help/ppd-compiler.html
199	mxmldoc --section "Programming" \
200		--title "Developing Raster Printer Drivers" \
201		--css ../doc/cups-printable.css \
202		--header raster-driver.header \
203		--intro raster-driver.shtml \
204		>../doc/help/raster-driver.html
205	mxmldoc --section "Specifications" \
206		--title "CUPS PPD Extensions" \
207		--css ../doc/cups-printable.css \
208		--header spec-ppd.header \
209		--intro spec-ppd.shtml \
210		>../doc/help/spec-ppd.html
211
212
213#
214# commandtops
215#
216
217commandtops:	commandtops.o ../cups/$(LIBCUPS)
218	echo Linking $@...
219	$(CC) $(LDFLAGS) -o $@ commandtops.o $(LIBS)
220
221
222#
223# gziptoany
224#
225
226gziptoany:	gziptoany.o ../Makedefs ../cups/$(LIBCUPS)
227	echo Linking $@...
228	$(CC) $(LDFLAGS) -o $@ gziptoany.o $(LIBZ) $(LIBS)
229
230
231#
232# libcupsimage.so.2, libcupsimage.sl.2
233#
234
235libcupsimage.so.2 libcupsimage.sl.2:	$(IMAGEOBJS)
236	echo Linking $@...
237	$(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(IMAGEOBJS) $(DSOLIBS) \
238		-L../cups $(LINKCUPS)
239	$(RM) `basename $@ .2`
240	$(LN) $@ `basename $@ .2`
241
242
243#
244# libcupsimage.2.dylib
245#
246
247libcupsimage.2.dylib:	$(IMAGEOBJS) $(LIBCUPSIMAGEORDER)
248	echo Linking $@...
249	$(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ \
250		-install_name $(libdir)/$@ \
251		-current_version 2.3.0 \
252		-compatibility_version 2.0.0 \
253		$(IMAGEOBJS) $(DSOLIBS) -L../cups $(LINKCUPS)
254	$(RM) libcupsimage.dylib
255	$(LN) $@ libcupsimage.dylib
256
257
258#
259# libcupsimage_s.a
260#
261
262libcupsimage_s.a:	$(IMAGEOBJS) libcupsimage_s.exp
263	echo Linking $@...
264	$(DSO) $(DSOFLAGS) -Wl,-berok,-bexport:libcupsimage_s.exp \
265		-o libcupsimage_s.o $(IMAGEOBJS) $(DSOLIBS)
266	$(RM) $@
267	$(AR) $(ARFLAGS) $@ libcupsimage_s.o
268
269
270#
271# libcupsimage.la
272#
273
274libcupsimage.la:       $(IMAGEOBJS)
275	echo Linking $@...
276	$(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(IMAGEOBJS:.o=.lo) $(DSOLIBS) \
277		-L../cups $(LINKCUPS) \
278		-rpath $(LIBDIR) -version-info 2:3
279
280
281#
282# libcupsimage.a
283#
284
285libcupsimage.a:	$(IMAGEOBJS)
286	echo Archiving $@...
287	$(RM) $@
288	$(AR) $(ARFLAGS) $@ $(IMAGEOBJS)
289	$(RANLIB) $@
290
291
292#
293# pstops
294#
295
296pstops:	pstops.o common.o ../cups/$(LIBCUPS)
297	echo Linking $@...
298	$(CC) $(LDFLAGS) -o $@ pstops.o common.o $(LIBS)
299
300
301#
302# rastertoepson
303#
304
305rastertoepson:	rastertoepson.o ../cups/$(LIBCUPS) $(LIBCUPSIMAGE)
306	echo Linking $@...
307	$(CC) $(LDFLAGS) -o $@ rastertoepson.o $(LINKCUPSIMAGE) $(IMGLIBS) $(LIBS)
308
309
310#
311# rastertohp
312#
313
314rastertohp:	rastertohp.o ../cups/$(LIBCUPS) $(LIBCUPSIMAGE)
315	echo Linking $@...
316	$(CC) $(LDFLAGS) -o $@ rastertohp.o $(LINKCUPSIMAGE) $(IMGLIBS) $(LIBS)
317
318
319#
320# rastertolabel
321#
322
323rastertolabel:	rastertolabel.o ../cups/$(LIBCUPS) $(LIBCUPSIMAGE)
324	echo Linking $@...
325	$(CC) $(LDFLAGS) -o $@ rastertolabel.o $(LINKCUPSIMAGE) $(IMGLIBS) $(LIBS)
326
327
328#
329# rastertopwg
330#
331
332rastertopwg:	rastertopwg.o ../cups/$(LIBCUPS) $(LIBCUPSIMAGE)
333	echo Linking $@...
334	$(CC) $(LDFLAGS) -o $@ rastertopwg.o $(LINKCUPSIMAGE) $(IMGLIBS) $(LIBS)
335
336rastertopwg-static:	rastertopwg.o ../cups/$(LIBCUPSSTATIC) libcupsimage.a
337	echo Linking $@...
338	$(CC) $(LDFLAGS) -o $@ rastertopwg.o libcupsimage.a \
339		../cups/$(LIBCUPSSTATIC) $(IMGLIBS) $(DSOLIBS) $(COMMONLIBS) \
340		$(SSLLIBS) $(DNSSDLIBS) $(LIBGSSAPI)
341
342
343#
344# testraster
345#
346
347testraster:	testraster.o ../cups/$(LIBCUPSSTATIC) libcupsimage.a
348	echo Linking $@...
349	$(CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ testraster.o libcupsimage.a \
350		../cups/$(LIBCUPSSTATIC) $(IMGLIBS) $(DSOLIBS) $(COMMONLIBS) \
351		$(SSLLIBS) $(DNSSDLIBS) $(LIBGSSAPI)
352	echo Running raster API tests...
353	./testraster
354
355
356#
357# rasterbench
358#
359
360rasterbench:	rasterbench.o libcupsimage.a
361	echo Linking $@...
362	$(CC) $(LDFLAGS) -o $@ rasterbench.o libcupsimage.a $(LIBS)
363
364
365#
366# Dependencies...
367#
368
369include Dependencies
370