Add toybox getprop and setprop for M trees

Change-Id: I5827b3545f3f0118bd0d9407f812bd62fd26d97c
diff --git a/toolbox/Android.mk b/toolbox/Android.mk
index d54bfa4..4698cd2 100644
--- a/toolbox/Android.mk
+++ b/toolbox/Android.mk
@@ -1,3 +1,4 @@
+TWRP_TOOLBOX_PATH := $(call my-dir)
 LOCAL_PATH := system/core/toolbox
 include $(CLEAR_VARS)
 
@@ -212,6 +213,19 @@
     LOCAL_WHOLE_STATIC_LIBRARIES := $(patsubst %,libtoolbox_%,$(BSD_TOOLS))
 endif
 
+ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 22; echo $$?),0)
+    # Rule to make getprop and setprop in M trees where toybox normally
+    # provides these tools. Toybox does not allow for easy dynamic
+    # configuration, so we would have to include the entire toybox binary
+    # which takes up more space than is necessary so long as we are still
+    # including busybox.
+    LOCAL_SRC_FILES += \
+        ../../../$(TWRP_TOOLBOX_PATH)/dynarray.c \
+        ../../../$(TWRP_TOOLBOX_PATH)/getprop.c \
+        ../../../$(TWRP_TOOLBOX_PATH)/setprop.c
+    OUR_TOOLS += getprop setprop
+endif
+
 LOCAL_MODULE := toolbox_recovery
 LOCAL_MODULE_STEM := toolbox
 LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin