dev-libs/caf - 1.1.0 (vklimovs)

Search

Package Information

Description:
The C++ Actor Framework (CAF)
Homepage:
https://www.actor-framework.org/
License:
BSD

Ebuild Details

Version EAPI Keywords Slot
1.1.0 8 ~amd64 ~x86 0/$(ver_cut 1-3)
View Raw Ebuild
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit cmake-multilib flag-o-matic

DESCRIPTION="The C++ Actor Framework (CAF)"
HOMEPAGE="https://www.actor-framework.org/"
SRC_URI="https://github.com/actor-framework/actor-framework/archive/${PV}.tar.gz
	-> ${P}.tar.gz"
S="${WORKDIR}/actor-framework-${PV}"

LICENSE="BSD"
SLOT="0/$(ver_cut 1-3)"
KEYWORDS="~amd64 ~x86"
IUSE="debug doc examples +openssl static-libs test"
RESTRICT="!test? ( test )"

# libcaf_net links OpenSSL::SSL and OpenSSL::Crypto as PUBLIC deps; it is
# always built, so OpenSSL is an unconditional dependency.  The openssl USE
# flag additionally enables the legacy libcaf_openssl TLS module for libcaf_io.
RDEPEND="
	dev-libs/openssl:0=[${MULTILIB_USEDEP},static-libs?]
	examples? (
		net-misc/curl
		dev-libs/protobuf:=
		dev-qt/qtbase:6[gui,widgets] )"

DEPEND="${RDEPEND}"

BDEPEND="doc? (
	app-text/doxygen[dot]
	dev-python/sphinx
	dev-python/sphinx-rtd-theme )"

src_prepare() {
	# conf.py references git.Repo but doesn't import gitpython; remove the dead
	# line so has_release_date() runs instead — it reads CHANGELOG.md and
	# returns true for any release tarball, giving release = version naturally.
	sed -i '/repo = git\.Repo/d' "${S}"/manual/conf.py

	# CAFTargets.cmake exposes OpenSSL::SSL/OpenSSL::Crypto as
	# INTERFACE_LINK_LIBRARIES but CAFConfig.cmake.in never calls
	# find_dependency(OpenSSL), breaking downstream cmake consumers.
	sed -i '/find_dependency(Threads)/a find_dependency(OpenSSL)' \
		"${S}"/cmake/CAFConfig.cmake.in

	cmake_src_prepare
}

multilib_src_configure() {
	# GCC 15 false-positive: bits/move.h triggers -Wuninitialized via CAF's
	# server_factory_base; suppress until upstream resolves it.
	append-cxxflags -Wno-uninitialized

	local mycmakeargs=(
		-DBUILD_SHARED_LIBS="$(usex static-libs no yes)"
		-DCAF_CXX_VERSION=20
		-DCAF_ENABLE_EXCEPTIONS=no
		-DCAF_ENABLE_OPENSSL_MODULE="$(usex openssl)"
		-DCAF_ENABLE_RUNTIME_CHECKS="$(usex debug)"
		-DCAF_LOG_LEVEL="$(usex debug DEBUG QUIET)"
		-DCAF_USE_STD_FORMAT=yes
	)

	if multilib_is_native_abi; then
		mycmakeargs+=(
			-DCAF_ENABLE_CURL_EXAMPLES="$(usex examples)"
			-DCAF_ENABLE_EXAMPLES="$(usex examples)"
			-DCAF_ENABLE_PROTOBUF_EXAMPLES="$(usex examples)"
			-DCAF_ENABLE_QT6_EXAMPLES="$(usex examples)"
			-DCAF_ENABLE_TESTING="$(usex test)"
		)
	else
		mycmakeargs+=(
			-DCAF_ENABLE_CURL_EXAMPLES=no
			-DCAF_ENABLE_EXAMPLES=no
			-DCAF_ENABLE_PROTOBUF_EXAMPLES=no
			-DCAF_ENABLE_QT6_EXAMPLES=no
			-DCAF_ENABLE_TESTING=no
		)
	fi

	cmake_src_configure
}

multilib_src_compile() {
	cmake_src_compile

	if multilib_is_native_abi && use doc; then
		# Doxyfile is generated by cmake into BUILD_DIR, not present in S.
		doxygen "${BUILD_DIR}"/Doxyfile || die "doxygen failed"
		sphinx-build "${S}"/manual "${S}"/manual/html || die "sphinx failed"
	fi
}

multilib_src_test() {
	# cmake sets BUILD_RPATH on test executables pointing to their build-tree
	# library locations; run tests for the native ABI only.
	multilib_is_native_abi && cmake_src_test
}

multilib_src_install() {
	cmake_src_install

	if multilib_is_native_abi && use doc; then
		docinto api
		dodoc -r "${BUILD_DIR}"/html/*
		docinto manual
		dodoc -r "${S}"/manual/html/*
	fi
}

USE Flags

doc
openssl
Default: Enabled (+)

Dependencies

DEPEND

	dev-libs/openssl:0=[${MULTILIB_USEDEP},static-libs?]
	examples? (
		net-misc/curl
		dev-libs/protobuf:=
		dev-qt/qtbase:6[gui,widgets] )

RDEPEND

	dev-libs/openssl:0=[${MULTILIB_USEDEP},static-libs?]
	examples? (
		net-misc/curl
		dev-libs/protobuf:=
		dev-qt/qtbase:6[gui,widgets] )

BDEPEND

doc? (
	app-text/doxygen[dot]
	dev-python/sphinx
	dev-python/sphinx-rtd-theme )

Manifest for 1.1.0

Type File Size Source URLs
DIST caf-1.1.0.tar.gz 3393531 bytes https://github.com/actor-framework/actor-framework/archive/1.1.0.tar.gz