1dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source ProjectLOCAL_PATH:= $(call my-dir)
2dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectinclude $(CLEAR_VARS)
3dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
4dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source ProjectTOOLS := \
5dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	ls \
6dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	mount \
7dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	cat \
8dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	ps \
9dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	kill \
10dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	ln \
11dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	insmod \
12dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	rmmod \
13dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	lsmod \
14dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	ifconfig \
15dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	setconsole \
16dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	rm \
17dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	mkdir \
18dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	rmdir \
19dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	getevent \
20dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	sendevent \
21dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	date \
22dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	wipe \
23dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	sync \
24dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	umount \
25dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	start \
26dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	stop \
27dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	notify \
28dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	cmp \
29dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	dmesg \
30dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	route \
31dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	hd \
32dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	dd \
33dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	df \
34dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	getprop \
35dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	setprop \
36dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	watchprops \
37dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	log \
38dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	sleep \
39dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	renice \
40dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	printenv \
41dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	smd \
42dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	chmod \
432a743730c7d1a8adba8a922f7af46cef0b35363aDries Harnie	chown \
4472eead43c7711ca97b2d7f578e6b8854a2856ce0San Mehat	newfs_msdos \
45dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	netstat \
46dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	ioctl \
47dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	mv \
48dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	schedtop \
49dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	top \
50dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	iftop \
51dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	id \
52a699d6256fca0336b173c524c5b3d8f7d4fcdc25Mike Lockwood	uptime \
537c953d04bcc9070a1bce171e979c5201dd39325bArve Hjønnevåg	vmstat \
5410d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat	nandread \
558b9b105bc7bf6428591d55462b3e727ba7504b29Kenny Root	ionice \
56795165bc1512faa121083c6bf3ce6f6d83ce59e6Ken Sumrall	touch \
57d0455c952d61d36e662f4a95d5e03689ecedca8fScott Anderson	lsof \
5857df14c654a968e5b85d508cbd0871632011cb0eJeff Sharkey	du \
5952abb4b1ef5f0a0939f1485433cf817523caf779Michael Wright	md5 \
60efb5e3c709214cfc45beec5fcc66c93223ffc744Kenny Root	clear \
618290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley	getenforce \
628290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley	setenforce \
638290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley	chcon \
648290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley	restorecon \
658290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley	runcon \
668290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley	getsebool \
678290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley	setsebool \
68367297c3d764eaf6e60880964e1739df13f0b703Rom Lemarchand	load_policy \
69367297c3d764eaf6e60880964e1739df13f0b703Rom Lemarchand	swapon \
70367297c3d764eaf6e60880964e1739df13f0b703Rom Lemarchand	swapoff \
719f50abdee00a9571393ce4a589080b4d6129aaf3Michael Wright	mkswap \
729f50abdee00a9571393ce4a589080b4d6129aaf3Michael Wright	readlink
738290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley
74b76f0ff7005bde136c2e2f7d19359abe320ab90bErik Gillingifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
75b76f0ff7005bde136c2e2f7d19359abe320ab90bErik GillingTOOLS += r
76b76f0ff7005bde136c2e2f7d19359abe320ab90bErik Gillingendif
77b76f0ff7005bde136c2e2f7d19359abe320ab90bErik Gilling
7857df14c654a968e5b85d508cbd0871632011cb0eJeff SharkeyALL_TOOLS = $(TOOLS)
7957df14c654a968e5b85d508cbd0871632011cb0eJeff SharkeyALL_TOOLS += \
803e8b1581ff0f2daa934eb9d6362dfe4e2b4fa8c9Jeff Sharkey	cp \
813e8b1581ff0f2daa934eb9d6362dfe4e2b4fa8c9Jeff Sharkey	grep
8257df14c654a968e5b85d508cbd0871632011cb0eJeff Sharkey
8357df14c654a968e5b85d508cbd0871632011cb0eJeff SharkeyLOCAL_SRC_FILES := \
84a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner	dynarray.c \
85dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	toolbox.c \
8657df14c654a968e5b85d508cbd0871632011cb0eJeff Sharkey	$(patsubst %,%.c,$(TOOLS)) \
873e8b1581ff0f2daa934eb9d6362dfe4e2b4fa8c9Jeff Sharkey	cp/cp.c cp/utils.c \
883e8b1581ff0f2daa934eb9d6362dfe4e2b4fa8c9Jeff Sharkey	grep/grep.c grep/fastgrep.c grep/file.c grep/queue.c grep/util.c
89dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
90d0455c952d61d36e662f4a95d5e03689ecedca8fScott AndersonLOCAL_C_INCLUDES := bionic/libc/bionic
91d0455c952d61d36e662f4a95d5e03689ecedca8fScott Anderson
92b83c09812f30d36285cacdf5cf824c56c267f8e5Kenny RootLOCAL_SHARED_LIBRARIES := \
93b83c09812f30d36285cacdf5cf824c56c267f8e5Kenny Root	libcutils \
94083b5ccba345ed2b4950454f16bd89c5d86b6b27Ying Wang	liblog \
95b83c09812f30d36285cacdf5cf824c56c267f8e5Kenny Root	libc \
96b83c09812f30d36285cacdf5cf824c56c267f8e5Kenny Root	libusbhost \
97b83c09812f30d36285cacdf5cf824c56c267f8e5Kenny Root	libselinux
988290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley
9957df14c654a968e5b85d508cbd0871632011cb0eJeff SharkeyLOCAL_MODULE := toolbox
100dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
101dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# Including this will define $(intermediates).
102dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#
103dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectinclude $(BUILD_EXECUTABLE)
104dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
105dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project$(LOCAL_PATH)/toolbox.c: $(intermediates)/tools.h
106dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
107dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source ProjectTOOLS_H := $(intermediates)/tools.h
10857df14c654a968e5b85d508cbd0871632011cb0eJeff Sharkey$(TOOLS_H): PRIVATE_TOOLS := $(ALL_TOOLS)
109dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project$(TOOLS_H): PRIVATE_CUSTOM_TOOL = echo "/* file generated automatically */" > $@ ; for t in $(PRIVATE_TOOLS) ; do echo "TOOL($$t)" >> $@ ; done
110dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project$(TOOLS_H): $(LOCAL_PATH)/Android.mk
111dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project$(TOOLS_H):
112dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	$(transform-generated-source)
113dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
114dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# Make #!/system/bin/toolbox launchers for each tool.
115dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#
11657df14c654a968e5b85d508cbd0871632011cb0eJeff SharkeySYMLINKS := $(addprefix $(TARGET_OUT)/bin/,$(ALL_TOOLS))
117dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project$(SYMLINKS): TOOLBOX_BINARY := $(LOCAL_MODULE)
118dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project$(SYMLINKS): $(LOCAL_INSTALLED_MODULE) $(LOCAL_PATH)/Android.mk
119dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	@echo "Symlink: $@ -> $(TOOLBOX_BINARY)"
120dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	@mkdir -p $(dir $@)
121dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	@rm -rf $@
122dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	$(hide) ln -sf $(TOOLBOX_BINARY) $@
123dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
124dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source ProjectALL_DEFAULT_INSTALLED_MODULES += $(SYMLINKS)
125dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
126dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# We need this so that the installed files could be picked up based on the
127dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# local module name
128dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source ProjectALL_MODULES.$(LOCAL_MODULE).INSTALLED := \
129dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    $(ALL_MODULES.$(LOCAL_MODULE).INSTALLED) $(SYMLINKS)
130