ZeroTierOne/node/CMakeLists.txt
Grant Limberg 7f3b15011e Update central controller build to use CMake + conda
Muuuuch easier to use external dependencies now

Also tried out conan and vcpkg.   Ran into dependency issues when solving for packages to install with conan.

vcpkg is just obtuse as all hell to install and not easy to integrate
2025-08-27 16:23:02 -07:00

94 lines
3.6 KiB
CMake

cmake_minimum_required(VERSION 3.13)
project(zerotier-core LANGUAGES CXX ASM)
file (GLOB core_src_glob ${PROJ_DIR}/node/*.cpp)
file (GLOB core_hdr_glob ${PROJ_DIR}/node/*.hpp)
if(${CPU_ARCHITECTURE} STREQUAL "x86_64")
set(CMAKE_ASM_FLAGS "${CFLAGS} -x assembler-with-cpp -z noexecstack")
set(ASM_SALSA_DIR ${CMAKE_SOURCE_DIR}/ext/x64-salsa2012-asm)
set(ASM_ED25519_DIR ${CMAKE_SOURCE_DIR}/ext/ed25519-amd64-asm)
list(APPEND core_src_glob
${ASM_SALSA_DIR}/salsa2012.s
#${ASM_ED25519_DIR}/batch.c
${ASM_ED25519_DIR}/choose_t.s
${ASM_ED25519_DIR}/consts.s
${ASM_ED25519_DIR}/fe25519_add.s
${ASM_ED25519_DIR}/fe25519_freeze.s
${ASM_ED25519_DIR}/fe25519_getparity.c
${ASM_ED25519_DIR}/fe25519_invert.c
${ASM_ED25519_DIR}/fe25519_iseq.c
${ASM_ED25519_DIR}/fe25519_iszero.c
${ASM_ED25519_DIR}/fe25519_mul.s
${ASM_ED25519_DIR}/fe25519_neg.c
${ASM_ED25519_DIR}/fe25519_pack.c
${ASM_ED25519_DIR}/fe25519_pow2523.c
${ASM_ED25519_DIR}/fe25519_setint.c
${ASM_ED25519_DIR}/fe25519_square.s
${ASM_ED25519_DIR}/fe25519_sub.s
${ASM_ED25519_DIR}/fe25519_unpack.c
${ASM_ED25519_DIR}/ge25519_add_p1p1.s
${ASM_ED25519_DIR}/ge25519_add.c
${ASM_ED25519_DIR}/ge25519_base.c
${ASM_ED25519_DIR}/ge25519_dbl_p1p1.s
${ASM_ED25519_DIR}/ge25519_double_scalarmult.c
${ASM_ED25519_DIR}/ge25519_double.c
${ASM_ED25519_DIR}/ge25519_isneutral.c
${ASM_ED25519_DIR}/ge25519_multi_scalarmult.c
${ASM_ED25519_DIR}/ge25519_nielsadd_p1p1.s
${ASM_ED25519_DIR}/ge25519_nielsadd2.s
${ASM_ED25519_DIR}/ge25519_p1p1_to_p2.s
${ASM_ED25519_DIR}/ge25519_p1p1_to_p3.s
${ASM_ED25519_DIR}/ge25519_pack.c
${ASM_ED25519_DIR}/ge25519_pnielsadd_p1p1.s
${ASM_ED25519_DIR}/ge25519_scalarmult_base.c
${ASM_ED25519_DIR}/ge25519_unpackneg.c
${ASM_ED25519_DIR}/heap_rootreplaced_1limb.s
${ASM_ED25519_DIR}/heap_rootreplaced_2limbs.s
${ASM_ED25519_DIR}/heap_rootreplaced_3limbs.s
${ASM_ED25519_DIR}/heap_rootreplaced.s
${ASM_ED25519_DIR}/hram.c
${ASM_ED25519_DIR}/index_heap.c
#${ASM_ED25519_DIR}/keypair.c
#${ASM_ED25519_DIR}/open.c
${ASM_ED25519_DIR}/sc25519_add.s
${ASM_ED25519_DIR}/sc25519_barrett.s
${ASM_ED25519_DIR}/sc25519_from_shortsc.c
${ASM_ED25519_DIR}/sc25519_from32bytes.c
${ASM_ED25519_DIR}/sc25519_from64bytes.c
${ASM_ED25519_DIR}/sc25519_iszero.c
${ASM_ED25519_DIR}/sc25519_lt.s
${ASM_ED25519_DIR}/sc25519_mul_shortsc.c
${ASM_ED25519_DIR}/sc25519_mul.c
${ASM_ED25519_DIR}/sc25519_slide.c
${ASM_ED25519_DIR}/sc25519_sub_nored.s
${ASM_ED25519_DIR}/sc25519_to32bytes.c
${ASM_ED25519_DIR}/sc25519_window4.c
${ASM_ED25519_DIR}/sign.c
${ASM_ED25519_DIR}/ull4_mul.s
)
list(APPEND core_hdr_glob
${ASM_SALSA_DIR}/salsa2012.h
${ASM_ED25519_DIR}/fe25519.h
${ASM_ED25519_DIR}/ge25519.h
${ASM_ED25519_DIR}/hram.h
${ASM_ED25519_DIR}/index_heap.h
${ASM_ED25519_DIR}/sc25519.h)
set_property(SOURCE ${ASM_ED25519_DIR}/fe25519_freeze.s PROPERTY COMPILE_FLAGS "-z noexecstack")
elseif(${CPU_ARCHITECTURE} STREQUAL "aarch64")
endif()
add_library(zerotier-core STATIC ${core_src_glob} ${core_hdr_glob})
target_include_directories(zerotier-core
PRIVATE
${prometheus-cpp-lite_INCLUDE}
)
target_link_libraries(zerotier-core
PRIVATE
nlohmann_json::nlohmann_json
Threads::Threads
prometheus-cpp-lite
Threads::Threads)