Valgrind likes to control its own optimisation flags. It generally defaults to -O2 but uses -O0 for some specific test apps etc. Passing our own flags (via CFLAGS) means we interfere with that. Giving valgrind control of optimisation is hopefully an even better solution than the previous one of forcing -O0 for all tests. http://git.openembedded.org/openembedded-core/commit/?h=master-next&id=98c4a3ffb8dca10739be600e8d6df7fb6aa4958f (From OE-Core rev: 1c8ed8dada8d3399bd825d6f34fc440ce793ec4e) Signed-off-by: Andre McCurdy <armccurdy@gmail.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
114 lines
4 KiB
BlitzBasic
114 lines
4 KiB
BlitzBasic
SUMMARY = "Valgrind memory debugger and instrumentation framework"
|
|
HOMEPAGE = "http://valgrind.org/"
|
|
BUGTRACKER = "http://valgrind.org/support/bug_reports.html"
|
|
LICENSE = "GPLv2 & GPLv2+ & BSD"
|
|
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
|
|
file://include/pub_tool_basics.h;beginline=1;endline=29;md5=ebb8e640ef633f940c425686c873f9fa \
|
|
file://include/valgrind.h;beginline=1;endline=56;md5=4b5e24908e53016ea561c45f4234a327 \
|
|
file://COPYING.DOCS;md5=24ea4c7092233849b4394699333b5c56"
|
|
|
|
X11DEPENDS = "virtual/libx11"
|
|
DEPENDS = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '${X11DEPENDS}', '', d)} \
|
|
${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'boost', '', d)} \
|
|
"
|
|
|
|
SRC_URI = "http://www.valgrind.org/downloads/valgrind-${PV}.tar.bz2 \
|
|
file://fixed-perl-path.patch \
|
|
file://Added-support-for-PPC-instructions-mfatbu-mfatbl.patch \
|
|
file://remove-arm-variant-specific.patch \
|
|
file://run-ptest \
|
|
file://11_mips-link-tool.patch \
|
|
file://0002-remove-rpath.patch \
|
|
file://0004-Fix-out-of-tree-builds.patch \
|
|
file://0005-Modify-vg_test-wrapper-to-support-PTEST-formats.patch \
|
|
file://0001-Remove-tests-that-fail-to-build-on-some-PPC32-config.patch \
|
|
"
|
|
|
|
SRC_URI[md5sum] = "4ea62074da73ae82e0162d6550d3f129"
|
|
SRC_URI[sha256sum] = "6c396271a8c1ddd5a6fb9abe714ea1e8a86fce85b30ab26b4266aeb4c2413b42"
|
|
|
|
COMPATIBLE_HOST = '(i.86|x86_64|arm|aarch64|mips|powerpc|powerpc64).*-linux'
|
|
|
|
# valgrind supports armv7 and above
|
|
COMPATIBLE_HOST_armv4 = 'null'
|
|
COMPATIBLE_HOST_armv5 = 'null'
|
|
COMPATIBLE_HOST_armv6 = 'null'
|
|
|
|
inherit autotools ptest
|
|
|
|
EXTRA_OECONF = "--enable-tls --without-mpicc"
|
|
EXTRA_OECONF += "${@['--enable-only32bit','--enable-only64bit'][d.getVar('SITEINFO_BITS', True) != '32']}"
|
|
|
|
# valgrind checks host_cpu "armv7*)", so we need to over-ride the autotools.bbclass default --host option
|
|
EXTRA_OECONF_append_arm = " --host=armv7${HOST_VENDOR}-${HOST_OS}"
|
|
|
|
EXTRA_OEMAKE = "-w"
|
|
|
|
# valgrind likes to control its own optimisation flags. It generally defaults
|
|
# to -O2 but uses -O0 for some specific test apps etc. Passing our own flags
|
|
# (via CFLAGS) means we interfere with that.
|
|
SELECTED_OPTIMIZATION = ""
|
|
|
|
CFLAGS_append_libc-uclibc = " -D__UCLIBC__ "
|
|
|
|
do_install_append () {
|
|
install -m 644 ${B}/default.supp ${D}/${libdir}/valgrind/
|
|
}
|
|
|
|
RDEPENDS_${PN} += "perl"
|
|
|
|
# valgrind needs debug information for ld.so at runtime in order to
|
|
# redirect functions like strlen.
|
|
RRECOMMENDS_${PN} += "${TCLIBC}-dbg"
|
|
|
|
RDEPENDS_${PN}-ptest += " sed perl glibc-utils perl-module-file-glob"
|
|
|
|
# One of the tests contains a bogus interpreter path on purpose, and QA
|
|
# check complains about it
|
|
INSANE_SKIP_${PN}-ptest += "file-rdeps"
|
|
|
|
do_compile_ptest() {
|
|
oe_runmake check
|
|
}
|
|
|
|
do_install_ptest() {
|
|
chmod +x ${B}/tests/vg_regtest
|
|
|
|
# The test application binaries are not automatically installed.
|
|
# Grab them from the build directory.
|
|
#
|
|
# The regression tests require scripts and data files that are not
|
|
# copied to the build directory. They must be copied from the
|
|
# source directory.
|
|
saved_dir=$PWD
|
|
for parent_dir in ${S} ${B} ; do
|
|
cd $parent_dir
|
|
|
|
# exclude shell or the package won't install
|
|
rm -rf none/tests/shell* 2>/dev/null
|
|
|
|
subdirs="tests cachegrind/tests callgrind/tests drd/tests helgrind/tests massif/tests memcheck/tests none/tests"
|
|
|
|
# Get the vg test scripts, filters, and expected files
|
|
for dir in $subdirs ; do
|
|
find $dir | cpio -pvdu ${D}${PTEST_PATH}
|
|
done
|
|
cd $saved_dir
|
|
done
|
|
|
|
# clean out build artifacts before building the rpm
|
|
find ${D}${PTEST_PATH} \
|
|
\( -name "Makefile*" \
|
|
-o -name "*.o" \
|
|
-o -name "*.c" \
|
|
-o -name "*.S" \
|
|
-o -name "*.h" \) \
|
|
-exec rm {} \;
|
|
|
|
# needed by massif tests
|
|
cp ${B}/massif/ms_print ${D}${PTEST_PATH}/massif/ms_print
|
|
|
|
# handle multilib
|
|
sed -i s:@libdir@:${libdir}:g ${D}${PTEST_PATH}/run-ptest
|
|
}
|