# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4

PortSystem          1.0

PortGroup           github  1.0
PortGroup           cargo   1.0

github.setup        kornelski pngquant 3.0.3
github.tarball_from archive
revision            1

categories          graphics
license             GPL-3+
maintainers         {gmail.com:herby.gillot @herbygillot} \
                    openmaintainer

description         command-line utility and library for lossy compression of PNG images

long_description    pngquant is a {*}${description}. \
                    The conversion reduces file sizes significantly (often as \
                    much as 70%) and preserves full alpha transparency. \
                    Generated images are compatible with all modern web \
                    browsers, and have better fallback in IE6 than 24-bit PNGs.

homepage            https://pngquant.org/

# Match the libimagequant submodule pinned by this pngquant release.
set libimagequant_commit 6e9805761851f1a8320380b9f563961f892ec6ba
set libimagequant_distname libimagequant-${libimagequant_commit}

cargo.crates_github \
    imagequant ImageOptim/libimagequant main ${libimagequant_commit} \
    d0167e69f9303029bd1df3ea728fe9e7a9c4b64050c266140b119443bd2da4b7

checksums           ${distname}${extract.suffix} \
                    rmd160  b756e1a2528a9956c712089a376e6a94ea8ddb89 \
                    sha256  ddd8889a9c269ba454d0c5e4f7167948d55d77c4570b23f671809fd3a68b6822 \
                    size    66778

# pngquant uses a path dependency on this submodule.
post-extract {
    delete ${worksrcpath}/lib
    move ${cargo.home}/macports/${libimagequant_distname} ${worksrcpath}/lib
}

depends_lib-append  port:lcms2 \
                    port:libpng \
                    port:zlib

depends_build-append \
                    path:bin/pkg-config:pkgconfig

# Upstream does not ship Cargo.lock; generate it from the vendored crates.
cargo.update        yes

build.pre_args-append \
                    --features=lcms2,cocoa

destroot {
    xinstall -m 0755 \
        ${worksrcpath}/target/[cargo.rust_platform]/release/${name} \
        ${destroot}${prefix}/bin/

    xinstall -m 0444 ${worksrcpath}/${name}.1 \
        ${destroot}${prefix}/share/man/man1/

    set docdir ${prefix}/share/doc/${subport}
    xinstall -d ${destroot}${docdir}
    xinstall -m 644 -W ${worksrcpath} \
        CHANGELOG \
        COPYRIGHT \
        README.md \
        ${destroot}${docdir}
}

cargo.crates \
    arrayvec                         0.7.8  d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56 \
    bitflags                        2.13.2  3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06 \
    bytemuck                        1.25.2  95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797 \
    cc                               1.6.0  f74872d07caf508b30a21f6836e7d7016a2eaf7d9ff4f48deaa58cd8a0407630 \
    cfg-if                           1.0.5  4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600 \
    cocoa_image                      1.1.0  c6379be0a52097496f90f85eafb3df30ebec491457627264ce00c611e39d07b4 \
    core-foundation                 0.10.1  b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6 \
    core-foundation-sys              0.8.7  773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b \
    core-graphics                   0.24.0  fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1 \
    core-graphics-types              0.2.0  3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb \
    crossbeam-deque                  0.8.8  622f3fc73690be383c7214310406f28a90e6edeadc3cea882f9d71e495b9711a \
    crossbeam-epoch                 0.9.21  dc74980687109a3b14c72fd458107bf0baa1da1a1a805e178d15501ba9b86d9d \
    crossbeam-utils                 0.8.23  a31eee39dddec8330830986fcd7625edb5a24ec90ea038215273bbc3adb08ac6 \
    dunce                            1.0.5  92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813 \
    either                          1.18.0  252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34 \
    find-msvc-tools                 0.1.14  aedcfb3409746eddb02b9e19ebda1c3394f759a152e48ee875a0844d1b955484 \
    foreign-types                    0.5.0  d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965 \
    foreign-types-macros             0.2.4  ea5190182e6915eb873ddbc16e23b711b6eb1f9c00a0d0a3a91b5f6228475225 \
    foreign-types-shared             0.3.1  aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b \
    getopts                         0.2.24  cfe4fbac503b8d1f88e6676011885f34b7174f46e59956bba534ba83abded4df \
    getrandom                        0.4.3  300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099 \
    glob                             0.3.4  e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b \
    imgref                          1.12.3  6e44b0a4eaa4c82f441d50a963f2d5f05a787240aeee097597033e72accfd22f \
    jobserver                       0.1.35  1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3 \
    lcms2-sys                        4.0.7  264db0b78119c5a37d78bb41fb355daab29b3b29430b53cd92e3da51f0ab06cc \
    libc                           0.2.190  ce5d3ddc6d3fa000eb1536d85e147bfe31aacaba692ed6a876f95cb7c855be78 \
    libpng-sys                      1.1.11  2e8d56e0541e2b1d73868e7b877624e1f9ce8787a91acdb867c30c579349d38b \
    libz-sys                        1.1.29  85bc9657773828b90eeb625adff10eeac83cc21bbfd8e23a03eaa8a33c9e28d9 \
    malloc_buf                       0.0.6  62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb \
    objc                             0.2.7  915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1 \
    once_cell                       1.21.4  9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50 \
    pkg-config                      0.3.34  f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548 \
    proc-macro2                    1.0.107  985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9 \
    quote                           1.0.47  1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001 \
    r-efi                            6.0.0  f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf \
    rayon                           1.12.0  fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d \
    rayon-core                      1.13.0  22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91 \
    rgb                             0.8.53  47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4 \
    shlex                            2.0.1  f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba \
    syn                              3.0.6  8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee \
    thread_local                    1.1.10  1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070 \
    unicode-ident                   1.0.26  d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954 \
    unicode-width                    0.2.2  b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254 \
    vcpkg                           0.2.15  accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426 \
    wild                             2.2.1  a3131afc8c575281e1e80f36ed6a092aa502c08b18ed7524e86fbbb12bb410e1
