Home | History | Annotate | Download | only in cups
      1 #
      2 # Library Makefile for CUPS.
      3 #
      4 # Copyright 2007-2017 by Apple Inc.
      5 # Copyright 1997-2006 by Easy Software Products, all rights reserved.
      6 #
      7 # These coded instructions, statements, and computer programs are the
      8 # property of Apple Inc. and are protected by Federal copyright
      9 # law.  Distribution and use rights are outlined in the file "LICENSE.txt"
     10 # which should have been included with this file.  If this file is
     11 # missing or damaged, see the license at "http://www.cups.org/".
     12 #
     13 # This file is subject to the Apple OS-Developed Software exception.
     14 #
     15 
     16 include ../Makedefs
     17 
     18 
     19 #
     20 # Options to build libcups without the use of deprecated APIs...
     21 #
     22 
     23 OPTIONS	=	-D_CUPS_NO_DEPRECATED=1 -D_PPD_DEPRECATED=""
     24 
     25 
     26 #
     27 # Object files...
     28 #
     29 
     30 LIBOBJS	=	\
     31 		adminutil.o \
     32 		array.o \
     33 		auth.o \
     34 		backchannel.o \
     35 		backend.o \
     36 		debug.o \
     37 		dest.o \
     38 		dest-job.o \
     39 		dest-localization.o \
     40 		dest-options.o \
     41 		dir.o \
     42 		encode.o \
     43 		file.o \
     44 		getdevices.o \
     45 		getifaddrs.o \
     46 		getputfile.o \
     47 		globals.o \
     48 		hash.o \
     49 		http.o \
     50 		http-addr.o \
     51 		http-addrlist.o \
     52 		http-support.o \
     53 		ipp.o \
     54 		ipp-support.o \
     55 		langprintf.o \
     56 		language.o \
     57 		md5.o \
     58 		md5passwd.o \
     59 		notify.o \
     60 		options.o \
     61 		ppd.o \
     62 		ppd-attr.o \
     63 		ppd-cache.o \
     64 		ppd-conflicts.o \
     65 		ppd-custom.o \
     66 		ppd-emit.o \
     67 		ppd-localize.o \
     68 		ppd-mark.o \
     69 		ppd-page.o \
     70 		ppd-util.o \
     71 		pwg-media.o \
     72 		request.o \
     73 		sidechannel.o \
     74 		snmp.o \
     75 		snprintf.o \
     76 		string.o \
     77 		tempfile.o \
     78 		thread.o \
     79 		tls.o \
     80 		transcode.o \
     81 		usersys.o \
     82 		util.o
     83 TESTOBJS	= \
     84 		testadmin.o \
     85 		testarray.o \
     86 		testcache.o \
     87 		testconflicts.o \
     88 		testcreds.o \
     89 		testcups.o \
     90 		testdest.o \
     91 		testfile.o \
     92 		testgetdests.o \
     93 		testhttp.o \
     94 		testi18n.o \
     95 		testipp.o \
     96 		testoptions.o \
     97 		testlang.o \
     98 		testppd.o \
     99 		testpwg.o \
    100 		testsnmp.o \
    101 		tlscheck.o
    102 OBJS	=	\
    103 		$(LIBOBJS) \
    104 		$(TESTOBJS)
    105 
    106 
    107 #
    108 # Header files to install...
    109 #
    110 
    111 HEADERS	=	\
    112 		adminutil.h \
    113 		array.h \
    114 		backend.h \
    115 		cups.h \
    116 		dir.h \
    117 		file.h \
    118 		http.h \
    119 		ipp.h \
    120 		language.h \
    121 		ppd.h \
    122 		pwg.h \
    123 		raster.h \
    124 		sidechannel.h \
    125 		transcode.h \
    126 		versioning.h
    127 
    128 HEADERSPRIV =	\
    129 		array-private.h \
    130 		cups-private.h \
    131 		debug-private.h \
    132 		file-private.h \
    133 		http-private.h \
    134 		ipp-private.h \
    135 		language-private.h \
    136 		md5-private.h \
    137 		ppd-private.h \
    138 		pwg-private.h \
    139 		raster-private.h \
    140 		snmp-private.h \
    141 		string-private.h \
    142 		thread-private.h
    143 
    144 
    145 #
    146 # Targets in this directory...
    147 #
    148 
    149 LIBTARGETS =	\
    150 		$(LIBCUPSSTATIC) \
    151 		$(LIBCUPS)
    152 
    153 UNITTARGETS =	\
    154 		testadmin \
    155 		testarray \
    156 		testcache \
    157 		testconflicts \
    158 		testcreds \
    159 		testcups \
    160 		testdest \
    161 		testfile \
    162 		testgetdests \
    163 		testhttp \
    164 		testi18n \
    165 		testipp \
    166 		testlang \
    167 		testoptions \
    168 		testppd \
    169 		testpwg \
    170 		testsnmp \
    171 		tlscheck
    172 
    173 TARGETS	=	\
    174 		$(LIBTARGETS)
    175 
    176 
    177 #
    178 # Make all targets...
    179 #
    180 
    181 all:		$(TARGETS)
    182 
    183 
    184 #
    185 # Make library targets...
    186 #
    187 
    188 libs:		$(LIBTARGETS)
    189 
    190 
    191 #
    192 # Make unit tests...
    193 #
    194 
    195 unittests:	$(UNITTARGETS)
    196 
    197 
    198 #
    199 # Remove object and target files...
    200 #
    201 
    202 clean:
    203 	$(RM) $(OBJS) $(TARGETS) $(UNITTARGETS)
    204 	$(RM) libcups.so libcups.dylib
    205 
    206 
    207 #
    208 # Update dependencies (without system header dependencies...)
    209 #
    210 
    211 depend:
    212 	$(CC) -MM $(ALL_CFLAGS) $(OBJS:.o=.c) >Dependencies
    213 
    214 
    215 #
    216 # Run oclint to check code coverage...
    217 #
    218 
    219 oclint:
    220 	oclint -o=oclint.html -html $(LIBOBJS:.o=.c) -- $(ALL_CFLAGS)
    221 
    222 
    223 #
    224 # Install all targets...
    225 #
    226 
    227 install:	all install-data install-headers install-libs install-exec
    228 
    229 
    230 #
    231 # Install data files...
    232 #
    233 
    234 install-data:
    235 
    236 
    237 #
    238 # Install programs...
    239 #
    240 
    241 install-exec:
    242 
    243 
    244 #
    245 # Install headers...
    246 #
    247 
    248 install-headers:
    249 	echo Installing header files into $(INCLUDEDIR)/cups...
    250 	$(INSTALL_DIR) -m 755 $(INCLUDEDIR)/cups
    251 	for file in $(HEADERS); do \
    252 		$(INSTALL_DATA) $$file $(INCLUDEDIR)/cups; \
    253 	done
    254 	if test "x$(privateinclude)" != x; then \
    255 		echo Installing private header files into $(PRIVATEINCLUDE)...; \
    256 		$(INSTALL_DIR) -m 755 $(PRIVATEINCLUDE); \
    257 		for file in $(HEADERSPRIV); do \
    258 			$(INSTALL_DATA) $$file $(PRIVATEINCLUDE)/$$file; \
    259 		done; \
    260 	fi
    261 
    262 
    263 #
    264 # Install libraries...
    265 #
    266 
    267 install-libs: $(INSTALLSTATIC)
    268 	echo Installing libraries in $(LIBDIR)...
    269 	$(INSTALL_DIR) -m 755 $(LIBDIR)
    270 	$(INSTALL_LIB) $(LIBCUPS) $(LIBDIR)
    271 	if test $(LIBCUPS) = "libcups.so.2"; then \
    272 		$(RM) $(LIBDIR)/`basename $(LIBCUPS) .2`; \
    273 		$(LN) $(LIBCUPS) $(LIBDIR)/`basename $(LIBCUPS) .2`; \
    274 	fi
    275 	if test $(LIBCUPS) = "libcups.2.dylib"; then \
    276 		$(RM) $(LIBDIR)/libcups.dylib; \
    277 		$(LN) $(LIBCUPS) $(LIBDIR)/libcups.dylib; \
    278 	fi
    279 	if test "x$(SYMROOT)" != "x"; then \
    280 		$(INSTALL_DIR) $(SYMROOT); \
    281 		cp $(LIBCUPS) $(SYMROOT); \
    282 		dsymutil $(SYMROOT)/$(LIBCUPS); \
    283 	fi
    284 
    285 installstatic:
    286 	$(INSTALL_DIR) -m 755 $(LIBDIR)
    287 	$(INSTALL_LIB) -m 755 $(LIBCUPSSTATIC) $(LIBDIR)
    288 	$(RANLIB) $(LIBDIR)/$(LIBCUPSSTATIC)
    289 	$(CHMOD) 555 $(LIBDIR)/$(LIBCUPSSTATIC)
    290 
    291 
    292 #
    293 # Uninstall object and target files...
    294 #
    295 
    296 uninstall:
    297 	$(RM) $(LIBDIR)/libcups.2.dylib
    298 	$(RM) $(LIBDIR)/$(LIBCUPSSTATIC)
    299 	$(RM) $(LIBDIR)/libcups.dylib
    300 	$(RM) $(LIBDIR)/libcups.so
    301 	$(RM) $(LIBDIR)/libcups.so.2
    302 	-$(RMDIR) $(LIBDIR)
    303 	for file in $(HEADERS); do \
    304 		$(RM) $(INCLUDEDIR)/cups/$$file; \
    305 	done
    306 	-$(RMDIR) $(INCLUDEDIR)/cups
    307 
    308 
    309 #
    310 # libcups.so.2
    311 #
    312 
    313 libcups.so.2:	$(LIBOBJS)
    314 	echo Linking $@...
    315 	$(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS) $(LIBGSSAPI) \
    316 		$(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
    317 	$(RM) `basename $@ .2`
    318 	$(LN) $@ `basename $@ .2`
    319 
    320 
    321 #
    322 # libcups.2.dylib
    323 #
    324 
    325 libcups.2.dylib:	$(LIBOBJS) $(LIBCUPSORDER)
    326 	echo Creating export list for $@...
    327 	nm -gm $(LIBOBJS) 2>/dev/null | grep "__text" | grep -v weak | \
    328 		awk '{print $$NF}' | \
    329 		grep -v -E -e '^(_cupsConnect|_cupsCharset|_cupsEncodingName|_cupsSetDefaults|_cupsSetHTTPError|_cupsUserDefault)$$' | \
    330 		sort >t.exp
    331 	echo Linking $@...
    332 	$(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ \
    333 		-install_name $(libdir)/$@ \
    334 		-current_version 2.12.0 \
    335 		-compatibility_version 2.0.0 \
    336 		-exported_symbols_list t.exp \
    337 		$(LIBOBJS) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
    338 		$(COMMONLIBS) $(LIBZ)
    339 	$(RM) libcups.dylib t.exp
    340 	$(LN) $@ libcups.dylib
    341 
    342 
    343 #
    344 # libcups.la
    345 #
    346 
    347 libcups.la:    $(LIBOBJS)
    348 	echo Linking $@...
    349 	$(LD_CC) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) \
    350 		-rpath $(LIBDIR) -version-info 2:12 $(LIBGSSAPI) $(SSLLIBS) \
    351 		$(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
    352 
    353 
    354 #
    355 # libcups.a
    356 #
    357 
    358 libcups.a:	$(LIBOBJS)
    359 	echo Archiving $@...
    360 	$(RM) $@
    361 	$(AR) $(ARFLAGS) $@ $(LIBOBJS)
    362 	$(RANLIB) $@
    363 
    364 
    365 #
    366 # libcups2.def (Windows DLL exports file...)
    367 #
    368 
    369 libcups2.def: $(LIBOBJS) Makefile
    370 	echo Generating $@...
    371 	echo "LIBRARY libcups2" >libcups2.def
    372 	echo "VERSION 2.12" >>libcups2.def
    373 	echo "EXPORTS" >>libcups2.def
    374 	(nm $(LIBOBJS) 2>/dev/null | grep "T _" | awk '{print $$3}'; \
    375 	 echo __cups_strcpy; echo __cups_strlcat; echo __cups_strlcpy) | \
    376 		grep -v -E \
    377 		    -e 'cups_debug|Apple|BackChannel|Backend|FileCheck|Filter|GSSService|SetNegotiate|SideChannel' \
    378 		    -e 'Block$$' | \
    379 		sed -e '1,$$s/^_//' | sort >>libcups2.def
    380 
    381 
    382 #
    383 # testadmin (dependency on static CUPS library is intentional)
    384 #
    385 
    386 testadmin:	testadmin.o $(LIBCUPSSTATIC)
    387 	echo Linking $@...
    388 	$(LD_CC) $(LDFLAGS) -o $@ testadmin.o $(LIBCUPSSTATIC) \
    389 		$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
    390 
    391 
    392 #
    393 # testarray (dependency on static CUPS library is intentional)
    394 #
    395 
    396 testarray:	testarray.o $(LIBCUPSSTATIC)
    397 	echo Linking $@...
    398 	$(LD_CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ testarray.o $(LIBCUPSSTATIC) \
    399 		$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
    400 	echo Running array API tests...
    401 	./testarray
    402 
    403 
    404 #
    405 # testcache (dependency on static CUPS library is intentional)
    406 #
    407 
    408 testcache:	testcache.o $(LIBCUPSSTATIC)
    409 	echo Linking $@...
    410 	$(LD_CC) $(LDFLAGS) -o $@ testcache.o $(LIBCUPSSTATIC) \
    411 		$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
    412 
    413 
    414 #
    415 # testconflicts (dependency on static CUPS library is intentional)
    416 #
    417 
    418 testconflicts:	testconflicts.o $(LIBCUPSSTATIC)
    419 	echo Linking $@...
    420 	$(LD_CC) $(LDFLAGS) -o $@ testconflicts.o $(LIBCUPSSTATIC) \
    421 		$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
    422 
    423 
    424 #
    425 # testcreds (dependency on static CUPS library is intentional)
    426 #
    427 
    428 testcreds:	testcreds.o $(LIBCUPSSTATIC)
    429 	echo Linking $@...
    430 	$(LD_CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ testcreds.o $(LIBCUPSSTATIC) \
    431 		$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
    432 
    433 
    434 #
    435 # testcups (dependency on static CUPS library is intentional)
    436 #
    437 
    438 testcups:	testcups.o $(LIBCUPSSTATIC)
    439 	echo Linking $@...
    440 	$(LD_CC) $(LDFLAGS) -o $@ testcups.o $(LIBCUPSSTATIC) \
    441 		$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
    442 
    443 
    444 #
    445 # testdest (dependency on static CUPS library is intentional)
    446 #
    447 
    448 testdest:	testdest.o $(LIBCUPSSTATIC)
    449 	echo Linking $@...
    450 	$(LD_CC) $(LDFLAGS) -o $@ testdest.o $(LIBCUPSSTATIC) \
    451 		$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
    452 
    453 
    454 #
    455 # testfile (dependency on static CUPS library is intentional)
    456 #
    457 
    458 testfile:	testfile.o $(LIBCUPSSTATIC)
    459 	echo Linking $@...
    460 	$(LD_CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ testfile.o $(LIBCUPSSTATIC) \
    461 		$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
    462 	echo Running file API tests...
    463 	./testfile
    464 
    465 
    466 #
    467 # testgetdests (dependency on static CUPS library is intentional)
    468 #
    469 
    470 testgetdests:	testgetdests.o $(LIBCUPSSTATIC)
    471 	echo Linking $@...
    472 	$(LD_CC) $(LDFLAGS) -o $@ testgetdests.o $(LIBCUPSSTATIC) \
    473 		$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
    474 
    475 
    476 #
    477 # testhttp (dependency on static CUPS library is intentional)
    478 #
    479 
    480 testhttp:	testhttp.o $(LIBCUPSSTATIC)
    481 	echo Linking $@...
    482 	$(LD_CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ testhttp.o $(LIBCUPSSTATIC) \
    483 		$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
    484 	echo Running HTTP API tests...
    485 	./testhttp
    486 
    487 
    488 #
    489 # testipp (dependency on static CUPS library is intentional)
    490 #
    491 
    492 testipp:	testipp.o $(LIBCUPSSTATIC)
    493 	echo Linking $@...
    494 	$(LD_CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ testipp.o $(LIBCUPSSTATIC) \
    495 		$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
    496 	echo Running IPP API tests...
    497 	./testipp
    498 
    499 
    500 #
    501 # testi18n (dependency on static CUPS library is intentional)
    502 #
    503 
    504 testi18n:	testi18n.o $(LIBCUPSSTATIC)
    505 	echo Linking $@...
    506 	$(LD_CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ testi18n.o $(LIBCUPSSTATIC) \
    507 		$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
    508 	echo Running internationalization API tests...
    509 	./testi18n
    510 
    511 
    512 #
    513 # testlang (dependency on static CUPS library is intentional)
    514 #
    515 
    516 testlang:	testlang.o $(LIBCUPSSTATIC)
    517 	echo Linking $@...
    518 	$(LD_CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ testlang.o $(LIBCUPSSTATIC) \
    519 		$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
    520 	echo Creating locale directory structure...
    521 	$(RM) -r locale
    522 	$(MKDIR) locale/en
    523 	echo 'msgid "No"' > locale/en/cups_en.po
    524 	echo 'msgstr "No"' >> locale/en/cups_en.po
    525 	echo 'msgid "Yes"' >> locale/en/cups_en.po
    526 	echo 'msgstr "Yes"' >> locale/en/cups_en.po
    527 	for po in ../locale/cups_*.po; do \
    528 		lang=`basename $$po .po | sed -e '1,$$s/^cups_//'`; \
    529 		$(MKDIR) locale/$$lang; \
    530 		$(LN) ../../$$po locale/$$lang; \
    531 	done
    532 	echo Running language API tests...
    533 	LOCALEDIR=locale ./testlang
    534 
    535 
    536 #
    537 # testoptions (dependency on static CUPS library is intentional)
    538 #
    539 
    540 testoptions:	testoptions.o $(LIBCUPSSTATIC)
    541 	echo Linking $@...
    542 	$(LD_CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ testoptions.o $(LIBCUPSSTATIC) \
    543 		$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
    544 	echo Running option API tests...
    545 	./testoptions
    546 
    547 
    548 #
    549 # testppd (dependency on static CUPS library is intentional)
    550 #
    551 
    552 testppd:	testppd.o $(LIBCUPSSTATIC) test.ppd test2.ppd
    553 	echo Linking $@...
    554 	$(LD_CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ testppd.o $(LIBCUPSSTATIC) \
    555 		$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
    556 	echo Running PPD API tests...
    557 	./testppd
    558 
    559 
    560 #
    561 # testpwg (dependency on static CUPS library is intentional)
    562 #
    563 
    564 testpwg:	testpwg.o $(LIBCUPSSTATIC) test.ppd
    565 	echo Linking $@...
    566 	$(LD_CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ testpwg.o $(LIBCUPSSTATIC) \
    567 		$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
    568 	echo Running PWG API tests...
    569 	./testpwg test.ppd
    570 
    571 
    572 #
    573 # testsnmp (dependency on static CUPS library is intentional)
    574 #
    575 
    576 testsnmp:	testsnmp.o $(LIBCUPSSTATIC)
    577 	echo Linking $@...
    578 	$(LD_CC) $(LDFLAGS) -o $@ testsnmp.o $(LIBCUPSSTATIC) \
    579 		$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
    580 
    581 
    582 #
    583 # tlscheck (dependency on static CUPS library is intentional)
    584 #
    585 
    586 tlscheck:	tlscheck.o $(LIBCUPSSTATIC)
    587 	echo Linking $@...
    588 	$(LD_CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ tlscheck.o $(LIBCUPSSTATIC) \
    589 		$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
    590 
    591 
    592 #
    593 # Automatic API help files...
    594 #
    595 
    596 apihelp:
    597 	echo Generating CUPS API help files...
    598 	$(RM) cupspm.xml
    599 	mxmldoc --section "Programming" --body cupspm.md \
    600 		cupspm.xml \
    601 		auth.c cups.h dest*.c encode.c http.h http*.c ipp.h ipp*.c \
    602 		options.c tls-darwin.c usersys.c util.c \
    603 		--coverimage cupspm.png \
    604 		--epub ../doc/help/cupspm.epub
    605 	mxmldoc --section "Programming" --body cupspm.md \
    606 		cupspm.xml > ../doc/help/cupspm.html
    607 	$(RM) cupspm.xml
    608 	mxmldoc --section "Programming" --title "Administration APIs" \
    609 		--css ../doc/cups-printable.css \
    610 		--header api-admin.header --intro api-admin.shtml \
    611 		api-admin.xml \
    612 		adminutil.c adminutil.h getdevices.c >../doc/help/api-admin.html
    613 	$(RM) api-admin.xml
    614 	mxmldoc --section "Programming" --title "PPD API (DEPRECATED)" \
    615 		--css ../doc/cups-printable.css \
    616 		--header api-ppd.header --intro api-ppd.shtml \
    617 		api-ppd.xml ppd.h ppd-*.c >../doc/help/api-ppd.html
    618 	$(RM) api-ppd.xml
    619 	mxmldoc --section "Programming" \
    620 		--title "Filter and Backend Programming" \
    621 		--css ../doc/cups-printable.css \
    622 		--header api-filter.header --intro api-filter.shtml \
    623 		api-filter.xml \
    624 		backchannel.c backend.h backend.c sidechannel.c sidechannel.h \
    625 		>../doc/help/api-filter.html
    626 	$(RM) api-filter.xml
    627 
    628 
    629 #
    630 # Lines of code computation...
    631 #
    632 
    633 sloc:
    634 	echo "libcups: \c"
    635 	sloccount $(LIBOBJS:.o=.c) 2>/dev/null | grep "Total Physical" | awk '{print $$9}'
    636 
    637 
    638 #
    639 # Dependencies...
    640 #
    641 
    642 include Dependencies
    643 tls.o: tls-darwin.c tls-gnutls.c tls-sspi.c
    644