9b3b33b110
The linker complains that some symbols were compiled with different visibility settings when linking host_build tools such as the import scanner. As it turns out, we do CONFIG += hide_symbols for static libraries (such as bootstrap or qmldevtools) but naturally not for the final program source code. It appears symbol visibility is not of importance for static libraries in host builds (as opposed to static libraries later linked into shared libraries), therefore this patch removes that. Change-Id: I237a2d8669374eb059dc91b5378f6e3ec93d67a6 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
86 lines
3.4 KiB
Plaintext
86 lines
3.4 KiB
Plaintext
#
|
|
# W A R N I N G
|
|
# -------------
|
|
#
|
|
# This file is not part of the Qt API. It exists purely as an
|
|
# implementation detail. It may change from version to version
|
|
# without notice, or even be removed.
|
|
#
|
|
# We mean it.
|
|
#
|
|
|
|
QMAKE_DIR_REPLACE_SANE += DESTDIR
|
|
CONFIG -= debug_and_release_target
|
|
|
|
contains(QT_CONFIG, c++11): CONFIG += c++11
|
|
contains(TEMPLATE, .*lib) {
|
|
# module and plugins
|
|
!host_build:contains(QT_CONFIG, reduce_exports): CONFIG += hide_symbols
|
|
unix:contains(QT_CONFIG, reduce_relocations): CONFIG += bsymbolic_functions
|
|
contains(QT_CONFIG, largefile): CONFIG += largefile
|
|
contains(QT_CONFIG, separate_debug_info): CONFIG += separate_debug_info
|
|
|
|
!isEmpty(_QMAKE_SUPER_CACHE_): \
|
|
rplbase = $$dirname(_QMAKE_SUPER_CACHE_)/[^/][^/]*
|
|
else: \
|
|
rplbase = $$MODULE_BASE_OUTDIR
|
|
host_build: \
|
|
qt_libdir = $$[QT_HOST_LIBS]
|
|
else: \
|
|
qt_libdir = $$[QT_INSTALL_LIBS/raw]
|
|
contains(QMAKE_DEFAULT_LIBDIRS, $$qt_libdir) {
|
|
lib_replace.match = "[^ ']*$$rplbase/lib"
|
|
lib_replace.replace =
|
|
} else {
|
|
lib_replace.match = $$rplbase/lib
|
|
lib_replace.replace = $$qt_libdir
|
|
}
|
|
lib_replace.CONFIG = path
|
|
QMAKE_PRL_INSTALL_REPLACE += lib_replace
|
|
}
|
|
|
|
warnings_are_errors:warning_clean {
|
|
# If the module declares that it has does its clean-up of warnings, enable -Werror.
|
|
# This setting is compiler-dependent anyway because it depends on the version of the
|
|
# compiler.
|
|
clang {
|
|
# Apple clang 4.0-4.2,5.0
|
|
# Regular clang 3.3 & 3.4
|
|
apple_ver = $${QT_APPLE_CLANG_MAJOR_VERSION}.$${QT_APPLE_CLANG_MINOR_VERSION}
|
|
reg_ver = $${QT_CLANG_MAJOR_VERSION}.$${QT_CLANG_MINOR_VERSION}
|
|
contains(apple_ver, "4\\.[012]|5\\.0")|contains(reg_ver, "3\\.[34]") {
|
|
QMAKE_CXXFLAGS_WARN_ON += -Werror -Wno-error=\\$${LITERAL_HASH}warnings -Wno-error=deprecated-declarations $$WERROR
|
|
|
|
# glibc's bswap_XX macros use the "register" keyword
|
|
linux:equals(reg_ver, "3.4"): QMAKE_CXXFLAGS_WARN_ON += -Wno-error=deprecated-register
|
|
}
|
|
} else:intel_icc:linux {
|
|
# Intel CC 13.0 - 14.0, on Linux only
|
|
ver = $${QT_ICC_MAJOR_VERSION}.$${QT_ICC_MINOR_VERSION}
|
|
linux:contains(ver, "(13\\.|14\\.0)") {
|
|
# 177: function "entity" was declared but never referenced
|
|
# (too aggressive; ICC reports even for functions created due to template instantiation)
|
|
# 1224: #warning directive
|
|
# 1478: function "entity" (declared at line N) was declared deprecated
|
|
# 1881: argument must be a constant null pointer value
|
|
# (NULL in C++ is usually a literal 0)
|
|
QMAKE_CXXFLAGS_WARN_ON += -Werror -ww177,1224,1478,1881 $$WERROR
|
|
}
|
|
} else:gcc:!clang:!intel_icc {
|
|
# GCC 4.6-4.8
|
|
ver = $${QT_GCC_MAJOR_VERSION}.$${QT_GCC_MINOR_VERSION}
|
|
contains(ver, "4\\.[678]") {
|
|
QMAKE_CXXFLAGS_WARN_ON += -Werror -Wno-error=cpp -Wno-error=deprecated-declarations $$WERROR
|
|
|
|
# GCC prints this bogus warning, after it has inlined a lot of code
|
|
# error: assuming signed overflow does not occur when assuming that (X + c) < X is always false
|
|
QMAKE_CXXFLAGS_WARN_ON += -Wno-error=strict-overflow
|
|
|
|
# Work-around for bug https://code.google.com/p/android/issues/detail?id=58135
|
|
android: QMAKE_CXXFLAGS_WARN_ON += -Wno-error=literal-suffix
|
|
}
|
|
}
|
|
unset(ver)
|
|
}
|
|
|