1# Qt kernel library base module 2 3HEADERS += \ 4 global/qglobal.h \ 5 global/qoperatingsystemversion.h \ 6 global/qoperatingsystemversion_p.h \ 7 global/qsystemdetection.h \ 8 global/qcompilerdetection.h \ 9 global/qprocessordetection.h \ 10 global/qmemory_p.h \ 11 global/qnamespace.h \ 12 global/qendian.h \ 13 global/qendian_p.h \ 14 global/qnumeric_p.h \ 15 global/qnumeric.h \ 16 global/qfloat16.h \ 17 global/qglobalstatic.h \ 18 global/qlibraryinfo.h \ 19 global/qlogging.h \ 20 global/qtypeinfo.h \ 21 global/qsysinfo.h \ 22 global/qisenum.h \ 23 global/qtypetraits.h \ 24 global/qflags.h \ 25 global/qrandom.h \ 26 global/qrandom_p.h \ 27 global/qhooks_p.h \ 28 global/qversiontagging.h 29 30SOURCES += \ 31 global/archdetect.cpp \ 32 global/qendian.cpp \ 33 global/qglobal.cpp \ 34 global/qlibraryinfo.cpp \ 35 global/qmalloc.cpp \ 36 global/qnumeric.cpp \ 37 global/qfloat16.cpp \ 38 global/qoperatingsystemversion.cpp \ 39 global/qlogging.cpp \ 40 global/qrandom.cpp \ 41 global/qhooks.cpp 42 43# To get listed in IDEs 44false: SOURCES += \ 45 global/qfloat16tables.cpp 46 47# Only add global/qfloat16_f16c.c if qfloat16.cpp can't #include it. 48# Any compiler: if it is already generating F16C code, let qfloat16.cpp do it 49# Clang: ICE if not generating F16C code, so use qfloat16_f16c.c 50# ICC: miscompiles if not generating F16C code, so use qfloat16_f16c.c 51# GCC: if it can use F16C intrinsics, let qfloat16.cpp do it 52# MSVC: if it is already generating AVX code, let qfloat16.cpp do it 53# MSVC: otherwise, it generates poorly-performing code, so use qfloat16_f16c.c 54contains(QT_CPU_FEATURES.$$QT_ARCH, f16c): \ 55 f16c_cxx = true 56else: clang|intel_icl|intel_icc: \ 57 f16c_cxx = false 58else: gcc:f16c:x86SimdAlways: \ 59 f16c_cxx = true 60else: msvc:contains(QT_CPU_FEATURES.$$QT_ARCH, avx): \ 61 f16c_cxx = true 62else: \ 63 f16c_cxx = false 64$$f16c_cxx: DEFINES += QFLOAT16_INCLUDE_FAST 65else: F16C_SOURCES += global/qfloat16_f16c.c 66unset(f16c_cxx) 67 68VERSIONTAGGING_SOURCES = global/qversiontagging.cpp 69 70darwin: SOURCES += global/qoperatingsystemversion_darwin.mm 71win32 { 72 SOURCES += global/qoperatingsystemversion_win.cpp 73 HEADERS += global/qoperatingsystemversion_win_p.h 74} 75 76# qlibraryinfo.cpp includes qconfig.cpp 77INCLUDEPATH += $$QT_BUILD_TREE/src/corelib/global 78 79# Only used on platforms with CONFIG += precompile_header 80PRECOMPILED_HEADER = global/qt_pch.h 81 82# qlogging.cpp uses backtrace(3), which is in a separate library on the BSDs. 83LIBS_PRIVATE += $$QMAKE_LIBS_EXECINFO 84 85if(linux*|hurd*):!cross_compile:!static:!*-armcc* { 86 QMAKE_LFLAGS += -Wl,-e,qt_core_boilerplate 87 prog=$$quote(if (/program interpreter: (.*)]/) { print $1; }) 88 DEFINES += ELF_INTERPRETER=\\\"$$system(LC_ALL=C readelf -l /bin/ls | perl -n -e \'$$prog\')\\\" 89} 90 91linux:!static { 92 precompile_header { 93 # we'll get an error if we just use SOURCES += 94 no_pch_assembler.commands = $$QMAKE_CC -c $(CFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} 95 no_pch_assembler.dependency_type = TYPE_C 96 no_pch_assembler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} 97 no_pch_assembler.input = NO_PCH_ASM 98 no_pch_assembler.name = compiling[no_pch] ${QMAKE_FILE_IN} 99 silent: no_pch_assembler.commands = @echo compiling[no_pch] ${QMAKE_FILE_IN} && $$no_pch_assembler.commands 100 QMAKE_EXTRA_COMPILERS += no_pch_assembler 101 NO_PCH_ASM += global/minimum-linux.S 102 } else { 103 SOURCES += global/minimum-linux.S 104 } 105 HEADERS += global/minimum-linux_p.h 106} 107 108qtConfig(slog2): \ 109 LIBS_PRIVATE += -lslog2 110 111qtConfig(journald): \ 112 QMAKE_USE_PRIVATE += journald 113 114gcc:ltcg { 115 versiontagging_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) $(INCPATH) 116 117 # Disable LTO, as the symbols disappear somehow under GCC 118 versiontagging_compiler.commands += -fno-lto 119 120 versiontagging_compiler.commands += -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} 121 versiontagging_compiler.dependency_type = TYPE_C 122 versiontagging_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} 123 versiontagging_compiler.input = VERSIONTAGGING_SOURCES 124 versiontagging_compiler.variable_out = OBJECTS 125 versiontagging_compiler.name = compiling[versiontagging] ${QMAKE_FILE_IN} 126 silent: versiontagging_compiler.commands = @echo compiling[versiontagging] ${QMAKE_FILE_IN} && $$versiontagging_compiler.commands 127 QMAKE_EXTRA_COMPILERS += versiontagging_compiler 128} else { 129 SOURCES += $$VERSIONTAGGING_SOURCES 130} 131