xref: /OK3568_Linux_fs/yocto/poky/meta/recipes-devtools/elfutils/elfutils_0.186.bb (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunSUMMARY = "Utilities and libraries for handling compiled object files"
2*4882a593SmuzhiyunHOMEPAGE = "https://sourceware.org/elfutils"
3*4882a593SmuzhiyunDESCRIPTION = "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."
4*4882a593SmuzhiyunSECTION = "base"
5*4882a593SmuzhiyunLICENSE = "GPL-2.0-only & GPL-2.0-or-later & LGPL-3.0-or-later & GPL-3.0-or-later"
6*4882a593SmuzhiyunLIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
7*4882a593Smuzhiyun                    file://debuginfod/debuginfod-client.c;endline=27;md5=d2adfd8f5347d4c96e3c280393ce66da \
8*4882a593Smuzhiyun                    "
9*4882a593SmuzhiyunDEPENDS = "zlib virtual/libintl"
10*4882a593SmuzhiyunDEPENDS:append:libc-musl = " argp-standalone fts musl-obstack "
11*4882a593Smuzhiyun# The Debian patches below are from:
12*4882a593Smuzhiyun# http://ftp.de.debian.org/debian/pool/main/e/elfutils/elfutils_0.176-1.debian.tar.xz
13*4882a593SmuzhiyunSRC_URI = "https://sourceware.org/elfutils/ftp/${PV}/${BP}.tar.bz2 \
14*4882a593Smuzhiyun           file://0001-dso-link-change.patch \
15*4882a593Smuzhiyun           file://0002-Fix-elf_cvt_gunhash-if-dest-and-src-are-same.patch \
16*4882a593Smuzhiyun           file://0003-fixheadercheck.patch \
17*4882a593Smuzhiyun           file://0006-Fix-build-on-aarch64-musl.patch \
18*4882a593Smuzhiyun           file://0001-libasm-may-link-with-libbz2-if-found.patch \
19*4882a593Smuzhiyun           file://0001-libelf-elf_end.c-check-data_list.data.d.d_buf-before.patch \
20*4882a593Smuzhiyun           file://0001-skip-the-test-when-gcc-not-deployed.patch \
21*4882a593Smuzhiyun           file://run-ptest \
22*4882a593Smuzhiyun           file://ptest.patch \
23*4882a593Smuzhiyun           file://0001-tests-Makefile.am-compile-test_nlist-with-standard-C.patch \
24*4882a593Smuzhiyun           file://0001-debuginfod-fix-compilation-on-platforms-without-erro.patch \
25*4882a593Smuzhiyun           file://0001-debuginfod-debuginfod-client.c-use-long-for-cache-ti.patch \
26*4882a593Smuzhiyun           "
27*4882a593SmuzhiyunSRC_URI:append:libc-musl = " \
28*4882a593Smuzhiyun           file://0003-musl-utils.patch \
29*4882a593Smuzhiyun           file://0015-config-eu.am-do-not-use-Werror.patch \
30*4882a593Smuzhiyun           "
31*4882a593SmuzhiyunSRC_URI[sha256sum] = "7f6fb9149b1673d38d9178a0d3e0fb8a1ec4f53a9f4c2ff89469609879641177"
32*4882a593Smuzhiyun
33*4882a593Smuzhiyuninherit autotools gettext ptest pkgconfig
34*4882a593SmuzhiyunPTEST_ENABLED:libc-musl = "0"
35*4882a593Smuzhiyun
36*4882a593SmuzhiyunEXTRA_OECONF = "--program-prefix=eu-"
37*4882a593Smuzhiyun
38*4882a593SmuzhiyunDEPENDS_BZIP2 = "bzip2-replacement-native"
39*4882a593SmuzhiyunDEPENDS_BZIP2:class-target = "bzip2"
40*4882a593Smuzhiyun
41*4882a593SmuzhiyunPACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'debuginfod', 'debuginfod libdebuginfod', '', d)}"
42*4882a593SmuzhiyunPACKAGECONFIG[bzip2] = "--with-bzlib,--without-bzlib,${DEPENDS_BZIP2}"
43*4882a593SmuzhiyunPACKAGECONFIG[xz] = "--with-lzma,--without-lzma,xz"
44*4882a593SmuzhiyunPACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd"
45*4882a593SmuzhiyunPACKAGECONFIG[libdebuginfod] = "--enable-libdebuginfod,--disable-libdebuginfod,curl"
46*4882a593SmuzhiyunPACKAGECONFIG[debuginfod] = "--enable-debuginfod,--disable-debuginfod,libarchive sqlite3 libmicrohttpd"
47*4882a593Smuzhiyun
48*4882a593SmuzhiyunRDEPENDS:${PN}-ptest += "libasm libelf bash make coreutils ${PN}-binutils iproute2-ss bsdtar gcc-symlinks binutils-symlinks libgcc-dev"
49*4882a593Smuzhiyun
50*4882a593SmuzhiyunEXTRA_OECONF:append:class-target = " --disable-tests-rpath"
51*4882a593Smuzhiyun
52*4882a593SmuzhiyunRDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils glibc-dbg glibc-dev"
53*4882a593SmuzhiyunINSANE_SKIP:${PN}-ptest = "debug-deps dev-deps"
54*4882a593Smuzhiyun
55*4882a593Smuzhiyundo_compile_ptest() {
56*4882a593Smuzhiyun	cd ${B}/tests
57*4882a593Smuzhiyun	oe_runmake buildtest-TESTS oecheck
58*4882a593Smuzhiyun}
59*4882a593Smuzhiyun
60*4882a593Smuzhiyundo_install_ptest() {
61*4882a593Smuzhiyun	if [ ${PTEST_ENABLED} = "1" ]; then
62*4882a593Smuzhiyun		# copy the files which needed by the cases
63*4882a593Smuzhiyun		TEST_FILES="strip strip.o addr2line elfcmp objdump readelf size.o nm.o nm elflint elfcompress elfclassify stack unstrip"
64*4882a593Smuzhiyun		install -d -m 755                       ${D}${PTEST_PATH}/src
65*4882a593Smuzhiyun		install -d -m 755                       ${D}${PTEST_PATH}/libelf
66*4882a593Smuzhiyun		install -d -m 755                       ${D}${PTEST_PATH}/libdw
67*4882a593Smuzhiyun		install -d -m 755                       ${D}${PTEST_PATH}/libdwfl
68*4882a593Smuzhiyun		install -d -m 755                       ${D}${PTEST_PATH}/libdwelf
69*4882a593Smuzhiyun		install -d -m 755                       ${D}${PTEST_PATH}/libasm
70*4882a593Smuzhiyun		install -d -m 755                       ${D}${PTEST_PATH}/libcpu
71*4882a593Smuzhiyun		install -d -m 755                       ${D}${PTEST_PATH}/libebl
72*4882a593Smuzhiyun		for test_file in ${TEST_FILES}; do
73*4882a593Smuzhiyun			if [ -f ${B}/src/${test_file} ]; then
74*4882a593Smuzhiyun				cp -r ${B}/src/${test_file} ${D}${PTEST_PATH}/src
75*4882a593Smuzhiyun			fi
76*4882a593Smuzhiyun		done
77*4882a593Smuzhiyun		cp ${D}${libdir}/libelf-${PV}.so ${D}${PTEST_PATH}/libelf/libelf.so
78*4882a593Smuzhiyun		cp ${D}${libdir}/libdw-${PV}.so ${D}${PTEST_PATH}/libdw/libdw.so
79*4882a593Smuzhiyun		cp ${D}${libdir}/libasm-${PV}.so ${D}${PTEST_PATH}/libasm/libasm.so
80*4882a593Smuzhiyun		cp ${B}/libcpu/libcpu.a ${D}${PTEST_PATH}/libcpu/
81*4882a593Smuzhiyun		cp ${B}/libebl/libebl.a ${D}${PTEST_PATH}/libebl/
82*4882a593Smuzhiyun		cp ${S}/libelf/*.h             ${D}${PTEST_PATH}/libelf/
83*4882a593Smuzhiyun		cp ${S}/libdw/*.h              ${D}${PTEST_PATH}/libdw/
84*4882a593Smuzhiyun		cp ${S}/libdwfl/*.h            ${D}${PTEST_PATH}/libdwfl/
85*4882a593Smuzhiyun		cp ${S}/libdwelf/*.h           ${D}${PTEST_PATH}/libdwelf/
86*4882a593Smuzhiyun		cp ${S}/libasm/*.h             ${D}${PTEST_PATH}/libasm/
87*4882a593Smuzhiyun		cp -r ${S}/tests/                       ${D}${PTEST_PATH}
88*4882a593Smuzhiyun		cp -r ${B}/tests/*                      ${D}${PTEST_PATH}/tests
89*4882a593Smuzhiyun		cp -r ${B}/config.h                     ${D}${PTEST_PATH}
90*4882a593Smuzhiyun		cp -r ${B}/backends                     ${D}${PTEST_PATH}
91*4882a593Smuzhiyun		cp -r ${B}/debuginfod                   ${D}${PTEST_PATH}
92*4882a593Smuzhiyun		sed -i '/^Makefile:/c Makefile:'        ${D}${PTEST_PATH}/tests/Makefile
93*4882a593Smuzhiyun		find ${D}${PTEST_PATH} -type f -name *.[hoc] | xargs -i rm {}
94*4882a593Smuzhiyun	fi
95*4882a593Smuzhiyun}
96*4882a593Smuzhiyun
97*4882a593SmuzhiyunEXTRA_OEMAKE:class-native = ""
98*4882a593SmuzhiyunEXTRA_OEMAKE:class-nativesdk = ""
99*4882a593Smuzhiyun
100*4882a593SmuzhiyunBBCLASSEXTEND = "native nativesdk"
101*4882a593Smuzhiyun
102*4882a593Smuzhiyun# Package utilities separately
103*4882a593SmuzhiyunPACKAGES =+ "${PN}-binutils libelf libasm libdw libdebuginfod"
104*4882a593Smuzhiyun
105*4882a593Smuzhiyun# Shared libraries are licensed GPL-2.0-only or GPL-3.0-or-later, binaries
106*4882a593Smuzhiyun# GPL-3.0-or-later. According to NEWS file:
107*4882a593Smuzhiyun# "The license is now GPLv2/LGPLv3+ for the libraries and GPLv3+ for stand-alone
108*4882a593Smuzhiyun# programs. There is now also a formal CONTRIBUTING document describing how to
109*4882a593Smuzhiyun# submit patches."
110*4882a593SmuzhiyunLICENSE:${PN}-binutils = "GPL-3.0-or-later"
111*4882a593SmuzhiyunLICENSE:${PN} = "GPL-3.0-or-later"
112*4882a593SmuzhiyunLICENSE:libelf = "GPL-2.0-only | LGPL-3.0-or-later"
113*4882a593SmuzhiyunLICENSE:libasm = "GPL-2.0-only | LGPL-3.0-or-later"
114*4882a593SmuzhiyunLICENSE:libdw = "GPL-2.0-only | LGPL-3.0-or-later"
115*4882a593SmuzhiyunLICENSE:libdebuginfod = "GPL-2.0-or-later | LGPL-3.0-or-later"
116*4882a593Smuzhiyun
117*4882a593SmuzhiyunFILES:${PN}-binutils = "\
118*4882a593Smuzhiyun    ${bindir}/eu-addr2line \
119*4882a593Smuzhiyun    ${bindir}/eu-ld \
120*4882a593Smuzhiyun    ${bindir}/eu-nm \
121*4882a593Smuzhiyun    ${bindir}/eu-readelf \
122*4882a593Smuzhiyun    ${bindir}/eu-size \
123*4882a593Smuzhiyun    ${bindir}/eu-strip"
124*4882a593Smuzhiyun
125*4882a593SmuzhiyunFILES:libelf = "${libdir}/libelf-${PV}.so ${libdir}/libelf.so.*"
126*4882a593SmuzhiyunFILES:libasm = "${libdir}/libasm-${PV}.so ${libdir}/libasm.so.*"
127*4882a593SmuzhiyunFILES:libdw  = "${libdir}/libdw-${PV}.so ${libdir}/libdw.so.* ${libdir}/elfutils/lib*"
128*4882a593SmuzhiyunFILES:libdebuginfod = "${libdir}/libdebuginfod-${PV}.so ${libdir}/libdebuginfod.so.*"
129*4882a593Smuzhiyun# Some packages have the version preceeding the .so instead properly
130*4882a593Smuzhiyun# versioned .so.<version>, so we need to reorder and repackage.
131*4882a593Smuzhiyun#FILES:${PN} += "${libdir}/*-${PV}.so ${base_libdir}/*-${PV}.so"
132*4882a593Smuzhiyun#FILES_SOLIBSDEV = "${libdir}/libasm.so ${libdir}/libdw.so ${libdir}/libelf.so"
133*4882a593Smuzhiyun
134*4882a593Smuzhiyun# The package contains symlinks that trip up insane
135*4882a593SmuzhiyunINSANE_SKIP:${MLPREFIX}libdw = "dev-so"
136*4882a593Smuzhiyun# The nlist binary in the tests uses explicitly minimal compiler flags
137*4882a593SmuzhiyunINSANE_SKIP:${PN}-ptest += "ldflags"
138*4882a593Smuzhiyun
139*4882a593Smuzhiyun# avoid stripping some generated binaries otherwise some of the tests such as test-nlist,
140*4882a593Smuzhiyun# run-strip-reloc.sh, run-strip-strmerge.sh and so on will fail
141*4882a593SmuzhiyunINHIBIT_PACKAGE_STRIP_FILES = "\
142*4882a593Smuzhiyun    ${PKGD}${PTEST_PATH}/tests/test-nlist \
143*4882a593Smuzhiyun    ${PKGD}${PTEST_PATH}/tests/elfstrmerge \
144*4882a593Smuzhiyun    ${PKGD}${PTEST_PATH}/tests/backtrace-child \
145*4882a593Smuzhiyun    ${PKGD}${PTEST_PATH}/tests/backtrace-data \
146*4882a593Smuzhiyun    ${PKGD}${PTEST_PATH}/tests/backtrace-dwarf \
147*4882a593Smuzhiyun    ${PKGD}${PTEST_PATH}/tests/deleted \
148*4882a593Smuzhiyun    ${PKGD}${PTEST_PATH}/tests/dwfllines \
149*4882a593Smuzhiyun    ${PKGD}${PTEST_PATH}/src/strip \
150*4882a593Smuzhiyun    ${PKGD}${PTEST_PATH}/src/addr2line \
151*4882a593Smuzhiyun    ${PKGD}${PTEST_PATH}/src/elfcmp \
152*4882a593Smuzhiyun    ${PKGD}${PTEST_PATH}/src/objdump \
153*4882a593Smuzhiyun    ${PKGD}${PTEST_PATH}/src/readelf \
154*4882a593Smuzhiyun    ${PKGD}${PTEST_PATH}/src/nm \
155*4882a593Smuzhiyun    ${PKGD}${PTEST_PATH}/src/elflint \
156*4882a593Smuzhiyun    ${PKGD}${PTEST_PATH}/src/elfclassify \
157*4882a593Smuzhiyun    ${PKGD}${PTEST_PATH}/src/stack \
158*4882a593Smuzhiyun    ${PKGD}${PTEST_PATH}/src/unstrip \
159*4882a593Smuzhiyun    ${PKGD}${PTEST_PATH}/libelf/libelf.so \
160*4882a593Smuzhiyun    ${PKGD}${PTEST_PATH}/libdw/libdw.so \
161*4882a593Smuzhiyun    ${PKGD}${PTEST_PATH}/libasm/libasm.so \
162*4882a593Smuzhiyun    ${PKGD}${PTEST_PATH}/backends/libebl_i386.so \
163*4882a593Smuzhiyun    ${PKGD}${PTEST_PATH}/backends/libebl_x86_64.so \
164*4882a593Smuzhiyun"
165*4882a593Smuzhiyun
166*4882a593SmuzhiyunPRIVATE_LIBS:${PN}-ptest = "libdw.so.1 libelf.so.1 libasm.so.1 libdebuginfod.so.1"
167