CMake Files, Lists and Scripts for the PNG Reference Library
============================================================

Copyright Notice
----------------

 * Copyright (c) 2018-2024 Cosmin Truta.
 * Copyright (c) 2007-2018 Glenn Randers-Pehrson.
 * Originally written by Christian Ehrlicher, 2007.

Use, modification and distribution of the CMake
files in the libpng distribution are subject to
the same licensing terms and conditions as libpng.
Please see the copyright notice in `png.h` or visit
http://libpng.org/pub/png/src/libpng-LICENSE.txt

File List
---------

    CMakeLists.txt                 ==>  The main CMake lists file
    scripts/cmake/AUTHORS.md       ==>  The Authors file
    scripts/cmake/README.md        ==>  This file
    scripts/cmake/genchk.cmake.in  ==>  Template for genchk.cmake
    scripts/cmake/genout.cmake.in  ==>  Template for genout.cmake
    scripts/cmake/gensrc.cmake.in  ==>  Template for gensrc.cmake
    scripts/cmake/test.cmake.in    ==>  Template for test.cmake

Acknowledgements
----------------

See the accompanying file `scripts/cmake/AUTHORS.md`
for the list of Contributing Authors.

If you are a Contributing Author, please make sure
that you are being acknowledged.
