CMake: Add version tagging sources only if the linker supports it

If the TEST_ld_version_script configure test fails with GCC or Clang,
then we still added qversiontagging.cpp, and linking failed.

Use the result of the configure test to decide whether to add
qversiontagging.cpp or not.

Task-number: QTBUG-111514
Change-Id: Id09e372a7a1e5cdbe59987be4481f64c6c45251e
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io>
This commit is contained in:
Joerg Bornemann 2023-05-26 15:57:59 +02:00
parent 1352dba3b0
commit 08f3aa32b7

View File

@ -34,9 +34,6 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/QtInstallPaths.cmake.in"
## Core Module:
#####################################################################
set(core_version_tagging_files
global/qversiontagging.cpp
global/qversiontagging.h)
qt_internal_add_module(Core
QMAKE_MODULE_CONFIG moc resources
NO_GENERATE_METATYPES # metatypes are extracted manually below
@ -96,7 +93,6 @@ qt_internal_add_module(Core
global/qtversion.h
global/qtypeinfo.h
global/qtypes.cpp global/qtypes.h
${core_version_tagging_files}
global/qvolatile_p.h
global/q20algorithm.h
global/q20chrono.h
@ -447,8 +443,22 @@ if(ANDROID)
)
endif()
## Scopes:
#####################################################################
# Add version tagging source files if the linker has version script support
# or the platform supports it.
set(core_version_tagging_files
global/qversiontagging.cpp
global/qversiontagging.h)
qt_internal_extend_target(Core
CONDITION TEST_ld_version_script OR APPLE OR WIN32
SOURCES ${core_version_tagging_files}
)
# Disable LTO, as the symbols disappear somehow under GCC
# (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48200)
if(GCC)
set_source_files_properties(${core_version_tagging_files}
PROPERTIES COMPILE_OPTIONS "-fno-lto")
endif()
qt_internal_extend_target(Core
CONDITION ( TEST_architecture_arch STREQUAL i386 ) OR
@ -640,13 +650,6 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_journald
PkgConfig::Libsystemd
)
# Disable LTO, as the symbols disappear somehow under GCC
# (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48200)
if(GCC)
set_source_files_properties(${core_version_tagging_files}
PROPERTIES COMPILE_OPTIONS "-fno-lto")
endif()
qt_internal_extend_target(Core CONDITION UNIX
SOURCES
io/qfilesystemengine_unix.cpp