]> git.ipfire.org Git - thirdparty/cups.git/blob - ppdc/Makefile
Sync up with CUPS 1.7svn-r10893
[thirdparty/cups.git] / ppdc / Makefile
1 #
2 # "$Id$"
3 #
4 # Makefile for the CUPS PPD Compiler.
5 #
6 # Copyright 2007-2012 by Apple Inc.
7 # Copyright 2002-2006 by Easy Software Products.
8 #
9 # These coded instructions, statements, and computer programs are the
10 # property of Apple Inc. and are protected by Federal copyright
11 # law. Distribution and use rights are outlined in the file "LICENSE.txt"
12 # which should have been included with this file. If this file is
13 # file is missing or damaged, see the license at "http://www.cups.org/".
14 #
15
16 #
17 # Include standard definitions...
18 #
19
20 include ../Makedefs
21
22
23 #
24 # Object files...
25 #
26
27 LIBOBJS = \
28 ppdc-array.o \
29 ppdc-attr.o \
30 ppdc-catalog.o \
31 ppdc-choice.o \
32 ppdc-constraint.o \
33 ppdc-driver.o \
34 ppdc-file.o \
35 ppdc-filter.o \
36 ppdc-font.o \
37 ppdc-group.o \
38 ppdc-import.o \
39 ppdc-mediasize.o \
40 ppdc-message.o \
41 ppdc-option.o \
42 ppdc-profile.o \
43 ppdc-shared.o \
44 ppdc-source.o \
45 ppdc-string.o \
46 ppdc-variable.o
47 OBJS = \
48 $(LIBOBJS) \
49 genstrings.o \
50 ppdc.o \
51 ppdhtml.o \
52 ppdi.o \
53 ppdmerge.o \
54 ppdpo.o \
55 testcatalog.o
56 LIBTARGETS = \
57 $(LIBCUPSPPDC) \
58 libcupsppdc.a
59 UNITTARGETS = \
60 ppdc-static \
61 ppdi-static \
62 testcatalog
63 EXECTARGETS = \
64 ppdc \
65 ppdhtml \
66 ppdi \
67 ppdmerge \
68 ppdpo
69
70 TARGETS = \
71 $(LIBTARGETS) \
72 $(EXECTARGETS) \
73 genstrings
74
75
76 #
77 # Make everything...
78 #
79
80 all: $(TARGETS)
81
82
83 #
84 # Make library targets...
85 #
86
87 libs: $(LIBTARGETS)
88
89
90 #
91 # Make unit tests...
92 #
93
94 unittests: $(UNITTARGETS)
95
96
97 #
98 # Clean everything...
99 #
100
101 clean:
102 $(RM) $(OBJS) core
103 $(RM) *.bak *.bck core.*
104 $(RM) $(TARGETS) $(UNITTARGETS)
105 $(RM) -r ppd ppd2
106 $(RM) sample-import.drv sample.c test.drv
107 $(RM) libcupsppdc.so libcupsppdc.sl libcupsppdc.dylib
108
109
110 #
111 # Update dependencies...
112 #
113
114 depend:
115 $(CXX) -MM $(ALL_CXXFLAGS) $(OBJS:.o=.cxx) >Dependencies
116
117
118 #
119 # Install all targets...
120 #
121
122 install: all install-data install-headers install-libs install-exec
123
124
125 #
126 # Install data files...
127 #
128
129 install-data:
130 $(INSTALL_DIR) $(DATADIR)/drv
131 $(INSTALL_DATA) sample.drv $(DATADIR)/drv
132
133
134 #
135 # Install programs...
136 #
137
138 install-exec:
139 echo Installing PPD compiler programs...
140 $(INSTALL_DIR) $(BINDIR)
141 for file in $(EXECTARGETS); do \
142 $(INSTALL_BIN) $$file $(BINDIR); \
143 done
144 if test "x$(SYMROOT)" != "x"; then \
145 $(INSTALL_DIR) $(SYMROOT); \
146 for file in $(EXECTARGETS); do \
147 cp $$file $(SYMROOT); \
148 dsymutil $(SYMROOT)/$$file; \
149 done \
150 fi
151
152
153 #
154 # Install headers...
155 #
156
157 install-headers:
158 echo Installing header files in $(INCLUDEDIR)/cups...
159 $(INSTALL_DIR) -m 755 $(INCLUDEDIR)/cups
160 $(INSTALL_DATA) ppdc.h $(INCLUDEDIR)/cups
161
162
163 #
164 # Install libraries...
165 #
166
167 install-libs: $(INSTALLSTATIC)
168 echo Installing libraries in $(LIBDIR)...
169 $(INSTALL_DIR) -m 755 $(LIBDIR)
170 $(INSTALL_LIB) $(LIBCUPSPPDC) $(LIBDIR)
171 if test $(LIBCUPSPPDC) = "libcupsppdc.so.1" -o $(LIBCUPSPPDC) = "libcupsppdc.sl.1"; then \
172 $(RM) $(LIBDIR)/`basename $(LIBCUPSPPDC) .1`; \
173 $(LN) $(LIBCUPSPPDC) $(LIBDIR)/`basename $(LIBCUPSPPDC) .1`; \
174 fi
175 if test $(LIBCUPSPPDC) = "libcupsppdc.1.dylib"; then \
176 $(RM) $(LIBDIR)/libcupsppdc.dylib; \
177 $(LN) $(LIBCUPSPPDC) $(LIBDIR)/libcupsppdc.dylib; \
178 fi
179 if test "x$(SYMROOT)" != "x"; then \
180 $(INSTALL_DIR) $(SYMROOT); \
181 cp $(LIBCUPSPPDC) $(SYMROOT); \
182 dsymutil $(SYMROOT)/$(LIBCUPSPPDC); \
183 fi
184
185 installstatic:
186 $(INSTALL_DIR) -m 755 $(LIBDIR)
187 $(INSTALL_LIB) -m 755 libcupsppdc.a $(LIBDIR)
188 $(RANLIB) $(LIBDIR)/libcupsppdc.a
189 $(CHMOD) 555 $(LIBDIR)/libcupsppdc.a
190
191
192 #
193 # Uninstall...
194 #
195
196 uninstall:
197 for file in $(EXECTARGETS); do \
198 $(RM) $(BINDIR)/$$file; \
199 done
200 $(RM) $(DATADIR)/drv/sample.drv
201 $(RMDIR) $(DATADIR)/drv
202 $(RM) $(LIBDIR)/libcupsppdc.1.dylib
203 $(RM) $(LIBDIR)/libcupsppdc.a
204 $(RM) $(LIBDIR)/libcupsppdc.dylib
205 $(RM) $(LIBDIR)/libcupsppdc_s.a
206 $(RM) $(LIBDIR)/libcupsppdc.sl
207 $(RM) $(LIBDIR)/libcupsppdc.sl.1
208 $(RM) $(LIBDIR)/libcupsppdc.so
209 $(RM) $(LIBDIR)/libcupsppdc.so.1
210 -$(RMDIR) $(LIBDIR)
211 $(RM) $(INCLUDEDIR)/cups/ppdc.h
212 -$(RMDIR) $(INCLUDEDIR)/cups
213
214
215 #
216 # Automatic API help files...
217 #
218
219 apihelp:
220 mxmldoc --section "Programming" \
221 --title "PPD Compiler API" \
222 --css ../doc/cups-printable.css \
223 --header api-ppdc.header --intro api-ppdc.shtml \
224 api-ppdc.xml \
225 ppdc.h $(LIBOBJS:.o=.cxx) >../doc/help/api-ppdc.html
226 mxmldoc --tokens help/api-ppdc.html api-ppdc.xml >../doc/help/api-ppdc.tokens
227 $(RM) api-ppdc.xml
228
229 framedhelp:
230 mxmldoc --framed api-ppdc \
231 --section "Programming" \
232 --title "PPD Compiler API" \
233 --css ../doc/cups-printable.css \
234 --header api-ppdc.header --intro api-ppdc.shtml \
235 ppdc.h $(LIBOBJS:.o=.cxx)
236
237
238 #
239 # genstrings - generate GNU gettext strings.
240 #
241
242 genstrings: genstrings.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC) \
243 sample.drv ../data/media.defs
244 echo Linking $@...
245 $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o genstrings genstrings.o \
246 libcupsppdc.a ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) \
247 $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
248 echo Generating localization strings...
249 ./genstrings >sample.c
250
251
252 #
253 # ppdc, the PPD compiler.
254 #
255
256 ppdc: ppdc.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
257 echo Linking $@...
258 $(CXX) $(LDFLAGS) -o $@ ppdc.o -L. -lcupsppdc $(LIBS)
259
260
261 ppdc-static: ppdc.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC) foo.drv foo-fr.po
262 echo Linking $@...
263 $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o ppdc-static ppdc.o libcupsppdc.a \
264 ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
265 $(COMMONLIBS) $(LIBZ)
266 echo Testing PPD compiler...
267 ./ppdc-static -l en,fr -I ../data foo.drv
268 ./ppdc-static -l en,fr -z -I ../data foo.drv
269
270
271 #
272 # ppdhtml, the PPD to HTML utility.
273 #
274
275 ppdhtml: ppdhtml.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
276 echo Linking $@...
277 $(CXX) $(LDFLAGS) -o $@ ppdhtml.o -L. -lcupsppdc $(LIBS)
278
279
280 #
281 # ppdi, import PPD files.
282 #
283
284 ppdi: ppdi.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
285 echo Linking $@...
286 $(CXX) $(LDFLAGS) -o $@ ppdi.o -L. -lcupsppdc $(LIBS)
287
288
289 ppdi-static: ppdc-static ppdi.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC)
290 echo Linking $@...
291 $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o ppdi-static ppdi.o libcupsppdc.a \
292 ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
293 $(COMMONLIBS) $(LIBZ)
294 echo Testing PPD importer...
295 $(RM) -r ppd ppd2 sample-import.drv
296 ./ppdc-static -I ../data sample.drv
297 ./ppdi-static -I ../data -o sample-import.drv ppd/*
298 ./ppdc-static -I ../data -d ppd2 sample-import.drv
299 if diff -r ppd ppd2 >/dev/null; then \
300 echo PPD import OK; \
301 else \
302 echo PPD import FAILED; \
303 exit 1; \
304 fi
305
306
307 #
308 # ppdmerge, merge PPD files.
309 #
310
311 ppdmerge: ppdmerge.o ../cups/$(LIBCUPS)
312 echo Linking $@...
313 $(CXX) $(LDFLAGS) -o $@ ppdmerge.o $(LIBS)
314
315
316 #
317 # ppdpo, create message catalog files.
318 #
319
320 ppdpo: ppdpo.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
321 echo Linking $@...
322 $(CXX) $(LDFLAGS) -o $@ ppdpo.o -L. -lcupsppdc $(LIBS)
323
324
325 #
326 # testcatalog, test ppdcCatalog class.
327 #
328
329 testcatalog: testcatalog.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC)
330 echo Linking $@...
331 $(CXX) $(LDFLAGS) -o $@ testcatalog.o libcupsppdc.a \
332 ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
333 $(COMMONLIBS) $(LIBZ)
334
335
336 #
337 # libcupsppdc.so.1, libcupsppdc.sl.1
338 #
339
340 libcupsppdc.so.1 libcupsppdc.sl.1: $(LIBOBJS) ../cups/$(LIBCUPS)
341 echo Linking $@...
342 $(DSOXX) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS) $(LINKCUPS)
343 $(RM) `basename $@ .1`
344 $(LN) $@ `basename $@ .1`
345
346
347 #
348 # libcupsppdc.1.dylib
349 #
350
351 libcupsppdc.1.dylib: $(LIBOBJS) ../cups/$(LIBCUPS)
352 echo Creating export list for $@...
353 nm $(LIBOBJS) | grep "T __" | awk '{print $$3}' | sort >t.exp
354 echo Linking $@...
355 $(DSOXX) $(ARCHFLAGS) $(DSOFLAGS) -o $@ \
356 -install_name $(libdir)/$@ \
357 -current_version 1.0.0 \
358 -compatibility_version 1.0.0 \
359 -exported_symbols_list t.exp \
360 $(LIBOBJS) $(LINKCUPS)
361 $(RM) libcupsppdc.dylib t.exp
362 $(LN) $@ libcupsppdc.dylib
363
364
365 #
366 # libcupsppdc_s.a
367 #
368
369 libcupsppdc_s.a: $(LIBOBJS) ../cups/$(LIBCUPS)
370 echo Creating $@...
371 $(DSOXX) $(DSOFLAGS) -o libcupsppdc_s.o $(LIBOBJS) $(LINKCUPS)
372 $(RM) $@
373 $(AR) $(ARFLAGS) $@ libcupsppdc_s.o
374
375
376 #
377 # libcupsppdc.la
378 #
379
380 libcupsppdc.la: $(LIBOBJS) ../cups/$(LIBCUPS)
381 echo Linking $@...
382 $(CC) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) -rpath $(LIBDIR) \
383 -version-info 1:0 $(LINKCUPS)
384
385
386 #
387 # libcupsppdc.a
388 #
389
390 libcupsppdc.a: $(LIBOBJS)
391 echo Archiving $@...
392 $(RM) $@
393 $(AR) $(ARFLAGS) $@ $(LIBOBJS)
394 $(RANLIB) $@
395
396
397 #
398 # Include dependencies...
399 #
400
401 include Dependencies
402
403
404 #
405 # End of "$Id$".
406 #