#############################################################
#
# strace
#
#############################################################
STRACE_VERSION:=4.5.18
STRACE_SOURCE:=strace-$(STRACE_VERSION).tar.bz2
STRACE_SITE:=http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/strace
STRACE_AUTORECONF:=NO
STRACE_INSTALL_STAGING:=NO
STRACE_INSTALL_TARGET:=YES

STRACE_CONF_ENV:= ac_cv_header_linux_if_packet_h=yes \
		  ac_cv_header_linux_netlink_h=yes \
	          $(if $(BR2_LARGEFILE),ac_cv_type_stat64=yes,ac_cv_type_stat64=no)

$(eval $(call AUTOTARGETS,package,strace))

$(STRACE_HOOK_POST_INSTALL): $(STRACE_TARGET_INSTALL_TARGET)
	$(STRIPCMD) $(STRIP_STRIP_ALL) $(TARGET_DIR)/usr/bin/strace
	rm -f $(TARGET_DIR)/usr/bin/strace-graph
ifeq ($(BR2_CROSS_TOOLCHAIN_TARGET_UTILS),y)
	mkdir -p $(STAGING_DIR)/usr/$(REAL_GNU_TARGET_NAME)/target_utils
	install -c $(TARGET_DIR)/usr/bin/strace \
		$(STAGING_DIR)/usr/$(REAL_GNU_TARGET_NAME)/target_utils/strace
endif
	touch $@
