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