Title: [226306] trunk
Revision
226306
Author
[email protected]
Date
2017-12-28 14:06:35 -0800 (Thu, 28 Dec 2017)

Log Message

[Win][CMake] Use add_custom_command to copy each forwarding header files
https://bugs.webkit.org/show_bug.cgi?id=180921

Patch by Fujii Hironori <[email protected]> on 2017-12-28
Reviewed by Brent Fulgham.

.:

Modifying WTF header files didn't trigger the recompilation of
TestWTF because Ninja doesn't know which command generates the
forwarding header.

Use add_custom_command to copy each forwarding header files.

* Source/cmake/WebKitMacros.cmake: Added a new function WEBKIT_MAKE_FORWARDING_HEADERS.

Source/_javascript_Core:

* PlatformWin.cmake: Use WEBKIT_MAKE_FORWARDING_HEADERS.

Source/WebCore:

No new tests because there is no behavior change.

* PlatformWin.cmake: Use WEBKIT_MAKE_FORWARDING_HEADERS.

Source/WebKitLegacy:

* PlatformWin.cmake: Use WEBKIT_MAKE_FORWARDING_HEADERS.

Source/WTF:

* wtf/PlatformWin.cmake: Use WEBKIT_MAKE_FORWARDING_HEADERS.

Tools:

TestWTFLib needs forwarding headers of WebCore. Use
add_dependencies instead of invoking the DerivedSources/WebCore/preBuild.cmd.

* TestWebKitAPI/PlatformWin.cmake:

Modified Paths

Diff

Modified: trunk/ChangeLog (226305 => 226306)


--- trunk/ChangeLog	2017-12-28 18:13:15 UTC (rev 226305)
+++ trunk/ChangeLog	2017-12-28 22:06:35 UTC (rev 226306)
@@ -1,3 +1,18 @@
+2017-12-28  Fujii Hironori  <[email protected]>
+
+        [Win][CMake] Use add_custom_command to copy each forwarding header files
+        https://bugs.webkit.org/show_bug.cgi?id=180921
+
+        Reviewed by Brent Fulgham.
+
+        Modifying WTF header files didn't trigger the recompilation of
+        TestWTF because Ninja doesn't know which command generates the
+        forwarding header.
+
+        Use add_custom_command to copy each forwarding header files.
+
+        * Source/cmake/WebKitMacros.cmake: Added a new function WEBKIT_MAKE_FORWARDING_HEADERS.
+
 2017-12-22  Michael Catanzaro  <[email protected]>
 
         [GTK] Duplicated symbols in libjavascriptcoregtk and libwebkit2gtk can cause crashes in production builds

Modified: trunk/Source/_javascript_Core/ChangeLog (226305 => 226306)


--- trunk/Source/_javascript_Core/ChangeLog	2017-12-28 18:13:15 UTC (rev 226305)
+++ trunk/Source/_javascript_Core/ChangeLog	2017-12-28 22:06:35 UTC (rev 226306)
@@ -1,3 +1,12 @@
+2017-12-28  Fujii Hironori  <[email protected]>
+
+        [Win][CMake] Use add_custom_command to copy each forwarding header files
+        https://bugs.webkit.org/show_bug.cgi?id=180921
+
+        Reviewed by Brent Fulgham.
+
+        * PlatformWin.cmake: Use WEBKIT_MAKE_FORWARDING_HEADERS.
+
 2017-12-28  Saam Barati  <[email protected]>
 
         Assertion used to determine if something is an async generator is wrong

Modified: trunk/Source/_javascript_Core/PlatformWin.cmake (226305 => 226306)


--- trunk/Source/_javascript_Core/PlatformWin.cmake	2017-12-28 18:13:15 UTC (rev 226305)
+++ trunk/Source/_javascript_Core/PlatformWin.cmake	2017-12-28 22:06:35 UTC (rev 226306)
@@ -33,16 +33,10 @@
     ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
 )
 
