From 019b97fc4fc84a9e81c66a659f5d22df2e0b85d6 Mon Sep 17 00:00:00 2001 From: Michael Goddard Date: Tue, 24 Jul 2012 12:49:14 +1000 Subject: Add a .prf file for SIMD qmake variables. So you can get AVX/NEON etc source compiled by assigning to the corresponding variable (e.g. AVX_SOURCES). This was previously used in just the gui module, but other external modules might like it too. Change-Id: I51aa64760c469c7dc4c71e6f089c2ddef4f509c5 Reviewed-by: Thiago Macieira Reviewed-by: Oswald Buddenhagen --- mkspecs/features/simd.prf | 273 ++++++++++++++++++++++++++++++++++++++++++++++ src/gui/gui.pro | 142 +----------------------- 2 files changed, 275 insertions(+), 140 deletions(-) create mode 100644 mkspecs/features/simd.prf diff --git a/mkspecs/features/simd.prf b/mkspecs/features/simd.prf new file mode 100644 index 0000000000..afe9871bb1 --- /dev/null +++ b/mkspecs/features/simd.prf @@ -0,0 +1,273 @@ +# Get the SIMD flags +load(qt_build_config) + +# +# Set up compilers for SIMD (SSE/AVX, NEON etc) +# +*-g++*|linux-icc*|*-clang*|*-qcc* { + sse2 { + HEADERS += $$SSE2_HEADERS + + sse2_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) + !contains(QT_CPU_FEATURES, sse2):sse2_compiler.commands += $$QMAKE_CFLAGS_SSE2 + sse2_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + sse2_compiler.dependency_type = TYPE_C + sse2_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + sse2_compiler.input = SSE2_SOURCES + sse2_compiler.variable_out = OBJECTS + sse2_compiler.name = compiling[sse2] ${QMAKE_FILE_IN} + silent:sse2_compiler.commands = @echo compiling[sse2] ${QMAKE_FILE_IN} && $$sse2_compiler.commands + QMAKE_EXTRA_COMPILERS += sse2_compiler + } + sse3 { + HEADERS += $$SSE3_HEADERS + + sse3_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) + !contains(QT_CPU_FEATURES, sse3):sse3_compiler.commands += $$QMAKE_CFLAGS_SSE3 + sse3_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + sse3_compiler.dependency_type = TYPE_C + sse3_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + sse3_compiler.input = SSE3_SOURCES + sse3_compiler.variable_out = OBJECTS + sse3_compiler.name = compiling[sse3] ${QMAKE_FILE_IN} + silent:sse3_compiler.commands = @echo compiling[sse3] ${QMAKE_FILE_IN} && $$sse3_compiler.commands + QMAKE_EXTRA_COMPILERS += sse3_compiler + } + ssse3 { + HEADERS += $$SSSE3_HEADERS + + ssse3_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) + !contains(QT_CPU_FEATURES, ssse3):ssse3_compiler.commands += $$QMAKE_CFLAGS_SSSE3 + ssse3_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + ssse3_compiler.dependency_type = TYPE_C + ssse3_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + ssse3_compiler.input = SSSE3_SOURCES + ssse3_compiler.variable_out = OBJECTS + ssse3_compiler.name = compiling[ssse3] ${QMAKE_FILE_IN} + silent:ssse3_compiler.commands = @echo compiling[ssse3] ${QMAKE_FILE_IN} && $$ssse3_compiler.commands + QMAKE_EXTRA_COMPILERS += ssse3_compiler + } + sse4_1 { + HEADERS += $$SSE4_1_HEADERS + + sse4_1_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) + !contains(QT_CPU_FEATURES, sse4_1):sse4_1_compiler.commands += $$QMAKE_CFLAGS_SSE4_1 + sse4_1_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + sse4_1_compiler.dependency_type = TYPE_C + sse4_1_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + sse4_1_compiler.input = SSE4_1_SOURCES + sse4_1_compiler.variable_out = OBJECTS + sse4_1_compiler.name = compiling[sse4_1] ${QMAKE_FILE_IN} + silent:sse4_1_compiler.commands = @echo compiling[sse4_1] ${QMAKE_FILE_IN} && $$sse4_1_compiler.commands + QMAKE_EXTRA_COMPILERS += sse4_1_compiler + } + sse4_2 { + HEADERS += $$SSE4_2_HEADERS + + sse4_2_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) + !contains(QT_CPU_FEATURES, sse4_2):sse4_2_compiler.commands += $$QMAKE_CFLAGS_SSE4_2 + sse4_2_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + sse4_2_compiler.dependency_type = TYPE_C + sse4_2_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + sse4_2_compiler.input = SSE4_2_SOURCES + sse4_2_compiler.variable_out = OBJECTS + sse4_2_compiler.name = compiling[sse4_2] ${QMAKE_FILE_IN} + silent:sse4_2_compiler.commands = @echo compiling[sse4_2] ${QMAKE_FILE_IN} && $$sse4_2_compiler.commands + QMAKE_EXTRA_COMPILERS += sse4_2_compiler + } + avx { + HEADERS += $$AVX_HEADERS + + avx_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) + !contains(QT_CPU_FEATURES, avx):avx_compiler.commands += $$QMAKE_CFLAGS_AVX + avx_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + avx_compiler.dependency_type = TYPE_C + avx_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + avx_compiler.input = AVX_SOURCES + avx_compiler.variable_out = OBJECTS + avx_compiler.name = compiling[avx] ${QMAKE_FILE_IN} + silent:avx_compiler.commands = @echo compiling[avx] ${QMAKE_FILE_IN} && $$avx_compiler.commands + QMAKE_EXTRA_COMPILERS += avx_compiler + } + avx2 { + HEADERS += $$AVX2_HEADERS + + avx2_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) + !contains(QT_CPU_FEATURES, avx2):avx2_compiler.commands += $$QMAKE_CFLAGS_AVX2 + avx2_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + avx2_compiler.dependency_type = TYPE_C + avx2_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + avx2_compiler.input = AVX2_SOURCES + avx2_compiler.variable_out = OBJECTS + avx2_compiler.name = compiling[avx2] ${QMAKE_FILE_IN} + silent:avx2_compiler.commands = @echo compiling[avx2] ${QMAKE_FILE_IN} && $$avx2_compiler.commands + QMAKE_EXTRA_COMPILERS += avx2_compiler + } + neon { + HEADERS += $$NEON_HEADERS + + neon_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) + !contains(QT_CPU_FEATURES, neon):neon_compiler.commands += $$QMAKE_CFLAGS_NEON + neon_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + neon_compiler.dependency_type = TYPE_C + neon_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + neon_compiler.input = NEON_ASM NEON_SOURCES + neon_compiler.variable_out = OBJECTS + neon_compiler.name = compiling[neon] ${QMAKE_FILE_IN} + silent:neon_compiler.commands = @echo compiling[neon] ${QMAKE_FILE_IN} && $$neon_compiler.commands + QMAKE_EXTRA_COMPILERS += neon_compiler + } + iwmmxt { + HEADERS += $$IWMMXT_HEADERS + + iwmmxt_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) + iwmmxt_compiler.commands += $$QMAKE_CFLAGS_IWMMXT + iwmmxt_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + iwmmxt_compiler.dependency_type = TYPE_C + iwmmxt_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + iwmmxt_compiler.input = IWMMXT_SOURCES + iwmmxt_compiler.variable_out = OBJECTS + iwmmxt_compiler.name = compiling[iwmmxt] ${QMAKE_FILE_IN} + silent:iwmmxt_compiler.commands = @echo compiling[iwmmxt] ${QMAKE_FILE_IN} && $$iwmmxt_compiler.commands + QMAKE_EXTRA_COMPILERS += iwmmxt_compiler + } + mips_dsp { + HEADERS += $$MIPS_DSP_HEADERS + + mips_dsp_compiler.commands = $$QMAKE_CXX -c + mips_dsp_compiler.commands += $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + mips_dsp_compiler.dependency_type = TYPE_C + mips_dsp_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + mips_dsp_compiler.input = MIPS_DSP_ASM MIPS_DSP_SOURCES + mips_dsp_compiler.variable_out = OBJECTS + mips_dsp_compiler.name = compiling[mips_dsp] ${QMAKE_FILE_IN} + silent:mips_dsp_compiler.commands = @echo compiling[mips_dsp] ${QMAKE_FILE_IN} && $$mips_dsp_compiler.commands + QMAKE_EXTRA_COMPILERS += mips_dsp_compiler + } + mips_dspr2 { + HEADERS += $$MIPS_DSP_HEADERS + + mips_dspr2_compiler.commands = $$QMAKE_CXX -c + mips_dspr2_compiler.commands += $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + mips_dspr2_compiler.dependency_type = TYPE_C + mips_dspr2_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + mips_dspr2_compiler.input = MIPS_DSPR2_ASM + mips_dspr2_compiler.variable_out = OBJECTS + mips_dspr2_compiler.name = compiling[mips_dspr2] ${QMAKE_FILE_IN} + silent:mips_dspr2_compiler.commands = @echo compiling[mips_dspr2] ${QMAKE_FILE_IN} && $$mips_dspr2_compiler.commands + QMAKE_EXTRA_COMPILERS += mips_dspr2_compiler + } +} else:win32-msvc* { + sse2 { + HEADERS += $$SSE2_HEADERS + + sse2_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) + !contains(QT_CPU_FEATURES, sse2):sse2_compiler.commands += $$QMAKE_CFLAGS_SSE2 + sse2_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT} + sse2_compiler.dependency_type = TYPE_C + sse2_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + sse2_compiler.input = SSE2_SOURCES + sse2_compiler.variable_out = OBJECTS + sse2_compiler.name = compiling[sse2] ${QMAKE_FILE_IN} + silent:sse2_compiler.commands = @echo compiling[sse2] ${QMAKE_FILE_IN} && $$sse2_compiler.commands + QMAKE_EXTRA_COMPILERS += sse2_compiler + } + # MSVC doesn't have an option for anything higher than SSE2 specifically, so check if SSE2 is + # already enabled instead (this is for code generation - intrinsics should still be supported) + sse3 { + HEADERS += $$SSE3_HEADERS + + sse3_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) + !contains(QT_CPU_FEATURES, sse2):sse3_compiler.commands += $$QMAKE_CFLAGS_SSE3 + sse3_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT} + sse3_compiler.dependency_type = TYPE_C + sse3_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + sse3_compiler.input = SSE3_SOURCES + sse3_compiler.variable_out = OBJECTS + sse3_compiler.name = compiling[sse3] ${QMAKE_FILE_IN} + silent:sse3_compiler.commands = @echo compiling[sse3] ${QMAKE_FILE_IN} && $$sse3_compiler.commands + QMAKE_EXTRA_COMPILERS += sse3_compiler + } + ssse3 { + HEADERS += $$SSSE3_HEADERS + + ssse3_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) + !contains(QT_CPU_FEATURES, sse2):ssse3_compiler.commands += $$QMAKE_CFLAGS_SSSE3 + ssse3_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT} + ssse3_compiler.dependency_type = TYPE_C + ssse3_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + ssse3_compiler.input = SSSE3_SOURCES + ssse3_compiler.variable_out = OBJECTS + ssse3_compiler.name = compiling[ssse3] ${QMAKE_FILE_IN} + silent:ssse3_compiler.commands = @echo compiling[ssse3] ${QMAKE_FILE_IN} && $$ssse3_compiler.commands + QMAKE_EXTRA_COMPILERS += ssse3_compiler + } + sse4_1 { + HEADERS += $$SSE4_1_HEADERS + + sse4_1_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) + !contains(QT_CPU_FEATURES, sse2):sse4_1_compiler.commands += $$QMAKE_CFLAGS_SSE4_1 + sse4_1_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT} + sse4_1_compiler.dependency_type = TYPE_C + sse4_1_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + sse4_1_compiler.input = SSE4_1_SOURCES + sse4_1_compiler.variable_out = OBJECTS + sse4_1_compiler.name = compiling[sse4_1] ${QMAKE_FILE_IN} + silent:sse4_1_compiler.commands = @echo compiling[sse4_1] ${QMAKE_FILE_IN} && $$sse4_1_compiler.commands + QMAKE_EXTRA_COMPILERS += sse4_1_compiler + } + sse4_2 { + HEADERS += $$SSE4_2_HEADERS + + sse4_2_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) + !contains(QT_CPU_FEATURES, sse2):sse4_2_compiler.commands += $$QMAKE_CFLAGS_SSE4_2 + sse4_2_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT} + sse4_2_compiler.dependency_type = TYPE_C + sse4_2_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + sse4_2_compiler.input = SSE4_2_SOURCES + sse4_2_compiler.variable_out = OBJECTS + sse4_2_compiler.name = compiling[sse4_2] ${QMAKE_FILE_IN} + silent:sse4_2_compiler.commands = @echo compiling[sse4_2] ${QMAKE_FILE_IN} && $$sse4_2_compiler.commands + QMAKE_EXTRA_COMPILERS += sse4_2_compiler + } + # Similarly for AVX2 - just uses AVX + avx { + HEADERS += $$AVX_HEADERS + + avx_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) -D_M_AVX + !contains(QT_CPU_FEATURES, avx):avx_compiler.commands += $$QMAKE_CFLAGS_AVX + avx_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT} + avx_compiler.dependency_type = TYPE_C + avx_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + avx_compiler.input = AVX_SOURCES + avx_compiler.variable_out = OBJECTS + avx_compiler.name = compiling[avx] ${QMAKE_FILE_IN} + silent:avx_compiler.commands = @echo compiling[avx] ${QMAKE_FILE_IN} && $$avx_compiler.commands + QMAKE_EXTRA_COMPILERS += avx_compiler + } + avx2 { + HEADERS += $$AVX2_HEADERS + + avx2_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) -D_M_AVX2 + !contains(QT_CPU_FEATURES, avx):avx2_compiler.commands += $$QMAKE_CFLAGS_AVX2 + avx2_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT} + avx2_compiler.dependency_type = TYPE_C + avx2_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + avx2_compiler.input = AVX2_SOURCES + avx2_compiler.variable_out = OBJECTS + avx2_compiler.name = compiling[avx2] ${QMAKE_FILE_IN} + silent:avx2_compiler.commands = @echo compiling[avx2] ${QMAKE_FILE_IN} && $$avx2_compiler.commands + QMAKE_EXTRA_COMPILERS += avx2_compiler + } +} else:false { + # This allows an IDE like Creator to know that these files are part of the sources + SOURCES += \ + $$SSE2_SOURCES $$SSE3_SOURCES $$SSSE3_SOURCES $$SSE4_1_SOURCES $$SSE4_2_SOURCES \ + $$AVX_SOURCES $$AVX2_SOURCES \ + $$NEON_SOURCES $$NEON_ASM \ + $$IWMMXT_SOURCES \ + $$MIPS_DSP_SOURCES $$MIPS_DSP_ASM $$MIPS_DSPR2_ASM + + # Headers are already done in the above sections. +} + diff --git a/src/gui/gui.pro b/src/gui/gui.pro index bdd70012a7..7f3e069aba 100644 --- a/src/gui/gui.pro +++ b/src/gui/gui.pro @@ -16,6 +16,8 @@ testcocoon { load(testcocoon) } +CONFIG += simd + QMAKE_DOCS = $$PWD/doc/qtgui.qdocconf QMAKE_DOCS_INDEX = ../../doc @@ -32,143 +34,3 @@ include(itemmodels/itemmodels.pri) QMAKE_LIBS += $$QMAKE_LIBS_GUI -*-g++*|linux-icc*|*-clang*|*-qcc* { - sse2 { - sse2_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) - !contains(QT_CPU_FEATURES, sse2):sse2_compiler.commands += $$QMAKE_CFLAGS_SSE2 - sse2_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} - sse2_compiler.dependency_type = TYPE_C - sse2_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} - sse2_compiler.input = SSE2_SOURCES - sse2_compiler.variable_out = OBJECTS - sse2_compiler.name = compiling[sse2] ${QMAKE_FILE_IN} - silent:sse2_compiler.commands = @echo compiling[sse2] ${QMAKE_FILE_IN} && $$sse2_compiler.commands - QMAKE_EXTRA_COMPILERS += sse2_compiler - } - ssse3 { - ssse3_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) - !contains(QT_CPU_FEATURES, ssse3):ssse3_compiler.commands += $$QMAKE_CFLAGS_SSSE3 - ssse3_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} - ssse3_compiler.dependency_type = TYPE_C - ssse3_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} - ssse3_compiler.input = SSSE3_SOURCES - ssse3_compiler.variable_out = OBJECTS - ssse3_compiler.name = compiling[ssse3] ${QMAKE_FILE_IN} - silent:ssse3_compiler.commands = @echo compiling[ssse3] ${QMAKE_FILE_IN} && $$ssse3_compiler.commands - QMAKE_EXTRA_COMPILERS += ssse3_compiler - } - avx { - avx_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) - !contains(QT_CPU_FEATURES, avx):avx_compiler.commands += $$QMAKE_CFLAGS_AVX - avx_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} - avx_compiler.dependency_type = TYPE_C - avx_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} - avx_compiler.input = AVX_SOURCES - avx_compiler.variable_out = OBJECTS - avx_compiler.name = compiling[avx] ${QMAKE_FILE_IN} - silent:avx_compiler.commands = @echo compiling[avx] ${QMAKE_FILE_IN} && $$avx_compiler.commands - QMAKE_EXTRA_COMPILERS += avx_compiler - } - neon { - HEADERS += $$NEON_HEADERS - - DRAWHELPER_NEON_ASM_FILES = $$NEON_ASM - - neon_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) - !contains(QT_CPU_FEATURES, neon):neon_compiler.commands += $$QMAKE_CFLAGS_NEON - neon_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} - neon_compiler.dependency_type = TYPE_C - neon_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} - neon_compiler.input = DRAWHELPER_NEON_ASM_FILES NEON_SOURCES - neon_compiler.variable_out = OBJECTS - neon_compiler.name = compiling[neon] ${QMAKE_FILE_IN} - silent:neon_compiler.commands = @echo compiling[neon] ${QMAKE_FILE_IN} && $$neon_compiler.commands - QMAKE_EXTRA_COMPILERS += neon_compiler - } - iwmmxt { - iwmmxt_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) - iwmmxt_compiler.commands += $$QMAKE_CFLAGS_IWMMXT - iwmmxt_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} - iwmmxt_compiler.dependency_type = TYPE_C - iwmmxt_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} - iwmmxt_compiler.input = IWMMXT_SOURCES - iwmmxt_compiler.variable_out = OBJECTS - iwmmxt_compiler.name = compiling[iwmmxt] ${QMAKE_FILE_IN} - silent:iwmmxt_compiler.commands = @echo compiling[iwmmxt] ${QMAKE_FILE_IN} && $$iwmmxt_compiler.commands - QMAKE_EXTRA_COMPILERS += iwmmxt_compiler - } - mips_dsp { - HEADERS += $$MIPS_DSP_HEADERS - - DRAWHELPER_MIPS_DSP_ASM_FILES = $$MIPS_DSP_ASM - mips_dsp_compiler.commands = $$QMAKE_CXX -c - mips_dsp_compiler.commands += $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} - mips_dsp_compiler.dependency_type = TYPE_C - mips_dsp_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} - mips_dsp_compiler.input = DRAWHELPER_MIPS_DSP_ASM_FILES MIPS_DSP_SOURCES - mips_dsp_compiler.variable_out = OBJECTS - mips_dsp_compiler.name = compiling[mips_dsp] ${QMAKE_FILE_IN} - silent:mips_dsp_compiler.commands = @echo compiling[mips_dsp] ${QMAKE_FILE_IN} && $$mips_dsp_compiler.commands - QMAKE_EXTRA_COMPILERS += mips_dsp_compiler - } - mips_dspr2 { - HEADERS += $$MIPS_DSP_HEADERS - - DRAWHELPER_MIPS_DSPR2_ASM_FILES += $$MIPS_DSPR2_ASM - mips_dspr2_compiler.commands = $$QMAKE_CXX -c - mips_dspr2_compiler.commands += $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} - mips_dspr2_compiler.dependency_type = TYPE_C - mips_dspr2_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} - mips_dspr2_compiler.input = DRAWHELPER_MIPS_DSPR2_ASM_FILES - mips_dspr2_compiler.variable_out = OBJECTS - mips_dspr2_compiler.name = compiling[mips_dspr2] ${QMAKE_FILE_IN} - silent:mips_dspr2_compiler.commands = @echo compiling[mips_dspr2] ${QMAKE_FILE_IN} && $$mips_dspr2_compiler.commands - QMAKE_EXTRA_COMPILERS += mips_dspr2_compiler - } -} else:win32-msvc* { - sse2 { - sse2_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) - !contains(QT_CPU_FEATURES, sse2):sse2_compiler.commands += $$QMAKE_CFLAGS_SSE2 - sse2_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT} - sse2_compiler.dependency_type = TYPE_C - sse2_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} - sse2_compiler.input = SSE2_SOURCES - sse2_compiler.variable_out = OBJECTS - sse2_compiler.name = compiling[sse2] ${QMAKE_FILE_IN} - silent:sse2_compiler.commands = @echo compiling[sse2] ${QMAKE_FILE_IN} && $$sse2_compiler.commands - QMAKE_EXTRA_COMPILERS += sse2_compiler - } - ssse3 { - ssse3_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) - # MSVC doesn't have an option for SSSE3 specifically, so check if SSE2 is - # already enabled instead - !contains(QT_CPU_FEATURES, sse2):ssse3_compiler.commands += $$QMAKE_CFLAGS_SSSE3 - ssse3_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT} - ssse3_compiler.dependency_type = TYPE_C - ssse3_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} - ssse3_compiler.input = SSSE3_SOURCES - ssse3_compiler.variable_out = OBJECTS - ssse3_compiler.name = compiling[ssse3] ${QMAKE_FILE_IN} - silent:ssse3_compiler.commands = @echo compiling[ssse3] ${QMAKE_FILE_IN} && $$ssse3_compiler.commands - QMAKE_EXTRA_COMPILERS += ssse3_compiler - } - avx { - avx_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) -D_M_AVX - !contains(QT_CPU_FEATURES, avx):avx_compiler.commands += $$QMAKE_CFLAGS_AVX - avx_compiler.commands += $(INCPATH) ${QMAKE_FILE_IN} -Fo${QMAKE_FILE_OUT} - avx_compiler.dependency_type = TYPE_C - avx_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} - avx_compiler.input = AVX_SOURCES - avx_compiler.variable_out = OBJECTS - avx_compiler.name = compiling[avx] ${QMAKE_FILE_IN} - silent:avx_compiler.commands = @echo compiling[avx] ${QMAKE_FILE_IN} && $$avx_compiler.commands - QMAKE_EXTRA_COMPILERS += avx_compiler - } -} else:false { - # This allows an IDE like Creator to know that these files are part of the sources - SOURCES += $$SSE2_SOURCES $$SSSE3_SOURCES \ - $$AVX_SOURCES \ - $$NEON_SOURCES $$NEON_ASM \ - $$IWMMXT_SOURCES \ - $$MIPS_DSP_SOURCES $$MIPS_DSP_ASM $$MIPS_DSPR2_ASM -} -- cgit v1.2.3