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)