mirror of
https://github.com/open-quantum-safe/liboqs.git
synced 2025-10-05 00:05:12 -04:00
Selectively build files based on ENABLE_KEM_SIDH/SIKE macros
This commit is contained in:
parent
78c5f77b08
commit
d1344c7f24
@ -1,88 +1,154 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR
|
||||
CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
# The way various files are #include'd in the SIKE implementations leads to unused functions
|
||||
# We will not raise warnings for these
|
||||
add_compile_options(-Wno-unused-function)
|
||||
# GCC reports warnings about missing const related to how f2elm_t is typedef'd
|
||||
# Technically GCC is correct, but we will not raise warnings for these
|
||||
if(OQS_ENABLE_KEM_sike_p434 OR
|
||||
OQS_ENABLE_KEM_sike_p503 OR
|
||||
OQS_ENABLE_KEM_sike_p610 OR
|
||||
OQS_ENABLE_KEM_sike_p751 OR
|
||||
OQS_ENABLE_KEM_sike_p434_compressed OR
|
||||
OQS_ENABLE_KEM_sike_p503_compressed OR
|
||||
OQS_ENABLE_KEM_sike_p610_compressed OR
|
||||
OQS_ENABLE_KEM_sike_p751_compressed OR
|
||||
OQS_ENABLE_KEM_sidh_p434 OR
|
||||
OQS_ENABLE_KEM_sidh_p503 OR
|
||||
OQS_ENABLE_KEM_sidh_p610 OR
|
||||
OQS_ENABLE_KEM_sidh_p751 OR
|
||||
OQS_ENABLE_KEM_sidh_p434_compressed OR
|
||||
OQS_ENABLE_KEM_sidh_p503_compressed OR
|
||||
OQS_ENABLE_KEM_sidh_p610_compressed OR
|
||||
OQS_ENABLE_KEM_sidh_p751_compressed)
|
||||
|
||||
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR
|
||||
CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
# The way various files are #include'd in the SIKE implementations leads to unused functions
|
||||
# We will not raise warnings for these
|
||||
add_compile_options(-Wno-unused-function)
|
||||
# GCC reports warnings about missing const related to how f2elm_t is typedef'd
|
||||
# Technically GCC is correct, but we will not raise warnings for these
|
||||
if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
||||
add_compile_options(-Wno-pedantic)
|
||||
# On GCC 4.9 those warnings can't be turned off, so we disable -Werror
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_LESS "5")
|
||||
add_compile_options(-Wno-error)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
# Clang emits spurious warnings where
|
||||
# the "{0}" structure initializer is used.
|
||||
add_compile_options(-Wno-missing-braces)
|
||||
endif()
|
||||
if(WIN32 AND NOT (MINGW OR MSYS OR CYGWIN))
|
||||
# ignore warning about cast from int to OQS_STATUS
|
||||
add_compile_options(/wd4133)
|
||||
endif()
|
||||
|
||||
set(SRCS kem_sike.c)
|
||||
if(OQS_ENABLE_KEM_sike_p434 OR OQS_ENABLE_KEM_sidh_p434)
|
||||
set(SRCS ${SRCS} external/P434/P434.c)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_sike_p434_compressed OR OQS_ENABLE_KEM_sidh_p434_compressed)
|
||||
set(SRCS ${SRCS} external/P434/P434_compressed.c)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_sike_p503 OR OQS_ENABLE_KEM_sidh_p503)
|
||||
set(SRCS ${SRCS} external/P503/P503.c)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_sike_p503_compressed OR OQS_ENABLE_KEM_sidh_p503_compressed)
|
||||
set(SRCS ${SRCS} external/P503/P503_compressed.c)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_sike_p610 OR OQS_ENABLE_KEM_sidh_p610)
|
||||
set(SRCS ${SRCS} external/P610/P610.c)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_sike_p610_compressed OR OQS_ENABLE_KEM_sidh_p610_compressed)
|
||||
set(SRCS ${SRCS} external/P610/P610_compressed.c)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_sike_p751 OR OQS_ENABLE_KEM_sidh_p751)
|
||||
set(SRCS ${SRCS} external/P751/P751.c)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_sike_p751_compressed OR OQS_ENABLE_KEM_sidh_p751_compressed)
|
||||
set(SRCS ${SRCS} external/P751/P751_compressed.c)
|
||||
endif()
|
||||
|
||||
if(ARCH STREQUAL "x86_64")
|
||||
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
|
||||
if(OQS_ENABLE_KEM_sike_p503 OR OQS_ENABLE_KEM_sidh_p503 OR OQS_ENABLE_KEM_sike_p503_compressed OR OQS_ENABLE_KEM_sidh_p503_compressed)
|
||||
set(SRCS ${SRCS} external/P503/AMD64/fp_x64_asm.S)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_sike_p751 OR OQS_ENABLE_KEM_sidh_p751 OR OQS_ENABLE_KEM_sike_p751_compressed OR OQS_ENABLE_KEM_sidh_p751_compressed)
|
||||
set(SRCS ${SRCS} external/P751/AMD64/fp_x64_asm.S)
|
||||
endif()
|
||||
if(OQS_USE_BMI2_INSTRUCTIONS AND NOT OQS_PORTABLE_BUILD)
|
||||
if(OQS_ENABLE_KEM_sike_p434 OR OQS_ENABLE_KEM_sidh_p434 OR OQS_ENABLE_KEM_sike_p434_compressed OR OQS_ENABLE_KEM_sidh_p434_compressed)
|
||||
set(SRCS ${SRCS} external/P434/AMD64/fp_x64_asm.S)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_sike_p610 OR OQS_ENABLE_KEM_sidh_p610 OR OQS_ENABLE_KEM_sike_p610_compressed OR OQS_ENABLE_KEM_sidh_p610_compressed)
|
||||
set(SRCS ${SRCS} external/P610/AMD64/fp_x64_asm.S)
|
||||
endif()
|
||||
add_compile_options(-mbmi2)
|
||||
endif()
|
||||
endif()
|
||||
elseif(ARCH STREQUAL "arm64")
|
||||
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
|
||||
if(OQS_ENABLE_KEM_sike_p434 OR OQS_ENABLE_KEM_sidh_p434 OR OQS_ENABLE_KEM_sike_p434_compressed OR OQS_ENABLE_KEM_sidh_p434_compressed)
|
||||
set(SRCS ${SRCS} external/P434/ARM64/fp_arm64_asm.S)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_sike_p503 OR OQS_ENABLE_KEM_sidh_p503 OR OQS_ENABLE_KEM_sike_p503_compressed OR OQS_ENABLE_KEM_sidh_p503_compressed)
|
||||
set(SRCS ${SRCS} external/P503/ARM64/fp_arm64_asm.S)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_sike_p610 OR OQS_ENABLE_KEM_sidh_p610 OR OQS_ENABLE_KEM_sike_p610_compressed OR OQS_ENABLE_KEM_sidh_p610_compressed)
|
||||
set(SRCS ${SRCS} external/P610/ARM64/fp_arm64_asm.S)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_sike_p751 OR OQS_ENABLE_KEM_sidh_p751 OR OQS_ENABLE_KEM_sike_p751_compressed OR OQS_ENABLE_KEM_sidh_p751_compressed)
|
||||
set(SRCS ${SRCS} external/P751/ARM64/fp_arm64_asm.S)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
add_library(sike OBJECT ${SRCS})
|
||||
if(ARCH STREQUAL "x86")
|
||||
target_compile_definitions(sike PRIVATE _GENERIC_ _X86_)
|
||||
elseif(ARCH STREQUAL "x86_64")
|
||||
target_compile_definitions(sike PRIVATE _AMD64_)
|
||||
if(OQS_USE_BMI2_INSTRUCTIONS AND NOT OQS_PORTABLE_BUILD)
|
||||
target_compile_definitions(sike PRIVATE _MULX_ _ADX_)
|
||||
endif()
|
||||
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
|
||||
if(OQS_ENABLE_KEM_sike_p503 OR OQS_ENABLE_KEM_sidh_p503 OR OQS_ENABLE_KEM_sike_p503_compressed OR OQS_ENABLE_KEM_sidh_p503_compressed)
|
||||
target_compile_definitions(sike PRIVATE USE_SIKEP503_ASM)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_sike_p751 OR OQS_ENABLE_KEM_sidh_p751 OR OQS_ENABLE_KEM_sike_p751_compressed OR OQS_ENABLE_KEM_sidh_p751_compressed)
|
||||
target_compile_definitions(sike PRIVATE USE_SIKEP751_ASM)
|
||||
endif()
|
||||
if(OQS_USE_BMI2_INSTRUCTIONS AND NOT OQS_PORTABLE_BUILD)
|
||||
if(OQS_ENABLE_KEM_sike_p434 OR OQS_ENABLE_KEM_sidh_p434 OR OQS_ENABLE_KEM_sike_p434_compressed OR OQS_ENABLE_KEM_sidh_p434_compressed)
|
||||
target_compile_definitions(sike PRIVATE USE_SIKEP434_ASM)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_sike_p610 OR OQS_ENABLE_KEM_sidh_p610 OR OQS_ENABLE_KEM_sike_p610_compressed OR OQS_ENABLE_KEM_sidh_p610_compressed)
|
||||
target_compile_definitions(sike PRIVATE USE_SIKEP610_ASM)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
elseif(ARCH STREQUAL "arm")
|
||||
target_compile_definitions(sike PRIVATE _GENERIC_ _ARM_)
|
||||
elseif(ARCH STREQUAL "arm64")
|
||||
target_compile_definitions(sike PRIVATE _ARM64_)
|
||||
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
|
||||
if(OQS_ENABLE_KEM_sike_p434 OR OQS_ENABLE_KEM_sidh_p434 OR OQS_ENABLE_KEM_sike_p434_compressed OR OQS_ENABLE_KEM_sidh_p434_compressed)
|
||||
target_compile_definitions(sike PRIVATE USE_SIKEP434_ASM)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_sike_p503 OR OQS_ENABLE_KEM_sidh_p503 OR OQS_ENABLE_KEM_sike_p503_compressed OR OQS_ENABLE_KEM_sidh_p503_compressed)
|
||||
target_compile_definitions(sike PRIVATE USE_SIKEP503_ASM)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_sike_p610 OR OQS_ENABLE_KEM_sidh_p610 OR OQS_ENABLE_KEM_sike_p610_compressed OR OQS_ENABLE_KEM_sidh_p610_compressed)
|
||||
target_compile_definitions(sike PRIVATE USE_SIKEP610_ASM)
|
||||
endif()
|
||||
if(OQS_ENABLE_KEM_sike_p751 OR OQS_ENABLE_KEM_sidh_p751 OR OQS_ENABLE_KEM_sike_p751_compressed OR OQS_ENABLE_KEM_sidh_p751_compressed)
|
||||
target_compile_definitions(sike PRIVATE USE_SIKEP751_ASM)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
||||
add_compile_options(-Wno-pedantic)
|
||||
# On GCC 4.9 those warnings can't be turned off, so we disable -Werror
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_LESS "5")
|
||||
add_compile_options(-Wno-error)
|
||||
endif()
|
||||
target_compile_definitions(sike PRIVATE COMPILER_GCC)
|
||||
elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
target_compile_definitions(sike PRIVATE COMPILER_CLANG)
|
||||
endif()
|
||||
endif()
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
# Clang emits spurious warnings where
|
||||
# the "{0}" structure initializer is used.
|
||||
add_compile_options(-Wno-missing-braces)
|
||||
endif()
|
||||
if(WIN32 AND NOT (MINGW OR MSYS OR CYGWIN))
|
||||
# ignore warning about cast from int to OQS_STATUS
|
||||
add_compile_options(/wd4133)
|
||||
endif()
|
||||
|
||||
set(SRCS kem_sike.c
|
||||
external/P434/P434.c
|
||||
external/P434/P434_compressed.c
|
||||
external/P503/P503.c
|
||||
external/P503/P503_compressed.c
|
||||
external/P610/P610.c
|
||||
external/P610/P610_compressed.c
|
||||
external/P751/P751.c
|
||||
external/P751/P751_compressed.c)
|
||||
|
||||
if(ARCH STREQUAL "x86_64")
|
||||
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
|
||||
set(SRCS ${SRCS} external/P503/AMD64/fp_x64_asm.S
|
||||
external/P751/AMD64/fp_x64_asm.S)
|
||||
if(OQS_USE_BMI2_INSTRUCTIONS AND NOT OQS_PORTABLE_BUILD)
|
||||
set(SRCS ${SRCS} external/P434/AMD64/fp_x64_asm.S
|
||||
external/P610/AMD64/fp_x64_asm.S)
|
||||
add_compile_options(-mbmi2)
|
||||
endif()
|
||||
endif()
|
||||
elseif(ARCH STREQUAL "arm64")
|
||||
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
|
||||
set(SRCS ${SRCS} external/P434/ARM64/fp_arm64_asm.S
|
||||
external/P503/ARM64/fp_arm64_asm.S
|
||||
external/P610/ARM64/fp_arm64_asm.S
|
||||
external/P751/ARM64/fp_arm64_asm.S)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
add_library(sike OBJECT ${SRCS})
|
||||
if(ARCH STREQUAL "x86")
|
||||
target_compile_definitions(sike PRIVATE _GENERIC_ _X86_)
|
||||
elseif(ARCH STREQUAL "x86_64")
|
||||
target_compile_definitions(sike PRIVATE _AMD64_)
|
||||
if(OQS_USE_BMI2_INSTRUCTIONS AND NOT OQS_PORTABLE_BUILD)
|
||||
target_compile_definitions(sike PRIVATE _MULX_ _ADX_)
|
||||
endif()
|
||||
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
|
||||
target_compile_definitions(sike PRIVATE USE_SIKEP503_ASM
|
||||
USE_SIKEP751_ASM)
|
||||
if(OQS_USE_BMI2_INSTRUCTIONS AND NOT OQS_PORTABLE_BUILD)
|
||||
target_compile_definitions(sike PRIVATE USE_SIKEP434_ASM
|
||||
USE_SIKEP610_ASM)
|
||||
endif()
|
||||
endif()
|
||||
elseif(ARCH STREQUAL "arm")
|
||||
target_compile_definitions(sike PRIVATE _GENERIC_ _ARM_)
|
||||
elseif(ARCH STREQUAL "arm64")
|
||||
target_compile_definitions(sike PRIVATE _ARM64_)
|
||||
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
|
||||
target_compile_definitions(sike PRIVATE USE_SIKEP434_ASM
|
||||
USE_SIKEP503_ASM
|
||||
USE_SIKEP610_ASM
|
||||
USE_SIKEP751_ASM)
|
||||
endif()
|
||||
endif()
|
||||
if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
||||
target_compile_definitions(sike PRIVATE COMPILER_GCC)
|
||||
elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
target_compile_definitions(sike PRIVATE COMPILER_CLANG)
|
||||
endif()
|
||||
|
Loading…
x
Reference in New Issue
Block a user