# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 PYTHON_COMPAT=( python3_{11..12} ) inherit cmake-multilib flag-o-matic python-single-r1 DESCRIPTION="A microbenchmark support library" HOMEPAGE="https://github.com/google/benchmark/" SRC_URI="https://github.com/google/benchmark/archive/v${PV}.tar.gz -> ${P}.tar.gz" LICENSE="Apache-2.0" SLOT="0/$(ver_cut 1)" KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86" IUSE="doc debug libpfm test +tools" RESTRICT="!test? ( test )" REQUIRED_USE="tools? ( ${PYTHON_REQUIRED_USE} )" DEPEND=" libpfm? ( dev-libs/libpfm:= ) " RDEPEND=" ${DEPEND} tools? ( $(python_gen_cond_dep ' dev-python/numpy[${PYTHON_USEDEP}] >=dev-python/scipy-1.10.0[${PYTHON_USEDEP}] ') ${PYTHON_DEPS} ) " BDEPEND=" doc? ( app-text/doxygen ) test? ( dev-cpp/gtest[${MULTILIB_USEDEP}] ) " PATCHES=( "${FILESDIR}/${PN}-1.9.0-fix-documentation-installation.patch" "${FILESDIR}/${P}-clock-detection-portability.patch" ) pkg_setup() { use tools && python-single-r1_pkg_setup } multilib_src_configure() { # bug #943629 use debug || append-cppflags -DNDEBUG local mycmakeargs=( -DBENCHMARK_ENABLE_DOXYGEN="$(usex doc)" -DBENCHMARK_ENABLE_GTEST_TESTS="$(usex test)" # Users should control this via *FLAGS -DBENCHMARK_ENABLE_LTO=OFF -DBENCHMARK_ENABLE_LIBPFM="$(multilib_native_usex libpfm)" -DBENCHMARK_ENABLE_TESTING="$(usex test)" -DBENCHMARK_ENABLE_WERROR=OFF -DBENCHMARK_INSTALL_DOCS="$(usex doc)" -DBENCHMARK_USE_BUNDLED_GTEST=OFF # This is determined by profile. -DBENCHMARK_USE_LIBCXX=OFF ) cmake_src_configure } multilib_src_test() { CMAKE_SKIP_TESTS=( # CMake already warns on these being brittle w/ diff # compiler versions. Could do with investigation if bored # but not critical. See bug #941538. run_donotoptimize_assembly_test_CHECK run_state_assembly_test_CHECK run_clobber_memory_assembly_test_CHECK ) cmake_src_test } multilib_src_install_all() { dodoc CONTRIBUTING.md dodoc CONTRIBUTORS if use tools; then python_domodule tools/gbench python_doscript tools/compare.py python_doscript tools/strip_asm.py fi }