summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt1
-rw-r--r--cmake/Functions.cmake34
-rw-r--r--examples/webenginewidgets/spellchecker/CMakeLists.txt34
-rw-r--r--src/core/CMakeLists.txt45
-rw-r--r--src/core/api/configure.cmake1
-rw-r--r--src/core/configure/BUILD.root.gn.in16
-rw-r--r--src/core/tools/CMakeLists.txt21
-rw-r--r--src/core/tools/main.cpp (renamed from src/tools/qwebengine_convert_dict/main.cpp)0
-rw-r--r--tests/auto/widgets/CMakeLists.txt2
-rw-r--r--tests/auto/widgets/spellchecking/CMakeLists.txt49
-rw-r--r--tests/auto/widgets/spellchecking/tst_spellchecking.cpp4
11 files changed, 178 insertions, 29 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 63d227fc4..ecea7f0fe 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -63,6 +63,7 @@ if(NOT QT_FEATURE_qtwebengine_build AND NOT QT_FEATURE_qtpdf_build)
endif()
add_subdirectory(src/core/api)
+add_subdirectory(src/core/tools)
add_subdirectory(src/process)
add_subdirectory(src/webenginewidgets)
add_subdirectory(src/webenginequick)
diff --git a/cmake/Functions.cmake b/cmake/Functions.cmake
index 2cd81554e..c61e403be 100644
--- a/cmake/Functions.cmake
+++ b/cmake/Functions.cmake
@@ -294,3 +294,37 @@ function(get_darwin_sdk_version result)
endif()
endfunction()
+function(extend_target_with_gn_objects target config cmakeFile stampFile)
+
+ include(${buildDir}/${config}/${cmakeFile})
+
+ string(TOUPPER ${config} cfg)
+ add_library(GnObjects_${target}_${config} OBJECT IMPORTED GLOBAL)
+ target_link_libraries(${target} PRIVATE $<$<CONFIG:${config}>:GnObjects_${target}_${config}>)
+ add_custom_target(ninja_${target}_${config} DEPENDS ${buildDir}/${config}/${stampFile})
+ add_dependencies(GnObjects_${target}_${config} ninja_${target}_${config})
+ #TODO: remove GnObjects_${target}_${config} with CMAKE 3.20
+ set_property(TARGET GnObjects_${target}_${config}
+ PROPERTY IMPORTED_OBJECTS_${cfg} ${${cfg}_NINJA_OBJECTS}
+ )
+ set_source_files_properties(${${cfg}_NINJA_OBJECTS} PROPERTIES GENERATED TRUE)
+
+ if(LINUX)
+ target_link_libraries(${target}
+ PRIVATE "-Wl,--start-group" "$<$<CONFIG:${config}>:${${cfg}_NINJA_ARCHIVES}>" "-Wl,--end-group")
+ else()
+ target_link_libraries(${target} PRIVATE "$<$<CONFIG:${config}>:${${cfg}_NINJA_ARCHIVES}>")
+ endif()
+
+ target_link_libraries(${target} PUBLIC "$<$<CONFIG:${config}>:${${cfg}_NINJA_LIBS}>")
+
+ # we depend on stampFile, but ninja backend generator needs more (create once)
+ if(stampFile)
+ add_custom_command(OUTPUT ${${cfg}_NINJA_OBJECTS} ${${cfg}_NINJA_ARCHIVES}
+ DEPENDS ${buildDir}/${config}/${stampFile}
+ )
+ add_custom_target(generate_${target}_${cfg}
+ DEPENDS ${${cfg}_NINJA_OBJECTS} ${${cfg}_NINJA_ARCHIVES}
+ )
+ endif()
+endfunction()
diff --git a/examples/webenginewidgets/spellchecker/CMakeLists.txt b/examples/webenginewidgets/spellchecker/CMakeLists.txt
index b8e17b1ac..f05cd74fe 100644
--- a/examples/webenginewidgets/spellchecker/CMakeLists.txt
+++ b/examples/webenginewidgets/spellchecker/CMakeLists.txt
@@ -53,3 +53,37 @@ install(TARGETS spellchecker
BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
)
+
+file(GLOB_RECURSE dicts
+ RELATIVE ${CMAKE_CURRENT_LIST_DIR}/dict
+ */*.dic
+)
+
+if(QT_GENERATOR_IS_MULTI_CONFIG)
+ set(spellcheckerDir ${CMAKE_CURRENT_BINARY_DIR}/dict/qtwebengine_dictionaries)
+else()
+ set(spellcheckerDir ${CMAKE_CURRENT_BINARY_DIR}/qtwebengine_dictionaries)
+endif()
+
+foreach(dictFile ${dicts})
+ get_filename_component(dictName ${dictFile} NAME_WE)
+ add_custom_command(TARGET spellchecker
+ PRE_BUILD
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${spellcheckerDir}
+ COMMAND $<TARGET_FILE:${QT_CMAKE_EXPORT_NAMESPACE}::qwebengine_convert_dict>
+ ${CMAKE_CURRENT_SOURCE_DIR}/dict/${dictFile}
+ ${spellcheckerDir}/${dictName}.bdic
+ COMMENT "Running qwebengine_convert_dict"
+ )
+endforeach()
+
+# copy dictionaries to $<CONFIG> build dir
+if(QT_GENERATOR_IS_MULTI_CONFIG)
+ add_custom_command(TARGET spellchecker
+ POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E echo Copying dictionares
+ COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_BINARY_DIR}/dict
+ ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>
+ )
+endif()
+
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 8dc6a8e9d..b5c30d3b9 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -14,6 +14,7 @@ include(${WEBENGINE_ROOT_SOURCE_DIR}/cmake/Functions.cmake)
assertRunAsTopLevelBuild(TRUE)
add_subdirectory(api)
+add_subdirectory(tools)
find_package(Qt6 ${PROJECT_VERSION} CONFIG REQUIRED COMPONENTS BuildInternals Core)
find_package(Gn ${QT_REPO_MODULE_VERSION} EXACT REQUIRED)
@@ -528,7 +529,6 @@ foreach(config ${configs})
string(REGEX REPLACE "\n$" "" gnOutput "${gnOutput}")
message("-- GN ${gnOutput}")
endif()
- include(${buildDir}/${config}/QtWebEngineCore.cmake)
##
@@ -577,30 +577,10 @@ endif()
foreach(config ${configs})
- string(TOUPPER ${config} cfg)
-
- add_library(GnObjects_${config} OBJECT IMPORTED GLOBAL)
- target_link_libraries(WebEngineCore PRIVATE $<$<CONFIG:${config}>:GnObjects_${config}>)
- add_dependencies(GnObjects_${config} ninja_${config})
- #TODO: remove GnObjects_${config} with CMAKE 3.20
- set_property(TARGET GnObjects_${config} PROPERTY IMPORTED_OBJECTS_${cfg} ${${cfg}_NINJA_OBJECTS})
- set_source_files_properties(${${cfg}_NINJA_OBJECTS} PROPERTIES GENERATED TRUE)
-
- if(LINUX)
- target_link_libraries(WebEngineCore
- PRIVATE "-Wl,--start-group" "$<$<CONFIG:${config}>:${${cfg}_NINJA_ARCHIVES}>" "-Wl,--end-group")
- else()
- target_link_libraries(WebEngineCore PRIVATE "$<$<CONFIG:${config}>:${${cfg}_NINJA_ARCHIVES}>")
- endif()
-
- target_link_libraries(WebEngineCore PUBLIC "$<$<CONFIG:${config}>:${${cfg}_NINJA_LIBS}>")
-
- # we depend on WebEnigneCore stamp, but ninja backend generator needs more
- add_custom_command(OUTPUT ${${cfg}_NINJA_OBJECTS} ${${cfg}_NINJA_ARCHIVES}
- DEPENDS ${buildDir}/${config}/QtWebEngineCore.stamp)
- add_custom_target(generate_${cfg} DEPENDS ${${cfg}_NINJA_OBJECTS} ${${cfg}_NINJA_ARCHIVES})
+ extend_target_with_gn_objects(WebEngineCore ${config} QtWebEngineCore.cmake QtWebEngineCore.stamp)
if(WIN32)
+ string(TOUPPER ${config} cfg)
set(sandboxLibraryPath ${buildDir}/${config}/QtWebEngineCoreSandbox.lib)
set_property(TARGET WebEngineCoreSandbox
PROPERTY IMPORTED_LOCATION_${cfg} ${sandboxLibraryPath})
@@ -612,7 +592,7 @@ foreach(config ${configs})
endforeach()
##
-# RESOURCES
+# WEBENGINECORE RESOURCES
##
#TODO: use simply filter / globbing-expressions
@@ -712,3 +692,20 @@ else()
${CMAKE_INSTALL_PREFIX}/translations/qtwebengine_locales)
endif()
endif()
+
+##
+# WEBENGINECORE DICT TOOL SETUP
+##
+
+if(QT_FEATURE_webengine_spellchecker)
+ qt_get_tool_target_name(dict_target_name qwebengine_convert_dict)
+ target_include_directories(${dict_target_name} PRIVATE
+ ../3rdparty/chromium
+ ../3rdparty/chromium/third_party/boringssl/src/include
+ ${buildDir}/${config}/gen
+ )
+ foreach(config ${configs})
+ extend_target_with_gn_objects(${dict_target_name} ${config} convert_dict.cmake "")
+ endforeach()
+endif()
+
diff --git a/src/core/api/configure.cmake b/src/core/api/configure.cmake
index 8e8b6044e..35d28e87f 100644
--- a/src/core/api/configure.cmake
+++ b/src/core/api/configure.cmake
@@ -81,7 +81,6 @@ qt_feature("webengine-kerberos" PRIVATE
qt_feature("webengine-spellchecker" PUBLIC
LABEL "Spellchecker"
PURPOSE "Provides a spellchecker."
- AUTODETECT OFF
)
qt_feature("webengine-native-spellchecker" PUBLIC
LABEL "Native Spellchecker"
diff --git a/src/core/configure/BUILD.root.gn.in b/src/core/configure/BUILD.root.gn.in
index 28882050f..b0e52511c 100644
--- a/src/core/configure/BUILD.root.gn.in
+++ b/src/core/configure/BUILD.root.gn.in
@@ -258,7 +258,8 @@ source_set("qtwebengine_sources") {
if (enable_spellcheck) {
deps += [
":qtwebengine_spellcheck_sources",
- "//chrome/tools/convert_dict",
+ "//chrome/tools/convert_dict:lib",
+ "//third_party/hunspell",
]
}
if (enable_plugins) {
@@ -530,3 +531,16 @@ if (enable_extensions) {
]
}
}
+
+if (enable_spellcheck) {
+ shared_library("convert_dict") {
+ cmake_config = "@GN_CONFIG@"
+ configs += [ "//build/config/compiler:wexit_time_destructors" ]
+ deps = [
+ "//chrome/tools/convert_dict:lib",
+ "//base",
+ "//base:i18n",
+ "//third_party/hunspell",
+ ]
+ }
+}
diff --git a/src/core/tools/CMakeLists.txt b/src/core/tools/CMakeLists.txt
new file mode 100644
index 000000000..d191f57b9
--- /dev/null
+++ b/src/core/tools/CMakeLists.txt
@@ -0,0 +1,21 @@
+
+##
+# WEBENGINECORE DICT CONVERT TOOL
+##
+
+if(QT_FEATURE_webengine_spellchecker)
+ qt_get_tool_target_name(dict_target_name qwebengine_convert_dict)
+ qt_internal_add_tool(${dict_target_name}
+ TARGET_DESCRIPTION "QtWebEngine Dictionary Conversion Tool"
+ INSTALL_DIR ${INSTALL_LIBEXECDIR}
+ TOOLS_TARGET WebEngineCore
+ SOURCES main.cpp
+ )
+ qt_skip_warnings_are_errors(${dict_target_name})
+ make_install_only(${dict_target_name})
+ add_dependencies(${dict_target_name} WebEngineCore)
+ qt_internal_extend_target(${dict_target_name} CONDITION WIN32
+ DEFINES WIN32_LEAN_AND_MEAN NOMINMAX
+ )
+endif()
+
diff --git a/src/tools/qwebengine_convert_dict/main.cpp b/src/core/tools/main.cpp
index d79132510..d79132510 100644
--- a/src/tools/qwebengine_convert_dict/main.cpp
+++ b/src/core/tools/main.cpp
diff --git a/tests/auto/widgets/CMakeLists.txt b/tests/auto/widgets/CMakeLists.txt
index f7955b1f8..a6e8d7c35 100644
--- a/tests/auto/widgets/CMakeLists.txt
+++ b/tests/auto/widgets/CMakeLists.txt
@@ -32,5 +32,5 @@ if(QT_FEATURE_ssl)
add_subdirectory(certificateerror)
endif()
if(QT_FEATURE_webengine_spellchecker AND NOT CMAKE_CROSSCOMPILING AND NOT QT_FEATURE_webengine_native_spellchecker)
-# add_subdirectory(spellchecking)
+ add_subdirectory(spellchecking)
endif()
diff --git a/tests/auto/widgets/spellchecking/CMakeLists.txt b/tests/auto/widgets/spellchecking/CMakeLists.txt
new file mode 100644
index 000000000..afed7e28b
--- /dev/null
+++ b/tests/auto/widgets/spellchecking/CMakeLists.txt
@@ -0,0 +1,49 @@
+include(../../util/util.cmake)
+
+qt_internal_add_test(tst_spellchecking
+ SOURCES
+ tst_spellchecking.cpp
+ LIBRARIES
+ Qt::WebEngineWidgets
+ Test::Util
+)
+
+qt_internal_add_resource(tst_spellchecking "tst_spellchecking"
+ PREFIX
+ "/"
+ FILES
+ "resources/index.html"
+)
+
+file(GLOB_RECURSE dicts
+ RELATIVE ${CMAKE_CURRENT_LIST_DIR}/dict
+ *.dic
+)
+
+if(QT_GENERATOR_IS_MULTI_CONFIG)
+ set(spellcheckerDir ${CMAKE_CURRENT_BINARY_DIR}/dict/qtwebengine_dictionaries)
+else()
+ set(spellcheckerDir ${CMAKE_CURRENT_BINARY_DIR}/qtwebengine_dictionaries)
+endif()
+
+foreach(dictFile ${dicts})
+ get_filename_component(dictName ${dictFile} NAME_WE)
+ add_custom_command(TARGET tst_spellchecking
+ PRE_BUILD
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${spellcheckerDir}
+ COMMAND $<TARGET_FILE:${QT_CMAKE_EXPORT_NAMESPACE}::qwebengine_convert_dict>
+ ${CMAKE_CURRENT_SOURCE_DIR}/dict/${dictFile}
+ ${spellcheckerDir}/${dictName}.bdic
+ COMMENT "Running qwebengine_convert_dict"
+ )
+endforeach()
+
+# copy dictionaries to $<CONFIG> build dir
+if(QT_GENERATOR_IS_MULTI_CONFIG)
+ add_custom_command(TARGET tst_spellchecking
+ POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E echo Copying dictionares
+ COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_BINARY_DIR}/dict
+ ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>
+ )
+endif()
diff --git a/tests/auto/widgets/spellchecking/tst_spellchecking.cpp b/tests/auto/widgets/spellchecking/tst_spellchecking.cpp
index 258071559..ab79ff6cb 100644
--- a/tests/auto/widgets/spellchecking/tst_spellchecking.cpp
+++ b/tests/auto/widgets/spellchecking/tst_spellchecking.cpp
@@ -26,12 +26,12 @@
**
****************************************************************************/
-#include "util.h"
+#include <util.h>
#include <QtTest/QtTest>
#include <QtWebEngineCore/qwebengineprofile.h>
#include <QtWebEngineCore/qwebenginepage.h>
+#include <QtWebEngineCore/qwebenginesettings.h>
#include <QtWebEngineWidgets/qwebengineview.h>
-#include <qwebenginesettings.h>
class WebView : public QWebEngineView
{