platform_external_dtc/BUILD.bazel
Pierre-Clément Tosi c8d1d863ab ANDROID: bazel: Clean up lexer and parser rules
Simplify the build file as

- dtc_gen creates an unnecessarily broad (and confusing) dependency list
  by using glob([".h"]) as its header list. Instead, dtc now lists
  explicitly the few headers it actually needs;
- generating dtc-lexer.lex.c does not require dtc-parser.{c,h};
- Bison can be told to directly create dtc-parser.{c,h} so no need for
  an unnecessarily broad copying of *.[ch] to move some intermediate
  results.

As a result, we get two genrule() wrapping the source files respectively
generated through lex and bison, which can be listed as srcs of dtc.

Test: bazel build //:all
Change-Id: I238d963af8a338c46f39c8ba9e4314fe536948cf
2023-10-11 16:54:04 +01:00

105 lines
1.7 KiB
Python

cc_library(
name = "libfdt",
srcs = glob([
"libfdt/*.h",
"libfdt/*.c",
]),
copts = [
"-Werror",
"-Wno-macro-redefined",
"-Wno-sign-compare",
],
includes = ["libfdt"],
)
COPTS = [
"-Wall",
"-Werror",
"-Wno-sign-compare",
"-Wno-missing-field-initializers",
"-Wno-unused-parameter",
]
genrule(
name = "dtc_lexer_srcs",
srcs = ["dtc-lexer.l"],
outs = ["dtc-lexer.lex.c"],
cmd = "lex -o $@ $<",
)
genrule(
name = "dtc_parser_srcs",
srcs = ["dtc-parser.y"],
outs = [
"dtc-parser.c",
"dtc-parser.h",
],
cmd = "bison -d -o $(location dtc-parser.c) $(location dtc-parser.y)",
)
UTILS = [
"util.c",
"util.h",
"version_non_gen.h",
]
cc_binary(
name = "dtc",
srcs = UTILS + [
":dtc_lexer_srcs",
":dtc_parser_srcs",
"checks.c",
"data.c",
"dtc.c",
"dtc.h",
"flattree.c",
"fstree.c",
"livetree.c",
"srcpos.c",
"srcpos.h",
"treesource.c",
],
copts = COPTS,
defines = ["NO_YAML"],
deps = [":libfdt"],
)
cc_binary(
name = "fdtget",
srcs = UTILS + [
"fdtget.c",
],
copts = COPTS,
defines = ["NO_YAML"],
deps = [":libfdt"],
)
cc_binary(
name = "fdtput",
srcs = UTILS + [
"fdtput.c",
],
copts = COPTS,
defines = ["NO_YAML"],
deps = [":libfdt"],
)
cc_binary(
name = "fdtdump",
srcs = UTILS + [
"fdtdump.c",
],
copts = COPTS,
defines = ["NO_YAML"],
deps = [":libfdt"],
)
cc_binary(
name = "fdtoverlay",
srcs = UTILS + [
"fdtoverlay.c",
],
copts = COPTS,
defines = ["NO_YAML"],
deps = [":libfdt"],
)