# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=elfutils
pkgver=0.191
pkgrel=0
pkgdesc="Utilities and DSOs to handle ELF files and DWARF data"
url="https://sourceware.org/elfutils/"
arch="all"
license="GPL-3.0-or-later AND ( GPL-2.0-or-later OR LGPL-3.0-or-later )"
depends="
	libasm=$pkgver-r$pkgrel
	libdw=$pkgver-r$pkgrel
	libelf=$pkgver-r$pkgrel
	"
makedepends="
	argp-standalone
	bison
	bsd-compat-headers
	bzip2-dev
	flex-dev
	libtool
	linux-headers
	musl-fts-dev
	musl-libintl
	musl-legacy-error
	musl-obstack-dev
	xz-dev
	zlib-dev
	zstd-dev
	"
subpackages="
	libasm
	libdw
	libelf
	$pkgname-dev
	$pkgname-doc
	"
source="https://sourceware.org/elfutils/ftp/$pkgver/elfutils-$pkgver.tar.bz2
	fix-aarch64_fregs.patch
	fix-uninitialized.patch
	musl-macros.patch
	musl-asm-ptrace-h.patch
	"
options="!check"

# secfixes:
#   0.176-r0:
#     - CVE-2019-7146
#     - CVE-2019-7148
#     - CVE-2019-7149
#     - CVE-2019-7150
#     - CVE-2019-7664
#     - CVE-2019-7665
#   0.175-r0:
#     - CVE-2019-18310
#     - CVE-2019-18520
#     - CVE-2019-18521
#   0.174-r0:
#     - CVE-2019-16062
#     - CVE-2019-16402
#     - CVE-2019-16403
#   0.168-r1:
#     - CVE-2017-7607
#     - CVE-2017-7608

build() {
	CFLAGS="$CFLAGS -D_GNU_SOURCE -Wno-error -Wno-null-dereference" \
	./configure \
		--build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--sysconfdir=/etc \
		--mandir=/usr/share/man \
		--localstatedir=/var \
		--disable-werror \
		--program-prefix=eu- \
		--enable-deterministic-archives \
		--disable-nls \
		--disable-libdebuginfod \
		--disable-debuginfod \
		--with-zstd
	make
}

package() {
	make DESTDIR="$pkgdir" install
}

libasm() {
	pkgdesc="Library to assemble and disassamble instructions"
	# Depend on exact version, not just SONAME, just in case.
	depends="libdw=$pkgver-r$pkgrel libelf=$pkgver-r$pkgrel"

	amove usr/lib/libasm-*.so
	amove usr/lib/libasm.so.*
}

libdw() {
	pkgdesc="Library to read DWARF, find separate debuginfo, symbols and inspect process state"
	# Depend on exact version, not just SONAME, just in case.
	depends="libelf=$pkgver-r$pkgrel"

	amove usr/lib/libdw-*.so
	amove usr/lib/libdw.so.*
}

libelf() {
	pkgdesc="Library to read, modify and create ELF files"
	depends=""
	provides="$pkgname-libelf=$pkgver-r$pkgrel"  # for backward compatibility (Alpine <3.11)

	amove usr/lib/libelf-*.so
	amove usr/lib/libelf.so.*
}

dev() {
	default_dev
	provides="libelf-static=$pkgver-r$pkgrel"  # for backward compatibility (Alpine <3.19)
}

sha512sums="
e22d85f25317a79b36d370347e50284c9120c86f9830f08791b7b6a7b4ad89b9bf4c7c71129133b8d193a0edffb2a2c17987b7e48428b9670aff5ce918777e04  elfutils-0.191.tar.bz2
c3676b0b8b40d6e437f5d88c0d658dc0829ec97d1955e4bbf96f4cff9ee9001b8f2f06174450ae7aa5858b91c7905bdbd49073b561c346416132338a9c94731b  fix-aarch64_fregs.patch
b9ba55e1b56a8abf694b6d02f022d9a3a0ae6ab53a8c4a71e49552e32411ef410d3a7512fbd1a729696bc2046ac11586829816f0fa3b8226ee77c9dc4b741e58  fix-uninitialized.patch
792be4a38b55d20a320605ab340357ad55dc295ab241af86cd3edf4ec84b0122e91ebcf78d8d6a0f926104b5eb22306be1356b0892f71ee3ba27ae38e9130aab  musl-macros.patch
7c529f88dc248f657a8d690044560c20a222c5b37d0d7dcb057bf2eea8938c406cccd6129bce19542088511a026b233234c9a83933a525c4691810be9ca712bf  musl-asm-ptrace-h.patch
"
