xref: /aosp_15_r20/external/libcups/cups/Makefile (revision 5e7646d21f1134fb0638875d812ef646c12ab91e)
1#
2# Library Makefile for CUPS.
3#
4# Copyright © 2007-2019 by Apple Inc.
5# Copyright © 1997-2006 by Easy Software Products, all rights reserved.
6#
7# Licensed under Apache License v2.0.  See the file "LICENSE" for more
8# information.
9#
10
11include ../Makedefs
12
13
14#
15# Object files...
16#
17
18COREOBJS	=	\
19		array.o \
20		auth.o \
21		debug.o \
22		dest.o \
23		dest-job.o \
24		dest-localization.o \
25		dest-options.o \
26		dir.o \
27		encode.o \
28		file.o \
29		getputfile.o \
30		globals.o \
31		hash.o \
32		http.o \
33		http-addr.o \
34		http-addrlist.o \
35		http-support.o \
36		ipp.o \
37		ipp-file.o \
38		ipp-vars.o \
39		ipp-support.o \
40		langprintf.o \
41		language.o \
42		md5.o \
43		md5passwd.o \
44		notify.o \
45		options.o \
46		pwg-media.o \
47		raster-error.o \
48		raster-stream.o \
49		raster-stubs.o \
50		request.o \
51		snprintf.o \
52		string.o \
53		tempfile.o \
54		thread.o \
55		tls.o \
56		transcode.o \
57		usersys.o \
58		util.o
59
60DRIVEROBJS	=	\
61		adminutil.o \
62		backchannel.o \
63		backend.o \
64		getdevices.o \
65		getifaddrs.o \
66		ppd.o \
67		ppd-attr.o \
68		ppd-cache.o \
69		ppd-conflicts.o \
70		ppd-custom.o \
71		ppd-emit.o \
72		ppd-localize.o \
73		ppd-mark.o \
74		ppd-page.o \
75		ppd-util.o \
76		raster-interpret.o \
77		raster-interstub.o \
78		sidechannel.o \
79		snmp.o
80
81LIBOBJS		= \
82		$(LIBCUPSOBJS)
83
84IMAGEOBJS	= \
85		raster-interstub.o \
86		raster-stubs.o
87
88TESTOBJS	= \
89		rasterbench.o \
90		testadmin.o \
91		testarray.o \
92		testcache.o \
93		testclient.o \
94		testconflicts.o \
95		testcreds.o \
96		testcups.o \
97		testdest.o \
98		testfile.o \
99		testgetdests.o \
100		testhttp.o \
101		testi18n.o \
102		testipp.o \
103		testoptions.o \
104		testlang.o \
105		testppd.o \
106		testpwg.o \
107		testraster.o \
108		testsnmp.o \
109		testthreads.o \
110		tlscheck.o
111OBJS	=	\
112		$(LIBOBJS) \
113		$(IMAGEOBJS) \
114		$(TESTOBJS)
115
116
117#
118# Header files to install...
119#
120
121COREHEADERS	=	\
122		array.h \
123		cups.h \
124		dir.h \
125		file.h \
126		http.h \
127		ipp.h \
128		language.h \
129		pwg.h \
130		raster.h \
131		transcode.h \
132		versioning.h
133
134DRIVERHEADERS	=	\
135		adminutil.h \
136		backend.h \
137		ppd.h \
138		sidechannel.h
139
140HEADERS		=	\
141		$(LIBHEADERS)
142
143COREHEADERSPRIV =	\
144		array-private.h \
145		cups-private.h \
146		debug-private.h \
147		file-private.h \
148		http-private.h \
149		ipp-private.h \
150		language-private.h \
151		pwg-private.h \
152		raster-private.h \
153		string-private.h \
154		thread-private.h
155
156DRIVERHEADERSPRIV	=	\
157		ppd-private.h \
158		snmp-private.h
159
160HEADERSPRIV	=	\
161		$(LIBHEADERSPRIV)
162
163
164#
165# Targets in this directory...
166#
167
168LIBTARGETS =	\
169		$(LIBCUPSIMAGE) \
170		$(LIBCUPSSTATIC) \
171		$(LIBCUPS) \
172		libcupsimage.a
173
174UNITTARGETS =	\
175		rasterbench \
176		testadmin \
177		testarray \
178		testcache \
179		testclient \
180		testconflicts \
181		testcreds \
182		testcups \
183		testdest \
184		testfile \
185		testgetdests \
186		testhttp \
187		testi18n \
188		testipp \
189		testlang \
190		testoptions \
191		testppd \
192		testpwg \
193		testraster \
194		testsnmp \
195		testthreads \
196		tlscheck
197
198TARGETS	=	\
199		$(LIBTARGETS)
200
201
202#
203# Make all targets...
204#
205
206all:		$(TARGETS)
207
208
209#
210# Make library targets...
211#
212
213libs:		$(LIBTARGETS)
214
215
216#
217# Make unit tests...
218#
219
220unittests:	$(UNITTARGETS)
221
222
223#
224# Remove object and target files...
225#
226
227clean:
228	$(RM) $(OBJS) $(TARGETS) $(UNITTARGETS)
229	$(RM) libcups.so libcups.dylib
230	$(RM) libcupsimage.so libcupsimage.dylib
231
232
233#
234# Update dependencies (without system header dependencies...)
235#
236
237depend:
238	$(CC) -MM $(ALL_CFLAGS) $(OBJS:.o=.c) >Dependencies
239
240
241#
242# Run oclint to check code coverage...
243#
244
245oclint:
246	oclint -o=oclint.html -html $(LIBOBJS:.o=.c) -- $(ALL_CFLAGS)
247
248
249#
250# Install all targets...
251#
252
253install:	all install-data install-headers install-libs install-exec
254
255
256#
257# Install data files...
258#
259
260install-data:
261
262
263#
264# Install programs...
265#
266
267install-exec:
268
269
270#
271# Install headers...
272#
273
274install-headers:
275	echo Installing header files into $(INCLUDEDIR)/cups...
276	$(INSTALL_DIR) -m 755 $(INCLUDEDIR)/cups
277	for file in $(HEADERS); do \
278		$(INSTALL_DATA) $$file $(INCLUDEDIR)/cups; \
279	done
280	if test "x$(privateinclude)" != x; then \
281		echo Installing private header files into $(PRIVATEINCLUDE)...; \
282		$(INSTALL_DIR) -m 755 $(PRIVATEINCLUDE); \
283		for file in $(HEADERSPRIV); do \
284			$(INSTALL_DATA) $$file $(PRIVATEINCLUDE)/$$file; \
285		done; \
286	fi
287
288
289#
290# Install libraries...
291#
292
293install-libs: $(LIBTARGETS) $(INSTALLSTATIC)
294	echo Installing libraries in $(LIBDIR)...
295	$(INSTALL_DIR) -m 755 $(LIBDIR)
296	$(INSTALL_LIB) $(LIBCUPS) $(LIBDIR)
297	if test $(LIBCUPS) = "libcups.so.2"; then \
298		$(RM) $(LIBDIR)/`basename $(LIBCUPS) .2`; \
299		$(LN) $(LIBCUPS) $(LIBDIR)/`basename $(LIBCUPS) .2`; \
300	fi
301	if test $(LIBCUPS) = "libcups.2.dylib"; then \
302		$(RM) $(LIBDIR)/libcups.dylib; \
303		$(LN) $(LIBCUPS) $(LIBDIR)/libcups.dylib; \
304	fi
305	-if test "x$(LIBCUPSIMAGE)" != x; then \
306		$(INSTALL_LIB) $(LIBCUPSIMAGE) $(LIBDIR); \
307	fi
308	-if test "x$(LIBCUPSIMAGE)" = "xlibcupsimage.so.2"; then \
309		$(RM) $(LIBDIR)/`basename $(LIBCUPSIMAGE) .2`; \
310		$(LN) $(LIBCUPSIMAGE) $(LIBDIR)/`basename $(LIBCUPSIMAGE) .2`; \
311	fi
312	-if test "x$(LIBCUPSIMAGE)" = "xlibcupsimage.2.dylib"; then \
313		$(RM) $(LIBDIR)/libcupsimage.dylib; \
314		$(LN) $(LIBCUPSIMAGE) $(LIBDIR)/libcupsimage.dylib; \
315	fi
316	if test "x$(SYMROOT)" != "x"; then \
317		$(INSTALL_DIR) $(SYMROOT); \
318		cp $(LIBCUPS) $(SYMROOT); \
319		dsymutil $(SYMROOT)/$(LIBCUPS); \
320		if test "x$(LIBCUPSIMAGE)" != x; then \
321			cp $(LIBCUPSIMAGE) $(SYMROOT); \
322			dsymutil $(SYMROOT)/$(LIBCUPSIMAGE); \
323		fi; \
324	fi
325
326installstatic:
327	$(INSTALL_DIR) -m 755 $(LIBDIR)
328	$(INSTALL_LIB) -m 755 $(LIBCUPSSTATIC) $(LIBDIR)
329	$(RANLIB) $(LIBDIR)/$(LIBCUPSSTATIC)
330	$(CHMOD) 555 $(LIBDIR)/$(LIBCUPSSTATIC)
331	$(INSTALL_LIB) -m 755 libcupsimage.a $(LIBDIR)
332	$(RANLIB) $(LIBDIR)/libcupsimage.a
333	$(CHMOD) 555 $(LIBDIR)/libcupsimage.a
334
335
336#
337# Uninstall object and target files...
338#
339
340uninstall:
341	$(RM) $(LIBDIR)/libcups.2.dylib
342	$(RM) $(LIBDIR)/libcups.a
343	$(RM) $(LIBDIR)/libcups.dylib
344	$(RM) $(LIBDIR)/libcups.so
345	$(RM) $(LIBDIR)/libcups.so.2
346	$(RM) $(LIBDIR)/libcupsimage.2.dylib
347	$(RM) $(LIBDIR)/libcupsimage.a
348	$(RM) $(LIBDIR)/libcupsimage.dylib
349	$(RM) $(LIBDIR)/libcupsimage.so
350	$(RM) $(LIBDIR)/libcupsimage.so.2
351	-$(RMDIR) $(LIBDIR)
352	for file in $(HEADERS); do \
353		$(RM) $(INCLUDEDIR)/cups/$$file; \
354	done
355	-$(RMDIR) $(INCLUDEDIR)/cups
356	if test "x$(privateinclude)" != x; then \
357		for file in $(HEADERSPRIV); do \
358			$(RM) $(PRIVATEINCLUDE)/cups/$$file; \
359		done
360		$(RMDIR) $(PRIVATEINCLUDE)/cups; \
361	fi
362
363
364#
365# libcups.so.2
366#
367
368libcups.so.2:	$(LIBOBJS)
369	echo Linking $@...
370	$(DSO) $(ARCHFLAGS) $(ALL_DSOFLAGS) -o $@ $(LIBOBJS) $(LIBS)
371	$(RM) `basename $@ .2`
372	$(LN) $@ `basename $@ .2`
373
374
375#
376# libcups.2.dylib
377#
378
379libcups.2.dylib:	$(LIBOBJS)
380	echo Linking $@...
381	$(DSO) $(ARCHFLAGS) $(ALL_DSOFLAGS) -o $@ \
382		-install_name $(libdir)/$@ \
383		-current_version 2.14.0 \
384		-compatibility_version 2.0.0 \
385		$(LIBOBJS) $(LIBS)
386	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
387	$(RM) libcups.dylib
388	$(LN) $@ libcups.dylib
389
390
391#
392# libcups.la
393#
394
395libcups.la:    $(LIBOBJS)
396	echo Linking $@...
397	$(LD_CC) $(ARCHFLAGS) $(ALL_DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) \
398		-rpath $(LIBDIR) -version-info 2:14 $(LIBS)
399
400
401#
402# libcups.a
403#
404
405libcups.a:	$(LIBOBJS)
406	echo Archiving $@...
407	$(RM) $@
408	$(AR) $(ARFLAGS) $@ $(LIBOBJS)
409	$(RANLIB) $@
410
411
412#
413# libcups2.def (Windows DLL exports file...)
414#
415
416libcups2.def: $(LIBOBJS) $(IMAGEOBJS) Makefile
417	echo Generating $@...
418	echo "LIBRARY libcups2" >libcups2.def
419	echo "VERSION 2.14" >>libcups2.def
420	echo "EXPORTS" >>libcups2.def
421	(nm $(LIBOBJS) $(IMAGEOBJS) 2>/dev/null | grep "T _" | awk '{print $$3}'; \
422	 echo __cups_strcpy; echo __cups_strlcat; echo __cups_strlcpy; \
423	 echo __cups_snprintf; echo __cups_vsnprintf; echo __cups_gettimeofday) | \
424		grep -v -E \
425		    -e 'cups_debug|Apple|BackChannel|Backend|FileCheck|Filter|GSSService|SetNegotiate|SideChannel|SNMP' \
426		    -e 'Block$$' | \
427		sed -e '1,$$s/^_//' | sort >>libcups2.def
428
429
430#
431# libcupsimage.so.2
432#
433
434libcupsimage.so.2:	$(IMAGEOBJS) libcups.so.2
435	echo Linking $@...
436	$(DSO) $(ARCHFLAGS) $(ALL_DSOFLAGS) -o $@ $(IMAGEOBJS) $(LINKCUPS)
437	$(RM) `basename $@ .2`
438	$(LN) $@ `basename $@ .2`
439
440
441#
442# libcupsimage.2.dylib
443#
444
445libcupsimage.2.dylib:	$(IMAGEOBJS) libcups.2.dylib
446	echo Linking $@...
447	$(DSO) $(ARCHFLAGS) $(ALL_DSOFLAGS) -o $@ \
448		-install_name $(libdir)/$@ \
449		-current_version 2.3.0 \
450		-compatibility_version 2.0.0 \
451		$(IMAGEOBJS) $(LINKCUPS)
452	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
453	$(RM) libcupsimage.dylib
454	$(LN) $@ libcupsimage.dylib
455
456
457#
458# libcupsimage.la
459#
460
461libcupsimage.la:       $(IMAGEOBJS) libcups.la
462	echo Linking $@...
463	$(DSO) $(ARCHFLAGS) $(ALL_DSOFLAGS) -o $@ $(IMAGEOBJS:.o=.lo) \
464		$(LINKCUPS) -rpath $(LIBDIR) -version-info 2:3
465
466
467#
468# libcupsimage.a
469#
470
471libcupsimage.a:	$(IMAGEOBJS)
472	echo Archiving $@...
473	$(RM) $@
474	$(AR) $(ARFLAGS) $@ $(IMAGEOBJS)
475	$(RANLIB) $@
476
477
478#
479# rasterbench (dependency on static CUPS library is intentional)
480#
481
482rasterbench:	rasterbench.o $(LIBCUPSSTATIC)
483	echo Linking $@...
484	$(LD_CC) $(ALL_LDFLAGS) -o $@ rasterbench.o $(LINKCUPSSTATIC)
485	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
486
487
488#
489# testadmin (dependency on static CUPS library is intentional)
490#
491
492testadmin:	testadmin.o $(LIBCUPSSTATIC)
493	echo Linking $@...
494	$(LD_CC) $(ALL_LDFLAGS) -o $@ testadmin.o $(LINKCUPSSTATIC)
495	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
496
497
498#
499# testarray (dependency on static CUPS library is intentional)
500#
501
502testarray:	testarray.o $(LIBCUPSSTATIC)
503	echo Linking $@...
504	$(LD_CC) $(ARCHFLAGS) $(ALL_LDFLAGS) -o $@ testarray.o $(LINKCUPSSTATIC)
505	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
506	echo Running array API tests...
507	./testarray
508
509
510#
511# testcache (dependency on static CUPS library is intentional)
512#
513
514testcache:	testcache.o $(LIBCUPSSTATIC)
515	echo Linking $@...
516	$(LD_CC) $(ALL_LDFLAGS) -o $@ testcache.o $(LINKCUPSSTATIC)
517	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
518
519
520#
521# testclient (dependency on static libraries is intentional)
522#
523
524testclient:	testclient.o $(LIBCUPSSTATIC)
525	echo Linking $@...
526	$(LD_CC) $(ALL_LDFLAGS) -o $@ testclient.o $(LINKCUPSSTATIC)
527	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
528
529
530#
531# testconflicts (dependency on static CUPS library is intentional)
532#
533
534testconflicts:	testconflicts.o $(LIBCUPSSTATIC)
535	echo Linking $@...
536	$(LD_CC) $(ALL_LDFLAGS) -o $@ testconflicts.o $(LINKCUPSSTATIC)
537	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
538
539
540#
541# testcreds (dependency on static CUPS library is intentional)
542#
543
544testcreds:	testcreds.o $(LIBCUPSSTATIC)
545	echo Linking $@...
546	$(LD_CC) $(ARCHFLAGS) $(ALL_LDFLAGS) -o $@ testcreds.o $(LINKCUPSSTATIC)
547	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
548
549
550#
551# testcups (dependency on static CUPS library is intentional)
552#
553
554testcups:	testcups.o $(LIBCUPSSTATIC)
555	echo Linking $@...
556	$(LD_CC) $(ALL_LDFLAGS) -o $@ testcups.o $(LINKCUPSSTATIC)
557	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
558
559
560#
561# testdest (dependency on static CUPS library is intentional)
562#
563
564testdest:	testdest.o $(LIBCUPSSTATIC)
565	echo Linking $@...
566	$(LD_CC) $(ALL_LDFLAGS) -o $@ testdest.o $(LINKCUPSSTATIC)
567	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
568
569
570#
571# testfile (dependency on static CUPS library is intentional)
572#
573
574testfile:	testfile.o $(LIBCUPSSTATIC)
575	echo Linking $@...
576	$(LD_CC) $(ARCHFLAGS) $(ALL_LDFLAGS) -o $@ testfile.o $(LINKCUPSSTATIC)
577	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
578	echo Running file API tests...
579	./testfile
580
581
582#
583# testgetdests (dependency on static CUPS library is intentional)
584#
585
586testgetdests:	testgetdests.o $(LIBCUPSSTATIC)
587	echo Linking $@...
588	$(LD_CC) $(ALL_LDFLAGS) -o $@ testgetdests.o $(LINKCUPSSTATIC)
589	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
590
591
592#
593# testhttp (dependency on static CUPS library is intentional)
594#
595
596testhttp:	testhttp.o $(LIBCUPSSTATIC)
597	echo Linking $@...
598	$(LD_CC) $(ARCHFLAGS) $(ALL_LDFLAGS) -o $@ testhttp.o $(LINKCUPSSTATIC)
599	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
600	echo Running HTTP API tests...
601	./testhttp
602
603
604#
605# testipp (dependency on static CUPS library is intentional)
606#
607
608testipp:	testipp.o $(LIBCUPSSTATIC)
609	echo Linking $@...
610	$(LD_CC) $(ARCHFLAGS) $(ALL_LDFLAGS) -o $@ testipp.o $(LINKCUPSSTATIC)
611	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
612	echo Running IPP API tests...
613	./testipp
614
615
616#
617# testi18n (dependency on static CUPS library is intentional)
618#
619
620testi18n:	testi18n.o $(LIBCUPSSTATIC)
621	echo Linking $@...
622	$(LD_CC) $(ARCHFLAGS) $(ALL_LDFLAGS) -o $@ testi18n.o $(LINKCUPSSTATIC)
623	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
624	echo Running internationalization API tests...
625	./testi18n
626
627
628#
629# testlang (dependency on static CUPS library is intentional)
630#
631
632testlang:	testlang.o $(LIBCUPSSTATIC)
633	echo Linking $@...
634	$(LD_CC) $(ARCHFLAGS) $(ALL_LDFLAGS) -o $@ testlang.o $(LINKCUPSSTATIC)
635	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
636	echo Creating locale directory structure...
637	$(RM) -r locale
638	for po in ../locale/cups_*.po; do \
639		lang=`basename $$po .po | sed -e '1,$$s/^cups_//'`; \
640		$(MKDIR) locale/$$lang; \
641		$(LN) ../../$$po locale/$$lang; \
642	done
643	echo Running language API tests...
644	LOCALEDIR=locale ./testlang
645
646
647#
648# testoptions (dependency on static CUPS library is intentional)
649#
650
651testoptions:	testoptions.o $(LIBCUPSSTATIC)
652	echo Linking $@...
653	$(LD_CC) $(ARCHFLAGS) $(ALL_LDFLAGS) -o $@ testoptions.o $(LINKCUPSSTATIC)
654	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
655	echo Running option API tests...
656	./testoptions
657
658
659#
660# testppd (dependency on static CUPS library is intentional)
661#
662
663testppd:	testppd.o $(LIBCUPSSTATIC) test.ppd test2.ppd
664	echo Linking $@...
665	$(LD_CC) $(ARCHFLAGS) $(ALL_LDFLAGS) -o $@ testppd.o $(LINKCUPSSTATIC)
666	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
667	echo Running PPD API tests...
668	./testppd
669
670
671#
672# testpwg (dependency on static CUPS library is intentional)
673#
674
675testpwg:	testpwg.o $(LIBCUPSSTATIC) test.ppd
676	echo Linking $@...
677	$(LD_CC) $(ARCHFLAGS) $(ALL_LDFLAGS) -o $@ testpwg.o $(LINKCUPSSTATIC)
678	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
679	echo Running PWG API tests...
680	./testpwg test.ppd
681
682
683#
684# testraster (dependency on static CUPS library is intentional)
685#
686
687testraster:	testraster.o $(LIBCUPSSTATIC)
688	echo Linking $@...
689	$(LD_CC) $(ARCHFLAGS) $(ALL_LDFLAGS) -o $@ testraster.o $(LINKCUPSSTATIC)
690	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
691	echo Running raster API tests...
692	./testraster
693
694
695#
696# testsnmp (dependency on static CUPS library is intentional)
697#
698
699testsnmp:	testsnmp.o $(LIBCUPSSTATIC)
700	echo Linking $@...
701	$(LD_CC) $(ALL_LDFLAGS) -o $@ testsnmp.o $(LINKCUPSSTATIC)
702	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
703
704
705#
706# testthreads (dependency on static CUPS library is intentional)
707#
708
709testthreads:	testthreads.o $(LIBCUPSSTATIC)
710	echo Linking $@...
711	$(LD_CC) $(ALL_LDFLAGS) -o $@ testthreads.o $(LINKCUPSSTATIC)
712	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
713
714
715#
716# tlscheck (dependency on static CUPS library is intentional)
717#
718
719tlscheck:	tlscheck.o $(LIBCUPSSTATIC)
720	echo Linking $@...
721	$(LD_CC) $(ARCHFLAGS) $(ALL_LDFLAGS) -o $@ tlscheck.o $(LINKCUPSSTATIC)
722	$(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
723
724
725#
726# Automatic API help files...
727#
728
729apihelp:
730	echo Generating CUPS API help files...
731	$(RM) cupspm.xml
732	codedoc --section "Programming" --body cupspm.md \
733		cupspm.xml \
734		auth.c cups.h dest*.c encode.c http.h http*.c ipp.h ipp*.c \
735		options.c tls-darwin.c usersys.c util.c \
736		--coverimage cupspm.png \
737		--epub ../doc/help/cupspm.epub
738	codedoc --section "Programming" --body cupspm.md \
739		cupspm.xml > ../doc/help/cupspm.html
740	$(RM) cupspm.xml
741	codedoc --section "Programming" --title "Administration APIs" \
742		--css ../doc/cups-printable.css \
743		--header api-admin.header --body api-admin.shtml \
744		adminutil.c adminutil.h getdevices.c >../doc/help/api-admin.html
745	codedoc --section "Programming" --title "PPD API (DEPRECATED)" \
746		--css ../doc/cups-printable.css \
747		--header api-ppd.header --body api-ppd.shtml \
748		ppd.h ppd-*.c raster-interstub.c >../doc/help/api-ppd.html
749	codedoc --section "Programming" --title "Raster API" \
750		--css ../doc/cups-printable.css \
751		--header api-raster.header --body api-raster.shtml \
752		../cups/raster.h raster-stubs.c \
753		>../doc/help/api-raster.html
754	codedoc --section "Programming" \
755		--title "Filter and Backend Programming" \
756		--css ../doc/cups-printable.css \
757		--header api-filter.header --body api-filter.shtml \
758		backchannel.c backend.h backend.c sidechannel.c sidechannel.h \
759		>../doc/help/api-filter.html
760
761
762#
763# Lines of code computation...
764#
765
766sloc:
767	echo "libcups: \c"
768	sloccount $(LIBOBJS:.o=.c) 2>/dev/null | grep "Total Physical" | awk '{print $$9}'
769	echo "libcupsimage: \c"
770	sloccount $(IMAGEOBJS:.o=.c) 2>/dev/null | grep "Total Physical" | awk '{print $$9}'
771
772
773#
774# Dependencies...
775#
776
777include Dependencies
778tls.o: tls-darwin.c tls-gnutls.c tls-sspi.c
779