# This file is loaded by qmake right after loading the actual project file. contains(TEMPLATE, ".*(lib|app)"):CONFIG += have_target !have_target:!force_qt: CONFIG -= qt load(resolve_config) exclusive_builds: load(exclusive_builds_post) # If the TARGET looks like a path, split it into DESTDIR and the resulting TARGET target_dir_part = $$dirname(TARGET) !isEmpty(target_dir_part) { isEmpty(DESTDIR): \ DESTDIR = $$target_dir_part else: \ DESTDIR = $$DESTDIR/$$target_dir_part TARGET = $$basename(TARGET) DESTDIR = $$clean_path($$DESTDIR) } QT_BREAKPAD_ROOT_PATH = $$(QT_BREAKPAD_ROOT_PATH) !isEmpty(QT_BREAKPAD_ROOT_PATH): \ # quick test first whether requested ... !static:release:have_target: \ # is it applicable? !contains(TARGET, .*phony_target.*): \ # monster hack, you don't really see this here, right? ;) system($$QT_BREAKPAD_ROOT_PATH/qtbreakpadsymbols --breakpad-exists) { # do we really have it? CONFIG += breakpad force_debug_info CONFIG -= no_debug_info separate_debug_info } force_debug_info|debug: \ CONFIG += debug_info force_debug_info { QMAKE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO } optimize_size { !isEmpty(QMAKE_CFLAGS_OPTIMIZE):!isEmpty(QMAKE_CFLAGS_OPTIMIZE_SIZE) { QMAKE_CFLAGS_RELEASE -= $$QMAKE_CFLAGS_OPTIMIZE QMAKE_CXXFLAGS_RELEASE -= $$QMAKE_CFLAGS_OPTIMIZE QMAKE_CFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE_SIZE QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE_SIZE } } else: optimize_full { !isEmpty(QMAKE_CFLAGS_OPTIMIZE):!isEmpty(QMAKE_CFLAGS_OPTIMIZE_FULL) { QMAKE_CFLAGS_RELEASE -= $$QMAKE_CFLAGS_OPTIMIZE QMAKE_CXXFLAGS_RELEASE -= $$QMAKE_CFLAGS_OPTIMIZE QMAKE_CFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE_FULL QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE_FULL } } optimize_debug { QMAKE_CFLAGS_DEBUG += $$QMAKE_CFLAGS_OPTIMIZE_DEBUG QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_OPTIMIZE_DEBUG } debug { QMAKE_CFLAGS += $$QMAKE_CFLAGS_DEBUG QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_DEBUG QMAKE_LFLAGS += $$QMAKE_LFLAGS_DEBUG QMAKE_LIBFLAGS += $$QMAKE_LIBFLAGS_DEBUG DEFINES += $$DEFINES_DEBUG } else { QMAKE_CFLAGS += $$QMAKE_CFLAGS_RELEASE QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_RELEASE QMAKE_LFLAGS += $$QMAKE_LFLAGS_RELEASE QMAKE_LIBFLAGS += $$QMAKE_LIBFLAGS_RELEASE DEFINES += $$DEFINES_RELEASE } stack_protector_strong { QMAKE_CFLAGS += $$QMAKE_CFLAGS_STACK_PROTECTOR_STRONG QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_STACK_PROTECTOR_STRONG } # disable special linker flags for host builds (no proper test for host support yet) !host_build|!cross_compile { use_bfd_linker: QMAKE_LFLAGS += $$QMAKE_LFLAGS_USE_BFD use_gold_linker: QMAKE_LFLAGS += $$QMAKE_LFLAGS_USE_GOLD use_lld_linker: QMAKE_LFLAGS += $$QMAKE_LFLAGS_USE_LLD enable_new_dtags: QMAKE_LFLAGS += $$QMAKE_LFLAGS_NEW_DTAGS enable_gdb_index: QMAKE_LFLAGS += $$QMAKE_LFLAGS_GDB_INDEX } dll:win32: QMAKE_LFLAGS += $$QMAKE_LFLAGS_DLL static:mac: QMAKE_LFLAGS += $$QMAKE_LFLAGS_STATIC_LIB staticlib:unix { QMAKE_CFLAGS += $$QMAKE_CFLAGS_STATIC_LIB QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_STATIC_LIB } defined(WINDOWS_TARGET_PLATFORM_VERSION, var):isEmpty(WINDOWS_TARGET_PLATFORM_MIN_VERSION) { WINDOWS_TARGET_PLATFORM_MIN_VERSION = $$WINDOWS_TARGET_PLATFORM_VERSION } incredibuild_xge { CONFIG -= incredibuild_xge CONFIG = incredibuild_xge $$CONFIG } silent { # Ensure that we process silent.prf last, as it will mangle QMAKE_CXX # and friends in a way that some of the other features (sdk.prf and # simd.prf eg) do not handle. CONFIG -= silent CONFIG = silent $$CONFIG } breakpad { load(resolve_target) DEBUGFILENAME = $$shell_quote($$system_path($$QMAKE_RESOLVED_TARGET)) PROJECTPATH = $$shell_quote($$system_path($$OUT_PWD)) !isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK = $$QMAKE_POST_LINK$$escape_expand(\\n\\t) QMAKE_POST_LINK = $$QMAKE_POST_LINK$$quote($${QT_BREAKPAD_ROOT_PATH}$${QMAKE_DIR_SEP}qtbreakpadsymbols $$DEBUGFILENAME $$PROJECTPATH) !isEmpty(QMAKE_STRIP):QMAKE_POST_LINK = $$QMAKE_POST_LINK$$escape_expand(\\n\\t)$$quote($$QMAKE_STRIP $$DEBUGFILENAME) } c++17: CONFIG += c++1z c++20: CONFIG += c++2a c++latest: CONFIG *= c++2a c++1z c++14 c++11 !c++1z:!c++2a { # Qt requires C++17 QT_COMPILER_STDCXX_no_L = $$replace(QT_COMPILER_STDCXX, "L$", "") !greaterThan(QT_COMPILER_STDCXX_no_L, 201402): CONFIG += c++1z } c++1z|c++2a { # Disable special compiler flags for host builds !host_build|!cross_compile { c++2a: cxxstd = CXX2A else: cxxstd = CXX1Z } else { # Fall back to c++17, because C++17 is required everywhere, # including host builds cxxstd = CXX1Z } # Check if we should disable compiler extensions or not isEmpty(QMAKE_CXXFLAGS_GNU$$cxxstd) { strict_c++: QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_STRICTCXX } else { !strict_c++|isEmpty(QMAKE_CXXFLAGS_$$cxxstd): cxxstd = GNU$$cxxstd } QMAKE_CXXFLAGS += $$eval(QMAKE_CXXFLAGS_$$cxxstd) QMAKE_LFLAGS += $$eval(QMAKE_LFLAGS_$$cxxstd) unset(cxxstd) } c99|c11|c17|c18 { c17|c18: cstd = C17 c11: cstd = C11 else: cstd = C99 !isEmpty(QMAKE_CFLAGS_GNU$$cstd) { !strict_c|isEmpty(QMAKE_CFLAGS_$$cstd): cstd = GNU$$cstd } QMAKE_CFLAGS += $$eval(QMAKE_CFLAGS_$$cstd) unset(cstd) } !no_utf8_source { QMAKE_CFLAGS += $$QMAKE_CFLAGS_UTF8_SOURCE QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_UTF8_SOURCE } !precompile_header: SOURCES += $$NO_PCH_SOURCES