mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-12-08 06:09:58 +00:00
Meta: Add ability for code generator to output one extra header
This commit is contained in:
parent
408bbead31
commit
84443e1de6
Notes:
github-actions[bot]
2025-11-21 08:47:53 +00:00
Author: https://github.com/awesomekling
Commit: 84443e1de6
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/6888
1 changed files with 34 additions and 6 deletions
|
|
@ -41,18 +41,38 @@ function(remove_path_if_version_changed version version_file cache_path)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(invoke_generator_impl name generator primary_source header implementation)
|
function(invoke_generator_impl name generator primary_source header implementation)
|
||||||
cmake_parse_arguments(invoke_generator_impl "" "" "command;arguments;dependencies" ${ARGN})
|
cmake_parse_arguments(invoke_generator_impl "" "extra_header" "command;arguments;dependencies" ${ARGN})
|
||||||
|
|
||||||
|
set(extra_outputs)
|
||||||
|
set(extra_commands)
|
||||||
|
|
||||||
|
if (invoke_generator_impl_extra_header)
|
||||||
|
set(extra_outputs "${invoke_generator_impl_extra_header}")
|
||||||
|
list(APPEND extra_commands
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E copy_if_different
|
||||||
|
"${invoke_generator_impl_extra_header}.tmp"
|
||||||
|
"${invoke_generator_impl_extra_header}"
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E remove
|
||||||
|
"${invoke_generator_impl_extra_header}.tmp"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT "${header}" "${implementation}"
|
OUTPUT "${header}" "${implementation}" ${extra_outputs}
|
||||||
COMMAND ${invoke_generator_impl_command} ${generator} -h "${header}.tmp" -c "${implementation}.tmp" ${invoke_generator_impl_arguments}
|
COMMAND ${invoke_generator_impl_command} ${generator}
|
||||||
|
-h "${header}.tmp"
|
||||||
|
-c "${implementation}.tmp"
|
||||||
|
${invoke_generator_impl_arguments}
|
||||||
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${header}.tmp" "${header}"
|
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${header}.tmp" "${header}"
|
||||||
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${implementation}.tmp" "${implementation}"
|
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${implementation}.tmp" "${implementation}"
|
||||||
COMMAND "${CMAKE_COMMAND}" -E remove "${header}.tmp" "${implementation}.tmp"
|
COMMAND "${CMAKE_COMMAND}" -E remove "${header}.tmp" "${implementation}.tmp"
|
||||||
|
${extra_commands}
|
||||||
VERBATIM
|
VERBATIM
|
||||||
DEPENDS ${generator} ${invoke_generator_impl_dependencies} "${primary_source}"
|
DEPENDS ${generator} ${invoke_generator_impl_dependencies} "${primary_source}"
|
||||||
)
|
)
|
||||||
|
|
||||||
add_custom_target("generate_${name}" DEPENDS "${header}" "${implementation}")
|
add_custom_target("generate_${name}" DEPENDS
|
||||||
|
"${header}" "${implementation}" ${extra_outputs})
|
||||||
add_dependencies(ladybird_codegen_accumulator "generate_${name}")
|
add_dependencies(ladybird_codegen_accumulator "generate_${name}")
|
||||||
list(APPEND CURRENT_LIB_GENERATED "${name}")
|
list(APPEND CURRENT_LIB_GENERATED "${name}")
|
||||||
set(CURRENT_LIB_GENERATED ${CURRENT_LIB_GENERATED} PARENT_SCOPE)
|
set(CURRENT_LIB_GENERATED ${CURRENT_LIB_GENERATED} PARENT_SCOPE)
|
||||||
|
|
@ -72,8 +92,15 @@ function(invoke_cpp_generator name generator primary_source header implementatio
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(invoke_py_generator name script primary_source header implementation)
|
function(invoke_py_generator name script primary_source header implementation)
|
||||||
cmake_parse_arguments(invoke_py_generator "" "" "arguments" ${ARGN})
|
cmake_parse_arguments(invoke_py_generator "" "EXTRA_HEADER" "arguments" ${ARGN})
|
||||||
find_package(Python3 REQUIRED COMPONENTS Interpreter)
|
find_package(Python3 REQUIRED COMPONENTS Interpreter)
|
||||||
|
|
||||||
|
set(py_generator_arguments ${invoke_py_generator_arguments})
|
||||||
|
if (invoke_py_generator_EXTRA_HEADER)
|
||||||
|
list(APPEND py_generator_arguments
|
||||||
|
-x "${invoke_py_generator_EXTRA_HEADER}.tmp")
|
||||||
|
endif()
|
||||||
|
|
||||||
invoke_generator_impl(
|
invoke_generator_impl(
|
||||||
${name}
|
${name}
|
||||||
"${LADYBIRD_PROJECT_ROOT}/Meta/${script}"
|
"${LADYBIRD_PROJECT_ROOT}/Meta/${script}"
|
||||||
|
|
@ -81,7 +108,8 @@ function(invoke_py_generator name script primary_source header implementation)
|
||||||
${header}
|
${header}
|
||||||
${implementation}
|
${implementation}
|
||||||
command ${Python3_EXECUTABLE}
|
command ${Python3_EXECUTABLE}
|
||||||
arguments ${invoke_py_generator_arguments}
|
arguments ${py_generator_arguments}
|
||||||
|
extra_header "${invoke_py_generator_EXTRA_HEADER}"
|
||||||
)
|
)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue