#
# Makefile for the CUPS PPD Compiler.
#
-# Copyright 2007-2008 by Apple Inc.
+# Copyright 2007-2009 by Apple Inc.
# Copyright 2002-2006 by Easy Software Products.
#
# These coded instructions, statements, and computer programs are the
ppdc-source.o \
ppdc-string.o \
ppdc-variable.o
-LIB32OBJS = $(LIBOBJS:.o=.32.o)
-LIB64OBJS = $(LIBOBJS:.o=.64.o)
OBJS = \
$(LIBOBJS) \
- $(LIB32OBJS) \
- $(LIB64OBJS) \
- drv.o \
+ genstrings.o \
ppdc.o \
ppdhtml.o \
ppdi.o \
ppdmerge.o \
- ppdpo.o
-TARGETS = \
+ ppdpo.o \
+ testcatalog.o
+LIBTARGETS = \
$(LIBCUPSPPDC) \
- $(LIB32CUPSPPDC) \
- $(LIB64CUPSPPDC) \
- libcupsppdc.a \
- drv \
+ libcupsppdc.a
+UNITTARGETS = \
ppdc-static \
+ ppdi-static \
+ testcatalog
+EXECTARGETS = \
ppdc \
ppdhtml \
ppdi \
ppdmerge \
ppdpo
+TARGETS = \
+ $(LIBTARGETS) \
+ $(EXECTARGETS) \
+ genstrings
+
#
# Make everything...
all: $(TARGETS)
+#
+# Make library targets...
+#
+
+libs: $(LIBTARGETS)
+
+
+#
+# Make unit tests...
+#
+
+unittests: $(UNITTARGETS)
+
+
#
# Clean everything...
#
clean:
$(RM) $(OBJS) core
$(RM) *.bak *.bck core.*
- $(RM) $(TARGETS)
- $(RM) -r ppd
- $(RM) test.drv
+ $(RM) $(TARGETS) $(UNITTARGETS)
+ $(RM) -r ppd ppd2
+ $(RM) sample-import.drv sample.c test.drv
$(RM) libcupsppdc.so libcupsppdc.sl libcupsppdc.dylib
- $(RM) -r 32bit 64bit
#
#
depend:
- touch Dependencies.tmp
- makedepend -Y -I.. -fDependencies.tmp $(OBJS:.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
+ makedepend -Y -I.. -fDependencies $(OBJS:.o=.cxx) >/dev/null 2>&1
#
install-data:
$(INSTALL_DIR) $(DATADIR)/drv
$(INSTALL_DATA) sample.drv $(DATADIR)/drv
- if test `uname` = Darwin; then \
- $(INSTALL_DIR) /Library/Printers/PPDs.drv; \
- fi
#
install-exec:
echo Installing PPD compiler programs...
$(INSTALL_DIR) $(BINDIR)
- $(INSTALL_BIN) ppdc $(BINDIR)
- $(INSTALL_BIN) ppdhtml $(BINDIR)
- $(INSTALL_BIN) ppdi $(BINDIR)
- $(INSTALL_BIN) ppdmerge $(BINDIR)
- $(INSTALL_BIN) ppdpo $(BINDIR)
- $(INSTALL_DIR) $(SERVERBIN)/driver
- $(INSTALL_BIN) drv $(SERVERBIN)/driver
+ for file in $(EXECTARGETS); do \
+ $(INSTALL_BIN) $$file $(BINDIR); \
+ done
if test "x$(SYMROOT)" != "x"; then \
$(INSTALL_DIR) $(SYMROOT); \
- for file in $(TARGETS); do \
+ for file in $(EXECTARGETS) $(LIBTARGETS); do \
cp $$file $(SYMROOT); \
done \
fi
# Install libraries...
#
-install-libs: $(INSTALLSTATIC) $(INSTALL32) $(INSTALL64)
+install-libs: $(INSTALLSTATIC)
echo Installing libraries in $(LIBDIR)...
$(INSTALL_DIR) -m 755 $(LIBDIR)
$(INSTALL_LIB) $(LIBCUPSPPDC) $(LIBDIR)
installstatic:
$(INSTALL_DIR) -m 755 $(LIBDIR)
- $(INSTALL_LIB) libcupsppdc.a $(LIBDIR)
+ $(INSTALL_LIB) -m 755 libcupsppdc.a $(LIBDIR)
$(RANLIB) $(LIBDIR)/libcupsppdc.a
-
-install32bit:
- echo Installing libraries in $(LIB32DIR)...
- $(INSTALL_DIR) -m 755 $(LIB32DIR)
- $(INSTALL_LIB) 32bit/libcupsppdc.so.1 $(LIB32DIR)/libcupsppdc.so.1
- $(LN) libcupsppdc.so.1 $(LIB32DIR)/libcupsppdc.so
-
-install64bit:
- echo Installing libraries in $(LIB64DIR)...
- $(INSTALL_DIR) -m 755 $(LIB64DIR)
- $(INSTALL_LIB) 64bit/libcupsppdc.so.1 $(LIB64DIR)/libcupsppdc.so.1
- $(LN) libcupsppdc.so.1 $(LIB64DIR)/libcupsppdc.so
+ $(CHMOD) 555 $(LIBDIR)/libcupsppdc.a
#
#
uninstall:
- $(RM) $(BINDIR)/ppdc
- $(RM) $(BINDIR)/ppdhtml
- $(RM) $(BINDIR)/ppdi
- $(RM) $(BINDIR)/ppdmerge
- $(RM) $(BINDIR)/ppdpo
- $(RM) $(SERVERBIN)/driver/drv
- $(RMDIR) $(SERVERBIN)/driver
+ for file in $(EXECTARGETS); do \
+ $(RM) $(BINDIR)/$$file; \
+ done
$(RM) $(DATADIR)/drv/sample.drv
$(RMDIR) $(DATADIR)/drv
- if test `uname` = Darwin; then \
- $(RMDIR) /Library/Printers/PPDs.drv; \
- fi
$(RM) $(LIBDIR)/libcupsppdc.1.dylib
$(RM) $(LIBDIR)/libcupsppdc.a
$(RM) $(LIBDIR)/libcupsppdc.dylib
$(RM) $(INCLUDEDIR)/cups/ppdc.h
-$(RMDIR) $(INCLUDEDIR)/cups
-uninstall32bit:
- $(RM) $(LIB32DIR)/libcupsppdc.so
- $(RM) $(LIB32DIR)/libcupsppdc.so.1
- -$(RMDIR) $(LIB32DIR)
-
-uninstall64bit:
- $(RM) $(LIB64DIR)/libcupsppdc.so
- $(RM) $(LIB64DIR)/libcupsppdc.so.1
- -$(RMDIR) $(LIB64DIR)
-
#
# Automatic API help files...
--title "PPD Compiler API" \
--css ../doc/cups-printable.css \
--header api-ppdc.header --intro api-ppdc.shtml \
+ api-ppdc.xml \
ppdc.h $(LIBOBJS:.o=.cxx) >../doc/help/api-ppdc.html
+ mxmldoc --tokens help/api-ppdc.html api-ppdc.xml >../doc/help/api-ppdc.tokens
+ $(RM) api-ppdc.xml
framedhelp:
mxmldoc --framed api-ppdc \
#
-# drv, the CUPS driver interface program to the PPD compiler.
+# genstrings - generate GNU gettext strings.
#
-drv: drv.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
+genstrings: genstrings.o libcupsppdc.a ../cups/libcups.a \
+ sample.drv ../data/media.defs
echo Linking $@...
- $(CXX) $(LDFLAGS) -o $@ drv.o -L. -lcupsppdc $(LIBS)
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o genstrings genstrings.o \
+ libcupsppdc.a ../cups/libcups.a $(LIBGSSAPI) $(SSLLIBS) \
+ $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
+ echo Generating localization strings...
+ ./genstrings >sample.c
#
ppdc-static: ppdc.o libcupsppdc.a ../cups/libcups.a foo.drv foo-fr.po
echo Linking $@...
- $(CXX) $(LDFLAGS) -o ppdc-static ppdc.o libcupsppdc.a ../cups/libcups.a \
- $(LIBGSSAPI) $(SSLLIBS) $(COMMONLIBS) $(LIBZ)
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o ppdc-static ppdc.o libcupsppdc.a \
+ ../cups/libcups.a $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
+ $(COMMONLIBS) $(LIBZ)
echo Testing PPD compiler...
./ppdc-static -l en,fr -I ../data foo.drv
./ppdc-static -l en,fr -z -I ../data foo.drv
$(CXX) $(LDFLAGS) -o $@ ppdi.o -L. -lcupsppdc $(LIBS)
+ppdi-static: ppdc-static ppdi.o libcupsppdc.a ../cups/libcups.a
+ echo Linking $@...
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o ppdi-static ppdi.o libcupsppdc.a \
+ ../cups/libcups.a $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
+ $(COMMONLIBS) $(LIBZ)
+ echo Testing PPD importer...
+ $(RM) -r ppd ppd2 sample-import.drv
+ ./ppdc-static -I ../data sample.drv
+ ./ppdi-static -I ../data -o sample-import.drv ppd/*
+ ./ppdc-static -I ../data -d ppd2 sample-import.drv
+ if diff -qr ppd ppd2; then \
+ echo PPD import OK; \
+ else \
+ echo PPD import FAILED; \
+ exit 1; \
+ fi
+
+
#
# ppdmerge, merge PPD files.
#
#
-# libcupsppdc.so.1, libcupsppdc.sl.1
+# testcatalog, test ppdcCatalog class.
#
-libcupsppdc.so.1 libcupsppdc.sl.1: $(LIBOBJS)
+testcatalog: testcatalog.o libcupsppdc.a ../cups/libcups.a
echo Linking $@...
- $(DSOXX) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS) $(LIBS)
- $(RM) `basename $@ .1`
- $(LN) $@ `basename $@ .1`
+ $(CXX) $(LDFLAGS) -o $@ testcatalog.o libcupsppdc.a \
+ ../cups/libcups.a $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
+ $(COMMONLIBS) $(LIBZ)
#
-# 32bit/libcupsppdc.so.1
-#
-
-32bit/libcupsppdc.so.1: $(LIB32OBJS)
- echo Linking 32-bit $@...
- -mkdir 32bit
- $(DSOXX) $(ARCH32FLAGS) $(DSO32FLAGS) -o $@ $(LIB32OBJS) $(LIBS)
- $(RM) 32bit/libcupsppdc.so
- $(LN) libcupsppdc.so.1 32bit/libcupsppdc.so
-
-
-#
-# 64bit/libcupsppdc.so.1
+# libcupsppdc.so.1, libcupsppdc.sl.1
#
-64bit/libcupsppdc.so.1: $(LIB64OBJS)
- echo Linking 64-bit $@...
- -mkdir 64bit
- $(DSOXX) $(ARCH64FLAGS) $(DSO64FLAGS) -o $@ $(LIB64OBJS) $(LIBS)
- $(RM) 64bit/libcupsppdc.so
- $(LN) libcupsppdc.so.1 64bit/libcupsppdc.so
+libcupsppdc.so.1 libcupsppdc.sl.1: $(LIBOBJS) ../cups/$(LIBCUPS)
+ echo Linking $@...
+ $(DSOXX) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS) $(LINKCUPS)
+ $(RM) `basename $@ .1`
+ $(LN) $@ `basename $@ .1`
#
# libcupsppdc.1.dylib
#
-libcupsppdc.1.dylib: $(LIBOBJS) libcupsppdc.exp
+libcupsppdc.1.dylib: $(LIBOBJS) ../cups/$(LIBCUPS)
+ echo Creating export list for $@...
+ nm $(LIBOBJS) | grep "T __" | awk '{print $$3}' | sort >t.exp
echo Linking $@...
$(DSOXX) $(ARCHFLAGS) $(DSOFLAGS) -o $@ \
-install_name $(libdir)/$@ \
-current_version 1.0.0 \
-compatibility_version 1.0.0 \
- -exported_symbols_list libcupsppdc.exp \
- $(LIBOBJS) $(LIBS)
- $(RM) libcupsppdc.dylib
+ -exported_symbols_list t.exp \
+ $(LIBOBJS) $(LINKCUPS)
+ $(RM) libcupsppdc.dylib t.exp
$(LN) $@ libcupsppdc.dylib
# libcupsppdc_s.a
#
-libcupsppdc_s.a: $(LIBOBJS)
+libcupsppdc_s.a: $(LIBOBJS) ../cups/$(LIBCUPS)
echo Creating $@...
- $(DSOXX) $(DSOFLAGS) -o libcupsppdc_s.o $(LIBOBJS) $(LIBS)
+ $(DSOXX) $(DSOFLAGS) -o libcupsppdc_s.o $(LIBOBJS) $(LINKCUPS)
$(RM) $@
$(AR) $(ARFLAGS) $@ libcupsppdc_s.o
# libcupsppdc.la
#
-libcupsppdc.la: $(LIBOBJS)
+libcupsppdc.la: $(LIBOBJS) ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) -rpath $(LIBDIR) \
- -version-info 1:0 $(LIBS)
+ -version-info 1:0 $(LINKCUPS)
#