mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 15:40:19 +00:00
64 lines
1.8 KiB
Text
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",
|
|
])
|
|
}
|
|
}
|