The manifest of these changes is as follows:

This file:

README.libharu

CMake logic that automatically builds libharu as part of the "Build
Projects" project (see CMakeLists.txt file in the parent directory)
that uses ExternalProject_Add to build projects that have a bp.cmake
file:

bp.cmake

Improved build system (Werner's build system culled from the
git version of libharu in 2010 or so with additional improvements by me):

cmake.patch

Support for larger font sizes (without this, example 24 does not work):

large_font.patch

Support for gcc visibility:

visibility.patch

This patch is to remove a configured file from the tarball that made a
build with a separate build tree impossible since it's name was the
same as the configured file include/hpdf_config.h in the build tree,
but its location in the source tree took precedence in the header
search path thus incorrectly imposing the configuration of the
computer that created the tarball.

remove_configured.patch

(1) Patch a pre-existing freshly unpacked version of libharu-2.2.1,
with these patches, e.g.,

patch -d /home/software/libharu/libharu-2.2.1 -p1 < cmake.patch
patch -d /home/software/libharu/libharu-2.2.1 -p1 < large_font.patch
patch -d /home/software/libharu/libharu-2.2.1 -p1 < visibility.patch
patch -d /home/software/libharu/libharu-2.2.1 -p1 < remove_configured.patch

(2) configure, build, and install libharu starting with an empty build tree
and empty install tree, e.g.,

cd /home/software/libharu
mkdir -p build_dir
cd build_dir
rm -rf /home/software/libharu/build_dir/* /home/software/libharu/install
cmake -DCMAKE_INSTALL_PREFIX=/home/software/libharu/install \
../libharu-2.2.1 >& cmake.out
make -j4 install >& make_install.out

The above step works fine on Linux with

export CFLAGS='-g -fvisibility=hidden'

set before the "cmake" invocation to test the new gcc visibility support
in hpdf.h.  Note that the -DLIBHARU_EXAMPLES=ON cmake option would attempt
to build the demos (but not test them).  However, avoid using this
option with 2.2.1 since no demos are included with that release.

N.B. This improved CMake-based build system has been tested for both
Linux and MinGW/MSYS now using the "Build Projects" project (see the
CMakeLists.txt file in the parent directory).  As far as I know, this
improved build system _should_ also work on Mac OS X.
