135 lines
4.5 KiB
CMake
135 lines
4.5 KiB
CMake
cmake_minimum_required(VERSION 3.16)
|
|
project(chatgui VERSION 0.1.0 LANGUAGES C CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_AUTOMOC ON)
|
|
set(CMAKE_AUTORCC ON)
|
|
set(CMAKE_C_STANDARD 99)
|
|
|
|
find_package(OpenSSL REQUIRED)
|
|
|
|
find_package(Qt6 COMPONENTS Widgets Network Test QUIET)
|
|
if(NOT Qt6_FOUND)
|
|
find_package(Qt5 COMPONENTS Widgets Network Test REQUIRED)
|
|
set(QT_LIBS Qt5::Widgets Qt5::Network)
|
|
set(QT_CORE Qt5::Core)
|
|
set(QT_TEST_LIB Qt5::Test)
|
|
else()
|
|
set(QT_LIBS Qt6::Widgets Qt6::Network)
|
|
set(QT_CORE Qt6::Core)
|
|
set(QT_TEST_LIB Qt6::Test)
|
|
endif()
|
|
|
|
find_package(rlottie REQUIRED)
|
|
find_package(ZLIB REQUIRED)
|
|
find_package(OpenSSL REQUIRED)
|
|
|
|
set(ZXING_READERS ON CACHE BOOL "")
|
|
set(ZXING_WRITERS "OLD" CACHE STRING "")
|
|
set(ZXING_ENABLE_QRCODE ON CACHE BOOL "")
|
|
set(ZXING_ENABLE_AZTEC OFF CACHE BOOL "")
|
|
set(ZXING_ENABLE_DATAMATRIX OFF CACHE BOOL "")
|
|
set(ZXING_ENABLE_MAXICODE OFF CACHE BOOL "")
|
|
set(ZXING_ENABLE_PDF417 OFF CACHE BOOL "")
|
|
set(ZXING_ENABLE_1D OFF CACHE BOOL "")
|
|
set(ZXING_C_API OFF CACHE BOOL "")
|
|
set(ZXING_EXAMPLES OFF CACHE BOOL "")
|
|
set(ZXING_EXAMPLES_QT OFF CACHE BOOL "")
|
|
set(ZXING_BLACKBOX_TESTS OFF CACHE BOOL "")
|
|
set(ZXING_UNIT_TESTS OFF CACHE BOOL "")
|
|
set(BUILD_SHARED_LIBS OFF CACHE BOOL "")
|
|
add_subdirectory(zxing-cpp)
|
|
set_target_properties(ZXing PROPERTIES AUTOMOC OFF)
|
|
|
|
# uTun core library (C, built from ../src/ and ../lib/)
|
|
add_subdirectory(libutun)
|
|
|
|
add_executable(chatgui
|
|
src/main.cpp
|
|
src/mainwindow.cpp
|
|
src/channellist.cpp
|
|
src/creategroupdialog.cpp
|
|
src/channeldelegate.cpp
|
|
src/chatview.cpp
|
|
src/messagedelegate.cpp
|
|
src/messagelist.cpp
|
|
src/accountlist.cpp
|
|
src/accountdelegate.cpp
|
|
src/memberpropsdialog.cpp
|
|
src/memberlistmodel.cpp
|
|
src/emoji.cpp
|
|
src/emojipanel.cpp
|
|
src/emojitabbar.cpp
|
|
src/inputbar.cpp
|
|
src/lottieicon.cpp
|
|
src/animtimer.cpp
|
|
src/qrcode_utils.cpp
|
|
src/invite_link.cpp
|
|
src/invitedialog.cpp
|
|
src/joindialog.cpp
|
|
src/settingsdialog.cpp
|
|
src/networksettingspage.cpp
|
|
src/databasesettingspage.cpp
|
|
src/statuspage.cpp
|
|
src/nodespage.cpp
|
|
src/soundsettingspage.cpp
|
|
src/sound_manager.cpp
|
|
transport/utun_node.cpp
|
|
transport/node_config.cpp
|
|
transport/config_updater.cpp
|
|
transport/gui_bridge_impl.cpp
|
|
transport/chat_core.c
|
|
transport/chat_conn_mgr.c
|
|
transport/chat_sync.c
|
|
transport/member_sync.c
|
|
transport/merkle_sync.c
|
|
transport/miniaudio_impl.c
|
|
db/db_manager.cpp
|
|
../../lib/sqlite3.c
|
|
resources/chatgui.qrc
|
|
)
|
|
|
|
target_include_directories(chatgui PRIVATE ${CMAKE_SOURCE_DIR}/../../lib ${CMAKE_SOURCE_DIR}/../../src ${CMAKE_SOURCE_DIR}/db)
|
|
target_compile_definitions(chatgui PRIVATE SQLITE_THREADSAFE=1 USE_SQLITE)
|
|
set_source_files_properties(../../lib/sqlite3.c transport/chat_core.c transport/chat_conn_mgr.c transport/chat_sync.c transport/member_sync.c transport/merkle_sync.c transport/miniaudio_impl.c PROPERTIES LANGUAGE C)
|
|
if(WIN32)
|
|
target_link_libraries(chatgui PRIVATE ${QT_LIBS} rlottie::rlottie ZLIB::ZLIB OpenSSL::Crypto ZXing::ZXing utun pthread)
|
|
else()
|
|
target_link_libraries(chatgui PRIVATE ${QT_LIBS} rlottie::rlottie ZLIB::ZLIB OpenSSL::Crypto ZXing::ZXing utun pthread dl)
|
|
endif()
|
|
|
|
# ============================================================================
|
|
# Tests
|
|
# ============================================================================
|
|
add_executable(test_member_sync
|
|
../../lib/sqlite3.c
|
|
../../tests/test_member_sync.c
|
|
)
|
|
target_include_directories(test_member_sync PRIVATE
|
|
transport ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/../../lib
|
|
${CMAKE_SOURCE_DIR}/../../src
|
|
zxing-cpp/core/src ../../tests
|
|
)
|
|
target_compile_definitions(test_member_sync PRIVATE USE_SQLITE SQLITE_THREADSAFE=1)
|
|
set_source_files_properties(../../lib/sqlite3.c ../../tests/test_member_sync.c PROPERTIES LANGUAGE C)
|
|
if(WIN32)
|
|
target_link_libraries(test_member_sync PRIVATE OpenSSL::Crypto pthread)
|
|
else()
|
|
target_link_libraries(test_member_sync PRIVATE OpenSSL::Crypto pthread dl)
|
|
endif()
|
|
|
|
# ============================================================================
|
|
# Tests
|
|
# ============================================================================
|
|
|
|
enable_testing()
|
|
|
|
add_executable(test_config_updater
|
|
tests/test_config_updater.cpp
|
|
transport/config_updater.cpp
|
|
)
|
|
target_include_directories(test_config_updater PRIVATE ${CMAKE_SOURCE_DIR})
|
|
target_link_libraries(test_config_updater PRIVATE ${QT_CORE} pthread)
|
|
add_test(NAME test_config_updater COMMAND test_config_updater)
|