blob: c0833686de96a921e331af6d5814caa11437b246 [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 Geisslerd1e89492021-02-12 15:35:20 -060024 file://0001-add-support-for-ipkg-to-debuginfod.cxx.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 Geissler90fd73c2021-03-05 15:25:55 -060032SRC_URI[sha256sum] = "c3637c208d309d58714a51e61e63f1958808fead882e9b607506a29e5474f2c5"
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
41PACKAGECONFIG ??= ""
42PACKAGECONFIG[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
47RDEPENDS_${PN}-ptest += "libasm libelf bash make coreutils ${PN}-binutils"
48
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}
89 sed -i '/^Makefile:/c Makefile:' ${D}${PTEST_PATH}/tests/Makefile
90 find ${D}${PTEST_PATH} -type f -name *.[hoc] | xargs -i rm {}
91 fi
92}
93
94EXTRA_OEMAKE_class-native = ""
95EXTRA_OEMAKE_class-nativesdk = ""
96
97BBCLASSEXTEND = "native nativesdk"
98
99# Package utilities separately
Andrew Geisslerd1e89492021-02-12 15:35:20 -0600100PACKAGES =+ "${PN}-binutils libelf libasm libdw libdebuginfod"
Andrew Geissler82c905d2020-04-13 13:39:40 -0500101
102# shared libraries are licensed GPLv2 or GPLv3+, binaries GPLv3+
103# according to NEWS file:
104# "The license is now GPLv2/LGPLv3+ for the libraries and GPLv3+ for stand-alone
105# programs. There is now also a formal CONTRIBUTING document describing how to
106# submit patches."
107LICENSE_${PN}-binutils = "GPLv3+"
108LICENSE_${PN} = "GPLv3+"
109LICENSE_libelf = "GPLv2 | LGPLv3+"
110LICENSE_libasm = "GPLv2 | LGPLv3+"
111LICENSE_libdw = "GPLv2 | LGPLv3+"
Andrew Geisslerd1e89492021-02-12 15:35:20 -0600112LICENSE_libdebuginfod = "GPLv2+ | LGPLv3+"
Andrew Geissler82c905d2020-04-13 13:39:40 -0500113
114FILES_${PN}-binutils = "\
115 ${bindir}/eu-addr2line \
116 ${bindir}/eu-ld \
117 ${bindir}/eu-nm \
118 ${bindir}/eu-readelf \
119 ${bindir}/eu-size \
120 ${bindir}/eu-strip"
121
122FILES_libelf = "${libdir}/libelf-${PV}.so ${libdir}/libelf.so.*"
123FILES_libasm = "${libdir}/libasm-${PV}.so ${libdir}/libasm.so.*"
124FILES_libdw = "${libdir}/libdw-${PV}.so ${libdir}/libdw.so.* ${libdir}/elfutils/lib*"
Andrew Geisslerd1e89492021-02-12 15:35:20 -0600125FILES_libdebuginfod = "${libdir}/libdebuginfod-${PV}.so ${libdir}/libdebuginfod.so.*"
Andrew Geissler82c905d2020-04-13 13:39:40 -0500126# Some packages have the version preceeding the .so instead properly
127# versioned .so.<version>, so we need to reorder and repackage.
128#FILES_${PN} += "${libdir}/*-${PV}.so ${base_libdir}/*-${PV}.so"
129#FILES_SOLIBSDEV = "${libdir}/libasm.so ${libdir}/libdw.so ${libdir}/libelf.so"
130
131# The package contains symlinks that trip up insane
132INSANE_SKIP_${MLPREFIX}libdw = "dev-so"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500133# The nlist binary in the tests uses explicitly minimal compiler flags
134INSANE_SKIP_${PN}-ptest += "ldflags"
Andrew Geissler82c905d2020-04-13 13:39:40 -0500135
136# avoid stripping some generated binaries otherwise some of the tests such as test-nlist,
137# run-strip-reloc.sh, run-strip-strmerge.sh and so on will fail
138INHIBIT_PACKAGE_STRIP_FILES = "\
139 ${PKGD}${PTEST_PATH}/tests/test-nlist \
140 ${PKGD}${PTEST_PATH}/tests/elfstrmerge \
141 ${PKGD}${PTEST_PATH}/tests/backtrace-child \
142 ${PKGD}${PTEST_PATH}/tests/backtrace-data \
143 ${PKGD}${PTEST_PATH}/tests/backtrace-dwarf \
144 ${PKGD}${PTEST_PATH}/tests/deleted \
145 ${PKGD}${PTEST_PATH}/src/strip \
146 ${PKGD}${PTEST_PATH}/src/addr2line \
147 ${PKGD}${PTEST_PATH}/src/elfcmp \
148 ${PKGD}${PTEST_PATH}/src/objdump \
149 ${PKGD}${PTEST_PATH}/src/readelf \
150 ${PKGD}${PTEST_PATH}/src/nm \
151 ${PKGD}${PTEST_PATH}/src/elflint \
152 ${PKGD}${PTEST_PATH}/src/elfclassify \
153 ${PKGD}${PTEST_PATH}/src/stack \
154 ${PKGD}${PTEST_PATH}/src/unstrip \
155 ${PKGD}${PTEST_PATH}/libelf/libelf.so \
156 ${PKGD}${PTEST_PATH}/libdw/libdw.so \
157 ${PKGD}${PTEST_PATH}/libasm/libasm.so \
158 ${PKGD}${PTEST_PATH}/backends/libebl_i386.so \
159 ${PKGD}${PTEST_PATH}/backends/libebl_x86_64.so \
160"
161
162PRIVATE_LIBS_${PN}-ptest = "libdw.so.1 libelf.so.1 libasm.so.1"