| # Copyright 1999-2022 Gentoo Authors |
| # Distributed under the terms of the GNU General Public License v2 |
| |
| EAPI=6 |
| |
| MY_P="gperftools-${PV}" |
| inherit flag-o-matic autotools vcs-snapshot multilib-minimal |
| |
| DESCRIPTION="Fast, multi-threaded malloc() and nifty performance analysis tools" |
| HOMEPAGE="https://github.com/gperftools/gperftools" |
| SRC_URI="https://github.com/gperftools/gperftools/archive/${MY_P}.tar.gz" |
| |
| LICENSE="MIT" |
| SLOT="0/4" |
| # contains ASM code, with support for |
| # freebsd x86/amd64 |
| # linux amd64/arm/arm64/ppc/ppc64/riscv/x86 |
| # OSX ppc/amd64 |
| # AIX ppc/ppc64 |
| KEYWORDS="*" |
| |
| IUSE="largepages largepages64k +debug llvm-libunwind minimal optimisememory test static-libs" |
| |
| RESTRICT="!test? ( test )" |
| |
| DEPEND=" |
| llvm-libunwind? ( sys-libs/llvm-libunwind:= ) |
| !llvm-libunwind? ( sys-libs/libunwind:= ) |
| " |
| RDEPEND="${DEPEND} !dev-go/pprof" |
| |
| S="${WORKDIR}/${MY_P}" |
| |
| PATCHES=( |
| # Please keep this if possible on bumps, check Fedora if needs rebasing |
| # Allows correct functionality on e.g. arm64, bug #818871 |
| "${FILESDIR}"/${PN}-2.9.1-disable-generic-dynamic-tls.patch |
| ) |
| |
| pkg_setup() { |
| # set up the make options in here so that we can actually make use |
| # of them on both compile and install. |
| |
| # Avoid building the unit testing if we're not going to execute |
| # tests; this trick here allows us to ignore the tests without |
| # touching the build system (and thus without rebuilding |
| # autotools). Keep commented as long as it's restricted. |
| use test || \ |
| MAKEOPTS+=" noinst_PROGRAMS= " |
| } |
| |
| src_prepare() { |
| default |
| |
| eautoreconf |
| multilib_copy_sources |
| } |
| |
| multilib_src_configure() { |
| use largepages && append-cppflags -DTCMALLOC_LARGE_PAGES |
| use largepages64k && append-cppflags -DTCMALLOC_LARGE_PAGES64K |
| use optimisememory && append-cppflags -DTCMALLOC_SMALL_BUT_SLOW |
| append-flags -fno-strict-aliasing -fno-omit-frame-pointer |
| |
| local myeconfargs=( |
| --enable-shared |
| $(use_enable static-libs static) |
| $(use_enable debug debugalloc) |
| ) |
| |
| if [[ ${ABI} == x32 ]]; then |
| myeconfargs+=( --enable-minimal ) |
| else |
| myeconfargs+=( $(use_enable minimal) ) |
| fi |
| |
| if use arm64 || use s390; then |
| # Use the same arches for disabling TLS (thread local storage) |
| # as Fedora, but we might need to expand this list if we get |
| # more odd segfaults in consumers like in bug #818871. |
| myeconfargs+=( --disable-general-dynamic-tls ) |
| fi |
| |
| econf "${myeconfargs[@]}" |
| } |
| |
| src_test() { |
| if has sandbox ${FEATURES}; then |
| ewarn "Unable to run tests when sandbox is enabled." |
| ewarn "See https://bugs.gentoo.org/290249" |
| return 0 |
| fi |
| |
| multilib-minimal_src_test |
| } |
| |
| src_install() { |
| if ! use minimal && has x32 ${MULTILIB_ABIS}; then |
| MULTILIB_WRAPPED_HEADERS=( |
| /usr/include/gperftools/heap-checker.h |
| /usr/include/gperftools/heap-profiler.h |
| /usr/include/gperftools/stacktrace.h |
| /usr/include/gperftools/profiler.h |
| ) |
| fi |
| |
| multilib-minimal_src_install |
| } |
| |
| multilib_src_install_all() { |
| einstalldocs |
| |
| use static-libs || find "${ED}" -name '*.la' -delete || die |
| } |