cmake_minimum_required(VERSION 3.6) project(TeaSpeakLicence) set(CMAKE_VERBOSE_MAKEFILE ON) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fpermissive -Wall -Wno-sign-compare -Wno-reorder -static-libgcc -static-libstdc++") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELEASE} -O3") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/environment/) #disable for debug #add_definitions(-DRELEASE_MODE) include_directories(../shared/src) add_definitions(-DLTM_DESC) set(LICENCE_SOURCE_FILES shared/LicenseRequest.cpp shared/LicenseRequestHandler.cpp shared/License.cpp shared/LicenseServerClient.cpp ../shared/src/log/LogUtils.cpp ) #Protobuf find_package(Protobuf REQUIRED) include_directories(${Protobuf_INCLUDE_DIRS}) include_directories(${CMAKE_CURRENT_BINARY_DIR}) protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS packets/LicenseRequest.proto packets/LicenseManager.proto) #The actual librarie add_library(TeaLicenseHelper STATIC ${LICENCE_SOURCE_FILES} ${PROTO_SRCS} ${PROTO_HDRS}) target_link_libraries(TeaLicenseHelper PUBLIC TeaSpeak libevent::core libevent::pthreads) #The license server add_executable(TeaLicenseServer ${LICENCE_SOURCE_FILES} ${PROTO_SRCS} ${PROTO_HDRS} server/KeyIdCache.cpp server/LicenseServer.cpp server/LicenseServerHandler.cpp server/DatabaseHandler.cpp LicenseServerMain.cpp server/WebAPI.cpp server/StatisticManager.cpp server/UserManager.cpp MySQLLibSSLFix.c ) target_compile_options(TeaLicenseServer PRIVATE "-Wl,--unresolved-symbols=ignore-in-object-files") target_link_libraries(TeaLicenseServer threadpool::static #Static TeaSpeak #Static TeaLicenseHelper #Static CXXTerminal::static #Static ${StringVariable_LIBRARIES_STATIC} # stdc++fs libevent::core libevent::pthreads yaml-cpp ${LIBRARY_PATH_PROTOBUF} ${ed25519_LIBRARIES_STATIC} #We're forsed to use boringssl caused by the fact that boringssl is already within webrtc! #Require a so sqlite3 protobuf::libprotobuf tomcrypt::static tommath::static mysqlclient.a jsoncpp_lib ${DataPipes_LIBRARIES_SHARED} # Also includes glib2.0 openssl::ssl::shared openssl::crypto::shared pthread dl z ) if (COMPILE_WEB_CLIENT) target_link_libraries(TeaLicenseServer ${glib20_DIR}/lib/x86_64-linux-gnu/libffi.so.7 ${nice_DIR}/lib/libnice.so.10) endif () include_directories(${LIBRARY_PATH}/boringssl/include/) #The test license client add_executable(TeaLicenseClient LicenseClientMain.cpp ${LICENCE_SOURCE_FILES} ${PROTO_SRCS} ${PROTO_HDRS}) target_link_libraries(TeaLicenseClient TeaSpeak #Static protobuf::libprotobuf stdc++fs libevent::core libevent::pthreads ${ed25519_LIBRARIES_STATIC} ${StringVariable_LIBRARIES_STATIC} CXXTerminal::static #Static tomcrypt::static tommath::static ${DataPipes_LIBRARIES_SHARED} # Also includes glib2.0 ${glib20_DIR}/lib/x86_64-linux-gnu/libffi.so.7 ${nice_DIR}/lib/libnice.so.10 openssl::ssl::shared openssl::crypto::shared pthread dl z ) #The license manager if(NOT DISABLE_QT) find_package(Qt5Widgets) include_directories(${Qt5Widgets_INCLUDE_DIRS}) add_definitions(${Qt5Widgets_DEFINITIONS}) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}") set(UI_FILES manager/ui/licensegenerator.ui manager/ui/loginwindow.ui manager/ui/owerview.ui manager/ui/licenseinfo.ui) set(DESIGN_HEADER_FILES manager/ui/LicenseGenerator.h manager/ui/LoginWindow.h manager/ui/Overview.h manager/ui/UiLicenseInfo.h) qt5_wrap_ui(UI_WARPED_FILES ${UI_FILES}) qt5_wrap_cpp(UI_HEADER_FILES ${DESIGN_HEADER_FILES}) add_executable(LicenseManager ${LICENCE_SOURCE_FILES} LicenseManager.cpp manager/ui/LicenseGenerator.cpp manager/ui/LoginWindow.cpp manager/ui/Overview.cpp manager/ui/UiLicenseInfo.cpp manager/ServerConnection.cpp manager/ServerConnectionHandler.cpp manager/ServerConnectionExecutor.cpp ${UI_WARPED_FILES} ${UI_HEADER_FILES} ${PROTO_SRCS} ${PROTO_HDRS}) target_link_libraries(LicenseManager Qt5::Widgets Qt5::Core Qt5::Gui) target_link_libraries(LicenseManager ${LIBRARY_PATH_THREAD_POOL} #Static TeaSpeak #Static ${LIBRARY_PATH_TERMINAL} #Static ${LIBRARY_PATH_BORINGSSL_CRYPTO} ${PROJECT_SOURCE_DIR}/../../libraries/event/build/lib/libevent.a ${PROJECT_SOURCE_DIR}/../../libraries/event/build/lib/libevent_pthreads.a pthread ${LIBRARY_PATH_VARIBALES} ${LIBRARY_PATH_BREAKPAD} ${LIBRARY_PATH_PROTOBUF} ${LIBRARY_TOM_MATH} ${LIBRARY_TOM_CRYPT} ${LIBRARY_PATH_ED255} stdc++fs jsoncpp.a ${LIBRARY_PATH_DATA_PIPES} ${LIBRARY_PATH_BORINGSSL_SSL} ${LIBRARY_PATH_BORINGSSL_CRYPTO} ) endif() add_executable(LicenseCLI LicenseCreatorCLI.cpp manager/ServerConnection.cpp manager/ServerConnectionExecutor.cpp manager/ServerConnectionHandler.cpp shared/License.cpp ${PROTO_SRCS} ${PROTO_HDRS} ) target_link_libraries(LicenseCLI TeaSpeak libevent::core libevent::pthreads threadpool::static #Static tomcrypt::static tommath::static protobuf::libprotobuf ${ed25519_LIBRARIES_STATIC} pthread )