[cmake] move intrinsic support to file
Create DetectIntrinsicSupport.cmake to unify intrinsic detection and use
This commit is contained in:
parent
8495c79dd0
commit
3c41de6382
33
cmake/DetectIntrinsicSupport.cmake
Normal file
33
cmake/DetectIntrinsicSupport.cmake
Normal file
@ -0,0 +1,33 @@
|
||||
include(CheckSymbolExists)
|
||||
|
||||
check_symbol_exists("__i586__" "" X86_i586)
|
||||
check_symbol_exists("__i686__" "" X86_i686)
|
||||
check_symbol_exists("__X86__" "" X86_X86)
|
||||
check_symbol_exists("_X86_" "" X86_X862)
|
||||
check_symbol_exists("__I86__" "" X86_I86)
|
||||
check_symbol_exists("__IA32__" "" X86_IA32)
|
||||
check_symbol_exists("_M_IX86" "" X86_M_IX86)
|
||||
check_symbol_exists("__amd64" "" X86_AMD64)
|
||||
check_symbol_exists("__amd64__" "" X86_AMD642)
|
||||
check_symbol_exists("__x86_64" "" X86_X86_64)
|
||||
check_symbol_exists("__x86_64__" "" X86_X86_642)
|
||||
check_symbol_exists("_M_X64" "" X86_X64)
|
||||
check_symbol_exists("__ia64" "" X86_IA64)
|
||||
check_symbol_exists("__ia64__" "" X86_IA642)
|
||||
check_symbol_exists("_M_IA64" "" X86_M_IA64)
|
||||
check_symbol_exists("_M_ARM64" "" MSVC_ARM64)
|
||||
check_symbol_exists("__aarch64__" "" ARCH_ARM64)
|
||||
|
||||
if (X86_i586 OR X86_i686 OR X86_X86 OR X86_X862 OR X86_I86 OR X86_IA32 OR
|
||||
X86_M_IX86 OR X86_AMD64 OR X86_AMD642 OR X86_X86_64 OR X86_X86_642 OR
|
||||
X86_X64 OR X86_IA64 OR X86_IA642 OR X86_M_IA64)
|
||||
set(HAVE_SSE_OR_AVX ON CACHE INTERNAL "internal")
|
||||
else()
|
||||
set(HAVE_SSE_OR_AVX OFF CACHE INTERNAL "internal")
|
||||
endif()
|
||||
|
||||
if (MSVC_ARM64 OR ARCH_ARM64)
|
||||
set(HAVE_NEON ON CACHE INTERNAL "internal")
|
||||
else()
|
||||
set(HAVE_NEON OFF CACHE INTERNAL "internal")
|
||||
endif()
|
@ -60,27 +60,11 @@ list(APPEND CODEC_SRCS ${CODEC_SSE2_SRCS})
|
||||
list(APPEND CODEC_SRCS ${CODEC_NEON_SRCS})
|
||||
|
||||
include(CompilerDetect)
|
||||
include (DetectIntrinsicSupport)
|
||||
|
||||
if(WITH_SSE2)
|
||||
check_symbol_exists("__i586__" "" X86_i586)
|
||||
check_symbol_exists("__i686__" "" X86_i686)
|
||||
check_symbol_exists("__X86__" "" X86_X86)
|
||||
check_symbol_exists("_X86_" "" X86_X862)
|
||||
check_symbol_exists("__I86__" "" X86_I86)
|
||||
check_symbol_exists("__IA32__" "" X86_IA32)
|
||||
check_symbol_exists("_M_IX86" "" X86_M_IX86)
|
||||
check_symbol_exists("__amd64" "" X86_AMD64)
|
||||
check_symbol_exists("__amd64__" "" X86_AMD642)
|
||||
check_symbol_exists("__x86_64" "" X86_X86_64)
|
||||
check_symbol_exists("__x86_64__" "" X86_X86_642)
|
||||
check_symbol_exists("_M_X64" "" X86_X64)
|
||||
check_symbol_exists("__ia64" "" X86_IA64)
|
||||
check_symbol_exists("__ia64__" "" X86_IA642)
|
||||
check_symbol_exists("_M_IA64" "" X86_M_IA64)
|
||||
|
||||
if (X86_i586 OR X86_i686 OR X86_X86 OR X86_X862 OR X86_I86 OR X86_IA32 OR
|
||||
X86_M_IX86 OR X86_AMD64 OR X86_AMD642 OR X86_X86_64 OR X86_X86_642 OR
|
||||
X86_X64 OR X86_IA64 OR X86_IA642 OR X86_M_IA64)
|
||||
if (HAVE_SSE_OR_AVC)
|
||||
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
|
||||
if (CODEC_SSE2_SRCS)
|
||||
set_source_files_properties(${CODEC_SSE2_SRCS} PROPERTIES COMPILE_FLAGS "-msse2" )
|
||||
@ -95,10 +79,7 @@ if(WITH_SSE2)
|
||||
endif()
|
||||
endif()
|
||||
if(WITH_NEON)
|
||||
check_symbol_exists("_M_ARM64" "" MSVC_ARM64)
|
||||
check_symbol_exists("__aarch64__" "" ARCH_ARM64)
|
||||
|
||||
if (MSVC_ARM64 OR ARCH_ARM64)
|
||||
if (HAVE_NEON)
|
||||
if (CODEC_SSE2_SRCS)
|
||||
set_source_files_properties(${CODEC_NEON_SRCS} PROPERTIES COMPILE_FLAGS "-mfpu=neon" )
|
||||
endif()
|
||||
|
@ -87,7 +87,9 @@ add_library(freerdp-primitives OBJECT
|
||||
)
|
||||
|
||||
include(CompilerDetect)
|
||||
include (DetectIntrinsicSupport)
|
||||
if(WITH_SSE2)
|
||||
if (HAVE_SSE_OR_AVX)
|
||||
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
|
||||
if(PRIMITIVES_SSE2_SRCS)
|
||||
set_source_files_properties(${PRIMITIVES_SSE2_SRCS} PROPERTIES COMPILE_FLAGS "-msse2" )
|
||||
@ -111,14 +113,17 @@ if(WITH_SSE2)
|
||||
|
||||
if(MSVC)
|
||||
set_source_files_properties(${PRIMITIVES_OPT_SRCS} PROPERTIES COMPILE_FLAGS "/arch:SSE2")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
elseif(WITH_NEON)
|
||||
if (HAVE_NEON)
|
||||
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
|
||||
if (NOT MSVC_ARM64 AND NOT ARCH_ARM64)
|
||||
set_source_files_properties(${PRIMITIVES_OPT_SRCS} PROPERTIES COMPILE_FLAGS "-mfpu=neon")
|
||||
endif()
|
||||
endif()
|
||||
# TODO: Add MSVC equivalent
|
||||
endif()
|
||||
endif()
|
||||
|
||||
freerdp_object_library_add(freerdp-primitives)
|
||||
|
Loading…
Reference in New Issue
Block a user