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