diff options
author | Michal Klocek <michal.klocek@qt.io> | 2021-08-25 11:22:04 +0200 |
---|---|---|
committer | Michal Klocek <michal.klocek@qt.io> | 2021-08-29 15:54:54 +0200 |
commit | c18a4d6f354838ea3edfb18d31007237dad08aa6 (patch) | |
tree | bfcbde91b591a4e94fe90dc2e68560d6b4c5b56d | |
parent | 146b1537a6c0f781cdd2673515eaf784f9d02db5 (diff) | |
download | qtwebengine-c18a4d6f354838ea3edfb18d31007237dad08aa6.tar.gz |
Add workaround for not working linking with bfd linker
Removal of external project removed also workaround for
coin bug, which is still not fixed.
Add linker launcher in case maximum number of open files is
below 4096 on linux for WebEngineCore target.
This launches bash script wrapper which sets ulimit.
This is poor man workaround and requires cmake 3.21 to work.
Task-number: COIN-699
Task-number: QTBUG-95590
Pick-to: 6.2
Change-Id: Ib9d0c4ced988d4692746e51f3abbe63ff5085836
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
-rw-r--r-- | cmake/Functions.cmake | 21 | ||||
-rw-r--r-- | configure.cmake | 9 | ||||
-rw-r--r-- | src/core/CMakeLists.txt | 3 |
3 files changed, 33 insertions, 0 deletions
diff --git a/cmake/Functions.cmake b/cmake/Functions.cmake index 36f554827..b7c386fc3 100644 --- a/cmake/Functions.cmake +++ b/cmake/Functions.cmake @@ -996,3 +996,24 @@ function(addCopyCommand target src dst) USES_TERMINAL ) endfunction() + +function(check_for_ulimit) + message("-- Checking 'ulimit -n'") + execute_process(COMMAND bash -c "ulimit -n" + OUTPUT_VARIABLE ulimitOutput + ) + string(REGEX MATCHALL "[0-9]+" limit "${ulimitOutput}") + message(" -- Open files limit ${limit}") + if(NOT (QT_FEATURE_use_gold_linker OR QT_FEATURE_use_lld_linker) AND ulimitOutput LESS 4096) + if(NOT ${CMAKE_VERSION} VERSION_LESS "3.21.0") + message(" -- Creating linker launcher") + file(GENERATE OUTPUT ${PROJECT_BINARY_DIR}/linker_ulimit.sh + CONTENT "#!/bin/bash\nulimit -n 4096\nexec \"$@\"" + FILE_PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ + ) + set(COIN_BUG_699 ON PARENT_SCOPE) + else() + set(PRINT_BFD_LINKER_WARNING ON PARENT_SCOPE) + endif() + endif() +endfunction() diff --git a/configure.cmake b/configure.cmake index d9711a034..30a423798 100644 --- a/configure.cmake +++ b/configure.cmake @@ -50,6 +50,9 @@ if(PkgConfig_FOUND) endif() #### Tests +if(LINUX) + check_for_ulimit() +endif() qt_config_compile_test(re2 LABEL "re2" @@ -493,3 +496,9 @@ qt_configure_add_report_entry( MESSAGE "Building fat libray with device and simulator architectures will disable NEON." CONDITION IOS AND simulator AND device AND QT_FEATURE_qtpdf_build ) +if(PRINT_BFD_LINKER_WARNING) + qt_configure_add_report_entry( + TYPE WARNING + MESSAGE "Using bfd linker requires at least 4096 open files limit" + ) +endif() diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index e9f8fd01e..4cf7f9bf9 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -464,6 +464,9 @@ target_include_directories(WebEngineCore PRIVATE add_gn_build_aritfacts_to_target(WebEngineCore QtWebEngineCore core ${buildDir}) add_dependencies(WebEngineCore run_core_NinjaDone) +if(COIN_BUG_699) + set_property(TARGET WebEngineCore PROPERTY CXX_LINKER_LAUNCHER ${PROJECT_BINARY_DIR}/linker_ulimit.sh) +endif() ## # SANDBOX |