summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKirill Burtsev <kirill.burtsev@qt.io>2021-06-25 14:11:05 +0200
committerKirill Burtsev <kirill.burtsev@qt.io>2021-09-14 15:40:56 +0200
commitb4efcf7ae849ac6b99dac25a342fbcfba872c1a5 (patch)
tree32eaede13d0f265d73b32943d219b5a9f318c152
parent05393067df003ace9ce5ff6551d99afde59e7638 (diff)
downloadqtwebengine-b4efcf7ae849ac6b99dac25a342fbcfba872c1a5.tar.gz
Support more module flags for 'configure' script
Support flags passed to main 'configure' and separate 'qt-configure-module' scripts with flags like '-no-build-qtpdf', '-webengine-full-debug-info', '-no-webengine-jumbo-build', etc. Fixes: QTBUG-95717 Change-Id: Ia12602e9a9b31f4f2256f983f6c1e3fbe50cb9e3 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Michal Klocek <michal.klocek@qt.io> (cherry picked from commit 518d4f10dadf0dcf812a6b949c8febdb0bb93a58)
-rw-r--r--cmake/Functions.cmake70
-rw-r--r--configure.cmake24
-rw-r--r--qt_cmdline.cmake3
-rw-r--r--src/core/CMakeLists.txt1
-rw-r--r--src/core/api/configure.cmake18
-rw-r--r--src/core/api/qt_cmdline.cmake30
-rw-r--r--src/pdf/CMakeLists.txt1
7 files changed, 105 insertions, 42 deletions
diff --git a/cmake/Functions.cmake b/cmake/Functions.cmake
index 26e5c1900..bcad113c9 100644
--- a/cmake/Functions.cmake
+++ b/cmake/Functions.cmake
@@ -665,7 +665,6 @@ macro(append_build_type_setup)
use_sysroot=false
forbid_non_component_debug_builds=false
enable_debugallocation=false
- remove_v8base_debug_symbols=true
treat_warnings_as_errors=false
use_allocator_shim=false
use_allocator="none"
@@ -688,7 +687,7 @@ macro(append_build_type_setup)
elseif(${config} STREQUAL "MinSizeRel")
list(APPEND gnArgArg is_debug=false symbol_level=0 optimize_for_size=true)
endif()
- if(FEATURE_developer_build OR (${config} STREQUAL "Debug"))
+ if(FEATURE_developer_build OR (${config} STREQUAL "Debug") OR QT_FEATURE_webengine_sanitizer)
list(APPEND gnArgArg
is_official_build=false
from_here_uses_location_builtins=false
@@ -706,49 +705,60 @@ macro(append_build_type_setup)
CONDITION FEATURE_developer_build
)
- # FIXME: Make it configurable
- list(APPEND gnArgArg
- use_jumbo_build=true
- jumbo_file_merge_limit=8
- jumbo_build_excluded=["browser"]
- )
+ if(NOT QT_FEATURE_webengine_full_debug_info)
+ list(APPEND gnArgArg blink_symbol_level=0 remove_v8base_debug_symbols=true)
+ endif()
+
+ extend_gn_list(gnArgArg ARGS use_jumbo_build CONDITION QT_FEATURE_webengine_jumbo_build)
+ if(QT_FEATURE_webengine_jumbo_build)
+ list(APPEND gnArgArg jumbo_file_merge_limit=${QT_FEATURE_webengine_jumbo_file_merge_limit})
+ if(QT_FEATURE_webengine_jumbo_file_merge_limit GREATER 8)
+ list(APPEND gnArgArg jumbo_build_excluded=[\"browser\"])
+ endif()
+ endif()
extend_gn_list(gnArgArg
ARGS enable_precompiled_headers
CONDITION BUILD_WITH_PCH
)
+ extend_gn_list(gnArgArg
+ ARGS dcheck_always_on
+ CONDITION QT_FEATURE_force_asserts
+ )
endmacro()
macro(append_compiler_linker_sdk_setup)
if(CMAKE_CXX_COMPILER_LAUNCHER)
list(APPEND gnArgArg cc_wrapper="${CMAKE_CXX_COMPILER_LAUNCHER}")
endif()
- extend_gn_list(gnArgArg
- ARGS is_clang
- CONDITION CLANG
- )
- if(CLANG AND NOT MACOS)
- # For some reason this doesn't work for our macOS CIs
- get_filename_component(clangBasePath ${CMAKE_CXX_COMPILER} DIRECTORY)
- get_filename_component(clangBasePath ${clangBasePath} DIRECTORY)
- list(APPEND gnArgArg
- clang_base_path="${clangBasePath}"
- clang_use_chrome_plugins=false
- )
- endif()
- if(MACOS)
- get_darwin_sdk_version(macSdkVersion)
- get_filename_component(clangBasePath ${CMAKE_OBJCXX_COMPILER} DIRECTORY)
- get_filename_component(clangBasePath ${clangBasePath} DIRECTORY)
+
+ extend_gn_list(gnArgArg ARGS is_clang CONDITION CLANG)
+ if(CLANG)
+ if(MACOS)
+ get_darwin_sdk_version(macSdkVersion)
+ # macOS needs to use the objcxx compiler as the cxx compiler is just a link
+ get_filename_component(clangBasePath ${CMAKE_OBJCXX_COMPILER} DIRECTORY)
+ get_filename_component(clangBasePath ${clangBasePath} DIRECTORY)
+ else()
+ get_filename_component(clangBasePath ${CMAKE_CXX_COMPILER} DIRECTORY)
+ get_filename_component(clangBasePath ${clangBasePath} DIRECTORY)
+ endif()
+
list(APPEND gnArgArg
- use_system_xcode=true
clang_base_path="${clangBasePath}"
clang_use_chrome_plugins=false
- mac_deployment_target="${CMAKE_OSX_DEPLOYMENT_TARGET}"
- mac_sdk_min="${macSdkVersion}"
fatal_linker_warnings=false
- )
+ )
+
+ if(MACOS)
+ list(APPEND gnArgArg
+ use_system_xcode=true
+ mac_deployment_target="${CMAKE_OSX_DEPLOYMENT_TARGET}"
+ mac_sdk_min="${macSdkVersion}"
+ )
+ endif()
endif()
+
if(WIN32)
get_filename_component(windowsSdkPath $ENV{WINDOWSSDKDIR} DIRECTORY)
get_filename_component(visualStudioPath $ENV{VSINSTALLDIR} DIRECTORY)
@@ -807,7 +817,7 @@ macro(append_compiler_linker_sdk_setup)
endmacro()
macro(append_sanitizer_setup)
- if(QT_FEATURE_sanitizer)
+ if(QT_FEATURE_webengine_sanitizer)
extend_gn_list(gnArgArg
ARGS is_asan
CONDITION address IN_LIST ECM_ENABLE_SANITIZERS
diff --git a/configure.cmake b/configure.cmake
index 8f52289a7..37215abb0 100644
--- a/configure.cmake
+++ b/configure.cmake
@@ -227,6 +227,27 @@ qt_feature("webengine-system-gn" PRIVATE
AUTODETECT FALSE
CONDITION Gn_FOUND
)
+# default assumed merge limit (should match the one in qt_cmdline.cmake)
+set(jumbo_merge_limit 8)
+# check value provided through configure script with -webengine-jumbo-build=(on|off|32)
+if(DEFINED INPUT_webengine_jumbo_file_merge_limit)
+ set(jumbo_merge_limit ${INPUT_webengine_jumbo_file_merge_limit})
+# then also verify if set directly with cmake call and -DFEATURE_webengine_jumbo_build=(ON|OFF|32)
+elseif(DEFINED FEATURE_webengine_jumbo_build)
+ if(FEATURE_webengine_jumbo_build GREATER 0)
+ set(jumbo_merge_limit ${FEATURE_webengine_jumbo_build})
+ elseif (NOT FEATURE_webengine_jumbo_build)
+ set(jumbo_merge_limit 0)
+ endif()
+endif()
+set(QT_FEATURE_webengine_jumbo_file_merge_limit ${jumbo_merge_limit}
+ CACHE STRING "Jumbo merge limit for WebEngineCore" FORCE)
+qt_feature("webengine-jumbo-build" PUBLIC
+ LABEL "Jumbo Build"
+ PURPOSE "Enables support for jumbo build of core library"
+ AUTODETECT FALSE
+ ENABLE jumbo_merge_limit GREATER 0
+)
qt_feature("webengine-developer-build" PRIVATE
LABEL "Developer build"
PURPOSE "Enables the developer build configuration."
@@ -443,9 +464,10 @@ add_check_for_support(
#### Summary
# > Qt WebEngine Build Features
-qt_configure_add_summary_section(NAME "Build Features")
+qt_configure_add_summary_section(NAME "Qt WebEngine")
qt_configure_add_summary_entry(ARGS "webengine-system-ninja")
qt_configure_add_summary_entry(ARGS "webengine-system-gn")
+qt_configure_add_summary_entry(ARGS "webengine-jumbo-build")
qt_configure_add_summary_entry(ARGS "webengine-developer-build")
# >> Optional system libraries
if(UNIX)
diff --git a/qt_cmdline.cmake b/qt_cmdline.cmake
index 7ee72a727..568580c63 100644
--- a/qt_cmdline.cmake
+++ b/qt_cmdline.cmake
@@ -1 +1,4 @@
+qt_commandline_option(build-qtpdf TYPE boolean NAME qtpdf-build)
+qt_commandline_option(webengine-developer-build TYPE boolean)
+
qt_commandline_subconfig(src/core/api)
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index f0dbd8ffb..2143b8fad 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -290,7 +290,6 @@ foreach(arch ${archs})
enable_js_type_check=false
v8_use_external_startup_data=false
strip_absolute_paths_from_debug_symbols=false
- blink_symbol_level=0
disable_ftp_support=true
)
diff --git a/src/core/api/configure.cmake b/src/core/api/configure.cmake
index 14b8b5d44..e79bbbae3 100644
--- a/src/core/api/configure.cmake
+++ b/src/core/api/configure.cmake
@@ -111,15 +111,25 @@ qt_feature("webengine-webrtc-pipewire" PRIVATE
AUTODETECT false
CONDITION QT_FEATURE_webengine_webrtc AND GIO_FOUND
)
-qt_feature_config("webengine-full-debug-info" QMAKE_PRIVATE_CONFIG
- NAME "v8base_debug"
+qt_feature("webengine-full-debug-info" PRIVATE
+ SECTION "WebEngine"
+ LABEL "Full debug information"
+ PURPOSE "Enables debug information for Blink and V8."
+ AUTODETECT OFF
+ CONDITION CMAKE_BUILD_TYPE STREQUAL Debug OR Debug IN_LIST CMAKE_CONFIGURATION_TYPES OR
+ CMAKE_BUILD_TYPE STREQUAL RelWithDebInfo OR RelWithDebInfo IN_LIST CMAKE_CONFIGURATION_TYPES
)
-qt_feature_config("webengine-full-debug-info" QMAKE_PRIVATE_CONFIG
- NAME "webcore_debug"
+qt_feature("webengine-sanitizer" PRIVATE
+ SECTION "WebEngine"
+ LABEL "Sanitizer support"
+ PURPOSE "Enables support for build with sanitizers"
+ AUTODETECT CLANG
+ CONDITION CLANG AND ECM_ENABLE_SANITIZERS
)
qt_configure_add_summary_section(NAME "Qt WebEngineCore")
qt_configure_add_summary_entry(ARGS "webengine-embedded-build")
qt_configure_add_summary_entry(ARGS "webengine-full-debug-info")
+qt_configure_add_summary_entry(ARGS "webengine-sanitizer")
qt_configure_add_summary_entry(ARGS "webengine-pepper-plugins")
qt_configure_add_summary_entry(ARGS "webengine-printing-and-pdf")
qt_configure_add_summary_entry(ARGS "webengine-proprietary-codecs")
diff --git a/src/core/api/qt_cmdline.cmake b/src/core/api/qt_cmdline.cmake
index f2c203afe..42dd6b240 100644
--- a/src/core/api/qt_cmdline.cmake
+++ b/src/core/api/qt_cmdline.cmake
@@ -1,13 +1,31 @@
-qt_commandline_option(webengine-alsa TYPE boolean NAME webengine-system-alsa)
qt_commandline_option(webengine-embedded-build TYPE boolean)
-qt_commandline_option(webengine-icu TYPE enum NAME webengine-system-icu MAPPING system yes qt no)
-qt_commandline_option(webengine-ffmpeg TYPE enum NAME webengine-system-ffmpeg MAPPING system yes qt no)
-qt_commandline_option(webengine-opus TYPE enum NAME webengine-system-opus MAPPING system yes qt no)
-qt_commandline_option(webengine-webp TYPE enum NAME webengine-system-libwebp MAPPING system yes qt no)
qt_commandline_option(webengine-pepper-plugins TYPE boolean)
qt_commandline_option(webengine-printing-and-pdf TYPE boolean)
qt_commandline_option(webengine-proprietary-codecs TYPE boolean)
-qt_commandline_option(webengine-pulseaudio TYPE boolean NAME webengine-system-pulseaudio)
qt_commandline_option(webengine-spellchecker TYPE boolean)
qt_commandline_option(webengine-native-spellchecker TYPE boolean)
qt_commandline_option(webengine-webrtc TYPE boolean)
+qt_commandline_option(webengine-full-debug-info TYPE boolean)
+qt_commandline_option(webengine-sanitizer TYPE boolean)
+
+qt_commandline_option(webengine-jumbo-build TYPE jumbo)
+function(qt_commandline_jumbo arg val nextok)
+ if ("${val}" STREQUAL "")
+ qtConfGetNextCommandlineArg(val)
+ endif()
+ if ("${val}" STREQUAL "no")
+ qtConfCommandlineSetInput(webengine_jumbo_file_merge_limit 0)
+ elseif("${val}" STREQUAL "")
+ qtConfCommandlineSetInput(webengine_jumbo_file_merge_limit 8)
+ elseif (val MATCHES "[0-9]+")
+ qtConfCommandlineSetInput(webengine_jumbo_file_merge_limit ${val})
+ else()
+ qtConfAddError("Invalid argument '${val}' to command line parameter '${arg}'")
+ endif()
+endfunction()
+
+set(systemLibs alsa ffmpeg freetype harfbuzz icu lcms2 libevent libjpeg
+ libpng libvpx libxml libwebp minizip opus pulseaudio re2 snappy zlib)
+foreach(slib ${systemLibs})
+ qt_commandline_option(webengine-${slib} TYPE enum NAME webengine-system-${slib} VALUES yes no system)
+endforeach()
diff --git a/src/pdf/CMakeLists.txt b/src/pdf/CMakeLists.txt
index 81ebdce50..9e4004adf 100644
--- a/src/pdf/CMakeLists.txt
+++ b/src/pdf/CMakeLists.txt
@@ -100,6 +100,7 @@ foreach(arch ${archs})
list(APPEND gnArgArg
qtwebengine_target="${buildDir}/${config}/${arch}:QtPdf"
enable_remoting=false
+ enable_resource_allowlist_generation=false
enable_web_speech=false
chrome_pgo_phase=0
)