diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/CMakeLists.txt | 163 | ||||
-rw-r--r-- | src/core/CMakeLists.txt | 171 | ||||
-rw-r--r-- | src/core/api/CMakeLists.txt | 80 | ||||
-rw-r--r-- | src/core/tools/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/pdf/CMakeLists.txt | 260 | ||||
-rw-r--r-- | src/pdf/plugins/imageformats/pdf/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/pdfquick/CMakeLists.txt | 5 | ||||
-rw-r--r-- | src/pdfwidgets/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/process/CMakeLists.txt | 3 | ||||
-rw-r--r-- | src/webenginequick/CMakeLists.txt | 9 | ||||
-rw-r--r-- | src/webenginequick/ui/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/webenginewidgets/CMakeLists.txt | 6 |
12 files changed, 393 insertions, 309 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2db5f81e7..a8c331738 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,28 +1,55 @@ cmake_minimum_required(VERSION 3.19) +## +# MAIN CONFIGURE +## -if(NOT DEFINED WEBENGINE_ROOT_SOURCE_DIR) - get_filename_component(WEBENGINE_ROOT_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/.." REALPATH) -endif() +get_filename_component(WEBENGINE_ROOT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/.." REALPATH) +get_filename_component(WEBENGINE_ROOT_BUILD_DIR "${PROJECT_BINARY_DIR}" REALPATH) -include(${WEBENGINE_ROOT_SOURCE_DIR}/.cmake.conf) -include(${WEBENGINE_ROOT_SOURCE_DIR}/cmake/Functions.cmake) +# Note this is configure that does not belong to any module +qt_feature_module_begin(ONLY_EVALUATE_FEATURES) +# Enable printing of feature summary by forcing qt_configure_record_command +# to work in spite of ONLY_EVALUATE_FEATURES. +set(__QtFeature_only_evaluate_features OFF) +include(../configure.cmake) +qt_feature_module_end(ONLY_EVALUATE_FEATURES) -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${WEBENGINE_ROOT_SOURCE_DIR}/cmake") +## +# SUPPORT CHECK +## -assertRunAsTopLevelBuild(TRUE) +if(NOT ${QtWebEngine_SUPPORT}) + add_custom_target(WebEngineErrorMessage ALL + ${CMAKE_COMMAND} -E cmake_echo_color --red "QtWebEngine will not be built: ${QtWebEngine_ERROR}" + COMMENT "Check QtWebEngine support" + VERBATIM + ) + message("-- Support check for QtWebEngine failed: ${QtWebEngine_ERROR}") + set(QT_FEATURE_qtwebengine_build OFF CACHE BOOL "Build QtWebEngine" FORCE) + set(QT_FEATURE_qtwebengine_widgets_build OFF CACHE BOOL "Build QtWebEngineWidgets" FORCE) + set(QT_FEATURE_qtwebengine_quick_build OFF CACHE BOOL "Build QtWebEngineQuick" FORCE) +endif() -project(QtWebEngineRepo - VERSION "${QT_REPO_MODULE_VERSION}" - DESCRIPTION "QtWebEngineRepo for QtWebEngineCore, QtWebEngine, QtWebEngineWidgets, QtPdf modules" - HOMEPAGE_URL "https://qt.io" - LANGUAGES CXX C) +if(NOT ${QtPdf_SUPPORT}) + add_custom_target(PdfErrorMessage ALL + ${CMAKE_COMMAND} -E cmake_echo_color --red "QtPdf will not be built: ${QtPdf_ERROR}" + COMMENT "Check QtPdf support" + VERBATIM + ) + message("-- Support check for QtPdf failed: ${QtPdf_ERROR}") + set(QT_FEATURE_qtpdf_build OFF CACHE BOOL "Build QtPdf" FORCE) + set(QT_FEATURE_qtpdf_widgets_build OFF CACHE BOOL "Build QtPdfWidgets" FORCE) + set(QT_FEATURE_qtpdf_quick_build OFF CACHE BOOL "Build QtPdfQuick" FORCE) +endif() -# Make sure we use the fixed BASE argument of qt_add_resource. -set(QT_USE_FIXED_QT_ADD_RESOURCE_BASE TRUE) +if(NOT QT_FEATURE_qtwebengine_build AND NOT QT_FEATURE_qtpdf_build) + return() +endif() -find_package(Qt6 ${PROJECT_VERSION} CONFIG REQUIRED COMPONENTS BuildInternals Core) +## +# MODULES +## -qt_build_repo_begin() if(QT_FEATURE_qtwebengine_build) add_subdirectory(core) add_subdirectory(process) @@ -35,6 +62,16 @@ if(QT_FEATURE_qtwebengine_build) endif() if(QT_FEATURE_qtpdf_build) add_subdirectory(pdf) + # keep log order, pdf build after webengine + if(QT_FEATURE_qtwebengine_build) + add_dependencies(run_pdf_GnReady WebEngineCore) + endif() + if(QT_FEATURE_qtwebengine_widgets_build) + add_dependencies(run_pdf_GnReady WebEngineWidgets) + endif() + if(QT_FEATURE_qtwebengine_quick_build) + add_dependencies(run_pdf_GnReady WebEngineQuick) + endif() if(QT_FEATURE_qtpdf_widgets_build) add_subdirectory(pdfwidgets) endif() @@ -42,5 +79,97 @@ if(QT_FEATURE_qtpdf_build) add_subdirectory(pdfquick) endif() endif() -qt_build_repo_end() + +## +# NINJA PROJECT +## + +set(installDir ${PROJECT_BINARY_DIR}/install) + +if(NOT Ninja_FOUND) + externalproject_add(ninja + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/ninja + BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/ninja + INSTALL_DIR ${installDir} + PREFIX ninja + USES_TERMINAL_BUILD TRUE + EXCLUDE_FROM_ALL TRUE + CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release + -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> + -DCMAKE_PREFIX_PATH:PATH=<INSTALL_DIR> + ) + if(QT_FEATURE_qtwebengine_build) + add_dependencies(run_core_NinjaReady ninja) + endif() + if(QT_FEATURE_qtpdf_build) + add_dependencies(run_pdf_NinjaReady ninja) + endif() +endif() + +## +# GN PROJECT +## + +if(NOT Gn_FOUND) + externalproject_add(gn + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/gn + BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/gn + INSTALL_DIR ${installDir} + PREFIX gn + USES_TERMINAL_BUILD TRUE + EXCLUDE_FROM_ALL TRUE + CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> + -DCMAKE_PREFIX_PATH:PATH=<INSTALL_DIR> + -DWEBENGINE_ROOT_BUILD_DIR=${PROJECT_BINARY_DIR} + ) + if(QT_FEATURE_qtwebengine_build) + add_dependencies(run_core_GnReady gn) + endif() + if(QT_FEATURE_qtpdf_build) + add_dependencies(run_pdf_GnReady gn) + endif() + set(INSTALL_GN 1 CACHE INTERNAL "") +endif() + +## +# HOST PROJECT +## + +if(CMAKE_CROSSCOMPILING) + + if(NOT Gn_FOUND) + message(FATAL_ERROR "\nHost gn not found - cross compilation not possible") + endif() + + externalproject_add(hostBuild + SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/host + BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/host + PREFIX host + USES_TERMINAL_BUILD TRUE + EXCLUDE_FROM_ALL TRUE + CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=${QT_HOST_PATH}/lib/cmake/Qt6/qt.toolchain.cmake + -DWEBENGINE_ROOT_BUILD_DIR=${PROJECT_BINARY_DIR} + -DWEBENGINE_ROOT_SOURCE_DIR=${WEBENGINE_ROOT_SOURCE_DIR} + -DGN_TARGET_CPU=${TEST_architecture_arch} + -DCMAKE_C_FLAGS= + -DCMAKE_CXX_FLAGS= + -DQT_FEATURE_qtwebengine_build=${QT_FEATURE_qtwebengine_build} + -DQT_FEATURE_qtpdf_build=${QT_FEATURE_qtpdf_build} + ) + add_dependencies(run_core_GnReady hostBuild) +endif() + +# install gn for cross build +if(LINUX AND INSTALL_GN) + get_install_config(installConfig) + message(${installConfig}) + install( + PROGRAMS ${installDir}/bin/gn + CONFIGURATIONS ${installConfig} + RUNTIME DESTINATION "${INSTALL_LIBEXECDIR}" + ) +endif() diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index ffb327c2e..74ae345dc 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -1,32 +1,19 @@ cmake_minimum_required(VERSION 3.19) -if(NOT DEFINED WEBENGINE_ROOT_SOURCE_DIR) - get_filename_component(WEBENGINE_ROOT_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/../.." REALPATH) -endif() -if (NOT DEFINED WEBENGINE_ROOT_BUILD_DIR) - get_filename_component(WEBENGINE_ROOT_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/../.." REALPATH) -endif() - -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${WEBENGINE_ROOT_SOURCE_DIR}/cmake") -set(buildDir "${CMAKE_CURRENT_BINARY_DIR}") - -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) find_package(Ninja 1.7.2 REQUIRED) find_package(Python2 2.7.5 REQUIRED) find_package(Nodejs 10.19 REQUIRED) find_package(PkgConfig) if(PkgConfig_FOUND) pkg_check_modules(XSCRNSAVER xscrnsaver) - create_pkg_config_host_wrapper() + create_pkg_config_host_wrapper(${CMAKE_CURRENT_BINARY_DIR}) endif() +set(buildDir "${CMAKE_CURRENT_BINARY_DIR}") + +add_subdirectory(api) +add_subdirectory(tools) + ## # TOOLCHAIN SETUP ## @@ -36,9 +23,11 @@ if(LINUX) endif() ## -# MULTICONFIG SETUP +# GN BUILD SETUP ## +addSyncTargets(core) + get_configs(configs) get_architectures(archs) @@ -49,13 +38,14 @@ foreach(arch ${archs}) # BUILD.gn SETUP ## - unset(buildGn) set(buildGn core_${config}_${arch}) - add_gn_target(${buildGn} ${config} ${arch} SOURCES DEFINES CXX_COMPILE_OPTIONS C_COMPILE_OPTIONS INCLUDES) - + add_gn_target(${buildGn} ${config} ${arch} + SOURCES DEFINES CXX_COMPILE_OPTIONS C_COMPILE_OPTIONS INCLUDES MOC_PATH RSP_PREFIX + ) resolve_target_includes(gnIncludes WebEngineCore) get_forward_declaration_macro(forwardDeclarationMacro) get_target_property(qtWebEngineProcessName WebEngineCore QTWEBENGINEPROCESS_NAME) + get_target_property(mocFilePath Qt6::moc IMPORTED_LOCATION) if(QT_FEATURE_debug_and_release AND ("${config}" STREQUAL "Debug")) set(qtWebEngineProcessName "${qtWebEngineProcessName}${CMAKE_DEBUG_POSTFIX}") @@ -74,15 +64,19 @@ foreach(arch ${archs}) endif() extend_gn_target(${buildGn} + MOC_PATH + ${mocFilePath} + RSP_PREFIX + src/core/${config}/${arch} INCLUDES ${gnIncludes} DEFINES QT_NO_KEYWORDS QT_USE_QSTRINGBUILDER - QTWEBENGINECORE_VERSION_STR=\\\\\"${QT_REPO_MODULE_VERSION}\\\\\" - QTWEBENGINEPROCESS_NAME=\\\\\"${qtWebEngineProcessName}\\\\\" + QTWEBENGINECORE_VERSION_STR=\\\\\\\\\"${QT_REPO_MODULE_VERSION}\\\\\\\\\" + QTWEBENGINEPROCESS_NAME=\\\\\\\\\"${qtWebEngineProcessName}\\\\\\\\\" BUILDING_CHROMIUM - ${forwardDeclarationMacro} + "${forwardDeclarationMacro}" CXX_COMPILE_OPTIONS ${gnCxxCompileOptions} SOURCES @@ -267,13 +261,6 @@ foreach(arch ${archs}) renderer/extensions/resource_request_policy_qt.cpp renderer/extensions/resource_request_policy_qt.h ) - read_gn_target(${buildGn} ${WEBENGINE_ROOT_BUILD_DIR}/src/core/api/${config}/gn_config.cxx.cmake) - read_gn_target(${buildGn} ${WEBENGINE_ROOT_BUILD_DIR}/src/core/api/${config}/gn_config.c.cmake) - configure_gn_target(${buildGn} ${config} - ${WEBENGINE_ROOT_SOURCE_DIR}/src/core/configure/BUILD.root.gn.in "${buildDir}/${config}/${arch}/BUILD.gn" - core/${config}/${arch} - ) - ## # GN PARAMETERS SETUP ## @@ -449,17 +436,22 @@ foreach(arch ${archs}) ) endif() - ## - # GN CALL - ## - - execute_gn(gnArgArg) + add_gn_command( + CMAKE_TARGET WebEngineCore + NINJA_TARGETS QtWebEngineCore convert_dict + GN_TARGET ${buildGn} + GN_ARGS "${gnArgArg}" + BUILDDIR ${buildDir}/${config}/${arch} + MODULE core + ) endforeach() + create_cxx_configs(WebEngineCore ${arch}) endforeach() + ## -# WEBENGINECORE +# WEBENGINECORE SETUP ## set(arch ${CMAKE_SYSTEM_PROCESSOR}) @@ -469,7 +461,8 @@ target_include_directories(WebEngineCore PRIVATE ${buildDir}/$<CONFIG>/${arch}/gen/third_party/perfetto/build_config ) -add_gn_build_aritfacts_to_target(WebEngineCore QtWebEngineCore ${buildDir}) +add_gn_build_aritfacts_to_target(WebEngineCore QtWebEngineCore core ${buildDir}) +add_dependencies(WebEngineCore run_core_NinjaDone) ## # SANDBOX @@ -483,6 +476,7 @@ if(WIN32) TARGET QtWebEngineCoreSandbox OUTPUT QtWebEngineCoreSandbox.lib BUILDDIR ${buildDir}/${config}/${arch} + MODULE core ) set(sandboxLibraryPath ${buildDir}/${config}/${arch}/QtWebEngineCoreSandbox.lib) set_property(TARGET WebEngineCoreSandbox @@ -490,101 +484,12 @@ if(WIN32) ) add_custom_target(sandboxLibrary_${config} DEPENDS ${buildDir}/${config}/${arch}/QtWebEngineCoreSandbox.lib) - add_dependencies(WebEngineCoreSandbox sandboxLibrary_${config}) + add_dependencies(run_core_NinjaDone sandboxLibrary_${config}) add_dependencies(WebEngineCoreSandbox WebEngineCore) endforeach() endif() ## -# WEBENGINECORE RESOURCES -## - -#TODO: use simply filter / globbing-expressions -set(localeList am ar bg bn ca cs da de el en-GB en-US es-419 es et fa fi fil fr - gu he hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk - sl sr sv sw ta te th tr uk vi zh-CN zh-TW) - -set(resourceList qtwebengine_resources.pak - qtwebengine_resources_100p.pak - qtwebengine_resources_200p.pak - qtwebengine_devtools_resources.pak) - -get_install_config(config) - -foreach(loc ${localeList}) - get_filename_component(locSourcePath ${buildDir}/${config}/${arch}/qtwebengine_locales/${loc}.pak REALPATH) - list(APPEND localeFiles ${locSourcePath}) -endforeach() - -foreach(res ${resourceList}) - get_filename_component(resSourcePath ${buildDir}/${config}/${arch}/${res} REALPATH) - list(APPEND resourceFiles ${resSourcePath}) -endforeach() - -if (NOT QT_FEATURE_webengine_system_icu) - get_filename_component(icuFile ${buildDir}/${config}/${arch}/icudtl.dat REALPATH) - list(APPEND resourceFiles ${icuFile}) -endif() - -if(QT_FEATURE_framework) - set(allResourceFiles ${localeFiles} ${resourceFiles}) - target_sources(WebEngineCore PRIVATE ${allResourceFiles}) - - set_source_files_properties(${localeFiles} - TARGET_DIRECTORY WebEngineCore - PROPERTIES MACOSX_PACKAGE_LOCATION Resources/qtwebengine_locales - GENERATED TRUE - ) - set_source_files_properties(${resourceFiles} - TARGET_DIRECTORY WebEngineCore - PROPERTIES MACOSX_PACKAGE_LOCATION Resources - GENERATED TRUE - ) - - add_custom_command(OUTPUT ${allResourceFiles} DEPENDS ${buildDir}/${config}/${arch}/QtWebEngineCore.stamp) - add_custom_target(generate_resources_${config} DEPENDS ${allResourceFiles}) -else() - install(FILES ${localeFiles} - DESTINATION translations/qtwebengine_locales - CONFIGURATIONS ${config} - ) - install(FILES ${resourceFiles} - DESTINATION resources - CONFIGURATIONS ${config} - ) -# install (again) for superbuild - install(FILES ${localeFiles} - DESTINATION ${WEBENGINE_ROOT_BUILD_DIR}/translations/qtwebengine_locales - CONFIGURATIONS ${config} - ) - install(FILES ${resourceFiles} - DESTINATION ${WEBENGINE_ROOT_BUILD_DIR}/resources - CONFIGURATIONS ${config} - ) - if(NOT QT_WILL_INSTALL) - # TODO: Could we get rid of ALL? - add_custom_target( - install_resources_${config} - ALL - DEPENDS ${buildDir}/${config}/${arch}/QtWebEngineCore.stamp - COMMAND ${CMAKE_COMMAND} -E make_directory - ${CMAKE_INSTALL_PREFIX}/resources - COMMAND ${CMAKE_COMMAND} -E copy - ${resourceFiles} - ${CMAKE_INSTALL_PREFIX}/resources) - add_custom_target( - install_locales_${config} - ALL - DEPENDS ${buildDir}/${config}/${arch}/QtWebEngineCore.stamp - COMMAND ${CMAKE_COMMAND} -E make_directory - ${CMAKE_INSTALL_PREFIX}/translations/qtwebengine_locales - COMMAND ${CMAKE_COMMAND} -E copy - ${localeFiles} - ${CMAKE_INSTALL_PREFIX}/translations/qtwebengine_locales) - endif() -endif() - -## # WEBENGINECORE DICT TOOL SETUP ## @@ -593,8 +498,10 @@ if(QT_FEATURE_webengine_spellchecker) target_include_directories(${dict_target_name} PRIVATE ../3rdparty/chromium ../3rdparty/chromium/third_party/boringssl/src/include - ${buildDir}/${config}/${arch}/gen + ${buildDir}/$<CONFIG>/${arch}/gen ) - add_gn_build_aritfacts_to_target(${dict_target_name} convert_dict ${buildDir}) + add_gn_build_aritfacts_to_target(${dict_target_name} convert_dict core ${buildDir}) + add_dependencies(${dict_target_name} run_core_NinjaDone) + add_dependencies(${dict_target_name} WebEngineCore) endif() diff --git a/src/core/api/CMakeLists.txt b/src/core/api/CMakeLists.txt index cee72966d..192afd01b 100644 --- a/src/core/api/CMakeLists.txt +++ b/src/core/api/CMakeLists.txt @@ -1,16 +1,9 @@ -if(NOT DEFINED WEBENGINE_ROOT_SOURCE_DIR) - get_filename_component(WEBENGINE_ROOT_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/../../.." REALPATH) -endif() find_package(Qt6 ${PROJECT_VERSION} REQUIRED COMPONENTS Gui Network OpenGL Quick) find_package(Qt6 ${PROJECT_VERSION} QUIET OPTIONAL_COMPONENTS WebChannel Positioning) -include(${WEBENGINE_ROOT_SOURCE_DIR}/cmake/Functions.cmake) - -get_configure_mode(configureMode) set(qtWebEngineProcessName QtWebEngineProcess) qt_internal_add_module(WebEngineCore - ${configureMode} SOURCES qtwebenginecoreglobal.cpp qtwebenginecoreglobal.h qtwebenginecoreglobal_p.h qwebenginecertificateerror.cpp qwebenginecertificateerror.h @@ -63,8 +56,6 @@ set_target_properties(WebEngineCore PROPERTIES QTWEBENGINEPROCESS_NAME ${qtWebEn # Chromium included headers are not clean qt_skip_warnings_are_errors(WebEngineCore) -make_install_only(WebEngineCore) -make_config_for_gn(WebEngineCore gn_config) if(CLANG OR GCC) target_compile_options(WebEngineCore PRIVATE "-Wno-unused-parameter") @@ -79,6 +70,77 @@ qt_internal_extend_target(WebEngineCore CONDITION QT_FEATURE_webengine_geolocati Qt::Positioning ) +## +# DOCS +## + qt_internal_add_docs(WebEngineCore ../doc/qtwebengine.qdocconf ) + +## +# WEBENGINECORE RESOURCES +## + +set(arch ${CMAKE_SYSTEM_PROCESSOR}) +#TODO: use simply filter / globbing-expressions +set(localeList am ar bg bn ca cs da de el en-GB en-US es-419 es et fa fi fil fr + gu he hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk + sl sr sv sw ta te th tr uk vi zh-CN zh-TW) + +set(resourceList qtwebengine_resources.pak + qtwebengine_resources_100p.pak + qtwebengine_resources_200p.pak + qtwebengine_devtools_resources.pak) + +get_install_config(config) + +foreach(loc ${localeList}) + get_filename_component(locSourcePath ${buildDir}/${config}/${arch}/qtwebengine_locales/${loc}.pak REALPATH) + list(APPEND localeFiles ${locSourcePath}) +endforeach() + +foreach(res ${resourceList}) + get_filename_component(resSourcePath ${buildDir}/${config}/${arch}/${res} REALPATH) + list(APPEND resourceFiles ${resSourcePath}) +endforeach() + +if (NOT QT_FEATURE_webengine_system_icu) + get_filename_component(icuFile ${buildDir}/${config}/${arch}/icudtl.dat REALPATH) + list(APPEND resourceFiles ${icuFile}) +endif() + +if(QT_FEATURE_framework) + set(allResourceFiles ${localeFiles} ${resourceFiles}) + target_sources(WebEngineCore PRIVATE ${allResourceFiles}) + + set_source_files_properties(${localeFiles} + TARGET_DIRECTORY WebEngineCore + PROPERTIES MACOSX_PACKAGE_LOCATION Resources/qtwebengine_locales + GENERATED TRUE + ) + set_source_files_properties(${resourceFiles} + TARGET_DIRECTORY WebEngineCore + PROPERTIES MACOSX_PACKAGE_LOCATION Resources + GENERATED TRUE + ) + + add_custom_command(OUTPUT ${allResourceFiles} DEPENDS ${buildDir}/${config}/${arch}/QtWebEngineCore.stamp) + add_custom_target(generate_resources_${config} DEPENDS ${allResourceFiles}) +else() + install(FILES ${localeFiles} + DESTINATION translations/qtwebengine_locales + CONFIGURATIONS ${config} + ) + install(FILES ${resourceFiles} + DESTINATION resources + CONFIGURATIONS ${config} + ) + if(NOT QT_WILL_INSTALL) + set(rootPath ${CMAKE_INSTALL_PREFIX}) + else() + set(rootPath ${PROJECT_BINARY_DIR}) + endif() + addCopyCommand(WebEngineCore "${localeFiles}" ${rootPath}/translations/qtwebengine_locales) + addCopyCommand(WebEngineCore "${resourceFiles}" ${rootPath}/resources) +endif() diff --git a/src/core/tools/CMakeLists.txt b/src/core/tools/CMakeLists.txt index 9d778bb08..e16bfb926 100644 --- a/src/core/tools/CMakeLists.txt +++ b/src/core/tools/CMakeLists.txt @@ -12,7 +12,6 @@ if(QT_FEATURE_webengine_spellchecker) 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 diff --git a/src/pdf/CMakeLists.txt b/src/pdf/CMakeLists.txt index 12f01a73f..da1aa93ff 100644 --- a/src/pdf/CMakeLists.txt +++ b/src/pdf/CMakeLists.txt @@ -1,14 +1,19 @@ -if(NOT DEFINED WEBENGINE_ROOT_SOURCE_DIR) - get_filename_component(WEBENGINE_ROOT_SOURCE_DIR - "${CMAKE_CURRENT_LIST_DIR}/../.." REALPATH - ) +cmake_minimum_required(VERSION 3.19) +find_package(Ninja 1.7.2 REQUIRED) +find_package(Python2 2.7.5 REQUIRED) +find_package(Nodejs 10.19 REQUIRED) +find_package(PkgConfig) +if(PkgConfig_FOUND) + create_pkg_config_host_wrapper(${CMAKE_CURRENT_BINARY_DIR}) endif() -find_package(Qt6 ${PROJECT_VERSION} REQUIRED COMPONENTS Gui Network OpenGL Quick) -include(${WEBENGINE_ROOT_SOURCE_DIR}/cmake/Functions.cmake) -set(buildDir "${CMAKE_CURRENT_BINARY_DIR}") +set(buildDir "${CMAKE_CURRENT_BINARY_DIR}") add_subdirectory(plugins/imageformats/pdf) +## +# PDF MODULE +## + qt_internal_add_module(Pdf SOURCES qpdfbookmarkmodel.cpp qpdfbookmarkmodel.h @@ -36,128 +41,135 @@ qt_internal_add_module(Pdf Qt::Gui ) -make_config_for_gn(Pdf gn_config) -make_install_only(Pdf) +## +# PDF DOCS +## + qt_internal_add_docs(Pdf doc/qtpdf.qdocconf ) + ## -# REPO BUILD +# TOOLCHAIN SETUP ## -if(WEBENGINE_REPO_BUILD) - find_package(Qt6 ${PROJECT_VERSION} CONFIG REQUIRED COMPONENTS BuildInternals Core) - find_package(Gn ${QT_REPO_MODULE_VERSION} EXACT REQUIRED) - find_package(Ninja 1.7.2 REQUIRED) - find_package(Python2 2.7.5 REQUIRED) - find_package(Nodejs 10.19 REQUIRED) - find_package(PkgConfig) - if(PkgConfig_FOUND) - create_pkg_config_host_wrapper() - endif() - - ## - # TOOLCHAIN SETUP - ## - - if(LINUX) - setup_toolchains() - endif() - - ## - # MULTICONFIG SETUP - ## - - get_configs(configs) - get_architectures(archs) - - foreach(arch ${archs}) - foreach(config ${configs}) - - ## - # BULID.gn SETUP - ## - - set(buildGn pdf_${config}_${arch}) - add_gn_target(${buildGn} ${config} ${arch} SOURCES DEFINES CXX_COMPILE_OPTIONS C_COMPILE_OPTIONS INCLUDES) - resolve_target_includes(gnIncludes Pdf) - get_forward_declaration_macro(forwardDeclarationMacro) - read_gn_target(${buildGn} ${WEBENGINE_ROOT_BUILD_DIR}/src/pdf/${config}/gn_config.cxx.cmake) - read_gn_target(${buildGn} ${WEBENGINE_ROOT_BUILD_DIR}/src/pdf/${config}/gn_config.c.cmake) - configure_gn_target(${buildGn} ${config} - ${WEBENGINE_ROOT_SOURCE_DIR}/src/pdf/configure/BUILD.root.gn.in "${buildDir}/${config}/${arch}/BUILD.gn" - pdf/${config}/${arch} - ) - - ## - # GN PARAMETERS - ## - - unset(gnArgArg) - append_build_type_setup(gnArgArg) - append_compiler_linker_sdk_setup(gnArgArg) - append_sanitizer_setup(gnArgArg) - append_toolchain_setup(gnArgArg) - append_pkg_config_setup(gnArgArg) - - list(APPEND gnArgArg - qtwebengine_target="${buildDir}/${config}/${arch}:QtPdf" - enable_remoting=false - enable_web_speech=false - chrome_pgo_phase=0 - ) - - if(LINUX) - list(APPEND gnArgArg - use_x11=false - is_cfi=false - ozone_auto_platforms=false - use_gnome_keyring=false) - endif() - if(MACOS) - list(APPEND gnArgArg angle_enable_vulkan=false) - endif() - if(WIN32) - list(APPEND gnArgArg - ninja_use_custom_environment_files=false - safe_browsing_mode=0 - ) - endif() - - extend_gn_list(gnArgArg - ARGS pdf_enable_v8 - CONDITION QT_FEATURE_pdf_v8 - ) - extend_gn_list(gnArgArg - ARGS pdf_enable_xfa - CONDITION QT_FEATURE_pdf_xfa - ) - extend_gn_list(gnArgArg - ARGS pdf_enable_xfa_bmp - CONDITION QT_FEATURE_pdf_xfa_bmp - ) - extend_gn_list(gnArgArg - ARGS pdf_enable_xfa_gif - CONDITION QT_FEATURE_pdf_xfa_gif - ) - extend_gn_list(gnArgArg - ARGS pdf_enable_xfa_png - CONDITION QT_FEATURE_pdf_xfa_png - ) - extend_gn_list(gnArgArg - ARGS pdf_enable_xfa_tiff - CONDITION QT_FEATURE_pdf_xfa_tiff - ) - - ## - # GN CALL - ## - - execute_gn(gnArgArg) - endforeach() - endforeach() - set(arch ${CMAKE_SYSTEM_PROCESSOR}) - target_include_directories(Pdf PRIVATE ${buildDir}/$<CONFIG>/${arch}/gen) - add_gn_build_aritfacts_to_target(Pdf QtPdf ${buildDir}) +if(LINUX) + setup_toolchains() endif() + +## +# GN BUILD SETUP +## + +addSyncTargets(pdf) + +get_configs(configs) +get_architectures(archs) + +foreach(arch ${archs}) + foreach(config ${configs}) + + ## + # BULID.gn SETUP + ## + + set(buildGn pdf_${config}_${arch}) + add_gn_target(${buildGn} ${config} ${arch} + SOURCES DEFINES CXX_COMPILE_OPTIONS C_COMPILE_OPTIONS INCLUDES MOC_PATH RSP_PREFIX + ) + resolve_target_includes(gnIncludes Pdf) + get_forward_declaration_macro(forwardDeclarationMacro) + + extend_gn_target(${buildGn} + MOC_PATH + ${mocFilePath} + RSP_PREFIX + src/pdf/${config}/${arch} + INCLUDES + ${gnIncludes} + ) + + ## + # GN PARAMETERS + ## + + unset(gnArgArg) + append_build_type_setup(gnArgArg) + append_compiler_linker_sdk_setup(gnArgArg) + append_sanitizer_setup(gnArgArg) + append_toolchain_setup(gnArgArg) + append_pkg_config_setup(gnArgArg) + + list(APPEND gnArgArg + qtwebengine_target="${buildDir}/${config}/${arch}:QtPdf" + enable_remoting=false + enable_web_speech=false + chrome_pgo_phase=0 + ) + + if(LINUX) + list(APPEND gnArgArg + use_x11=false + is_cfi=false + ozone_auto_platforms=false + use_gnome_keyring=false) + endif() + if(MACOS) + list(APPEND gnArgArg angle_enable_vulkan=false) + endif() + if(WIN32) + list(APPEND gnArgArg + ninja_use_custom_environment_files=false + safe_browsing_mode=0 + ) + endif() + + extend_gn_list(gnArgArg + ARGS pdf_enable_v8 + CONDITION QT_FEATURE_pdf_v8 + ) + extend_gn_list(gnArgArg + ARGS pdf_enable_xfa + CONDITION QT_FEATURE_pdf_xfa + ) + extend_gn_list(gnArgArg + ARGS pdf_enable_xfa_bmp + CONDITION QT_FEATURE_pdf_xfa_bmp + ) + extend_gn_list(gnArgArg + ARGS pdf_enable_xfa_gif + CONDITION QT_FEATURE_pdf_xfa_gif + ) + extend_gn_list(gnArgArg + ARGS pdf_enable_xfa_png + CONDITION QT_FEATURE_pdf_xfa_png + ) + extend_gn_list(gnArgArg + ARGS pdf_enable_xfa_tiff + CONDITION QT_FEATURE_pdf_xfa_tiff + ) + + add_gn_command( + CMAKE_TARGET Pdf + NINJA_TARGETS QtPdf + GN_TARGET ${buildGn} + GN_ARGS "${gnArgArg}" + BUILDDIR ${buildDir}/${config}/${arch} + MODULE pdf + ) + + endforeach() + create_cxx_configs(Pdf ${arch}) +endforeach() + + +## +# PDF SETUP +## + +set(arch ${CMAKE_SYSTEM_PROCESSOR}) +target_include_directories(Pdf PRIVATE ${buildDir}/$<CONFIG>/${arch}/gen) +add_gn_build_aritfacts_to_target(Pdf QtPdf pdf ${buildDir}) +add_dependencies(Pdf run_pdf_NinjaDone) + diff --git a/src/pdf/plugins/imageformats/pdf/CMakeLists.txt b/src/pdf/plugins/imageformats/pdf/CMakeLists.txt index 8a33e590b..ee290782b 100644 --- a/src/pdf/plugins/imageformats/pdf/CMakeLists.txt +++ b/src/pdf/plugins/imageformats/pdf/CMakeLists.txt @@ -8,4 +8,3 @@ qt_internal_add_plugin(QPdfPlugin Qt::PdfPrivate ) -make_install_only(QPdfPlugin) diff --git a/src/pdfquick/CMakeLists.txt b/src/pdfquick/CMakeLists.txt index 12cb393ff..5bbe66959 100644 --- a/src/pdfquick/CMakeLists.txt +++ b/src/pdfquick/CMakeLists.txt @@ -1,7 +1,5 @@ find_package(Qt6 ${PROJECT_VERSION} CONFIG REQUIRED COMPONENTS Core Gui Qml Quick) -get_configure_mode(configureMode) - set(qml_files # TODO: # "qml/+material/PdfStyle.qml" @@ -48,8 +46,5 @@ qt_internal_extend_target(qtpdfquickplugin Qt::PdfQuickPrivate ) -make_install_only(PdfQuick) -make_install_only(qtpdfquickplugin) - diff --git a/src/pdfwidgets/CMakeLists.txt b/src/pdfwidgets/CMakeLists.txt index 04ca1387e..2d2616556 100644 --- a/src/pdfwidgets/CMakeLists.txt +++ b/src/pdfwidgets/CMakeLists.txt @@ -12,4 +12,3 @@ qt_internal_add_module(PdfWidgets Qt::Widgets Qt::Pdf ) -make_install_only(PdfWidgets) diff --git a/src/process/CMakeLists.txt b/src/process/CMakeLists.txt index 9b515f1d9..5e7c1130b 100644 --- a/src/process/CMakeLists.txt +++ b/src/process/CMakeLists.txt @@ -56,6 +56,7 @@ if(isFramework) "$<TARGET_BUNDLE_DIR:WebEngineCore>/Versions/A/Helpers/${qtWebEngineProcessName}.app" COMMAND ${CMAKE_COMMAND} -E create_symlink "Versions/Current/Helpers" "$<TARGET_BUNDLE_DIR:WebEngineCore>/Helpers" + USES_TERMINAL ) install(TARGETS ${qtWebEngineProcessName} BUNDLE DESTINATION ./lib/QtWebEngineCore.framework/Versions/A/Helpers @@ -73,5 +74,3 @@ if(MSVC) DESTINATION "${INSTALL_LIBEXECDIR}" ) endif() - -make_install_only(${qtWebEngineProcessName}) diff --git a/src/webenginequick/CMakeLists.txt b/src/webenginequick/CMakeLists.txt index ac9c905e2..30b0fa2cf 100644 --- a/src/webenginequick/CMakeLists.txt +++ b/src/webenginequick/CMakeLists.txt @@ -1,12 +1,6 @@ -find_package(Qt6 ${PROJECT_VERSION} CONFIG REQUIRED COMPONENTS Gui Qml Quick) -find_package(Qt6 ${PROJECT_VERSION} CONFIG QUIET OPTIONAL_COMPONENTS PrintSupport WebChannel Positioning Test) - -get_configure_mode(configureMode) - add_subdirectory(ui) qt_internal_add_qml_module(WebEngineQuick - ${configureMode} URI "QtWebEngine" VERSION "${PROJECT_VERSION}" CLASS_NAME QtWebEnginePlugin @@ -61,6 +55,3 @@ qt_internal_extend_target(qtwebenginequickplugin Qt::CorePrivate Qt::WebEngineQuickPrivate ) - -make_install_only(WebEngineQuick) -make_install_only(qtwebenginequickplugin) diff --git a/src/webenginequick/ui/CMakeLists.txt b/src/webenginequick/ui/CMakeLists.txt index 2de01a210..aa5832ba6 100644 --- a/src/webenginequick/ui/CMakeLists.txt +++ b/src/webenginequick/ui/CMakeLists.txt @@ -35,6 +35,4 @@ qt_internal_add_resource(qtwebenginequickdelegatesplugin "qtwebenginequickdelega ${resource_files} ) -make_install_only(WebEngineQuickDelegatesQml) -make_install_only(qtwebenginequickdelegatesplugin) diff --git a/src/webenginewidgets/CMakeLists.txt b/src/webenginewidgets/CMakeLists.txt index 425eb1d73..6dedf2187 100644 --- a/src/webenginewidgets/CMakeLists.txt +++ b/src/webenginewidgets/CMakeLists.txt @@ -1,10 +1,5 @@ -find_package(Qt6 ${PROJECT_VERSION} CONFIG REQUIRED COMPONENTS Gui Widgets Quick QuickWidgets) -find_package(Qt6 ${PROJECT_VERSION} CONFIG QUIET OPTIONAL_COMPONENTS PrintSupport WebChannel Positioning) - -get_configure_mode(configureMode) qt_internal_add_module(WebEngineWidgets - ${configureMode} SOURCES api/qtwebenginewidgetsglobal.h api/qwebenginenotificationpresenter.cpp api/qwebenginenotificationpresenter_p.h @@ -28,7 +23,6 @@ qt_internal_add_module(WebEngineWidgets Qt::Widgets Qt::WebEngineCore ) -make_install_only(WebEngineWidgets) qt_internal_extend_target(WebEngineWidgets CONDITION QT_FEATURE_webengine_printing_and_pdf PUBLIC_LIBRARIES |