blob: b027787adeea1c62d90a17fbf2edcbee27300e96 [file] [log] [blame]
The Android Open Source Projectdd7bc332009-03-03 19:32:55 -08001LOCAL_PATH:= $(call my-dir)
2include $(CLEAR_VARS)
3
4TOOLS := \
5 ls \
6 mount \
7 cat \
8 ps \
9 kill \
10 ln \
11 insmod \
12 rmmod \
13 lsmod \
14 ifconfig \
15 setconsole \
16 rm \
17 mkdir \
18 rmdir \
19 reboot \
20 getevent \
21 sendevent \
22 date \
23 wipe \
24 sync \
25 umount \
26 start \
27 stop \
28 notify \
29 cmp \
30 dmesg \
31 route \
32 hd \
33 dd \
34 df \
35 getprop \
36 setprop \
37 watchprops \
38 log \
39 sleep \
40 renice \
41 printenv \
42 smd \
43 chmod \
Dries Harnie2a743732010-01-18 17:44:33 +010044 chown \
San Mehat72eead42009-07-06 11:10:03 -070045 newfs_msdos \
The Android Open Source Projectdd7bc332009-03-03 19:32:55 -080046 netstat \
47 ioctl \
48 mv \
49 schedtop \
50 top \
51 iftop \
52 id \
Mike Lockwooda699d622010-04-09 15:27:16 -040053 uptime \
Arve Hjønnevåg7c953d02009-09-17 17:30:55 -070054 vmstat \
San Mehat10d469b2010-02-25 14:02:55 -080055 nandread \
Kenny Root8b9b1052010-07-27 09:20:02 -070056 ionice \
Ken Sumrall795165b2011-04-05 20:46:30 -070057 touch \
Scott Andersond0455c92012-01-11 18:13:26 -080058 lsof \
Jeff Sharkey57df14c2012-07-13 16:25:33 -070059 du \
Michael Wright52abb4b2012-07-15 15:52:50 -070060 md5 \
61 clear
The Android Open Source Projectdd7bc332009-03-03 19:32:55 -080062
Stephen Smalley8290d102012-01-13 08:53:56 -050063ifeq ($(HAVE_SELINUX),true)
64
65TOOLS += \
66 getenforce \
67 setenforce \
68 chcon \
69 restorecon \
70 runcon \
71 getsebool \
72 setsebool \
73 load_policy
74
75endif
76
77
Erik Gillingb76f0ff2011-04-28 14:23:26 -070078ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
79TOOLS += r
80endif
81
Jeff Sharkey57df14c2012-07-13 16:25:33 -070082ALL_TOOLS = $(TOOLS)
83ALL_TOOLS += \
Jeff Sharkey3e8b1582012-07-13 16:37:13 -070084 cp \
85 grep
Jeff Sharkey57df14c2012-07-13 16:25:33 -070086
87LOCAL_SRC_FILES := \
David 'Digit' Turnera8d1afb2011-01-06 08:39:44 +010088 dynarray.c \
The Android Open Source Projectdd7bc332009-03-03 19:32:55 -080089 toolbox.c \
Jeff Sharkey57df14c2012-07-13 16:25:33 -070090 $(patsubst %,%.c,$(TOOLS)) \
Jeff Sharkey3e8b1582012-07-13 16:37:13 -070091 cp/cp.c cp/utils.c \
92 grep/grep.c grep/fastgrep.c grep/file.c grep/queue.c grep/util.c
The Android Open Source Projectdd7bc332009-03-03 19:32:55 -080093
Mike Lockwood12353892010-12-29 08:33:24 -050094LOCAL_SHARED_LIBRARIES := libcutils libc libusbhost
Erik Gillingfd1e8552010-12-09 14:52:53 -080095
Scott Andersond0455c92012-01-11 18:13:26 -080096LOCAL_C_INCLUDES := bionic/libc/bionic
97
Stephen Smalley8290d102012-01-13 08:53:56 -050098ifeq ($(HAVE_SELINUX),true)
99
100LOCAL_CFLAGS += -DHAVE_SELINUX
101LOCAL_SHARED_LIBRARIES += libselinux
102LOCAL_C_INCLUDES += external/libselinux/include
103
104endif
105
Jeff Sharkey57df14c2012-07-13 16:25:33 -0700106LOCAL_MODULE := toolbox
The Android Open Source Projectdd7bc332009-03-03 19:32:55 -0800107
108# Including this will define $(intermediates).
109#
110include $(BUILD_EXECUTABLE)
111
112$(LOCAL_PATH)/toolbox.c: $(intermediates)/tools.h
113
114TOOLS_H := $(intermediates)/tools.h
Jeff Sharkey57df14c2012-07-13 16:25:33 -0700115$(TOOLS_H): PRIVATE_TOOLS := $(ALL_TOOLS)
The Android Open Source Projectdd7bc332009-03-03 19:32:55 -0800116$(TOOLS_H): PRIVATE_CUSTOM_TOOL = echo "/* file generated automatically */" > $@ ; for t in $(PRIVATE_TOOLS) ; do echo "TOOL($$t)" >> $@ ; done
117$(TOOLS_H): $(LOCAL_PATH)/Android.mk
118$(TOOLS_H):
119 $(transform-generated-source)
120
121# Make #!/system/bin/toolbox launchers for each tool.
122#
Jeff Sharkey57df14c2012-07-13 16:25:33 -0700123SYMLINKS := $(addprefix $(TARGET_OUT)/bin/,$(ALL_TOOLS))
The Android Open Source Projectdd7bc332009-03-03 19:32:55 -0800124$(SYMLINKS): TOOLBOX_BINARY := $(LOCAL_MODULE)
125$(SYMLINKS): $(LOCAL_INSTALLED_MODULE) $(LOCAL_PATH)/Android.mk
126 @echo "Symlink: $@ -> $(TOOLBOX_BINARY)"
127 @mkdir -p $(dir $@)
128 @rm -rf $@
129 $(hide) ln -sf $(TOOLBOX_BINARY) $@
130
131ALL_DEFAULT_INSTALLED_MODULES += $(SYMLINKS)
132
133# We need this so that the installed files could be picked up based on the
134# local module name
135ALL_MODULES.$(LOCAL_MODULE).INSTALLED := \
136 $(ALL_MODULES.$(LOCAL_MODULE).INSTALLED) $(SYMLINKS)