# -*- 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

name                apr-util
version             1.6.5
revision            0
categories          devel
maintainers         {geeklair.net:dluke @danielluke}
description         utilities built with the apache group's portability library
license             Apache-2

long_description    apr-util is a library of useful utilities built with \
                    and intended to be used with the Apache Portable Runtime.

homepage            https://apr.apache.org/
master_sites        apache:apr
use_bzip2           yes
checksums           sha1    99d7d1c42cc7eff38fc8a5958faa761be11e8707 \
                    rmd160  9f3b12133f954b49f440999db238c5c3bd39172a \
                    sha256  96de1dd6f6a0476d2d2e7964926d8c1ddc3bb0e210e1b1812d3ba5a454a392e2 \
                    size    442045

depends_lib         port:apr \
                    port:expat \
                    port:libiconv

# https://trac.macports.org/wiki/UsingTheRightCompiler
patchfiles-append   patch-using_the_right_compiler.diff \
                    patch-apr_dbd_mysql.c.diff

# regen configure script for implicit int fix
use_autoconf        yes

use_parallel_build  yes
configure.ccache    no
configure.args      --with-apr=${prefix}/bin/apr-1-config \
                    --with-expat=${prefix} \
                    --with-iconv=${prefix} \
                    --with-berkeley-db=${prefix}/include:${prefix}/lib/db48 \
                    --without-mysql --without-pgsql \
                    --without-sqlite2 --without-sqlite3 \
                    --without-berkeley-db \
                    --without-odbc

test.run            yes
test.target         check
test.env            DYLD_LIBRARY_PATH=${worksrcpath}/.libs
pre-test    {
    use_parallel_build  no
}


variant openldap    description {Build with OpenLDAP support} {
                depends_lib-append path:lib/libldap.dylib:openldap
                configure.args-append --with-ldap \
                    --with-ldap-include=${prefix}/include \
                    --with-ldap-lib=${prefix}/lib
            }


pre-build {
    if {[variant_exists universal] && [variant_isset universal]} {
        build.args  EXTRA_CFLAGS='${configure.universal_cflags}' \
                    EXTRA_LDFLAGS='${configure.universal_ldflags}'
    } else {
        build.args  EXTRA_CFLAGS='${configure.cc_archflags}' \
                    EXTRA_LDFLAGS='${configure.ld_archflags}'
    }
}

#
#   database support
#

set extralibs       ""
variant bdb description {Build with BerkeleyDB support} {
    depends_lib-append      port:db48
    configure.args-delete   --without-berkeley-db
    configure.args-append   --with-berkeley-db=${prefix}/include:${prefix}/lib/db48
    set extralibs           "-L${prefix}/lib/db48"
    pre-configure {
        reinplace "s|^Libs: |Libs: ${extralibs} |" $worksrcpath/apr-util.pc.in
    }
}

variant sqlite3 description {Build with sqlite3 support} {
    depends_lib-append          port:sqlite3
    configure.args-delete       --without-sqlite3
    configure.args-append       --with-sqlite3=${prefix}
}

set pg_vers {14 15 16 17 18}
set pg_names [lmap v $pg_vers {string cat postgresql ${v}}]
foreach v ${pg_vers} pg_name ${pg_names} {
    variant ${pg_name} \
            conflicts {*}[ldelete ${pg_names} ${pg_name}] \
            description "Use PostgreSQL ${v} libraries" "
        depends_lib-append      port:${pg_name}
        configure.args-replace  --without-pgsql
        configure.args-append   --with-pgsql=yes
    "
}

set mysql_vers {57 8 9}
set mysql_names [lmap v ${mysql_vers} {string cat mysql ${v}}]
set mariadb_vers {10.11 11.8 12.3}
set mariadb_names [lmap v ${mariadb_vers} {string cat mariadb [lindex [split ${v} .] 0]}]
set db_vers [list {*}${mysql_names} {*}${mariadb_names} ]

# remove Legacy variants after 2027-08-15
variant mysql51 requires mysql57 description "Legacy compatibility variant" {}
variant mysql55 requires mysql57 description "Legacy compatibility variant" {}
variant mysql56 requires mysql57 description "Legacy compatibility variant" {}
foreach v ${mysql_vers} mysql_name ${mysql_names} {
    variant ${mysql_name} \
            conflicts [ldelete ${db_vers} ${mysql_name}] \
            description "Use MySQL ${v} libraries" "
        depends_lib-append      port:${mysql_name}
        configure.args-replace --without-mysql --with-mysql
        configure.env-append MYSQL_CONFIG=${prefix}/lib/${mysql_name}/bin/mysql_config

    "
}

# remove Legacy variant after 2027-08-15
variant mariadb requires mariadb10 description "Legacy compatibility variant" {}
foreach v ${mariadb_vers} mariadb_name ${mariadb_names} {
    variant ${mariadb_name} \
            conflicts [ldelete ${db_vers} ${mariadb_name}] \
            description "Use MariaDB ${v} libraries" "
        depends_lib-append      port:mariadb-${v}
        configure.args-replace --without-mysql --with-mysql
        configure.env-append MYSQL_CONFIG=${prefix}/lib/mariadb-${v}/bin/mysql_config

    "
}

default_variants +bdb +sqlite3

livecheck.type  regex
livecheck.url   https://apr.apache.org/
livecheck.regex {APR-util (\d+(?:\.\d+)*), released}
