# -*- 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               debug 1.0
PortGroup               legacysupport 1.1

# _strnlen
legacysupport.newest_darwin_requires_legacy 10

name                    GraphicsMagick
version                 1.3.45
revision                1
checksums               rmd160  f6c761fdbebacfb3e4e88c78ba102d46cbd4ce28 \
                        sha256  dcea5167414f7c805557de2d7a47a9b3147bcbf617b91f5f0f4afe5e6543026b \
                        size    5936968

set branch              [join [lrange [split ${version} .] 0 1] .]
categories              graphics
maintainers             {ryandesign @ryandesign} openmaintainer
license                 MIT

description             image processing tools collection

long_description        GraphicsMagick is the swiss army knife of image \
                        processing. It provides a robust collection of tools and \
                        libraries which support reading, writing, and manipulating an \
                        image in over 88 major formats including important formats \
                        like DPX, GIF, JPEG, JPEG-2000, PNG, PDF, SVG, and TIFF.

homepage                http://www.graphicsmagick.org/
master_sites            sourceforge:project/graphicsmagick/graphicsmagick/${version}

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

depends_lib-append      port:libxml2 \
                        port:bzip2 \
                        port:xz \
                        port:zlib \
                        port:libheif \
                        port:libjxl \
                        port:libpng \
                        port:netpbm \
                        port:tiff \
                        port:freetype \
                        port:libiconv \
                        port:libtool \
                        port:libzip \
                        port:lcms2 \
                        port:jasper \
                        path:include/turbojpeg.h:libjpeg-turbo \
                        port:webp

use_xz                  yes

# llvm-gcc-4.2 gives "Undefined symbols for architecture x86_64: ___builtin_object_size"
compiler.blacklist      *llvm-gcc-4.2

# https://trac.macports.org/wiki/WimplicitFunctionDeclaration#strchr
configure.checks.implicit_function_declaration.whitelist-append strchr

configure.args-append   --with-jbig=no \
                        --with-jpeg=yes \
                        --with-wmf=no \
                        --with-dps=no \
                        --with-libzip=yes \
                        --with-gslib=no \
                        --with-lcms2=yes \
                        --with-x=no \
                        --with-perl=no \
                        --with-trio=no \
                        --with-jp2=yes \
                        --with-fpx=no \
                        --with-heif=yes \
                        --with-png=yes \
                        --with-tiff=yes \
                        --with-bzlib=yes \
                        --with-lzma=yes \
                        --with-zlib=yes \
                        --with-xml=yes \
                        --with-ttf=yes \
                        --with-webp=yes \
                        --without-umem \
                        --enable-shared=yes

post-configure {
    reinplace -E {s|-arch [a-z0-9_]+||g} \
        ${worksrcpath}/magick/GraphicsMagick-config \
        ${worksrcpath}/Magick++/bin/GraphicsMagick++-config
}

test.run                yes
test.target             check

variant q8 conflicts q16 q32 description {Use 8 bits per pixel quantum} {
    configure.args-append --with-quantum-depth=8
}

variant q16 conflicts q8 q32 description {Use 16 bits per pixel quantum} {
    configure.args-append --with-quantum-depth=16
}

variant q32 conflicts q8 q16 description {Use 32 bits per pixel quantum} {
    configure.args-append --with-quantum-depth=32
}

if {![variant_isset q16] && ![variant_isset q32]} {
    default_variants +q8
}

variant openmp description { Build with OpenMP support} {
    # OpenMP is beneficial for GM: http://www.graphicsmagick.org/OpenMP.html
    compiler.openmp_version 4.0
    configure.args-append   --enable-openmp
}

livecheck.regex         /${name}-(\\d+(?:\\.\\d{1,5})+)[quotemeta ${extract.suffix}]
