You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CMakeLists.txt 2.8 KiB

1 年之前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. cmake_minimum_required(VERSION 3.13)
  2. project(uEXAMPLE LANGUAGES C VERSION 0.0.1.0)
  3. enable_language(C)
  4. enable_language(ASM)
  5. set(CMAKE_VERBOSE_MAKEFILE ON)
  6. set(UPQCL_LIBRARY_VER ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
  7. set(CMAKE_C_STANDARD 99)
  8. # Global configuration
  9. string(APPEND CMAKE_C_FLAGS "-Os ")
  10. string(APPEND CMAKE_C_FLAGS "-Wno-ignored-qualifiers ")
  11. string(APPEND CMAKE_C_FLAGS "-Wall ")
  12. string(APPEND CMAKE_C_FLAGS "-Werror ")
  13. string(APPEND CMAKE_C_FLAGS "-Wextra ")
  14. string(APPEND CMAKE_C_FLAGS "-Wpedantic ")
  15. string(APPEND CMAKE_C_FLAGS "-Wshadow ")
  16. string(APPEND CMAKE_C_FLAGS "-Wno-variadic-macros ")
  17. string(APPEND CMAKE_C_FLAGS "-Wno-undef ")
  18. string(APPEND CMAKE_C_FLAGS "-Wunused-result ")
  19. string(APPEND CMAKE_C_FLAGS "-Wmissing-prototypes ")
  20. string(APPEND CMAKE_C_FLAGS "-Wvla ")
  21. string(APPEND CMAKE_C_FLAGS "-Wredundant-decls ")
  22. string(APPEND CMAKE_C_FLAGS "-fno-common ")
  23. string(APPEND CMAKE_C_FLAGS "-DSTM32F4 -DCRYPTO_ITERATIONS=1")
  24. set(uEXAMPLE_SRC
  25. ${PROJECT_SOURCE_DIR}/src/common/fips202.c
  26. ${PROJECT_SOURCE_DIR}/src/common/keccakf1600.S
  27. ${PROJECT_SOURCE_DIR}/src/common/crypto_hashblocks_sha512_inner32.s
  28. ${PROJECT_SOURCE_DIR}/src/common/crypto_hashblocks_sha512.c
  29. ${PROJECT_SOURCE_DIR}/src/common/randombytes.c
  30. ${PROJECT_SOURCE_DIR}/src/common/hal-stm32f4.c
  31. ${PROJECT_SOURCE_DIR}/src/saber/cbd.c
  32. ${PROJECT_SOURCE_DIR}/src/saber/kem.c
  33. ${PROJECT_SOURCE_DIR}/src/saber/mul.S
  34. ${PROJECT_SOURCE_DIR}/src/saber/NTT_inv_inner.S
  35. ${PROJECT_SOURCE_DIR}/src/saber/NTT_inv.S
  36. ${PROJECT_SOURCE_DIR}/src/saber/NTT_pk.S
  37. ${PROJECT_SOURCE_DIR}/src/saber/NTT.S
  38. ${PROJECT_SOURCE_DIR}/src/saber/pack_unpack.c
  39. ${PROJECT_SOURCE_DIR}/src/saber/poly.c
  40. ${PROJECT_SOURCE_DIR}/src/saber/SABER_indcpa.c
  41. ${PROJECT_SOURCE_DIR}/src/saber/verify.c)
  42. add_library(
  43. uexample_obj OBJECT
  44. ${uEXAMPLE_SRC})
  45. target_include_directories(
  46. uexample_obj PRIVATE
  47. ${PROJECT_SOURCE_DIR}/3rd/libopencm3/include
  48. ${PROJECT_SOURCE_DIR}/src/common
  49. ${PROJECT_SOURCE_DIR}/src/sabre)
  50. add_executable(
  51. uexample_test
  52. ${uEXAMPLE_SRC}
  53. ${PROJECT_SOURCE_DIR}/src/test.c
  54. )
  55. target_include_directories(
  56. uexample_test PRIVATE
  57. ${PROJECT_SOURCE_DIR}/3rd/libopencm3/include
  58. ${PROJECT_SOURCE_DIR}/src/common
  59. ${PROJECT_SOURCE_DIR}/src/saber)
  60. target_link_libraries(
  61. uexample_test PRIVATE
  62. --static -Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group
  63. -T${PROJECT_SOURCE_DIR}/src/stm32f405x6.ld
  64. -nostartfiles -Wl,--gc-sections
  65. -L${PROJECT_SOURCE_DIR}/3rd/libopencm3/lib -lm -lopencm3_stm32f4
  66. )
  67. add_custom_command(
  68. TARGET uexample_test POST_BUILD
  69. COMMAND ${OBJCOPY} -Obinary uexample_test uexample_test.bin
  70. COMMENT "Invoking: objcopy")
  71. add_custom_target(
  72. flash
  73. COMMAND st-flash write uexample_test.bin 0x8000000
  74. COMMENT "Flashing device")