]> git.proxmox.com Git - ceph.git/blob - ceph/cmake/modules/CheckYasm.cmake
update sources to ceph Nautilus 14.2.1
[ceph.git] / ceph / cmake / modules / CheckYasm.cmake
1 macro(check_yasm_support _object_format _good_result _better_result)
2 execute_process(
3 COMMAND yasm -f "${_object_format}" ${CMAKE_SOURCE_DIR}/src/common/crc32c_intel_fast_asm.s -o /dev/null
4 RESULT_VARIABLE no_yasm
5 OUTPUT_QUIET)
6 if(NOT no_yasm)
7 if(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64|x86_64")
8 set(save_quiet ${CMAKE_REQUIRED_QUIET})
9 set(CMAKE_REQUIRED_QUIET true)
10 include(CheckCXXSourceCompiles)
11 check_cxx_source_compiles("
12 #if defined(__x86_64__) && defined(__ILP32__)
13 #error x32
14 #endif
15 int main() {}
16 " not_arch_x32)
17 set(CMAKE_REQUIRED_QUIET ${save_quiet})
18 if(not_arch_x32)
19 set(${_good_result} TRUE)
20 execute_process(COMMAND yasm -f ${object_format} -i
21 ${CMAKE_SOURCE_DIR}/src/isa-l/include/
22 ${CMAKE_SOURCE_DIR}/src/isa-l/erasure_code/gf_vect_dot_prod_avx2.asm
23 -o /dev/null
24 RESULT_VARIABLE rc
25 OUTPUT_QUIET)
26 if(NOT rc)
27 set(${_better_result} TRUE)
28 endif(NOT rc)
29 endif(not_arch_x32)
30 endif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64|x86_64")
31 endif(NOT no_yasm)
32 if(no_yasm)
33 message(STATUS "Could NOT find Yasm")
34 elseif(NOT not_arch_x32)
35 message(STATUS "Found Yasm: but x86_64 with x32 ABI is not supported")
36 elseif(${_better_result})
37 message(STATUS "Found Yasm: good -- capable of assembling x86_64")
38 elseif(${_good_result})
39 message(STATUS "Found Yasm: better -- capable of assembling AVX2")
40 endif()
41 endmacro()