diff options
author | Kirill Burtsev <kirill.burtsev@qt.io> | 2021-06-25 14:11:05 +0200 |
---|---|---|
committer | Kirill Burtsev <kirill.burtsev@qt.io> | 2021-09-14 15:40:56 +0200 |
commit | b4efcf7ae849ac6b99dac25a342fbcfba872c1a5 (patch) | |
tree | 32eaede13d0f265d73b32943d219b5a9f318c152 | |
parent | 05393067df003ace9ce5ff6551d99afde59e7638 (diff) | |
download | qtwebengine-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.cmake | 70 | ||||
-rw-r--r-- | configure.cmake | 24 | ||||
-rw-r--r-- | qt_cmdline.cmake | 3 | ||||
-rw-r--r-- | src/core/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/core/api/configure.cmake | 18 | ||||
-rw-r--r-- | src/core/api/qt_cmdline.cmake | 30 | ||||
-rw-r--r-- | src/pdf/CMakeLists.txt | 1 |
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 ) |