Initial commit: tracker and DHT protocol library
This commit is contained in:
commit
4732ca67ee
13 changed files with 4166 additions and 0 deletions
51
CMakeLists.txt
Normal file
51
CMakeLists.txt
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
cmake_minimum_required(VERSION 3.16)
|
||||
project(torrent_tracker C)
|
||||
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE Release)
|
||||
endif()
|
||||
|
||||
option(TRACKER_NATIVE "Optimize for the build host (-march=native)" ON)
|
||||
option(TRACKER_ASAN "Build with AddressSanitizer/UBSan" OFF)
|
||||
option(TRACKER_TESTS "Build protocol tests" ON)
|
||||
|
||||
add_library(torrenttracker SHARED
|
||||
src/tracker_http.c
|
||||
src/tracker_udp.c
|
||||
src/tracker_store.c
|
||||
src/dht.c
|
||||
)
|
||||
target_include_directories(torrenttracker PUBLIC include)
|
||||
target_compile_options(torrenttracker PRIVATE
|
||||
-O3 -Wall -Wextra -Wno-unused-parameter
|
||||
)
|
||||
|
||||
if(TRACKER_NATIVE AND NOT TRACKER_ASAN)
|
||||
target_compile_options(torrenttracker PRIVATE -march=native)
|
||||
endif()
|
||||
|
||||
if(TRACKER_ASAN)
|
||||
target_compile_options(torrenttracker PRIVATE -O1 -g -fsanitize=address,undefined -fno-omit-frame-pointer)
|
||||
target_link_options(torrenttracker PRIVATE -fsanitize=address,undefined)
|
||||
endif()
|
||||
|
||||
option(TRACKER_LTO "Enable link-time optimization" ON)
|
||||
if(TRACKER_LTO AND NOT TRACKER_ASAN)
|
||||
include(CheckIPOSupported)
|
||||
check_ipo_supported(RESULT _ipo_ok OUTPUT _ipo_msg)
|
||||
if(_ipo_ok)
|
||||
set_target_properties(torrenttracker PROPERTIES INTERPROCEDURAL_OPTIMIZATION ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set_target_properties(torrenttracker PROPERTIES OUTPUT_NAME torrenttracker)
|
||||
|
||||
if(TRACKER_TESTS)
|
||||
enable_testing()
|
||||
add_executable(test_tracker tests/test_tracker.c)
|
||||
target_link_libraries(test_tracker PRIVATE torrenttracker)
|
||||
add_test(NAME tracker_protocols COMMAND test_tracker)
|
||||
endif()
|
||||
Loading…
Add table
Add a link
Reference in a new issue