# -*- 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           muniversal 1.0
PortGroup           compiler_blacklist_versions 1.0
PortGroup           meson 1.0
PortGroup           legacysupport 1.0

name                gegl
version             0.4.26
revision            0
set branch          [join [lrange [split ${version} .] 0 1] .]
conflicts           gegl-devel
license             {GPL-3+ LGPL-3+}
categories          graphics
maintainers         {devans @dbevans} openmaintainer
platforms           darwin

description         GEGL is a graph based image processing framework.

long_description    GEGL is a graph based image processing framework offering image processing and \
                    compositing on large images. GEGL is suitable for projects ranging from small \
                    one-off projects to interactive applications.

homepage            http://gegl.org/
master_sites        gimp:${name}/${branch}/

use_xz              yes

checksums           rmd160  df57119d659c8a5dacae6fcf3783058d7dd10e3f \
                    sha256  0f371e2ed2b92162fefd3dde743e648ca08a6a1b2b05004867fbddc7e211e424 \
                    size    4942492

depends_build-append \
                    port:pkgconfig \
                    port:w3m \
                    port:python38

depends_lib         port:babl \
                    path:lib/pkgconfig/cairo.pc:cairo \
                    path:lib/pkgconfig/pango.pc:pango \
                    port:gdk-pixbuf2 \
                    port:jpeg \
                    port:luajit \
                    port:exiv2 \
                    port:gexiv2 \
                    port:gobject-introspection \
                    port:jasper \
                    port:json-glib \
                    port:lcms2 \
                    port:libraw \
                    port:librsvg \
                    path:lib/libavcodec.dylib:ffmpeg \
                    port:libsdl2 \
                    port:libspiro \
                    port:openexr \
                    port:poly2tri-c \
                    port:py38-gobject3 \
                    port:poppler \
                    port:SuiteSparse_UMFPACK \
                    port:webp

# proposed fix for 32 bit builds
# https://trac.macports.org/ticket/58524
patchfiles-append   patch-gegl-32bit-host-statistics.diff

# various upstream gir/vala fixes
patchfiles-append   patch-export_package-for-gir-generation.diff \
                    patch-explicit-vapi-deps.diff \
                    patch-vapi-metadata-dirs.diff

# no OpenCL until SnowLeopard
if {${os.major} < 10} {
    patchfiles-append  patch-gegl-opencl-fix-Leopard-and-less-only.diff
}

post-patch {
    # https://trac.macports.org/ticket/35148
    if {${os.major} < 10} {
        reinplace "s|OpenGL/CGLDevice.h|OpenGL/CGLTypes.h|" ${worksrcpath}/gegl/opencl/cl_gl.h
    }
}

# needs C++14 C11
compiler.cxx_standard 2014
compiler.c_standard   2011

# version 0.4.14+ requires apple clang 700.0.72 (Xcode 7.0.0) to build new parallelization code
# ../gegl/gegl-parallel.h:134:29: error: expected expression '[] (gint     i,'
compiler.blacklist-append  {clang < 700}

set python_framework        ${frameworks_dir}/Python.framework/Versions/3.8
configure.pkg_config_path   ${python_framework}/lib/pkgconfig

# disable vala extensions by default (currently broken)
# enable with +vala variant for testing
configure.args-append       -Dvapigen=disabled

# at present, luajit does not build on PowerPC
platform darwin powerpc {
    depends_lib-delete port:luajit
    configure.args-append -Dlua=false
}

# TODO
# Adding --build=whatever doesn't work with meson. How do we do this?
#platform darwin {
#    if {[variant_isset universal]} {
#        # In order to build universal on Leopard, you need MacPorts 2.1
#        set merger_configure_args(x86_64) --build=${build_arch}-apple-${os.platform}${os.version}
#        set merger_configure_cflags(ppc) -fno-altivec
#        set merger_configure_cxxflags(ppc) -fno-altivec
#    } elseif {${build_arch} eq "ppc"} {
#        configure.cflags-append -fno-altivec
#        configure.cxxflags-append -fno-altivec
#    } elseif {${build_arch} eq "x86_64"} {
#        configure.args-append --build=${build_arch}-apple-${os.platform}${os.version}
#    }
#}

# gobject-introspection uses g-ir-scanner, which uses $CC from env
if {[variant_isset universal]} {
    foreach arch ${configure.universal_archs} {
        lappend merger_build_env(${arch})  "CC=${configure.cc} -arch ${arch}"
        lappend merger_destroot_env(${arch})  "CC=${configure.cc} -arch ${arch}"
    }
} else {
    build.env-append       "CC=${configure.cc} ${configure.cc_archflags}"
    destroot.env-append    "CC=${configure.cc} ${configure.cc_archflags}"
}

variant gtk_docs description {Build API docs using gtk-doc} {
    depends_build-append    port:gtk-doc
    configure.args-append -Ddocs=true
}

variant vala description {Enable build of vala extensions} {
    depends_lib-append port:vala
    configure.args-delete -Dvapigen=disabled
}

variant workshop description {Enable build of workshop operations} {
    depends_lib-append port:lensfun
    configure.args-append -Dworkshop=true
}

#
# the following dummy variants are used
# to identify this port's binary dependencies
# inherited from libsdl and librsvg
#

variant x11 conflicts quartz {}
variant quartz conflicts x11 {}

if {![variant_isset quartz]} {
    default_variants +x11
}

livecheck.type      regex
livecheck.url       https://download.gimp.org/pub/${name}/${branch}/
livecheck.regex     "${name}-(\\d+(?:\\.\\d+)*)"
