From: Felix Weilbach Date: Thu, 14 Jan 2021 22:07:32 +0000 (+0100) Subject: Compile nextcoud gui as separate library X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~21^2~382^2~2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=73a41d8e349bc63b0193722a30369ab23a48523b;p=nextcloud-desktop.git Compile nextcoud gui as separate library Compiling nextcoud gui as a separate library. This is needed to more easily write tests. The whole nextcloud application can now be linked against the tests. Signed-off-by: Felix Weilbach --- diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index c75440fe1..6decf5ef6 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -1,8 +1,5 @@ project(gui) find_package(Qt5 REQUIRED COMPONENTS Widgets Svg Qml Quick QuickControls2) -set(CMAKE_AUTOMOC TRUE) -set(CMAKE_AUTOUIC TRUE) -set(CMAKE_AUTORCC TRUE) if(CMAKE_BUILD_TYPE MATCHES Debug) add_definitions(-DQT_QML_DEBUG) @@ -262,6 +259,39 @@ if(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/usr/local/lib") endif() +add_library(nextcloudCore STATIC ${final_src}) + +target_link_libraries(nextcloudCore + PUBLIC + Qt5::Widgets + Qt5::GuiPrivate + Qt5::Svg + Qt5::Network + Qt5::Xml + Qt5::Qml + Qt5::Quick + Qt5::QuickControls2 + Qt5::WebEngineWidgets + ${synclib_NAME} +) + +set_target_properties(nextcloudCore + PROPERTIES + AUTOUIC ON + AUTORCC ON + AUTOMOC ON +) + +target_include_directories(nextcloudCore + PUBLIC + ${CMAKE_SOURCE_DIR}/src/3rdparty/QProgressIndicator + ${CMAKE_SOURCE_DIR}/src/3rdparty/qtlockedfile + ${CMAKE_SOURCE_DIR}/src/3rdparty/qtsingleapplication + ${CMAKE_SOURCE_DIR}/src/3rdparty/kmessagewidget + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} +) + if(NOT BUILD_OWNCLOUD_OSX_BUNDLE) if(NOT WIN32) file(GLOB _icons "${theme_dir}/colored/*-${APPLICATION_ICON_NAME}-icon.png") @@ -279,15 +309,13 @@ if(NOT BUILD_OWNCLOUD_OSX_BUNDLE) endif() # we may not add MACOSX_BUNDLE here, if not building one - - # add_executable( ${APPLICATION_EXECUTABLE} main.cpp ${final_src}) - add_executable( ${APPLICATION_EXECUTABLE} WIN32 main.cpp ${final_src}) + add_executable(${APPLICATION_EXECUTABLE} WIN32 main.cpp) else() # set(CMAKE_INSTALL_PREFIX ".") # Examples use /Applications. hurmpf. set(MACOSX_BUNDLE_ICON_FILE "${APPLICATION_ICON_NAME}.icns") # we must add MACOSX_BUNDLE only if building a bundle - add_executable( ${APPLICATION_EXECUTABLE} WIN32 MACOSX_BUNDLE main.cpp ${final_src}) + add_executable(${APPLICATION_EXECUTABLE} WIN32 MACOSX_BUNDLE main.cpp) set (QM_DIR ${OWNCLOUD_OSX_BUNDLE}/Contents/Resources/Translations) install(FILES ${client_I18N} DESTINATION ${QM_DIR}) @@ -314,12 +342,14 @@ set_target_properties( ${APPLICATION_EXECUTABLE} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${BIN_OUTPUT_DIRECTORY} ) -target_link_libraries( ${APPLICATION_EXECUTABLE} Qt5::Widgets Qt5::GuiPrivate Qt5::Svg Qt5::Network Qt5::Xml Qt5::Qml Qt5::Quick Qt5::QuickControls2 Qt5::WebEngineWidgets) -target_link_libraries( ${APPLICATION_EXECUTABLE} ${synclib_NAME} ) +target_link_libraries(${APPLICATION_EXECUTABLE} nextcloudCore) + IF(BUILD_UPDATER) - target_link_libraries( ${APPLICATION_EXECUTABLE} updater ) + target_link_libraries(nextcloudCore PUBLIC updater) endif() -target_link_libraries( ${APPLICATION_EXECUTABLE} ${OS_SPECIFIC_LINK_LIBRARIES} ) + +target_link_libraries(nextcloudCore PUBLIC ${OS_SPECIFIC_LINK_LIBRARIES}) + IF( LIBCLOUDPROVIDERS_FOUND ) string(TOLOWER "${APPLICATION_VENDOR}" DBUS_VENDOR) string(REGEX REPLACE "[^A-z0-9]" "" DBUS_VENDOR "${DBUS_VENDOR}") @@ -331,42 +361,37 @@ IF( LIBCLOUDPROVIDERS_FOUND ) set(LIBCLOUDPROVIDERS_DBUS_OBJECT_PATH "/${DBUS_PREFIX}/${DBUS_VENDOR}/${DBUS_APPLICATION_NAME}") configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cloudproviders/cloudproviderconfig.h.in ${CMAKE_CURRENT_BINARY_DIR}/cloudproviderconfig.h) - target_link_libraries( ${APPLICATION_EXECUTABLE} ${GLib2_LDFLAGS} ${GIO_LDFLAGS} ${LIBCLOUDPROVIDERS_LIBRARY} ) + target_link_libraries(nextcloudCore + PUBLIC + ${GLib2_LDFLAGS} + ${GIO_LDFLAGS} + ${LIBCLOUDPROVIDERS_LIBRARY} + ) ENDIF() - -target_include_directories(${APPLICATION_EXECUTABLE} PRIVATE - ${CMAKE_SOURCE_DIR}/src/3rdparty/QProgressIndicator - ${CMAKE_SOURCE_DIR}/src/3rdparty/qtlockedfile - ${CMAKE_SOURCE_DIR}/src/3rdparty/qtsingleapplication - ${CMAKE_SOURCE_DIR}/src/3rdparty/kmessagewidget - ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_SOURCE_DIR} -) - ## handle DBUS for Fdo notifications if( UNIX AND NOT APPLE ) find_package(Qt5 COMPONENTS DBus) - target_link_libraries( ${APPLICATION_EXECUTABLE} Qt5::DBus) - target_compile_definitions(${APPLICATION_EXECUTABLE} PRIVATE "USE_FDO_NOTIFICATIONS") + target_link_libraries(nextcloudCore PUBLIC Qt5::DBus) + target_compile_definitions(nextcloudCore PUBLIC "USE_FDO_NOTIFICATIONS") endif() if (APPLE) find_package(Qt5 COMPONENTS MacExtras) - target_link_libraries( ${APPLICATION_EXECUTABLE} Qt5::MacExtras) + target_link_libraries(nextcloudCore PUBLIC Qt5::MacExtras) endif() if(WITH_CRASHREPORTER) - target_link_libraries(${APPLICATION_EXECUTABLE} crashreporter-handler) + target_link_libraries(nextcloudCore PUBLIC crashreporter-handler) if(UNIX AND NOT MAC) find_package(Threads REQUIRED) - target_link_libraries( ${APPLICATION_EXECUTABLE} ${CMAKE_THREAD_LIBS_INIT}) + target_link_libraries(nextcloudCore PUBLIC ${CMAKE_THREAD_LIBS_INIT}) endif() endif() # application.cpp still uses QDesktopServices::storageLocation -target_compile_definitions(${APPLICATION_EXECUTABLE} PRIVATE "QT_DISABLE_DEPRECATED_BEFORE=0") +target_compile_definitions(nextcloudCore PRIVATE "QT_DISABLE_DEPRECATED_BEFORE=0") install(TARGETS ${APPLICATION_EXECUTABLE} diff --git a/src/libsync/CMakeLists.txt b/src/libsync/CMakeLists.txt index c63201dcc..32ebed87c 100644 --- a/src/libsync/CMakeLists.txt +++ b/src/libsync/CMakeLists.txt @@ -120,17 +120,19 @@ ENDIF(NOT APPLE) find_package(Qt5 REQUIRED COMPONENTS WebSockets) add_library(${synclib_NAME} SHARED ${libsync_SRCS}) target_link_libraries(${synclib_NAME} - "${csync_NAME}" - OpenSSL::Crypto - OpenSSL::SSL - ${OS_SPECIFIC_LINK_LIBRARIES} - Qt5::Core Qt5::Network - Qt5::WebSockets + PUBLIC + "${csync_NAME}" + OpenSSL::Crypto + OpenSSL::SSL + ${OS_SPECIFIC_LINK_LIBRARIES} + Qt5::Core + Qt5::Network + Qt5::WebSockets ) if (NOT TOKEN_AUTH_ONLY) find_package(Qt5 REQUIRED COMPONENTS Widgets Svg) - target_link_libraries(${synclib_NAME} Qt5::Widgets Qt5::Svg qt5keychain) + target_link_libraries(${synclib_NAME} PUBLIC Qt5::Widgets Qt5::Svg qt5keychain) endif() if(INOTIFY_FOUND) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 221dca173..f3bbc516a 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,23 +1,13 @@ include(DefinePlatformDefaults) find_package(SQLite3 3.8.0 REQUIRED) -include_directories(${CMAKE_SOURCE_DIR}/src - ${CMAKE_SOURCE_DIR}/src/3rdparty/qtokenizer - ${CMAKE_SOURCE_DIR}/src/csync - ${CMAKE_SOURCE_DIR}/src/csync/std - ${CMAKE_SOURCE_DIR}/src/gui - ${CMAKE_SOURCE_DIR}/src/libsync - ${CMAKE_BINARY_DIR}/src/csync - ${CMAKE_BINARY_DIR}/src/libsync - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_BINARY_DIR} - ${SQLITE3_INCLUDE_DIR} - ) include(nextcloud_add_test.cmake) set(CMAKE_AUTOMOC TRUE) + add_library(syncenginetestutils STATIC syncenginetestutils.cpp) target_link_libraries(syncenginetestutils PUBLIC ${APPLICATION_EXECUTABLE}sync Qt5::Test) +target_include_directories(syncenginetestutils PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) nextcloud_add_test(NextcloudPropagator "") @@ -25,18 +15,6 @@ IF(BUILD_UPDATER) nextcloud_add_test(Updater "") endif() -SET(FolderWatcher_SRC ../src/gui/folderwatcher.cpp) - -IF( NOT WIN32 AND NOT APPLE ) -list(APPEND FolderWatcher_SRC ../src/gui/folderwatcher_linux.cpp) -ENDIF() -IF( WIN32 ) -list(APPEND FolderWatcher_SRC ../src/gui/folderwatcher_win.cpp) -ENDIF() -IF( APPLE ) -list(APPEND FolderWatcher_SRC ../src/gui/folderwatcher_mac.cpp) -list(APPEND FolderWatcher_SRC ../src/gui/socketapisocket_mac.mm) -ENDIF() nextcloud_add_test(NetrcParser ../src/cmd/netrcparser.cpp) nextcloud_add_test(OwnSql "") nextcloud_add_test(SyncJournalDB "") @@ -68,7 +46,7 @@ nextcloud_add_test(Permissions "") nextcloud_add_test(SelectiveSync "") nextcloud_add_test(DatabaseError "") nextcloud_add_test(LockedFiles "../src/gui/lockwatcher.cpp") -nextcloud_add_test(FolderWatcher "${FolderWatcher_SRC}") +nextcloud_add_test(FolderWatcher "") nextcloud_add_test(Capabilities "") nextcloud_add_test(PushNotifications "pushnotificationstestutils.cpp") @@ -85,40 +63,8 @@ endif() nextcloud_add_benchmark(LargeSync "") -SET(FolderMan_SRC ../src/gui/folderman.cpp) -list(APPEND FolderMan_SRC ../src/gui/folder.cpp ) -list(APPEND FolderMan_SRC ../src/gui/conflictsolver.cpp ) -list(APPEND FolderMan_SRC ../src/gui/socketapi.cpp ) -list(APPEND FolderMan_SRC ../src/gui/syncrunfilelog.cpp ) -list(APPEND FolderMan_SRC ../src/gui/lockwatcher.cpp ) -list(APPEND FolderMan_SRC ../src/gui/guiutility.cpp ) -list(APPEND FolderMan_SRC ../src/gui/navigationpanehelper.cpp ) -list(APPEND FolderMan_SRC ../src/gui/userinfo.cpp ) -list(APPEND FolderMan_SRC ../src/gui/connectionvalidator.cpp ) -list(APPEND FolderMan_SRC ../src/gui/ocsjob.cpp ) -list(APPEND FolderMan_SRC ../src/gui/ocsnavigationappsjob.cpp ) -list(APPEND FolderMan_SRC ../src/gui/accountstate.cpp ) -list(APPEND FolderMan_SRC ../src/gui/remotewipe.cpp ) -list(APPEND FolderMan_SRC ${FolderWatcher_SRC}) -list(APPEND FolderMan_SRC stubfolderman.cpp ) -nextcloud_add_test(FolderMan "${FolderMan_SRC}") - -SET(RemoteWipe_SRC ../src/gui/remotewipe.cpp) -list(APPEND RemoteWipe_SRC ../src/gui/guiutility.cpp ) -list(APPEND RemoteWipe_SRC ../src/gui/userinfo.cpp ) -list(APPEND RemoteWipe_SRC ../src/gui/connectionvalidator.cpp ) -list(APPEND RemoteWipe_SRC ../src/gui/ocsjob.cpp ) -list(APPEND RemoteWipe_SRC ../src/gui/ocsnavigationappsjob.cpp ) -list(APPEND RemoteWipe_SRC ../src/gui/accountstate.cpp ) -list(APPEND RemoteWipe_SRC ../src/gui/conflictsolver.cpp ) -list(APPEND RemoteWipe_SRC ../src/gui/socketapi.cpp ) -list(APPEND RemoteWipe_SRC ../src/gui/folder.cpp ) -list(APPEND RemoteWipe_SRC ../src/gui/syncrunfilelog.cpp ) -list(APPEND RemoteWipe_SRC ${FolderWatcher_SRC} ) -list(APPEND RemoteWipe_SRC ../src/gui/folderwatcher.cpp ) -list(APPEND RemoteWipe_SRC ${RemoteWipe_SRC}) -list(APPEND RemoteWipe_SRC stubremotewipe.cpp ) -nextcloud_add_test(RemoteWipe "${RemoteWipe_SRC}") +nextcloud_add_test(FolderMan "") +nextcloud_add_test(RemoteWipe "") nextcloud_add_test(OAuth "../src/gui/creds/oauth.cpp") diff --git a/test/csync/CMakeLists.txt b/test/csync/CMakeLists.txt index 27e6d3857..e2b7796b8 100644 --- a/test/csync/CMakeLists.txt +++ b/test/csync/CMakeLists.txt @@ -6,9 +6,10 @@ include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${CMOCKA_INCLUDE_DIR} + ${CHECK_INCLUDE_DIRS} + ${CMAKE_BINARY_DIR}/src/csync ) -include_directories(${CHECK_INCLUDE_DIRS}) # create test library add_library(${TORTURE_LIBRARY} STATIC torture.c cmdline.c) target_link_libraries(${TORTURE_LIBRARY} ${CMOCKA_LIBRARIES}) @@ -23,4 +24,3 @@ add_cmocka_test(check_std_c_jhash std_tests/check_std_c_jhash.c ${TEST_TARGET_LI # vio add_cmocka_test(check_vio_ext vio_tests/check_vio_ext.cpp ${TEST_TARGET_LIBRARIES}) - diff --git a/test/nextcloud_add_test.cmake b/test/nextcloud_add_test.cmake index d43e4e37d..07e9d1e83 100644 --- a/test/nextcloud_add_test.cmake +++ b/test/nextcloud_add_test.cmake @@ -9,8 +9,11 @@ macro(nextcloud_add_test test_class additional_cpp) set_target_properties(${OWNCLOUD_TEST_CLASS}Test PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${BIN_OUTPUT_DIRECTORY}) target_link_libraries(${OWNCLOUD_TEST_CLASS}Test - ${APPLICATION_EXECUTABLE}sync syncenginetestutils - Qt5::Core Qt5::Test Qt5::Xml Qt5::Network Qt5::Qml Qt5::Quick + ${APPLICATION_EXECUTABLE}sync + syncenginetestutils + nextcloudCore + Qt5::Test + Qt5::Quick ) IF(BUILD_UPDATER) @@ -25,7 +28,11 @@ macro(nextcloud_add_test test_class additional_cpp) COMMAND ${OWNCLOUD_TEST_CLASS}Test WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/bin") - target_include_directories(${OWNCLOUD_TEST_CLASS}Test PRIVATE "${CMAKE_SOURCE_DIR}/test/") + target_include_directories(${OWNCLOUD_TEST_CLASS}Test + PRIVATE + "${CMAKE_SOURCE_DIR}/test/" + ${CMAKE_SOURCE_DIR}/src/3rdparty/qtokenizer + ) endmacro() macro(nextcloud_add_benchmark test_class additional_cpp)