mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 09:42:45 +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",
 | |
|                            ])
 | |
|   }
 | |
| }
 | 
