Revert manifest to default one
[external/cups.git] / ppdc / Makefile
1 #
2 # "$Id: Makefile 9422 2011-01-06 22:20:15Z mike $"
3 #
4 #   Makefile for the CUPS PPD Compiler.
5 #
6 #   Copyright 2007-2011 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         makedepend -Y -I.. -fDependencies $(OBJS:.o=.cxx) >/dev/null 2>&1
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                 done \
149         fi
150
151
152 #
153 # Install headers...
154 #
155
156 install-headers:
157         echo Installing header files in $(INCLUDEDIR)/cups...
158         $(INSTALL_DIR) -m 755 $(INCLUDEDIR)/cups
159         $(INSTALL_DATA) ppdc.h $(INCLUDEDIR)/cups
160
161
162 #
163 # Install libraries...
164 #
165
166 install-libs: $(INSTALLSTATIC)
167         echo Installing libraries in $(LIBDIR)...
168         $(INSTALL_DIR) -m 755 $(LIBDIR)
169         $(INSTALL_LIB) $(LIBCUPSPPDC) $(LIBDIR)
170         if test $(LIBCUPSPPDC) = "libcupsppdc.so.1" -o $(LIBCUPSPPDC) = "libcupsppdc.sl.1"; then \
171                 $(RM) $(LIBDIR)/`basename $(LIBCUPSPPDC) .1`; \
172                 $(LN) $(LIBCUPSPPDC) $(LIBDIR)/`basename $(LIBCUPSPPDC) .1`; \
173         fi
174         if test $(LIBCUPSPPDC) = "libcupsppdc.1.dylib"; then \
175                 $(RM) $(LIBDIR)/libcupsppdc.dylib; \
176                 $(LN) $(LIBCUPSPPDC) $(LIBDIR)/libcupsppdc.dylib; \
177         fi
178         if test "x$(SYMROOT)" != "x"; then \
179                 $(INSTALL_DIR) $(SYMROOT); \
180                 cp $(LIBCUPSPPDC) $(SYMROOT); \
181         fi
182
183 installstatic:
184         $(INSTALL_DIR) -m 755 $(LIBDIR)
185         $(INSTALL_LIB) -m 755 libcupsppdc.a $(LIBDIR)
186         $(RANLIB) $(LIBDIR)/libcupsppdc.a
187         $(CHMOD) 555 $(LIBDIR)/libcupsppdc.a
188
189
190 #
191 # Uninstall...
192 #
193
194 uninstall:
195         for file in $(EXECTARGETS); do \
196                 $(RM) $(BINDIR)/$$file; \
197         done
198         $(RM) $(DATADIR)/drv/sample.drv
199         $(RMDIR) $(DATADIR)/drv
200         $(RM) $(LIBDIR)/libcupsppdc.1.dylib
201         $(RM) $(LIBDIR)/libcupsppdc.a
202         $(RM) $(LIBDIR)/libcupsppdc.dylib
203         $(RM) $(LIBDIR)/libcupsppdc_s.a
204         $(RM) $(LIBDIR)/libcupsppdc.sl
205         $(RM) $(LIBDIR)/libcupsppdc.sl.1
206         $(RM) $(LIBDIR)/libcupsppdc.so
207         $(RM) $(LIBDIR)/libcupsppdc.so.1
208         -$(RMDIR) $(LIBDIR)
209         $(RM) $(INCLUDEDIR)/cups/ppdc.h
210         -$(RMDIR) $(INCLUDEDIR)/cups
211
212
213 #
214 # Automatic API help files...
215 #
216
217 apihelp:
218         mxmldoc --section "Programming" \
219                 --title "PPD Compiler API" \
220                 --css ../doc/cups-printable.css \
221                 --header api-ppdc.header --intro api-ppdc.shtml \
222                 api-ppdc.xml \
223                 ppdc.h $(LIBOBJS:.o=.cxx) >../doc/help/api-ppdc.html
224         mxmldoc --tokens help/api-ppdc.html api-ppdc.xml >../doc/help/api-ppdc.tokens
225         $(RM) api-ppdc.xml
226
227 framedhelp:
228         mxmldoc --framed api-ppdc \
229                 --section "Programming" \
230                 --title "PPD Compiler API" \
231                 --css ../doc/cups-printable.css \
232                 --header api-ppdc.header --intro api-ppdc.shtml \
233                 ppdc.h $(LIBOBJS:.o=.cxx)
234
235
236 #
237 # genstrings - generate GNU gettext strings.
238 #
239
240 genstrings:             genstrings.o libcupsppdc.so ../cups/$(LIBCUPSSTATIC) \
241                         sample.drv ../data/media.defs
242         echo Linking $@...
243         $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o genstrings genstrings.o \
244                 -lcupsppdc ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) \
245                 $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
246         echo Generating localization strings...
247         LD_LIBRARY_PATH=.:../cups/ ./genstrings >sample.c
248
249
250 #
251 # ppdc, the PPD compiler.
252 #
253
254 ppdc:                   ppdc.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
255         echo Linking $@...
256         $(CXX) $(LDFLAGS) -o $@ ppdc.o -L. -lcupsppdc $(LIBS)
257
258
259 ppdc-static:            ppdc.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC) foo.drv foo-fr.po
260         echo Linking $@...
261         $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o ppdc-static ppdc.o -lcupsppdc \
262                 ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
263                 $(COMMONLIBS) $(LIBZ)
264         echo Testing PPD compiler...
265         LD_LIBRARY_PATH=.:../cups/ ./ppdc-static -l en,fr -I ../data foo.drv
266         LD_LIBRARY_PATH=.:../cups/ ./ppdc-static -l en,fr -z -I ../data foo.drv
267
268
269 #
270 # ppdhtml, the PPD to HTML utility.
271 #
272
273 ppdhtml:                        ppdhtml.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
274         echo Linking $@...
275         $(CXX) $(LDFLAGS) -o $@ ppdhtml.o -L. -lcupsppdc $(LIBS)
276
277
278 #
279 # ppdi, import PPD files.
280 #
281
282 ppdi:                   ppdi.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
283         echo Linking $@...
284         $(CXX) $(LDFLAGS) -o $@ ppdi.o -L. -lcupsppdc $(LIBS)
285
286
287 ppdi-static:            ppdc-static ppdi.o libcupsppdc.a  ../cups/$(LIBCUPSSTATIC)
288         echo Linking $@...
289         $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o ppdi-static ppdi.o -lcupsppdc \
290                 ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
291                 $(COMMONLIBS) $(LIBZ)
292         echo Testing PPD importer...
293         $(RM) -r ppd ppd2 sample-import.drv
294         LD_LIBRARY_PATH=.:../cups/ ./ppdc-static -I ../data sample.drv
295         LD_LIBRARY_PATH=.:../cups/ ./ppdi-static -I ../data -o sample-import.drv ppd/*
296         LD_LIBRARY_PATH=.:../cups/ ./ppdc-static -I ../data -d ppd2 sample-import.drv
297         if diff -r ppd ppd2 >/dev/null; then \
298                 echo PPD import OK; \
299         else \
300                 echo PPD import FAILED; \
301                 exit 1; \
302         fi
303
304
305 #
306 # ppdmerge, merge PPD files.
307 #
308
309 ppdmerge:                       ppdmerge.o ../cups/$(LIBCUPS)
310         echo Linking $@...
311         $(CXX) $(LDFLAGS) -o $@ ppdmerge.o $(LIBS)
312
313
314 #
315 # ppdpo, create message catalog files.
316 #
317
318 ppdpo:                  ppdpo.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
319         echo Linking $@...
320         $(CXX) $(LDFLAGS) -o $@ ppdpo.o -L. -lcupsppdc $(LIBS)
321
322
323 #
324 # testcatalog, test ppdcCatalog class.
325 #
326
327 testcatalog:            testcatalog.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC)
328         echo Linking $@...
329         $(CXX) $(LDFLAGS) -o $@ testcatalog.o -lcupsppdc \
330                 ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
331                 $(COMMONLIBS) $(LIBZ)
332
333
334 #
335 # libcupsppdc.so.1, libcupsppdc.sl.1
336 #
337
338 libcupsppdc.so.1 libcupsppdc.sl.1:      $(LIBOBJS) ../cups/$(LIBCUPS)
339         echo Linking $@...
340         $(DSOXX) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS) $(LINKCUPS)
341         $(RM) `basename $@ .1`
342         $(LN) $@ `basename $@ .1`
343
344
345 #
346 # libcupsppdc.1.dylib
347 #
348
349 libcupsppdc.1.dylib:    $(LIBOBJS) ../cups/$(LIBCUPS)
350         echo Creating export list for $@...
351         nm $(LIBOBJS) | grep "T __" | awk '{print $$3}' | sort >t.exp
352         echo Linking $@...
353         $(DSOXX) $(ARCHFLAGS) $(DSOFLAGS) -o $@ \
354                 -install_name $(libdir)/$@ \
355                 -current_version 1.0.0 \
356                 -compatibility_version 1.0.0 \
357                 -exported_symbols_list t.exp \
358                 $(LIBOBJS) $(LINKCUPS)
359         $(RM) libcupsppdc.dylib t.exp
360         $(LN) $@ libcupsppdc.dylib
361
362
363 #
364 # libcupsppdc_s.a
365 #
366
367 libcupsppdc_s.a:        $(LIBOBJS) ../cups/$(LIBCUPS)
368         echo Creating $@...
369         $(DSOXX) $(DSOFLAGS) -o libcupsppdc_s.o $(LIBOBJS) $(LINKCUPS)
370         $(RM) $@
371         $(AR) $(ARFLAGS) $@ libcupsppdc_s.o
372
373
374 #
375 # libcupsppdc.la
376 #
377
378 libcupsppdc.la:    $(LIBOBJS) ../cups/$(LIBCUPS)
379         echo Linking $@...
380         $(CC) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) -rpath $(LIBDIR) \
381                 -version-info 1:0 $(LINKCUPS)
382
383
384 #
385 # libcupsppdc.a
386 #
387
388 libcupsppdc.a:  $(LIBOBJS)
389         echo Archiving $@...
390         $(RM) $@
391         $(AR) $(ARFLAGS) $@ $(LIBOBJS)
392         $(RANLIB) $@
393
394
395 #
396 # Include dependencies...
397 #
398
399 include Dependencies
400
401
402 #
403 # End of "$Id: Makefile 9422 2011-01-06 22:20:15Z mike $".
404 #