mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-29 20:29:18 +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: 80c259125c
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
|
ShadowRealmExposedInterfaces.cpp ShadowRealmExposedInterfaces.h
|
||||||
WindowExposedInterfaces.cpp WindowExposedInterfaces.h)
|
WindowExposedInterfaces.cpp WindowExposedInterfaces.h)
|
||||||
list(TRANSFORM exposed_interface_sources PREPEND "Bindings/")
|
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(
|
add_custom_command(
|
||||||
OUTPUT ${exposed_interface_sources}
|
OUTPUT ${exposed_interface_sources}
|
||||||
COMMAND "${CMAKE_COMMAND}" -E make_directory "tmp"
|
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/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.h "Bindings/DedicatedWorkerExposedInterfaces.h"
|
||||||
COMMAND "${CMAKE_COMMAND}" -E copy_if_different tmp/DedicatedWorkerExposedInterfaces.cpp "Bindings/DedicatedWorkerExposedInterfaces.cpp"
|
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(!paths.is_empty());
|
||||||
VERIFY(!base_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;
|
Vector<ByteString> lexical_bases;
|
||||||
for (auto const& base_path : base_paths) {
|
for (auto const& base_path : base_paths) {
|
||||||
VERIFY(!base_path.is_empty());
|
VERIFY(!base_path.is_empty());
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue