From 5d92c79b8e9a2d10ae23e022c1aff7de9e87ed16 Mon Sep 17 00:00:00 2001 From: James Page Date: Tue, 6 Jun 2017 15:01:40 +0100 Subject: [PATCH] build: misc fixes for cmake build on i386 Scope SIMD CPU flag detection base on target architecture, resolving build failures in gf-complete on i386; this is inline with the previous autotools based feature detection. Only compile crypto/isa-l if yasm 64 bit complier is found, effectively limiting scope to x86_64. Signed-off-by: James Page --- cmake/modules/SIMDExt.cmake | 60 ++++++++++++++++++++----------------- src/CMakeLists.txt | 4 +-- 2 files changed, 34 insertions(+), 30 deletions(-) diff --git a/cmake/modules/SIMDExt.cmake b/cmake/modules/SIMDExt.cmake index 43d039e10c8a..5330835aa162 100644 --- a/cmake/modules/SIMDExt.cmake +++ b/cmake/modules/SIMDExt.cmake @@ -75,34 +75,38 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm|ARM") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i386|i686|amd64|x86_64|AMD64") set(HAVE_INTEL 1) - CHECK_C_COMPILER_FLAG(-msse HAVE_INTEL_SSE) - if(HAVE_INTEL_SSE) - set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse") - endif() - CHECK_C_COMPILER_FLAG(-msse2 HAVE_INTEL_SSE2) - if(HAVE_INTEL_SSE2) - set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse2") - endif() - CHECK_C_COMPILER_FLAG(-msse3 HAVE_INTEL_SSE3) - if(HAVE_INTEL_SSE3) - set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse3") - endif() - CHECK_C_COMPILER_FLAG(-mssse3 HAVE_INTEL_SSSE3) - if(HAVE_INTEL_SSSE3) - set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mssse3") - endif() - CHECK_C_COMPILER_FLAG(-mpclmul HAVE_INTEL_PCLMUL) - if(HAVE_INTEL_PCLMUL) - set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mpclmul") - endif() - CHECK_C_COMPILER_FLAG(-msse4.1 HAVE_INTEL_SSE4_1) - if(HAVE_INTEL_SSE4_1) - set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse4.1") - endif() - CHECK_C_COMPILER_FLAG(-msse4.2 HAVE_INTEL_SSE4_2) - if(HAVE_INTEL_SSE4_2) - set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse4.2") - endif() + if(CMAKE_SYSTEM_PROCESSOR MATCHES "i686|amd64|x86_64|AMD64") + CHECK_C_COMPILER_FLAG(-msse HAVE_INTEL_SSE) + if(HAVE_INTEL_SSE) + set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse") + endif() + if(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64|x86_64|AMD64") + CHECK_C_COMPILER_FLAG(-msse2 HAVE_INTEL_SSE2) + if(HAVE_INTEL_SSE2) + set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse2") + endif() + CHECK_C_COMPILER_FLAG(-msse3 HAVE_INTEL_SSE3) + if(HAVE_INTEL_SSE3) + set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse3") + endif() + CHECK_C_COMPILER_FLAG(-mssse3 HAVE_INTEL_SSSE3) + if(HAVE_INTEL_SSSE3) + set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mssse3") + endif() + CHECK_C_COMPILER_FLAG(-mpclmul HAVE_INTEL_PCLMUL) + if(HAVE_INTEL_PCLMUL) + set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -mpclmul") + endif() + CHECK_C_COMPILER_FLAG(-msse4.1 HAVE_INTEL_SSE4_1) + if(HAVE_INTEL_SSE4_1) + set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse4.1") + endif() + CHECK_C_COMPILER_FLAG(-msse4.2 HAVE_INTEL_SSE4_2) + if(HAVE_INTEL_SSE4_2) + set(SIMD_COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -msse4.2") + endif() + endif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64|x86_64|AMD64") + endif(CMAKE_SYSTEM_PROCESSOR MATCHES "i686|amd64|x86_64|AMD64") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(powerpc|ppc)64le") set(HAVE_PPC64LE 1) message(STATUS " we are ppc64le") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3483a08a39d8..30c3381042e7 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -898,9 +898,9 @@ if(WITH_TESTS) DESTINATION bin) endif(WITH_TESTS) -if(HAVE_INTEL) +if(HAVE_INTEL AND HAVE_BETTER_YASM_ELF64) add_subdirectory(crypto/isa-l) -endif(HAVE_INTEL) +endif(HAVE_INTEL AND HAVE_BETTER_YASM_ELF64) if(WITH_TESTS) -- 2.47.3