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/compiler.pri
parent03908a0162540e3dfcdc2dc2102ab3b32cd08a88 (diff)
Move .pri files and "toolchain" folder in "qmake"
Diffstat (limited to 'qmake/compiler.pri')
-rw-r--r--qmake/compiler.pri374
1 files changed, 374 insertions, 0 deletions
diff --git a/qmake/compiler.pri b/qmake/compiler.pri
new file mode 100644
index 000000000..26e556904
--- /dev/null
+++ b/qmake/compiler.pri
@@ -0,0 +1,374 @@
+# 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>.
+
+include(qt.pri)
+include(uname.pri)
+include(buildenv.pri)
+include(cplusplus.pri)
+
+CONFIG *= warn_on
+
+# Enable zlib compression for assets
+# embedded via rcc. This is done to
+# keep the size of rcc's output
+# source files under control.
+QMAKE_RESOURCE_FLAGS += -compress 9
+
+# The architecture we're building for.
+# On Windows, Mumble supports overriding the
+# architecture of the compiler via the
+# force-x86_64-toolchain and force-x86-toolchain
+# CONFIG options. Because we have these, qmake's
+# QMAKE_TARGET.arch doesn't suffice any longer, and
+# we define MUMBLE_ARCH to be used in its place.
+MUMBLE_ARCH = $$QMAKE_TARGET.arch
+
+win32 {
+ # Define the CONFIG options 'force-x86-toolchain' and
+ # 'force-x86_64-toolchain'. These can be used to force
+ # the target of a .pro file to be built for a specific
+ # architecture, regardless of the actual architecture
+ # used by the current build environment.
+ FULL_MKSPEC_PATH = $$QMAKESPEC
+ CURRENT_MKSPEC = $$basename(QMAKESPEC)
+
+ CONFIG(force-x86-toolchain) {
+ MUMBLE_ARCH = x86
+ include(toolchain/$${CURRENT_MKSPEC}/x86-xp.toolchain)
+ }
+
+ CONFIG(force-x86_64-toolchain) {
+ MUMBLE_ARCH = x86_64
+ include(toolchain/$${CURRENT_MKSPEC}/x64.toolchain)
+ }
+
+ # Import dependency paths for windows
+ include(winpaths_default.pri)
+
+ INCLUDEPATH *= "$$BOOST_PATH/include"
+ QMAKE_LIBDIR *= "$$OPENSSL_PATH/lib" "$$LIBSNDFILE_PATH/lib" "$$BOOST_PATH/lib"
+ INCLUDEPATH *= "$$OPENSSL_PATH/include" "$$LIBSNDFILE_PATH/include"
+
+ # Sanity check that LIB and INCLUDE are properly set up.
+ INCLUDE_VAR=$$(INCLUDE)
+ LIB_VAR=$$(LIB)
+ isEmpty(LIB_VAR) {
+ error("The LIB environment variable is not set. Are you not in a build environment?")
+ }
+ isEmpty(INCLUDE_VAR) {
+ error("The INCLUDE environment variable is not set. Are you not in a build environment?")
+ }
+
+ CONFIG(analyze) {
+ QMAKE_CFLAGS_DEBUG *= /analyze
+ QMAKE_CXXFLAGS_DEBUG *= /analyze
+ QMAKE_CFLAGS_RELEASE *= /analyze
+ QMAKE_CXXFLAGS_RELEASE *= /analyze
+ }
+
+ # Always enable warnings-as-errors
+ # if we're inside a Mumble build environment.
+ # Can be disabled with CONFIG+=no-warnings-as-errors.
+ CONFIG(buildenv):!CONFIG(no-warnings-as-errors) {
+ CONFIG += warnings-as-errors
+ }
+
+ CONFIG(warnings-as-errors) {
+ QMAKE_CFLAGS *= -WX
+ QMAKE_CXXFLAGS *= -WX
+ QMAKE_LFLAGS *= -WX
+ }
+
+ # Increase the verbosity of the linker.
+ # For now, only increases the verbosity
+ # of searching for libraries.
+ # This is useful when diagnosing libraries
+ # that use a wrong runtime library DLL.
+ CONFIG(verbose-linker) {
+ QMAKE_LFLAGS *= /VERBOSE:LIB
+ }
+
+ # Increase PCH heap to 150MB: https://msdn.microsoft.com/en-us/library/bdscwf1c.aspx
+ QMAKE_CFLAGS *= -Zm200
+ QMAKE_CXXFLAGS *= -Zm200
+
+ # Disable C4091 for x86 builds. We build against the v140_xp toolset, which uses
+ # a modified Windows 7 SDK which is compatible with Windows XP. Many system headers
+ # emit C4091, typically because of erroneous typedefs. For example 'GPFIDL_FLAGS' in
+ # shlobj.h, and an anonymous enum that includes KSPROPERTY_ONESHOT_RECONNECT in ksmedia.h.
+ equals(MUMBLE_ARCH, x86) {
+ QMAKE_CFLAGS *= -wd4091
+ QMAKE_CXXFLAGS *= -wd4091
+ }
+
+ QMAKE_CFLAGS_RELEASE *= -Ox /fp:fast
+ QMAKE_CXXFLAGS_RELEASE *= -Ox /fp:fast
+
+ equals(MUMBLE_ARCH, x86) {
+ QMAKE_LFLAGS_RELEASE -= /SafeSEH
+ }
+
+ # MSVS 2012 and 2013's cl.exe will generate SSE2 code by default,
+ # unless an explict arch is set.
+ # For our non-64 x86 builds, our binaries should not contain any
+ # SSE2 code, so override the default by using -arch:SSE.
+ equals(MUMBLE_ARCH, x86) {
+ QMAKE_CFLAGS_RELEASE *= -arch:SSE
+ QMAKE_CXXFLAGS_RELEASE *= -arch:SSE
+ }
+
+ # Qt 5.4 uses -Zc:strictStrings by default on MSVS 2013.
+ # TextToSpeech_win.cpp uses sapi.h, which isn't compatible
+ # with the strictStrings option due to bad conversions
+ # in some of its functions's default parameters.
+ QMAKE_CFLAGS_RELEASE -= -Zc:strictStrings
+ QMAKE_CXXFLAGS_RELEASE -= -Zc:strictStrings
+ QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO -= -Zc:strictStrings
+ QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO -= -Zc:strictStrings
+ # The mkspec update for MSVC2015 puts the flag directly in
+ # CFLAGS and CXXFLAGS, so try there, too.
+ QMAKE_CFLAGS -= -Zc:strictStrings
+ QMAKE_CXXFLAGS -= -Zc:strictStrings
+
+ # Explicitly set the subsystem versions to
+ # 5.01 (XP) for x86 and 6.00 (Vista) for x64.
+ #
+ # Qt expands the @QMAKE_SUBSYSTEM_SUFFIX@ via
+ # qt_config.prf, which doesn't seem to trigger
+ # for us. So we'll just try our luck.
+ QMAKE_LFLAGS_CONSOLE -= /SUBSYSTEM:CONSOLE
+ QMAKE_LFLAGS_CONSOLE -= /SUBSYSTEM:CONSOLE@QMAKE_SUBSYSTEM_SUFFIX@
+ QMAKE_LFLAGS_WINDOWS -= /SUBSYSTEM:WINDOWS
+ QMAKE_LFLAGS_WINDOWS -= /SUBSYSTEM:WINDOWS@QMAKE_SUBSYSTEM_SUFFIX@
+ !isEmpty(QMAKE_LFLAGS_WINDOWS) {
+ error("QMAKE_LFLAGS_WINDOWS is not empty. Please adjust the pri file.")
+ }
+ !isEmpty(QMAKE_LFLAGS_CONSOLE) {
+ error("QMAKE_LFLAGS_CONSOLE is not empty. Please adjust the pri file.")
+ }
+ equals(MUMBLE_ARCH, x86) {
+ QMAKE_LFLAGS_CONSOLE += /SUBSYSTEM:CONSOLE,5.01
+ QMAKE_LFLAGS_WINDOWS += /SUBSYSTEM:WINDOWS,5.01
+ }
+ equals(MUMBLE_ARCH, x86_64) {
+ QMAKE_LFLAGS_CONSOLE += /SUBSYSTEM:CONSOLE,6.00
+ QMAKE_LFLAGS_WINDOWS += /SUBSYSTEM:WINDOWS,6.00
+ }
+
+ DEFINES *= RESTRICT=
+ CONFIG(sse2) {
+ QMAKE_CFLAGS_RELEASE -= -arch:SSE
+ QMAKE_CFLAGS_DEBUG -= -arch:SSE
+ QMAKE_CFLAGS += -arch:SSE2
+ }
+
+ CONFIG(symbols) {
+ # Configure build to be able to properly debug release builds
+ # (https://msdn.microsoft.com/en-us/library/fsk896zz.aspx).
+ # This includes explicitely disabling /Oy to help debugging
+ # (https://msdn.microsoft.com/en-us/library/2kxx5t2c.aspx).
+ # Also set /Zo to enhance optimized debugging
+ # (https://msdn.microsoft.com/en-us/library/dn785163.aspx?f=255&MSPPError=-2147217396).
+ QMAKE_CFLAGS_RELEASE -= -Oy
+ QMAKE_CXXFLAGS_RELEASE -= -Oy
+
+ QMAKE_CFLAGS_RELEASE *= -GR -Zi -Zo -Oy-
+ QMAKE_CXXFLAGS_RELEASE *= -GR -Zi -Zo -Oy-
+
+ QMAKE_LFLAGS *= /DEBUG /OPT:REF /OPT:ICF /INCREMENTAL:NO
+ }
+
+ CONFIG(vld) {
+ CONFIG(debug, debug|release) {
+ DEFINES *= USE_VLD
+ INCLUDEPATH *= "$$VLD_PATH/include"
+ QMAKE_LIBDIR *= "$$VLD_PATH/lib"
+ }
+ }
+}
+
+unix {
+ DEFINES *= RESTRICT=__restrict__
+ QMAKE_CFLAGS *= -fvisibility=hidden
+ QMAKE_CXXFLAGS *= -fvisibility=hidden
+ QMAKE_OBJECTIVE_CFLAGS *= -fvisibility=hidden
+ QMAKE_OBJECTIVE_CXXFLAGS *= -fvisibility=hidden
+
+ QMAKE_CFLAGS *= -Wall -Wextra
+ QMAKE_CXXFLAGS *= -Wall -Wextra
+ QMAKE_OBJECTIVE_CFLAGS *= -Wall -Wextra
+ QMAKE_OBJECTIVE_CXXFLAGS *= -Wall -Wextra
+
+ # Always enable warnings-as-errors
+ # if we're inside a Mumble build environment.
+ # Can be disabled with CONFIG+=no-warnings-as-errors.
+ CONFIG(buildenv):!CONFIG(no-warnings-as-errors) {
+ CONFIG += warnings-as-errors
+ }
+
+ CONFIG(warnings-as-errors) {
+ QMAKE_CFLAGS *= -Werror
+ QMAKE_CXXFLAGS *= -Werror
+ QMAKE_OBJECTIVE_CFLAGS *= -Werror
+ QMAKE_OBJECTIVE_CXXFLAGS *= -Werror
+ }
+
+ CONFIG(opt-gcc) {
+ QMAKE_CC = /opt/gcc/bin/gcc
+ QMAKE_CXX = /opt/gcc/bin/g++
+ QMAKE_LINK = /opt/gcc/bin/g++
+ }
+
+ CONFIG(optgen) {
+ QMAKE_CFLAGS *= -O3 -march=native -ffast-math -ftree-vectorize -fprofile-generate
+ QMAKE_CXXFLAGS *= -O3 -march=native -ffast-math -ftree-vectorize -fprofile-generate
+ QMAKE_OBJECTIVE_CFLAGS *= -O3 -march=native -ffast-math -ftree-vectorize -fprofile-generate
+ QMAKE_OBJECTIVE_CXXFLAGS *= -O3 -march=native -ffast-math -ftree-vectorize -fprofile-generate
+ QMAKE_LFLAGS *= -fprofile-generate
+ }
+
+ CONFIG(optimize) {
+ QMAKE_CFLAGS *= -O3 -march=native -ffast-math -ftree-vectorize -fprofile-use
+ QMAKE_CXXFLAGS *= -O3 -march=native -ffast-math -ftree-vectorize -fprofile-use
+ QMAKE_OBJECTIVE_CFLAGS *= -O3 -march=native -ffast-math -ftree-vectorize -fprofile-use
+ QMAKE_OBJECTIVE_CXXFLAGS *= -O3 -march=native -ffast-math -ftree-vectorize -fprofile-use
+ }
+}
+
+contains(UNAME, FreeBSD)|contains(UNAME, OpenBSD) {
+ QMAKE_CFLAGS *= "-I/usr/local/include" "-isystem /usr/local/include"
+ QMAKE_CXXFLAGS *= "-I/usr/local/include" "-isystem /usr/local/include"
+ QMAKE_LIBDIR *= /usr/lib
+ QMAKE_LIBDIR *= /usr/local/lib
+}
+
+unix:!macx {
+ # If we're building in a Mumble build environment,
+ # add its include and lib dirs to the build configuration.
+ CONFIG(buildenv) {
+ SYSTEM_INCLUDES = $$(MUMBLE_PREFIX)/include $$[QT_INSTALL_HEADERS]
+ QMAKE_LIBDIR *= $$(MUMBLE_PREFIX)/lib
+
+ for(inc, $$list($$SYSTEM_INCLUDES)) {
+ QMAKE_CFLAGS *= "-I$$inc" "-isystem $$inc"
+ QMAKE_CXXFLAGS += "-I$$inc" "-isystem $$inc"
+ }
+ }
+
+ CONFIG(debug, debug|release) {
+ QMAKE_CFLAGS *= -fstack-protector -fPIE
+ QMAKE_CXXFLAGS *= -fstack-protector -fPIE
+ QMAKE_LFLAGS *= -pie
+ QMAKE_LFLAGS *= -Wl,--no-add-needed
+ }
+
+ # Ensure _FORTIFY_SOURCE is not used in debug builds.
+ #
+ # First, ensure _FORTIFY_SOURCE is undefined.
+ # Then -- and, only for release builds -- set
+ # _FORTIFY_SOURCE=2.
+ #
+ # We can't use _FORTIFY_SOURCE in debug builds (which are
+ # built with -O0) because _FORTIFY_SOURCE=1 requires -O1
+ # and _FORTIFY_SOURCE=2 requires -O2.
+ # Modern GLIBCs warn about this since
+ # https://sourceware.org/bugzilla/show_bug.cgi?id=13979.
+ # In Mumble builds with warnings-as-errors, this will
+ # cause build failures.
+ #
+ # We use the += operator because we care about the
+ # ordering of unsetting versus setting the preprocessor
+ # define. If they're in the wrong order, this will not
+ # work as intended.
+ QMAKE_CFLAGS += -U_FORTIFY_SOURCE
+ QMAKE_CXXFLAGS += -U_FORTIFY_SOURCE
+ CONFIG(release, debug|release) {
+ QMAKE_CFLAGS += -D_FORTIFY_SOURCE=2
+ QMAKE_CXXFLAGS += -D_FORTIFY_SOURCE=2
+ }
+
+ QMAKE_LFLAGS *= -Wl,-z,relro -Wl,-z,now
+
+ CONFIG(symbols) {
+ QMAKE_CFLAGS *= -g
+ QMAKE_CXXFLAGS *= -g
+ }
+}
+
+macx {
+ SYSTEM_INCLUDES = $$(MUMBLE_PREFIX)/include $$[QT_INSTALL_HEADERS]
+ QMAKE_LIBDIR *= $$(MUMBLE_PREFIX)/lib
+
+ for(inc, $$list($$SYSTEM_INCLUDES)) {
+ QMAKE_CFLAGS += "-I$$inc" "-isystem $$inc"
+ QMAKE_CXXFLAGS += "-I$$inc" "-isystem $$inc"
+ QMAKE_OBJECTIVE_CFLAGS += "-I$$inc" "-isystem $$inc"
+ QMAKE_OBJECTIVE_CXXFLAGS += "-I$$inc" "-isystem $$inc"
+ }
+
+ !CONFIG(universal) {
+ CONFIG += no-pch
+
+ # Qt 5.1 and greater want short-form OS X SDKs.
+ isEqual(QT_MAJOR_VERSION, 5) {
+ QMAKE_MAC_SDK = macosx
+ } else {
+ QMAKE_MAC_SDK = $$system(xcrun --sdk macosx --show-sdk-path 2>/dev/null)
+ isEmpty(QMAKE_MAC_SDK) {
+ QMAKE_MAC_SDK = $$system(xcode-select --print-path)/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk
+ !exists($$QMAKE_MAC_SDK) {
+ message("Unable to find usable OS X SDK")
+ error("Aborting build")
+ }
+ }
+ }
+
+ QMAKE_CC = $$system(xcrun -find clang)
+ QMAKE_CXX = $$system(xcrun -find clang++)
+ QMAKE_LINK = $$system(xcrun -find clang++)
+ QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
+ QMAKE_CFLAGS += -mmacosx-version-min=10.7
+ QMAKE_CXXFLAGS += -mmacosx-version-min=10.7
+ QMAKE_OBJECTIVE_CFLAGS += -mmacosx-version-min=10.7
+ QMAKE_OBJECTIVE_CXXFLAGS += -mmacosx-version-min=10.7
+ } else {
+ XCODE_PATH=$$system(xcode-select -print-path)
+ CONFIG += x86 ppc no-cocoa
+ QMAKE_MAC_SDK = $${XCODE_PATH}/SDKs/MacOSX10.5.sdk
+ QMAKE_CC = $${XCODE_PATH}/usr/bin/gcc-4.2
+ QMAKE_CXX = $${XCODE_PATH}/usr/bin/g++-4.2
+ QMAKE_LINK = $${XCODE_PATH}/usr/bin/g++-4.2
+ QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.4
+ QMAKE_CFLAGS += -mmacosx-version-min=10.4 -Xarch_i386 -mmmx -Xarch_i386 -msse -Xarch_i386 -msse2
+ QMAKE_CXXFLAGS += -mmacosx-version-min=10.4 -Xarch_i386 -mmmx -Xarch_i386 -msse -Xarch_i386 -msse2
+ QMAKE_OBJECTIVE_CFLAGS += -mmacosx-version-min=10.4 -Xarch_i386 -mmmx -Xarch_i386 -msse -Xarch_i386 -msse2
+ QMAKE_OBJECTIVE_CXXFLAGS += -mmacosx-version-min=10.4 -Xarch_i386 -mmmx -Xarch_i386 -msse -Xarch_i386 -msse2
+ DEFINES += USE_MAC_UNIVERSAL
+ }
+
+ QMAKE_LFLAGS += -Wl,-dead_strip -framework Cocoa -framework Carbon
+
+ CONFIG(symbols) {
+ QMAKE_CFLAGS *= -gfull -gdwarf-2
+ QMAKE_CXXFLAGS *= -gfull -gdwarf-2
+ QMAKE_OBJECTIVE_CFLAGS *= -gfull -gdwarf-2
+ QMAKE_OBJECTIVE_CXXFLAGS *= -gfull -gdwarf-2
+ }
+}
+
+CONFIG(clang-analyzer) {
+ QMAKE_CC = $$(CC)
+ QMAKE_CXX = $$(CXX)
+}
+
+CONFIG(no-pch) {
+ CONFIG -= precompile_header
+} else {
+ CONFIG *= precompile_header
+}
+
+CONFIG(debug, debug|release) {
+ DEFINES *= SNAPSHOT_BUILD
+}