blob: 1a5c5b9e2a55e291e545e78771813c6f13226ba6 [file] [log] [blame]
"""
THIS IS THE EXTERNAL-ONLY VERSION OF THIS FILE. G3 HAS ITS OWN.
The macro defined in this file allows us to generate .cpp files for header files. The content
is a copy of the header file.
This allows us to actually "compile" the header file, which allows tools like IWYU to properly
analyze a header file on its own.
"""
def generate_cpp_files_for_headers(name, headers):
"""Generate a filegroup containing generate .cpp files for the given header files
Args:
name: The name of the filegroup to hold the generated files.
headers: A list of header files, from this folder), that should have a .cpp file generated
for them that includes the header. If a header already has a .cpp file, it should
not be in this list. The generated files will not be checked into the Skia repo,
they will exist in Bazel's cache folder.
"""
rules = []
for hdr in headers:
cpp = hdr + ".cpp"
native.genrule(
name = "gen_" + cpp,
srcs = headers,
outs = ["gen/" + cpp],
# Copy the header as the output .cpp file
# https://bazel.build/reference/be/make-variables#predefined_genrule_variables
# execpath returns the path to the given label relative to the Skia root.
cmd = "cp $(execpath :%s) $@" % hdr,
)
rules.append(":gen/" + cpp)
native.filegroup(
name = name,
srcs = rules,
visibility = ["//tools:__pkg__"],
)