Add support for CMake (buildsystem generator) (#2468)
Co-authored-by: Edgar <Edgar@AnotherFoxGuy.com>
This commit is contained in:
+108
-72
@@ -1,84 +1,120 @@
|
||||
cmake_minimum_required(VERSION 3.8)
|
||||
cmake_policy(SET CMP0087 NEW)
|
||||
include(FeatureSummary)
|
||||
|
||||
project(chatterino)
|
||||
|
||||
include_directories(src)
|
||||
|
||||
set(chatterino_SOURCES
|
||||
src/common/NetworkRequest.cpp
|
||||
src/common/NetworkResult.cpp
|
||||
src/common/NetworkPrivate.cpp
|
||||
src/common/NetworkManager.cpp
|
||||
src/common/QLogging.cpp
|
||||
src/common/Modes.cpp
|
||||
src/common/ChatterinoSetting.cpp
|
||||
|
||||
src/util/DebugCount.cpp
|
||||
|
||||
src/singletons/Paths.cpp
|
||||
|
||||
src/BaseSettings.cpp
|
||||
|
||||
src/common/UsernameSet.cpp
|
||||
src/controllers/highlights/HighlightPhrase.cpp
|
||||
|
||||
|
||||
src/providers/emoji/Emojis.cpp
|
||||
|
||||
src/messages/Emote.cpp
|
||||
src/messages/Image.cpp
|
||||
src/messages/ImageSet.cpp
|
||||
src/util/RapidjsonHelpers.cpp
|
||||
|
||||
${CMAKE_CURRENT_LIST_DIR}/resources/resources.qrc
|
||||
${CMAKE_CURRENT_LIST_DIR}/resources/resources_autogenerated.qrc
|
||||
list(APPEND CMAKE_MODULE_PATH
|
||||
"${CMAKE_SOURCE_DIR}/cmake"
|
||||
)
|
||||
|
||||
find_package(Qt5 5.9.0 REQUIRED COMPONENTS
|
||||
Core Widgets Network Concurrent
|
||||
project(chatterino VERSION 2.2.3)
|
||||
|
||||
option(BUILD_APP "Build Chatterino" ON)
|
||||
option(BUILD_TESTS "Build the tests for Chatterino" OFF)
|
||||
option(USE_SYSTEM_PAJLADA_SETTINGS "Use system pajlada settings library" OFF)
|
||||
option(USE_SYSTEM_LIBCOMMUNI "Use system communi library" OFF)
|
||||
option(USE_SYSTEM_QT5KEYCHAIN "Use system Qt5Keychain library" OFF)
|
||||
|
||||
option(USE_CONAN "Use conan" OFF)
|
||||
|
||||
if (USE_CONAN OR CONAN_EXPORTED)
|
||||
include(${CMAKE_CURRENT_BINARY_DIR}/conanbuildinfo.cmake)
|
||||
conan_basic_setup(TARGETS NO_OUTPUT_DIRS)
|
||||
endif()
|
||||
|
||||
find_program(CCACHE_PROGRAM ccache)
|
||||
if (CCACHE_PROGRAM)
|
||||
set(CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_PROGRAM}")
|
||||
message("Using ${CCACHE_PROGRAM} for speeding up build")
|
||||
endif ()
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/cmake/GIT.cmake)
|
||||
|
||||
find_package(Qt5 REQUIRED
|
||||
COMPONENTS
|
||||
Core
|
||||
Widgets
|
||||
Gui
|
||||
Network
|
||||
Multimedia
|
||||
Svg
|
||||
Concurrent
|
||||
)
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
if (WIN32)
|
||||
find_package(WinToast REQUIRED)
|
||||
endif ()
|
||||
|
||||
# Find boost on the system
|
||||
find_package(Boost REQUIRED)
|
||||
|
||||
# Find OpenSSL on the system
|
||||
find_package(OpenSSL REQUIRED)
|
||||
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
find_library(LIBRT rt)
|
||||
|
||||
if (BUILD_APP)
|
||||
if (USE_SYSTEM_LIBCOMMUNI)
|
||||
find_package(LibCommuni REQUIRED)
|
||||
else()
|
||||
set(LIBCOMMUNI_ROOT_LIB_FOLDER "${CMAKE_SOURCE_DIR}/lib/libcommuni")
|
||||
if (NOT EXISTS "${LIBCOMMUNI_ROOT_LIB_FOLDER}/CMakeLists.txt")
|
||||
message(FATAL_ERROR "Submodules probably not loaded, unable to find lib/libcommuni/CMakeLists.txt")
|
||||
endif()
|
||||
|
||||
add_subdirectory("${LIBCOMMUNI_ROOT_LIB_FOLDER}" EXCLUDE_FROM_ALL)
|
||||
endif()
|
||||
|
||||
# Link QtKeychain statically
|
||||
option(QTKEYCHAIN_STATIC "" ON)
|
||||
|
||||
if (USE_SYSTEM_QT5KEYCHAIN)
|
||||
find_package(Qt5Keychain REQUIRED)
|
||||
else()
|
||||
set(QT5KEYCHAIN_ROOT_LIB_FOLDER "${CMAKE_SOURCE_DIR}/lib/qtkeychain")
|
||||
if (NOT EXISTS "${QT5KEYCHAIN_ROOT_LIB_FOLDER}/CMakeLists.txt")
|
||||
message(FATAL_ERROR "Submodules probably not loaded, unable to find lib/qtkeychain/CMakeLists.txt")
|
||||
endif()
|
||||
|
||||
add_subdirectory("${QT5KEYCHAIN_ROOT_LIB_FOLDER}" EXCLUDE_FROM_ALL)
|
||||
if (NOT TARGET qt5keychain)
|
||||
message(FATAL_ERROR "qt5keychain target was not created :@")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_package(RapidJSON REQUIRED)
|
||||
|
||||
find_package(Websocketpp REQUIRED)
|
||||
endif ()
|
||||
|
||||
if (BUILD_TESTS)
|
||||
set(BUILD_TESTS OFF)
|
||||
message("++ Tests enabled")
|
||||
find_package(GTest)
|
||||
enable_testing()
|
||||
find_package(GTest REQUIRED)
|
||||
endif ()
|
||||
|
||||
add_executable(chatterino-test
|
||||
${chatterino_SOURCES}
|
||||
find_package(PajladaSerialize REQUIRED)
|
||||
find_package(PajladaSignals REQUIRED)
|
||||
find_package(LRUCache REQUIRED)
|
||||
|
||||
tests/src/main.cpp
|
||||
tests/src/Emojis.cpp
|
||||
tests/src/NetworkRequest.cpp
|
||||
tests/src/UsernameSet.cpp
|
||||
tests/src/HighlightPhrase.cpp
|
||||
)
|
||||
|
||||
target_compile_definitions(chatterino-test PRIVATE CHATTERINO_GIT_HASH="test" AB_CUSTOM_SETTINGS CHATTERINO_TEST)
|
||||
|
||||
target_link_libraries(chatterino-test Qt5::Core Qt5::Widgets Qt5::Network Qt5::Concurrent)
|
||||
|
||||
target_link_libraries(chatterino-test gtest gtest_main)
|
||||
|
||||
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/lib/settings)
|
||||
target_link_libraries(chatterino-test PajladaSettings)
|
||||
target_include_directories(chatterino-test PUBLIC PajladaSettings)
|
||||
|
||||
find_package(Threads)
|
||||
|
||||
target_link_libraries(chatterino-test Threads::Threads)
|
||||
|
||||
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/lib/serialize PajladaSerialize)
|
||||
|
||||
target_link_libraries(chatterino-test PajladaSerialize)
|
||||
|
||||
set_property(TARGET chatterino-test PROPERTY CXX_STANDARD 17)
|
||||
set_property(TARGET chatterino-test PROPERTY CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
# gtest_discover_tests(chatterino-test)
|
||||
if (USE_SYSTEM_PAJLADA_SETTINGS)
|
||||
find_package(PajladaSettings REQUIRED)
|
||||
else()
|
||||
message(FATAL_ERROR "This cmake file is only intended for tests right now. Use qmake to build chatterino2")
|
||||
if (NOT EXISTS "${CMAKE_SOURCE_DIR}/lib/settings/CMakeLists.txt")
|
||||
message(FATAL_ERROR "Submodules probably not loaded, unable to find lib/settings/CMakeLists.txt")
|
||||
endif()
|
||||
|
||||
add_subdirectory("${CMAKE_SOURCE_DIR}/lib/settings" EXCLUDE_FROM_ALL)
|
||||
endif()
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
if (BUILD_APP)
|
||||
add_subdirectory(src)
|
||||
endif ()
|
||||
if (BUILD_TESTS)
|
||||
enable_testing()
|
||||
add_subdirectory(tests)
|
||||
endif ()
|
||||
|
||||
feature_summary(WHAT ALL)
|
||||
|
||||
Reference in New Issue
Block a user