cmake_minimum_required(VERSION 3.13) project(uEXAMPLE LANGUAGES C VERSION 0.0.1.0) enable_language(C) enable_language(ASM) set(CMAKE_VERBOSE_MAKEFILE ON) set(UPQCL_LIBRARY_VER ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}) set(CMAKE_C_STANDARD 99) # Global configuration string(APPEND CMAKE_C_FLAGS "-Os ") string(APPEND CMAKE_C_FLAGS "-Wno-ignored-qualifiers ") string(APPEND CMAKE_C_FLAGS "-Wall ") string(APPEND CMAKE_C_FLAGS "-Werror ") string(APPEND CMAKE_C_FLAGS "-Wextra ") string(APPEND CMAKE_C_FLAGS "-Wpedantic ") string(APPEND CMAKE_C_FLAGS "-Wshadow ") string(APPEND CMAKE_C_FLAGS "-Wno-variadic-macros ") string(APPEND CMAKE_C_FLAGS "-Wno-undef ") string(APPEND CMAKE_C_FLAGS "-Wunused-result ") string(APPEND CMAKE_C_FLAGS "-Wmissing-prototypes ") string(APPEND CMAKE_C_FLAGS "-Wvla ") string(APPEND CMAKE_C_FLAGS "-Wredundant-decls ") string(APPEND CMAKE_C_FLAGS "-fno-common ") string(APPEND CMAKE_C_FLAGS "-DSTM32F4 -DCRYPTO_ITERATIONS=1") set(uEXAMPLE_SRC ${PROJECT_SOURCE_DIR}/src/common/fips202.c ${PROJECT_SOURCE_DIR}/src/common/keccakf1600.S ${PROJECT_SOURCE_DIR}/src/common/crypto_hashblocks_sha512_inner32.s ${PROJECT_SOURCE_DIR}/src/common/crypto_hashblocks_sha512.c ${PROJECT_SOURCE_DIR}/src/common/randombytes.c ${PROJECT_SOURCE_DIR}/src/common/hal-stm32f4.c ${PROJECT_SOURCE_DIR}/src/saber/cbd.c ${PROJECT_SOURCE_DIR}/src/saber/kem.c ${PROJECT_SOURCE_DIR}/src/saber/mul.S ${PROJECT_SOURCE_DIR}/src/saber/NTT_inv_inner.S ${PROJECT_SOURCE_DIR}/src/saber/NTT_inv.S ${PROJECT_SOURCE_DIR}/src/saber/NTT_pk.S ${PROJECT_SOURCE_DIR}/src/saber/NTT.S ${PROJECT_SOURCE_DIR}/src/saber/pack_unpack.c ${PROJECT_SOURCE_DIR}/src/saber/poly.c ${PROJECT_SOURCE_DIR}/src/saber/SABER_indcpa.c ${PROJECT_SOURCE_DIR}/src/saber/verify.c) add_library( uexample_obj OBJECT ${uEXAMPLE_SRC}) target_include_directories( uexample_obj PRIVATE ${PROJECT_SOURCE_DIR}/3rd/libopencm3/include ${PROJECT_SOURCE_DIR}/src/common ${PROJECT_SOURCE_DIR}/src/sabre) add_executable( uexample_test ${uEXAMPLE_SRC} ${PROJECT_SOURCE_DIR}/src/test.c ) target_include_directories( uexample_test PRIVATE ${PROJECT_SOURCE_DIR}/3rd/libopencm3/include ${PROJECT_SOURCE_DIR}/src/common ${PROJECT_SOURCE_DIR}/src/saber) target_link_libraries( uexample_test PRIVATE --static -Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group -T${PROJECT_SOURCE_DIR}/src/stm32f405x6.ld -nostartfiles -Wl,--gc-sections -L${PROJECT_SOURCE_DIR}/3rd/libopencm3/lib -lm -lopencm3_stm32f4 ) add_custom_command( TARGET uexample_test POST_BUILD COMMAND ${OBJCOPY} -Obinary uexample_test uexample_test.bin COMMENT "Invoking: objcopy") add_custom_target( flash COMMAND st-flash write uexample_test.bin 0x8000000 COMMENT "Flashing device")