]> git.ipfire.org Git - thirdparty/cups.git/blob - ppdc/Makefile
Fix more issues with libtool support (Issue #5050)
[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 # 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
14 #
15 # Include standard definitions...
16 #
17
18 include ../Makedefs
19
20
21 #
22 # Object files...
23 #
24
25 LIBOBJS = \
26 ppdc-array.o \
27 ppdc-attr.o \
28 ppdc-catalog.o \
29 ppdc-choice.o \
30 ppdc-constraint.o \
31 ppdc-driver.o \
32 ppdc-file.o \
33 ppdc-filter.o \
34 ppdc-font.o \
35 ppdc-group.o \
36 ppdc-import.o \
37 ppdc-mediasize.o \
38 ppdc-message.o \
39 ppdc-option.o \
40 ppdc-profile.o \
41 ppdc-shared.o \
42 ppdc-source.o \
43 ppdc-string.o \
44 ppdc-variable.o
45 OBJS = \
46 $(LIBOBJS) \
47 genstrings.o \
48 ppdc.o \
49 ppdhtml.o \
50 ppdi.o \
51 ppdmerge.o \
52 ppdpo.o \
53 testcatalog.o
54 LIBTARGETS = \
55 $(LIBCUPSPPDC) \
56 libcupsppdc.a
57 UNITTARGETS = \
58 ppdc-static \
59 ppdi-static \
60 testcatalog
61 EXECTARGETS = \
62 ppdc \
63 ppdhtml \
64 ppdi \
65 ppdmerge \
66 ppdpo
67
68 TARGETS = \
69 $(LIBTARGETS) \
70 $(EXECTARGETS) \
71 $(LOCALTARGET)
72
73
74 #
75 # Make everything...
76 #
77
78 all: $(TARGETS)
79
80
81 #
82 # Make library targets...
83 #
84
85 libs: $(LIBTARGETS)
86
87
88 #
89 # Make unit tests...
90 #
91
92 unittests: $(UNITTARGETS)
93
94
95 #
96 # Clean everything...
97 #
98
99 clean:
100 $(RM) $(OBJS) core
101 $(RM) *.bak *.bck core.*
102 $(RM) $(TARGETS) $(UNITTARGETS) genstrings
103 $(RM) -r ppd ppd2
104 $(RM) sample-import.drv sample.c test.drv
105 $(RM) libcupsppdc.so libcupsppdc.dylib
106
107
108 #
109 # Update dependencies...
110 #
111
112 depend:
113 $(CXX) -MM $(ALL_CXXFLAGS) $(OBJS:.o=.cxx) >Dependencies
114
115
116 #
117 # Install all targets...
118 #
119
120 install: all install-data install-headers install-libs install-exec
121
122
123 #
124 # Install data files...
125 #
126
127 install-data:
128 $(INSTALL_DIR) $(DATADIR)/drv
129 $(INSTALL_DATA) sample.drv $(DATADIR)/drv
130
131
132 #
133 # Install programs...
134 #
135
136 install-exec:
137 echo Installing PPD compiler programs...
138 $(INSTALL_DIR) $(BINDIR)
139 for file in $(EXECTARGETS); do \
140 $(INSTALL_BIN) $$file $(BINDIR); \
141 done
142 if test "x$(SYMROOT)" != "x"; then \
143 $(INSTALL_DIR) $(SYMROOT); \
144 for file in $(EXECTARGETS); do \
145 cp $$file $(SYMROOT); \
146 dsymutil $(SYMROOT)/$$file; \
147 done \
148 fi
149
150
151 #
152 # Install headers...
153 #
154
155 install-headers:
156 if test "x$(privateinclude)" != x; then \
157 echo Installing private header files into $(PRIVATEINCLUDE)...; \
158 $(INSTALL_DIR) -m 755 $(PRIVATEINCLUDE); \
159 $(INSTALL_DATA) ppdc.h $(PRIVATEINCLUDE); \
160 fi
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"; 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.so
206 $(RM) $(LIBDIR)/libcupsppdc.so.1
207 -$(RMDIR) $(LIBDIR)
208 -if test "x$(privateinclude)" != x; then \
209 $(RM) $(PRIVATEINCLUDE)/ppdc.h; \
210 $(RMDIR) $(PRIVATEINCLUDE); \
211 fi
212
213
214 #
215 # Local programs (not built when cross-compiling...)
216 #
217
218 local: genstrings
219
220
221 #
222 # genstrings - generate GNU gettext strings.
223 #
224
225 genstrings: genstrings.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC) \
226 sample.drv ../data/media.defs
227 echo Linking $@...
228 $(LD_CXX) $(ARCHFLAGS) $(LDFLAGS) -o genstrings genstrings.o \
229 libcupsppdc.a ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) \
230 $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
231 echo Generating localization strings...
232 ./genstrings >sample.c
233
234
235 #
236 # ppdc, the PPD compiler.
237 #
238
239 ppdc: ppdc.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
240 echo Linking $@...
241 $(LD_CXX) $(LDFLAGS) -o $@ ppdc.o -L. -lcupsppdc $(LIBS)
242
243
244 ppdc-static: ppdc.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC) foo.drv foo-fr.po
245 echo Linking $@...
246 $(LD_CXX) $(ARCHFLAGS) $(LDFLAGS) -o ppdc-static ppdc.o libcupsppdc.a \
247 ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
248 $(COMMONLIBS) $(LIBZ)
249 echo Testing PPD compiler...
250 ./ppdc-static -l en,fr -I ../data foo.drv
251 ./ppdc-static -l en,fr -z -I ../data foo.drv
252
253
254 #
255 # ppdhtml, the PPD to HTML utility.
256 #
257
258 ppdhtml: ppdhtml.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
259 echo Linking $@...
260 $(LD_CXX) $(LDFLAGS) -o $@ ppdhtml.o -L. -lcupsppdc $(LIBS)
261
262
263 #
264 # ppdi, import PPD files.
265 #
266
267 ppdi: ppdi.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
268 echo Linking $@...
269 $(LD_CXX) $(LDFLAGS) -o $@ ppdi.o -L. -lcupsppdc $(LIBS)
270
271
272 ppdi-static: ppdc-static ppdi.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC)
273 echo Linking $@...
274 $(LD_CXX) $(ARCHFLAGS) $(LDFLAGS) -o ppdi-static ppdi.o libcupsppdc.a \
275 ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
276 $(COMMONLIBS) $(LIBZ)
277 echo Testing PPD importer...
278 $(RM) -r ppd ppd2 sample-import.drv
279 ./ppdc-static -l en -I ../data sample.drv
280 ./ppdi-static -I ../data -o sample-import.drv ppd/*
281 ./ppdc-static -l en -I ../data -d ppd2 sample-import.drv
282 if diff -r ppd ppd2 >/dev/null; then \
283 echo PPD import OK; \
284 else \
285 echo PPD import FAILED; \
286 exit 1; \
287 fi
288
289
290 #
291 # ppdmerge, merge PPD files.
292 #
293
294 ppdmerge: ppdmerge.o ../cups/$(LIBCUPS)
295 echo Linking $@...
296 $(LD_CXX) $(LDFLAGS) -o $@ ppdmerge.o $(LIBS)
297
298
299 #
300 # ppdpo, create message catalog files.
301 #
302
303 ppdpo: ppdpo.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
304 echo Linking $@...
305 $(LD_CXX) $(LDFLAGS) -o $@ ppdpo.o -L. -lcupsppdc $(LIBS)
306
307
308 #
309 # testcatalog, test ppdcCatalog class.
310 #
311
312 testcatalog: testcatalog.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC)
313 echo Linking $@...
314 $(LD_CXX) $(LDFLAGS) -o $@ testcatalog.o libcupsppdc.a \
315 ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
316 $(COMMONLIBS) $(LIBZ)
317
318
319 #
320 # libcupsppdc.so.1
321 #
322
323 libcupsppdc.so.1: $(LIBOBJS) ../cups/$(LIBCUPS)
324 echo Linking $@...
325 $(DSOXX) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS) $(LINKCUPS)
326 $(RM) `basename $@ .1`
327 $(LN) $@ `basename $@ .1`
328
329
330 #
331 # libcupsppdc.1.dylib
332 #
333
334 libcupsppdc.1.dylib: $(LIBOBJS) ../cups/$(LIBCUPS)
335 echo Creating export list for $@...
336 nm -gm $(LIBOBJS) | grep "__text" | grep -v weak | awk '{print $$NF}' | sort >t.exp
337 echo Linking $@...
338 $(DSOXX) $(ARCHFLAGS) $(DSOFLAGS) -o $@ \
339 -install_name $(libdir)/$@ \
340 -current_version 1.0.0 \
341 -compatibility_version 1.0.0 \
342 -exported_symbols_list t.exp \
343 $(LIBOBJS) $(LINKCUPS) $(COMMONLIBS)
344 $(RM) libcupsppdc.dylib t.exp
345 $(LN) $@ libcupsppdc.dylib
346
347
348 #
349 # libcupsppdc.la
350 #
351
352 libcupsppdc.la: $(LIBOBJS) ../cups/$(LIBCUPS)
353 echo Linking $@...
354 $(LD_CC) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) -rpath $(LIBDIR) \
355 -version-info 1:0 $(LINKCUPS)
356
357
358 #
359 # libcupsppdc.a
360 #
361
362 libcupsppdc.a: $(LIBOBJS)
363 echo Archiving $@...
364 $(RM) $@
365 $(AR) $(ARFLAGS) $@ $(LIBOBJS)
366 $(RANLIB) $@
367
368
369 #
370 # Include dependencies...
371 #
372
373 include Dependencies