@@ -41,18 +41,38 @@ function(remove_path_if_version_changed version version_file cache_path)
4141endfunction ()
4242
4343function (invoke_generator_impl name generator primary_source header implementation)
44- cmake_parse_arguments (invoke_generator_impl "" "" "command;arguments;dependencies" ${ARGN} )
44+ cmake_parse_arguments (invoke_generator_impl "" "extra_header" "command;arguments;dependencies" ${ARGN} )
45+
46+ set (extra_outputs)
47+ set (extra_commands)
48+
49+ if (invoke_generator_impl_extra_header)
50+ set (extra_outputs "${invoke_generator_impl_extra_header} " )
51+ list (APPEND extra_commands
52+ COMMAND "${CMAKE_COMMAND} " -E copy_if_different
53+ "${invoke_generator_impl_extra_header} .tmp"
54+ "${invoke_generator_impl_extra_header} "
55+ COMMAND "${CMAKE_COMMAND} " -E remove
56+ "${invoke_generator_impl_extra_header} .tmp"
57+ )
58+ endif ()
59+
4560 add_custom_command (
46- OUTPUT "${header} " "${implementation} "
47- COMMAND ${invoke_generator_impl_command} ${generator} -h "${header} .tmp" -c "${implementation} .tmp" ${invoke_generator_impl_arguments}
61+ OUTPUT "${header} " "${implementation} " ${extra_outputs}
62+ COMMAND ${invoke_generator_impl_command} ${generator}
63+ -h "${header} .tmp"
64+ -c "${implementation} .tmp"
65+ ${invoke_generator_impl_arguments}
4866 COMMAND "${CMAKE_COMMAND} " -E copy_if_different "${header} .tmp" "${header} "
4967 COMMAND "${CMAKE_COMMAND} " -E copy_if_different "${implementation} .tmp" "${implementation} "
5068 COMMAND "${CMAKE_COMMAND} " -E remove "${header} .tmp" "${implementation} .tmp"
69+ ${extra_commands}
5170 VERBATIM
5271 DEPENDS ${generator} ${invoke_generator_impl_dependencies} "${primary_source} "
5372 )
5473
55- add_custom_target ("generate_${name} " DEPENDS "${header} " "${implementation} " )
74+ add_custom_target ("generate_${name} " DEPENDS
75+ "${header} " "${implementation} " ${extra_outputs} )
5676 add_dependencies (ladybird_codegen_accumulator "generate_${name} " )
5777 list (APPEND CURRENT_LIB_GENERATED "${name} " )
5878 set (CURRENT_LIB_GENERATED ${CURRENT_LIB_GENERATED} PARENT_SCOPE)
@@ -72,16 +92,24 @@ function(invoke_cpp_generator name generator primary_source header implementatio
7292endfunction ()
7393
7494function (invoke_py_generator name script primary_source header implementation)
75- cmake_parse_arguments (invoke_py_generator "" "" "arguments" ${ARGN} )
95+ cmake_parse_arguments (invoke_py_generator "" "EXTRA_HEADER " "arguments" ${ARGN} )
7696 find_package (Python3 REQUIRED COMPONENTS Interpreter)
97+
98+ set (py_generator_arguments ${invoke_py_generator_arguments} )
99+ if (invoke_py_generator_EXTRA_HEADER)
100+ list (APPEND py_generator_arguments
101+ -x "${invoke_py_generator_EXTRA_HEADER} .tmp" )
102+ endif ()
103+
77104 invoke_generator_impl(
78105 ${name}
79106 "${LADYBIRD_PROJECT_ROOT} /Meta/${script} "
80107 ${primary_source}
81108 ${header}
82109 ${implementation}
83110 command ${Python3_EXECUTABLE}
84- arguments ${invoke_py_generator_arguments}
111+ arguments ${py_generator_arguments}
112+ extra_header "${invoke_py_generator_EXTRA_HEADER} "
85113 )
86114endfunction ()
87115
0 commit comments