# Copyright 2006 The Android Open Source Project

ifneq ($(TARGET_SIMULATOR),true)

LOCAL_PATH := $(my-dir)
include $(CLEAR_VARS)

# From autoconf-generated Makefile
strace_SOURCES = strace.c syscall.c util.c desc.c file.c \
                 io.c ioctl.c mem.c net.c process.c bjm.c \
                 resource.c signal.c sock.c system.c term.c time.c \
                 proc.c stream.c

#excluded_sources = ipc.c

LOCAL_SRC_FILES:= $(strace_SOURCES)

LOCAL_SHARED_LIBRARIES :=

# Hack for ARM devices. This version of strace does not support ARM, and the
# patch that was used to add ARM support actually adds the ARM syscalls to
# linux/sh/ (Sega Megadrive/Dreamcast/...) instead of linux/arm/ . The proper
# way to fix this would be to upgrade to a version of strace that does support
# ARM (e.g. 4.5.1.8), but that would mean having to reapply all Android-specific
# changes. Sigh.
ifeq ($(TARGET_ARCH),arm)
	STRACE_ARM_HEADERS := $(LOCAL_PATH)/strace/linux/sh
endif

LOCAL_C_INCLUDES := \
	$(STRACE_ARM_HEADERS) \
	$(KERNEL_HEADERS) \
	$(LOCAL_PATH)/linux \
	$(LOCAL_PATH)/android/arch/$(TARGET_ARCH)

LOCAL_CFLAGS := -DHAVE_CONFIG_H -Dd_fileno=d_ino -D_LFS64_LARGEFILE=1

ifeq ($(TARGET_ARCH),x86)
LOCAL_CFLAGS += -Ulinux
endif

LOCAL_MODULE := strace

LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)

LOCAL_MODULE_TAGS := debug

include $(BUILD_EXECUTABLE)

endif  # TARGET_SIMULATOR != true
