add_executable(lokinet main.cpp) add_executable(lokinet-vpn lokinet-vpn.cpp) enable_lto(lokinet lokinet-vpn) if(TRACY_ROOT) target_sources(lokinet PRIVATE ${TRACY_ROOT}/TracyClient.cpp) endif() set(should_install ON) set(SETCAP) if(CMAKE_SYSTEM_NAME MATCHES "Linux") option(WITH_SETCAP "use setcap when installing" ON) if(WITH_SETCAP) find_program(SETCAP NAMES setcap HINTS /sbin /usr/sbin) if(SETCAP) message(STATUS "Found setcap binary: ${SETCAP}") else() message(WARNING "cannot find setcap binary you will not be able use the install targets unless you use -DWITH_SETCAP=OFF") set(should_install OFF) endif() endif() endif() foreach(exe lokinet lokinet-vpn) if(WIN32 AND NOT MSVC_VERSION) target_sources(${exe} PRIVATE ../llarp/win32/version.rc) target_link_libraries(${exe} PRIVATE ws2_32 iphlpapi) elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") target_link_directories(${exe} PRIVATE /usr/local/lib) endif() target_link_libraries(${exe} PRIVATE liblokinet) if(WITH_JEMALLOC) target_link_libraries(${exe} PUBLIC jemalloc) endif() target_compile_definitions(${exe} PRIVATE -DVERSIONTAG=${GIT_VERSION_REAL}) add_log_tag(${exe}) if(should_install) install(TARGETS ${exe} RUNTIME DESTINATION bin COMPONENT lokinet) endif() endforeach() if(SETCAP) install(CODE "execute_process(COMMAND ${SETCAP} cap_net_admin,cap_net_bind_service=+eip ${CMAKE_INSTALL_PREFIX}/bin/lokinet)") endif() if(NOT WIN32) if(should_install) install(PROGRAMS ${CMAKE_SOURCE_DIR}/lokinet-bootstrap DESTINATION bin COMPONENT lokinet) endif() endif()