blob: b1ffbc18bfd7c24a067b9fae0d2efd7d8b3a9013 [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"
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 \
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 \
Andrew Geissler82c905d2020-04-13 13:39:40 -050025 "
26SRC_URI_append_libc-musl = " \
Andrew Geissler82c905d2020-04-13 13:39:40 -050027 file://0002-musl-libs.patch \
28 file://0003-musl-utils.patch \
29 file://0004-Fix-error-on-musl.patch \
Andrew Geissler475cb722020-07-10 16:00:51 -050030 file://0015-config-eu.am-do-not-use-Werror.patch \
Andrew Geissler82c905d2020-04-13 13:39:40 -050031 "
Andrew Geissler09036742021-06-25 14:25:14 -050032SRC_URI[sha256sum] = "dc8d3e74ab209465e7f568e1b3bb9a5a142f8656e2b57d10049a73da2ae6b5a6"
Andrew Geissler82c905d2020-04-13 13:39:40 -050033
34inherit autotools gettext ptest pkgconfig
35
Andrew Geisslerd1e89492021-02-12 15:35:20 -060036EXTRA_OECONF = "--program-prefix=eu-"
Andrew Geissler82c905d2020-04-13 13:39:40 -050037
38DEPENDS_BZIP2 = "bzip2-replacement-native"
39DEPENDS_BZIP2_class-target = "bzip2"
40
Andrew Geisslerc926e172021-05-07 16:11:35 -050041PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'debuginfod', 'debuginfod libdebuginfod', '', d)}"
Andrew Geissler82c905d2020-04-13 13:39:40 -050042PACKAGECONFIG[bzip2] = "--with-bzlib,--without-bzlib,${DEPENDS_BZIP2}"
43PACKAGECONFIG[xz] = "--with-lzma,--without-lzma,xz"
Andrew Geissler6ce62a22020-11-30 19:58:47 -060044PACKAGECONFIG[libdebuginfod] = "--enable-libdebuginfod,--disable-libdebuginfod,curl"
Andrew Geisslerd1e89492021-02-12 15:35:20 -060045PACKAGECONFIG[debuginfod] = "--enable-debuginfod,--disable-debuginfod,libarchive sqlite3 libmicrohttpd"
Andrew Geissler82c905d2020-04-13 13:39:40 -050046
Andrew Geisslerc926e172021-05-07 16:11:35 -050047RDEPENDS_${PN}-ptest += "libasm libelf bash make coreutils ${PN}-binutils iproute2-ss bsdtar"
Andrew Geissler82c905d2020-04-13 13:39:40 -050048
49EXTRA_OECONF_append_class-target = " --disable-tests-rpath"
50
51RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-utils"
52
53do_compile_ptest() {
54 cd ${B}/tests
55 oe_runmake buildtest-TESTS oecheck
56}
57
58do_install_ptest() {
59 if [ ${PTEST_ENABLED} = "1" ]; then
60 # copy the files which needed by the cases
61 TEST_FILES="strip strip.o addr2line elfcmp objdump readelf size.o nm.o nm elflint elfcompress elfclassify stack unstrip"
62 install -d -m 755 ${D}${PTEST_PATH}/src
63 install -d -m 755 ${D}${PTEST_PATH}/libelf
64 install -d -m 755 ${D}${PTEST_PATH}/libdw
Andrew Geissler6ce62a22020-11-30 19:58:47 -060065 install -d -m 755 ${D}${PTEST_PATH}/libdwfl
66 install -d -m 755 ${D}${PTEST_PATH}/libdwelf
Andrew Geissler82c905d2020-04-13 13:39:40 -050067 install -d -m 755 ${D}${PTEST_PATH}/libasm
Andrew Geissler90fd73c2021-03-05 15:25:55 -060068 install -d -m 755 ${D}${PTEST_PATH}/libcpu
69 install -d -m 755 ${D}${PTEST_PATH}/libebl
Andrew Geissler82c905d2020-04-13 13:39:40 -050070 for test_file in ${TEST_FILES}; do
71 if [ -f ${B}/src/${test_file} ]; then
72 cp -r ${B}/src/${test_file} ${D}${PTEST_PATH}/src
73 fi
74 done
75 cp ${D}${libdir}/libelf-${PV}.so ${D}${PTEST_PATH}/libelf/libelf.so
76 cp ${D}${libdir}/libdw-${PV}.so ${D}${PTEST_PATH}/libdw/libdw.so
77 cp ${D}${libdir}/libasm-${PV}.so ${D}${PTEST_PATH}/libasm/libasm.so
Andrew Geissler90fd73c2021-03-05 15:25:55 -060078 cp ${B}/libcpu/libcpu.a ${D}${PTEST_PATH}/libcpu/
79 cp ${B}/libebl/libebl.a ${D}${PTEST_PATH}/libebl/
Andrew Geissler6ce62a22020-11-30 19:58:47 -060080 cp ${S}/libelf/*.h ${D}${PTEST_PATH}/libelf/
81 cp ${S}/libdw/*.h ${D}${PTEST_PATH}/libdw/
82 cp ${S}/libdwfl/*.h ${D}${PTEST_PATH}/libdwfl/
83 cp ${S}/libdwelf/*.h ${D}${PTEST_PATH}/libdwelf/
84 cp ${S}/libasm/*.h ${D}${PTEST_PATH}/libasm/
Andrew Geissler82c905d2020-04-13 13:39:40 -050085 cp -r ${S}/tests/ ${D}${PTEST_PATH}
86 cp -r ${B}/tests/* ${D}${PTEST_PATH}/tests
87 cp -r ${B}/config.h ${D}${PTEST_PATH}
88 cp -r ${B}/backends ${D}${PTEST_PATH}
Andrew Geisslerc926e172021-05-07 16:11:35 -050089 cp -r ${B}/debuginfod ${D}${PTEST_PATH}
Andrew Geissler82c905d2020-04-13 13:39:40 -050090 sed -i '/^Makefile:/c Makefile:' ${D}${PTEST_PATH}/tests/Makefile
91 find ${D}${PTEST_PATH} -type f -name *.[hoc] | xargs -i rm {}
92 fi
93}
94
95EXTRA_OEMAKE_class-native = ""
96EXTRA_OEMAKE_class-nativesdk = ""
97
98BBCLASSEXTEND = "native nativesdk"
99
100# Package utilities separately
Andrew Geisslerd1e89492021-02-12 15:35:20 -0600101PACKAGES =+ "${PN}-binutils libelf libasm libdw libdebuginfod"
Andrew Geissler82c905d2020-04-13 13:39:40 -0500102
103# shared libraries are licensed GPLv2 or GPLv3+, binaries GPLv3+
104# according to NEWS file:
105# "The license is now GPLv2/LGPLv3+ for the libraries and GPLv3+ for stand-alone
106# programs. There is now also a formal CONTRIBUTING document describing how to
107# submit patches."
108LICENSE_${PN}-binutils = "GPLv3+"
109LICENSE_${PN} = "GPLv3+"
110LICENSE_libelf = "GPLv2 | LGPLv3+"
111LICENSE_libasm = "GPLv2 | LGPLv3+"
112LICENSE_libdw = "GPLv2 | LGPLv3+"
Andrew Geisslerd1e89492021-02-12 15:35:20 -0600113LICENSE_libdebuginfod = "GPLv2+ | LGPLv3+"
Andrew Geissler82c905d2020-04-13 13:39:40 -0500114
115FILES_${PN}-binutils = "\
116 ${bindir}/eu-addr2line \
117 ${bindir}/eu-ld \
118 ${bindir}/eu-nm \
119 ${bindir}/eu-readelf \
120 ${bindir}/eu-size \
121 ${bindir}/eu-strip"
122
123FILES_libelf = "${libdir}/libelf-${PV}.so ${libdir}/libelf.so.*"
124FILES_libasm = "${libdir}/libasm-${PV}.so ${libdir}/libasm.so.*"
125FILES_libdw = "${libdir}/libdw-${PV}.so ${libdir}/libdw.so.* ${libdir}/elfutils/lib*"
Andrew Geisslerd1e89492021-02-12 15:35:20 -0600126FILES_libdebuginfod = "${libdir}/libdebuginfod-${PV}.so ${libdir}/libdebuginfod.so.*"
Andrew Geissler82c905d2020-04-13 13:39:40 -0500127# Some packages have the version preceeding the .so instead properly
128# versioned .so.<version>, so we need to reorder and repackage.
129#FILES_${PN} += "${libdir}/*-${PV}.so ${base_libdir}/*-${PV}.so"
130#FILES_SOLIBSDEV = "${libdir}/libasm.so ${libdir}/libdw.so ${libdir}/libelf.so"
131
132# The package contains symlinks that trip up insane
133INSANE_SKIP_${MLPREFIX}libdw = "dev-so"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500134# The nlist binary in the tests uses explicitly minimal compiler flags
135INSANE_SKIP_${PN}-ptest += "ldflags"
Andrew Geissler82c905d2020-04-13 13:39:40 -0500136
137# avoid stripping some generated binaries otherwise some of the tests such as test-nlist,
138# run-strip-reloc.sh, run-strip-strmerge.sh and so on will fail
139INHIBIT_PACKAGE_STRIP_FILES = "\
140 ${PKGD}${PTEST_PATH}/tests/test-nlist \
141 ${PKGD}${PTEST_PATH}/tests/elfstrmerge \
142 ${PKGD}${PTEST_PATH}/tests/backtrace-child \
143 ${PKGD}${PTEST_PATH}/tests/backtrace-data \
144 ${PKGD}${PTEST_PATH}/tests/backtrace-dwarf \
145 ${PKGD}${PTEST_PATH}/tests/deleted \
Andrew Geisslerc926e172021-05-07 16:11:35 -0500146 ${PKGD}${PTEST_PATH}/tests/dwfllines \
Andrew Geissler82c905d2020-04-13 13:39:40 -0500147 ${PKGD}${PTEST_PATH}/src/strip \
148 ${PKGD}${PTEST_PATH}/src/addr2line \
149 ${PKGD}${PTEST_PATH}/src/elfcmp \
150 ${PKGD}${PTEST_PATH}/src/objdump \
151 ${PKGD}${PTEST_PATH}/src/readelf \
152 ${PKGD}${PTEST_PATH}/src/nm \
153 ${PKGD}${PTEST_PATH}/src/elflint \
154 ${PKGD}${PTEST_PATH}/src/elfclassify \
155 ${PKGD}${PTEST_PATH}/src/stack \
156 ${PKGD}${PTEST_PATH}/src/unstrip \
157 ${PKGD}${PTEST_PATH}/libelf/libelf.so \
158 ${PKGD}${PTEST_PATH}/libdw/libdw.so \
159 ${PKGD}${PTEST_PATH}/libasm/libasm.so \
160 ${PKGD}${PTEST_PATH}/backends/libebl_i386.so \
161 ${PKGD}${PTEST_PATH}/backends/libebl_x86_64.so \
162"
163
Andrew Geisslerc926e172021-05-07 16:11:35 -0500164PRIVATE_LIBS_${PN}-ptest = "libdw.so.1 libelf.so.1 libasm.so.1 libdebuginfod.so.1"