319 lines
8.7 KiB
CMake
319 lines
8.7 KiB
CMake
cmake_minimum_required(VERSION 3.6)
|
|
project(TeaSpeak-Server)
|
|
|
|
set(CMAKE_VERBOSE_MAKEFILE ON)
|
|
#--allow-multiple-definition
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -Wall -Wno-reorder -Wno-sign-compare -static-libgcc -static-libstdc++ -g -Wl,-no-whole-archive,--allow-shlib-undefined -pthread ${MEMORY_DEBUG_FLAGS}")
|
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
|
|
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O3")
|
|
|
|
#NDEBUG
|
|
#set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELEASE} -O2")
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/environment/)
|
|
|
|
#disable for debug
|
|
#add_definitions(-DRELEASE_MODE)
|
|
|
|
include_directories(../music/include/)
|
|
include_directories(../shared/src)
|
|
include_directories(../license/src)
|
|
include_directories(../MusicBot/src)
|
|
include_directories(/usr/local/include/breakpad)
|
|
include_directories(${LIBRARY_PATH}/tomcrypt/src/headers)
|
|
include_directories(${LIBRARY_PATH}/spdlog/include)
|
|
|
|
add_definitions(-DLTM_DESC)
|
|
add_definitions(-DMUSIC_BOT)
|
|
add_definitions(-DUSE_BORINGSSL)
|
|
|
|
#0 = STABLE
|
|
#1 = BETA
|
|
#2 = ALPHA
|
|
#3 = PRIVATE
|
|
option(BUILD_TYPE "Sets the build type" OFF)
|
|
option(BUILD_TYPE_NAME "Sets the build type name" OFF)
|
|
option(COMPILE_WEB_CLIENT "Enable/Disable the web cleint future" OFF)
|
|
set(COMPILE_WEB_CLIENT "ON")
|
|
|
|
set(CMAKE_VERBOSE_MAKEFILE ON)
|
|
set(SERVER_SOURCE_FILES
|
|
main.cpp
|
|
tomcryptTest.cpp
|
|
MySQLLibSSLFix.c
|
|
|
|
src/client/ConnectedClient.cpp
|
|
src/client/voice/PrecomputedPuzzles.cpp
|
|
src/client/voice/VoiceClient.cpp
|
|
src/client/voice/VoiceClientHandschake.cpp
|
|
src/client/voice/VoiceClientCommandHandler.cpp
|
|
src/client/voice/VoiceClientPacketHandler.cpp
|
|
src/client/voice/VoiceClientView.cpp
|
|
src/TS3ServerClientManager.cpp
|
|
src/TSServer.cpp
|
|
src/TS3ServerHeartbeat.cpp
|
|
src/SignalHandler.cpp
|
|
src/server/VoiceServer.cpp
|
|
src/server/POWHandler.cpp
|
|
src/client/voice/VoiceClientConnection.cpp
|
|
src/client/ConnectedClientCommandHandler.cpp
|
|
src/client/ConnectedClientNotifyHandler.cpp
|
|
src/ServerManager.cpp
|
|
src/server/file/FileServer.cpp
|
|
src/channel/ServerChannel.cpp
|
|
src/channel/ClientChannelView.cpp
|
|
src/client/file/FileClient.cpp
|
|
src/client/file/FileClientIO.cpp
|
|
src/Group.cpp
|
|
src/manager/BanManager.cpp
|
|
src/client/InternalClient.cpp
|
|
#src/weblist/WeblistClient.cpp
|
|
#src/weblist/WebList.cpp
|
|
|
|
src/client/DataClient.cpp
|
|
src/server/QueryServer.cpp
|
|
src/client/query/QueryClient.cpp
|
|
src/client/query/QueryClientCommands.cpp
|
|
src/client/query/QueryClientNotify.cpp
|
|
|
|
|
|
src/manager/IpListManager.cpp
|
|
|
|
src/ConnectionStatistics.cpp
|
|
|
|
src/manager/TokeManager.cpp
|
|
|
|
src/terminal/CommandHandler.cpp
|
|
|
|
src/manager/ComplainManager.cpp
|
|
src/DatabaseHelper.cpp
|
|
|
|
src/manager/LetterManager.cpp
|
|
src/manager/PermissionNameManager.cpp
|
|
|
|
src/pinteraction/ApplicationInteraction.cpp
|
|
src/ServerManagerSnapshot.cpp
|
|
src/ServerManagerSnapshotDeploy.cpp
|
|
src/client/music/Song.cpp
|
|
src/music/PlayablePlaylist.cpp
|
|
src/InstanceHandler.cpp
|
|
src/InstanceHandlerSetup.cpp
|
|
|
|
src/Configuration.cpp
|
|
|
|
src/build.cpp
|
|
|
|
src/music/MusicPlaylist.cpp
|
|
src/client/music/MusicClient.cpp
|
|
src/client/music/MusicClientPlayer.cpp
|
|
src/client/ConnectedClientTextCommandHandler.cpp
|
|
src/music/MusicBotManager.cpp
|
|
src/client/music/internal_provider/channel_replay/ChannelProvider.cpp
|
|
|
|
src/geo/GeoLocation.cpp
|
|
src/geo/IP2Location.cpp
|
|
src/geo/VPNBlocker.cpp
|
|
|
|
src/client/query/XMacroEventTypes.h
|
|
|
|
src/server/VoiceIOManager.cpp
|
|
src/server/WebIoManager.cpp
|
|
src/client/SpeakingClient.cpp
|
|
|
|
src/lincense/LicenseHelper.cpp
|
|
../shared/src/ssl/SSLManager.cpp
|
|
|
|
src/manager/SqlDataManager.cpp
|
|
|
|
src/ShutdownHelper.cpp
|
|
src/client/music/MusicQueue.cpp
|
|
src/lincense/TeamSpeakLicense.cpp
|
|
|
|
src/weblist/WebListManager.cpp
|
|
src/weblist/TeamSpeakWebClient.cpp
|
|
|
|
src/manager/ConversationManager.cpp
|
|
)
|
|
if(COMPILE_WEB_CLIENT)
|
|
add_definitions(-DCOMPILE_WEB_CLIENT)
|
|
|
|
set(SERVER_SOURCE_FILES
|
|
${SERVER_SOURCE_FILES}
|
|
|
|
src/server/WebServer.cpp
|
|
src/client/web/WebClient.cpp
|
|
# src/server/web/WebRTCServer.cpp
|
|
src/client/web/WSWebClient.cpp
|
|
src/client/web/SampleHandler.cpp
|
|
src/client/SpeakingClientHandshake.cpp
|
|
src/client/web/VoiceBridge.cpp
|
|
)
|
|
endif()
|
|
|
|
add_executable(PermHelper helpers/permgen.cpp)
|
|
target_link_libraries(PermHelper
|
|
${LIBRARY_PATH_ED255}
|
|
|
|
TeaSpeak #Static
|
|
TeaLicenseHelper #Static
|
|
TeaMusic #Static
|
|
${LIBRARY_PATH_THREAD_POOL} #Static
|
|
${LIBRARY_PATH_TERMINAL} #Static
|
|
${LIBRARY_PATH_VARIBALES}
|
|
${LIBRARY_PATH_YAML}
|
|
pthread
|
|
stdc++fs
|
|
${LIBEVENT_PATH}/libevent.a
|
|
${LIBEVENT_PATH}/libevent_pthreads.a
|
|
${LIBRARY_PATH_OPUS}
|
|
${LIBRARY_PATH_JSON}
|
|
${LIBRARY_PATH_PROTOBUF}
|
|
|
|
#${LIBWEBRTC_LIBRARIES} #ATTENTIAN! WebRTC does not work with crypto! (Already contains a crypto version)
|
|
${LIBRARY_TOM_CRYPT}
|
|
${LIBRARY_TOM_MATH}
|
|
|
|
#We're forsed to use boringssl caused by the fact that boringssl is already within webrtc!
|
|
|
|
#Require a so
|
|
sqlite3
|
|
|
|
${LIBRARY_PATH_BREAKPAD}
|
|
${LIBRARY_PATH_JDBC}
|
|
${LIBRARY_PATH_PROTOBUF}
|
|
|
|
${LIBRARY_PATH_DATA_PIPES}
|
|
${LIBRARY_PATH_BORINGSSL_SSL}
|
|
${LIBRARY_PATH_BORINGSSL_CRYPTO}
|
|
dl
|
|
jemalloc
|
|
)
|
|
|
|
add_executable(PermMapHelper helpers/PermMapGen.cpp)
|
|
target_link_libraries(PermMapHelper
|
|
${LIBRARY_PATH_ED255}
|
|
|
|
TeaSpeak #Static
|
|
TeaLicenseHelper #Static
|
|
TeaMusic #Static
|
|
${LIBRARY_PATH_THREAD_POOL} #Static
|
|
${LIBRARY_PATH_TERMINAL} #Static
|
|
${LIBRARY_PATH_VARIBALES}
|
|
${LIBRARY_PATH_YAML}
|
|
pthread
|
|
stdc++fs
|
|
${LIBEVENT_PATH}/libevent.a
|
|
${LIBEVENT_PATH}/libevent_pthreads.a
|
|
${LIBRARY_PATH_OPUS}
|
|
${LIBRARY_PATH_JSON}
|
|
${LIBRARY_PATH_PROTOBUF}
|
|
|
|
#${LIBWEBRTC_LIBRARIES} #ATTENTIAN! WebRTC does not work with crypto! (Already contains a crypto version)
|
|
${LIBRARY_TOM_CRYPT}
|
|
${LIBRARY_TOM_MATH}
|
|
|
|
#We're forsed to use boringssl caused by the fact that boringssl is already within webrtc!
|
|
|
|
#Require a so
|
|
sqlite3
|
|
|
|
${LIBRARY_PATH_BREAKPAD}
|
|
${LIBRARY_PATH_JDBC}
|
|
${LIBRARY_PATH_PROTOBUF}
|
|
|
|
${LIBRARY_PATH_DATA_PIPES}
|
|
${LIBRARY_PATH_BORINGSSL_SSL}
|
|
${LIBRARY_PATH_BORINGSSL_CRYPTO}
|
|
dl
|
|
jemalloc
|
|
)
|
|
|
|
|
|
SET(CPACK_PACKAGE_VERSION_MAJOR "1")
|
|
SET(CPACK_PACKAGE_VERSION_MINOR "4")
|
|
SET(CPACK_PACKAGE_VERSION_PATCH "4")
|
|
if(BUILD_TYPE_NAME EQUAL OFF)
|
|
SET(CPACK_PACKAGE_VERSION_DATA "beta")
|
|
elseif(BUILD_TYPE_NAME STREQUAL "")
|
|
SET(CPACK_PACKAGE_VERSION_DATA "")
|
|
else()
|
|
SET(CPACK_PACKAGE_VERSION_DATA "-${BUILD_TYPE_NAME}")
|
|
endif()
|
|
if(BUILD_TYPE EQUAL OFF)
|
|
SET(BUILD_TYPE "1")
|
|
endif()
|
|
set_source_files_properties(src/build.cpp PROPERTIES
|
|
COMPILE_FLAGS "-DBUILD_MAJOR=${CPACK_PACKAGE_VERSION_MAJOR} -DBUILD_MINOR=${CPACK_PACKAGE_VERSION_MINOR} -DBUILD_PATCH=${CPACK_PACKAGE_VERSION_PATCH} -DBUILD_DATA=\"${CPACK_PACKAGE_VERSION_DATA}\" -DBUILD_TYPE=${BUILD_TYPE} -DBUILD_COUNT=0")
|
|
file(WRITE repro/env/buildVersion.txt "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}${CPACK_PACKAGE_VERSION_DATA}")
|
|
|
|
add_executable(TeaSpeakServer ${SERVER_SOURCE_FILES})
|
|
target_link_libraries(TeaSpeakServer
|
|
${LIBRARY_PATH_THREAD_POOL} #Static
|
|
TeaSpeak #Static
|
|
TeaLicenseHelper #Static
|
|
TeaMusic #Static
|
|
${LIBRARY_PATH_TERMINAL} #Static
|
|
${LIBRARY_PATH_VARIBALES}
|
|
${LIBRARY_PATH_YAML}
|
|
pthread
|
|
stdc++fs
|
|
${LIBEVENT_PATH}/libevent.a
|
|
${LIBEVENT_PATH}/libevent_pthreads.a
|
|
${LIBRARY_PATH_OPUS}
|
|
${LIBRARY_PATH_JSON}
|
|
${LIBRARY_PATH_PROTOBUF}
|
|
|
|
#We're forsed to use boringssl caused by the fact that boringssl is already within webrtc!
|
|
|
|
#Require a so
|
|
sqlite3
|
|
|
|
${LIBRARY_PATH_BREAKPAD}
|
|
${LIBRARY_PATH_PROTOBUF}
|
|
|
|
#${LIBWEBRTC_LIBRARIES} #ATTENTIAN! WebRTC does not work with crypto! (Already contains a crypto version)
|
|
${LIBRARY_TOM_CRYPT}
|
|
${LIBRARY_TOM_MATH}
|
|
|
|
mysqlclient.a
|
|
|
|
${LIBRARY_PATH_ED255}
|
|
)
|
|
|
|
if(${COMPILE_WEB_CLIENT})
|
|
find_package(UsrSCTP REQUIRED)
|
|
target_link_libraries(TeaSpeakServer
|
|
${LIBRARY_PATH_DATA_PIPES}
|
|
${LIBRARY_PATH_NICE}
|
|
${LIBRARY_PATH_GLIBC}
|
|
)
|
|
|
|
#target_link_options(TeaSpeakServer PUBLIC "-Wl,--no-as-needed" "${LIBRARY_PATH_DATA_PIPES}" "${LIBRARY_PATH_NICE}" "-Wl,--as-needed")
|
|
endif()
|
|
include_directories(${LIBRARY_PATH}/boringssl/include/)
|
|
target_link_libraries(TeaSpeakServer
|
|
${LIBRARY_PATH_BORINGSSL_SSL}
|
|
${LIBRARY_PATH_BORINGSSL_CRYPTO}
|
|
dl
|
|
z
|
|
)
|
|
|
|
set(DISABLE_JEMALLOC ON)
|
|
if(NOT DISABLE_JEMALLOC)
|
|
target_link_libraries(TeaSpeakServer
|
|
jemalloc
|
|
)
|
|
add_definitions(-DHAVE_JEMALLOC)
|
|
endif()
|
|
|
|
#Fix RPATH
|
|
#patchelf --set-rpath ./libs/ TeaSpeakServer
|
|
#patchelf --remove-rpath TeaSpeakServer
|
|
|
|
#add_custom_command(
|
|
# TARGET TeaSpeakServer
|
|
## COMMAND bash -c "patchelf --set-rpath ./libs/ ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}TeaSpeakServer"
|
|
# COMMAND bash -c "patchelf --remove-rpath ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}TeaSpeakServer"
|
|
# WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
# COMMENT "Cleaning RPATH"
|
|
#)
|