-file(MAKE_DIRECTORY ${FORWARDING_HEADERS_DIR}/_javascript_Core)
+WEBKIT_MAKE_FORWARDING_HEADERS(_javascript_Core
+    DIRECTORIES ${_javascript_Core_FORWARDING_HEADERS_DIRECTORIES}
+    DERIVED_SOURCE_DIRECTORIES ${DERIVED_SOURCES_DIR}/_javascript_Core ${DERIVED_SOURCES_DIR}/_javascript_Core/inspector
+    FLATTENED
+)
 
-set(_javascript_Core_PRE_BUILD_COMMAND "${CMAKE_BINARY_DIR}/DerivedSources/_javascript_Core/preBuild.cmd")
-file(REMOVE "${_javascript_Core_PRE_BUILD_COMMAND}")
-foreach (_directory ${_javascript_Core_FORWARDING_HEADERS_DIRECTORIES})
-    file(APPEND "${_javascript_Core_PRE_BUILD_COMMAND}" "@xcopy /y /d /f \"${_javascript_CORE_DIR}/${_directory}/*.h\" \"${FORWARDING_HEADERS_DIR}/_javascript_Core\" >nul 2>nul\n")
-endforeach ()
-
-set(_javascript_Core_POST_BUILD_COMMAND "${CMAKE_BINARY_DIR}/DerivedSources/_javascript_Core/postBuild.cmd")
-file(WRITE "${_javascript_Core_POST_BUILD_COMMAND}" "@xcopy /y /d /f \"${DERIVED_SOURCES_DIR}/_javascript_Core/*.h\" \"${FORWARDING_HEADERS_DIR}/_javascript_Core\" >nul 2>nul\n")
-file(APPEND "${_javascript_Core_POST_BUILD_COMMAND}" "@xcopy /y /d /f \"${DERIVED_SOURCES_DIR}/_javascript_Core/inspector/*.h\" \"${FORWARDING_HEADERS_DIR}/_javascript_Core\" >nul 2>nul\n")
-
 set(_javascript_Core_OUTPUT_NAME _javascript_Core${DEBUG_SUFFIX})

Modified: trunk/Source/WTF/ChangeLog (226305 => 226306)


--- trunk/Source/WTF/ChangeLog	2017-12-28 18:13:15 UTC (rev 226305)
+++ trunk/Source/WTF/ChangeLog	2017-12-28 22:06:35 UTC (rev 226306)
@@ -1,3 +1,12 @@
+2017-12-28  Fujii Hironori  <[email protected]>
+
+        [Win][CMake] Use add_custom_command to copy each forwarding header files
+        https://bugs.webkit.org/show_bug.cgi?id=180921
+
+        Reviewed by Brent Fulgham.
+
+        * wtf/PlatformWin.cmake: Use WEBKIT_MAKE_FORWARDING_HEADERS.
+
 2017-12-27  Yusuke Suzuki  <[email protected]>
 
         [WTF] Add clock_gettime based monotonicallyIncreasingTime implementation for Linux and BSDs

Modified: trunk/Source/WTF/wtf/PlatformWin.cmake (226305 => 226306)


--- trunk/Source/WTF/wtf/PlatformWin.cmake	2017-12-28 18:13:15 UTC (rev 226305)
+++ trunk/Source/WTF/wtf/PlatformWin.cmake	2017-12-28 22:06:35 UTC (rev 226306)
@@ -26,8 +26,20 @@
     list(APPEND WTF_LIBRARIES ${COREFOUNDATION_LIBRARY})
 endif ()
 
