2 # Makefile for the CUPS PPD Compiler.
4 # Copyright 2007-2017 by Apple Inc.
5 # Copyright 2002-2006 by Easy Software Products.
7 # Licensed under Apache License v2.0. See the file "LICENSE" for more information.
11 # Include standard definitions...
78 # Make library targets...
88 unittests
: $(UNITTARGETS
)
97 $(RM
) *.bak
*.bck core.
*
98 $(RM
) $(TARGETS
) $(UNITTARGETS
) genstrings
100 $(RM
) sample-import.drv sample.c
test.drv
101 $(RM
) libcupsppdc.so libcupsppdc.dylib
105 # Update dependencies...
109 $(CXX
) -MM
$(ALL_CXXFLAGS
) $(OBJS
:.o
=.
cxx) >Dependencies
113 # Install all targets...
116 install: all install-data install-headers install-libs install-exec
120 # Install data files...
124 $(INSTALL_DIR
) $(DATADIR
)/drv
125 $(INSTALL_DATA
) sample.drv
$(DATADIR
)/drv
129 # Install programs...
133 echo Installing PPD compiler programs...
134 $(INSTALL_DIR
) $(BINDIR
)
135 for file in
$(EXECTARGETS
); do \
136 $(INSTALL_BIN
) $$file $(BINDIR
); \
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; \
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
); \
160 # Install libraries...
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`; \
171 if
test $(LIBCUPSPPDC
) = "libcupsppdc.1.dylib"; then \
172 $(RM
) $(LIBDIR
)/libcupsppdc.dylib
; \
173 $(LN
) $(LIBCUPSPPDC
) $(LIBDIR
)/libcupsppdc.dylib
; \
175 if
test "x$(SYMROOT)" != "x"; then \
176 $(INSTALL_DIR
) $(SYMROOT
); \
177 cp
$(LIBCUPSPPDC
) $(SYMROOT
); \
178 dsymutil
$(SYMROOT
)/$(LIBCUPSPPDC
); \
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
193 for file in
$(EXECTARGETS
); do \
194 $(RM
) $(BINDIR
)/$$file; \
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
204 -if
test "x$(privateinclude)" != x
; then \
205 $(RM
) $(PRIVATEINCLUDE
)/ppdc.h
; \
206 $(RMDIR
) $(PRIVATEINCLUDE
); \
211 # Local programs (not built when cross-compiling...)
218 # genstrings - generate GNU gettext strings.
221 genstrings
: genstrings.o libcupsppdc.a ..
/cups
/$(LIBCUPSSTATIC
) \
222 sample.drv ..
/data
/media.defs
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
232 # ppdc, the PPD compiler.
235 ppdc
: ppdc.o
$(LIBCUPSPPDC
) ..
/cups
/$(LIBCUPS
)
237 $(LD_CXX
) $(LDFLAGS
) -o
$@ ppdc.o
-L.
-lcupsppdc
$(LIBS
)
240 ppdc-static
: ppdc.o libcupsppdc.a ..
/cups
/$(LIBCUPSSTATIC
) foo.drv foo-fr.po
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
251 # ppdhtml, the PPD to HTML utility.
254 ppdhtml
: ppdhtml.o
$(LIBCUPSPPDC
) ..
/cups
/$(LIBCUPS
)
256 $(LD_CXX
) $(LDFLAGS
) -o
$@ ppdhtml.o
-L.
-lcupsppdc
$(LIBS
)
260 # ppdi, import PPD files.
263 ppdi
: ppdi.o
$(LIBCUPSPPDC
) ..
/cups
/$(LIBCUPS
)
265 $(LD_CXX
) $(LDFLAGS
) -o
$@ ppdi.o
-L.
-lcupsppdc
$(LIBS
)
268 ppdi-static
: ppdc-static ppdi.o libcupsppdc.a ..
/cups
/$(LIBCUPSSTATIC
)
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
; \
281 echo PPD import FAILED
; \
287 # ppdmerge, merge PPD files.
290 ppdmerge
: ppdmerge.o ..
/cups
/$(LIBCUPS
)
292 $(LD_CXX
) $(LDFLAGS
) -o
$@ ppdmerge.o
$(LIBS
)
296 # ppdpo, create message catalog files.
299 ppdpo
: ppdpo.o
$(LIBCUPSPPDC
) ..
/cups
/$(LIBCUPS
)
301 $(LD_CXX
) $(LDFLAGS
) -o
$@ ppdpo.o
-L.
-lcupsppdc
$(LIBS
)
305 # testcatalog, test ppdcCatalog class.
308 testcatalog
: testcatalog.o libcupsppdc.a ..
/cups
/$(LIBCUPSSTATIC
)
310 $(LD_CXX
) $(LDFLAGS
) -o
$@ testcatalog.o libcupsppdc.a \
311 ..
/cups
/$(LIBCUPSSTATIC
) $(LIBGSSAPI
) $(SSLLIBS
) $(DNSSDLIBS
) \
312 $(COMMONLIBS
) $(LIBZ
)
319 libcupsppdc.so
.1: $(LIBOBJS
) ..
/cups
/$(LIBCUPS
)
321 $(DSOXX
) $(ARCHFLAGS
) $(DSOFLAGS
) -o
$@
$(LIBOBJS
) $(LINKCUPS
)
322 $(RM
) `basename $@ .1`
323 $(LN
) $@
`basename $@ .1`
327 # libcupsppdc.1.dylib
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
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
348 libcupsppdc.la
: $(LIBOBJS
) ..
/cups
/$(LIBCUPS
)
350 $(LD_CC
) $(ARCHFLAGS
) $(DSOFLAGS
) -o
$@
$(LIBOBJS
:.o
=.lo
) -rpath
$(LIBDIR
) \
351 -version-info
1:0 $(LINKCUPS
)
358 libcupsppdc.a
: $(LIBOBJS
)
361 $(AR
) $(ARFLAGS
) $@
$(LIBOBJS
)
366 # Include dependencies...