NOTE:  For these purposes we build just the libnetpbm library using a CMake
build.  The BRL-CAD src/other/ext archive (to save space) removes most of the
files not used for that purpose, as well as adding a few files to help the
CMake build succeed.

We have added __declspec logic for Windows, to allow libnetpbm to act as a
shared library on that platform.  pmfileio.c was altered somewhat for
portability (now named pmfileio.cxx), as was the pm_config template file.

Rather than using static symlinks for include header locating, we move the .h
files to netpbm subdirectories.  This simplifies matters on platforms such as
Windows that don't properly support symlink capabilities.

We have also modified the superstable netpbm to incorporate the changes from
https://sourceforge.net/p/netpbm/code/4419/ which remove a GPL string module.
(Previously we had more extensive mods with our own solution - to stay closer
to upstream, we now simply replace the stable nstring with the version from
advanced and update libpm.c accordingly.)

We have also stripped out the shhopt code, since we are not using it.

In order to reduce the chances of collision between bundled headers and system
versions of NETPBM, we change the netpbm header includes as follows:

find . -type f -not -path "*.git/*" -regex '.*\(c\|cpp\|cxx\|h\|hpp\)$' -exec perl -0777 -pi -e 's/#include <netpbm\/pm.h>/#include \"netpbm\/pm.h\"/g' {} \;
find . -type f -not -path "*.git/*" -regex '.*\(c\|cpp\|cxx\|h\|hpp\)$' -exec perl -0777 -pi -e 's/#include <netpbm\/ppm.h>/#include \"netpbm\/ppm.h\"/g' {} \;
find . -type f -not -path "*.git/*" -regex '.*\(c\|cpp\|cxx\|h\|hpp\)$' -exec perl -0777 -pi -e 's/#include <netpbm\/pm_config.h>/#include \"netpbm\/pm_config.h\"/g' {} \;
find . -type f -not -path "*.git/*" -regex '.*\(c\|cpp\|cxx\|h\|hpp\)$' -exec perl -0777 -pi -e 's/#include <netpbm\/pam.h>/#include \"netpbm\/pam.h\"/g' {} \;
find . -type f -not -path "*.git/*" -regex '.*\(c\|cpp\|cxx\|h\|hpp\)$' -exec perl -0777 -pi -e 's/#include <netpbm\/pbm.h>/#include \"netpbm\/pbm.h\"/g' {} \;
find . -type f -not -path "*.git/*" -regex '.*\(c\|cpp\|cxx\|h\|hpp\)$' -exec perl -0777 -pi -e 's/#include <netpbm\/pgm.h>/#include \"netpbm\/pgm.h\"/g' {} \;
find . -type f -not -path "*.git/*" -regex '.*\(c\|cpp\|cxx\|h\|hpp\)$' -exec perl -0777 -pi -e 's/#include <netpbm\/pnm.h>/#include \"netpbm\/pnm.h\"/g' {} \;
find . -type f -not -path "*.git/*" -regex '.*\(c\|cpp\|cxx\|h\|hpp\)$' -exec perl -0777 -pi -e 's/#include <netpbm\/ppmcmap.h>/#include \"netpbm\/ppmcmap.h\"/g' {} \;
find . -type f -not -path "*.git/*" -regex '.*\(c\|cpp\|cxx\|h\|hpp\)$' -exec perl -0777 -pi -e 's/#include <netpbm\/colorname.h>/#include \"netpbm\/colorname.h\"/g' {} \;


Currently bundled BRL-CAD version of NETPBM is 10.73.42

                                 NETPBM

This file is part of the source tree for Netpbm.

Netpbm is a toolkit for manipulation of graphic images, including
conversion of images between a variety of different formats.  There
are over 300 separate tools in the package including converters for
about 100 graphics formats.  Examples of the sort of image
manipulation we're talking about are: Shrinking an image by 10%;
Cutting the top half off of an image; Making a mirror image; Creating
a sequence of images that fade from one image to another;

For more information, see <http://netpbm.sourceforge.net>.  Examples of
information there:

  - How to use Netpbm

  - Where to get current Netpbm code

  - What prerequisites there are and how to satisfy them

  - How to get help using Netpbm

  - How to report a bug or suggest an enhancement

  - How to contribute code

The doc/ directory of the source tree contains further documentation, mainly
of use only to someone who already has the source code.  For example:

  - Build and installation instructions

  - Where to get the manual (it's not in the source tree).