-set(WTF_PRE_BUILD_COMMAND "${CMAKE_BINARY_DIR}/DerivedSources/WTF/preBuild.cmd")
-file(WRITE "${WTF_PRE_BUILD_COMMAND}" "@xcopy /y /s /d /f \"${WTF_DIR}/wtf/*.h\" \"${FORWARDING_HEADERS_DIR}/wtf\" >nul 2>nul\n@xcopy /y /s /d /f \"${DERIVED_SOURCES_DIR}/WTF/*.h\" \"${FORWARDING_HEADERS_DIR}/wtf\" >nul 2>nul\n")
-file(MAKE_DIRECTORY ${FORWARDING_HEADERS_DIR}/wtf)
+set(WTF_FORWARDING_HEADERS_DIRECTORIES
+    .
+    cf
+    dtoa
+    generic
+    persistence
+    spi
+    text
+    threads
+    unicode
+    win
+)
+WEBKIT_MAKE_FORWARDING_HEADERS(WTF
+    DESTINATION ${FORWARDING_HEADERS_DIR}/wtf
+    DIRECTORIES ${WTF_FORWARDING_HEADERS_DIRECTORIES})
 
 set(WTF_OUTPUT_NAME WTF${DEBUG_SUFFIX})

Modified: trunk/Source/WebCore/ChangeLog (226305 => 226306)


--- trunk/Source/WebCore/ChangeLog	2017-12-28 18:13:15 UTC (rev 226305)
+++ trunk/Source/WebCore/ChangeLog	2017-12-28 22:06:35 UTC (rev 226306)
@@ -1,3 +1,14 @@
+2017-12-28  Fujii Hironori  <[email protected]>
+
+        [Win][CMake] Use add_custom_command to copy each forwarding header files
+        https://bugs.webkit.org/show_bug.cgi?id=180921
+
+        Reviewed by Brent Fulgham.
+
+        No new tests because there is no behavior change.
+
+        * PlatformWin.cmake: Use WEBKIT_MAKE_FORWARDING_HEADERS.
+
 2017-12-27  Carlos Alberto Lopez Perez  <[email protected]>
 
         Build fix after r226299

Modified: trunk/Source/WebCore/PlatformWin.cmake (226305 => 226306)


--- trunk/Source/WebCore/PlatformWin.cmake	2017-12-28 18:13:15 UTC (rev 226305)
+++ trunk/Source/WebCore/PlatformWin.cmake	2017-12-28 22:06:35 UTC (rev 226306)
@@ -313,18 +313,13 @@
     )
 endif ()
 
-file(MAKE_DIRECTORY ${FORWARDING_HEADERS_DIR}/WebCore)
+WEBKIT_MAKE_FORWARDING_HEADERS(WebCore
+    DIRECTORIES ${WebCore_FORWARDING_HEADERS_DIRECTORIES}
+    EXTRA_DIRECTORIES ForwardingHeaders
+    DERIVED_SOURCE_DIRECTORIES ${DERIVED_SOURCES_WEBCORE_DIR} ${DERIVED_SOURCES_PAL_DIR}
+    FLATTENED
+)
 
-set(WebCore_DERIVED_SOURCES_PRE_BUILD_COMMAND "${CMAKE_BINARY_DIR}/DerivedSources/WebCore/preBuild.cmd")
-file(WRITE "${WebCore_DERIVED_SOURCES_PRE_BUILD_COMMAND}" "@xcopy /y /s /d /f \"${WEBCORE_DIR}/ForwardingHeaders/*.h\" \"${FORWARDING_HEADERS_DIR}/WebCore\" >nul 2>nul\n")
-foreach (_directory ${WebCore_FORWARDING_HEADERS_DIRECTORIES})
-    file(APPEND "${WebCore_DERIVED_SOURCES_PRE_BUILD_COMMAND}" "@xcopy /y /d /f \"${WEBCORE_DIR}/${_directory}/*.h\" \"${FORWARDING_HEADERS_DIR}/WebCore\" >nul 2>nul\n")
-endforeach ()
-
-set(WebCore_POST_BUILD_COMMAND "${CMAKE_BINARY_DIR}/DerivedSources/WebCore/postBuild.cmd")
-file(WRITE "${WebCore_POST_BUILD_COMMAND}" "@xcopy /y /s /d /f \"${DERIVED_SOURCES_WEBCORE_DIR}/*.h\" \"${FORWARDING_HEADERS_DIR}/WebCore\" >nul 2>nul\n")
-file(APPEND "${WebCore_POST_BUILD_COMMAND}" "@xcopy /y /s /d /f \"${DERIVED_SOURCES_PAL_DIR}/*.h\" \"${FORWARDING_HEADERS_DIR}/WebCore\" >nul 2>nul\n")
-
 set(WebCore_OUTPUT_NAME
     WebCore${DEBUG_SUFFIX}
 )

