]> git.ipfire.org Git - thirdparty/cups.git/blobdiff - ppdc/Makefile
<rdar://problem/5792631> dependency cycle in cups-144 / PrintingCore-250 / Applicatio...
[thirdparty/cups.git] / ppdc / Makefile
index 1e6974709f09c9939ca1389d844fc7c289f00820..edaafeceba5fb776321f1a7da9765b0936748dc1 100644 (file)
@@ -24,7 +24,7 @@ include ../Makedefs
 # Object files...
 #
 
-PPDCOBJS       = \
+LIBOBJS =      \
                ppdc-array.o \
                ppdc-attr.o \
                ppdc-catalog.o \
@@ -44,18 +44,23 @@ PPDCOBJS    = \
                ppdc-source.o \
                ppdc-string.o \
                ppdc-variable.o
-
-OBJS           = \
+LIB32OBJS      = $(LIBOBJS:.o=.32.o)
+LIB64OBJS      = $(LIBOBJS:.o=.64.o)
+OBJS =         \
+               $(LIBOBJS) \
+               $(LIB32OBJS) \
+               $(LIB64OBJS) \
                drv.o \
                ppdc.o \
                ppdhtml.o \
                ppdi.o \
                ppdmerge.o \
-               ppdpo.o \
-               $(PPDCOBJS)
-
-TARGETS                = \
-               libppdc.a \
+               ppdpo.o
+TARGETS        =       \
+               $(LIBCUPSPPDC) \
+               $(LIB32CUPSPPDC) \
+               $(LIB64CUPSPPDC) \
+               libcupsppdc.a \
                drv \
                ppdc-static \
                ppdc \
@@ -82,6 +87,8 @@ clean:
        $(RM) $(TARGETS)
        $(RM) -r ppd
        $(RM) test.drv
+       $(RM) libcupsppdc.so libcupsppdc.sl libcupsppdc.dylib
+       $(RM) -r 32bit 64bit
 
 
 #
@@ -89,14 +96,35 @@ clean:
 #
 
 depend:
-       makedepend -Y -I.. -fDependencies $(OBJS:.o=.cxx) >/dev/null 2>&1
+       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
+
+
+#
+# Install all targets...
+#
+
+install:       all install-data install-headers install-libs install-exec
+
+
+#
+# Install data files...
+#
+
+install-data:
+       $(INSTALL_DIR) $(DATADIR)/drv
 
 
 #
-# Install...
+# Install programs...
 #
 
-install:
+install-exec:
        echo Installing PPD compiler programs...
        $(INSTALL_DIR) $(BINDIR)
        $(INSTALL_BIN) ppdc $(BINDIR)
@@ -106,7 +134,62 @@ install:
        $(INSTALL_BIN) ppdpo $(BINDIR)
        $(INSTALL_DIR) $(SERVERBIN)/driver
        $(INSTALL_BIN) drv $(SERVERBIN)/driver
