Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a852f95b authored by Dan Willemsen's avatar Dan Willemsen
Browse files

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
parent acaeeeed
Loading
Loading
Loading
Loading
+71 −12
Original line number Diff line number Diff line
common_cflags = [
cc_defaults {
    name: "toolbox_defaults",

    cflags: [
        "-Werror",
        "-Wno-unused-parameter",
        "-Wno-unused-const-variable",
    "-include bsd-compatibility.h"
]
        "-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,

toolbox/Android.mk

deleted100644 → 0
+0 −78
Original line number Diff line number Diff line
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)