# -*- 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           cmake 1.1
PortGroup           boost 1.0

name                inkscape-devel
conflicts           inkscape
set my_name         inkscape

set ver_num         1.3.2
set ver_date        2023-11-25
set ver_hash        091e20ef0f
set ver_gal_item    44615
version             ${ver_num}
revision            1
epoch               2

categories          graphics gnome
license             GPL-3+
maintainers         {mascguy @mascguy} openmaintainer

description         This is the current development pre-release version of Inkscape.
long_description    Inkscape is an multi-platform, Open-Source Vector Graphics Editor \
                    that uses SVG as its native file format. \
                    {*}${description}
homepage            https://inkscape.org/

master_sites        https://inkscape.org/gallery/item/${ver_gal_item}
worksrcdir          ${my_name}-${ver_num}_${ver_date}_${ver_hash}
distname            ${my_name}-${ver_num}
dist_subdir         ${my_name}
use_xz              yes

checksums           rmd160  74eccccef78c5a7887f8867646413d019fe7c037 \
                    sha256  dbd1844dc443fe5e10d3e9a887144e5fb7223852fff191cfb5ef7adeab0e086b \
                    size    44720944

cmake.generator     Ninja

set python_major    3
set python_minor    12
set python_version  ${python_major}${python_minor}

patchfiles-append   libxml2-2.12.0.patch
patchfiles-append   poppler-24.03.0.patch

post-patch {
    reinplace "s|\"python-interpreter\", *\{\"python3\"|\"python-interpreter\", \{\"python${python_major}.${python_minor}\"|g" \
        ${worksrcpath}/src/extension/implementation/script.cpp
    reinplace "s|COMMAND python3 |COMMAND ${prefix}/bin/python${python_major}.${python_minor} |g" \
        ${worksrcpath}/share/filters/CMakeLists.txt \
        ${worksrcpath}/share/markers/CMakeLists.txt \
        ${worksrcpath}/share/paint/CMakeLists.txt \
        ${worksrcpath}/share/palettes/CMakeLists.txt \
        ${worksrcpath}/share/symbols/CMakeLists.txt \
        ${worksrcpath}/share/templates/CMakeLists.txt
    reinplace {s|^#include "Object\.h"|#include <poppler/Object.h>|} \
        ${worksrcpath}/src/extension/internal/pdfinput/pdf-parser.cpp \
        ${worksrcpath}/src/extension/internal/pdfinput/pdf-parser.h
    reinplace "s|\"\$\{CMAKE_INSTALL_LIBDIR\}/inkscape\"|\$\{CMAKE_INSTALL_LIBDIR\}|" \
        ${worksrcpath}/src/CMakeLists.txt
}

# Blacklist older Clang versions, for compilation errors:
#   src/display/cairo-utils.cpp:
#     No matching function for call to 'isnan'
#   src/ui/dialog/objects.cpp:
#     No member named 'extract'
# See: https://trac.macports.org/ticket/65002
compiler.blacklist-append \
                    {clang < 1001}

# Blacklist macports-clang-15+ to prevent
#  error: no template named 'unary_function' in namespace 'std'
compiler.blacklist-append \
                    {macports-clang-1[5-9]}

# Need no-invalid-constexpr, due to lib2geom. Remove if/when fixed in future
if { [string match *clang* ${configure.compiler}] } {
    configure.cxxflags-append \
                    -Wno-invalid-constexpr \
                    -Wno-error=unknown-warning-option \
                    -Wno-unknown-warning-option
}

# this port only uses boost headers during build
# and does not link with any boost libraries
# no need to rebuild due to boost library ABI changes
boost.depends_type  build
depends_build-append \
                    port:gettext \
                    port:gtest \
                    path:bin/pkg-config:pkgconfig

depends_lib-append \
                    port:boehmgc \
                    path:lib/pkgconfig/cairo.pc:cairo \
                    port:desktop-file-utils \
                    port:double-conversion \
                    port:fontconfig \
                    path:lib/pkgconfig/gdk-pixbuf-2.0.pc:gdk-pixbuf2 \
                    port:gdl3 \
                    port:gettext-runtime \
                    path:lib/pkgconfig/glibmm-2.68.pc:glibmm \
                    port:gsl \
                    port:gspell \
                    port:gtkmm3 \
                    port:gtksourceview4 \
                    path:lib/pkgconfig/harfbuzz.pc:harfbuzz \
                    port:ImageMagick \
                    port:lcms2 \
                    port:lib2geom \
                    port:libcdr-0.1 \
                    port:libepoxy \
                    path:include/turbojpeg.h:libjpeg-turbo \
                    port:libpng \
                    port:libsigcxx2 \
                    path:lib/pkgconfig/libsoup-2.4.pc:libsoup \
                    port:libvisio-0.1 \
                    port:libwpg-0.3 \
                    port:libxml2 \
                    port:libxslt \
                    path:lib/pkgconfig/pango.pc:pango \
                    path:lib/pkgconfig/poppler.pc:poppler \
                    port:potrace \
                    port:python${python_version} \
                    port:zlib

depends_run-append \
                    port:adwaita-icon-theme \
                    port:py${python_version}-cssselect \
                    port:py${python_version}-lxml \
                    port:py${python_version}-numpy \
                    port:py${python_version}-scour

compiler.cxx_standard \
                    2017

configure.args-append \
                    -DBUILD_TESTING=OFF \
                    -DENABLE_LCMS=ON \
                    -DENABLE_POPPLER=ON \
                    -DENABLE_POPPLER_CAIRO=OFF \
                    -DWITH_ASAN=OFF \
                    -DWITH_GNU_READLINE=OFF \
                    -DWITH_GRAPHICS_MAGICK=OFF \
                    -DWITH_GSOURCEVIEW=ON \
                    -DWITH_GSPELL=ON \
                    -DWITH_IMAGE_MAGICK=ON \
                    -DWITH_INTERNAL_CAIRO=OFF \
                    -DWITH_INTERNAL_2GEOM=OFF \
                    -DWITH_JEMALLOC=OFF \
                    -DWITH_LIBCDR=ON \
                    -DWITH_LIBVISIO=ON \
                    -DWITH_LIBWPG=ON \
                    -DWITH_MANPAGE_COMPRESSION=OFF \
                    -DWITH_NLS=ON \
                    -DWITH_OPENMP=OFF \
                    -DWITH_PROFILING=OFF \
                    -DWITH_X11=OFF

# The following dummy variants are used to identify this port's binary dependencies,
# based on which variant of gtkmm is used for the build.
variant x11 conflicts quartz {}
variant quartz conflicts x11 {}

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

variant tests description {Enable tests} {
    configure.args-replace \
                    -DBUILD_TESTING=OFF \
                    -DBUILD_TESTING=ON

    test.run        yes
}

post-activate {
    system "${prefix}/bin/gtk-update-icon-cache -f -t ${prefix}/share/icons/hicolor"
    system "${prefix}/bin/update-desktop-database ${prefix}/share/applications"
}

notes {
    Install port 'inkscape-app', to create a macOS app launcher.
}

livecheck.type      regex
livecheck.url       https://inkscape.org/release/
livecheck.regex     ">Inkscape (\\d+(?:\\.\\d+)*)<"
