Fix detection of MMX capabilities on ix86 archs

Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
pull/41/head
Michele Calgaro 9 months ago
parent f5c200ccf0
commit 1a7322da1c
Signed by: MicheleC
GPG Key ID: 2A75B7CA8ADED5CF

@ -20,13 +20,10 @@ project( k3b )
##### include essential cmake modules ########### ##### include essential cmake modules ###########
include( FindPkgConfig ) include( FindPkgConfig )
include( CheckCSourceCompiles )
include( CheckIncludeFile ) include( CheckIncludeFile )
include( CheckLibraryExists ) include( CheckLibraryExists )
include( CheckSymbolExists ) include( CheckSymbolExists )
# EXAMPLE:
# include( CheckTypeSize )
# include( CheckCSourceCompiles )
# include( CheckCXXSourceCompiles )
##### include our cmake modules ################# ##### include our cmake modules #################

@ -243,3 +243,38 @@ if( WITH_LAME )
tde_message_fatal( "lame is requested, but was not found on your system" ) tde_message_fatal( "lame is requested, but was not found on your system" )
endif( ) endif( )
endif( ) endif( )
##### check architecture
if( NOT CMAKE_ARCHITECTURE )
execute_process(
COMMAND ${CMAKE_C_COMPILER} -dumpmachine
OUTPUT_VARIABLE CMAKE_ARCHITECTURE
ERROR_VARIABLE CMAKE_ARCHITECTURE
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE )
set( CMAKE_ARCHITECTURE "${CMAKE_ARCHITECTURE}" CACHE INTERNAL "" FORCE )
message( STATUS "Detected ${CMAKE_ARCHITECTURE} target architecture" )
endif( )
##### check specific architecture dependant support
if( ${CMAKE_ARCHITECTURE} MATCHES "i.86" )
# MMX support
message( STATUS "Performing MMX support test" )
check_c_source_compiles( "
int main() {
#if defined(__GNUC__)
__asm__(\"pxor %mm0, %mm0\");
#else
#error Not gcc on x86/x86_64
#endif
return 0;
}"
HAVE_X86_MMX
)
endif( )

@ -35,3 +35,6 @@
// #cmakedefine HAVE_RESMGR // #cmakedefine HAVE_RESMGR
#cmakedefine HAVE_TAGLIB #cmakedefine HAVE_TAGLIB
// Defined if you have MMX support
#cmakedefine HAVE_X86_MMX 1

@ -21,15 +21,22 @@ link_directories(
${TQT_LIBRARY_DIRS} ${TQT_LIBRARY_DIRS}
) )
##### fastscale (static) ########################
set( fastscale_SRCS scale.cpp )
if( HAVE_X86_MMX )
list( APPEND fastscale_SRCS asm_scale.S )
# Force to use C compiler for asm_scale.S instead of ASM # Force to use C compiler for asm_scale.S instead of ASM
# because contains mixed code - ASM with C definitions # because it contains mixed code - ASM with C definitions
set_source_files_properties( asm_scale.S PROPERTIES LANGUAGE C ) set_source_files_properties( asm_scale.S PROPERTIES LANGUAGE C )
# TODO add assembler flags here (2016-01-14, Fat-Zer) add_compile_options( -DHAVE_X86_MMX )
endif( )
##### fastscale (static) ########################
tde_add_library( fastscale STATIC_PIC AUTOMOC tde_add_library( fastscale STATIC_PIC AUTOMOC
SOURCES scale.cpp asm_scale.S SOURCES ${fastscale_SRCS}
LINK tdecore-shared LINK tdecore-shared
) )

Loading…
Cancel
Save