# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

CMAKE_MAKEFILE_GENERATOR=emake
inherit cmake

URI_DIR="Connector-C++"
DESCRIPTION="MySQL database connector for C++ (mimics JDBC 4.0 API)"
HOMEPAGE="https://dev.mysql.com/downloads/connector/cpp/"
SRC_URI="https://dev.mysql.com/get/Downloads/${URI_DIR}/${P}-src.tar.gz"
S="${WORKDIR}/${P}-src"

LICENSE="Artistic GPL-2"
SLOT="0"
# -ppc, -sparc for bug #711940
KEYWORDS="amd64 arm ~arm64 -ppc ppc64 -sparc x86"
IUSE="+legacy"

RDEPEND="
    app-arch/lz4:=
    app-arch/zstd:=
    dev-libs/openssl:=
    >=dev-libs/protobuf-3.19.6:=
    sys-libs/zlib
    legacy? (
        dev-libs/boost:=
        >=dev-db/mysql-connector-c-8.0.27:=
    )
"
DEPEND="${RDEPEND}"

PATCHES=(
    "${FILESDIR}"/${P}-build-info.patch
    "${FILESDIR}"/${PN}-8.0.27-mysqlclient_r.patch
)

src_prepare() {
    # patching backported-logger (if protobuf >=23)
    if [ `printf "%.0f" $(protoc --version | awk '{print $2}' | bc | sed 's/[.]/,/')` -ge 23 ]; then
        eapply "${FILESDIR}"/${P}-backport-logging.patch
        sed -i "s/zero_copy_stream.h>/zero_copy_stream.h>\n#include\ \"..\/..\/..\/..\/include\/logging\/logging.h\"/g" "${S}"/cdk/protocol/mysqlx/protocol.cc || die
    fi
    sed -i 's/LibraryLoader : public util::nocopy/LibraryLoader/g' "${S}"/jdbc/driver/nativeapi/library_loader.h || die
    cmake_src_prepare
}

src_configure() {
    local mycmakeargs=(
        -DBUNDLE_DEPENDENCIES=OFF
        -DWITH_PROTOBUF=system
        -DWITH_LZ4=system
        -DWITH_SSL=system
        -DWITH_ZLIB=system
        -DWITH_ZSTD=system
        -DWITH_JDBC=$(usex legacy)
    )

    if use legacy ; then
        mycmakeargs+=(
            -DWITH_BOOST="${ESYSROOT}"/usr
            -DMYSQLCLIENT_STATIC_BINDING=0
            -DMYSQLCLIENT_STATIC_LINKING=0
        )
    fi

    cmake_src_configure
}