-       $(INSTALL_DIR) $(DATADIR)/drv
+       if test "x$(SYMROOT)" != "x"; then \
+               $(INSTALL_DIR) $(SYMROOT); \
+               for file in $(TARGETS); do \
+                       cp $$file $(SYMROOT); \
+               done \
+       fi
+
+
+#
+# Install headers...
+#
+
+install-headers:
+       echo Installing header files in $(INCLUDEDIR)/cups...
+       $(INSTALL_DIR) -m 755 $(INCLUDEDIR)/cups
+       $(INSTALL_DATA) ppdc.h $(INCLUDEDIR)/cups
+
+
+#
+# Install libraries...
+#
+
+install-libs: $(INSTALLSTATIC) $(INSTALL32) $(INSTALL64)
+       echo Installing libraries in $(LIBDIR)...
+       $(INSTALL_DIR) -m 755 $(LIBDIR)
+       $(INSTALL_LIB) $(LIBCUPSPPDC) $(LIBDIR)
+       if test $(LIBCUPSPPDC) = "libcupsppdc.so.1" -o $(LIBCUPSPPDC) = "libcupsppdc.sl.1"; then \
+               $(RM) $(LIBDIR)/`basename $(LIBCUPSPPDC) .1`; \
+               $(LN) $(LIBCUPSPPDC) $(LIBDIR)/`basename $(LIBCUPSPPDC) .1`; \
+       fi
+       if test $(LIBCUPSPPDC) = "libcupsppdc.1.dylib"; then \
+               $(STRIP) -x $(LIBDIR)/$(LIBCUPSPPDC); \
+               $(RM) $(LIBDIR)/libcupsppdc.dylib; \
+               $(LN) $(LIBCUPSPPDC) $(LIBDIR)/libcupsppdc.dylib; \
+       fi
+       if test "x$(SYMROOT)" != "x"; then \
+               $(INSTALL_DIR) $(SYMROOT); \
+               cp $(LIBCUPSPPDC) $(SYMROOT); \
+       fi
+
+installstatic:
+       $(INSTALL_DIR) -m 755 $(LIBDIR)
+       $(INSTALL_LIB) 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
 
 
 #
@@ -122,29 +205,70 @@ uninstall:
        $(RM) $(SERVERBIN)/driver/drv
        $(RMDIR) $(SERVERBIN)/driver
        $(RMDIR) $(DATADIR)/drv
