// Copyright 2016 The Android Open Source Project
package {
    default_applicable_licenses: ["external_dtc_license"],
}

// Added automatically by a large-scale-change that took the approach of
// 'apply every license found to every target'. While this makes sure we respect
// every license restriction, it may not be entirely correct.
//
// e.g. GPL in an MIT project might only apply to the contrib/ directory.
//
// Please consider splitting the single license below into multiple licenses,
// taking care not to lose any license_kind information, and overriding the
// default license using the 'licenses: [...]' property on targets as needed.
//
// For unused files, consider creating a 'fileGroup' with "//visibility:private"
// to attach the license to, and including a comment whether the files may be
// used in the current project.
//
// large-scale-change included anything that looked like it might be a license
// text as a license_text. e.g. LICENSE, NOTICE, COPYING etc.
//
// Please consider removing redundant or irrelevant files from 'license_text:'.
// See: http://go/android-license-faq
license {
    name: "external_dtc_license",
    visibility: [":__subpackages__"],
    license_kinds: ["SPDX-license-identifier-GPL-2.0"],
    license_text: ["GPL"],
}

license {
    name: "external_dtc_libfdt_license",
    visibility: [":__subpackages__"],
    license_kinds: ["SPDX-license-identifier-BSD-2-Clause"],
    license_text: ["BSD-2-Clause"],
}

license {
   name: "external_dtc_tests_license",
    visibility: [":__subpackages__"],
    license_kinds: ["SPDX-license-identifier-LGPL-2.1+"],
    license_text: ["LGPL"],
}

cc_defaults {
    name: "dtc_cflags_defaults",
    cflags: [
        "-Wall",
        "-Werror",
        "-Wno-macro-redefined",
        "-Wno-missing-field-initializers",
        "-Wno-sign-compare",
        "-Wno-unused-parameter",
    ],
}

cc_defaults {
    name: "dt_defaults",
    defaults: ["dtc_cflags_defaults"],
    cflags: [
        "-DNO_YAML"
    ],

    generated_headers: ["dtc_version_gen.h"],
    shared_libs: ["libfdt"],

    stl: "none",
    dist: {
        targets: [
            "dist_files",
        ],
        dir: "dtc",
    },
}

cc_binary_host {
    name: "dtc",
    defaults: ["dt_defaults"],
    srcs: [
        "checks.c",
        "data.c",
        "dtc.c",
        "dtc-lexer.l",
        "dtc-parser.y",
        "flattree.c",
        "fstree.c",
        "livetree.c",
        "srcpos.c",
        "treesource.c",
        "util.c",
    ],
}

cc_binary_host {
    name: "fdtget",
    defaults: ["dt_defaults"],
    srcs: [
        "fdtget.c",
        "util.c",
    ],
}

cc_binary_host {
    name: "fdtoverlay",
    defaults: ["dt_defaults"],
    srcs: [
        "fdtoverlay.c",
        "util.c",
    ],
}

cc_binary_host {
    name: "fdtdump",
    defaults: ["dt_defaults"],
    srcs: [
        "fdtdump.c",
        "util.c",
    ],
}

genrule {
    name: "dtc_version_gen.h",
    out: ["version_gen.h"],
    srcs: ["version_gen.h.in"],
    tool_files: [
        "METADATA",
        "METADATA_version.sed",
    ],
    cmd: "version=$$("
       +     "sed -f $(location METADATA_version.sed) -n $(location METADATA)"
       + ")-Android-build;"
       + "sed s/@VCS_TAG@/$${version}/ $(in) > $(out)",
}
