• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#
2# Makefile for the CUPS PPD Compiler.
3#
4# Copyright © 2020-2024 by OpenPrinting.
5# Copyright © 2007-2019 by Apple Inc.
6# Copyright © 2002-2006 by Easy Software Products.
7#
8# Licensed under Apache License v2.0.  See the file "LICENSE" for more
9# information.
10#
11
12#
13# Include standard definitions...
14#
15
16include ../Makedefs
17
18
19#
20# Object files...
21#
22
23LIBOBJS =	\
24		ppdc-array.o \
25		ppdc-attr.o \
26		ppdc-catalog.o \
27		ppdc-choice.o \
28		ppdc-constraint.o \
29		ppdc-driver.o \
30		ppdc-file.o \
31		ppdc-filter.o \
32		ppdc-font.o \
33		ppdc-group.o \
34		ppdc-import.o \
35		ppdc-mediasize.o \
36		ppdc-message.o \
37		ppdc-option.o \
38		ppdc-profile.o \
39		ppdc-shared.o \
40		ppdc-source.o \
41		ppdc-string.o \
42		ppdc-variable.o
43OBJS =		\
44		$(LIBOBJS) \
45		genstrings.o \
46		ppdc.o \
47		ppdhtml.o \
48		ppdi.o \
49		ppdmerge.o \
50		ppdpo.o \
51		testcatalog.o
52LIBTARGETS =	\
53		libcupsppdc.a
54UNITTARGETS =	\
55		ppdc-static \
56		ppdi-static \
57		testcatalog
58EXECTARGETS =	\
59		ppdc \
60		ppdhtml \
61		ppdi \
62		ppdmerge \
63		ppdpo
64
65TARGETS	=	\
66		$(LIBTARGETS) \
67		$(EXECTARGETS) \
68		$(LOCALTARGET)
69
70
71#
72# Make everything...
73#
74
75all:		$(TARGETS)
76
77
78#
79# Make library targets...
80#
81
82libs:
83
84
85#
86# Make unit tests...
87#
88
89unittests:	$(UNITTARGETS)
90
91
92#
93# Clean everything...
94#
95
96clean:
97	$(RM) $(OBJS) core
98	$(RM) *.bak *.bck core.*
99	$(RM) $(TARGETS) $(UNITTARGETS) genstrings
100	$(RM) -r ppd ppd2
101	$(RM) sample-import.drv sample.c test.drv
102
103
104#
105# Update dependencies...
106#
107
108depend:
109	$(CXX) -MM $(ALL_CXXFLAGS) $(OBJS:.o=.cxx) >Dependencies
110
111
112#
113# Install all targets...
114#
115
116install:	all install-data install-headers install-libs install-exec
117
118
119#
120# Install data files...
121#
122
123install-data:
124	$(INSTALL_DIR) $(DATADIR)/drv
125	$(INSTALL_DATA) sample.drv $(DATADIR)/drv
126
127
128#
129# Install programs...
130#
131
132install-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
151install-headers:
152
153
154#
155# Install libraries...
156#
157
158install-libs:
159
160
161#
162# Uninstall...
163#
164
165uninstall:
166	for file in $(EXECTARGETS); do \
167		$(RM) $(BINDIR)/$$file; \
168	done
169	$(RM) $(DATADIR)/drv/sample.drv
170	$(RMDIR) $(DATADIR)/drv
171
172
173#
174# Local programs (not built when cross-compiling...)
175#
176
177local:	genstrings
178
179
180#
181# genstrings - generate GNU gettext strings.
182#
183
184genstrings:		genstrings.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC) \
185			sample.drv ../data/media.defs
186	echo Linking $@...
187	$(LD_CXX) $(ARCHFLAGS) $(ALL_LDFLAGS) -o genstrings genstrings.o \
188		libcupsppdc.a $(LINKCUPSSTATIC)
189	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
190	echo Generating localization strings...
191	./genstrings >sample.c
192
193
194#
195# ppdc, the PPD compiler.
196#
197
198ppdc:			ppdc.o libcupsppdc.a ../cups/$(LIBCUPS)
199	echo Linking $@...
200	$(LD_CXX) $(ALL_LDFLAGS) -o $@ ppdc.o libcupsppdc.a $(COMMONLIBS) $(LINKCUPS)
201	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
202
203
204ppdc-static:		ppdc.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC) foo.drv foo-fr.po
205	echo Linking $@...
206	$(LD_CXX) $(ARCHFLAGS) $(ALL_LDFLAGS) -o ppdc-static ppdc.o libcupsppdc.a \
207		$(LINKCUPSSTATIC)
208	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
209	echo Testing PPD compiler...
210	./ppdc-static -l en,fr -I ../data foo.drv
211	./ppdc-static -l en,fr -z -I ../data foo.drv
212
213
214#
215# ppdhtml, the PPD to HTML utility.
216#
217
218ppdhtml:			ppdhtml.o libcupsppdc.a ../cups/$(LIBCUPS)
219	echo Linking $@...
220	$(LD_CXX) $(ALL_LDFLAGS) -o $@ ppdhtml.o libcupsppdc.a $(COMMONLIBS) $(LINKCUPS)
221	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
222
223
224#
225# ppdi, import PPD files.
226#
227
228ppdi:			ppdi.o libcupsppdc.a ../cups/$(LIBCUPS)
229	echo Linking $@...
230	$(LD_CXX) $(ALL_LDFLAGS) -o $@ ppdi.o libcupsppdc.a $(COMMONLIBS) $(LINKCUPS)
231	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
232
233
234ppdi-static:		ppdc-static ppdi.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC)
235	echo Linking $@...
236	$(LD_CXX) $(ARCHFLAGS) $(ALL_LDFLAGS) -o ppdi-static ppdi.o libcupsppdc.a \
237		$(LINKCUPSSTATIC)
238	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
239	echo Testing PPD importer...
240	$(RM) -r ppd ppd2 sample-import.drv
241	./ppdc-static -l en -I ../data sample.drv
242	./ppdi-static -I ../data -o sample-import.drv ppd/*
243	./ppdc-static -l en -I ../data -d ppd2 sample-import.drv
244	if diff -r ppd ppd2 >/dev/null; then \
245		echo PPD import OK; \
246	else \
247		echo PPD import FAILED; \
248		exit 1; \
249	fi
250
251
252#
253# ppdmerge, merge PPD files.
254#
255
256ppdmerge:			ppdmerge.o ../cups/$(LIBCUPS)
257	echo Linking $@...
258	$(LD_CXX) $(ALL_LDFLAGS) -o $@ ppdmerge.o $(LINKCUPS)
259	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
260
261
262#
263# ppdpo, create message catalog files.
264#
265
266ppdpo:			ppdpo.o libcupsppdc.a ../cups/$(LIBCUPS)
267	echo Linking $@...
268	$(LD_CXX) $(ALL_LDFLAGS) -o $@ ppdpo.o libcupsppdc.a $(COMMONLIBS) $(LINKCUPS)
269	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
270
271
272#
273# testcatalog, test ppdcCatalog class.
274#
275
276testcatalog:		testcatalog.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC)
277	echo Linking $@...
278	$(LD_CXX) $(ALL_LDFLAGS) -o $@ testcatalog.o libcupsppdc.a \
279		$(LINKCUPSSTATIC)
280	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
281
282
283#
284# libcupsppdc.a
285#
286
287libcupsppdc.a:	$(LIBOBJS)
288	echo Archiving $@...
289	$(RM) $@
290	$(AR) $(ARFLAGS) $@ $(LIBOBJS)
291	$(RANLIB) $@
292
293
294#
295# Include dependencies...
296#
297
298include Dependencies
299