xref: /aosp_15_r20/external/angle/third_party/clspv/gn/llvm/write_cmake_config.gni (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1# Modified `llvm/utils/gn/build/write_cmake_config.gni` file to suit clspv build
2# structure.
3import("//build_overrides/clspv.gni")
4
5# based on llvm/utils/gn/build/write_cmake_config.gni
6
7# This file introduces a templates for calling write_cmake_config.py.
8#
9# write_cmake_config behaves like CMake's configure_file(), but runs at build
10# time, not at generator time.  See write_cmake_config.py for details.
11#
12# Parameters:
13#
14#   input (required) [string]
15#
16#   output (required) [string]
17#
18#   values (required) [list of strings]
19#       Each entry is a '='-separated key-value pair used for substitution.
20#
21# Example use:
22#
23#   write_cmake_config("attributes_compat_func_gen") {
24#     input = "Version.inc.in"
25#     output = "$root_gen_dir/clang/include/clang/Basic/Version.inc",
26#     values = [
27#       "CLANG_VERSION=$llvm_version",
28#     ]
29#   }
30
31template("write_cmake_config") {
32  assert(defined(invoker.input), "must set 'input' in $target_name")
33  assert(defined(invoker.output), "must set 'output' in $target_name")
34  assert(defined(invoker.values), "must set 'values' in $target_name")
35
36  action(target_name) {
37    script = "//$clspv_llvm_dir/llvm/utils/gn/build/write_cmake_config.py"
38
39    sources = [ invoker.input ]
40    outputs = [ invoker.output ]
41    args = [
42             "-o",
43             rebase_path(outputs[0], root_build_dir),
44             rebase_path(sources[0], root_build_dir),
45           ] + invoker.values
46
47    forward_variables_from(invoker,
48                           [
49                             "configs",
50                             "deps",
51                             "public_configs",
52                             "public_deps",
53                             "visibility",
54                           ])
55  }
56}
57