INSTALL - OpenPrinting libppd v2.0.0 - 2023-09-22
-------------------------------------------------

This file describes how to compile and install OpenPrinting libppd
from source code. For more information on OpenPrinting libppd see the
file called "README.md".  A complete change log can be found in
"CHANGES.md".

BEFORE YOU BEGIN

    You'll need ANSI-compliant C and C++ compilers, plus a make
    program and POSIX-compliant shell (/bin/sh).  The GNU compiler
    tools and Bash work well and we have tested the current CUPS code
    against several versions of GCC with excellent results.

    The Makefiles used by the project should work with most versions
    of make.  We've tested them with GNU make as well as the make
    programs shipped by Compaq, HP, SGI, and Sun.  BSD users should
    use GNU make (gmake) since BSD make does not support "include".

    libcups of CUPS 2.2.2 or newer and libcupsfilters 2.0.0 or newer
    must be installed to be able to compile this package. As none of
    the PPD-file-supporting functions in libcups are used, porting
    this library to use libcups3 (of CUPS 3.x) should be easy, or
    libppd will already just work with libcups3.

COMPILING THE GIT REPOSITORY CODE

    The libppd GIT repository doesn't hold a copy of the pre-built
    configure script.  You'll need to run the GNU autoconf software
    (2.65 or higher) to create it:

        ./autogen.sh


CONFIGURATION

    libppd uses GNU autoconf, so you should find the usual "configure"
    script in the main libppd source directory.  To configure libppd
    for your system, type:

	./configure

    The default installation will put the libppd software into the
    "/usr" directory on your system.

    Use the "--prefix" option to install the libppd software into
    another location:

	./configure --prefix=/some/directory

    To see a complete list of configuration options, use the --help option:

        ./configure --help

    If any of the dependent libraries are not installed in a system default
    location (typically "/usr/include" and "/usr/lib") you'll need to set the
    CFLAGS, CPPFLAGS, CXXFLAGS, DSOFLAGS, and LDFLAGS environment variables
    prior to running configure:

	setenv CFLAGS "-I/some/directory"
	setenv CPPFLAGS "-I/some/directory"
	setenv CXXFLAGS "-I/some/directory"
	setenv DSOFLAGS "-L/some/directory"
	setenv LDFLAGS "-L/some/directory"
	./configure ...

    or:

	CFLAGS="-I/some/directory" \
	CPPFLAGS="-I/some/directory" \
	CXXFLAGS="-I/some/directory" \
	DSOFLAGS="-L/some/directory" \
	LDFLAGS="-L/some/directory" \
	./configure ...

    Once you have configured things, just type:

	make ENTER

    or if you have FreeBSD, NetBSD, or OpenBSD type:

	gmake ENTER

    to build the software.


INSTALLING THE SOFTWARE

    Once you have built the software you need to install it.  The "install"
    target provides a quick way to install the software on your local system:

	make install ENTER

    or for FreeBSD, NetBSD, or OpenBSD:

	gmake install ENTER

PACKAGING THE SOFTWARE FOR OPERATING SYSTEM DISTRIBUTIONS

    libppd is only for retro-fitting legacy CUPS drivers using PPD
    files. So it only needs to get packaged for and included in an OS
    distribution if retro-fitting Printer Applications are installed
    as classic packages (like RPM or DEB).

    If legacy printer support is only done via the Printer Application
    Snaps (or other containers of the Printer Applications) or no
    legacy printer support is required (only support for modern,
    driverless IPP printers), libppd is not needed.
