From 0fcedcd17cc00d3dd44c718b3cb36c1033319671 Mon Sep 17 00:00:00 2001 From: Konstantin Tokarev Date: Mon, 8 May 2017 01:22:24 +0300 Subject: Import WebKit commit b25ce6eca994718717218f56d045e75a4a22f989 Change-Id: Ied338d9a16b44b5da35d484e80a21acc284eb625 Reviewed-by: Konstantin Tokarev --- Source/JavaScriptCore/API/JSStringRef.cpp | 6 +++--- Source/JavaScriptCore/runtime/DateConversion.cpp | 3 ++- Source/PlatformQt.cmake | 13 ++++++++++++ Source/WTF/wtf/text/WTFString.h | 4 ---- Source/WebCore/bindings/js/JSDOMGlobalObject.h | 1 + .../win/MediaPlayerPrivateMediaFoundation.cpp | 2 +- Source/WebKit/PlatformQt.cmake | 18 +--------------- Source/WebKit2/PlatformQt.cmake | 4 ++++ Source/WebKit2/Shared/API/c/WKString.cpp | 2 +- Source/cmake/OptionsQt.cmake | 24 +++++++++++++++++----- Tools/qmake/projects/run_cmake.pro | 20 ++++++++++-------- 11 files changed, 56 insertions(+), 41 deletions(-) diff --git a/Source/JavaScriptCore/API/JSStringRef.cpp b/Source/JavaScriptCore/API/JSStringRef.cpp index c9b380ce6..909540481 100644 --- a/Source/JavaScriptCore/API/JSStringRef.cpp +++ b/Source/JavaScriptCore/API/JSStringRef.cpp @@ -37,7 +37,7 @@ using namespace WTF::Unicode; JSStringRef JSStringCreateWithCharacters(const JSChar* chars, size_t numChars) { initializeThreading(); - return &OpaqueJSString::create(chars, numChars).leakRef(); + return &OpaqueJSString::create(reinterpret_cast(chars), numChars).leakRef(); } JSStringRef JSStringCreateWithUTF8CString(const char* string) @@ -62,7 +62,7 @@ JSStringRef JSStringCreateWithUTF8CString(const char* string) JSStringRef JSStringCreateWithCharactersNoCopy(const JSChar* chars, size_t numChars) { initializeThreading(); - return OpaqueJSString::create(StringImpl::createWithoutCopying(chars, numChars)).leakRef(); + return OpaqueJSString::create(StringImpl::createWithoutCopying(reinterpret_cast(chars), numChars)).leakRef(); } JSStringRef JSStringRetain(JSStringRef string) @@ -87,7 +87,7 @@ const JSChar* JSStringGetCharactersPtr(JSStringRef string) { if (!string) return nullptr; - return string->characters(); + return reinterpret_cast(string->characters()); } size_t JSStringGetMaximumUTF8CStringSize(JSStringRef string) diff --git a/Source/JavaScriptCore/runtime/DateConversion.cpp b/Source/JavaScriptCore/runtime/DateConversion.cpp index 0b57f012d..05e27338b 100644 --- a/Source/JavaScriptCore/runtime/DateConversion.cpp +++ b/Source/JavaScriptCore/runtime/DateConversion.cpp @@ -107,7 +107,8 @@ String formatDateTime(const GregorianDateTime& t, DateTimeFormat format, bool as #if OS(WINDOWS) TIME_ZONE_INFORMATION timeZoneInformation; GetTimeZoneInformation(&timeZoneInformation); - const WCHAR* timeZoneName = t.isDST() ? timeZoneInformation.DaylightName : timeZoneInformation.StandardName; + const WCHAR* winTimeZoneName = t.isDST() ? timeZoneInformation.DaylightName : timeZoneInformation.StandardName; + String timeZoneName(reinterpret_cast(winTimeZoneName)); #else struct tm gtm = t; char timeZoneName[70]; diff --git a/Source/PlatformQt.cmake b/Source/PlatformQt.cmake index 8d5fd7e04..afd2c2c2a 100644 --- a/Source/PlatformQt.cmake +++ b/Source/PlatformQt.cmake @@ -20,6 +20,19 @@ if (USE_MINIMAL_DEBUG_INFO AND CMAKE_BUILD_TYPE STREQUAL "Debug") endif () endif () +if (USE_MINIMAL_DEBUG_INFO_MSVC AND MSVC AND CMAKE_BUILD_TYPE STREQUAL "Debug") + set(CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_RELEASE}) + set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_RELEASE}) + + target_compile_options(WebKit PRIVATE /Zi) + if (TARGET WebKit2) + target_compile_options(WebKit2 PRIVATE /Zi) + endif () + if (TARGET WebKitWidgets) + target_compile_options(WebKitWidgets PRIVATE /Zi) + endif () +endif () + # GTest if (TARGET gtest) diff --git a/Source/WTF/wtf/text/WTFString.h b/Source/WTF/wtf/text/WTFString.h index 957bfc684..90b3272a3 100644 --- a/Source/WTF/wtf/text/WTFString.h +++ b/Source/WTF/wtf/text/WTFString.h @@ -356,11 +356,7 @@ public: // Use convertToASCIILowercase instead if ASCII case insensitive comparison is desired. WTF_EXPORT_STRING_API String foldCase() const; -#if !PLATFORM(QT) WTF_EXPORT_STRING_API static String format(const char *, ...) WTF_ATTRIBUTE_PRINTF(1, 2); -#else - WTF_EXPORT_STRING_API static String format(const char *, ...); -#endif // Returns an uninitialized string. The characters needs to be written // into the buffer returned in data before the returned string is used. diff --git a/Source/WebCore/bindings/js/JSDOMGlobalObject.h b/Source/WebCore/bindings/js/JSDOMGlobalObject.h index ca286c0a6..0f77bf435 100644 --- a/Source/WebCore/bindings/js/JSDOMGlobalObject.h +++ b/Source/WebCore/bindings/js/JSDOMGlobalObject.h @@ -30,6 +30,7 @@ #include "PlatformExportMacros.h" #include "WebCoreJSBuiltinInternals.h" #include +#include namespace WebCore { diff --git a/Source/WebCore/platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp b/Source/WebCore/platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp index 8c898c17b..b6bdf60ca 100644 --- a/Source/WebCore/platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp +++ b/Source/WebCore/platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp @@ -695,7 +695,7 @@ void MediaPlayerPrivateMediaFoundation::createVideoWindow() PlatformPageClient pageClient = view->hostWindow()->platformPageClient(); #if PLATFORM(QT) - QWindow* ownerWindow = pageClient->ownerWindow(); + QWindow* ownerWindow = pageClient ? pageClient->ownerWindow() : nullptr; if (!ownerWindow) return; hWndParent = (HWND)ownerWindow->winId(); diff --git a/Source/WebKit/PlatformQt.cmake b/Source/WebKit/PlatformQt.cmake index d2562e5e7..bd72a04bb 100644 --- a/Source/WebKit/PlatformQt.cmake +++ b/Source/WebKit/PlatformQt.cmake @@ -233,7 +233,7 @@ if (ENABLE_WEBKIT2) set(WEBKIT2_LIBRARY -Wl,-force_load WebKit2) elseif (MSVC) set(WEBKIT2_LIBRARY "-WHOLEARCHIVE:WebKit2${CMAKE_DEBUG_POSTFIX}") - elseif (UNIX) + elseif (UNIX OR MINGW) set(WEBKIT2_LIBRARY -Wl,--whole-archive WebKit2 -Wl,--no-whole-archive) else () message(WARNING "Unknown system, linking with WebKit2 may fail!") @@ -740,22 +740,6 @@ if (MSVC) ) endif () - # Make sure incremental linking is turned off, as it creates unacceptably long link times. - string(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replace_CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS}) - set(CMAKE_SHARED_LINKER_FLAGS "${replace_CMAKE_SHARED_LINKER_FLAGS} /INCREMENTAL:NO") - string(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replace_CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS}) - set(CMAKE_EXE_LINKER_FLAGS "${replace_CMAKE_EXE_LINKER_FLAGS} /INCREMENTAL:NO") - - string(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replace_CMAKE_SHARED_LINKER_FLAGS_DEBUG ${CMAKE_SHARED_LINKER_FLAGS_DEBUG}) - set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${replace_CMAKE_SHARED_LINKER_FLAGS_DEBUG} /INCREMENTAL:NO") - string(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replace_CMAKE_EXE_LINKER_FLAGS_DEBUG ${CMAKE_EXE_LINKER_FLAGS_DEBUG}) - set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${replace_CMAKE_EXE_LINKER_FLAGS_DEBUG} /INCREMENTAL:NO") - - string(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replace_CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO ${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO}) - set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${replace_CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO} /INCREMENTAL:NO") - string(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replace_CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO}) - set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${replace_CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} /INCREMENTAL:NO") - list(APPEND WebKit_INCLUDE_DIRECTORIES ${DERIVED_SOURCES_WEBKIT_DIR} ) diff --git a/Source/WebKit2/PlatformQt.cmake b/Source/WebKit2/PlatformQt.cmake index c3776fc4f..ec36a4247 100644 --- a/Source/WebKit2/PlatformQt.cmake +++ b/Source/WebKit2/PlatformQt.cmake @@ -11,6 +11,10 @@ else () set(WebKit2_LIBRARY_TYPE STATIC) endif () +if (${JavaScriptCore_LIBRARY_TYPE} MATCHES STATIC) + add_definitions(-DSTATICALLY_LINKED_WITH_WTF -DSTATICALLY_LINKED_WITH_JavaScriptCore) +endif () + #set(WebKit2_USE_PREFIX_HEADER ON) list(APPEND WebKit2_INCLUDE_DIRECTORIES diff --git a/Source/WebKit2/Shared/API/c/WKString.cpp b/Source/WebKit2/Shared/API/c/WKString.cpp index 305dd01b5..bd2f17436 100644 --- a/Source/WebKit2/Shared/API/c/WKString.cpp +++ b/Source/WebKit2/Shared/API/c/WKString.cpp @@ -61,7 +61,7 @@ size_t WKStringGetCharacters(WKStringRef stringRef, WKChar* buffer, size_t buffe unsigned unsignedBufferLength = std::min(bufferLength, std::numeric_limits::max()); auto substring = toImpl(stringRef)->stringView().substring(0, unsignedBufferLength); - substring.getCharactersWithUpconvert(static_cast(buffer)); + substring.getCharactersWithUpconvert(reinterpret_cast(buffer)); return substring.length(); } diff --git a/Source/cmake/OptionsQt.cmake b/Source/cmake/OptionsQt.cmake index 568ee2ad1..27620f509 100644 --- a/Source/cmake/OptionsQt.cmake +++ b/Source/cmake/OptionsQt.cmake @@ -710,6 +710,22 @@ if (MSVC) set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /ignore:4049 /ignore:4217") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /ignore:4049 /ignore:4217") + # Make sure incremental linking is turned off, as it creates unacceptably long link times. + string(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replace_CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS}) + set(CMAKE_SHARED_LINKER_FLAGS "${replace_CMAKE_SHARED_LINKER_FLAGS} /INCREMENTAL:NO") + string(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replace_CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS}) + set(CMAKE_EXE_LINKER_FLAGS "${replace_CMAKE_EXE_LINKER_FLAGS} /INCREMENTAL:NO") + + string(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replace_CMAKE_SHARED_LINKER_FLAGS_DEBUG ${CMAKE_SHARED_LINKER_FLAGS_DEBUG}) + set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${replace_CMAKE_SHARED_LINKER_FLAGS_DEBUG} /INCREMENTAL:NO") + string(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replace_CMAKE_EXE_LINKER_FLAGS_DEBUG ${CMAKE_EXE_LINKER_FLAGS_DEBUG}) + set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${replace_CMAKE_EXE_LINKER_FLAGS_DEBUG} /INCREMENTAL:NO") + + string(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replace_CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO ${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO}) + set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${replace_CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO} /INCREMENTAL:NO") + string(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replace_CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO}) + set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${replace_CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} /INCREMENTAL:NO") + if (${CMAKE_BUILD_TYPE} MATCHES "Debug") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /OPT:NOREF /OPT:NOICF") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /OPT:NOREF /OPT:NOICF") @@ -719,11 +735,9 @@ if (MSVC) #set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /VERBOSE /VERBOSE:INCR /TIME") #set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /VERBOSE /VERBOSE:INCR /TIME") - # enable fast link for >= MSVC2015 - if ((MSVC_VERSION GREATER 1900) OR (MSVC_VERSION EQUAL 1900)) - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEBUG:FASTLINK") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUG:FASTLINK") - endif () + # enable fast link + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEBUG:FASTLINK") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUG:FASTLINK") elseif (${CMAKE_BUILD_TYPE} MATCHES "Release") add_compile_options(/Oy-) endif () diff --git a/Tools/qmake/projects/run_cmake.pro b/Tools/qmake/projects/run_cmake.pro index 4b47f54f4..5603ed72e 100644 --- a/Tools/qmake/projects/run_cmake.pro +++ b/Tools/qmake/projects/run_cmake.pro @@ -6,14 +6,6 @@ TEMPLATE = aux qtConfig(debug_and_release): CONFIG += debug_and_release build_all -msvc:!contains(QMAKE_HOST.arch, x86_64) { - debug_and_release { - warning("Skipping debug build of QtWebKit because it requires a 64-bit toolchain") - CONFIG -= debug_and_release debug - CONFIG += release - } -} - CONFIG(debug, debug|release) { configuration = Debug } else { @@ -28,9 +20,15 @@ build_pass|!debug_and_release { PORT=Qt \ CMAKE_BUILD_TYPE=$$configuration \ CMAKE_TOOLCHAIN_FILE=$$toolchain_file \ - CMAKE_PREFIX_PATH=\"$$[QT_INSTALL_PREFIX];$$ROOT_QT_BUILD_DIR/qtbase;$$ROOT_QT_BUILD_DIR/qtlocation;$$ROOT_QT_BUILD_DIR/qtsensors\" \ USE_LIBHYPHEN=OFF + !isEmpty(_QMAKE_SUPER_CACHE_) { + CMAKE_PREFIX_PATH=\"$$ROOT_QT_BUILD_DIR/qtbase;$$ROOT_QT_BUILD_DIR/qtlocation;$$ROOT_QT_BUILD_DIR/qtsensors;$$ROOT_QT_BUILD_DIR/qtdeclarative;$$ROOT_QT_BUILD_DIR/qtwebchannel\" + } else { + CMAKE_PREFIX_PATH=\"$$[QT_INSTALL_PREFIX]\" + } + CMAKE_CONFIG += CMAKE_PREFIX_PATH=$$CMAKE_PREFIX_PATH + static: CMAKE_CONFIG += USE_THIN_ARCHIVES=OFF static_runtime: CMAKE_CONFIG += USE_STATIC_RUNTIME=ON @@ -64,6 +62,10 @@ build_pass|!debug_and_release { CMAKE_CONFIG += QT_CONAN_DIR=$$ROOT_BUILD_DIR } + msvc:!contains(QMAKE_HOST.arch, x86_64) { + CMAKE_CONFIG += USE_MINIMAL_DEBUG_INFO_MSVC=ON + } + macos { # Reuse the cached sdk version value from mac/sdk.prf if available # otherwise query for it. -- cgit v1.2.3