]> git.ipfire.org Git - thirdparty/cups.git/blob - ppdc/Makefile
License change: Apache License, Version 2.0.
[thirdparty/cups.git] / ppdc / Makefile
1 #
2 # Makefile for the CUPS PPD Compiler.
3 #
4 # Copyright 2007-2017 by Apple Inc.
5 # Copyright 2002-2006 by Easy Software Products.
6 #
7 # Licensed under Apache License v2.0. See the file "LICENSE" for more information.
8 #
9
10 #
11 # Include standard definitions...
12 #
13
14 include ../Makedefs
15
16
17 #
18 # Object files...
19 #
20
21 LIBOBJS = \
22 ppdc-array.o \
23 ppdc-attr.o \
24 ppdc-catalog.o \
25 ppdc-choice.o \
26 ppdc-constraint.o \
27 ppdc-driver.o \
28 ppdc-file.o \
29 ppdc-filter.o \
30 ppdc-font.o \
31 ppdc-group.o \
32 ppdc-import.o \
33 ppdc-mediasize.o \
34 ppdc-message.o \
35 ppdc-option.o \
36 ppdc-profile.o \
37 ppdc-shared.o \
38 ppdc-source.o \
39 ppdc-string.o \
40 ppdc-variable.o
41 OBJS = \
42 $(LIBOBJS) \
43 genstrings.o \
44 ppdc.o \
45 ppdhtml.o \
46 ppdi.o \
47 ppdmerge.o \
48 ppdpo.o \
49 testcatalog.o
50 LIBTARGETS = \
51 $(LIBCUPSPPDC) \
52 libcupsppdc.a
53 UNITTARGETS = \
54 ppdc-static \
55 ppdi-static \
56 testcatalog
57 EXECTARGETS = \
58 ppdc \
59 ppdhtml \
60 ppdi \
61 ppdmerge \
62 ppdpo
63
64 TARGETS = \
65 $(LIBTARGETS) \
66 $(EXECTARGETS) \
67 $(LOCALTARGET)
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) genstrings
99 $(RM) -r ppd ppd2
100 $(RM) sample-import.drv sample.c test.drv
101 $(RM) libcupsppdc.so libcupsppdc.dylib
102
103
104 #
105 # Update dependencies...
106 #
107
108 depend:
109 $(CXX) -MM $(ALL_CXXFLAGS) $(OBJS:.o=.cxx) >Dependencies
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 for file in $(EXECTARGETS); do \
136 $(INSTALL_BIN) $$file $(BINDIR); \
137 done
138 if test "x$(SYMROOT)" != "x"; then \
139 $(INSTALL_DIR) $(SYMROOT); \
140 for file in $(EXECTARGETS); do \
141 cp $$file $(SYMROOT); \
142 dsymutil $(SYMROOT)/$$file; \
143 done \
144 fi
145
146
147 #
148 # Install headers...
149 #
150
151 install-headers:
152 if test "x$(privateinclude)" != x; then \
153 echo Installing private header files into $(PRIVATEINCLUDE)...; \
154 $(INSTALL_DIR) -m 755 $(PRIVATEINCLUDE); \
155 $(INSTALL_DATA) ppdc.h $(PRIVATEINCLUDE); \
156 fi
157
158
159 #
160 # Install libraries...
161 #
162
163 install-libs: $(INSTALLSTATIC)
164 echo Installing libraries in $(LIBDIR)...
165 $(INSTALL_DIR) -m 755 $(LIBDIR)
166 $(INSTALL_LIB) $(LIBCUPSPPDC) $(LIBDIR)
167 if test $(LIBCUPSPPDC) = "libcupsppdc.so.1"; then \
168 $(RM) $(LIBDIR)/`basename $(LIBCUPSPPDC) .1`; \
169 $(LN) $(LIBCUPSPPDC) $(LIBDIR)/`basename $(LIBCUPSPPDC) .1`; \
170 fi
171 if test $(LIBCUPSPPDC) = "libcupsppdc.1.dylib"; then \
172 $(RM) $(LIBDIR)/libcupsppdc.dylib; \
173 $(LN) $(LIBCUPSPPDC) $(LIBDIR)/libcupsppdc.dylib; \
174 fi
175 if test "x$(SYMROOT)" != "x"; then \
176 $(INSTALL_DIR) $(SYMROOT); \
177 cp $(LIBCUPSPPDC) $(SYMROOT); \
178 dsymutil $(SYMROOT)/$(LIBCUPSPPDC); \
179 fi
180
181 installstatic:
182 $(INSTALL_DIR) -m 755 $(LIBDIR)
183 $(INSTALL_LIB) -m 755 libcupsppdc.a $(LIBDIR)
184 $(RANLIB) $(LIBDIR)/libcupsppdc.a
185 $(CHMOD) 555 $(LIBDIR)/libcupsppdc.a
186
187
188 #
189 # Uninstall...
190 #
191
192 uninstall:
193 for file in $(EXECTARGETS); do \
194 $(RM) $(BINDIR)/$$file; \
195 done
196 $(RM) $(DATADIR)/drv/sample.drv
197 $(RMDIR) $(DATADIR)/drv
198 $(RM) $(LIBDIR)/libcupsppdc.1.dylib
199 $(RM) $(LIBDIR)/libcupsppdc.a
200 $(RM) $(LIBDIR)/libcupsppdc.dylib
201 $(RM) $(LIBDIR)/libcupsppdc.so
202 $(RM) $(LIBDIR)/libcupsppdc.so.1
203 -$(RMDIR) $(LIBDIR)
204 -if test "x$(privateinclude)" != x; then \
205 $(RM) $(PRIVATEINCLUDE)/ppdc.h; \
206 $(RMDIR) $(PRIVATEINCLUDE); \
207 fi
208
209
210 #
211 # Local programs (not built when cross-compiling...)
212 #
213
214 local: genstrings
215
216
217 #
218 # genstrings - generate GNU gettext strings.
219 #
220
221 genstrings: genstrings.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC) \
222 sample.drv ../data/media.defs
223 echo Linking $@...
224 $(LD_CXX) $(ARCHFLAGS) $(LDFLAGS) -o genstrings genstrings.o \
225 libcupsppdc.a ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) \
226 $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
227 echo Generating localization strings...
228 ./genstrings >sample.c
229
230
231 #
232 # ppdc, the PPD compiler.
233 #
234
235 ppdc: ppdc.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
236 echo Linking $@...
237 $(LD_CXX) $(LDFLAGS) -o $@ ppdc.o -L. -lcupsppdc $(LIBS)
238
239
240 ppdc-static: ppdc.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC) foo.drv foo-fr.po
241 echo Linking $@...
242 $(LD_CXX) $(ARCHFLAGS) $(LDFLAGS) -o ppdc-static ppdc.o libcupsppdc.a \
243 ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
244 $(COMMONLIBS) $(LIBZ)
245 echo Testing PPD compiler...
246 ./ppdc-static -l en,fr -I ../data foo.drv
247 ./ppdc-static -l en,fr -z -I ../data foo.drv
248
249
250 #
251 # ppdhtml, the PPD to HTML utility.
252 #
253
254 ppdhtml: ppdhtml.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
255 echo Linking $@...
256 $(LD_CXX) $(LDFLAGS) -o $@ ppdhtml.o -L. -lcupsppdc $(LIBS)
257
258
259 #
260 # ppdi, import PPD files.
261 #
262
263 ppdi: ppdi.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
264 echo Linking $@...
265 $(LD_CXX) $(LDFLAGS) -o $@ ppdi.o -L. -lcupsppdc $(LIBS)
266
267
268 ppdi-static: ppdc-static ppdi.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC)
269 echo Linking $@...
270 $(LD_CXX) $(ARCHFLAGS) $(LDFLAGS) -o ppdi-static ppdi.o libcupsppdc.a \
271 ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
272 $(COMMONLIBS) $(LIBZ)
273 echo Testing PPD importer...
274 $(RM) -r ppd ppd2 sample-import.drv
275 ./ppdc-static -l en -I ../data sample.drv
276 ./ppdi-static -I ../data -o sample-import.drv ppd/*
277 ./ppdc-static -l en -I ../data -d ppd2 sample-import.drv
278 if diff -r ppd ppd2 >/dev/null; then \
279 echo PPD import OK; \
280 else \
281 echo PPD import FAILED; \
282 exit 1; \
283 fi
284
285
286 #
287 # ppdmerge, merge PPD files.
288 #
289
290 ppdmerge: ppdmerge.o ../cups/$(LIBCUPS)
291 echo Linking $@...
292 $(LD_CXX) $(LDFLAGS) -o $@ ppdmerge.o $(LIBS)
293
294
295 #
296 # ppdpo, create message catalog files.
297 #
298
299 ppdpo: ppdpo.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
300 echo Linking $@...
301 $(LD_CXX) $(LDFLAGS) -o $@ ppdpo.o -L. -lcupsppdc $(LIBS)
302
303
304 #
305 # testcatalog, test ppdcCatalog class.
306 #
307
308 testcatalog: testcatalog.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC)
309 echo Linking $@...
310 $(LD_CXX) $(LDFLAGS) -o $@ testcatalog.o libcupsppdc.a \
311 ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
312 $(COMMONLIBS) $(LIBZ)
313
314
315 #
316 # libcupsppdc.so.1
317 #
318
319 libcupsppdc.so.1: $(LIBOBJS) ../cups/$(LIBCUPS)
320 echo Linking $@...
321 $(DSOXX) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS) $(LINKCUPS)
322 $(RM) `basename $@ .1`
323 $(LN) $@ `basename $@ .1`
324
325
326 #
327 # libcupsppdc.1.dylib
328 #
329
330 libcupsppdc.1.dylib: $(LIBOBJS) ../cups/$(LIBCUPS)
331 echo Creating export list for $@...
332 nm -gm $(LIBOBJS) | grep "__text" | grep -v weak | awk '{print $$NF}' | sort >t.exp
333 echo Linking $@...
334 $(DSOXX) $(ARCHFLAGS) $(DSOFLAGS) -o $@ \
335 -install_name $(libdir)/$@ \
336 -current_version 1.0.0 \
337 -compatibility_version 1.0.0 \
338 -exported_symbols_list t.exp \
339 $(LIBOBJS) $(LINKCUPS) $(COMMONLIBS)
340 $(RM) libcupsppdc.dylib t.exp
341 $(LN) $@ libcupsppdc.dylib
342
343
344 #
345 # libcupsppdc.la
346 #
347
348 libcupsppdc.la: $(LIBOBJS) ../cups/$(LIBCUPS)
349 echo Linking $@...
350 $(LD_CC) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) -rpath $(LIBDIR) \
351 -version-info 1:0 $(LINKCUPS)
352
353
354 #
355 # libcupsppdc.a
356 #
357
358 libcupsppdc.a: $(LIBOBJS)
359 echo Archiving $@...
360 $(RM) $@
361 $(AR) $(ARFLAGS) $@ $(LIBOBJS)
362 $(RANLIB) $@
363
364
365 #
366 # Include dependencies...
367 #
368
369 include Dependencies