+       $(RM) $(LIBDIR)/libcupsppdc.1.dylib
+       $(RM) $(LIBDIR)/libcupsppdc.a
+       $(RM) $(LIBDIR)/libcupsppdc.dylib
+       $(RM) $(LIBDIR)/libcupsppdc_s.a
+       $(RM) $(LIBDIR)/libcupsppdc.sl
+       $(RM) $(LIBDIR)/libcupsppdc.sl.1
+       $(RM) $(LIBDIR)/libcupsppdc.so
+       $(RM) $(LIBDIR)/libcupsppdc.so.1
+       -$(RMDIR) $(LIBDIR)
+       $(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...
+#
+
+apihelp:
+       mxmldoc --section "Programming" \
+               --title "PPD Compiler API" \
+               --css ../doc/cups-printable.css \
+               --header api-ppdc.header --intro api-ppdc.shtml \
+               ppdc.h $(LIBOBJS:.o=.cxx) >../doc/help/api-ppdc.html
+
+framedhelp:
+       mxmldoc --framed api-ppdc \
+               --section "Programming" \
+               --title "PPD Compiler API" \
+               --css ../doc/cups-printable.css \
+               --header api-ppdc.header --intro api-ppdc.shtml \
+               ppdc.h $(LIBOBJS:.o=.cxx)
 
 
 #
 # drv, the CUPS driver interface program to the PPD compiler.
 #
 
-drv:                   drv.o libppdc.a ../cups/$(LIBCUPS)
+drv:                   drv.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
        echo Linking $@...
-       $(CXX) $(LDFLAGS) -o $@ drv.o libppdc.a $(LIBS)
+       $(CXX) $(LDFLAGS) -o $@ drv.o -L. -lcupsppdc $(LIBS)
 
 
 #
 # ppdc, the PPD compiler.
 #
 
-ppdc:                  ppdc.o libppdc.a ../cups/$(LIBCUPS)
+ppdc:                  ppdc.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
        echo Linking $@...
-       $(CXX) $(LDFLAGS) -o $@ ppdc.o libppdc.a $(LIBS)
+       $(CXX) $(LDFLAGS) -o $@ ppdc.o -L. -lcupsppdc $(LIBS)
 
 
-ppdc-static:           ppdc.o libppdc.a  ../cups/libcups.a foo.drv foo-fr.po
+ppdc-static:           ppdc.o libcupsppdc.a  ../cups/libcups.a foo.drv foo-fr.po
        echo Linking $@...
-       $(CXX) $(LDFLAGS) -o ppdc-static ppdc.o libppdc.a ../cups/libcups.a \
+       $(CXX) $(LDFLAGS) -o ppdc-static ppdc.o libcupsppdc.a ../cups/libcups.a \
                $(LIBGSSAPI) $(SSLLIBS) $(COMMONLIBS) $(LIBZ)
        echo Testing PPD compiler...
        ./ppdc-static -l en,fr -I ../data foo.drv
@@ -155,18 +279,18 @@ ppdc-static:              ppdc.o libppdc.a  ../cups/libcups.a foo.drv foo-fr.po
 # ppdhtml, the PPD to HTML utility.
 #
 
-ppdhtml:                       ppdhtml.o libppdc.a ../cups/$(LIBCUPS)
+ppdhtml:                       ppdhtml.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
        echo Linking $@...
-       $(CXX) $(LDFLAGS) -o $@ ppdhtml.o libppdc.a $(LIBS)
+       $(CXX) $(LDFLAGS) -o $@ ppdhtml.o -L. -lcupsppdc $(LIBS)
 
 
 #
 # ppdi, import PPD files.
 #
 
-ppdi:                  ppdi.o libppdc.a ../cups/$(LIBCUPS)
+ppdi:                  ppdi.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
        echo Linking $@...
-       $(CXX) $(LDFLAGS) -o $@ ppdi.o libppdc.a $(LIBS)
+       $(CXX) $(LDFLAGS) -o $@ ppdi.o -L. -lcupsppdc $(LIBS)
 
 
 #
@@ -182,19 +306,91 @@ ppdmerge:                 ppdmerge.o ../cups/$(LIBCUPS)
 # ppdpo, create message catalog files.
 #
 
-ppdpo:                 ppdpo.o libppdc.a ../cups/$(LIBCUPS)
+ppdpo:                 ppdpo.o $(LIBCUPSPPDC) ../cups/$(LIBCUPS)
        echo Linking $@...
-       $(CXX) $(LDFLAGS) -o $@ ppdpo.o libppdc.a $(LIBS)
+       $(CXX) $(LDFLAGS) -o $@ ppdpo.o -L. -lcupsppdc $(LIBS)
 
 
 #
-# libppdc.a, the PPD compiler library...
+# libcupsppdc.so.1, libcupsppdc.sl.1
 #
 
-libppdc.a:             $(PPDCOBJS)
+libcupsppdc.so.1 libcupsppdc.sl.1:     $(LIBOBJS)
+       echo Linking $@...
+       $(DSOXX) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS) $(LIBS)
+       $(RM) `basename $@ .1`
+       $(LN) $@ `basename $@ .1`
+
+
+#
+# 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
+#
+
+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.1.dylib
+#
+
+libcupsppdc.1.dylib:   $(LIBOBJS) libcupsppdc.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
+       $(LN) $@ libcupsppdc.dylib
+
+
+#
+# libcupsppdc_s.a
+#
+
+libcupsppdc_s.a:       $(LIBOBJS)
        echo Creating $@...
+       $(DSOXX) $(DSOFLAGS) -o libcupsppdc_s.o $(LIBOBJS) $(LIBS)
+       $(RM) $@
+       $(AR) $(ARFLAGS) $@ libcupsppdc_s.o
+
+
+#
+# libcupsppdc.la
+#
+
+libcupsppdc.la:    $(LIBOBJS)
+       echo Linking $@...
+       $(CC) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) -rpath $(LIBDIR) \
+               -version-info 1:0 $(LIBS)
+
+
+#
+# libcupsppdc.a
+#
+
+libcupsppdc.a: $(LIBOBJS)
+       echo Archiving $@...
        $(RM) $@
-       $(AR) $(ARFLAGS) $@ $(PPDCOBJS)
+       $(AR) $(ARFLAGS) $@ $(LIBOBJS)
        $(RANLIB) $@