summaryrefslogtreecommitdiffstats
path: root/Source/cmake/OptionsQt.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmake/OptionsQt.cmake')
-rw-r--r--Source/cmake/OptionsQt.cmake79
1 files changed, 64 insertions, 15 deletions
diff --git a/Source/cmake/OptionsQt.cmake b/Source/cmake/OptionsQt.cmake
index 6dc423109..457fff566 100644
--- a/Source/cmake/OptionsQt.cmake
+++ b/Source/cmake/OptionsQt.cmake
@@ -1,4 +1,5 @@
include(FeatureSummary)
+include(ECMEnableSanitizers)
include(ECMPackageConfigHelpers)
set(ECM_MODULE_DIR ${CMAKE_MODULE_PATH})
@@ -59,6 +60,40 @@ macro(QT_ADD_EXTRA_WEBKIT_TARGET_EXPORT target)
endif ()
endmacro()
+macro(QTWEBKIT_GENERATE_MOC_FILES_CPP)
+ foreach (_file ${ARGN})
+ get_filename_component(_ext ${_file} EXT)
+ if (NOT _ext STREQUAL ".cpp")
+ message(FATAL_ERROR "QTWEBKIT_GENERATE_MOC_FILES_CPP must be used for .cpp files only")
+ endif ()
+ get_filename_component(_name_we ${_file} NAME_WE)
+ set(_moc_name "${CMAKE_CURRENT_BINARY_DIR}/${_name_we}.moc")
+ qt5_generate_moc(${_file} ${_moc_name})
+ ADD_SOURCE_DEPENDENCIES(${_file} ${_moc_name})
+ endforeach ()
+endmacro()
+
+macro(QTWEBKIT_GENERATE_MOC_FILE_H _header _source)
+ get_filename_component(_header_ext ${_header} EXT)
+ get_filename_component(_source_ext ${_source} EXT)
+ if ((NOT _header_ext STREQUAL ".h") OR (NOT _source_ext STREQUAL ".cpp"))
+ message(FATAL_ERROR "QTWEBKIT_GENERATE_MOC_FILE_H must be called with arguments being .h and .cpp files")
+ endif ()
+ get_filename_component(_name_we ${_header} NAME_WE)
+ set(_moc_name "${CMAKE_CURRENT_BINARY_DIR}/moc_${_name_we}.cpp")
+ qt5_generate_moc(${_header} ${_moc_name})
+ ADD_SOURCE_DEPENDENCIES(${_source} ${_moc_name})
+endmacro()
+
+macro(QTWEBKIT_GENERATE_MOC_FILES_H)
+ foreach (_header ${ARGN})
+ get_filename_component(_header_dir ${_header} DIRECTORY)
+ get_filename_component(_name_we ${_header} NAME_WE)
+ set(_source "${_header_dir}/${_name_we}.cpp")
+ QTWEBKIT_GENERATE_MOC_FILE_H(${_header} ${_source})
+ endforeach ()
+endmacro()
+
set(CMAKE_MACOSX_RPATH ON)
add_definitions(-DBUILDING_QT__=1)
@@ -98,6 +133,13 @@ else ()
set(USE_QT_MULTIMEDIA_DEFAULT OFF)
endif ()
+if (MSVC)
+ set(USE_QT_MULTIMEDIA_DEFAULT OFF)
+ set(USE_MEDIA_FOUNDATION_DEFAULT ON)
+else ()
+ set(USE_MEDIA_FOUNDATION_DEFAULT OFF)
+endif ()
+
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
set(ENABLE_GAMEPAD_DEPRECATED_DEFAULT ON)
else ()
@@ -111,7 +153,21 @@ else ()
endif ()
# FIXME: Move Qt handling here
-find_package(Qt5Gui QUIET)
+set(REQUIRED_QT_VERSION 5.2.0)
+find_package(Qt5 ${REQUIRED_QT_VERSION} REQUIRED COMPONENTS Core Gui QUIET)
+
+get_target_property(QT_CORE_TYPE Qt5::Core TYPE)
+if (QT_CORE_TYPE MATCHES STATIC)
+ set(QT_STATIC_BUILD ON)
+ set(SHARED_CORE OFF)
+ set(MACOS_BUILD_FRAMEWORKS OFF)
+endif ()
+
+if (QT_STATIC_BUILD)
+ set(ENABLE_WEBKIT2_DEFAULT OFF)
+else ()
+ set(ENABLE_WEBKIT2_DEFAULT ON)
+endif ()
if (UNIX AND TARGET Qt5::QXcbIntegrationPlugin AND NOT APPLE)
set(ENABLE_X11_TARGET_DEFAULT ON)
@@ -130,7 +186,7 @@ endif ()
# and the option is not relevant to any other WebKit ports.
WEBKIT_OPTION_DEFINE(USE_GSTREAMER "Use GStreamer implementation of MediaPlayer" PUBLIC ${USE_GSTREAMER_DEFAULT})
WEBKIT_OPTION_DEFINE(USE_LIBHYPHEN "Use automatic hyphenation with LibHyphen" PUBLIC ${USE_LIBHYPHEN_DEFAULT})
-WEBKIT_OPTION_DEFINE(USE_MEDIA_FOUNDATION "Use MediaFoundation implementation of MediaPlayer" PUBLIC OFF)
+WEBKIT_OPTION_DEFINE(USE_MEDIA_FOUNDATION "Use MediaFoundation implementation of MediaPlayer" PUBLIC ${USE_MEDIA_FOUNDATION_DEFAULT})
WEBKIT_OPTION_DEFINE(USE_QT_MULTIMEDIA "Use Qt Multimedia implementation of MediaPlayer" PUBLIC ${USE_QT_MULTIMEDIA_DEFAULT})
WEBKIT_OPTION_DEFINE(USE_WOFF2 "Include support of WOFF2 fonts format" PUBLIC ON)
WEBKIT_OPTION_DEFINE(ENABLE_INSPECTOR_UI "Include Inspector UI into resources" PUBLIC ON)
@@ -138,7 +194,7 @@ WEBKIT_OPTION_DEFINE(ENABLE_OPENGL "Whether to use OpenGL." PUBLIC ON)
WEBKIT_OPTION_DEFINE(ENABLE_PRINT_SUPPORT "Enable support for printing web pages" PUBLIC ON)
WEBKIT_OPTION_DEFINE(ENABLE_QT_GESTURE_EVENTS "Enable support for gesture events (required for mouse in WK2)" PUBLIC ON)
WEBKIT_OPTION_DEFINE(ENABLE_QT_WEBCHANNEL "Enable support for Qt WebChannel" PUBLIC ON)
-WEBKIT_OPTION_DEFINE(ENABLE_WEBKIT2 "Enable WebKit2 (QML API)" PUBLIC ON)
+WEBKIT_OPTION_DEFINE(ENABLE_WEBKIT2 "Enable WebKit2 (QML API)" PUBLIC ${ENABLE_WEBKIT2_DEFAULT})
WEBKIT_OPTION_DEFINE(ENABLE_X11_TARGET "Whether to enable support for the X11 windowing target." PUBLIC ${ENABLE_X11_TARGET_DEFAULT})
option(GENERATE_DOCUMENTATION "Generate HTML and QCH documentation" OFF)
@@ -208,6 +264,8 @@ if (MINGW AND CMAKE_SIZEOF_VOID_P EQUAL 8)
endif ()
WEBKIT_OPTION_CONFLICT(USE_GSTREAMER USE_QT_MULTIMEDIA)
+WEBKIT_OPTION_CONFLICT(USE_GSTREAMER USE_MEDIA_FOUNDATION)
+WEBKIT_OPTION_CONFLICT(USE_QT_MULTIMEDIA USE_MEDIA_FOUNDATION)
WEBKIT_OPTION_DEPEND(ENABLE_3D_TRANSFORMS ENABLE_OPENGL)
WEBKIT_OPTION_DEPEND(ENABLE_ACCELERATED_2D_CANVAS ENABLE_OPENGL)
@@ -230,9 +288,9 @@ WEBKIT_OPTION_END()
# FTL JIT and IndexedDB support require GCC 4.9
# TODO: Patch code to avoid variadic lambdas
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
- if (ENABLE_FTL_JIT OR ENABLE_INDEXED_DATABASE)
+ if (ENABLE_FTL_JIT OR ENABLE_INDEXED_DATABASE OR (ENABLE_WEBKIT2 AND ENABLE_DATABASE_PROCESS))
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.9.0")
- message(FATAL_ERROR "GCC 4.9.0 is required to build QtWebKit with FTL JIT and Indexed Database, use a newer GCC version or clang, or disable these features")
+ message(FATAL_ERROR "GCC 4.9.0 is required to build QtWebKit with FTL JIT, Indexed Database, and Database Process (WebKit 2). Use a newer GCC version or clang, or disable these features")
endif ()
else ()
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.8.0")
@@ -250,13 +308,6 @@ endif ()
set(ENABLE_WEBKIT ON)
set(WTF_USE_UDIS86 1)
-get_target_property(QT_CORE_TYPE Qt5::Core TYPE)
-if (QT_CORE_TYPE MATCHES STATIC)
- set(QT_STATIC_BUILD ON)
- set(SHARED_CORE OFF)
- set(MACOS_BUILD_FRAMEWORKS OFF)
-endif ()
-
if (SHARED_CORE)
set(WebCoreTestSupport_LIBRARY_TYPE SHARED)
else ()
@@ -390,7 +441,6 @@ if (WEBP_FOUND)
SET_AND_EXPOSE_TO_BUILD(USE_WEBP 1)
endif ()
-set(REQUIRED_QT_VERSION 5.2.0)
set(QT_REQUIRED_COMPONENTS Core Gui Network)
# FIXME: Allow building w/o these components
@@ -490,8 +540,6 @@ option(USE_LINKER_VERSION_SCRIPT "Use linker script for ABI compatibility with Q
# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
-# Instruct CMake to run moc automatically when needed.
-set(CMAKE_AUTOMOC ON)
# TODO: figure out if we can run automoc only on Qt sources
@@ -574,6 +622,7 @@ if (ENABLE_OPENGL)
endif ()
if (NOT ENABLE_VIDEO)
+ set(USE_MEDIA_FOUNDATION OFF)
set(USE_QT_MULTIMEDIA OFF)
if (NOT ENABLE_WEB_AUDIO)