• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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