Merge pull request #1089 from syldrathecat/cmake-coeurl

Move dependencies above mtxclient in CMake, add header files to target
This commit is contained in:
DeepBlueV7.X 2022-06-11 07:11:24 +00:00 committed by GitHub
commit 9df8413741
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -20,6 +20,7 @@ set(
set(CMAKE_CXX_STANDARD 17 CACHE STRING "C++ standard") set(CMAKE_CXX_STANDARD 17 CACHE STRING "C++ standard")
set(CMAKE_CXX_STANDARD_REQUIRED ON CACHE BOOL "Require C++ standard to be supported") set(CMAKE_CXX_STANDARD_REQUIRED ON CACHE BOOL "Require C++ standard to be supported")
set(CMAKE_POSITION_INDEPENDENT_CODE ON CACHE BOOL "compile as PIC by default") set(CMAKE_POSITION_INDEPENDENT_CODE ON CACHE BOOL "compile as PIC by default")
set(CMAKE_AUTOMOC ON)
option(HUNTER_ENABLED "Enable Hunter package manager" OFF) option(HUNTER_ENABLED "Enable Hunter package manager" OFF)
include("cmake/HunterGate.cmake") include("cmake/HunterGate.cmake")
@ -179,6 +180,32 @@ if(USE_BUNDLED_SPDLOG)
endif() endif()
find_package(spdlog 1.0.0 CONFIG REQUIRED) find_package(spdlog 1.0.0 CONFIG REQUIRED)
if(USE_BUNDLED_COEURL)
include(FetchContent)
FetchContent_Declare(
coeurl
GIT_REPOSITORY https://nheko.im/Nheko-Reborn/coeurl.git
GIT_TAG v0.1.2
)
FetchContent_MakeAvailable(coeurl)
set(COEURL_TARGET_NAME coeurl::coeurl)
else()
# FindPkgConfig sets this as a cache variable, which breaks find_package
if(DEFINED coeurl_FOUND)
unset(coeurl_FOUND CACHE)
endif()
find_package(coeurl 0.1.1 CONFIG)
if (coeurl_FOUND)
set(COEURL_TARGET_NAME coeurl::coeurl)
endif()
endif()
if(NOT COEURL_TARGET_NAME)
find_package(PkgConfig REQUIRED)
pkg_check_modules(coeurl REQUIRED IMPORTED_TARGET coeurl>=0.1.1)
set(COEURL_TARGET_NAME PkgConfig::coeurl)
endif()
# #
# LMDB # LMDB
# #
@ -309,88 +336,156 @@ configure_file(cmake/nheko.h config/nheko.h)
set(SRC_FILES set(SRC_FILES
# Dialogs # Dialogs
src/dialogs/FallbackAuth.cpp src/dialogs/FallbackAuth.cpp
src/dialogs/FallbackAuth.h
src/dialogs/ReCaptcha.cpp src/dialogs/ReCaptcha.cpp
src/dialogs/ReCaptcha.h
# Emoji # Emoji
src/emoji/EmojiModel.cpp src/emoji/EmojiModel.cpp
src/emoji/EmojiModel.h
src/emoji/Provider.cpp src/emoji/Provider.cpp
src/emoji/Provider.h
# Timeline # Timeline
src/timeline/CommunitiesModel.cpp src/timeline/CommunitiesModel.cpp
src/timeline/EventStore.cpp src/timeline/CommunitiesModel.h
src/timeline/InputBar.cpp
src/timeline/Reaction.cpp
src/timeline/TimelineViewManager.cpp
src/timeline/TimelineModel.cpp
src/timeline/DelegateChooser.cpp src/timeline/DelegateChooser.cpp
src/timeline/DelegateChooser.h
src/timeline/EventStore.cpp
src/timeline/EventStore.h
src/timeline/InputBar.cpp
src/timeline/InputBar.h
src/timeline/Permissions.cpp src/timeline/Permissions.cpp
src/timeline/Permissions.h
src/timeline/PresenceEmitter.cpp src/timeline/PresenceEmitter.cpp
src/timeline/PresenceEmitter.h
src/timeline/Reaction.cpp
src/timeline/Reaction.h
src/timeline/RoomlistModel.cpp src/timeline/RoomlistModel.cpp
src/timeline/RoomlistModel.h
src/timeline/TimelineModel.cpp
src/timeline/TimelineModel.h
src/timeline/TimelineViewManager.cpp
src/timeline/TimelineViewManager.h
# UI components # UI components
src/ui/HiddenEvents.cpp src/ui/HiddenEvents.cpp
src/ui/HiddenEvents.h
src/ui/MxcAnimatedImage.cpp src/ui/MxcAnimatedImage.cpp
src/ui/MxcAnimatedImage.h
src/ui/MxcMediaProxy.cpp src/ui/MxcMediaProxy.cpp
src/ui/MxcMediaProxy.h
src/ui/NhekoCursorShape.cpp src/ui/NhekoCursorShape.cpp
src/ui/NhekoEventObserver.cpp src/ui/NhekoCursorShape.h
src/ui/NhekoDropArea.cpp src/ui/NhekoDropArea.cpp
src/ui/NhekoDropArea.h
src/ui/NhekoEventObserver.cpp
src/ui/NhekoEventObserver.h
src/ui/NhekoGlobalObject.cpp src/ui/NhekoGlobalObject.cpp
src/ui/NhekoGlobalObject.h
src/ui/RoomSettings.cpp src/ui/RoomSettings.cpp
src/ui/RoomSettings.h
src/ui/Theme.cpp src/ui/Theme.cpp
src/ui/Theme.h
src/ui/ThemeManager.cpp src/ui/ThemeManager.cpp
src/ui/ThemeManager.h
src/ui/UIA.cpp src/ui/UIA.cpp
src/ui/UIA.h
src/ui/UserProfile.cpp src/ui/UserProfile.cpp
src/ui/UserProfile.h
src/voip/CallDevices.cpp src/voip/CallDevices.cpp
src/voip/CallDevices.h
src/voip/CallManager.cpp src/voip/CallManager.cpp
src/voip/CallManager.h
src/voip/WebRTCSession.cpp src/voip/WebRTCSession.cpp
src/voip/WebRTCSession.h
src/encryption/DeviceVerificationFlow.cpp src/encryption/DeviceVerificationFlow.cpp
src/encryption/DeviceVerificationFlow.h
src/encryption/Olm.cpp src/encryption/Olm.cpp
src/encryption/Olm.h
src/encryption/SelfVerificationStatus.cpp src/encryption/SelfVerificationStatus.cpp
src/encryption/SelfVerificationStatus.h
src/encryption/VerificationManager.cpp src/encryption/VerificationManager.cpp
src/encryption/VerificationManager.h
# Generic notification stuff # Generic notification stuff
src/notifications/Manager.cpp src/notifications/Manager.cpp
src/notifications/Manager.h
src/dock/Dock.cpp src/dock/Dock.cpp
src/dock/Dock.h
src/AvatarProvider.cpp src/AvatarProvider.cpp
src/AvatarProvider.h
src/BlurhashProvider.cpp src/BlurhashProvider.cpp
src/BlurhashProvider.h
src/Cache.cpp src/Cache.cpp
src/Cache.h
src/CacheCryptoStructs.h
src/CacheStructs.h
src/Cache_p.h
src/ChatPage.cpp src/ChatPage.cpp
src/ChatPage.h
src/Clipboard.cpp src/Clipboard.cpp
src/Clipboard.h
src/ColorImageProvider.cpp src/ColorImageProvider.cpp
src/CompletionProxyModel.cpp src/ColorImageProvider.h
src/EventAccessors.cpp
src/InviteesModel.cpp
src/JdenticonProvider.cpp
src/Logging.cpp
src/LoginPage.cpp
src/MainWindow.cpp
src/MatrixClient.cpp
src/MemberList.cpp
src/MxcImageProvider.cpp
src/PowerlevelsEditModels.cpp
src/ReadReceiptsModel.cpp
src/RegisterPage.cpp
src/SSOHandler.cpp
src/CombinedImagePackModel.cpp src/CombinedImagePackModel.cpp
src/SingleImagePackModel.cpp src/CombinedImagePackModel.h
src/CompletionModelRoles.h
src/CompletionProxyModel.cpp
src/CompletionProxyModel.h
src/Config.h
src/EventAccessors.cpp
src/EventAccessors.h
src/ImagePackListModel.cpp src/ImagePackListModel.cpp
src/TrayIcon.cpp src/ImagePackListModel.h
src/UserSettingsPage.cpp src/InviteesModel.cpp
src/UsersModel.cpp src/InviteesModel.h
src/JdenticonProvider.cpp
src/JdenticonProvider.h
src/Logging.cpp
src/Logging.h
src/LoginPage.cpp
src/LoginPage.h
src/MainWindow.cpp
src/MainWindow.h
src/MatrixClient.cpp
src/MatrixClient.h
src/MemberList.cpp
src/MemberList.h
src/MxcImageProvider.cpp
src/MxcImageProvider.h
src/PowerlevelsEditModels.cpp
src/PowerlevelsEditModels.h
src/ReadReceiptsModel.cpp
src/ReadReceiptsModel.h
src/RegisterPage.cpp
src/RegisterPage.h
src/RoomDirectoryModel.cpp src/RoomDirectoryModel.cpp
src/RoomDirectoryModel.h
src/RoomsModel.cpp src/RoomsModel.cpp
src/RoomsModel.h
src/SSOHandler.cpp
src/SSOHandler.h
src/SingleImagePackModel.cpp
src/SingleImagePackModel.h
src/TrayIcon.cpp
src/TrayIcon.h
src/UserSettingsPage.cpp
src/UserSettingsPage.h
src/UsersModel.cpp
src/UsersModel.h
src/Utils.cpp src/Utils.cpp
src/Utils.h
includes/jdenticoninterface.h
src/main.cpp src/main.cpp
third_party/blurhash/blurhash.cpp
) )
include(FeatureSummary) include(FeatureSummary)
@ -398,19 +493,6 @@ if(USE_BUNDLED_OPENSSL)
hunter_add_package_safe(OpenSSL) hunter_add_package_safe(OpenSSL)
endif() endif()
find_package(OpenSSL 1.1.0 REQUIRED) find_package(OpenSSL 1.1.0 REQUIRED)
if(USE_BUNDLED_MTXCLIENT)
include(FetchContent)
FetchContent_Declare(
MatrixClient
GIT_REPOSITORY https://github.com/Nheko-Reborn/mtxclient.git
GIT_TAG 754800d226f71864d8b6925e47542d509333e998
)
set(BUILD_LIB_EXAMPLES OFF CACHE INTERNAL "")
set(BUILD_LIB_TESTS OFF CACHE INTERNAL "")
FetchContent_MakeAvailable(MatrixClient)
else()
find_package(MatrixClient 0.6.2 REQUIRED)
endif()
if(USE_BUNDLED_OLM) if(USE_BUNDLED_OLM)
include(FetchContent) include(FetchContent)
FetchContent_Declare( FetchContent_Declare(
@ -489,6 +571,20 @@ else()
add_library(lmdbxx::lmdbxx ALIAS lmdbxx) add_library(lmdbxx::lmdbxx ALIAS lmdbxx)
endif() endif()
if(USE_BUNDLED_MTXCLIENT)
include(FetchContent)
FetchContent_Declare(
MatrixClient
GIT_REPOSITORY https://github.com/Nheko-Reborn/mtxclient.git
GIT_TAG 754800d226f71864d8b6925e47542d509333e998
)
set(BUILD_LIB_EXAMPLES OFF CACHE INTERNAL "")
set(BUILD_LIB_TESTS OFF CACHE INTERNAL "")
FetchContent_MakeAvailable(MatrixClient)
else()
find_package(MatrixClient 0.6.2 REQUIRED)
endif()
if (VOIP) if (VOIP)
include(FindPkgConfig) include(FindPkgConfig)
pkg_check_modules(GSTREAMER REQUIRED IMPORTED_TARGET gstreamer-sdp-1.0>=1.18 gstreamer-webrtc-1.0>=1.18) pkg_check_modules(GSTREAMER REQUIRED IMPORTED_TARGET gstreamer-sdp-1.0>=1.18 gstreamer-webrtc-1.0>=1.18)
@ -508,81 +604,6 @@ if (NOT APPLE AND NOT WIN32)
add_compile_definitions(NHEKO_DBUS_SYS) add_compile_definitions(NHEKO_DBUS_SYS)
endif() endif()
qt5_wrap_cpp(MOC_HEADERS
# Dialogs
src/dialogs/FallbackAuth.h
src/dialogs/ReCaptcha.h
# Emoji
src/emoji/EmojiModel.h
src/emoji/Provider.h
# Timeline
src/timeline/CommunitiesModel.h
src/timeline/EventStore.h
src/timeline/InputBar.h
src/timeline/Reaction.h
src/timeline/TimelineViewManager.h
src/timeline/TimelineModel.h
src/timeline/DelegateChooser.h
src/timeline/Permissions.h
src/timeline/PresenceEmitter.h
src/timeline/RoomlistModel.h
# UI components
src/ui/HiddenEvents.h
src/ui/MxcAnimatedImage.h
src/ui/MxcMediaProxy.h
src/ui/NhekoCursorShape.h
src/ui/NhekoEventObserver.h
src/ui/NhekoDropArea.h
src/ui/NhekoGlobalObject.h
src/ui/RoomSettings.h
src/ui/Theme.h
src/ui/ThemeManager.h
src/ui/UIA.h
src/ui/UserProfile.h
src/voip/CallDevices.h
src/voip/CallManager.h
src/voip/WebRTCSession.h
src/encryption/DeviceVerificationFlow.h
src/encryption/Olm.h
src/encryption/SelfVerificationStatus.h
src/encryption/VerificationManager.h
src/notifications/Manager.h
src/dock/Dock.h
src/AvatarProvider.h
src/BlurhashProvider.h
src/CacheCryptoStructs.h
src/Cache_p.h
src/ChatPage.h
src/Clipboard.h
src/CombinedImagePackModel.h
src/CompletionProxyModel.h
src/ImagePackListModel.h
src/InviteesModel.h
src/JdenticonProvider.h
src/LoginPage.h
src/MainWindow.h
src/MemberList.h
src/MxcImageProvider.h
src/RegisterPage.h
src/RoomsModel.h
src/SSOHandler.h
src/SingleImagePackModel.h
src/TrayIcon.h
src/UserSettingsPage.h
src/UsersModel.h
src/PowerlevelsEditModels.h
src/RoomDirectoryModel.h
src/RoomsModel.h
src/ReadReceiptsModel.h
)
# #
# Bundle translations. # Bundle translations.
# #
@ -591,9 +612,9 @@ set(TRANSLATION_DEPS ${LANG_QRC} ${QRC} ${QM_SRC})
if (APPLE) if (APPLE)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Foundation -framework Cocoa -framework UserNotifications") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Foundation -framework Cocoa -framework UserNotifications")
set(SRC_FILES ${SRC_FILES} src/notifications/ManagerMac.mm src/notifications/ManagerMac.cpp src/emoji/MacHelper.mm) set(SRC_FILES ${SRC_FILES} src/notifications/ManagerMac.mm src/notifications/ManagerMac.cpp src/emoji/MacHelper.mm src/emoji/MacHelper.h)
if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.16.0") if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.16.0")
set_source_files_properties( src/notifications/ManagerMac.mm src/emoji/MacHelper.mm PROPERTIES SKIP_PRECOMPILE_HEADERS ON) set_source_files_properties( src/notifications/ManagerMac.mm src/emoji/MacHelper.mm src/emoji/MacHelper.h PROPERTIES SKIP_PRECOMPILE_HEADERS ON)
endif() endif()
elseif (WIN32) elseif (WIN32)
file(DOWNLOAD file(DOWNLOAD
@ -606,23 +627,19 @@ elseif (WIN32)
${PROJECT_SOURCE_DIR}/src/wintoastlib.h ${PROJECT_SOURCE_DIR}/src/wintoastlib.h
EXPECTED_HASH SHA256=b4481023c5782733795838be22bf1a75f45d87458cd4d9a5a75f664a146eea11) EXPECTED_HASH SHA256=b4481023c5782733795838be22bf1a75f45d87458cd4d9a5a75f664a146eea11)
set(SRC_FILES ${SRC_FILES} src/notifications/ManagerWin.cpp src/wintoastlib.cpp) set(SRC_FILES ${SRC_FILES} src/notifications/ManagerWin.cpp src/wintoastlib.cpp src/wintoastlib.h)
else () else ()
set(SRC_FILES ${SRC_FILES} set(SRC_FILES ${SRC_FILES}
src/dbus/NhekoDBusApi.h
src/dbus/NhekoDBusBackend.h
src/dbus/NhekoDBusApi.cpp src/dbus/NhekoDBusApi.cpp
src/dbus/NhekoDBusBackend.cpp src/dbus/NhekoDBusBackend.cpp
src/notifications/ManagerLinux.cpp src/notifications/ManagerLinux.cpp
) )
qt5_wrap_cpp(MOC_HEADERS
src/dbus/NhekoDBusApi.h
src/dbus/NhekoDBusBackend.h
)
endif () endif ()
set(NHEKO_DEPS set(NHEKO_DEPS
${SRC_FILES} ${SRC_FILES}
${UI_HEADERS}
${MOC_HEADERS}
${TRANSLATION_DEPS} ${TRANSLATION_DEPS}
${META_FILES_TO_INCLUDE}) ${META_FILES_TO_INCLUDE})
@ -655,7 +672,14 @@ else()
target_compile_definitions(nheko PRIVATE NHEKO_FLATPAK) target_compile_definitions(nheko PRIVATE NHEKO_FLATPAK)
endif() endif()
endif() endif()
target_include_directories(nheko PRIVATE src includes third_party/blurhash third_party/cpp-httplib-0.5.12) target_include_directories(nheko PRIVATE src includes third_party/blurhash third_party/cpp-httplib-0.5.12)
set(THIRD_PARTY_SRC_FILES
third_party/blurhash/blurhash.cpp
third_party/blurhash/blurhash.hpp
third_party/cpp-httplib-0.5.12/httplib.h
)
target_sources(nheko PRIVATE ${THIRD_PARTY_SRC_FILES})
# Fixup bundled keychain include dirs # Fixup bundled keychain include dirs
if (USE_BUNDLED_QTKEYCHAIN) if (USE_BUNDLED_QTKEYCHAIN)
@ -663,6 +687,7 @@ if (USE_BUNDLED_QTKEYCHAIN)
endif() endif()
target_link_libraries(nheko PRIVATE target_link_libraries(nheko PRIVATE
${COEURL_TARGET_NAME}
MatrixClient::MatrixClient MatrixClient::MatrixClient
cmark::cmark cmark::cmark
spdlog::spdlog spdlog::spdlog
@ -696,24 +721,6 @@ if (TARGET PkgConfig::GSTREAMER)
endif() endif()
endif() endif()
if(USE_BUNDLED_COEURL)
include(FetchContent)
FetchContent_Declare(
coeurl
GIT_REPOSITORY https://nheko.im/Nheko-Reborn/coeurl.git
GIT_TAG v0.1.2
)
FetchContent_MakeAvailable(coeurl)
target_link_libraries(nheko PUBLIC coeurl::coeurl)
elseif(coeurl_DIR)
find_package(coeurl CONFIG REQUIRED)
target_link_libraries(nheko PUBLIC coeurl::coeurl)
else()
find_package(PkgConfig REQUIRED)
pkg_check_modules(coeurl REQUIRED IMPORTED_TARGET coeurl>=0.1.1)
target_link_libraries(nheko PUBLIC PkgConfig::coeurl)
endif()
if(MSVC) if(MSVC)
target_link_libraries(nheko PRIVATE ntdll) target_link_libraries(nheko PRIVATE ntdll)
endif() endif()