2 # "$Id: Makefile 9422 2011-01-06 22:20:15Z mike $"
4 # Makefile for the CUPS PPD Compiler.
6 # Copyright 2007-2011 by Apple Inc.
7 # Copyright 2002-2006 by Easy Software Products.
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/".
17 # Include standard definitions...
84 # Make library targets...
94 unittests: $(UNITTARGETS)
103 $(RM) *.bak *.bck core.*
104 $(RM) $(TARGETS) $(UNITTARGETS)
106 $(RM) sample-import.drv sample.c test.drv
107 $(RM) libcupsppdc.so libcupsppdc.sl libcupsppdc.dylib
111 # Update dependencies...
115 makedepend -Y -I.. -fDependencies $(OBJS:.o=.cxx) >/dev/null 2>&1
119 # Install all targets...
122 install: all install-data install-headers install-libs install-exec
126 # Install data files...
130 $(INSTALL_DIR) $(DATADIR)/drv
131 $(INSTALL_DATA) sample.drv $(DATADIR)/drv
135 # Install programs...
139 echo Installing PPD compiler programs...
140 $(INSTALL_DIR) $(BINDIR)
141 for file in $(EXECTARGETS); do \
142 $(INSTALL_BIN) $$file $(BINDIR); \
144 if test "x$(SYMROOT)" != "x"; then \
145 $(INSTALL_DIR) $(SYMROOT); \
146 for file in $(EXECTARGETS); do \
147 cp $$file $(SYMROOT); \
157 echo Installing header files in $(INCLUDEDIR)/cups...
158 $(INSTALL_DIR) -m 755 $(INCLUDEDIR)/cups
159 $(INSTALL_DATA) ppdc.h $(INCLUDEDIR)/cups
163 # Install libraries...
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`; \
174 if test $(LIBCUPSPPDC) = "libcupsppdc.1.dylib"; then \
175 $(RM) $(LIBDIR)/libcupsppdc.dylib; \
176 $(LN) $(LIBCUPSPPDC) $(LIBDIR)/libcupsppdc.dylib; \
178 if test "x$(SYMROOT)" != "x"; then \
179 $(INSTALL_DIR) $(SYMROOT); \
180 cp $(LIBCUPSPPDC) $(SYMROOT); \
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
195 for file in $(EXECTARGETS); do \
196 $(RM) $(BINDIR)/$$file; \
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
209 $(RM) $(INCLUDEDIR)/cups/ppdc.h
210 -$(RMDIR) $(INCLUDEDIR)/cups
214 # Automatic API help files...
218 mxmldoc --section "Programming" \
219 --title "PPD Compiler API" \
220 --css ../doc/cups-printable.css \
221 --header api-ppdc.header --intro api-ppdc.shtml \
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
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)
237 # genstrings - generate GNU gettext strings.
240 genstrings: genstrings.o libcupsppdc.so ../cups/$(LIBCUPSSTATIC) \
241 sample.drv ../data/media.defs
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
251 # ppdc, the PPD compiler.
254 ppdc: ppdc.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
256 $(CXX) $(LDFLAGS) -o $@ ppdc.o -L. -lcupsppdc $(LIBS)
259 ppdc-static: ppdc.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC) foo.drv foo-fr.po
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
270 # ppdhtml, the PPD to HTML utility.
273 ppdhtml: ppdhtml.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
275 $(CXX) $(LDFLAGS) -o $@ ppdhtml.o -L. -lcupsppdc $(LIBS)
279 # ppdi, import PPD files.
282 ppdi: ppdi.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
284 $(CXX) $(LDFLAGS) -o $@ ppdi.o -L. -lcupsppdc $(LIBS)
287 ppdi-static: ppdc-static ppdi.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC)
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; \
300 echo PPD import FAILED; \
306 # ppdmerge, merge PPD files.
309 ppdmerge: ppdmerge.o ../cups/$(LIBCUPS)
311 $(CXX) $(LDFLAGS) -o $@ ppdmerge.o $(LIBS)
315 # ppdpo, create message catalog files.
318 ppdpo: ppdpo.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
320 $(CXX) $(LDFLAGS) -o $@ ppdpo.o -L. -lcupsppdc $(LIBS)
324 # testcatalog, test ppdcCatalog class.
327 testcatalog: testcatalog.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC)
329 $(CXX) $(LDFLAGS) -o $@ testcatalog.o -lcupsppdc \
330 ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
331 $(COMMONLIBS) $(LIBZ)
335 # libcupsppdc.so.1, libcupsppdc.sl.1
338 libcupsppdc.so.1 libcupsppdc.sl.1: $(LIBOBJS) ../cups/$(LIBCUPS)
340 $(DSOXX) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS) $(LINKCUPS)
341 $(RM) `basename $@ .1`
342 $(LN) $@ `basename $@ .1`
346 # libcupsppdc.1.dylib
349 libcupsppdc.1.dylib: $(LIBOBJS) ../cups/$(LIBCUPS)
350 echo Creating export list for $@...
351 nm $(LIBOBJS) | grep "T __" | awk '{print $$3}' | sort >t.exp
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
367 libcupsppdc_s.a: $(LIBOBJS) ../cups/$(LIBCUPS)
369 $(DSOXX) $(DSOFLAGS) -o libcupsppdc_s.o $(LIBOBJS) $(LINKCUPS)
371 $(AR) $(ARFLAGS) $@ libcupsppdc_s.o
378 libcupsppdc.la: $(LIBOBJS) ../cups/$(LIBCUPS)
380 $(CC) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) -rpath $(LIBDIR) \
381 -version-info 1:0 $(LINKCUPS)
388 libcupsppdc.a: $(LIBOBJS)
391 $(AR) $(ARFLAGS) $@ $(LIBOBJS)
396 # Include dependencies...
403 # End of "$Id: Makefile 9422 2011-01-06 22:20:15Z mike $".