mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-20 11:36:10 +00:00
Meta+LibWeb: Pass IDL files to codegen using response file on Windows
It might be a good idea to do this on other platforms as well, but at least on Windows, the command line for GenerateWindowOrWorkerInterfaces becomes too large.
This commit is contained in:
parent
06ff47749f
commit
80c259125c
Notes:
github-actions[bot]
2025-02-13 02:15:07 +00:00
Author: https://github.com/ADKaster Commit: https://github.com/LadybirdBrowser/ladybird/commit/80c259125c6 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/3551 Reviewed-by: https://github.com/alimpfard ✅ Reviewed-by: https://github.com/shannonbooth
2 changed files with 27 additions and 1 deletions
|
@ -219,10 +219,17 @@ function (generate_js_bindings target)
|
|||
ShadowRealmExposedInterfaces.cpp ShadowRealmExposedInterfaces.h
|
||||
WindowExposedInterfaces.cpp WindowExposedInterfaces.h)
|
||||
list(TRANSFORM exposed_interface_sources PREPEND "Bindings/")
|
||||
set(LIBWEB_ALL_IDL_FILES_ARGUMENT ${LIBWEB_ALL_IDL_FILES})
|
||||
if (WIN32)
|
||||
list(JOIN LIBWEB_ALL_IDL_FILES "\n" idl_file_list)
|
||||
file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/all_idl_files.txt" CONTENT "${idl_file_list}" NEWLINE_STYLE UNIX)
|
||||
set(LIBWEB_ALL_IDL_FILES "${CMAKE_CURRENT_BINARY_DIR}/all_idl_files.txt")
|
||||
set(LIBWEB_ALL_IDL_FILES_ARGUMENT "@${LIBWEB_ALL_IDL_FILES}")
|
||||
endif()
|
||||
add_custom_command(
|
||||
OUTPUT ${exposed_interface_sources}
|
||||
COMMAND "${CMAKE_COMMAND}" -E make_directory "tmp"
|
||||
COMMAND $<TARGET_FILE:Lagom::GenerateWindowOrWorkerInterfaces> -o "${CMAKE_CURRENT_BINARY_DIR}/tmp" -b "${LIBWEB_INPUT_FOLDER}" -b "${CMAKE_CURRENT_BINARY_DIR}" ${LIBWEB_ALL_IDL_FILES}
|
||||
COMMAND $<TARGET_FILE:Lagom::GenerateWindowOrWorkerInterfaces> -o "${CMAKE_CURRENT_BINARY_DIR}/tmp" -b "${LIBWEB_INPUT_FOLDER}" -b "${CMAKE_CURRENT_BINARY_DIR}" ${LIBWEB_ALL_IDL_FILES_ARGUMENT}
|
||||
COMMAND "${CMAKE_COMMAND}" -E copy_if_different tmp/IntrinsicDefinitions.cpp "Bindings/IntrinsicDefinitions.cpp"
|
||||
COMMAND "${CMAKE_COMMAND}" -E copy_if_different tmp/DedicatedWorkerExposedInterfaces.h "Bindings/DedicatedWorkerExposedInterfaces.h"
|
||||
COMMAND "${CMAKE_COMMAND}" -E copy_if_different tmp/DedicatedWorkerExposedInterfaces.cpp "Bindings/DedicatedWorkerExposedInterfaces.cpp"
|
||||
|
|
|
@ -356,6 +356,25 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
VERIFY(!paths.is_empty());
|
||||
VERIFY(!base_paths.is_empty());
|
||||
|
||||
if (paths.first().starts_with("@"sv)) {
|
||||
// Response file
|
||||
auto file_or_error = Core::File::open(paths.first().substring_view(1), Core::File::OpenMode::Read);
|
||||
paths.remove(0);
|
||||
VERIFY(paths.is_empty());
|
||||
|
||||
if (file_or_error.is_error()) {
|
||||
s_error_string = ByteString::formatted("Unable to open response file {}", paths.first());
|
||||
return Error::from_string_view(s_error_string.view());
|
||||
}
|
||||
auto file = file_or_error.release_value();
|
||||
auto string = TRY(file->read_until_eof());
|
||||
for (auto const& path : StringView(string).split_view('\n')) {
|
||||
if (path.is_empty())
|
||||
continue;
|
||||
paths.append(path);
|
||||
}
|
||||
}
|
||||
|
||||
Vector<ByteString> lexical_bases;
|
||||
for (auto const& base_path : base_paths) {
|
||||
VERIFY(!base_path.is_empty());
|
||||
|
|
Loading…
Add table
Reference in a new issue