blob: 16ed7c9ddbf8d06f9ad523b944753a07454081fb [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 \
17 file://0004-Disable-the-test-to-convert-euc-jp.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 \
Andrew Geissler82c905d2020-04-13 13:39:40 -050021 file://0001-skip-the-test-when-gcc-not-deployed.patch \
Andrew Geissler82c905d2020-04-13 13:39:40 -050022 file://run-ptest \
23 file://ptest.patch \
Andrew Geissler475cb722020-07-10 16:00:51 -050024 file://0001-tests-Makefile.am-compile-test_nlist-with-standard-C.patch \
Andrew Geisslerd1e89492021-02-12 15:35:20 -060025 file://0001-add-support-for-ipkg-to-debuginfod.cxx.patch \
Andrew Geissler82c905d2020-04-13 13:39:40 -050026 "
27SRC_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 Geissler90fd73c2021-03-05 15:25:55 -060033SRC_URI[sha256sum] = "c3637c208d309d58714a51e61e63f1958808fead882e9b607506a29e5474f2c5"
Andrew Geissler82c905d2020-04-13 13:39:40 -050034
35inherit autotools gettext ptest pkgconfig
36
Andrew Geisslerd1e89492021-02-12 15:35:20 -060037EXTRA_OECONF = "--program-prefix=eu-"
Andrew Geissler82c905d2020-04-13 13:39:40 -050038
39DEPENDS_BZIP2 = "bzip2-replacement-native"
40DEPENDS_BZIP2_class-target = "bzip2"
41
42PACKAGECONFIG ??= ""
43PACKAGECONFIG[bzip2] = "--with-bzlib,--without-bzlib,${DEPENDS_BZIP2}"
44PACKAGECONFIG[xz] = "--with-lzma,--without-lzma,xz"
Andrew Geissler6ce62a22020-11-30 19:58:47 -060045PACKAGECONFIG[libdebuginfod] = "--enable-libdebuginfod,--disable-libdebuginfod,curl"
Andrew Geisslerd1e89492021-02-12 15:35:20 -060046PACKAGECONFIG[debuginfod] = "--enable-debuginfod,--disable-debuginfod,libarchive sqlite3 libmicrohttpd"
Andrew Geissler82c905d2020-04-13 13:39:40 -050047
48RDEPENDS_${PN}-ptest += "libasm libelf bash make coreutils ${PN}-binutils"
49
50EXTRA_OECONF_append_class-target = " --disable-tests-rpath"
51
52RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-utils"
53
54do_compile_ptest() {
55 cd ${B}/tests
56 oe_runmake buildtest-TESTS oecheck
57}
58
59do_install_ptest() {
60 if [ ${PTEST_ENABLED} = "1" ]; then
61 # copy the files which needed by the cases
62 TEST_FILES="strip strip.o addr2line elfcmp objdump readelf size.o nm.o nm elflint elfcompress elfclassify stack unstrip"
63 install -d -m 755 ${D}${PTEST_PATH}/src
64 install -d -m 755 ${D}${PTEST_PATH}/libelf
65 install -d -m 755 ${D}${PTEST_PATH}/libdw
Andrew Geissler6ce62a22020-11-30 19:58:47 -060066 install -d -m 755 ${D}${PTEST_PATH}/libdwfl
67 install -d -m 755 ${D}${PTEST_PATH}/libdwelf
Andrew Geissler82c905d2020-04-13 13:39:40 -050068 install -d -m 755 ${D}${PTEST_PATH}/libasm
Andrew Geissler90fd73c2021-03-05 15:25:55 -060069 install -d -m 755 ${D}${PTEST_PATH}/libcpu
70 install -d -m 755 ${D}${PTEST_PATH}/libebl
Andrew Geissler82c905d2020-04-13 13:39:40 -050071 for test_file in ${TEST_FILES}; do
72 if [ -f ${B}/src/${test_file} ]; then
73 cp -r ${B}/src/${test_file} ${D}${PTEST_PATH}/src
74 fi
75 done
76 cp ${D}${libdir}/libelf-${PV}.so ${D}${PTEST_PATH}/libelf/libelf.so
77 cp ${D}${libdir}/libdw-${PV}.so ${D}${PTEST_PATH}/libdw/libdw.so
78 cp ${D}${libdir}/libasm-${PV}.so ${D}${PTEST_PATH}/libasm/libasm.so
Andrew Geissler90fd73c2021-03-05 15:25:55 -060079 cp ${B}/libcpu/libcpu.a ${D}${PTEST_PATH}/libcpu/
80 cp ${B}/libebl/libebl.a ${D}${PTEST_PATH}/libebl/
Andrew Geissler6ce62a22020-11-30 19:58:47 -060081 cp ${S}/libelf/*.h ${D}${PTEST_PATH}/libelf/
82 cp ${S}/libdw/*.h ${D}${PTEST_PATH}/libdw/
83 cp ${S}/libdwfl/*.h ${D}${PTEST_PATH}/libdwfl/
84 cp ${S}/libdwelf/*.h ${D}${PTEST_PATH}/libdwelf/
85 cp ${S}/libasm/*.h ${D}${PTEST_PATH}/libasm/
Andrew Geissler82c905d2020-04-13 13:39:40 -050086 cp -r ${S}/tests/ ${D}${PTEST_PATH}
87 cp -r ${B}/tests/* ${D}${PTEST_PATH}/tests
88 cp -r ${B}/config.h ${D}${PTEST_PATH}
89 cp -r ${B}/backends ${D}${PTEST_PATH}
90 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 \
146 ${PKGD}${PTEST_PATH}/src/strip \
147 ${PKGD}${PTEST_PATH}/src/addr2line \
148 ${PKGD}${PTEST_PATH}/src/elfcmp \
149 ${PKGD}${PTEST_PATH}/src/objdump \
150 ${PKGD}${PTEST_PATH}/src/readelf \
151 ${PKGD}${PTEST_PATH}/src/nm \
152 ${PKGD}${PTEST_PATH}/src/elflint \
153 ${PKGD}${PTEST_PATH}/src/elfclassify \
154 ${PKGD}${PTEST_PATH}/src/stack \
155 ${PKGD}${PTEST_PATH}/src/unstrip \
156 ${PKGD}${PTEST_PATH}/libelf/libelf.so \
157 ${PKGD}${PTEST_PATH}/libdw/libdw.so \
158 ${PKGD}${PTEST_PATH}/libasm/libasm.so \
159 ${PKGD}${PTEST_PATH}/backends/libebl_i386.so \
160 ${PKGD}${PTEST_PATH}/backends/libebl_x86_64.so \
161"
162
163PRIVATE_LIBS_${PN}-ptest = "libdw.so.1 libelf.so.1 libasm.so.1"