android_kernel_samsung_sm8650/BUILD.dtc
John Moon 0d3933f9e4 ANDROID: build: Switch to hermetic tools for DTC build
Currently, the DTC build will use host tools for lex and bison runs.

With the hermetic_genrule from Kleaf, it's easy to use the hermetic
tools instead which obviates the need for lex and bison on the host.

Switch to hermetic_genrule.

Change-Id: Ib505cf3833c8ecec275c50f9c44ff74efe39b649
Signed-off-by: John Moon <quic_johmoo@quicinc.com>
2023-08-29 10:39:29 -07:00

160 lines
3.3 KiB
Plaintext

load("@//build/kernel/kleaf:hermetic_tools.bzl", "hermetic_genrule")
cc_library(
name = "libfdt",
copts = [
"-Werror",
"-Wno-macro-redefined",
"-Wno-sign-compare",
],
includes = ["libfdt"],
srcs = glob([
"libfdt/*.h",
"libfdt/*.c",
]),
target_compatible_with = ["@platforms//os:linux"],
visibility = ["//visibility:public"],
)
copts = [
"-Wall",
"-Werror",
"-Wno-sign-compare",
"-Wno-missing-field-initializers",
"-Wno-unused-parameter",
]
hermetic_genrule(
name = "lexer",
srcs = ["dtc-lexer.l"],
outs = ["dtc-lexer.lex.c"],
cmd = "flex -o$@ $(location dtc-lexer.l)"
)
hermetic_genrule(
name = "parser",
srcs = ["dtc-parser.y"],
outs = ["dtc-parser.tab.c", "dtc-parser.tab.h"],
cmd = """
bison -b dtc-parser -d $(location dtc-parser.y)
cp ./*.tab.c $(location dtc-parser.tab.c)
cp ./*.tab.h $(location dtc-parser.tab.h)
""",
)
cc_library(
name = "dtc_gen",
copts = copts,
srcs = [
":lexer",
":parser",
] + glob(["*.h"]),
includes = ["."],
deps = [":libfdt"],
target_compatible_with = ["@platforms//os:linux"],
visibility = ["//visibility:public"],
)
cc_binary(
name = "dtc",
copts = copts,
defines = ["NO_YAML"],
srcs = [
"checks.c",
"data.c",
"dtc.c",
"flattree.c",
"fstree.c",
"livetree.c",
"srcpos.c",
"treesource.c",
"util.c",
] + glob(["*.h"]),
includes = ["."],
deps = [":libfdt", ":dtc_gen"],
target_compatible_with = ["@platforms//os:linux"],
visibility = ["//visibility:public"],
)
cc_binary(
name = "fdtget",
copts = copts,
defines = ["NO_YAML"],
srcs = [
"fdtget.c",
"util.c",
"util.h",
"version_non_gen.h",
],
deps = [":libfdt"],
target_compatible_with = ["@platforms//os:linux"],
visibility = ["//visibility:public"],
)
cc_binary(
name = "fdtput",
copts = copts,
defines = ["NO_YAML"],
srcs = [
"fdtput.c",
"util.c",
"util.h",
"version_non_gen.h",
],
deps = [":libfdt"],
target_compatible_with = ["@platforms//os:linux"],
visibility = ["//visibility:public"],
)
cc_binary(
name = "fdtdump",
copts = copts,
defines = ["NO_YAML"],
srcs = [
"fdtdump.c",
"util.c",
"util.h",
"version_non_gen.h",
],
deps = [":libfdt"],
target_compatible_with = ["@platforms//os:linux"],
visibility = ["//visibility:public"],
)
cc_binary(
name = "fdtoverlay",
copts = copts,
defines = ["NO_YAML"],
srcs = [
"fdtoverlay.c",
"util.c",
"util.h",
"version_non_gen.h",
],
deps = [":libfdt"],
target_compatible_with = ["@platforms//os:linux"],
visibility = ["//visibility:public"],
)
cc_binary(
name = "fdtoverlaymerge",
copts = copts,
defines = ["NO_YAML"],
srcs = [
"fdtoverlaymerge.c",
"util.c",
"util.h",
"version_non_gen.h",
],
deps = [":libfdt"],
target_compatible_with = ["@platforms//os:linux"],
visibility = ["//visibility:public"],
)
exports_files([
"libfdt/fdt.h",
"libfdt/libfdt.h",
"libfdt/libfdt_env.h",
])