# 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", ]) } }