blob: d8246e6b60ff4307b4a6072aa93b51bf6197b5a7 [file] [log] [blame]
Elliott Hughes858a5c72014-02-28 15:58:12 -08001#
2# Copyright (C) 2006 The Android Open Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
The Android Open Source Project34d6eab2009-03-03 19:30:45 -080016
Elliott Hughes858a5c72014-02-28 15:58:12 -080017LOCAL_PATH := $(call my-dir)
Elliott Hughes7c538322014-02-28 10:32:04 -080018
Elliott Hughes4e779b42014-05-07 09:10:38 -070019#
20# To update:
21#
22
Elliott Hughes60b6d902014-06-06 22:42:41 -070023# git remote add strace git://git.code.sf.net/p/strace/code
Elliott Hughes4e779b42014-05-07 09:10:38 -070024# git fetch strace
25# git merge strace/master
26# mm -j32
27# # (Make any necessary Android.mk changes and test the new strace.)
Elliott Hughes60b6d902014-06-06 22:42:41 -070028# git push aosp HEAD:master # Push directly, avoiding gerrit.
29# git push aosp HEAD:refs/for/master # Push to gerrit.
Elliott Hughes4e779b42014-05-07 09:10:38 -070030#
31# # Now commit any necessary Android.mk changes like normal:
32# repo start post-sync .
33# git commit -a
34#
35
Elliott Hughes7c538322014-02-28 10:32:04 -080036# -------------------------------------------------------------------------
37
The Android Open Source Project34d6eab2009-03-03 19:30:45 -080038include $(CLEAR_VARS)
39
Elliott Hughes15fc6a22014-01-09 10:30:06 -080040strace_version := $(shell grep Version $(LOCAL_PATH)/strace.spec | cut -d " " -f 2)
The Android Open Source Project34d6eab2009-03-03 19:30:45 -080041
Elliott Hughesbb0c2d52014-01-07 17:34:14 -080042LOCAL_SRC_FILES := \
Elliott Hughes5dec78d2014-02-26 15:56:23 -080043 aio.c \
Elliott Hughesbb0c2d52014-01-07 17:34:14 -080044 bjm.c \
45 block.c \
46 count.c \
47 desc.c \
Elliott Hughes5dec78d2014-02-26 15:56:23 -080048 fanotify.c \
Elliott Hughesbb0c2d52014-01-07 17:34:14 -080049 file.c \
Elliott Hughes5dec78d2014-02-26 15:56:23 -080050 inotify.c \
Elliott Hughesbb0c2d52014-01-07 17:34:14 -080051 io.c \
52 ioctl.c \
Elliott Hughes5dec78d2014-02-26 15:56:23 -080053 ioprio.c \
Elliott Hughesbb0c2d52014-01-07 17:34:14 -080054 ipc.c \
Elliott Hughes5dec78d2014-02-26 15:56:23 -080055 kexec.c \
56 keyctl.c \
Elliott Hughes51505672014-04-10 11:06:16 -070057 ldt.c \
Elliott Hughesbb0c2d52014-01-07 17:34:14 -080058 loop.c \
59 mem.c \
60 mtd.c \
61 net.c \
62 pathtrace.c \
Elliott Hughesbb0c2d52014-01-07 17:34:14 -080063 process.c \
Elliott Hughes5dec78d2014-02-26 15:56:23 -080064 ptp.c \
Elliott Hughesbb0c2d52014-01-07 17:34:14 -080065 quota.c \
Elliott Hughes5dec78d2014-02-26 15:56:23 -080066 reboot.c \
Elliott Hughesbb0c2d52014-01-07 17:34:14 -080067 resource.c \
Elliott Hughes5dec78d2014-02-26 15:56:23 -080068 scsi.c \
Elliott Hughesbb0c2d52014-01-07 17:34:14 -080069 signal.c \
70 sock.c \
71 strace.c \
72 stream.c \
73 syscall.c \
74 system.c \
75 term.c \
76 time.c \
77 util.c \
Elliott Hughes5dec78d2014-02-26 15:56:23 -080078 vsprintf.c \
The Android Open Source Project34d6eab2009-03-03 19:30:45 -080079
80LOCAL_SHARED_LIBRARIES :=
81
Elliott Hughes15fc6a22014-01-09 10:30:06 -080082LOCAL_CFLAGS := \
83 -DGETGROUPS_T=gid_t \
84 -DHAVE_ASM_SIGCONTEXT_H=1 \
85 -DHAVE_DECL_PTRACE_EVENT_FORK=1 \
86 -DHAVE_DECL_PTRACE_EVENT_VFORK=1 \
87 -DHAVE_DECL_PTRACE_EVENT_CLONE=1 \
88 -DHAVE_DECL_PTRACE_EVENT_EXEC=1 \
89 -DHAVE_DECL_PTRACE_EVENT_VFORK_DONE=1 \
90 -DHAVE_DECL_PTRACE_EVENT_EXIT=1 \
91 -DHAVE_DECL_PTRACE_GETEVENTMSG=1 \
92 -DHAVE_DECL_PTRACE_GETSIGINFO=1 \
93 -DHAVE_DECL_PTRACE_O_TRACECLONE=1 \
94 -DHAVE_DECL_PTRACE_O_TRACEEXEC=1 \
95 -DHAVE_DECL_PTRACE_O_TRACEEXIT=1 \
96 -DHAVE_DECL_PTRACE_O_TRACEFORK=1 \
97 -DHAVE_DECL_PTRACE_O_TRACESYSGOOD=1 \
98 -DHAVE_DECL_PTRACE_O_TRACEVFORK=1 \
99 -DHAVE_DECL_PTRACE_SETOPTIONS=1 \
100 -UHAVE_DECL_IO_CMD_PWRITE \
101 -UHAVE_DECL_IO_CMD_PWRITEV \
102 -UHAVE_DECL_LO_FLAGS_AUTOCLEAR \
103 -UHAVE_DECL_LO_FLAGS_PARTSCAN \
104 -DHAVE_DECL_SYS_ERRLIST=1 \
Elliott Hughesa7f55552014-01-09 16:07:59 -0800105 -DHAVE_ELF_H=1 \
Elliott Hughes15fc6a22014-01-09 10:30:06 -0800106 -DHAVE_FORK=1 \
107 -DHAVE_IF_INDEXTONAME=1 \
108 -DHAVE_INET_NTOP=1 \
109 -DHAVE_LINUX_CAPABILITY_H=1 \
110 -DHAVE_LINUX_ICMP_H=1 \
111 -DHAVE_LINUX_IF_PACKET_H=1 \
112 -DHAVE_LINUX_IN6_H=1 \
113 -DHAVE_LINUX_NETLINK_H=1 \
114 -DHAVE_LITTLE_ENDIAN_LONG_LONG=1 \
115 -DHAVE_LONG_LONG=1 \
116 -DHAVE_NETINET_TCP_H=1 \
117 -DHAVE_NETINET_UDP_H=1 \
118 -DHAVE_POLL_H=1 \
119 -DHAVE_PRCTL=1 \
120 -DHAVE_SENDMSG=1 \
121 -DHAVE_SIGACTION=1 \
122 -DHAVE_SIGINFO_T=1 \
123 -DHAVE_SIG_ATOMIC_T=1 \
124 -DHAVE_STATFS64=1 \
125 -DHAVE_STDBOOL_H=1 \
126 -DHAVE_STRERROR=1 \
Elliott Hughes5dec78d2014-02-26 15:56:23 -0800127 -DHAVE_STRUCT_FLOCK64=1 \
Elliott Hughes15fc6a22014-01-09 10:30:06 -0800128 -DHAVE_STRUCT_MSGHDR_MSG_CONTROL=1 \
Elliott Hughes4e779b42014-05-07 09:10:38 -0700129 -DHAVE_STRUCT_SIGCONTEXT=1 \
130 -DHAVE_STRUCT_SIGEVENT__SIGEV_UN__PAD=1 \
Elliott Hughes15fc6a22014-01-09 10:30:06 -0800131 -DHAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID=1 \
132 -DHAVE_STRUCT_STAT_ST_BLKSIZE=1 \
133 -DHAVE_STRUCT_STAT_ST_BLOCKS=1 \
134 -DHAVE_STRUCT_STAT_ST_RDEV=1 \
135 -DHAVE_STRUCT_USER_DESC=1 \
136 -DHAVE_SYS_EPOLL_H=1 \
137 -DHAVE_SYS_IOCTL_H=1 \
138 -DHAVE_SYS_POLL_H=1 \
139 -DHAVE_SYS_REG_H=1 \
140 -DHAVE_SYS_VFS_H=1 \
141 -DMAJOR_IN_SYSMACROS \
142 -DPACKAGE_NAME='"strace"' \
143 -DVERSION='"$(strace_version)"' \
Elliott Hughes556f9ae2014-03-03 16:08:32 -0800144 -DSIZEOF_OFF_T=SIZEOF_LONG \
Elliott Hughes15fc6a22014-01-09 10:30:06 -0800145 -DSIZEOF_LONG_LONG=8 \
146 -DSTDC_HEADERS=1 \
Elliott Hughes5dec78d2014-02-26 15:56:23 -0800147 -DSTRACE_KNOWS_ONLY_EABI=1 \
Elliott Hughes15fc6a22014-01-09 10:30:06 -0800148 -D_LFS64_LARGEFILE=1 \
149
150LOCAL_CFLAGS += -D_GNU_SOURCE=1 -D_POSIX_SOURCE=1
Elliott Hughesbb0c2d52014-01-07 17:34:14 -0800151
Elliott Hughes4ce18c82014-04-09 19:23:30 -0700152LOCAL_CFLAGS_32 += -DSIZEOF_LONG=4 -DSIZEOF_RLIM_T=4 -DHAVE_STAT64=1
Colin Crossd6b039c2014-01-29 18:09:48 -0800153LOCAL_CFLAGS_64 += -DSIZEOF_LONG=8 -DSIZEOF_RLIM_T=8
Jeff Brownf76f96e2012-03-02 16:23:23 -0800154
Colin Crossd6b039c2014-01-29 18:09:48 -0800155LOCAL_CFLAGS_arm += -DARM=1
156LOCAL_CFLAGS_arm += -DHAVE_STRUCT___OLD_KERNEL_STAT=1
157
158LOCAL_CFLAGS_arm64 += -DAARCH64=1
159
160LOCAL_CFLAGS_mips += -DMIPS=1
161LOCAL_CFLAGS_mips += -DHAVE_ASM_SYSMIPS_H=1
162
163LOCAL_CFLAGS_x86 += -DI386=1
164LOCAL_CFLAGS_x86 += -DHAVE_STRUCT___OLD_KERNEL_STAT=1
165
Elliott Hughes4ce18c82014-04-09 19:23:30 -0700166LOCAL_CFLAGS_x86_64 += -DX86_64=1
Lorenzo Colittia0b125c2009-08-20 15:06:43 -0700167
Elliott Hughesbb0c2d52014-01-07 17:34:14 -0800168LOCAL_CFLAGS += \
Elliott Hughes10bd42d2014-01-08 16:34:09 -0800169 -Wall \
Elliott Hughesbb0c2d52014-01-07 17:34:14 -0800170 -Wno-missing-field-initializers \
171 -Wno-unused-parameter \
172 -Wno-sign-compare \
Jeff Brownf76f96e2012-03-02 16:23:23 -0800173
The Android Open Source Project34d6eab2009-03-03 19:30:45 -0800174LOCAL_C_INCLUDES := \
Elliott Hughes15fc6a22014-01-09 10:30:06 -0800175 $(LOCAL_PATH)/linux
The Android Open Source Project34d6eab2009-03-03 19:30:45 -0800176
Colin Crossd6b039c2014-01-29 18:09:48 -0800177LOCAL_C_INCLUDES_arm := $(LOCAL_PATH)/linux/arm
178LOCAL_C_INCLUDES_arm64 := $(LOCAL_PATH)/linux/aarch64
179LOCAL_C_INCLUDES_mips := $(LOCAL_PATH)/linux/mips
Duane Sand2cafa722014-05-20 12:57:09 -0700180LOCAL_C_INCLUDES_mips64 := $(LOCAL_PATH)/linux/mips
Colin Crossd6b039c2014-01-29 18:09:48 -0800181LOCAL_C_INCLUDES_x86 := $(LOCAL_PATH)/linux/i386
182LOCAL_C_INCLUDES_x86_64 := $(LOCAL_PATH)/linux/x86_64
183
The Android Open Source Project34d6eab2009-03-03 19:30:45 -0800184LOCAL_MODULE := strace
185
186LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
187
188LOCAL_MODULE_TAGS := debug
189
Elliott Hughesbb0c2d52014-01-07 17:34:14 -0800190LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
191
The Android Open Source Project34d6eab2009-03-03 19:30:45 -0800192include $(BUILD_EXECUTABLE)
Elliott Hughes7c538322014-02-28 10:32:04 -0800193
Elliott Hughes858a5c72014-02-28 15:58:12 -0800194
Elliott Hughes7c538322014-02-28 10:32:04 -0800195# -------------------------------------------------------------------------
196
197.PHONY: update-ioctls
198update-ioctls:
199 # Build the generated .h files needed by ioctlsort from the current bionic uapi headers.
200 cd external/strace; ./linux/ioctlent.sh ../../bionic/libc/kernel/uapi/
201 # Build the ioctlsort tool.
202 ONE_SHOT_MAKEFILE=external/strace/Android.mk make -f build/core/main.mk $(TARGET_OUT_EXECUTABLES)/ioctlsort
203 # Remove the generated .h files now we've built ioctlsort.
204 rm external/strace/ioctls.h external/strace/ioctldefs.h
205 # Run the ioctlsort tool on the target to generate the one file we do want to check in.
206 adb sync
207 adb shell ioctlsort | tr -d '\r' > external/strace/linux/ioctlent.h
208 # Rebuild strace with the new "ioctlent.h".
209 ONE_SHOT_MAKEFILE=external/strace/Android.mk make -f build/core/main.mk
210
211# We don't build ioctlsort unless really necessary, because we don't check
212# in the temporary files needed to build it. This tool is only necessary
213# when updating strace's list of ioctls.
Elliott Hughes16488d52014-06-06 22:58:11 -0700214ifneq (,$(filter $(TARGET_OUT_EXECUTABLES)/ioctlsort,$(MAKECMDGOALS)))
Elliott Hughes7c538322014-02-28 10:32:04 -0800215include $(CLEAR_VARS)
216LOCAL_SRC_FILES := linux/ioctlsort.c
217LOCAL_CFLAGS += -include asm/types.h -include linux/ashmem.h
218LOCAL_CFLAGS += -Wno-unused-parameter
219LOCAL_MODULE := ioctlsort
220LOCAL_MODULE_TAGS := optional
221LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
222include $(BUILD_EXECUTABLE)
223endif
224
225# -------------------------------------------------------------------------
226
Elliott Hughes858a5c72014-02-28 15:58:12 -0800227include $(LOCAL_PATH)/test/Android.mk