diff --git a/.CMake/alg_support.cmake b/.CMake/alg_support.cmake index a4c915efa..de91bde5c 100644 --- a/.CMake/alg_support.cmake +++ b/.CMake/alg_support.cmake @@ -73,179 +73,299 @@ cmake_dependent_option(OQS_ENABLE_SIG_picnic3_L5 "" ON "OQS_ENABLE_SIG_PICNIC" O ##### OQS_COPY_FROM_UPSTREAM_FRAGMENT_ADD_ENABLE_BY_ALG_START option(OQS_ENABLE_KEM_CLASSIC_MCELIECE "" ON) cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_348864 "" ON "OQS_ENABLE_KEM_CLASSIC_MCELIECE" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_348864_avx "" ON "OQS_ENABLE_KEM_classic_mceliece_348864" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_348864f "" ON "OQS_ENABLE_KEM_CLASSIC_MCELIECE" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS AND OQS_USE_BMI1_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS AND OQS_USE_BMI1_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_348864f_avx "" ON "OQS_ENABLE_KEM_classic_mceliece_348864f" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_460896 "" ON "OQS_ENABLE_KEM_CLASSIC_MCELIECE" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_460896_avx "" ON "OQS_ENABLE_KEM_classic_mceliece_460896" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_460896f "" ON "OQS_ENABLE_KEM_CLASSIC_MCELIECE" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI1_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI1_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_460896f_avx "" ON "OQS_ENABLE_KEM_classic_mceliece_460896f" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_6688128 "" ON "OQS_ENABLE_KEM_CLASSIC_MCELIECE" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_6688128_avx "" ON "OQS_ENABLE_KEM_classic_mceliece_6688128" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_6688128f "" ON "OQS_ENABLE_KEM_CLASSIC_MCELIECE" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI1_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI1_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_6688128f_avx "" ON "OQS_ENABLE_KEM_classic_mceliece_6688128f" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_6960119 "" ON "OQS_ENABLE_KEM_CLASSIC_MCELIECE" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_6960119_avx "" ON "OQS_ENABLE_KEM_classic_mceliece_6960119" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_6960119f "" ON "OQS_ENABLE_KEM_CLASSIC_MCELIECE" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI1_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI1_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_6960119f_avx "" ON "OQS_ENABLE_KEM_classic_mceliece_6960119f" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_8192128 "" ON "OQS_ENABLE_KEM_CLASSIC_MCELIECE" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_8192128_avx "" ON "OQS_ENABLE_KEM_classic_mceliece_8192128" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_8192128f "" ON "OQS_ENABLE_KEM_CLASSIC_MCELIECE" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS AND OQS_USE_BMI1_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS AND OQS_USE_BMI1_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_classic_mceliece_8192128f_avx "" ON "OQS_ENABLE_KEM_classic_mceliece_8192128f" OFF) endif() +endif() + option(OQS_ENABLE_KEM_HQC "" ON) cmake_dependent_option(OQS_ENABLE_KEM_hqc_128 "" ON "OQS_ENABLE_KEM_HQC" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI1_INSTRUCTIONS AND OQS_USE_PCLMULQDQ_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI1_INSTRUCTIONS AND OQS_USE_PCLMULQDQ_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_hqc_128_avx2 "" ON "OQS_ENABLE_KEM_hqc_128" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_hqc_192 "" ON "OQS_ENABLE_KEM_HQC" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI1_INSTRUCTIONS AND OQS_USE_PCLMULQDQ_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI1_INSTRUCTIONS AND OQS_USE_PCLMULQDQ_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_hqc_192_avx2 "" ON "OQS_ENABLE_KEM_hqc_192" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_hqc_256 "" ON "OQS_ENABLE_KEM_HQC" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI1_INSTRUCTIONS AND OQS_USE_PCLMULQDQ_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI1_INSTRUCTIONS AND OQS_USE_PCLMULQDQ_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_hqc_256_avx2 "" ON "OQS_ENABLE_KEM_hqc_256" OFF) endif() +endif() + option(OQS_ENABLE_KEM_KYBER "" ON) cmake_dependent_option(OQS_ENABLE_KEM_kyber_512 "" ON "OQS_ENABLE_KEM_KYBER" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_kyber_512_avx2 "" ON "OQS_ENABLE_KEM_kyber_512" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_kyber_768 "" ON "OQS_ENABLE_KEM_KYBER" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_kyber_768_avx2 "" ON "OQS_ENABLE_KEM_kyber_768" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_kyber_1024 "" ON "OQS_ENABLE_KEM_KYBER" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_kyber_1024_avx2 "" ON "OQS_ENABLE_KEM_kyber_1024" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_kyber_512_90s "" ON "OQS_ENABLE_KEM_KYBER" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AES_INSTRUCTIONS AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_kyber_512_90s_avx2 "" ON "OQS_ENABLE_KEM_kyber_512_90s" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_kyber_768_90s "" ON "OQS_ENABLE_KEM_KYBER" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AES_INSTRUCTIONS AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_kyber_768_90s_avx2 "" ON "OQS_ENABLE_KEM_kyber_768_90s" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_kyber_1024_90s "" ON "OQS_ENABLE_KEM_KYBER" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AES_INSTRUCTIONS AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_kyber_1024_90s_avx2 "" ON "OQS_ENABLE_KEM_kyber_1024_90s" OFF) endif() +endif() + option(OQS_ENABLE_KEM_NTRU "" ON) cmake_dependent_option(OQS_ENABLE_KEM_ntru_hps2048509 "" ON "OQS_ENABLE_KEM_NTRU" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_ntru_hps2048509_avx2 "" ON "OQS_ENABLE_KEM_ntru_hps2048509" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_ntru_hps2048677 "" ON "OQS_ENABLE_KEM_NTRU" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_ntru_hps2048677_avx2 "" ON "OQS_ENABLE_KEM_ntru_hps2048677" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_ntru_hps4096821 "" ON "OQS_ENABLE_KEM_NTRU" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_ntru_hps4096821_avx2 "" ON "OQS_ENABLE_KEM_ntru_hps4096821" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_ntru_hrss701 "" ON "OQS_ENABLE_KEM_NTRU" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_ntru_hrss701_avx2 "" ON "OQS_ENABLE_KEM_ntru_hrss701" OFF) endif() +endif() + option(OQS_ENABLE_KEM_NTRUPRIME "" ON) cmake_dependent_option(OQS_ENABLE_KEM_ntruprime_ntrulpr653 "" ON "OQS_ENABLE_KEM_NTRUPRIME" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_ntruprime_ntrulpr653_avx2 "" ON "OQS_ENABLE_KEM_ntruprime_ntrulpr653" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_ntruprime_ntrulpr761 "" ON "OQS_ENABLE_KEM_NTRUPRIME" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_ntruprime_ntrulpr761_avx2 "" ON "OQS_ENABLE_KEM_ntruprime_ntrulpr761" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_ntruprime_ntrulpr857 "" ON "OQS_ENABLE_KEM_NTRUPRIME" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_ntruprime_ntrulpr857_avx2 "" ON "OQS_ENABLE_KEM_ntruprime_ntrulpr857" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_ntruprime_sntrup653 "" ON "OQS_ENABLE_KEM_NTRUPRIME" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_ntruprime_sntrup653_avx2 "" ON "OQS_ENABLE_KEM_ntruprime_sntrup653" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_ntruprime_sntrup761 "" ON "OQS_ENABLE_KEM_NTRUPRIME" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_ntruprime_sntrup761_avx2 "" ON "OQS_ENABLE_KEM_ntruprime_sntrup761" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_ntruprime_sntrup857 "" ON "OQS_ENABLE_KEM_NTRUPRIME" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_ntruprime_sntrup857_avx2 "" ON "OQS_ENABLE_KEM_ntruprime_sntrup857" OFF) endif() +endif() + option(OQS_ENABLE_KEM_SABER "" ON) cmake_dependent_option(OQS_ENABLE_KEM_saber_lightsaber "" ON "OQS_ENABLE_KEM_SABER" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_saber_lightsaber_avx2 "" ON "OQS_ENABLE_KEM_saber_lightsaber" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_saber_saber "" ON "OQS_ENABLE_KEM_SABER" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_saber_saber_avx2 "" ON "OQS_ENABLE_KEM_saber_saber" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_KEM_saber_firesaber "" ON "OQS_ENABLE_KEM_SABER" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_KEM_saber_firesaber_avx2 "" ON "OQS_ENABLE_KEM_saber_firesaber" OFF) endif() +endif() + option(OQS_ENABLE_SIG_DILITHIUM "" ON) cmake_dependent_option(OQS_ENABLE_SIG_dilithium_2 "" ON "OQS_ENABLE_SIG_DILITHIUM" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_dilithium_2_avx2 "" ON "OQS_ENABLE_SIG_dilithium_2" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_SIG_dilithium_3 "" ON "OQS_ENABLE_SIG_DILITHIUM" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_dilithium_3_avx2 "" ON "OQS_ENABLE_SIG_dilithium_3" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_SIG_dilithium_5 "" ON "OQS_ENABLE_SIG_DILITHIUM" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_dilithium_5_avx2 "" ON "OQS_ENABLE_SIG_dilithium_5" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_SIG_dilithium_2_aes "" ON "OQS_ENABLE_SIG_DILITHIUM" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_dilithium_2_aes_avx2 "" ON "OQS_ENABLE_SIG_dilithium_2_aes" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_SIG_dilithium_3_aes "" ON "OQS_ENABLE_SIG_DILITHIUM" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_dilithium_3_aes_avx2 "" ON "OQS_ENABLE_SIG_dilithium_3_aes" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_SIG_dilithium_5_aes "" ON "OQS_ENABLE_SIG_DILITHIUM" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_AES_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_dilithium_5_aes_avx2 "" ON "OQS_ENABLE_SIG_dilithium_5_aes" OFF) endif() +endif() + option(OQS_ENABLE_SIG_FALCON "" ON) cmake_dependent_option(OQS_ENABLE_SIG_falcon_512 "" ON "OQS_ENABLE_SIG_FALCON" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_falcon_512_avx2 "" ON "OQS_ENABLE_SIG_falcon_512" OFF) endif() +endif() + cmake_dependent_option(OQS_ENABLE_SIG_falcon_1024 "" ON "OQS_ENABLE_SIG_FALCON" OFF) -if(ARCH STREQUAL "x86_64" AND CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin" AND OQS_USE_AVX2_INSTRUCTIONS) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_falcon_1024_avx2 "" ON "OQS_ENABLE_SIG_falcon_1024" OFF) endif() +endif() + option(OQS_ENABLE_SIG_RAINBOW "" ON) cmake_dependent_option(OQS_ENABLE_SIG_rainbow_I_classic "" ON "OQS_ENABLE_SIG_RAINBOW" OFF) @@ -260,149 +380,185 @@ cmake_dependent_option(OQS_ENABLE_SIG_rainbow_V_compressed "" ON "OQS_ENABLE_SIG option(OQS_ENABLE_SIG_SPHINCS "" ON) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_128f_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_128f_robust_aesni "" ON "OQS_ENABLE_SIG_sphincs_haraka_128f_robust" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_128f_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_128f_simple_aesni "" ON "OQS_ENABLE_SIG_sphincs_haraka_128f_simple" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_128s_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_128s_robust_aesni "" ON "OQS_ENABLE_SIG_sphincs_haraka_128s_robust" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_128s_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_128s_simple_aesni "" ON "OQS_ENABLE_SIG_sphincs_haraka_128s_simple" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_192f_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_192f_robust_aesni "" ON "OQS_ENABLE_SIG_sphincs_haraka_192f_robust" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_192f_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_192f_simple_aesni "" ON "OQS_ENABLE_SIG_sphincs_haraka_192f_simple" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_192s_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_192s_robust_aesni "" ON "OQS_ENABLE_SIG_sphincs_haraka_192s_robust" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_192s_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_192s_simple_aesni "" ON "OQS_ENABLE_SIG_sphincs_haraka_192s_simple" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_256f_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_256f_robust_aesni "" ON "OQS_ENABLE_SIG_sphincs_haraka_256f_robust" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_256f_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_256f_simple_aesni "" ON "OQS_ENABLE_SIG_sphincs_haraka_256f_simple" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_256s_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_256s_robust_aesni "" ON "OQS_ENABLE_SIG_sphincs_haraka_256s_robust" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_256s_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AES_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_haraka_256s_simple_aesni "" ON "OQS_ENABLE_SIG_sphincs_haraka_256s_simple" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_128f_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_128f_robust_avx2 "" ON "OQS_ENABLE_SIG_sphincs_sha256_128f_robust" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_128f_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_128f_simple_avx2 "" ON "OQS_ENABLE_SIG_sphincs_sha256_128f_simple" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_128s_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_128s_robust_avx2 "" ON "OQS_ENABLE_SIG_sphincs_sha256_128s_robust" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_128s_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_128s_simple_avx2 "" ON "OQS_ENABLE_SIG_sphincs_sha256_128s_simple" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_192f_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_192f_robust_avx2 "" ON "OQS_ENABLE_SIG_sphincs_sha256_192f_robust" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_192f_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_192f_simple_avx2 "" ON "OQS_ENABLE_SIG_sphincs_sha256_192f_simple" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_192s_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_192s_robust_avx2 "" ON "OQS_ENABLE_SIG_sphincs_sha256_192s_robust" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_192s_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_192s_simple_avx2 "" ON "OQS_ENABLE_SIG_sphincs_sha256_192s_simple" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_256f_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_256f_robust_avx2 "" ON "OQS_ENABLE_SIG_sphincs_sha256_256f_robust" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_256f_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_256f_simple_avx2 "" ON "OQS_ENABLE_SIG_sphincs_sha256_256f_simple" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_256s_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_256s_robust_avx2 "" ON "OQS_ENABLE_SIG_sphincs_sha256_256s_robust" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_256s_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_sha256_256s_simple_avx2 "" ON "OQS_ENABLE_SIG_sphincs_sha256_256s_simple" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_128f_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_128f_robust_avx2 "" ON "OQS_ENABLE_SIG_sphincs_shake256_128f_robust" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_128f_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_128f_simple_avx2 "" ON "OQS_ENABLE_SIG_sphincs_shake256_128f_simple" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_128s_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_128s_robust_avx2 "" ON "OQS_ENABLE_SIG_sphincs_shake256_128s_robust" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_128s_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_128s_simple_avx2 "" ON "OQS_ENABLE_SIG_sphincs_shake256_128s_simple" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_192f_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_192f_robust_avx2 "" ON "OQS_ENABLE_SIG_sphincs_shake256_192f_robust" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_192f_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_192f_simple_avx2 "" ON "OQS_ENABLE_SIG_sphincs_shake256_192f_simple" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_192s_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_192s_robust_avx2 "" ON "OQS_ENABLE_SIG_sphincs_shake256_192s_robust" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_192s_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_192s_simple_avx2 "" ON "OQS_ENABLE_SIG_sphincs_shake256_192s_simple" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_256f_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_256f_robust_avx2 "" ON "OQS_ENABLE_SIG_sphincs_shake256_256f_robust" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_256f_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_256f_simple_avx2 "" ON "OQS_ENABLE_SIG_sphincs_shake256_256f_simple" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_256s_robust "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_256s_robust_avx2 "" ON "OQS_ENABLE_SIG_sphincs_shake256_256s_robust" OFF) endif() + cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_256s_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) -if(ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS) +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" AND OQS_USE_AVX2_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake256_256s_simple_avx2 "" ON "OQS_ENABLE_SIG_sphincs_shake256_256s_simple" OFF) endif() + ##### OQS_COPY_FROM_UPSTREAM_FRAGMENT_ADD_ENABLE_BY_ALG_END if(OQS_MINIMAL_BUILD) diff --git a/.CMake/detect_gcc_clang_intrinsics.c b/.CMake/detect_gcc_clang_intrinsics.c index fa3422371..9f6fafea9 100644 --- a/.CMake/detect_gcc_clang_intrinsics.c +++ b/.CMake/detect_gcc_clang_intrinsics.c @@ -31,7 +31,7 @@ int main(void) { printf("FMA;"); #endif #if defined(__PCLMUL__) - printf("PCLMUL;"); + printf("PCLMULQDQ;"); #endif #if defined(__POPCNT__) printf("POPCNT;"); diff --git a/.CMake/gcc_clang_intrinsics.cmake b/.CMake/gcc_clang_intrinsics.cmake index a31da270d..5a39e4214 100644 --- a/.CMake/gcc_clang_intrinsics.cmake +++ b/.CMake/gcc_clang_intrinsics.cmake @@ -1,17 +1,19 @@ # SPDX-License-Identifier: MIT -try_run(RUN_RESULT COMPILE_RESULT - "${CMAKE_BINARY_DIR}" "${PROJECT_SOURCE_DIR}/.CMake/detect_gcc_clang_intrinsics.c" - COMPILE_DEFINITIONS -march=native - RUN_OUTPUT_VARIABLE RUN_OUTPUT) -if(NOT RUN_RESULT EQUAL 0) - message(FATAL_ERROR ".CMake/detect_gcc_clang_intrinsics.c returned exit code: " ${RUN_RESULT}) -endif() -foreach(CPU_EXTENSION ${RUN_OUTPUT}) - set(OQS_USE_${CPU_EXTENSION}_INSTRUCTIONS ON) -endforeach() -if(OQS_USE_AVX512BW_INSTRUCTIONS AND - OQS_USE_AVX512DQ_INSTRUCTIONS AND - OQS_USE_AVX512F_INSTRUCTIONS) - set(OQS_USE_AVX512_INSTRUCTIONS ON) +if(ARCH_X86_64) + try_run(RUN_RESULT COMPILE_RESULT + "${CMAKE_BINARY_DIR}" "${PROJECT_SOURCE_DIR}/.CMake/detect_gcc_clang_intrinsics.c" + COMPILE_DEFINITIONS -march=native + RUN_OUTPUT_VARIABLE RUN_OUTPUT) + if(NOT RUN_RESULT EQUAL 0) + message(FATAL_ERROR ".CMake/detect_gcc_clang_intrinsics.c returned exit code: " ${RUN_RESULT}) + endif() + foreach(CPU_EXTENSION ${RUN_OUTPUT}) + set(OQS_USE_${CPU_EXTENSION}_INSTRUCTIONS ON) + endforeach() + if(OQS_USE_AVX512BW_INSTRUCTIONS AND + OQS_USE_AVX512DQ_INSTRUCTIONS AND + OQS_USE_AVX512F_INSTRUCTIONS) + set(OQS_USE_AVX512_INSTRUCTIONS ON) + endif() endif() diff --git a/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.fragment b/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.fragment index 0cd0ea8cb..6a1133c98 100644 --- a/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.fragment +++ b/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.fragment @@ -4,9 +4,13 @@ option(OQS_ENABLE_KEM_{{ family['name']|upper }} "" ON) cmake_dependent_option(OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }} "" ON "OQS_ENABLE_KEM_{{ family['name']|upper }}" OFF) {%- for impl in scheme['metadata']['implementations'] if impl['name'] != family['default_implementation'] and impl['supported_platforms'] -%} {%- for platform in impl['supported_platforms'] if platform['architecture'] == 'x86_64' %} -if(ARCH STREQUAL "x86_64" AND {% if platform['operating_systems'] %}CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}"{% endif -%}{%- if platform['required_flags'] %} AND {% for flag in platform['required_flags'] -%} OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- if not loop.last %} AND {% endif -%}{%- endfor -%}{%- endif -%}) +{% if platform['operating_systems'] %}if(CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}") +{% endif -%} +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" {%- if platform['required_flags'] %} AND {% for flag in platform['required_flags'] -%} OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- if not loop.last %} AND {% endif -%}{%- endfor -%}{%- endif -%})) cmake_dependent_option(OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} "" ON "OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) endif() +{% if platform['operating_systems'] %}endif() +{% endif -%} {%- endfor -%} {%- endfor -%} {%- endfor %} @@ -18,9 +22,13 @@ option(OQS_ENABLE_SIG_{{ family['name']|upper }} "" ON) cmake_dependent_option(OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }} "" ON "OQS_ENABLE_SIG_{{ family['name']|upper }}" OFF) {%- for impl in scheme['metadata']['implementations'] if impl['name'] != family['default_implementation'] and impl['supported_platforms'] -%} {%- for platform in impl['supported_platforms'] if platform['architecture'] == 'x86_64' %} -if(ARCH STREQUAL "x86_64" {%- if platform['operating_systems'] %} AND CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}"{% endif -%}{%- if platform['required_flags'] %} AND {% for flag in platform['required_flags'] -%} OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- if not loop.last %} AND {% endif -%}{%- endfor -%}{%- endif -%}) +{% if platform['operating_systems'] %}if(CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}") +{% endif -%} +if(OQS_PORTABLE_X86_64_BUILD OR (ARCH STREQUAL "x86_64" {%- if platform['required_flags'] %} AND {% for flag in platform['required_flags'] -%} OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- if not loop.last %} AND {% endif -%}{%- endfor -%}{%- endif -%})) cmake_dependent_option(OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} "" ON "OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) endif() +{% if platform['operating_systems'] %}endif() +{% endif -%} {%- endfor -%} {%- endfor -%} {%- endfor %} diff --git a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt index 77630d44c..b00f1363d 100644 --- a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt +++ b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt @@ -12,7 +12,7 @@ if({% for used_by in common_deps_usedby[common_dep['name']] -%}OQS_ENABLE_KEM_{{ add_library({{ family }}_{{ common_dep['name'] }} OBJECT {% for source_file in common_dep['sources_addl']|sort -%}{{ upstream_location }}_{{ common_dep['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) target_include_directories({{ family }}_{{ common_dep['name'] }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ upstream_location }}_{{ common_dep['name'] }}) {%- if common_dep['required_flags'] %} - target_compile_options({{ family }}_{{ common_dep['name'] }} PRIVATE {%- for flag in common_dep['required_flags'] %} -m{%- if flag == 'bmi1' -%} bmi {%- elif flag == 'sse4_1' -%} sse4.1 {%- else -%}{{ flag }}{%- endif -%}{%- endfor -%}) + target_compile_options({{ family }}_{{ common_dep['name'] }} PRIVATE {%- for flag in common_dep['required_flags'] %} -m{%- if flag == 'bmi1' -%} bmi {%- elif flag == 'sse4_1' -%} sse4.1 {%- elif flag == 'pclmulqdq' -%} pclmul {%- else -%}{{ flag }}{%- endif -%}{%- endfor -%}) {%- endif %} {%- if common_dep['compile_opts'] %} target_compile_options({{ family }}_{{ common_dep['name'] }} PUBLIC {{ common_dep['compile_opts'] }}) @@ -41,7 +41,7 @@ if(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme_c'] }}_{{ impl['name'] }}) target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ scheme['upstream_location'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}) target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) {%- if impl['name'] != scheme['default_implementation'] and impl['required_flags'] %} - target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE {%- for flag in impl['required_flags'] %} -m{%- if flag == 'bmi1' -%} bmi {%- elif flag == 'sse4_1' -%} sse4.1 {%- else -%}{{ flag }}{%- endif -%}{%- endfor -%}) + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE {%- for flag in impl['required_flags'] %} -m{%- if flag == 'bmi1' -%} bmi {%- elif flag == 'sse4_1' -%} sse4.1 {%- elif flag == 'pclmulqdq' -%} pclmul {%- else -%}{{ flag }}{%- endif -%}{%- endfor -%}) {%- endif %} {%- if impl['compile_opts'] %} target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PUBLIC {{ impl['compile_opts'] }}) @@ -49,6 +49,9 @@ if(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme_c'] }}_{{ impl['name'] }}) {%- if family == 'classic_mceliece' and impl['name'] == 'avx' %} target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE -Wno-language-extension-token) {%- endif %} + {%- if family == 'hqc' and impl['name'] == 'avx2' %} + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE -Wno-missing-braces) + {%- endif %} set(_{{ family|upper }}_OBJS ${_{{ family|upper }}_OBJS} $) endif() {%- endfor -%} diff --git a/scripts/copy_from_upstream/src/sig/family/CMakeLists.txt b/scripts/copy_from_upstream/src/sig/family/CMakeLists.txt index 00d963373..05a6c2814 100644 --- a/scripts/copy_from_upstream/src/sig/family/CMakeLists.txt +++ b/scripts/copy_from_upstream/src/sig/family/CMakeLists.txt @@ -12,7 +12,7 @@ if({% for used_by in common_deps_usedby[common_dep['name']] -%}OQS_ENABLE_SIG_{{ add_library({{ family }}_{{ common_dep['name'] }} OBJECT {% for source_file in common_dep['sources_addl']|sort -%}{{ upstream_location }}_{{ common_dep['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) target_include_directories({{ family }}_{{ common_dep['name'] }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ upstream_location }}_{{ common_dep['name'] }}) {%- if common_dep['required_flags'] %} - target_compile_options({{ family }}_{{ common_dep['name'] }} PRIVATE {%- for flag in common_dep['required_flags'] %} -m{%- if flag == 'bmi1' -%} bmi {%- elif flag == 'sse4_1' -%} sse4.1 {%- else -%}{{ flag }}{%- endif -%}{%- endfor -%}) + target_compile_options({{ family }}_{{ common_dep['name'] }} PRIVATE {%- for flag in common_dep['required_flags'] %} -m{%- if flag == 'bmi1' -%} bmi {%- elif flag == 'sse4_1' -%} sse4.1 {%- elif flag == 'pclmulqdq' -%} pclmul {%- else -%}{{ flag }}{%- endif -%}{%- endfor -%}) {%- endif %} {%- if common_dep['compile_opts'] %} target_compile_options({{ family }}_{{ common_dep['name'] }} PUBLIC {{ common_dep['compile_opts'] }}) @@ -41,7 +41,7 @@ if(OQS_ENABLE_SIG_{{ family }}_{{ scheme['scheme_c'] }}_{{ impl['name'] }}) target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ scheme['upstream_location'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}) target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) {%- if impl['name'] != scheme['default_implementation'] and impl['required_flags'] %} - target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE {%- for flag in impl['required_flags'] %} -m{%- if flag == 'bmi1' -%} bmi {%- elif flag == 'sse4_1' -%} sse4.1 {%- else -%}{{ flag }}{%- endif -%}{%- endfor -%}) + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE {%- for flag in impl['required_flags'] %} -m{%- if flag == 'bmi1' -%} bmi {%- elif flag == 'sse4_1' -%} sse4.1 {%- elif flag == 'pclmulqdq' -%} pclmul {%- else -%}{{ flag }}{%- endif -%}{%- endfor -%}) {%- endif %} {%- if impl['compile_opts'] %} target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PUBLIC {{ impl['compile_opts'] }}) diff --git a/src/common/common.c b/src/common/common.c index 523cee808..2dff6c1c5 100644 --- a/src/common/common.c +++ b/src/common/common.c @@ -104,7 +104,7 @@ static void set_available_cpu_extensions_x86_64(void) { available_cpu_extensions.AVX_ENABLED = is_bit_set(leaf_1.ecx, 28); available_cpu_extensions.AVX2_ENABLED = is_bit_set(leaf_7.ebx, 5); } - available_cpu_extensions.PCLMUL_ENABLED = is_bit_set(leaf_1.ecx, 1); + available_cpu_extensions.PCLMULQDQ_ENABLED = is_bit_set(leaf_1.ecx, 1); available_cpu_extensions.POPCNT_ENABLED = is_bit_set(leaf_1.ecx, 23); available_cpu_extensions.BMI1_ENABLED = is_bit_set(leaf_7.ebx, 3); available_cpu_extensions.BMI2_ENABLED = is_bit_set(leaf_7.ebx, 8); diff --git a/src/common/common.h b/src/common/common.h index 83cf9432b..ad2916fcb 100644 --- a/src/common/common.h +++ b/src/common/common.h @@ -111,7 +111,7 @@ typedef struct { unsigned int AVX512_ENABLED; unsigned int BMI1_ENABLED; unsigned int BMI2_ENABLED; - unsigned int PCLMUL_ENABLED; + unsigned int PCLMULQDQ_ENABLED; unsigned int POPCNT_ENABLED; unsigned int SSE_ENABLED; unsigned int SSE2_ENABLED; diff --git a/src/kem/hqc/CMakeLists.txt b/src/kem/hqc/CMakeLists.txt index 0cb195cf7..f27d1fb93 100644 --- a/src/kem/hqc/CMakeLists.txt +++ b/src/kem/hqc/CMakeLists.txt @@ -16,7 +16,8 @@ if(OQS_ENABLE_KEM_hqc_128_avx2) add_library(hqc_128_avx2 OBJECT pqclean_hqc-rmrs-128_avx2/code.c pqclean_hqc-rmrs-128_avx2/fft.c pqclean_hqc-rmrs-128_avx2/gf.c pqclean_hqc-rmrs-128_avx2/gf2x.c pqclean_hqc-rmrs-128_avx2/hqc.c pqclean_hqc-rmrs-128_avx2/kem.c pqclean_hqc-rmrs-128_avx2/parsing.c pqclean_hqc-rmrs-128_avx2/reed_muller.c pqclean_hqc-rmrs-128_avx2/reed_solomon.c pqclean_hqc-rmrs-128_avx2/vector.c) target_include_directories(hqc_128_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_hqc-rmrs-128_avx2) target_include_directories(hqc_128_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) - target_compile_options(hqc_128_avx2 PRIVATE -mavx2 -mbmi -mpclmulqdq) + target_compile_options(hqc_128_avx2 PRIVATE -mavx2 -mbmi -mpclmul) + target_compile_options(hqc_128_avx2 PRIVATE -Wno-missing-braces) set(_HQC_OBJS ${_HQC_OBJS} $) endif() @@ -31,7 +32,8 @@ if(OQS_ENABLE_KEM_hqc_192_avx2) add_library(hqc_192_avx2 OBJECT pqclean_hqc-rmrs-192_avx2/code.c pqclean_hqc-rmrs-192_avx2/fft.c pqclean_hqc-rmrs-192_avx2/gf.c pqclean_hqc-rmrs-192_avx2/gf2x.c pqclean_hqc-rmrs-192_avx2/hqc.c pqclean_hqc-rmrs-192_avx2/kem.c pqclean_hqc-rmrs-192_avx2/parsing.c pqclean_hqc-rmrs-192_avx2/reed_muller.c pqclean_hqc-rmrs-192_avx2/reed_solomon.c pqclean_hqc-rmrs-192_avx2/vector.c) target_include_directories(hqc_192_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_hqc-rmrs-192_avx2) target_include_directories(hqc_192_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) - target_compile_options(hqc_192_avx2 PRIVATE -mavx2 -mbmi -mpclmulqdq) + target_compile_options(hqc_192_avx2 PRIVATE -mavx2 -mbmi -mpclmul) + target_compile_options(hqc_192_avx2 PRIVATE -Wno-missing-braces) set(_HQC_OBJS ${_HQC_OBJS} $) endif() @@ -46,7 +48,8 @@ if(OQS_ENABLE_KEM_hqc_256_avx2) add_library(hqc_256_avx2 OBJECT pqclean_hqc-rmrs-256_avx2/code.c pqclean_hqc-rmrs-256_avx2/fft.c pqclean_hqc-rmrs-256_avx2/gf.c pqclean_hqc-rmrs-256_avx2/gf2x.c pqclean_hqc-rmrs-256_avx2/hqc.c pqclean_hqc-rmrs-256_avx2/kem.c pqclean_hqc-rmrs-256_avx2/parsing.c pqclean_hqc-rmrs-256_avx2/reed_muller.c pqclean_hqc-rmrs-256_avx2/reed_solomon.c pqclean_hqc-rmrs-256_avx2/vector.c) target_include_directories(hqc_256_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/pqclean_hqc-rmrs-256_avx2) target_include_directories(hqc_256_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) - target_compile_options(hqc_256_avx2 PRIVATE -mavx2 -mbmi -mpclmulqdq) + target_compile_options(hqc_256_avx2 PRIVATE -mavx2 -mbmi -mpclmul) + target_compile_options(hqc_256_avx2 PRIVATE -Wno-missing-braces) set(_HQC_OBJS ${_HQC_OBJS} $) endif() diff --git a/tests/system_info.c b/tests/system_info.c index 4a89eb542..79c6f5b53 100644 --- a/tests/system_info.c +++ b/tests/system_info.c @@ -42,7 +42,7 @@ static void print_platform_info(void) { #include #endif -#if defined(OQS_USE_CPU_EXTENSIONS) && defined(OQS_PORTABLE_BUILD) +#if defined(OQS_PORTABLE_BUILD) #define C_OR_NI(stmt_c, stmt_ni) \ OQS_CPU_EXTENSIONS available_cpu_extensions = OQS_get_available_CPU_extensions(); \ if (available_cpu_extensions.AES_ENABLED) { \