# -*- 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           active_variants 1.1
PortGroup           perl5 1.0
PortGroup           boost 1.0
PortGroup           yelp 1.0
PortGroup           app 1.0

name                glom
version             1.32.0
revision            15

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

description         Glom is an easy-to-use database designer and user interface.
long_description    ${description} This version supports GTK+ 3 and the libgda-5.0 API.
homepage            http://www.glom.org/

set branch          [join [lrange [split ${version} .] 0 1] .]
master_sites        gnome:sources/${name}/${branch}/
use_xz              yes

checksums           rmd160  02b748371658fe569ed463e175e0bdd7ed26a689 \
                    sha256  53bf207ebca82c563b9e67bce977459a17e7fd94e35c27c196986736da248df1 \
                    size    9030852

boost.version       1.78

set python_branch   3.12
set python_prefix   ${frameworks_dir}/Python.framework/Versions/${python_branch}
set python_version  [join [lrange [split ${python_branch} .] 0 1] ""]

depends_build-append \
                    port:pkgconfig \
                    port:autoconf \
                    port:automake \
                    port:libtool \
                    port:intltool \
                    port:itstool \
                    port:yelp-tools \
                    port:mm-common \
                    path:bin/dot:graphviz \
                    path:bin/doxygen:doxygen \
                    port:py${python_version}-sphinx \
                    port:perl${perl5.major}

depends_lib-append \
                    port:desktop-file-utils \
                    port:libarchive \
                    port:gtkmm3 \
                    port:libxml2 \
                    port:libxmlxx3 \
                    port:libxslt \
                    port:libgda5 \
                    port:libgdamm5 \
                    port:goocanvasmm2\
                    port:gtksourceviewmm3 \
                    port:py${python_version}-gobject3 \
                    port:libepc \
                    port:evince \
                    port:shared-mime-info

depends_run-append \
                    port:adwaita-icon-theme \
                    port:gnome-keyring

patchfiles-append   patch-configure.ac.diff
patchfiles-append   patch-export-regex.diff
patchfiles-append   patch-glom-libglom-connectionpool.cc.diff
patchfiles-append   patch-filechooserdialog-get_accessible.diff

# reconfigure using upstream autogen.sh for intltool 0.51 compatibility

configure.cmd       ./autogen.sh

configure.pkg_config_path \
                    ${python_prefix}/lib/pkgconfig ${prefix}/lib/pkgconfig
configure.python    ${prefix}/bin/python${python_branch}
configure.perl      ${perl5.bin}

configure.env       SPHINX_BUILD=${prefix}/bin/sphinx-build-${python_branch}

compiler.cxx_standard 2014
compiler.blacklist-append *gcc-3.* *gcc-4.* {clang < 700}

configure.args-append \
                    --with-boost=[boost::install_area] \
                    --with-boost-python=boost_python${python_version}-mt \
                    --disable-silent-rules \
                    --disable-update-mime-database \
                    --disable-documentation

universal_variant   no

require_active_variants \
                    [boost::depends_portname] python${python_version}

app.icon            ${worksrcpath}/data/icons/scalable/glom.svg
app.retina          yes

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

    # Note: MIME db update now handled automatically by shared-mime-info
}

proc mysql_setup {db_ver} {
    global prefix
    depends_lib-append \
                    port:mysql${db_ver}
    configure.args-append \
                    --with-mysql-utils=${prefix}/lib/mysql${db_ver}/bin
    require_active_variants \
                    libgda5 mysql${db_ver}
}

proc pgsql_setup {db_ver} {
    global prefix
    depends_lib-append \
                    port:postgresql${db_ver}
    configure.args-append \
                    --with-postgres-utils=${prefix}/lib/postgresql${db_ver}/bin
    require_active_variants \
                    libgda5 postgresql${db_ver}
}

variant mysql56 conflicts mysql57 description {support for MySQL 5.6.x} {
    mysql_setup 56
}

variant mysql57 conflicts mysql56 description {support for MySQL 5.7.x} {
    mysql_setup 57
}

if {![variant_isset mysql56] && \
    ![variant_isset mysql57] } {
    # mysql57 only builds on 10.9 and later
    if {${os.platform} eq "darwin" && ${os.major} < 13} {
        default_variants +mysql56
    } else {
        default_variants +mysql57
    }
}

variant postgresql12 conflicts postgresql13 postgresql14 postgresql15 postgresql16 \
        description {support for PostgreSQL 12.x} {
    pgsql_setup 12
}

variant postgresql13 conflicts postgresql12 postgresql14 postgresql15 postgresql16 \
        description {support for PostgreSQL 13.x} {
    pgsql_setup 13
}

variant postgresql14 conflicts postgresql12 postgresql13 postgresql15 postgresql16 \
        description {support for PostgreSQL 14.x} {
    pgsql_setup 14
}

variant postgresql15 conflicts postgresql12 postgresql13 postgresql14 postgresql16 \
        description {support for PostgreSQL 15.x} {
    pgsql_setup 15
}

variant postgresql16 conflicts postgresql12 postgresql13 postgresql14 postgresql15 \
        description {support for PostgreSQL 16.x} {
    pgsql_setup 16
}

if {![variant_isset postgresql12] && \
    ![variant_isset postgresql13] && \
    ![variant_isset postgresql14] && \
    ![variant_isset postgresql15] && \
    ![variant_isset postgresql16] } {
    default_variants +postgresql16
}

# Dummy variants, to ensure user's choice cascades to dependencies
variant quartz conflicts x11 {}
variant x11 conflicts quartz {}

if {![variant_isset quartz]} {
    default_variants +x11
}
if {![variant_isset x11]} {
    default_variants +quartz
}
if {![variant_isset quartz] && ![variant_isset x11]} {
    error "Either +x11 or +quartz is required"
}

# locale issues apparently only affect OS X 10.8 and earlier.
if {${os.major} < 12} {
    notes {
To work around known locale issues, set LANG=C when starting glom
    $ LANG=C glom
    }
}

livecheck.type      gnome
