Home | History | Annotate | Download | only in strace
      1 #
      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 #
     16 
     17 LOCAL_PATH := $(call my-dir)
     18 
     19 #
     20 # To update:
     21 #
     22 
     23 #  git remote add strace git://git.code.sf.net/p/strace/code
     24 #  git fetch strace
     25 #  git merge strace/master
     26 #  mm -j32
     27 #  # (Make any necessary Android.mk changes and test the new strace.)
     28 #  git push aosp HEAD:master  # Push directly, avoiding gerrit.
     29 #  git push aosp HEAD:refs/for/master  # Push to gerrit.
     30 #
     31 #  # Now commit any necessary Android.mk changes like normal:
     32 #  repo start post-sync .
     33 #  git commit -a
     34 #
     35 
     36 # -------------------------------------------------------------------------
     37 
     38 include $(CLEAR_VARS)
     39 
     40 strace_version := $(shell grep Version $(LOCAL_PATH)/strace.spec | cut -d " " -f 2)
     41 
     42 LOCAL_SRC_FILES := \
     43     aio.c \
     44     bjm.c \
     45     block.c \
     46     count.c \
     47     desc.c \
     48     fanotify.c \
     49     file.c \
     50     inotify.c \
     51     io.c \
     52     ioctl.c \
     53     ioprio.c \
     54     ipc.c \
     55     kexec.c \
     56     keyctl.c \
     57     ldt.c \
     58     loop.c \
     59     mem.c \
     60     mtd.c \
     61     net.c \
     62     pathtrace.c \
     63     process.c \
     64     ptp.c \
     65     quota.c \
     66     reboot.c \
     67     resource.c \
     68     scsi.c \
     69     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 \
     78     vsprintf.c \
     79 
     80 LOCAL_SHARED_LIBRARIES :=
     81 
     82 LOCAL_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 \
    105     -DHAVE_ELF_H=1 \
    106     -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 \
    127     -DHAVE_STRUCT_FLOCK64=1 \
    128     -DHAVE_STRUCT_MSGHDR_MSG_CONTROL=1 \
    129     -DHAVE_STRUCT_SIGCONTEXT=1 \
    130     -DHAVE_STRUCT_SIGEVENT__SIGEV_UN__PAD=1 \
    131     -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)"' \
    144     -DSIZEOF_OFF_T=SIZEOF_LONG \
    145     -DSIZEOF_LONG_LONG=8 \
    146     -DSTDC_HEADERS=1 \
    147     -DSTRACE_KNOWS_ONLY_EABI=1 \
    148     -D_LFS64_LARGEFILE=1 \
    149 
    150 LOCAL_CFLAGS += -D_GNU_SOURCE=1 -D_POSIX_SOURCE=1
    151 
    152 LOCAL_CFLAGS_32 += -DSIZEOF_LONG=4 -DSIZEOF_RLIM_T=4 -DHAVE_STAT64=1
    153 LOCAL_CFLAGS_64 += -DSIZEOF_LONG=8 -DSIZEOF_RLIM_T=8
    154 
    155 LOCAL_CFLAGS_arm += -DARM=1
    156 LOCAL_CFLAGS_arm += -DHAVE_STRUCT___OLD_KERNEL_STAT=1
    157 
    158 LOCAL_CFLAGS_arm64 += -DAARCH64=1
    159 
    160 LOCAL_CFLAGS_mips += -DMIPS=1
    161 LOCAL_CFLAGS_mips += -DHAVE_ASM_SYSMIPS_H=1
    162 
    163 LOCAL_CFLAGS_x86 += -DI386=1
    164 LOCAL_CFLAGS_x86 += -DHAVE_STRUCT___OLD_KERNEL_STAT=1
    165 
    166 LOCAL_CFLAGS_x86_64 += -DX86_64=1
    167 
    168 LOCAL_CFLAGS += \
    169     -Wall \
    170     -Wno-missing-field-initializers \
    171     -Wno-unused-parameter \
    172     -Wno-sign-compare \
    173 
    174 LOCAL_C_INCLUDES := \
    175     $(LOCAL_PATH)/linux
    176 
    177 LOCAL_C_INCLUDES_arm := $(LOCAL_PATH)/linux/arm
    178 LOCAL_C_INCLUDES_arm64 := $(LOCAL_PATH)/linux/aarch64
    179 LOCAL_C_INCLUDES_mips := $(LOCAL_PATH)/linux/mips
    180 LOCAL_C_INCLUDES_mips64 := $(LOCAL_PATH)/linux/mips
    181 LOCAL_C_INCLUDES_x86 := $(LOCAL_PATH)/linux/i386
    182 LOCAL_C_INCLUDES_x86_64 := $(LOCAL_PATH)/linux/x86_64
    183 
    184 LOCAL_MODULE := strace
    185 
    186 LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
    187 
    188 LOCAL_MODULE_TAGS := debug
    189 
    190 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
    191 
    192 include $(BUILD_EXECUTABLE)
    193 
    194 
    195 # -------------------------------------------------------------------------
    196 
    197 .PHONY: update-ioctls
    198 update-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.
    214 ifneq (,$(filter $(TARGET_OUT_EXECUTABLES)/ioctlsort,$(MAKECMDGOALS)))
    215 include $(CLEAR_VARS)
    216 LOCAL_SRC_FILES := linux/ioctlsort.c
    217 LOCAL_CFLAGS += -include asm/types.h -include linux/ashmem.h
    218 LOCAL_CFLAGS += -Wno-unused-parameter
    219 LOCAL_MODULE := ioctlsort
    220 LOCAL_MODULE_TAGS := optional
    221 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
    222 include $(BUILD_EXECUTABLE)
    223 endif
    224 
    225 # -------------------------------------------------------------------------
    226 
    227 include $(LOCAL_PATH)/test/Android.mk
    228