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