1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
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)
|