From af4642c826dcc785fb745c02ad52364de5bb9fde Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Wed, 23 Aug 2023 20:38:28 +0100 Subject: [PATCH] Meta: Make `embed_as_string_view.py` usable by CMake builds :^) --- Meta/CMake/code_generators.cmake | 20 ++++++++++++++++++++ Meta/{gn/build => }/embed_as_string_view.py | 0 Meta/gn/build/embed_as_string_view.gni | 2 +- 3 files changed, 21 insertions(+), 1 deletion(-) rename Meta/{gn/build => }/embed_as_string_view.py (100%) diff --git a/Meta/CMake/code_generators.cmake b/Meta/CMake/code_generators.cmake index 44b0e06b25..2343ed28f9 100644 --- a/Meta/CMake/code_generators.cmake +++ b/Meta/CMake/code_generators.cmake @@ -2,6 +2,26 @@ # Functions for generating sources using host tools # +function(embed_as_string_view name source_file output source_variable_name) + cmake_parse_arguments(PARSE_ARGV 4 EMBED_STRING_VIEW "" "NAMESPACE" "") + set(namespace_arg "") + if (EMBED_STRING_VIEW_NAMESPACE) + set(namespace_arg "-s ${EMBED_STRING_VIEW_NAMESPACE}") + endif() + add_custom_command( + OUTPUT "${output}" + COMMAND "python3" "${SerenityOS_SOURCE_DIR}/Meta/embed_as_string_view.py" "${source_file}" -o "${output}.tmp" -n "${source_variable_name}" ${namespace_arg} + COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${output}.tmp" "${output}" + COMMAND "${CMAKE_COMMAND}" -E remove "${output}.tmp" + VERBATIM + DEPENDS "${SerenityOS_SOURCE_DIR}/Meta/embed_as_string_view.py" + MAIN_DEPENDENCY "${source_file}" + ) + + add_custom_target("generate_${name}" DEPENDS "${output}") + add_dependencies(all_generated "generate_${name}") +endfunction() + function(stringify_gml source output string_name) set(source ${CMAKE_CURRENT_SOURCE_DIR}/${source}) add_custom_command( diff --git a/Meta/gn/build/embed_as_string_view.py b/Meta/embed_as_string_view.py similarity index 100% rename from Meta/gn/build/embed_as_string_view.py rename to Meta/embed_as_string_view.py diff --git a/Meta/gn/build/embed_as_string_view.gni b/Meta/gn/build/embed_as_string_view.gni index 6bc7d8032c..eab79dbadc 100644 --- a/Meta/gn/build/embed_as_string_view.gni +++ b/Meta/gn/build/embed_as_string_view.gni @@ -33,7 +33,7 @@ template("embed_as_string_view") { "must set 'variable_name' in $target_name") action(target_name) { - script = "//Meta/gn/build/embed_as_string_view.py" + script = "//Meta/embed_as_string_view.py" sources = [ invoker.input ] outputs = [ invoker.output ]