Merge changes from CUPS 1.4svn-r7874.
[thirdparty/cups.git] / ppdc / Makefile
1 #
2 # "$Id$"
3 #
4 #   Makefile for the CUPS PPD Compiler.
5 #
6 #   Copyright 2007-2008 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                 ppdc.o \
50                 ppdhtml.o \
51                 ppdi.o \
52                 ppdmerge.o \
53                 ppdpo.o \
54                 testcatalog.o
55 LIBTARGETS =    \
56                 $(LIBCUPSPPDC) \
57                 libcupsppdc.a
58 UNITTARGETS =   \
59                 ppdc-static \
60                 testcatalog
61 TARGETS =       \
62                 $(LIBTARGETS) \
63                 ppdc \
64                 ppdhtml \
65                 ppdi \
66                 ppdmerge \
67                 ppdpo
68
69
70 #
71 # Make everything...
72 #
73
74 all:            $(TARGETS)
75
76
77 #
78 # Make library targets...
79 #
80
81 libs:           $(LIBTARGETS)
82
83
84 #
85 # Make unit tests...
86 #
87
88 unittests:      $(UNITTARGETS)
89
90
91 #
92 # Clean everything...
93 #
94
95 clean:
96         $(RM) $(OBJS) core
97         $(RM) *.bak *.bck core.*
98         $(RM) $(TARGETS) $(UNITTARGETS)
99         $(RM) -r ppd
100         $(RM) test.drv
101         $(RM) libcupsppdc.so libcupsppdc.sl libcupsppdc.dylib
102
103
104 #
105 # Update dependencies...
106 #
107
108 depend:
109         makedepend -Y -I.. -fDependencies $(OBJS:.o=.cxx) >/dev/null 2>&1
110
111
112 #
113 # Install all targets...
114 #
115
116 install:        all install-data install-headers install-libs install-exec
117
118
119 #
120 # Install data files...
121 #
122
123 install-data:
124         $(INSTALL_DIR) $(DATADIR)/drv
125         $(INSTALL_DATA) sample.drv $(DATADIR)/drv
126
127
128 #
129 # Install programs...
130 #
131
132 install-exec:
133         echo Installing PPD compiler programs...
134         $(INSTALL_DIR) $(BINDIR)
135         $(INSTALL_BIN) ppdc $(BINDIR)
136         $(INSTALL_BIN) ppdhtml $(BINDIR)
137         $(INSTALL_BIN) ppdi $(BINDIR)
138         $(INSTALL_BIN) ppdmerge $(BINDIR)
139         $(INSTALL_BIN) ppdpo $(BINDIR)
140         if test "x$(SYMROOT)" != "x"; then \
141                 $(INSTALL_DIR) $(SYMROOT); \
142                 for file in $(TARGETS); do \
143                         cp $$file $(SYMROOT); \
144                 done \
145         fi
146
147
148 #
149 # Install headers...
150 #
151
152 install-headers:
153         echo Installing header files in $(INCLUDEDIR)/cups...
154         $(INSTALL_DIR) -m 755 $(INCLUDEDIR)/cups
155         $(INSTALL_DATA) ppdc.h $(INCLUDEDIR)/cups
156
157
158 #
159 # Install libraries...
160 #
161
162 install-libs: $(INSTALLSTATIC) $(INSTALL32) $(INSTALL64)
163         echo Installing libraries in $(LIBDIR)...
164         $(INSTALL_DIR) -m 755 $(LIBDIR)
165         $(INSTALL_LIB) $(LIBCUPSPPDC) $(LIBDIR)
166         if test $(LIBCUPSPPDC) = "libcupsppdc.so.1" -o $(LIBCUPSPPDC) = "libcupsppdc.sl.1"; then \
167                 $(RM) $(LIBDIR)/`basename $(LIBCUPSPPDC) .1`; \
168                 $(LN) $(LIBCUPSPPDC) $(LIBDIR)/`basename $(LIBCUPSPPDC) .1`; \
169         fi
170         if test $(LIBCUPSPPDC) = "libcupsppdc.1.dylib"; then \
171                 $(RM) $(LIBDIR)/libcupsppdc.dylib; \
172                 $(LN) $(LIBCUPSPPDC) $(LIBDIR)/libcupsppdc.dylib; \
173         fi
174         if test "x$(SYMROOT)" != "x"; then \
175                 $(INSTALL_DIR) $(SYMROOT); \
176                 cp $(LIBCUPSPPDC) $(SYMROOT); \
177         fi
178
179 installstatic:
180         $(INSTALL_DIR) -m 755 $(LIBDIR)
181         $(INSTALL_LIB) libcupsppdc.a $(LIBDIR)
182         $(RANLIB) $(LIBDIR)/libcupsppdc.a
183
184
185 #
186 # Uninstall...
187 #
188
189 uninstall:
190         $(RM) $(BINDIR)/ppdc
191         $(RM) $(BINDIR)/ppdhtml
192         $(RM) $(BINDIR)/ppdi
193         $(RM) $(BINDIR)/ppdmerge
194         $(RM) $(BINDIR)/ppdpo
195         $(RM) $(DATADIR)/drv/sample.drv
196         $(RMDIR) $(DATADIR)/drv
197         $(RM) $(LIBDIR)/libcupsppdc.1.dylib
198         $(RM) $(LIBDIR)/libcupsppdc.a
199         $(RM) $(LIBDIR)/libcupsppdc.dylib
200         $(RM) $(LIBDIR)/libcupsppdc_s.a
201         $(RM) $(LIBDIR)/libcupsppdc.sl
202         $(RM) $(LIBDIR)/libcupsppdc.sl.1
203         $(RM) $(LIBDIR)/libcupsppdc.so
204         $(RM) $(LIBDIR)/libcupsppdc.so.1
205         -$(RMDIR) $(LIBDIR)
206         $(RM) $(INCLUDEDIR)/cups/ppdc.h
207         -$(RMDIR) $(INCLUDEDIR)/cups
208
209
210 #
211 # Automatic API help files...
212 #
213
214 apihelp:
215         mxmldoc --section "Programming" \
216                 --title "PPD Compiler API" \
217                 --css ../doc/cups-printable.css \
218                 --header api-ppdc.header --intro api-ppdc.shtml \
219                 ppdc.h $(LIBOBJS:.o=.cxx) >../doc/help/api-ppdc.html
220
221 framedhelp:
222         mxmldoc --framed api-ppdc \
223                 --section "Programming" \
224                 --title "PPD Compiler API" \
225                 --css ../doc/cups-printable.css \
226                 --header api-ppdc.header --intro api-ppdc.shtml \
227                 ppdc.h $(LIBOBJS:.o=.cxx)
228
229
230 #
231 # ppdc, the PPD compiler.
232 #
233
234 ppdc:                   ppdc.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
235         echo Linking $@...
236         $(CXX) $(LDFLAGS) -o $@ ppdc.o -L. -lcupsppdc $(LIBS)
237
238
239 ppdc-static:            ppdc.o libcupsppdc.a  ../cups/libcups.a foo.drv foo-fr.po
240         echo Linking $@...
241         $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o ppdc-static ppdc.o libcupsppdc.a \
242                 ../cups/libcups.a $(LIBGSSAPI) $(SSLLIBS) $(COMMONLIBS) $(LIBZ)
243         echo Testing PPD compiler...
244         ./ppdc-static -l en,fr -I ../data foo.drv
245         ./ppdc-static -l en,fr -z -I ../data foo.drv
246
247
248 #
249 # ppdhtml, the PPD to HTML utility.
250 #
251
252 ppdhtml:                        ppdhtml.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
253         echo Linking $@...
254         $(CXX) $(LDFLAGS) -o $@ ppdhtml.o -L. -lcupsppdc $(LIBS)
255
256
257 #
258 # ppdi, import PPD files.
259 #
260
261 ppdi:                   ppdi.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
262         echo Linking $@...
263         $(CXX) $(LDFLAGS) -o $@ ppdi.o -L. -lcupsppdc $(LIBS)
264
265
266 #
267 # ppdmerge, merge PPD files.
268 #
269
270 ppdmerge:                       ppdmerge.o ../cups/$(LIBCUPS)
271         echo Linking $@...
272         $(CXX) $(LDFLAGS) -o $@ ppdmerge.o $(LIBS)
273
274
275 #
276 # ppdpo, create message catalog files.
277 #
278
279 ppdpo:                  ppdpo.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
280         echo Linking $@...
281         $(CXX) $(LDFLAGS) -o $@ ppdpo.o -L. -lcupsppdc $(LIBS)
282
283
284 #
285 # testcatalog, test ppdcCatalog class.
286 #
287
288 testcatalog:            testcatalog.o libcupsppdc.a ../cups/libcups.a
289         echo Linking $@...
290         $(CXX) $(LDFLAGS) -o $@ testcatalog.o libcupsppdc.a \
291                 ../cups/libcups.a $(LIBGSSAPI) $(SSLLIBS) $(COMMONLIBS) $(LIBZ)
292
293
294 #
295 # libcupsppdc.so.1, libcupsppdc.sl.1
296 #
297
298 libcupsppdc.so.1 libcupsppdc.sl.1:      $(LIBOBJS)
299         echo Linking $@...
300         $(DSOXX) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS) $(LIBS)
301         $(RM) `basename $@ .1`
302         $(LN) $@ `basename $@ .1`
303
304
305 #
306 # libcupsppdc.1.dylib
307 #
308
309 libcupsppdc.1.dylib:    $(LIBOBJS)
310         echo Creating export list for $@...
311         nm $(LIBOBJS) | grep "T __" | awk '{print $$3}' | sort >t.exp
312         echo Linking $@...
313         $(DSOXX) $(ARCHFLAGS) $(DSOFLAGS) -o $@ \
314                 -install_name $(libdir)/$@ \
315                 -current_version 1.0.0 \
316                 -compatibility_version 1.0.0 \
317                 -exported_symbols_list t.exp \
318                 $(LIBOBJS) $(LIBS)
319         $(RM) libcupsppdc.dylib t.exp
320         $(LN) $@ libcupsppdc.dylib
321
322
323 #
324 # libcupsppdc_s.a
325 #
326
327 libcupsppdc_s.a:        $(LIBOBJS)
328         echo Creating $@...
329         $(DSOXX) $(DSOFLAGS) -o libcupsppdc_s.o $(LIBOBJS) $(LIBS)
330         $(RM) $@
331         $(AR) $(ARFLAGS) $@ libcupsppdc_s.o
332
333
334 #
335 # libcupsppdc.la
336 #
337
338 libcupsppdc.la:    $(LIBOBJS)
339         echo Linking $@...
340         $(CC) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) -rpath $(LIBDIR) \
341                 -version-info 1:0 $(LIBS)
342
343
344 #
345 # libcupsppdc.a
346 #
347
348 libcupsppdc.a:  $(LIBOBJS)
349         echo Archiving $@...
350         $(RM) $@
351         $(AR) $(ARFLAGS) $@ $(LIBOBJS)
352         $(RANLIB) $@
353
354
355 #
356 # Include dependencies...
357 #
358
359 include Dependencies
360
361
362 #
363 # End of "$Id$".
364 #