summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Klocek <michal.klocek@qt.io>2021-08-25 11:22:04 +0200
committerMichal Klocek <michal.klocek@qt.io>2021-08-30 19:48:20 +0200
commitb6cd55e60f42b5ebde1ebbf2977488e91a4e408b (patch)
treea393bb5fd4b606f7e692eb2f9963897cd218c39e
parenteac950fad133f49badc969f44ee4dc0a13a25697 (diff)
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 Change-Id: Ib9d0c4ced988d4692746e51f3abbe63ff5085836 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> (cherry picked from commit c18a4d6f354838ea3edfb18d31007237dad08aa6)
-rw-r--r--cmake/Functions.cmake21
-rw-r--r--configure.cmake9
-rw-r--r--src/core/CMakeLists.txt3
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 c01dd2e14..283185870 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"
@@ -494,3 +497,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 74ae345dc..ba743b33e 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -463,6 +463,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