# -*- 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           gobject_introspection 1.0
PortGroup           active_variants 1.1

name                libgda5
set gname           libgda
version             5.2.10
revision            6
categories          databases gnome
license             {GPL-2 LGPL}
maintainers         {devans @dbevans} {mascguy @mascguy} openmaintainer

description         GDA provides uniform access to different kinds of data sources.
long_description    GNU Data Access (GDA) is an attempt to provide \
                    uniform access to different kinds of data sources \
                    (databases, information servers, mail spools, etc).
homepage            https://www.gnome-db.org/

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

checksums           rmd160  852ab1479f58585ffb2be19b1e5324443c3cfd08 \
                    sha256  6f6cdf7b8053f553b907e0c88a6064eb48cf2751852eb24323dcf027792334c8 \
                    size    12625140

set port_ver_major  [lindex [split ${version} .] 0]

depends_build-append \
                    port:pkgconfig \
                    port:gettext \
                    port:gtk-doc \
                    port:intltool \
                    port:itstool \
                    port:yelp-tools \
                    port:gnome-common \
                    port:autoconf \
                    port:automake \
                    port:libtool

depends_lib-append \
                    port:desktop-file-utils \
                    port:gettext-runtime \
                    port:readline \
                    path:lib/pkgconfig/gtk+-3.0.pc:gtk3 \
                    port:goocanvas2 \
                    port:iso-codes \
                    path:lib/libcrypto.dylib:openssl \
                    port:libsecret \
                    path:lib/pkgconfig/libsoup-2.4.pc:libsoup \
                    port:libgcrypt \
                    port:libxml2 \
                    port:libxslt \
                    port:ncurses

depends_run-append \
                    port:adwaita-icon-theme

gobject_introspection yes

patchfiles-append \
                    patch-configure.ac.diff \
                    patch-bdb.diff \
                    patch-use-embedded-sqlite3.diff \
                    cs.po.patch

# reconfigure using upstream autogen.sh for intltool 0.51 compatibility

post-patch {
    xinstall -m 755 ${filespath}/autogen.sh ${worksrcpath}
}

configure.cmd       ./autogen.sh

# use embedded libsqlite3 rather than the system version
# to avoid dlopen 'Can't find file libsqlite3.so' errors
configure.args-append \
                    --enable-system-sqlite=no \
                    --enable-gtk-doc=yes \
                    --enable-warnings=max \
                    --disable-silent-rules \
                    --with-graphviz=no \
                    --with-gtksourceview=no \
                    --with-ldap=no \
                    --with-bdb=no \
                    --with-mdb=no \
                    --with-mysql=no \
                    --with-postgres=no \
                    --with-oracle=no \
                    --with-firebird=no \
                    --with-java=no \
                    --with-jni=no

variant vala description {Build vala bindings and extensions} {
    depends_lib-append \
                    path:bin/vala:vala \
                    port:libgee

    configure.args-append \
                    --enable-vala=yes
}

default_variants    +vala
        
proc bdb_setup {db_ver} {
    global prefix
    depends_lib-append  port:db${db_ver}
    configure.cppflags-append "-I${prefix}/include/db${db_ver}"
    configure.args-delete   --with-bdb=no
    configure.args-append   --with-bdb=${prefix} \
                            --with-bdb-libdir-name=lib/db${db_ver}
}

proc mysql_setup {db_ver} {
    global prefix
    depends_lib-append      port:mysql${db_ver}
    configure.env-append    \
        MYSQL_CONFIG=${prefix}/lib/mysql${db_ver}/bin/mysql_config
    configure.args-delete   --with-mysql=no
    configure.args-append   --with-mysql=${prefix}/lib/mysql${db_ver}
    configure.cppflags-append   "-I${prefix}/include/mysql${db_ver}/mysql"
}

proc pgsql_setup {db_ver} {
    global prefix
    configure.cppflags-append   "-I${prefix}/include/postgresql${db_ver}"
    depends_lib-append  port:postgresql${db_ver}
    configure.args-delete   --with-postgres=no
    configure.args-append   --with-postgres=${prefix}/lib/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
}

variant db53 conflicts db60 db62 \
        description {support for BerkeleyDB 5.3.x} {
    bdb_setup 53
}

variant db60 conflicts db53 db62 \
        description {support for BerkeleyDB 6.0.x} {
    bdb_setup 60
}

variant db62 conflicts db53 db60 \
        description {support for BerkeleyDB 6.2.x} {
    bdb_setup 62
}

if {![variant_isset db53] && \
    ![variant_isset db60] && \
    ![variant_isset db62] } {
    default_variants +db62
}

variant quartz {}

if {[variant_isset quartz]} {
    require_active_variants gtk3 quartz
} else {
    require_active_variants gtk3 x11
    depends_run-append      port:yelp
}

notes "
To view the Gda Browser Help manual, use

% yelp help:gda-browser
"

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

livecheck.type          gnome
livecheck.name          ${gname}
livecheck.regex         "LATEST-IS-(${port_ver_major}\\.\[02468\](?:\\.\\d+)*)"
