| # This file introduces a templates for calling write_vcsrevision.py. | 
 | # | 
 | # Parameters: | 
 | # | 
 | #   header (required) [string] | 
 | # | 
 | #   names (optional) [list of strings] | 
 | #       Writes "$foo_REVISION" and "$foo_REPOSITORY" for each foo in names. | 
 | #       Defaults to [ "LLVM" ] | 
 |  | 
 | declare_args() { | 
 |   # If this is set to true, VCSRevision.h is updated after every git commit. | 
 |   # That's technically correct, but results in rebuilds after every commit. | 
 |   # If it's false (default), VCSRevision.h will not contain a revision. | 
 |   llvm_append_vc_rev = false | 
 | } | 
 |  | 
 | template("write_vcsrevision") { | 
 |   assert(defined(invoker.header), "must set 'header' in $target_name") | 
 |  | 
 |   action(target_name) { | 
 |     script = "//llvm/utils/gn/build/write_vcsrevision.py" | 
 |     header = invoker.header | 
 |     if (defined(invoker.names)) { | 
 |       names = invoker.names | 
 |     } else { | 
 |       names = [ "LLVM" ] | 
 |     } | 
 |  | 
 |     args = [ rebase_path(header, root_build_dir) ] | 
 |     if (llvm_append_vc_rev) { | 
 |       depfile = "$header.d" | 
 |       args += [ | 
 |         "--write-git-rev", | 
 |         "-d", | 
 |         rebase_path(depfile, root_build_dir), | 
 |       ] | 
 |     } | 
 |  | 
 |     foreach(name, names) { | 
 |       args += [ "--name=$name" ] | 
 |     } | 
 |  | 
 |     outputs = [ header ] | 
 |  | 
 |     forward_variables_from(invoker, | 
 |                            [ | 
 |                              "public_configs", | 
 |                              "visibility", | 
 |                            ]) | 
 |   } | 
 | } |