################################################################################ # # valgrind # ################################################################################ VALGRIND_VERSION = 3.16.1 VALGRIND_SITE = https://sourceware.org/pub/valgrind VALGRIND_SOURCE = valgrind-$(VALGRIND_VERSION).tar.bz2 VALGRIND_LICENSE = GPL-2.0, GFDL-1.2 VALGRIND_LICENSE_FILES = COPYING COPYING.DOCS VALGRIND_CONF_OPTS = \ --disable-ubsan \ --without-mpicc VALGRIND_INSTALL_STAGING = YES # Valgrind must be compiled with no stack protection, so forcefully # pass -fno-stack-protector to override what Buildroot may have in # TARGET_CFLAGS if BR2_SSP_* support is enabled. VALGRIND_CFLAGS = \ $(TARGET_CFLAGS) \ -fno-stack-protector # When Valgrind detects a 32-bit MIPS architecture, it forcibly adds # -march=mips32 to CFLAGS; when it detects a 64-bit MIPS architecture, # it forcibly adds -march=mips64. This causes Valgrind to be built # always for the first ISA revision level (R1), even when the user has # configured Buildroot for the second ISA revision level (R2). # # Override the CFLAGS variable (which Valgrind appends to its CFLAGS) # and pass the right -march option, so they take precedence over # Valgrind's wrongfully detected value. ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y) VALGRIND_CFLAGS += -march="$(GCC_TARGET_ARCH)" endif VALGRIND_CONF_ENV = CFLAGS="$(VALGRIND_CFLAGS)" # fix uclibc configure c99 support detection VALGRIND_CONF_ENV += ac_cv_prog_cc_c99='-std=gnu99' # On ARM, Valgrind only supports ARMv7, and uses the arch part of the # host tuple to determine whether it's being built for ARMv7 or # not. Therefore, we adjust the host tuple to specify we're on # ARMv7. The valgrind package is guaranteed, through Config.in, to # only be selected on ARMv7-A platforms. ifeq ($(BR2_ARM_CPU_ARMV7A),y) VALGRIND_CONF_OPTS += \ --host=$(patsubst arm-%,armv7-%,$(GNU_TARGET_NAME)) endif ifeq ($(BR2_GCC_ENABLE_LTO),y) VALGRIND_CONF_OPTS += --enable-lto else VALGRIND_CONF_OPTS += --disable-lto endif define VALGRIND_INSTALL_UCLIBC_SUPP $(INSTALL) -D -m 0644 package/valgrind/uclibc.supp $(TARGET_DIR)/usr/lib/valgrind/uclibc.supp endef VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_INSTALL_UCLIBC_SUPP ifeq ($(BR2_PACKAGE_VALGRIND_MEMCHECK),) define VALGRIND_REMOVE_MEMCHECK rm -f $(TARGET_DIR)/usr/lib/valgrind/*memcheck* endef VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_MEMCHECK endif ifeq ($(BR2_PACKAGE_VALGRIND_CACHEGRIND),) define VALGRIND_REMOVE_CACHEGRIND rm -f $(TARGET_DIR)/usr/lib/valgrind/*cachegrind* for i in cg_annotate cg_diff cg_merge; do \ rm -f $(TARGET_DIR)/usr/bin/$$i ; \ done endef VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_CACHEGRIND endif ifeq ($(BR2_PACKAGE_VALGRIND_CALLGRIND),) define VALGRIND_REMOVE_CALLGRIND rm -f $(TARGET_DIR)/usr/lib/valgrind/*callgrind* for i in callgrind_annotate callgrind_control ; do \ rm -f $(TARGET_DIR)/usr/bin/$$i ; \ done endef VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_CALLGRIND endif ifeq ($(BR2_PACKAGE_VALGRIND_HELGRIND),) define VALGRIND_REMOVE_HELGRIND rm -f $(TARGET_DIR)/usr/lib/valgrind/*helgrind* endef VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_HELGRIND endif ifeq ($(BR2_PACKAGE_VALGRIND_DRD),) define VALGRIND_REMOVE_DRD rm -f $(TARGET_DIR)/usr/lib/valgrind/*drd* endef VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_DRD endif ifeq ($(BR2_PACKAGE_VALGRIND_MASSIF),) define VALGRIND_REMOVE_MASSIF rm -f $(TARGET_DIR)/usr/lib/valgrind/*massif* rm -f $(TARGET_DIR)/usr/bin/ms_script endef VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_MASSIF endif ifeq ($(BR2_PACKAGE_VALGRIND_DHAT),) define VALGRIND_REMOVE_DHAT rm -f $(TARGET_DIR)/usr/lib/valgrind/*dhat* endef VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_DHAT endif ifeq ($(BR2_PACKAGE_VALGRIND_SGCHECK),) define VALGRIND_REMOVE_SGCHECK rm -f $(TARGET_DIR)/usr/lib/valgrind/*sgcheck* endef VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_SGCHECK endif ifeq ($(BR2_PACKAGE_VALGRIND_BBV),) define VALGRIND_REMOVE_BBV rm -f $(TARGET_DIR)/usr/lib/valgrind/*bbv* endef VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_BBV endif ifeq ($(BR2_PACKAGE_VALGRIND_LACKEY),) define VALGRIND_REMOVE_LACKEY rm -f $(TARGET_DIR)/usr/lib/valgrind/*lackey* endef VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_LACKEY endif ifeq ($(BR2_PACKAGE_VALGRIND_NULGRIND),) define VALGRIND_REMOVE_NULGRIND rm -f $(TARGET_DIR)/usr/lib/valgrind/*none* endef VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_NULGRIND endif $(eval $(autotools-package))