# Copyright (C) 2015 # swift project Community / Contributors # # This file is part of swift project. It is subject to the license terms in # the LICENSE file found in the top-level directory of this distribution and # at http://www.swift-project.org/license.html. No part of swift project, # including this file, may be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. ################################ # Version number ################################ include(version.pri) !win32 { VER_MAJ = $${BLACK_VER_MAJ} VER_MIN = $${BLACK_VER_MIN} VER_PAT = $${BLACK_VER_PAT} VERSION = $${BLACK_VERSION} } ################################ # Destination tree ################################ CONFIG(debug, debug|release): DestRoot = $$DestRootDebug else: DestRoot = $$DestRootRelease ################################ # Build configuration ################################ include(config.pri) ################################ # QMake options ################################ CONFIG += qt CONFIG += warn_on CONFIG += c++14 ################################ # Detect 32 or 64 bit ################################ include(wordsize.pri) ################################ # Multithreaded build in VS IDE ################################ contains(TEMPLATE, "vc.*"): QMAKE_CXXFLAGS *= /MP ################################ # Profile build ################################ contains(BLACK_CONFIG, ProfileRelease) { msvc { QMAKE_CXXFLAGS_RELEASE *= /Zi QMAKE_LFLAGS_RELEASE *= /DEBUG /PROFILE /INCREMENTAL:NO /OPT:REF /OPT:ICF } } ################################ # Workaround C1128 error ################################ msvc:!llvm: QMAKE_CXXFLAGS *= /bigobj ################################ # No gigantic MinGW obj files ################################ win32-g++: QMAKE_CXXFLAGS_DEBUG += -Og ################################ # FSX, P3D or FS9 on 32bit Windows only ################################ equals(WORD_SIZE,64)|!win32: BLACK_CONFIG -= FSX FS9 P3D ################################ # For BlackMisc::getStackTrace ################################ linux-g++: QMAKE_LFLAGS_DEBUG *= -rdynamic ################################ # Suppress stupid warnings ################################ include(warnings.pri) ################################ # Handle addresses larger than 2GB ################################ equals(WORD_SIZE,32) { win32-g++: QMAKE_LFLAGS *= -Wl,--large-address-aware } ################################ # Path to external dependencies ################################ # If you want to manually set the external path, uncomment the following line # EXTERNALSROOT = /path/to/externals isEmpty(EXTERNALSROOT) { EXTERNALSROOT = $$(SWIFT_EXTERNALS_DIR) } isEmpty(EXTERNALSROOT) { EXTERNALSROOT = $$SourceRoot/externals } !exists("$$EXTERNALSROOT/common/include") { error("Could not find externals in $${EXTERNALSROOT}. Please install them!") } ################################ # Externals ################################ EXTERNALS_SPEC = $$basename(QMAKESPEC) msvc { clang_cl: EXTERNALS_SPEC = win32-msvc2015 win32-msvc2017: EXTERNALS_SPEC = win32-msvc2015 win32-msvc { # From Qt 5.8.1 onwards, QMAKESPEC is win32-msvc without the version number # see https://codereview.qt-project.org/#/c/162754/ lessThan(MSVC_VER, 14.0) | greaterThan(MSVC_VER, 15.0) { error(This version of Visual Studio is not supported (MSVC_VER = $$MSVC_VER)) } EXTERNALS_SPEC = win32-msvc2015 } } INCLUDEPATH *= $$EXTERNALSROOT/common/include INCLUDEPATH *= $$EXTERNALSROOT/$$EXTERNALS_SPEC/include INCLUDEPATH *= $$EXTERNALSROOT/common/include/crashpad INCLUDEPATH *= $$EXTERNALSROOT/common/include/mini_chromium equals(WORD_SIZE,64) { EXTERNALS_BIN_DIR = $$EXTERNALSROOT/$$EXTERNALS_SPEC/bin64 EXTERNALS_LIB_DIR = $$EXTERNALSROOT/$$EXTERNALS_SPEC/lib64 } equals(WORD_SIZE,32) { EXTERNALS_BIN_DIR = $$EXTERNALSROOT/$$EXTERNALS_SPEC/bin32 EXTERNALS_LIB_DIR = $$EXTERNALSROOT/$$EXTERNALS_SPEC/lib32 } LIBS *= -L$$EXTERNALS_LIB_DIR macx: LIBS *= -F$$EXTERNALS_LIB_DIR win32: LIBS *= -luser32 INCLUDEPATH *= $$EXTERNALDIR/common/include ################################ # Includes ################################ INCLUDEPATH *= $$BuildRoot/src ################################ # Platform extensions ################################ isEmpty(QMAKE_EXTENSION_SHLIB) { mac|ios: QMAKE_EXTENSION_SHLIB = dylib else:win*: QMAKE_EXTENSION_SHLIB = dll else: QMAKE_EXTENSION_SHLIB = so } isEmpty(QMAKE_EXTENSION_EXE) { win32: QMAKE_EXTENSION_EXE = exe } ################################ # Install prefix ################################ isEmpty(PREFIX) { PREFIX = $$BuildRoot/dist } ################################ # Debug Suffix ################################ win32: CONFIG(debug, debug|release): DLL_DEBUG_SUFFIX = d ################################ # Experimental support for Clang on Windows ################################ clang_cl { QMAKE_CXXFLAGS ~= s/-fms-compatibility-version=.+/ QMAKE_CXXFLAGS += -fms-compatibility-version=19.00.24210 # QtCreator ships with a version of clang-cl, # but we want to use the one in PATH instead. system($$(SYSTEMROOT)\system32\where /q clang-cl) { QMAKE_CC = $$system($$(SYSTEMROOT)\system32\where clang-cl) QMAKE_CXX = $$QMAKE_CC } }