1# 2# Scheduler Makefile for CUPS. 3# 4# Copyright © 2020-2023 by OpenPrinting 5# Copyright © 2007-2019 by Apple Inc. 6# Copyright © 1997-2007 by Easy Software Products, all rights reserved. 7# 8# Licensed under Apache License v2.0. See the file "LICENSE" for more 9# information. 10# 11 12include ../Makedefs 13 14CUPSDOBJS = \ 15 auth.o \ 16 banners.o \ 17 cert.o \ 18 classes.o \ 19 client.o \ 20 colorman.o \ 21 conf.o \ 22 dirsvc.o \ 23 env.o \ 24 file.o \ 25 main.o \ 26 ipp.o \ 27 listen.o \ 28 job.o \ 29 log.o \ 30 network.o \ 31 policy.o \ 32 printers.o \ 33 process.o \ 34 quotas.o \ 35 select.o \ 36 server.o \ 37 statbuf.o \ 38 subscriptions.o \ 39 sysman.o 40LIBOBJS = \ 41 filter.o \ 42 mime.o \ 43 type.o 44COBJS = \ 45 $(CUPSDOBJS) \ 46 $(LIBOBJS) \ 47 cupsfilter.o \ 48 cups-deviced.o \ 49 cups-exec.o \ 50 cups-lpd.o \ 51 testlpd.o \ 52 testmime.o \ 53 testspeed.o \ 54 testsub.o \ 55 util.o 56CXXOBJS = \ 57 cups-driverd.o 58OBJS = \ 59 $(COBJS) \ 60 $(CXXOBJS) 61LIBTARGETS = \ 62 libcupsmime.a 63 64UNITTARGETS = \ 65 testlpd \ 66 testmime \ 67 testspeed \ 68 testsub 69 70PROGRAMS = \ 71 cupsd \ 72 cupsfilter \ 73 cups-deviced \ 74 cups-driverd \ 75 cups-exec \ 76 cups-lpd 77 78TARGETS = \ 79 $(LIBTARGETS) \ 80 $(PROGRAMS) 81 82 83# 84# Make everything... 85# 86 87all: $(TARGETS) 88 89 90# 91# Make library targets... 92# 93 94libs: 95 96 97# 98# Make unit tests... 99# 100 101unittests: $(UNITTARGETS) 102 103 104# 105# Clean all object files... 106# 107 108clean: 109 $(RM) $(OBJS) 110 $(RM) $(TARGETS) $(UNITTARGETS) convert 111 112 113# 114# Update dependencies (without system header dependencies...) 115# 116 117depend: 118 $(CC) -MM $(ALL_CFLAGS) $(COBJS:.o=.c) >Dependencies 119 $(CXX) -MM $(ALL_CXXFLAGS) $(CXXOBJS:.o=.cxx) >>Dependencies 120 121 122# 123# Run oclint to check code coverage... 124# 125 126oclint: 127 oclint -o=oclint.html -html $(CUPSDOBJS:.o=.c) $(LIBOBJS:.o=.c) -- $(ALL_CFLAGS) 128 129 130# 131# Install all targets... 132# 133 134install: all install-data install-headers install-libs install-exec 135 136 137# 138# Install data files... 139# 140 141install-data: 142 echo Creating $(SERVERBIN)/driver... 143 $(INSTALL_DIR) -m 755 $(SERVERBIN)/driver 144 echo Creating $(SERVERROOT)... 145 $(INSTALL_DIR) -m 755 -g $(CUPS_GROUP) $(SERVERROOT) 146 echo Creating $(SERVERROOT)/ppd... 147 $(INSTALL_DIR) -m 755 -g $(CUPS_GROUP) $(SERVERROOT)/ppd 148 if test "x`uname`" != xDarwin; then \ 149 echo Creating $(SERVERROOT)/ssl...; \ 150 $(INSTALL_DIR) -m 700 -g $(CUPS_GROUP) $(SERVERROOT)/ssl; \ 151 fi 152 if test "$(STATEDIR)" != "$(SERVERROOT)"; then \ 153 echo Creating $(STATEDIR)...; \ 154 $(INSTALL_DIR) -m 755 $(STATEDIR); \ 155 fi 156 echo Creating $(STATEDIR)/certs... 157 $(INSTALL_DIR) -m 511 -o $(CUPS_USER) -g $(CUPS_PRIMARY_SYSTEM_GROUP) \ 158 $(STATEDIR)/certs 159 echo Creating $(LOGDIR)... 160 $(INSTALL_DIR) -m 755 $(LOGDIR) 161 echo Creating $(REQUESTS)... 162 $(INSTALL_DIR) -m 710 -g $(CUPS_GROUP) $(REQUESTS) 163 echo Creating $(REQUESTS)/tmp... 164 $(INSTALL_DIR) -m 1770 -g $(CUPS_GROUP) $(REQUESTS)/tmp 165 echo Creating $(CACHEDIR)... 166 $(INSTALL_DIR) -m 770 -g $(CUPS_GROUP) $(CACHEDIR) 167 if test "x$(INITDIR)" != x; then \ 168 echo Installing init scripts...; \ 169 $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/init.d; \ 170 $(INSTALL_SCRIPT) cups.sh $(BUILDROOT)$(INITDIR)/init.d/cups; \ 171 for level in $(RCLEVELS); do \ 172 $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/rc$${level}.d; \ 173 $(LN) ../init.d/cups $(BUILDROOT)$(INITDIR)/rc$${level}.d/S$(RCSTART)cups; \ 174 $(LN) ../init.d/cups $(BUILDROOT)$(INITDIR)/rc$${level}.d/K$(RCSTOP)cups; \ 175 done; \ 176 $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/rc0.d; \ 177 $(LN) ../init.d/cups $(BUILDROOT)$(INITDIR)/rc0.d/K$(RCSTOP)cups; \ 178 fi 179 if test "x$(INITDDIR)" != x; then \ 180 echo Installing init script...; \ 181 $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDDIR); \ 182 $(INSTALL_SCRIPT) cups.sh $(BUILDROOT)$(INITDDIR); \ 183 fi 184 if test "x$(LAUNCHD_DIR)" != x; then \ 185 echo Installing launchd configuration files...; \ 186 $(INSTALL_DIR) $(BUILDROOT)$(LAUNCHD_DIR); \ 187 $(INSTALL_DATA) org.cups.cupsd.plist $(BUILDROOT)$(LAUNCHD_DIR); \ 188 $(INSTALL_DATA) org.cups.cups-lpd.plist $(BUILDROOT)$(LAUNCHD_DIR); \ 189 fi 190 if test "x$(SMFMANIFESTDIR)" != x; then \ 191 echo Installing SMF manifest in $(SMFMANIFESTDIR)...;\ 192 $(INSTALL_DIR) $(BUILDROOT)/$(SMFMANIFESTDIR); \ 193 $(INSTALL_SCRIPT) cups.xml $(BUILDROOT)$(SMFMANIFESTDIR)/cups.xml; \ 194 fi 195 if test "x$(SYSTEMD_DIR)" != x; then \ 196 echo Installing systemd configuration files...; \ 197 $(INSTALL_DIR) $(BUILDROOT)$(SYSTEMD_DIR); \ 198 $(INSTALL_DATA) system-cups.slice $(BUILDROOT)$(SYSTEMD_DIR); \ 199 $(INSTALL_DATA) cups.path $(BUILDROOT)$(SYSTEMD_DIR); \ 200 $(INSTALL_DATA) cups.service $(BUILDROOT)$(SYSTEMD_DIR); \ 201 $(INSTALL_DATA) cups.socket $(BUILDROOT)$(SYSTEMD_DIR); \ 202 $(INSTALL_DATA) cups-lpdAT.service $(BUILDROOT)$(SYSTEMD_DIR)/cups-lpd@.service; \ 203 $(INSTALL_DATA) cups-lpd.socket $(BUILDROOT)$(SYSTEMD_DIR); \ 204 fi 205 if test "x$(XINETD)" != x; then \ 206 echo Installing xinetd configuration file for cups-lpd...; \ 207 $(INSTALL_DIR) -m 755 $(BUILDROOT)$(XINETD); \ 208 $(INSTALL_DATA) cups-lpd.xinetd $(BUILDROOT)$(XINETD)/cups-lpd; \ 209 fi 210 211 212# 213# Install programs... 214# 215 216install-exec: 217 echo Installing programs in $(SBINDIR)... 218 $(INSTALL_DIR) -m 755 $(SBINDIR) 219 $(INSTALL_BIN) -m $(CUPS_CUPSD_FILE_PERM) cupsd $(SBINDIR) 220 $(INSTALL_BIN) cupsfilter $(SBINDIR) 221 echo Installing programs in $(SERVERBIN)/daemon... 222 $(INSTALL_DIR) -m 755 $(SERVERBIN) 223 $(INSTALL_DIR) -m 755 $(SERVERBIN)/daemon 224 $(INSTALL_BIN) cups-deviced $(SERVERBIN)/daemon 225 $(INSTALL_BIN) cups-driverd $(SERVERBIN)/daemon 226 $(INSTALL_BIN) cups-exec $(SERVERBIN)/daemon 227 $(INSTALL_BIN) cups-lpd $(SERVERBIN)/daemon 228 if test "x$(SYMROOT)" != "x"; then \ 229 $(INSTALL_DIR) $(SYMROOT); \ 230 for file in $(PROGRAMS); do \ 231 cp $$file $(SYMROOT); \ 232 dsymutil $(SYMROOT)/$$file; \ 233 done \ 234 fi 235 236 237# 238# Install headers... 239# 240 241install-headers: 242 243 244# 245# Install libraries... 246# 247 248install-libs: 249 250 251# 252# Uninstall the scheduler... 253# 254 255uninstall: 256 $(RM) $(SBINDIR)/cupsd 257 $(RM) $(SBINDIR)/cupsfilter 258 $(RM) $(SERVERBIN)/daemon/cups-deviced 259 $(RM) $(SERVERBIN)/daemon/cups-driverd 260 $(RM) $(SERVERBIN)/daemon/cups-exec 261 $(RM) $(SERVERBIN)/daemon/cups-lpd 262 -$(RMDIR) $(STATEDIR)/certs 263 -$(RMDIR) $(STATEDIR) 264 -$(RMDIR) $(SERVERROOT)/ppd 265 -$(RMDIR) $(SERVERROOT)/interfaces 266 -$(RMDIR) $(SERVERROOT) 267 -$(RMDIR) $(SERVERBIN)/driver 268 -$(RMDIR) $(SERVERBIN)/daemon 269 -$(RMDIR) $(SERVERBIN) 270 -$(RMDIR) $(SBINDIR) 271 -$(RMDIR) $(REQUESTS)/tmp 272 -$(RMDIR) $(REQUESTS) 273 -$(RMDIR) $(LOGDIR) 274 -$(RMDIR) $(CACHEDIR) 275 if test "x$(INITDIR)" != x; then \ 276 echo Uninstalling init scripts...; \ 277 $(RM) $(BUILDROOT)$(INITDIR)/init.d/cups; \ 278 $(RMDIR) $(BUILDROOT)$(INITDIR)/init.d; \ 279 $(RM) $(BUILDROOT)$(INITDIR)/rc0.d/K00cups; \ 280 $(RMDIR) $(BUILDROOT)$(INITDIR)/rc0.d; \ 281 $(RM) $(BUILDROOT)$(INITDIR)/rc2.d/S99cups; \ 282 $(RMDIR) $(BUILDROOT)$(INITDIR)/rc2.d; \ 283 $(RM) $(BUILDROOT)$(INITDIR)/rc3.d/S99cups; \ 284 $(RMDIR) $(BUILDROOT)$(INITDIR)/rc3.d; \ 285 $(RM) $(BUILDROOT)$(INITDIR)/rc5.d/S99cups; \ 286 $(RMDIR) $(BUILDROOT)$(INITDIR)/rc5.d; \ 287 fi 288 if test "x$(INITDDIR)" != x; then \ 289 echo Uninstalling startup script...; \ 290 $(RM) $(BUILDROOT)$(INITDDIR)/cups.sh; \ 291 $(RMDIR) $(BUILDROOT)$(INITDDIR); \ 292 fi 293 if test "x$LAUNCHD_DIR" != x; then \ 294 echo Uninstalling launchd files...; \ 295 $(RM) $(BUILDROOT)$(LAUNCHD_DIR)/org.cups.cupsd.plist; \ 296 $(RM) $(BUILDROOT)$(LAUNCHD_DIR)/org.cups.cups-lpd.plist; \ 297 fi 298 if test "x$SYSTEMD_DIR" != x; then \ 299 echo Uninstalling systemd files...; \ 300 $(RM) $(BUILDROOT)$(SYSTEMD_DIR)/cups.path; \ 301 $(RM) $(BUILDROOT)$(SYSTEMD_DIR)/cups.service; \ 302 $(RM) $(BUILDROOT)$(SYSTEMD_DIR)/cups.socket; \ 303 fi 304 if test "x$(SMFMANIFESTDIR)" != x; then \ 305 echo Uninstalling SMF manifest file...;\ 306 $(RM) $(BUILDROOT)$(SMFMANIFESTDIR)/cups.xml; \ 307 fi 308 if test "x$(XINETD)" != x; then \ 309 echo Uninstalling xinetd configuration file for cups-lpd...; \ 310 $(RM) $(BUILDROOT)$(XINETD)/cups-lpd; \ 311 fi 312 313 314# 315# Make the scheduler executable, "cupsd". 316# 317 318cupsd: $(CUPSDOBJS) libcupsmime.a ../cups/$(LIBCUPS) 319 echo Linking $@... 320 $(LD_CC) $(ALL_LDFLAGS) -o cupsd $(CUPSDOBJS) libcupsmime.a \ 321 $(PAMLIBS) $(LIBPAPER) $(LIBMALLOC) $(DNSSDLIBS) $(SERVERLIBS) \ 322 $(ONDEMANDLIBS) $(LIBWRAP) $(LIBGSSAPI) $(COMMONLIBS) $(LINKCUPS) 323 $(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@ 324 325cupsd-static: $(CUPSDOBJS) libcupsmime.a ../cups/$(LIBCUPSSTATIC) 326 echo Linking $@... 327 $(LD_CC) $(ALL_LDFLAGS) -o cupsd-static $(CUPSDOBJS) libcupsmime.a \ 328 $(PAMLIBS) $(LIBPAPER) $(LIBMALLOC) $(SERVERLIBS) $(ONDEMANDLIBS) \ 329 $(LIBWRAP) $(LINKCUPSSTATIC) 330 $(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@ 331 332 333# 334# Make the cupsfilter utility. 335# 336 337cupsfilter: cupsfilter.o libcupsmime.a ../cups/$(LIBCUPS) 338 echo Linking $@... 339 $(LD_CC) $(ALL_LDFLAGS) -o cupsfilter cupsfilter.o libcupsmime.a $(LINKCUPS) 340 $(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@ 341 $(RM) convert 342 $(LN) cupsfilter convert 343 344cupsfilter-static: cupsfilter.o libcupsmime.a ../cups/$(LIBCUPSSTATIC) 345 echo Linking $@... 346 $(LD_CC) $(ALL_LDFLAGS) -o cupsfilter-static cupsfilter.o libcupsmime.a \ 347 $(LINKCUPSSTATIC) 348 $(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@ 349 350 351# 352# Make the device daemon, "cups-deviced". 353# 354 355cups-deviced: cups-deviced.o util.o ../cups/$(LIBCUPS) 356 echo Linking $@... 357 $(LD_CC) $(ALL_LDFLAGS) -o cups-deviced cups-deviced.o util.o $(LINKCUPS) 358 $(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@ 359 360 361# 362# Make the driver daemon, "cups-driverd". 363# 364 365cups-driverd: cups-driverd.o util.o ../cups/$(LIBCUPS) ../ppdc/libcupsppdc.a 366 echo Linking $@... 367 $(LD_CXX) $(ALL_LDFLAGS) -o cups-driverd cups-driverd.o util.o \ 368 ../ppdc/libcupsppdc.a $(COMMONLIBS) $(LINKCUPS) 369 $(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@ 370 371 372# 373# Make the sandbox execution helper, "cups-exec". 374# 375 376cups-exec: cups-exec.o 377 echo Linking $@... 378 $(LD_CC) $(ALL_LDFLAGS) -o cups-exec cups-exec.o $(LINKCUPS) 379 $(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@ 380 381 382# 383# Make the line printer daemon, "cups-lpd". 384# 385 386cups-lpd: cups-lpd.o ../cups/$(LIBCUPS) 387 echo Linking $@... 388 $(LD_CC) $(ALL_LDFLAGS) -o cups-lpd cups-lpd.o $(LINKCUPS) 389 $(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@ 390 391 392# 393# libcupsmime.a 394# 395 396libcupsmime.a: $(LIBOBJS) 397 echo Archiving $@... 398 $(RM) $@ 399 $(AR) $(ARFLAGS) $@ $(LIBOBJS) 400 $(RANLIB) $@ 401 402 403# 404# Make the test program, "testlpd". 405# 406 407testlpd: testlpd.o ../cups/$(LIBCUPSSTATIC) cups-lpd 408 echo Linking $@... 409 $(LD_CC) $(ALL_LDFLAGS) -o testlpd testlpd.o $(LINKCUPSSTATIC) 410 411 412# 413# testmime 414# 415 416testmime: testmime.o libcupsmime.a ../cups/$(LIBCUPSSTATIC) 417 echo Linking $@... 418 $(LD_CC) $(ARCHFLAGS) $(ALL_LDFLAGS) -o $@ testmime.o libcupsmime.a \ 419 $(LINKCUPSSTATIC) 420 $(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@ 421 echo Running MIME tests... 422 ./testmime 423 424 425# 426# Make the test program, "testspeed". 427# 428 429testspeed: testspeed.o ../cups/$(LIBCUPSSTATIC) 430 echo Linking $@... 431 $(LD_CC) $(ALL_LDFLAGS) -o testspeed testspeed.o $(LINKCUPSSTATIC) 432 $(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@ 433 434 435# 436# Make the test program, "testsub". 437# 438 439testsub: testsub.o ../cups/$(LIBCUPSSTATIC) 440 echo Linking $@... 441 $(LD_CC) $(ALL_LDFLAGS) -o testsub testsub.o $(LINKCUPSSTATIC) 442 $(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@ 443 444 445# 446# Lines of code computation... 447# 448 449sloc: 450 echo "cupsd: \c" 451 sloccount $(CUPSDOBJS:.o=.c) $(LIBOBJS:.o=.c) cups-driverd.cxx cups-lpd.c 2>/dev/null | grep "Total Physical" | awk '{print $$9}' 452 453 454# 455# Dependencies... 456# 457 458include Dependencies 459