]> git.ipfire.org Git - thirdparty/cups.git/blob - scheduler/Makefile
License change: Apache License, Version 2.0.
[thirdparty/cups.git] / scheduler / Makefile
1 #
2 # Scheduler Makefile for CUPS.
3 #
4 # Copyright 2007-2017 by Apple Inc.
5 # Copyright 1997-2007 by Easy Software Products, all rights reserved.
6 #
7 # Licensed under Apache License v2.0. See the file "LICENSE" for more information.
8 #
9
10 include ../Makedefs
11
12 CUPSDOBJS = \
13 auth.o \
14 banners.o \
15 cert.o \
16 classes.o \
17 client.o \
18 colorman.o \
19 conf.o \
20 dirsvc.o \
21 env.o \
22 file.o \
23 main.o \
24 ipp.o \
25 listen.o \
26 job.o \
27 log.o \
28 network.o \
29 policy.o \
30 printers.o \
31 process.o \
32 quotas.o \
33 select.o \
34 server.o \
35 statbuf.o \
36 subscriptions.o \
37 sysman.o
38 LIBOBJS = \
39 filter.o \
40 mime.o \
41 type.o
42 COBJS = \
43 $(CUPSDOBJS) \
44 $(LIBOBJS) \
45 cupsfilter.o \
46 cups-deviced.o \
47 cups-exec.o \
48 cups-lpd.o \
49 testlpd.o \
50 testmime.o \
51 testspeed.o \
52 testsub.o \
53 util.o
54 CXXOBJS = \
55 cups-driverd.o
56 OBJS = \
57 $(COBJS) \
58 $(LD_CXXOBJS)
59 LIBTARGETS = \
60 $(LIBCUPSMIME) \
61 libcupsmime.a
62
63 UNITTARGETS = \
64 testlpd \
65 testmime \
66 testspeed \
67 testsub
68
69 PROGRAMS = \
70 cupsd \
71 cupsfilter \
72 cups-deviced \
73 cups-driverd \
74 cups-exec \
75 cups-lpd
76
77 TARGETS = \
78 $(LIBTARGETS) \
79 $(PROGRAMS)
80
81
82 #
83 # Make everything...
84 #
85
86 all: $(TARGETS)
87
88
89 #
90 # Make library targets...
91 #
92
93 libs: $(LIBTARGETS)
94
95
96 #
97 # Make unit tests...
98 #
99
100 unittests: $(UNITTARGETS)
101
102
103 #
104 # Clean all object files...
105 #
106
107 clean:
108 $(RM) $(OBJS)
109 $(RM) $(TARGETS) $(UNITTARGETS) convert
110 $(RM) libcupsmime.so libcupsmime.dylib
111
112
113 #
114 # Update dependencies (without system header dependencies...)
115 #
116
117 depend:
118 $(CC) -MM $(ALL_CFLAGS) $(COBJS:.o=.c) >Dependencies
119 $(CXX) -MM $(ALL_CXXFLAGS) $(LD_CXXOBJS:.o=.cxx) >>Dependencies
120
121
122 #
123 # Run oclint to check code coverage...
124 #
125
126 oclint:
127 oclint -o=oclint.html -html $(CUPSDOBJS:.o=.c) $(LIBOBJS:.o=.c) -- $(ALL_CFLAGS)
128
129
130 #
131 # Install all targets...
132 #
133
134 install: all install-data install-headers install-libs install-exec
135
136
137 #
138 # Install data files...
139 #
140
141 install-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) org.cups.cupsd.path $(BUILDROOT)$(SYSTEMD_DIR); \
199 $(INSTALL_DATA) org.cups.cupsd.service $(BUILDROOT)$(SYSTEMD_DIR); \
200 $(INSTALL_DATA) org.cups.cupsd.socket $(BUILDROOT)$(SYSTEMD_DIR); \
201 $(INSTALL_DATA) org.cups.cups-lpdAT.service $(BUILDROOT)$(SYSTEMD_DIR)/org.cups.cups-lpd@.service; \
202 $(INSTALL_DATA) org.cups.cups-lpd.socket $(BUILDROOT)$(SYSTEMD_DIR); \
203 elif test "x$(XINETD)" != x; then \
204 echo Installing xinetd configuration file for cups-lpd...; \
205 $(INSTALL_DIR) -m 755 $(BUILDROOT)$(XINETD); \
206 $(INSTALL_DATA) cups-lpd.xinetd $(BUILDROOT)$(XINETD)/cups-lpd; \
207 fi
208
209
210 #
211 # Install programs...
212 #
213
214 install-exec:
215 echo Installing programs in $(SBINDIR)...
216 $(INSTALL_DIR) -m 755 $(SBINDIR)
217 $(INSTALL_BIN) -m $(CUPS_CUPSD_FILE_PERM) cupsd $(SBINDIR)
218 $(INSTALL_BIN) cupsfilter $(SBINDIR)
219 echo Installing programs in $(SERVERBIN)/daemon...
220 $(INSTALL_DIR) -m 755 $(SERVERBIN)
221 $(INSTALL_DIR) -m 755 $(SERVERBIN)/daemon
222 $(INSTALL_BIN) cups-deviced $(SERVERBIN)/daemon
223 $(INSTALL_BIN) cups-driverd $(SERVERBIN)/daemon
224 $(INSTALL_BIN) cups-exec $(SERVERBIN)/daemon
225 $(INSTALL_BIN) cups-lpd $(SERVERBIN)/daemon
226 if test "x$(SYMROOT)" != "x"; then \
227 $(INSTALL_DIR) $(SYMROOT); \
228 for file in $(PROGRAMS); do \
229 cp $$file $(SYMROOT); \
230 dsymutil $(SYMROOT)/$$file; \
231 done \
232 fi
233
234
235 #
236 # Install headers...
237 #
238
239 install-headers:
240 if test "x$(privateinclude)" != x; then \
241 echo Installing private header files into $(PRIVATEINCLUDE)...; \
242 $(INSTALL_DIR) -m 755 $(PRIVATEINCLUDE); \
243 $(INSTALL_DATA) mime.h $(PRIVATEINCLUDE); \
244 fi
245
246
247 #
248 # Install libraries...
249 #
250
251 install-libs: $(INSTALLSTATIC)
252 echo Installing libraries in $(LIBDIR)...
253 $(INSTALL_DIR) -m 755 $(LIBDIR)
254 $(INSTALL_LIB) $(LIBCUPSMIME) $(LIBDIR)
255 if test $(LIBCUPSMIME) = "libcupsmime.so.1"; then \
256 $(RM) $(LIBDIR)/`basename $(LIBCUPSMIME) .1`; \
257 $(LN) $(LIBCUPSMIME) $(LIBDIR)/`basename $(LIBCUPSMIME) .1`; \
258 fi
259 if test $(LIBCUPSMIME) = "libcupsmime.1.dylib"; then \
260 $(RM) $(LIBDIR)/libcupsmime.dylib; \
261 $(LN) $(LIBCUPSMIME) $(LIBDIR)/libcupsmime.dylib; \
262 fi
263 if test "x$(SYMROOT)" != "x"; then \
264 $(INSTALL_DIR) $(SYMROOT); \
265 cp $(LIBCUPSMIME) $(SYMROOT); \
266 dsymutil $(SYMROOT)/$(LIBCUPSMIME); \
267 fi
268
269 installstatic:
270 $(INSTALL_DIR) -m 755 $(LIBDIR)
271 $(INSTALL_LIB) -m 755 libcupsmime.a $(LIBDIR)
272 $(RANLIB) $(LIBDIR)/libcupsmime.a
273 $(CHMOD) 555 $(LIBDIR)/libcupsmime.a
274
275
276 #
277 # Uninstall the scheduler...
278 #
279
280 uninstall:
281 $(RM) $(SBINDIR)/cupsd
282 $(RM) $(SBINDIR)/cupsfilter
283 $(RM) $(SERVERBIN)/daemon/cups-deviced
284 $(RM) $(SERVERBIN)/daemon/cups-driverd
285 $(RM) $(SERVERBIN)/daemon/cups-exec
286 $(RM) $(SERVERBIN)/daemon/cups-lpd
287 -$(RMDIR) $(STATEDIR)/certs
288 -$(RMDIR) $(STATEDIR)
289 -$(RMDIR) $(SERVERROOT)/ppd
290 -$(RMDIR) $(SERVERROOT)/interfaces
291 -$(RMDIR) $(SERVERROOT)
292 -$(RMDIR) $(SERVERBIN)/driver
293 -$(RMDIR) $(SERVERBIN)/daemon
294 -$(RMDIR) $(SERVERBIN)
295 -$(RMDIR) $(SBINDIR)
296 -$(RMDIR) $(REQUESTS)/tmp
297 -$(RMDIR) $(REQUESTS)
298 -$(RMDIR) $(LOGDIR)
299 -$(RMDIR) $(CACHEDIR)
300 $(RM) $(LIBDIR)/libcupsmime.1.dylib
301 $(RM) $(LIBDIR)/libcupsmime.a
302 $(RM) $(LIBDIR)/libcupsmime.dylib
303 $(RM) $(LIBDIR)/libcupsmime.so
304 $(RM) $(LIBDIR)/libcupsmime.so.1
305 -$(RMDIR) $(LIBDIR)
306 -if test "x$(privateinclude)" != x; then \
307 $(RM) $(PRIVATEINCLUDE)/mime.h; \
308 $(RMDIR) $(PRIVATEINCLUDE); \
309 fi
310 if test "x$(INITDIR)" != x; then \
311 echo Uninstalling init scripts...; \
312 $(RM) $(BUILDROOT)$(INITDIR)/init.d/cups; \
313 $(RMDIR) $(BUILDROOT)$(INITDIR)/init.d; \
314 $(RM) $(BUILDROOT)$(INITDIR)/rc0.d/K00cups; \
315 $(RMDIR) $(BUILDROOT)$(INITDIR)/rc0.d; \
316 $(RM) $(BUILDROOT)$(INITDIR)/rc2.d/S99cups; \
317 $(RMDIR) $(BUILDROOT)$(INITDIR)/rc2.d; \
318 $(RM) $(BUILDROOT)$(INITDIR)/rc3.d/S99cups; \
319 $(RMDIR) $(BUILDROOT)$(INITDIR)/rc3.d; \
320 $(RM) $(BUILDROOT)$(INITDIR)/rc5.d/S99cups; \
321 $(RMDIR) $(BUILDROOT)$(INITDIR)/rc5.d; \
322 fi
323 if test "x$(INITDDIR)" != x; then \
324 echo Uninstalling startup script...; \
325 $(RM) $(BUILDROOT)$(INITDDIR)/cups.sh; \
326 $(RMDIR) $(BUILDROOT)$(INITDDIR); \
327 fi
328 if test "x$LAUNCHD_DIR" != x; then \
329 echo Uninstalling launchd files...; \
330 $(RM) $(BUILDROOT)$(LAUNCHD_DIR)/org.cups.cupsd.plist; \
331 $(RM) $(BUILDROOT)$(LAUNCHD_DIR)/org.cups.cups-lpd.plist; \
332 fi
333 if test "x$SYSTEMD_DIR" != x; then \
334 echo Uninstalling systemd files...; \
335 $(RM) $(BUILDROOT)$(SYSTEMD_DIR)/org.cups.cupsd.path; \
336 $(RM) $(BUILDROOT)$(SYSTEMD_DIR)/org.cups.cupsd.service; \
337 $(RM) $(BUILDROOT)$(SYSTEMD_DIR)/org.cups.cupsd.socket; \
338 fi
339 if test "x$(SMFMANIFESTDIR)" != x; then \
340 echo Uninstalling SMF manifest file...;\
341 $(RM) $(BUILDROOT)$(SMFMANIFESTDIR)/cups.xml; \
342 fi
343 if test "x$(XINETD)" != x; then \
344 echo Uninstalling xinetd configuration file for cups-lpd...; \
345 $(RM) $(BUILDROOT)$(XINETD)/cups-lpd; \
346 fi
347
348
349 #
350 # Make the scheduler executable, "cupsd".
351 #
352
353 cupsd: $(CUPSDOBJS) $(LIBCUPSMIME) ../cups/$(LIBCUPS)
354 echo Linking $@...
355 $(LD_CC) $(LDFLAGS) -o cupsd $(CUPSDOBJS) -L. -lcupsmime \
356 $(LIBZ) $(SSLLIBS) $(LIBSLP) $(LIBLDAP) $(PAMLIBS) \
357 $(LIBPAPER) $(LIBMALLOC) $(SERVERLIBS) $(ONDEMANDLIBS) \
358 $(DNSSDLIBS) $(LIBS) $(LIBGSSAPI) $(LIBWRAP)
359
360 cupsd-static: $(CUPSDOBJS) libcupsmime.a ../cups/$(LIBCUPSSTATIC)
361 echo Linking $@...
362 $(LD_CC) $(LDFLAGS) -o cupsd-static $(CUPSDOBJS) libcupsmime.a \
363 $(LIBZ) $(SSLLIBS) $(LIBSLP) $(LIBLDAP) $(PAMLIBS) \
364 ../cups/$(LIBCUPSSTATIC) $(COMMONLIBS) $(LIBZ) $(LIBPAPER) \
365 $(LIBMALLOC) $(SERVERLIBS) $(ONDEMANDLIBS) $(DNSSDLIBS) \
366 $(LIBGSSAPI) $(LIBWRAP)
367
368
369 #
370 # Make the cupsfilter utility.
371 #
372
373 cupsfilter: cupsfilter.o $(LIBCUPSMIME) ../cups/$(LIBCUPS)
374 echo Linking $@...
375 $(LD_CC) $(LDFLAGS) -o cupsfilter cupsfilter.o -L. -lcupsmime $(LIBS)
376 $(RM) convert
377 $(LN) cupsfilter convert
378
379 cupsfilter-static: cupsfilter.o libcupsmime.a ../cups/$(LIBCUPSSTATIC)
380 echo Linking $@...
381 $(LD_CC) $(LDFLAGS) -o cupsfilter-static cupsfilter.o libcupsmime.a \
382 ../cups/$(LIBCUPSSTATIC) $(COMMONLIBS) $(LIBZ) $(SSLLIBS) \
383 $(DNSSDLIBS) $(LIBGSSAPI)
384
385
386 #
387 # Make the device daemon, "cups-deviced".
388 #
389
390 cups-deviced: cups-deviced.o util.o ../cups/$(LIBCUPS)
391 echo Linking $@...
392 $(LD_CC) $(LDFLAGS) -o cups-deviced cups-deviced.o util.o $(LIBS)
393
394
395 #
396 # Make the driver daemon, "cups-driverd".
397 #
398
399 cups-driverd: cups-driverd.o util.o ../cups/$(LIBCUPS) ../ppdc/$(LIBCUPSPPDC)
400 echo Linking $@...
401 $(LD_CXX) $(LDFLAGS) -o cups-driverd cups-driverd.o util.o \
402 -L../ppdc -lcupsppdc $(LIBS)
403
404
405 #
406 # Make the sandbox execution helper, "cups-exec".
407 #
408
409 cups-exec: cups-exec.o
410 echo Linking $@...
411 $(LD_CC) $(LDFLAGS) -o cups-exec cups-exec.o $(LIBS)
412
413
414 #
415 # Make the line printer daemon, "cups-lpd".
416 #
417
418 cups-lpd: cups-lpd.o ../cups/$(LIBCUPS)
419 echo Linking $@...
420 $(LD_CC) $(LDFLAGS) -o cups-lpd cups-lpd.o $(LIBS)
421
422
423 #
424 # libcupsmime.so.1
425 #
426
427 libcupsmime.so.1: $(LIBOBJS)
428 echo Linking $@...
429 $(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS) $(LIBS)
430 $(RM) `basename $@ .1`
431 $(LN) $@ `basename $@ .1`
432
433
434 #
435 # libcupsmime.1.dylib
436 #
437
438 libcupsmime.1.dylib: $(LIBOBJS) libcupsmime.exp
439 echo Linking $@...
440 $(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ \
441 -install_name $(libdir)/$@ \
442 -current_version 1.0.0 \
443 -compatibility_version 1.0.0 \
444 -exported_symbols_list libcupsmime.exp \
445 $(LIBOBJS) $(LIBS)
446 $(RM) libcupsmime.dylib
447 $(LN) $@ libcupsmime.dylib
448
449
450 #
451 # libcupsmime.la
452 #
453
454 libcupsmime.la: $(LIBOBJS)
455 echo Linking $@...
456 $(LD_CC) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) -rpath $(LIBDIR) \
457 -version-info 1:0 $(LIBS)
458
459
460 #
461 # libcupsmime.a
462 #
463
464 libcupsmime.a: $(LIBOBJS)
465 echo Archiving $@...
466 $(RM) $@
467 $(AR) $(ARFLAGS) $@ $(LIBOBJS)
468 $(RANLIB) $@
469
470
471 #
472 # Make the test program, "testlpd".
473 #
474
475 testlpd: testlpd.o ../cups/$(LIBCUPSSTATIC) cups-lpd
476 echo Linking $@...
477 $(LD_CC) $(LDFLAGS) -o testlpd testlpd.o ../cups/$(LIBCUPSSTATIC) \
478 $(COMMONLIBS) $(LIBZ) $(SSLLIBS) $(DNSSDLIBS) $(LIBGSSAPI)
479
480
481 #
482 # testmime
483 #
484
485 testmime: testmime.o libcupsmime.a ../cups/$(LIBCUPSSTATIC)
486 echo Linking $@...
487 $(LD_CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ testmime.o libcupsmime.a \
488 ../cups/$(LIBCUPSSTATIC) $(COMMONLIBS) $(LIBZ) $(SSLLIBS) \
489 $(DNSSDLIBS) $(LIBGSSAPI)
490 echo Running MIME tests...
491 ./testmime
492
493
494 #
495 # Make the test program, "testspeed".
496 #
497
498 testspeed: testspeed.o ../cups/$(LIBCUPSSTATIC)
499 echo Linking $@...
500 $(LD_CC) $(LDFLAGS) -o testspeed testspeed.o ../cups/$(LIBCUPSSTATIC) \
501 $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ) $(LIBGSSAPI)
502
503
504 #
505 # Make the test program, "testsub".
506 #
507
508 testsub: testsub.o ../cups/$(LIBCUPSSTATIC)
509 echo Linking $@...
510 $(LD_CC) $(LDFLAGS) -o testsub testsub.o ../cups/$(LIBCUPSSTATIC) \
511 $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ) $(LIBGSSAPI)
512
513
514 #
515 # Lines of code computation...
516 #
517
518 sloc:
519 echo "cupsd: \c"
520 sloccount $(CUPSDOBJS:.o=.c) $(LIBOBJS:.o=.c) cups-driverd.cxx cups-lpd.c 2>/dev/null | grep "Total Physical" | awk '{print $$9}'
521
522
523 #
524 # Dependencies...
525 #
526
527 include Dependencies