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
diff --git a/toolbox/Android.bp b/toolbox/Android.bp
index 9c2cafa..de8324a 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 @@
"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 @@
"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,