blob: 220f747cb95ac3b77fb988fdcd64e7302f325cbc [file] [log] [blame]
Andrew Geissler517393d2023-01-13 08:55:19 -06001SUMMARY = "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=28;md5=f0a7c3170776866ee94e8f9225a6ad79 \
8 "
9DEPENDS = "zlib virtual/libintl"
Andrew Geissler220dafd2023-10-04 10:18:08 -050010DEPENDS:append:libc-musl = " argp-standalone fts musl-legacy-error musl-obstack"
Andrew Geissler517393d2023-01-13 08:55:19 -060011# 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://run-ptest \
15 file://0001-dso-link-change.patch \
16 file://0002-Fix-elf_cvt_gunhash-if-dest-and-src-are-same.patch \
17 file://0003-fixheadercheck.patch \
18 file://0006-Fix-build-on-aarch64-musl.patch \
19 file://0001-libasm-may-link-with-libbz2-if-found.patch \
20 file://0001-libelf-elf_end.c-check-data_list.data.d.d_buf-before.patch \
21 file://0001-skip-the-test-when-gcc-not-deployed.patch \
22 file://ptest.patch \
23 file://0001-tests-Makefile.am-compile-test_nlist-with-standard-C.patch \
Patrick Williams169d7bc2024-01-05 11:33:25 -060024 file://0001-Add-helper-function-for-basename.patch \
Andrew Geissler517393d2023-01-13 08:55:19 -060025 "
26SRC_URI:append:libc-musl = " \
27 file://0003-musl-utils.patch \
Andrew Geissler517393d2023-01-13 08:55:19 -060028 "
Andrew Geissler3eeda902023-05-19 10:14:02 -050029SRC_URI[sha256sum] = "39bd8f1a338e2b7cd4abc3ff11a0eddc6e690f69578a57478d8179b4148708c8"
Andrew Geissler517393d2023-01-13 08:55:19 -060030
31inherit autotools gettext ptest pkgconfig
32
33EXTRA_OECONF = "--program-prefix=eu-"
34
Andrew Geissler220dafd2023-10-04 10:18:08 -050035# Only used at runtime for make check but we want deterministic makefiles for ptest so hardcode
36CACHED_CONFIGUREVARS += "ac_cv_prog_HAVE_BUNZIP2=yes"
37
Andrew Geissler517393d2023-01-13 08:55:19 -060038BUILD_CFLAGS += "-Wno-error=stringop-overflow"
Andrew Geissler517393d2023-01-13 08:55:19 -060039
40DEPENDS_BZIP2 = "bzip2-replacement-native"
41DEPENDS_BZIP2:class-target = "bzip2"
42
Patrick Williams169d7bc2024-01-05 11:33:25 -060043PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'debuginfod', 'debuginfod libdebuginfod', '', d)} \
44 ${@bb.utils.contains('DISTRO_FEATURES', 'minidebuginfo', 'xz', '', d)} \
45 "
Andrew Geissler517393d2023-01-13 08:55:19 -060046PACKAGECONFIG[bzip2] = "--with-bzlib,--without-bzlib,${DEPENDS_BZIP2}"
47PACKAGECONFIG[xz] = "--with-lzma,--without-lzma,xz"
48PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd"
49PACKAGECONFIG[libdebuginfod] = "--enable-libdebuginfod,--disable-libdebuginfod,curl"
50PACKAGECONFIG[debuginfod] = "--enable-debuginfod,--disable-debuginfod,libarchive sqlite3 libmicrohttpd"
51
52RDEPENDS:${PN}-ptest += "libasm libelf bash make coreutils ${PN}-binutils iproute2-ss bsdtar gcc-symlinks binutils-symlinks libgcc-dev"
53
54EXTRA_OECONF:append:class-target = " --disable-tests-rpath"
55
56# symver functions not currently supported on microblaze
57EXTRA_OECONF:append:class-target:microblaze = " --disable-symbol-versioning"
58
59RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils glibc-dbg glibc-dev"
60INSANE_SKIP:${PN}-ptest = "debug-deps dev-deps"
61
62do_compile_ptest() {
63 cd ${B}/tests
64 oe_runmake buildtest-TESTS oecheck
65}
66PTEST_PARALLEL_MAKE = ""
67
68do_install_ptest() {
69 if [ ${PTEST_ENABLED} = "1" ]; then
70 # copy the files which needed by the cases
71 TEST_FILES="strip strip.o addr2line elfcmp objdump readelf size.o nm.o nm elflint elfcompress elfclassify stack unstrip"
72 install -d -m 755 ${D}${PTEST_PATH}/src
73 install -d -m 755 ${D}${PTEST_PATH}/lib
74 install -d -m 755 ${D}${PTEST_PATH}/libelf
75 install -d -m 755 ${D}${PTEST_PATH}/libdw
76 install -d -m 755 ${D}${PTEST_PATH}/libdwfl
77 install -d -m 755 ${D}${PTEST_PATH}/libdwelf
78 install -d -m 755 ${D}${PTEST_PATH}/libasm
79 install -d -m 755 ${D}${PTEST_PATH}/libcpu
80 install -d -m 755 ${D}${PTEST_PATH}/libebl
81 for test_file in ${TEST_FILES}; do
82 if [ -f ${B}/src/${test_file} ]; then
83 cp -r ${B}/src/${test_file} ${D}${PTEST_PATH}/src
84 fi
85 done
86 cp ${D}${libdir}/libelf-${PV}.so ${D}${PTEST_PATH}/libelf/libelf.so
87 cp ${D}${libdir}/libdw-${PV}.so ${D}${PTEST_PATH}/libdw/libdw.so
88 cp ${D}${libdir}/libasm-${PV}.so ${D}${PTEST_PATH}/libasm/libasm.so
89 cp ${B}/libcpu/libcpu.a ${D}${PTEST_PATH}/libcpu/
90 cp ${B}/libebl/libebl.a ${D}${PTEST_PATH}/libebl/
91 cp ${B}/lib/libeu.a ${D}${PTEST_PATH}/lib/
92 cp ${S}/libelf/*.h ${D}${PTEST_PATH}/libelf/
93 cp ${S}/libdw/*.h ${D}${PTEST_PATH}/libdw/
94 cp ${S}/libdwfl/*.h ${D}${PTEST_PATH}/libdwfl/
95 cp ${S}/libdwelf/*.h ${D}${PTEST_PATH}/libdwelf/
96 cp ${S}/libasm/*.h ${D}${PTEST_PATH}/libasm/
97 cp -r ${S}/tests/ ${D}${PTEST_PATH}
98 cp -r ${B}/tests/* ${D}${PTEST_PATH}/tests
99 cp -r ${B}/config.h ${D}${PTEST_PATH}
100 cp -r ${B}/backends ${D}${PTEST_PATH}
101 cp -r ${B}/debuginfod ${D}${PTEST_PATH}
102 sed -i '/^Makefile:/c Makefile:' ${D}${PTEST_PATH}/tests/Makefile
103 find ${D}${PTEST_PATH} -type f -name *.[hoc] | xargs -i rm {}
Andrew Geissler517393d2023-01-13 08:55:19 -0600104 fi
105}
106
107EXTRA_OEMAKE:class-native = ""
108EXTRA_OEMAKE:class-nativesdk = ""
109
110BBCLASSEXTEND = "native nativesdk"
111
112# Package utilities separately
113PACKAGES =+ "${PN}-binutils libelf libasm libdw libdebuginfod"
114
115# Shared libraries are licensed GPL-2.0-only or GPL-3.0-or-later, binaries
116# GPL-3.0-or-later. According to NEWS file:
117# "The license is now GPLv2/LGPLv3+ for the libraries and GPLv3+ for stand-alone
118# programs. There is now also a formal CONTRIBUTING document describing how to
119# submit patches."
120LICENSE:${PN}-binutils = "GPL-3.0-or-later"
121LICENSE:${PN} = "GPL-3.0-or-later"
122LICENSE:libelf = "GPL-2.0-only | LGPL-3.0-or-later"
123LICENSE:libasm = "GPL-2.0-only | LGPL-3.0-or-later"
124LICENSE:libdw = "GPL-2.0-only | LGPL-3.0-or-later"
125LICENSE:libdebuginfod = "GPL-2.0-or-later | LGPL-3.0-or-later"
126
127FILES:${PN}-binutils = "\
128 ${bindir}/eu-addr2line \
129 ${bindir}/eu-ld \
130 ${bindir}/eu-nm \
131 ${bindir}/eu-readelf \
132 ${bindir}/eu-size \
133 ${bindir}/eu-strip"
134
135FILES:libelf = "${libdir}/libelf-${PV}.so ${libdir}/libelf.so.*"
136FILES:libasm = "${libdir}/libasm-${PV}.so ${libdir}/libasm.so.*"
137FILES:libdw = "${libdir}/libdw-${PV}.so ${libdir}/libdw.so.* ${libdir}/elfutils/lib*"
138FILES:libdebuginfod = "${libdir}/libdebuginfod-${PV}.so ${libdir}/libdebuginfod.so.*"
139# Some packages have the version preceeding the .so instead properly
140# versioned .so.<version>, so we need to reorder and repackage.
141#FILES:${PN} += "${libdir}/*-${PV}.so ${base_libdir}/*-${PV}.so"
142#FILES_SOLIBSDEV = "${libdir}/libasm.so ${libdir}/libdw.so ${libdir}/libelf.so"
143
144# The package contains symlinks that trip up insane
145INSANE_SKIP:${MLPREFIX}libdw = "dev-so"
146# The nlist binary in the tests uses explicitly minimal compiler flags
147INSANE_SKIP:${PN}-ptest += "ldflags"
148
149# avoid stripping some generated binaries otherwise some of the tests such as test-nlist,
150# run-strip-reloc.sh, run-strip-strmerge.sh and so on will fail
151INHIBIT_PACKAGE_STRIP_FILES = "\
152 ${PKGD}${PTEST_PATH}/tests/test-nlist \
153 ${PKGD}${PTEST_PATH}/tests/elfstrmerge \
154 ${PKGD}${PTEST_PATH}/tests/backtrace-child \
155 ${PKGD}${PTEST_PATH}/tests/backtrace-data \
156 ${PKGD}${PTEST_PATH}/tests/backtrace-dwarf \
157 ${PKGD}${PTEST_PATH}/tests/deleted \
158 ${PKGD}${PTEST_PATH}/tests/dwfllines \
159 ${PKGD}${PTEST_PATH}/src/strip \
160 ${PKGD}${PTEST_PATH}/src/addr2line \
161 ${PKGD}${PTEST_PATH}/src/elfcmp \
162 ${PKGD}${PTEST_PATH}/src/objdump \
163 ${PKGD}${PTEST_PATH}/src/readelf \
164 ${PKGD}${PTEST_PATH}/src/nm \
165 ${PKGD}${PTEST_PATH}/src/elflint \
166 ${PKGD}${PTEST_PATH}/src/elfclassify \
167 ${PKGD}${PTEST_PATH}/src/stack \
168 ${PKGD}${PTEST_PATH}/src/unstrip \
169 ${PKGD}${PTEST_PATH}/libelf/libelf.so \
170 ${PKGD}${PTEST_PATH}/libdw/libdw.so \
171 ${PKGD}${PTEST_PATH}/libasm/libasm.so \
172 ${PKGD}${PTEST_PATH}/backends/libebl_i386.so \
173 ${PKGD}${PTEST_PATH}/backends/libebl_x86_64.so \
174"
175
176PRIVATE_LIBS:${PN}-ptest = "libdw.so.1 libelf.so.1 libasm.so.1 libdebuginfod.so.1"