libpng-src 0.2.3

Helper package for compiling 'libpng' as a static library. Meant to be used as build dependency only.
Documentation
# libpng-src
Helper Cargo package for compiling [libpng](https://github.com/pnggroup/libpng) into a static C library. Meant to be used as build dependency for dufferent `-sys` or `-vendored` packages. Does not provide directly usable **libpng** functionality or bindings.

## Provided version
Compiles **libpng** with version `1.6.43`. Original source code with the license is provided in **libpng** folder without any modifications.

## Currenlly supported OS and targets
Expected to work for:
* Linux: `x86_64-unknown-linux-gnu`, `aarch64-unknown-linux-gnu` (no cross-compilation supported yet)
* Windows: `x86_64-pc-windows-msvc`, `aarch644-pc-windows-msvc` (no cross-compilation supported yet)
* macOS: `x86_64-apple-darwin`, `aarch64-apple-darwin`
* iOS, including simulators (cross-compilation from macOS host): `x86_64-apple-ios`, `aarch64-apple-ios`, `aarch64-apple-ios-sim`

Tested before upload for all the targets, except `aarch64-unknown-linux-gnu` and `aarch64-pc-windows-msvc`.

## Dependenencies for hosts
Doesn't depend on any cargo packages for compilation.
Uses CMake and  **libpng** provided shell scripts. Depends on **zlib** library headers for compilation and dynamic library artifact for testing.

### Linux
* CMake - install via https://cmake.org/ or a package manager
* make - https://www.gnu.org/software/make/
* CC - a C compiler, added to system path
* **zlib** - https://packages.debian.org/bullseye/zlib1g-dev

## Windows
* CMake - vendored by MS Visual Studio;
* MS Visual Studio - https://visualstudio.microsoft.com/
* `**zlib** headers and tests helping DLL - vendored in the package

Invoke Cargo via Developer Powershell or Developer Command Prompt for correct work.

### macOS and iOS
* CMake - install via https://cmake.org/ or [Homebrew]https://brew.sh/;
* make - vendored by OS
* Xcode - https://developer.apple.com/xcode/
* **zlib**` - vendored by OS

### Testing
One of the unit tests invokes CTest (part of CMake) under the hood for testing native code.

## TODO
* Support cross-compilation for Android;

## Authors
**Rust code and scripts:** Alexandr (Alex) Lambov <alex.lambov.md@gmail.com>, &copy; 2024

**libpng** -  see http://www.libpng.org/pub/png/libpng.html