blob: 9ea4de8e407a532db9629b96368cb002d5fa8ccc [file] [log] [blame]
Andrew Geissler82c905d2020-04-13 13:39:40 -05001SUMMARY = "Utilities and libraries for handling compiled object files"
2HOMEPAGE = "https://sourceware.org/elfutils"
Andrew Geissler90fd73c2021-03-05 15:25:55 -06003DESCRIPTION = "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."
Andrew Geissler82c905d2020-04-13 13:39:40 -05004SECTION = "base"
Andrew Geisslerd1e89492021-02-12 15:35:20 -06005LICENSE = "GPLv2 & GPLv2+ & LGPLv3+ & GPLv3+"
6LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
7 file://debuginfod/debuginfod-client.c;endline=27;md5=f8e9d171c401c493ec45a0b2992ea2ed \
8 "
Andrew Geissler82c905d2020-04-13 13:39:40 -05009DEPENDS = "zlib virtual/libintl"
Patrick Williams213cb262021-08-07 19:21:33 -050010DEPENDS:append:libc-musl = " argp-standalone fts musl-obstack "
Andrew Geissler82c905d2020-04-13 13:39:40 -050011# 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 \
Andrew Geissler82c905d2020-04-13 13:39:40 -050017 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 \
Andrew Geissler82c905d2020-04-13 13:39:40 -050020 file://0001-skip-the-test-when-gcc-not-deployed.patch \
Andrew Geissler82c905d2020-04-13 13:39:40 -050021 file://run-ptest \
22 file://ptest.patch \
Andrew Geissler475cb722020-07-10 16:00:51 -050023 file://0001-tests-Makefile.am-compile-test_nlist-with-standard-C.patch \
Andrew Geisslerc926e172021-05-07 16:11:35 -050024 file://0001-debuginfod-debuginfod-client.c-correct-string-format.patch \
Patrick Williams213cb262021-08-07 19:21:33 -050025 file://glibc-2.34-fix.patch \
Andrew Geissler82c905d2020-04-13 13:39:40 -050026 "
Patrick Williams213cb262021-08-07 19:21:33 -050027SRC_URI:append:libc-musl = " \
Andrew Geissler82c905d2020-04-13 13:39:40 -050028 file://0002-musl-libs.patch \
29 file://0003-musl-utils.patch \
30 file://0004-Fix-error-on-musl.patch \
Andrew Geissler475cb722020-07-10 16:00:51 -050031 file://0015-config-eu.am-do-not-use-Werror.patch \
Andrew Geissler82c905d2020-04-13 13:39:40 -050032 "
Andrew Geissler09036742021-06-25 14:25:14 -050033SRC_URI[sha256sum] = "dc8d3e74ab209465e7f568e1b3bb9a5a142f8656e2b57d10049a73da2ae6b5a6"
Andrew Geissler82c905d2020-04-13 13:39:40 -050034
Andrew Geisslerd159c7f2021-09-02 21:05:58 -050035# remove at next version upgrade or when output changes
36PR = "r1"
37HASHEQUIV_HASH_VERSION .= ".2"
38
Andrew Geissler82c905d2020-04-13 13:39:40 -050039inherit autotools gettext ptest pkgconfig
40
Andrew Geisslerd1e89492021-02-12 15:35:20 -060041EXTRA_OECONF = "--program-prefix=eu-"
Andrew Geissler82c905d2020-04-13 13:39:40 -050042
43DEPENDS_BZIP2 = "bzip2-replacement-native"
Patrick Williams213cb262021-08-07 19:21:33 -050044DEPENDS_BZIP2:class-target = "bzip2"
Andrew Geissler82c905d2020-04-13 13:39:40 -050045
Andrew Geisslerc926e172021-05-07 16:11:35 -050046PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'debuginfod', 'debuginfod libdebuginfod', '', d)}"
Andrew Geissler82c905d2020-04-13 13:39:40 -050047PACKAGECONFIG[bzip2] = "--with-bzlib,--without-bzlib,${DEPENDS_BZIP2}"
48PACKAGECONFIG[xz] = "--with-lzma,--without-lzma,xz"
Andrew Geisslerd159c7f2021-09-02 21:05:58 -050049PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd"
Andrew Geissler6ce62a22020-11-30 19:58:47 -060050PACKAGECONFIG[libdebuginfod] = "--enable-libdebuginfod,--disable-libdebuginfod,curl"
Andrew Geisslerd1e89492021-02-12 15:35:20 -060051PACKAGECONFIG[debuginfod] = "--enable-debuginfod,--disable-debuginfod,libarchive sqlite3 libmicrohttpd"
Andrew Geissler82c905d2020-04-13 13:39:40 -050052
Andrew Geisslerd159c7f2021-09-02 21:05:58 -050053RDEPENDS:${PN}-ptest += "libasm libelf bash make coreutils ${PN}-binutils iproute2-ss bsdtar gcc-symlinks binutils-symlinks libgcc-dev"
Andrew Geissler82c905d2020-04-13 13:39:40 -050054
Patrick Williams213cb262021-08-07 19:21:33 -050055EXTRA_OECONF:append:class-target = " --disable-tests-rpath"
Andrew Geissler82c905d2020-04-13 13:39:40 -050056
Andrew Geisslerd159c7f2021-09-02 21:05:58 -050057RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils glibc-dbg glibc-dev"
58INSANE_SKIP:${PN}-ptest = "debug-deps dev-deps"
Andrew Geissler82c905d2020-04-13 13:39:40 -050059
60do_compile_ptest() {
61 cd ${B}/tests
62 oe_runmake buildtest-TESTS oecheck
63}
64
65do_install_ptest() {
66 if [ ${PTEST_ENABLED} = "1" ]; then
67 # copy the files which needed by the cases
68 TEST_FILES="strip strip.o addr2line elfcmp objdump readelf size.o nm.o nm elflint elfcompress elfclassify stack unstrip"
69 install -d -m 755 ${D}${PTEST_PATH}/src
70 install -d -m 755 ${D}${PTEST_PATH}/libelf
71 install -d -m 755 ${D}${PTEST_PATH}/libdw
Andrew Geissler6ce62a22020-11-30 19:58:47 -060072 install -d -m 755 ${D}${PTEST_PATH}/libdwfl
73 install -d -m 755 ${D}${PTEST_PATH}/libdwelf
Andrew Geissler82c905d2020-04-13 13:39:40 -050074 install -d -m 755 ${D}${PTEST_PATH}/libasm
Andrew Geissler90fd73c2021-03-05 15:25:55 -060075 install -d -m 755 ${D}${PTEST_PATH}/libcpu
76 install -d -m 755 ${D}${PTEST_PATH}/libebl
Andrew Geissler82c905d2020-04-13 13:39:40 -050077 for test_file in ${TEST_FILES}; do
78 if [ -f ${B}/src/${test_file} ]; then
79 cp -r ${B}/src/${test_file} ${D}${PTEST_PATH}/src
80 fi
81 done
82 cp ${D}${libdir}/libelf-${PV}.so ${D}${PTEST_PATH}/libelf/libelf.so
83 cp ${D}${libdir}/libdw-${PV}.so ${D}${PTEST_PATH}/libdw/libdw.so
84 cp ${D}${libdir}/libasm-${PV}.so ${D}${PTEST_PATH}/libasm/libasm.so
Andrew Geissler90fd73c2021-03-05 15:25:55 -060085 cp ${B}/libcpu/libcpu.a ${D}${PTEST_PATH}/libcpu/
86 cp ${B}/libebl/libebl.a ${D}${PTEST_PATH}/libebl/
Andrew Geissler6ce62a22020-11-30 19:58:47 -060087 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/
Andrew Geissler82c905d2020-04-13 13:39:40 -050092 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}
Andrew Geisslerc926e172021-05-07 16:11:35 -050096 cp -r ${B}/debuginfod ${D}${PTEST_PATH}
Andrew Geissler82c905d2020-04-13 13:39:40 -050097 sed -i '/^Makefile:/c Makefile:' ${D}${PTEST_PATH}/tests/Makefile
98 find ${D}${PTEST_PATH} -type f -name *.[hoc] | xargs -i rm {}
99 fi
100}
101
Patrick Williams213cb262021-08-07 19:21:33 -0500102EXTRA_OEMAKE:class-native = ""
103EXTRA_OEMAKE:class-nativesdk = ""
Andrew Geissler82c905d2020-04-13 13:39:40 -0500104
105BBCLASSEXTEND = "native nativesdk"
106
107# Package utilities separately
Andrew Geisslerd1e89492021-02-12 15:35:20 -0600108PACKAGES =+ "${PN}-binutils libelf libasm libdw libdebuginfod"
Andrew Geissler82c905d2020-04-13 13:39:40 -0500109
110# shared libraries are licensed GPLv2 or GPLv3+, binaries GPLv3+
111# 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."
Patrick Williams213cb262021-08-07 19:21:33 -0500115LICENSE:${PN}-binutils = "GPLv3+"
116LICENSE:${PN} = "GPLv3+"
117LICENSE:libelf = "GPLv2 | LGPLv3+"
118LICENSE:libasm = "GPLv2 | LGPLv3+"
119LICENSE:libdw = "GPLv2 | LGPLv3+"
120LICENSE:libdebuginfod = "GPLv2+ | LGPLv3+"
Andrew Geissler82c905d2020-04-13 13:39:40 -0500121
Patrick Williams213cb262021-08-07 19:21:33 -0500122FILES:${PN}-binutils = "\
Andrew Geissler82c905d2020-04-13 13:39:40 -0500123 ${bindir}/eu-addr2line \
124 ${bindir}/eu-ld \
125 ${bindir}/eu-nm \
126 ${bindir}/eu-readelf \
127 ${bindir}/eu-size \
128 ${bindir}/eu-strip"
129
Patrick Williams213cb262021-08-07 19:21:33 -0500130FILES: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.*"
Andrew Geissler82c905d2020-04-13 13:39:40 -0500134# Some packages have the version preceeding the .so instead properly
135# versioned .so.<version>, so we need to reorder and repackage.
Patrick Williams0ca19cc2021-08-16 14:03:13 -0500136#FILES:${PN} += "${libdir}/*-${PV}.so ${base_libdir}/*-${PV}.so"
Andrew Geissler82c905d2020-04-13 13:39:40 -0500137#FILES_SOLIBSDEV = "${libdir}/libasm.so ${libdir}/libdw.so ${libdir}/libelf.so"
138
139# The package contains symlinks that trip up insane
Patrick Williams213cb262021-08-07 19:21:33 -0500140INSANE_SKIP:${MLPREFIX}libdw = "dev-so"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500141# The nlist binary in the tests uses explicitly minimal compiler flags
Patrick Williams213cb262021-08-07 19:21:33 -0500142INSANE_SKIP:${PN}-ptest += "ldflags"
Andrew Geissler82c905d2020-04-13 13:39:40 -0500143
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 \
Andrew Geisslerc926e172021-05-07 16:11:35 -0500153 ${PKGD}${PTEST_PATH}/tests/dwfllines \
Andrew Geissler82c905d2020-04-13 13:39:40 -0500154 ${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
Patrick Williams213cb262021-08-07 19:21:33 -0500171PRIVATE_LIBS:${PN}-ptest = "libdw.so.1 libelf.so.1 libasm.so.1 libdebuginfod.so.1"