blob: 236f8cef92d4fcad0e33614397bdbfa5a7992aa0 [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"
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://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 \
24 "
25SRC_URI:append:libc-musl = " \
26 file://0003-musl-utils.patch \
27 file://0015-config-eu.am-do-not-use-Werror.patch \
28 "
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
35BUILD_CFLAGS += "-Wno-error=stringop-overflow"
Andrew Geissler517393d2023-01-13 08:55:19 -060036
37DEPENDS_BZIP2 = "bzip2-replacement-native"
38DEPENDS_BZIP2:class-target = "bzip2"
39
40PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'debuginfod', 'debuginfod libdebuginfod', '', d)}"
41PACKAGECONFIG[bzip2] = "--with-bzlib,--without-bzlib,${DEPENDS_BZIP2}"
42PACKAGECONFIG[xz] = "--with-lzma,--without-lzma,xz"
43PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd"
44PACKAGECONFIG[libdebuginfod] = "--enable-libdebuginfod,--disable-libdebuginfod,curl"
45PACKAGECONFIG[debuginfod] = "--enable-debuginfod,--disable-debuginfod,libarchive sqlite3 libmicrohttpd"
46
47RDEPENDS:${PN}-ptest += "libasm libelf bash make coreutils ${PN}-binutils iproute2-ss bsdtar gcc-symlinks binutils-symlinks libgcc-dev"
48
49EXTRA_OECONF:append:class-target = " --disable-tests-rpath"
50
51# symver functions not currently supported on microblaze
52EXTRA_OECONF:append:class-target:microblaze = " --disable-symbol-versioning"
53
54RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils glibc-dbg glibc-dev"
55INSANE_SKIP:${PN}-ptest = "debug-deps dev-deps"
56
57do_compile_ptest() {
58 cd ${B}/tests
59 oe_runmake buildtest-TESTS oecheck
60}
61PTEST_PARALLEL_MAKE = ""
62
63do_install_ptest() {
64 if [ ${PTEST_ENABLED} = "1" ]; then
65 # copy the files which needed by the cases
66 TEST_FILES="strip strip.o addr2line elfcmp objdump readelf size.o nm.o nm elflint elfcompress elfclassify stack unstrip"
67 install -d -m 755 ${D}${PTEST_PATH}/src
68 install -d -m 755 ${D}${PTEST_PATH}/lib
69 install -d -m 755 ${D}${PTEST_PATH}/libelf
70 install -d -m 755 ${D}${PTEST_PATH}/libdw
71 install -d -m 755 ${D}${PTEST_PATH}/libdwfl
72 install -d -m 755 ${D}${PTEST_PATH}/libdwelf
73 install -d -m 755 ${D}${PTEST_PATH}/libasm
74 install -d -m 755 ${D}${PTEST_PATH}/libcpu
75 install -d -m 755 ${D}${PTEST_PATH}/libebl
76 for test_file in ${TEST_FILES}; do
77 if [ -f ${B}/src/${test_file} ]; then
78 cp -r ${B}/src/${test_file} ${D}${PTEST_PATH}/src
79 fi
80 done
81 cp ${D}${libdir}/libelf-${PV}.so ${D}${PTEST_PATH}/libelf/libelf.so
82 cp ${D}${libdir}/libdw-${PV}.so ${D}${PTEST_PATH}/libdw/libdw.so
83 cp ${D}${libdir}/libasm-${PV}.so ${D}${PTEST_PATH}/libasm/libasm.so
84 cp ${B}/libcpu/libcpu.a ${D}${PTEST_PATH}/libcpu/
85 cp ${B}/libebl/libebl.a ${D}${PTEST_PATH}/libebl/
86 cp ${B}/lib/libeu.a ${D}${PTEST_PATH}/lib/
87 cp ${S}/libelf/*.h ${D}${PTEST_PATH}/libelf/
88 cp ${S}/libdw/*.h ${D}${PTEST_PATH}/libdw/
89 cp ${S}/libdwfl/*.h ${D}${PTEST_PATH}/libdwfl/
90 cp ${S}/libdwelf/*.h ${D}${PTEST_PATH}/libdwelf/
91 cp ${S}/libasm/*.h ${D}${PTEST_PATH}/libasm/
92 cp -r ${S}/tests/ ${D}${PTEST_PATH}
93 cp -r ${B}/tests/* ${D}${PTEST_PATH}/tests
94 cp -r ${B}/config.h ${D}${PTEST_PATH}
95 cp -r ${B}/backends ${D}${PTEST_PATH}
96 cp -r ${B}/debuginfod ${D}${PTEST_PATH}
97 sed -i '/^Makefile:/c Makefile:' ${D}${PTEST_PATH}/tests/Makefile
98 find ${D}${PTEST_PATH} -type f -name *.[hoc] | xargs -i rm {}
Andrew Geissler517393d2023-01-13 08:55:19 -060099 fi
100}
101
102EXTRA_OEMAKE:class-native = ""
103EXTRA_OEMAKE:class-nativesdk = ""
104
105BBCLASSEXTEND = "native nativesdk"
106
107# Package utilities separately
108PACKAGES =+ "${PN}-binutils libelf libasm libdw libdebuginfod"
109
110# Shared libraries are licensed GPL-2.0-only or GPL-3.0-or-later, binaries
111# GPL-3.0-or-later. According to NEWS file:
112# "The license is now GPLv2/LGPLv3+ for the libraries and GPLv3+ for stand-alone
113# programs. There is now also a formal CONTRIBUTING document describing how to
114# submit patches."
115LICENSE:${PN}-binutils = "GPL-3.0-or-later"
116LICENSE:${PN} = "GPL-3.0-or-later"
117LICENSE:libelf = "GPL-2.0-only | LGPL-3.0-or-later"
118LICENSE:libasm = "GPL-2.0-only | LGPL-3.0-or-later"
119LICENSE:libdw = "GPL-2.0-only | LGPL-3.0-or-later"
120LICENSE:libdebuginfod = "GPL-2.0-or-later | LGPL-3.0-or-later"
121
122FILES:${PN}-binutils = "\
123 ${bindir}/eu-addr2line \
124 ${bindir}/eu-ld \
125 ${bindir}/eu-nm \
126 ${bindir}/eu-readelf \
127 ${bindir}/eu-size \
128 ${bindir}/eu-strip"
129
130FILES:libelf = "${libdir}/libelf-${PV}.so ${libdir}/libelf.so.*"
131FILES:libasm = "${libdir}/libasm-${PV}.so ${libdir}/libasm.so.*"
132FILES:libdw = "${libdir}/libdw-${PV}.so ${libdir}/libdw.so.* ${libdir}/elfutils/lib*"
133FILES:libdebuginfod = "${libdir}/libdebuginfod-${PV}.so ${libdir}/libdebuginfod.so.*"
134# Some packages have the version preceeding the .so instead properly
135# versioned .so.<version>, so we need to reorder and repackage.
136#FILES:${PN} += "${libdir}/*-${PV}.so ${base_libdir}/*-${PV}.so"
137#FILES_SOLIBSDEV = "${libdir}/libasm.so ${libdir}/libdw.so ${libdir}/libelf.so"
138
139# The package contains symlinks that trip up insane
140INSANE_SKIP:${MLPREFIX}libdw = "dev-so"
141# The nlist binary in the tests uses explicitly minimal compiler flags
142INSANE_SKIP:${PN}-ptest += "ldflags"
143
144# avoid stripping some generated binaries otherwise some of the tests such as test-nlist,
145# run-strip-reloc.sh, run-strip-strmerge.sh and so on will fail
146INHIBIT_PACKAGE_STRIP_FILES = "\
147 ${PKGD}${PTEST_PATH}/tests/test-nlist \
148 ${PKGD}${PTEST_PATH}/tests/elfstrmerge \
149 ${PKGD}${PTEST_PATH}/tests/backtrace-child \
150 ${PKGD}${PTEST_PATH}/tests/backtrace-data \
151 ${PKGD}${PTEST_PATH}/tests/backtrace-dwarf \
152 ${PKGD}${PTEST_PATH}/tests/deleted \
153 ${PKGD}${PTEST_PATH}/tests/dwfllines \
154 ${PKGD}${PTEST_PATH}/src/strip \
155 ${PKGD}${PTEST_PATH}/src/addr2line \
156 ${PKGD}${PTEST_PATH}/src/elfcmp \
157 ${PKGD}${PTEST_PATH}/src/objdump \
158 ${PKGD}${PTEST_PATH}/src/readelf \
159 ${PKGD}${PTEST_PATH}/src/nm \
160 ${PKGD}${PTEST_PATH}/src/elflint \
161 ${PKGD}${PTEST_PATH}/src/elfclassify \
162 ${PKGD}${PTEST_PATH}/src/stack \
163 ${PKGD}${PTEST_PATH}/src/unstrip \
164 ${PKGD}${PTEST_PATH}/libelf/libelf.so \
165 ${PKGD}${PTEST_PATH}/libdw/libdw.so \
166 ${PKGD}${PTEST_PATH}/libasm/libasm.so \
167 ${PKGD}${PTEST_PATH}/backends/libebl_i386.so \
168 ${PKGD}${PTEST_PATH}/backends/libebl_x86_64.so \
169"
170
171PRIVATE_LIBS:${PN}-ptest = "libdw.so.1 libelf.so.1 libasm.so.1 libdebuginfod.so.1"