diff --git a/Libraries/LibWeb/CMakeLists.txt b/Libraries/LibWeb/CMakeLists.txt index 421ecbd3d79..51f5b03bedb 100644 --- a/Libraries/LibWeb/CMakeLists.txt +++ b/Libraries/LibWeb/CMakeLists.txt @@ -951,7 +951,7 @@ set(SOURCES compile_ipc(Worker/WebWorkerClient.ipc Worker/WebWorkerClientEndpoint.h) compile_ipc(Worker/WebWorkerServer.ipc Worker/WebWorkerServerEndpoint.h) -invoke_generator( +invoke_cpp_generator( "AriaRoles.cpp" Lagom::GenerateAriaRoles "${CMAKE_CURRENT_SOURCE_DIR}/ARIA/AriaRoles.json" @@ -964,7 +964,7 @@ generate_css_implementation() generate_html_implementation() -invoke_generator( +invoke_cpp_generator( "WebGLRenderingContextImpl.cpp" Lagom::GenerateWebGLRenderingContext "${CMAKE_CURRENT_SOURCE_DIR}/WebGL/WebGLRenderingContextBase.idl" @@ -976,7 +976,7 @@ invoke_generator( dependencies WebGL/WebGLRenderingContextBase.idl WebGL/WebGLRenderingContextOverloads.idl CSS/GeneratedCSSStyleProperties.idl ) -invoke_generator( +invoke_cpp_generator( "WebGL2RenderingContextImpl.cpp" Lagom::GenerateWebGLRenderingContext "${CMAKE_CURRENT_SOURCE_DIR}/WebGL/WebGL2RenderingContextBase.idl" diff --git a/Meta/CMake/libweb_generators.cmake b/Meta/CMake/libweb_generators.cmake index 1e364ccde0d..1a59912c7b4 100644 --- a/Meta/CMake/libweb_generators.cmake +++ b/Meta/CMake/libweb_generators.cmake @@ -2,7 +2,7 @@ function (generate_css_implementation) set(LIBWEB_INPUT_FOLDER "${CMAKE_CURRENT_SOURCE_DIR}") - invoke_generator( + invoke_cpp_generator( "DescriptorID.cpp" Lagom::GenerateCSSDescriptors "${LIBWEB_INPUT_FOLDER}/CSS/Descriptors.json" @@ -11,7 +11,7 @@ function (generate_css_implementation) arguments -j "${LIBWEB_INPUT_FOLDER}/CSS/Descriptors.json" ) - invoke_generator( + invoke_cpp_generator( "Enums.cpp" Lagom::GenerateCSSEnums "${LIBWEB_INPUT_FOLDER}/CSS/Enums.json" @@ -20,7 +20,7 @@ function (generate_css_implementation) arguments -j "${LIBWEB_INPUT_FOLDER}/CSS/Enums.json" ) - invoke_generator( + invoke_cpp_generator( "MathFunctions.cpp" Lagom::GenerateCSSMathFunctions "${LIBWEB_INPUT_FOLDER}/CSS/MathFunctions.json" @@ -29,7 +29,7 @@ function (generate_css_implementation) arguments -j "${LIBWEB_INPUT_FOLDER}/CSS/MathFunctions.json" ) - invoke_generator( + invoke_cpp_generator( "MediaFeatureID.cpp" Lagom::GenerateCSSMediaFeatureID "${LIBWEB_INPUT_FOLDER}/CSS/MediaFeatures.json" @@ -38,7 +38,7 @@ function (generate_css_implementation) arguments -j "${LIBWEB_INPUT_FOLDER}/CSS/MediaFeatures.json" ) - invoke_generator( + invoke_cpp_generator( "PropertyID.cpp" Lagom::GenerateCSSPropertyID "${LIBWEB_INPUT_FOLDER}/CSS/Properties.json" @@ -47,7 +47,7 @@ function (generate_css_implementation) arguments -j "${LIBWEB_INPUT_FOLDER}/CSS/Properties.json" ) - invoke_generator( + invoke_cpp_generator( "PseudoClass.cpp" Lagom::GenerateCSSPseudoClass "${LIBWEB_INPUT_FOLDER}/CSS/PseudoClasses.json" @@ -56,7 +56,7 @@ function (generate_css_implementation) arguments -j "${LIBWEB_INPUT_FOLDER}/CSS/PseudoClasses.json" ) - invoke_generator( + invoke_cpp_generator( "PseudoElement.cpp" Lagom::GenerateCSSPseudoElement "${LIBWEB_INPUT_FOLDER}/CSS/PseudoElements.json" @@ -65,7 +65,7 @@ function (generate_css_implementation) arguments -j "${LIBWEB_INPUT_FOLDER}/CSS/PseudoElements.json" ) - invoke_generator( + invoke_cpp_generator( "TransformFunctions.cpp" Lagom::GenerateCSSTransformFunctions "${LIBWEB_INPUT_FOLDER}/CSS/TransformFunctions.json" @@ -74,7 +74,7 @@ function (generate_css_implementation) arguments -j "${LIBWEB_INPUT_FOLDER}/CSS/TransformFunctions.json" ) - invoke_generator( + invoke_cpp_generator( "Keyword.cpp" Lagom::GenerateCSSKeyword "${LIBWEB_INPUT_FOLDER}/CSS/Keywords.json" @@ -154,7 +154,7 @@ endfunction() function (generate_html_implementation) set(LIBWEB_INPUT_FOLDER "${CMAKE_CURRENT_SOURCE_DIR}") - invoke_generator( + invoke_cpp_generator( "NamedCharacterReferences.cpp" Lagom::GenerateNamedCharacterReferences "${LIBWEB_INPUT_FOLDER}/HTML/Parser/Entities.json" diff --git a/Meta/CMake/public_suffix.cmake b/Meta/CMake/public_suffix.cmake index 42a8377692f..d835377bbf0 100644 --- a/Meta/CMake/public_suffix.cmake +++ b/Meta/CMake/public_suffix.cmake @@ -13,7 +13,7 @@ if (ENABLE_PUBLIC_SUFFIX_DOWNLOAD) else() message(STATUS "Skipping download of ${PUBLIC_SUFFIX_DATA_URL}, expecting it to be in ${PUBLIC_SUFFIX_DATA_PATH}") endif() - invoke_generator( + invoke_cpp_generator( "PublicSuffixData" Lagom::GeneratePublicSuffixData "${PUBLIC_SUFFIX_PATH}/" diff --git a/Meta/CMake/utils.cmake b/Meta/CMake/utils.cmake index 13490298adc..7c61f82689f 100644 --- a/Meta/CMake/utils.cmake +++ b/Meta/CMake/utils.cmake @@ -40,17 +40,16 @@ function(remove_path_if_version_changed version version_file cache_path) endif() endfunction() -function(invoke_generator name generator primary_source header implementation) - cmake_parse_arguments(invoke_generator "" "" "arguments;dependencies" ${ARGN}) - +function(invoke_generator_impl name generator primary_source header implementation) + cmake_parse_arguments(invoke_generator_impl "" "" "command;arguments;dependencies" ${ARGN}) add_custom_command( OUTPUT "${header}" "${implementation}" - COMMAND $ -h "${header}.tmp" -c "${implementation}.tmp" ${invoke_generator_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 "${implementation}.tmp" "${implementation}" COMMAND "${CMAKE_COMMAND}" -E remove "${header}.tmp" "${implementation}.tmp" VERBATIM - DEPENDS ${generator} ${invoke_generator_dependencies} "${primary_source}" + DEPENDS ${generator} ${invoke_generator_impl_dependencies} "${primary_source}" ) add_custom_target("generate_${name}" DEPENDS "${header}" "${implementation}") @@ -59,6 +58,33 @@ function(invoke_generator name generator primary_source header implementation) set(CURRENT_LIB_GENERATED ${CURRENT_LIB_GENERATED} PARENT_SCOPE) endfunction() +function(invoke_cpp_generator name generator primary_source header implementation) + cmake_parse_arguments(invoke_cpp_generator "" "" "arguments;dependencies" ${ARGN}) + invoke_generator_impl( + ${name} + $ + ${primary_source} + ${header} + ${implementation} + arguments ${invoke_cpp_generator_arguments} + dependencies ${invoke_cpp_generator_dependencies} + ) +endfunction() + +function(invoke_py_generator name script primary_source header implementation) + cmake_parse_arguments(invoke_py_generator "" "" "arguments" ${ARGN}) + find_package(Python3 REQUIRED COMPONENTS Interpreter) + invoke_generator_impl( + ${name} + "${SerenityOS_SOURCE_DIR}/Meta/${script}" + ${primary_source} + ${header} + ${implementation} + command ${Python3_EXECUTABLE} + arguments ${invoke_py_generator_arguments} + ) +endfunction() + function(invoke_idl_generator cpp_name idl_name generator primary_source header implementation idl) cmake_parse_arguments(invoke_idl_generator "" "" "arguments;dependencies" ${ARGN})