| # 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 set to false, VCSRevision.h is updated after every git commit. |
| # That's technically correct, but results in rebuilds after every commit. |
| # If it's true (default), VCSRevision.h will usually be somewhat |
| # out-of-date, but builds will be faster. |
| llvm_allow_tardy_revision = true |
| } |
| |
| template("write_vcsrevision") { |
| assert(defined(invoker.header), "must set 'header' in $target_name") |
| |
| action("write_vcsrevision") { |
| 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_allow_tardy_revision) { |
| depfile = "$header.d" |
| args += [ |
| "-d", |
| rebase_path(depfile, root_build_dir), |
| ] |
| } |
| |
| foreach(name, names) { |
| args += [ "--name=$name" ] |
| } |
| |
| outputs = [ |
| header, |
| ] |
| |
| forward_variables_from(invoker, |
| [ |
| "public_configs", |
| "visibility", |
| ]) |
| } |
| } |