Ver código fonte

LibWeb: Generate a clang module map file, including generated headers

Andrew Kaster 1 ano atrás
pai
commit
d105b1d4f8

+ 29 - 18
Meta/CMake/libweb_generators.cmake

@@ -96,20 +96,21 @@ function (generate_css_implementation)
         NAMESPACE "Web::CSS"
     )
 
+    set(CSS_GENERATED_HEADERS
+       "CSS/Enums.h"
+       "CSS/Keyword.h"
+       "CSS/MathFunctions.h"
+       "CSS/MediaFeatureID.h"
+       "CSS/PropertyID.h"
+       "CSS/PseudoClass.h"
+       "CSS/TransformFunctions.h"
+    )
+    list(TRANSFORM CSS_GENERATED_HEADERS PREPEND "${CMAKE_CURRENT_BINARY_DIR}/")
     if (ENABLE_INSTALL_HEADERS)
-        set(CSS_GENERATED_TO_INSTALL
-            "CSS/Enums.h"
-            "CSS/Keyword.h"
-            "CSS/MathFunctions.h"
-            "CSS/MediaFeatureID.h"
-            "CSS/PropertyID.h"
-            "CSS/PseudoClass.h"
-            "CSS/TransformFunctions.h"
-        )
-        list(TRANSFORM CSS_GENERATED_TO_INSTALL PREPEND "${CMAKE_CURRENT_BINARY_DIR}/")
-        install(FILES ${CSS_GENERATED_TO_INSTALL} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/LibWeb/CSS")
+        install(FILES ${CSS_GENERATED_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/LibWeb/CSS")
     endif()
-
+    list(APPEND LIBWEB_ALL_GENERATED_HEADERS ${CSS_GENERATED_HEADERS})
+    set(LIBWEB_ALL_GENERATED_HEADERS ${LIBWEB_ALL_GENERATED_HEADERS} PARENT_SCOPE)
 endfunction()
 
 function (generate_js_bindings target)
@@ -175,12 +176,16 @@ function (generate_js_bindings target)
         add_dependencies(all_generated generate_${basename})
         add_dependencies(${target} generate_${basename})
 
+        set(BINDINGS_HEADERS ${BINDINGS_SOURCES})
+        list(FILTER BINDINGS_HEADERS INCLUDE REGEX "\.h$")
+
         if (ENABLE_INSTALL_HEADERS)
-            # install generated sources
-            list(FILTER BINDINGS_SOURCES INCLUDE REGEX "\.h$")
-            install(FILES ${BINDINGS_SOURCES} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/LibWeb/Bindings")
+            install(FILES ${BINDINGS_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/LibWeb/Bindings")
         endif()
 
+        list(APPEND LIBWEB_ALL_GENERATED_HEADERS ${BINDINGS_HEADERS})
+        set(LIBWEB_ALL_GENERATED_HEADERS ${LIBWEB_ALL_GENERATED_HEADERS} PARENT_SCOPE)
+
         list(APPEND LIBWEB_ALL_IDL_FILES "${LIBWEB_INPUT_FOLDER}/${class}.idl")
         set(LIBWEB_ALL_IDL_FILES ${LIBWEB_ALL_IDL_FILES} PARENT_SCOPE)
     endfunction()
@@ -212,14 +217,20 @@ function (generate_js_bindings target)
         add_dependencies(all_generated generate_exposed_interfaces)
         add_dependencies(${target} generate_exposed_interfaces)
 
+        list(TRANSFORM exposed_interface_sources PREPEND "${CMAKE_CURRENT_BINARY_DIR}/")
+        set(exposed_interface_headers ${exposed_interface_sources})
+        list(FILTER exposed_interface_headers INCLUDE REGEX "\.h$")
+
         if (ENABLE_INSTALL_HEADERS)
-            list(FILTER exposed_interface_sources INCLUDE REGEX "\.h$")
-            list(TRANSFORM exposed_interface_sources PREPEND "${CMAKE_CURRENT_BINARY_DIR}/")
-            install(FILES ${exposed_interface_sources} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/LibWeb/Bindings")
+            install(FILES ${exposed_interface_headers} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/LibWeb/Bindings")
         endif()
+
+        list(APPEND LIBWEB_ALL_GENERATED_HEADERS ${exposed_interface_headers})
+        set(LIBWEB_ALL_GENERATED_HEADERS ${LIBWEB_ALL_GENERATED_HEADERS} PARENT_SCOPE)
     endfunction()
 
     include("idl_files.cmake")
     generate_exposed_interface_files()
 
+    set(LIBWEB_ALL_GENERATED_HEADERS ${LIBWEB_ALL_GENERATED_HEADERS} PARENT_SCOPE)
 endfunction()

+ 8 - 2
Userland/Libraries/LibWeb/CMakeLists.txt

@@ -777,5 +777,11 @@ target_link_libraries(LibWeb PRIVATE LibCore LibCrypto LibJS LibHTTP LibGfx LibI
 
 generate_js_bindings(LibWeb)
 
-# Note: If you're looking for the calls to "libweb_js_bindings()",
-# they have been moved to "idl_files.cmake"
+if (ENABLE_SWIFT)
+    set(generated_headers ${GENERATED_SOURCES})
+    list(FILTER generated_headers INCLUDE REGEX "\\.h$")
+    list(TRANSFORM generated_headers PREPEND "${CMAKE_CURRENT_BINARY_DIR}/")
+    list(APPEND LIBWEB_ALL_GENERATED_HEADERS ${generated_headers})
+
+    generate_clang_module_map(LibWeb GENERATED_FILES ${LIBWEB_ALL_GENERATED_HEADERS})
+endif()