# Makefile to install foomatic-db-engine # $Revision$ # PREFIX defaults to /usr/local for manually installed progs, so that they # are not messed up on a system upgrade. # # `architecture independent', static data files i.e. perl libs go into # $(PREFIX)/share/foomatic # (user) executables into $(PREFIX)/bin/ # system binaries go into $(PREFIX)/sbin # configuration files into /etc/foomatic/*. # # The PERLPREFIX allows a seperate prefix for the Perl libraries. Use this # when Perl libraries in /usr/local are not found. # Variables DEBUG= prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ bindir=@bindir@ sbindir=@sbindir@ mandir=@mandir@ datadir=@datadir@ sysconfdir=@sysconfdir@ SRC=@srcdir@ INSTALL=@INSTALL@ PREFIX=$(prefix) PERLPREFIX=@PERLPREFIX@ # Foomatic database location for a regular installation LIBDIR=@LIBDIR@ # Foomatic database location for a "make inplace" installation LOCAL_LIBDIR=@LOCAL_LIBDIR@ # foomatic-rip path for a regular installation FOOMATIC_RIP=@FOOMATIC_RIP@ # foomatic-rip path for a "make inplace" installation LOCAL_FOOMATIC_RIP=@LOCAL_FOOMATIC_RIP@ # Locations for installing the components of this package BINDIR=$(bindir) SBINDIR=$(sbindir) MANDIR=$(mandir) ETCDIR=$(sysconfdir)/foomatic ## C settings CC=@CC@ CFLAGS=@CFLAGS@ XML_CFLAGS=@XML_CFLAGS@ XML_LIBS=@XML_LIBS@ ## Settings for Perl # Where to find the perl binary PERL=@PERL@ # How to install the perl libs, may be either "site" or "perl" # details in the ExtUtils::MakeMaker manpage PERL_INSTALLDIRS=@PERL_INSTALLDIRS@ # Genereal paths for all filter scripts EXEC_PATH=/usr/local/bin:/usr/bin:/bin LOG_PATH=/tmp # Paths for LPD and LPRng LPD_SPOOL=@LPD_SPOOL@ LPD_LOG=@LPD_LOG@ LPD_BIN=@LPD_BIN@ PRINTCAP=@PRINTCAP@ LPRNG_CONF=@LPRNG_CONF@ LPD_LPR=@LPD_LPR@ LPD_LPQ=@LPD_LPQ@ LPD_LPRM=@LPD_LPRM@ LPD_LPC=@LPD_LPC@ LPRNG_CHECKPC=@LPRNG_CHECKPC@ # Paths and other settings for CUPS CUPS_ETC=@CUPS_ETC@ CUPS_ADMIN=@CUPS_ADMIN@ CUPS_LPSTAT=@CUPS_LPSTAT@ CUPS_PPDS=@CUPS_PPDS@ CUPS_FILTERS=@CUPS_FILTERS@ CUPS_BACKENDS=@CUPS_BACKENDS@ LIB_CUPS=@LIB_CUPS@ CUPS_DRIVER=@LIB_CUPS@/driver CUPS_PCONF=@CUPS_PCONF@ CUPS_LPR=@CUPS_LPR@ CUPS_LPQ=@CUPS_LPQ@ CUPS_LPRM=@CUPS_LPRM@ CUPS_LPC=@CUPS_LPC@ CUPS_LP=@CUPS_LP@ CUPS_CANCEL=@CUPS_CANCEL@ CUPS_ENABLE=@CUPS_ENABLE@ CUPS_DISABLE=@CUPS_DISABLE@ CUPS_ACCEPT=@CUPS_ACCEPT@ CUPS_REJECT=@CUPS_REJECT@ CUPS_LPMOVE=@CUPS_LPMOVE@ CUPS_LPOPTIONS=@CUPS_LPOPTIONS@ CUPS_LPINFO=@CUPS_LPINFO@ # Paths for PDQ PDQ_CONF=@PDQ_CONF@ PDQ_PRINTRC=@PDQ_PRINTRC@ PDQ_FOOMATIC=$(PDQ_CONF)/drivers/foomatic PDQ_PRINT=@PDQ_PRINT@ PDQ_JOBDIR=~/.printjobs # Paths for PPR PPR_PPRD=@PPR_PPRD@ PPR_INTERFACES=@PPR_INTERFACES@ PPR_PPDFILES=@PPR_PPDFILES@ PPR_ETC=@PPR_ETC@ PPR_PPR=@PPR_PPR@ PPR_PPAD=@PPR_PPAD@ PPR_PPOP=@PPR_PPOP@ # Paths for direct, spoolerless printing DIRECT_ETC=$(ETCDIR)/direct DIRECT_CONFIG=$(DIRECT_ETC)/.config # Other paths NC=@NC@ RLPR=@RLPR@ SMBCLIENT=@SMBCLIENT@ NPRINT=@NPRINT@ PTAL_CONNECT=@PTAL_CONNECT@ PTAL_PIPES=@PTAL_PIPES@ MTINK_PIPES=@MTINK_PIPES@ CAT=@CAT@ GZIP=@GZIP@ WGET=@WGET@ CURL=@CURL@ # This is mainly useful for building a binary foomatic package DESTDIR=/ ### Probably nothing to fiddle past here # Files generated by the AC_OUTPUT call of "./configure" AC_OUTPUT_FILES:=Makefile makeDefaults makeMan \ foomatic-configure foomatic-printjob \ foomatic-kitload foomatic-ppdfile foomatic-preferred-driver \ foomatic-cleanupdrivers foomatic-getpjloptions \ foomatic-addpjloptions foomatic-compiledb foomatic-fix-xml \ foomatic-nonumericalids foomatic-replaceoldprinterids \ foomatic-ppd-options foomatic-printermap-to-gimp-print-xml \ foomatic-extract-text # User programs and helper programs BINFILES:=foomatic-printjob foomatic-configure \ foomatic-combo-xml foomatic-perl-data \ foomatic-ppdfile foomatic-compiledb \ foomatic-ppd-options # Administrative commands, only useful for admins SBINFILES:=foomatic-kitload \ foomatic-getpjloptions foomatic-addpjloptions \ foomatic-preferred-driver foomatic-fix-xml \ foomatic-nonumericalids foomatic-replaceoldprinterids \ foomatic-printermap-to-gimp-print-xml \ foomatic-cleanupdrivers foomatic-extract-text # Foomatic XML templates TEMPLATES:=pjl_enum_choice.xml pjl_enum_option.xml pjl_num_option.xml # Masks for trash files which have to be removed before packaging Foomatic TRASHFILES:="*~" "*\#*" ".??*" "*.rej" all: build # The install rule should check for kitloads and avoid stomping. It doesn't install: install-bin install-man check-config: @if [ -f .testing-stamp ] ; then \ echo 'Cowardly refusing to install testing Defaults.pm.' ;\ echo 'Use "make testing-clean; make defaults" to get a proper one.' ;\ exit 1 ;\ fi install-bin: check-config lib/Makefile # This is the only way to get the Perl-generated Makefile using # $(DESTDIR) properly ( cd lib && \ $(MAKE) PREFIX=$(PERLPREFIX) && \ $(MAKE) PREFIX=$(DESTDIR)$(PERLPREFIX) pure_install \ ) ${SRC}/mkinstalldirs $(DESTDIR)$(BINDIR) ${SRC}/mkinstalldirs $(DESTDIR)$(SBINDIR) ${SRC}/mkinstalldirs $(DESTDIR)$(ETCDIR) ${SRC}/mkinstalldirs $(DESTDIR)$(LIBDIR)/templates ${INSTALL} -m 755 $(BINFILES) $(DESTDIR)$(BINDIR) ${INSTALL} -m 755 $(SBINFILES) $(DESTDIR)$(SBINDIR) ( cd foomatic-templates && \ ${INSTALL} -m 644 $(TEMPLATES) $(DESTDIR)$(LIBDIR)/templates \ ) $(PERL) -p -i -e "s:foomatic-templates:$(LIBDIR)/templates:g" $(DESTDIR)$(SBINDIR)/foomatic-addpjloptions # Link to allow foomatic-ppdfile be called under the old name # foomatic-datafile ln -sf foomatic-ppdfile $(DESTDIR)$(BINDIR)/foomatic-datafile # Link foomatic-ppdfile to the CUPS 1.2 PPD generator directory, # so that the cups-driverd automatically generates Foomatic PPDs # on demand (/usr/lib/cups/driver). if [ -d $(LIB_CUPS) ]; then \ ${SRC}/mkinstalldirs $(DESTDIR)$(CUPS_DRIVER); \ ln -sf $(BINDIR)/foomatic-ppdfile $(DESTDIR)$(CUPS_DRIVER)/foomatic; \ fi install-man: check-config ${SRC}/mkinstalldirs $(DESTDIR)$(MANDIR) ${SRC}/mkinstalldirs $(DESTDIR)$(MANDIR)/man1 ${SRC}/mkinstalldirs $(DESTDIR)$(MANDIR)/man8 ${INSTALL} -m 644 *.1 $(DESTDIR)$(MANDIR)/man1 ${INSTALL} -m 644 *.8 $(DESTDIR)$(MANDIR)/man8 # If the Perl scripts have "use lib 'lib/';" lines from a former # "make testing", we remove them. build: defaults lib/Makefile foomatic-combo-xml foomatic-perl-data man for m in $(BINFILES) $(SBINFILES); do \ $(PERL) -p -i -e "s=use lib '.*lib/';\n==s" $$m; \ done chmod a+rx $(AC_OUTPUT_FILES) mkinstalldirs lib/Makefile: lib/Makefile.PL ( cd lib && $(PERL) Makefile.PL verbose INSTALLDIRS=$(PERL_INSTALLDIRS) ) foomatic-combo-xml: foomatic-combo-xml.c $(CC) $(CFLAGS) -o foomatic-combo-xml foomatic-combo-xml.c foomatic-perl-data: foomatic-perl-data.c $(CC) $(CFLAGS) $(XML_CFLAGS) $(XML_LIBS) -o foomatic-perl-data foomatic-perl-data.c man: lib/Foomatic/Defaults.pm chmod a+rx ./makeMan ./makeMan clean: lib/Makefile remove-trash $(MAKE) -C lib clean rm -f lib/Makefile.old rm -f lib/Foomatic/Defaults.pm rm -f *~ .testing-stamp rm -f *.o gs_out rm -f foomatic-combo-xml rm -f foomatic-perl-data rm -f Foomatic rm -rf foomatic-db rm -f $(BINFILES:=.1) $(SBINFILES:=.8) # Remove links from inplace installation rm -f foomatic-rip foomatic-datafile man # Remove foomatic-filters-ppds-.tar.gz package rm -rf foomatic-filters-ppds foomatic-filters-ppds-[0-9]* rm -rf foomatic-filters-ppds*.tar.gz distclean: clean rm -f $(AC_OUTPUT_FILES) config.log config.status config.cache rm -rf autom*.cache confdefs.h ppd foomatic-db db maintainer-clean: distclean rm -f configure aclocal.m4 # Uninstall an installed Foomatic uninstall: uninstall-bin uninstall-man uninstall-bin: check-config lib/Makefile # This is the only way to get the Perl-generated Makefile using # $(DESTDIR) properly ( cd lib && \ $(MAKE) PREFIX=$(DESTDIR)$(PERLPREFIX) uninstall \ ) ( cd $(DESTDIR)$(BINDIR) && \ rm -f $(BINFILES) \ ) rm -f $(DESTDIR)$(BINDIR)/foomatic-datafile ( cd $(DESTDIR)$(SBINDIR) && \ rm -f $(SBINFILES) \ ) ( cd $(DESTDIR)$(LIBDIR)/templates && \ rm -f $(TEMPLATES) \ ) rmdir $(DESTDIR)$(LIBDIR)/templates || : rmdir $(DESTDIR)$(ETCDIR) || : uninstall-man: check-config for m in $(BINFILES); do \ rm -f $(DESTDIR)$(MANDIR)/man1/$$m.*; \ done for m in $(SBINFILES); do \ rm -f $(DESTDIR)$(MANDIR)/man8/$$m.*; \ done # Various testing/debugging/etc targets # We insert a "use lib 'lib/';" line into the perl scripts, so that # they use the local database and libraries, so they also work correctly on # systems with installed Foomatic. inplace: testing testing: INPLACE = --inplace testing: defaults foomatic-combo-xml foomatic-perl-data man ln -sf lib/Foomatic .; \ for m in $(BINFILES) $(SBINFILES); do \ $(PERL) -p -i -e "s=^\#\x21$(PERL)(.*)\n=\#\x21$(PERL)\$$1\nuse lib '`pwd`/lib/';\n=s" $$m; \ done chmod a+rx $(AC_OUTPUT_FILES) # Links for more convenient usage of the "inplace" installation ln -sf $(LOCAL_FOOMATIC_RIP) foomatic-rip ln -sf `pwd`/foomatic-ppdfile foomatic-datafile # Script for the man pages echo -en '#!/bin/sh\nman ./\044\061.[1-9n] 2>/dev/null || man \044\061\n' > man || : chmod a+rx man || : inplace-clean: testing-clean testing-clean: clean # Remove editor backup and temporary files remove-trash: for m in $(TRASHFILES); do \ find . -name "$$m" -exec rm "{}" \; ; \ done # We need to export all Variables for makeDefaults and the target to # work. .EXPORT_ALL_VARIABLES: # Use INPLACE=--inplace to get the special run-in-place Defaults. defaults: lib/Foomatic/Defaults.pm lib/Foomatic/Defaults.pm: Makefile makeDefaults chmod a+rx ./makeDefaults ./makeDefaults $(INPLACE) if [ x$(INPLACE) = x--inplace ] ; then touch .testing-stamp ; fi # Make foomatic-filters-ppds-.tar.gz filters-ppds: inplace # Generate the package name local_libdir=$(LOCAL_LIBDIR); \ packagename=foomatic-filters-ppds-$${local_libdir##*foomatic-db-}; \ ( echo $${packagename} | \ perl -e "(<> =~ m:/: ? exit 1 : exit 0)" ) || \ packagename=foomatic-filters-ppds-`date +%Y%m%d`; \ rm -rf $${packagename} ppd; \ mkdir -p $${packagename}/share; \ mkdir -p $${packagename}/bin; \ mkdir -p $${packagename}/share/man/man1; \ ./foomatic-compiledb -t ppd -j 1 || exit 1; \ sleep 10; \ ( cd ppd; \ for file in `ls -1 *.ppd`; do \ make=$${file%%-*}; \ mkdir -p $$make || exit 1; \ mv $$file $$make/ || exit 1; \ done; \ rm -f *.ppd || exit 1; \ ); \ mv ppd $${packagename}/share || exit 1; \ ${INSTALL} -m 755 $(LOCAL_FOOMATIC_RIP) $${packagename}/bin || exit 1; \ local_foomatic_rip=$(LOCAL_FOOMATIC_RIP); \ foomatic_filters_root=$${local_foomatic_rip%/*}; \ ${INSTALL} -m 755 $${foomatic_filters_root}/foomatic-gswrapper \ $${packagename}/bin || exit 1; \ ${INSTALL} -m 644 $${foomatic_filters_root}/*.1 $${packagename}/share/man/man1 \ || exit 1; \ ${INSTALL} -m 755 foomatic-filters-ppds-install $${packagename}/install || exit 1; \ ${INSTALL} -m 644 foomatic-filters-ppds-README $${packagename}/README || exit 1; \ ${INSTALL} -m 644 COPYING $${packagename}/COPYING || exit 1; \ chmod -R a+rX,go-w $${packagename} || exit 1; \ rm -f $${packagename}.tar.gz || exit 1; \ unset GZIP; \ tar -cf - $${packagename} | gzip > $${packagename}.tar.gz || exit 1 .PHONY: all defaults check-config build install install-bin \ man inplace testing clean inplace-clean testing-clean distclean \ maintainer-clean