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(Qt5 COMPONENTS Widgets Network Test QUIET) if(NOT Qt5_FOUND) find_package(Qt6 COMPONENTS Widgets Network Test REQUIRED) set(QT_LIBS Qt6::Widgets Qt6::Network) set(QT_TEST_LIB Qt6::Test) else() set(QT_LIBS Qt5::Widgets Qt5::Network) set(QT_TEST_LIB Qt5::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/channeldelegate.cpp src/chatview.cpp src/messagedelegate.cpp src/messagelist.cpp src/accountlist.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 transport/msg_client.cpp transport/crypto.cpp transport/chat_propagator.cpp transport/utun_node.cpp transport/node_config.cpp db/db_manager.cpp db/sqlite3.c resources/chatgui.qrc ) target_include_directories(chatgui PRIVATE ${CMAKE_SOURCE_DIR}/db) target_compile_definitions(chatgui PRIVATE SQLITE_THREADSAFE=1) set_source_files_properties(db/sqlite3.c PROPERTIES LANGUAGE C) target_link_libraries(chatgui PRIVATE ${QT_LIBS} rlottie::rlottie ZLIB::ZLIB OpenSSL::Crypto ZXing::ZXing utun pthread dl) # ============================================================================ # Tests # ============================================================================ enable_testing() add_executable(test_crypto tests/test_crypto.cpp transport/crypto.cpp ) target_include_directories(test_crypto PRIVATE ${CMAKE_SOURCE_DIR}) target_link_libraries(test_crypto PRIVATE Qt5::Core ${QT_TEST_LIB} OpenSSL::Crypto pthread) add_test(NAME test_crypto COMMAND test_crypto)