diff options
-rw-r--r-- | cmake/QtSetup.cmake | 7 | ||||
-rw-r--r-- | cmake/QtTargetHelpers.cmake | 8 | ||||
-rw-r--r-- | cmake/configure-cmake-mapping.md | 2 | ||||
-rw-r--r-- | configure.cmake | 2 | ||||
-rwxr-xr-x | util/cmake/configurejson2cmake.py | 4 |
5 files changed, 13 insertions, 10 deletions
diff --git a/cmake/QtSetup.cmake b/cmake/QtSetup.cmake index c0dbdca416..7a86b29037 100644 --- a/cmake/QtSetup.cmake +++ b/cmake/QtSetup.cmake @@ -54,13 +54,6 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON) # Do not relink dependent libraries when no header has changed: set(CMAKE_LINK_DEPENDS_NO_SHARED ON) -# Default to hidden visibility for symbols: -set(CMAKE_C_VISIBILITY_PRESET hidden) -set(CMAKE_CXX_VISIBILITY_PRESET hidden) -set(CMAKE_OBJC_VISIBILITY_PRESET hidden) -set(CMAKE_OBJCXX_VISIBILITY_PRESET hidden) -set(CMAKE_VISIBILITY_INLINES_HIDDEN 1) - # Detect non-prefix builds: either when the qtbase install prefix is set to the binary dir # or when a developer build is explicitly enabled and no install prefix is specified. # This detection only happens when building qtbase, and later is propagated via the generated diff --git a/cmake/QtTargetHelpers.cmake b/cmake/QtTargetHelpers.cmake index a78a02af98..d542eaafb8 100644 --- a/cmake/QtTargetHelpers.cmake +++ b/cmake/QtTargetHelpers.cmake @@ -175,6 +175,14 @@ endfunction() # Set target properties that are the same for all modules, plugins, executables # and 3rdparty libraries. function(qt_set_common_target_properties target) + if(QT_FEATURE_reduce_exports) + set_target_properties(${target} PROPERTIES + C_VISIBILITY_PRESET hidden + CXX_VISIBILITY_PRESET hidden + OBJC_VISIBILITY_PRESET hidden + OBJCXX_VISIBILITY_PRESET hidden + VISIBILITY_INLINES_HIDDEN 1) + endif() if(FEATURE_static_runtime) if(MSVC) set_property(TARGET ${target} PROPERTY diff --git a/cmake/configure-cmake-mapping.md b/cmake/configure-cmake-mapping.md index b0fa969a75..95527273fd 100644 --- a/cmake/configure-cmake-mapping.md +++ b/cmake/configure-cmake-mapping.md @@ -61,7 +61,7 @@ The effort of this is tracked in QTBUG-85373 and QTBUG-85349. | -R <string> | -DQT_EXTRA_RPATHS=path1;path2 | | | -rpath | negative CMAKE_SKIP_BUILD_RPATH | | | | negative CMAKE_SKIP_INSTALL_RPATH | | -| -reduce-exports | | | +| -reduce-exports | -DFEATURE_reduce_exports=ON | | | -reduce-relocations | -DFEATURE_reduce_relocations=ON | | | -plugin-manifests | | | | -static-runtime | -DFEATURE_static_runtime=ON | | diff --git a/configure.cmake b/configure.cmake index 1ee218646b..470e4ab0a6 100644 --- a/configure.cmake +++ b/configure.cmake @@ -642,7 +642,7 @@ qt_feature("enable_gdb_index" qt_feature_config("enable_gdb_index" QMAKE_PRIVATE_CONFIG) qt_feature("reduce_exports" PRIVATE LABEL "Reduce amount of exported symbols" - CONDITION NOT WIN32 AND CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY + CONDITION NOT MSVC ) qt_feature_definition("reduce_exports" "QT_VISIBILITY_AVAILABLE") qt_feature_config("reduce_exports" QMAKE_PUBLIC_QT_CONFIG) diff --git a/util/cmake/configurejson2cmake.py b/util/cmake/configurejson2cmake.py index b0c4f61d55..d81121b98f 100755 --- a/util/cmake/configurejson2cmake.py +++ b/util/cmake/configurejson2cmake.py @@ -123,7 +123,6 @@ def map_tests(test: str) -> Optional[str]: "spe": "TEST_subarch_spe", "vsx": "TEST_subarch_vsx", "openssl11": '(OPENSSL_VERSION VERSION_GREATER_EQUAL "1.1.0")', - "reduce_exports": "CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY", "libinput_axis_api": "ON", "xlib": "X11_FOUND", "wayland-scanner": "WaylandScanner_FOUND", @@ -952,6 +951,9 @@ endif()""", }, ], }, + "reduce_exports": { + "condition": "NOT MSVC", + }, "release": None, "release_tools": None, "rpath": { |