ladybird/Meta/gn/build/embed_as_string_view.gni

64 lines
1.8 KiB
Text

# This file introduces a template for calling embed_as_string_view.py.
#
# embed_as_string_view behaves like C++23 #embed, converting an input file into
# an AK::StringView literal rather than a C-string literal. The literal will
# be placed into a global variable, optionally with a namespace wrapping it.
#
# Note that the file must not contain any tokens that need to be escaped
# in C++, or the script will fail to produce a valid C++ translation unit.
#
# Parameters:
#
# input (required) [string]
#
# output (required) [string]
#
# variable_name (required) [string]
#
# namespace (optional) [string]
#
# Example use:
#
# embed_as_string_view("embed_my_file") {
# input = "MyFile.txt"
# output = "$root_gen_dir/MyDirectory/MyFile.cpp"
# variable_name = "my_file_contents"
# namespace = "My::NS"
# }
template("embed_as_string_view") {
assert(defined(invoker.input), "must set 'input' in $target_name")
assert(defined(invoker.output), "must set 'output' in $target_name")
assert(defined(invoker.variable_name),
"must set 'variable_name' in $target_name")
action(target_name) {
script = "//Meta/embed_as_string_view.py"
sources = [ invoker.input ]
outputs = [ invoker.output ]
args = [
"-o",
rebase_path(outputs[0], root_build_dir),
"-n",
invoker.variable_name,
]
if (defined(invoker.namespace)) {
args += [
"-s",
invoker.namespace,
]
}
args += [ rebase_path(sources[0], root_build_dir) ]
forward_variables_from(invoker,
[
"configs",
"deps",
"public_configs",
"public_deps",
"testonly",
"visibility",
])
}
}