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

# IM7 7.1.1-29, 2024 March, for OS 10.6/Snow Leopard;
# TARGET_OS_IOS, TARGET_OS_WATCH, TARGET_OS_TV missing in TargetConditionals.h:
legacysupport.newest_darwin_requires_legacy 10

###### OBSOLETE NOTE FROM IM6:
# Keep relevant lines in sync between ImageMagick and p5-perlmagick.

###### OBSOLETE NOTE FROM IM6:
# Before updating to a newer version, install phpNN-imagick.
# After updating, run `phpNN -v`.
# If the following warning appears, revbump php-imagick.
# PHP Warning:  Version warning: Imagick was compiled against
# Image Magick version XXXX but version YYYY is loaded.
# Imagick will run but may behave surprisingly in Unknown on line 0.

name                ImageMagick7
github.setup        ImageMagick ImageMagick 7.1.2-15
github.tarball_from archive
revision            1

checksums           rmd160  c6b0f7baf7340e95a431148af0f186611275fce7 \
                    sha256  bf646e7fffdf50b7d886eec6bbe51c3ced1c4d68fbabfcc534e014575359fe7f \
                    size    15745265

categories          graphics devel
maintainers         {@Dave-Allured noaa.gov:dave.allured} \
                    openmaintainer
license             Apache-2
use_parallel_build  yes

description         Tools and libraries to manipulate images in many formats

long_description    For the ImageMagick-6 legacy version, please see \
                    port https://ports.macports.org/port/ImageMagick. \
                    \
                    ImageMagick is a robust collection of tools and \
                    libraries to create, edit and compose bitmap images \
                    in a wide variety of formats. You can crop, resize, \
                    rotate, sharpen, color reduce or add effects or text \
                    or straight or curved lines to an image or image \
                    sequence and save your completed work in the same or \
                    differing image format. You can even create images \
                    from scratch. Image processing operations are \
                    available from the command line as well as through \
                    C, Ch, C++, Java, Perl, PHP, Python, Ruby and Tcl/Tk \
                    programming interfaces. Over 90 image formats are \
                    supported, including GIF, JPEG, JPEG 2000, PNG, PDF, \
                    PhotoCD and TIFF.

homepage            https://imagemagick.org

depends_lib         port:bzip2 \
                    port:djvulibre \
                    port:xz \
                    port:jbigkit \
                    path:include/turbojpeg.h:libjpeg-turbo \
                    port:lcms2 \
                    port:libjxl \
                    port:libpng \
                    port:libraw \
                    port:tiff \
                    port:webp \
                    port:zlib \
                    port:fftw-3 \
                    port:freetype \
                    port:fontconfig \
                    port:ghostscript \
                    port:libiconv \
                    port:libtool \
                    port:openjpeg \
                    port:openexr \
                    port:expat \
                    port:libxml2 \
                    port:libheif

# Magick-config etc. use pkg-config
depends_lib-append  path:bin/pkg-config:pkgconfig

depends_run         port:urw-fonts

# error: wrong number of arguments specified for 'deprecated' attribute
compiler.blacklist-append \
                    {*gcc-[34].*}

configure.ccache    no

configure.pre_args  --prefix=${prefix}/lib/ImageMagick7
configure.args      --mandir=${prefix}/lib/ImageMagick7/share/man

configure.args-append \
                    --enable-shared \
                    --enable-static \
                    --disable-silent-rules \
                    --with-frozenpaths \
                    --with-openexr \
                    --disable-hdri \
                    --with-dps \
                    --with-bzlib \
                    --with-djvu \
                    --with-fftw \
                    --with-fontconfig \
                    --with-gslib \
                    --with-jbig \
                    --with-jpeg \
                    --with-lcms \
                    --with-openjp2 \
                    --with-png \
                    --with-tiff \
                    --with-webp \
                    --with-zlib \
                    --with-modules \
                    --with-xml \
                    --with-heic \
                    --without-gcc-arch \
                    --without-perl \
                    --without-fpx \
                    --without-wmf \
                    --without-gvc \
                    --without-rsvg \
                    --without-lqr \
                    --without-pango \
                    --without-raqm \
                    --without-x \
                    --without-zip \
                    --without-zstd \
                    --with-gs-font-dir=${prefix}/share/fonts/urw-fonts \
                    --disable-openmp

if {${os.platform} eq "darwin" && ${os.major} < 11} {
    configure.args-append   --disable-opencl
} else {
    configure.args-append   --enable-opencl
    # On case-insensitive filesystems, ImageMagick finds cryptlib's libcl and
    # tries to use it as if it were Apple's OpenCL, which fails; see #23354.
    if {[file exists ${prefix}/lib/libCL.dylib]} {
        conflicts_build         cryptlib
    }
}

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

test.run            yes
test.target         check
test.env            DYLD_LIBRARY_PATH=${worksrcpath}/magick/.libs

# ImageMagick uses .la files at runtime to find its coder modules.
destroot.delete_la_files    no

variant graphviz description {Support Graphviz} {
    depends_lib-append      path:bin/dot:graphviz
    configure.args-replace  --without-gvc --with-gvc
}

variant lqr description {Support Liquid Rescale (experimental)} {
    depends_lib-append      port:liblqr
    configure.args-replace  --without-lqr --with-lqr
}

variant pango description {Support Pango} {
    depends_lib-append      path:lib/pkgconfig/pango.pc:pango
    configure.args-replace  --without-pango --with-pango
}

variant rsvg description {Support SVG using librsvg} {
    depends_lib-append      path:lib/pkgconfig/librsvg-2.0.pc:librsvg
    configure.args-replace  --without-rsvg --with-rsvg
}

variant wmf description {Support the Windows Metafile Format} {
    depends_lib-append      port:libwmf
    configure.args-replace  --without-wmf --with-wmf
}

variant x11 {
    depends_lib-append      port:xorg-libX11 \
                            port:xorg-libXext \
                            port:xorg-libXt
    configure.args-replace  --without-x --with-x
}

default_variants    +x11

notes-append {
To use the ImageMagick7 command-line interface, add\
${prefix}/lib/ImageMagick7/bin to your $PATH,\
in front of the normal ${prefix}; or else use full paths.

To compile and link with ImageMagick7, add\
-I${prefix}/lib/ImageMagick7/include and\
-L${prefix}/lib/ImageMagick7/lib to your compile command.
}
