Android.mk revision 7c5383286e1ab88ef2b871ca02286fcddc232734
1# Copyright 2006 The Android Open Source Project
2
3LOCAL_PATH := $(my-dir)
4
5# -------------------------------------------------------------------------
6
7include $(CLEAR_VARS)
8
9strace_version := $(shell grep Version $(LOCAL_PATH)/strace.spec | cut -d " " -f 2)
10
11LOCAL_SRC_FILES := \
12    aio.c \
13    bjm.c \
14    block.c \
15    count.c \
16    desc.c \
17    fanotify.c \
18    file.c \
19    inotify.c \
20    io.c \
21    ioctl.c \
22    ioprio.c \
23    ipc.c \
24    kexec.c \
25    keyctl.c \
26    loop.c \
27    mem.c \
28    mtd.c \
29    net.c \
30    pathtrace.c \
31    process.c \
32    ptp.c \
33    quota.c \
34    reboot.c \
35    resource.c \
36    scsi.c \
37    signal.c \
38    sock.c \
39    strace.c \
40    stream.c \
41    syscall.c \
42    system.c \
43    term.c \
44    time.c \
45    util.c \
46    vsprintf.c \
47
48LOCAL_SHARED_LIBRARIES :=
49
50LOCAL_CFLAGS := \
51    -DGETGROUPS_T=gid_t \
52    -DHAVE_ASM_SIGCONTEXT_H=1 \
53    -DHAVE_DECL_PTRACE_EVENT_FORK=1 \
54    -DHAVE_DECL_PTRACE_EVENT_VFORK=1 \
55    -DHAVE_DECL_PTRACE_EVENT_CLONE=1 \
56    -DHAVE_DECL_PTRACE_EVENT_EXEC=1 \
57    -DHAVE_DECL_PTRACE_EVENT_VFORK_DONE=1 \
58    -DHAVE_DECL_PTRACE_EVENT_EXIT=1 \
59    -DHAVE_DECL_PTRACE_GETEVENTMSG=1 \
60    -DHAVE_DECL_PTRACE_GETSIGINFO=1 \
61    -DHAVE_DECL_PTRACE_O_TRACECLONE=1 \
62    -DHAVE_DECL_PTRACE_O_TRACEEXEC=1 \
63    -DHAVE_DECL_PTRACE_O_TRACEEXIT=1 \
64    -DHAVE_DECL_PTRACE_O_TRACEFORK=1 \
65    -DHAVE_DECL_PTRACE_O_TRACESYSGOOD=1 \
66    -DHAVE_DECL_PTRACE_O_TRACEVFORK=1 \
67    -DHAVE_DECL_PTRACE_SETOPTIONS=1 \
68    -UHAVE_DECL_IO_CMD_PWRITE \
69    -UHAVE_DECL_IO_CMD_PWRITEV \
70    -UHAVE_DECL_LO_FLAGS_AUTOCLEAR \
71    -UHAVE_DECL_LO_FLAGS_PARTSCAN \
72    -DHAVE_DECL_SYS_ERRLIST=1 \
73    -DHAVE_ELF_H=1 \
74    -DHAVE_FORK=1 \
75    -DHAVE_IF_INDEXTONAME=1 \
76    -DHAVE_INET_NTOP=1 \
77    -DHAVE_LINUX_CAPABILITY_H=1 \
78    -DHAVE_LINUX_ICMP_H=1 \
79    -DHAVE_LINUX_IF_PACKET_H=1 \
80    -DHAVE_LINUX_IN6_H=1 \
81    -DHAVE_LINUX_NETLINK_H=1 \
82    -DHAVE_LITTLE_ENDIAN_LONG_LONG=1 \
83    -DHAVE_LONG_LONG=1 \
84    -DHAVE_NETINET_TCP_H=1 \
85    -DHAVE_NETINET_UDP_H=1 \
86    -DHAVE_POLL_H=1 \
87    -DHAVE_PRCTL=1 \
88    -DHAVE_SENDMSG=1 \
89    -DHAVE_SIGACTION=1 \
90    -DHAVE_SIGINFO_T=1 \
91    -DHAVE_SIG_ATOMIC_T=1 \
92    -DHAVE_STATFS64=1 \
93    -DHAVE_STDBOOL_H=1 \
94    -DHAVE_STRERROR=1 \
95    -DHAVE_STRUCT_FLOCK64=1 \
96    -DHAVE_STRUCT_MSGHDR_MSG_CONTROL=1 \
97    -DHAVE_STRUCT_SIGCONTEXT \
98    -DHAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID=1 \
99    -DHAVE_STRUCT_STAT_ST_BLKSIZE=1 \
100    -DHAVE_STRUCT_STAT_ST_BLOCKS=1 \
101    -DHAVE_STRUCT_STAT_ST_RDEV=1 \
102    -DHAVE_STRUCT_USER_DESC=1 \
103    -DHAVE_SYS_EPOLL_H=1 \
104    -DHAVE_SYS_IOCTL_H=1 \
105    -DHAVE_SYS_POLL_H=1 \
106    -DHAVE_SYS_REG_H=1 \
107    -DHAVE_SYS_VFS_H=1 \
108    -DMAJOR_IN_SYSMACROS \
109    -DPACKAGE_NAME='"strace"' \
110    -DVERSION='"$(strace_version)"' \
111    -DSIZEOF_LONG_LONG=8 \
112    -DSTDC_HEADERS=1 \
113    -DSTRACE_KNOWS_ONLY_EABI=1 \
114    -D_LFS64_LARGEFILE=1 \
115
116LOCAL_CFLAGS += -D_GNU_SOURCE=1 -D_POSIX_SOURCE=1
117
118LOCAL_CFLAGS_64 += -DSIZEOF_LONG=8 -DSIZEOF_RLIM_T=8
119LOCAL_CFLAGS_32 += -DSIZEOF_LONG=4 -DSIZEOF_RLIM_T=4 -DHAVE_STAT64=1
120
121LOCAL_CFLAGS_arm += -DARM=1
122LOCAL_CFLAGS_arm += -DHAVE_STRUCT___OLD_KERNEL_STAT=1
123
124LOCAL_CFLAGS_arm64 += -DAARCH64=1
125
126LOCAL_CFLAGS_mips += -DMIPS=1
127LOCAL_CFLAGS_mips += -DHAVE_ASM_SYSMIPS_H=1
128
129LOCAL_CFLAGS_x86 += -DI386=1
130LOCAL_CFLAGS_x86 += -DHAVE_STRUCT___OLD_KERNEL_STAT=1
131
132LOCAL_CFLAGS_x86_64 += -DX86_64=1
133
134LOCAL_CFLAGS += \
135    -Wall \
136    -Wno-missing-field-initializers \
137    -Wno-unused-parameter \
138    -Wno-sign-compare \
139
140LOCAL_C_INCLUDES := \
141    $(LOCAL_PATH)/linux
142
143LOCAL_C_INCLUDES_arm := $(LOCAL_PATH)/linux/arm
144LOCAL_C_INCLUDES_arm64 := $(LOCAL_PATH)/linux/aarch64
145LOCAL_C_INCLUDES_mips := $(LOCAL_PATH)/linux/mips
146LOCAL_C_INCLUDES_x86 := $(LOCAL_PATH)/linux/i386
147LOCAL_C_INCLUDES_x86_64 := $(LOCAL_PATH)/linux/x86_64
148
149LOCAL_MODULE := strace
150
151LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
152
153LOCAL_MODULE_TAGS := debug
154
155LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
156
157include $(BUILD_EXECUTABLE)
158
159# -------------------------------------------------------------------------
160
161.PHONY: update-ioctls
162update-ioctls:
163	# Build the generated .h files needed by ioctlsort from the current bionic uapi headers.
164	cd external/strace; ./linux/ioctlent.sh ../../bionic/libc/kernel/uapi/
165	# Build the ioctlsort tool.
166	ONE_SHOT_MAKEFILE=external/strace/Android.mk make -f build/core/main.mk $(TARGET_OUT_EXECUTABLES)/ioctlsort
167	# Remove the generated .h files now we've built ioctlsort.
168	rm external/strace/ioctls.h external/strace/ioctldefs.h
169	# Run the ioctlsort tool on the target to generate the one file we do want to check in.
170	adb sync
171	adb shell ioctlsort | tr -d '\r' > external/strace/linux/ioctlent.h
172	# Rebuild strace with the new "ioctlent.h".
173	ONE_SHOT_MAKEFILE=external/strace/Android.mk make -f build/core/main.mk
174
175# We don't build ioctlsort unless really necessary, because we don't check
176# in the temporary files needed to build it. This tool is only necessary
177# when updating strace's list of ioctls.
178ifneq (,$(filter ioctlsort,$(MAKECMDGOALS)))
179include $(CLEAR_VARS)
180LOCAL_SRC_FILES := linux/ioctlsort.c
181LOCAL_CFLAGS += -include asm/types.h -include linux/ashmem.h
182LOCAL_CFLAGS += -Wno-unused-parameter
183LOCAL_MODULE := ioctlsort
184LOCAL_MODULE_TAGS := optional
185LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
186include $(BUILD_EXECUTABLE)
187endif
188
189# -------------------------------------------------------------------------
190
191include $(call all-subdir-makefiles)
192