d386ec1fd8
This should help improve the cleanliness of our source code, including compliance with the C++ standards. They apply to all of our code except examples (they don't load qt_common.prf). Change-Id: Ia0aac2f09e9245339951ffff13c94663c1901766 Reviewed-by: David Faure <david.faure@kdab.com>
106 lines
4.4 KiB
Plaintext
106 lines
4.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 strict_c++
|
|
contains(QT_CONFIG, c++14): CONFIG += c++14
|
|
contains(QT_CONFIG, c++1z): CONFIG += c++1z
|
|
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 {
|
|
qqt_libdir = \$\$\$\$[QT_HOST_LIBS]
|
|
qt_libdir = $$[QT_HOST_LIBS]
|
|
} else {
|
|
qqt_libdir = \$\$\$\$[QT_INSTALL_LIBS]
|
|
qt_libdir = $$[QT_INSTALL_LIBS]
|
|
}
|
|
contains(QMAKE_DEFAULT_LIBDIRS, $$qt_libdir) {
|
|
lib_replace.match = "[^ ']*$$rplbase/lib"
|
|
lib_replace.replace =
|
|
} else {
|
|
lib_replace.match = $$rplbase/lib
|
|
lib_replace.replace = $$qqt_libdir
|
|
}
|
|
lib_replace.CONFIG = path
|
|
QMAKE_PRL_INSTALL_REPLACE += lib_replace
|
|
}
|
|
|
|
# Extra warnings for Qt non-example code, to ensure cleanliness of the sources.
|
|
# The block below may turn these warnings into errors for some Qt targets.
|
|
# -Wdate-time: warn if we use __DATE__ or __TIME__ (we want to be able to reproduce the exact same binary)
|
|
# -Wvla: use of variable-length arrays (an extension to C++)
|
|
clang {
|
|
# Clang 3.5 introduced -Wdate-time
|
|
# The conditional assumes we aren't compiling against Clang 2.x anymore
|
|
greaterThan(QT_CLANG_MAJOR_VERSION, 3)|greaterThan(QT_CLANG_MINOR_VERSION, 4): \
|
|
QMAKE_CXXFLAGS_WARN_ON += -Wdate-time
|
|
} else: gcc:!intel_icc {
|
|
QMAKE_CXXFLAGS_WARN_ON += -Wvla
|
|
# GCC 5 introduced -Wdate-time
|
|
greaterThan(QT_GCC_MAJOR_VERSION, 4): QMAKE_CXXFLAGS_WARN_ON += -Wdate-time
|
|
}
|
|
|
|
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:!ios {
|
|
# Apple clang 4.0-4.2,5.0-5.1,6.0-6.4
|
|
# Regular clang 3.3-3.7
|
|
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\\.[01]|6\\.[01234]")|contains(reg_ver, "3\\.[3-7]") {
|
|
QMAKE_CXXFLAGS_WARN_ON += -Werror -Wno-error=\\$${LITERAL_HASH}warnings -Wno-error=deprecated-declarations $$WERROR
|
|
}
|
|
} else:intel_icc:linux {
|
|
# Intel CC 13.0 - 16.0, on Linux only
|
|
ver = $${QT_ICC_MAJOR_VERSION}.$${QT_ICC_MINOR_VERSION}
|
|
linux:contains(ver, "(1[345]\\.|16\\.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.9, 5.x
|
|
ver = $${QT_GCC_MAJOR_VERSION}.$${QT_GCC_MINOR_VERSION}
|
|
contains(ver, "(4\\.[6789]|5\\..)") {
|
|
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
|
|
}
|
|
} else:msvc {
|
|
# enable for MSVC 2012, MSVC 2013
|
|
equals(MSVC_VER, "11.0")|equals(MSVC_VER, "12.0"): QMAKE_CXXFLAGS_WARN_ON += -WX
|
|
}
|
|
unset(ver)
|
|
}
|
|
|