xref: /OK3568_Linux_fs/yocto/poky/meta/recipes-devtools/elfutils/elfutils_0.186.bb (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1SUMMARY = "Utilities and libraries for handling compiled object files"
2HOMEPAGE = "https://sourceware.org/elfutils"
3DESCRIPTION = "elfutils is a collection of utilities and libraries to read, create and modify ELF binary files, find and handle DWARF debug data, symbols, thread state and stacktraces for processes and core files on GNU/Linux."
4SECTION = "base"
5LICENSE = "GPL-2.0-only & GPL-2.0-or-later & LGPL-3.0-or-later & GPL-3.0-or-later"
6LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
7                    file://debuginfod/debuginfod-client.c;endline=27;md5=d2adfd8f5347d4c96e3c280393ce66da \
8                    "
9DEPENDS = "zlib virtual/libintl"
10DEPENDS:append:libc-musl = " argp-standalone fts musl-obstack "
11# The Debian patches below are from:
12# http://ftp.de.debian.org/debian/pool/main/e/elfutils/elfutils_0.176-1.debian.tar.xz
13SRC_URI = "https://sourceware.org/elfutils/ftp/${PV}/${BP}.tar.bz2 \
14           file://0001-dso-link-change.patch \
15           file://0002-Fix-elf_cvt_gunhash-if-dest-and-src-are-same.patch \
16           file://0003-fixheadercheck.patch \
17           file://0006-Fix-build-on-aarch64-musl.patch \
18           file://0001-libasm-may-link-with-libbz2-if-found.patch \
19           file://0001-libelf-elf_end.c-check-data_list.data.d.d_buf-before.patch \
20           file://0001-skip-the-test-when-gcc-not-deployed.patch \
21           file://run-ptest \
22           file://ptest.patch \
23           file://0001-tests-Makefile.am-compile-test_nlist-with-standard-C.patch \
24           file://0001-debuginfod-fix-compilation-on-platforms-without-erro.patch \
25           file://0001-debuginfod-debuginfod-client.c-use-long-for-cache-ti.patch \
26           "
27SRC_URI:append:libc-musl = " \
28           file://0003-musl-utils.patch \
29           file://0015-config-eu.am-do-not-use-Werror.patch \
30           "
31SRC_URI[sha256sum] = "7f6fb9149b1673d38d9178a0d3e0fb8a1ec4f53a9f4c2ff89469609879641177"
32
33inherit autotools gettext ptest pkgconfig
34PTEST_ENABLED:libc-musl = "0"
35
36EXTRA_OECONF = "--program-prefix=eu-"
37
38DEPENDS_BZIP2 = "bzip2-replacement-native"
39DEPENDS_BZIP2:class-target = "bzip2"
40
41PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'debuginfod', 'debuginfod libdebuginfod', '', d)}"
42PACKAGECONFIG[bzip2] = "--with-bzlib,--without-bzlib,${DEPENDS_BZIP2}"
43PACKAGECONFIG[xz] = "--with-lzma,--without-lzma,xz"
44PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd"
45PACKAGECONFIG[libdebuginfod] = "--enable-libdebuginfod,--disable-libdebuginfod,curl"
46PACKAGECONFIG[debuginfod] = "--enable-debuginfod,--disable-debuginfod,libarchive sqlite3 libmicrohttpd"
47
48RDEPENDS:${PN}-ptest += "libasm libelf bash make coreutils ${PN}-binutils iproute2-ss bsdtar gcc-symlinks binutils-symlinks libgcc-dev"
49
50EXTRA_OECONF:append:class-target = " --disable-tests-rpath"
51
52RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils glibc-dbg glibc-dev"
53INSANE_SKIP:${PN}-ptest = "debug-deps dev-deps"
54
55do_compile_ptest() {
56	cd ${B}/tests
57	oe_runmake buildtest-TESTS oecheck
58}
59
60do_install_ptest() {
61	if [ ${PTEST_ENABLED} = "1" ]; then
62		# copy the files which needed by the cases
63		TEST_FILES="strip strip.o addr2line elfcmp objdump readelf size.o nm.o nm elflint elfcompress elfclassify stack unstrip"
64		install -d -m 755                       ${D}${PTEST_PATH}/src
65		install -d -m 755                       ${D}${PTEST_PATH}/libelf
66		install -d -m 755                       ${D}${PTEST_PATH}/libdw
67		install -d -m 755                       ${D}${PTEST_PATH}/libdwfl
68		install -d -m 755                       ${D}${PTEST_PATH}/libdwelf
69		install -d -m 755                       ${D}${PTEST_PATH}/libasm
70		install -d -m 755                       ${D}${PTEST_PATH}/libcpu
71		install -d -m 755                       ${D}${PTEST_PATH}/libebl
72		for test_file in ${TEST_FILES}; do
73			if [ -f ${B}/src/${test_file} ]; then
74				cp -r ${B}/src/${test_file} ${D}${PTEST_PATH}/src
75			fi
76		done
77		cp ${D}${libdir}/libelf-${PV}.so ${D}${PTEST_PATH}/libelf/libelf.so
78		cp ${D}${libdir}/libdw-${PV}.so ${D}${PTEST_PATH}/libdw/libdw.so
79		cp ${D}${libdir}/libasm-${PV}.so ${D}${PTEST_PATH}/libasm/libasm.so
80		cp ${B}/libcpu/libcpu.a ${D}${PTEST_PATH}/libcpu/
81		cp ${B}/libebl/libebl.a ${D}${PTEST_PATH}/libebl/
82		cp ${S}/libelf/*.h             ${D}${PTEST_PATH}/libelf/
83		cp ${S}/libdw/*.h              ${D}${PTEST_PATH}/libdw/
84		cp ${S}/libdwfl/*.h            ${D}${PTEST_PATH}/libdwfl/
85		cp ${S}/libdwelf/*.h           ${D}${PTEST_PATH}/libdwelf/
86		cp ${S}/libasm/*.h             ${D}${PTEST_PATH}/libasm/
87		cp -r ${S}/tests/                       ${D}${PTEST_PATH}
88		cp -r ${B}/tests/*                      ${D}${PTEST_PATH}/tests
89		cp -r ${B}/config.h                     ${D}${PTEST_PATH}
90		cp -r ${B}/backends                     ${D}${PTEST_PATH}
91		cp -r ${B}/debuginfod                   ${D}${PTEST_PATH}
92		sed -i '/^Makefile:/c Makefile:'        ${D}${PTEST_PATH}/tests/Makefile
93		find ${D}${PTEST_PATH} -type f -name *.[hoc] | xargs -i rm {}
94	fi
95}
96
97EXTRA_OEMAKE:class-native = ""
98EXTRA_OEMAKE:class-nativesdk = ""
99
100BBCLASSEXTEND = "native nativesdk"
101
102# Package utilities separately
103PACKAGES =+ "${PN}-binutils libelf libasm libdw libdebuginfod"
104
105# Shared libraries are licensed GPL-2.0-only or GPL-3.0-or-later, binaries
106# GPL-3.0-or-later. According to NEWS file:
107# "The license is now GPLv2/LGPLv3+ for the libraries and GPLv3+ for stand-alone
108# programs. There is now also a formal CONTRIBUTING document describing how to
109# submit patches."
110LICENSE:${PN}-binutils = "GPL-3.0-or-later"
111LICENSE:${PN} = "GPL-3.0-or-later"
112LICENSE:libelf = "GPL-2.0-only | LGPL-3.0-or-later"
113LICENSE:libasm = "GPL-2.0-only | LGPL-3.0-or-later"
114LICENSE:libdw = "GPL-2.0-only | LGPL-3.0-or-later"
115LICENSE:libdebuginfod = "GPL-2.0-or-later | LGPL-3.0-or-later"
116
117FILES:${PN}-binutils = "\
118    ${bindir}/eu-addr2line \
119    ${bindir}/eu-ld \
120    ${bindir}/eu-nm \
121    ${bindir}/eu-readelf \
122    ${bindir}/eu-size \
123    ${bindir}/eu-strip"
124
125FILES:libelf = "${libdir}/libelf-${PV}.so ${libdir}/libelf.so.*"
126FILES:libasm = "${libdir}/libasm-${PV}.so ${libdir}/libasm.so.*"
127FILES:libdw  = "${libdir}/libdw-${PV}.so ${libdir}/libdw.so.* ${libdir}/elfutils/lib*"
128FILES:libdebuginfod = "${libdir}/libdebuginfod-${PV}.so ${libdir}/libdebuginfod.so.*"
129# Some packages have the version preceeding the .so instead properly
130# versioned .so.<version>, so we need to reorder and repackage.
131#FILES:${PN} += "${libdir}/*-${PV}.so ${base_libdir}/*-${PV}.so"
132#FILES_SOLIBSDEV = "${libdir}/libasm.so ${libdir}/libdw.so ${libdir}/libelf.so"
133
134# The package contains symlinks that trip up insane
135INSANE_SKIP:${MLPREFIX}libdw = "dev-so"
136# The nlist binary in the tests uses explicitly minimal compiler flags
137INSANE_SKIP:${PN}-ptest += "ldflags"
138
139# avoid stripping some generated binaries otherwise some of the tests such as test-nlist,
140# run-strip-reloc.sh, run-strip-strmerge.sh and so on will fail
141INHIBIT_PACKAGE_STRIP_FILES = "\
142    ${PKGD}${PTEST_PATH}/tests/test-nlist \
143    ${PKGD}${PTEST_PATH}/tests/elfstrmerge \
144    ${PKGD}${PTEST_PATH}/tests/backtrace-child \
145    ${PKGD}${PTEST_PATH}/tests/backtrace-data \
146    ${PKGD}${PTEST_PATH}/tests/backtrace-dwarf \
147    ${PKGD}${PTEST_PATH}/tests/deleted \
148    ${PKGD}${PTEST_PATH}/tests/dwfllines \
149    ${PKGD}${PTEST_PATH}/src/strip \
150    ${PKGD}${PTEST_PATH}/src/addr2line \
151    ${PKGD}${PTEST_PATH}/src/elfcmp \
152    ${PKGD}${PTEST_PATH}/src/objdump \
153    ${PKGD}${PTEST_PATH}/src/readelf \
154    ${PKGD}${PTEST_PATH}/src/nm \
155    ${PKGD}${PTEST_PATH}/src/elflint \
156    ${PKGD}${PTEST_PATH}/src/elfclassify \
157    ${PKGD}${PTEST_PATH}/src/stack \
158    ${PKGD}${PTEST_PATH}/src/unstrip \
159    ${PKGD}${PTEST_PATH}/libelf/libelf.so \
160    ${PKGD}${PTEST_PATH}/libdw/libdw.so \
161    ${PKGD}${PTEST_PATH}/libasm/libasm.so \
162    ${PKGD}${PTEST_PATH}/backends/libebl_i386.so \
163    ${PKGD}${PTEST_PATH}/backends/libebl_x86_64.so \
164"
165
166PRIVATE_LIBS:${PN}-ptest = "libdw.so.1 libelf.so.1 libasm.so.1 libdebuginfod.so.1"
167