# Copyright 2025 Arniiiii lg3dx6fd@gmail.com # Distributed under the terms of the GNU General Public License v2 EAPI=8 PYTHON_COMPAT=( python3_{10..13} ) inherit cmake-multilib python-r1 DESCRIPTION="Famous Boost libraries for C++, but built via CMake, not b2" HOMEPAGE="https://www.boost.org/" SRC_URI="https://github.com/boostorg/boost/releases/download/boost-${PV}/boost-${PV}-cmake.tar.xz" LICENSE="Boost-1.0" SLOT="0" KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" # compatibility USE flags: nls, icu, bzip2, zlib, lzma, zstd, context, stacktrace, numpy IUSE=" +nls +icu +bzip2 +zlib +lzma +zstd +context +stacktrace +numpy mpi +python static +boost-context-fcontext boost-context-ucontext boost-context-winfib +boost-locale-icu boost-locale-iconv boost-locale-posix boost-locale-std boost-locale-winapi +boost-thread-pthread boost-thread-win32 +boost-iostream-zlib +boost-iostream-bzip2 +boost-iostream-lzma +boost-iostream-zstd +boost-stacktrace-backtrace boost-stacktrace-addr2line boost-stacktrace-basic boost-stacktrace-windbg boost-stacktrace-windbg-cached boost-stacktrace-from-exception " REQUIRED_USE=" bzip2? ( boost-iostream-bzip2 ) zlib? ( boost-iostream-zlib ) lzma? ( boost-iostream-lzma ) zstd? ( boost-iostream-zstd ) icu? ( boost-locale-icu ) context? ( ^^ ( boost-context-fcontext boost-context-ucontext boost-context-winfib ) ) nls? ( ^^ ( boost-locale-icu boost-locale-iconv boost-locale-posix boost-locale-std boost-locale-winapi ) ) stacktrace? ( ^^ ( boost-stacktrace-backtrace boost-stacktrace-addr2line boost-stacktrace-basic boost-stacktrace-windbg boost-stacktrace-windbg-cached boost-stacktrace-from-exception ) ) boost-locale-winapi? ( static ) ^^ ( boost-thread-pthread boost-thread-win32 ) python? ( ${PYTHON_REQUIRED_USE} ) numpy? ( python ) !numpy? ( numpy ) " DEPEND=" boost-locale-icu? ( dev-libs/icu:=[${MULTILIB_USEDEP}] ) boost-locale-iconv? ( virtual/libiconv[${MULTILIB_USEDEP}] ) boost-iostream-zlib? ( sys-libs/zlib:=[${MULTILIB_USEDEP}] ) boost-iostream-bzip2? ( app-arch/bzip2:=[${MULTILIB_USEDEP}] ) boost-iostream-lzma? ( app-arch/xz-utils:=[${MULTILIB_USEDEP}] ) boost-iostream-zstd? ( app-arch/zstd:=[${MULTILIB_USEDEP}] ) mpi? ( virtual/mpi[${MULTILIB_USEDEP},cxx,threads] ) python? ( ${PYTHON_DEPS} numpy? ( dev-python/numpy:=[${PYTHON_USEDEP}] ) ) " RDEPEND="${DEPEND} " BDEPEND=" dev-build/cmake " # also, please, check someone this : https://www.boost.org/patches/ PATCHES=( "${FILESDIR}/0000_boost-1.87.0_iostreams_pkgconfig.patch" ) src_configure() { # Gentoo users enable ccache via e.g. FEATURES=ccache or # other means. We don't want the build system to enable it for us. sed -i -e '/find_program(CCACHE_FOUND ccache)/d' CMakeLists.txt || die local mycmakeargs=( -DBOOST_ENABLE_MPI=$(usex mpi ON OFF) -DBOOST_ENABLE_PYTHON=$(usex python ON OFF) -DBUILD_SHARED_LIBS=$(usex static true false) -DBOOST_IOSTREAMS_ENABLE_ZLIB=$(usex boost-iostream-zlib ON OFF) -DBOOST_IOSTREAMS_ENABLE_BZIP2=$(usex boost-iostream-bzip2 ON OFF) -DBOOST_IOSTREAMS_ENABLE_LZMA=$(usex boost-iostream-lzma ON OFF) -DBOOST_IOSTREAMS_ENABLE_ZSTD=$(usex boost-iostream-zstd ON OFF) -DBOOST_STACKTRACE_ENABLE_NOOP=$(usex stacktrace OFF ON) -DBOOST_STACKTRACE_ENABLE_BACKTRACE=$(usex boost-stacktrace-backtrace ON OFF) -DBOOST_STACKTRACE_ENABLE_ADDR2LINE=$(usex boost-stacktrace-addr2line ON OFF) -DBOOST_STACKTRACE_ENABLE_BASIC=$(usex boost-stacktrace-basic ON OFF) -DBOOST_STACKTRACE_ENABLE_WINDBG=$(usex boost-stacktrace-windbg ON OFF) -DBOOST_STACKTRACE_ENABLE_WINDBG_CACHED=$(usex boost-stacktrace-windbg-cached ON OFF) -DBOOST_STACKTRACE_ENABLE_FROM_EXCEPTION=$(usex boost-stacktrace-from-exception ON OFF) ) if use boost-context-fcontext; then mycmakeargs+=( -DBOOST_CONTEXT_IMPLEMENTATION=fcontext ) elif use boost-context-ucontext; then mycmakeargs+=( -DBOOST_CONTEXT_IMPLEMENTATION=ucontext ) else mycmakeargs+=( -DBOOST_CONTEXT_IMPLEMENTATION=winfib ) fi if use boost-locale-icu; then mycmakeargs+=( -DBOOST_LOCALE_ENABLE_ICU=ON ) elif use boost-locale-iconv; then mycmakeargs+=( -DBOOST_LOCALE_ENABLE_ICONV=ON ) elif use boost-locale-posix; then mycmakeargs+=( -DBOOST_LOCALE_ENABLE_POSIX=ON ) elif use boost-locale-std; then mycmakeargs+=( -DBOOST_LOCALE_ENABLE_STD=ON ) else mycmakeargs+=( -DBOOST_LOCALE_ENABLE_WINAPI=ON ) fi if use boost-thread-pthread; then mycmakeargs+=( -DBOOST_THREAD_THREADAPI=pthread ) else mycmakeargs+=( -DBOOST_THREAD_THREADAPI=win32 ) fi cmake-multilib_src_configure }