CMakeLists.txt 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. cmake_minimum_required(VERSION 3.13)
  2. project(zerotier-core LANGUAGES CXX ASM)
  3. file (GLOB core_src_glob ${PROJ_DIR}/node/*.cpp)
  4. file (GLOB core_hdr_glob ${PROJ_DIR}/node/*.hpp)
  5. if(${CPU_ARCHITECTURE} STREQUAL "x86_64")
  6. set(CMAKE_ASM_FLAGS "${CFLAGS} -x assembler-with-cpp -z noexecstack")
  7. set(ASM_SALSA_DIR ${CMAKE_SOURCE_DIR}/ext/x64-salsa2012-asm)
  8. set(ASM_ED25519_DIR ${CMAKE_SOURCE_DIR}/ext/ed25519-amd64-asm)
  9. list(APPEND core_src_glob
  10. ${ASM_SALSA_DIR}/salsa2012.s
  11. #${ASM_ED25519_DIR}/batch.c
  12. ${ASM_ED25519_DIR}/choose_t.s
  13. ${ASM_ED25519_DIR}/consts.s
  14. ${ASM_ED25519_DIR}/fe25519_add.s
  15. ${ASM_ED25519_DIR}/fe25519_freeze.s
  16. ${ASM_ED25519_DIR}/fe25519_getparity.c
  17. ${ASM_ED25519_DIR}/fe25519_invert.c
  18. ${ASM_ED25519_DIR}/fe25519_iseq.c
  19. ${ASM_ED25519_DIR}/fe25519_iszero.c
  20. ${ASM_ED25519_DIR}/fe25519_mul.s
  21. ${ASM_ED25519_DIR}/fe25519_neg.c
  22. ${ASM_ED25519_DIR}/fe25519_pack.c
  23. ${ASM_ED25519_DIR}/fe25519_pow2523.c
  24. ${ASM_ED25519_DIR}/fe25519_setint.c
  25. ${ASM_ED25519_DIR}/fe25519_square.s
  26. ${ASM_ED25519_DIR}/fe25519_sub.s
  27. ${ASM_ED25519_DIR}/fe25519_unpack.c
  28. ${ASM_ED25519_DIR}/ge25519_add_p1p1.s
  29. ${ASM_ED25519_DIR}/ge25519_add.c
  30. ${ASM_ED25519_DIR}/ge25519_base.c
  31. ${ASM_ED25519_DIR}/ge25519_dbl_p1p1.s
  32. ${ASM_ED25519_DIR}/ge25519_double_scalarmult.c
  33. ${ASM_ED25519_DIR}/ge25519_double.c
  34. ${ASM_ED25519_DIR}/ge25519_isneutral.c
  35. ${ASM_ED25519_DIR}/ge25519_multi_scalarmult.c
  36. ${ASM_ED25519_DIR}/ge25519_nielsadd_p1p1.s
  37. ${ASM_ED25519_DIR}/ge25519_nielsadd2.s
  38. ${ASM_ED25519_DIR}/ge25519_p1p1_to_p2.s
  39. ${ASM_ED25519_DIR}/ge25519_p1p1_to_p3.s
  40. ${ASM_ED25519_DIR}/ge25519_pack.c
  41. ${ASM_ED25519_DIR}/ge25519_pnielsadd_p1p1.s
  42. ${ASM_ED25519_DIR}/ge25519_scalarmult_base.c
  43. ${ASM_ED25519_DIR}/ge25519_unpackneg.c
  44. ${ASM_ED25519_DIR}/heap_rootreplaced_1limb.s
  45. ${ASM_ED25519_DIR}/heap_rootreplaced_2limbs.s
  46. ${ASM_ED25519_DIR}/heap_rootreplaced_3limbs.s
  47. ${ASM_ED25519_DIR}/heap_rootreplaced.s
  48. ${ASM_ED25519_DIR}/hram.c
  49. ${ASM_ED25519_DIR}/index_heap.c
  50. #${ASM_ED25519_DIR}/keypair.c
  51. #${ASM_ED25519_DIR}/open.c
  52. ${ASM_ED25519_DIR}/sc25519_add.s
  53. ${ASM_ED25519_DIR}/sc25519_barrett.s
  54. ${ASM_ED25519_DIR}/sc25519_from_shortsc.c
  55. ${ASM_ED25519_DIR}/sc25519_from32bytes.c
  56. ${ASM_ED25519_DIR}/sc25519_from64bytes.c
  57. ${ASM_ED25519_DIR}/sc25519_iszero.c
  58. ${ASM_ED25519_DIR}/sc25519_lt.s
  59. ${ASM_ED25519_DIR}/sc25519_mul_shortsc.c
  60. ${ASM_ED25519_DIR}/sc25519_mul.c
  61. ${ASM_ED25519_DIR}/sc25519_slide.c
  62. ${ASM_ED25519_DIR}/sc25519_sub_nored.s
  63. ${ASM_ED25519_DIR}/sc25519_to32bytes.c
  64. ${ASM_ED25519_DIR}/sc25519_window4.c
  65. ${ASM_ED25519_DIR}/sign.c
  66. ${ASM_ED25519_DIR}/ull4_mul.s
  67. )
  68. list(APPEND core_hdr_glob
  69. ${ASM_SALSA_DIR}/salsa2012.h
  70. ${ASM_ED25519_DIR}/fe25519.h
  71. ${ASM_ED25519_DIR}/ge25519.h
  72. ${ASM_ED25519_DIR}/hram.h
  73. ${ASM_ED25519_DIR}/index_heap.h
  74. ${ASM_ED25519_DIR}/sc25519.h)
  75. set_property(SOURCE ${ASM_ED25519_DIR}/fe25519_freeze.s PROPERTY COMPILE_FLAGS "-z noexecstack")
  76. elseif(${CPU_ARCHITECTURE} STREQUAL "aarch64")
  77. endif()
  78. add_library(zerotier-core STATIC ${core_src_glob} ${core_hdr_glob})
  79. target_include_directories(zerotier-core
  80. PRIVATE
  81. ${prometheus-cpp-lite_INCLUDE}
  82. )
  83. target_link_libraries(zerotier-core
  84. PRIVATE
  85. nlohmann_json::nlohmann_json
  86. Threads::Threads
  87. prometheus-cpp-lite
  88. Threads::Threads)