From a852f95b534f7b8d0c4dfa79878b925c504e1493 Mon Sep 17 00:00:00 2001 From: Dan Willemsen Date: Mon, 8 Jan 2018 13:50:55 -0800 Subject: [PATCH] Convert toolbox to Android.bp This drops the *TOOLS automated logic, though since there are only three tools now, that seems less important. It would have been possible to implement that logic in a Go plugin, but that seems like a lot of overkill to fix a few duplicated entries. See build/soong/README.md for more information. Test: mmma system/core/toolbox Test: List of installed files is the same Test: input.h-labels.h and tools.h are the same Change-Id: I9753083c3f689e689e40001b998b39ad20509598 --- toolbox/Android.bp | 83 +++++++++++++++++++++++++++++++++++++++------- toolbox/Android.mk | 78 ------------------------------------------- 2 files changed, 71 insertions(+), 90 deletions(-) delete mode 100644 toolbox/Android.mk diff --git a/toolbox/Android.bp b/toolbox/Android.bp index 9c2cafac2..de8324af3 100644 --- a/toolbox/Android.bp +++ b/toolbox/Android.bp @@ -1,11 +1,18 @@ -common_cflags = [ - "-Werror", - "-Wno-unused-parameter", - "-Wno-unused-const-variable", - "-include bsd-compatibility.h" -] +cc_defaults { + name: "toolbox_defaults", + + cflags: [ + "-Werror", + "-Wno-unused-parameter", + "-Wno-unused-const-variable", + "-include bsd-compatibility.h", + ], + local_include_dirs: ["upstream-netbsd/include/"], +} cc_library_static { + name: "libtoolbox_dd", + defaults: ["toolbox_defaults"], srcs: [ "upstream-netbsd/bin/dd/args.c", "upstream-netbsd/bin/dd/conv.c", @@ -19,17 +26,68 @@ cc_library_static { "upstream-netbsd/lib/libc/string/swab.c", "upstream-netbsd/lib/libutil/raise_default_signal.c", ], - cflags: common_cflags + [ + cflags: [ "-Dmain=dd_main", "-DNO_CONV", ], - local_include_dirs: ["upstream-netbsd/include/"], - name: "libtoolbox_dd", +} + +genrule { + name: "toolbox_tools", + cmd: "echo '/* file generated automatically */' >$(out) && for t in toolbox dd getevent newfs_msdos getprop; do echo \"TOOL($$t)\" >>$(out); done", + out: ["tools.h"], +} + +genrule { + name: "toolbox_input_labels", + tool_files: ["generate-input.h-labels.py"], + cmd: "$(location) $(in) >$(out)", + srcs: [":kernel_input_headers"], + out: ["input.h-labels.h"], +} + +cc_binary { + name: "toolbox", + defaults: ["toolbox_defaults"], + srcs: [ + "toolbox.c", + "getevent.c", + "getprop.cpp", + "newfs_msdos.c", + ], + generated_headers: [ + "toolbox_tools", + "toolbox_input_labels", + ], + whole_static_libs: ["libtoolbox_dd"], + shared_libs: [ + "libbase", + "libcutils", + ], + static_libs: [ + "libpropertyinfoparser", + ], + cpp_std: "gnu++1z", + + symlinks: [ + "dd", + "getevent", + "getprop", + "newfs_msdos", + ], +} + +// We only want 'r' on userdebug and eng builds. +cc_binary { + name: "r", + defaults: ["toolbox_defaults"], + srcs: ["r.c"], } // We build BSD grep separately, so it can provide egrep and fgrep too. cc_defaults { name: "grep_common", + defaults: ["toolbox_defaults"], srcs: [ "upstream-netbsd/usr.bin/grep/fastgrep.c", "upstream-netbsd/usr.bin/grep/file.c", @@ -37,9 +95,10 @@ cc_defaults { "upstream-netbsd/usr.bin/grep/queue.c", "upstream-netbsd/usr.bin/grep/util.c", ], - cflags: common_cflags, - local_include_dirs: ["upstream-netbsd/include/"], - symlinks: ["egrep", "fgrep"], + symlinks: [ + "egrep", + "fgrep", + ], sanitize: { integer_overflow: false, diff --git a/toolbox/Android.mk b/toolbox/Android.mk deleted file mode 100644 index d1b6114b0..000000000 --- a/toolbox/Android.mk +++ /dev/null @@ -1,78 +0,0 @@ -LOCAL_PATH:= $(call my-dir) - -common_cflags := \ - -Werror -Wno-unused-parameter -Wno-unused-const-variable \ - -include bsd-compatibility.h \ - -include $(CLEAR_VARS) - -BSD_TOOLS := \ - dd \ - -OUR_TOOLS := \ - getevent \ - newfs_msdos \ - -OUR_CPP_TOOLS := \ - getprop \ - -ALL_TOOLS = $(BSD_TOOLS) $(OUR_TOOLS) $(OUR_CPP_TOOLS) - -LOCAL_SRC_FILES := \ - toolbox.c \ - $(patsubst %,%.c,$(OUR_TOOLS)) \ - $(patsubst %,%.cpp,$(OUR_CPP_TOOLS)) \ - -LOCAL_CFLAGS += $(common_cflags) -LOCAL_CPPFLAGS += -std=gnu++1z -LOCAL_C_INCLUDES += $(LOCAL_PATH)/upstream-netbsd/include/ - -LOCAL_SHARED_LIBRARIES := \ - libbase \ - libcutils \ - -LOCAL_STATIC_LIBRARIES := libpropertyinfoparser - -LOCAL_WHOLE_STATIC_LIBRARIES := $(patsubst %,libtoolbox_%,$(BSD_TOOLS)) - -LOCAL_MODULE := toolbox - -# Install the symlinks. -LOCAL_POST_INSTALL_CMD := $(hide) $(foreach t,$(ALL_TOOLS),ln -sf toolbox $(TARGET_OUT)/bin/$(t);) - -# Including this will define $(intermediates). -# -include $(BUILD_EXECUTABLE) - -$(LOCAL_PATH)/toolbox.c: $(intermediates)/tools.h - -TOOLS_H := $(intermediates)/tools.h -$(TOOLS_H): PRIVATE_TOOLS := toolbox $(ALL_TOOLS) -$(TOOLS_H): PRIVATE_CUSTOM_TOOL = echo "/* file generated automatically */" > $@ ; for t in $(PRIVATE_TOOLS) ; do echo "TOOL($$t)" >> $@ ; done -$(TOOLS_H): $(LOCAL_PATH)/Android.mk -$(TOOLS_H): - $(transform-generated-source) - -$(LOCAL_PATH)/getevent.c: $(intermediates)/input.h-labels.h - -UAPI_INPUT_EVENT_CODES_H := bionic/libc/kernel/uapi/linux/input.h bionic/libc/kernel/uapi/linux/input-event-codes.h -INPUT_H_LABELS_H := $(intermediates)/input.h-labels.h -$(INPUT_H_LABELS_H): PRIVATE_LOCAL_PATH := $(LOCAL_PATH) -# The PRIVATE_CUSTOM_TOOL line uses = to evaluate the output path late. -# We copy the input path so it can't be accidentally modified later. -$(INPUT_H_LABELS_H): PRIVATE_UAPI_INPUT_EVENT_CODES_H := $(UAPI_INPUT_EVENT_CODES_H) -$(INPUT_H_LABELS_H): PRIVATE_CUSTOM_TOOL = $(PRIVATE_LOCAL_PATH)/generate-input.h-labels.py $(PRIVATE_UAPI_INPUT_EVENT_CODES_H) > $@ -# The dependency line though gets evaluated now, so the PRIVATE_ copy doesn't exist yet, -# and the original can't yet have been modified, so this is both sufficient and necessary. -$(INPUT_H_LABELS_H): $(LOCAL_PATH)/Android.mk $(LOCAL_PATH)/generate-input.h-labels.py $(UAPI_INPUT_EVENT_CODES_H) -$(INPUT_H_LABELS_H): - $(transform-generated-source) - -# We only want 'r' on userdebug and eng builds. -include $(CLEAR_VARS) -LOCAL_SRC_FILES := r.c -LOCAL_CFLAGS += $(common_cflags) -LOCAL_C_INCLUDES += $(LOCAL_PATH)/upstream-netbsd/include/ -LOCAL_MODULE := r -LOCAL_MODULE_TAGS := debug -include $(BUILD_EXECUTABLE)