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

name                        soci
version                     4.0.3
revision                    0
license                     Boost-1
categories                  databases devel
platforms                   darwin
maintainers                 rmh.de:g.lorenz openmaintainer

description                 SOCI - The C++ Database Access Library

long_description            SOCI is a database access library for C++ that makes the illusion of \
                            embedding SQL queries in the regular C++ code, staying entirely within \
                            the Standard C++. The idea is to provide C++ programmers a way to \
                            access SQL databases in the most natural and intuitive way. If you \
                            find existing libraries too difficult for your needs or just \
                            distracting, SOCI can be a good alternative.

homepage                    https://soci.sourceforge.net/
master_sites                sourceforge:project/soci/soci/soci-${version}

checksums                   rmd160  0de965ed6202aa7b053e5c8f5fbea445767459cb \
                            sha256  615e5f7e4b52007f3a3b4050a99aadf6346b56b5098eb08b3a650836083c6a33 \
                            size    1213452

# https://github.com/SOCI/soci/issues/984
compiler.blacklist-append   {clang > 1400} {macports-clang-1[5-9]}
configure.args-append       -DWITH_BOOST=OFF \
                            -DWITH_MYSQL=OFF \
                            -DWITH_ODBC=OFF \
                            -DWITH_ORACLE=OFF \
                            -DWITH_POSTGRESQL=OFF \
                            -DWITH_SQLITE3=OFF

default_variants            +boost

variant boost description {Build with Boost integration} {
    PortGroup                   boost 1.0

    configure.args-delete       -DWITH_BOOST=OFF
}

variant mysql5 description {Build MySQL 5 backend} {
    depends_lib-append          port:mysql5
    configure.args-delete       -DWITH_MYSQL=OFF
    configure.args-append       -DMYSQL_INCLUDE_DIR=${prefix}/include/mysql5/mysql
    configure.args-append       -DMYSQL_LIBRARY=${prefix}/lib/mysql5/mysql/libmysqlclient_r.dylib
}

variant odbc description {Build ODBC backend} {
    depends_lib-append          port:libiodbc
    configure.args-delete       -DWITH_ODBC=OFF
}

variant oracle description {Build Oracle backend} {
    depends_lib-append          port:oracle-instantclient
    configure.args-delete       -DWITH_ORACLE=OFF
    configure.env-append        ORACLE_HOME=${prefix}/lib/oracle
}

variant postgresql16 \
        description {Build PostgreSQL 16 backend, using MacPorts postgresql16 port} {
    depends_lib-append           port:postgresql16
    configure.args-append       -DPG_CONFIG=${prefix}/lib/postgresql16/bin/pg_config
    configure.args-append       -DPOSTGRESQL_INCLUDE_DIR=${prefix}/include/postgresql16
    configure.args-append       -DPOSTGRESQL_LIBRARY=${prefix}/lib/postgresql16/libpq.dylib
    configure.args-delete       -DWITH_POSTGRESQL=OFF
}

variant sqlite3 description {Build SQLite 3 backend, using MacPorts sqlite3 port} {
    depends_lib-append          port:sqlite3
    configure.args-delete       -DWITH_SQLITE3=OFF
}

livecheck.regex             /${name}-(\[0-9.\]+)${extract.suffix}
