# Copyright 1999-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 CMAKE_QA_COMPAT_SKIP=1 # unused bundled rapidjson inherit cmake flag-o-matic DESCRIPTION="Embeddable Fulltext Search Engine" HOMEPAGE="https://groonga.org/" SRC_URI="https://packages.groonga.org/source/groonga/${P}.tar.gz" LICENSE="LGPL-2.1+" SLOT="0" KEYWORDS="~amd64 ~x86" IUSE="apache-arrow blosc curl debug json libedit lz4 +mecab msgpack stemmer suggest-learner xxhash zstd" CPU_USE=( cpu_flags_x86_{avx,avx2,avx512dq} ) IUSE+=" ${CPU_USE[@]}" REQUIRED_USE="suggest-learner? ( msgpack )" RDEPEND=" acct-group/groonga acct-user/groonga dev-libs/onigmo:= virtual/zlib:= apache-arrow? ( dev-libs/apache-arrow:= ) blosc? ( >=dev-libs/c-blosc2-2.10.0:= ) curl? ( net-misc/curl ) libedit? ( dev-libs/libedit ) lz4? ( app-arch/lz4:= ) mecab? ( app-text/mecab ) msgpack? ( dev-libs/msgpack:= ) stemmer? ( dev-libs/snowball-stemmer:= ) suggest-learner? ( dev-libs/libevent:= net-libs/zeromq:= ) xxhash? ( >=dev-libs/xxhash-0.8.0 ) zstd? ( app-arch/zstd:= ) " DEPEND=" ${RDEPEND} amd64? ( dev-cpp/xsimd ) json? ( dev-libs/rapidjson:= ) " BDEPEND="virtual/pkgconfig" PATCHES=( "${FILESDIR}"/${PN}-16.0.1-cmakelists.patch ) src_prepare() { cmake_src_prepare cmake_comment_add_subdirectory vendor } src_configure() { # -Werror=odr # https://github.com/groonga/groonga/issues/2787 filter-lto local mycmakeargs=( -DCMAKE_SKIP_RPATH=TRUE -DCMAKE_INSTALL_DOCDIR="${EPREFIX}/usr/share/doc/${PF}/html" -DCMAKE_INSTALL_SYSCONFDIR="${EPREFIX}/etc" -DGRN_ALLOW_WARNING=ON # avoid -Werror -DGRN_EMBED=OFF # static -DGRN_FOR_RHEL=OFF # TODO: adapt systemd unit -DGRN_LOG_PATH="${EPREFIX}/var/log/${PN}.log" # always OFF -DGRN_WITH_BENCHMARKS=OFF # install nothing -DGRN_WITH_BUNDLED_ONIGMO=OFF -DGRN_WITH_BUNDLED_MESSAGE_PACK=OFF -DGRN_WITH_SIMDJSON=no # prefer rapidjson, unlike upstream -DGRN_WITH_SIMSIMD=OFF # masked, old 3.8.0 bundled -DGRN_WITH_UBSAN=OFF # it requires clang -DGRN_WITH_WINDOWS_BACK_TRACE=OFF # only for windows # always ON -DGRN_WITH_DOC=ON # precompiled -DGRN_WITH_EXAMPLES=ON # nothing to build -DGRN_WITH_NFKC=ON # required for libgroonga #946976 -DGRN_WITH_TOOLS=ON # install ruby and bash scripts -DGRN_WITH_ZLIB=ON # try to find zlib anyway -DGRN_WITH_APACHE_ARROW=$(usex apache-arrow) -DGRN_WITH_BLOSC=$(usex blosc system no) -DGRN_WITH_CURL=$(usex curl system no) -DGRN_WITH_MEMORY_DEBUG=$(usex debug) -DGRN_WITH_RAPIDJSON=$(usex json system no) -DGRN_WITH_LIBEDIT=$(usex libedit system no) -DGRN_WITH_LZ4=$(usex lz4 system no) -DGRN_WITH_MECAB=$(usex mecab) -DGRN_WITH_MESSAGE_PACK=$(usex msgpack) -DGRN_WITH_LIBSTEMMER=$(usex stemmer) -DGRN_WITH_LIBEVENT=$(usex suggest-learner) -DGRN_WITH_ZEROMQ=$(usex suggest-learner) -DGRN_WITH_XXHASH=$(usex xxhash system no) -DGRN_WITH_ZSTD=$(usex zstd system no) # TODO -DGRN_WITH_MRUBY=OFF -DGRN_WITH_MUNIN_PLUGINS=OFF # not packaged in ::gentoo -DGRN_WITH_BASE64=no # aklomp/base64 -DGRN_WITH_FAISS=no # facebookresearch/faiss -DGRN_WITH_H3=no # uber/h3 -DGRN_WITH_KYTEA=no # neubig/kytea -DGRN_WITH_LLAMA_CPP=no # ::guru -DGRN_WITH_OPENZL=no # facebook/openzl -DGRN_WITH_ROARING_BITMAPS=no # RoaringBitmap/CRoaring -DGRN_WITH_USEARCH=no # unum-cloud/USearch ) # xsimd profiles if use amd64; then mycmakeargs+=( -DGRN_WITH_XSIMD=system -DGRN_HAVE_AVX_FLAG=$(usex cpu_flags_x86_avx) -DGRN_HAVE_AVX2_FLAG=$(usex cpu_flags_x86_avx2) -DGRN_HAVE_AVX512DQ_FLAG=$(usex cpu_flags_x86_avx512dq) ) #elif use arm64 # mycmakeargs+=( # -DGRN_WITH_XSIMD=system # -DGRN_HAVE_ARCH_ARMV8_A_FLAG=$(usex cpu_flags_arm_v8) # ) else mycmakeargs+=( -DGRN_WITH_XSIMD=no ) fi cmake_src_configure } src_install() { cmake_src_install newinitd "${FILESDIR}/${PN}.initd" ${PN} newconfd "${FILESDIR}/${PN}.confd" ${PN} keepdir /var/{log,lib}/${PN} fowners groonga:groonga /var/{log,lib}/${PN} }