#
-# "$Id: Makefile 7871 2008-08-27 21:12:43Z mike $"
+# API library Makefile for CUPS.
#
-# API library Makefile for CUPS.
+# Copyright 2007-2016 by Apple Inc.
+# Copyright 1997-2006 by Easy Software Products, all rights reserved.
#
-# Copyright 2007-2012 by Apple Inc.
-# Copyright 1997-2006 by Easy Software Products, all rights reserved.
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law. Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file. If this file is
+# missing or damaged, see the license at "http://www.cups.org/".
#
-# These coded instructions, statements, and computer programs are the
-# property of Apple Inc. and are protected by Federal copyright
-# law. Distribution and use rights are outlined in the file "LICENSE.txt"
-# which should have been included with this file. If this file is
-# file is missing or damaged, see the license at "http://www.cups.org/".
-#
-# This file is subject to the Apple OS-Developed Software exception.
+# This file is subject to the Apple OS-Developed Software exception.
#
include ../Makedefs
+
+#
+# Options to build libcups without the use of deprecated APIs...
+#
+
+OPTIONS = -D_CUPS_NO_DEPRECATED=1 -D_PPD_DEPRECATED=""
+
+
#
# Object files...
#
LIBOBJS = \
adminutil.o \
array.o \
- attr.o \
auth.o \
backchannel.o \
backend.o \
- conflicts.o \
- custom.o \
debug.o \
dest.o \
dest-job.o \
dest-localization.o \
dest-options.o \
dir.o \
- emit.o \
encode.o \
file.o \
getdevices.o \
getifaddrs.o \
getputfile.o \
globals.o \
+ hash.o \
http.o \
http-addr.o \
http-addrlist.o \
ipp-support.o \
langprintf.o \
language.o \
- localize.o \
- mark.o \
md5.o \
md5passwd.o \
notify.o \
options.o \
- page.o \
ppd.o \
+ ppd-attr.o \
ppd-cache.o \
+ ppd-conflicts.o \
+ ppd-custom.o \
+ ppd-emit.o \
+ ppd-localize.o \
+ ppd-mark.o \
+ ppd-page.o \
+ ppd-util.o \
pwg-media.o \
request.o \
sidechannel.o \
string.o \
tempfile.o \
thread.o \
+ tls.o \
transcode.o \
usersys.o \
util.o
TESTOBJS = \
testadmin.o \
testarray.o \
+ testcache.o \
testconflicts.o \
+ testcreds.o \
testcups.o \
+ testdest.o \
testfile.o \
testhttp.o \
testi18n.o \
testlang.o \
testppd.o \
testpwg.o \
- testsnmp.o
-
-LIB32OBJS = $(LIBOBJS:.o=.32.o)
-LIB64OBJS = $(LIBOBJS:.o=.64.o)
+ testsnmp.o \
+ tlscheck.o
OBJS = \
$(LIBOBJS) \
- $(LIB32OBJS) \
- $(LIB64OBJS) \
$(TESTOBJS)
ipp.h \
language.h \
ppd.h \
+ pwg.h \
raster.h \
sidechannel.h \
transcode.h \
LIBTARGETS = \
$(LIBCUPSSTATIC) \
- $(LIBCUPS) \
- $(LIB32CUPS) \
- $(LIB64CUPS)
+ $(LIBCUPS)
UNITTARGETS = \
testadmin \
testarray \
+ testcache \
testconflicts \
+ testcreds \
testcups \
+ testdest \
testfile \
testhttp \
testi18n \
testoptions \
testppd \
testpwg \
- testsnmp
+ testsnmp \
+ tlscheck
TARGETS = \
$(LIBTARGETS)
clean:
$(RM) $(OBJS) $(TARGETS) $(UNITTARGETS)
- $(RM) libcups.so libcups.sl libcups.dylib
- $(RM) -r 32bit 64bit
+ $(RM) libcups.so libcups.dylib
#
#
depend:
- touch Dependencies.tmp
- makedepend -Y -I.. -fDependencies.tmp $(LIBOBJS:.o=.c) $(TESTOBJS:.o=.c) >/dev/null 2>&1
- $(RM) Dependencies
- cp Dependencies.tmp Dependencies
- sed -E -e '1,$$s/^([^.]+)\.o:/\1\.32.o: \1\.c /' Dependencies.tmp >>Dependencies
- sed -E -e '1,$$s/^([^.]+)\.o:/\1\.64.o: \1\.c /' Dependencies.tmp >>Dependencies
- $(RM) Dependencies.tmp
+ $(CC) -MM $(ALL_CFLAGS) $(OBJS:.o=.c) >Dependencies
+
+
+#
+# Run oclint to check code coverage...
+#
+
+oclint:
+ oclint -o=oclint.html -html $(LIBOBJS:.o=.c) -- $(ALL_CFLAGS)
#
# Install libraries...
#
-install-libs: $(INSTALLSTATIC) $(INSTALL32) $(INSTALL64)
+install-libs: $(INSTALLSTATIC)
echo Installing libraries in $(LIBDIR)...
$(INSTALL_DIR) -m 755 $(LIBDIR)
$(INSTALL_LIB) $(LIBCUPS) $(LIBDIR)
- if test $(LIBCUPS) = "libcups.so.2" -o $(LIBCUPS) = "libcups.sl.2"; then \
+ if test $(LIBCUPS) = "libcups.so.2"; then \
$(RM) $(LIBDIR)/`basename $(LIBCUPS) .2`; \
$(LN) $(LIBCUPS) $(LIBDIR)/`basename $(LIBCUPS) .2`; \
fi
if test "x$(SYMROOT)" != "x"; then \
$(INSTALL_DIR) $(SYMROOT); \
cp $(LIBCUPS) $(SYMROOT); \
+ dsymutil $(SYMROOT)/$(LIBCUPS); \
fi
installstatic:
$(RANLIB) $(LIBDIR)/$(LIBCUPSSTATIC)
$(CHMOD) 555 $(LIBDIR)/$(LIBCUPSSTATIC)
-install32bit:
- echo Installing libraries in $(LIB32DIR)...
- $(INSTALL_DIR) -m 755 $(LIB32DIR)
- $(INSTALL_LIB) 32bit/libcups.so.2 $(LIB32DIR)/libcups.so.2
- $(LN) libcups.so.2 $(LIB32DIR)/libcups.so
-
-install64bit:
- echo Installing libraries in $(LIB64DIR)...
- $(INSTALL_DIR) -m 755 $(LIB64DIR)
- $(INSTALL_LIB) 64bit/libcups.so.2 $(LIB64DIR)/libcups.so.2
- $(LN) libcups.so.2 $(LIB64DIR)/libcups.so
-
#
# Uninstall object and target files...
#
-uninstall: $(UNINSTALL32) $(UNINSTALL64)
+uninstall:
$(RM) $(LIBDIR)/libcups.2.dylib
$(RM) $(LIBDIR)/$(LIBCUPSSTATIC)
$(RM) $(LIBDIR)/libcups.dylib
- $(RM) $(LIBDIR)/libcups_s.a
- $(RM) $(LIBDIR)/libcups.sl
- $(RM) $(LIBDIR)/libcups.sl.2
$(RM) $(LIBDIR)/libcups.so
$(RM) $(LIBDIR)/libcups.so.2
-$(RMDIR) $(LIBDIR)
done
-$(RMDIR) $(INCLUDEDIR)/cups
-uninstall32bit:
- $(RM) $(LIB32DIR)/libcups.so
- $(RM) $(LIB32DIR)/libcups.so.2
- -$(RMDIR) $(LIB32DIR)
-
-uninstall64bit:
- $(RM) $(LIB64DIR)/libcups.so
- $(RM) $(LIB64DIR)/libcups.so.2
- -$(RMDIR) $(LIB64DIR)
-
#
-# libcups.so.2, libcups.sl.2
+# libcups.so.2
#
-libcups.so.2 libcups.sl.2: $(LIBOBJS)
+libcups.so.2: $(LIBOBJS)
echo Linking $@...
$(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS) $(LIBGSSAPI) \
$(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
$(LN) $@ `basename $@ .2`
-#
-# 32bit/libcups.so.2
-#
-
-32bit/libcups.so.2: $(LIB32OBJS)
- echo Linking 32-bit $@...
- -mkdir 32bit
- $(DSO) $(ARCH32FLAGS) $(DSO32FLAGS) -o $@ $(LIB32OBJS) $(LIBGSSAPI) \
- $(DNSSDLIBS) $(SSLLIBS) $(COMMONLIBS) $(LIBZ)
- $(RM) 32bit/libcups.so
- $(LN) libcups.so.2 32bit/libcups.so
-
-
-#
-# 64bit/libcups.so.2
-#
-
-64bit/libcups.so.2: $(LIB64OBJS)
- echo Linking 64-bit $@...
- -mkdir 64bit
- $(DSO) $(ARCH64FLAGS) $(DSO64FLAGS) -o $@ $(LIB64OBJS) $(LIBGSSAPI) \
- $(DNSSDLIBS) $(SSLLIBS) $(COMMONLIBS) $(LIBZ)
- $(RM) 64bit/libcups.so
- $(LN) libcups.so.2 64bit/libcups.so
-
-
#
# libcups.2.dylib
#
libcups.2.dylib: $(LIBOBJS) $(LIBCUPSORDER)
echo Creating export list for $@...
- nm $(LIBOBJS) 2>/dev/null | grep "T _" | awk '{print $$3}' | \
- grep -v -e '^(_cupsConnect|_cupsCharset|_cupsEncodingName|_cupsSetDefaults|_cupsSetHTTPError|_cupsUserDefault|_httpWait)$$' | \
+ nm -gm $(LIBOBJS) 2>/dev/null | grep "__text" | grep -v weak | \
+ awk '{print $$NF}' | \
+ grep -v -E -e '^(_cupsConnect|_cupsCharset|_cupsEncodingName|_cupsSetDefaults|_cupsSetHTTPError|_cupsUserDefault)$$' | \
sort >t.exp
echo Linking $@...
$(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ \
-install_name $(libdir)/$@ \
- -current_version 2.9.0 \
+ -current_version 2.12.0 \
-compatibility_version 2.0.0 \
-exported_symbols_list t.exp \
$(LIBOBJS) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
$(LN) $@ libcups.dylib
-#
-# libcups_s.a
-#
-
-libcups_s.a: $(LIBOBJS) libcups_s.exp
- echo Creating $@...
- $(DSO) $(DSOFLAGS) -Wl,-bexport:libcups_s.exp -o libcups_s.o \
- $(LIBOBJS) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
- $(COMMONLIBS) $(LIBZ)
- $(RM) $@
- $(AR) $(ARFLAGS) $@ libcups_s.o
-
-
#
# libcups.la
#
libcups.la: $(LIBOBJS)
echo Linking $@...
$(CC) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) \
- -rpath $(LIBDIR) -version-info 2:9 $(LIBGSSAPI) $(SSLLIBS) \
+ -rpath $(LIBDIR) -version-info 2:12 $(LIBGSSAPI) $(SSLLIBS) \
$(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
$(RANLIB) $@
+#
+# libcups2.def (Windows DLL exports file...)
+#
+
+libcups2.def: $(LIBOBJS) Makefile
+ echo Generating $@...
+ echo "LIBRARY libcups2" >libcups2.def
+ echo "VERSION 2.12" >>libcups2.def
+ echo "EXPORTS" >>libcups2.def
+ (nm $(LIBOBJS) 2>/dev/null | grep "T _" | awk '{print $$3}'; \
+ echo __cups_strcpy; echo __cups_strlcat; echo __cups_strlcpy) | \
+ grep -v -E \
+ -e 'cups_debug|Apple|BackChannel|Backend|FileCheck|Filter|GSSService|SetNegotiate|SideChannel' \
+ -e 'Block$$' | \
+ sed -e '1,$$s/^_//' | sort >>libcups2.def
+
+
#
# testadmin (dependency on static CUPS library is intentional)
#
./testarray
+#
+# testcache (dependency on static CUPS library is intentional)
+#
+
+testcache: testcache.o $(LIBCUPSSTATIC)
+ echo Linking $@...
+ $(CC) $(LDFLAGS) -o $@ testcache.o $(LIBCUPSSTATIC) \
+ $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
+
+
#
# testconflicts (dependency on static CUPS library is intentional)
#
$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
+#
+# testcreds (dependency on static CUPS library is intentional)
+#
+
+testcreds: testcreds.o $(LIBCUPSSTATIC)
+ echo Linking $@...
+ $(CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ testcreds.o $(LIBCUPSSTATIC) \
+ $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
+
+
#
# testcups (dependency on static CUPS library is intentional)
#
$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
+#
+# testdest (dependency on static CUPS library is intentional)
+#
+
+testdest: testdest.o $(LIBCUPSSTATIC)
+ echo Linking $@...
+ $(CC) $(LDFLAGS) -o $@ testdest.o $(LIBCUPSSTATIC) \
+ $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
+
+
#
# testfile (dependency on static CUPS library is intentional)
#
$(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
+#
+# tlscheck (dependency on static CUPS library is intentional)
+#
+
+tlscheck: tlscheck.o $(LIBCUPSSTATIC)
+ echo Linking $@...
+ $(CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ tlscheck.o $(LIBCUPSSTATIC) \
+ $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
+
+
#
# Automatic API help files...
#
apihelp:
echo Generating CUPS API help files...
- mxmldoc --section "Programming" \
- --title "Introduction to CUPS Programming" \
- --css ../doc/cups-printable.css \
- --header api-overview.header --intro api-overview.shtml \
- >../doc/help/api-overview.html
- mxmldoc --section "Programming" --title "Array API" \
+ $(RM) cupspm.xml
+ mxmldoc --section "Programming" --body cupspm.md \
+ cupspm.xml \
+ auth.c cups.h dest*.c encode.c http.h http*.c ipp.h ipp*.c \
+ options.c tls-darwin.c usersys.c util.c \
+ --coverimage cupspm.png \
+ --epub ../doc/help/cupspm.epub
+ mxmldoc --section "Programming" --body cupspm.md \
+ cupspm.xml > ../doc/help/cupspm.html
+ $(RM) cupspm.xml
+ mxmldoc --section "Programming" --title "Administration APIs" \
--css ../doc/cups-printable.css \
- --header api-array.header --intro api-array.shtml \
- api-array.xml \
- array.h array.c >../doc/help/api-array.html
- mxmldoc --tokens help/api-array.html api-array.xml >../doc/help/api-array.tokens
- $(RM) api-array.xml
- mxmldoc --section "Programming" --title "CUPS API" \
- --css ../doc/cups-printable.css \
- --header api-cups.header --intro api-cups.shtml \
- api-cups.xml \
- cups.h adminutil.c dest.c language.c notify.c \
- options.c tempfile.c usersys.c \
- util.c >../doc/help/api-cups.html
- mxmldoc --tokens help/api-cups.html api-cups.xml >../doc/help/api-cups.tokens
- $(RM) api-cups.xml
- mxmldoc --section "Programming" --title "File and Directory APIs" \
- --css ../doc/cups-printable.css \
- --header api-filedir.header --intro api-filedir.shtml \
- api-filedir.xml \
- file.h file.c dir.h dir.c >../doc/help/api-filedir.html
- mxmldoc --tokens api-filedir.xml >../doc/help/api-filedir.tokens
- $(RM) api-filedir.xml
+ --header api-admin.header --intro api-admin.shtml \
+ api-admin.xml \
+ adminutil.c adminutil.h getdevices.c >../doc/help/api-admin.html
+ $(RM) api-admin.xml
mxmldoc --section "Programming" --title "PPD API (DEPRECATED)" \
--css ../doc/cups-printable.css \
--header api-ppd.header --intro api-ppd.shtml \
- api-ppd.xml \
- ppd.h attr.c conflicts.c custom.c emit.c localize.c mark.c page.c \
- ppd.c >../doc/help/api-ppd.html
- mxmldoc --tokens help/api-ppd.html api-ppd.xml >../doc/help/api-ppd.tokens
+ api-ppd.xml ppd.h ppd-*.c >../doc/help/api-ppd.html
$(RM) api-ppd.xml
- mxmldoc --section "Programming" --title "HTTP and IPP APIs" \
- --css ../doc/cups-printable.css \
- --header api-httpipp.header --intro api-httpipp.shtml \
- api-httpipp.xml \
- http.h ipp.h auth.c getdevices.c getputfile.c encode.c \
- http.c http-addr.c http-support.c ipp.c ipp-support.c \
- md5passwd.c request.c >../doc/help/api-httpipp.html
- mxmldoc --tokens help/api-httpipp.html api-httpipp.xml >../doc/help/api-httpipp.tokens
- $(RM) api-httpipp.xml
mxmldoc --section "Programming" \
--title "Filter and Backend Programming" \
--css ../doc/cups-printable.css \
api-filter.xml \
backchannel.c backend.h backend.c sidechannel.c sidechannel.h \
>../doc/help/api-filter.html
- mxmldoc --tokens help/api-filter.html api-filter.xml >../doc/help/api-filter.tokens
$(RM) api-filter.xml
-framedhelp:
- echo Generating CUPS API help files...
- mxmldoc --framed api-overview \
- --section "Programming" \
- --title "Introduction to CUPS Programming" \
- --css ../doc/cups-printable.css \
- --header api-overview.header --intro api-overview.shtml
- mxmldoc --framed api-array \
- --section "Programming" --title "Array API" \
- --css ../doc/cups-printable.css \
- --header api-array.header --intro api-array.shtml \
- array.h array.c
- mxmldoc --framed api-cups \
- --section "Programming" --title "CUPS API" \
- --css ../doc/cups-printable.css \
- --header api-cups.header --intro api-cups.shtml \
- cups.h adminutil.c dest.c language.c notify.c \
- options.c tempfile.c usersys.c \
- util.c
- mxmldoc --framed api-filedir \
- --section "Programming" --title "File and Directory APIs" \
- --css ../doc/cups-printable.css \
- --header api-filedir.header --intro api-filedir.shtml \
- file.h file.c dir.h dir.c
- mxmldoc --framed api-ppd \
- --section "Programming" --title "PPD API (DEPRECATED)" \
- --css ../doc/cups-printable.css \
- --header api-ppd.header --intro api-ppd.shtml \
- ppd.h attr.c conflicts.c custom.c emit.c localize.c mark.c \
- page.c ppd.c
- mxmldoc --framed api-httpipp \
- --section "Programming" --title "HTTP and IPP APIs" \
- --css ../doc/cups-printable.css \
- --header api-httpipp.header --intro api-httpipp.shtml \
- http.h ipp.h auth.c getdevices.c getputfile.c encode.c \
- http.c http-addr.c http-support.c ipp.c ipp-support.c \
- md5passwd.c request.c
- mxmldoc --framed api-filter \
- --section "Programming" \
- --title "Filter and Backend Programming" \
- --css ../doc/cups-printable.css \
- --header api-filter.header --intro api-filter.shtml \
- backchannel.c backend.h backend.c sidechannel.c sidechannel.h
-
#
# Lines of code computation...
#
sloc:
- echo "libcupslite: \c"
- sloccount $(LITEOBJS:.o=.c) 2>/dev/null | grep "Total Physical" | awk '{print $$9}'
echo "libcups: \c"
sloccount $(LIBOBJS:.o=.c) 2>/dev/null | grep "Total Physical" | awk '{print $$9}'
#
include Dependencies
-
-
-#
-# End of "$Id: Makefile 7871 2008-08-27 21:12:43Z mike $".
-#
+tls.o: tls-darwin.c tls-gnutls.c tls-sspi.c