xref: /aosp_15_r20/external/angle/third_party/clspv/gn/llvm/write_vcsrevision.gni (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1# Modified `llvm/utils/gn/build/write_vcsrevision.gni` file to suit clspv build
2# structure.
3import("//build_overrides/clspv.gni")
4
5# This file introduces a templates for calling write_vcsrevision.py.
6#
7# Parameters:
8#
9#   header (required) [string]
10#
11#   names (optional) [list of strings]
12#       Writes "$foo_REVISION" and "$foo_REPOSITORY" for each foo in names.
13#       Defaults to [ "LLVM" ]
14
15declare_args() {
16  # If this is set to true, VCSRevision.h is updated after every git commit.
17  # That's technically correct, but results in rebuilds after every commit.
18  # If it's false (default), VCSRevision.h will not contain a revision.
19  llvm_append_vc_rev = false
20}
21
22template("write_vcsrevision") {
23  assert(defined(invoker.header), "must set 'header' in $target_name")
24
25  action(target_name) {
26    script = "//$clspv_llvm_dir/llvm/utils/gn/build/write_vcsrevision.py"
27    header = invoker.header
28    if (defined(invoker.names)) {
29      names = invoker.names
30    } else {
31      names = [ "LLVM" ]
32    }
33
34    args = [ rebase_path(header, root_build_dir) ]
35    if (llvm_append_vc_rev) {
36      depfile = "$header.d"
37      args += [
38        "--write-git-rev",
39        "-d",
40        rebase_path(depfile, root_build_dir),
41      ]
42    }
43
44    foreach(name, names) {
45      args += [ "--name=$name" ]
46    }
47
48    outputs = [ header ]
49
50    forward_variables_from(invoker,
51                           [
52                             "public_configs",
53                             "visibility",
54                           ])
55  }
56}
57