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

EAPI=8

PYTHON_COMPAT=( python3_{10..13} )

inherit cmake python-r1

DESCRIPTION="Robot Raconteur C++ library with Python bindings"
HOMEPAGE="https://github.com/robotraconteur/robotraconteur"
SRC_URI="https://github.com/robotraconteur/robotraconteur/releases/download/v${PV}/RobotRaconteur-${PV}-Source.tar.gz"

S="${WORKDIR}/RobotRaconteur-${PV}-Source"

LICENSE="Apache-2.0"
SLOT="1/${PV}"
KEYWORDS="~amd64 ~arm ~arm64 ~x86"
IUSE="python"

DEPEND="dev-libs/boost
    dev-libs/openssl
    dev-libs/libusb
    sys-apps/dbus
    net-wireless/bluez
    dev-build/cmake
    python? ( dev-python/numpy[${PYTHON_USEDEP}]
              dev-python/setuptools[${PYTHON_USEDEP}]
              dev-python/pip[${PYTHON_USEDEP}] )
"
RDEPEND="
    ${DEPEND}
    python? (
		${PYTHON_DEPS}
    )
"

REQUIRED_USE="
    python? ( ${PYTHON_REQUIRED_USE} )
"

python_configure() {
    local mycmakeargs=(
        -DCMAKE_SKIP_RPATH=ON
        -DBUILD_GEN=ON
        -DBUILD_TESTING=OFF
        -DBUILD_DOCUMENTATION=OFF
        -DBUILD_PYTHON3=ON
        -DINSTALL_PYTHON3_PIP=ON
        -DINSTALL_PYTHON3_PIP_EXTRA_ARGS="--compile --use-pep517 --no-build-isolation --no-deps --root-user-action=ignore"
        -DROBOTRACONTEURCORE_SOVERSION_MAJOR_ONLY=ON
    )
    cmake_src_configure
}

src_configure() {
    if use python; then
        python_foreach_impl python_configure
    else
        local mycmakeargs=(
            -DCMAKE_SKIP_RPATH=ON
            -DBUILD_GEN=ON
            -DBUILD_TESTING=OFF
            -DBUILD_DOCUMENTATION=OFF
            -DROBOTRACONTEURCORE_SOVERSION_MAJOR_ONLY=ON
        )
        cmake_src_configure
    fi
}

src_compile() {
    if use python; then
        python_foreach_impl cmake_src_compile
    else
        cmake_src_compile
    fi
}

python_install(){
    cmake_src_install
    python_optimize "${D}$(python_get_sitedir)/RobotRaconteur" || die "Failed to optimize Python files"
}

src_install() {
    if use python; then
        python_foreach_impl python_install
    else
        cmake_src_install
    fi
}