| # SPDX-License-Identifier: MIT |
| |
| try_run(RUN_RESULT COMPILE_RESULT |
| "${CMAKE_BINARY_DIR}" "${PROJECT_SOURCE_DIR}/.CMake/detect_gcc_clang_intrinsics.c" |
| COMPILE_DEFINITIONS ${OQS_OPT_FLAG} |
| COMPILE_OUTPUT_VARIABLE COMPILE_OUTPUT |
| RUN_OUTPUT_VARIABLE RUN_OUTPUT) |
| if(NOT COMPILE_RESULT) |
| message(FATAL_ERROR "Could not compile .CMake/detect_gcc_clang_intrinsics.c" ${COMPILE_OUTPUT}) |
| endif() |
| if(NOT RUN_RESULT EQUAL 0) |
| if(CMAKE_CROSSCOMPILING) |
| message(STATUS "Detecting language features in cross-compiling mode impossible. Setting all CPU features OFF.") |
| else() |
| message(FATAL_ERROR ".CMake/detect_gcc_clang_intrinsics.c returned exit code: " ${RUN_RESULT}) |
| endif() |
| endif() |
| foreach(CPU_EXTENSION ${RUN_OUTPUT}) |
| if (NOT DEFINED OQS_USE_${CPU_EXTENSION}_INSTRUCTIONS) |
| set(OQS_USE_${CPU_EXTENSION}_INSTRUCTIONS ON) |
| endif() |
| endforeach() |
| if(OQS_USE_AVX512BW_INSTRUCTIONS AND |
| OQS_USE_AVX512DQ_INSTRUCTIONS AND |
| OQS_USE_AVX512F_INSTRUCTIONS) |
| set(OQS_USE_AVX512_INSTRUCTIONS ON) |
| endif() |