cc_defaults {
    name: "toolbox_defaults",

    cflags: [
        "-Werror",
        "-Wno-unused-parameter",
        "-Wno-unused-const-variable",
        "-include bsd-compatibility.h",
        "-D_FILE_OFFSET_BITS=64",
    ],
    local_include_dirs: ["upstream-netbsd/include/"],
}

cc_library_static {
    name: "libtoolbox_dd",
    defaults: ["toolbox_defaults"],
    vendor_available: true,
    srcs: [
        "upstream-netbsd/bin/dd/args.c",
        "upstream-netbsd/bin/dd/conv.c",
        "upstream-netbsd/bin/dd/dd.c",
        "upstream-netbsd/bin/dd/dd_hostops.c",
        "upstream-netbsd/bin/dd/misc.c",
        "upstream-netbsd/bin/dd/position.c",
        "upstream-netbsd/lib/libc/gen/getbsize.c",
        "upstream-netbsd/lib/libc/gen/humanize_number.c",
        "upstream-netbsd/lib/libc/stdlib/strsuftoll.c",
        "upstream-netbsd/lib/libc/string/swab.c",
        "upstream-netbsd/lib/libutil/raise_default_signal.c",
    ],
    cflags: [
        "-Dmain=dd_main",
        "-DNO_CONV",
    ],
}

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_defaults {
    name: "toolbox_binary_defaults",
    defaults: ["toolbox_defaults"],
    cpp_std: "experimental",
    srcs: [
        "toolbox.c",
        "getevent.c",
        "getprop.cpp",
        "newfs_msdos.c",
    ],
    generated_headers: [
        "toolbox_input_labels",
    ],
    whole_static_libs: ["libtoolbox_dd"],
    shared_libs: [
        "libbase",
        "libcutils",
    ],
    static_libs: ["libpropertyinfoparser"],

    symlinks: [
        "dd",
        "getevent",
        "getprop",
        "newfs_msdos",
    ],
}

cc_binary {
    name: "toolbox",
    defaults: ["toolbox_binary_defaults"],
}

cc_binary {
    name: "toolbox_vendor",
    stem: "toolbox",
    vendor: true,
    defaults: ["toolbox_binary_defaults"],
}

// 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",
        "upstream-netbsd/usr.bin/grep/grep.c",
        "upstream-netbsd/usr.bin/grep/queue.c",
        "upstream-netbsd/usr.bin/grep/util.c",
    ],
    symlinks: [
        "egrep",
        "fgrep",
    ],

    sanitize: {
        integer_overflow: false,
    },
}

cc_binary {
    name: "grep",
    defaults: ["grep_common"],
}

// Build vendor grep.
// TODO: Add vendor_available to "grep" module and remove "grep_vendor" module
//       when vendor_available is fully supported.
cc_binary {
    name: "grep_vendor",
    stem: "grep",
    vendor: true,
    defaults: ["grep_common"],
}