865 lines
25 KiB
CMake
865 lines
25 KiB
CMake
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.9)
|
|
|
|
PROJECT(seafile-client)
|
|
SET(SEAFILE_CLIENT_VERSION_MAJOR 9)
|
|
SET(SEAFILE_CLIENT_VERSION_MINOR 0)
|
|
SET(SEAFILE_CLIENT_VERSION_PATCH 12)
|
|
SET(PROJECT_VERSION "${SEAFILE_CLIENT_VERSION_MAJOR}.${SEAFILE_CLIENT_VERSION_MINOR}.${SEAFILE_CLIENT_VERSION_PATCH}")
|
|
ADD_DEFINITIONS(-DSEAFILE_CLIENT_VERSION=${PROJECT_VERSION})
|
|
ADD_DEFINITIONS(-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26)
|
|
INCLUDE(FindPkgConfig)
|
|
|
|
## Build crash repoter on release build as default
|
|
IF (NOT (${CMAKE_BUILD_TYPE} MATCHES Release))
|
|
SET(CMAKE_BUILD_TYPE Debug)
|
|
ENDIF()
|
|
|
|
# CMake's builtin UNIX variable is true on Mac/Linux/BSD, but sometimes we want
|
|
# to detect for LINUX.
|
|
IF (UNIX AND NOT APPLE)
|
|
SET(LINUX TRUE)
|
|
ENDIF()
|
|
|
|
IF (APPLE)
|
|
SET(CMAKE_OSX_DEPLOYMENT_TARGET "11")
|
|
ENDIF()
|
|
|
|
FIND_PROGRAM(git_executable NAMES git git.exe git.cmd)
|
|
IF (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git AND NOT (${CMAKE_BUILD_TYPE} MATCHES Release))
|
|
EXECUTE_PROCESS(COMMAND
|
|
${git_executable} rev-list HEAD --count
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
OUTPUT_VARIABLE SEAFILE_CLIENT_REVISION
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE )
|
|
ADD_DEFINITIONS(-DSEAFILE_CLIENT_REVISION=${SEAFILE_CLIENT_REVISION})
|
|
ENDIF()
|
|
|
|
SET(PATH_TO_BREAKPAD_ROOT CACHE "Path to breakpad's root" "")
|
|
|
|
OPTION(BUILD_TESTING "Build Test" OFF)
|
|
|
|
OPTION(BUILD_DOCS "Build Documents" OFF)
|
|
|
|
OPTION(BUILD_SHIBBOLETH_SUPPORT "Build Shibboleth support" OFF)
|
|
|
|
option(BUILD_ENABLE_WARNINGS "Enable compiler warnings." ON)
|
|
|
|
option(USE_QT_WEBKIT "Build use QT webkit" OFF)
|
|
|
|
option(BUILD_SPARKLE_SUPPORT "Build Sparkle support" OFF)
|
|
IF (BUILD_SPARKLE_SUPPORT)
|
|
ADD_DEFINITIONS(-DHAVE_SPARKLE_SUPPORT)
|
|
IF (LINUX)
|
|
message(FATAL_ERROR "Sparkle Support is not available for linux." )
|
|
ENDIF()
|
|
SET(platform_specific_moc_headers ${platform_specific_moc_headers} src/auto-update-service.h)
|
|
SET(platform_specific_sources ${platform_specific_sources} src/auto-update-service.cpp)
|
|
IF (NOT (${CMAKE_BUILD_TYPE} MATCHES Release))
|
|
ADD_DEFINITIONS(-DSEAFILE_SPARKLE_DEBUG)
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
|
|
|
|
## build in PIC mode
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
|
|
|
|
## Setup warnings ouput if enabled
|
|
## but don't warning on unsupported warnings
|
|
if(BUILD_ENABLE_WARNINGS)
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wsign-compare -Wno-long-long -Wno-unused-parameter")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wsign-compare -Wno-long-long -Wno-unused-parameter -Woverloaded-virtual")
|
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unknown-warning-option")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-warning-option -Wno-inconsistent-missing-override")
|
|
endif()
|
|
endif()
|
|
|
|
## color diagnostics fix
|
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcolor-diagnostics")
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcolor-diagnostics")
|
|
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
execute_process(COMMAND ${CMAKE_CXX_COMPILER}
|
|
-dumpversion OUTPUT_VARIABLE GCC_VERSION)
|
|
if(GCC_VERSION VERSION_GREATER 4.9 OR GCC_VERSION VERSION_EQUAL 4.9)
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-color=always")
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=always")
|
|
endif()
|
|
endif()
|
|
|
|
IF (LINUX)
|
|
INCLUDE_DIRECTORIES(${QT_QTDBUS_INCLUDE_DIR})
|
|
LINK_DIRECTORIES(${QT_QTDBUS_LIBRARIES})
|
|
SET(EXTRA_LIBS ${EXTRA_LIBS} ${QT_QTDBUS_LIBRARIES})
|
|
ELSEIF (APPLE)
|
|
IF (BUILD_SPARKLE_SUPPORT)
|
|
SET(platform_specific_sources ${platform_specific_sources} src/mac-sparkle-support.mm)
|
|
SET_SOURCE_FILES_PROPERTIES(src/mac-sparkle-support.mm
|
|
PROPERTIES COMPILE_FLAGS -fobjc-arc)
|
|
|
|
SET(SPARKLE_FRAMEWORK /usr/local/Sparkle.framework)
|
|
IF(NOT EXISTS "${SPARKLE_FRAMEWORK}")
|
|
message(FATAL_ERROR "File ${SPARKLE_FRAMEWORK} not found. Please setup it correctly.")
|
|
ENDIF()
|
|
INCLUDE_DIRECTORIES(${SPARKLE_FRAMEWORK}/Headers)
|
|
SET(EXTRA_LIBS ${EXTRA_LIBS} ${SPARKLE_FRAMEWORK})
|
|
ENDIF()
|
|
|
|
SET(platform_specific_sources ${platform_specific_sources} src/application.cpp)
|
|
## Enforce ARC for this file, since ARC is only supported after the objc
|
|
## runtime changes in os x 10.10
|
|
SET_SOURCE_FILES_PROPERTIES(src/utils/utils-mac.mm
|
|
PROPERTIES COMPILE_FLAGS -fobjc-arc)
|
|
|
|
FIND_LIBRARY(COCOA_LIBRARY Cocoa)
|
|
MARK_AS_ADVANCED (COCOA_LIBRARY)
|
|
FIND_LIBRARY(Sec_LIBRARY Security)
|
|
MARK_AS_ADVANCED (Sec_LIBRARY)
|
|
SET(EXTRA_LIBS ${EXTRA_LIBS} ${COCOA_LIBRARY} ${Sec_LIBRARY})
|
|
ENDIF()
|
|
|
|
IF(APPLE)
|
|
ADD_DEFINITIONS(-DHAVE_FINDER_SYNC_SUPPORT)
|
|
SET(platform_specific_moc_headers ${platform_specific_moc_headers} src/finder-sync/finder-sync-host.h)
|
|
SET(platform_specific_sources ${platform_specific_sources}
|
|
src/finder-sync/finder-sync.cpp src/finder-sync/finder-sync-listener.mm
|
|
src/finder-sync/finder-sync-host.cpp)
|
|
SET_SOURCE_FILES_PROPERTIES(src/finder-sync/finder-sync-listener.mm
|
|
PROPERTIES COMPILE_FLAGS -fobjc-arc)
|
|
ENDIF()
|
|
|
|
####################
|
|
###### BEGIN: QT configuration
|
|
####################
|
|
FIND_PROGRAM(qmake_executable NAMES qmake qmake.exe)
|
|
EXECUTE_PROCESS(COMMAND
|
|
bash -c "${qmake_executable} --version | grep -iE '^using qt version [0-9.]+' | awk '{print $4}'"
|
|
OUTPUT_VARIABLE DETECTED_QT_VERSION
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
MESSAGE("Qt version: ${DETECTED_QT_VERSION}")
|
|
EXECUTE_PROCESS(COMMAND
|
|
bash -c "qmake --version|grep -iE '^using qt version [0-9]'|awk '{print $4}'|grep -iE '^[0-9]'|awk -F . '{print $1}'"
|
|
OUTPUT_VARIABLE QT_VERSION_MAJOR
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
MESSAGE("QT_VERSION_MAJOR: ${QT_VERSION_MAJOR}")
|
|
|
|
IF(USE_QT_WEBKIT)
|
|
ADD_DEFINITIONS(-DSEAFILE_USE_WEBKIT)
|
|
SET(WEBKIT_NAME "WebKit")
|
|
SET(WEBKIT_WIDGETS_NAME "WebKitWidgets")
|
|
ELSE()
|
|
SET(WEBKIT_NAME "WebEngine")
|
|
SET(WEBENGINE_CORE "WebEngineCore")
|
|
SET(WEBKIT_WIDGETS_NAME "WebEngineWidgets")
|
|
SET(SHIB_EXTRA_HEADER "src/shib/shib-helper.h")
|
|
ENDIF()
|
|
|
|
IF(QT_VERSION_MAJOR EQUAL 6)
|
|
SET(USE_QT_LIBRARIES Core Gui Widgets LinguistTools Network Core5Compat WebEngineCore WebEngineWidgets)
|
|
ELSE()
|
|
SET(USE_QT_LIBRARIES Core Gui Widgets LinguistTools Network)
|
|
ENDIF()
|
|
|
|
IF (BUILD_SHIBBOLETH_SUPPORT)
|
|
IF(QT_VERSION_MAJOR EQUAL 6)
|
|
SET(USE_QT_LIBRARIES ${USE_QT_LIBRARIES} ${WEBENGINE_CORE} ${WEBKIT_WIDGETS_NAME})
|
|
ELSE()
|
|
SET(USE_QT_LIBRARIES ${USE_QT_LIBRARIES} ${WEBENGINE_CORE} ${WEBKIT_NAME} ${WEBKIT_WIDGETS_NAME})
|
|
ENDIF()
|
|
ADD_DEFINITIONS(-DHAVE_SHIBBOLETH_SUPPORT)
|
|
ENDIF()
|
|
|
|
IF (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
|
SET(USE_QT_LIBRARIES ${USE_QT_LIBRARIES} "DBus")
|
|
ENDIF()
|
|
|
|
IF(QT_VERSION_MAJOR EQUAL 6)
|
|
FIND_PACKAGE(Qt6 COMPONENTS ${USE_QT_LIBRARIES} REQUIRED)
|
|
ELSE()
|
|
FIND_PACKAGE(Qt5 REQUIRED ${USE_QT_LIBRARIES})
|
|
ENDIF()
|
|
SET(QT_LUPDATE_EXECUTABLE ${Qt5_LUPDATE_EXECUTABLE})
|
|
# From QT 6 Changelog
|
|
# The Qt binary packages are now configured with C++17 enabled.
|
|
IF(QT_VERSION_MAJOR EQUAL 6)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
|
|
ELSE()
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
|
ENDIF()
|
|
|
|
# for OS X, we requires libc++ instead
|
|
if (APPLE)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
|
|
IF(QT_VERSION_MAJOR EQUAL 6)
|
|
SET(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++17")
|
|
ELSE()
|
|
SET(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11")
|
|
ENDIF()
|
|
SET(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
|
|
endif()
|
|
|
|
ADD_DEFINITIONS(-DQUAZIP_STATIC)
|
|
|
|
# MOC FILES
|
|
SET(moc_headers
|
|
src/seafile-applet.h
|
|
src/account-mgr.h
|
|
src/configurator.h
|
|
src/daemon-mgr.h
|
|
src/auto-login-service.h
|
|
src/repo-service.h
|
|
src/repo-service-helper.h
|
|
src/events-service.h
|
|
src/avatar-service.h
|
|
src/open-local-helper.h
|
|
src/server-status-service.h
|
|
src/account-info-service.h
|
|
src/customization-service.h
|
|
src/message-poller.h
|
|
src/network-mgr.h
|
|
src/settings-mgr.h
|
|
src/traynotificationwidget.h
|
|
src/traynotificationmanager.h
|
|
src/log-uploader.h
|
|
src/api/api-client.h
|
|
src/api/api-request.h
|
|
src/api/requests.h
|
|
src/rpc/rpc-client.h
|
|
src/rpc/rpc-server.h
|
|
src/ui/main-window.h
|
|
src/ui/init-seafile-dialog.h
|
|
src/ui/login-dialog.h
|
|
src/ui/account-settings-dialog.h
|
|
src/ui/check-repo-root-perm-dialog.h
|
|
src/ui/create-repo-dialog.h
|
|
src/ui/repo-detail-dialog.h
|
|
src/ui/settings-dialog.h
|
|
src/ui/download-repo-dialog.h
|
|
src/ui/cloud-view.h
|
|
src/ui/tray-icon.h
|
|
src/ui/about-dialog.h
|
|
src/ui/repo-tree-model.h
|
|
src/ui/repo-tree-view.h
|
|
src/ui/repo-item-delegate.h
|
|
src/ui/clone-tasks-dialog.h
|
|
src/ui/clone-tasks-table-model.h
|
|
src/ui/clone-tasks-table-view.h
|
|
src/ui/server-status-dialog.h
|
|
src/ui/search-tab.h
|
|
src/ui/search-tab-items.h
|
|
src/ui/init-vdrive-dialog.h
|
|
src/ui/uninstall-helper-dialog.h
|
|
src/ui/ssl-confirm-dialog.h
|
|
src/ui/private-share-dialog.h
|
|
src/ui/user-name-completer.h
|
|
src/ui/account-view.h
|
|
src/ui/seafile-tab-widget.h
|
|
src/ui/tab-view.h
|
|
src/ui/loading-view.h
|
|
src/ui/logout-view.h
|
|
src/ui/repos-tab.h
|
|
src/ui/starred-files-tab.h
|
|
src/ui/starred-files-list-view.h
|
|
src/ui/starred-files-list-model.h
|
|
src/ui/starred-file-item-delegate.h
|
|
src/ui/activities-tab.h
|
|
src/ui/events-list-view.h
|
|
src/ui/event-details-dialog.h
|
|
src/ui/event-details-tree.h
|
|
src/ui/set-repo-password-dialog.h
|
|
src/ui/sync-errors-dialog.h
|
|
src/ui/search-bar.h
|
|
src/ui/two-factor-dialog.h
|
|
src/filebrowser/file-browser-manager.h
|
|
src/filebrowser/file-browser-dialog.h
|
|
src/filebrowser/file-browser-requests.h
|
|
src/filebrowser/file-browser-search-tab.h
|
|
src/filebrowser/file-table.h
|
|
src/filebrowser/data-mgr.h
|
|
src/filebrowser/tasks.h
|
|
src/filebrowser/reliable-upload.h
|
|
src/filebrowser/progress-dialog.h
|
|
src/filebrowser/sharedlink-dialog.h
|
|
src/filebrowser/seafilelink-dialog.h
|
|
src/filebrowser/uploadlink-dialog.h
|
|
src/filebrowser/auto-update-mgr.h
|
|
src/filebrowser/transfer-mgr.h
|
|
src/filebrowser/thumbnail-service.h
|
|
third_party/QtAwesome/QtAwesome.h
|
|
third_party/quazip/quazipfile.h
|
|
${platform_specific_moc_headers}
|
|
)
|
|
|
|
IF (APPLE)
|
|
SET(moc_headers ${moc_headers} src/application.h)
|
|
ENDIF()
|
|
|
|
IF (BUILD_SHIBBOLETH_SUPPORT)
|
|
SET(moc_headers ${moc_headers} src/shib/shib-login-dialog.h ${SHIB_EXTRA_HEADER})
|
|
ENDIF()
|
|
|
|
# UI FILES
|
|
SET(ui_files
|
|
ui/about-dialog.ui
|
|
ui/login-dialog.ui
|
|
ui/account-settings-dialog.ui
|
|
ui/create-repo-dialog.ui
|
|
ui/repo-detail-dialog.ui
|
|
ui/settings-dialog.ui
|
|
ui/download-repo-dialog.ui
|
|
ui/init-seafile-dialog.ui
|
|
ui/cloud-view.ui
|
|
ui/clone-tasks-dialog.ui
|
|
ui/server-status-dialog.ui
|
|
ui/init-vdrive-dialog.ui
|
|
ui/uninstall-helper-dialog.ui
|
|
ui/ssl-confirm-dialog.ui
|
|
ui/private-share-dialog.ui
|
|
ui/account-view.ui
|
|
ui/two-factor-dialog.ui
|
|
ui/set-repo-password-dialog.ui
|
|
${platform_specific_ui_files}
|
|
)
|
|
|
|
# RESOURCES
|
|
SET(qrc_files
|
|
seafile-client.qrc
|
|
third_party/QtAwesome/QtAwesome.qrc
|
|
)
|
|
|
|
IF(QT_VERSION_MAJOR EQUAL 6)
|
|
QT6_WRAP_UI(ui_output ${ui_files})
|
|
ELSE()
|
|
QT5_WRAP_UI(ui_output ${ui_files})
|
|
ENDIF()
|
|
|
|
IF(QT_VERSION_MAJOR EQUAL 6)
|
|
QT6_WRAP_UI(ui_output ${ui_files})
|
|
ELSE()
|
|
QT5_WRAP_UI(ui_output ${ui_files})
|
|
ENDIF()
|
|
|
|
# meta object compliation(moc)
|
|
IF(QT_VERSION_MAJOR EQUAL 6)
|
|
QT6_WRAP_CPP(moc_output ${moc_headers})
|
|
ELSE()
|
|
QT5_WRAP_CPP(moc_output ${moc_headers})
|
|
ENDIF()
|
|
|
|
# resources files
|
|
IF(QT_VERSION_MAJOR EQUAL 6)
|
|
QT6_ADD_RESOURCES(resources_ouput ${qrc_files})
|
|
ELSE()
|
|
QT5_ADD_RESOURCES(resources_ouput ${qrc_files})
|
|
ENDIF()
|
|
|
|
# MESSAGE("moc output: ${moc_output}")
|
|
# MESSAGE("ui output: ${ui_output}")
|
|
|
|
####################
|
|
###### END: QT configuration
|
|
####################
|
|
|
|
####################
|
|
###### BEGIN: pthread support is required explicitly on linux
|
|
####################
|
|
|
|
IF(NOT APPLE)
|
|
SET(CMAKE_THREAD_PREFER_PTHREAD ON)
|
|
INCLUDE(FindThreads)
|
|
LINK_LIBRARIES(${CMAKE_THREAD_LIBS_INIT})
|
|
ENDIF(NOT APPLE)
|
|
|
|
####################
|
|
###### BEGIN: other libraries configuration
|
|
####################
|
|
FIND_PACKAGE(PkgConfig REQUIRED)
|
|
|
|
PKG_CHECK_MODULES(SQLITE3 REQUIRED sqlite3>=3.0.0)
|
|
|
|
PKG_CHECK_MODULES(JANSSON REQUIRED jansson>=2.0)
|
|
|
|
PKG_CHECK_MODULES(LIBSEARPC REQUIRED libsearpc>=1.0)
|
|
|
|
PKG_CHECK_MODULES(OPENSSL REQUIRED openssl>=0.98)
|
|
|
|
PKG_CHECK_MODULES(LIBSEAFILE REQUIRED libseafile>=1.7)
|
|
|
|
PKG_CHECK_MODULES(LIBEVENT REQUIRED libevent>=2.0)
|
|
|
|
PKG_CHECK_MODULES(ZLIB REQUIRED zlib>=1.2)
|
|
####################
|
|
###### END: other libraries configuration
|
|
####################
|
|
|
|
|
|
# c/cpp sources
|
|
SET(seafile_client_sources
|
|
src/i18n.cpp
|
|
src/main.cpp
|
|
src/seafile-applet.cpp
|
|
src/account.cpp
|
|
src/account-mgr.cpp
|
|
src/daemon-mgr.cpp
|
|
src/configurator.cpp
|
|
src/open-local-helper.cpp
|
|
src/message-poller.cpp
|
|
src/network-mgr.cpp
|
|
src/auto-login-service.cpp
|
|
src/repo-service.cpp
|
|
src/repo-service-helper.cpp
|
|
src/events-service.cpp
|
|
src/server-status-service.cpp
|
|
src/account-info-service.cpp
|
|
src/customization-service.cpp
|
|
src/avatar-service.cpp
|
|
src/settings-mgr.cpp
|
|
src/traynotificationwidget.cpp
|
|
src/traynotificationmanager.cpp
|
|
src/certs-mgr.cpp
|
|
src/log-uploader.cpp
|
|
src/sync-error-service.cpp
|
|
src/api/api-client.cpp
|
|
src/api/api-request.cpp
|
|
src/api/api-error.cpp
|
|
src/api/requests.cpp
|
|
src/api/server-repo.cpp
|
|
src/api/starred-file.cpp
|
|
src/api/event.cpp
|
|
src/api/commit-details.cpp
|
|
src/api/contact-share-info.cpp
|
|
src/rpc/rpc-client.cpp
|
|
src/rpc/rpc-server.cpp
|
|
src/rpc/local-repo.cpp
|
|
src/rpc/clone-task.cpp
|
|
src/rpc/sync-error.cpp
|
|
src/ui/about-dialog.cpp
|
|
src/ui/main-window.cpp
|
|
src/ui/init-seafile-dialog.cpp
|
|
src/ui/login-dialog.cpp
|
|
src/ui/account-settings-dialog.cpp
|
|
src/ui/check-repo-root-perm-dialog.cpp
|
|
src/ui/repo-detail-dialog.cpp
|
|
src/ui/settings-dialog.cpp
|
|
src/ui/create-repo-dialog.cpp
|
|
src/ui/download-repo-dialog.cpp
|
|
src/ui/tray-icon.cpp
|
|
src/ui/cloud-view.cpp
|
|
src/utils/uninstall-helpers.cpp
|
|
src/ui/repo-item.cpp
|
|
src/ui/repo-tree-model.cpp
|
|
src/ui/repo-tree-view.cpp
|
|
src/ui/repo-item-delegate.cpp
|
|
src/ui/clone-tasks-dialog.cpp
|
|
src/ui/clone-tasks-table-model.cpp
|
|
src/ui/clone-tasks-table-view.cpp
|
|
src/ui/server-status-dialog.cpp
|
|
src/ui/init-vdrive-dialog.cpp
|
|
src/ui/uninstall-helper-dialog.cpp
|
|
src/ui/search-tab.cpp
|
|
src/ui/search-tab-items.cpp
|
|
src/ui/ssl-confirm-dialog.cpp
|
|
src/ui/private-share-dialog.cpp
|
|
src/ui/user-name-completer.cpp
|
|
src/ui/proxy-style.cpp
|
|
src/ui/account-view.cpp
|
|
src/ui/seafile-tab-widget.cpp
|
|
src/ui/tab-view.cpp
|
|
src/ui/loading-view.cpp
|
|
src/ui/logout-view.cpp
|
|
src/ui/repos-tab.cpp
|
|
src/ui/starred-files-tab.cpp
|
|
src/ui/starred-files-list-view.cpp
|
|
src/ui/starred-files-list-model.cpp
|
|
src/ui/starred-file-item.cpp
|
|
src/ui/starred-file-item-delegate.cpp
|
|
src/ui/activities-tab.cpp
|
|
src/ui/events-list-view.cpp
|
|
src/ui/event-details-dialog.cpp
|
|
src/ui/event-details-tree.cpp
|
|
src/ui/set-repo-password-dialog.cpp
|
|
src/ui/sync-errors-dialog.cpp
|
|
src/ui/search-bar.cpp
|
|
src/ui/two-factor-dialog.cpp
|
|
src/filebrowser/file-browser-manager.cpp
|
|
src/filebrowser/file-browser-dialog.cpp
|
|
src/filebrowser/file-browser-requests.cpp
|
|
src/filebrowser/file-browser-search-tab.cpp
|
|
src/filebrowser/data-mgr.cpp
|
|
src/filebrowser/data-cache.cpp
|
|
src/filebrowser/file-table.cpp
|
|
src/filebrowser/seaf-dirent.cpp
|
|
src/filebrowser/reliable-upload.cpp
|
|
src/filebrowser/tasks.cpp
|
|
src/filebrowser/progress-dialog.cpp
|
|
src/filebrowser/sharedlink-dialog.cpp
|
|
src/filebrowser/uploadlink-dialog.cpp
|
|
src/filebrowser/seafilelink-dialog.cpp
|
|
src/filebrowser/auto-update-mgr.cpp
|
|
src/filebrowser/transfer-mgr.cpp
|
|
src/filebrowser/thumbnail-service.cpp
|
|
third_party/QtAwesome/QtAwesome.cpp
|
|
${platform_specific_sources}
|
|
)
|
|
|
|
IF (BUILD_SHIBBOLETH_SUPPORT)
|
|
SET(seafile_client_sources ${seafile_client_sources} src/shib/shib-login-dialog.cpp)
|
|
ENDIF()
|
|
|
|
INCLUDE_DIRECTORIES(
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
${CMAKE_CURRENT_BINARY_DIR}
|
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
|
${CMAKE_CURRENT_SOURCE_DIR}/third_party/QtAwesome
|
|
${CMAKE_CURRENT_SOURCE_DIR}/third_party/quazip
|
|
)
|
|
|
|
FOREACH(USE_QT_LIBRARY ${USE_QT_LIBRARIES})
|
|
INCLUDE_DIRECTORIES(
|
|
IF(QT_VERSION_MAJOR EQUAL 6)
|
|
${Qt6${USE_QT_LIBRARY}_INCLUDE_DIRS}
|
|
ELSE()
|
|
${Qt5${USE_QT_LIBRARY}_INCLUDE_DIRS}
|
|
ENDIF()
|
|
)
|
|
ENDFOREACH()
|
|
|
|
INCLUDE_DIRECTORIES(
|
|
${OPENSSL_INCLUDE_DIRS}
|
|
${LIBEVENT_INCLUDE_DIRS}
|
|
${SQLITE3_INCLUDE_DIRS}
|
|
${JANSSON_INCLUDE_DIRS}
|
|
${LIBSEARPC_INCLUDE_DIRS}
|
|
${LIBSEAFILE_INCLUDE_DIRS}
|
|
)
|
|
|
|
LINK_DIRECTORIES(
|
|
${QT_LIBRARY_DIR}
|
|
${OPENSSL_LIBRARY_DIRS}
|
|
${LIBEVENT_LIBRARY_DIRS}
|
|
${LIBSEAFILE_LIBRARY_DIRS}
|
|
${LIBSEARPC_LIBRARY_DIRS}
|
|
${SQLITE3_LIBRARRY_DIRS}
|
|
${JANSSON_LIBRARRY_DIRS}
|
|
${ZLIB_LIBRARRY_DIRS}
|
|
)
|
|
|
|
####################
|
|
###### begin: lib
|
|
####################
|
|
|
|
# Helper Function to Add Seafile-Client Library
|
|
# Usage:
|
|
# ADD_SC_LIBRARY (name sources
|
|
# MOC_HEADERS moc_headers
|
|
# UI_FILES ui_files
|
|
# DEPENDS part
|
|
# LINK_LIBS libs
|
|
# )
|
|
FUNCTION(ADD_SC_LIBRARY name)
|
|
MESSAGE(STATUS "Found internal library: ${name}")
|
|
CMAKE_PARSE_ARGUMENTS(ARG
|
|
""
|
|
""
|
|
"MOC_HEADERS;UI_FILES;DEPENDS;LINK_LIBS"
|
|
${ARGN})
|
|
IF(ARG_MOC_HEADERS)
|
|
IF(QT_VERSION_MAJOR EQUAL 6)
|
|
QT6_WRAP_CPP(MOC_OUTPUT ${ARG_MOC_HEADERS})
|
|
ELSE()
|
|
QT5_WRAP_CPP(MOC_OUTPUT ${ARG_MOC_HEADERS})
|
|
ENDIF()
|
|
ENDIF()
|
|
IF(ARG_UI_FILES)
|
|
IF(QT_VERSION_MAJOR EQUAL 6)
|
|
QT6_WRAP_UI(UI_OUTPUT ${ARG_UI_FILES})
|
|
ELSE()
|
|
QT5_WRAP_UI(UI_OUTPUT ${ARG_UI_FILES})
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
ADD_LIBRARY(${name} STATIC ${ARG_UNPARSED_ARGUMENTS}
|
|
${MOC_OUTPUT} ${UI_OUTPUT})
|
|
|
|
TARGET_LINK_LIBRARIES(${name} ${QT_LIBRARIES}
|
|
${SQLITE3_LIBRARIES} ${JANSSON_LIBRARIES}
|
|
${EXTRA_LIBS} -lglib-2.0 ${ARG_LINK_LIBS} ${ZLIB_LIBRARIES})
|
|
ENDFUNCTION(ADD_SC_LIBRARY)
|
|
|
|
# library utils
|
|
LIST(APPEND utils_sources
|
|
src/utils/utils.cpp
|
|
src/utils/rsa.cpp
|
|
src/utils/api-utils.cpp
|
|
src/utils/paint-utils.cpp
|
|
src/utils/file-utils.cpp
|
|
src/utils/translate-commit-desc.cpp
|
|
src/utils/json-utils.cpp
|
|
src/utils/log.c
|
|
src/utils/stl.cpp
|
|
src/utils/seafile-error.cpp
|
|
)
|
|
IF (${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "BSD")
|
|
LIST(APPEND utils_sources
|
|
src/utils/process-linux.cpp
|
|
)
|
|
ELSEIF(APPLE)
|
|
LIST(APPEND utils_sources
|
|
src/utils/process-mac.cpp
|
|
src/utils/utils-mac.mm)
|
|
ENDIF()
|
|
|
|
ADD_SC_LIBRARY(utils ${utils_sources})
|
|
|
|
# library quazip
|
|
LIST(APPEND quazip_sources
|
|
third_party/quazip/JlCompress.cpp
|
|
third_party/quazip/quazip.cpp
|
|
third_party/quazip/quazipfile.cpp
|
|
third_party/quazip/quazipfileinfo.cpp
|
|
third_party/quazip/quaziodevice.cpp
|
|
third_party/quazip/quagzipfile.cpp
|
|
third_party/quazip/quazipnewinfo.cpp
|
|
third_party/quazip/quaadler32.cpp
|
|
third_party/quazip/quazipdir.cpp
|
|
third_party/quazip/quacrc32.cpp
|
|
third_party/quazip/qioapi.cpp
|
|
third_party/quazip/zip.c
|
|
third_party/quazip/unzip.c
|
|
)
|
|
|
|
ADD_SC_LIBRARY(quazip ${quazip_sources})
|
|
|
|
SET(SC_LIBS utils quazip)
|
|
#SET(SC_LIBS utils)
|
|
|
|
####################
|
|
###### end: lib
|
|
####################
|
|
|
|
####################
|
|
###### start: translations
|
|
####################
|
|
|
|
SET(SEAFILE_TRANSLATE_SOURCES ${seafile_client_sources} ${utils_sources} ${moc_output} ${ui_output} "src/ext-handler.cpp")
|
|
SET(LANGUAGES
|
|
ca
|
|
de_DE
|
|
en
|
|
es
|
|
es_AR
|
|
es_MX
|
|
fr_FR
|
|
he_IL
|
|
hu_HU
|
|
is
|
|
it
|
|
ko_KR
|
|
nl_BE
|
|
pl_PL
|
|
pt_BR
|
|
pt_PT
|
|
ru
|
|
sk_SK
|
|
uk
|
|
zh_CN
|
|
zh_TW
|
|
tr
|
|
nl_NL
|
|
lv
|
|
ja
|
|
sv
|
|
cs_CZ
|
|
el_GR
|
|
nb_NO
|
|
)
|
|
|
|
SET(LANGUAGE_TS_FILES)
|
|
SET(SEAFILE_TS_TARGETS)
|
|
FOREACH(LANGUAGE ${LANGUAGES})
|
|
SET(TS_FILE "${PROJECT_SOURCE_DIR}/i18n/seafile_${LANGUAGE}.ts")
|
|
SET(LANGUAGE_TS_FILES ${LANGUAGE_TS_FILES} ${TS_FILE})
|
|
SET_SOURCE_FILES_PROPERTIES(${TS_FILE} PROPERTIES OUTPUT_LOCATION "${PROJECT_SOURCE_DIR}/i18n")
|
|
|
|
SET(TS_TARGET "${LANGUAGE}_ts")
|
|
ADD_CUSTOM_TARGET(${TS_TARGET}
|
|
COMMAND ${QT_LUPDATE_EXECUTABLE} ${SEAFILE_TRANSLATE_SOURCES}
|
|
-ts "${PROJECT_SOURCE_DIR}/i18n/seafile_${LANGUAGE}.ts"
|
|
-I "${PROJECT_SOURCE_DIR}/src"
|
|
-locations none
|
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
|
|
|
SET(SEAFILE_TS_TARGETS ${SEAFILE_TS_TARGETS} ${TS_TARGET})
|
|
|
|
ENDFOREACH(LANGUAGE ${LANGUAGES})
|
|
IF(QT_VERSION_MAJOR EQUAL 6)
|
|
QT6_ADD_TRANSLATION(qm_files ${LANGUAGE_TS_FILES})
|
|
ELSE()
|
|
QT5_ADD_TRANSLATION(qm_files ${LANGUAGE_TS_FILES})
|
|
ENDIF()
|
|
|
|
ADD_CUSTOM_TARGET(update-ts DEPENDS ${SEAFILE_TS_TARGETS})
|
|
|
|
####################
|
|
###### end: translations
|
|
####################
|
|
|
|
###################
|
|
##### begin: doxygen
|
|
##################
|
|
FIND_PACKAGE(Doxygen)
|
|
|
|
IF (DOXYGEN_FOUND)
|
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
|
|
|
|
ADD_CUSTOM_TARGET(doxygen
|
|
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
|
COMMENT "Generating doxygen documentation." VERBATIM)
|
|
|
|
IF(BUILD_DOCS)
|
|
ADD_CUSTOM_TARGET(doxygen ALL)
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
###################
|
|
##### end: doxygen
|
|
##################
|
|
|
|
####################
|
|
###### start: freedesktop files
|
|
####################
|
|
|
|
install(DIRECTORY
|
|
${CMAKE_SOURCE_DIR}/data/icons/16x16
|
|
${CMAKE_SOURCE_DIR}/data/icons/22x22
|
|
${CMAKE_SOURCE_DIR}/data/icons/24x24
|
|
${CMAKE_SOURCE_DIR}/data/icons/32x32
|
|
${CMAKE_SOURCE_DIR}/data/icons/48x48
|
|
${CMAKE_SOURCE_DIR}/data/icons/128x128
|
|
${CMAKE_SOURCE_DIR}/data/icons/scalable
|
|
DESTINATION share/icons/hicolor
|
|
)
|
|
|
|
install(FILES
|
|
${CMAKE_SOURCE_DIR}/data/com.seafile.seafile-applet.desktop
|
|
DESTINATION share/applications
|
|
)
|
|
|
|
install(FILES
|
|
${CMAKE_SOURCE_DIR}/data/icons/128x128/apps/seafile.png
|
|
DESTINATION share/pixmaps
|
|
)
|
|
|
|
####################
|
|
###### end: freedesktop files
|
|
####################
|
|
|
|
ADD_EXECUTABLE(seafile-applet ${GUI_TYPE}
|
|
${seafile_client_sources}
|
|
${moc_output}
|
|
${ui_output}
|
|
${resources_ouput}
|
|
${EXTRA_SOURCES}
|
|
)
|
|
|
|
INSTALL(TARGETS seafile-applet DESTINATION bin)
|
|
|
|
TARGET_LINK_LIBRARIES(seafile-applet
|
|
${SPARKLE_LIBS}
|
|
${SC_LIBS}
|
|
${QT_LIBRARIES}
|
|
${OPENSSL_LIBRARIES}
|
|
${LIBEVENT_LIBRARIES}
|
|
${SQLITE3_LIBRARIES}
|
|
${JANSSON_LIBRARIES}
|
|
${LIBSEARPC_LIBRARIES}
|
|
${LIBSEAFILE_LIBRARIES}
|
|
${ZLIB_LIBRARIES}
|
|
${EXTRA_LIBS}
|
|
)
|
|
|
|
IF(QT_VERSION_MAJOR EQUAL 6)
|
|
target_link_libraries(seafile-applet Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Network Qt6::Core5Compat)
|
|
ELSE()
|
|
target_link_libraries(seafile-applet Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Network)
|
|
ENDIF()
|
|
IF (BUILD_SHIBBOLETH_SUPPORT)
|
|
IF(QT_VERSION_MAJOR EQUAL 6)
|
|
target_link_libraries(seafile-applet Qt6::${WEBKIT_WIDGETS_NAME})
|
|
ELSE()
|
|
target_link_libraries(seafile-applet Qt5::${WEBKIT_NAME} Qt5::${WEBKIT_WIDGETS_NAME})
|
|
ENDIF()
|
|
|
|
ENDIF()
|
|
|
|
## QtBus
|
|
IF (${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "BSD")
|
|
IF(QT_VERSION_MAJOR EQUAL 6)
|
|
target_link_libraries(seafile-applet Qt6::DBus)
|
|
ELSE()
|
|
target_link_libraries(seafile-applet Qt5::DBus)
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
### Xcode-related, build as a osx bundle
|
|
IF(CMAKE_GENERATOR STREQUAL Xcode)
|
|
ADD_DEFINITIONS(-DXCODE_APP)
|
|
SET_TARGET_PROPERTIES(seafile-applet PROPERTIES
|
|
MACOSX_BUNDLE true
|
|
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist
|
|
)
|
|
FIND_PROGRAM(seaf-daemon seaf-daemon)
|
|
SET(RESOURCES_DIR ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/seafile-applet.app/Contents/Resources)
|
|
ADD_CUSTOM_COMMAND(TARGET seafile-applet
|
|
POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${RESOURCES_DIR}
|
|
COMMAND ${CMAKE_COMMAND} -E copy seafile.icns ${RESOURCES_DIR}/.
|
|
COMMAND ${CMAKE_COMMAND} -E copy ${seaf-daemon} ${RESOURCES_DIR}/.
|
|
)
|
|
SET(CMAKE_XCODE_ATTRIBUTE_GCC_GENERATE_DEBUGGING_SYMBOLS "YES")
|
|
SET(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT "dwarf-with-dsym")
|
|
SET(CMAKE_XCODE_ATTRIBUTE_GCC_ENABLE_PASCAL_STRINGS "NO")
|
|
SET(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC "YES")
|
|
SET(CMAKE_XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME "TRUE")
|
|
ENDIF()
|
|
|
|
SET(ARCHIVE_NAME ${CMAKE_PROJECT_NAME}-${PROJECT_VERSION})
|
|
ADD_CUSTOM_TARGET(dist
|
|
COMMAND ${git_executable} archive -v --prefix=${ARCHIVE_NAME}/ HEAD
|
|
| gzip > ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.gz
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
|
|
|
### Test related
|
|
IF (BUILD_TESTING)
|
|
MACRO(ADD_QTEST testname)
|
|
QT5_WRAP_CPP(${testname}_MOCHEADER tests/${testname}.h)
|
|
|
|
SET(${testname}_SRCS tests/${testname}.cpp ${${testname}_MOCHEADER})
|
|
|
|
ADD_EXECUTABLE(${testname} ${${testname}_SRCS})
|
|
|
|
TARGET_LINK_LIBRARIES(${testname} ${QT_LIBRARIES}
|
|
${QTESTLIB} ${SQLITE3_LIBRARIES} ${JANSSON_LIBRARIES}
|
|
${EXTRA_LIBS} -lglib-2.0 ${SC_LIBS} ${ZLIB_LIBRARIES})
|
|
SET_TARGET_PROPERTIES(${testname} PROPERTIES
|
|
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/tests )
|
|
|
|
INCLUDE_DIRECTORIES(${Qt5Test_INCLUDE_DIRS})
|
|
|
|
QT5_USE_MODULES(${testname} ${USE_QT_LIBRARIES} Test)
|
|
|
|
ADD_TEST(${testname} ${CMAKE_CURRENT_BINARY_DIR}/tests/${testname})
|
|
|
|
ENDMACRO(ADD_QTEST)
|
|
|
|
ENABLE_TESTING()
|
|
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/tests)
|
|
ADD_QTEST(test_server-info)
|
|
ADD_QTEST(test_utils)
|
|
ADD_QTEST(test_file-utils)
|
|
ADD_QTEST(test_stl)
|
|
ENDIF()
|