Modified: trunk/Source/WebKitLegacy/ChangeLog (226305 => 226306)


--- trunk/Source/WebKitLegacy/ChangeLog	2017-12-28 18:13:15 UTC (rev 226305)
+++ trunk/Source/WebKitLegacy/ChangeLog	2017-12-28 22:06:35 UTC (rev 226306)
@@ -1,3 +1,12 @@
+2017-12-28  Fujii Hironori  <[email protected]>
+
+        [Win][CMake] Use add_custom_command to copy each forwarding header files
+        https://bugs.webkit.org/show_bug.cgi?id=180921
+
+        Reviewed by Brent Fulgham.
+
+        * PlatformWin.cmake: Use WEBKIT_MAKE_FORWARDING_HEADERS.
+
 2017-12-14  Yusuke Suzuki  <[email protected]>
 
         Drop Thread::tryCreate

Modified: trunk/Source/WebKitLegacy/PlatformWin.cmake (226305 => 226306)


--- trunk/Source/WebKitLegacy/PlatformWin.cmake	2017-12-28 18:13:15 UTC (rev 226305)
+++ trunk/Source/WebKitLegacy/PlatformWin.cmake	2017-12-28 22:06:35 UTC (rev 226306)
@@ -476,15 +476,13 @@
 file(MAKE_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
 file(MAKE_DIRECTORY ${DERIVED_SOURCES_WEBKITLEGACY_DIR}/Interfaces)
 
-set(WebKitLegacyGUID_PRE_BUILD_COMMAND "${CMAKE_BINARY_DIR}/DerivedSources/WebKitLegacy/preBuild.cmd")
-file(WRITE "${WebKitLegacyGUID_PRE_BUILD_COMMAND}" "@xcopy /y /d /f \"${CMAKE_CURRENT_SOURCE_DIR}/win/WebKitCOMAPI.h\" \"${FORWARDING_HEADERS_DIR}/WebKitLegacy\" >nul 2>nul\n@xcopy /y /d /f \"${CMAKE_CURRENT_SOURCE_DIR}/win/CFDictionaryPropertyBag.h\" \"${FORWARDING_HEADERS_DIR}/WebKitLegacy\" >nul 2>nul\n")
-file(MAKE_DIRECTORY ${FORWARDING_HEADERS_DIR}/WebKitLegacy)
-add_custom_command(TARGET WebKitLegacyGUID PRE_BUILD COMMAND ${WebKitLegacyGUID_PRE_BUILD_COMMAND} VERBATIM)
+WEBKIT_MAKE_FORWARDING_HEADERS(WebKitLegacyGUID
+    DESTINATION ${FORWARDING_HEADERS_DIR}/WebKitLegacy
+    FILES win/WebKitCOMAPI.h win/CFDictionaryPropertyBag.h
+    DERIVED_SOURCE_DIRECTORIES ${DERIVED_SOURCES_WEBKITLEGACY_DIR}/Interfaces
+    FLATTENED
+)
 
-set(WebKitLegacyGUID_POST_BUILD_COMMAND "${CMAKE_BINARY_DIR}/DerivedSources/WebKitLegacy/postBuild.cmd")
-file(WRITE "${WebKitLegacyGUID_POST_BUILD_COMMAND}" "@xcopy /y /d /f \"${DERIVED_SOURCES_WEBKITLEGACY_DIR}/Interfaces/*.h\" \"${FORWARDING_HEADERS_DIR}/WebKitLegacy\" >nul 2>nul")
-add_custom_command(TARGET WebKitLegacyGUID POST_BUILD COMMAND ${WebKitLegacyGUID_POST_BUILD_COMMAND} VERBATIM)
-
 set(WebKitLegacy_OUTPUT_NAME
     WebKit${DEBUG_SUFFIX}
 )

Modified: trunk/Source/cmake/WebKitMacros.cmake (226305 => 226306)


--- trunk/Source/cmake/WebKitMacros.cmake	2017-12-28 18:13:15 UTC (rev 226305)
+++ trunk/Source/cmake/WebKitMacros.cmake	2017-12-28 22:06:35 UTC (rev 226306)
@@ -215,6 +215,79 @@
     endif ()
 endmacro()
 
+function(WEBKIT_MAKE_FORWARDING_HEADERS framework)
+    set(options FLATTENED)
+    set(oneValueArgs DESTINATION)
+    set(multiValueArgs DIRECTORIES EXTRA_DIRECTORIES DERIVED_SOURCE_DIRECTORIES FILES)
+    cmake_parse_arguments(opt "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+    set(headers ${opt_FILES})
+    if (opt_DESTINATION)
+        set(destination ${opt_DESTINATION})
+    else ()
+        set(destination ${FORWARDING_HEADERS_DIR}/${framework})
+    endif ()
+    file(MAKE_DIRECTORY ${destination})
+    foreach (dir IN LISTS opt_DIRECTORIES)
+        file(GLOB files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${dir}/*.h)
+        list(APPEND headers ${files})
+    endforeach ()
+    set(fwd_headers)
+    foreach (header IN LISTS headers)
+        if (opt_FLATTENED)
+            get_filename_component(header_filename ${header} NAME)
+            set(fwd_header ${destination}/${header_filename})
+        else ()
+            get_filename_component(header_dir ${header} DIRECTORY)
+            file(MAKE_DIRECTORY ${destination}/${header_dir})
+            set(fwd_header ${destination}/${header})
+        endif ()
+        add_custom_command(OUTPUT ${fwd_header}
+            COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${header} ${fwd_header}
+            MAIN_DEPENDENCY ${header}
+            VERBATIM
+        )
+        list(APPEND fwd_headers ${fwd_header})
+    endforeach ()
+    foreach (dir IN LISTS opt_EXTRA_DIRECTORIES)
+        set(dir ${CMAKE_CURRENT_SOURCE_DIR}/${dir})
+        file(GLOB_RECURSE files RELATIVE ${dir} ${dir}/*.h)
+        foreach (header IN LISTS files)
+            get_filename_component(header_dir ${header} DIRECTORY)
+            file(MAKE_DIRECTORY ${destination}/${header_dir})
+            set(fwd_header ${destination}/${header})
+            add_custom_command(OUTPUT ${fwd_header}
+                COMMAND ${CMAKE_COMMAND} -E copy ${dir}/${header} ${fwd_header}
+                MAIN_DEPENDENCY ${dir}/${header}
+                VERBATIM
+            )
+            list(APPEND fwd_headers ${fwd_header})
+        endforeach ()
+    endforeach ()
+    add_custom_target(${framework}ForwardingHeaders DEPENDS ${fwd_headers})
+    add_dependencies(${framework} ${framework}ForwardingHeaders)
+    if (opt_DERIVED_SOURCE_DIRECTORIES)
+        set(script ${CMAKE_CURRENT_BINARY_DIR}/makeForwardingHeaders.cmake)
+        set(content "")
+        foreach (dir IN LISTS opt_DERIVED_SOURCE_DIRECTORIES)
+            string(CONCAT content ${content}
+                "file(GLOB headers \"${dir}/*.h\")\n"
+                "foreach (header IN LISTS headers)\n"
+                "    get_filename_component(header_filename \${header} NAME)\n"
+                "    execute_process(COMMAND \${CMAKE_COMMAND} -E copy \${header} ${destination}/\${header_filename} RESULT_VARIABLE result)\n"
+                "    if (NOT \${result} EQUAL 0)\n"
+                "        message(FATAL_ERROR \"Failed to copy \${header}: \${result}\")\n"
+                "    endif ()\n"
+                "endforeach ()\n"
+            )
+        endforeach ()
+        file(WRITE ${script} ${content})
+        add_custom_command(TARGET ${framework} POST_BUILD
+            COMMAND ${CMAKE_COMMAND} -P ${script}
+            VERBATIM
+        )
+    endif ()
+endfunction()
+
 # Helper macros for debugging CMake problems.
 macro(WEBKIT_DEBUG_DUMP_COMMANDS)
     set(CMAKE_VERBOSE_MAKEFILE ON)

Modified: trunk/Tools/ChangeLog (226305 => 226306)


--- trunk/Tools/ChangeLog	2017-12-28 18:13:15 UTC (rev 226305)
+++ trunk/Tools/ChangeLog	2017-12-28 22:06:35 UTC (rev 226306)
@@ -1,3 +1,15 @@
+2017-12-28  Fujii Hironori  <[email protected]>
+
+        [Win][CMake] Use add_custom_command to copy each forwarding header files
+        https://bugs.webkit.org/show_bug.cgi?id=180921
+
+        Reviewed by Brent Fulgham.
+
+        TestWTFLib needs forwarding headers of WebCore. Use
+        add_dependencies instead of invoking the DerivedSources/WebCore/preBuild.cmd.
+
+        * TestWebKitAPI/PlatformWin.cmake:
+
 2017-12-22  Wenson Hsieh  <[email protected]>
 
         Unreviewed, try to fix the Sierra build again after r226277.

Modified: trunk/Tools/TestWebKitAPI/PlatformWin.cmake (226305 => 226306)


--- trunk/Tools/TestWebKitAPI/PlatformWin.cmake	2017-12-28 18:13:15 UTC (rev 226305)
+++ trunk/Tools/TestWebKitAPI/PlatformWin.cmake	2017-12-28 22:06:35 UTC (rev 226306)
@@ -2,11 +2,6 @@
 set(TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY_WTF "${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY}")
 add_definitions(-DUSE_CONSOLE_ENTRY_POINT)
 
-add_custom_target(forwarding-headersWinForTestWebKitAPI
-    COMMAND ${CMAKE_BINARY_DIR}/DerivedSources/WebCore/preBuild.cmd VERBATIM
-)
-set(ForwardingHeadersForTestWebKitAPI_NAME forwarding-headersWinForTestWebKitAPI)
-
 if (${WTF_PLATFORM_WIN_CAIRO})
     add_definitions(-DWIN_CAIRO)
 endif ()
@@ -110,7 +105,7 @@
 )
 set_target_properties(TestWTFLib PROPERTIES OUTPUT_NAME "TestWTFLib")
 target_link_libraries(TestWTFLib ${test_wtf_LIBRARIES})
-add_dependencies(TestWTFLib ${ForwardingHeadersForTestWebKitAPI_NAME})
+add_dependencies(TestWTFLib WebCoreForwardingHeaders)
 
 set(test_wtf_LIBRARIES
     shlwapi
@@ -129,7 +124,6 @@
     ${TOOLS_DIR}/win/DLLLauncher/DLLLauncherMain.cpp
 )
 target_link_libraries(TestWebCore shlwapi)
-add_dependencies(TestWebCore ${ForwardingHeadersForTestWebKitAPI_NAME})
 
 
 add_test(TestWebCore ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY}/TestWebCore)
@@ -160,7 +154,6 @@
     ${TOOLS_DIR}/win/DLLLauncher/DLLLauncherMain.cpp
 )
 target_link_libraries(TestWebKitLegacy shlwapi)
-add_dependencies(TestWebKitLegacy ${ForwardingHeadersForTestWebKitAPI_NAME})
 
 add_test(TestWebKitLegacy ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY}/TestWebKitLegacy)
 set_tests_properties(TestWebKitLegacy PROPERTIES TIMEOUT 60)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to