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	reboot \
20dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	getevent \
21dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	sendevent \
22dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	date \
23dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	wipe \
24dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	sync \
25dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	umount \
26dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	start \
27dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	stop \
28dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	notify \
29dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	cmp \
30dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	dmesg \
31dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	route \
32dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	hd \
33dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	dd \
34dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	df \
35dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	getprop \
36dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	setprop \
37dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	watchprops \
38dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	log \
39dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	sleep \
40dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	renice \
41dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	printenv \
42dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	smd \
43dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	chmod \
442a743730c7d1a8adba8a922f7af46cef0b35363aDries Harnie	chown \
4572eead43c7711ca97b2d7f578e6b8854a2856ce0San Mehat	newfs_msdos \
46dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	netstat \
47dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	ioctl \
48dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	mv \
49dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	schedtop \
50dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	top \
51dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	iftop \
52dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	id \
53a699d6256fca0336b173c524c5b3d8f7d4fcdc25Mike Lockwood	uptime \
547c953d04bcc9070a1bce171e979c5201dd39325bArve Hjønnevåg	vmstat \
5510d469bff9031e857c7a290dae7d6ccf7b3a18f8San Mehat	nandread \
568b9b105bc7bf6428591d55462b3e727ba7504b29Kenny Root	ionice \
57795165bc1512faa121083c6bf3ce6f6d83ce59e6Ken Sumrall	touch \
58d0455c952d61d36e662f4a95d5e03689ecedca8fScott Anderson	lsof \
59d0455c952d61d36e662f4a95d5e03689ecedca8fScott Anderson	md5
60dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
618290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalleyifeq ($(HAVE_SELINUX),true)
628290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley
638290d1083ec7eee3f32265012f5d6be2774c4afcStephen SmalleyTOOLS += \
648290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley	getenforce \
658290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley	setenforce \
668290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley	chcon \
678290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley	restorecon \
688290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley	runcon \
698290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley	getsebool \
708290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley	setsebool \
718290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley	load_policy
728290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley
738290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalleyendif
748290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley
758290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley
76b76f0ff7005bde136c2e2f7d19359abe320ab90bErik Gillingifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
77b76f0ff7005bde136c2e2f7d19359abe320ab90bErik GillingTOOLS += r
78b76f0ff7005bde136c2e2f7d19359abe320ab90bErik Gillingendif
79b76f0ff7005bde136c2e2f7d19359abe320ab90bErik Gilling
80dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source ProjectLOCAL_SRC_FILES:= \
81a8d1afb3e91b043fcd303a40ca4ac9293bbd2781David 'Digit' Turner	dynarray.c \
82dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	toolbox.c \
83dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	$(patsubst %,%.c,$(TOOLS))
84dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
85123538954b9c8ad8fe7c2d755391f0b7cbaa1d6fMike LockwoodLOCAL_SHARED_LIBRARIES := libcutils libc libusbhost
86fd1e8553232aa6f3bfbb609158b24fa2e1c3d40bErik Gilling
87d0455c952d61d36e662f4a95d5e03689ecedca8fScott AndersonLOCAL_C_INCLUDES := bionic/libc/bionic
88d0455c952d61d36e662f4a95d5e03689ecedca8fScott Anderson
898290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalleyifeq ($(HAVE_SELINUX),true)
908290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley
918290d1083ec7eee3f32265012f5d6be2774c4afcStephen SmalleyLOCAL_CFLAGS += -DHAVE_SELINUX
928290d1083ec7eee3f32265012f5d6be2774c4afcStephen SmalleyLOCAL_SHARED_LIBRARIES += libselinux
938290d1083ec7eee3f32265012f5d6be2774c4afcStephen SmalleyLOCAL_C_INCLUDES += external/libselinux/include
948290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley
958290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalleyendif
968290d1083ec7eee3f32265012f5d6be2774c4afcStephen Smalley
97dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source ProjectLOCAL_MODULE:= toolbox
98dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
99dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# Including this will define $(intermediates).
100dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#
101dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectinclude $(BUILD_EXECUTABLE)
102dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
103dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project$(LOCAL_PATH)/toolbox.c: $(intermediates)/tools.h
104dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
105dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source ProjectTOOLS_H := $(intermediates)/tools.h
106dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project$(TOOLS_H): PRIVATE_TOOLS := $(TOOLS)
107dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project$(TOOLS_H): PRIVATE_CUSTOM_TOOL = echo "/* file generated automatically */" > $@ ; for t in $(PRIVATE_TOOLS) ; do echo "TOOL($$t)" >> $@ ; done
108dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project$(TOOLS_H): $(LOCAL_PATH)/Android.mk
109dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project$(TOOLS_H):
110dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	$(transform-generated-source)
111dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
112dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# Make #!/system/bin/toolbox launchers for each tool.
113dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#
114dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source ProjectSYMLINKS := $(addprefix $(TARGET_OUT)/bin/,$(TOOLS))
115dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project$(SYMLINKS): TOOLBOX_BINARY := $(LOCAL_MODULE)
116dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project$(SYMLINKS): $(LOCAL_INSTALLED_MODULE) $(LOCAL_PATH)/Android.mk
117dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	@echo "Symlink: $@ -> $(TOOLBOX_BINARY)"
118dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	@mkdir -p $(dir $@)
119dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	@rm -rf $@
120dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project	$(hide) ln -sf $(TOOLBOX_BINARY) $@
121dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
122dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source ProjectALL_DEFAULT_INSTALLED_MODULES += $(SYMLINKS)
123dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
124dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# We need this so that the installed files could be picked up based on the
125dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project# local module name
126dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source ProjectALL_MODULES.$(LOCAL_MODULE).INSTALLED := \
127dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    $(ALL_MODULES.$(LOCAL_MODULE).INSTALLED) $(SYMLINKS)
128