47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
load(":private/set.bzl", "set")
|
|
|
|
def generate_version_macros(ctx, name, version):
|
|
"""Generate a version macros header file.
|
|
|
|
Args:
|
|
ctx: Rule context. Needs to define a _version_macros executable attribute.
|
|
name: The package name.
|
|
version: The package version.
|
|
|
|
Returns:
|
|
Version macros header File.
|
|
"""
|
|
version_macros_file = ctx.actions.declare_file("{}_version_macros.h".format(name))
|
|
ctx.actions.run_shell(
|
|
inputs = [ctx.executable._version_macros],
|
|
outputs = [version_macros_file],
|
|
command = """
|
|
"$1" "$2" "$3" > "$4"
|
|
""",
|
|
arguments = [
|
|
ctx.executable._version_macros.path,
|
|
name,
|
|
version,
|
|
version_macros_file.path,
|
|
],
|
|
)
|
|
return version_macros_file
|
|
|
|
def version_macro_includes(hs_info):
|
|
"""Generate a list of version macro header includes.
|
|
|
|
Args:
|
|
hs_info: HaskellInfo provider.
|
|
|
|
Returns:
|
|
(files, flags):
|
|
files: Set of version macros header files.
|
|
flags: List of C preprocessor flags to include version macros.
|
|
"""
|
|
files = hs_info.version_macros
|
|
flags = [
|
|
f
|
|
for include in set.to_list(files)
|
|
for f in ["-include", include.path]
|
|
]
|
|
return (files, flags)
|