Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mumble-voip/mumble.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavide Beatrici <davidebeatrici@gmail.com>2017-03-05 15:20:12 +0300
committerDavide Beatrici <davidebeatrici@gmail.com>2017-03-05 17:48:16 +0300
commitd04995899a6c9fbd0b738c2aa2acc2499e83bfd9 (patch)
tree325a77aff33fa5136f265c97776bcb05881efc0d /qmake/cplusplus.pri
parent03908a0162540e3dfcdc2dc2102ab3b32cd08a88 (diff)
Move .pri files and "toolchain" folder in "qmake"
Diffstat (limited to 'qmake/cplusplus.pri')
-rw-r--r--qmake/cplusplus.pri136
1 files changed, 136 insertions, 0 deletions
diff --git a/qmake/cplusplus.pri b/qmake/cplusplus.pri
new file mode 100644
index 000000000..aea1a8099
--- /dev/null
+++ b/qmake/cplusplus.pri
@@ -0,0 +1,136 @@
+# Copyright 2005-2017 The Mumble Developers. All rights reserved.
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file at the root of the
+# Mumble source tree or at <https://www.mumble.info/LICENSE>.
+
+# This .pri file implements modern C++ detection for Mumble.
+#
+# With this file, it's possible to pass one of
+# c++03, c++11, c++14 or c++1z
+# to qmake via CONFIG when building Mumble, to
+# manually specify the C++ standard the build
+# should target.
+#
+# If no C++ standard is explicitly chosen on
+# the command-line, an appropriate default will
+# be chosen by an auto-detection mechanism.
+# This mechanism looks at QT_CONFIG and automatically
+# adds c++11, c++14 or c++1z to CONFIG. If none of
+# these are available, it adds c++03 to CONFIG.
+#
+# In Qt 5, qmake understands the c++11, c++14, and c++1z
+# CONFIG options, and will automatically populate
+# QMAKE_CXXFLAGS and QMAKE_LFLAGS with the appropriate
+# -std=c++XX values for the chosen C++ standard.
+# For Qt 4, this .pri files will add the proper flags,
+# because Qt 4's qmake doesn't know of the c++XX CONFIG
+# options.
+#
+# The c++03 option is unknown for both Qt 4 and Qt 5.
+# We handle setting up the proper CXXFLAGS and LFLAGS for
+# both versions of Qt when c++03 is in CONFIG.
+
+# First, auto-populate CONFIG with the latest C++ standard
+# that Qt has detected support for.
+!CONFIG(c++03):!CONFIG(c++11):!CONFIG(c++14):!CONFIG(c++1z) {
+ contains(QT_CONFIG, c++1z) {
+ CONFIG *= c++1z
+ } else:contains(QT_CONFIG, c++14) {
+ CONFIG *= c++14
+ } else:contains(QT_CONFIG, c++11) {
+ CONFIG *= c++11
+ }
+}
+# If no appropriate C++ standard was found in QT_CONFIG, populate
+# CONFIG with c++03.
+!CONFIG(c++03):!CONFIG(c++11):!CONFIG(c++14):!CONFIG(c++1z) {
+ CONFIG += c++03
+}
+
+# If CONFIG(c++1z) or CONFIG(c++14) is set, we
+# also add the prior "modern" standards to
+# CONFIG.
+#
+# This is because Qt 5.6 (and maybe earlier
+# versions) use the presence of CONFIG(c++11)
+# to mean "modern C++".
+#
+# For example, Qt 5.6's
+# mkspecs/features/qt_module_headers.prf
+# file will automatically add -std=c++98 to
+# CXXFLAGS if CONFIG(c++11) isn't set.
+#
+# The result is that if we ONLY put c++1z in
+# CONFIG, that check will cause us to have
+# *both* -std=c++98 *and* -std=gnu++1z in
+# CXXFLAGS when building on Qt 5.6, which
+# is bad.
+#
+# In order to be compatible with such checks,
+# ensure that we have all prior "modern"
+# C++ standards in CONFIG, to please Qt.
+CONFIG(c++1z) {
+ CONFIG *= c++11 c++14
+}
+CONFIG(c++14) {
+ CONFIG *= c++11
+}
+
+# Unix-specific handling of modern C++ features.
+unix {
+ # Qt 4, as opposed to Qt 5, doesn't automatically
+ # populate QMAKE_CXXFLAGS and QMAKE_LFLAGS with the
+ # appropriate -std=c++XX flags. So, for Qt 4, we'll
+ # have to set them up manually.
+ lessThan(QT_MAJOR_VERSION, 5) {
+ CONFIG(c++1z) {
+ QMAKE_CXXFLAGS += -std=c++1z
+ QMAKE_LFLAGS += -std=c++1z
+ } else:CONFIG(c++14) {
+ QMAKE_CXXFLAGS += -std=c++14
+ QMAKE_LFLAGS += -std=c++14
+ } else:CONFIG(c++11) {
+ QMAKE_CXXFLAGS += -std=c++11
+ QMAKE_LFLAGS += -std=c++11
+ }
+ }
+ # No Qt versions know about CONFIG(c++03), since
+ # its our own internal hint -- so for CONFIG(c++03)
+ # we set QMAKE_CXXFLAGS and QMAKE_LFLAGS for both Qt 4
+ # and Qt 5.
+ CONFIG(c++03):!CONFIG(c++11):!CONFIG(c++14):!CONFIG(c++1z) {
+ # Note: we use -std=c++98 to support
+ # older compilers. In GCC, the following
+ # flags mean the same thing:
+ # -std=c++98, -std=c++03, -ansi.
+ QMAKE_CXXFLAGS += -std=c++98
+ QMAKE_LFLAGS += -std=c++98
+ }
+
+
+ # Debian seems to put C++11 variants of shared libraries
+ # in /usr/lib/$triple/c++11.
+ #
+ # At least, that's the case for ZeroC Ice.
+ #
+ # The expectation is that this is a general convention,
+ # so add it to our library search path in C++11, C++14
+ # and C++1z mode.
+ CONFIG(c++11)|CONFIG(c++14)|CONFIG(c++1z) {
+ MULTIARCH_TRIPLE = $$system($${QMAKE_CC} -print-multiarch 2>/dev/null)
+ !isEmpty(MULTIARCH_TRIPLE) {
+ # Don't add the Debian-specfic c++11 libdir when using
+ # a Mumble buildenv.
+ #
+ # Adding this directory to QMAKE_LIBDIR this early in
+ # the build process will cause Mumble to prefer this
+ # lib dir to the buildenv's own.
+ # The easiest way to fix this is to simply avoid adding
+ # this dir when building using a Mumble buildenv, since
+ # it is irrelevant for us in that setting.
+ !CONFIG(buildenv) {
+ QMAKE_LIBDIR *= /usr/lib/$${MULTIARCH_TRIPLE}/c++11
+ }
+ }
+ }
+}